diff --git a/HELM/source/CHANGELOG.md b/HELM/source/CHANGELOG.md index 52ff51f..90a4e2b 100644 --- a/HELM/source/CHANGELOG.md +++ b/HELM/source/CHANGELOG.md @@ -1,5 +1,16 @@ # HELMWebEditor changelog +## 1.1.6 (2024-07-08) + +### Features + +* Add highlighting for monomers, typing + +### Bug fixes + +* Remove ts-nocheck at Interface.ts +* Fix bundling with JSDRaw.Lite via node_modules + ## 1.1.5 (2024-06-25) Fix build for TypeScript diff --git a/HELM/source/helm/App.ts b/HELM/source/helm/App.ts index 9af1768..385f44f 100644 --- a/HELM/source/helm/App.ts +++ b/HELM/source/helm/App.ts @@ -71,7 +71,7 @@ export class App { private readonly options: Partial; public readonly toolbarheight: number; public mex: MonomerExplorer; - public canvas: any; + public canvas: Editor; public sequence: any; public notation: HTMLElement; public properties: Form; diff --git a/HELM/source/helm/Interface.ts b/HELM/source/helm/Interface.ts index e20fc0a..37ac974 100644 --- a/HELM/source/helm/Interface.ts +++ b/HELM/source/helm/Interface.ts @@ -22,24 +22,36 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *******************************************************************************/ -// @ts-nocheck - import type {JSDraw2ModuleType, ScilModuleType} from '@datagrok-libraries/js-draw-lite/src/types'; import type {HelmType, IOrgInterface} from '@datagrok-libraries/js-draw-lite/src/types/org'; import type {OrgType} from '../src/types/org-helm'; + import type {Editor} from '@datagrok-libraries/js-draw-lite/src/JSDraw.Editor'; import type {Point} from '@datagrok-libraries/js-draw-lite/src/Point'; import type {Atom} from '@datagrok-libraries/js-draw-lite/src/Atom'; import type {Rect} from '@datagrok-libraries/js-draw-lite/src/Rect'; import type {Mol} from '@datagrok-libraries/js-draw-lite/src/Mol'; -import type {BondType} from '@datagrok-libraries/js-draw-lite/src/types/jsdraw2'; import type {Bond} from '@datagrok-libraries/js-draw-lite/src/Bond'; +import type { + BondType, IEditorOptions, DrawStep +} from '@datagrok-libraries/js-draw-lite/src/types/jsdraw2'; +import type {ButtonDescType} from '@datagrok-libraries/js-draw-lite/form/Form'; + +import {DrawSteps} from '@datagrok-libraries/js-draw-lite/src/types/jsdraw2'; declare const JSDraw2: JSDraw2ModuleType; declare const scil: ScilModuleType; declare const org: OrgType; declare const JSDrawServices: any; +export interface ToolbarButtonDescType { + /** command */ c: string; + /** Text */ t?: string; + label?: string; + sub?: any; + hidden?: boolean; +} + /** * Interface class * @class org.helm.webeditor.Interface @@ -51,7 +63,7 @@ export class Interface implements IOrgInterface { * @param {DOM} div * @param {dict} args - check JSDraw SDK */ - createCanvas(div, args): Editor { + createCanvas(div: HTMLDivElement, args: Partial): Editor { return new JSDraw2.Editor(div, args); } @@ -60,7 +72,7 @@ export class Interface implements IOrgInterface { * @function createMol * @param {string} molfile */ - createMol(molfile): Mol { + createMol(molfile: string): Mol { const m = new JSDraw2.Mol(); m.setMolfile(molfile); return m; @@ -72,7 +84,7 @@ export class Interface implements IOrgInterface { * @param {number} x * @param {number} y */ - createPoint(x, y): Point { + createPoint(x: number, y: number): Point { return new JSDraw2.Point(x, y); } @@ -84,7 +96,7 @@ export class Interface implements IOrgInterface { * @param {number} w - width * @param {number} h - height */ - createRect(l, t, w, h): Rect { + createRect(l: number, t: number, w: number, h: number): Rect { return new JSDraw2.Rect(l, t, w, h); } @@ -94,7 +106,7 @@ export class Interface implements IOrgInterface { * @param {JSDraw2.Mol} m * @param {JSDraw2.Point} p - the coordinate */ - createAtom(m: Mol, p: Point): Atom { + createAtom(m: Mol, p: Point): Atom | null { return m.addAtom(new JSDraw2.Atom(p)); } @@ -105,7 +117,7 @@ export class Interface implements IOrgInterface { * @param {JSDraw2.Atom} a1 * @param {JSDraw2.Atom} a2 */ - createBond(m: Mol, a1: Atom, a2: Atom, bondtype: BondType): Bond { + createBond(m: Mol, a1: Atom, a2: Atom, bondtype: BondType): Bond | null { return m.addBond(new JSDraw2.Bond(a1, a2, bondtype == null ? JSDraw2.BONDTYPES.SINGLE : bondtype)); } @@ -138,7 +150,7 @@ export class Interface implements IOrgInterface { * @function molStats * @param {string} molfile */ - molStats(molfile) { + molStats(molfile: string) { const mol = this.createMol(molfile); mol.calcHCount(); return JSDraw2.FormulaParser.getAtomStats(mol).elements; @@ -149,7 +161,7 @@ export class Interface implements IOrgInterface { * @function getElementMass * @param {string} e - element name */ - getElementMass(e) { + getElementMass(e: string) { return JSDraw2.PT[e].m; } @@ -158,7 +170,7 @@ export class Interface implements IOrgInterface { * @function getCurrentAtom * @param {JSDraw2.Editor} jsd - JSDraw Editor */ - getCurrentAtom(jsd) { + getCurrentAtom(jsd: Editor): Atom | null { return JSDraw2.Atom.cast(jsd.curObject); } @@ -167,8 +179,8 @@ export class Interface implements IOrgInterface { * @function scaleCanvas * @param {JSDraw2.Editor} jsd - JSDraw Editor */ - scaleCanvas(jsd) { - var scale = JSDraw2.Editor.BONDLENGTH / jsd.bondlength; + scaleCanvas(jsd: Editor) { + const scale = JSDraw2.Editor.BONDLENGTH / jsd.bondlength; if (JSDraw2.Editor.BONDLENGTH / jsd.bondlength > 1) jsd.scale(JSDraw2.Editor.BONDLENGTH / jsd.bondlength); } @@ -183,7 +195,9 @@ export class Interface implements IOrgInterface { * @param {number} linewidth * @param {string} color */ - drawMonomer(surface: SVGSVGElement, a: any /* Atom */, p: Point, fontsize: number, linewidth: number, color: any): void { + drawMonomer(surface: SVGSVGElement, a: Atom, p: Point, fontsize: number, linewidth: number, color: any, + drawStep: DrawStep + ): void { if (a.hidden) return; @@ -192,33 +206,76 @@ export class Interface implements IOrgInterface { const c = scil.Utils.isNullOrEmpty(color) ? org.helm.webeditor.Monomers.getColor(a) : color; const w = fontsize * org.helm.webeditor.atomscale; const lw = linewidth / 2; //(c.nature ? 1 : 2); - if (biotype == org.helm.webeditor.HELM.LINKER) - JSDraw2.Drawer.drawEllipse(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.SUGAR) - JSDraw2.Drawer.drawRect(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw, linewidth * 3).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.BASE) - JSDraw2.Drawer.drawDiamond(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.AA) - JSDraw2.Drawer.drawHexgon(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw, linewidth * 3).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.CHEM) - JSDraw2.Drawer.drawRect(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.BLOB) - JSDraw2.Drawer.drawRect(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw * 2, linewidth * 5).setFill(c.backgroundcolor); - else if (biotype == org.helm.webeditor.HELM.NUCLEOTIDE) - JSDraw2.Drawer.drawPentagon(surface, org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w), c.linecolor, lw, linewidth * 3).setFill(c.backgroundcolor); + + const rect = org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w); + if (DrawSteps.highlight === drawStep && a.highlighted) { + const hlLW = lw + 7; + const hlColor = '#FFB2B2'; + if (biotype == org.helm.webeditor.HELM.LINKER) + JSDraw2.Drawer.drawEllipse(surface, rect, hlColor, hlLW).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.SUGAR) + JSDraw2.Drawer.drawRect(surface, rect, hlColor, hlLW, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BASE) + JSDraw2.Drawer.drawDiamond(surface, rect, hlColor, hlLW).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.AA) { + JSDraw2.Drawer.drawHexgon(surface, rect, hlColor, hlLW).setFill(c.backgroundcolor); + } else if (biotype == org.helm.webeditor.HELM.CHEM) + JSDraw2.Drawer.drawRect(surface, rect, hlColor, hlLW, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BLOB) + JSDraw2.Drawer.drawRect(surface, rect, hlColor, hlLW * 2, linewidth * 5).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.NUCLEOTIDE) + JSDraw2.Drawer.drawPentagon(surface, rect, hlColor, hlLW).setFill(c.backgroundcolor); + } else if (DrawSteps.select === drawStep && a.selected) { + const selLW = lw + 9; + // const selColor = '#F8F8DD'; + const selColor = '#FFD29B'; + const rect = org.helm.webeditor.Interface.createRect(p.x - w / 2, p.y - w / 2, w, w); + if (biotype == org.helm.webeditor.HELM.LINKER) + JSDraw2.Drawer.drawEllipse(surface, rect, selColor, selLW).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.SUGAR) + JSDraw2.Drawer.drawRect(surface, rect, selColor, selLW, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BASE) + JSDraw2.Drawer.drawDiamond(surface, rect, selColor, selLW).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.AA) { + JSDraw2.Drawer.drawHexgon(surface, rect, selColor, selLW).setFill(c.backgroundcolor); + } else if (biotype == org.helm.webeditor.HELM.CHEM) + JSDraw2.Drawer.drawRect(surface, rect, selColor, selLW, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BLOB) + JSDraw2.Drawer.drawRect(surface, rect, selColor, selLW * 2, linewidth * 5).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.NUCLEOTIDE) + JSDraw2.Drawer.drawPentagon(surface, rect, selColor, selLW).setFill(c.backgroundcolor); + } else (DrawSteps.main === drawStep); + { + if (biotype == org.helm.webeditor.HELM.LINKER) + JSDraw2.Drawer.drawEllipse(surface, rect, c.linecolor, lw).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.SUGAR) + JSDraw2.Drawer.drawRect(surface, rect, c.linecolor, lw, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BASE) + JSDraw2.Drawer.drawDiamond(surface, rect, c.linecolor, lw).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.AA) { + JSDraw2.Drawer.drawHexgon(surface, rect, c.linecolor, lw).setFill(c.backgroundcolor); + } else if (biotype == org.helm.webeditor.HELM.CHEM) + JSDraw2.Drawer.drawRect(surface, rect, c.linecolor, lw, linewidth * 3).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.BLOB) + JSDraw2.Drawer.drawRect(surface, rect, c.linecolor, lw * 2, linewidth * 5).setFill(c.backgroundcolor); + else if (biotype == org.helm.webeditor.HELM.NUCLEOTIDE) + JSDraw2.Drawer.drawPentagon(surface, rect, c.linecolor, lw).setFill(c.backgroundcolor); + } + + if (DrawSteps.main !== drawStep) return; const pt = p.clone(); p.offset(0, -1); JSDraw2.Drawer.drawLabel(surface, p, a.elem, c.textcolor, fontsize * (a.elem.length > 1 ? 2 / a.elem.length : 1.0), null, null, null, false); - if ((a.bio.id as number) > 0) { + if ((a.bio!.id as number) > 0) { const p1 = p.clone(); p1.offset(-fontsize * 1.2, -fontsize * 1.2); - JSDraw2.Drawer.drawLabel(surface, p1, a.bio.id, "#00FF00", fontsize, null, null, null, false); + JSDraw2.Drawer.drawLabel(surface, p1, a.bio!.id, "#00FF00", fontsize, null, null, null, false); } - if (!scil.Utils.isNullOrEmpty(a.bio.annotation)) { + if (!scil.Utils.isNullOrEmpty(a.bio!.annotation!)) { const p1 = p.clone(); - const s = a.bio.annotation; - if (a.bio.annotationshowright) { + const s = a.bio!.annotation; + if (a.bio!.annotationshowright) { const c: number = a.biotype() == org.helm.webeditor.HELM.AA ? 0.7 : 1; p1.offset(fontsize * c, -fontsize * 1.5); JSDraw2.Drawer.drawLabel(surface, p1, s, "#FFA500", fontsize, null, "start", null, false); @@ -235,7 +292,7 @@ export class Interface implements IOrgInterface { } } - addToolbar(buttons, flat, sub, options) { + addToolbar(buttons: ToolbarButtonDescType[], flat: boolean, sub: any, options: any) { sub = [ {c: "helm_base", t: "Base", label: "Base"}, {c: "helm_sugar", t: "Sugar", label: "Sugar"}, @@ -244,7 +301,7 @@ export class Interface implements IOrgInterface { {c: "helm_chem", t: "Chemistry", label: "Chemistry"} ]; - var main = {c: "helm_nucleotide", t: "Nucleotide", label: "Nucleotide", sub: sub, hidden: true}; + const main: ToolbarButtonDescType = {c: "helm_nucleotide", t: "Nucleotide", label: "Nucleotide", sub: sub, hidden: true}; buttons.push(main); buttons.push({c: "new", t: "New", label: "New"}); @@ -263,7 +320,7 @@ export class Interface implements IOrgInterface { * @param {array} selecttools * @param {dict} options */ - getHelmToolbar(buttons, filesubmenus, selecttools, options) { + getHelmToolbar(buttons: ToolbarButtonDescType[], filesubmenus: any[], selecttools: any[], options: {}) { this.addToolbar(buttons, true, null, options); if (org.helm.webeditor.ambiguity) { @@ -298,7 +355,7 @@ export class Interface implements IOrgInterface { * @param {Event} e - Javascript event * @param {bool} viewonly - indicate if this is viewonly mode */ - onContextMenu(ed: Editor, e: Event, viewonly: boolean): any[] { + onContextMenu(ed: Editor, e: Event, viewonly: boolean): any[] { const items = []; if (ed.options.helmtoolbar) { @@ -325,7 +382,7 @@ export class Interface implements IOrgInterface { if (items.length > 0) items.push("-"); if (biotype == org.helm.webeditor.HELM.BLOB) - items.push({caption: "Blob Type", callback: function(cmd, obj) { ed.helm.setHelmBlobType(obj, cmd); }, children: org.helm.webeditor.blobtypes}); + items.push({caption: "Blob Type", callback: function(cmd: string, obj: Atom) { ed.helm.setHelmBlobType(obj, cmd); }, children: org.helm.webeditor.blobtypes}); else if (a.group == null) items.push({caption: "Create Group", key: "helm_create_group"}); items.push("-"); @@ -343,7 +400,7 @@ export class Interface implements IOrgInterface { } else { const a = JSDraw2.Atom.cast(ed.curObject); if (a != null && a.bio == null) - items.push({caption: "R Group", callback: function(cmd, obj) { ed.menuSetAtomType(cmd, obj); }, children: ["R1", "R2", "R3", "R4", "R5"]}); + items.push({caption: "R Group", callback: function(cmd: string, obj: any) { ed.menuSetAtomType(cmd, obj); }, children: ["R1", "R2", "R3", "R4", "R5"]}); items.push({caption: "Copy Molfile", key: "copymolfile"}); } diff --git a/HELM/source/helm/Plugin.ts b/HELM/source/helm/Plugin.ts index 377018f..d2c78ec 100644 --- a/HELM/source/helm/Plugin.ts +++ b/HELM/source/helm/Plugin.ts @@ -29,6 +29,7 @@ import type {HelmType} from '@datagrok-libraries/js-draw-lite/src/types/org'; import type {OrgType} from '../src/types/org-helm'; import type {IOrgPlugin} from '@datagrok-libraries/js-draw-lite/src/types/jsdraw2'; import type {IMolHandler} from '@datagrok-libraries/js-draw-lite/src/types/mol-handler'; +import {Atom} from '@datagrok-libraries/js-draw-lite/src/Atom'; declare const scil: ScilModuleType; declare const JSDraw2: JSDraw2ModuleType; @@ -490,7 +491,7 @@ export class Plugin implements IOrgPlugin { return chain.makeComplementaryStrand(this.jsd.m, this.jsd.bondlength); } - setHelmBlobType(a, type) { + setHelmBlobType(a: Atom, type: string) { if (a.biotype() == org.helm.webeditor.HELM.BLOB && a.bio.blobtype != type) { this.jsd.pushundo(); a.bio.blobtype = type; diff --git a/HELM/source/package-lock.json b/HELM/source/package-lock.json deleted file mode 100644 index 8eb307c..0000000 --- a/HELM/source/package-lock.json +++ /dev/null @@ -1,3948 +0,0 @@ -{ - "name": "@datagrok-libraries/helm-web-editor", - "version": "1.1.5", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@datagrok-libraries/helm-web-editor", - "version": "1.1.5", - "dependencies": { - "@datagrok-libraries/js-draw-lite": "^0.0.3" - }, - "devDependencies": { - "@types/node": "^18.11.18", - "@typescript-eslint/eslint-plugin": "latest", - "@typescript-eslint/parser": "latest", - "cross-env": "^7.0.3", - "css-loader": "^6.7.3", - "eslint": "latest", - "eslint-config-google": "latest", - "filemanager-webpack-plugin": "^8.0.0", - "source-map-loader": "^4.0.1", - "ts-loader": "^9.2.5", - "ts-node": "^10.9.2", - "typescript": "^4.8.4", - "webpack": "^5.76.3", - "webpack-cli": "^4.9.1" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@datagrok-libraries/js-draw-lite": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@datagrok-libraries/js-draw-lite/-/js-draw-lite-0.0.3.tgz", - "integrity": "sha512-qtIy6OID7FXwSf7rmSbBnCUkiAR4f1gS9+Tn2PIPHMx/Y4dxwvNxfcjRVFFXrF+LQ14ecO6yvWRjq7WTuLbTZA==" - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "node_modules/@types/archiver": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.4.tgz", - "integrity": "sha512-Lj7fLBIMwYFgViVVZHEdExZC3lVYsl+QL0VmdNdIzGZH544jHveYWij6qdnBgJQDnR7pMKliN9z2cPZFEbhyPw==", - "dev": true, - "dependencies": { - "@types/readdir-glob": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.19.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", - "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/readdir-glob": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", - "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/archiver": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", - "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", - "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", - "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.811", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.811.tgz", - "integrity": "sha512-CDyzcJ5XW78SHzsIOdn27z8J4ist8eaFLhdto2hSMSJQgsiwvbv2fbizcKUICryw1Wii1TI/FEkvzvJsR3awrA==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filemanager-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin/-/filemanager-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-TYwu62wgq2O2c3K80Sfj8vEys/tP5wdgYoySHgUwWoc2hPbQY3Mq3ahcAW634JvHCTcSV7IAfRxMI3wTXRt2Vw==", - "dev": true, - "dependencies": { - "@types/archiver": "^5.3.1", - "archiver": "^5.3.1", - "del": "^6.1.1", - "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", - "is-glob": "^4.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.2.tgz", - "integrity": "sha512-oYwAqCuL0OZhBoSgmdrLa7mv9MjommVMiQIWgcztf+eS4+8BfcUee6nenFnDhKOhzAVnk5gpZdfnz1iiBv+5sg==", - "dev": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.72.1" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.92.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", - "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", - "dev": true, - "dependencies": { - "archiver-utils": "^3.0.4", - "compress-commons": "^4.1.2", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/archiver-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", - "dev": true, - "dependencies": { - "glob": "^7.2.3", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - } - } -} diff --git a/HELM/source/package.json b/HELM/source/package.json index 86225b6..e6f77d8 100644 --- a/HELM/source/package.json +++ b/HELM/source/package.json @@ -1,10 +1,10 @@ { "name": "@datagrok-libraries/helm-web-editor", "friendlyName": "HELMWebEditor", - "version": "1.1.5", + "version": "1.1.6", "description": "HELMWebEditor forked from Pistoia Alliance", "dependencies": { - "@datagrok-libraries/js-draw-lite": "^0.0.3" + "@datagrok-libraries/js-draw-lite": "^0.0.4" }, "devDependencies": { "@types/node": "^18.11.18", @@ -23,7 +23,7 @@ "webpack-cli": "^4.9.1" }, "scripts": { - "build": "npm list && tree node_modules && tsc && webpack", + "build": "tsc && webpack", "build-prod": "cross-env NODE_ENV=production \"tsc && webpack\"", "lint": "eslint src --ext .ts", "lint-fix": "eslint src --ext .ts --fix" diff --git a/HELM/source/src/package.ts b/HELM/source/src/package.ts index 408c1ac..0d21f40 100644 --- a/HELM/source/src/package.ts +++ b/HELM/source/src/package.ts @@ -22,7 +22,7 @@ export async function initHELMWebEditor(): Promise { } async function loadModules(): Promise { - require('vendor/js-draw-lite'); + require('../node_modules/@datagrok-libraries/js-draw-lite/dist/package'); await window.jsDraw2$.initPromise; // Based on _merge.helm.bat diff --git a/HELM/source/vendor/js-draw-lite.development.js b/HELM/source/vendor/js-draw-lite.development.js deleted file mode 100644 index 47e6110..0000000 --- a/HELM/source/vendor/js-draw-lite.development.js +++ /dev/null @@ -1,30294 +0,0 @@ -var jsdrawlite; -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./Scilligence.JSDraw2.Resources.js": -/*!******************************************!*\ - !*** ./Scilligence.JSDraw2.Resources.js ***! - \******************************************/ -/***/ (() => { - -scil.Utils.imgSrc = function (button, wrapasinurl) { -var s = null; -if (button != null) - button = button.toLowerCase(); -var imgbase64 = JSDraw2.Resources[button]; -if (imgbase64 != null) { - var p = button.lastIndexOf('.'); - var type = button.substr(p + 1); - s = 'data:image/' + type + ';base64,' + imgbase64; -} -else { - s = scil.Utils._imgBase() + button; -} -if (wrapasinurl) - s = 'url(' + s + ')'; -return s; -}; - -scil.App.imgSmall = function (button, wrapasurl) { -if (button != null) - button = button.toLowerCase(); -var imgbase64 = JSDraw2.Resources['small/' + button]; -if (imgbase64 != null) { - var p = button.lastIndexOf('.'); - var type = button.substr(p + 1); - s = 'data:image/' + type + ';base64,' + imgbase64; -} -else { - s = 'small/' + button; - if (wrapasurl) - s = 'url(' + s + ')'; -} -return s; -}; - - -JSDraw2.Resources={'':'', -'small/adc.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznFUN5AFT8I9CI0YeTQ5BygTRD9AD0sWHMkmAIgNoBGiADUYBuqhNEj+ALQMGEKRwkKEmgVI+dyR7gU1QIABABwOZ1KEUe+OAAAAAElFTkSuQmCC', -'small/add.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTE6MjA6NTgtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDExOjIwOjU4LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjM1MGJhOTFlLTQ1ZjktNDgxOC04MGMyLTA4ZDhmYjY5M2JlMDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MzUwYmE5MWUtNDVmOS00ODE4LTgwYzItMDhkOGZiNjkzYmUwPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+gqQvdwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABI0lEQVR42qyVzW3DMAyFPzUeICPklLPvBQJ5hG7QTpBmA21Sd4J0AxtdoL6012iDaAP2IgGMrLo2YgI0aFB64M8jZUSENaUCMMZMndkCdbR91KKISPyUQV6BCyCZXgAXz4wAjYjkEdbAGdgBOOd+ksN7v2/btoq/AXgC+qkIa+CqIxIRknZddyhEbDXgQxb1WymVf+Ss72jAZ1X8JZLqPQI83sGW422ro+mc+9Y1m6PW2lTLWtfQrsDpbZ7yepOSuOS93/d9f9AHrLWfyQ4hbIZheNT+EAKKlzc1/CpwbA4PJXJ3xMP3OzL9KNGmnRr8CQnAqQSYZjMsBHzRd6rMOQCNXg5N00ihAcXlkDcl55T7Y31dl66vXHYp2jkL1qz9BPwOAEtJyFBGN+mjAAAAAElFTkSuQmCC', -'small/addannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAStJREFUeNpiYBhxgBFEaGpp/qeGYdevXQebBzaQUgBzFAvM9ISEBKp4GWag46nTp6hq4H5qxQncy9euXsOqoqOjg+HGjRsMpmamDNJS0gzOzs4MvLy8GOq0tLUYiApDUFBIS0szmALh3n17Gdo72hk0NTQJJhsHPN7IB+KDwCQxAaoWZPN8IF4AxAvRks0BYtPhBaBiQxgHqN4AGu4CZKVDM3MzUDrrR9YMMhSIz1dWVaKkQ7gLzUzNcDrv6bOnDE+fPmWAerMQ6JIPUH0gF54HhrECSB7kQmLCEBnAXOkIMhSqbz0QHwBiB6CYILl5+QEQN0ItKATiDUD8HogNycrLU6ZOAYcZEM+H6p9PUhhiLVluXGf4/PkzOAUAsQEslqmRlw2g3qYNAAgwADHcAPBQR2cRAAAAAElFTkSuQmCC', -'small/addbybarcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBgFlAJGTS3NBCAdTyXzFrIACQUg3gjEFyg0DOQoBRYoB2TYfiA+AMQHgbgeiBuB2B5NkwMQO0Llwfzr166DfLkfqo+BhUyXGMA4QMMCkCVJMVABSidkZ2eDGadPnWY4dfrUeiRffmQi0jABJAMZsrOywdjUzBRZTQGIINZAA2K9wUKk6xgqKioYNDU0USQC/AMYzEzNwOz2jnaGGzdu6LMQ6zqQYaamKF5kkJaWBmMQ4OPlA1tOjIEfQAqv37gOF4AZ/PTpU4Znz56B2Z8+fyLay6DYc+jo6IALXLt6DUxv2LiBYerUqShqiY2UD0Sq+8iCFE6OSBIH0GhQkumHRdDUaVPh6RDdUnIKBwOYwVDwAIrBhQMjOaUA0BEOMMOAefkBTctDgAADAO98Twss7PUHAAAAAElFTkSuQmCC', -'small/addbyemail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZdJREFUeNq0lLFuwkAMht0oaxE7CyN0CkNYC0/A5Q1gLUPFE6BOdEMdMpc3oG8ArGSAqTCy0JlH6P+fHHQFQoLaWjJ3Mb4v9tmOyB/LHX/qD/UAS/kXnMPmc7PmxlfDGNqC0ni4EcZzc2jbBYrCKBHelgtFVszo3TlnxXP2A/1zpleQB5tBq2lkl4CCyHoafiYU9qrC1vBvnGbjnR6Aw0CjPYPq80phvUsv9C4Z4TxR6AqQrgNjZC9ZsNOinEEB2WE7xfqI1RDG9sLzzHFdFAIqdI7DvPQp9A06JNAYI5VKRZJlIstkybY5MAP2opfXHtqwDehz2vyRiaT/1JewGaZuZc2k7BVs3m6BSWL1jV8Q2GGajIxSq9XsajpGmmHT7kevI9lutx0XOEbIWRMS8M7CMPxhpI1KKd2XbOq+MyXXUhqiAK1Y4mNktiiJLYq17b/2XHa+c/HXRq3KaqaHmSaBfI7j2HVdFCqKNvo6x43TM/Fv+Ey1dVICFoB3pmmKzn90/MDeIkifE8PJCTTqBSL7kP+SbwEGAFABlnh5iPjhAAAAAElFTkSuQmCC', -'small/addchain.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNrMVD1SwkAU3jC2zNDTQElssAh1PIHhBMFWCuUEwAmQIrYmJ0BPADcgldiJBbbmBvi9+G1mXYxOmHHGnfnmzdufb9/73ttV6r8P59iDHbczgAmBLTDfPG1Sma8dSXYPcw0kwCuwxFxX1k6OJJPD54gq45zYBdB2KhA1JBK6BZmxvsecUyXlmSYDWhaZD5NV1VCK0AcCYA2SG4NM0h1VqjIOvsPEgBCljFTIRdNLpBv/WhSdClsiJZmkNgfGjLogK42QLbCg2yBJoVsQBKrZbKooisRdiRS6SLUSsiWbtQ37YBehH/TV8GqoXd+o/ldCg2wEslv23IDaqZ7Xy1Gv15Xld7E3OIhMhOeT0v6epHmflY0wDGXfxC6KiDzVAkshsOmMNieN7qJPDS+oIf3d2+7wc8ChNVNdlTy1jHqpJE6U53nKPXXNrfnlZoRb/h4r46nN9LtlYdZ59M8bu5ax/m0c662+kDChBMr6BHzjEqV7EuuTb/uQpGMeeJRK//BRtHRUfzo+BBgA+YW5Ud+XhtQAAAAASUVORK5CYII=', -'small/addcodingregion.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWRJREFUeNrsVDFWg0AQ3eRxAHoaSoKFUJA2eAKXE0BOoHaUOYIW2BpOED2B5ASmEkubWPMeB4h/4ixvjRH2PbVz3ps3w+zfP7MzuwjxLz+VkXIm/uQOpqyf6wq+C3/FSw+ILRiTwbja96Paj9gZ2TEvECDQEl1A5wCFsDOs21AJP9UKkJyMiNb8/UEIuaZFjTAAcMP+mpNVjJlxAZS0YUylCrK43AagvtYQmFriSimF4zgxBYuiiLGPiEsFtL4h2ACoqjyFSrWQyEREUSSYUCUjnfcR3tBQuOrAcMDU3+WoD8GNXk2jaRfL81x4nrf3syzr4vVLLdq2DcUA4QK6M5E0TXfAXo5/+V7blgmquC06X57vp/wlvn3bkmmGekgDedJj5bLspuyf+Idbwt4j87WpDI9bEd7kyFdQerO2muYRoReTfPo5DBzd5ZcSH6uMyOi1GRMe9DTmaongHkSvf/o/fBdgAP7jmdHCBQ/sAAAAAElFTkSuQmCC', -'small/addcomment.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNpiYBjsgBGXhKaWpgKQygdiByA2gAp/AOIDQLzx+rXrC4g2EGhYA5CqJ+AYkMGBQIM/IAsyYTFsPrphCxcsZLh29RpDdnY2sjDI5fuB6gVwGgiUBClKICHIQEHRjyzAgqYgH8bg5eVl0NTQhLNBQFpKmsHM1AzMvn7jOsPnz58ZoA5IxBqGQBe+B1JgL4A0LliwAKfTEhISGE6dPgXjOgLD8gC2MBSgNNmgG3gBxgDZrqWtBcanT58Gi02dNhUuhuQ6FH3oBm4kw1EHkJMOM7KMqKgoyKYMIOZA13Xj5g2G06dOMzx99hRdKvDN6zcvcCZsYMSAksJ+IsIT5KpEoOs2IAsyo6sC2QZ0qQZSdkMHD4B4AdSwE+iSLDg0XUTjF0ID/gHQkAf4nM2CJ5/CQCKugoAkAAzL/0CcQLVyDVp8DUMAEGAAqgdmjgBYz3EAAAAASUVORK5CYII=', -'small/addfile.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOhJREFUeNpiZIACTS3NBgbywYLr164/ADGYkATryTQsHogVYBwWZBmgLSS7Eugze2Q+C5rkfix6GoEWHSDWAhY0vgMWNQpAiwyBhn4gxkBGoGKQ/xMIhOEGIL6IJwxBPngIihyQgSBX7WegDnBkIUaVmakZmH767CnD06dP8aplIiqRLVgAxgEBAQTVMjFQGbAQ8iYykJaSJuh9nJFy7eo1vC6ZOm0qw9SpUzEihX5eTkhIQIkUcGLcsAGMYV4mycBTp09hiIEMwSY+MLGMzfu4vEmygYS8iW4gqKRtpJKPH1A7CBkAAgwAekhN2H1dYu8AAAAASUVORK5CYII=', -'small/addfiletolink.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNrUU9ttwkAQdBAFkArgF35yqSB0QFIBSgXGFUA6SCqIUwFQgZ0KYn7wZ1yC00FmpDm0upwUB/ggK43usbdzc7t7SXLpduUn48l4gGEROfNc7+u2K2HPzEl2F/i5fv2TQihzGO+BOZBBzSZQ/QnkwNcvXBVjeyKjkjdLRtNTHzuQDYHUq1gRpxQC8VOgCHN4FusHN7Ewg+BMjqc3yucScMbXAC9RQgSsMYyArfHfAAV8txjpZ06fjH9KP/AQU8jiXPue8znRJYWUlVLJbqi4xrmZiH/0Yatgb1RaaV7K3+qJjS51imliCjPgA4dKs+eUwwz7OzU5CVKsR5pnUUIE5SKzKls9zfs3pigHH9smWmVW094WmvJbdv3LZ+3DoZV9hDlLWOkvL08U9578C/sWYAAOEG0vSWG3+QAAAABJRU5ErkJggg==', -'small/addfolder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhxgBGZo6mluR+Lmsbr164fINlAoGEJQGo+FjUPgNgQaOgHogwEGqQApEGG+QOxAQ51G4D4IhHmLQAZ6ABk7KdSEDqyEKPKzNQMTD999pTh6dOneNUyEWPgggULwDggIICgWiZqJxsWQt5EBtJS0gS9jzNSrl29htclU6dNZZg6dSpGpNDPywkJCSiRAk6MGzaAMczLJBl46vQpDDGQIdjEByaWsXkflzdJNpCQN9ENBJUmjVTy8QOqF7AAAQYAhIpDjfvz/ZMAAAAASUVORK5CYII=', -'small/addnote.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBjsgBHG0NTS/E+JQdevXWdEEaDEQGS9TNT2MtUNZMHifAcg5UCk/gPAsDtAUxdSPVJYyNCsAKQMgFgB6uULeMOQgGENQKo+ICCAQVpammHq1KkgMfLCEKgxAGQYiB0YEMiQnZUNk3Ig14X9ZqZmYAYvLy+YhvGv37gOthDo/Q1ERwpIHheIj4//Dw0O0sJw6rSpYDrAHxqGUP7TZ0/J8vIBYCQ4wLwKixQksAHDQJizcYAP8JIFGGZYSpsL6MVXA5Eu9YemQ5glC4D4I9DABkpylQAQG9ClxAYIMAD8qWGJiIe3+QAAAABJRU5ErkJggg==', -'small/addtoplate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNrsVLFSwkAQPdDCRqRhhhma2BErLJJW+QLCF6A1lR2dWGEnFtGS8AVCaQW2UkgjiR0WSQ34Afg2s8dsGAtGsHNnXvbucvf23e7dKfVv21qKPuaJ2dwRn5fmxvUOyGqAsS8GjoALoAoMgFP2N8AZz3nh4GXgTcy5B6Y0QRL22dMPj30PGIs5NJYFOmJnM2Cog+7RJ5fLNVnJhz/xA/Tn7D8xFjBRHngEDur1et62bRQgVQyjkAIYHOhZF2XJahzgkhXQ1p/Els+1zMn7JPbug6tc15V5LKdF54pzQ8RVKOwxeZujb2KJotCiEuesBNVDMVZqNBrKLJqJ1U7FUbZlx+3WbUsFQVCRhA4nebzmZ3FaQGZZVoKwUCjEIMscZmJRK0JssQlVHvwU/pj9mBM+8AN/RaSJwzBUURTF7cXXInFTllyEGueyw/m7A7rcz25QlHb6hxzKY2AwvA2L0pc5NFiNI3yfiedyFSkjG72Otn4c9PXMrt2ern4cUr95BSBAH/IpFe9P38NvAQYAUFGBBkc6AEAAAAAASUVORK5CYII=', -'small/admintools.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzA4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNkY4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBDNUIzQ0NCODRDQTExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBDNUIzQ0NDODRDQTExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ysxYlwAAAfFJREFUeNqs1F9IU1EcwPF7N6m1FENY3bdGxMRtDz4M9iSYsLcIioKEIDA2wR4CIaFBUqE9hJpwexH789rfl6Eg0osvaWypiA8D3wp6EWxa7N6Jbn0P/tQpOnetAx8O97D72/n9zj0/vVQqaf9z6IlEovz5AgYwhxf4VenlQqGgJZNJLRAI7Ab0+/1qvoExnMRnzOI8bmH5sID5fF5LpVJaNBrdWavxer13mPtQj5cYgYEv6Eei0i5dLtfeZ3ThIa7Dgze4JGmfwxknNazBKaThwytZn8d3VSaUnAacQAfuSS0tqedNtMkfrVYbUKXci9Nyut8k1du4hvt4jatOdvgHd/EAQ7LDVgxKPWdg4qwc2JEBNanVo7L1BozKmnIZ79GEbhQrpXzQWEE7LuItNnEF6/iEWqcBNXlZfdhfMS7fZg+m8AGNTgNuj+dyMB/RgmGp5TvEPB7Pnh+7fT5fNYe3iCUJtibBp4rF4rNcLrcZi8UW3G731l0OBoNOvltDrueMXNc67vNYKBSywuFwJh6Pm04DanKzVCey1U51XX/KLptpg78Nw1ioNuXysYEUInhs23aDaZqdzD+y2Wyz6x966RNMq08qnU7XMZ9Q/XO7Hx53tJDyoGVZtbSxHCn/3N+xHY8II5PJROjeNrEm/wowAPpcj7DNWN/gAAAAAElFTkSuQmCC', -'small/advancedsearch.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzQ4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNzM4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M2ZmMWNmLTE3N2MtNDViMy04ZWNjLWRlYTYwNTVjNTQ5YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MEUwRUJGMTc0NEYxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Phbys3gAAAM2SURBVHjarJRdSJNRGMfPXre5cJupZEWmpWTSTJxNXHixoryQIRHdGmirsSQqISLWRNmFGNoohaBcF3mTLCKZLjIiDIu01BIxZG00G4IkWzWduM1t/Y+dZHMLITrwg/ec85znfb550WiU/M/FT3bocDj29vT0VM3Nzcn5fH4YRxz4CJ4D1x+5QCBA9Ho9KSwsXH/Li7UwFAqRpqYm3cDAwImFhQV6lC0SiYQpKSlU7jv2QfAQmOnl8vIysVqtpKKiItHClZUV0tjY2NDX13dcIpHMq1SqL1qt9kV3d3dofHw8FasKYkpwBgjBHfqO47jkLg8ODpZAmSYzM9MH5btzcnIeyWSydxkZGatYBApfQ+wouAZqwXtG3FpzeXh4WKDT6R5HIpEauufxeCEoFWRlZU1BUb3X6x2PseQ0uAJeweWLFouFlJeXryvkIExMJpMBlzU0hmVlZU/lcnkb4kaWlpYOejweC5RtjzHCBubBHrB1o4XcyMjIgZmZmXNUgc/nI2KxOAh+0m/qKs7zIVcX88YLvtKEMeJjiAcyuLkTmWpDRj/DOgfOv4XD4R9wexsS0goZFc5usDepzLJFRkJSVkEEHAYy8BLYwQmWzbUiiHmjAPvAGHM9XiEsGYNrjtHRURV1E9bQH/D6+/trpFIpzS6VszJ5CWgAAvAWJLQZp1Qq3Wq1upXWIbJKpqens0Ex/WbKnoEn4Ai4C2iCnEANdgkEgngLUXeko6PjAdpIhKrX+/3+SpxXCoVCqvATi9NtFg6OuXoBVIP7brf7VGlpqT+h9WjJIAHZcLXY5XLloYyqsRempaXlomw8tMVZhnPB2d+tHNDl5+cfs9lstbA0kNDLsSsYDJKJiYm89vZ26eTkpA/WzrKryywx9bQBUGItRUVFO9CiOuo+97cxRF1GfGfT09OnkLjZmKtbwA1u0rh3dXW1YCJFNRqNke65zeYb2jHZ8XUgRnXoMUiI2Wy+ZLfb9zc3N9dy/zhH6V/Ow7JDnZ2dGoQtaDAYrjqdzpP8zV7SIUrnXrIrxLCut7fXAoVbEJaSgoKCN5sqVCgUa/XIanLjWsS9dmho6B7G3Qej0Wj6JcAAvIJmB12Vo0EAAAAASUVORK5CYII=', -'small/allused.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzUwM0ZCQ0U4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzUwM0ZCQ0Q4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0NTM4RjJEODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM0NTM4RjJFODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VggtCgAAAtVJREFUeNqslE1o0mEcxx+d5mbY2IsbLCi9yHCtlE3YQcJ2CYlyw7LVqLl0h5UYqxgUBYGES+Y2mgRhRofYxKJGB6ncHKN26LKOimJbOwgJjjnDTadb38c8rKnlYA984Pk/z/P/Ps/vlbG9vU32czDJPg/W/w74/X6yurpKysrKCm1XbmxsHGtra5tns9l/VqjJO/H5fI1dXV0fwOPFxUVGT08PqaurIwKBIA+hUGiXSCRhvV7/IJVKZf/PMzkWiwm9Xi8HNMTj8Qoul0uKcITJZJ7s6+u7iIvFOp3uNl6bbzIObeJwDNM1zNNFPCEFz9Lp9L329vbPcrl8XqVSvTGZTMuFfJihvgGR3Hz3OAWGwV0Wi/WJ+nd6elrNYDBqQqHQ2UKCm6Ahk8n83Nra2i3YAe6D6+BreXk5GRgYuLWysnKmtbX1VX9/v7uQ4HeIJfh8frC6unrnuh5cA2rwI2tKJjPE4/HEZrO5U6FQrBVMG7zqcCKRaIQJPtxMotEoTZk72FLmXigC9CY9glBptVrPNzc3p4omtlgs9hkMhsGmpqbxpaUlGvVhBEeeE4zk/PsFJMAViKb+mdgw4RcYr62tZU1OTj4PBoMH4KsL2DoNOIDOTWCo5NJD9Lgej8cJ0QSq4GoymaSBqgCvwUwxsTxBWmZzc3M1Y2Njb1taWr6Njo4aaRLD+SewfTMXEHvJzSEcDgs0Gs0UkvW9w+F4ROsXYgpsvciZ+a7kboNSO240Gl3d3d1P7Hb7U7rmcrlUCwsLVvjwBj4/ltxtAoHAod7eXsvIyMhDtVrtRuoQ1KhudnZWV19ffwk+DOypH0YikaNVVVVMpVKZFdNqtYNut/vyxMREp1QqDdCi31M/RHvyr6+vL+N1L6kg5gedTmcHIhxHgAgSveDPdJ2ezxMUiUSbeJHBZrOdw2faYrFMoWFmT8pkMkJrlsPh5AnCFQSW/bX2W4ABAMF/N/eC5G8oAAAAAElFTkSuQmCC', -'small/antibody.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMtJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznGjBg5CA1mIULMAKZ870r2gBggwACiBVWlAdAbpAAAAAElFTkSuQmCC', -'small/approval.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARlJREFUeNpiYBhxgJlSAzS1NANERUU53rx+84JiA0GGAan1QBwBNPQl0NALjBQYZgCk9gOxAJKwIQuZhoEMmY9m2ILr165fYCLTgf1AbIDEvwA0LBHEYCLDdQVAKgFJ6AMQO8I4jGgKGYA2TSAQbufRhB2Beg6gGAhU6AANYHBYAHEhUNEHLOF2Hy3cCtEdwARUqACNehgAeWc/1DXIYD+WSMDwDRM0DDagiRtADQ2Aug4jEkCuwxYsyGGYAE0K6ABkWQB6JICSCF4DkQId5H0FPBEdCDRsAy5JlGQDtdUQiA/gUD8Bn2FY8zIwP/4A4oXAvAlyvQOS1AGgYZGE0inOhA3U3ADyHjTMHkDZlANQssKShOgHAAIMAPnmYKqiF/NOAAAAAElFTkSuQmCC', -'small/assay.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNrMlMFNw0AQRRdEAaSDcAynTQV2KoipAKggSgVABZQQUkGcCuxUEHMhV3cQl8Af6a20GBsSHxCWvlae3fn+M/PXzv3352Jo4uR24rVcC9Xh49CE+OVAsmcte6EQNvHeVU+CfTkV5sJaCspob6zlXsiFd2HRScjBTEhYK6EhueSMxVeQPYSSY8K45AXYCiOpmmpdotTIXiGz2BiiHe/fh0KTNyK6aZV/RKlhLTwJb8JLPIzOKZM808Eq+kgBgaPMR+3nfQNrDyWnxNCXjP6lvE9FVv/kgLZttgzB1O0pz/rlUV7/Zqk2oanx2MYTW6I8O8WjXwhpcki+MzI8uMOT7lyFLiTT+FJq06i3gwjj5AJY+TXGPo+QxjckhyHU9DcZojCoTLgtIxT6UwbTR2j2ybDOkYFYbDb4fyiyFSRl1xX7s+dTgAEA2pJ1FjzBnicAAAAASUVORK5CYII=', -'small/assayviewer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNrsVL1OAkEQHtDChngNjddgQgFWWByt4j2AxwPIzwNgYosFUojXIQK24BMID0CEmkIqOTsaLMmFewCd2cydE2IiUeycZO5jZ2e/nW93FoB/+62F6JM8SF5tiK8b5h+VDZDl0WPbIrCLXkDPoj+hHzJW0Y84Z8SbZ9CfRU4DfUYJkrDPSBNdxh76RORQTEPvCGUu+tDfNLyS/DB9mfro8s4TJnYFUYrRIplMrMlLeedFlFDkhST9UUg+9nfWdR30PR2W3hIcx5HnmJEVXvDZEHEWK+wx+a2/eyKRgNp1DcwTE/xx866pkC0mCTUhJYVVayKWokWWZUH7vg2GYYCRNiBtpNU4d5ZTc2inkpAidSaosETCTiQSUYts21ZSnVcnkEzx8mVZkcfjcS0gRInU3PuIQ8Yet0XR8zyVQ8REQkhG8fnbPBgvFovPW0aJqkJEurUOY51luzf2DbSaLXUh4/E4IBkMBupcaR4JJ1+docat4CN5l6rJF/KKiM6QKiMzTRNK5yVgFX3ZNtVvntY6zzOzRd9oNBpaI3nETU49srPyIBo8Pwz95F8AFflNPuOX9Xf2IcAAZ3WZ5SSvUo8AAAAASUVORK5CYII=', -'small/average.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AqgOoGshAZvgJAKgCIP1y/dn0DRS6EGrYfiOOBuB/In0+pl/uB+AHQZY5A2hDkUqChAWQZCE1GIM2JID7Q0A9AqhCI63HpYUTS3ABlXkCSzweFGxAvRNO3HmrJB6hFG/BFCrKBBkAcCPIymhqQASDXLwBiAbyxDLTtAZJ3QfwDWIJiIyiSgHINpIShAxAfwCF3AepCkiIFpOEiNgmgy8gyUB4W6DjAA2yFCXosxyNFgAGUjctQZPlCqKtRImUBnjAjBB7QrFwFCDAAXmlDSKfTkVIAAAAASUVORK5CYII=', -'small/barcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpiYBgFwx8wgghNLc39QMqBQrMOXL923ZEFSSARiBWA+AEUgyw4AKUXQGkFJDZIjQAQX4CK14MMQTYQJggy5CBMARJtj2RJPBK7Edl3TNQOw1EDRw2kMOuBUv5DCsyyB2U9mAsXUmgYzAzqA4AAAwBHOht9muDc5QAAAABJRU5ErkJggg==', -'small/batchregister.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNqUVD12gkAQXnwcgDo0WmqKSIFt5ATiCZA2FOoJjCdQC9OqJzA3iLakkCqW0pBWbmBmeN/y9hFIcN6bN7uzw7ff/CyaqCHtTtsg0604Ts9f50hutJqACzIuaVxyzBe1CDStBCQADjKwZbsn9VVAAjggdoO9XwpIAU0yF9LDH6Q5ZkUgS8SfSB1OvQzwg0xEh9MC27xW5OuDdZYq7V9p/UxrRyuA5YGkvF6AjZRYYbbHJT6axiynRUBOdU76RDphn+u6YugOs3Nv5MnQLeI43mLmspa6Asa0U7DYSL9pmsK27WJlRqRHgC7oWx++lq7M2Zh0CFtHOM6B5brPiWks2W0kZbJXz/Nuf0kYhjeKuyF+xGuQEg3c1kcKQpm/uvKujFJewylqwYdR8p1012/r7KBn9/IaSl+SJAL1FpiErRwpTWnKlUcC25n0B0EggpcgW3ceOyoz7vQOY2bJ+jUANkF3x0gh/ifNFB2eYS7zeA3FvKDDctBWGJ0uj435YGbO8DOUYA5+CjMCa6k36fiLZI+dwCOA72hvcQepXgNSA0BHpCqQ6rRIXUPKJ4As5btESlUyYIb8dqsAi499j/Fhf6R0VBVfrd2vHyxAmsrHBkph3TOUunpjyW8+vnPIxY8AAwAOC+mvZoH9IwAAAABJRU5ErkJggg==', -'small/benzene.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrUVEFSwjAUpXgBNt3XJa7wBNITACegPYFwAuQE4gnEE4gnEJeu6Erc0b3MyNad740vTtpJQnXc+GfeZJrkv7z3f9JW648jck12z7pDDL0jueX2ZbusT544yDoYHoFX4CNAOIvj+Hn/ti+DCkF4jSEB7vgNFSvHgRnAcYD1c3u9XdtMmxNgDtwCB586YE1S5GRehVik1Sd9XuD01FNjHjoGpsA9cIq9h4pCNYJWV1KQ+4qH5IUs01EhV1WFINzJKk8ukDQNtRj7+1JHFxupLCMtXtGiCCsWjpByr+lygpyRsTwAHmQhb0KmoIuhcvsV+cC7rsSPg82Uy6+mQNFaxZ39gsw0c1FvCid3prgNyTpqyNw8w7Z1FUrrQjeNSf1NR44TqXIkG2MPEctzI3UpCIvQW85Uy1SkruAtuJSzvMnva2Ml+qLnuq8+wiSg7lulbfX/xKcAAwDtIIJtByesEwAAAABJRU5ErkJggg==', -'small/biologicalreagent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNrMVMFxwjAQFIz/UQnmSV5QQUwHUEFCBZlUEKggSQdQAaYC3EH8ip+4BHdAdmfWGYWxJDzw4GaWs9F4tbcnnTE3jgF/xo/jDCnrWK+rn2rTh3CovAMeOtY/sNmkl0R+AJw8awdg7rxnwEtQIUoqkctzUpIhUV3ZbkzFQBotGaRTz/oCaEC2ki2W7yHCJOJIJqI2bKs41hRfFMAIWAJf+o++HqkasEFCmf7PI9jRADmwUrmF8hPJYwrfPefRLdmobG6c6gx3ewgVs4gFtXIqlU2s5JM66os3kVmRT4JdhsJBSB69xIZ8fBZZo9tE8j2vadL38pMUKVfzvqWWz6/senLFYHGbscVGn5ccbBPpOLu94NHyNcV2HBFfsPS1S/Y3D0W2c4ZBa/js/IOLBqx7U2QwB2th7iF+BRgAK2xs2L70ZfQAAAAASUVORK5CYII=', -'small/biology.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUE5OThFNTg4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUE5OThFNTc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjllZTBlODY0LTc3OTgtNDI5MC1iNjU1LWY3ZGNmZDk0ZWQ0MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRkE0RkU0OTdEQjUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpY5RckAAAKaSURBVHjajNRfaFJRHAfw67xepaZYJFLEIsJogimUW+Xsj5DCiEWjJRRWo/ClWEQPQUVE5l7CgoqgggV7MYWeKvrzUL3YpLBoRheSynqIEmoT0tSZ63vkd+XOmXrgA5577/l5zvn9zlGYzWauSTsH3+Cm7NlyGIQr+Xyei0ajnN1ur73kueZNhFOgASV8hiH4LX2g0WjmDKgPuAgK8If676ALdsEHOAjdUF2WUqnkEomEgKAzJpNplj1TyJYswAMYhWf0Z0/gMVym92zQdfgFx9mgbDY7YrFYOrH0Ua1Wy3XUzW4FfKf+ElgD22ACXlPwVbBFGqTX6/OTk5P9yWSy2pcH/Ak/YAf1j9G+xSBE787AW1gJe9hHhUKhz2azJTHLeXtYhpNwG3phLc3uPaymRDwnj+AqbM/lchv9fn8/W26jpLyA03AHeigYa2paDZvxX7gHxmKxeCsUCvV6PJ6PUoCOBqWyAcZpz5q1sXK5PJFOp7vkpdMooAvCXOtW4Xn+fiwWGyqVSnPq0A0GKotlVMRiGwE5tVr9MpVKHfZ6vQewh2okaJanYl1KBa2lfcpz7bUpQRCM8Xh8WKfTFaxW6zQLuFf2gREeQicVb6tmQJbFYDC41el0cjgt87I8xU4PFfTXVtGQ5XU4aZ98Ph+nUqkaJqVENbavjdkpkeUBh8MRloI1CqigfdwP61sEPIQs92QymW4k478BT8AmOA93wUrP2YgKFTVru+EssnwkEokMBwKBnbVpGwwG6TdLxDUKOkb9S7CYSqkPvrBAcJTO+jiCCqIoDrpcrjCLxbNbV7orSZb6F+ApjMAAvbtIx3MzVI9bpVJh9Vg7Krzb7ZbfNjfokpCfbWYhLIBpmKnL9BvcNq+ke/WfAAMA4BrC0xGyYsUAAAAASUVORK5CYII=', -'small/calendar.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMDc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMDY4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBiYTljYTJiLWIzMzQtNGJkYy1hYTRmLWNhZTU2Y2I2ZjhiMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMUJERDM3MzdEMTAxMUU2OTQwOEM3RTYwM0IxMTZDRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvxstMkAAAJcSURBVHjarJW9ixNRFMXn48Ww6iYiJKAJ6rIQMIigElIJIhIDmkIwWIid/4ConSCoiKCFiGghFrpqI2IKtRVUMGmDbuFoRAWzRVLoYtxkMjOeu5yBW2gQ14Ff5t157503996TxC4Wi28ty5oFY2Bb/3gNBoOpSqUyZzAWkmSlV8Kx/vPlrCTN31y2Ye2+gpGe4D36y9jyfV+0hvLRBcfBG+By3uXiUAlINoGOIRLU63Url8uFGGfb7fYhEVwSZXAJbOHG02AHOEqBZ+A1OMeDPFmfSCSuNBqNdZJlNps9WygUFg0XTIEDYBMFroLtoMK4z0z2M5aDb4GDYFoeeJ53A4KhmVTgP4x1bA+HQysIAisMl6sTGdZLUp4DG7n4E1O8w40vwHvGIef7ELpdLpdT6XQ66Ha7C4hnDWsmgg2QouACn32j4BfQA/dYokXOPRIzS7NKpVK/0+kYEfQpdBfMUKAK9oFTjO/zwIeM58ER13WftFqtlKSM1Ku1Wu2nUX4aqxpFyiIWx5GKfd5HyWRS77F1U5a40KbAWAmN1bOIX4KQZZE9AXy43BURXAW+g8NgDQU9pvWYAj3WrMx4II2BSBXGNjR2D8beFn/1VoOTrKEIngA7wTFl7FfgIgXfgQsw9nkYe728JYx9Bj4cGb66dGoP2EyBDCiA3arLH1ScYSP38i7GvgzBwEwwsjPhVymec5Sx7djYDutzUxl7nhviFr4EbXCdKX+Wt4bQNRh7Woydz+c/woczIrgW7ALP1cnyl/CD/oubtwE8UG8oe55CNAJhs9ncijpmfgkwAGS26xQUWIDTAAAAAElFTkSuQmCC', -'small/cancel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczOUQ4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczOUM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmE1ZjdhMWExLTUyYmEtNDA3Yi1iMDAyLTYxYTBjYzJlMDQ2YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRDYwQ0ZFMzdDNDUxMUU2OEY5RkNCNTdCQzZEQzY0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgUGWlQAAAKrSURBVHjalNRdaFJhGAfwV48rJ61IG7jCwmosBruQ6UWNyCYEWhSsD2zgYBfCJhERfZBBErWRoCBrkjEsCroZJSv6QDGHV8EwcIwuBjJYjBj0tRSczpT+LzyOw0lle+CHeHjPc96v55F1dnayOmEDF1hgBQqggRw8hif5fH5pcnKSmUym9ZcUNRIdAg+9/AF88B1KsAN2wxl4DlNKpXJM/LJMMsOL4IZxmIAKqx8dlUplVKfTCW63e8BsNmf5Q7lowAW4CedpSY2S8ZgXBOFsNpudGxwcjCwuLjbzh0Jrayv/5dMMUrJ5tsEoFossHA5P53I5YzQaPWm1Wt8qaJZ3wC9KthX2wjIdgjT0sFoul5dVKhXzeDzXDAZDMhaLHeHJToCaNrka2+ApfIKDkmRemIEe/gcnzbRa7ZrD4RgPhUIunvAyneZf0Us/YRja4DXsoud8j2/Qob0Sf8Vut7+fnZ3V8ITHIVVjWXNghf3wApzwAB7CXeng9vb230ajcVVBl/ZXnX2foQ9+pK2ZoBX9Fy0tLUytVi/JqQJKDQ5zTXSFyo1OHYeUV1BFbK8zpgsS8Ble0nKLcKXWYNzLNgVdiz019lEHb+AH9MM3+vAIleKIePDCwoIslUppeMIQnKLTrMY+eEe1e5SS8RgFXgn3aasC1W1Ip9NdpVJJkNN965DctwO01F74Ipn5VbITlFgmQyIWCASG+vr6EtXmcAnMcI5tIviljsfjLJPJ9DidzrFkMtlbbQ4hamX3NpMQrYtFIhG9y+V6hBne0uv1f6oJeZU44DDw/ta8kYRY7jGv1ztlsVj8NpstJm1f/LRPwxaYhgFRyUnDyLtToVDw+3y+68Fg8Bmfba2OnYchKvxhamd89l95d6HaVtN7CVzk293d3StNTU3rCf4JMADW29FLcwK/QQAAAABJRU5ErkJggg==', -'small/cart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFNzc4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFNzY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmFkMmIzYzM1LTk2MjItNDgyMi1hNmI2LTFjMjhjMWZlMDY0MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMkI1NTM3MDc0MzkxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjQJmmcAAAGoSURBVHjazJS7S8NQFMab2ohNkWhBLEIhBB9dhA4d3Ir6BxjEioODgt3EQUTEpSA4Kbi42jGL7jqJ4FhEHFwcJFjfVaSotSEm8TtwKWlJIIEOXvhx7j1JPu55hbNtO9TOFQ61eUVKpdIIrED7gN9a4ME0zaSu6/3Ym+TkJEl6gr0H36AjgFjcsqwbURQTqVSKfDqwI4IgnGBzDfYA71OQbjNeq9UKmUzmslgsLjdCBvtgnZ3rAUKOgg/cMtpalAsmNBYwh0lQAS9uVT4GMwEFZRAzDENzEzwFw6AngCC924eilt0EX6kFKNE+xTjwS3nM5XJfXo19CKZ9CoqsxaoI+dNL8Bz0ggEfgjE2DHetRXFOR53lcpPZTg8xCnUI0HRUwZuXYJw9nASL1PUsArKGw1pM6BZ08zxveAlSTuaBxPbUn1dsesLMx7GbT4Fn8mualkyn02U3wQpjASTAGth2CXkUDAIFrKqqOqcoyk5DEPPofPkHzLIqvnvkkPxdYAXfTsiyvNsUcjabdZ4L4ABQKyx5CD6CDbCF39ZRPp8/a2rQf//H/hNgAKeXe4sDiF6hAAAAAElFTkSuQmCC', -'small/categories.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBgIoKml6QDCxKhlItJMBygmCBgJuGw/FoMOXL923ZESFzoCDWAEYRCbWl4mGrAQoaYf6PUPULYAEH+gxMCFQKwAxPZQ/kYgfkCJgfForvKHshdQEoaFoFiFxmwhNcLQABiGcDalBl6AejMfyn8AFRs8ycYAGrMXkPj+lIbhBWCEHIBmRQZqGBiPVNLIU+pl9IR9EIopLg8bQJhaeRlcZDEMFAAIMADBDy2LwOzX7AAAAABJRU5ErkJggg==', -'small/cellline.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaxJREFUeNqsVDtSwzAQNZADuHHvktDEnCBxR4cpqYATJJwg9glwTmDnBDEllZ2O0hVp0zKkMB10vB3eMrLGGQMTzezos6unt28lOc6B21FfwPBs6KILON1uXjbbPwMS5BY2hfmwiq6JgMKWsBTgTS8gwITNihsX2FRYfgGdk/UV/NVeQIKVsASBKdeEYQRzeUghzLAuGWSw0AQ9tghmZJUaayWBhNWY7B3E5OjuZE6J2oA8sUFgbB1yTh0T2Br+UB0EFXYzXRsYG6fcpDpdUqdHWN5VALaEWcR2yoEUgJo9wN5Z1ZEyEJ9kAouZkbCsJTPq/w1IRjUDRK+QqYQsUGzo2VDPEfZlej9ZtFbKjqFNY9w9s4WseMJLntsBAwJUSrlDQ5fgCdmnHQf5ZN7SsAZQxLGrKTDQ5SZnz0NwqWUr5SUrXfB12C8k4oE/l5uuuRlrMhQ9pIqzDhYrpj9m1Uu5zKy0yHOvsSc62L3tPjzPW8trQf+J+bP6MH9Cdwp7pUlRLviyrjXd/34OAdOc9H4O1vclqd+wIMpAb8Li199XB7hvVLj3gz14+xJgAFXpv7eDizErAAAAAElFTkSuQmCC', -'small/changelabel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUVEQTFGMzA4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUVEQTFGMkY4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkMzA1YzAzLTI4N2QtNGVhMy05NTZmLWQ4MTMyNDZlODQ2YSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3OTBDN0NFNzc0NDMxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr593qAAAAMvSURBVHjajJRhSFNRGIbvZrbZaIISBbVcE0qGtAlKorVghLH+aa2tWbqaYZQI0iSISBosQbc2B6WxXxZztEAopUJpTmUhpmPkHw0RQS0JNnVTm4qu98i9sjGXHnh2d8757nvec+73HSoajVIMOp2ums/nR10uVzEzVllZSQmFQkosFidAxoeHh6lYDTZFt42NDSoQCBRXVFQ0dHR06EifNDZ7J2RfbTvabDafUygUL/1+fy5W6Zufny9sbW192N/ffz4YDEpTUlKO7VeQRWxqtdqBiYmJoVAoVBqJRGYLCgomWSzW8c3NTdb09PTfcDhMnK4g/i6IMC+vrq5SOB4K8fEOORzOEpfLPYK/4a2trfzy8nKr0+m8gmBFbm5uGRa5jblJ8B4c2nPLaMtweAYrLoMI4DEBWIA8lsAz4KFFeckED5CftbW1JYlEMmkwGGzY5ppUKh1LEm8GC7SoGoR2FYSL2fT09CKcxcgeZ34QCMF38BZoU1NTFxK2jBSZwkdg7SHGAV3gFGgAbuJ0ZmYmI0FQrVaP+Xy+5fHx8WRiXNANZsAtoAcn8CGt9fX1TrfbfTROMCsr6/fc3NxhnGXCYSMHydhn8BNUgUf0+TWBHzKZbEiv17t6e3sFO4LZ2dkBpVI50tTU9Abb5zBiHo+HPzo6+gVOfOg+AE/BNXARiJBO31B+3S0tLc0QbYdTyXZiM6WHsjPir9jhcCi9Xm8G+h+Q0F/T0tKeIO455mTgEsgH75Be9zo7O7vy8vIok8nUPDg4WLgjGCNq4PF4p1F+fpFIxFpcXGyE+Au4JCJycAE4yPYh+Kmnp4dCrLKmpua+xWKpi7spCOvr65RGo3mMvPyIQLZKpTJBuA+3CxuUgF/0k8rJyaGMRqMaDr0QPknej3MY67S2trYOV9NluOjCtl9juATY6a/spvP3JgxU2e3263K5/E9s6cU1JCtls9ksqJhPOPgiDJ0FJnCDESNJjbk7Vqu1jBFLKsiItrW12bB1D9LpFS02QE9XAw0oEwgEwYTS+59oZmamHfW9jm4jLaoCpXT6hJiLeF+CpEGMPNrpe5A4nAJXwcpu8f8EGABNC5YSPXyFMwAAAABJRU5ErkJggg==', -'small/changelocation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNrcU8sNgkAQXa1AO/CqJ6xA7MAOhArQCsQKFivQDtAKpAM4yZUO1Ar0TfI2mYMi68lI8rI7w8zb+Rrz61/Px3g8GVscEVABu/pSH78mBNkKxxJYAyNgAxQig/jm7PoeAc6AE5wL4ID7FAiAvTbyIWyABJEKiWFUcyB0us6EdJCUpWZnyJFXU+AgNUqYkuG5RVQZ/i1wt8pcShC/JeTrUpdMasZGjOA0VzY5r9Lp4lN6VyBUckhd4B6kPOg6Ho8XupQk1p3v/F81pRACrUBaKcfkLrXkcHce4IBRRG1ZsHGfI0Q0FefLtqR2895ltbfiHLtusmE55KHPHEpHS7VeG7UtIR84+BCW3NtUj48jhb7xbUpu/vZ7CjAAtCZyYE38EqEAAAAASUVORK5CYII=', -'small/chart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=', -'small/chart2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBgWQFNL04BYtUxImvrj4+MdcKg7D5SfD8QCRBsIBAbp6enr////j8s1CUBcQIqBDCwsLCAX7Mdi6AIgfgDEH0gyEAQ2bNggEBoWuh/oPRDuB4ldv3Y9EUgFAnE9UKwBn4Es6AJPnz1luHr1KsilKOEJNPQC0DBHIBMUlvFAeiEQHwC5GiSH00BkoK2tbeDu7t6/c+dOWBBcAGo2BBoYAGT7g1wMEoNiwgZyc3ELqKioFAANZEBz7QZQ6BAVhpQCFjISOSj5xCMFQSHZBoLClJ+f/8OxY8cciE42hMLU0NAwgKR0SCkYXAaCwhQ9mzIixd5+DQ0Nh8+fPzM8ffoULMbLy8vAx8eHly8nJ/cBmLMcYbmFEa3MEyDTsaDk84GBFgAgwACrZ2hcmZdNWQAAAABJRU5ErkJggg==', -'small/check.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==', -'small/chemicalreagent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNqsVLFOAkEQHdGE6hQLEhMasAIbscISww+g1nJnj9EaGyikVf/AYC0ePQRqLKSRo6Q5GkkkXEdzzmx2L+tlIYthk8nM7EzevtmdWYANry3ZyRxlsqiKoZwZiu0MnbEOYCQE1kXZC+Uco3yuTRUB8yjdJTFfFyci2VRSNgzKwQZrA/I7OlclYezkPww3snZ07xeViZKUXr6FzF/WAkSgGDdVj1XE+C3qMwSerSo5iYlVFGLzThvNtyYMv4ZQuiqFc1mrSQcrAcd4YhV1nguk02kWKBQKqkII9E4423IkHo8TKwv1Pr+zA9o3dg2IRqOwWCxg4k5g7s2ZTYxThykYjUbJ6ff0eWVzo/6hHhRSvin7YjmO47fb7cA3TdPXaZuY7Iiyhe15XuATYx3AP9PR6XQC27ZtqNxXwLIsuLi8oJK12qbFL5w9Rv2hzljlTnNBQv+jH5yxiqEo9Yk3MLt8wzCYJBIJ1eG1ZQwHvA/pu+qJzcZrg4ERI9d1w2DX2GYD5QcrTUeej1mPs3xUfLwUqyFYb+mPrTGGWVGJPG7y+hVgAGUlpMVlUj+IAAAAAElFTkSuQmCC', -'small/chemistry.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMEI4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMEE4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdlZWE2MWVlLWE3MjAtNDYyNi04YWRjLWFmNzQ0ZDNmNTcwYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MTc5RjE0QzdEQkIxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuWygSsAAAJOSURBVHjanJRPiBJRHMefY66TrsEibASbiRBe1sjDHIrILl0EITu0RELGItOlg5cQPMTmqYQMKYg9FhgrzCUW85LhxYsZmJBeI2GWtsF/ZaOzjn0nxtBqR5sffJj5vfd73/d77/3eM4zHY6Jl4XCYFItFYrFYduGmwJtJX7/fJ9lsljAM8zueInPMaDQqn0tgG+zPiz+i1dnr9YggCA6IrsNdAafBB60xmhnWarVT5XL5JU3TZ+E6wAZgdAt6PB4B+8OLongP7kPQBLxuQZvN9s1ut++NRqOLcCXwCXzVvYeKQUzE5wqQwRDQQNSVoWoW8BjsgOV5SSxSNpKaFVGzpHQL4jCUslmB6A+1aQkc0y2Yy+Wuomw6KJt3cOPgPLilS7BQKDiSyeSm0+m8fwBDk5LlU3AUBP9LEEul4vH4ViQSeQJBAXoGND8Cz9R63AQnFhaMxWIRr9e77/P5XjcajWsmk2l5qntPvddbCwliqeulUulCMBi82263icvl2hkOh70/wl6BL+A6JpvpMEw/X5IkLfn9/u1Wq3US/0ae5024KQOKogyTeDUJZdABni86nU5vBAKB5l+CSolEo1E2n8/fhnsmlUqxlUpFzGQyL3DK/zyAwWDw2e1273Icdwcxo5klo0QYdNy0Wq1ryIiCWB/N34Fw2ImazebjeJEuJxKJGzMZ1uv1VZZlH+DeulHI55RHVclYMczc1SpmWZabiH8fCoWe4zC5X/ey0+msdbvdVbwubyd7BKHpfZMPu5lYzEeMlavVqh8+91OAAQASUuiWqlbvbwAAAABJRU5ErkJggg==', -'small/cherrypick.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARVJREFUeNrsVNENgkAMPQkD3Aj84te5ARu4giPoBOIEsokygWzgfekvIzCCLXk1T9TECD8mNnnQ65X2tdfDub+MlZk+8nleThHsermWKfSlYDMy3l5QJlh0gEoL9LpkbYhBQ3sR3xSku4QyeHyQKUgfiu0FsNoK1rbJAaP0soBzrxMbRxV02Ito005QPaQUh5PAw/Er0Rj6TskWlB2CesFBGYitEttKmYl+pKQttaR7VbKDc8e9U+aweW4P1p70Z7oflqatCbQOL0sWQwZmOiqtHQr0DFMQbSJ4OlDFU8n3UaHTttL7RGCjo6KHuCa/8HZsbLCpnyYFGNaCxoZ56Gd3+TzF1ZOEC+thjSs0Rurf+B/eBBgA8J99m4JyNcoAAAAASUVORK5CYII=', -'small/clear.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATJJREFUeNrMVDsSwVAUjc8CNOkpqWQHsgNWQFZAVmCUqpRKrACdTnaQVJQoDTMswbkz5828ecPLoyEzZx7J/Zx7z73P8/79KRUZNFvNGo45IGd82B9ym33ZIakKtgEyJBh9zZDOQyAAswf+t/F7BaRk+3AOCOcOnUO9TLZgRdZRUQuUUx24AwOLTUKbmksPhcEa2ReWvBOedWtAZBQRPASLHMRKzZKrRjApsQs0HMQSgYK3Y0MFE+BklvFCrDHQe6VyRVNuB0yBMzDzff9yu95yUyzaychsrSUAmc6CCiaGXaZ6bB1sbeZipSzZyDspq8d2tPE9KFw9GKXKSVNZehmyp0eKFX50OWisPG6IWrcdRUi/um3IUhhFLFUCLQti5ULAtssyk/0PrsLYaa9//jwFGABIBXzXH9oR+AAAAABJRU5ErkJggg==', -'small/closednotebooks.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczQTE4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczQTA4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE1NkUxQjg1ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE1NkUxQjg2ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IjNeSAAAAlJJREFUeNqUlM1rE0EYxiebaGIg0BoaRASjxSqiSBeXWPUUvQiKuYiICAFB8ST6F/gHqOClHloPKiKJeAvqQS0REVIlFqV+hXhQsBpJEYkxMezG5yXP2nHbNO3Aj8y8k3n2/ZrxtdttJSOdTm/K5/PHw+FwHcuOcWnDqNfrf7LZ7HXLsmYD2sZG0QXrlinoAy3wGMwa2sZrcBf4QWAZyP9XuCK6h/vAef3Ttm07+HH8fr9PM4v3BtFtnfg140NwyV04jqOi0ehlYGE+ApOLBS50i/+fh81m04JHJ9x1o9FQpml+xHQql8spFEs/t7lrhdxJIpH4FovFpiH6X9Rdztk9PcT4DX64i1AopIrF4lFMhzDXUyN53d5TsFAoDFYqlWQkEum4bhiqWq0mMU2iKN5z8uE7YA9Yu2DIwWBwEgev6Zsi5BF7A8bBLVZ2YrGQ93rbRkvFc/BSMkGvtnHvJpgBa+Z5mEqlnsbj8YutVss1zbDRR8FXcAScptg0uAF28mO+eR5mMpmRcrl8BjkUoXvgJxgGh8BK/u0LyIHPLM5h3rDvvDFzgmib96VSaaJWq8nNWAXTSW59oLh4MgVW8yNb2D7iwDspgzeH0rn9YCt4AH6BZ8xdhY/HKWCCT+A+7Ttoa3jbJoa2GUTI/QzxFTF5M/qA3JyrPLILHGMdHDIniLZ5gVBvY3qOIpPgrDxJ9PItGAAHwAZPJzgLtc1+iikeeALG+NYN8a3s6/U46oKPwBV6JeMgczW8hEc24LaOLihe7GbVFNtgvbZebNiMRP0VYAA/katMiUCR9QAAAABJRU5ErkJggg==', -'small/collapse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEFSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIKobCBBAVDcQIICobiBAAFHdQIAAwmrgwoUL/1dWVv7/8+cPK7I4iA8SX7RoEc60BhBAGAb+/fuX6fr16wzHjh1jqK2t/QUzFESD+CBxkDxIHTYDAQKIAZSw0fGvX784Kioq/tvZ2f0vLy///+3bN0kYH0T//v2bFZs+EAYIIEZcOQXmoqNHjzLw8fExfP78mcHKyoqhubmZjYWF5TcuLwMEEAMum0AY5BJkl+JzGQwDBBADIQUgQ0CRAAoGQmpBGCCAGKldOAAEENXTIUAAUd1AgACiuoEAAUR1AwECiOoGAgQQ1Q0ECDAAofjtyp2qbOUAAAAASUVORK5CYII=', -'small/columns.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABKklEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzIHEZGRnR5UAAzEhJDjgeAAMLlwv9QzIBEM6CJYY1NgADCZSAjkisY0cTR5VEAQAARCkNGIsXgACCAqB4pAAGEEimzZs36//XrV4ZXr14xgOjbt28zbN++HcVFEyZMAIfdy5cvGb59+8Zw69YtFFcDBBALug2ZmZkMnz9/BrNjY2MxXMDFxQUW//LlCzhVoKsBCCAUL4uIiIBpHh4eXMmIQUhICEUNOgAIICb09MTKygrn//v3DzNGgJaws7NjpD8YAAggFmwa2NjYGHh5ebG6ECQOMghkKDZ5gABCcSHIGzBbcZVC6PLo6gACiJHaxRdAAFE9HQIEENUNBAggqhsIEEBUNxAgwABfdlLE0WdCHwAAAABJRU5ErkJggg==', -'small/container.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUx4DDwIxPlAAwyQDEsAUiB8AZcmnAZCXfYBiAWQhBWAeAFQbgPJBkLBByxiH/FpYCEi4gyg3vaHhl0jpQb2k5JsCHmZITs7myEgIIBoAwm6cOrUqQwjzIWkgqFv4AMicw/RkVKIlIfBBQZ66TP0AECAAQDIDSl9p328ngAAAABJRU5ErkJggg==', -'small/containercopy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMxJREFUeNpiZCACaGppJgCpeDThwuvXrl9AV8vCQBwAGbYRiGEG+ANxPRAHoitkItLADyBDgC46AMJAdgEQX8SmkFgDJ6ILAA1uoMRAogELjkhwgIYRDAiAMChygC5bQLKBUMMuQCMCBAygYbiAkAtxefkgKOCRIqEfiBWgyYd0A3EE+ANKXEg2YCKQQxqoEss4vG4AtGA9KCyRcgxFLjSExnojEDuSHBZAw/5jYw+uSKFa1oOCC0CvnkcqbSg20BGa5RjwxerQAwABBgA690BBA387sgAAAABJRU5ErkJggg==', -'small/containerempty.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUzInP1yegJA7ADECkDuQSDOBxpggGRYApAC4Qu4XMGExgdp3g/SBHXZByAWQJIHWbQAKLeBWAPRwQcsYh/xaWCidiwzEeEi8g10fHQJFtjIgR4PjQyiALZkY4hkMAgsxJXmiEk2oFg+D0o65LoQm5cD0bwMcuECsr0MNHQDNWOZ6smGYsBCQP4BENcDI4UBmgX9QWFKVvEFLQxAhvRD8zAIHARGUAPDkAYAAQYAdlJBHbXYt6IAAAAASUVORK5CYII=', -'small/containeruse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNpiYBhyQFNL0wCIHcjVz4hm2HwglQDlXgDiwOvXrj8gy0Coq/ajyX8A4kSgoRuINZAJiY3NmwJAvB5oWT+xBrKguQYD8PLyMjg7OxdALSQYBMwwxpvXb06IioqCXGSBrCA1NZVhw4YNDEA5CQF+gQQ2drabQLU3iIoUaFgGAKn5UO/CweRJkxmqqqsYPn/+DOJOALq0kCgDoYYqgMIOiA2wSF9ACl+Q9w8CDW/A8DIyAHrpAxDPxBYEQMABNEARKAey9CYQxwPZD2HBwIQvgKHeCkSLMAFQEoPKTcCXbHAZCkqDhkheBQF/KA1KTg+Q0ykzMWkLKQhAYaoB8jaQzQmkI4DYESj3A1s6JAZsBOIAaGSBsCHQdR+wpkMiXXoB6DJQygBFSCO2LMlEamkCTSIP0NMp2QZCwUG0SBpCACDAAEU2dViv3fGXAAAAAElFTkSuQmCC', -'small/copy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNpiYBhxgBFdQFNL04GAngfXr11/gEuSBYvYfiA+gEO9ABBvBOIGUgwEgUQgTsAiDrIIrw9wGfgBjysZyDFQAYdLDpATKf+BlCKSofbIEQIVPwgTAEYQSngyYbMFFItAjOyag1D8ENkwIKhH18tERLAchIYpUd5nonbCxhopwHCEhYs91IUClBjYiCVMG3BYTNhAZM1ILiUaUD0M6RMpaCAe6HV7ahm4gEB2a6R5AQsQYAAmay1GRWP+RQAAAABJRU5ErkJggg==', -'small/costcontrol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNpiYBgFgw4wwhiaWpr7KTRr4fVr1xewIAk4ALEjmYbFA7ECiIFsIAPQhgPIfKCrBYBUPxAHSEtLCzx9+vQB1CUNaOocYGwmXFZCDQMFQ0J2drbAgvkLGAICAkCuqMcXPEx4vFEAxAYaGhoMAf4BDKdPn2aorKhkALoUHDxAQxNINRAULgyfP39m4OPjY+Dl5WVwcXVhAHobJu9PqoHgQAYZUFVdBXbZnt17wAZDgQCpBoIjyNnZmQHk7b379jLcuHGDQVNDEyZ/AZsmFnzpChRWp06dYmhrbWP49OkT2OvXb1xHlifehaBECqQWgMIQFHagSAHRID4QJALlL5DqZZChiaDEDjRkAjAcDwDpRiBfEWoZwaz3H0g1kplT7IH4ICjBM8NEREVFGSnIxw9Bkfjm9ZsHg7/4AggwAA8Qb1oirmhxAAAAAElFTkSuQmCC', -'small/costsheets.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBjsgBFdQFNL0wFIORCp/8D1a9cPIAswYVEEMsyeCMPssVnMgkPxQaDNDfhMA/oEqzwTtcOQKAOBrgkAYaoYCPXafBAmxlAWIgN/ARA/BGIBanh5IhAXALE/EF+ghoEfgNgRStdTw8v1UMOoFsuF0LAD4UaKDQQmcFC4JYIwlE2xl0GGPqBqwiYF4HKhPLTUwQfkoWmToIEPoIm5nggHHWQYcgAgwABVTCeiPU7edwAAAABJRU5ErkJggg==', -'small/create.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGM0NGOEIwRjhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGM0NGOEIwRThGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzIzMWQ3YTktZmZhMC00NzA1LWJlZjktNzAzMTVkOTBjMzBlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N9BRpQAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=', -'small/create2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCM0U4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCM0Q4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmMzOTk4ZmYzLWUwYTktNGEyMS05ZGY0LWIyYjA2MTI3ODIzYyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBM0EzMzA4MTdGNDExMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkJ38rUAAAJ3SURBVHjapJNPaJJxGMff6eafSQzykASzwizzkEMcOnfIRlgeCoQOdbBLXmbScBLNSx4MDxWjpRCJh9Vl5KFRpvRnsKhDhCLWhgedxfyTTAKDiTrnn74/eI2wzU38wof3/T3Pj+/ved/n+fU1m02qk4xG48jS0tI1Ho/3DMtvoNHKlUolyufzUaOjo3/3M9oNUqkU5XQ6j21vb1Pr6+u8cDjs4HK5FqRu/Gu2m/4zFAqFVDQavavVahfj8fhBiUQSgfkPpLJADmRdGRLh88orKytyi8XyMpPJbAwMDDxH+CL4Ao52bVitVitqtdqt1+tnisWiGSExWADfweeuDMm/y+Vyh1gs1rDD4Xgnl8tHKpXKZaR+g1WQ37dhIpFgm0ymhzA8aTab50ms0WhU6fQ58GuvpvS3XoLB4OnJycmn5XJZaLVaz2g0mtW2vTPgDbhAPztXGAqF+pVK5bJIJIp4PJ7HOp1uIZvNHuBwOBTdXSE5F7yg150rtNvtETwis7Ozh/1+/6V8Pj/l9Xon0OEc4m8Bcd4Ay2CM7O1o2BKMxmOx2HmpVDoXCASmYchElTWk3GAckAaVd6uwr/3qoaMsDDZ7a2tryGAwpDGT8wwG4xVSNrBG/6Yr+756qKaqUqk2FQpFBlXewwFOhBfpkSFfdARc72qw6dtCuVyu2zKZLIFqSWgKHAdhcAuc6MqQSCwWU3w+n6rX62S5CabBWfARPNqpB4y9BpU2a+kDeA2GAZvMJprWneEOugMGQQxcTafTY70akqt4E0yggZ9sNtv9ZDLJ7cWQ6Ct4wmQyTxUKhUG32/2gV0OiuVqt9lMgEAyB963gHwEGANSF5XEpsxcrAAAAAElFTkSuQmCC', -'small/createcontainers.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQyODU1NEQ4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQyODU1NEM4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjY4ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjY5ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DkCOfAAAAsdJREFUeNrMlM1rE1EUxTOTGc1HJalSW2MlMV1oK0VKSBQhoC4CJVBU1IIKEXFZ8C8RQV0JLnSlGHVj3EhFGomV2FJ0IZrStNVabZoYbZqkmZnUc8sJdOFKunDgx7x5M3PfOfedGWV9fd22lYdq2+JDy2azXpzbgPIvBer1uq3ZbG6M7Xa7pQQCgUmMs6Asc3zOAjowuZDKsQbkbemTZlmWEQqF7B6PR94xS6WST3O5XNtxcQtcAqNgBZwBN8AFsAhk0avgDjgCdoFHUHett7f3sdfrbc/lcpFoNPpQ6evrS+PmA3AS1KhCp1IHFamcW6NiGa8qiqIWCgULLo1wONxMJpNzUnCK6s6D11R4CtwGZ8ESFV4Bd0EEtIMnUDgyPDz8lApDwWBwUuWK0p9lUGTBAqiwr62xnH+CX5vmliORSInvLPX09KyJwjFZDRwD1b9Ybm2QzBub7K/Asg7LTViWVqnI9LQ85AZvgR+k2bPj4B44DebBNDgH7oOjwAlewPJlHM9geXc+nz/Y3d09IQVll79QpVieYSw+sLgLjAPJxic+EwRTpmk+j8fjn91u90QqlVqKxWKGWM7g5k1wkT1ybspia0elX9t4XWErKgh0m67rv3F2lstl3e/311sKW7Ykc99AFLwEB7jAOxBja+Sr2g/GDMM4MTQ09BEBb6TT6cOdnZ0zGleblaCC7yBPpSlwiAolWnXpG9jDgq9geXVwcPB9V1dXDQGfBXWx/AY3r4MEMye2OsAC2MndFeX7GC1phXz/c7C6F5blHQ1FO2q12qLGGHylunkWlV2W3g6woGxKnNY9TMQE2NHf35+TTSwWiwMOh2NGq1arsmMBscCGrzDos/wUFSoc5ZyL6hcQm3FY/uHz+axMJlNBwXYlkUiMMIsm1aoMsE57Nv6FWnNNoiHYJmxu/KGcTqfVaDRU5b//Y/8RYAAD1xfIfFZ4LwAAAABJRU5ErkJggg==', -'small/crystal.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASpJREFUeNrslM1twkAQhW0rBbgEfHROpgKgAkgFMRWEDiIqgFSAO8AdmFQQn8KRdBB3kLwXvZWGxTji54QY6Wk82t1v52flILjb1Sx9TGOodynnwXzn0ALQczjT7ee24Eek7JjZKzTCQgifaGPC2IqHoS8T95UIEwpClgpfQQ00F+gZ6pnYtzX0Bm0Uj1XhE0seQhlvVZaB4sbEvnHtBRoo5uWx/F/JOfQNTUy86xjghysRPtPZ3N9EyI/ZWEGzFtjQXWZgK7ce+lC4lWu8esXBNGYP+/0OLSGCS6xP3XpkgRr9iFNTP2poZmCZ+ltokHuwgwy9g5UO5i5LldZokLUPOwr0oLRST2gnYNkG6wR60FhvjpkVx2D/AlugnbBTfhx8Hovb+A3+CjAAWet3QwOXINUAAAAASUVORK5CYII=', -'small/cut.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVVJREFUeNpiYBgFMKCppakAxA5YxAWA2ACXPkYchoEM2g/ED4D4AxA7Xr92/QNQPAHIng8VWwAUK0TXy4TDIpCBjUANilBDE0AuhhpmCMQg8QJsGnEZCHKBPpR9EIjtgRhk4AWgJReAtAHUIgzAgsPABUAcD3TVeZhBUNoAKLYfamAh0WGIFJYBUG8KQF0tALUMFBwPyI1tAxdXl/85uTn/gez5hNQzEWGmwqdPn+BsQoqZCaVFILX9169fP+7fv78DyPYQFRVlfPP6zQFyXQgLv0QoBkVOPb6EzYTHdQ3Q9DgBGAEbQAkbaiiIXg/KMUR7GeqC5UB8AGhQJEwc6NUXQC/fBDIzgFgCyN9I0ECozfuhXEugph/I8kD+DaChIDUZQPoiiE/Iy/3Q2AyEehMDQPMwKDznQyMOr4GgAqAQqOkAgQhzhNIBBBMyKUUczctRgAADAB+aeWFKXujmAAAAAElFTkSuQmCC', -'small/del.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAhfqWrl+X7rS9peXZ8d/ZuYd//79Y0AP5f8szCws7z93MkuK7TCb1rcbWQ4ggDBcyPT8ZbvMxvX5wvuOrvn3/78rAzOqkv/sbCysD58ukdiwtojrxNkWdP0AAYRh4D8hgR2fxeS+SDy7xy2y7+i6f/8QhoIMY7n3aInU/kPhTAysDD/kZU6i6wcIIMww5GDf/srZNuiZjMoX8Sd3eET2HVn3/+8/63+c7Awgw6SBhoGUPbG3W/lbWb4UXTtAAGGEIePffwxMTIy7XztZB/3b93+d+JObPH9Oc0/9LCt1W2bfwZD/jIwMTxztVv5RkIlh//n7D7p+gABiwRpVwIhgYmXZ/cbR2uf3Bf46/mu3nfhv3NT/Lir85Y2hwZQ/slK1jD9+/GHg4sbQChBAGF7+C8X/gC79z8lx8LOExGuGv78Z2Bl+M3xj5/z7U0Zi8/+/f/78g6pDBwABhDMdgmPzzoMVcnv3hv/m4/v9XErhh+iTu/yCuw5uA0aU839m7FoBAgir6D82SGyCIuD/f0aGVxYmfe89HNxfyyh/En5yh59/32FgRP13ZsBiKEAAYYj8Z2PlZEWOTVAEyEnWM//7d+iDk00QyFChJ3f4+ECG/vnjgK4fIIAwrXj8rE3q8D6EYUpyMYw/f/9kgMT+3o9OtkFvZFQ+CT6/ycd5/EwnunaAAMKMZX6+7R81tA2+S8lc/qMkW8T48xciaYAMZWba+9ne2v/veZ5aBlmZPejaAQKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD36PbiZl38lwAAAABJRU5ErkJggg==', -'small/deliver.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUeNrsVDFOw0AQdAwFpRv3dpdQhRfE/CC8IOIFERUtfkHgBckPAiUV5xckFSljuiBSUKbMTDRIi5SzLkSiykoj27dzu7O7vouikx1rZ4eQO5edIk3TZP21Xvk454GBMjxGQB9wwLWPG4OcMLMnEH0PeF0qGK3AWt9y7J4WFqaGXAu0J4Dk8Z5cE6CUaorJF++L710P0ZNPPD+ACngRWsA9SLfwc0NmEt7JTyFt4IJAX18jOXx9e1MSp81UTBVDk8AaVdZxwyxKbZ5rCD2VmHn4RaNCqZxKFcuceYLN5e+GBMw04VwK7IB+EtVa3303lRyxJyp9bILQHtWGgfpbgnsFuDjgv3ZGXaISE7Wg0jAmh5yUoZTdqE8jfeeq4PdJCQhINTXL0Q9Nq/YFCw3Isrqa+My04W+3DU6A4w2j47nhJKHu+d/uw60AAwC5mm4X4tK98wAAAABJRU5ErkJggg==', -'small/delselected.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKCSURBVHjaYvz//z8DNQFAADExUBkABBALMsfT09MeSCUAsS6aukdAvG/79u1TCBkIEECMMC8DDfMGUlsIqJ8FNDQdnwKAAEI28AaQUmdlYmJwYWJnuM30n+HOrx/Y9ChVSSo8Znn/uZNZUmyH2bS+3ciSAAGEHIaKYIP5hBlCt2xjyDh3i0GJjQPDNHYmJnXWh0+XSGxYW8R14mwLujxAACEbeBxE3Pz7i+GNhAKD3JO7DOkX7jAoIhnKxMD4q/AHc6bU/kPhTAysDD/kZU6iGwgQQMgGFgDx05ufPzJMN9VguC+nyiD36DZD2oXbDDKs7CD5v2m/mS8p7j/kB+I8sbdb+VtZvhTdQIAAYkROh8Bw5AdSgUBsrM/BrRR99oar9OMbrDe1TZ59kxK/orb7gNt/RkaGJ45AwxRkYuznTvuDbiBAADGADMSFD8Wm2l/Utdz7gFnk/0MGvv83RRU/H3ULbD+YnM2CSw9AAOFN2LaLZh38LCHxmuHvbwZ2ht8M39g5//6UkdhsN2fKH1x6AAIIt+tSslmOOfmueMTE9/82n+yv81Ka358wsP8/L6P1YV9cmjMufQABhNWFBxMyWFjuPVoiDYzN//8ZGV5ZmPS993Bwfy2j/En4yR1+/n2H1+2LSXXGphcggDBsONPYznnU1nPFQ0b+/yB8FOjKgylZ7CC5/UCXnZXR/HifgfX/aUn1j4ezixzQ9QMEEKaBKbn994FeQxiGGgEg754GGnqHgeH/GSO7k+j6AQKIBcPJ/HzbP2poG3yXkrn8R0m2yG42agQ4Lpy5d39Mqv/f8zy1DLIye9C1AwQQI7XLQ4AAonp5CBBAVDcQIICobiBAgAEAmxdipemnE5IAAAAASUVORK5CYII=', -'small/doc.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=', -'small/document.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=', -'small/down.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMJJREFUeNpiYBhxgBGfpKaWZj+QMkATXnj92vUFuPSwELAQZJgDmthBfBqYqO3lEWggC5aYVQBSClCuABY98kA1sIh6AIzxB4RiGWTYfjyOSIBiEFBEl2RGF3jz+s0DUVFRBSzpDx1MALpuJbFh2AjEH/AY9gGqhoGgC6Gu/AB0JSeWRA0DmUDXnSAn691HiiAYuAA0zJDcZFNIpBhxLoS6cj+S1zcAXRdIacIuJNZ1RAOgK+cDcQNZOYWEsMQKAAIMAFkoLxHVkhqkAAAAAElFTkSuQmCC', -'small/downloadcsv - copy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTlCNTdERkU4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTlCNTdERkQ4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkMxODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkMyODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qE9KjgAAAxJJREFUeNrMlFtIk2EYx79vzh0aU1rM6UaMXMZSYtCFWirTm4rQDhTShaJdTC0RjLXQwQIpELvJGgixixER1oTAEDympgiKcwmRjVTCtsXWErW5w4c79H/lMzxgV174wI/t2/u8z/s8//f/jU4kEtRBBoc64Dj8BbnT09NFZrP5ZiQS+Y3nJERCIBCEoG0MzwLA228zTdNUOByOMwxzNC8vb66pqcnCXVpaOunz+RxGo/ENh8PhYpEyGAwXFxYWFLW1tR9mZma+zs/PJyP2FCS5ra2t8WAwmDM4OHhjs0N0Es3IyAhrtVomFosxer2+QS6XizUazaeRkZG7oVDoaWpqqnO/LgsLCynkBEdHR5nNgqTteDxOk4epqSmJxWJRzc7ONmZlZVEDAwPrNTU1l0UikfN/um1sbND/NNy+IJFIQjKZjBofH89eW1ub6+7uzsWBbnb5BPCC8FY+9BY7HA5GKpWGIEl8T0G1Wh2xWq2W6upq3erqaqygoMCtUCi6lpeXz0Lfe0jpAu9BLmjk8/lSXASTnp4eSEtL+4aL3VmQBLT8MjQ0dN/r9aag4EpdXZ2yr6+vEWM3s7f+GOjBOngBRyj9fn+Fy+XytLW1vd3hQ9xUTn19fXNmZibpbmVsbCxlcnLyoVAofI5lMnoINIAgsAIl4GPcJziQ19PT82yzIFpPeDweCjapHB4ePtPS0nIBVqKqqqoeBQIBG7Sys2deASnAB4hvK0ARcEESDnLPcWAbmsfjBTs6Oq6WlJT8tNlst3t7e6+Vl5eby8rK7Pn5+f1EGzbk7Gc2OAXmwAS4Do7h4GQuWo3AvEpYR93Z2WlSqVRMaWnpa3R8vr29/RW6puDPrYLftylEjGwEJ9nvJC/IRcSwuVKn091BsQBZMJlME+zJ24uReAcM4DSxH9CA40QCeFEmFov7udFoNAnjC+12uxZjXtp9606nkxifvA0UW+QzUIEf7OhBHPoHk/ox0QMaHhMtLi4qoNMRsnF3QE/K7XZTmGTrJ1JZBG6xHUax9yPs9bK4uPgXfej/sf8KMAAfNV74L2cQHAAAAABJRU5ErkJggg==', -'small/downloadcsv.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNq0VMERgjAQDAwF0IF+8SNWIB1oB2gHUoFagVqB2oEdYAm+9EsJ6UD3nGUmo4kE1JvZ4cIdm83dBaV+bIG5SAbJDI9+W5Lb9baq/fAllgO9lnxLZwQKSyBrw4b8u7mOHElCKjgBFSCliIED359dpQkt7yRxD1xYggUw4VpiQ5Lm3MSLsEKhT0ABf0uVG8aOwFh8yfEhfCrBsTdSU+NocswxSCSecpM3s9VQAyN+tAaBBvFOjgf/zJw587wIZa40FdU2NVQqqlS+TXHN2tInMfSYs9Tmf6Nw6vA7E27ZgMq8s50J2aCCnW20yKN+cT1zvJL6U5ejhg1Ty52tOPxe/8OSinSLH04GxYFLYWG78A22Vv+0hwADAPUDVtbIQ74+AAAAAElFTkSuQmCC', -'small/downloadexcel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASdJREFUeNpiYKAyYETmaGppJgApBVINuX7tegOMzYQmFw/E8iSaV4/MYcGiYCHQxgNQFwv8dRRcz/jgeyPT/R8PfoeLzWdd+aoQKH8ByVcEDUT2ygc1R6uDf50F+/9+/vsBKnYBnx4mQv5h3v9+AsPP/wIM3MwOQNclElLPQlQocYLtfUCMUoIuBIZhAcO//x8Y3/6+8CdYtJ8iA4EBbvBfgKWeee/7Qpa1rwv/szA6aDjoJ5DtZXAEXLvOCDQYnM7u1B8UpNjLSGmtniphCPI2NjYlLgzAwSbbwAlADErUD5DzLNkGgnILkCoE4kRiwpCFiPATgCVqIN8B5Fp82Y9QTjHAUpyBDL9AbHm4H+qiDyQUXw5AFzPicmEh1EBSQCMDLQFAgAEALFJj1+b/ZJQAAAAASUVORK5CYII=', -'small/downloadimage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNrsVLFugzAQNSgrEnNZGEknMmRvxA84f9DMDC1rOjT5grQDXcMflB9AoSsMZWoY24EdKT/Qd+RcubSKEmWq1EMn353x87vz2UL8y7liDC+HVxg3Z+JMtm/bnIwBB3IEJmRgAx/DPceXiFeHkPD/NzJmb9Jmti+sG44dLWbPJ3YtWD2Qks2xo2XQ8yk9G6wW7BO7Cv6KHGwSnQSIBS0WUy1vVLGhEnpNbDH3gTHhGvtaVu6vgHwgLoBn7FMHrBiY5JXBbCmlcBxHlEUpirJY418ilPRTXtOOmByx/wyN1EkjXilmUzkV4/FYxPgA2K3FfD7Q2N1yzZYMTPYj7aqx78CImWVZ3TrnYm/vdjtypakVn1KZAWCh9eZCY//VPgTgeV5nB0GgZ2ibWmFT1e0YR6qOmrTKqOtaxE9xZ8/v5ordj0Px+11/SOJ4D5hlmR5ODb4Jxzavy/UVYRh2gaZpRJqmZNJliIxTXwHtrksOvfOdT/7Ge/gpwAC8hYlAB6pQ3AAAAABJRU5ErkJggg==', -'small/downloadpdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNq0lMENgjAUhqHhLhvIFS8yAiO4gTgCEwgTiBOoIzgBsgEnuZYNOoL/Sx4JqSVtib7kTwu0X//3aBsEP45w/pDu0gJN4gsZ3kM19YX27QhtPXnn+UNkGPDAii/TTM6AoocuNFYfE1kmUvoNFEMFux85E4qvhcVCGjRhD23YSQvJWX0lS7kCKZ4sgiQowx1tx9/I5Yh3yillrdgdl+GGJjfVzRV4pbTgomcgwWrbL18CkoseMMmwSt9vXkCulyl9K1DYBsBdZuqvBiIOC/3VwIb3m3SpoXA4+AQroZPLwY4c6hfzqZi2jpq2kjcQkRmuM8mXg9N92LIj5XF95XAcLjksGegTdfDP+AgwAPYEUNx4yC23AAAAAElFTkSuQmCC', -'small/downloadsdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFlSURBVHjaYvz//z8DNQFAADEiG6ilrZUApBRINeTa1WsNMDZAADGhycUDsTyJ5tUjcwACiAWLgrVA/AXEuH7t+gFNLU0FJFc/AIo9AIo54DIQIIDQvbwfSGkC8Q8gFgDiDSBD0DQ5AvF+NC8zwtgAAcSExYUsSN5+gCSuCKVhrnsIxI3omgECCN1ADiC+A8QbofwCJLkPxAQoQAChGwjyqhKSKy4gyb2H0gdgrkeOXRgACCBskRKGxL4ADUtkQx4Aw9oRl4sBAgibgeDYRfYqMFYToOINjIyMcFeC2EA5FL0AAcREQlqrJ0YhQAARNBDoAgNsbFwAIICIcWEADjZWABBAxBg4ARoBoFzSQEgxQAARNBBoCMiwQiBOJCYMAQKIhYjwE4DlGGge/gC05AIuPQABxELAQgMsxdkDtASPAgACCFvhIEBsNoPlbeTCASCA0F1YCDWQFIBSQAAEECO1qwCAAAMAyAFhLkqF94gAAAAASUVORK5CYII=', -'small/duplicatepackage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUY0MjcyRkE4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUY0MjcyRjk4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhlYjI3NDQ1LTZhZDktNDk2My04NTJjLTZkNWY1NGVhZjcyNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDNCMjUxRDc0NDUxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpTZCLAAAAJMSURBVHjarJRPiBJhGMbnm2ZWN1fpICxJa6IoIive8lCQG12EDhK0EFRHb+EhpLI9mBDLCoX059AhOgZ1kehiHoq6ePASxZJRLcFmsKegRmYcnen55B13ksbdpf3gx/dnZh6/932fV2aaprCfg+Xz+UeYD4IZMMvPrGcTa/twg/uapj0tlUpCLBbbFgyFQvyKKrgDXpM4PzMIKwR7KB5wUVGUVrPZXEulUuNnLJFIbGG+Bk6S4ONdRnfAMIxb4XB4vlgsrmQyme+WoIL5OPgIboMw+ABkClUk7GuRbq/1er3Tsiy/r9fry9ASJPo1Ps+DJDhKeyt0cyIFgu2MC2+5XK6+x+MZC/ExAEfAYfAV3AXr9NGA0MGQGIkPh0O9UCicajQaK+12+0wgEHjBQ+7h4QngA4vgEyiAh2DTFq4wOaPKrFKp8LAjtVqtHAwGn9sF58ASuAki4BkJag5FUVEUA98zv9/flyRp0Gq1zkoOPvsCXoHroO8geJmcoeCmc4yxdbfb/VKyvWAlWaAKz5LfnASXdF1/ksvlOvF4nJXL5SvdbndBmtIRO/XkAHa5BLv88Hq9MxA7hP0vidpIo9aT99C2V3HDSDabNaPRqAjrbFar1RsS2eMcePOPXE4bG7DNRjqdFpLJ5OjA5/OJPGdpnlhwb0q+HIeqquM1ij4y9m+wRsZd+N+/L9G2fge8+yn4GYTAMt3W2GNO/+plPr6B8+ABiFHlf+4kADNv304Udd56k+9w66yCC+DtNDFeBJhagA9H206nc+yPAAMAEMbEHs1AaF8AAAAASUVORK5CYII=', -'small/edit.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNpiYBgFlAJGUhRramkmAKl4IL4AxI3Xr13/gK6GiQTDDIBUPxBvBGIQez9UjHQXAjUKAKnzQPwA6CpHqBjIcJCLFZFdSqyB66FMBSgdCMQgQ+4DsSPQwAtEexloWAPUoESgRkMgfQDqWpAlB5ANAwFmAoYFAKl2kIuAGh+AxN68frNTVFRUAxqOnkD+D2Q9LHgMA7lqPhAXIrsCKO4ApAKgXv1AVKRAI2E/1EuFaJach1qyAJteXGEIir0PyIZBASjcNuAyDJ+B9kC8EM3VIO8zAA1LxBfuuMIQ5OUHaDkEFG6KhFIFLgMdkMIsH5psArFFArEGfoAaCqIn4gszYg1UhIbXh+FXHgIEGAC7omSO085dLwAAAABJRU5ErkJggg==', -'small/editannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAURJREFUeNrUVDtuwkAUdBwO4MY9LVRwAuAEsU+Ac4LIJwicgNyA5AShTAeUqXAVWvcgxWXKzKBZ9LLKb600edLIu8874/fZ5yj6Y7tsQ+r1e4s0TZ+ABHg+Ho5v7l3cQqzAg5gAA2ANX9JKEEQKLIAaaPYve4pWwNKd6QSIMYpHYA4kiqzUugkWlNgGUd3pAxv5KDYMShnkmSIpP3md4yNNSN0y4FX1O6cvX+Gf/02ELPg1oqiMbw2s4LsPvSJjYOf5lr7P2k9N+dBBpZjZJoQKsm6MkmmP5Zsg1bqtYKVLTCshtAqt2Qzo2hRZR6+mxXec2B7G40pz6iZjCtwaPtdTN7s+x782JOfASHsW/4EpMwJFUcuXfcGJLkw0OxESzeuNV0vXpPOE+BzWODYHS/09cu233Mt3MrPfquuW043+hb0LMAAhZ3QNix8n0QAAAABJRU5ErkJggg==', -'small/email.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPdJREFUeNrslMENgkAQRdcNBdCBesSTdgAVqBWoFRg6oAPpQKzAUAF2IF7kaglbgn+SL9kQEBS9GCf5biAzzz8fUal//X4N5MObeGsco56sW3EtEocXK8iHcih9ETSHptAJKoFSMSROFb4p6kLCZhE3iwlVNlCcHaAjGoc4Q4BNA8jFsScsgNwHUNuNAMjKMzZmGBzVwGQw42XAmbJ0dUBcQQEzOQPgW7AFYSl6lnUbOE35oDkE4EKnG7reMoqkac55FroMApbTlalbsVq67UkSMJZs22CtDu1cu/4o9adfPdvhDnmZNzkuMy6BIW/2KfOVf5u7AAMA6KFU32Vzs8wAAAAASUVORK5CYII=', -'small/expand.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA9klEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQFQ3ECCA8Bp45coVlUOHDnn9+/ePaAMBAgivge/evVN7/vy56+HDh4k2FCCA8BpoY2OzTVJScjcphgIEEF4DmZiYSDYUIIAIRgrIUCsrq21sbGxvQYbeuHFDEZ96gAAiaCDIRcePH/f69euXsJSU1G4NDY37+NQDBBATIcOOHDniBXIZyDCQ90EuxgcAAgivLMiwZ8+euUpISBBlGAgABBALPkkhIaFboMLD1taWKMNAACCAGKld2gAEENWzHkAAUd1AgACiuoEAAUR1AwECiOoGAgQYABhXW0H6uHwSAAAAAElFTkSuQmCC', -'small/export.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNpiYBiMQFNLUwHGZqHAEAEglQDE8UAMYiuiGAhU4ACkHHDoX3D92vUHUHUgQ/yBOABJfgM2F4IMswfigzhcBDJgPtQ16OAiLi8fBLqkAYcrHwAN9Yd6Ex1cgDGYSAy6g7gsI9lAoOsMoF7GAEBfXSAplqHJYj8ubyIDYpONAVpkgAxzhLJRwpQoLwO9BEoWgUD8AYoTgWIfQBhkODTJkRaGUENBrnJEDjNocnMgK6egGYQVMFE7X49AA9EjJR6YBOxJNAOU6BdiM3ABEB8g02EPaFZ6AwQYAAOKOvO1iJNCAAAAAElFTkSuQmCC', -'small/exportcsv.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVBJREFUeNrMVDFOw0AQNJAHpHFBZ7qEhvwA5wWBji7kBREvwN+gwqkoMRWiIn4BpknaoyZF8gNmpDnpcuQiHwiJlUZ7cc5zs7N7TpL/GP3TfmbXnV+QdJGugTHA9ckWITbkSHng/XK5WBrtI8kIuHD+r3YpJNk5UAcUkeBeavx4D5VcQ0kRUGlAOlKZfjR2cRhpXR06LJoQ6gYq+VugqiaqyxqL11CZbrQdm4HXDJINtd7ytFXJKIljcQmshQmerQmSa+TiPBQpVQ1dzzRu+d6S5RnRUIUaYruZ+dfNjSO7SNM0V2Z6tP7g9zHyFLgCNsADnt0hPwMvQI8bV5+reahkEs+g7Aagb3OpMmpGpWvX9UoPesgXz3hngTeRVc5hT8AtD201Nji1BFEioonj24c+EtbTchfhgdOIQp8iE3kdM1lU+ApL+fWTMMlfxZcAAwClpWybOw2M9gAAAABJRU5ErkJggg==', -'small/file.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==', -'small/filter.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDE6MTEtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQxOjExLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjJjMzVlNDIzLWYzZTEtNGU1MC05NzIxLTJiOGIxYTdhYWRmMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MmMzNWU0MjMtZjNlMS00ZTUwLTk3MjEtMmI4YjFhN2FhZGYzPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+8nsm0wAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAxElEQVR42uyUsQ3CMBBFnxEDsMaZig2CsgBtyozACBmBDdggIyQjpMHuECNELGCaRAqWiR0pBRJ8yc2d/8lP3zrlnGNNbVhZPzhw6xf0XmdAluhvzc20swOBDqiBXWRYD1yjyNbYHigTXldZYx9+Ufn/UCkFgGipgdMnVGvsEcD3z4VyHrBCqOXilAecKtC6hFCjyKNESzNJvbPGHqb9Jcijygl6PCzn3NsJSbQ0osWl+P/LIayiKO55nj9T7qqv39ivAQCf2VZ0sPgj3AAAAABJRU5ErkJggg==', -'small/finance.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVhYTg4YmJlLTA5MTAtNDEzOS1hMDMzLTFjNGRlNTNhZGRlYiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MzYwNEYxMzdEQjMxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiHLPpAAAAJlSURBVHjarNRLaBNhEAfwzWa1eRjSIpESTAyapGmgIGrIIR68iOKh9RIP6kXFgNqCB9tCFDwIUi+GVRFEUIScfPSw9HFRvFiKEC9aJNqCEkipRDQGiVmCm/5HZusm5tGCCz/C5vt2spmZb0y1Wk34n5cpkUg0frcfXkOV73fDKGhwAxb0jaqqCslkUggGg38D+ny+xoAv4ROcBgcH8PLaIkThO92Uy2VBURQhGo2uPSzZbLbGgLT5IFyFHkMwugKwB17oX4iiWPew2CQNm+Ek/9VtsGJY+w0yXON9gsViqXvY7HK5jPfDMATX4REUYQt8hc8wDxOwC86bzWbFbrf3plIpOZfLqbFYbMkUDof1YEfhHCThzToKOk7pQGF63G63UCgUutPp9BH9DTfBHRjhxHv1xLe55uCYJEmHnU7nQiAQWMpmsxYKeAgLDznQU3gFZ7jSHzsEpZQM5vP5flTcXiqVtkqck0Vulz7OzxSnYKpdtGq1uoK/Oy/L8kWr1TqAl5uTeO0D9SS8g1vcHhOdkoiiaMViUfT7/cvo5+U/fQjTcBxmIQ1X1nvMKpVKbyQSqTscIgegvhsA1waP7gmPx6M0a2zqr0m4uYFg1K/eeDz+uNVJuQ0/4T5s7xBsJ1yGCyjMr1YBNW7sLv6UeBBQgXbAXjgFB+ALH8lK4y9JzboBFB5jd+EtFZR/vMaHYIiPYgyetAtI48rPp+QsXIIZfmuV90zyaLOC+583pJlmuCiHz+A5fIMxfZYa9lDh7tHwwLMPNE2rn9iZTKZZ0vfR/IT3LYrihB8ULBQKCQ6HY21hVYABAMWFqCT+eBw1AAAAAElFTkSuQmCC', -'small/folde.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==', -'small/folder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==', -'small/forms.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDY4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDU4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk3MURERjc0ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk3MURERjc1ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EQQ27AAAAw1JREFUeNqMVV1IWmEY/o4ef2K5NkPKNsuUNjOFEoxi7IcuYhdddDF2NbwMLTZoEAS7yF1sCyG6cjBG5E1jC2JdDEIvBg1huSgKoQViJYK4ZU5ooaV29nxO3Zkdtz548Jz3O+c57/O+z/vJcBxH6Eomk2RlZUUpFotrcfs7eL4lyufzBz09PT+VSiVhS9FwOGxxOBzPRSLRLm7FpbhcLieIVWXLZDIkm82qFhYWHoEwyvI2rphMpu8ul8tBvwqc0rjT6STr6+sF4sp1fHxMpqamiMfj8eJajdAfQqwsIAE6FhcXZTs7O88gRRqNRjmpVCqYHfYZKBuvr6//getCAmXCmpqazObmpqGvr+9TZ2fnK4lEwk1MTDgnJydJIpEgMplMiPPB9vZ2P8iypUCZMJfLSVQqVby3t9eNBp3u7e3dn52dHY3H4xzLstVKeA0fDqCG7WcIEWSbmpoSIyMjH1CTjkAg0Lq0tKShtUPnqxHSWiT5Ab7kNCQbIXmtu7vb09bW9n5wcPAp6skiW4JMKslywBDQLkgIySwkH0Dy2/39/XgoFLrndrunscUIkJGiC65SIwCmapIPINmXSqWUNptNAanNlLCKXGr+C3zPCkmmXf48NjY2rdfr1yD5CbUQJHMCWZ4ANsDMnyyW5yk5nL5rt9sfKhSKWvjPBslv/iP5EjAONJ8hTKfTrNls/jY8POzf2NjoOjo64iD5EF1mMHpCsvNUGFD712CXmVk2D/9dXl1dtcZisesg/zI/P3/TaDTewVjdxiOVuAW8LnaZO0OITNLBYNAwMDDwEbVsb2xsPLRarbm6uroMypGh416BXDHLnGBT6NyihjGLxfICvxdxrz3H0XVS6QL+aSOFvCim5J3f7++fm5sbWl5evkvPyX9MShfslhLscjFY2GhpaQnqdLoQZtlOZ7lKlwvLYDC83NraGhUiZNCMVmR1A109hcFdpfMwEolUPQ/VarXU6/XqSsmUCbER1mq1JzMzM4/5L2F6iEajIaW/Cv5iGIb4fD5xQ0PDV7wfobFfAgwAOuBX9pndZCcAAAAASUVORK5CYII=', -'small/formulation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNrUVMENwjAMDFEHYAS+sETLBIwATFCYgHYCYALKCExAugF86JcRGIE75EeInBJ+YMlN4p5Pju3YmF+XwXgyHmLdQkfBv7a7dZXmBB/a88B8h64zfBZQktYB4ABHB1IXkBE/hy4DPINaWCGjGjqHBBF5xPAk3Mm+8OzcXzRy2BohDPG0NRYAblolimtPhBqeOX/YlMohbwU1BWsTu6EIrphOGGkJTXKp+JtkStIrISX52Y8M5w0WJzlspUDpEcJhCh1Ij9bc09YXodUijFRRq2rz8coRcalvOYkw8fV81Tbm2wj5Wkok+S7nkpOjx4+4rYfnsNi/xpdX3RWWmRyPWsIjU4dyAn5n/kKeAgwAkKhuznfrOsQAAAAASUVORK5CYII=', -'small/gene.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNq8lDFuwkAURJfERTpI4ZpQkibkBqajyxHinCBwgogTRJwg4gSQE+CSDtOEltQgxWXKzEiz0soSxt9I+dLYK9t6nj/7becqqn/f71DOUFdn7i+ggQUYnXKG0xhKoOlFDgEjZAW1oUKqXa3A0QbKIa4/oTfe233tbi3Aax6Oh+NvHMffWKbKbAStoRtc30IFn6ntsNQygXfQu9z6XV5CEzjem4ABeCXwBHrWmhoCmjcZG27OXFnOJSfnjeaQrXWhF+hV65le1AiYq8UPuWO2Dxwj5WwGejdZ0DZdd6oybJ35llNl5t36Ygw5wIUJGAx9qgxTfTkeTvdTgLPawBL8J4jDabNYj34+IwMskbuZQMy0V247MhhM1OqThntf+/dVMZcZQEPz//BELQX93/oTYADSQlwAijoTdAAAAABJRU5ErkJggg==', -'small/geneconstruct.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAItJREFUeNpiYBgFo2AUDABgBBGaWpoKQCoBi/wBIHYgQozh+rXrDSCaCcoHGRiPpqYeqtEeScweKlaPRS3EhUDXgUz2hxp6AUkRSOMDKPsBksUw+gCaWhD/IAuQWADEH6AubMSiCAQWQmmYLxKwqAXxP8DCECSwH0sYNmLxHjYxUBgyjiZJ6gCAAAMA8hgdAsaGv4sAAAAASUVORK5CYII=', -'small/geneid.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX9JREFUeNq8kzFOwzAYhV1UdSXMSBDGspCcgGRgROUENJygdGQijEwlJ4ByAVJ1rRTfgEx0YUBIzGRhYuH90rNkRcKpGbD05L+q+/n5/X+Vcqzh4TAQKY+11fH9ExSZD3vLj/BPQDrLUSYWbMYL/IAACaSCtqFGBNgldlGIOncBe8YRtmeohqReQNfy3fplvQNIQLfHBMfvp7v1r0BCz7DJs0xOmvWFXPR1uwqtSxWAsRNogSOCZnRrulx+n5wXr8WVhmMBLwDNO4EWuCJ4Co1Zi1K4VXSreXxqInCNjWQ2Z5ZzStG5YsMK5l0xZyfwDdpnhhPWBS+SvDVcldAdz0ddwJpPvKc7+cGROBusHuWyBK4yjpQ57wQaN9p6toACNOaBzsccpRROG2dT2JiMmdXWOCkzSpjRZuMu239DbBkzzNgMe1ZvANYbA1vwTysOxWbJigGVOFTfA5ZYozJhpgftZ/c9DCZ86kiaYBy1lw9QABqg1HXIB1gS+r/rR4ABAABIg5v1NUUgAAAAAElFTkSuQmCC', -'small/giveownership.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NTg4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NTc4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmI4NWU2ZTFkLWQ2OTEtNGViMS1iZDI0LTQ4MTNlOGM1ZTUwNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDZGM0Q5QzdFRTkxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhDhHmEAAALWSURBVHjalJVdaFJhGMfP8Qsnm9rYpkVDk+hjfcHItEGji2IwhhAjyAZjIULNkkY30m5aaBlBWWIw6KJdGGgXM4kKHeRFsbaSIi8aCc7mYlAEDT/wc/Z/x9mYB0/kC78Ln+ec/3ne5/m/r3S1WqW4VqFQoGZmZk4IBIJ9+JkDQZDeyFcqFUqv11Otra2b7wi4xEqlkshqtdpDodAhiUTyHSEpGAI3wDx5JpfLUX6/v0aQV08snU5TJpPJgQraenp6zqDSiwifB/fBI6DiKqSuYCwW00QiEa3dbrfKZLI82RqzwuAZMDUkWCwW9/T29v5RKpWZbDbLTr8D2oYEaZr+vbKyIl5bW6NEIhE7vRP8aEiwu7v7E8SyGMo50ng+n7+RagKj4AmXYN0pt7S0lMfHx0eNRuOcXC7XicXiV7CXAqnr4DF421CFsAzl8/ksCoVivqOjYxFDuYDwAfAS6IHsvwXz+TyxzO1MJrM/GAwOd3V1PUTMiJQNXAOz4ClYb65QKPy34MTExGA4HNY6nc4hjUaTJ9Wy1j3wBTjBjlQqxS2YSCSkXq/3qsfjGVOpVEWOXR0FB8EYevsRvX5js9kMGx+uEXS73Qa1Wh3v7++PcYidBu/BwPrLPN52CJ2cmpoKwBGXSbtqppxMJgcsFosXX64nJgeTzHaFTJVElJxlOhAI3Glvb/9cI4gGN3V2dnKZlpwOYh0zqDLTHgZ7SRJFSJaXly+xfUgObZlDcBvj2wfAB06BD+A1894xFNQmYPmPj6m1cQimGKsQP97cEvcD4tU4biW6ZigYyHOXy3UlHo9vmov0iFmzTDXsNYhjqpdKpYdHRkbu0ltvbExJiKHcwi2t1el0iwj9WlhYoFZXV6HLIzbaDc6yFXEjFc1m86DD4XhBs/8CiJ+i0eiR6enpXUtLS9Lm5uYqLgc8VqVJGvwExxl45XL5q8FgmOzr6/tG3PFXgAEAw7wZJeKAK7sAAAAASUVORK5CYII=', -'small/help.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDMyOEQwNzQ4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDMyOEQwNzM4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGN0I2RTEzOEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGN0I2RTE0OEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uAaTwQAAAyRJREFUeNp8lW1IU2EUx++u043NUW1ILya+fjBT5iaoYSEoJMyFIejA+UEEi+GEiV8GyzJS2CeVSO9gWH4QSSUoxYHBLkhJsNjmK30IFBGpiBGRyTZT+z9y7+3u6jrwY5znued/zz3POc9kx8fH1FkWjUYpv99/Ti6X34R7mVv+At6Dn8Q5PDykKisrKa1WK8TJpUIHBweUz+e76PV67WtrazdUKlWMpuk9bjsddIMP4Nn+/v636enpBEFaKtbZ2Wm2Wq0sMtQwDNOj1+vrY7GYBduEetADNIAFZqVSmZAQLf5EiDUuLCwM2u32LmTpMJlMK8jw5NNEtgIcoCslJWXQ4/E0kthTghC6Nj4+7m6Fud1uNi0t7WT96OiISmKsQqFonZqacpPYBMGtrS3K4XD0t7W1Mb29vQFxFLIgP1Xc516ViAaKi4sZp9PZv7m5+U9weXlZj8JnulwuRlwTlmW1oVDoNdZewn0CPoL7/D7JHmViUlNTM4PBoEEQxEndNhgMi9nZ2VHx60dHRx9HIpEGvOwuXCPwg6fgCl/3kpKSaGlp6eLk5KRJEMQbDFlZWe+kRSooKJDh5wUIipZJcc/zDjkwEgsNo/hQ1E1NTRGpYF9fn91oNLajbYjrAlbwHHwWP8fFpp/qQ6mReup0OpLFHbj9XLY20rLJYnjB3zMzM7qzHuB6sB18B/dAXPoMF7snCGJCwjs7O7f+k+wr8Aj8kW6QtiKx0AgJgs3NzW/D4XD19va2MokguRzKgUJaEsy7Em1X3dLS4hMEcewr6KndgYEBm3iMREZmV3WqXjRNjYyM2JDdbllZWVi4bXJzc6nh4eEHOK03GRkZSxAOSGIfJsm8fH193TY2NtaQl5eXOMt1dXWfMHrOCRhGqSYejwtZJLEatNOExWJxklhhlVywPESko6PDrFarN2pra4fm5+f1CKDy8/OpoqIiHj0YAhs5OTnm1dXVBA2Z9MYmd+Lc3NwljF03il0F8ThO8hf3nIablCUwhAv26+zsLFVRUSHEy5L9BRBhnLwaYtfhXuCWf4AN0rf85VBYWEhpNBoh7q8AAwDXV1bc+qUyxAAAAABJRU5ErkJggg==', -'small/history.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKqSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIBZcEi9fvvx/+/Zthu/fv4P5f//+Zfjz5w8DJycng46ODoO4uDgjNn0AAcSILQzPnz////379wwyMjIMvLy8DNzc3AwgdR8+fGB48uQJw/379xnU1NQYzMzMMAwFCCAWbIb9+/ePQU9Pj+HLly8MV69eZQAZDnIhyHBlZWUGERERhmPHjoEs+W9ubo5iKEAAoRj46tWr/8+fP2cwNjZmePjwIdhFIJfw8fGB5T9+/Mhw7do1Bg4ODgYDAwOGffv2MSgoKPxH9j5AAKFEypUrVxikpKQYvn37xvD27VsGZ2dnsGGfP38G07Kysgyurq4Mnz59AqsHqT1y5AiKDwECCMVAkAuEhIQYrl+/zqChocHw+/dvBjY2NoadO3eC5X7+/Mmwe/dusKtBQQHyPihMkQFAAKF4GaSBi4sL7DqQwbBYffz4McOePXsYLl26xODm5gYOQ5AaEP3161cUAwECCMWFv379YgBFCMhgUCSA2KAIAcUyyDB/f39QzIItAmFQzKOnEoAAQnEhSBKY/sAGPHv2DBxmTExMDCYmJuC0BwrHHz9+MLx48QKuhpWVFcVAgABCcSHICzdv3gSHHzD5MLCzs4Nj1NbWlkFYWBhsOCgILly4wKCtrQ0OR2lpaRQDAQIIxUCQS0CJFuRdkGtWr14NDnSQ90DBAArLlStXgsMZFGEgOQcHBxQDAQIII6ccPXr0//HjxxlsbGzgSQmUwEHhCXKdlpYW2IIDBw6ADQMmLZSEDRBAWLPewYMH/x8+fJhBTEwMnDQkJCTA4QsKM1DCfvfuHTgYgGkSI+sBBBAjrvIQ6B2woY8ePYIXEKDwBEWUnZ0diMZaOAAEECO1C1iAAKJ6eQgQQFQ3ECDAAOM8PGxdt3IBAAAAAElFTkSuQmCC', -'small/import.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALpJREFUeNpiYBgWQFNL0wGEiVHLQqSZ9VD6ACGFzES4LgFIFQCxgqio6MM3r99cwKeekYBhAkDqPMgwqNADIDa8fu36B1x6mAg4sADJMAYou4AsFwJdpwB1nQAWaUWgKx+Q6sJ+HIbB5Ih3ITSJ7CcQHI5AVx4gNtmAXNaIlmRgYAEQP8TlekYiks1/YlxGbCyTDAa/gcTkZfTw+kDXkokRR2EQT6T+hcAYX0DIyweghQAx4AHNvQwQYADHWSwYOF++nwAAAABJRU5ErkJggg==', -'small/importprojects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCODg4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCODc4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjExQjYzNTk0ODZBQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU2NDREQzBFODZBRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XI8ejAAAAidJREFUeNrMlD9oE1Ecx+9faBo8ldKrihWCg4REOZvQxSmLIEgW0cnFSTlEHDIoAZfiVDcHCaWdHDpkiMEhroKLiRalQyEuIgZFbOFac8Zez/P7g+/F41AomMEHH3jvcff9/X7v931PDcNQGefQlDGPsQsa3W43mlvg1F+++wnWwbf4ZhAESqFQUEzTHO2p2Ww2mj8Ep8EHEJJonASPwQoDyzr0PG+j3W7vFIvF3xlmMploLmHugg7XE8xMuEKRHFgELtDlm36/70Dwy0gwXoFkDK6Ci/xJ5f40z3sOPALP5Id0On29Wq2uouSFcrn8PCn4A5wF58EtsEUREfWjIwK7o45q2lKlUll3HOd2s9l8kcvlAi1x8FNgE3xigO/Ao6AfF4sGmrI2GAy2XdedSGYYL3u/I9Pr9Wxd1zX0wkv6cI9Z7O1TzAGvGo1GG4KX6/X6gu/7hmR4CZwD8yAPDoIHiUwnwRJ4y/UNNkdJpVIvpfutVuueYRiams/nn/L83sSsMhkT22WwDXATHACveQk+SrPpiOxwONySku/TFmLIFEWDGFLFGkWPgRlwgsYXwUNs4HvYaFq3LKvPUi+AbXCYZUeYzFgccBQ8Ade4DmkvCTyLqzgQQSnrMzgjUcAOheO43LfpVRE7zvIlSwu2mbJtezl+l02W+6cHMjK3ymwDNkYyPYLMNuHHVq1Wu6N2Op1/ea1m5Twh+LVUKr1DxxX1v3+xfwkwAN6PqutHQDy6AAAAAElFTkSuQmCC', -'small/importuser.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCOEM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCOEI4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkREM0EyRUM2ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkREM0EyRUM3ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6f29eAAAAyVJREFUeNqUlV1Ik1Ecxs/mBpsolhPtYmsyoibicLBKCW1XhkY34oUfELbKhBLKYBdRKKlkqfRBKiSOESUpZIkXBkXLHO1iiIEXidLa2CRmza/VNje39Rw5r71O+/DAj7Hznj3v8/84/wni8TjZaYXDYTI2NnZcJBIdFIvFMzg3kXgmGo2SgoICkp6evrkn2knMarWmtLS0tHu9XnlycrJ3aWnplFAoLMejayDInQsEAmRoaGiLoDBRzOFwCGpqau5mZWUtDw8PV+Tm5l4IhUIV1BC4Q/6xtglOTk5qEaYCDq+rVKr1SCSykQFgBAdB3q4EzWazurCw0KFUKhMfxYAbKHcliBC/2Gw2ucvl2un8PvB1V4L19fX2pKQkf1tb21laRVSYe3QRLIKpvwluqzLNm9FobG9sbHzn8XhOoMJuiUSiwqPDQMdC/3+H4+Pj++Hufm1t7Q2NRtMTDAapowfABG4mmuBFsN0hxFIqKytNZWVl5q6ursf08MLCArFYLAT9aMGRp+AlWAM/wYTb7X6en5+/yGkIuJuCXiMlJSUd2dnZgf7+/ibuzXBKXySCYDu+GsBe4AHyWCxGHc7AwPnm5mYrUvM75NHR0UPz8/NH0H8diWFgdYCrTMwPikErbg9Bn6pNJtML/C5vSw4HBgbKtVrtK/TfD74SKn4MH5d5Wz2gCnwEM1RUJpNljIyM3JqdnRUKecnVKBQKG1/M7/cTn89XDlFuizb2B1acM6BzwxVkVldXi1dWVpT8Kkuqq6t9fMHp6Wlit9tVNDdsNYEDgCb+KPgEnrFIUiEs4wtGMRhS+YJ0imRmZgZog7MlB2/Ba3Cb6oDvvKsZ2RREcqe6u7tPsmGwsdRqNdHpdG/Qi9wWDfUKE6RXcBBcYrPRhaq7NvuwoaGhr66u7klpaWknnFEXIbrvdDrXpFIpVZSCb6yQ79mQ+AwyMBfFmAGPYGBZwJ/Yc3NzaXBZhcGgRpGoQByCYRQniPycw/dl8JBdCPqSNIi1IseDvb29p/V6fVjwp78AbhkMBu6maFhR9GAPWEeYzpycnD7c+3tFRUXr9PwvAQYAIww/DYr+MukAAAAASUVORK5CYII=', -'small/insertafter.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgFlAJGEKGppbmfDL0Lr1+7vgBdkAVKO5Bh4EFsgkzU9jLMhY1k6D1A10j5T4beRmCkNNA8DJlo5WVyks0DIBYAYgWg1zegx7ICFOONVaDGA1AHgAwqAOJ6IF4A5H8AiYPkYQbGE5m4D0B9Mx/JAQlQDPYxSWEINEwB6ioFqkQK0EsPgNgRyCwE4g9IYXkAltAZyY1NaDj2A/FDbOlx8AKAAAMA4KcwMCZAAk4AAAAASUVORK5CYII=', -'small/insertbefore.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpiYBgFVAWaWpoGQBxAiRmMUIMcoHwDIO4H4g1AXHj92vUHSPIOhAwDqm+AGfgfi/wHIJ4IUgSUbwCy64kwkJEJj7wAENsDDVMgxcssUPoAkiEGUNc1Am2cAPXBAyQ1JEWKAxCvB2IBiiIFi8EJQCqeVMOAPnJkwSGnQEysYgNM1E7LuFx4gNoGPiDXUFwGJhCTkLFFMtXDkIlhxAGAAAMAyO0oNwUTYyQAAAAASUVORK5CYII=', -'small/instrument.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQVJREFUeNrUlOEJglAUhS0Ef+YIbpBtYBOEE1Qb1AZuIE1gThBO8NwgN8gNtJ9CYOfCER6G8hT/9ODjXZ94vPfcq5b118t2HA8ES4n5oAUv8DB9bj1yzwM1sZYQPGhxIBmbCK6GysWmwJWZbmT/NE0417+A3lXiH+OW14k0a07J3fI1LwXp+nPIgiHBrhF7cAYpKLi7jBVE3SllJyxVsdRAG6eK59FUL7s5THrnMZCy1VQP76AEWe/8PXU+JYuIGXbE2j3FDH++IHtEc8vsSjbCo9iFnZd1Mx1sMTsHR3BinPHa40ssDPrOVLBiVvoq6ZvLOIRgbVpyMXAuQimE8v/9KX8FGADy1EvPx8oQwAAAAABJRU5ErkJggg==', -'small/issue.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNzE4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNzA4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU3M0E5OTAxNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3M0E5OTAyNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KTvmbAAAAv5JREFUeNqElF9IU1Ecx8/u/pppTZ2DIaQiy5cRKvgyWAY9ZCH10tjjktJB4svo0quuHpyNEqEyNw3BJ1mEYcQ08cFgDcwYpj7MEau1NWg+qAv3R/uecWa3y9V+8IF7zu+e7/md3zm/n+zw8JAIbWZmhjidTlJRUXEFw9ugHVQxdxqEgBe8oxPZbJY0NDSQubk5olQqiYKILJ1ON8tksmF86kEAvAA/mNsALGAQ3AX3wKZw/T+CIyMjXaOjo8/Ly8ufYegBv0X7rbFNHgIneA8c4E3pB6704fP5Ojwez0RLS4v94ODggUhMxigZ9dF/7GCC47gOhULxV3Bra0vrcrkm3W63w263z2cyGWFUfSxvH8ETUcTzEOpNJBKTkUik6kgQx+RbW1uDNpvNv7e3J05rMxN7CUxiJ6J7tb29HRwfH79fHMdisaqlpaWrPM/TRJNCoSBeQ4/3FayDDJGwsrKywUAg0JVMJs9wfr//mlar/dnW1rZBpG0fnAKnQV7spAHo9foNlUqVXFhYuKgIhUKXTCbTZ/qGThBUM7JSgtXV1USn030Kh8PtSAF3rq6u7hs53qiICmikBKnJ5XJCNaBloJcixzMp/EdQyZAUpNXGNOQcQk7t7u7qThDcZ/k7C3LHCe7s7Ogg+ourr68Prq6umsQ1LbAE6AB3BCUofDYEAZGVlZULBoMhzOHtzcbjcWM0Gq05RvAteEorAjwWO2mFYH1NKpUydnZ2LnK44UhTU9OXsbGxvmKNyWTiNTeBDVjBdakdUVl9KIw16MQ4ekP9/f2u6enpXly7sbKykoiObwQpxnmJ/Blp+fX09AxQrWLpWSyWdavVOow6nl1eXq7VaDTCNbTrfAdx9i202lwuN4t7eGQ2m9eKJyxFQ2vY4XC48dpv4KHewvwHcrKZwSQa7OvGxkaeNliaz6P2hR5IvF4v393dPQRx2gimwGWgFbQvLZubYs1iCPA0qFJgnHBLtVpNUNO+fD5Pu3IUDIBFEGQssrko69w+cdh/BBgAi5QqRZD5d30AAAAASUVORK5CYII=', -'small/key.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQNJREFUeNpiYBjsgJFYhZpamgJAqh+IE6BCD4C48Pq16xuQ1TGRYPl+JMNAQAGI1wMtCiDZQKgmAyD+AMSGQFeBfLYAKl1PjgsNoPQCoGEXoOxCNDmSDHwApZG95wClPyArZCHSwA3QCFEAev8+1AKYgRPJMRAUAQJIbAWYRcAgaCAp2UCTy32ogRugLgIZeAEpPEly4XqoYSDNiUBDPuBTzETAdf3QsPpAjGF4DYSmvQJYEsHmPaINBBoGSlvzkZLFA7LzMjQS9iPlDFjsKgJdSdBgbJFSj5T6H0ANvUCMYSDAjC4gKir6EkhZADEHUvJIpLhcA3kdiEGliQLDsAIAAQYAia5NJ99y8TQAAAAASUVORK5CYII=', -'small/lab.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNqsVDFuwkAQBGIJyssP7gnkB6aixD8IdOlIqpQ4LwDKVCEvQLwgSUmFfwB5gUkXSxAyE22xWD6fIZw0utXeenZvd8612oVXvewwaDbb2KKce7vLsslZ2UAYA4c8/lPhCysCFso9B25Q5eacCt+A0OfTq1FCZrFZx7E9tbI+kPLKgHGdVSWL5IOwJMYAKy+pBJIsqpCYsWtWrP1XRw0NgjtsvGIL9vJnv/92EfIMMV8wh7Cfy6Y6Fr2lYltPpQfd56IpM+s70JFq1zIcV08Z2/bKRqRhhfiTgpYb9HNxpooOQwn8y4xXEQPXMF+BkQwjlnYwJnENhR91gY0QdeAL0fREBpEAU/j4ZB+BjIkRN/XJJlZDcQn7vkhi9SJhY6Ngn4CeutJWNZ8V3dKP6gbev40i5QQ/pAVGYQjMQPZwyns2cvWV+hemHgldfv0KMADs9Hi1l7uGXAAAAABJRU5ErkJggg==', -'small/labfunctions.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYyRDk1NDU4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDQ4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQxYmIyZGY2LTA4ZjQtNDdlZi1hZWQ3LTJjNTAwZDE0YmM4MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5RTBFN0U3NDdGNjIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pm9gsI4AAARsSURBVHjafJR7TFt1FMdvL+Ux6IMVK9hWoKUYEIIKUtiAjJUYNNCVx9AQ8fGHJRqTIQm4EN0CBE0ElIQ4sixAMC6BQCARWICAVQtZkEqLiIJS3EpxCC1pKQUK5eH3Ry4EzPQmn/R3e8899zy+57AODw+p/7smJiYENpvtspeX1z3cHoAXgAF49vf3qeTkZEogEJzYsx/nZHh4mN/a2qopLS2909bWFjswMFDq7+//Bx4FgxrwBjBtbW1xOzs7nf/p0O12UzRNUzs7O7Le3t5Mp9PJDwwMZCG6Jjx+D2wDLXgOqIECz97Hr/XYB318cDgcVHFx8TW1Wl0/OTkpzc3NHY+NjR3T6XSHfn5+xM4NVsA8UJL04cyyubm5Nj4+LiDBnHEYEBBAIS0fsVjsPT09rcDZYbfbL+HeiVqJYTJCSgqeAk5g88VVVVV1Izs7+25FRUXsicORkRFJZWXl1bS0tEWj0bjp4+MztrCwICoqKrqjUChWtre3FTB7EXwPPgW3AXFgEQqFc2FhYX/m5eUtEV8s0uXCwkJNX1/flaysLCOfz1+dnZ2N0Gq119ls9i5SL5uZmbmKYH6BveZUyUn9byBVd0JCAi86OlrL5XIXj5pSV1fXFozLYrEYEFka0vjc29t7t6enJ8ZgMMhgeAtmMvAu6CAlB3vgS9T35sbGhqGlpaUYditsvV4f2dzcnOtyuc7jY8+GhITYlUrlUfgdHR1PovBCpgk+4FWQCdrAN6S7Ho9nHllyRSLRQnV19Wf08vKyvLu7Wx0aGnofurLm5ORMHeckk8m80JAHOBIN/gyM4BEoB5eJTUFBwU/z8/NSZHQOUnuFTk9PH8DhdchDOTc3J4+JiXEeO9RoNL8HBQVxDg4OyEdIpF+AMvAXeI3YhIeH70dFRdnh50dkVE2bTCZpY2Pjm3jwGyTyAA3hHTuMiIiwxMfH/4pSFOL2HDNyRNwzIAz4ms3m/ampqWC8lzI6OppFLy0tidHRJBaLJcLL7q6uroR/TaKR0d7iqf9EwA522tvbL5SXl9/f29vbbWhoENGpqaljg4ODb8nlchsWgcRqtXLQaeKAwi+FLr+NTp5nRi0dvAOimRHkADlsAqGQMJRNTZPBRp14iOxSUlLSMtKcrKmp+RB1o7EglKurqyp0OhAvSsAnTO1+AHdJPaHhWXw4pr6+/iMskY+PdIjuOjkczkM4iYSIyfToS0pKquPi4nQSieT2+vq6C069GO2R8XsIbkIyG1DJAX5FQ0NDvNraWteRQ6jc1t/f/wFm+JmmpqZrmGM3xPoI0/MSpsXM1JFMP3F6AeSAIXzjolQqpRGQKSMj4+8zywEzScHpE2jQ04goYm1tLRL1/Rojx4dwn4eJCrxMSgtc4CIZBGynYTSmLDMz03wyy6f3IVaXkMfjWfPz82+hGX44e+Bcjz3pC5M4ptsBpCmITIUFW5mYmOh47ILF+1RKSooV6VIqlaoP2mRDX1oU+zuUQQeT68wsfwW+ZThz/SPAAEBa/RwAsPq9AAAAAElFTkSuQmCC', -'small/language.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrMUzFOw0AQvAR6QuHedISG5AWEjo74BSQvCLzASUkFP4C8AFFS2bwAuyFt6JCIhHkBzEpz0eqIzwcSEieNvL7dHc3u3hrz30+rztE96I7wOQUGQEe5cmC+eF7cBhGCSJLvgBiYCQGSl8o3BM7oT+AragmZkAESdIHgylPBOT4pcKxJXUJRZhCQwM4a2jVnKyaI37OXbUUWs19jXg1Y8j0TZwrSghhE18wdfiNkb3JdJuyc5VdiW+D/xVHasz/byiEqSqcFn2qyQUcTirJD7YSaVgDHDvCxiVBUpFC1ni7saQ3JEfCoWpVYx5Y1Vm+r1yiKTmDuw36A7VMnPcwRk7KSy00KDSf8BGUlgqaeNyj9vqK6ftOmyMQyEO46dx1Cyh1x+mO7Rd5dBsG73QDYN3yTNrHgLhdNUzbOgHogm/CN9X1rGEJYskdLKq1C32Hbo/DHZD7C4jdkf3K+BBgAWHuTbQKZ3H0AAAAASUVORK5CYII=', -'small/left.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpiYBgFgw4wE6tQU0uzQFRU9Meb129e4FPHQoRBDkBqPhArALEjIfUseAxSgBrkQIqXGbEYJACk6oG4AIv6C0D8AYv4wuvXri/AcCHQsAQg1Q/EAjgcYIBD/CCKl4EGGUC9Z0BpLDNB6QdAvBGHd0g3EOj/D0DcAGQaAvEGSgxkxJNU+rEEASjgH2LRcgDooAM4DcQTSY4wjYTCECuAJgVFIJ5A9TwKSujQNDoKUAFAgAEAnrsu4NHvnJEAAAAASUVORK5CYII=', -'small/listadd.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQ3SURBVHjaYvz//z8DPpCQkCBy8ODBtVxcXAJA7iQgnguT+/btG8OqVasYTE1N4eoBAoiJgQBgYmLKB1KLgdgbioWR5Tk4OFDUAwQQI8yFN2/eVKitra0DMkECjMzMzP9ZWVn/X79+XeLLly9pQIOfAcUbgFgTiEFs/n9AICcnx+Ho6Hi8oqJiKsgcgACCu/DFixfqQKyVnZ09F4hnm5mZnX79+rWqmppawO/fv59BlYEM3AXEGkA8H2jJQiUlpTMXL14MhJkDEEAsSK79LyUl9cDe3v4YiCMvL399y5Ytlnfv3u0AuvQ3yNVA/A+IlaDheBikTkND4/v58+edYIYABBCygQxAHzDD2EBX/ZKQkNj08+fPL2/evPnLzs4O89FGID6JpA4lEAECiAUtgH/fvn1bfO7cuXZv37511NLS2gX09s4zZ84wQA0kCAACiAnNhYzc3Nxf169fX3/q1KmfdnZ25x89eqTOwsKiDpRGxqAwVIXqR0l3AAGE4kJGRkaGP3/+/LW0tNwFSmMZGRk1vLy8f4FhiO4QUNB8BeJaIP6LLAEQQCgGAg1jEhAQYGpubq6aMWOGj6qqqvCnT59mAiOHAZiwcfkSxQyAAELhAF3yBxhmfDExMUuASeL+xo0bc+vq6lB0X7t2DeS6UCC2BmmZN2/eK2NjY3jQAQQQioHARM7Mxsb2HugqRlAOKCkpqb569SoXLDcAY5wbKO8D5EuGh4dfB4b3M6CB6U+fPv0IDC4FoP4HAAHEhGYgUJzxf3FxcU1ISMiRQ4cOGQEjZA1QavXfv3/XPXjwwPzXr19SwPB9ffTo0URgLgkAhvEXoAP4gWo2A/WyAwQQE3qkANPV76VLl/rv2bPHa+3ataUmJibHvn//fvzWrVtCwOwIit1HwLC+C6RPAbMcB9DwF0AXf4fKRQEEEHosg8A/oEv4gN7hnzlzpvOFCxdCOTk5GYB8L09Pz1vAIFgHzTWt0dHR06qqqmKuXLlSDVTHfenSJXuAAEIxEOg4RlFRUQagy/qAhYU0MNn4APk7gOH2Dyinr6KiIvvjx49zwMhjvnHjxmegli8iIiJCwBTAqqenxwXM038BAgg1yllY/gELCLbNmzebvH//XiMlJeUmkL/n2LFjoAjhmzx58noeHp45wAzwHGiQPtBi4YiIiFnAXCX27t07NqAR8wACCCNSgN77tWTJEo9du3ZZA714BmiQETAYjIBp8jkwvK4CLRAFJi1xoHKTrq6uv0A2/5MnT9iAcjeAYssAAgjZhYxAF/4BYgYbG5tDwIBWBhocBsx6TKCcAkyXDIqKigceP34sAGRLA8N0PTCsX37+/JmXj4/vIzCmfYAO+goQQCxIBcOfs2fPKpSVlfkC2W+AMfkKaBAjyCBYIQwqIICG7gW60gYYAdogMWFh4XVOTk4cixcvBsU8A0CAAQCBc8YuiRCcBwAAAABJRU5ErkJggg==', -'small/listall.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhjOTk0MWViLTBkYzItNDVhYy1hMGMxLWM3NjMzYWRmYTA4OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDA0OTU1RjdFN0ExMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pjb1IHAAAALqSURBVHjalFVRSFNRGD73bs45UQcmGxPUFptr9BQpjGRj9SJkVA/t2QcJwYcQp0i5ChTqqYdB4RgzKn0RhpQGJT1owSKbTB/WGCIMH0RzYzDmYu7e3b4Dd7Ld7mb98LFz7jn32/d/5//PZQRBILVicHDw3Pr6elCj0Wgx9QKB0loulyOLi4ukp6fndD9LzgiWZe/j5y1wQ0Rr+bpara7Yz5QUxuPxLo/H8whD+oBRKBRCXV2dEIvF9Nls9h6I9/H8CXARoOOWIqKjo0PtdDq/TU5OvqhQeHBw0A1YR0ZGAoC/t7f3x9HRkclsNt8uFAr74jZKuApYgFf4k9dGozG8vb19p8SjLFMrGAyGhMPhCNFJZ2dnbGVlxba7u/sMSgtUNVAEjKKPX+k+i8XyOxKJXJMjJMhAURpD1Yler3+fz+ezyWSSr6+vL2X0Dvhetq/CRKXE4MLOzo4uEAjYU6mU02q1riLtT+FwmIiEZwYrUcg0NjYeLy0tPd7Y2Mjb7fbI3t5et1Kp7MZyOaiHJvF9oapChmEIx3G8zWZbpTU2PDw81dTUxMNDqRBqzTHgAfiqhCBjtVotOz09/WB2dnbAZDK1ZjIZHw6HoLCrZamsmjKUcPCs2eVyfVhbW+sfHR19w/M8+Z+oYEeRK1QqVRqqGNoBbrf7YTQa1Ui7QRSSA2ZqpgxC2MgIY2NjU4eHh2a/3+/S6XQzUuPFmuSAE2mWfx0K6qqwsLBwC9PzwWBwfG5uLrq8vExw+v9UKVJCGsVEItEMghafz3d9a2vrbkNDA5FRSN99KaqUJ4Q4pq2tjUDZc1wW7SibAcw/wteizDVHlWVrKkQBF3FBqJDilXQ6bRkaGopj/jkUChGZg5HnkB4K0juZn5/vRwm1e73ecdTjZeqtTMoUP2udMgOFHED6+vq+QNEFELvQeqxMp5Q8fIq1jCwhCLjNzc2uiYmJmxgn0TW/sJnBnUeqfCbow6v4BFxCR536+EeAAQBI0C7G3S+NuwAAAABJRU5ErkJggg==', -'small/listannotationpatterns.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzM4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzI4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkJEODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkJFODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B7gfeAAAAcVJREFUeNrs1MGLElEcwPGZxslR8RA6gdNWEoikgQc7dCiYS106tazUrdtCUBEt5GE79gd4qIvHhUXY22KHIigSotKog8WGlBPEkkERBDmSO85+X7yBuQ7uYQ89+KDvN8PP33vv91R931f2chxQ9nj8Tzj/iPV6veB7Cn9Cz3So+BuKJTEOJp7nxTOZjFcoFHaCmJrP58XnMTzCdTyVz+4jiytyfhprqOGDCEwmk1alUvnabrfv6Lr+7yXNsiyFyVUUkMVDHMUyTHTxHbeQg4FnuJxIJFZHo1FpMBi8KxaLQ6pV1FKpFCfxY7zBRZzDIpbk8t7jHl7hCc5jCxfQF9swHo9PGIbRajabK5ppmrcJnsJbHMYRmXSIbZyVSz8uf9SGhQ18hkO1X1zXveQ4TlJUeJPgS4jTWZDV/cS63LuaTLCJXzLJJ3mArtg2cbjiHQ7JEAmjdIWovIPXcitmMj6Tz3KxiG0mKvRl//qhhAdFjAonURN+xAscwu9QQmM6nabS6fTzqDdFNPANfJO9e1LglC1N0/qNRuNu0NhRh0h2DWdY5qxcLnfq9foD27Z/qN1ud667S0KlWq0qwU1R9/0/9q4AAwBgS4W4ETBmTQAAAABJRU5ErkJggg==', -'small/listmoleculesbydate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODA4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwN0E4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyNjJmZDgzLWNjNmItNGQ1ZS04NzgxLWRhNzE1MDAwM2JlNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzY1QTQyNTdFNzgxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlUfev4AAANHSURBVHjajJVfSFNRHMfvnRv752wOttZSZ25Q9BDzwZ4WRQQb6NyionrwwT1kRpMofLA9pcmK7KU5CYqBLyXKoMlw+pKJEFpNCAzKzZZMFkwkt3Q65+76HrlXzDbtB5/tnnPuvud3fr/f+Y3O5/NUMRsaGjrX3t7eIZVKNzG8A+Z3r6fTaWpwcJCqq6vbmeNzD/Pz89Ty8jK/BIZhXqvV5vr7+6/RNH0bYy24Be5RB9i24Nzc3HGLxfIAgmGiB0r1ev2RysrKaRBOJBLfMXcGr3pBAmSBCKyBLpDjBHnkAz+ogEfqYDD4KBAIdHd2dgZXVlbWHA6HW6PRlGWzWQleewzKgB88BU+ACpT+4yHZQaFQJBELsiOlVCrf+3y+042NjV1yuTwnFospxFqIpXfgI9gCNFgteGRiDMPQ3HN1dfXq8PDww9nZWcrlclGhUIgSiURkfXcGS1jRv4xXLLgCgYDKZDI6JKsFz8I9YkWNt9+i2+22Ly0tGZGQNxheADZw+MAsFzIkgkqlUscglsEwAFzgFyBF52TjyPyXhzimuL6+vgPeKVE2LblczoNpK/hA6h0cBadIhhHb9IGCvb29TfBMKRQKv2C4yU7HWbH74BOYhliT0+l8hYowkBMVFTSbzdORSIQUeFQikZxFBZDp6yAErgA1KWysy2ZmZi63trZOtbW1WTY2NgoLmkymz6Ojo3fLy8uF4XC4GVl+iWmCD9QCA/leX1839PX11cKBkYGBgddjY2M1RZOi0+koxO4kILVmAuS2VIGbbA0y2IiHBpJdWFhQy2Qyqd/vby4oCNdpr9d7KRaLVcHsuJo1OF4Flk6A3+AQSJI7Dy9TWNeTHoANDAUFEeirk5OTZgT9KzxcRMeRc1eUbQxcM2AgmIEYNy7ZiSGPx9u5CUhEDC/RaBhRsIUMhnftx7C3hmHJcbcI7y1yHvLi8bhiYmJCQ56NRmOEz+e/QA3+RHLI3Ai4uEeMfOeRtDyOSpMMW61W77agSqWKqdXqHx6Px0EESTxw3E2UDj8ajdL4ATnmW3AeWNhjc3dekEwmKZvN1o3qmKL3+wsgZrfbqfHxcRIGmu3YN4Ce7TQMPPvW0NDwrKen5zlpKH8EGAC/f0ohwunqawAAAABJRU5ErkJggg==', -'small/locations.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NUM4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUI4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxOTcyMTczODZCODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxOTcyMTc0ODZCODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PTdd4QAAAxZJREFUeNqElVtIk2EYx7+d3LRs5SQJL5xiOk2TJEGDSNaohMowVMjsAC66sEGOjqg3UldlQlCK2KQaTu1ijWgQNtiVI2UhOyAMh7VAanlYy81l2/q/8To+xvb5wI/xnv7f+5ze8eLxOMNldrudWVpa2imEYRgAiQPRaJSpra1lcnJyEvuF6YQWFhZEQ0ND6qmpqXPhcPgnn8//hWk5+Aqeg8+hUIiZmJjYXtBqtUrb29vflJWVRcRi8RMIujC9BhTgKHgFxsCD5LP85ImNjQ1BT0/PaH19vdtsNp+uqKgwY47citzwE3gMjoNzoFMkEnEL9vb2nlpcXMzv6+u7CTf/xwm2A+xnbfsOLhBB7JVzCiJ2l5qbm0cLCgpiwWCQWVlZUQkEAguWngITyKNbPWB6cnKyJa3g/Pw8z+l0Fra1tTnI2O125yHLDxFHEqvz5HvU5S17D5ePpRUMBAKZy8vLEbgZoFMHQIjebJ1mN591xA9EXC7/ARkwCRlIpVK7TCbLiMViVzEsAXfpLbdMDHhpBcvLy/9WVlZ+0ev1h8lYoVCsVVdXa5Hl6xgaaHK6WEdObm5uzqYVzM7OJpWvMxgMl71er5B2wzR+joCzoJWWDzFSzQ1IoJ4zy2q1+gOJ1/DwsJo1TWrnW9LWe2BWLpc7OQWLioqiAwMDt+F2l81mK8zKykrVTHWgkYjCZe7CJtbU1DRbVVU10tHRMTY3NyeUSCTsZeLqS3CH3HrbTvF4PLu1Wu0jdMCJ1dVVmd/vH0Fh81lZfU2r4Qa45fP5BGkFLRbLXpVK9Q4iGYhhp9FoPIisS5HlF1jOpZn2gkPgPj6kHBwcHEFHiVMK9vf3nyktLXXodDoNsu2uqakJoxZbkOlM8lwBH+lfekMbOqjB4XCUoKPqUgoWFxevI8j7koqVHL5IXdQkRWgP9pMA/04pqNFo3sKNiFKptI6PjzfOzMzkoh0ZzJFUGllbC8G1SCQyjQQa0RCJ4uYl/wWQMuju7r4CV1pdLlccZcPDM/YDS0EgA7sAScQ6XuxnJpPpI+KcOP9PgAEAQLc6rX2E4XgAAAAASUVORK5CYII=', -'small/lock.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE1OjQzOjUyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDg6MjQtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ4OjI0LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjU4MzI2MGU4LWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmFkZDIxYzNkLTg4NDctNGE5OS04MmVhLTM5ZWFkYjcxZjU4NjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDphZGQyMWMzZC04ODQ3LTRhOTktODJlYS0zOWVhZGI3MWY1ODY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTU6NDM6NTItMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0ODoyNC0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnzHpYIAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAQpJREFUeNqslMFxwjAQRZ8ZCqCD+L4H6ADSQToIVJChAkMFKSFOBSYdmArw5d9JB3RgLqsZTSYoduR/k2b19CV9bdH3PVNqPqTIzFbAAugk3VK1Rcqhgxof3oAS2EuqRwPNrAQuwDGCdcAHsJN0+m3dLOG+Ak7AEngDngIMeH+0KAXcAF/AC/AsaecblNF1pI9sZhsHBYe1jz99bgkEUAt8A0g6PAIegDVwHpGUSlKRis053jF6oBXQ/oyNmVVD7zCGNe68+at+NuBIJXD1+CyygZJah16ix8lyGLSfxGGkzmOTB4wawzbKYFa3ufp3C2HOA3ru2px++Gpm66kabD3Gjes4uMH+R/cBALm0WdocheKLAAAAAElFTkSuQmCC', -'small/log.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQpJREFUeNrMlMENglAMhpFw1w3kihdxA5xAmECYQJlANhAnECdAJ2AFTnIUJxAn0L9JSRpCyINg4kt++tL0fbSvBU0beU2GHLIW1gwmg2woLu5F2ApEYKTIXEIEJdAZqiAP4EpvBB4UYBvI5X0JrXm/p4fRjMZboo5SHZgdQ7bQAwogE7q0Hfh03Rv0gnzh8+kMlNY+vUcvqAlXVJAIn8n21AuIDI58HYHwuVx+KWN1BRiNBpXpCZ/J3Q17A7mjCbIrxQym7EuawSrAKfQWMCq/ksMsl6EApJIdwOacbS7LHwK8sX1Cq7r0wUAAYvpeVWdLH/tv8/9Ao2WQs54Muwu4HphYrv1qfQUYAFOlScpWjN20AAAAAElFTkSuQmCC', -'small/lothistory.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NjA4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUY4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxMDk1Y2U1LTA0NjctNDI0Mi1hNDk4LTc4OGVlYTE0YTk1MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMERBMzAwNzdFRUQxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkc9OyIAAAM+SURBVHjafNRrSJNRGAfwublU2GoJK3KBugjToMtsMUJoEPlphky/daEGRjUqCQTFCLO21sWyQc6t0oIIt5Zzy5WXsDLQCX1YkJJdRoKJNtJkYZubW/8jz2Qu6YUfe9n2Pu85z/mfk9LV1cX5z6WALcCHGEzAK/jDflxYWOAoFApOZmbm0gMpBQUFyUW4cBiOgABmqEAqrKXPbjDNzc1N2mw2jlwuX3o4NalYHrTCKrgCQ3S/BkLwCzaCFjxQnZ6e3pY8mvhVCH30diVsgKfQDhZ4BJ1wEGrgGI/Ha2xubj4dDAb/GaEY7HABXPCaRlMNIxBhLaPRHYVBOJOWlrbHarUOikQin06ncyf20EKNPwkf4AE0wHEauZ/6xxblFi1UBxttVlZWdHx83OJ2uwulUukMm/JuKIJKKvQcrkMb9U5PbTDAN5rJb1CHQqEWrVY7lJ2dPdLU1FQR72EV9MN6kNM0zdSzevgIGpr2PXrxDbZgkUikr7e3t1KpVDbY7fbysbGxxYKl8AzKgYUyn7UCniQsGIsNj+7fwwv2koyMDKPX6y3Jycn5Eg6HV/f39+/k0sJMgoxGWkQvSLwE1OP49RIOcLncS36/X4Bi87m5ucO1tbWd8dhEKW8sayKYpe9ZdBrp+4mEgvPsOxSSYFG61Gr1lEajaREKhTGeWCyuw48PQUp/HoWtVEwHA1Ab32507YJ1yOG56elpfSwWmzWbzVVlZWV6FhsffrxJK8gWREUBZqt9H6ZW2OM2aGJ5xVSLPB5Ph0wmc7hcrgo25du0ID0U8B1wjUaZskIv2f8/w1tMWa9SqX44HI7NJpPpBLbhYrAFtDPOUy9bKZtskU7BV/BSS7bBGwr9Y9geCATC6OEdg8FgZgW5FNLLcJe9Fa7CO8roIYrPTyqkob3dQzsnH0X8Tqdzv8/nW7aXO+hAGKDPUQpvkEb/iQqcpZFa4WI0GjXy+XyhxWIpjR+DicdXJUVkmO4VtHP20n2A0tBHxbtxygiMRmMJdkpg6bTBIclJKsrCXUdHlJPaEKQW5NF+38SONjxbL5FIQokFUouLi5Mj0U6x2UcRqkk4N9mp46Ct9x2HA0cgECx7+K8AAwDnGhxWw/x4LQAAAABJRU5ErkJggg==', -'small/mapping.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEBSURBVHjaYvz//z8DNQFAALHAGI2NjXCT6+vrGQlpxKUeIICYsCk+evQo2c4GCCCsBlpbWzOSayhAADGAwhAbPnLkyH9ccvgwQADhlSTHUIAAwhspjIyMJEcKQAAx4QsOKysrxmPHjmGEJTYxGAAIICZiwhg59kEYZBEu9QABxEhMwgYZAvI+PoNgACCAmIgxDOZ9YlINQADhjBSYq0BpEmYwjI0vUgACiAWXq5A1k5KTAAIIZ07BlXsIWQYQQIzEljagpAJSi88wEAAIIIIpH5RbQK4iNvcABBDRkQL3EjT34IoUgAAiOVJw5R4YAAggoiMF3VBccgABxEjtKgAgwADfKS5UGWV+HQAAAABJRU5ErkJggg==', -'small/markclosed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTkwNUQ4QkI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QkE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDNFODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDNGODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NxLYkQAAAilJREFUeNqslT2IE0EYhmezm2QTjYWFiIoG1BCikCJoVK7yUM5GURAVlETUQq08m3QhjRCEgFdoJ6JY+NcEFAWtwzVaqNyCCEoQ0UILNT+eu/GZ8F0ut9wld5CBh8xkv3ln5nu/2TU6nY4aZQuoETcjl8stJ04HbYQp+D33Z7vdVsViUSWTyXnBeDw+TOwIXAcHvsGFuQeNRkNVq1WVzWZ7wVY0Gh0kNga34Sv8gTPwDm70chZYmDVrgNhhuAmXYDVsg/1wC7bA5GKTlhI8C9fgNLzyPTsAz+COjgsGg51hLl+EKzC+iJhu32EXrIG79Xo9tMDlVCp1jt9jEISI5G0GPkJ4iRO4Ot7zvHHTNGfQqDM2bdv+oQWfinvPJQUNEQ8NcR89r0HJRDi2yXjWcZyrWkDn4CU8XGkRN5tNVS6XVSKR6I7z+fxEQARtX+wqydHAZlmWqtVqEXYWky1bflN0aeyF43Ae9NK7xbw9sFnyvE8Hh8PhZKFQmCqVSif8ZfMXNsE9KdzPsBMmdLLhNVyGR/BPn0766zBiA8Jv/IKeFK+eXIMdssAv+CI7c2SRkCywVhvRarXec6dtv6AtE8qwHR6LSfqir5fdnIRP8AEOwX1yNpbJZLam0+kX/YKGlIpuT3w5ne7rV/r6b8XlB5VKpecy93pWv22qIjotR152Y4eKOlaxWNdkF7dP6ffhUQYHpZhX9jI1DEUOleu63SEG/TRG/Qn4L8AAqCGZMDJlqdwAAAAASUVORK5CYII=', -'small/markfixed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAadJREFUeNrUU7tOAlEQnV1rkm1ITGgoF6u1kFYorcQ/kC9QvgCoLDVSaMdSGSuxUiu3EyoWClk7GoxGik1oDJVnklmzTlgexsabnMx9zD135sxcoj8eG+teyG3lnHQ6fQHkJh8TT5+ba5IdwvSAEXCE9fGvCXG5BnMKFIfPwwpboCqPrJcyLjVhSsAeyDq8h3TfkPYLppz+A6+XEoLIgvMTppvAPXCLi5/ROeYBzt8xvYK9xjo0F4kP8yh68WC9brQfInZh2kAzUUNFlgWcbqfLRwVJX48++8xNWUS+Ay5Zt1QqlZ3NZjToD2j8OmYXbhsjahnxPwEq2PPNpErKliWRkeu6ZNs2Nc4bJNUtSbRR5Tl1MlQlOewyDn3Z60Wp8EC0lMlkKAiCkchhAQfwH/3oQ2lQR17yY0FzpH5+J08tt0XT6ZTJuABhdB4n+45QdKgC23AIEwrE0XjycBt+5XkFNWOl9+SibgtfIm0LWT2JTLdNJaalHkxUYB+QnS36DIb+GfL5W7hYU99O67ucUGlWB3alsYta21VS1prtSzVXJvsf40uAAQAbSLkTAMga1QAAAABJRU5ErkJggg==', -'small/marknotfixed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDQ0E4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QzI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmNjMDk5ODBmLWRiN2MtNGNiYi05ZWZkLWRmYTg3NDcxN2Y4YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMEUwOTc4NzdEQzUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ps1gnXMAAAJxSURBVHjarJVdaFJhGMffc45OcTjWRCop2EUXYniRfVxFdGW1rODQ7rqQQu+iQXSxi64G08H6MIK+sY8RCUHkKKRkFJGYLQiKQJhB1JAJitD8ntr/kWd0oEUpe+CHvpzz/t/3ed7/8x4pFosdF0IMAFl0GZIkiVKpJJrNZmdsMpkqksPh+In/L0CR3ulGsNVqCbvdLsxmc2eYTqf3kOB3DPaCb93usFwui2g0KpxOZ2fs9XqDMqfaL3qMarWq3bFBFusc3QhSXn3/K9ji36PAssZ7R8BLcI8OU/tAUZQ/BFdADZwDIfAQDGneOQSC4DAfHDliy6oYbKMkk0l7vV4XsiwLxWq1nsGzXWAr72QQTIInYCe4RgcI3oM4II9cBB/0ev1iKpWaCAaDNzGeh+hGHa/2hidR6lPsybeAHOsD78A4eMxZfAXXYegv+Xx+IBAIqJFIZKJWq0kkuBt85IJfBTPgBqiDRfAaTHPKx8BpMAuWKpXKWCgU8rrd7gK8WPD5fM/I2FSOTeABWAbD4CyY4xpOcklGwAFwiev9lDoFZt6Qy+VOXkBkMpnNJEgrnwePwGWwn9IBY4BWU8FBXkyweBjcQi/fLhaLMxaLZYfL5ZoLh8OnZC7+FRajeAVO8GGMcprLmlOf552OoEs+q6q6EI/HtzcaDT1SvkM7/IGH+7jQ2tgG6OJY+ouH+9HLo+jl+6hfC4KSx+N5ruMbxrjGhIV/NEUJ3F3tZViobbPZPq1rL8NGehJsc6f0FEbj7+TQKSs61GGQT26o2wsWRhaJREIUCoXOfZDNZoclv98/yyZu9/IJoBqSH2m+wWDo+yXAAPMw3kRKlHogAAAAAElFTkSuQmCC', -'small/markvoided.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDczOTc4NzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDg4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcxZmNiMTcyLTNiYWItNDVjNi05ODFkLTE2OWVmNzc4ZDE5ZiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDVBMDdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pq3908gAAAJySURBVHjajJRNiFJhFIbv1SwzHIUwgihRaxiEAhvERUVGtShKc0qQnMVsDPqlYoQ2LoICKaUa6MecwJiosObGbASTosXsxo3QYkgCwyDH0oWK4+DP9H5wHET8uQceLveec9/vu/e83+GNRiPXJ06Cq8De9fw3eAFmq9XqSjQa5cxm80ZyUw+hveAe2AeWwAVQAE2wGRwAp+n5rFwuf9r5Mt+1Q1b0CMzR9S/XP060Wq27er3+j9frnbJarZVuQQcIAzeIcyKC5/npQqFwX6lUfkkkEg6tVrsmodwo/ReXWDHEZK1WuzYzM2MyGAwNn8/3BPcbO/wAfoI7IsWOsXfQlHPxeHyxWCzudDgcS6FQ6LxUo9EcZ6sBD1gVIcZ2sAAu1+v1uM1m4ywWSyWfz4/EYrGz7JNvgkVQFCG2HQjUMKEz4XK53qdSqVEJWSAhQkwGPoFv4GF3UqFQ/MDXlpkg458IwTegBK70So6Nja2bTKYSM/Y6aA0Re0CGPzyktsEEebBlQNEl4ARHBjWtXC5z6PY2CZ3N/X3qTtExdFJd30in06pkMqligs/BmR41B8FrMAWSw35wNps9pFarm0zwFdhBZm3HLvAR+EBskJBUKuXgRy4YDN622+3zTHAFPCNv8WSPBfJZaNjOVCoV5/f7JzOZzG6Px/OyPb7C5Mc56voymB4mhtHFCYJwNBKJPEY4dTpdpXPabKXBwKyhA79ETJupXC7nn5iYuIUh8Y4t0DlgV2lKs65+Bm/BPPjepaOmRW9guuwJBAIX3W73V5lM1nNirwEvNeQ6NaxGJ6TBThgYIXMLzWYzPD4+XmqLsfgvwAB2R8ap45DnpAAAAABJRU5ErkJggg==', -'small/meeting.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNqsVN0NgkAMBsMAt4G84gs6gTiBuAEj6ASEEdzADcAJvBF4gkcZgRFskyNpmvbIRZoQ7qf38fXrd8SREtkhK5StfhzGOQoJD5h3DyNZAU7hlbJlA+tGY5mskE3hoFVYWunALto4REBkBSzuWF4ooK/knjUBdetgXsJ40g7FTBtkVDlmHQD0gnbGASIwNuZFG8QBP/BaGGHSCZInofNfsoQfvmkaUo8Zx4JHxealrylcG8kaVtJaA2wY+KQ0i5r66QOsqanhaQXAltmpFrvs7NAqJb7d+Mp0XuKy3Cjqw6NirYKUWHhyLC85V5IbtIWzRqPk5JKG5o8rbEJ+DnsyPofc5YfCcg7M2TZ+AgwAadBRsznoNgYAAAAASUVORK5CYII=', -'small/memberusers.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NjAyMTE5MjczODUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzM5Nzg3ODhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzM5Nzg3NzhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZGVmODg0MDktNWU0Ny00OGMwLTliZWQtNWMzMmFiYThjNWMzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MDIxMTkyNzM4NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uaRV8QAAAqVJREFUeNqslF1okmEUx9/Xj2k2aQUGlRdDpYbMCyHQi6IRlrDIktFVXkkb0SBiVti6CCTyRqqNKBZEUY2a0o1BoTPwLqRV0AdBYQxbBa2kcoloav8j5xXnfOumB37o8z7n/Dkfz3nEer0u/M8ljoyMSP9VYBL0gzvgyj981aIoThQKhX6j0TgdCoWmNBqNIPb29jYOwXk2TIAjLHpLTgxcqNVqVb/fP5tOp0edTud0OBy+LVqtVjJwghNgiB02cIQ+sNRBcDs4WiwWD6RSKaFarW50u92XEomET8EG+jbHb6AMNDIRdoMfzVqpVItY5Xw+36U0GAz07QvYD7SgBo6Bz+ChjCDZDyFltdlsrkej0TG73f7J5/MlpAirYBU4BE4BL1hoEbCAXRyZZK9Vq9XDsVhsPJlM7lMoFAvYNzrbxd2dBZfZYTWYAe+AkWtZBKNgHIxR9KVSaSoSiQhItdvr9c64XK55SjnAAqGWiCrgCbjOggfBTbAI7oFn4FylUhE8Ho/gcDjKJpPpRTAYPE4pH2bH9kXRvQZvWxrwiEux4joNDg6+slgsX0nwA3gvU3xqyk7Qw/u93LSX7YZarVZAtk+phuuAQkaQGrUZ3AcfwTbwk+2rkpC0cB97SHAenAQP+O41RhLouPh3wUVu3jVO9zRIKZXK35lMhpoi5nK59dlsdoAmhaIYBjs4Hem12MSd3d3yTUr7KgniHmrpHup0OhU6/j0QCExKo9dpTXCqqfYHhaM8g9HLxuNxwWazNQ/lakejSCP0vMNZnZu4lTaIbNmhnGAX//6SOV/ihq1YcoJ5Tm1Ph7M1YAC86eSoQh0EmbTO8nQEeXKkANaCGyBDvmjM8gLPzc397VWm13dLS5cp6gJ4TN9IrK+vT9Dr9U2HPwIMAMmq3eljTdOIAAAAAElFTkSuQmCC', -'small/merge.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBgIoKmlKQDCxKhlIdLMfiidSEghIxGucwBS+6Fcw+vXrl/Ap56JCNfVY3EpTsBMwHUJQKoASUhBVFT04ZvXby6Q7GVoJJwHGYIm9QDq9Q+ketkBqvkBmmEPoHJkJ5kGIP4PxQ2E1DNRO80ODwP1kdj2FOUUaNK5D8TI+VgRmGQekOvCAqhhIAMOQMXyyXIhNJfMRyoUHiDl6USgKxcQZSDQIAVo/k2ACm0Aag6Eys1HEj8ANfgBIS8rIGlagFxkATWD2BOQcpICsS4MALkAV1GFpGYDvgiiCgAIMAAMj0aUTd7tKgAAAABJRU5ErkJggg==', -'small/mixture.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFDQTQyNTM4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFDQTQyNTI4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhmZTRkMzNmLTRjYTQtNGU0OS04MGJhLTk3NjI0ZDY0NDNmNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Mzc5ODJENjdGNDMxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnZx3D4AAAG/SURBVHjatJQ/S8NAGMZz+deYonRQcBAsuJRIoSCKg64Obh0UKTjpUnDyG3QMLi5VcBK/g6tbqSAtnbqog4ggKFhBatKYxOfqG4mhpK3VF35c7nI89753zx3zfV/4y5BrtdoK2g+g0ZgXwSUcmudGxrtjHiKVSr2ydDp9g4E5cAk6JMxIXOKLUp+L/CiHMSZYluW7ruuj1fL5/IWs6/oy/plgAmwDi+aLQAEqtVIU27Yl0zSlTCYj1uv1pWq1uslXfwa74Aycgq1Q6TbRM5CZkMvlhGw2K6DiZKVS6Yj0j5dyAmaHPQSUGrRqUFYQGm38SCEKfxz/LsiGFdC0L/tKkuQJ5LFwcJOOA4NOOViERRZkJMIajYaIA+m0Wq2kKIpeVLANVsH5INklEgmhVCpx+1jFYnEffVuO2YYr8ATW+4lydyC7bua9BIPrdQCuwQyZezFG9/tKyjGTjsAbmA7t50i2mSTBQ6D/VtCPZM1foZ0BdBTS8uWIB3n/luzDv8eIfnGnKMoDryQs2KQD4A/EApgn0bgnnTmO0y4UCk08XXvw5SMzDCM8YQ0cg3vwPuDN4Q/slKqqL+VyeeNTgAEApJORZujlk1EAAAAASUVORK5CYII=', -'small/modifiedantibody.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc9JREFUeNqslLFSwkAQQC/0zGCbNNglNtIY7AwG+8ReSA9+ADZWgh8AthD8AHqBwZomNJJYoTMkNQMfcO6eSSaGKJkxO7Ozd8nty+7tZglJIZTSIqhGshKA9UFXWcFK2+2WrtdrWFIjC+Cs2+vS1l2L/jtKACgYnVyWqXQipYoyd4B5P3wekt1uxza9px6a+l8OXPSuwBRAA3sBIKV6VQ2BKOOXMREEYQDLT9BX0A3HcYsQiBUEa7iuSzzPI2hdzyWO47A12qiIokjkM5nwAk8kUSI8z+MH8BVCPxCI0czAsVQ36mE0qqqS6XSamFb8XfuhTTRN28CykoNw2QK+vDAHJsnn899Olyoe2oPVbmosyhgMozvG1FlR4lB0wDTiUHTGVDHlGKziM/bapABq2bZN9WudTiYTij3YvG1Sc2gync/nrI1GoxG2kOVf2X6Vo9WGe7TK52WWfqPRCO9V4AXSeeyw/fJtiY+O4pEl9WEhqCw6RlsGqx/s/TOlNI2t2I794wFGFhQrhENLgRTTAE+DCKOF0TWdFSMAO+9OIjCpMFZQBF/6/jxUcFDgv42DAs/gPg2QolMAShoY+FH/zOrgdPkNlHDWyGzo/iVfAgwAu/ZNbJxtCZcAAAAASUVORK5CYII=', -'small/modifiedprotein.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNq8VL1SwkAQXoiFFmS0YMYZGspgRSOtP3mB8ABBfAIfwfEJhAJbkTwAsbRghhoKUwkdNMzoSMGQF3DX2Qt7l1iEwp3ZS7KX++67b/fWAmG1s1q7XC7D+nv9CXvagfFdRX9E4FsVmH3Mwr0AEeQYHxfo9Bxy+Covw6I6Kj4W6JdiLkJ247yAFg2oWYTafTHgIc+dYuw1r56WemHQIwbtoL+hOxjPxbJgZlkk515MkZYb9HcjFgm9yboFcwdOzoKTA43zBkymE1p8g942AGnjZxE7KWaw9hQYme/7wN8JmOd56lWeoo9J3GQB3smFtm1rsVKpBO61C6x1VR43KRtxXPqprr5bfku9JuXU9JqpTdDGyC5KAbJOoLRzHAdWq5X2A0sAUha0F62wmV01S6cw3N0813WhUqnAaDSSeyyRXT8FaGTwd+F8PqcMJzFiHMcxDENZKTt2JqCmCQ2DYKAxoYHYEaiwzl93WdNku91qx0V7oKH31AOzVLIYSnakxzIIAvkfLQqnk6mZpG6qfSG7uiwVpYnULouJLBWzH25k36OWxddP9sIooz8u4T/sR4ABAJKFlVhez7PTAAAAAElFTkSuQmCC', -'small/molecularlist.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARtJREFUeNrMVMsNgkAQRUMBdABXPEEFSgXSgVKBUoFagVoBUAIViBWIF7muHVCCb5IhIRtkF4iJm7zsZGd4+5jPGsa/r5kqwF24IbYdUFavKlbFzzUuTYAcCJlcXyE+WGG7STGkzIfvDHsv+Qr4ApVCCqKLfKAGYr6IVBbAif1Bl0Lzm3R8VILoCvPQOqYL0r5fNvucID2CdAvTgn3RqbKpEbPm/C5Z4R3k6ShCkDjYCBGTJbwPV8gtsgEyyiefRbDF2D60ACHlVIxubM4TVdmGskR39FRVFiDz+HcffJxT9UeNHuexpmmgaaGpmVIUGjOb2qSlOJryOJTcMmLI89Wl0IG6JkdPwGvyKC1bh5DUZJpi3u10/Gx9BBgAHz5kD0WpcgIAAAAASUVORK5CYII=', -'small/money.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUhJREFUeNrMVNERwUAUDKOA60B++ToVoALpABWgAjpABaECVEAH8sWndCAdsM9sZp5I5IwZIzM7l+Te7b19b+8879+fSllAo9m4YZgAK2AOBEDrfDrHefFVx42nwAUwQAL4RYE1BzLJZA1sSbgBom8J+0AbsCIdcpOi4GpJ/TqUJ+gwQ4v//seEWDSnvDWbIA3sMuMj5gPn1iN4BlwBWzA/kO5TQSmZz2CrpQOhJsD7GLi4SBaLLCAxSjfAMOLcKK0f5hdiIcm2rMsP46pvwzEByTATuwR6NP1rhpSZ6FPATGWhyN4DRi05sPuFkg27+FRTGnlH4rHaLFYKnI3t09jy1Ensufow5mnwVBYHelGId/jequyDrKI820idwjw7ZU8RvRq8vb7YmDBTz/QysKoMMj9Bxiun+5DERp3ltCQxnRD95Ma+CzAAOBxvUVsPplgAAAAASUVORK5CYII=', -'small/more.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOTRDOTYwRjczOEYxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDOTQ3RENDRThGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDOTQ3RENDRDhGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzdjY2UwYmYtYTM3OC00OTVmLWI0NzktYjYzOThkN2FjZGI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5NEM5NjBGNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LLm41wAAAodJREFUeNqc1G1o0kEcB/DTvxMztkqxoGVlEpVoQSHECDMMgl4VvQksog2CBhUGUdgIe9GoZFRWFD1ILXwxQSFjtIRiMihMCKG96EkHlRSE4QLNh7S+N36ry2ZMDz4vDu++/zvvdyczmUysQTPDAdgOS0EOX+Ax+OFJoVBgwWCQWa3W35MUMwTNg5OwGV7DWXgPVVgEG+EMpOCUSqVKi5MlnU4n9lfDCBThENyGFzR5Al7CQ4jAmlqtNpDL5VIOh+ONQqH4J3AFDb4DR+Era9wKfMsIeRuPx6/k8/lxhE6tVC5s/SYE4RybfRs2m81HQqHQ9Vgs1ikG7oa50NdEGCuVSszr9d43Go2jHo+nr1gsTgVKsA/OQ62ZwGq1ytrb25nL5epPJpO2aDTayQN3gQoesRYaLx2bzZZG6aSGhoa28sD98AHywrhVsFboLwGr0NdAF//v+SqVSiXTarVjkiStl9PECWFwFx3OPdgGndTnJdQLc2AQrkG/sP2P/MNy2m5RCNxAJfOOVrUMOuAp2GE+GKjEeF9G88r8PHjgJ1goBA7SivkB3YLnVMjL4TSNv0E35gT8pHkL4JuCDkO80JPQXfffu+v6l8ifKydJ5kql8oqv8CptY2Urp4y7zDKZjDKRSGxCPY7xwDTd14OtBKrVaub3+3eUy+VST0/Ps+mbchF2wrpmVxcOhzsCgYDH6XReMBgMP2TCe3iYVrkFPs8mUCaTSdlsNmixWCYjkUg3/4Bc+N1HpzlaV8SN2mLU3rBGo2lzu929PGymB/Y48AINQBTuwjh8nz5MukX8uu7BYzDi8/mO2e328v9e7MvwgLY/ABUK5C+2GtroIPfyGtXr9X9N/iXAAOlhxif7ttXtAAAAAElFTkSuQmCC', -'small/move.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC', -'small/my.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODg4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTUyMEI3ODc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmEwNjg3MmJhLTNhY2YtNDMyOS1hMmUyLTVkYTBhZjI1NTFjZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMjA5QjQxNzc2QkQxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plu9u0cAAANSSURBVHjarJRdSJNRGMfffTmdWEsjhrUlUbqkwI/pJEXWhZCXwyFJ1l2bNEZoEzZrrC6WiaAwYrE0CLxI3NxCgyLS3LxZuMSkzPxAJoKgbq6UOV26/mdsMmWmRC/82N7znvN/nvM8/3No4XCY+p8P86APoVCIcrlc+Ww2O8RkMr9GAyeDUuAAv3d2diihUEilpaX9XXBycjK9tbVVPTc3l7+6unrS5/N10en0dXy6Bs6BKWAMBAKuvr4+SiwW766lJxKsr69/PjU1xRgcHKzEZDmNRgtwOBwmsAERaAEvwWUE2rM2oWBDQ8OLjY2N842NjXVer1eOLQsxLABSoAIKYAGeI9WwoqLiLZ/Pd5tMJs3MzMw8i8VqxjADXAQ68BQMR4qanJw4Q2wvWyqV3sHvcfKOYi8bjcZ7IpHIhmy7MPQM1IFbMTEGg0GNjY2xhoeHS1D3E2SMFrNNbW1tx+zsrITH47XY7fZOMob3MzKZrDMYDLahVp+jWy6NCm+SOZubm3dRS2Vubu5gd3d3XSRDRMgYHx/P53K5LpVK1RfLGlsWo4afIPYer15AAhGPFEannN3e3r6h0WiuLywspFut1qvMkZERkVKp1MNLyz09PTfjPVVcXBywWCzp+0rMAn6yY2T3SK/XN1dVVY1mZmbq5XK5ib64uMj3+/08eC51aGiIHb+yurr6Q1FRERdb1pJegQ4wCibAKWQXKikpscP8lEQi+V5eXu6jl5WVvent7VWhId+0Wq2zpqbGPDAwwCOCDofjAuqYmpSUxI/Wj7SUfEsBK4AzPT1dGW1qltPpzNhtitvtTlEoFDZsg3S4o729/R2C2GHqx+vr6444A9+P1lGDo3cJnX6Qk5PDxg6ppqYm067g2toaZTAYKuG7K2q12mCz2XQQmcfxMvf391PoZEyQ+NEKHiL4F51Ox4BnC1HDH0jkJ0UE9wNRbl5e3iuPx3MMWVNZWVkUbBGPDBjIONyxZ23CowehbESjCQSCXzB1oikLIIf8QcMOP8uoy9bS0hJFric0JNEUGggf+T4sKCiYwH0YNJvNt1dWVlyo1VacCDd6ObxGfSNB90Q66MaGZU6j009g9BTcNgHMiwkSo38EbQgUhrEjl+yhgv/6/BFgALyijRYrrwspAAAAAElFTkSuQmCC', -'small/mymolecules.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg4QUZDOTk4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg4QUZDOTg4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwRjFBODlEODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwRjFBODlFODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+De0EogAAArVJREFUeNqslV9I2lEUx+9Pi5qG+DCiBY4erIY4hImwEVIYEcnENmGJNAfbw1oie7BgNnprZLBZi0CIKWNzkxk0ldhLGbEnYSOUiWvkg4OxaCwXI7XIP/teZ01j5QZe+IC/cy/nnvM951yZXC5HKrlYpMKr4g6ryh2wWCwkFAqRmpqao1vN+/v7FzUazbpSqQzU1tb+tlINU6kUGR4e7sVaUKlUbr/fL6N2ilarJfX19aSpqakYKXgLxvl8vn9kZER3cD6f8tjYmMLpdBp0Ot1D8HJoaMi6uLjYTPdoZBwO5ygmMAnMRqPxzvz8vD4SiTCHKUej0Rs2m21CrVav0G+Px9NqtVoVXV1d68coEQMN9Ecmk2kBqZKiMAwT8/l8F7LZLD1A4vH4WYlEEjtB2p/gEc6/npubM87Ozo6LRKLcYYQDAwOP9Xr9856eHgmbzT61urqqNplMr45xdg48APd2d3dXpqenox0dHT9Kqtze3h5fWlrSTk1NKeRyeUIoFKZwicflcrVBp49FzqhONvCORgiyAoGg5Dbmb5MSi8WqOjs733C53FYej9e2tbX1hcXKq3MLPAHnQTiZTBK3201kMtnJjY12SDscjitIaXNjY8MLGRQwXweTYJQ6++9JgQwJu91+GX12Op1OW2BqA1Srp8XnDhv6X0avsbHxGyr5Hl3QT2sHrIWCtNB9RE6CwWBdIBBowNSUd7i3t8dkaB8RcgnwgRhcBR/AAqK7azabnd3d3Q6DwXB7Z2fnZIe0tyD4KLTsxecz8L3g9Ca9ACNrmZmZmfB6vf3Ly8vXwuGwqOzjgAA/FaI6A74WzJ/BC+ADHPokHGRb1iHSJmiPXJGzPz3HMJbBwcH7iUQi19fX5xaLxRGm3Iu9trZGtre38wU4ZtUhC65UKt2srq4mTKX/An4JMACs2R5AsSgHKQAAAABJRU5ErkJggg==', -'small/mypackages.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBgFlAJGEKGppZkApOJJ1PsBiBuvX7t+AVmQCUqDDDOAYmxAAYqRAUjteaBjGrC5cD2QOgjE+UAsAMQTsRjqD8QPgPgikpg+EAcAMciVgUDXPmCBSlyEGrQQ6pV8KBsZbARie6ghAkjiB5B8ADcQGYBsewC0rQFdAuo9e6iBH6DCDlBDwYCFzMhcCLUYZiADJQZegIanP5KXyTcQGBSFWIJiP3qyoRqgqYH81DRwAxAnYEljJAMWaEBfAAasIpAJyjHzQekQyHfAol4eh7gAStbDkXhJBYXoBcXgBAABBgArODfT13L+AAAAAABJRU5ErkJggg==', -'small/myreagents.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBJREFUeNqsVEtOwzAQTQN7usmasCyrcALCDcINkhO0nCD0BM0NUk5AewJyBLOhS8KaSoQTwBvpWRpZzqdSRxo5sWeen9+MfRFMsMXtIo2iKIcHx+9jOxQ7GwGaY3iDy9jAE34/Hj4OxpdzOULuFW6QXKhNnjl/E5xiwg7+R5bu2qfI4MsLBzDleA3YdZ61Xh2HAEWj1McQFsO7kwDJrJKiaFB81wI2uSjUxgK8w1fwH8zrKj+Mtg0SMgwbR6OEY8EjisuGpYD6WM4IlhOsoHax0lEYLjUA4u3cnVu0EIuSXDNhx90tuxXmpO/W7D2rb8VTlL6iyE5bRV8Eb6hVpQA6niRQMuRuF4Rk8qLmfhGUqEpb2yspZK0ly3RK2yQ989fO/96NtYBzT1O7dgX/GruyIXdZOk1tPK9OxhdH2717DQVwK7SV4AbfGwZbk/+WxbIPR01Nd74+TPjuyeKagttbU1J4o+5vytgnG+u7KTGTM6Vpyw5wj2p6XqHz278AAwDPkJfDoDPfpwAAAABJRU5ErkJggg==', -'small/myrecents.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNq0VD1PwkAYvhoZMcjKApPgVEnAtQYcYNE/YAszg7AihjAxqgmuqIizjHQgYEgwoQmtizQBQhNZiST8gPpec2gpLR9GL3ny9t67e/q8H3cI/fGgVm3w7fuuwMQADoACuOm+d6+t9m+tILsDwwAOgAT/PA7Igj+5sXQ45AZ8AhwGP4P9v1HoBkigbKJ3wrxBwt88ZLODRsVrE86UAEHMsISLVLE6t71CYQrwDKQc2BcAR1R71mobVVWTgiCcdOUu49x1KjabzVHlqxLP8w+znOIqk9zGLWUAkaPT6Ygcx6mgRg0fhzWLUbgtwLIa0+cQIJL+NB+9fq8ePAzOkcy+MfL5PCY9NWkpeqEosJEpFovMdDq1/GHpsYREUczqCqbdGMC5WZWZSqWystFbry0ap0bnuidXcnnbuFwu5N3zLhAKbQEb2qBSMYattY3dbtcmLMtq3+mL9AJhIBhApMr6oRibHxM2QqFQdse+g2q1GpJl2TTkaCQqURQ1MbhpQvpDCJsa4/G4EYlGLAvDnrHI4/GkDFcQ529CQp9vbJzs4XBYz+VydFtofy/i8BOJBBp9jJTyU1kiamgSJm70IyCUlt2UWH/Q5wb9gTb3+/1K5jLz1mw2Z4+rm1jF7CX6l/ElwABd/9TPhANNWQAAAABJRU5ErkJggg==', -'small/needmoredetails.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDRDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qzk0N0RDRDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDM2ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDM3ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+X63NJwAAAoJJREFUeNqclV9oUlEcx8+9ep1RtlVIK8HCoECEoNIoIhz0B0LLokjYoDfbyyjfehlCEDGStloZ+dar9VBBD5FPhTEiyxVkGClhI2rLJYFJN13fn/zuOMi2XD/4gOfce7739zu/7zkqbrdbLBL7wTkQAjNABWvBXTAGJmq1mkilUsLr9c4vMi8gtAEMg83gMS/+ARTQA3bz8w/gkqZp0/JidYGs7oP3nNk18Ay8BW/AU3AFnAJfwMNyueyVBRSp5F3gNhgCz0UH0Ww2DzQajZFkMjng9/vzcoYr+MsXOhWjMJlM6WAweDESiYwWi8UuWfAsmARPxDKiXq+LcDj8wOVyfU4kEmcMwVWgD1wXywyUK2w2m4hGo+Po9rFSqaSR4BHwCxTFf4Su68Lj8UxaLBYll8ttJ8GDINf2nh/4pLGP54xwcyIKle1wOMiLH5Gli3zoYKsYcQKcB128t4K9qIPLgLp5iyoGLqvVeoPLf43fK42mzEmCveArb0M3WE37z3Pr2BH07AW6vCWbzbb2EgbXW5232+2H+OsTLJjjhRnwCHwCvwGdiDvgG5c/ZDabe9Pp9EAmk9lUKBS2Op3OPBmb2k2i/R32YYzNr8r2oebEYjEfZTiFuZN8rH7+Q+w4GOVzLfism5DpGpQs8vm8SeWb5BWIdJDdYNv4HnjXMrSqikqlctRIexwcBjuXEKN317fN9fDBMI5ityE4y1fSTbLCIoJzbBU59vI1N/8O7aExoJPynY/gDF9h7bEN7JHGZKGNlBw3pyALChZ5CaLgNJdJBv/DpWncQCOmuGytWq2KUCg0rCzxF9DHFyllUOPOKmzwfWCHZJvpQCBwNR6Pj/wVYABTaL+YYe0jZQAAAABJRU5ErkJggg==', -'small/new.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC0klEQVR42mL8//8/AzUBQAAxMVAZAAQQC4g4cOAA96dPn0oFBQWb3rx5s05ISCji69evnmxsbFd5eXnv/vv37y/IJ0xMTAwgGoQZGRnBBsB8COJbWloyAAQQ2ECgxq9///41ePXq1aGfP39qvX37dvPv378VRUREbIEGiwE1saNrBoKfIHEuLq4HID5MDiCAwAYCNXOwsLAc/v79e5K0tLTs+/fvZwEtefXx48dFz58/d0HWgBFmQFfr6uoyA+l/ID5AAIEN/PPnjyDQZVHMzMzvgQZ/BdK3v3z5kiksLOzr7Oy8HahYGmjgZ3TDWFlZLbZt2+b++fNnNwEBgR0gMYAAAhvIycn5/MePH7OAEjWPgQDoop/s7OzHgVI/rl275gn1LieQ+g5iA8NUCCi/WV1d/QTQAe5AC7/BLAEIIJiXuYEGhkhKSqoCw/EsMHK8gYa3Al2u9+vXLxAWBnkJ5m2ggSxAzA9kLkHyOihg/wMEEDjZcHBw/AAaqgf06i+goTofPnxYAgo3oCXxoOAAsv8hxyxSxMBjHWYZQACBXQg0iBMYEWLAMFORkpLSBPJtoDZiTatAzf+A8ixAQzuQDAebCBBALDABoCEQG1hYDIEBLI4v8YLUA738BcaGuh7sZYAAYkGyFWToZ2BSaQUmckUgnwMY0+VAdV+B+AvMi0CDeIAUNzBZrVFRUYEncqA42IUAAcSCnGBBCRWYFMSBsX4LyGYEeqsEiH8jp0GoZlagT94DuTboYQoQQCxovvkJVPwDGBEcQEOYgRGlD1T4DmoZB5raR8gGwQBAAMENBBoEwqLAfDyZn5//MVQxF4Gw5AJaDrKMC+YLgAACGwjMx98lJCSWXQSCW7duIQc0PHyRxWCaQYaBIpObm3sXzBKAAIJlvb9AA6OBsZsFNFwQ2RvIBQI2g4Hh/QBkKEwdQAAxUruABQggqhewAAFEdQMBAgwACF1tPAAsFuUAAAAASUVORK5CYII=', -'small/newmolecules.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNrUU7FxAjEQfGRy7OBj5BAnxhXYdAAdmAqeDjAVYCrA7gBXwDvyEAGJCRGxCegA9jwrRvPo58+hb2ZHmjvdau9OShKFte5aT4nSrhRk11i+0jRd7H/2ruq8UVw64DrUKDQKdRnQA6ymdKNQt9p8b3KsE41Ko1A3ousNaFeprDGxDcjBBveWyKGugzMWq8P6QpUHUQ7IkHbcSyXOE06BLvAKfEgCgisqtYw7+PqBz/Jy34aO5NSCEqc8IIFDkDSmAqmg5y8Kcrqe7LfkQt/OpCTasZQZYuKfAzNRGiO7ICyQvgNNGYooDmLeztVovtqRisriy7Jpm5LnkoRlRMyxvxdWj/hEWR5cIInPfELevwbu/0LoqHTAxy1EGXyius+pZ9qf0iTpFngEHqBM/vIt8AksSRbtcWzKc25HQYnFHo/ZhpvKKbNnmpdg/QD/l50EGAB3roumMiDUfQAAAABJRU5ErkJggg==', -'small/newproducts.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REI5MzNCMUI4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REI5MzNCMUE4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjc1ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjc2ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N2KS3AAAAihJREFUeNqc1T9oE1EcB/BLrxcSbEhPCa0Fo0ZUiN3alNKhQym0CAoOKgQUBAUtBSUOBnEwoFk6tbjYQpulBG4I7dKlDUWDk/HvUKpTNOigECxoLsaL5/fB98JxXDDNwQfu3r33e+/93u8STzQalXjFQQNDavOqVquSpmlSLBZrtnXZ3l+BeRiGm9AvdXBZAQfhDMzAS7gMe50GfATP4YitfRX0TgMuwXX4wjYT7sAhPp9jKq6Bp52AnyAHr2AbRiAFCpyCW/ACzsLU/wJ22+6fwjuutMi2w/CNpy8mkvcTcMPl/U84yPsB+N3uKbea7C4U+CxWmYDeTgNOgApzfF6DHbjEcaMw5IzR7QgyDtPwHY67pEGU1xgcg0Wm4CKUWq1QlMtXCMNV+OF4b7B0AvCMh9jTasunIQRPuL2gSxqsOqyzrLoURfnjFvAky2aFz29hEw64BKxzByJdgXK5rDoDCveYk2W273FLXkdAsZqjLPYFn8+3mkwm75dKJcUe8ARXojkGe/kZ2i+dp7wO72VZXqtUKrvpdPphrVZrBhQD/7r8Drp9t2LiLSs1jUZDSiQSD/L5/FAqlTpvBfzIzpMuq3FOIib+0Oyg61I8Hq9nMpnZbDZ7u1AohOVQKCQ6fYbH8Iv5E5/ZBRbva5ZJH8yyr6i7XtM0g5FIJKiqql4sFn25XO6Gx/YXMMgBfpbEGx7CKFfqZdCy2K2VEubO9Pv9pmEYyj8BBgD+/pOBndj9rQAAAABJRU5ErkJggg==', -'small/next.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC', -'small/nosequence.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa1JREFUeNrMVDFSwzAQNAk9pkhvOkKlH+C8wKGDiuQF4B+EFyR0dE4HVE5eEP8gpiEloYMhM5iSCvaYFXPRyIGCAs3sWNbd7Z1WJwXBH4+tTcb2QTvGJ1ZLS6BY3C+WdTHNGqJeq9XKMe2S5J2mQ+AKtgi4W72sKje24RCFgBBlQIpK9oAU8wmQYH6E7y4gRHP4djcSkigCxsCZY4tAMMfXMIkgx5rxEso2xRno0FmqHYoNBCWrkmQz7iKwpN5DgdMDPhcIHvNfyGdAX8hZsRAWwFT5rcU1VfAxFvs2AQR/gvDPmF6z8n3gBj4nsJXWDz5voi/WbvWWY2Z2x6nVj6dtPD6Fbi1LKFt69DjHJKoU8dpgT4a+U97xEFoyeyClp2dD3ymXzo3Q2zEk/PJx24Rx34m2VaD0VMRgaZeeqlJOcQL7OdtGGt7KkGj9G9ShYjMPmbEiUalaRfxGvDW56g5JfOnTMCVZyJvQURoax882fcbql3WviwFegYFay1zd5FYBH2L78flicMZWkK2UqKCgvoaa9VjZ4NfvIV+ShDJE6vCmouOmN/F/j08BBgCFXrBIXlgzPAAAAABJRU5ErkJggg==', -'small/notebook.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0Mzk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0Mzg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmViMjFkN2Q3LTc0YzgtNGUwYy05ZWYwLTUzODU1OTYxNTY2ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3N0NFNTRERjdGNEQxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptz5sIAAAAFdSURBVHjarJS9SsRAFIUnJmsw2AlpAhJ/QJEtJDDY+xCxsrXRXgRBLC208wnsYuUjWAfyAMpCLGKRxcVCA9lNNp4JG7gMriTrHPjIzd+ZM5mb0aqqYkJhGO75vv9kWdYYpyVrLz3Lsq8gCI4457FBbkzAEByAJdZNOVhl0osf4BlMWXdVTUETboFzoDUXyrLMcPjWdZ0OLAZcaRLJog++gAswrueQ58zzvHvAUXNcotzMi0oTboMrsCxOiqJgtm2PUL6J2jRN+t5wniFN+A4ehFc9kmGwNE2noK4llW0Siu+y0QwiEkVRdIxyH3VP6oadNoZiTut0UbAYfRz6XZZbnvJjx6b+03ATnEmpFzd0HGfguu71BFJimCTJbhzHdz1I1ZQH4Ha2ikoM18ChWFxVhoy2jArD0T92m18NXXCqrG2gV3C5YEK9+Vw0jfjtTsAn3TBbSJvt2HV3/AgwADY2XrGVgBZhAAAAAElFTkSuQmCC', -'small/olignonucleotide.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhSQFNLM4BSM5jQ+OspNZARzYX/gZQjEMcD8cHr164voNSFH4B4PhArQA2lzIVILu0HUh+BGOxCoEsfkOtCGAAZVg/E54H4PjVjPQGI71PsZSQD9wMpkHcPAvEFoNcvEDKQhYD8RCDOB2IDIBYAYkVqeX0+CFPsZbT0eQGarEDps4FcL8NAIDRtgrxtT7ELkVwKcpk8lAuyIBDo2g/EpENcAKQZVoAIQCOLaml0PxA7EJtTiAEHoRE1xABAgAEA78kxVfmnVpkAAAAASUVORK5CYII=', -'small/ongoingprojects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE5MDk5Njg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE5MDk5Njc4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRiNzc2MzIyLWE2NzgtNDFmMy1iZjQ2LWI5M2Q0ZTUyNjdjOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkf5cvYAAAHESURBVHja7NRBKENxHAfw92wxo1nWxGFrUWuN1YjJaWs5SDnJgWJTK+U0aSWl3dwcKHLi4OCyOTnolTS5IFlOakYpmpRRJvN48/3Vb8M7OTgo/vXpv73/+3//b///700sFArCT7Yy4YfbHwwUA4EA9f3QDZfwymMKtMEU3EI7vMBBcXI+nxei0ajgcDhKgdpEIkG9CzZhD7o4jIKHYIDHTVAOFzAJT2hCOBz+8oRavV5PfQ7MsAhV8Mzjp+CDbZjna9Qvwzg88vxS05jNlCN0QAvdAKMQZxuwDvuf5mzBMC2m0Wiuk8mkTxTFZrvdnsL3UqAHajhw5xt73wd3CDJlMplxhLbGYjGP0Wg8Lwb6oY5v3gUde+P9VLdeOkhZlhWr1Xocj8enDAbDQygUWhGdTqdEpw0VPPmKtoIn0iJjkFIFrvK+v+JgmoLBoJROpxstFktKi4udXAr3XJfFJ5XBDiMwowqkxZcURTl0uVwD2WzWH4lE5vD5TLTZbLMYHOQa/Fzo9LSVUAs9cMO/hLZiDaZzudyRJEmC2+3+KBuv17uAvp7D1PtFtdgAE3xg1KqBiveEClun0319U/7/vn5f4LsAAwDQ04UBKGtvIgAAAABJRU5ErkJggg==', -'small/onhold.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEE4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQwNmY1NzE3LTViZjYtNDc1MC04Yjk4LWQxYTRhZmNjNjY2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDU5QzdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgImVfsAAAKpSURBVHjapNRbaNJRHAfw8/dCzpwUTShEyaCHbJFBsqIgSe2hFvSiMCrqoQeRKKIIN5DoQjcwK7pAQSOiCzKkLHIRWRA5gnLRQ0FS+dJlVCrespza94yfcTKtwQ582P7nv/9v5/zO7/wks9nM2gwn7IBeKEMVpsNzOAVXSqUSC4VCzGq1/v5I0SKQHg7DfHgEpyEHNeiEJbANNoNfpVI9FT+W63Q68XkV3IQn4IW78A4+wEd4DyNwGVS1Wu1kNpst2e32hEKh+CsgX/cN2Ann4Qf790golcr78Xj8TKFQyDocjpd8UkYv1XARfBBhkxzVavWVz+dzx2KxA9AtBtwOb+EaPUs09wC2CDH4Lu7QoXSWy2XmcrlGnU7nBb/ff4g/84AzYAMcET7cBFtp63thNfDcXIJbMJOCsmKxyLxe79mxsbF50Wi0m2dyN5+nchBLZhCG6FRXUk4zlJpEIyBflV6vz1ksljhKaK2MSuAF1IWA402/10mV5qbBTzGfBoPhHg5pOQ84G960yLkk/Kz/74CQS776jsahVNjUx8QOZLSNWVONlkqllLyuecDHsLTpvULIEV+9nEqsLsxJ4gfhcHhhpVJJ8T/aD3OpFBqDX7NlVPA98Bm+Ub67YEGjhuVyOUMglslk1huNxmEZNQAeoE8IyEvCAA+pKVyH11SDw7ALDk5cMbWa4Zb0JJNJncfjiTW6zTG4CiH4Cp+obS2CUaFc+uk2feGr5qvL5/NSMBg86na7B00mU04S+uFxWAzrmuqw7ZAkiWk0mhNardYciUR60crGZcL7fspTFOZMIp4KzeFcOp1eMTAw0MeDic2B0bY2wjNqCnvA1CJQFzXXOK6dLhAIrLHZbJl2HbtOKx2ivsjz+B3S9A95sA66+/vgNq7cHwF+CTAAH3Hb4QGy+asAAAAASUVORK5CYII=', -'small/open.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==', -'small/organism.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU9JREFUeNpiYBhxgJlSA9w87AuUVRQ47t55+ADEZ6KCowSA2AHGYaHAZSBD9gPxByAOpNhAIDAA4gW7dhxMRBYkaKCmlibIJflAHIAkfOHTx68b+fi5FdDVMxEwrB9IrQfii0CseP3adUYQBrIXfvz4tf7L5+8bifYP0LD5QHweiBVwyBcA8X6iXAhSDA2jiUB8H2QwFmULkGOXkJdBYVYITRKOUMNRANDrH7BpZMERCSANB4DUAaiYI5ROAFLxUMseEJVTREVFQbHJAaQ1gfjBm9dvPgDxA6hcPZB6AcQeQAyKHAWg3ExCXhaA0vVIbJg3A6FiG6EunUhsGF6EJpELWMIOZqgCkL2AGANBhtgjhakBEP8H0UgpoB45uxEKwx9AagKQNgDil6DwBLkGiDmB/H5oUvHE5noGaMDiSof+MK9BXQ1KJhuxeZOmACDAAGX+bdXwvJtFAAAAAElFTkSuQmCC', -'small/organism2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDkyRkQxNzY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDkyRkQxNzU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVjYjczZGU4LTE5YzUtNDAxNS05Y2Q5LTk3OWZhZmYwYTFkOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZFMTc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlQ91ycAAAMBSURBVHjajNRrSJNhFAfwd87VwJqGLaMya0mIuA8hFrSiNCK7N6IPBS0NohVFdJOgyKiEmtCFJrVumlLCojBisg8WRUUFI6ZSH1zTLitGtra1trHWWP9H/pOpI3rgx/bq3vOe5znnvLLS0lJp1JoFH9KulWCA3bAUAvy7ORKJtFitVkdFRcXwj7OksesgdMJMXk+B03A+LZhYGhqxMgWshzfQDnL4BFbYlvb7MpgBjv8J+AOOQQiuwB3ePB/OwFQ4Dreh/18BxWHO4XeRmQwmwUnYALO5ZfGAZdyBpFQqRwSUq9Vq8amAmzy/FtgHSW5zHZzgmd6CVsgWRZLL5T1Op3Oew+HQaTSaL/n5+ZFUQHGzHebCIW6xBq7CdD5E7GY/C3EKPstksster7cmEAgUmM3mHdFo1Ccb1TYT4QULIzIqgV383xJYADoYD1thWigUsplMpsrCwkKlSqWKji6KKMQ7VnYFA0vcssjcD78hDBehB4Ea7XZ7rU6n69Vqte9TASfDKtgOEciBn/CNx7AQ9HANjsAvHtNig8HQ0d3dXeJ2u4erLDJ5AIfhKIOJFeTnOEjAH15HueUB0fSJRGLQ5/Nl9fb2FqQCdrLClbCaN4qnFzDAW+iDNljDLB+J84PvCoUiF61TXldX11VfX18tqvyVPRUHH2yBx3yAOE8vdHEEq1nx5zyesy6Xa2VxcXHYaDSea2hoaJRleDm0M6tnLMZGTk/6MNj4u9ZgMHi/ubnZVFVV9Uqv19/LNHpqnqeHjfwQdnI6RFZP4QkbXPSqDuc4gCaXcnJyYqMz3Mw5vgSbOCmiKEa+EEQhLKJdOI57cGSvPR7PIpvNtjaZTOamJkViE7cwSAcnRGTxEW5wakQBVXBAZB2LxWosFstdv99fXlRU1I/3ois7Lbs4e+wlr7VwgRPTxiny8gyXw3pstQ9VlpqamvaGw+Ghm9IDuklilmXcqmjwCeBke11n28SGsojHJRE0Ly9vTMDUymW/1TKYxFfXIAdA4oMGM9wr/RVgAIc88hiXRGe6AAAAAElFTkSuQmCC', -'small/overdue.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowM0JCN0IzNTczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTkwOTk3MDhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTkwOTk2RjhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTY5NTNjYjUtNWVmNy00NWVlLWFjM2YtNDAzYjYwOGZiNmI5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAzQkI3QjM1NzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4ZuOPQAAAppJREFUeNqE1FuIUkEYB/Cjx0wsuygWtBmYdFnRgsroIcxwqYgeil6C3YoSghYqDCKwJSQoKtkKKwgiqQcfNJQyok0qVvZhMaGEluiCBpUUlGGFrpdV+o98xul0jjvwY3Fn5j9zzvlmFFarlZNpNjgE22EJKOEbPIUQPKtUKlw0GuUcDsffSSqJoLlwCjbBWzgPH6EJC2EDnIUcnNZoNHnhZN5oNAp/r4QRqMIRuAUvaPIHeAWPIAG9rVZruFQq5dxu9zuVSvVf4FIafBuOww9OvlXYIyPkfTqdvlYulycQ2t6pUvDoNyEKF0STd8ATFgCX2CYEfQ9tNtuxWCx2I5VK9QgD98AsGJLYTS/U4R70CeZwtVqNCwQC9y0Wy6jf7x+qVqvtTrbifrgILYlAFvaa3u1v+jjt1mw2OZ1Ox3m93nPZbNaZTCZ7WOBu0MBjmffVgNn09ZviRVnpOJ3OPEonF4lE+ljgAfgE5S6BM0ENU+JOtku1Ws0ZDIYxnufXsMBVVBJyrUZhGgqXbAj+jD+LlTSw2iWQvcMZtMvGNON4FvgFFkw3kBbu1ubDLxV9DGuXgd9hPSyHl3KD8P5sjUbjDdvhdZgHy2TGjsMZuAs+cSfOMlcoFNSZTGYj6nGMBebpvB6WCVxLlbANtog7tVotFwqFdtbr9ZrH4xnvVP0V2AWrJQLXUUmxRbeKdxePx+eEw2F/f3//ZbPZPKUQ3IdHaZeb4atgHnsdQWBndZCutHZTKBR8sViM2u32n4lE4iBbQHgfdiaNwl7I0P9LsE9i54tQeyG9Xl/3+XyDLEzqgj0JrEDDkIQ7MAGTnY8JK+i4DuAyGAkGgydcLle92419FR7Q4w9TMU/SOdZSkefpKZ6bTKZ/Jv8RYABxoM9ehi5YsQAAAABJRU5ErkJggg==', -'small/pack.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIlSURBVHjaYvz//z8DNQFAADFS20CAAMIwcMOGDSgCnJycDBISEgxfvnwB4+/fv6OoDwgIYETmAwSgYo5NAAZAKIh+LFTs3M01nU0rsUvAIpDueMX9hpn5iAjMDO5+RkRgZnT3+cxAVVFV17uLiPimrwCCG7hy5cr/zMzMYIMYGSHyINcICQnBLQQZ9PTpU7DBMPDq1Suw+vDwcLAmgABiQfaavLw82DUsLCxgRb9//wZrBlkKswhmAUgOhIWFhRnu3r0LtwAggOAG/vv3D4xBXgABkJdAAKQBZOjr16/B/M+fP4MNBlkCot+9ewfWBwMAAQQ38O/fv5AwACp6+/Yt3Nsw78EMgLFBFmJLIQABBDcQpghmKDyQgeyvX78ycHNzg2mQi9DlkQFAAMEN/PPnD9wVyPTDhw/hrkaXhxkG8x0IAAQQC7LpNjY2DD9//gS7BhTj6AAUVgcOHGBA9hXMAhgACCAmGANkEEgSFJsgw2C2w2iQGMi7MDGYISAapBcGAAIIxYWsrKwoMYbsMj4+PhQ59LCDAYAAgrvw169fWBWBcgrMZSA2yEXIroPphQGAAGJCjhRkkJaWBnZRQkICPNBhiRrZYpChoAQOAwABhJJskOnp06eDXdbW1gbOOaBYBrkQlvCRAbKBAAGEkmw2btwIth3ERnYxKEJA4YuekEEuR/cZQADBDQRlrevXr5NVBvLz88PZAAFE9QIWIICobiBAgAEAJ8MfJdqsPYcAAAAASUVORK5CYII=', -'small/packagehistory.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAddJREFUeNrslD9PwkAUwK+GlQRJmIVIYsGFRTrShIGQkFg3DAmEmUHYBDGtwaGODszgJxBHJmqYoEMLgzCR+g0QPgC+11wRSgXU1Ze8XK/37nfv3x0h//JXYayPUDjE/2BfhI7N0dtougGksA79p2yB6PTbAPWA4r48QFuWkWtlAxpNqREaDGxAna690Pk7tWmAQzEY79BbO/CVbhBBhR3hrkoR9ANUctlX4BQJThRhZOxrNDUIPLct+Z1CJpIkHQX8gU5f7ZPgcbCTSCQwzEeGYYwVMw/VEp3naCq+gNGzKBEEgW+1WgRhbrebzOdzHka+fF0uLhaLPECbNo9Eu3dLYPW2KmYyGYSYP7PZLKnX6+a8clMhs/msAVAjfBq2inNhCzm3BIKhAJt4C+YksiwTLspdYfjYCZBfxSG3phyAxjDUXdLr94R9Ov6g3W6vtQHmjz1hNwy3RbCWQ1pJ0+VCoWAC5Qf513cZizKIx+OEZVmi9lWzyk4CBytYqL0eh8lkoqUv05HvwkLPh8Oh0e12rYdg6tDYT3gpTCBU2q9p2nPtvhYZj8dr+cQWSqVSpWQyqe9wzgCgsbxeAMXuL6qqGhuNR7z30GtwHKf4fD68Kfq+OfwUYACcVLXPhB12eAAAAABJRU5ErkJggg==', -'small/packforshipping.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RTg4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RTc4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmJhZGMyMTcxLWVkMjItNGE4Zi05YzJlLWM1ZDliNzhhOTVjMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjBDODMxRTdFRUIxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIGkRAAAAGTSURBVHja7NO/SwJhGMBxf1wenFHW9WMJDOmHQYSQDTWIDQ0tUn+Bg0RU0NQgYRS0CC1GU1CtgUtN0WBam9DUYj/IIaiGLGiwUq6y78mzFI0NQb3w4b07nve553nvPWulUrH85LD+J/yFCcPhcCOzHfWYgnmfxRYMiVPQj1p8qqBYLFr8fv9JNBp9qAYeMZhVCeySuDGEsIRj9GAOp18Kene5XG2qqvZxnagm1DSt+iKc41AWt6IDq5iBC/vY/NpiJBLpzmQyU9lsttPn813aeFbGJZYxiTW84gxNWMEEGr7bM5vN9pbL5cZDodBRKpXyKtJqjbRtkb1cxCBesI1HzGMPF+beS7zZmerxeA7cbrcRi8WWFKniWhZbpDpzr3axjlnc4AoL8oGs8oEW8/m8hgFFUe7L5bJmdzqdrYZhDOAOGgLQYYUXq9jBKEbgQTtaSqVSs8Ph0EnUWygUvLqu35jHxqwqgGE5JhWpwKzkFhtSudliHM/SRR0JY4lE4imZTA6l0+npYDAY//+X/0LCDwEGAF2AvdgbBikNAAAAAElFTkSuQmCC', -'small/partialuse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RUM4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RUI4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3MDM0QUZCODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3MDM0QUZDODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+h4nltAAAAeJJREFUeNqs1L9rE2EYwPHL3clh0KDSW8xSBzOk0ClQRJAMNUZoF4s6CBFJSc1QOpSiZquC1MlBow6iKbVQEBEhJCSKhlJQMVvBP8CApLQOFhou5le/L7wnSSnkrvrAh+SeI0/ufe99Hk+n01H+Z3gSiUT39SiG8Bw7/X5cr9eVVCqlBAKBvzm9WCza38dwCQP4gbf9CtZqNSWZTPbkdK/XKz7PYhIxXMAVfMTvfkVVVe29xgjiuIltvEZWLtvvdg9FwXM4Ip9Ok/llvMATBN0WfCQLHMczHJX38riPBZxxU9DCO9zBmlzqSXn/K2ZxW740RwW7YxFLeIrTMvdL7q/Ykuv9Cur75LKyyD1x1PAK73EDj3ECD50+oR2fcRenxOGXuUOYwiDm3RYU8R2XcQ0vcRV/MCPONB6IPyEcFxSxgWkcg08eq2GYmEOmUqkc7unlYNDRMdPlEYpCNK4hku12W3RKPp1Ox8Lh8JaTJ7SjiVvI2cXstms0Ghfp51ypVBL7rWimabpphA/YxHm7qzRNU5rNpr9QKESr1eonp0veGxOyNX12Qizfsqxv6gHn6BuM42f38g3DCOhiph0wVuVLWhEDpNVqKWzfFz0SifzLxF8PhUKj5XI5zvRuMP0zuwIMALihevTdQ008AAAAAElFTkSuQmCC', -'small/paste.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAyVDEzOjI3OjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDY6MjItMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQ2OjIyLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjNjM2ZWU2LWUxZmEtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjMxZjA1YjBlLWJmZTctNDViNC04YjgxLTU4OTc3MjM0ZWU5ZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozMWYwNWIwZS1iZmU3LTQ1YjQtOGI4MS01ODk3NzIzNGVlOWU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTEtMDJUMTM6Mjc6MzctMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNTo0NjoyMi0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PhIHZTYAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAOZJREFUeNrclLFtw0AMRZ8CD6AR1P9G3kAbJJpAyQSBJ/AIWSGZwM4E1ga55tfRCN5AaVgEBs4+BSoCszkcP++DR/KzmueZNe2BlW11ws01UFINnIAWSLa3twiryxpKaoE6ro9AZ3sr6Rs4Ap+BJdvnkgzfgrAGzsBL+HfAHngKrAfG0i/v4tEB+JL0G+uB18U1tH0EqkxtlxNKaoDnDNwAg6TJ9lQ6Ng0wZLAPoIuYRXM4ASnjn/6NUurVlBLdfs80bbiv5XCKc1xKWOUWrKQupJcyb1ugtz2WNiWFbrkRU5bhX+1nAIK9QJnwry0CAAAAAElFTkSuQmCC', -'small/pdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBjsgBGZo6ml+R5ICRCp9wIQO16/dv0DsiALmiIBoAJGQiYBLe4HUgVADKITkeWYyPSZA5ROABqeQA0DDZDY84GGKuDyMlEAOViAhu0HUiADH1DiQpwA7sKtaqoO0///Z+gB0qQYMP//fwHV//8NgPoueN+6/YERycD/FDrOEWjgAZQwFDYzZ5AOCmT4/vQpmP/9yVMGThlpuDwrLx/D/YULGGSCglBMuj15Ms50yPB03XqGt6dOgtmqubkYGrCJ4UvYYBcKmZuB2Z+uX2fg09TEqhFm8LuTp+AOIOhCEMBlINEuxOcaEHiybh1GGGItHGgRy47TmZn3Z/7960hSOmRm7gemw4U2//5dwFZ8gVx5gIx8HQjMjgewhaEhCeUhct4+wEArABBgAF8jbESEGlPXAAAAAElFTkSuQmCC', -'small/pendingrequests.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MzBFQkY5ODRCRjExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE3MzBFQkZBODRCRjExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ryxvLAAAAkZJREFUeNqU1E1oE0EUwPHdTXGzIdtDNfGrgoIfGMUaMIIYEZHe4kcQ9OBBvEVQ8KAm0oMGQTyooB48KAFBBGMVoZ5EaPGyogbx4EEDWlH8OKSgwRjbJvU/5QXGJVHz4Eeym5k3O+9N1ozFYkab6MF5bEIdM3BwDddbg2q1mlEsFo1EIvHHxHbRh7k4jobcUytv1BN2epI5MrkXJiYRwQ881sZ+wzasxjh+dkp4DnsxJoOWYxWe+MbWsB45uDiJ1+0SrsELqZVKPg83sAD7YMm2+6UUD/BeaqySv/InDOI0bFzGJ7zDUpzVxjYxgRN4iijuSBm++puitvBQJl3EMUxJTfWYkTm2JDuDZe0S6k/xVur5P/GlXQ31MLV7auX5KEujKtKYRXguYwL/SqjHJSyR47IQN6WBpnwfwXQwGKzrk6y/JAxjMX7Jwn2SeFwa0R8IBKKlUileLpcdPaElDfCHKvoROWtj0tlb2Iyk2rZt21vz+XwhnU57uVxusF6vz648jZUYlaa04qp83vYtNIBD8v1zKBRyG43GQKFQGEkmk4OBSCTi8cMB+a9+QBx3O5RhFy5o17vVX9Y0zbWO4/R4nrdCPeEbHMQQruA7tnQ4g4d99yZaLw/Lsoxqtbqh1WX1QjgltVLbOSoJ/Gc07rtn6QvTJNt/bEZFpxjGHu16p5zX2aCWk5bRXQz7rnvleBnNZtNwXfdltwnv4b52vU69S1WySqUylUqlhrpNqGq9X15dH7GdbUbD4fCzTCazI5vNPvotwADssJjnpcOpnQAAAABJRU5ErkJggg==', -'small/peptide.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMhJREFUeNpiYBjsgBFdQFNL8z6QegDEF4D44vVr1xeQYiALmmEOQEoBikHsA0BMkoFMBOQvkOpldAMd0PgfKQ5DJK8bAHE/1NsfgHgjMeGJ1ctAjQeQvAsyPACI7SkNQ3TvP6TUwA/kRBAjIQXA8BQAUgnQ8PwANXghrvAklGxA4YnsUgFoUCiQmw6RDUIGDyg1kB/NEAFgUCiQFYZYwhQUlgVIQoXAYJlAqgvx5Z4P5HgZGdjjC08WMgxcCHUVLMYvMAwpABBgAMpzMqJsoqujAAAAAElFTkSuQmCC', -'small/pivot.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMVSURBVHjaYvz//z8DNQFAADFS20CAAIIbyM/PD2awsLAw/P37lwEmzsjIyMDGxgamf/z4AdfIw8PD8OXLFzD76NGjDDo6OowgNkAAGsbYBIAohKEb2Lr/HM7iAJZWIgq5i/CLRxJCckMiIuhu7C5mBlWF//jITLj7efbM1IiAqsLM8H4+AcQCsxFoIMOvX78Yenp6wHyg4Qw2NjYMBw8eZODg4GDg5eVleP/+PRjLysqC1dbW1jIALWYQFhaGuxwggJhgjE+fPjFwcXExfP78mcHBwYFh4cKFYBoEgoODGRQVFRnc3d0ZkpKSGIyNjRn6+/vBwQAC3759gxsIEEBwFzIxMYGdDPQuQ3R0NMPXr18ZWFlZwWFqb28PlgMZAAxrhg8fPqBEBNDbcDZAAMHDEBQpoDACevE/MLD/A10M5gNdDA87oCX/X7x48V9JSQlMg8RAYX/48GF4GAIEENyFzMzM4PDZtm0bw549e8Axm5CQwCAlJcXw9u1bsMtA4aalpcUANIhBTU0NrB4EhISE4A4ECCB4GIKSiqCgIAMnJyeDi4sLQ3d3N4OkpCQDMEbBgQ7yuoqKCtgwkOUg74PUgwByEAAEENxAkIY3b96AwxIUcyANsDADGQLyzpUrV8CuAhkIUvvgwQMGdnZ2BuTMARBAcANBkSEiIgJ2KciVsDABAVFRUbABIBoWcdDMAE5eyJECEEBwA0GGgFwGyg3v3r0Du/jx48cMYmJiYJeCLIOFFyhMQWKglACi79y5AzcQIIDgkQIyDJQWZWRkwOkR5FJQOoR5FxbwT58+hac9kDqQHCjiYAAggOAuBNkEcjpIQ2hoKDiWjxw5Ag9LUNg9fPgQrpabmxvsE1BaheVpEAAIIJR0+OrVq/9AA+HpDpYWQWkNJgYMEjANSquwdHju3Dl4OgQIIBZkgy0sLMCBDwo/kFdBLoFFDMjLIDYoT4NcBFMDCltQmMIAQADBDTxw4ADYW6A0BzIUVFiAkgQoRv/9+wdO1KB0B9IMCg5Q8gLJg/I+qPCAAYAAonoBCxBAVDcQIMAAPPvm0EOMlY4AAAAASUVORK5CYII=', -'small/plasmid.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNqsVMFRwzAQNKnAqQDzDC9TAaYC4gpiKkg6IFSAXYFIBTYVyB3gV/JMSnAHyR6sZg5HYMFEMzexc6f1rm5PUXThdTVWMLudxfhJ+XrYbXeHPwMSpEAsEQmiZSoTUMQGUQK8HwUEmLCpubHCpmaQF9Bnss6Rb38EJJhFvKCwxHtCpvcs6YQdch1y8r9BPGjQyYCgISsBW+N5j7imxIo1FjmpE+ZPooZHdCa1QFg+rxEfZHx2vszVfK/58e+SpUikUpYwuxNpvzRN11vUTodFR8XOBNipUCz3Ts1Edc6xkQa8B3i4pY0iOiL2NcWtPgCwdyB6fQKy7amyxmMAYKYMnzgSvqb0NPaNbxJUveXRtLopWrJ4bUm2wtJ4/fUFZsjqjVPT+GzjrFCxsOYmYd0IW9TM1XznPKZXrWZs9GS8FqqbHWWWiDknK9fz/p/LIaXMbPRyGMhfkV2sPOqcUAVfXx7whGcWdMFefJ0EGAD1L6fXSywGXwAAAABJRU5ErkJggg==', -'small/plates.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrsUzFWwkAQDWhhR5q8p91aQkM4gXIDOAHmBDxOADlB4ATEytJ4AkJlaWikhRukpcI/vj+8IdKZwsJ97+dvdv7O7Mzset7/+O1oyKfdac9q8pc2OZnW4GwEuGuz0AKegCGwAnrkGHigZs3gfeDDaBbATgTW4RtZDCk5AwqjKbhWUqOca9CmEYuD5+3nVrlkZHWizhdG88026JV8giCQpjhgjvke/AreMJ0DMAYGwB3wApukviK/AzfArZTEpjwxJyoRPUP3I54sN1nsqInIQ/KymrIPhJyHcOZzzZF91bEcavPMvrOmDNjBosJdbn5kxxMEE4cJsxrbGp5OiKhSx3twTs54LSZMr4e1OTk1/33az17KkbUY0cGSooRdDHlP1zxRRE3MPXtem/hSDW3dHNEy9XKVuqr9xwnjGp5epPewUcNb3pjr9YfHlwADAOz5d1RE9mYCAAAAAElFTkSuQmCC', -'small/playtutorial.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkZTA5ZWJmLTUzNWEtNDJlNi04ZTMwLTA0YzE0ZDg0NzI5YyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEOTRBODUxNDdGNEYxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PveewvAAAAEuSURBVHjaYvz//z8DNQHL2bNnTYE0HxAzk6qZkZGR4cePHwz//v0Dc9nZ2b8wKigogJx4BohfgARJMRBkkJaWFgMvLy+I+//GjRs2jEABkIF2QHyYVBd++/aNYdOmTQy6urpgfkJCwk4mqBwnuWEG8jKSi5mZGKgMCBnoB8TpQMxKLQO1gHgGEB8B4lAi1BNU8BNKmwHxKiA+CMT++JIYqWFoA8QbgHgTNO1iJmwSDfwFxKuhwfCVHANhPvgLxGuBuAeIT+PNekSE4S4gbgTiY0TlZQLyC4F4CjXT4WdyE/YfcnMGBwcHwjAmpv8soAwOBHJALE9qMvr58yfDsWPHGN69ewfOys+fPxdijI+P3wnkvAcVHqQaCCsP//79CzYQ6FoxRmqX2FQvbQACDAAzgVhXMJKjAAAAAABJRU5ErkJggg==', -'small/polymer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPFJREFUeNpiYBgFlAJGZI6mlmYAkDLAom7D9WvXLxCSBzGY0CTWY1GsD8T1RMojXAi0HWTzeaBN6K52AFLzgXghSCMB+QvILgygQhAKILuwAer0A2iKFEBiQJclAtW8B7kClzyIw4ImuQDqdHQAM8QQagAueQwDcQEDoOvwysN8xoJmiz1yjJEAHNCTIEUA6Pr/GF4GCoLCJgGbBmCAN+CTRwbIySYB6mV0EA9NazjlkTksQMUFQNofGnsLQa5B8w7IkH5QGsMjL4Ds5QXQCInH45OF0CyGCyRiy3oJ0CyEDj5A058DPnmgyx8MjfIQIMAAdOZKn6Ho7/IAAAAASUVORK5CYII=', -'small/previous.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTQ4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQUM4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRhYjQxNDkwLTQwMjctNDY2YS05YTY2LTE2YmU4ZGVmZGQyMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMUI4MDNDOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppngo+AAAAHpSURBVHjazJRLSEJBFIZn7rUSS3ohBLkIhBJFcBNEmyCIHusem1AMgoIWghVID4MgooggaB9ERLSToG1uioRIKIjWPXbKLdI09d7+ibl2DTMjFx34EGeOv3P+c2aooiiknCGQMkfZBanb7S41tw74QD2YYgupVIoEAgFitVpzSbpQKFSK2DgYA8zwrLqYSCSI1+vNS9QZDIZiQj1gDryCCVADFvI8E/Jd030jZANLoAWsg0O+3gdi2kS9Xl9UsAnMgG6wD1wgqdmvBl1gi1kIsbjf739BlU/JZDLu8/kuqM3GDkOquNGj4ISf6rHAydkf9gPmE5VlmVosFgpBQzabbY5Gox1M0IPNQV7KGrgqte2sKcFgkDgcjo/vLpdrlZU8y0sZANd/GmpBkHS8ASNgF5yBFXD/zW9qWR94NYooinIkEpHh38dmLBZrVz1k0cAb0gsOwCZ4+yI4CabBHWsopZRIkqSk0+kMPKwym80PWkE12sAyMPPTHmn2FkEj2AEVuCkCboqImyJCkJpMpvNCc3gLhnk354GHf96ASm7LJUuECHE6nbmm/PQ4HPOZOwV7fNBbgaRNUv3LDTZrfZHIgA0+5MyGIbCtHRvMYv5rEw6HfzMZnXy0ntWS7XY7MRqNn4L//sV+F2AAWuKYZ8kkGZcAAAAASUVORK5CYII=', -'small/printbarcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFZSURBVHjaYvz//z8DMtDS1lIAUgoMxIEP165eu4AsABBALFgUJcjIyCSrKKu8xmfSm7dvOK9cufICyHREFgcIIAaQC5GxppZmw5atW/b9JwDevXt3Dqh2P7p+gABiYqAyAAggqhsIEEBUNxAggFiAsSoApA2QxOTv3r3L8v79+/P4NN68efMjkBIA6ndAEr4AEECMwIAFCewn10W8vLwMfHx8DE+fPgVxHQECCO5lYHpCoYkVa2ttY1i3dh1cHiCAWCgNs6nTpjJs2LgBzgcIIIoNvHHjBhjDAEAAUT2WAQKI6gYCBBDFsYwGHAECCBSGF9AyeHxnRye/mZmZCD6dp06delNeUa4IZBYip0OAAMJaOLx48eIQocIBpAZb4QAQQFQPQ4AAwpps6hvqPxoZGq3Dp/Hc+XNsQIoHXRwggLAZeODQoUMMIEwEeIAuABBAjOhVAKUAIMAAJ7nZ02UnmLkAAAAASUVORK5CYII=', -'small/printer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiZEADmlqaCkBKgYE48OH6tesXkAVYsChKAOJ4IH5AwDABkIFA7EjIQBBYCLS5AZ9pQJ84AKl6dHEmBiqDwW8gIzAsQIFrgCQWDwtHAnoNoGoLkcQusEAl9uOIbYKAl5d3Px8fH8PTp09BXEeKvdzW2sawbu06gsmGaDB12lSGDRs3UM/AGzdugPEIToegMLyAlsFBaesiVJzkdIgt0zdAMz4DocIBiPfTxcvYQDwRrpQnNlIOAPFDIhzzkIj8TjkACDAAwyUvNEvm770AAAAASUVORK5CYII=', -'small/product.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MThGQ0Y5ODg4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MThGQ0Y5ODc4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYyQjUyNTNDODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYyQjUyNTNEODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+i8u4UAAAAhtJREFUeNqk1D9IG1EcB/B3Sc6LlphBRCuIQTrICaVUs4iDDtIiCiIEsgTsYukoCg46tASCiIJEhICzEiIuokgHhwwBkyGgDi0dqhJobR3UVmPujHf9PvilnOHlD/qDD9x77+7He+/33kmqqjJB1EMOdFYmstksi8VizOv1/u9zgARm0bt/BX1Vha3Eh9a+5zAAL6pJ6CjRL5EGWIZbep6Go0ozZCVmaEA7XEMADkCtZsnl4hcViEcrHD814SBc0PMX8Ff6ptxgJ/hgltoLNMu31FagplJCvvG98BKGYAt+0pgGm9ADTbANG9BYrspz4Kb+DpgpGr8CGZrhjGbIk5+LEvIX22AY+mGXKi1a0T384cuWZfle9ALfjxU4oev2HX5Qf3EYNBEXPwGZTMYQJZzkVxPe0xn8BqtQKzifdhiHz3a7/TASiYzlcrkHCfkevIZPVdzfG3hHBVpTFGU+nU6/CgaDI9aELXS1LgTXrzhqqAAfqa0HAoGJaDQ6GY/H2wtF4ae/Djy0h9bl3QmKskfVZpqmMZ/P9xVLXvH7/UvJZHKUJ7yEHViED/DbcgK6Yd2SkN/l00Ijn88zl8vFwuFwVNd1NRQKTUkej6cwPgFv6P46qMIKbYdGz32wT8uWDMNg/AftdrtNzPZZIpHolFKplHVJLXSgecXTdN66LD/iW9pHufABrzBPbLPZTKfTeS6Z5qN+zCXjnwADAPdMmHNk5mkAAAAAAElFTkSuQmCC', -'small/progress.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNq0VDtSwzAQdUwaKkLhGqUMDblBwg1yBHKCkBMkPoGTijLcIOlS2j4BoiElpiaFSzp4O/M8s6OxZArQzI488tPbj95uFP3x6nUBRrejqXNUnd5OVQvOyHm/g+wRW+YSwoYKM8C2h5Wwdb8jQAEXBMu6gs0U2RjbDiZ7LWddhEJQIpW1E3VDltNpRNIoDqQrQKmfbasXI9o2kWEZuRN7yMTbC8Eu4YH/poxcMEvYRkh7Hu9yIcWFTeDl94xwAdx16GVzWPYLOc1g37CdPo9bopN00y5CRHVguq/63H1lSaUAuHacrGAfrGeN/wXrLA93FyI02qMSbUXCBV/TKJGbEKGsG0UmOrOIaO5RgmQ08daQkmh6N2ffzj01tEy3DA4HeH5XYr3X9fRodaiHRVvKlv0aIhuwh1N38lw4wIwpi2yekiS5hNnz5/lLYR6wHamGpXceilDpVSKz7IaV6uea3xUjew4O2EYKbgpMbxwarv+6fgQYAHnamFRD9X5cAAAAAElFTkSuQmCC', -'small/project.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E3QkM0NTk4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0E3QkM0NTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjY4OWRlZTc1LTBmYzMtNGQyZi1iZTQ4LTA2NmU1ZTc1OWY0MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMjk5MkVBMzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoCCSZkAAAHsSURBVHjazNQxSBtRGAfw95JLzRFDoSAEHZLS2kIkIA1KCk5uRVALNUMlgUL34mAX6yA2QTJJ1kCW0q1TQCWDWxcTyKBTTCl0sGIggZx6XtFc/L/yvXAELwk2Qx/8yF24+9973333eKvVYoMcDjbgoRSLRXn8DJ4At7lWLKUCP+QfzWaThcNh5nK52hfxQCAgj3dhHM5sAn1wBK/p3GkYhieRSLRisdi5DOXBYNAauAEHNoGT8AnewCyscc71Wq3GQ6GQlslk3vv9fl3pWNIDqusylaApVwfP4QWsw1tYxQwP0+k0z2azK9Fo9EsqlfponeEObMIC3ZwXy7I88Jp44RS+6brO8vk8q9frajKZ/KBp2ivrDG9gjMLeQaOft9poNFgkErnK5XJb8Xjc09k2orIX/9A1muOO1uBdWqdnX1sDReH/UJ0u793YMAMeeAwvqbnnbUKP4WevwD3qwQKMQJkCeUcpnsJvWOr1LddhCExarrjZgCsLg8Ii1AVdA7dhAmq0TDtlCp7r6M/2cDqd1yLwKz19imbqtvEI9iEOD2WI2+3++1upVFi1Wg3LzeEzLMJJH9vdNPwSszZNk4kvzev18lKpNKyqaokXCuJdsFEI9dF/sr6q3EvxPTMRrCiK6fP5vvP/fse+FWAA2SacfAT6ekkAAAAASUVORK5CYII=', -'small/projectdetail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEY4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEU4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjcxODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjcyODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5fxVxAAAA3NJREFUeNqMlF1Ik1EYx1+n+xRtZi0JFSUUkkRyirCxyAtnSTgSDRKjaTqxJWRiGWNdBKJggkp0URfOhIJVI7dQQyolQkMhtqZIanNguAtd0Zzso2n/M86W6bQO/HZ4z875n+c5z0fU1tYWs99QKpXM+Pg4IxAIyGccUIBTwON2u0c7OztNFRUV4f0xzP8PObgLTgIOWeDxeDXt7e3vkpKSNDKZzELWWP9SYbGCW84DEygIiZERHR0du76+fk6lUr0ZGxvLI2tRkVzu6OhINpvN12NiYg7Pzc35cagMwgl7Xer3+4n49NDQkCyiyxCTmUymy2lpaVahUJgDwYT9vGCz2YzL5crr6+sr3Mvl01VVVVd6enoKfT7fBPUiAOx0dlICsO4b5i1YyCwvLxdHFIRAnFqtdqWkpDAOh+Mo2YzxGeSCWdAI7oBPlZWVEswOamkSa+dbtLS0KCYmJsSbm5tOr9dLlt3070zwFKSD26ABHJ+amtJhTqTnf4Tf0OPxMLBKOzw8LIWrlRkZGWbiam5u7rTVapVyuVwBTR0yToTOzc/PF5I3DAQCTHJy8tuwoEajUS4uLmZNTk6Wpqam+kLriYmJD7G5nqTdXgGBN0x8fLyturp6NOiyzWYTDQ4OquRy+RN8+rYfgNgsdTHiIGJra2s+hULRkJ6e/j0oiHBL4P9BnU53o6SkpK+5ufkCXGFvS+xuGojVnWKwcKmmpqZcq9W+DlcKwi3BQZ5UKtXDIhfcLi8uLja1trbWbWxsxNIo3wekGtTgGfiCd1e2tbXloxBMKMM/tYxbhJh+Ibo3kaCcsrKySxKJZLWrq6vRbrdf5PP5RgSon+bhAzBA58dIrb9KjUXDvQrLAiKR6IVYLB7Cd3RRUZFlZGSkLjs7+xosOYZtBnALkKo5BA6QciaptksQ4X6PQ2zc5u3t7a1D/eYsLCywORwOifIs7iLvpwLx4DmoJS9FvNrVTMgPwj0J65bQMc5aLJYzRqPxXlZWlp9GOZxy4BFpKKAU9EfsTuSHhBth74b5XEQLKampR2CERIzkGW1ZCvpufPASfIwkGG5fpFKamppqDQbDVUQVOuyv+fn5zpWVFcbpdMYiC9JImYMPNC+9yABGr9cz2LdbMFTL6GkFAwMDypmZmUx0miMQ3sQFP/H3InhFUyY4Ign+FmAAwneQ60a8FCAAAAAASUVORK5CYII=', -'small/projectdetail2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTI2QTA2Qzk4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTI2QTA2Qzg4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQwRkFDQzk2N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQwRkFDQzk3N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g++K6QAAAqFJREFUeNrklF1IU2EYx9/zMc/cmWuri0G4D+mqlOaUCqGbeSdEXgTiZUhBdJXSXbfLdZurbvrQDBTszlVDRlDQltAkRAO9sCDY5xGmWztnZ1+n/2tnOlPsxrte+G2H9zzPf8/7PP93jKZp5DgXS455HbsgTz8kSeJfz83dLJVKJoPBoLW0tBCy1woDWAVvDxOo1evkhNVKhoeHCcdxfwQTiYQtND/fOTo2FlyKx5Wpycm6sbWVvqKqTjCgC46AXn0/CmYrlQpxud1kaGhoT5A+mM1mydffv/45FrvSZrG4jUajpifawHngp6EgqBd3C5yG4ENRFKv7jkwXBJRX09OD4XD4Ep7f6cl01cF7GgLi4Je+fxfcBtfBswOCNLFYLJ7zer3zy8vLiyx75Lw4/egy6GMYZhq9L++bMvUjRCr4Fv4xyLPgA1gET3meH0kmk7HZmZneXUH0oCAIgorpqhCVjxA7BULgcmMD1ZFatdr7aGIitL625uS6PZ6BSCRydSuXu7gpSa5UKtUuy/IZBF5APKVPz02Ae2DwgJnRnpKitKXSaZE7abM9gAhrFsUfDMtuliuVGsRtCLIg1gzcekW0sgCdLPgEaGtWAPXXEmgXjEYz63Q4PkrZbAcGwcWiUeH7xgaHvjQsw4AsDQbdTZN/Ar7SHoJv4DFQYT8Ds7qyYvX7/S95jktiUrnt7W0GFZOmKTfMnQEucO2w5lKDuzs6YmxnV9eWw+F4k5WkYr5QUBVFUdE/lf5iEz+BXffkoUuRZeLxeJ4z1C6ZTIbk83keQkxkYYEEg0FiMpma4xstwCUn4+BO88tyuUx8Pt/U/UDgxo6x7XY7Zef6pHFcb0/P34K7hYBR8EW/IdZarVawWCwz44HAC+RozP/3B/tbgAEAgE77MuqeX+0AAAAASUVORK5CYII=', -'small/projectdetails2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQTc4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2ODRhNmI3LTk2NzUtNDk0OC04ZmZiLTk0MTJmMGRhZTI4MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMEZBQ0M5MzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtW6bvMAAAIySURBVHjazNQ/aBNxFAfw311yMf9Q6rWlWAUHA2mgDpHEOGStVEuhg6uBnmCkYwntFjt0sKB2KQkZpCp0aQmCmCkq6VIIlApxVWkxgnA6RJs/TXPx++SlnuGQUjL4gw935O733vu9X+4ntdtt0cshix6PngeUYrFY5/4BXIF61zsueAOL3ZMbjYZIJpPC7/cf/WYvFAp0dcM5eATfoWWaNwwTfH8TbvH9ZrVafZJIJP5KYne73Z2l65CDy3ANDA7cDz5YgFFY4WfTVES5XF4KBoMHVj2kpV6HeajAT6jBLizDB5iF1/AWNJvN5kin0/P1+p8u2U0BKUsENiB7jP5flGV5q1Kp3CmVSo5QKHRgtcuHXUmsxll4CjuKouR0XZ/SNK2QzWavUqWdgPu85JrFLpvHKViH27yRAlVKzWYzEo/HX+Xz+REpEAhMcuPHudlfYYsrlfj6HopwF9JWmQzDEF6vN0cB25z1IyjcBge/R7s8yMukv8wLuMEbREV8gwEu4kKr1ZJp8ipcgjOgQh942Gn4QS9DiBPSWIJteEzXcDj8ENcv2HWFKqTsa5yNMtksNooS7vFXo3GfKXiTV9MAJyqsyvxlvOQHMvfNjCZ+hhE4z0mcnNjJc1zYGMnj8TyjCgU/HPrHYWFwpRRgDu6ZHyKYwHJ3MpnMmB3fY6f55WMeKDPwCe7TXwfLFKjseSqVmo1Go7pULBZPelLR0lQErKmq+s7n8x3+Pr7++xP7lwADAH2iqjewvXObAAAAAElFTkSuQmCC', -'small/projectprogress2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATlJREFUeNrsVMFNw0AQPEcuIHTgPMMr6QAqIFQQqADoACqIqCBJBaSDmA6cD/leB5gKYAbNSevVJQjiJyuN1r7zzu7e7DmEf/uLjc/Hj8CCz6VZ3B6JWe/f9qsDZEu4G6DuEMIugMtMzByoEDiBf+Ez0AK3wJ3iaNwPhcn0CXcGMOPQEFauUrbHitgiq/4QMWNGpavmXv7pQOuN/AaISp6+X/mWk+1QRX1MBOyz5RqVRrW80VoY9CByA7KYXvogXNuXQgc8V+kpU8wEvmo98kgQRxHeORn2iEqpOExzlLFKIOGVGaGsDTgGbjRyZN8i4NtrYApw3KZG9WArpD0re2v2UhW1OlhKVZ+ws1ZoqCtX5UL+4QdBolW4c1Pc3ZzosNvfSl70Seb/NjO42SlkfrBbkTWnTPmXAAMAt5Jt80LUQ1oAAAAASUVORK5CYII=', -'small/projects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxOEVFQjNGMjczODMxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOEZDRjk4QzhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOEZDRjk4QjhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NmQwMGNhYTYtMDQxZC00YjlhLWFlZTItOGRlM2YyMDQ5ZjcyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4RUVCM0YyNzM4MzExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Yd8ucQAAAzRJREFUeNqMVF1IU2EYPsdNmBN/2oxIoa2ENpu7UJHA3SlLCKFwEKJtoFkgOhxa+LMxNESzaYxAkiJBaQ7nLmoX3czEkOhKiHJzbEQLmzRjgemcOrf1fGOtuTzSBw+Hc97ve87zvu/zvXQsFqOYVmtr6/TCwoIqOzs7PXQNsO3u7lIWi4WqrKxMBthMZNvb21QgEMhisVgzePUBLOAQuAycZjrHSOh0OvNXVlaCOTk5t/AaTQnJgNvA8+POZTARcjgcPh50JBKJpoXCQBbTOUbCtbW1YolEwquoqKD29/dTQyRt/n8ThsNhSq1WdwwNDfXU1tbO5eXlUVCZusWVwBxwITMzk5lwb2+PVqlUBr/fX261Wm9oNBoT6WTaIh86ADOp4/r6ejkjoU6na2ez2fkmk6lFLBYHqJPXS9RZ193d/dDr9fL+IVxaWhJA1dWmpqae9DSYFiz1jsfjvRoeHr6L7P4Sut3ujLa2NiXUeTo7O2e7uroGXC5XcXxDBmPf4rWFwqnl5WWJXq8vSRJubW2Jg8Egcf9Z/G0K7+7m5uZRhULxaHV19RJSO5aQqJJKpcGqqiqfx+O5lySEiiLIP4TCnyhywcbGRk1paalVKBR+QNdHsOUJUM6kEniPMolSa0iT2wDCX2NjY43YcAZE18fHx2fKysoUUPIGcS0wlbgp6SuUFJf4ECTuB1ER6veMz+d/haHNqOMpmqaJka2AIvFUA7PAlcSNIs25SK5/kjAajTqhwgvshEKhU2azud1utxf39fXVpNXvNdAAPAUaQfRicnJSurm5WYKM5uKpkvFFJsv8/Lx8cHDwJpfLZU9MTOgFAsEXbGIZDIbw4uIihe/HldCKBn5GvXlGo/EOvBuLK8REoZRK5VuRSHQgk8l+aLXa+z6frwAbwifMSw3gR5nOwXIWQnbE2OjSQW9v76jD4RBWV1f7+vv7HwMNUM9DaqlEZJoaARGGBqe+vt6BO2//E6TTFaB2Uph0AETfYKes3NzcAwxadsLgZHSR8f0dOI97/tFmsz2AF2OM00Yul3+anp5uqaur8xUWFkbQMC5+SubXDkmEWI9UKeHNETTyiKLfAgwA/RJmmB4ORZwAAAAASUVORK5CYII=', -'small/properties.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVHjaYvz//z8DNQFAADFS20CAAKK6gQABBDeQkZERLggU+79s2TIGNjY2BjU1NYbbt28zvH79Giz3/ft3MP38+XMGKysrMPv9+/cMiYmJYAMAAogFqy1AsG3btv/KysoMPT09DK2trXC5nz9/Mvz48YPhyZMnDEA1DJKSkgw6OjpweYAAYsLldD09PYbe3l6GtrY2ho0bN6IYBsJcXFwMfn5+DLy8vGDDYQAggOAunD17NjwwbWxsGPbv389QU1PDMGfOHIaUlBSGsLAwhlmzZoEN/fbtG8Pv378ZPn36xPD27VsUhwAEEBNSuDGoq6szJCUlMZw5c4bB3t6eoaWlhcHNzY2hqKiIYdWqVQyZmZkM9+/fZ7h69SrDrVu3wC5/8OABioEAAYQShhoaGgygyDAwMGBobm4G0zNmzGBIS0tjSE1NZZg0aRKDl5cXXL2trS0DNzc3w8ePH+FiAAEEdhkInzp1ChS5/x8/fvy/tLT0PzBcwPyTJ0/+Bxr2f/Pmzf8VFBT+x8bG/p82bRo8eKZMmfI/KirqP8wcgADCMPDv379gDAMg9urVq/8DXfn/+vXr/4Gu+Q+MDIzECzMHIIBY8CVSoGFgRd7e3uCwhKVZfJkBIIAwDASlLZAGX19fMBspbYLFHR0dUTIBOgAIIAwDYYEOcp2npyc4zf379w8sxsrKCjcYFwAIIAwDt27dCjd4x44dGJpB4vhcCBBA8MC8cOECOBKArgFHxJ8/f+AYmH/BkQHD+CIFIIDghQMoqdy5cwdFAcx76C4CBcGmTZsY0Q0EAYAAonrxBRBAVDcQIICobiBAgAEAz2h+Z3eyQxgAAAAASUVORK5CYII=', -'small/protein.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAipJREFUeNrsVD1TGlEUvcmEhnF3qLNxxhkoMJUNdhiSLdDGgKMlfrUWamFmTKP5CRamjZFmY5hhU1AiNjRskYUiSycFbMOgzO4PwHteeJsF2lSZ3OrumXvPPfe895bof/z78Wzx9eJuNpvdwUez2bRrt7Vjxs6XU8tnwJy2Q77vv+V0mMvlfmqaRlbDoobVAGYnEolyPB6nx4dHYF8JzaNxHB0f1UBy8uHkHt/dbneU38iPuCaz8mbli+d5ok5iEOM4jsBOP54CO38+LRlFW5tbC8jNHyZtF7aRxtZW13YVRSHLsiiZTIradDp9hpw3IFVRBTZDyCvspFIpkfd6PcKKHIeFQkFg1WqV9Hc60gwPEYPLZpnYjllCXmlpf28/I9SZJuVzeYHrup4BMQYgVFWl+Vfzh5Kk3W4HqicIo9FojJt/K7mtEpSCZLy2sEAqXX+/HpOK+QADjoAQPmgvNZI+jdfCydG0BSCRQzBYKp0gvC5eB9PhCRqxipwOC4BhMAKDMcDtuRNn8Eeh55P0iZttSSItML4ZHbmiVHT5+ZLmlDl7hjDcCJ84LviAAiWwoNVqfZIWyKtSr9evIpHIcIYw7JNhGGDsFIvFwIJKpYImEy9EWgBb+v3+xfS1eyGuAV9KqADxYDAQRZ7vkeu6wseb7zdXzi9nCLUH2oGoLZVKd4zZGIDv8FvG5VyQABfdMYYrsRQabIMQzy2EdRjrMIa6mMT++t/mSYABAMjpI4kziGlnAAAAAElFTkSuQmCC', -'small/protocol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpiYBjsgBGZo6mlaQCkBAjoeXD92vUHBA0EGtYPpAJAGnCoNYDSIAsDgYZuwKaIBYmdAMQgRQ9xGOgAxIZQg/OhajEAExL7AxAr4PFqI1TNA3zhgezChSAC6JUGfBqAQaNArIHIGhJwqD9AKJaZqJ1sWLCIfcDiEnhSAfrAgVQDQV6uRxMDhe8CslwIdMkFIOVINS9DvbQfllQIxToxLjyAniVJAXSJZWKAAjBoYEFxAOorilwIK5H8oXkcpwvjgTbbE2mgPzSJbcBVfCkQKBywgQtA736gaYkNEGAAzbE5tdbgAwYAAAAASUVORK5CYII=', -'small/query.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrMVMtNw0AQNZbvMRWQazglFQQqwKmAuAKggogKoAM7FcRUkHTA+kKu7gCXwHvorTSsvCYgITHSk+2dmTffdZL8dzmLKWaXszUeN8AVkBvVAdge3471SYQgovMOmAKPJIBzZ3QFcCv9CjoXJZTDHqDRA4x7nM1F0gONIb/HYwNcW9I0SLACOhiUIiPRKzABlnzHGTNLoH9WBTtLkJrspupXafS5MiVW+l57pUgTBf6UzDgX6ldvHGoTsDJDsbIF2JYmLJnR28jEKwXkEA5ja2MJmdlFxI5l1iBrBnSTGCEjF5p0KGz+SyRY4cv9QqjRO61CKBsNbKgVnV2bLLAptRqtHQjeh/b1SdktvrspnNgeJOfBWS4s1VNmVfpFH73LIHj3N0BlsVzv6HSX3ZBvFmk0BzQH2Z12bGH3c0xihK161CnT/tTfVzqS4Y/Jxgjdb8j+RD4EGABg/JdlqbF6EwAAAABJRU5ErkJggg==', -'small/receive.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM1JREFUeNpiYBgFo2AUEAaMIEJTSzMBSNUD8QMkOQMg/gDECkDceP3a9QZiDGSC0iBNC4FYAEnuAxQ3ArE+0NL1yBqBfAUgxrCEBUpfAOJ8IN6I7BKghv1ASh7JpSAxAahvCkA+AvJhyh8A9S5gQXINNgAKgodIFgQAqflIPlGAGg4CB4B4AROBIHkIcjHU1Q+hmibicQDcy0QBoMEggxqALl0ApPtBLgWKOeIKQ5A39Ik0GBQUgaCIwZpskMKoAC2mUcITFOhDP6cABBgA6tQ+fjF0IXYAAAAASUVORK5CYII=', -'small/redo.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjQ5OjAxLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6MTktMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjE5LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjdhMDM4MTFmLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk1ZWMzMDIwLWRjNTAtNDZmOS1iMDc0LWJkN2IxMzBlMjNiNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5NWVjMzAyMC1kYzUwLTQ2ZjktYjA3NC1iZDdiMTMwZTIzYjY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6NDk6MDEtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OToxOS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnRK6F8AAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAATdJREFUeNrElMFRwmAUhD8c76aE3PdCB0oFaAVCBZAKMBUIFaAViBWAHeSyZymBDvDywvxGIKLMsDO5/HnZvN19/+tst1vOiSvOjJMIJQ0kjY/VdE6RLGkJdIEKGNpe/5pQUgaMgX6Q1CiBG2AAlLanrYSS7oE5sAJegZXtTaPmLmoWtov6/PoI2dD2Is5ySXWX65BaxQ/T7r8Thsw5UNheBMlz4lsXKCWtEwXDg4ThS2X7RVIOLIGZ7V4SyihqdwqOEfbDM4BJ+POUvP+ITsumpwc9BOpRyCPRHRrkl7kpm+isljf6L+F7eAcwBXJJb8nItOLHYEv6jGSnMUaTSD/b833P9qotlAdgKSmLEIp49t3r9pRtV5J6wFzSIzCLUWkiO3nbSBoAt0lQTRS2qz+vr4ts7K8BAGgkhkLbhmsAAAAAAElFTkSuQmCC', -'small/refresh.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACSUlEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCAWZM7nz58ZGBkZGUDB8PXrV6aDBw+mnT9/vuTRo0fyIHl5efmHampqqz09Pat5eHj+gdQtWrRocXZ2dizMDIAAYkQOwy9fvoANO3nypNXKlSt3AQ1lB1kAAiBxGJuLi+tnWFiY282bNzOPHz8esXTpUlaYGQABhGIgyIUnTpywWrBgwUGQuJWV1QoXF5ccaWnpjyD5J0+e8O/du3fKsWPHImA+AdHIBgIEEIqXQd5ctWrVLhA7KSnJ3sLC4hjMQpBGGRmZj/Hx8bFv377VBrpOF1sYAgQQSqQcOHAg7du3b+wgl4EMgxkE8zIILFy4cDHIMJA4TA4ZAAQQioEXLlwoBdHOzs45IAPQ0ygoAkBhhmwQuhqAAEIJw6ioqN8gxTNmzGBFdx0218DEgTEOFwMIIBQXwjQhGwSzENliXOIgABBAKAbKyso+Ail4/PgxPzZLkDUDw5oJ6JOdW7duzUA2AyCAUAw0NDTsBtGgpIHuRXSXrFmzZiEw0Tu9efPGGlkcIIBQDHRwcJgFTLS/QAEPSo/YDAIBkBwsLfr4+KQgywEEEIqBQMP+RUREuILY8+fPPwiM1QWgxAyTv337tjRIDCQH4icmJtoLCwv/RDYDIIAwcgoIXLx4UROYW84Aw4kN3XUgV3Fycv4KDw93tbS0BCd8Xl5euDxAAGE1EJZroIVDKTCS5ECGACPtpoaGxixo0PyDRRSygQABxEjtAhYggKheHgIEENUNBAgwACVHK8TrKNSjAAAAAElFTkSuQmCC', -'small/register.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXtJREFUeNrUVDFygzAQVDx5QJ4AHSYNLuI2yQsSvyDwA9zRMXR09g9wXpAvkNYp4iaYzjyBJ+SWWWk0cjCTLtHMjYSk29vbO6TUXx9XP23Ow7knkzfh2x2bY+duXo9cfuPcj5zfcF5MAgq7FA4S3ed3ZAEYVrJ/EovlezeaslyA40lsRXYbsQcnZi2WUBJk4guoyWTmXM7pgPEJsOXdUjVfzWBYMwDOwPQgltoAM4tdxMPC0lBd0LAi05xFPNNwQ7BBM7JRQRCYC/Z6/7HXUmzpuzIaSoRnbi7IMkeKl0Z4GyqC1Fp30bLWKUesYP/LPvbo0xHDpAzaL2Q6gMZxbNLMsmxYl2Wp2ra1AQ/0gaY7A4goclAw7UfMotEZHYBZ+7rKqHihszNVZoPiUkzGU2NNvTu7ud0/RbeMz+8UjFgAZf2Oa7KrmNH44yCpV2ScsL/A+J5A79CKEiFwj3tTgB51SS48Dh719t3OGHu+oM3ThIav7sPwP8a3AAMAbXqWfZoiCI0AAAAASUVORK5CYII=', -'small/relationship.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNrklNENgkAMhpH4zo3ACGwgG8gIbCBO4G2gTuAI6ATiBOgE6ATgBNiS/5KzHnhPvtjkj1q/a3v9CUHwdzETvzVpQepIe3xmpIikSA/SEewGuQtpB/YttqSalJIKUk8qUTCFMuR6MCnOHFzTMhSLBtrBaVFA4ewQoYA7z1V5cdz1TEpIOanFlWTEmCgHW+LcEHMHzH/eJyZRyK/wXVlGfRiirBwvvRG5GJPnokED/g2KHdOUwpgDmstIUEOZ6bYjezWg7aYaYbl5EeLQaQS6WgWYqyYcvjEbWt19wovTGNcFG2NMsalHqTZmKSy7d6jGVU1kaCC5dsKHoUFtPwaOyFE4+fa2sYtywSWMeCIf4cps1tpl0Mxjx3Jn1U9fsC8BBgCAwVC5hcjLwAAAAABJRU5ErkJggg==', -'small/reminder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNrElDFOw0AQRePAAZzCNaYjVOYE8RHgBPgIoUtHTYWoKJOSjtzATpkKaAhdSImIFJd08AaNJbPYq92AlJG+xprd+Tvemb+dzi6sf9xPwdBl754DWYx7AEdRFK3W7+uXrQkhu8bdgQKUYARpCOYQfzTl7FvIxrgE9BbPi1JjIS7XLRdNeUELWaKJhxVZbU1Il+CEtVczt9tS4DmYmGRiGpuCrCmxjVAqnFmuV9YGPoQpeLQQyq+GPnP3ue2ertkMkHscnOuc/iZkIdPOzrj4wIGvp3e51NwfJ2Vgo+PiK8tEc7N6UALpH7W+sXXZ18qq699aRptvuHt8DJ7QaelYmeh6xOctuCKvCIxX5RKc6onyIKzU1y1WDHReRTU3NLKwaTlVtRyAoQ55NcjVQRIrTHkGDr811kqkqjMIpv/xYifmALfZlwADANrWbfLoYoFGAAAAAElFTkSuQmCC', -'small/reminders.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNrEVMsRgjAUFMYCoALxqCesQErQCqQErUCpQK0AS7ADsANPclQr0A5038wyAxFCogczs5OZl7zNy75Pr/ePNRqPImBpctcxIAuwXYEbsCouxfFrQpBtsUlkOU0RsAMSED+bfPoashRbCPilM2wetoxXVsYRwjGk41CNhKQiwQRnN9XXbQlwARyavkWb6Bg3ObYRSoQnjbxyNrUhFPHPGkL5qmdTd69v77hqMoDM4uGMdfpJiIOYmT1BeMeAz6eWV/rWXoqBB8vFti1D+sZVoxiiH3v9ocuy7XqWWXcrbSQCp6rIHZF5wIbaJ7XWI9EamPFFGQj3ymAoV0BMWa/SNXskMtf1csRuGXDanCuFXD4ktlxtT5N5mDISiWreNQ9tSsNI27cAAwAHVWSC59xGrgAAAABJRU5ErkJggg==', -'small/removeannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbxJREFUeNrMVKFSw0AQDRRRFDGdqQyymAZXR/iCFIdMPqFfQOtwAYdrUQyq4KjLJwRDB0XQdIZIcLzXeVeumSYgENzMm0329nZv973Ecf54bdVtdg46AUxguXIgnT/N86ozjYpEUavVmuKxrySf2joCrrDnAY+Lt0VRe0MkcmHGSnSCm9xtKMaYMyAC4nJMOSFv5QEZLYKPa8YRqfgh4jLj3y4F+ACTDAAXvqQqIZJMFDetqviipObdB96B/g/ErZ1rmMMwp6gak1kMvCCTsCQjgZ0BH0APROTmDN6beHwFQvhv7ZYpjRRBnkUKVxco5FvOTDFcichJbWmZhK4qMRFZC+X3DUE6zL2+OmIhX5p011rG1VlhT5WegZ7abUuHhZI3lbwtH8/usghaHtk3zJRsgIpDalA+6oxMXsrHpNeE/LFut5LNjmwq+gtJIi9JJBURA81uX/4Cvq7Of8+QGzATBTs12rvQHKeWOiJ1sC5siTSwNVWxbNGT/ZHd0erngKFSZzM83nDQeE83ZVMcCTsHHjTL6t+X2hhr2Gwl4wylP1+SinSz4a//h/rkQrHvWeTdc451/8T/vb4EGAAgQ7tFhdCRHQAAAABJRU5ErkJggg==', -'small/removechain.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNrMlMttwkAQhtcoBVCCOZITdOB0QCowqSChAkgFhApiKiCpAJ/tg32KcwtUgEUKcP6x/kXLhjWypUgZaTTa17fz2lXqv4vX9eDwdjiFCaE76Kr4KHKZ73WEvcI8QtfQPXSLuZGs3XSEyeE7eFVyTuwGOvBagPriCYcnmLFeYc5rE/JSw6C+BQtgyrY5lCLcQyfQDJAnAybhzlpVGQcPMBFUQDk9Fbjk9AHhRleLokNhS+SESWgr6Jxen2BOD9kCGw77hPiOe2NJhS5SzwHbslkHsG8NMJHAqP450IDNAHthz02ZuyYZYe/kl2eSeD4pPa4IrfssDMPKliRJKu5b2EWRJD/rBEshsGlMW0OP30eVpumZI8VncflzwKGMocaOp1YyXy6pLzc93PH3iI2nttTvloXJHLBI/zae9Va/CFwzBcr6BALjEqV7EuuLi31I6JwH3qXSDR+Fr736U/kRYACTjKj1Xd6tugAAAABJRU5ErkJggg==', -'small/rename.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNpiYBgFlAJGUjVoamk6ACl/IG4E4gIgfnD92vUFFLkCaKgAEJ8H4gSqeQ1o2H5s4ixACQUgrUCieR+ghhoAKQEk8QcsQALk7HgQhwQDL0BpkD4DKBvkqIUsUM5CqIGEXHoAGAEHYF4GsguRgqAB7GUkxSDbHIhw3QF8kkzUTodUN5AFS0DjAwQjjhEamPZAfJAEhzyAhnkjUriDzWAhFMgkgIMUmQXNegLUKBwUoJnhA7SQKASmxwuUxvICoCETgHQgzctDgAADAKWHMhBMlz9fAAAAAElFTkSuQmCC', -'small/request.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNkQ4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNkM4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE2QjI2MTFFODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE2QjI2MTFGODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hHGqHwAAAlZJREFUeNqMlctrE1EUxu+dh2SkGGtIoVgFH4khJe0sDEFQgsWFIkhXgcZ1Vm6yMG66kSAB/4FCd+PCoHGhKBV1J0HpMtKCigsfpaErSUITEucRvxvOtOnQZnLgR+Zx7zffPfecGx6Px9mIuAHuAcXz3AEvO52OUalUWDKZ3HuhsNGxAJrg09BYGyTAIjC8E/wEJbAGXnieXwP3xUUgEDjwQg6Hw9fxexZcIi7S/Qy4BX6ADY/gBeHQcZytRqMRiUajf0KhkHDOOHLYp0HfwRYIg1lgCQPgNnjrEdTBOud8vdVqzciy/MswjMV0Or0r0YBN0AGPaPADyp342By46uGKeGdZ1lomk5lLpVLbuVzuQ7VanXId3gTToET5Esm+C5Yoz7LHoVjev263q2GHl/P5/EahUFhtNpuWK3gHvAHnwFMwD76QQ37EhvWxZN5utycgzDRN21UURXd32Z30k9wt0YbIo0pACBWLRRaLxQauS6XSk8PK5jgwxXifkmK2bTNd11kikRjcB4NBWzpiLGdjhmma++3jOFwZc95pcr5DeRblpaJcVJTNtli6W+DjChbBBNXlX/BedAtEnHK5vFqv1zez2exea/mFWP4pcAacpNxOAg3Ojqmqet7N4bDDvo/oM9Cjw2KHSuoENmUBLff7MEFzhJj42HO6fjX0/DN4DDHZe5p8pQ6ZH9PtgYhEIrZXUJyOr8E7kBMtRQfDWIGd3heTJFssuQ0ego9gBUyBb/QhX7FarTboGBHo5Wnu+QuYpOVfJqe+Bd7r9QYdI1KFMlL/CzAALlC6L9WzNAsAAAAASUVORK5CYII=', -'small/resetsearch.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYtJREFUeNrEVM1Kw0AQjkHw4GU9eE+P9RTvQpMnMHmC6hOEnAVJfYHWJ7C5C3oSPJmCV2mDYq9RRDyVVKiCP+A3MgtL3E2xB10YJsnOft98M5O1rL9Y+5dtAesucnZJA5bARTAB88+Ta+f58XUbz4ESVsBSWG98Oy6NgAAbwrlVkqebaZEf33cAXPAnIvCYNAToyATowB1R8PvLp/U2+yhX11cEb9Mh/2Ar/c6oudEk4jZsB9aQmdoqIIILmP9wNelN7mbl2V6+SyAskQBOZCxndchEXWMNmZ0OEmNMzJz5UNYVpJkSGzDRGsXahmZRfQZSBmUO11f21EUxmay9CVCwTHXl7Ft1Y7Ncsycq76dMUi4CSBJaqE+myJbSdMSuVGSSnPIgu3XZgNDhmRyB2AyITdmACIe8GrCI5zCeNzaU2QXLIZmDilzBmQU8Wv15gLpfsFA673GTOupvp20KwBIN2Gal82H1UqjrcnXOfmRRt3RNiZVZo7FJfnMf2poOUzYNvhRC67/XlwADANRPoC6nHryOAAAAAElFTkSuQmCC', -'small/return.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCQ0U4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCQ0Q4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVlNDY2NzVlLTM1YzUtNGExZi1hMjZhLTk0ZGViZjgxN2YyOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDlCNjc0NDdFOTkxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiajKLcAAAHbSURBVHjazJS/S0JRFMevvyAsp0SQBAcdHr6kqSGCloZ+LLnUFlJE0CA4RdIgLf2ChiKMWvoLgpAIiiJsaHjUHBRBU+TLxArUh+jre+Rqz4eWgkMHPjx4777vPed8z70GVVVZO8PI2hxtFzQEg8Fm1glgkycwA97opaIoLBqNMkEQqgvNiUTiL7FFMAcOwCQYBMf0IZvNsnA4XLPYbLVaGwn1gj1QAhPgHniBU7tI/7+5XhvAEi9tH2xpvn2BIS7egTBFIhGTxWJxut1uYygUOjL4fD6tWB/PKgcWwINus3GwQu2jjUsIj8ejIMuPdDrdmUwmSxVBavYymAa7YKcZp6iH8Xic+f1+VigUWCAQuKaS+8EqKIIx8NTKmOTz+fITZTOHwyFTZhI4B6OtitWJdxK8BSM8u5YDxpSfVLIsy3bqIZU9xectA9bAWYP/ae0AcIEueOKCKT0wpRum2GGKqnXZwgeY3JXBOrjQCYrgEtyBFARfIJhC/z4xNhmMzY1+bMpVgFkwD17BBrjSCNIEDOtd/u1yINtivLQTsA1O+ZF75pV49S5Xe0K7NIgcn8lDnm2MjxYppCoZouzaYyZJUrOG2vixe6ycoGKxyERRZDab7Ufw39/Y3wIMAHQPmgiAphc/AAAAAElFTkSuQmCC', -'small/right.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpiYBgFQw9oamkaAHECseqZiFAjAMTzgYaeB2IHahgIAwZAvB9o6HogVsCliBHJa/1QTdhciC7+AYgnAvGE69euf8Bl4H4g5UBiED8A4kagoQvI8TI2oAAN3/2wYGCiQkIAefkg0JUg1zKwUGgYyKuFyOGIbOBCkE1YNMkDMXo6PAANuwM4YxlPwgZF1H5ckYAOWEgIJ6zJhBwDLwCxISzQRwEGAAgwAK8HNpBUnvJaAAAAAElFTkSuQmCC', -'small/rna.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATRJREFUeNrMVDFOw0AQNIQiruLGEl3chip5ge0uHU9wXFIRXoDygihlyvwgLqlwXhBXuDUdEpFiOkpmpQFtcRHeFIiRxnc623NzO3fnef8dF67B0c0oQDMH4/qlTi2Clw6xBM0zOAA3VodXytEerMCAQvfgzirYk8fh/fAZhuErujNwDE7BLehj3ANb+easGsKtCEYUjsGEr2SCB9S0MYdC4RmXvQAzTiJMIVp1DkVBnBTgI2v6HdDSlLJCxqRzOh2CK1WC06G4gBAKhOHT0ZpByQ64xvgT3r+ZBAX4UZL16VDc9cUhanh3zpI9JqqXHXGv2lN2HMWAAbXgBydacOLWJKiEj+yuVHA5BMtOS3ac8VbtS8FEi/2c5Y5IWMNbbu7m5OXQESJQ/nadWQS3FP1bfAkwABjJWe3VXXMTAAAAAElFTkSuQmCC', -'small/save.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBhxgBHG0NTSFABSBWSaM+H6tesfQAwmJMEEIPYnwzB9IJ4P47AgSYBcuBFoUwPUteeBWAGPQYFAtRuAah2A7HqYIBMOxQZA/AGogRGGQXwgLgTiB0C8AIjzsWlkIsFrIFdvgBqME7DgEL8A8i7QO//RxO8j+SCQFAMZcGlAAg9IMXA+NEI+4PE+CCsSayBIcSEwMg7gch6W4CA5UogCowZSDpBjGZRE/KF5ExTL/UA2vmTzAao2Hjl5McMYoqKiN4CUBRAHAPEPKMYFQHIvgNgBym988/rNC5oUsAABBgD9fztxPZ/YRQAAAABJRU5ErkJggg==', -'small/scan.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==', -'small/scatterplot.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=', -'small/search.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrMVNENgjAQFcIAHUE+8QsnQCcAJlAnIGyAG+gE6gSygTCBfMkvIziC75Jr0tS2aDTRS14aruX1Xu+1k8m/hze2IJpFGYYVkCnpATgBu/7W318mBNkBwwKogRaQP6ecF0AO0m6UUCErgUavBPMxV74GQjnvWciI6AxssLB2bDrFQBsPWLehnG9ZW7DMxnUkIKGz3FOVIBcuQqqw1WVa4s4bxy5CwZ18O3zHnPgmIUlI5LmMhGC5g4vwxEaOR3w6ZU923CAzISaPsttsIRtZwT4sncZm015YTsO3pNFkpqyiVAqwEl4Ncgel8/I6btVrRxEYyCoD2VzrfG7zaGDIJdr3UxXv2qZUXhV6FKqPfMjVhMCSpP38xX4IMADIQ2O+fdKktwAAAABJRU5ErkJggg==', -'small/searchstructure.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrMVMFtAjEQNIgCnA6OJ3ndVQCpAKgAqCC5DqADUkFCBUcqyFFB8grPXAmUkBlpLFnG9pFXstLI8t56dva8a2P+uw36Aib3kwWWFbDw3B1wAPbnr/PlZkKQvWCZAUfgBLjDc/ktsATpZy+hR1YDPFBwdYrwvZTyNTB2/kGCjEQNsEHgEfsmKJn2oNKZuEPcJkfYqDyqo5L3SBjVVvrHjL+jymGi4pn+mZGCmJUgWytxq8QmRWhVTiGkbBU6hplgq9trMzFvtxKSZIqSqHSXikHCvaopVVGS8KBbLXGoTaiskbBQT/KCur4+/Fb/PYvU+Qup4mU8Ak9A5Zo71TauVazUnQKVVspYRQ2y1+ykgPDDtUEwv53XVhzHnT92tFGEbBshqzxlRvN7iYkZRXzTYH+lImexW669V4Wtsf3Ne3hFKDVjDf/yz1/sHwEGAIXFfjZSagb1AAAAAElFTkSuQmCC', -'small/setsignalsequence.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCRDI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCRDE4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjcwODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjZFODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+maj/NQAAAbNJREFUeNqs1UFIwmAYBuB/04EIHgqCDhZ2E3bsIEHhRShYFBgEHUoIu0g3gyRiHrpGdBqUtpsdIgYtAvHSoUOwU7AOsVJGpyCEvCwV1N7JqKh0W/jDw3D/fHHb931SnU6HDHLRZMCLSiQSdtdEwbxoFDTIw7250Wg0SDabJeFw+CswFAr1C9uCdTiGR5iEFdgG2TAMIssyiUQin1/w+v3+XmGzsGEddevcFVzDEdzBM03Tjp4hA7z1S/QfezdQhLSblzIPdbjosS/ADIw4DVyDAvSqqSfzdmHOSeAEjMOlzduXIM4wjG0gBw/wahNYgqCu62P9AilYgHMHNfwCFUmS5vsFsjBklYbt8vl8p6qqLpXLZapX4CrcwpujvqXpUrVaDYiiOP1X4LBVxDkXrfvu8XgKuO10pVL5Fbhp9ajqNK3dbpNUKpXHxArmcjmu23rfnp3Zo4tuJku9XifxeNzAcVcQhAOO4xQzcAoOYd+aJq5WrVYjmUymiPKJJpNJ0YuJsYzzZ3DiNsycNs1mk5jFzfP8TiwW26MURfn3MG21WoRlWRIIBLqfNU0j1KD/Aj4EGACuJYfgvqMnEgAAAABJRU5ErkJggg==', -'small/sharedrecipes.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNq8lMFNw0AQRb3IBdBBzDGcXIJ9gSNxB04FxKIAkgIQooKkg3BCSi64A3wiRwwVpAT+l/5KK8se4wsjjSa78b79Mzu7UWTY7fEhiSbahQFbIXwhPluA+fU8g68ZTSDsTvHSgJUIe/iMkdB4QN0WoYXn8MaAUX1++jw1GHPj1AUQThDEutWHm6dqRFkI8+MiVJjCF/pdGLA1wn0AI4jAAuO6q5B/nuGZUuVc69Vi8Vab5irJXt8QxnHkjFMuVYIIQCdYKvWEvMNf4RVgZ7/OjfQhId8/q7eZYLkUcn4J0K67xo01akfZo0+Z9ev7PjZAPi3aUvVialdhiiYQkIUOJtFiFnoj8A6gaiwj19NbhNRKzd+Sqq9egwoBS8NGDVIuNVdPfRwIe+kU2tepnfLaxFKSDdyO1jfsn4E6gNafHDZIwvaY+h46QT46d5oHsJmqLmybXCBaY/XZv9uvAAMAoTuReOrsCY0AAAAASUVORK5CYII=', -'small/sharedtemplates.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNpiYBgRwH1XsQKMzUQFwwqA1H0g3U8VA4HAH0oLgAgWEKGppbmfREMUrl+7rgh01Xwg+wEQOwLxBbiBUAASMCBkEjMPG4NYnuUHOTGv80DugZ1uvYXI8sgGGgBtdSRkoHGU035WMW6YxYHo8oxIXibehTkWDKwSPCD1DlB9oPB7AHItCwH9IO/0Iwv8/fLrwvOOQx+BvmmAxnICkJoPU4/Ty0BXN8BiDk0c5JuDMD7QVQuAhtoDmQ/Rw5BsADQ0kWoJGx2MQANRIgUtC4JKkAOg2Ccla+JzISiP1sPyKBqIH7qFLUCAAQAD+0YnNrcLcAAAAABJRU5ErkJggg==', -'small/ship.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNrslDEOgkAQRREsKDkCdpaUduoJ9AZwBU+gNzCeAC2tPILYaaWlndhpBXZ0+if5JJtViYI2xkledoGZv8PfBcP4x+9HDQTAL1E7A1P9Zh24IGbCq+GzzngkKHEE0RuCnWcPzE97WEVwCK4k0F+5TOS+t1U/zYqCI7ACad6l3qEHHCbHNN/lhsUFwpLTAztVMKRATOGIo1yPQVcKlHyH9x12OJDjZFFEfOjzoNpKd2uQsaAJLuxGzmELzDmeQENqLeWLybvJKCor7zm3mbdR8lPOM3IGE9WLJThwTDjf0oqEC+p+h9yYBRu4i4AJnnbtFuy299W/zU2AAQBLfDh6cMxs6gAAAABJRU5ErkJggg==', -'small/shoppingcart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQZJREFUeNpiYBgFgw4wgghNLU0HIOVAot4DQOwPZX8E4gfXr11fwAQVEADiehIMiwdiBSAugBqGCYCuvA/EBsSYBlS3H+QrIP6PLseExN4AxPlEutAA6sIH+AycCMQBRBooADUMt4HAAAUrAHojgYB3FaBMEP0BnwtBYCFSzOECCtAYBtEXCRm4AORtoCsEiPA2P850iOal9USE5QRoxDQCg+oAsgQLmmEO0MiZSIQLsWYEFjR+PTQGYekRFOgXsIShAlLyOUDIyyCb+4G4EIj3A73EiCbfAKTkgfggKMcA5R3xRQoDNG2BXDAf3XakPBwAlT/IQGTWUoC6FJe8AFJ6pC0ACDAA5CY8Nu7AdukAAAAASUVORK5CYII=', -'small/shortcuts.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFDRjczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4OUNBREE5NDhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4OUNBREE5MzhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjBkMzI4MWMtNzg4My00ZGJlLThhNzEtZDIxYWE4YjZmOTI0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUNGNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IvU3tQAAAeRJREFUeNrk1L1LQlEYBvBz86MURQuyKAxpaFAEc6jBoMFA6GswgiZpKvoHWqQiWoJwMTCCUkokmgxqyZqiJDQ0QkIaKqegwShQNL96TpxKQ+oGbh34oZx77sM9733P5UqlEqnlqCM1HjUPFIbDYb5r20AEiY+JQqFAdDodkcvln4s4jUbDN9AGK7AKJ3CeSqVeA4EAMRgMX08olUr5BobgEVphkZZLIBDcRSKRvUwmEzUajQmxWEw4rVb7lxJdwhQL7+Y4rlepVA7H43GZyWR6VigUB3wD6TZc7Ols7ElJNpslbrebILTJ7/fPeb3eMT5vuQuO6P0w8hFGRz6fJyqViv6VezyefofDMfFb4CjswzZMQ678okQiIbFYrMFqte6YzeY1i8US/GnLCzDOahYsm2+HerhFDYlMJvPp9foXl8s1IxKJiLBKUCNs0JaCHkhDB/SBFTohCQPow9lkMtlst9snadh723wL07M+O4ZdFjBBawRPbC7C1iyiXYacTucgevmzFOWB9OZNoEeH1mGdvYAtOIWHsrVRmKc7UKvVjxVHD8QwC0twDTdwCGdsa9WGj/ViOJfLVZ7ldDq9jN8WVqML1h6/jSsK95JisVhxgQuFQnR796z4fxpVPw7/7wP7JsAAwsSU61omF+kAAAAASUVORK5CYII=', -'small/showhideannotations.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3OUY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3OUU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkJCMTdGODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkJCMTgwODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+H6X5lgAAAZ5JREFUeNrs1D9IAlEcB/B3liVnxhUYLZE0hHgdHRkIBS0tNhYZ1BBEEF2NUQcRbrcEFY1BQzlIBf3hIByKoEadggJxSRpaghsaLhP1+l489YgoK7d68OHwef5+7/1+78kYhkGqOWykyuMPBqxNJBI/+R0DRj6fJzzPE5fLVf7C4/F8JxALG6DAva7rRFVVEggEyitkWdaadRSGoQHOYQeeLAH7QYCHUs1stg9r2AFnMANRWAceLqDX8v4k7ELus6YMQAT2IAgizMMK3Zq5yh5ohE44/arLYbiFbbqqaWihQY9BhUWa+A7qYLUYwOFwvD2z2SyRZVmqcbvdl/g8AW1wCM9QD8swRhPMwhLdyQ1swkihUHgUBIFLpVKiJElb6XS6j/H5fGaCZrq1Jlo/sxFz0ErrqsEJDEI73dURTKHT3V6v95rjuGgymQwWAxbHEIzTBAewDy+wAF1mAHDSppjzRNM0ORaLrYmimMNKnZWewwit8ZV1MpPJEEVRSCgUKh1uJh6PV3qg9feT5k3x+/3EbreXb8r//+Gvx6sAAwDJBXHVqKW7rwAAAABJRU5ErkJggg==', -'small/showproperties.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3QTM4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3QTI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjZDODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjZEODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yNA+OAAAAmVJREFUeNqslE2IUlEUx+/7MEyYBptqUYTSpKF9EFFqO2FAWlm7lrrJRSAibsLF1CAMLexjWVRQGxdBQSq0qhYtSohWgW0GjMqyb4dwnja+1/8M59bTFBS68OM+3n33/849/3OuYlmW+J9DSaVSfszzYNMU+/qg0e12X+XzeeH3+/8Ker3ee5jpzUugTiBmgj2g1+l0FsrlsgiHw38WdZfL5cB8G1yaIsLjYJEesH9gQQeURAXsBHeAxu9o9BiLo/8BzvK3HqfTeTKXy21LJBKNUCj0yOfzCSUYDD7A4nNwBRzhjVIwAA4CJ9gF9oHP8iemaX6CSBu5DNTr9W+lUikhBZ+CErhsy5PGkbwFH8E7YPCpKO/vkUNRrVZFIBAQyWTyaqvVmlVtR2+DW+AmuA4eghmwysIL4AQ4DH7KnJGoqqqiUCicazabnmFXt4LtLLAGnoA5cICdvQ8+APewSx6Px4Dbbd12RHL70JAp38EXLily9jy4C35JIU3TNuZGo6HUarVZKajwRy/GlAmtbQHH2Bgf5ZDEer2eqFQqwWKxSD9bsUdIG05xdKP6kZxd4RRQIxxF2ezNZrPzMGMmHo8/TqfTS7rNFKqxGxztyDYFO9iY0xSlYRjLmUymGo1Gn6F8vkohGuscYZpzaY4Q1DinZyg6cKHf71+LRCKCCtreKXJe5eIWY46sch1aXE4bbiDKf1pP5oeOc5GjGyXo4AJP8m0zckjBzeANiE54OejjFlRO9tqU9+jY73W0zjq7tlvmZYLLlcrGQW2HC2JQMBaLLWHeP+WNTZ3zGreMcLsHu/C3AAMAldy/L/9Zc1wAAAAASUVORK5CYII=', -'small/sites.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFN0I4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFN0E4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1YzhjYzdkLWUwYWYtNDEyNy1iZThhLTQxNWM4Y2VhYzNlNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OTc1NzREQTc0M0MxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqu1RVkAAAMhSURBVHjafJVfSFNRHMevmxNhLamRghQzHCUjobZmwVzCUjEzlZFK+RCNpgNBTAmyWghTonxqg1mtXtYC21ik7EGSFNFwZY7QhzZhQ5nFsja3CcNhm30v3I3rvOvCh7Pfub/zPef3557l7O7uEkzPwsLCyd7e3uH19fUrXC7XAz82poVgFDwA3lgsRlitVkIqlabXsZjEpqamajUajaWystIF56rt7e1LmK4DCuADr8FlprW5DGLSrq4uo16vv1FTU/NJpVIRiUQi9doLpsFpYAY5wEFfv+eEW1tbbK1WqwMPSTFyLplMMh3kG+gEOg6Hw88quLy8LMnPz+cplUprao7NZssxfARzoJnmPk8K22y21qyCSLCosLDQC9G/VPhil8v1ArYJ5hBVjDraEtvq6mpT1hyura2dQQiLKdtoNN4MBoMmHo83Sk3lgTtggrIj8OdkPSG1QTxlCIXC3xiO0d4LwC+anaBgFhQIBJ+RM1nKVqvVz/h8vhSFeQVTnyoEbcnhnZ2dZFbB9vZ2Jxr6hM/nO0japaWlG2KxuBl9SFbVD+rBd9qSayUlJfasgmVlZStFRUUrBoNBnY4pkfiDwQCGyTTT3EXgVEtLS3ZBJJ/Q6XSDk5OTHajwUSL7Qzb0E/AcIYf+VxRCoVB4GhoajAMDA09xOnZGEVMPmUsyd6bMF4zfMnL5JhwOn+vu7h4iLwAUiv76IngMHpEZydxwjyCOz+rp6dE2Nja+Q0G+zMzM1Dudzlto7JSLhKr2JBgkQ/b7/YcYBT0eD7e6utocCoXOWiyWDrvdrhwZGalFXjsR+nXq6rKA++AqWWFsFOzv73/rdrsL9gkGAoELLBbrvNlsbpLJZG78JuRyeUAikZBto4HLB3AXvKeWbMDnXjQajUUikap9gshFGN9l3uzsbDE9BJzuB4ZWirGMdOchTUcwRvcJlpeXz6PCura2tom+vj4VcldM3oNU0gPgK03oAGiKx+PTuJkWRSLRXLqf6H8B2I1wOBxSk8l0e2lpqaCioiIXqfi5ubnpRXgJ6rs+TrVMEh3wcnx8fAyHSWv8E2AAcpM7D9W0DFoAAAAASUVORK5CYII=', -'small/smallmolecule.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUVBM0JGNjQ4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUVBM0JGNjM4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwMzlhZTIzLWI3OTgtNDkwZC05Yjg1LTkyYjYzM2M3Yzk2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZERDc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlrzuNgAAAG2SURBVHjazNRNKARhGAfwd+zskMOw2YtsKOWw7luzB2VJLpMbBzk4iORCwoGLIykHbOOiOCi7nJSycvMVe3FZUZKbIu0yTTv75f/q2Vo1w9r24Klfzczb/mf2eZ8ZIZfLsXJWBStziaFQyG6tDvqgCg7g/qegVCrFFEVhgsfjsVrnF5fgBt6hAxbh0i4wkUgwTdOYKMuy1foI7EGYzo9h5qdAQRCY0+m07aGLni5ft9AGu6DSer4qwQ8tkiQx0SaQB3TBHZ33gA71oMEz9TVKN9AdDocci8VOBa/XaxXYDNdwCC9QC7MQh3bohW7qdSec8Q3OZrNBuyccBgO24AOuIE1rR6QVFiiMVxp9jFr1sAlGYRUicF4QVli8HQ8wQJviwuj4rQInaVQ2ipjjZVBg2zCMdVVVw4V/uRF4QwdhDt6KCHyFcf5b0zTjgUAgzgNrYJpGgb8dJuz/8Y174nOYTCa/5jAIjzAG/TBFxyV/HPhsbRZc24EGqC41UCL54seizc7+/rXB7pzQJqzRtQm4oF4WXchhmUyGiT6fbx7nQ7BCa5EiR+Zb6brO3G43E/79F/tTgAEA1QN2F9CFBYUAAAAASUVORK5CYII=', -'small/solvent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARZJREFUeNpiYBgooKmlqUCMOiYiDSsAUvOJUctMhGECQGo9EEuIioq+fPP6zQVKXdgPxBuAOBGI6ynyMtB1DkAqAIgLr1+7DjL0AVAsgRIXglw0EWjYByi/kZArmQi4zgCIJ8DEgAYfAFIf8LkSnwvz0VwHAxOhcsQbCE1zAciuQwKgsFTAlS6xJhtg8gB56QUQWwDZlsCkcgAmB2T/AIpZAJmcQPYJYr1sD3IFEIMStDwW+YNArE9KGApADQSBh1jkLyDJEx0pCuTI4TPwAQEDD5Ji4EaogR+g4YkO4qHeJtrABdBEvQCah5GTFKjU+QDNihiAEU9OMYCWMsjeV4C62hFLgsdvIJrBAlAuyGUX6FqyAwQYAA9rT69Hk8tJAAAAAElFTkSuQmCC', -'small/split.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHpSURBVHjaYvz//z8DNQFAADExUBkABBDYQC1tLVYozQTEjMRqBukD6UEWAwggRpCXgYKGQLYpEL8D4hdA/Oba1Ws3oJoYgez/SIawASlFIBYAYhEg/gfEv4D4JxDfAAggFqg6biBOBmJjIH4MxNeBGi8C6X1Q/BdqmBCQ8gbiUCCWBmJhKP4AxEuB+AFAAMEMfArEL4GYGYgVoNgTiDWA+DPQoLPQ4AG5hgeIbaEuhAGQ654B8VuAAIL5/z0Qn0ULIpDYaSB+AsQc169dB2n6AnXxCajhMHAMiI8Dg+Y7QADBDPwK9epHJEWC0LB6ATTsM1QM5LpKIPZASiE/oRbfAnEAAggsCDT5N5C6CXXNN6jzQSAFiGcjWTIfiOOh7CtQF4PCei8QfwIJAgQQIyxhA8OJE0hVALEMEHcCsRXUABBwhIYrjJ8IDaIcID4HxAuAjgK5lAEggBiRcwrQUEkgBRJ4A/TmH00tzX4guwCIDyBFViNQrgEoB4pQfqgP38LMAAggFrSIAIUXcl6cCDXQAcoHJY8JIAbIQlCsAg1GyQgAAcSInpcZGVEzClDDfiQDNwANCkSWR9cPEEDE5OWDSOyLhBQDBBDVCweAAKK6gQABRHUDAQKIkdoFLEAAUd2FAAFEdQMBAgwAo6CPSnTlJ8sAAAAASUVORK5CYII=', -'small/statistics.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpiYBhxgBFEaGppJgApBSTxB9evXV9AjoEsUDoeiB2QxA8AMVkGMlHby1Q3kAWfJDBsBYCUAZrwBWD4fiDLQKhh+9HEHKFhPETDkL6RQiDCsGYGFgocgzUzjMBIoVksFwKxAJI4LGtdgOYMlKxHQA91AUCAAQDMshndocOCDAAAAABJRU5ErkJggg==', -'small/status.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrUU0sOwVAUfT5zNWjCjCEjXYHaAUuwEroC7IAViBXUDtREhwwlJAwNnSvnJVdTQlLBS07eud9371HGfOo0mg0HWAG1N+u2QMvaeRWbA1G8iXfJpmLrIvqsPWHt7eRsAa4tUAaEh2hcZmyIa8D8HdDho5IfgE/Je+CRnVCaLOE44+4CUzXFQA0meSPyGW37kJNc2UnhTops1ldK0zSnNDnh8mjKCnXyVaLxWFZlTk90B6S2LlLoCbW4ngQF4H0WGUoRUBqP/lAeYa4p2G7Hw3Hpum5V9BBxrR++Pa41NVsgtmf+GbEKqCCAfblb+cl35nMKw+mGz/LzWf9BXmmof5BSFg1bD/jvrJx5w7bi/v+vXHwhJzLfPFcBBgBq9WgSF2oXlQAAAABJRU5ErkJggg==', -'small/stocksample.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTk5OEU1MDhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTY0RjFDODhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWM5MjhhYTgtMGNjOS00ZjMyLTk4NWEtZTk0ZGJmMGJjMjRmIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RI/E7wAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=', -'small/submit.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjU4OURBRjY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjU4OURBRjU4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlDNDQ0RjMyODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjlDNDQ0RjMzODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AZrThQAAAhtJREFUeNqs1U2IEmEcx/GZZSXLaog6bWJ66SBUWF2kWsHLHrYMhCIQggK3YqjDsof2tLIRbENzkN5I2U4hdrDd9hAIdYiUKJCQEGqJDILuFbm+bLrfBx5hFJVwd+CD48wzv3nm+T/zjNpqtZSt3EYLhcKmAlwul6NcLh/0+XwfbTaborrd7qHDVFVVnE7nvWKxeCkcDt9KJBKG6vV6hw5sNpsX+Jk2TTOayWRMevh7M4HHK5XKm3g8PhEKhXLs7/b7/asjQ4btwENEPR5PrtFoKLqupwhcHh0ycBmfkXI4HEosFpsqlUpaPp8/Zw3U8Os/wq7LHl6x2+1KOp2ezGaztw3DOMoYrrXHcBfe4x2uod4n7DSe4Bh+UJQ99Xq9kEwmZ4LB4HPRQIzhTjxDGvvwCmM9wvbigeiZCMO2arW6EolEFtth7cCX+It5nJX/8zhjCbPLcUtgSR4z8I/5d6fjTcF+/MF2rGEBq3iEA7iPu1hH++LzGMcJKrxuDRQ9PIQvyMlGYhOPcFL2+JNsMylDj8hxvIFK97iMyIPTMJHBRXnuuwwRhZqV7cRTPMZVvO25OFj2U/gqH/EUdFntKcvNX+AbnvabU91vygcExCKC113V1uX8uzxw+epxTBRmAjdltaOimpjDYVQHBvJS9zu3IIu1aOnZT2sDcS2TuzMwEAgMuuGSLEYYK90na7Waomla5xq51Z+ADQEGAItOp94TaMWvAAAAAElFTkSuQmCC', -'small/subscript.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrsVL0OwWAUrZ/BaOnOyMIbYLPxCLyBTmKiT4AnqDfAE9DNppPaGIkOX0ebc5Mj+dIILQuJm5x8t/l6z73n3KaG8Y+vi1TSglK5lMfRBgrAzN/5R/0++8YQPaAFCNEKKH5KuAAmzA/Ry3RSNkj0mI6B6UsP4dEIR42PNiAEcz4rwAKGkoPcikMoZm8BMX8NuCSQ6AIVoMNGMnFDr89ECYNLoEzTvCJtcpNVICfeoXiAuzPyJRu5eP8Y67PBpLLBuia1CEL1yuNnS3G13ItD9lCy5qNDqRIFSA0hb/PuhA6XorgYiSEbJSNEUU/zzuZmDTZwEkuGtD6OE32zuPXwLp/S97/7+7oJMADFjlXZtLH+rwAAAABJRU5ErkJggg==', -'small/superscript.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPhJREFUeNpiYBgFgw4wogtoamk2ACl7KLcRiC8A8Xoo/wMQJ16/dv0DLgNZsIgtAOJ8IBaA8g8CsQOUjdcwEGBGF3jz+s0HUVHRn0CmBxArALEBEHMA8QagYZWEvMyETRCocQKQOgDlCsC8SkwYMuGRO4jEvkDIqzi9DI0YkFfnQ70KAgrAYPgIDI4T5LpwPpJXYV6vh1pEmoFATQVIsdqIFHYCUItAahKA+D0UFxBKNvZQV32ARg7IgEIg5Q9lBwApfSAOhKoHpdEJVMkVINcB8XpCLiTWsAQgFQ/EjsQmG0KG9UPD2IAaLtSH5vF8KP/A0Cm+AAIMAEwyQyPhuw/2AAAAAElFTkSuQmCC', -'small/swap.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNpiYBiSQFNLUwGIHcjRy4RmkAAQ9wOZ94E4nhwDGZEMCwBS84FYAE3NBiBuvH7t+gViDGSGMd68fnNDVFSUE8iEefUDEHMAsQYQZwDlHgLVXCDahUguNYC6dCHUdaAgCIBKGxLrUmwRI4DEXg/E/0E0yS7EFevQiGIAupCR6FgmkHwuQMUcyDYQCBKAeD+UTgTiQiB+gE8DCwEDP0BpfaBXG2CupMSFG6B0ADT2GSgyEOiqB0iG7oeFHzTWC8iKZWjyAYUjzIUPoLkJhA+AwhZqMWpOwQWAueMHMJesBDJ/Qg2VgOYgEAAlJweQPEgd0ekQzcUOSHl+IhBPALrwA6XF23xoYh+CACDAADQxUgKtN3rqAAAAAElFTkSuQmCC', -'small/sync.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrkVNFRAjEQzV0FdODxiV9HBR4VcFQAViBU4FGBWMFhBUAFQAXyJZ+XDqADfasvzroTvNEvZ9yZx4bs5mXzsjnn/rolP0nuXfdyuA5wOL4cz78mBFEJ98C/HiiABUhnrYRYLBVMQiWAVLIFbkGwZE4GtwJ2ljRGuOVwD9xxPMfCRWTjBugj5sN8GtFIMEJSJZ6hpd2YGq6BMlohyCasqIPk7gU5c0rguUY2vQJm4ZJSBmq4e+BRVeUo/jPwSohutYrvuEnDgj4qAxpqok2OcuIFOfpAXBqpCuD0Lhl+Vp/sX60xC7OW1qrkpCnbw5t4xvm1mtM508gGcvwspcg2GHrwkt3YY+u22ciFGA2FbPANYc6KtI3lFIm6ZUmas/tD1bVq8orjmrGB0m/KLuknZnIIPIUnxjYpqZ8nkWdrneVCWYjjYzi0fRfCmy2I3L4svq7/bG8CDAAStHeIzovtmAAAAABJRU5ErkJggg==', -'small/table.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM9JREFUeNpiYBjsgBHG0NTSVABSCmSa8+D6tesPQAwWJMEEIK4n08BGIG4AMZio7eXBbyALlrDYAMQCoICGioEi6gMUw9ggOQOovAMhF/YD8X5oJCVA2f1obAMoez/dvQwChWhePoDk5QNIXnYcPl5eCMQHod6DZy2kIICxG4k1UB/qJZgB9kDMj8a+AGUzQC3Ha6ABNKAPogX6RyT2RiQ2QQMvIHkNFssXoHwY+wNakOA0MB7JoHg0VxtgYcPULcRm4AJcthJTHtKsxAYIMAC9Bz03MXZ4VAAAAABJRU5ErkJggg==', -'small/task.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANxJREFUeNpiYBjsgJGQAk0tzQQgFQ/EF65fu15IkYFAwxSA1H4gVoAKBQIN3UC0gUADHKAGEAsOAC1wRBZgwqEIZNECHIZ8gMo7YpNkwWM7KLweYhG/gM/JOA0EuuIDkGogNZaZSFEMDGMDIF5PtoFAzQIgjBbjGylxIciQ+1DDQC7bAAyKBWQbCNQMigBQursPTdiJhIKFhYigA8X2RaBhE4gJZxYcYQcKKwc0sX40ZcSnQ/TUj8NSB4qTDdXTIblhqAD0DjE5RJ4YAx8A8UIiHQPK5wdpXmIDBBgAwCU/jAlLjQQAAAAASUVORK5CYII=', -'small/taskdetail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXRJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/6BkHoWAoYJAKnzQCwgJCTkv2PHjoV37t4BWcCQnZW9gZGR8QJeFwINSABS8UhCIM0KvLy8DNLS0gw3btyAS4DE4uLiGnOycxqQzWBCswBkwAMg3gjEDlA+g6aGJophIPD582eGRYsW1Z86dcoBn4Eg8BAYVhOA9AEQB+Syp8+eYg0SkKFbt26NJyoMgYY6guhrV685aGlr7Q8ICGDg4+Vj0NDQYFi0eBFDW2sbQ1BwEMPHTx8ViI4UKHgAcuWGDRvA4QZzWXwCxGHsbOwfCHkZNdYYGR/o6OgcgBkEwjA2CDg6Om4kyUAQ8HD3KJSVkcVIg2GhYQs8PDwWkOplBqCmC////zfs7OrMf/HihQHIm+8/vDdYtXrVQpISNrrXgVQhUprdT3ROgSp2wGN+I0lZD5ZkCGRLrC5konZpQ3UDsXnZHuidBiL0KhBj4AESHLMQWpDQFgAEGADtF3fap2ucdQAAAABJRU5ErkJggg==', -'small/tasklog.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/4ByAex7YF4I5B/AF09MwHDBIDUdaiBFqKioh+B9HwgvgDEHUD+yzev31zA6UKgAQlAKh5JSAGKkcEHIHaEss8DXYliBguaYpDmB0B8EYj7sTh6AhA/BBkECgKo4Qz4DASBh0BbJwBd6w9kOyCJHwCKF0J98gHq9UB0zUy4wg+o2RHqnUSoSwKRwjUfyfsEXYgewyCXGIJiGCo8HxosH7DpYSKQahKgyeUC1IIGIGUAdTUDOQYyQCMBZFgB1KuBSK5lIMnLQKAPihigYflQbybCXEuugY3QJLSBkEF4DQS6aD9akqkHiqFbRLyBoCRDRB7fT26kkASobiA2L9tD0xshoECMgQdIcMxCaFKiLQAIMADT6l0ikc8pMAAAAABJRU5ErkJggg==', -'small/taskprogress.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNFMTJERDY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZEOEMzMzI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU4QzYxMDFBODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU4QzYxMDFCODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jWiW1wAAArlJREFUeNqklF1oklEYx4/fZvhRIzKbH9VFDHGGNYhuKohWMRG6CKEWy7oSgliMGtEHGqOiG70YK7cr6W4KDiJ24ZaB22ATIh0JTrZJdqeb0+bMqf1feS3zq40O/C58nsf/Oc9z/u9hlEol0mr19fURn89HBAJBozRnc3Nz2OPxPOjs7ExSASb5v/UKXF9eXlZUAjsVZIFuIK+KWcA9sMflcnXvWJDJZFZO8gg4wX5wFzymEnw+nwSDwZ5wOFwuZNcKRCKRjng8rmIwGNBi5lOplILFYp1D6iR4CV6A9+AduITcPtSfSSaTHfi9+JcgdiEGg8GmVCo3JBJJNJ1Oq6PR6HEej3eVLnkGRsApcCOfzy8Yjcb7iUTiu1AoTNWdEKchSGbHx8efajSaRYfDccJqtb7hcDjnke4BWcAAInAM8aLT6dROTEzMov5b3QypeaEFsrW1VfYIdv+s0+me5HI5qu4HXfYRPARakAYHUX+kosFudSFog7S1tU0WCoXJBmnq1EEgBoXd2qbR0oDZ2mDLE66srPACgcBNWINDt5wBG/T/jlK3Ci7/U5CaI26QDA0NPYcdekUi0Rd8onuR4tEmpzpbAF/pWEtBhlgsTk9NTZ31er235HL5aYgu0Qb/XQNKVV8RaTpDtJdzu93K/v7+YbPZfKerq2spm83WljV9UdgN2s3bbDa7TCb7qdVqszMzM1fY7IaToUQ/Vd9wnaBKpSLt7e2H1tfX2Wq1emR0dPRiLBYjMHDdWMA2fcvFpoJzc3MafH66sbGxa3q9vuw9k8lEpqenm72H5Tex4QxXV1e5AwMDb7lcLl+hUEQq8WKxuCtzlgUzmQzTYrHYML+MVCr9AIvwa56vVmubHsGflkOh0AG/3y8fHBy8bbfbX8/Pz1/AJoep3NraWtmXTRYlRNXlK4FfAgwA4/DyMw0KxFwAAAAASUVORK5CYII=', -'small/timesheet.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATtJREFUeNqsVLsRwjAMDZ8B0qRPC1VGYAQoqQgTABMAG8AEkAlgA0JHmQpK0sMdlFDB090zZ0xCTA7d6ezI9oukJ8lx/iyVoguNZsPFEvAzPewP6c+ABAmhA6gPjXnUElBoBJ0B/FoICDDxZsWHczxaG+cCOqbXHZzH38ILoBfo0LBvCKTbQujDtFcNzAW9mhXlFneWWPoSDVP0Dih/xHLFxYktowSVkIdZHgoB8xKVMuXbD8DAJMDSy0QiI5lOXWMuySHKJ6MD7LOupFT3BWgpAcvFlCivZB5l2w1vjypkPYcJjO0SYALkMpdvgJHO1g8iaVhnsSw15ZtdUuBdyP4eKVtNbc6n883zvK10C9Y7vncWYNJZXRVu2eGg2G5lDYdv40tC77G+Eq10HHaU3fjKKWzfdsD+XZ4CDABHRHfnHd4hFgAAAABJRU5ErkJggg==', -'small/touchmol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPGSURBVHjaYvz//z8DNQFAADERUvD+7w+G2e/PGVS+2qfy6PdHggYCBBAjLhe++/udYfOX20ILP1xsv//7Q9qXf7++q7IKtSYKGHQH82n8EmTmZGDEog8ggDAM/P7/D8Pmz7cYgAal3fn9vv3P/39C/8FeYWT49f8vCF8z5pBMrxa1OWLJKQ0URTUWIIDgBn7795vh2PfHDLPenzO7+OPlzN8M/wyAmOH3v38MrIwgTRCN7IzMDF///wbSLAs8uZWLMwVN3mmxizCwMEJCDyCA4Aa2vjkitPjjpa7P/34lczCyMHwDapJk5mFIEzRiAGkAgas/XzPM/XCB4dWfr2ADvv77/VqChac4W9BkMUgdCAAEENxAg3szD3z499OehQHkgl8M/jzqDOUiVgzPf39huPXrLViNBpsIgzgrN0PHm6MMW77cZuAEWgwKIlkWvoITikkTQWoAAggey3xMHF9g4STPws/QLOrAoMAqAAyGJwxZL7aD8VFgkIDEQHJAQxh+/gcFBzMDFxMbJ8wcgABigTH+g0OJERhq/xiKhC0YRFm4GN7+/caQDvTKp38/gTL/wd4Hxb4YCzdYTd6LXQzMQAP/IUUsQACxIMcQyPs8jKwMyqyCDMBkwiDAxMHwF2hQtYgNkPwPjmkuoDdBcipsggw8TCwMv4GuZGZEJGeAAGJCMKBMYGQyAmN12rszDKs/3WBgA7oAhIGxCqZBYiA5sH8YIYnm7/+/8BQPEEDIOeUjUAXQ9t8MD359YNDmEGVIf7GFYQMwTcLAJiAbJKbLKcZwH6jmy9/fYEP/MiC8DBBACBcyQkKSGWhnz7vjDIpAb+cImjKs+ngVHBQgvALIBonJMPOB1YCSDnpuAQggpDD8z/AHqIkNqAiY1RimvDvNkCCgzyAOjAAmRnDKZmgXd/r/ApgGp70/w/Dk9ycGbiZWYFr8AwrTXzBTAAIIbqACm8CmR78/efz8/1eICxgxG77cYDjz4xlDPNBQORb+/yALH/35xDD/w0WG538+M3AD1Xz+++uXGCtXnz+v+kqYOQABBE/Yb4BJZNfXezzzPlzIufvrXcX//4z8oCT0G5rWkL0G0sHKyLTPglM6t1LE+poKmxADKHeBAEAAYRQOwOzEsP7zDX6gS4oe/P5Q9I/hPw8jtAiAqnyhyy5ekClktNKBSx5uEAwABBDO4ustMAFv+XxbaMmnyxXXfr7JAbqWDVjKTIzn16t35Vb6IsDMgVUfQAAxEiqxQS6e/O6UBNCNQrlCpte4gBGBDwAEECO1qwCAAAMAGRmPAZHf6o4AAAAASUVORK5CYII=', -'small/translate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR1JREFUeNrMk80NgkAQhdVwFyuQK56gArUCsQKhArUCYwXagVIBdgAdCBc5SgdSgm+SIdksLC4YEzd52WRn9sv8Dgb/foYqgz2zfVwraAGZgimBwvyRX7WAANHnCLKgIwHwuRBsHrRh+xq2VAnkDzFETns4ly0Z7HAdoKUMFZ0ikm69CAo9xbeRYLS4XoEuEJGd+a9XA3JtkrY0FSeEnCYg1S/7dmxEIEU27cEYq4A0Xx53usuhUt1qQG59yqOg2+ULrkIcG0PyoQ7f4ZipNkGY1xNH537aFOpYDOBEejNZc8jnbIJqi1p3GYBXtQGcFs1n9THlXW7cDkORFTXIAWzLM+bqzqcKmHGNCo607DOHcoSdYW3AtA/sJ+ctwABl3Wx6tCQ7pAAAAABJRU5ErkJggg==', -'small/trip.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNrMVMFtwkAQtBEF0AHkCR9MBTEVmFSQUAF0AFRACZgKsCuwU4GdT3gGOrgSmEFzElgWnJ1HctLorN1jdm72Fs/7izUcDQdA4HK240C2w1YAmb7bE0rVDHgRQsQ+Hv2m+6QgyZLj99GowB7b4DdXLp8RNPawsl6BU+Mr42o9bEtgVUkxvmPXYcPaSSEOh+oq1UxuCnAFikWIFXVPqVN5awd8EhsomAL0MCcR8zzHGEDSlIURv1Pqi4zBBRCTTDkqjdTpOWBUjGdSkOZSaN/mG2InX5V/dNCIKJCyT6APnNWMd3V+Jj8TKaU9fJ8Tq3AroisJKiU3VrA5Y5F6thlSF6oIv2Pk5r7D6IXqttFV47pZZ54D0HV8f7ab+7okvbtrygN19CmTb19SarvfalIymX/WXupfJ2hMaH2pjJppM9//a10EGABEznV5GITLngAAAABJRU5ErkJggg==', -'small/undo.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjM4OjA2LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6NDUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjQ1LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhjZGM1MDEzLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjdkZjlmYTFkLWQ5ZTMtNGE5OC04MDM0LWVkZThiZjI0MzI1YzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZGY5ZmExZC1kOWUzLTRhOTgtODAzNC1lZGU4YmYyNDMyNWM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6Mzg6MDYtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OTo0NS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pp8aElQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAUtJREFUeNrMlMFNw0AQRR8oBbgEc51/cToIFQQ6CBWQVECoIKICUgJUEFMBufxzUoI7MJexFKw4BCkSjLSyNDN+uzP7Z6/atuWSds2F7SRQUiVpdRGgpDnwCcx/A7zq91BSCbwCJXCf0M4aoAZebNc/AhP2CayBZ9tNvwXABHhK8EM/Z9TboMzve5coadIF81RbSeusYgOMfyp5Bqy6EwA7YH+w4YvtpaQige+2l4OXYnsN3GS/dule2B5nT6eSVlnBAnj8BmjbdnBFxCQiNhFRHvjKiGg7X0TsIqLq4qNTEsie1T3fXlKd5e9zFX8zKQOCnwAVsE1Xlf0+KptToAK4SwUsbDepiMb29iRQ0iYF3LcauLdd5warlBbnnPB2aLxyYl6BN9tv5wIrSX1fAUyBWY7msp8wBNzmj9MjsQ/gxvb+rNfm373YXwMAoZiruV3mBv8AAAAASUVORK5CYII=', -'small/up.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgWQFNL0wCIFYhRy0Kkmf1Q2pGQQkYiXJcApObDDLx+7foBsg0EGiYApM4DMcy7D4AGKuLTw0TAgQVIhoGAAtCSArJcCI0EkOsE0KQ+ALEi0KUfSHVhPxbDGKBi9SS5EOg6ByC1n0BwGAJdeYFYF/aTkJTwuxAtmRACgUBXbiAl2YC87YAm3Ag0pIHcZEMyGDWQckCo+FoIxAfRxA7QtTAGCDAAUG8nQUUWYkYAAAAASUVORK5CYII=', -'small/upload.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUeNpiYBjsgJkYRZpamg2ioqIKb16/uUBILSMRhikAqfNA/AGIDa9fu/4Bn3omIhxYD8QCQAwyuIAiFwJd5wCk9iMJwVz5gFwX1qPxBbCIEWcg0HUJQMoBi1QC1OXEGwjUAHJJPx6H9JPqQpALLkAxOjgACktcriQ1UhiAEcJIabIhCQx+A1kIyH+ARsLAAUa0WDUgkP6wgUJgzF/A5WUBHLkDHxBgGFIAIMAAvi8mebj7/9cAAAAASUVORK5CYII=', -'small/upload2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNrMVDFOw0AQtB03dG4spcOUoSIviFPRhheQdHRJXmD8gpiSCv8g8IKYjg5XpMxRk8JPYFaak06nuyRQIFYa3fl2d3Zvd31B8N8l/Inx4HJwhSUB2u3Htvs1IYgmWFb8VEAOVCBdHiWEs2Qw1ZkAkskGmIGgpk2GZQ00NqmLcMPtKzDnvoRj5Qi8A4bQKX0eOWokuIHRvaxU1XZg1vAZmDgzBNmUGSUwvjixthL0HFjqJkVUPGEpgAcjK9MxFzg4G95ox4SCkJuCteg8mbzzmkOPPmeTxr00TYXsEcZvHmMJeAf0Yfu5/9q3tg3OFHRn2F5HHA/lIUuM+RNZ8SzwXD+LOGeZx2jBgFoSnnlFCF+khnZkfo+s7OW6I0+Wt2IbGl2WbpWc/s4ajYKfY+gaR2kWurExuzfj4ZzXqk+cwzUT0cFUbEy+/FqVw0+x4AHrbUpJ3/boa2P80y5pXS+NSHzAqTyg6/7sxf4WYABv3ohEFCc4KgAAAABJRU5ErkJggg==', -'small/uploadimage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVpJREFUeNpiYKAyYCRWoaaWpgCQOg/EhtevXf+ASx0TCZavB2IFIN6PTxEzka5rAFIJUK6EqKiowJvXb3ZS6sIDSPRHigMb5Eog/g91Lf0AI5GucwBS9VAuKIYLgTH9AJtaFiyaQUnDAMoFaZwApOdDY5gBydBEgi4EGgZKGgEk+nID0NJAXLEMSrwMcbFxDOvWrsPQaWZqxiAtLc2ATQ/eZHPjxg2GRYsXwfkBAQEMJ0+cZCgoKGDYvWs3Q0VFBQNJOeXU6VMMGzZsALNBLiorLWPw8/NjMDQ0ZBAUFGTQ09UD+4KshA1yHcjwAwcg6frDhw8MjY2NDM7OzuQZ+PnTZwwxAQEBBrILh7379jIEBwczJCRAsrKBgQFDfX09w/oN68kz8OnTpwxV1VUMLS0tDP///2c4dOgQw9ZtW+FhTDBhY3Xl3r1gTAxANzARLUcQAx7QtHAACDAAq61o6iTixvUAAAAASUVORK5CYII=', -'small/user.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxQkI5MEE2MTczQTAxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBOEEyRkJERjhFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBOEEyRkJERThFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE5MWMwOWEtNjRhZi00YzI2LWI2NjYtMTk4ODFhZDUzODc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFCQjkwQTYxNzNBMDExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0bUDagAAAmlJREFUeNqUlUuIUlEYx6+ajzESH4smWlgLaRAGBsTeqwhkKAiERpHARasGxEx7gIuxcGACoYUJNm3TQlDSygjaSBQ6goqQiUMUNJAoaiGaclP7n8EZTK7OnQ9+m/P43fud7zsczmAwoCZFNpvlO51Od6lUui4UCmcw9AXYQYLMt9ttKhQKUVqtdnfPgUmyRCIhsFqt661WawYyE4Z+gVPAAx6AV0z7Jgq9Xu+t2dnZgwqF4moqlaIgJcMbIAXWSQJga3wfl0lWLBaF+Xx+0W63r8nlcqrX641OE2kGXGLayyis1+uHqtXqH5VKtTUm24nP4AhrIf7qt1QqFW1ubh7j8XhMSxbAD9bCubk52mg0Ri0Wy71MJsMTiUSj0+eBGrxhLSSBCj+CiK5UKgkul2vA0AWwAp6Dm6DMusqdTodU+Wy/3z86rOoikIHvw1TPgQ+shW63+7TH43m6vLx8G38YH2kbEgrwEpDDXd0zZTT04UAg8MRsNt+FNC4Wi8fbpgaWgBFcnCokqbpcrhWlUvnO5/O9JhWmaZopiZ/gDrgvGqvYf8J4PK7K5XInbTbbGp/Pp/aIt/hgze/3X2k2m8zCYDB4GRf9k06nq1MsAuf6IhKJmAuFgoBRiPbQSCSSj2NZTIsNrD2BfccnFUVmMBjKFPsgmZCKyScJ/6bTadE+hIJh+9CMQlT0K2JhH0IVOqOFC/CNUWgymZ7h7l6LRqNnksnkdv9Nqbay2+2u6vX6x2q1urYzyBl9ArCAcjgcS+Fw+AZEDY1G0yyXy/1Go4Fz3/42WcwB5DmQ4Ql4H4vFHs7Pz+86/gkwAFBM6JNkNOVGAAAAAElFTkSuQmCC', -'small/user2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO9JREFUeNpiYKAyYCSkQFNLsx9IJQCxABA/AOKJ169dn4BLPTMBw+YDqQwg5oAKgQz1EBUV/fjm9ZsTJLkQaJgCkLqPQ/oD0JWC2CSY8DhQAY+cAC4JJmpHCk4DgV46AI0EbGADuS4sxBZ+QJxIsoHASDEAUvNxhF8/SckGaBhI03k8gW8ATDoCwKSzk1gX9uOLSSgogPoCv4HQ9JdAZKTmE+PCABJSSQIxBtqTku7Qvc1ESi4gJtdgM/ABiQY+IGTgQVIMA+Yo/AYCFSwAUguIMAyUYwJJKb4MoOFjgFS4KkBpEL4AtPwDA60BQIABAOjcOIMmKxJvAAAAAElFTkSuQmCC', -'small/view.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrsVMFRw0AMPLsCuwL8TT5ABYQKSCqIXQG4ggwVkFRgU4HTgU0H5kOepAR3ALuZPUYcxAMPZnhEM5qzJXm10kl27iT/TqIx52Q6yXDMoJlMA3S7e9ntfwUIIIKsoBfQDvos1xl0Du2h9wDuRgEBlOCoxKrEB/U3yRiTK2Et4OELIALJpmVJAhtkW4mVM8y2akcj+7UHjQMwBhcGrFW5KWxMvmEF8OXsI/RSSVoxd7EeGoGtTXUPtKmHr4h7w3kOXch3EBLwoIeSEcieJXAsgl4RIFWymXGl+rj0lyJStHXxyNSwJ4nOD5t6lQX2TPoUGfRe9D3DSoCFSkzUQ7K9Uf8+sYOtjAIjB9ZfirfxfFSeK80mb7XXxVWWTBTMVyPqhelPHmxKrYRzgfG9PLopCLzT7PHmNpy5wE+gWzEtQv+x1fPbsDTr5/Q8qAVruyE/+jkEu03Zj/0Y/kTeBRgAWiiuVs9VQyEAAAAASUVORK5CYII=', -'small/void.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsVMtxwjAUJK7AJZgjOZEOoAOoIKECoAJIBdgVGCoIHcSpAJ/gCCW4g2Q3s5oRsmQBw5vZ8Vh6Wr3P6vV6T7aXmMPgdZDiM9Tv5XQ8Xe4mFMkHMAcyoNLWiKTADshB3kQJQcZovnSwwKG9s0/SlaKeYr8KEorsG6iBFM5vHaVgBiUwtkkTx69UVGMdKkOE8NniM2M2KtE1oW5s4LjWEkknWu8iZXQLX4RsQGE5s+BTYKNShOxTZ1s1+Q3UagGc7bQ8PmdzaWJ1rg6klWuv7IiSikh9TQkZi5/h4nXMMVEUlfUafFE2Ip0rG9co/saNsIbzpIOUaS8lk8zRbqr9K8Kdt1ttmWz1kozx1exbL0VdPEjYeWRgHNSoH8oK6Jt3nXh0t6JUIrX/F706P7OHxCPDYag0R9Hh4KTPKN+lL6NRo4Ti5vHlIc8ki5sG7NPtT4ABAECilGSW3KE3AAAAAElFTkSuQmCC', -'small/weighstation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWFJREFUeNrEkzFOw0AQRRNDTxrXuCQ0uKQjnABzgjgnCCnpaCl9A+cEhBPEnIBNQ+gIdSJhbsAM+mu+VrvGSJEYabQ73ufZmZ2ZXu8/ZHg6HHRlo45cJk6zfTocQ//uUCIZieZkJ7KMEGVC31PmrPTpJ3t4Iapv9gj7TJ1hvxBdEaf/ze3Z+mVtDmHUWI8QjdrHou9wsHIC8XE/EVIaN7hZwVpunAWqnuNNjWYj3CT0hlOkUNAT+IS5zNtWKMYb2c++R0cxPkJc5LTGnGzdXwWiK8kuuKUimoTcAUtPqwxQ8YI4rXxqORthjrJvLCX7Gk45bXVmPNwCkTcOp066nPbYUwxXmiL2tRiyLkUvcWOF8G2qenaNVmo42zLEPYjO1OESTdomlejml1b65qJACq480Si2iTnYbXcmjuNPMU6QAoumeS/PcCfcq3A6guct3K07einBOnomMHqduL3IlwADAE9LflJ/XEBdAAAAAElFTkSuQmCC', -'small/witnessing.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QThBMkZCRTM4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QThBMkZCRTI4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODQ3OGY2LWQ3YzgtNDgxZS04N2M4LWE1ZTEzYmU1NWMzZCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyM0EyQTNGNzdGNTUxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIiEaIAAAK/SURBVHjalNR7qIthHAfw57yvMbeVsXDsaPMHmtYWOnaQ5RJyyCW5/LHDUrSS5NLWojhYLiWRW/4QITqyYx1z/MMSuR+XkOOUszXKUnOmdmE2vj/93vWeNY7z1Kd377vn+b3P8/x+71PV2toq/tH6wgQYwvcZeAdddFMoFITD4RB6vb40oMpisVQKNArWQD2YYBA//w5xiMC5TCbzKhgMCrvdXhooVQjmgWewD6ZCNeiYASbCFngAh+LxeH/14PKAB+EEDBc9twFarXabz+drikQiukoBvbBd9KJJkiTy+Xy9x+M5FY1GZXomGwy0CmGDi9Cnwrh2uAQheEozg5HKn7Isi2w2a00kEp1Op/OFkpSzsLYs0AfYAZehH2/DV/gGK2n/oEbpnEwm34bD4Vpa8mSYUxasGSbBDTjMmY1CDI5BC9TCQ2UA9tMSCoXqKOAG9RLQrsJSsMJrWA9HYRUveSNfh8E87GGbMjAWi02XuAxkfvYS1sF8uAlGWMEzpBLaBLdgPF9HmEymBlw/02CNRlMjqYJRu8N7tBcGwif4CEc42Cy4zX2rMbsDfr//DYJewe8/OaKAOVXAxfRW2MyBaYZ1tDRo4Beu5r5fMKOdgUBgLEpmGX7Ts7zEb/zBncyc1UewiJdyEraChZNE31knLIQOBDuvZBuzbKeApzmDSnNCGJ5zfZ7hGfpgKN9TZXTQPmNmU/igKBqNxrsSl8K1srKhMnoCDs7yaE7EGL6nBD2GmdS5WCwKnU53z+12tylfxnE+XdTlMw6uc4mEefl0jC2Aaeq3p9PpXy6Xq9FsNv9UH19LuAbl3nzPqVRKWK3WXTjGdqO4ux0OzVyDmf8NRku12Wz7vV5vIwX72wFLywnAjB7ivccBuwef2wXMsPSw0ulyH2bDXFjOWR9ML+eapcO3iUuoK5fLdRv8W4ABAHMd0qXV5tNLAAAAAElFTkSuQmCC' -, -'img/add.gif':'R0lGODlhEAAQANU/AIq7eLXcqkSNOVSZSLvitO3163O5XLzVuZbTin3EbMzixZXGg326bNfr0YrMfobKeo3Be328ZmurWrrdr43Mg6TOlLTZpWejWnetaMXduePu4qfJocrexW+1WKvUnWSgVkmPQJjMiK/fpqDZlpvBmIS2b3a9YJO/f6bQlnXBZMrpxd7y2rnWsGGeWHi0ZH+yal6cVo7Sg4HMdZfMhZPNiJ3YkpXAgmWrVT2GNWirU6Xbm+fw5ejx5nC4Wf///////yH5BAEAAD8ALAAAAAAQABAAAAatwJ9wSCwWCxlbqQRgFYy/xqmiaqgmDIyi2ABMVgTdSKSCXDjDwimwqtEoCEQMe+EJM4vGCOHw+R4JCQEDG0I2ASIUDwx+EiYGCAstQiUECA9+mT49CR4gQi8BDjKafj0RHgJCACEICSk3pj0GMxADQiw5ASkmJqYdBhYCJEIFGAwBjz0dwBYSIBpDCh8uASERETPOOAdFHB8DECgoAAIg3UY7GzAgAgMk0VDyREEAOw==', -'img/addcodingregion.gif':'R0lGODlhFAAUAPePACOheE7PgmPmhz2+flnbhery6F7ghnn9jFPVg/b69P3+/fz9/GrtiGWzTZDShJC8g5PKf+/17mnriGayTpLIfvD27Gm0UcDZuI/Df2CvToG5cqLLkYW7daTTlarNmVacTqbSlVKZSu726s7ixGmxT3jIarrdrlybUsLbu7jfr3ayZNXv0JLGgXu7ZabSk4q+erncraXLlZXMh1OXSFiZTn6/eKbWmaXRlLnbrs3ryI/PhGukZb/mu0uhRvL38ev06W25VWWhXTOye0XGgPT483zCaYPLdoy/fKnanYfJe0ydTmq2Umu3U4PMdmWxTYTJemSkVrbirpTPhPD173+3b8blwZLShavboLTgrVSaSYy5gXa+aqPbmeTu45jCiazco7LUo27xivT49GixVrLQrff59ojNe6bIpLTcqoa1e8vqxmXFeZPLgKHPj/P48rjisGqiZKbTlpbAhKzfoyyse+z06qrPm3mzaO737fL38Pf79vj89mioWVa+aGvAW2SkVafJpEPDf3G4anCoaMznxKHNjtPtzcPkvmmzUKnMmLncrsbowIa2fIi7eJK+gf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI8ALAAAAAAUABQAAAjYAB8JHEiwoMGDCBMqXMiwocOBCUbEkOPICwo3Cyt4sEMoxyI0HB4USJggEZgVWHQ4mBOFCiMfAyUIocMg0JoNhrgkqaKmiRkkfPoAEBgAAYIhA2qk+PJkix4xY4BIYaFk6KMABggEENDojZFDeBQsqANjSYcPVgUMGGBAgIYrJXj8WKBAhCILN0JYPUCAwIEwgmRY8ZOhzJ4GEyAc6RHg4AUVNoowMYHDSQsQWc4gJKLlThw2iEhQcAEFzpSEBdL8wdCm0IsZO7oszENm0AkaQQBFeMi7N++AADs=', -'img/alignbottom.gif':'R0lGODlhEAAQALMIANzm797n8Nbh7dji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ7EMlJq70YmW3yNMfReVo4EgXxbaUooaoEdqCLwJ9bd2kv6yZEYTj80YIDokDG4owCBQAJ46xWp9isJwIAOw==', -'img/aligncenter.gif':'R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAImlI+pBuvtDpgULhBytgrrwCUVFUnliIrfGnrrpr4wgo5nKeK6UAAAOw==', -'img/alignheight.gif':'R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM0eLrc/q7ISQu8jSpAwiuGYQlEOUShVa6ouBAQ6Crwl77xvZatNayCyEQRIAAwyENlmXwkAAA7', -'img/alignleft.gif':'R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAM1aLrcS4bI6RQkJRdY75RVFHbR9zWXpnJPpGqsVZogE4+yEQwDDgE8XETAKwYdv+OIs+sJnwkAOw==', -'img/alignmiddle.gif':'R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAIrlI+pywj/mgGhAgUvtZjvcCWbVoHOY6FpOHkle4zCB0/Q/Eo4J2W1DgxKCgA7', -'img/alignright.gif':'R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAMzaLrcTjAa4hQpuFBao+TV03jkNGbodqKYypCeGYrVMATvbAMLqNhAm8CiG/CItVtuNksAADs=', -'img/aligntop.gif':'R0lGODlhEAAQALMIANrk7uDp8d7n8Nji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ+EMlJq73V6M05/sgWiohQBJNxGOGxIkMhA5LKqq+s1y/OFgRggXdzsRBBQkrTeiGBF58kGTWCaqSrdsudRAAAOw==', -'img/alignwidth.gif':'R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM8eLrc/q3AJZUsOOdTOTdgaFzUJ4KkxWmap06uOxALIbxeQNDKDsSSnXAIPAB2NUKgeBDwDoQBDkatWg8JADs=', -'img/animator.gif':'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', -'img/animatorsmall.gif':'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', -'img/annadd.gif':'R0lGODlhFAAUANU4AP/3Xq22NNzcTbm/OqizMv///7/FPbO8N+fkUvPtWMrNQ9bXSvnyW7LSlY26ZJSwhMXKQEFzJaKuL+3pVVOMKMDN3+LgT4+8ZzdrGc3QRdDSR9/m77HWks/a57TUldLTSISgMY+7atDmumGJQrbUnIe6YD1wHIu6Yoe5YFePLT9xIoGrYT1wIKe5R4y8ZbHTkGaOT5GugXKXV7PDWEx7MZywTZeyiGKKRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAUABQAAAagQJxwSCwaj8ikcslsOp84gHRKrU6FAM1iOphIEYapFiBkBAhSQQAiNRAQAAYBLRQoDALAwBJgJAICYQIQeEIHBwEDCRIDBAILBAMSCYeJOB0BUgEKCgAIAQFeNTIwIy0BGxVwABYZCVIZHwAzKx4iISkgFVFWVDcvHAUuFyZYvVM0JAXLDRhNKiclBSgXLE02FA4NDhQxTg8RGBEPUOVJQQA7', -'img/annauto.gif':'R0lGODlhFAAUAOYAAPPz85qamsjIyLi4uPDw8LOzs6Ojo42NjbW1tcfHx8vLy9zc3JOTk7KysqqqquXl5b6+vvv7+7m5uaurq7e3t/X19ePj44aGhr29vbS0tefn525ubpmZmZeXmN7e3qSkpNHR0fj4+J+fn5KSknR0dIiHiMTExMfGx4qKiomJicPDw9XV1c7OzuLi4sLCwrSztKioqKKiourq6rGxs7CwsLu6u35+fv39/aCgoOzs7KmpqczMzPn5+cXFxZiYmMDAwJiYmdbW1oyMjKamppybnN3d3Xx8fHp6eqenp////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAeHgEmCg4SFhoeIiYqLghY7AguMhAoPFhCSgwkaDxKYgi4DBQiYLBgDCScwBjSMHgIqFC8UDQqeQziegyIBjC0QRYMcDIMCKCaGBTUZBgBJIwdJBEY+RBuHDjMgBBVCFwA5P0AkiEFIEwwIHzETRx02PYoNAToSAwYlATKMCwUHKQ4rcgkcmCsQADs=', -'img/annautoadd.gif':'R0lGODlhFAAUAPcAALOzs/Dw8KOjo8jIyOXl5dzc3OPj48fHx7i4uL6+vqHZl8PDw4HBbNnp0svLy6urq+Hx3cLCwqioqGulYVWZSlisPuLi4pLAgYTIc7zVuX+9a5bOhHWTbczMzMbcwYHJcZbLgr3Wu6PLkpnOirfjsPn8+ZvBmG6rX57Qj6bYnKqqqpu9jdvt2M3oxpnYj5nCilmvRYDAbJfLiZSnj7/muHTAaNbW1n+3cN7s2c7OzuTx4rCwsJTHhZPJf7HQqnGnaaenp8/iyqrOm5PIfrW1tbS0tX6xdX+ydPn5+aDYlt7e3r29vWumWpqamrm5uZHDgpzTk36/Z9/v2YHDa7e3t7Kysn/Aaefn5/n8+JvFi+Hv3XSvY/39/YzQgfv7+7Gxs6DHk2O0UNHR0WeiXKbMlvj4+J7DjsfGx22nY8jdxKvdot3d3aa1nru6u6LYmff69/Pz83Koa5HEg+Lw4IHAbVeaSp3Mi5XRipvWkL7hteLx4M/syJevi2ikX5OTk4Oudff69rPdqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIIALAAAAAAUABQAAAjBAAUJHEiwoMGDCBMqXCjQQIcBBRgSdEDAQAKJAw9cIeAEo8AICAAQwZhjCYIDZyQI2MFQyYAFVNisMPMCTBCJfMi0oEEi0A0fCxuI2OMGigIXKU6kKWghwRqBQvIkqaFjThgMMo4UBNCmiAA4WdTc0VPiDQ4GG9AYVPFFTIALeLqwAIRFSgwQfQzaAPLAz58RH2BogVDBipwfCKs0mbEFxRQ6GqLYoRAiYQEAHJjw6DHkSR0TEj0YmTAmTgaPqCUGBAA7', -'img/anndel.gif':'R0lGODlhFAAUANU+AP/3Xq22NNzcTaizMrm/Or/FPbO8N/PtWOfkUsrNQ9bXSvnyW////9DSR+LgT8DN3+3pVcXKQLxDBM3QRcFZH92mhqKuL8ttLsFcFO52ANF2OcJcENLTSP7Nrs/a591kAbxDBeFoA9/m78BZHvSdY9GdLrxCBMFZDsJbD75PB/e1jeGrjMWUMf+GIfh2AO9/GMJcI+uKQOSsQP7WuP+STd6jNMpmKPWocup5BeOwleZ3If93Ef9/GPa1jf///wAAACH5BAEAAD4ALAAAAAAUABQAAAagQJ9wSCwaj8ikcslsOp8+gHRKrU6FgIZiSoBIEYWpFiBcBAZSQSAiLQwQgMUALRQkCgIAwRFYHAICYQIReEIGBgEEBxYEAwIKAwQWB4eJPh4BUgEJCQAIAQFeLBgmJzUBIg9wAA4TB1ITHAAyGiozNxclD1FWVBs9NDstMShYvVMSHQzLLxJNFCQ8LhkhI00rNjo4HykVTjkwIBTeUOVIQQA7', -'img/annedit.gif':'R0lGODlhFAAUAOZoAP/3Xq22NLm/OtzcTfPtWMrNQ+LgT+fkUr/FPfnyW7O8N/71XcDN39bXSqizMvjndcSnNPvtV//t2Pvvo/bdrPTeUf7zXcXKQKKuL/bw59utUt6ZTOi6ZqmKRd+kQr2JS+e4YYhiLc2wiOK3hdi7Ofbhf9ylQNi4O9CdQPjdUfXZTK60MPjndOK5W83QRdDSR+KlQ7R1M/vpctufTc/a5/71Xv7zqfnwwvvunPjtvOPGRPXYS+bBl/jrtvTXSPDRrsiTVcaoPLqEOfbt4/jllfDbZOfJS//2Xr6fPdGgZ82qcuTNo31fKOizRV1GHNShafvz69/m7/zuVtS5U//w4dC1MvvvoeO+bP/q08mJR/jMmda2QOCyfuXCkfLjr6+2NOS3ZOrBbL9yF/rgw86bQNvDjvPAi+3pVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAe/gGiCg4SFhoeIiYqLjI2Oj2gAkpOUkxEaSSgVggAvDZMCZ5IHCFItPFRdZIIJAQ6SAwEXkggrRhQ/Y1hPggMFCAMAAgYBCQRfOjdEYFwjU4IKCgECBBgCDgMNJDk4OyUzSAJoNAGSAQUFAAcBVT1WPg8gTQsBUQwHkgYuBAALEF4TVLDgYOIIAAMMIlWqcaKMjRQywsCgxKlSkCUithS54sECxUMdJGwQIwQIlEZMzGjJEmOIIychPijJAKnmo0AAOw==', -'img/annrules.gif':'R0lGODlhFAAUAOYAALW1tcPDw7Ozs/Dw8MvLy8fHx+Tk5L6+vqnB6b29vaOjo7i4uJqams7Ozqurq9zc3JmZmZOTk8jIyPPz88zMzOPj47Kysre3t+Xl5cbGxrGxs6K86ODp+PX19crJxnae3v39/a+vr5W055245oCk36ioqH+j38zOztDV3J665+jo6LTK7N3d3dbW1t7e3qqqqtjY2MLCwqKiovv7+9LS0p2dneHp99HR0Z+fn5SUlKenp+fn59LX35qsx7SztMfGx7vO76CgoO3t7Yedvru6u7S0tbu7u/n5+Z+758vKx6ysrLCwsPHx8XOc3IyMjKnA56ampqK96JKSkq2treLi4uDg4Pj4+F+N2Lm5uZWVlf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAUABQAAAefgFqCg4SFhoeIiYqLghUUEg+MhAQYFQeSgwU7GFiYgjELAgCYDQkLBT8lCkuMLhIBFz4XFgSeUEGCNFMhA4w4DFoTAgYAMEKFVAcsgxARWipGBDlKMoUCREUKE1pSEFpJAaUUWYYvGjcDHU48Tz0nAA41GYYtOg4RAChRCCJDHlVMEllgEGAEEiAbTEh6YODDihQkOHhCcKWJDU8YMQYCADs=', -'img/antibody.gif':'R0lGODlhFAAUAPddAAAAAFJSUk9PT3h4ePn5+fT09Pz8/O/v705OTnp6enBwcENDQ5ubm1NTUzAwMLOzs1FRUT8/P/b29v///4WFhW1tbXNzc3Z2dnd3d7u7u/X19SkpKTc3N3R0dBsbG8DAwODg4Onp6URERC8vLyUlJXx8fGJiYkBAQIiIiHV1dVdXV7GxsS4uLpWVlZGRkQICAgMDA1RUVFhYWLa2trS0tIaGhigoKCwsLLq6uvv7++zs7BwcHPDw8JKSkqOjo1VVVSQkJGxsbLm5ue7u7m5ubkxMTH19fUVFRZycnFlZWfHx8Xt7e39/f2hoaElJSa6urouLi0JCQkdHR3JyckhISAQEBEtLS/f397i4uHFxcQYGBv39/RYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAF0ALAAAAAAUABQAAAjfALsIHEiwoMGDCBN2WdEhQoAAESo8UNhFRREUBFEgSJLQgQ2EGxwclDHiHxGDCv45CFDwg4ouGP4pIHjh35QuAYQQdMGFQ5cE/7IITPEvRRcOOygQFNBFC4suJf4J/DegC4sXOAlC6ILj34YuCwSK6FKSRpetA1l2mQGjSwSBR7pUmdilAcGxAjN0kbq3i94uBqQQXNKD4AmBhwcyqEDwQwyCdusSRICFoAEBJgReFshUYAcqEgpOWNBEIALOAhU4KXBQggArLX4IDNACAQTWCVeUIBFlAZALdCkKH44wIAA7', -'img/arrow-default.gif':'R0lGODlhQQAUAOZYAOTk5ODg4I+Pj/r6+sjIyP///wUFBXFxcYODg9vb2xsbGw4ODvn5+fj4+BEREenp6efn5/v7+7Ozs4KCgjU1NbKysvb29kpKSigoKMHBwfX19SwsLPz8/MfHxy8vL9fX12NjY0xMTDw8PJiYmJSUlAoKCjk5OT4+PszMzM/PzwEBAQ0NDe/v7xYWFh0dHTIyMh8fH+Hh4TMzM/Hx8SoqKkhISIqKiv39/dPT05eXlzAwMFFRUXh4eAICAiMjI0BAQOzs7CsrK9jY2BkZGUVFRQsLC0FBQYuLi/7+/j8/P9/f36CgoLi4uHx8fAkJCRQUFKWlpebm5qurq+Li4tnZ2ScnJxISEgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFgALAAAAABBABQAAAfmgFiCg4SFhoeIiYqLjI2Oj5CRkocMEZOXmIIaEzwVMZmgjwMyVwonEjOhqoocNg4lBhskQAWrtoUAAi4GVxQEUbfBghAdIVdXIkwBhwUJVM/Q0dLT1NXWz0oBADgCNccvBxKFIFbl5ufo6err7OgOT0MLKsdXC0uECFX6+/z9/v8AA/LDoIOGBwU96MGQgmuKw4cQI0qcSJGitgAPAKD4gODHMSJHMghTJUSAiWMXUkAYCQpJgwMrilxJkoAFy0wFGjRxcqWFESgMboIa4ONKkB0EBggNZWFEDgIPlq6KcEOq1atCAwEAOw==', -'img/arrow-double.gif':'R0lGODlhQQAUAOZ/AP7+/vj4+Pn5+fb29vX19QICAvPz8+Li4ufn593d3UNDQ5SUlJCQkPr6+gkJCenp6fz8/PLy8sjIyDU1NUBAQFRUVOvr69/f32ZmZpqamtPT02dnZ5KSkuzs7PDw8PHx8VxcXDAwMBgYGFpaWjs7O0lJSQcHBw4ODru7u/39/QYGBs/PzxISEoSEhKWlpYyMjHJycpubm25ubi0tLQsLC2RkZHp6em1tbRwcHHZ2dsrKyp2dnV9fX0RERO3t7QgICBsbGx0dHU5OTl5eXoGBgYmJieTk5Nvb29nZ2ZOTkxYWFoODg729vWJiYsLCwqampuXl5bKyshoaGurq6i8vL5iYmOjo6Do6OnNzc6+vr////1tbW4uLi1FRUVlZWe7u7lJSUgEBAdHR0SQkJIaGhsHBwVdXV8fHx9TU1Gtra4WFhebm5gMDA76+vt7e3jg4OE1NTQQEBCwsLD09PdDQ0NjY2Kenp2VlZU9PT5aWlvf39/v7+5GRkYKCggAAAP///yH5BAEAAH8ALAAAAABBABQAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CHABYaA5GNAGsIBBCXhgYHTkF+TJ6LDVt+JBkIAKYDGjIhfip3B6aKAHUKfn5damiXKENvvVh0BLiMCFVgvRN9Bo4WICJ+BRsPycqOVjFCfiYzRAGIew8PeCYOQDwJegIB8nr09fb3+Pn38gJ6AxJwWMRRYgNJB0ICoszp5UdKGi59IkqcSLGixYsXW5CpcKIXmxFnXP35MoGhyZMoU6pcyTLlhj2CGrRREKYXDhh5FnBgwKenz59AgwoVypMnhyQL+Izo6MdBDTEi/6QgEAGDCAc/zNiZoiXFnq9gw4odS3YshD0QAAgw8uRKARUhXl5AsYTow40xvUAk8MDNUYIivGhQWACzkY4cJXp5QRGhb6ILWSj06pGB7qMGbpaQuFbiiONCACRQ6YVhxwVcATqskOOnzGeETQpUcMHXMSgBrwn5+JC7t+/fwIO/DgQAOw==', -'img/arrow-dual.gif':'R0lGODlhQQAUAOZpAP39/Wtra+Li4vf39/7+/hAQEEFBQfPz8////+bm5unp6S8vL/z8/BgYGG1tbWxsbLOzs7e3t8TExBEREfn5+bS0tPb29snJyRMTE76+viIiIu7u7isrKxYWFuDg4Orq6iAgIHR0dMfHx2lpaXd3dyoqKtHR0W9vbzQ0NN7e3tjY2MbGxqysrBsbG/Hx8YuLi7y8vFJSUjY2Nh8fHwwMDAcHB7GxsWZmZmJiYiEhIRwcHDw8PDc3N4+Pjx4eHgoKCp+fn52dnVhYWIyMjCYmJpGRkV9fX5aWlmRkZA0NDcvLyzU1NcPDw6+vrwgICNra2lxcXJOTkw4ODvLy8jMzMykpKT8/P5iYmGdnZ5mZmfj4+NPT09zc3HJycj09PcXFxbCwsMjIyCMjI2hoaPv7+zs7Ow8PD7KysgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGkALAAAAABBABQAAAf/gGmCg4SFhoeIiYMbQx+Kj5CRkmkUWU4TJAIDk5ydjxsPRGhoARAKnqipaQAqQCVoP0JgAqq1nF8hC2gdXkEAiGTBwsPExcbHyMK/AwpFOWgFBhUMhAgpWGPZ2tvc3d7f4Nk3IwEOD0hUo2gTFwSCBDBmUmb09fb3+Pn6+/kYDQ0Y0Dg4MMhChTMIEypcyLChw4cQIbA4ksCWRVUAMhRYYMCAlR1lQoocSbKkyZMoTS4xgUCQhRfqoFUBocPHDDE4c+rcybOnz584NWi4QmGQiwg4aKBpESNCgidbJIRZcSGM1atYs2rdypWrCC2GppyBMopHFIIX0x460CRADTRJLIx42KS27iAmJziM6qKEml27AnrIGGWDzF+7ALhIQJHh12G7CBK4e0y5cqRAADs=', -'img/arrow-none.gif':'R0lGODlhQQAUAMQYAAwMDOnp6SgoKPX19fb29nZ2dtLS0vr6+uLi4vj4+CYmJv39/fT09Pf39+Tk5D8/PxMTE9zc3Pz8/FNTU+Xl5Q0NDdXV1ScnJ////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABgALAAAAABBABQAAAViICaOZGmeaKqubOu+cCzPdG3feK7vfO//OgmCQiwaj8ikcsl0BBakxkNxqVqv2Kx2y+1eBAXCiAEBVM7otHrNbrvf5smAlDBY7vi8fs/v+/8WEQdAhIWGh4iJiouMjY6PPSEAOw==', -'img/arrow-reversible.gif':'R0lGODlhQQAUAOZvAN/f3zo6OtfX1/7+/tbW1uPj4+zs7P39/fT09PLy8t7e3pCQkDMzM9zc3DExMW1tbSAgIHBwcCEhITg4OPn5+QcHB+3t7c7OzkxMTIyMjDc3N7Gxsbe3t6mpqWdnZx0dHcrKymVlZeDg4CkpKfv7+0RERBYWFubm5n5+fgEBAcnJySoqKvr6+sPDwxsbG5qamry8vPb29icnJ1FRUeXl5bKyshAQEAYGBg0NDW5ubk5OTigoKE9PTxoaGkpKSvPz84uLiywsLDY2NqampkFBQerq6tDQ0J2dnS4uLiYmJtjY2F1dXaenp7i4uAUFBcXFxREREQMDAyUlJXFxcdLS0u/v79PT05GRkXNzc+np6VlZWQsLCwICAszMzPX19UBAQOfn5/Hx8fj4+L6+vhgYGPDw8DU1NS0tLSIiIu7u7tnZ2U1NTevr6xkZGQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAABBABQAAAf/gG+Cg4SFhoeIiYqLjI2OhwdPESIUj5aXjD9Tbm4oF2yYoaKCJxkanEsdDaOsjwcKYytuUA5HAK24jAVADm42QS8kh2JsxcbHyMnKy8zGBmlsNAs7W1wfMGCEA0wYa97f4OHi4+Tl4jo8EpxuOF0DggNXZG309fb3+Pn6+/k9EFJJ2qQY8k4QAiVqEipcyLChQ4cEIgqYSLGiRYpUQLAgRCGLhTQgQ4ocSbLkSAS5BMXAUgENkjMy0MicSbOmzZtoIPgokjLBg3VuJBBhYIbBhABIkypdyjTphBmgUhpo8OCGGxMYjFgoUwCA169gw4r9qiBqSkFeOISoEMWFhzAFLM/KFdQiwghOWlQkmMvXyoIvnHJsiMs3ZYEaQtw4aVJ47oEqF0oYaEy5sqNAADs=', -'img/arrow-solid.gif':'R0lGODlhQQAUANU7AAICAhUVFQwMDPPz8/f39////9ra2uLi4hAQEHV1dQ4ODmVlZenp6QoKCpWVlfDw8NXV1cHBwQUFBXx8fGZmZufn52JiYp2dnQkJCa+vr7+/v+Dg4AsLC6CgoAMDAx4eHvT09Gpqavz8/JaWlm5ubhwcHF5eXtzc3Lq6ulRUVBoaGvLy8vn5+Xp6emtra+3t7RISEhkZGVhYWOzs7B8fHykpKeHh4dvb2xcXFyIiIgAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAABBABQAAAagwJ1wSCwaj8ikcslsOp/QqHRKrVqvWGUrku0yBbDFSuQtFwM6nSTEGJjNpXQakNCwkoWDbc/v+/+AgYAbLypycgIUHQZHEzmPkJGSk5SVljkeh4cINRcgRS44oqOkpaanqKk4AJpyHDQjbkQFJze2t7i5uru8uwYVMa0YMg4Qb1gfmhYZBMdZaGkmBw/OXQoNKTPN1V0kKNzg4eLj5OVOQQA7', -'img/arrow.gif':'R0lGODlhFAAUAOMOAAAAAAcHBwkJCRAQECEhISwsLDg4OEBAQEZGRmhoaHh4eIeHh8fHx9fX1////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQp8MlJq7046827/2AoJYxIFMp0AGzrvgMirW/tBiCgGA0oLKKgcEgsCiMAOw==', -'img/assaycurve.gif':'R0lGODlhFAAUAMQcAK2trYyMjKGhoY6Ojrm5ufv7+7i4uJmZmbS0tMjIyMTExHV1daioqPDw8O3t7dbW1sfHx39/f4SEhG1tbb+/v+zs7GlpafHx8ZeXl4KCgrOzs////////wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVbICeOZGmeaKqubClocCzDgklseK7jiDkElMJOpzEdAAML5jHcFEsGnIMxSQyfJI3uIoHssCOtrpJRCHEGk1jXWEQA8IO6uUkE7gMTgq4jmF4zgTUthIWGh4gpIQA7', -'img/assayplate.gif':'R0lGODlhFAAUAOYAAKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAUABQAAAfYgHaCg4SFhoeIiYqLjIUJJjQwAVFdCAUBBQMDVQSEAysQdBkGPjEdUgYgABUOHoQBFlMYYwpYAmAQCksNDCRehC5vEzIAbQIpW3B1HwocHXOEZigzWklNDiQVTAwZC2sjV68nHDkMF1k9OyJGEkQaOAiEQGphOhsNTgcsTw0OXxYqIhBC8OEHjwNCAExQsuCFmBpxKCQgNISKgBsHNACQgGFBGgpuDIQoQehMCyQCghwBIYfMCBFlQnDZIHAQAQ9FrLAZAOVCARtoHiQo8aBTo6NIkypdiigQADs=', -'img/barcode.gif':'R0lGODlhEAAQAIABAAAAAP///yH5BAEAAAEALAAAAAAQABAAAAIdjI+py+0PDwhgWnpzxrTbXXkeCHKa+KFbxLbuixQAOw==', -'img/benzene.gif':'R0lGODlhFAAUAOZnAA4ODllZWf7+/gcHBwICAgEBAQUFBfr6+oWFhePj483Nzfj4+G1tbVNTU9zc3JeXl3Jycu7u7iMjI7i4uBkZGQQEBAkJCQMDA7e3t/v7+1RUVPz8/KmpqWhoaOTk5LS0tJ6ennd3d29vbwwMDDQ0NJWVlcLCwlpaWsXFxXV1dWVlZQoKChYWFpOTk/Ly8pKSkt/f3yAgIBgYGDo6Oqenp7GxsWZmZmpqatHR0VtbW2FhYRMTE7u7u0VFRYODg39/fwYGBh8fHw8PDyUlJevr6zMzM6qqqvT09KOjo0BAQAgICEpKSnt7e9fX12tra11dXURERBwcHDExMTAwMJiYmF5eXsfHx8DAwA0NDTc3N3BwcD8/P1xcXFZWVi8vL1dXV5SUlJqamqKiooeHhxUVFWBgYAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAUABQAAAfmgGeCg4I4Gl1NhIqKBwxAFhYDEBmLii1kZhoJCQ1mMg+VZxhTZlITZw4fol5mRTyEEZ0sYGcbKQNkgy9kBV9HgjYXIpRUFGZJKIQHTgQMggG5DiRmEjSKSyVnAGXPuQ87CAKLA9zb3aGDBuXcZ9DoghXr5+8X8u25EwgblQX27mNmKIQZ10EbO3dnkMQwk+UKoRoLDAq6QaCMizMCfowgoAUWlwIQBC3QQUBIuDNEnpwQJMAHlgoqDhAyMcPMECOEOEgws8VKKBBRzPRQoACKmSBi3mEMocSAgRVMxCkVBCNHFQ+hAgEAOw==', -'img/blank.gif':'R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', -'img/bold.gif':'R0lGODlhFAAUAMQcAAAAANnZ2T8/P0JCQjs7O1hYWNjY2D09PSwsLDw8PNfX10BAQD4+Pt3d3dvb21ZWVjY2Ntra2jAwMDQ0NCoqKi4uLjIyMtXV1dTU1C0tLVVVVVBQUP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVSICeOZGmeaKqurFlsQTsWB3DEcgIRgGDIF8IkAVjgWJiEhcc4rhQEiaD3aykEmalRdq0wbE5VgIEYUGWRQbkYTjnU5oGM0xhQNIU5/ZHX+/8tIQA7', -'img/boldhash.gif':'R0lGODlhFAAUAIABAICAgP///yH5BAEAAAEALAAAAAAUABQAAAIjjI+py+0O3gJRImqqPXjnqnmdCHpcaHVouj6q+cEjTNc2UwAAOw==', -'img/bracket.gif':'R0lGODlhFAAUAJECACkpKYeHh////wAAACH5BAEAAAIALAAAAAAUABQAAAIulI+py+0PEZhqAnZbrm4nzy3gh3WldmLBGkjdKrTHKMmyQc+2RH3THgkKh0RFAQA7', -'img/butane.gif':'R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==', -'img/calc.gif':'R0lGODlhEAAQAOZWAP///01yp7u8vKOjo1Z7sOfn56CgoOPj49zc3Pv7+5GRka2trYaGh6ioqKSkpOjo6JWVlcHCws7OzoiIiKmpqYeIiIiIiebm5uvr656enry8vNPT09fX16urq2uSyOLi4mmQxqysrGyUyrS0tIqKipGRkttYUuXl5ZOTk4+Pj6qqqmSLwY2NjeDg4IWGh+np6cnJyZ+gocLCwpmamtHR0ZmZmpSUlIeHh7KysrCwsJGSkrOzs7GxsW6Vyp2dnrW1tWeNw+Hh4WiPxcXFxfz8/NjY2NLS0uh0c4qLi46Ojpydntvb22aNw6WlpZeXl9/f37+/v9ra2oyNjmePxYuMjIiJif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAQABAAAAeygFaCg4SFgzsUDR0hCyEdDQ4DP4QqAJaXmAOEAwABnp+eABmEDgAEK0xTIB4iBAAGm6ZAQqsiPa4xm0RRHEYSMEMyUK+EBgALSUVNJBJHJgmjgz4AB0EISxwbGzQASoQzADwKHwspCBQsCTWEEAAPBScHHy1PCAAQhCUAIzYFOCgHcihIoIMQFQAYMLx4V+DCBQBSCE2IoEGDgIsYIyAhpMACgxsVqliYUIGBCyeGUhYKBAA7', -'img/cancel.gif':'R0lGODlhEAAQANU/AP/s7P7Ly/0wMP0tLfcSEvIbFfc0MvokHv5mWfdDM/k6Ov5iVf7q6vYODvgWFvlNPv5RUfpSQ/9qXe8AAPhJOfxLS//x8fUKCvo+Pv4TE/wpKf1dT/1HQ/gTE/8UFP8rJu8XF/3Fxf/z8/hFNf/Pz/9oW/xISPMAAO4SEvsAAPsoI/YUFP1fUvYdGP40NP9bWPovKvw8OPhHOPs3MvsNDftMSPtYSvUgGvITE/hLPP/t7f0AAPEAAP/y8v8AAP///yH5BAEAAD8ALAAAAAAQABAAAAakwJ9wSCwWM77kbpkx/jwfSQmBWCxUtCJUwnG5BIPY5tAZbl8kCLgSqNkOK6GvxCGJdJUKoBeARU5yCC4QOnc6PQAYDg88QjsIa4eIih05jT87CwMaJpIACgQNMpc7LJx7AAAWDAYXIxNCKRszAT0MCgoMFiEtCbA/HQc2HAEKHQ0GIQYJBSBDwREqoRcXBczORCs3ORQyIwnXTjg85BPmKE7pRUEAOw==', -'img/cds.gif':'R0lGODlhFAAUAJEAAKNJpDNmzP///////yH5BAEAAAMALAAAAAAUABQAAAJOnI+pyxsPY0xB2ItxQDV7ux0dAAhkaZFCaFSomcIgJ8vlyw7uhd5XvovBcLRXTwisHWNJoxDW5D1LUaEzabqpsjPR55PTScaPhvmMHhQAADs=', -'img/center.gif':'R0lGODlhFAAUAKU9AE9PTwUFBT4+PoSEhElJSRsbG1tbW21tbTY2NiIiInd3d5iYmBISEldXVwkJCYiIiF5eXmVlZSYmJgwMDBYWFjw8PAICArm5ubi4uPPz89DQ0Pv7+9nZ2cjIyPz8/OXl5aioqLGxscnJyTMzM6mpqYyMjKGhoTs7O8HBwcDAwKCgoFNTU9HR0fLy8nFxcS8vL5CQkJOTk5ycnHt7e7CwsLKysnx8fKurq4CAgKKiok1NTa2trWFhYf///wAAAP///yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEAAD8ALAAAAAAUABQAAAZuwJ9wSCwaj8ikEukbKHsWSzHg8wUyRUTV1yvStr6XsAD2HasBI6MqOVJ/mCLGYT72QsLLMP6TLuGAeX9CMINyPxp/GWmBiEJ+Rm98Qxo3dUZbXUQZVQRGJWCMPVRbRhZoHEUnpUU+Ck8BjIazS0EAOw==', -'img/chain.gif':'R0lGODlhFAAUAOYAAP////v7+/r6+vf39+zs7OHh4djY2IWFhd/f393d3dXV1fb29klJScPDw7m5uZycnJ6ensLCwvPz8+vr68jIyM7Ozufn59TU1E1NTeTk5H5+fmFhYcbGxmJiYlRUVEdHR3t7e1paWrS0tO/v75SUlNbW1omJiZ2dnXd3d3h4ePT09MzMzGhoaMvLy+np6dnZ2be3t5ubm8fHx+Pj409PT7y8vL29vVVVVZGRkZOTk6GhocnJyZmZmerq6isrK1BQUG9vbzMzM1ZWVjAwMKysrF9fXzExMaenp7+/v4ODg3FxcV5eXtPT08/Pz7u7u5eXl8rKyouLi0hISLGxsZiYmJ+fnzw8PISEhM3NzTc3N2VlZV1dXUZGRlNTU4iIiDk5OcTExDs7O66urtHR0aOjo////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGUALAAAAAAUABQAAAd0gGWCg4SFhoeIiYqLjI2Oj4IghkA3hkkkgyEahFVBPimEZBgPgwc0hB0bID+EWkuFXSiCJFJHZSFKgg8fT4VXDIJFHYJRH4IsW4ceBxAYPIMeGjgMOYcHYVYbhF5fQ0KJXEYQhQxZMYknJoY6VJDu7/Dxj4EAOw==', -'img/chainadd.gif':'R0lGODlhFAAUAOZUAP///56ennFxcd3d3ZGRkY2NjdPT00VFRcHBwc/Pz/f394+8Z8DAwPr6+pSwhPj4+E1NTUZGRru7uz1wIIiIiJCQkHt7e1FRUUFzJTdrGYaGhoGBgampqY26ZJeXl7LSlZGugUhISGVlZVOMKNDmunBwcHl5eYu6Ys7Ozoy8ZWKLSmaOT7CwsJKSkoe5YD9xIrKyslmDQpWsiGtra4+7amlpaYGrYXKVXbTUlcTExIuLi22AYr29vbHWko+hhXh4eGFhYdjY2Ex7MZubm+jo6Nvb2/Hx8VePLfz8/LbUnN/f35SUlJeyiNra2rHTkK2trcLCwoe6YK6urm5ubv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFQALAAAAAAUABQAAAejgFSCg4SFhoeIiYqLjI2Oj4QKEgUBOkpGlAUSCocNAQREAwgEQ00DOQQBDYYMFkEUECItJiIQFDAWDIYVGgYPITwoUE8hDwYaFYYcAgkbBxEXFxEHGwkCHIYDNUssUh4CPx4+NysxMoZIRUAzJVMIBjs2OCQ0RyCNKk49ACkLE41CkgAY+CFDoxcnogBw4a8RkxEdPnQYca+RAwwZMDiAxFFRIAA7', -'img/chaindel.gif':'R0lGODlhFAAUAOZbAJ6enrxDBf///5GRkdPT03Fxcd3d3Y2NjcFZH0ZGRnt7e0VFRYiIiJeXl/j4+Pr6+oaGhs/Pz8DAwGVlZbu7u/f3992mhpCQkIGBgUhISMHBwU1NTampqVFRUa2trb29vcpmKP7WuMxtL/7Nrnl5ebxCBeZ3Iejo6Pa1jfh2APe1jfWocpKSkv93EcJcJLFKD8uVdmtra89zOf+GIeGrjMJcI+p5Bd1kAcBZHtvb287OzsJdJWlpacTExP+STZubm/9/GOKvlOuKQJllS/SdY+OwlZSUlO9/GHBwcIuLi9/f366uruFoA7iGavHx8W5ubu52AL5PB8LCwtra2tjY2Pz8/LKysrCwsL9YIWFhYXh4eP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFsALAAAAAAUABQAAAekgFuCg4SFhoeIiYqLjI2Oj4QVFAcASUpOlAcUFYcPAAMnBhoDP1MGPQMAD4YSClQMGxMsJBMbDFYKEoYXEAQOGR86Uh4ZDgQQF4YcBREYCwkdHQkLGBEFHIYGPEZXSw0FWg1NWCUvMIZVOVkxSE8aBEMyKiErIkGNOyg+LTNCLo0BRggYeCRAIwREgKSAwgRHIxogTNi4EcWCoyI1AiCwCKljokAAOw==', -'img/chargen.gif':'R0lGODlhFAAUANU7APX19T09PQoKChISEgwMDOTk5M/Pz7Ozs62trZOTk9/f33Fxcdzc3KioqHp6en5+fuHh4UNDQz8/P4qKigQEBLGxsYWFhUZGRvz8/D4+Pn19fYSEhAkJCaqqquPj47KyskFBQX9/f8vLy3Jycm9vb6+vr/j4+A4ODjk5OTs7O0JCQmlpaXl5eaysrDc3NwUFBQEBAfT09NXV1e7u7v7+/jU1NY+Pj+bm5jw8PDMzMwAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAUABQAAAa1wJ1wSCwajYDD5FHBHIuMi246pQQMz51FQHAgIIDGYiBIHBO6iMJYCOgsRYMgkN1FBAxiYFCoKwgXQxgUI3VCDjoAQhU6HYY7CDoHQiEwJjsaNS4oKTgZEiAkOxA6E0IbOjOYOaytrCs7ADoPQiU6LY8NOhVCMTosjwsUTkISJx51BQN0QzIcKnUBAlhEqBI3RgoROmZGNhwDCw0AEAgOBAJwTyIZL1RTF3mGNB8PEweKj/o7QQA7', -'img/chargep.gif':'R0lGODlhFAAUANU8APX19T09PQoKCn19fT8/PxISEoqKiuHh4X5+ft/f37Ozsz4+Ptzc3K2traioqOTk5IWFhXp6enFxcbGxsQwMDENDQwQEBM/Pz5OTk0ZGRvz8/Dc3N0FBQW9vbwkJCWlpaTk5OTU1NQ0NDYSEhAUFBQsLC4+Pj/j4+A4ODgEBAePj4w8PD+bm5tXV1fT09Kqqqq+vr3l5ef7+/n9/f3JycrKysu7u7svLy6ysrEJCQjMzMwAAAP///wAAAAAAAAAAACH5BAEAADwALAAAAAAUABQAAAbNQJ5wSCwajQCFATHRHIuMzG46tQQuTx5EQIk0DgCHpCDAHDG7SsL4COwgxYsgQOx8iBUBgxgoPIgcOkQJFBlDGhY0RQSCRBE7AEITOy9FC41DDTsKQjMpJzwDIRsgKyILBBwdPAc7BkIjOzahOrUiJbU6dwA7CEIwOzhFIJhCDjsTQi47MUUbxTwSFk5CBCgqRCHFDwV0Qy0eOUQDA3wCWESxBCxGCRU7ZkYmHgUSDgAHDREUAnBPNwtIUJmSYU8WITJqIDCgINLBh0WCAAA7', -'img/chart.gif':'R0lGODlhFAAUANU/AP6YlpW57UWE3RZNzPlXVxEyw5TCl1aO3/6tqhxm1KjG8SFKerLXt/60sXSk6Gyd5FmlUGSzWmaZ5Iuy6l2T4YSt6TByK3wzfP51cfxsanSi5f1mY3y4gnim6JzIoGKW4Tp82nKxeKHC76rRr/54dKTNqCt02P5wbVGM33yo5/6gnv6kov5+ef6FgU2WRfM9QYO9iv6BfIBEhzyANX4/g67Ts2+g6ESLPWqrcGy8YPVHSv5gXBpBdP64tf67uP///yH5BAEAAD8ALAAAAAAUABQAAAazwJ9wSCwaj8ikcvnrOGwPCYUptCmuogP1J1EEJgHBliKaVAKgJImEOWVQgUpqYlL7eo2GINDRVBJJGD0tMQggEw8PKYBIGQ0sJAgmFRIfDgM5EREQEEQbCG0rCSkUBw8DDAw1Iy5EBAgnGyoJGigoEqgwHCU3risbOwADDwICFAUjHCEeM0Q6KjsEwh8CIAcFJSE4BhZELwDgwqUHKAUeHgbcRDI0F+4F8PEL8zw8W/f4+UEAOw==', -'img/chembl.gif':'R0lGODlhFAAUANU/AITNdWm3Wbrcs5bWib7otVuqS3O7ZLbhrsHiuqbYnKvYobLbqvT583XCZf/+/2OvVNj109nr1M2PlPlpdnjFadHsy8rlxe0pO5DNhPr9+pzXkP3+/O3268a0tsvww3zJbVKjQeEUKIjPeuHx3oDIcePx4c3myXrAbOn55YjBfFeoRsbiwfn//1+sT5DSg//9//H67p3Mk7rxr6/rom+/X//7/9DwxvGgqVmoSd8CFuUEGfmdp+r05+uFjv///////yH5BAEAAD8ALAAAAAAUABQAAAb/wJ/Qt/H5Bq2WxrgRagoPkpChASx+goao4qgmfJYTQPBzEHCPxuiX2TgQqkeAXHSUPY+CiOGrrHwmAS0UKz8QCEI/Pgcpfwc0Hws+CCkCiw0UMYl2LxsuSQM+Qz4aaFI/GwknlgcNYz4TFxKTHx8Jih5QJByGESw7OiEXHT4oJqJmBXo8Pyg8LDc5wsQwI6KoCgNXjxQIPj0TEhsrDQ0KiUZEny2hPixGT1FDBCkWPgkB5j42lT4LNAE0TaLxYM+GCvYqEKSQ0JuiA3EolGCT4QUcOXR82PnBYMYJSQgw2ZNh4IuJD3NGcVDX4gEGIwycoDmRCJ0MFQUU+IhwIIIPMAIqVGioOSRDjAM7P6gwUCKDggMZiKLz8QICiAABrhipIbWmjwwaWmDYUELEiRVBAAA7', -'img/chemdraw.gif':'R0lGODlhFAAUAIABAAV6NP///yH5BAEAAAEALAAAAAAUABQAAAIpjI+py+0Po5x0gXsuMDt0noEe94lIh5ZjgpJsuG6aqmVYXOX6zve+UQAAOw==', -'img/chemene.gif':'R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==', -'img/chemspider.gif':'R0lGODlhFAAUAIABAAAA/////yH5BAEAAAEALAAAAAAUABQAAAI1jI+pyw38WoiISoCzO9bQ/kSZOC1dcnoluiqh27Lna8ZqarOwqJUgB1NBRjhdRZITIpfMRQEAOw==', -'img/cleanup.gif':'R0lGODlhFAAUAOZXAJGRkWFhYWlpaV1dXZKSkqioqPHx8XV1dYGBgVpaWnl5eX5+fi4uLm5ubktLS2dnZ3Z2dmZmZl5eXo+Pj39/f2BgYFlZWZycnE9PT4iIiJ2dnfr6+pSUlJqamvDw8O3t7ScnJ7KyspCQkKampoqKipubm1NTU1hYWKqqqvX19YSEhPj4+N/f30JCQvPz88/Pz9TU1I6OjsLCwq+vr8HBwYyMjIKCgp+fn2xsbI2NjYWFhYuLi3t7e9DQ0HJycmtra4eHh4ODg8jIyDw8PLS0tHNzc8TExGpqam1tbUxMTHd3d6Ojo2RkZE5OTjo6OklJSVRUVOfn55mZmZ6enj4+PsXFxZaWlv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAergFeCg4SFhoeIiYo7DkKKhgAnIASPhFUJDEcflR8pLJg1G48GAEUCEhgtMyuKMhkQB6dJTg82iB5LCQ0ICw0DVAEUTIc0EwsBOAIRCggIEUMvhQYXGhpAMQA8Oko/CgNEhhNSHVZTBTcXBDkcPiiHRgpIBxAUAAUFIyILiR4ZFgMVKggIwuEAJUU9HpjAAKWJhQAhKm2AUSLAEwcqXFQaZKADiSgbQ4ocmSgQADs=', -'img/collapse.gif':'R0lGODlhEAAQANUAANLh87/U7rrR7aPA57HK6qXC597p9qC/5tHm/OPs+Njr/////87d8svi9rzX9pO459Xp/8rh+qnJ6tDl/MTd+Nvu+5C25eDy/8Da9v3+/+38/5u85Z7B6q/I6rPM6+j4/8/k++/9/+Hz/1p6zur5/9ns/9bq/+b2/9To/jJVsv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACoALAAAAAAQABAAAAZuQJVwSCwaBYdBIWAkHhKLRcawaaoCoaxWIzEWSOAw+DMgCiqn9GmkPjUYQ4JoLhqlRvSLJw7q21N3fSAEQx0ICH+AdwgThEICESiSk5MOcEMFJpqbmhAPRgEloqMKHFYDFKIKGBZWj0lLrrKzVkEAOw==', -'img/copy.gif':'R0lGODlhFAAWANU/ALjM8IKs55mrxfv8/ihSqCRKmNLd8qvC76O77iFEi2ua2L3K4pquy/f5/Nff666/1Km5z6Kxx/Dz+StXspemu1GD0TVJY5Oit7LC2HOh3lyM2q7E78fO1JGz7oqu/HOS0Zy1526X58zX6fX2+5Cq4IKf2Nvk98XT8s7U3aOyyDVlxbra/5ywzlV5wWSFyWaCpb/L3brF1JepxJ/F+uDm8ebq83+n8+vv+a7Q/1tyj0duumCO53Ka6sfS4f///////yH5BAEAAD8ALAAAAAAUABYAAAaewJ9wSCwaj8ikcslsMjGYxwOSQjUxvqwv8uIwH9oBJZbzKiG+Fc5w2RwOiE5HdExlG5LaRusLqBZGAj4zHQEZCHw8ABOARBQDIzc0DiA+Hh4GOxMEBEUXDYYKCiRaEiYnDAWeEg4iPTAlPjYhGhUVqZ4WurofPgM3BgAbAqpKLj61thUCCUstDSwMDAICMs1KOpwEBQUJ3k7g4eLjQkEAOw==', -'img/copychemdraw.gif':'R0lGODlhFAAUAPcAAP////j7//v7+////kppq5m17IW4n1JxrVJyrXWzhtnr6FFxrPT59ymQYiuTYkyggpO53yiTU8TW9FyV6SSKV8DV/SaQUYGYv2aX16O97fv7+XOxkonA+4W696XC7Pz7+YW480ifd3CwhJ/HsYi7p/v9/dfo/bfM8lCkeYGTuESecWCqkCmOa/D49K/T/JS8/7fN94S++5e9+VN3spq5qUSI31ud8IS6+JGx65jE94CzmN/u/q/G45i0687l/Wyo8dXl+eDs+vz+/5fBrimPYLHF+MjX9X+h4fjz8oCumTOab9Ph3X24sofEqWyvsmCU4CCLVZq48nqPtsne+3639/v9/8HV+Y247rXQ+lB5t5XC/r3ZzrPZwqC871SgfjGSdKzP8qvD8qjNtjKUfHmq4pKy7Pz794us7oCu7Ian5nu7l3CinT2dch+QVp667/r8/3WxhU2ihIKZvsPW9v3+/VCO54G6+Gaa2oW+o43A+rzR+aPA7xCFRjJ2157NtXug5qrPw4GXvGerkzWD5R2PV6q/68HV/nO1mD5/38ri/p7B8dDg/+XlzZPHpF+mdYG29D+dbz+ZZKnA7pe17b7gzsDV/73S9cbY80p4vrfO+S2NcIu28R+QWXu2nsfh/Mzg9zydc5rHsp+57UeN4vz+/KbUvFifcHe0kae/8BqIW1R7uIGUuWqriiiGif/+/8ze1aXC49zo4rbO7qbRtv39/7jcxoim4sTT+BWJTM/i/bPL+L7S/JTBy7PK+Mfd/Mrk1MTS5zyYgnG3hGym7mGsjYO7vKvB+ZKz7ZW09aSvxZK173W0wa3TsWeu+kukcoS08zyL6pOx6lGfdv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAUABQAAAj/AKcJHEiwoMGDCA9yaGaHyqMf0MgkHBhjB4CLQBRtwjBx2g0TAN4EyGFDy6A7n4Ig7JBrzok9eXx4SuRr2ChYB0FM0WUMmQsArmgBuIKlBg+DzxbJYuIEDIAqAQCgkfGiD7CCEJYReeCFTTEPRQo9qTMBEaaCphxsQaIjAYtUvG4ZkXDJUhaCfDppuMgsjgE4ms6kOWLLiiqChJQ0McNFwaxQpYKFQZVBkp4ZBNtEUCNCEAoKYih9iTIpWg8YCAhyanBqBQ1i0l7VGtPFTQFRvQ4QxCXsF6kWHwAlGQGqkqFdFTItIOgs0pIBQkg4whOilbJjOMr8IVDQDxRWsYZsF1CxRs6FQClWSUl28JAFSI06yp9Pf1pAADs=', -'img/copyprod.gif':'R0lGODlhFAAUAMIFAAAAAEBAwICAgICgwKCgpP///////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAAM0eLrc/jDKSau9uIlNZPiDsm3eF4ijAyzmeYzCAcz0erQo2di3mccR3CsVGYAyyKRyyWQkAAA7', -'img/curve.gif':'R0lGODlhEAAQANU/AFFRUbu7u+7u7mdnZ/j4+PPz81dXV1ZWVv7+/k1NTefn5+Pj47e3t4iIiEZGRlJSUpOTk/Hx8UBAQPX19cXFxc7Ozv39/aqqqo6Ojr+/v97e3oKCgvf390JCQjQ0NOnp6ezs7HFxcW1tbaKiokhISNLS0rGxsU9PT1NTU9DQ0EVFRZaWlsTExL6+voeHh5mZmVVVVXNzc5KSkk5OTkdHR2lpaXV1dcLCwtbW1ra2tomJifr6+tnZ2T09Pfn5+f///yH5BAEAAD8ALAAAAAAQABAAAAZlwJ9wSCwaj8dIqgE41S6842Rw2OQCKwOgYiH6DiIFsRDoMIY7W4xzXEhAQk1CgPy5MIifDFInjAwvCg8tdSwzJB44OnRIBSgqDhl1QyY9CTeTQgs0ACWZPwQDMB+fPxQheaWqREEAOw==', -'img/curvemap.gif':'R0lGODlhFAAUAOZoAIqqAN3d3dDQ0Ful4/p7VPx7Uk6p8MXp/12k5Y+qAKOK//94R/7NsU6o8F2k4Vyl4/17U93kt+jryP/bxNPx/5ra//94Rs/Pz+6Uc/p8VfXFmfx7Udzc3Fil5erj/4yqAJeuD4uqAKyV/9zjp02p8f2miqSI/9zko6GK//LGm1qm5Weo5PKzfE6p8ae+OpGuDZuM/72z//93Ru6Tb/iEXpmM/46rAHq25pHE7rLHUl6l4a+g7pHD7e+Uc5PC7tDbgfymi9bw/5LE7/6nirPj//C0fv97UPp8Vlut7ojG9feEYP2cfHS26Vul56mP+6zAPJKyEbXIU9XP/+Lc/4itAJjb/9HahHi25eTa///awv+lg/96T7Hk/3q25YnG9k+p8P57UJCxD6WH//+ni7Hl//SzeomtAMzMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAfggGiCg4SFhoeIiYqILgAhT2g+DgNJaCUEBECGABESCWgIBxQNaAUMEwSbJz82aE1cVSRoRhosEIZhVGZQaDcGLUxoGAsLPYYCZ2cCaAHJAczJHIYiCigxaEMFW1poOAMDPIYKWB41aBsMWTJoAwdBDuJTUjBoYBplFmgqZBUPhk5iTOwQtsDCDDRXDHzpcswZtDPPmp2RVigHAABR0AgZ0MELmjEFNizZ1OlTqFGlTqUqBGCEFZNEKhhAAyFFkQyGXgD4AALNCh0PkKChkeGIEkMXki1DpgwN0wuLoko9FAgAOw==', -'img/cut.gif':'R0lGODlhFAAWANU/AKy815+tx9LV2FeG46Sst7W9yVhhcIOm683Z7IyVozVSjDRDYVeE3k94zVN+1d7i58zX6UxmnFheaTlWkT9iq3iBjmx3hyUoMWCQ7snT47C/2pmmvH2Bhs7P0UFmsDVQhmyP19Da7uns7l1sg0971Sk8Y2qLz4abwn6c1rnH3+Dj6Obp6y5DbK61v0JhoZSdq9fc4LK5w4ei2bm+xKy0wKe31T1KZ9rh7J2lsGp/qnWAjlJ4wsbM1DZHaUVruf///yH5BAEAAD8ALAAAAAAUABYAAAZ3wJ9wSCwaj8ikcslM8ghDFa4JSzyErVnz94oJLZ0tLSE0CLaFBKEi2f4EupGE4/5ZDKPCNnQYoBoOMilLCBgMLhE7JD4nS30eEzkNNwATSwMIGQoPDhABLEsMEDUfIiYUJRdLIBQKNisAPQsBSxoRPRt1uru8vUEAOw==', -'img/del.gif':'R0lGODlhEAAQANUpANVdTN5tXeHNy/G8s+iupufT0cVYS+auptWUjN9UQOKck+YsEOOknu7EvvOOf+zPzd1yY8hbS9R7btq/vOa4sdIhBckzHePV0+XY1vC7s+jY1t17beiBc9/BvtgLANuRh9IqFNS1s95VQPHU0eHHxOKgmejKxuB2Z9yDd////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZHwJRwSCwaj8ikcdAwPiZGQcZxEI5KgqRisWEAlMKPB1QApyAGAAWciAgDyoBlqJEgCRUEsUM6ckQmRSFHKCdmQhcYh4uMKUEAOw==', -'img/del2.gif':'R0lGODlhEAAQAIABAO0cJP///yH5BAEAAAEALAAAAAAQABAAAAIYjI+py+1vQJKNBlsvjFtjZn3T2JXmiSIFADs=', -'img/delocalized.gif':'R0lGODlhFAAUAMIEAEBAQFBQUHBwcM/Pz////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAMsSLrc/vCJSAegbhKLGd+dd4XNR4zhZ3Yqyo4Dqayy6WJtDd/VrsueAHDYSQAAOw==', -'img/demo.gif':'R0lGODlhLAEYAff/APHKzuimq+y6veq0t/vv8PTZ3PPV2P35+frt7u/BxOeip/Xa3Oqvs/DHyuWeo/fg4vLO0Pjm5/TT1uWdouiorPzy8+u0uO27v+/Ex+ahpvHKzemtse7BxOqxtey5vOagpfz29uqwtPXb3eaip+afpOekqeu1ueelquqytumusuinrOqusu6+weu2ufjn6O27vuy5vfrw8Pbe4Oy2uvPT1euzt/vz8+elqfnq6/fk5eu1uOmssOiqruirr+mrr+emquemq+ejqO28v/HMz+enq/bd3+iprfLQ0uWfpO6/wuWgpfTY2uekqOagpO7Bxe29wOajqPHMzvTW2O7Aw+mrsPPR1PDIy+/FyOaipumvs+y6vuiorfTZ2uahpe29wey3u+6+wuiqr/XZ2+y4vPLR0/ru7/z4+Pbf4PLN0Pfj5PDHyfjo6fPU1vDJzO/CxeissPDKzPfh4+28wPfi5Oy4u+ipru2+wvnr7O/HyvLS1fLO0eqzt+akqPrs7fz19fPR0/TX2eajp+7Cxu/Dxvfj5fjl5vDKzfHLzvns7e/Dx/LQ0/bf4e2+wfbg4fLP0fbh4vfk5vXc3uu3uu69wPjn6fXb3Pjl5/TX2PDGyPTV1+u2uvv09Pfl5vzz9OqztvXY2/Xd3ey1ufTV2Prw8fz39/HNz+Whpu/Cxu7Ex+alqvru7vjo6PPU1/HJzO2/wu7Cxey7vvTU1uirsOeorOeprfLNz+/GyPTW1+/HyeenrPHO0eitsemsseqtsvbe3+3Aw/Xd3+mqr+myteuytuqxtvDLzealqfTY2fHQ0eWfo+mxtPTZ2/bg4u/Bxfvx8eamqvno6fPT1uu3vPTU1/vz9Pbe4emvsvnn6Pvw8fjm6Pfh4umusfnm6PDFyPPS1PPS1ey3uuWhpeqytfjj5e6/w+7DxvDGyu2/w+mvtPTW2e/Dxequs/HP0fry8vvy8/bh4/HN0PDGyeq1uPrv7/PV1/HIzPjk5u26vuWgpPDJy/LR1O/Fyfrr7PHO0OWcof///yH5BAEAAP8ALAAAAAAsARgBAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tEhACVKnTnLhQhJFESKYttvjBxIfk1QnmOJln6J3sYPPhuuvuHEkHZKkXuFP06Hg0GUPX2u8evEdM3ZU5xD8ER4TI4pP/z9rvfwEFeVTkIkwoPx4suXj+5tQ3kEK+QXeg5Vfnsh9/uXJc4B+XQFonQlXmNCEgdXJMCCBWR1RHwbmXdFAA4JsQB+DHhzwIIRVHSCDdSFIgcAQxiFkAQULAuhAA+R4ACJVHrqQgXEYIKBjGZUwNIgrLTDoz4xSHQCCDauE4A8KS+ioI0QITCEkkVD540AGJWzgCg5OIjBRD1NSyVR5HnRZkZBDiqlUfDQ8aRGaaiIlXxdFZNSBgTrEeRR/PWi0SAPMlacDBBDoWRR/HFVQQSQNzGDcoIQaOhR68nWkaAVFGDEBpIQWKilQWtwYn6WXxtJCFJ12+ulPF/AwqkeXVv9wSKqqrtpTqK/CWgE0utAaqa08nVDpRxUsIE0PnjDiK7A7IQqSBR3IwoQDWOjQAKFsMKuTsx9ZYMEOUFSHghTSaXsTt91uEJ5xI5xRrrk18YdHSBZk8UF1DqQRG7w28beESB04YJ1w/NIk3wQLiGRBeQQXLJN8JyyQMEgBD7yvww/H54PEIdmLr77vYvxSfFlIPLFHGyhh3RMXiwyTcQ4AsUENJHQQD8cehRNfKy7LREYmRTwgNAvGBaHPR/Ll2XNGDQjxRBApQiT01EQbF8KHG8lHwdIWTfEKBlegAqZ7DU09tHVHYI2RDQKXFwLXEymgQBA7oGCCB+vmqpDZVRv/l4ENalt0gHxnwB2R3IgrsMUGBjLEd3kOBj6RkW1XJ4zhECWeeAp5D7v32dZp4KHkER1gg6jV6YG5Q5rLzUMWYbQIoOMP9G2cFaOT7pCHMZRg3QirN4SG5iXM0AAMRgiJwUKgr8xFDB5SNLoLjFeXT/ALefgE4ihgcKEWFAj5wskIPVC9fCVcoIFElVDj4SOSZLChJNgrNLoqDKwDxoUX2sGEkDXwAQkWgiYHQCQ1h8gBMDCgmiQIIWT1G0juDlAM/vFPELKDk0LQJJ6F6OaDuokgQnKHgDZYkH8D4WCaEqLCDhYEhDBMgAgPMro4aMADFjjhQThIwBYaZwIzAGES/8YAwhkeJAcaUJJxtHChhazgiSu4gedY6MPifEAIqZmEBVZQBxVgUTVG3GF5KNCAhqgmUHpDSBWLE4gtIOFAYAyjQabowQSgMY1ihNkai/OC1Mhxjnj04B2t0wLdDaQ1F9DCGFDAizUq54+AJNtD7MgfNeQAEQ1BZGvuBSDU/RCSeazORBYmHyFgAhOHyCQiKWWdCQDBFLnYgQ+IEAQkOGACoAxl1CRCD0eVhxghdMgFGGAdB1CgA94KAQOWyYAU5FKN1mFERRoQHxV8ECLFmQAWjuktb3Vgmc/8hwWVlMJivsk8QYxjODFywgagoHEXic8NrrnOinjvhDAI0zmts/+CBnagnhPxxw3oYEE7VG528YyPCWbggw0BFJvGCYMXGoCB/+lzn9X5wYZ2+dCEHCBI1XGl7zSIEZJ21CAi2qMoMyIkGZ3UICDIgko5mlAA9emlBFmAJ1X6gqwxCKcCQcD5Zjo+8l1EBJeQKbo6ioif/kN8JtuIH8pQiATRsZ7ZMABCCwKgohrVIjbQEQ4EsNR1Cu2qBOGPV0WwESdRqKzPFFrnXEhFQfliEXHghJc0oiMyAGh99RSaBiTZwx9uYArVgIQLEOGmjCCgEH8FqNDutFKHGIcP6VTEGu5gJr6GSz6A/aMGRPCAgTxADIRtiD/6qRtAOEkEGNjARr4AVxH/FscBDGCBQB4gpcoeEIRwwIAS6VrT6qgAlGTrgBFCsAEVCIwiIJSidTZy0Ay49I8HTZE/nvAIFyAABIasY2qIGUiKWOkEO8hlBADUABGAN7wMSc0MNppai4ATlBFYgxP4U4IWpA2+HhQCJ+XDVqBGhLNqyC6+OAC9i1ATQDkAsIEH4iQp/ABAJaABRkYanxK4IHoTdoiT5vDOrWLUOiloxAHM4IcQi1is+62tRPCljAtQSgV52KuLGeIkFzjBCzKOiAP8m4MYIICV/lCDjneskDsQQgYiWIAH0Cq90fUOXyZiMkNMJjFhlXdyHgJBdn8whyVr+SBcfuuXSze6+KCA/0tnVojEIkEIPFAZzIOLjxMaG+eCLIAQOIgBiu4sEQ9VEgFl6PNBSOEhDpj4ImKWTw/kEANF0/AAU5YPEDyVET3wxwR8trRADjBU6wyKIwr2BxOcsIZQizrVxVHHrzRSnw5cARKuFrXWUuXT6nQAA/2whJnlOGD5fGDG5bGG91AVhV77owMXOsQaQOmt8AkpGRC1TipugAX6aNOn0L6QFSDZzT0Um0EGtOxFL2ICFP6xm95yVQsRpm4DhZadZfzjCZDZTSxU0RA4W8gRQLGKEpdHdKJ+qpV4sAcL/MeHGxgCBLzREA+JQGXlwZ2lyyMzL1dxFioIAi4ZYiSQWscCIP8+s3w+O1PijpAG8dnA6OIcnwmQoOW+HWGkyyOFmTO5HCElwQfkJqoN8jB7ji7PAHDg8xDPgw3zEXrr6u1UhcgA1iq4QNpCfAcJ+UMJrVMAROjLn+smJNP80biBB2EcEkw9IrRgEAfgy2H5oMDAZKhu4sxroHwzZKdrfqZ02444ikSB7PVVCKxzXs/hVmcWAaAIoRyf+IUsnqbrlI8Mpi2RTiUB8S4347rDqdBhNyRVGvABEkZwgta3viKOsCh/uvBQNpleIQgoAq1QsAtm3rciOADD4tOd+fJAIdcJ0ZE2CBUFDDDim8y03wFu0ZAKDDrwYYyPF26PECfh4gYbrUP/9D3qoUY4pA+p7qibuW+QC3ihDQY/DjjokJCwuoAGHNiG2RWy05fKZ3mZBANUgHHFpFsIgQwY0AIH9RCMV09BdkgXQAWgNx/dhwAxNl3q1gJA9YCIRAWPRhA6omYYWD/GsQcioAHOxBEfCIERiC9vhHkgiADwQGgYEx8OwAEeQAE6qIO1UFK19QQXIIDWAQN/UAMrhHtwQIPwcgD5JB/4sAM7yIOXciZwlQAsYAISWB1bEDSl1RAIYITYxyyj4A6bQFsHE4UUcAMtQACKsgB+l210NAb3UAMn4EkOQANC8xBiwHIjiDFCYwk40AdPACCBEAgZUDkOsAPGJARNFBEm/3Zb8eEGefgQf2AKSrgqZvMAeTBTsnBPcPgqBmIIXfgQIrAFl2gomfgAf3B5UCMkMSMOD6EJM8UAE0FelWcrMDAEXHhac2UdGaBcE1geXUAJD3EAYOhDFPEATWgdAAgvMMMAbuAIYSAfRAALx3AJgvACOpA86MYl7CdBkVBFFfEAblAeOcIvNsgf3BEBnJAHEKABGPACSCYfnaUQZrAM2qFCFvEA11ccOfKNcdJCIQAyEdAIXLYAEPACD1dM3oh8BNEJD2ZSE/EANDBg/2gu5tBCcmYyQ1AH8TGMTlIEN5UQFdAHg/SAtCMG0+gP/wiQVCIBzSCRCyExImgcUFAICP+AA23QNgtRAbEwehIhNGJgAg7Qki45IxIgAcu4ggyxBG9QHj1QBCJwgaFHEBWwlGHIPA+QCRxQAzKgCk7CLBJQBYkQDPwRColgETBwc9WxASlghn1oEBWwCIAXl464BUBQHCEgAiw2CkcJIXIwDD/Qi9lkBxKQEefGlAJRAVZQdY5YTD2Xcp8SjMYBBoepEUIwj6ClEJAwWI6pWvEhOpKpJ+rIAabJAQ1wmbMlJLCwEGYwBkCpS9ZxAaMZJ4NXHlEAHSAhewDCDvbjCWjidnXFXxKmHzoAIO7SMkgjJDmgEPLGIG63dxr5KQYyAg0TEkKyBIYUnInzgkcnKQxiAsr/KRIMInOFBSAkkAFyk5jwBJ5yB0HkaSAfdp41J3Xyo4+Swof84QBwoBL+8Aa9AFoAZh7ZJHT3+Z16IgcyeRJjeQ+I1yEDyi58kAo7aAz+hiY+8Ck7GZsmkZQSUA8XVh2iKWHRWQI/EIVEICSy9SmREH8oSRIeWgUWsFEI0HQMITdBcAJoSICnSCAVgAC08AGUKRMeqpThA6E22hA3gIbP8KJEkg7M9AY82oAsUaRTEAJcMEEUEYV2ySy+l6I9OhJFWgWn0A5a+lDMtJDWwQEy8QmiIArTUAXMkAMuEAM2AF5oykytWB5xUJwigQ38wA3jcAg1wFwlcIhHuE7MxI3W/1EDScoSl0JWtwhKy5Qy5UEDuQMTimIPYDqpkLRMfEBfG/BetbkSFSAEThpGJkAEGeQPHgA4j6oS36CYzzQPAFAeG/BhsYoSvOmpuQQKCpYBIpCpLkGr4YR21lEKxMoS7XlSIyIfDLarJdGsJ2Vy5WEH7lWqJUFK8QE8BtZJLUADeKoS15CX8cGmE4Zu6KoSYqBg7eJirqgSitIK5cEdOyYkb1gSl0IhKmAEDHAFRwCfOIUv8dEhKKEocTADQfAKXKZltyUAZKCm/nA1fnoRnRANbeNVXzVhDQAySdeW0FOx0iMC1bExUXVmwfGx1TEGpBBWJGGM1jEEJ4uyEaCy1f9xDg65EbZQHl6laDXLH2X2l7XIAK1qBAHXZzZbHS0JEszkccahARvrsPLxA/XIEcy0ktXRUwmncLYXllbre+dGi1vrmeXxBU5SBs6wERSwAb5nrjCoaGRbHV1gCDSgBxDABoDAUtnEejywTClAB7/Qn1s7EHFrrAwRH33LAB0wCP8yuAShAZdXlQ5RuP7QBMzUAaXguAbBBs+ZqgVxAEtQHiPATCaguQfhAmDwmSRncaLLTLZgugdBsi5iA8WYOwqWAr8HuwQhBQZSSAA2QSAQH0TwT7orm6EjraM2QS4QHxlQvMMJOctqECGbO0sQolTqvAIhHxlAqqTjDyUQYaP/EwFjKQceKbnYKxAXUHeuSqffZSSR5ABZugkyUKQS0A1ucL4kFwNcoAEXMGXM5VxWcgrlZB2O8An0q5r4mz1hlgPyoQRcax2hcMAJvDu540PoQL8TXLuG1kIUUKQZDBGj85QtlAhJ+cFshgo+5AMIbMK7wwWdy6EsrMAzELlvG8MVhwYfQMM2bBHDkwFsGaY7bBDDs54b9cNBfBGJkwF0AAZWAAEsMHJHbBGIowKsYDJzEMUZITcsMLNYjBFUfLRdjBFgHMZkXMZmfMZonMZqvMZs3MZu/MZwHMdyPMd0XMd2fMd4nMd6vMd83Md+/MeAHMiCPMiEXMiGfMiInMgrAhEQADs=', -'img/dev.gif':'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', -'img/diamond.gif':'R0lGODlhFAAUANU2APDw8Pv7+3l5ee3t7a6urn9/f+jo6Lq6uuHh4dvb28fHx2pqanNzc97e3uLi4mZmZqenp4qKiu7u7qioqHFxcfb29vLy8snJyd/f33V1ddfX142NjdbW1qqqqszMzIiIiHp6erGxsbKysqKiotTU1JOTk/n5+evr64WFhXt7e56enpqampKSkv39/XJycnh4eGVlZcLCwoGBgZiYmG5ubn5+fv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAUABQAAAZkQJtwSCwaj8ikcslsOoeGwkLjDIQWjUGBBViSKB3TUPEQtY6A0QthHMxqbOJBFlNyUATiCpZQSj4pRQ4CEF1FAQcZHkcBBDQXRBgMJRZKJxEbBgAqLn1NCgIgExVPpaanqKlCQQA7', -'img/dilute.gif':'R0lGODlhFAAUANUnAE1afDNCaCo6YneBm7zAzdja4oqSqPX2+HV/mS8+Zd7g5mt2kra7ye7w83yFnlNfgGdyjvDx9NHU3UpXeZScsEZTdkdVdyo5YSw7Y5qitaetvtbZ4XaAmYyVqtnc49nb47q/zCQ0XX+IoZ2ktz5McL3CziAwWv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAUABQAAAZWwJNwSCwaj8ikcjmkDJhFT8JUgg4XJpMlYgVlswboAfA1YTbMUTmLWDZIa9Plo9TEsx3l5G56KAN8FUocfBBKCoBxBEsMAmUhGVAFIgAADhJWmZqbRUEAOw==', -'img/dit.gif':'R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', -'img/dlgclose.gif':'R0lGODlhCwALAIABAP///////yH5BAEAAAEALAAAAAALAAsAAAIXDBCZZ4frIpJNMkhVvcq+TYXeFzWaWQAAOw==', -'img/dlgclose.jpg':'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', -'img/dlgheader-blue.gif':'R0lGODlhAQAkAKIAAIu2zI64zpa8z4+5zoy3zZG4zpS7z9vb3CH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==', -'img/dlgheader-green.gif':'R0lGODlhAQAkAKIAAJXQnJjSn6DUppbRnZnSn5vSop7TpOTl5CH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==', -'img/dlgheader-red.gif':'R0lGODlhAQAkAKIAAOem3+mq4euy5Oin4Omr4umt4eqw4/79/iH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==', -'img/dlgheader-yellow.gif':'R0lGODlhAQAkAKIAAMi6j8q8ksy/msq8k8m7kMq+lcu+mNzc2yH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==', -'img/dlgheader.gif':'R0lGODlhAQAkAMQAALTX8bLX77HW7rDX7cLZ8LPX8bfV6r/W7rHY7bnR6bzS6rLW7rTS7LfQ6LTQ6dPk8bTV8LTV77XW67HY7LPX8L7U7LTQ6rPX7LLY7MHY77TU7bTY8f3+/rbV6rbP6AAAACH5BAAAAAAALAAAAAABACQAAAUdIPcYnXRhEzIMgrAEAVVsQA1FGmM5XpMolUOGEAIAOw==', -'img/double.gif':'R0lGODlhFAAUAMQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAUABQAAAVaYCaOZGmeaKqqxhOs5oAdL5y1C4FdiS0fEpmgpoLoLjlMgZiKCBmXXW+F0BWgmCEMEb1MCjMmiptVAKSwAPhgzopPlPOlDbBVzgKLw2DLNM51fSINe4KGh4chADs=', -'img/doublearomatic.gif':'R0lGODlhFAAUAIQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///////////////////////////yH5BAEAAB8ALAAAAAAUABQAAAVT4CeOZGmeaKqurBq0n/Es4pW0A3ZIufCuEALmshAWfqpIj3HBwBBGxgiZQjQvk4+OirJiBArA8LYKFHRhZ4sivihgoopYYIF/GmKA/e4w7P+AKyEAOw==', -'img/doublearrow.gif':'R0lGODlhFAAUAOZLANbW1gYGBlRUVAAAAAEBAdXV1WNjY15eXlVVVf7+/p2dnWFhYQUFBQcHB+jo6NHR0dPT09ra2qqqqgMDA9LS0gICAklJSWRkZNnZ2e7u7u3t7Xp6equrq/z8/Lq6ui0tLc3Nzb6+vlNTU8HBwT8/PyIiIvb29q+vrwQEBGJiYgkJCcfHx7a2tkhISFhYWKenpxUVFfT09IaGhmVlZRcXF/Ly8iAgIP///xISEm9vb6CgoEpKSl1dXX19fcDAwDExMYqKijIyMmhoaCwsLEBAQJycnPn5+TQ0NHd3d3x8fNDQ0P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAemgEuCg4SFhoeIiYqICRAAj48QFJAASkaFHBMNAZwBDJyfDRMXhQoWGI8FBQ8PqgARRCKlC4suAoVFB4sIt4QKuooCCIIeKUs6uixChSYUSwK3HSsDEicGSzA7hS8VNTzD1z00SDkbOBmFCT8zCws+FYItBCUEI4cxQUckKkmCESgDriGSMYCAjQSDDBDQkAjEAGqEQgBRdOPDkEWHHDjAyLGjR0SBAAA7', -'img/down.gif':'R0lGODlhFAAUANU5AP7+/uPj4wQEBPj4+Pf396CgoM/PzxAQEAMDAzAwMHt7e9HR0bS0tBkZGaamplpaWt/f35mZmf///8PDw1FRUZubm2pqag0NDa+vr6urq1ZWVmNjY42NjUpKSrW1tZqamlVVVUBAQMfHx21tbbOzs729vcDAwOHh4UlJSb+/v+Tk5IWFhT8/PxYWFiIiIl5eXj09PW9vb/T09JycnExMTMTExGVlZbCwsAAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZzwNxkkCsaj0gj7pFsIjklp9RIYommzRgOg00SArmFgtg1Qlq4W9mYwb2KhLWEKEtcAOsiDBfKFykgAAAbNn4AKDgJfgo4LmAOBmUVGmAjODR+FjgHJnkGmyk5Hw0MXQQrNTkRCAIeeTOsBX4dArJ+KidGQQA7', -'img/dreversed.gif':'R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOkcECGUwCAREAyUhM2F0EBLDQaDUDDhFQEDZ2BgB5KRD8V4nPYl3HBnB1JUKCwBpdkgEIQUWCRcIYnuGHw8FAgIVIFlPmZqbnJxBADs=', -'img/dropdown.gif':'R0lGODlhEAAKALMMACEhIf//vHUhISF1vCFNmer/////3plNIXVNmXV1vN3/vJmZvP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAQAAoAAAQqkMlJ6wyoWBYSDQKhfcJAAuIlAOaZguwGE8rabsYB7PfG5DEfxbAQGikRADs=', -'img/dshape.gif':'R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOgeiQGAwoEAIS8HBIEF0GJMMNhkAFDkDjVJgLm4ayrJR4Vi3iQlP/D7ERPZFAAsKa1sIFwkWBSFjSAMgFQICBQ8fjU6YmZqbnERBADs=', -'img/dummy.gif':'R0lGODlhFAAUAKIHAP///+7u7uHh4ebm5urq6vPz8/f39////yH5BAEAAAcALAAAAAAUABQAAAM2eLrc/tCBGSEQAVQ5sN4M0GVgOH7lARBeqqytC5NyEKeATeM6WgKF2y+4+xmEIMDR96O4npUEADs=', -'img/either.gif':'R0lGODlhFAAUAIQcABMTExgYGB4eHigoKC0tLS8vLzY2Njg4OEhISE9PT1BQUFFRUVRUVFhYWGVlZWhoaHBwcHh4eIeHh5eXl6enp6ysrLe3t8fHx8/Pz9fX19/f3+fn5////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVR4CeOZGme6AmlLNWw5oN9DQWT2TF9w3aTj0YF8SNRDoxdUZQxBDTL0QIQHSUEs2qBoFxiDI5XVBI5ZouHS6570wxEweXkIaIolghL9bM57E8hADs=', -'img/electrophoresis.gif':'R0lGODlhEAAQANUpAP///+Hh4cPDw+Li4t7e3v7+/u7u7vb29uDg4P39/d/f383NzcHBwfT09Li4uMLCwvLy8vDw8Nzc3MXFxcTExM7OzqysrLm5uefn57q6uu3t7dDQ0OPj4/f3993d3cDAwMfHx8jIyOnp6aqqqvr6+sbGxuTk5NjY2Ly8vP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZ1wJRwSCwaj8gkcST4kCyCUMrxWCweFyEIsNFQAKjOAMBgAERCAQCRQQBKAkNhMikM0oC8fp8P4BsYDQkmAwcABAQAdylqEAEQCQgeBwWIingREhEJChKUCgqXjAAGJwZ8en4pX6h8HEIOAbKztLIVSri5ukNBADs=', -'img/ellipse.gif':'R0lGODlhEAAQAOYAAP3+/uzx9am+0vv8/f////r7/Jy1y7jK26G5zvj6/IKivmyRsqzB1H+gvJu0y77P3fL1+PX3+qm/0m6Ss/D097DD1pGsxe7y9uju81+Hq4qnw/7//+ft8miNsFuEqpKux+Lq8JOuyMDQ3pexyX2du/n7/G2Rs4ChvdXf6bzN3fj6+6O70P7+/+3y9lyGqmGJraS6z5GtxnKWtqG5z7jK2q7C1fb4+sLS387b5tHd526StNvk7IelwMjW4qK6z5Csxf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAQABAAAAdTgECCg4SFhoeIgiMyCyE4iSs6EoIHCg2HDCSGDy+GJogCNIQCFYkfhBOJQAaEHaoIhDE9iRaEKDyIOTCFJyKHHocZPoQ3LimINRoOBj8zqs/QhIEAOw==', -'img/eraser.gif':'R0lGODlhFAAUAOZgAAEBAf7+/vr6+m9vb+bm5gcHBzw8PLy8vCYmJhMTE5OTkxAQEAMDAycnJ4aGhpeXlxUVFQgICD8/PwUFBQYGBqurq////wICAvj4+N/f38HBwc/PzwQEBLq6ur6+viQkJE1NTfLy8q6ursTExFxcXOnp6VNTU3Nzc8PDw4iIiPf396+vr3V1dc3NzQoKCjo6OiAgIImJiWlpaUxMTA4ODi0tLbW1tWZmZh4eHhoaGnR0dBkZGbCwsDY2NhQUFICAgJqamo6Ojr+/v6enp3BwcNra2r29vQ0NDZCQkLu7u1RUVF5eXpWVlZubmx0dHZSUlAkJCdHR0aGhoaWlpZ2dnS4uLkhISGhoaCoqKpycnFhYWHZ2disrK5mZmQsLCwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAUABQAAAfYgGCCgwFJAoOIiYlKX1wlipCCMl8SEzgbkYk/XyBgFS4+RpmCTAAGAYIHCV4imRoXDYeDG04TTZFIXxEriQRYAA6QQF8QFFSJGC9fRIpdX1MNFzGJAQZfW4kPXx0qPV86iCM0XzeJQV9ZYAFWX0sWYBk7C18DiVEFCR5gFiRfMwQIoPCgp+jAgiM2BJ34UoDDEAEEFaGAEKGCoCsMUsArUA9SixwUpIBR8EWDgBochGQqAoPBE5IHDAB4MAoMQAAmKH0JVhNMiCpfgrLoOQjDhy9aiCbqECkQADs=', -'img/expand.gif':'R0lGODlhEAAQAMQAALHK6qPA5+Hz/7/U7qXC59Lh87rR7ePs+KC/5tns/////97p9s7d8pO455C25Zu85Z7B6rPM66nJ6q/I6srh+u/9/9bq/lp6ztLm/Or6/zJVsub2/9To/c/k+////wAAACH5BAEAAB4ALAAAAAAQABAAAAVfoCeOZGkaSEAMJhkcSnw4rTdUeF5BJpH9QGCDZKBsjkgkhTGaCASXqPTyBIwAnaxmu812rCKsl+vtREZFjBqjWWOWJAJnTqcHTAOLfm+R1BAUCYIUDzUiKCoshouMLSEAOw==', -'img/filelink.gif':'R0lGODlhEAAQAOYAAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAeagG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJhCQAX1mCAC4oUBhggzAOagdaPkVVB0Jia1GCSDpUJ24EDiEEZSk4I0q5ExUFDxkzFz0PBRUTAIIGARAUCwIDAwILFBABBoMlPyIMLAFtVDA4QmZIoggJFOQY80GDggQRXEmcSFFiIAA7', -'img/find.gif':'R0lGODlhFAAUANUAAN7EkKlhOeLKlt/EpfTr29u9hOLLuejx+cGOV/r28/f6/fH2++TOq8OSWOz0+te2fr+KU+/1+/Hm2MmbYenWpNKthNKsd/jy7ufSur6GTfbv5Nm6jPn7/c+oZLyFUs2mYty/pdKubebRr/Tr4uzz+tSwcPP4/Pr8/suplJdhRsyicOfToMugZsWVa/z6+ffx7ffw5ezcv7mASLuBTLyET/z597FyRbNzS75zQODHts+oadKrb9a0eery+uvz+v///yH5BAEAAD8ALAAAAAAUABQAAAavwJ9wSCwaj0gkARDqdHQbSVIYKz1EMA3DwsIkCSWGItLzLTiDifQIeCh8h548wlFVkCHRIi73+UwDDUgdGj5yZT4kESMQSB8aJH2JDosZSDoMC34+Dp0mII1HGxYcEZ2dCyc0LUgSLAMcJhERJicNOzgGSBgTKgMjIyAIPAIANC+tFQgZGR4zBRQUBQHIU0IGCAArABMpNdbXHg8PDTYJ4EI5ATI3F+hDCSgu7/T0QQA7', -'img/fliph.gif':'R0lGODlhFAAUANU9AEBQYLCwwJCowMDAwIBgwNDQ0JB40JCYoJ6Sz5CgsGBAoHBIoGBwgJCAwKCQ0ICIkJB4wFBgcKCI0NLS0lBYYGAwoPf3+4BwsKCYwHBgsJ6Mz4BowJBwwKCosL663rC4wFBYcLCo0MCw0Obo9e7u+HB4gFAogKCY0HBQsIBgsLCwsKCgoMi54HBAsKCIwMDI0JyO1VAokJCA0KCQwEAgcPDv+LCg0EAogGBocGBAsJCQoHBYsGA4kP///wAAAAAAACH5BAEAAD0ALAAAAAAUABQAAAZ2wJ5wSCwaj8ikcslUJoQnVrMXeAgdMEtTULpKPMxAgSGUhAijpeCFE8pEEIRSPIgIDbYZqpYUDDoUdxgNO3JHYioHAEIcLhcpLSRHfis6iz0bDRkLChpGARMfBw+XBBCcPBVGCQwRIAClOTEmNzRTt7i5urtEQQA7', -'img/flipv.gif':'R0lGODlhFAAUANU+AEBQYKCowKCQwGBIkL6+y6CQ0GBAkJCYoLCo0MDAwJCAwHB4gPDv9oCIkHBYoFA4gHBgoPn5+rCg0NDQ0IBgwObk8vT19mBogFBYYL+41IBYwFBgcPr7+7+11O/x8mBocJB40JCIwFBYcO/v8oBooJB4sGBQkNDI0NvW6qCI0MfH07CwsLm5x3BQsJBw0KCosGBIoIBosJCQoJBwwJCgsNLS0quyubC4wJCA0MDIwKCgoLau1uzr9a6kzP///wAAACH5BAEAAD4ALAAAAAAUABQAAAZzQJ9wSCwaj8ikclnkjAg05tCjCtQWUgsrMEncPssIgZtY6Q6ipDhwyiVeB1kDkLQdGovLBgPo06WAgUYFhCk4IC4zFBQaSSghAgiSEhICCi1KFT0OJAqWJTEwTDwZAyYQEA4GgAwdAwMGD4IMO7GCt7iAQQA7', -'img/fullscreen.gif':'R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py40AGQSGumCt07f7y0lVl0XL9KXqehQAOw==', -'img/fullscreen2.gif':'R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py62w4IsJ2Hid3hxZWWUH6FFTh6ZqUgAAOw==', -'img/gene.gif':'R0lGODlhEAAQAOZOAAAA//7+/8bG//X1//f3/2tr/7+//9DQ//Ly/ygo/4eH/w8P/8fH/4SE/3Fx/wEB//n5/3V1/yws/+Hh/46O/35+/97e/42N/8zM/8/P/yYm/xIS//Dw/2Nj//Pz/9PT//39/+bm/7y8/////9HR/5+f/4iI/4GB/3Nz/0xM/wIC/319/wMD/4+P/2ho/0ZG/4yM/5WV/9nZ/4uL/+Pj/3x8/+Dg/4mJ/9/f/9XV/3Z2/wwM/6am/wsL/9TU//T0/9jY/4OD/5SU/5qa/6en/w4O/3R0/+Li/3p6/5mZ/5aW/3h4/3l5/5OT/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAQABAAAAe6gE6CTiIUCgUFJk0Gg4MIJ0wrA4IISDoXBIMDDgIkOw0gARELOQYoEE4BChlOAgsPHxYAGwdODDEBJDCCPwkAKS8ACRyCQTIUIYMuAMwAHYMTJRWZggIqzCwYgx4rRI02GswSNIMjQzyNOOEAEkflSdODDNcA2ds1LcmCy83PgtEHdjkZ4AuYMGJOGgBRxYrBq1izaglQEmAgpwM9QIkq4sMUKkonlsyY5ATBDSOYGgkS0eJQIiGMBgUCADs=', -'img/gray.gif':'R0lGODlhIAAgAOYAAH5+fnd3d8jIyMfHx8XFxXh4eMTExH19fXl5eXZ2dnx8fHp6eoCAgMnJyXt7e76+vqGhoXFxcXV1dYGBgYWFhcDAwLq6uqysrLS0tLu7u6qqqm9vb4KCgnNzc4mJiZeXl6+vr4qKipKSkpGRkYiIiLa2tqampnJycp6enpycnI+Pj4SEhIeHh5iYmKKioqWlpZ+fn5aWlre3t52dnaOjo5WVlaenp7i4uI6OjrCwsHBwcJOTk4aGhrW1tb+/v5ubm7m5uZSUlL29vZmZmYyMjI2Nja6urry8vKioqLGxscbGxsHBwcLCwsPDw39/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAf/gE2Cg4RLTIcGBAQGh4ZMhJCRgodKSgJNQhkWFQMDSgaGkpGHTEoDPjYiJCsTHDxEPyWWTYeig0tNDQ8wCgEJAQgLCAW/ASEYnqGiTARKIE4RCgcATtXWAAcJHR8PA7WjixAFBdbl5k4HJyEyA7SQjwQQCA7n9dUAAR43Ao+ETA1GAtCzZw/fiCWMbgl4cAABwYcAIrjgN4iJgBQnHmpcsOCIAFzMHiwYqNEeAx0QlNBaMoBGAWolCS5gYKBmEwE4EsR82AsDAYQVKJDbaa/hCyVLCFhgsIBowQIzvCnpAYCk03L4PlxSUqLq1XP4WlwikIFD069YA6DwJohFALTlphoiQXpzRwKYcHtZ+LlEyYUAeNEWINGEwKFFDBzCdbLhQoN+FjVsWCyBQl/Ihj1IQKsggeN+gpYIAJI4cMkDagck9Dfg2cudnWNcHtVkQA4KEQ5oZFBAQorZkh4JyBCkgwRpAGAmbxhhgoZktmgx8YRBRIACvoqNm2CiQoMmymwhEqDkgYkhI4qoqAEhCYFOjqL7w1VJgP1O5A1/k++PiSNSjewnSSAAOw==', -'img/green.gif':'R0lGODlhIAAgAPcAAMLCwsHDwSOxTMLDwyOxTcPCwyGwSxCuPsHCwc7Dy8XDxcnDxxCuP8/DzMvDyMzDysvDycbDxCCwStDEzNHEzcDCwMLDwcHDwhSuQcrDyCSxTR6vScHCwhevQyKwTBKuPxevRMjDxs3CysbCxc3Dy8fDxcXDxMXCxH+6kBSvQsbCxsbDxhKuQc/EzMPCwtHEzs/Dy8TDw8TCwxGuPxOuQBKuQBCtP8zDyc3CycDDwSiwUdLEzhCtPhuvRrLAts7EyxmvRRGuQCGxSxqvRRywSKzAshuwRsLBwgisNQ2uOz6yYQWsNg+tPiCwScTBwxOvQYm8mMPBwtLEzZG9ns3DySyxUiqxU7jAvIi7lmu3gh+vSai/r4q7mI69mxWuQ0e0Z2W3fRGtP2K2fBWvQsLBwcfDxrrAug+uPpC7m123d7i/usTBwi+yVrvBvCCwSxOvQDeyXM3EyzOyWB2wSiGwSgCtMs3DytDDy73BvZW7odDDzkCzYne5ix+wSVe1cjuzX6q/sEOzYwesNRquRae+rSCvSs3Eyl62dwCrNNPDzpu9piGuS8jDxyCvS1m2dbLAtx6vSKK+qnG4hh+vSnW5iSixUDyzYKO/qheuRFC1bsvDyiiwT9DDzNDDzTiyW4S7lKe+rny5jtHDzCmxUFO1b8XBwwCsMwStNSOvTW+5hEy0a8HBwQ6uPpO9nyGwTBKuPgutOwKtNMzDyB+wStHEzMvCyWm3gcHBwiOxTsbDxXa5ijGxV9DEzQetNiKxSzSxWE+0bpm9o1u2dcvEyRyvRxauQ6+/s8jDxa/AtM/Ey8XCw7bAuqG+qcnCx87Cy0CzYXu4ikO0ZQKrNA+uPMrCyE+1biewUM/CyxOtQZW9oSKwS77Cwc/DzQesNiSwTDSyWB2wSMPBwxivRAuuPCawT7vBvcfDxxOuQc7DzM7DyrG/tbXBuGC3esDBwQ+vPqy/sr/Cv0m0aMHAwWq4gGi3gHC5h4K6k8jDyBKtQA6uPSaxTsLDwsPDwyKxTAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAj/APkJHDgQQIAjBSKUWGAulzIXAQDsI0ixIr99FWRQi9PgxDJjPvA84AZBRUSLFfftC5BgwrZPwDyxqWTlWyAwhB68KMEBAMqBAUwkalNvw4wzBzqI65CCxwcWz5iRMITAJ8p9Cxzk8RbLiAQPBPqJ7UfAwBx33Q6Va1FgYkULC1ToqvEG19i7dwlsQLIHUIsYbgfuiyCLkhcgeBPfNcDgTxEYgQXe2tGKAWLFmPu5OaBK3oIAA3MkMDMLQ+bTEgRB0xNO4IBSnGydCnsas4AOg9Y1yMEvQIYrPYjVPq1BGp8fawbscxbqQ6PhpzFZOxZin5MJXw4IgJ5ZC75IEAIo/6jw68l27ooLYUAhYt89ZKNAoMdsgMa8BPscgFo0ZL5iITOkcccAGWyBSn/+4SXEB+zAMAAjPlQhX4KL1ZDKNQMooAAcNpxHYT+TjIFFezF0QsoBvnwoFiRhqJNBABbc0AUDEqgoAAuWlLGCSiGMsEkxHvqnASJo8DLRAFFQwEUdHwrAihxk3OBWAA7IoMQ4riTYQz5TSHEBQe288A45KRgwHzgHZJGOApHxU0AD2ehDgwfQEUCEDcKs4sCXFO1jQgLB7NLLBrRhpkEQsNBTgR1tDnTBCaI84scSSRDRhAFgCaANHX2AYIoOUOAwDAcD/FTVD5pckgkG5wTBwzRMMEyAzSs6oADPDhEg0ChB+wCAwAoU1KKGPWJUE008jkiiSAjJUKHrrhYZNAIEOKAzAS0UNEDCA80AwAG0P/UawD4uFGBuAQBYAIBVKAUEADs=', -'img/hbg-blue.gif':'R0lGODlhAQAoALMAANHU7tbY8NLW79DS7dnc8dXX8Nvd8c3Q7Nfb8c7R7fT2/N/i9N3e8gAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUJmwCGHFGItQ+EFRCAIAkCUwrOaaJMcRAQA7', -'img/hbg-green.gif':'R0lGODlhAQAoALMAAMzw4s7x49Hy5crw4dXz58/x5Nbz6Mfu38jv4NPy5tj06dz16/T8+QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZkBmxCFHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7', -'img/hbg-red.gif':'R0lGODlhAQAoALMAAO7R3/DW4u/T4O3Q3vHZ5e/V4fLb5vHY5O3O3ezN3PTg6fv1+PLc5wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZcJmgCGHFGHtO+EFRCAIAkCUwrOaKIEkSAQA7', -'img/hbg-yellow.gif':'R0lGODlhAQAoALMAAO7u0u/v1PDw1+3t0fHx2u/v1fHx3Ozszezsz/Hx2fz89vPz4fLy3QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUBmxCGHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7', -'img/hbg.gif':'R0lGODlhAQAoALMAAOzs7Pn5+erq6uHh4eDg4Ofn5+Xl5enp6ejo6OTk5OLi4ubm5uPj4wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZMJwFEBLmHFvK+othJAnDkCWjrOY6DAQRAQA7', -'img/hbg.jpg':'/9j/4AAQSkZJRgABAgEASABIAAD/4QNuRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodpAAQAAAABAAAAnAAAAMgAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDExOjAzOjE4IDIwOjU1OjUzAAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAACgAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQAAAABAAABJgICAAQAAAABAAACQAAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIACgAAQMBIgACEQEDEQH/3QAEAAH/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APR97/3j96Sikkp//9D0OUk0pJKf/9H0GUl80pJKf//Z/+0IGlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQABAEgAAAABAAE4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAThCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAAThCSU0EAgAAAAAABAAAAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADOwAAAAYAAAAAAAAAAAAAACgAAAABAAAAAwBoAGIAZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACgAAAAAUmdodGxvbmcAAAABAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAA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ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAoAAEDASIAAhEBAxEB/90ABAAB/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwD0fe794/ekoykkp//Q9DlJNKSSn//R9BlJfNKSSn//2Q==', -'img/hbk.gif':'R0lGODlhGgACALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAAaAAIAAAQcEIAgxBikFGMOQkmiLAvTOE8qURamcR4okiaaRgA7', -'img/header-bg.gif':'R0lGODlhAgAXAOMIAOvs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+f///////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAACABcAAAQT8MhJazXYlM2JJ8MgjEIQACgQAQA7', -'img/header-bgblue.gif':'R0lGODlhAgAXAKIAAPX1/OXn+ODh9ufo+dzf9uPl+OHj99/g9iH5BAAAAAAALAAAAAACABcAAAMRCLrcPXCESYstxogtziEgkQAAOw==', -'img/header-bggreen.gif':'R0lGODlhAgAXAKIAAO/999j678z46Nb57tD469v68M746tP57CH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYcd55BNjBGgkAAAOw==', -'img/header-bgred.gif':'R0lGODlhAgAXAKIAAP3v9/nb7/rd8PjO6PjT6/nY7fjQ6fjW7CH5BAAAAAAALAAAAAACABcAAAMRCLrcLVCESYst55BNjBngkAAAOw==', -'img/header-bgyellow.gif':'R0lGODlhAgAXAKIAAPz89fb36vX25fT04fb26Pf47PT14/b25yH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYkl54gtjBngkAAAOw==', -'img/heatmap.gif':'R0lGODlhFAAUAOZ0AEPL/vr8/Iju/4bS7OXpZ/X5+emsUKi5ucfY2Pf8/Pb29unp6ULK/fH394qbm+T09Pz+/jS877rKyrjJyT3F+On29uv39+b19ZLWVczY2DjA8/T7+6W2tvn9/cna2p6wsK6/v+n5+f7//6u8vFOkPcPU1MLT0+74+PH5+bPExMXW1rDBwaKzs7XGxu719ZqkpJmqqr+4VLfGWIPQ6cGWRn3j9IO3XcFxNkHJ/L63U2TO9cW+VnrH4LiyUXnG39De3pvFVLptNbyTRLxuNVmtQMDR0TzD9si/V5vEU4HO58S8Vn7L5Da+8XzJ4pa/UbltNINvPIXS63K0R8NyNz/H+oTq+7q0UjW98LiQQ1OjPcO8VaDJVXjF3rhsNIXr/LzKWnrg8TrC9bzNzZfAUqPNV7mzUYDM5YOUTbPCVn/l9sVzN3CwRnje75a+UUTM/+Xl5eLz87vMzH6Pj////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAfvgHSCg4SFhoeIhhlxjI2OjhmEEnOUlZaWEoQTIm4ADDhUFEZhGkxXESIThC0QbgIMXlUUaTUaYGwREC2EKR2dOlEzSWZLTTw+XB0phCsJrgMBASrRRdFiCSuEIBudAx4IPyUmRCQkWRsghCMozwUFKu5SGBhrKCOEByfd32RASFtjnLQ5cYAQBwvPGjT4QoCAjIZoLHAgxKJCJxs7tByJkUOJlTI9KrAg9OGCqzMGDNBw4UJISiwXPhCC8aATFDVTbogbEuRJlwcwCDkIAaeo0aNFQzgg9EKO06dQob4gpGDBm6tYs15doCCR169gAwEAOw==', -'img/helix.gif':'R0lGODlhFAAUAPcAAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAiEAB8IHEiwoMGDCBMOXMBggUKCCRQ4mKjgoUAGFBkwQPAgwUMFBw4WYJBwQciDCA4AQAgggEeDBwhY7JiAQYABDhwiXEAA58SJAnQaTPlTgQIDC1YmDOBg48yBDAQcbCnUIAOZBwdULQigwMuBBZrOZKBAwMQDHC1KdKBgq0IEX5/KnRsQADs=', -'img/helm.png':'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', -'img/helm_aa.gif':'R0lGODlhFAAUAOZNAM/Pz8bGxsvLy9DQ0HBwcM3NzcjIyIyMjM7OzsrKytbW1ouLi9HR0X9/f29vb66urr6+vqKiovf394SEhPr6+rKysoWFhbS0tJKSkre3t4mJiejo6NXV1V9fX05OTv39/aGhobu7u42NjXt7e9zc3JOTk4eHh6SkpENDQ6amprq6und3d3Z2dri4uIGBgY6OjvX19XJycnp6etvb23FxccnJyXh4eGFhYX19fYCAgERERFdXV5iYmFhYWKurq6ysrKioqOHh4ZqamoKCgn5+fvb29qqqqk1NTXV1dZeXl62trcfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfRgE2Cg4SFhoeIiYqKHB0EDgSPBB0ciRIjFwoMmwwKFyMSiBATA0tLBgamAxMQh0U0IQkBS0wFpgkhMTCGERgAswMrNgCmABgghUFIATW0LR4oKgKnASwzhC4gpUsDQwsyGqUBCCdAhD8vvwYCRzc7HgKpAAetgx9EGQIIST0pETpCAAjIgONDoQANADBZwEOBAg0mEABoEMAQhRxGCiSYRisBEx8NKBwiQQBBASYoaxVwQCJRCREVHih58KCCiBKKNlhYcKDngQUWNiwaSrSo0UAAOw==', -'img/helm_base.gif':'R0lGODlhFAAUAOZCANTU1GBgYPj4+KioqKenp6qqqnl5edLS0vn5+ZGRkaampnp6epCQkK+vr52dna6urqysrJ6enqGhoY+Pj9XV1a2trV9fX7GxsZ+fn2NjY0JCQl1dXXt7e/r6+o2NjXJycmZmZjo6OrOzs0FBQZqampubm9bW1nV1dYmJiVFRUYyMjJKSkoCAgLCwsKKiom5ubn5+fmdnZ3h4eHd3d3Nzczg4OGhoaKSkpHZ2dpOTk0lJSYGBgaCgoEpKSnR0dLKysqurq////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAe8gEKCg4SFhoeIiYMCJQ4CioUCEzIzDI+QQpIGEBALCZeJCBMLQAQDQAYMCKEMpKcVpwYJq4YdCRwQAw8gMbBAnh2RKxylBSQaNQ4FsTmgQh4fDQQKDy8nNjQPCgQNHx6EBxkYxSMpOhoFBEAYGQeFAAERFzA9KighLBcRARSHFBYuDOz4IcIHjhsBACAKAsCChAYKFLSQkDBIIoYBlAHZB8CiIow8KHbEJCSIiQ0bKHgkGeTAgZUkY8ocFAgAOw==', -'img/helm_blob.gif':'R0lGODlhFAAUAOZQAMvLy8nJye/v7/n5+SkpKXR0dD09PUVFRUdHRzs7O5aWli0tLdTU1IuLi6OjozExMTc3N6KiouDg4PHx8PDw7/n4+O/u7szQ0ert8evt7vj6++7u7aSrtO7v7tjc3Ozr67y5vaarqrq2sPj6/bW6vPPs46+vo7yyq9XT0+jr7rOtovDx8ZqlqvDw8fDv7/Hw8PHx8bGxrvj5/O3t77vAx+7v7/Tp3r+6tbKztcS/uuvx8ujo5/Dw8Ovs7efn6KGutuzx8ubo6Li2rerp6bq+xu3u7srFyObd2fTu5+3t7fj4+PX19SwsLO7u7v///8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFAALAAAAAAUABQAAAfhgFCCg4SFhoeIiBINBgQLTEwLBAYNEocMDwgRAU8AAE8BEQgPDIUCCQVLTgNKrUoDTksFCQKECgdLS0lNvL1JuQcKhBAOTkk8FL2+Tg4QhAQBA00fPS8CExQwFEkDAQSETE8aSCo/KB4pRxcYFkpPTOAAIzYmLCAiJCchRDoVAPCDmACQUUIIByM5cNyIQQOIP4CCwinpMCRIjQ0+ZuzI0O7ds2hFWkwQcE3AChfcvA0rtkvZsma2cOly2eTXkmCETqVa5epVrFm1CGHSxMkTKFGkDi1q9CjSpEqJokqdKigQADs=', -'img/helm_chem.gif':'R0lGODlhFAAUANUoAPf396SkpPn5+fv7+6GhodTU1J6envz8/PLy8v7+/p+fn5qaml9fX/r6+u3t7ZiYmODg4JycnIiIiN7e3peXl9zc3JmZme/v76amppGRkdXV1ZOTk/Pz8/j4+ImJie7u7ujo6LOzs/Hx8fT09KOjo6Kiovb29vX19f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAaFQJRwSCwaj8ikcsk0SggBknRKIniQgcRhMGhwB4dEAEkyjUYngJlzMpGQJdPp5JhAziM3XC6IYAIhAm0leycdDxoFFIImhEdxJwIbCwwVAnlvj3IAAR8FGWh6micjFwgAIAh5jkYkAKRyaXMAmUYWIri5ugtICgYlwATAwAYKTcfIycpJQQA7', -'img/helm_cterm.gif':'R0lGODlhFAAUAOZNAM7Ozs/Pz4yMjNHR0dDQ0G9vb8nJyaurq5KSknBwcL6+vsjIyMrKyr+/v4WFhX9/f4CAgHNzc319fXZ2dvf39/r6+tXV1YuLi+jo6MvLy42NjdbW1re3t66urv39/bS0tNzc3LKysqKioq2trXJycqOjo19fX+Hh4WZmZr29vYGBgfX19Y6OjpaWlqmpqWlpaYiIiH5+fqGhoYaGhsLCwqysrHV1daqqql5eXqWlpZOTk7u7u/b29rW1tby8vHt7e9vb24SEhHx8fKampnFxcWJiYqSkpLOzs2tra83NzcbGxsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfMgE2Cg4SFhoeIiYqKFjgJBZAJCSYWiRQ/HxsDmwMbH0IUiApBBEumpwQOCoc8JD4MS0pKDEkGBjtEK4YiCAGyShkNQw0LAQgyhSc2SgDNBClILxOzShNAhCoiAzAkETMtEQQHNAsARi6ENSwEIQcHPTlFJRLEAQKrgx4xHAFMSbUCUCAwkIGDBA+FlDzwdQrAvyUBHigxVAHCjSSnTiU5AKHCIRAFHDIZ6Q9AARCJdGgIMWJEhw5HNCBQhMHBBQE4BVxwgGGRz59AgwYCADs=', -'img/helm_find.gif':'R0lGODlhFAAUAOZCANnZ2fz8/NjY2JiYmJqamvPz89fX14SEhJmZmf7+/qWlpcDAwPDw8PX19Zubm/n5+ZSUlIKCguXl5YmJibS0tLa2tv39/ZycnPf397u7u5+fn7W1taysrK6urt3d3cHBwc/Pz35+fu7u7u3t7fb29tzc3Nra2qamps3NzczMzJOTk9vb29DQ0MjIyMPDw6KiooeHh3Z2dqGhoa+vr+jo6Onp6Y6OjsnJyX19faCgoJKSkurq6uvr64qKipCQkJWVlZaWlv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAeNgEKCg4SFhoeIiYqKNBQEEzkfIotBACozEgUeLxAjigVAAAGDDwsyo4gZFQmFARoAiT88hywniT0FhyYDiQgShkEtHYk3CqiDGAg7iQ8XCw2CCQwKBCRBiTUEDikrLgMONjoG14gNIBwDGyUMEDERAuSLQhYAETgHBvKDQQIHITD69gnwgSKgwYMIhQQCADs=', -'img/helm_import.gif':'R0lGODlhFAAUAOZAAISEhIuLi4WFhe7u7srKyoyMjPLy8sjIyHp6evz8/PHx8bi4uMfHx9/f3+Tk5MvLy4KCgu/v7+vr67a2ttDQ0JmZmcHBwcbGxoaGhpKSkqysrPf395+fn4+Pj+zs7Ht7e2pqatbW1sXFxWlpafPz87CwsI2Njaurq25ubvb29qGhoaKioqqqqpOTk9nZ2YiIiM/Pz97e3re3t/Dw8GxsbHl5eWFhYeXl5czMzKCgoObm5t3d3ZiYmKOjo4qKiv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeOgECCg4SFhoeIiYqLjI2Oj4IQCAIAlZSVlgIIEIQFEj+goaEJCT8SBYQBNxQUMD0lLTIsFgoDJA0BnQ4fIBkVHBUvOQsDEQYxuYMdBCgjNDY8EysCKsUGuIQmO7UhFjoeMwwuKQYbDqiDNQs4BwQPBwcMDwQiFwQTCIQnAgEBPv8AA2LQAKmgwYMIEy4KBAA7', -'img/helm_layout.gif':'R0lGODlhFAAUAOZLAOfn5/7+/t3d3ezs7JqampSUlM/Pz319fbKysqSkpLu7u729vYWFhe/v7/T09MHBwaGhoampqdPT06ioqPr6+uDg4Pb29vPz8/39/Z+fn8bGxsTExNjY2LOzs+bm5oCAgOLi4tLS0tHR0crKyp2dnfDw8IaGhujo6OTk5MjIyIKCgri4uPHx8fn5+fz8/K6urvf398fHx5WVlcDAwKWlpeXl5ZmZme3t7erq6rCwsIODg4SEhIqKiouLi8XFxeHh4fLy8tra2t7e3o+Pj7a2tqysrMnJybq6ut/f3+np6dXV1f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeggEuCg4SFhoeIiYqLhwMMJ4yFGBMEA5GFHxuXhD8ZQIVGBhoNg0kKLoIBCQKEJQsqMhmkAUELFIMPBYQPRywOCDyCECOEIR2EMSCCLSsbHikAhDcmhAQVgxYkNhqFQjSECgaDAAQQSoQWEkWEKDocNQJEBRI7OKlIPayEF0MIBzMOAgBgEKGCiBcHLBW6QAEAhkE+ckxIEAHGposYM2IMBAA7', -'img/helm_linker.gif':'R0lGODlhFAAUAOZTAKqqqqenp5aWlpOTk4GBgZeXl6SkpIODg6CgoKGhoX19fWlpaYqKinp6et/f32hoaGtra62trYyMjF5eXrq6uvz8/M7OzoKCgoSEhHFxcYmJidTU1JKSkvf392xsbPb29sDAwPr6+vj4+KOjo2pqamNjY1hYWKKionl5eUtLS0pKSo2NjXBwcHZ2dl9fXz4+PtbW1srKyrCwsJubm7W1tZSUlHd3d05OTpmZmdXV1YCAgJycnI+Pj7a2tpCQkFZWVlRUVH5+fouLi0lJSVtbW8nJyU1NTby8vG9vb729vV1dXW5ublNTU6urq6mpqaioqKysrKWlpaampv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAfxgFOCg4SFhoeIiVMbTg0eECgAG4ofFCUKAwYGNQolFB+HIQwPARFOAQFOUFIPGiGGPSRNT1K1tk9NCzSFHRAJT1FSs7gBUU8JJB2EIDZQxggmTEAeTwFSUC0ghBwMAFJOBSoCBjcKzgAMA4RBAsBOOCkaHEMHzk4COoQEA05RTjMvfhBp4C0KgAEECCXAsOqekREyVtWCggEBoRgZVj3ZsQQBrVpRImQoQkgECx5NogQoKCVKFCg+kIgoBMPFiZS2gjUZMSHHoSQThKhq0gQKAAlKjiSyQGDBAQkrDiwgYEHRlAoOCly4UMBBBatgwyoKBAA7', -'img/helm_mex.gif':'R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7', -'img/helm_nterm.gif':'R0lGODlhFAAUAOZKAMbGxs3NzYyMjM/Pz3BwcMnJycvLy6urq9DQ0NHR0b6+voWFhbu7u7S0tG9vb42Njc7OzsjIyNXV1crKypOTk39/f35+fnJycqGhoa2trXZ2dvr6+nx8fNzc3K6urvf397Kysl9fX5KSkujo6P39/Xp6eoCAgFFRUfX19aOjo8TExNbW1o6OjrGxsbi4uKioqIGBgaenp4KCgtvb24SEhNLS0jAwMFZWVldXV7Ozs4uLi6ampr+/v319faysrKCgoLe3t5mZmaSkpHFxceHh4XNzc/b29sLCwsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEoALAAAAAAUABQAAAfRgEqCg4SFhoeIiYqKEiEEDgSRBCESiR8cDRIJmwkrDRwfiAo0AwBIp6cICwqHRhcMAUgTEagTDEMohikUEAwFCkdIpgADIhiFRBpISTdBDzE1ARAGEQAaM4QwGAgFJzgOPzJFFwIFA0IvhD4PAyoEJjY7DQcHOREDAqyDJBYuExQ8SrRAkCSAAQNAepAoBMDCAAMFuJ0CQKwCAEMbKhxIggpVgAMVNhzqQABCgCRJDBQM4KBDIgosQHjwkCEDiAciFI1YIKBnTx0LRiwaSrSo0UAAOw==', -'img/helm_nucleotide.gif':'R0lGODlhFAAUAOYAAP7+/p2dnYWFhZ6enq6urqOjo////6SkpIODg4mJiYCAgJycnKmpqYGBgaGhoYuLi5qamqampoKCgsrKyoaGhoqKiszMzPj4+O/v7+bm5pmZmaioqHh4eJKSktXV1aCgoJeXl/b29vr6+re3t9jY2Jubm+Li4o2NjWJiYmxsbH9/f3x8fGtra8nJyXt7e3Z2duTk5Lm5udPT03R0dMDAwPPz84iIiKWlpXl5eYSEhPz8/M7OzmNjY8fHx4yMjHd3d6ysrFRUVI+Pj8/Pz5WVlff394eHh+Pj47CwsPDw8Ozs7P39/Z+fn1tbW////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAUABQAAAeggE6Cg4SFhoeIiYqLjIcCAhQIHYM9SDGICAJGAhU4BE4EEAUfGocNFSkoKwoMMhAHEkIOn4UIDzxBPwIKHQcaLA0bAYYNCRwzLgoFNAMBCTcHBYYUKjk2CC8jTgsOGxEgHoYkJw8SPiWCGREBAS2KTIZKi0ADE42DDA5EAfaNDAcgmiwYEI7RjgLGHnzIcG9IAAIDjtwTZGEBjIkYMw4KBAA7', -'img/helm_sugar.gif':'R0lGODlhFAAUANUzAIqKinZ2dnd3d3JycmhoaKCgoIeHh21tbYyMjPPz82tra/Dw8LW1tY2NjUpKSn5+fm5ubmNjY09PT7Ozs/Hx8Y+Pj3V1dUdHR/T09Ds7O4KCgl1dXS4uLllZWbS0tHR0dFBQUEZGRnBwcEVFRVNTU3h4eG9vb+/v70hISICAgGdnZ4uLi3FxcXt7e3Nzc4mJiXp6eoiIiIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADMALAAAAAAUABQAAAbGwJlwSCwaj8jjqQBjuZ5QFqywKCZikABsy23BBIdYgjghIF6xGDqdfiEIDGJA8JLZ7/iXQEBkteoyBgBpAHcvLSxEAzAxMjEPKCMhEQZ2hwNEIjB1AC4kGikOLIUxMCZEKpsyAB8gcxIWdS8wCkQKqgAlGQ4cEQiWMAeKjKsuHRUQFw+NpZhDi42zBDErGwp1zX0tjYHcAJUyh4lDc4B4eXNEHgQNa2xtLw1wRFcHAV5cWy0BYRhFCwUQQYkyhUKSgwgTzggCADs=', -'img/helpbottom.gif':'R0lGODlhAQB2AOYAALS0/66u/7Cw/+Dg/+Xl/83N/62t//r6//39//j4//f3/+/v//v7/8bG/87O//Tz/9TU/9nZ/9vb/9/f/+Li/+bm/6uq/8jH/9XV/7Gx/7e3/769/7e2/8HB/8DB/8DA/+7u/+fn/8rJ/8PD//38//z8/7q6/+3u/7m5//n5/+vr/8rL/+Tj/729/9LT/9zd//Hx//3+//Ly/+no/8XF/8/P/9ra/9jY/+Pj/6ur/9bW/7W1/7y8/7i4///+/7Ky/+zr/7q5/8zL//Py/+nq/7+//7u8/9PT/8LC/9zc/97e/9fX/8fH/8TE/6+v/7Kx/9HR/+jo//7+/6qq/7a2/8nJ/9HQ/+zs//Dx/7Oz//X1/6ys/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAHYAAAdxgFMWOVuFBgYBAU4CAhlPP1kAADtUHBo9KEEmRjwtG0UfHh1II000DUwXVSIrQgUFDjVWUC5HEBg6SzcRNhJJL0oTAwMUOCwEBBUhUTNEKkBXJyALC1gwMkMPWtsKCgkJKQcHDAwlJAgIMVI+XO3u7oEAOw==', -'img/heptane.gif':'R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7', -'img/hexane.gif':'R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=', -'img/hidecols.gif':'R0lGODlhFAAUAPcPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhhAB8IHEiwoMGDCBMqXMiwoUOB/whGXPiv4kSLExVmfLDxoceHAAIYGNCAYACRJA0CYKBAQcmBK1u+JCiAAcuZD2reNChgwc6BPX/SXOAT5wGiDHAKPFqUINOkH6NKnZowIAA7', -'img/import.gif':'R0lGODlhEAAQAPeRAFV+sPv8//D2/k6bQu/1/vj7//T4/+ry/+zz/lyNwPH3/16Qw/P4//X4/7rzrFaAsmSd0fb6//b5//j8/06ZP+jx/u31/1CbQUuSRYKtime5UW6o5FuLvluLvfn7/6rlm1eDtff7//D1/2uyX+Pu/lCcQIKvjvP3/nnIZfP3/63qn2OazrPS8rLR8On0/2OmV/////r8/2/BWv7//+Dt/4jVd+3z/oHRcN/s//T6/9vp/22/V4jce4y0k2KmV8nc3PX5//H2/47dgG2yYVCdQozafMLd9ejy/n/ObJrO7b3a9FmHubHP8HXGYmObz+fv/q/Q8GCUyO72/1GbQ/P4/nyz5ZXjiKzlnVqIu1GQVmGWyqLcjWW3TliEt/L3/1yDs7HQ8Kfbl8rl94fZeVCbRFqfTebv/orZenOs5fT4/m6p5LfV8afblvv+/+73/6PU74uzk1+SxVieTZPiiGCVyFSTV26o4/f6/7Huo/L3/qHbjGih1JDF6+Hv/+z4/2KZzG+p5F+Sxvn8/+nx/1iFuEyXPcfj9mKYy+vy/vr7/+z0/1eCtOv2/4W76e70/lqJvM/f3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjwAPdAWHGITqAFCTpgIQTiwZdIkSAEmEix4kQAEJ0EeJOET6MqaOxsUAMoAMZIfwKIMWREyRoWYFowgWISopYAeU5QSWOgARADKUR4OBmlAAEBSJEScISggpeTcYwmFRCBAYIjZtycXCBVQBAYGQYoeEJC0ckEUnvWCTMgkYUDOU5ymEAgBiQMV/AMITNlAAUicgY8mnCnhw8HVngIOXMDhQwNWwYsESQBzgsHc8YUqYGkyQ4uegZ0CWFDwg8MH1SMuHCBQqESZQYsioCowoFBWdgMOIBDh4uTD2YwUCDFQhsTAxj1oeHnJIDn0KNHhxgQADs=', -'img/information.gif':'R0lGODlhMgAyANU/AMfX+pO6/kN4+Dpq8enp6uPs/bHV/3Wo/lOL/FqS/Pr7/LPK+2Oa/Xib5om4/vDx8tfY2UuD+4is95nB/uvx/oam7cbK09Pi/Gih/q7S/6i316rN/6G796DG/7na/7XY/3Sb8TJd6qXK//P1+tHe+6vC+b3S/Nnc47TC4djk/LrC1crf/t7o/Xyw//b4+8PO5Yej4H6i787Q1uDm9JWz9Nfp/3CX6n6e4WeG74Kg4NDW5OHh4r/N9I6s7P///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqNQ1Gj2uI5d0+1MUeLRYrEKuiGm82YjLdAF6oBhtYQLYAaZFGFR5PXxsRgoAMSAcJiQXiouKKSkXABxxfoCBPxQ0hgCKKysen6CfnY4kkj0zCoEzMRKbF54eH6GzohcpABIxOlpbJIaJnh/Cw7K0oCuOHDYva1G+HCTBxNPUxB62JcvNTjOGrx8G1eLV2DY620sFMRzfBu7u1B41FBQ1seAGGfoZyBwNu0wU0JDQ7p1BgzV8KPSxIl+GDRBFSFzBggaMHamUAACxCd/Bgx8oLPRRA+IGiSI6qBSRwheKB0pGrEvh4aNNAwVGrkCpssOE/58TMrAo0eAEryMboznMcHOfBxcKR2ToCbTqBGQgXiJx0YMDzX1gw5oUYeDVVKs/A6gNsKBAiRwYj3QDsCKs3YgpVaJdy1etAwAkbMg4SoRHjAsbJoi4ezKvT6B9IwdwcIDBhAIVNMA0QoNdBwcOFIvAS3VCh9EbMpjoINmBhMoJEhxgwQEGgUpDZC4gMQG079BWRbCg4EKBAh8KRPx20OIAhtjQGZAAUDTjkAcxAHjw3aJ78wPeWwTIkHNhAdcHnDOADh0BggQmLjSAgO7HgwokTDD3nt45hv//MdDBSAswsB577bnn3gIpxCBDfQT0cEEG3fXnH4AYGMiACQspIP8BgrEpKGIEJbBQgQybDUFABRP2h2GAGjKAQXk+sHBggiIiEMGOJWCGYhEr5nchgDEamIADxym0AI457ujkAiw4mKIQ2K1gwotFapjAAh1KkKOCToYZgQkpNPAjEdiZsEJlWRoZGwMsLGTjl2KGicB089XHFQcstJAliAdApeSIdYYpAANuXUSYEChUUMAEMYKYAAIBdHhABDoWuqMAnApAAwUSaECAdUOcAMJ0N4LoHocKsZCAppt2yikALNhgAQFHPABDiR8iKCKiCy0QQQIMiClrpwOAQMECN0Aw5RAuoBADCyaw16QESXpIYgBOHsvpAAMIsAAFMWiww6JCKLD/QwNtefmljlwqRAEDNACAgLffgpssBSaYiSsSI6AAQgorMEAopiQs5EYKDHirr74CkFAACBo4m4QCBMDw6ZKFsipvDMc+DG4IA5QwAgc5yDCqEi7o0ECPJWQaJgMMrsBBw/k+HMLOA3AwAlEW7FBfri/YMG7MhnIaAbIiD7Dz0xy4YIINKlgcEAEqGL1sAvgK0PTTT5c8wtRVr9wExlmXQAEJMSzNtM5g74wDCS4sQDUEZjvhAgEWNEBDAcuC4DXccYeAwwIjUOBP2aQ6gbEMOYBgAj0A0ICD14XjUAEAFIwNQg4W4N34ExhDoEEDMUCZOAk8lMABByXwQELnBSwQZ0MDGsiwwwOjQ+HDAwTIoMENNkhQgsT00FMACQtIAMINGoQutCVDKAA8BBZoAEMDDZRRAfcwaKCCDBDs3nsgClhBwA4QyGDB+++TvwMBD4yAG/VHKODCFQT03/8VxcGfFO4nwAJGIQgAOw==', -'img/insertafter.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARP8MlJq70463uEB8A2LSTDBKJUMoqRPqYiD29j3+/RCQCakguTT7RqvWKz2s320oACgQFN45AAFIUCgUB1eANZQgKxqT4M2zE5NVg2mvBNBAA7', -'img/insertafterv.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARS8MlJq70440EQalrFJV9IBQWRgKaEpmwLKHArAUBgDPbk9JQf8OEoDomX3K4R0A1iSYZC0QBIqRoBQ9rQcrMLriCMzYzDjcMCrVGj3QzocW6JAAA7', -'img/insertbefore.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARM8MlJq704620BCMEwbI4EKEVBEJrjOkFKJAgpGStdc8/Q/D/KQUD08B6LJIMROCoZCsNxqaiOeEDg8TAUfJzPJu8ZnUKtx2zwyG5bIgA7', -'img/jsdraw-to-draw-helm.png':'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', -'img/jsdraw.gif':'R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==', -'img/jsdraw2.jpg':'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', -'img/key.gif':'R0lGODlhEAAQANU/ANG3hfTZV/LTPNzEk/LWReS0TvjpvNyUMfvxvPjnjO7HKfz1rPbhf82jXfrsrPHOOu/LM8abVdeDK/flgf///s+TQPbhg9Z9Kfbfiv788fz43vvvhdawa/z1zvjplOvMi9ahSvbfaeXQouOrQPXbTPnrntCZQ9+hOcuPPcyRP/frxP787vTYQvDSKOrEb+rFdv34wffkZcKUT/v0xvfmn/rusPzzoPz31fnsofTVOPfihee8Z/fkfu/RkeOwRP///yH5BAEAAD8ALAAAAAAQABAAAAaSwJ9wKOz5fD2isujTaJDLobFTQlB8n+g0gTtSTpxlM8HzGHyj1SFM9CF4vIkHgSHBDkrfjQyfEB4LF0QUPS4TAgEhARAbFxFMPi8OOSQxD4wSj0I+GW8tORYjNgsSDZAOJAoCGBUyF6VDnDUsCiw6FQBRBQgCCiS3uVE+MwQkFijBUTsqDDQpA1FDIiAmFdDRQkEAOw==', -'img/lasso.gif':'R0lGODlhFAAUAOZMAGdnZ5eXl4uLi3d3d5OTk5iYmM7OzoKCglpaWltbW2pqal5eXoWFhZmZmVVVVbKysoeHh4yMjIODg3p6eoaGhpaWltfX16qqqt3d3ZWVlc3NzX19fcfHx8HBwXZ2dqSkpNbW1u7u7mlpaWxsbE5OTtDQ0ICAgLOzs6Kiont7e2NjY11dXZSUlGVlZYiIiHx8fI+Pj4mJiWJiYpycnLW1taGhoZubm76+vlBQULu7u2hoaFNTU4SEhHJycoqKip6ennV1dXR0dGRkZMrKynNzc9HR0dnZ2Xh4eNXV1evr66ioqDc3N////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeggEyCg4SFhoeIiUxGLAATJAQGioIUBC4DShIHDAcdiQ0RMkMYgkUCKQQahxYKFUmGEBJEhzcrIIgiHpKFMwCJFwgFhjQID4gnI8aGCECICwkhhxUCAoYGEwOJECrCgyUACUiJCkI/MYIBAQwBihQ9Dj4NJkcLOZMwGS8DGwkRFpMHeODQsSRIjUlMAjgoIABAix0fEDLhMAiFDYkYMyIKBAA7', -'img/matrix.gif':'R0lGODlhFAAUAKIEAL6+vr+/v39/f////////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANCSLrc/jDKSZ24OGer+21BCIgkuVzAoK7sCpxC0M5qAKd0ayuXnLM7Qu8HhPmIg+AQOXjxBICRdBoKjCrYrHbLjSQAADs=', -'img/mergeplate.gif':'R0lGODlhFAAUAOZrAK7CwJW1soyvrKnAvoqtqqS+vJKyr5u4tpq3ta3NlKrLkdjV1bjJyLnKybmxscbAwEaPJrrLymKdN8S+vpa2s9fT06qfn8rExI66b9rX12alSF6fOom4a2ehM2ujN2GdL/39/nyvVYi1X+Hf34W2ZoCzYYW2arWrq4K1Z4GzWs3IyK6jo1eWL1ubKZC8dMC4uM7IyLivr7CmpZbJkk2SQJKzraHGitbT06HHisS9vajLkMfAwKyhoaabm5bBgLKnp1+hQ3SrT8vFxWehOHeqSFygPJ7FiOTj4zyLEKnKkNDLy1KXInilTR57A3GlPbLGxLetrZfCgjqMHy2CBTeJG2OfMbOqqjuLI9DRy5+6uN3i2ratrZjCgyqCCmilRkSPFrDOlmKjRqPAucfBwcrGxqXIjUqRHJS0saG7uZCwrYmsqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAUABQAAAfXgGuCg4SFhodLLVUeRIeOZkkJYE6Oh19lGAkdlYZINhwKHzMgnGtdUxtGJDohQyKHPzEwPU1APiYlLgopTBaGLxMVW1pUYVEoOEESZA6GKkojOUdYUhpcXiwZC2OGPFZqagFqYldFEGkU4ARqhDcL4GhqaDU0WfLhBuyDMlABCABqGKQpMCCggAEFBBDaIQQcuDQO1UB0SOjBhQMHGhBogKDAEwER0gAAkIbQihPg8k1cl49iIYnxACKIVxCNOENpzhQEQOBATHnxDD1UIyDiRHClkio1FAgAOw==', -'img/minus.gif':'R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAIjnI+py70BY3yiWhHorVmFzVHAOGLa1iUfmCIr+kiSQ9f2vRQAOw==', -'img/movedown.gif':'R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVZ4CWOZGlaaGqSllEUhrWOliMIjjxfVoMgDd3MklAoEsKV5bFYPJKiSMrCCAQY04jIUul2IRBvV2ihmCmHw5kCtUjeg8FbAt1O7vg6DcAH6FkEBH8lKDuGJCEAOw==', -'img/moveup.gif':'R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVY4CWOZGmKlnWaFkGoKwrMAHxaU67bpCX9g8FPwrtYKEjK4ZCk2CyVaBQCkUZhkVSKEQgwtJYI67FYPIolS0KhSKB7DQSi8R5ZHAKBo44yFAoGfEZggjEiIQA7', -'img/moveview.gif':'R0lGODlhEAAQANUsAB0dHUBAQCcnJzs7Ox4eHgkJCQwMDAoKCiMjIyQkJC4uLgUFBUZGRjg4OCgoKFVVVRgYGCUlJVlZWQsLCzk5OWBgYGNjYwYGBpOTkwEBARoaGgICAggICE1NTZaWlltbW0hISBwcHKGhoR8fHxsbG0xMTJ6eng4ODg8PDz8/PyIiIgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAQABAAAAZsQJZwyMoQj8fTqoBEFiATzaI5NDVYK1YAQyVmuwnJ8MuqjIgBjpdoGAhTq8iDURqsGh3GQ7CisPgkCgkCBCsADggKISsqQg4Qa0MACEQoH2NDFgddWJxCIgGdIB6cCwAGBBueLAcrF6tCZEdBADs=', -'img/n2s.gif':'R0lGODlhFAAUANU/ACLGG/v8+2nfEhvIHLrlrFXMFur65UzJFLTjrNn0ynXqTmTWFUjSGWjeClXRFl7UFmXaFmLUGym9GSLSHiO1GL7tm3OsdMDwmyS2E0HCEWjcTF/OTEnGEDq+ES65Ej+aQujo6DK/GDnCGEHGGKi/qL/oq0GzPhK/Exy8Gd3p3PDw8L7IvrrotrTqlzvJGI7fYzLAGG3QKojkQPH76ongTsfrstnz1d700ZPhYxe5GNj412vfF1PWGCS4Gf///wAAACH5BAEAAD8ALAAAAAAUABQAAAauwJ9wSCwaj0jkRdZoOpuyy7GyEOyu2KtgUTHGIIswbTajhReQmLHwaD9wPh8uEmkXjAeHI9F6xV8tBnoHRhwFDnEJiXE8BRxGGQcMCgZxcQYKDAcZRh0jI5OWPpmfHUYeIqkuGgYGGi6pIh6nIbUhMBsbMLYhs0UYEhI2onE2wRhGFD0SOsQ+OgA9FEYmOSgAE9naACg5Jkc5JwPj5OMnOUkWH+vs6xZJ8PHy8/BBADs=', -'img/name2s.gif':'R0lGODlhPAA8ALMJACh5AFesJ16vLnLCOYLOQ6boZ6HwYMTvod74tf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAA8ADwAAAT/MMlJq7046827/2AojmRpnmiqrmxbEUAsz7RMuBks7Hzv84AbzgL4GY2AIVFAQDifB0R0aigUdkklpdg0eL9g8FWQ1Uq4iLD6Oy6buet42zwpBgb4vH4/wNLPR4FAfwlwcWpzf4aHYn6KTIxhiXSLkV6OlAJ3fJx4mG+Cgm5alZGToASWbJ+kkKpVrEqljKetqa+1sq6quUOzh704v3KxKDA1w2ttNUIkOke3vIFBJXYB19jX0ZYF2d5k1ZpPTlMHr14FVerpBOAkRQIDCOnnqu3uI8/y9PWH99Ql9KXpF+dfs4Dw5BFUY1CFwIVfGq4QyK+eRBYU+11soc/cuY0uRh7aw3JwSEdLIJWc9EeSkAR9FcGkpAOTYUuXFGpGvIkzZ0J6M3vCDNozwTMgJYu+gEcmqdKlMZw+fUFA6tSrWLNq3cp1agQAOw==', -'img/new.gif':'R0lGODlhFAAUAMQAAPb29vX19d/f3/f39/39/fLy8vPz8+rq6vHx8e/v7+Li4svLy/T09MPDw+np6evr6+zs7OPj4+fn58XFxebm5vDw8O3t7cLCwvj4+Pr6+vn5+fv7+8nJyczMzPz8/P///yH5BAEAAB8ALAAAAAAUABQAAAWL4CeOZGme6Bl1XOu2AoF22ObdOHbFJ7cxgSAi4fBIGrwSxzPQDAaGysEDYEwEpqVmOwAUHjgPJ+uxlTEBBORAEZPDG3QhYXErw7c4wFCwk5Z4HhkaAAB+I4B4G1sYhyKJZRsbGRkYjWN3OJKUnI4fkJGSkp6ggZ4LGqY4Gh0mCgsvsRwdCim2t7gfIQA7', -'img/octane.gif':'R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7', -'img/open.gif':'R0lGODlhFAAUAOeQABYSDhgTDh4ZFCkiGzUuJUM6LlJIOVtKIVtLImFWRGJfWW9iTkxnk09okXJlUE9pkIBnI1NqjlRrjYFpJXtuV190lGB0lZZyH593G4d5YKl8FY+AZrSCD4+EdXiJoZKHd5OId76ICJSKdZWKepWLec2FEJeMeseMBJmOepiOfYGRpoKRppqQfs2PAJ2RfJyRgNSME4eVqpuUjJ+Ugp+Vg6GVf6OZhqOahqaagaWciKeeiaqfg6igi6uhiaqhjauijq+jhq2ki6ykj66kiuWgJNuiLrCmjLOmiLCnjrGojamqsLeqitGpVrmsi+moKeuqLuysMdSyau6wNPCzN8e6jPK2O/W5P9O+fve7QfW8QbfA07jBz87Cife+RvrBSd7EgODFfcTGzvrETPzFS83Jvs/Ju/zHTv7JUcbN3cfN3P/LVf/NVP/NWNrSoP/OXOzSef/PX//QX9HS2v/RYv/TZf/TaPvUcf/UZ+/XgdjW1v/Wa//Ycf/YdNXa5PHcif/aev/cfv/de/7dgP3egfLhkv/fgf/ghP/ijPPmmv3omP7omPbqoPvrn/bup/nupvfwq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAUABQAAAjjAP8JHEiwoMGDCBMqXFiwjwoPMbYwHGhBi8AVaSoQzCOkY8cyBtFIeEBQSJtHjxwx8kGmYIQGDAj+aJSSUSI7OmzMYGECxEEei1Qq+nOnqFGfBnMgYqSoSZMlR4DswFHDBQoSSAXeIJToC5JBhsIaKhSIjx4mMgjS8HMoCRU+RuOsGYOliAM5BF/gAWNEUJ07c9iY6VIFygQRBVO8CcJlDx03Z7xYkeKkBIIwBUdcGQIIjhoxWaY8IQIDggKDH3pEacH6RAgOGjBcOKDEYIcNGSgsSGCgAIEBAgAEmEi8uPGDAQEAOw==', -'img/paste.gif':'R0lGODlhFAAWANU/AO64JOenBdrGbXSGnv39/pKHdoSWrWlaSJmovenXiIt+Z1pthXNkS5t2IPjwqambdkhVZurTd5uKXNiaAKykj/C2EvXsoc2UCrvG1/PLTPXXafbihlNGO6SciPbpnKq4zvLjknprUe/x99Pc6NShE+Hm72d5kc2PAJ6uw8bQ4E1gerK/1PCzDnhhNM/GjEQ5MLKaT0JIUJyRgOmvFT49P39zWOrIaOrRbe/opfLBMMOzhr2tgujDX5OitzgvJv///yH5BAEAAD8ALAAAAAAUABYAAAavwJ9wSCwaj8ikcslsOoW63aNJqUpwngSjwEVSHOCHRSEItXiAw/HrkLhAEQHs0DipjWxFLRRiMOgnHEcdDh4bNySJFxcnJy+DhhoZLD0GBgMDJgtHMiCSOTMGBKMiJQsqRjIJGTkVAaIoKAgjKhgQRQURAK4TAwSlIykQEDE0RAU2rgG9IrEIPSs9PT5ECgCNjSYlwRgrHx/TRQp/Lz4LI9Lp0tRJCz7v8PBP8/ROQQA7', -'img/pastechemdraw.gif':'R0lGODlhFAAUAPcAAPj18P////7+/tGmYJCNgsedWt6xZ+SqYaTTupGOg46Nh2GNRo2MhF+MSiaWbF+MRCiTW+zx7UebcPn8+fv9+x2HSSaXWqejmOCxZiuKRsGib4+PiMqgW9SmYX+1oPn28SaTWcqsdCuMVNrr6HSxkiGLUtvp4yCQYvv7/NGZUdvBocHg1ZCPiXyZVeavY87Lw9bDpeCsY7TTzNuwYK7TyJSTjFmmji6VVjCTaN/Uw82gVw6DVVWqg5HEokypc+z18o2/rlytfPP38qLIvfX19vr49MmeWpSHb73e3MSXTuXXwcLe0dfX18moa0uhbo6+oMWeYDeWcCaTU9qtY6OgWrnUxeny7mSRTp7AsZ7NsoOfXcyladuuZ7y6sXSyi3a2lSyUW3Gxh8yhW2GPS9GmYdutZvC0aeGoX+7w8zaISdWoYdClXtqhWdnBm/T49428nSGCRsHgzt2vZ6DOuieUZleoiECgeKusqDOaZ1aEOsfHw8KYVee3bsC+tbyebiybdOG0ariSVUiedf38+4O4mDKVZP79/m6qks+pdMWibJrHu7q5sdOmX+WyZmaqfs2rc92kXcTBuhqLVsvKx52dluHr4Hiyk2+bbfX68pF/YXy1m/Ty8M/d2MrHv86hWyqTXf79/CaTZPPDeBeCRGqviFiid+r18N2pYtiqY6/VxzeUYR+QT9+wZuCwaF6lfKrRxPS9dYaFff78/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAALMALAAAAAAUABQAAAjoAGcJHEiwoMGDCBMKvKOgxgYmCgmiYfGiUyQ9EWe1SXSEUp8uiy5o2KIkISMumRgQIJAglh9RjxJ64iOHzIABHU61goUooRhArDA0MjOjRRotIRJyMDDFRZMrcHgoilJhCUIjZWJQGQVBhixLpYDsCHKwAKoDD+wICRCgEikbTySVVXNmzB88P+KMWNEjlZSDe9ZAWmDh0xtHdUpIsHLiIBQdbBo4EEHiUBgchCKsOhgoSYo8PhBgMhXAhAcsdA7mgKHiUqgqbgLQcOXlCwiFhl5lUMVpiCZBTpBknJCl0A0wczIqX24wIAA7', -'img/pen.gif':'R0lGODlhEAAQANU/APz0s+a0XdmPO/XcYOS6L/rujvjtw/TWRLR2LPfbvZNtHrmJJvTPpfnjzL+QJ8mRT/LhyOiYQN6xXfXZaNCdWc2WWPz269moUNipSfLr4/njy8OZMVhAE6pgFtzEbfjhxfjiqPLmvvjjy15CFd2ubNWqcsJnFdScXdilatCwesqVQs+cSv79+MipZ8eDNFlCEuyqYd2rc7V9NMGLSPTUp/rn0ZxpJeHLsOzPqcqUUciQTvfhyfPPb/XPpsmRUP///yH5BAEAAD8ALAAAAAAQABAAAAZowJ9wSCwaiyxJToexHIcX1E6kKj1/BNqn0Uj4ngQDiMRgJCrHMGDCo8QeaQNgcCgEBPF5/X50yOl2eEYLIXqBRhkLNy2AfEYKEDUyGx4rLk8KGjARJh0IVy8nPTgzn1ccIzYIKVetR0EAOw==', -'img/pentane.gif':'R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==', -'img/pin.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAM+SURBVHjaYhRpFGQAAkYgZgLiv2hsEGCGs///F2RgZC799+e/OZBzh5GJYTkjI8MBsA6Inn8AAcQENYAdxEFiwwA7VAys4f9/xrq/v/9VAg1zAvLT/v9j2PvvL8NChv8M/P///QfrBwggJqjJP5EM+wN1EQfUEhCf9d+ff8xAl+kxMjIgA5DeuL+//y8CWiQEkgMIIGSvgQz7DTWAA0qD+OxAhf/+/Pj7++/Pfx8Z0EwEhxcTox8TM/MkoGv/AwQQspd/w1wG1PMXaiA7OOT+M/xl42a1ZuFisQXyGLABoHDUv7//bQECiAXq7F8g7wENYgcK/vjz+x8DKwczSNFPkIOAoWMJtH0lkCXCgAMA1TECXeoPEEAsSF5mA2r8CdRo9/8vg9PfPwzAYP5/mJmF6RvQkg1AeTEGAgDoAAGAAGKBh99/hl///jGkMjIyTmNmZ2EByQLZ/4GGfQfKcxFhGAMzM+NegABigaaz30ABLqALa4BOZ0EKJ0a8hjEynACqPwjUx8XEzHgEaOwagACCexkoIQDEBL2FZNhJJiaGQCD9AhzxjGBHMAIEEBNUGmTwFyD/EZHGPWZiZkgDGQY1nANqxn+AAGKCehkkCExj/9cSYdh/YJarAdKXoEECS7MgzAwQQExIuQFo8P8ZwJjF70pgTAFzhS4w54CCiR3JMJDBjAABBDIQ5HlWoEEsIMOAChuAKn/ijU4GRm+g2/iBzF9IhoEzA0AAgb0MSpRAW3/+/fEvloWDNQaoqQeac7ACJhYmCSYmJkao72CGgdQzAQQQ2Msgm1jYmcVZuFjb///7BypJbIG4HIhfYnXk3//X/v37/xmUGZAMA7GZAAII5mUGYA4pArpMGsh8Bwz0rcBY7AemLQcgeynQwo9QdaB8/eDX55+V0DLiP6wAgUbQH4AAYgQVsMCE6Qc0cA3QkLlAhZOAUtdh5SAotwCDQw5osBawPATl7ctAc94C8y0LkssYoOUBI0AAgQSlgQrTGZn+pwI1LUTKISBbfwGd9J+ZlfEJ0GWPwGmXEVSYoBjGCC1PwdkYIIBYGJmY+ViYGPL+/ft7F63g/An1EjM8JzJC0yw0ApCSHCMU/wYIMABZEDb0wwr8vQAAAABJRU5ErkJggg==', -'img/pivot.gif':'R0lGODlhFAAUAOZMAAIHC/v9/gQME/r8/aLH6QMIDAQLEevz+u30+uDs9+71+6jK697r9/b6/ZrC5/D2+7fT7jWF0AUPGLzW77LQ7QgWIzeG0C9/yi59x8La8ejx+QYQGdbm9bTR7arL6y5+yQkaKsvf8gsfMubw+QQNFS17xLrV75W/5pfA5r/Y8J3E6KXJ6s/i9AMKENno9gcUIFub2J/F6PP4/D2K0jyJ0a/O7KTI6Spzt4+75ICy4QcTHuPu+AcVIs7h8zSEz5O+5kGM0tzq9/X5/Nvp9jKDzwseMChsrSx3vUqS1QYRG7HP7Ia24////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAfqgEyCg4SFhoeIhgAABouLEhuOL4sphAANAQMyAQEHPZwHAQwbDoQVChEWHzglREgXRkARAQAQlgFHMToKJSY5BEonALQLhAUBNzyXF44gi7QhtwQKoQqcDwxFDLQrhAY7GD4zHAEJDRoCzwAZtxYEwyOc6S2OHoQCCTTCnJhBASQDRkgoNmhYhHecAGyjNQAaoSQPMCwxwEJAgYbDAiAA8MPSEBgoADhzhKATrQm3PgCQwKHAMQ0ly5GwVzCBC04lMwoJ8GBALUsiGDlyVAFAOhGlBkFQYcIBhQkdKCzIYKPG0wUdEmndyjUQADs=', -'img/plate-blue.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGOSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspihkZGSyAlAMQmwGxFhDLQqUeA/E1ID4FxAeAyeoEsWYCBBADKBESwgwM/22BeAYQvwfi/wTwe6haW2LMBgggYizPAuIbRFiMjkF6sgiZDxBAhCyvBOIfZFgOwyC9lfjsAAggQj6nxHJkR+AMCYAAwhfnN6hgOXJ0YE0TAAGEKxtGA7E6FXObOtRMDAAQQNh8b0FkaicVg8y0QLcPIICwhQAonwvQoMwRgJqNAgACCJsDzGhY8GGYDRBA2BygRUMHYJgNEECM6NUxsLj9CqS4aOSAb0DruJEFAAJowCsjgADC5oDHNLQPw2yAAMLmgGs0dACG2QABhM0Bp2joAAyzAQIImwMOAPEHGlj+AWo2CgAIIFx1wQwalIQzsNkFEEC4csFSIL5JRd/fhJqJAQACaMCrY4AAGvAGCUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQAYzGv2DHTRPwAAAABJRU5ErkJggg==', -'img/plate-corner.gif':'R0lGODlhIAAgAJECAPf39////////wAAACH5BAEAAAIALAAAAAAgACAAAAI0jH8gy+0vEFKwQmmo3QxrzkkfuE3kmZxoMKoW655tTNf2jef6zvf+DwwKh8Si8YhMKpeNAgA7', -'img/plate-cyan.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG1SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJil8/tgBSDkBsBsRaQCwLlXoMxNeA+BQQH/gjKnuCWDMBAoiRmEQItNgWSEUDcTgQCxBQ/gGIVwLxUqBDDhMyGyCACDoAaHkWkMoDYnUSQ/cmEE8COmIaPkUAAYTXAUDLK4FUPRCzkxnFP4G4EeiIdlwKAAIIpwOgPu+jwHJkRxThCgmAAGLCE+d5VLCcAWpGHtRMDAAQQLiyYTQZcY4PqEPNxAAAAcSEI6uF0yDLh0PNRgEAAYQtBByIyGrkAAGo2SgAIICwOcCMhgUfhtkAAYTNAVo0dACG2QABhM0BsjR0AIbZAAE04JURQABhc8BjGtqHYTZAAGFzwDUaOgDDbIAAwuaAUzR0AIbZAAGEzQEHoFUqtcEHqNkoACCAMBwAbUyspIEDVmJrqAAEEK5csBRan1ML3ISaiQEAAgirA6AtmUnQqpRS8BPaMMHaOgIIIJzlALT+bqTQEbAGCc5WEUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQC9g3ubkd/tZAAAAABJRU5ErkJggg==', -'img/plate-dose.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAUlEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAwuoAUJwDNc0GyqkjG66rq8ugqKiIN+j37dvH8OXLF3RH3QTiVGxpAiCAcGXDaOQ4J6W0dHJyYuDm5kYXVgc6JhqbeoAAwggBaFbbDhQXQA9W5BAAqkPxpZKSEoOOjg6yOehp5AOQ7YmeRQECCFsIgPK5ALE+hyW8e/fuMZw4gTAb5CA0dSAzHdD1AwQQE5bsYwbL30RmN7gjXr9+DRdHDg1ks9HFAAIIWwhooRc0IBrdUeh8QqEFdagWujhAADFhCVJZdENBNLoFyHLIJeLXr1+xOhSqXhbdPoAAYsEXryT4DK4eSw7AGWogABBA2KLgMbqvKYkCmOOgDn2MLg8QQNgccA1b8GGLAnTfi4qKwuWvXLmCEkJQ/dfQLQMIIGwOOIVsMTbfY/M1Dw8Pg4WFBZx///59bCFzCt0MgABiwRJPB6BVqgCyD9EdASxQcMY1zPdolRPIzAPoagECCCMEgJUGqDRZiaN2IwhOnjwJLpTQKyqQmdgaKgABhCsXLAWVWkCN6sjZDeQzHL5jIFBj3gSyl2KzCyCAsFZGoFoLqGESqD5HzgXIjsGVHrCkF5AZk4Ahi7V1BBBAOBul0Pq7EWjgT2y5AFfUIOcKqOWN+FpFAAFEVJMMaCC4SYYvTWARB7UBCDbJAAKIpEYp0BJ4oxRPa+gDkL8SlI6IaZQCBBAjKSkcW7McVsIBaXCzHJSNoTmJKAAQQIwD3TcECKAB7xkBBNCAOwAggAbcAQABBgAxUabNLd/orgAAAABJRU5ErkJggg==', -'img/plate-gray.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALusCHDx9wKl65cqUFkHIAYjNGRkYtIC0LlXoMTEvXgGKngPSB8PDwE7jMEBAQQOEDBBAjeiLE5oBVq1bZAtVFA5nhQEsEQHqANFgOCxtkwEogeynQIYcJOQAggAg6AOjrLCCVB8TqyBaBNQP5yPphfKi6m0D2JKAjpuFzAEAA4U0DQMsrgVQfyHJcamCOQnYYlA3S0wcMvUp8dgAEEBMey0E+rwdidmSfIwc5chTAMFq0sIPMADoiC5c9AAHEhMNyW1CwAw2BW45Mw3wKswiZjx4aQJodiPOgZmIAgABiwhGs0UCsjuxrbMGMy3LkEIKGDCj9RGOzCyCAmLCkeAugYeHoKRzJMKxpABeN5LBwaDZGAQABhOEAoAZQPhfA5iNsoYEcDTAaR/0iAC1DUABAADFhCX4zZN8iG4geAtjKAmzZE8kMM3T7AAKIBUsIaCEbgOwIXJZgcwgOx2mh2wcQQNgSoSy6b7HFO3owo5eIOIAsugBAALHgUonNEHQfYot/5KjDZxYMAAQQtjTwGNkgfABXGYGegJHMeYxuBkAAYYuCa9iCGN0CHIUOodC8hi4HEEDYsuEpYsp6bCUfEWnlFLp9AAGELQoOgCpFAnkaI5XjKoiQ2B+gZqMAgADCcEBYWNgJaH2OM9+jW4wtWrAUzyuhZqMAgADCVRsuBWq4iS2ukWs+bAkOPT0gtQ2WYrMIIICwOgDo0sOgxgRQ809cNSG6OC42UD3IjEnYWkcgABBAONsD0JZMI8wR+BIhHvGfQP2NQA9Nw2UPQADhbREBNbYDDSkCBSG+UhFbOgBFIZAqApmBzw6AACKqUQpqTIDqc1A1DWqUEih6Qamd6EYpQAAR5QDkZjnQcAegHoxmOaiQAZUhoKyGLbXjcgBAADEOdN8QIIAGvGcEEEAD7gCAABpwBwAEGABryNdQb2XmUAAAAABJRU5ErkJggg==', -'img/plate-green.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGISURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRJIDGBkYLYCUAxCbAbEWEMtCpR4D8TUgPgXEB/4z/D9BrJkAAcQAcgAhzPCfwRaIZwDxeyAmBN9D1doSYzZAABFjeRYQ3yDCYnQI0pNFyHyAACJkeSUQ/yDDchgE6a3EZwdAABHyOSWWIzsCZ0gABBC+OL9BBcuRowNrmgAIICYcaTMaiNWpmNvUoWZiAIAAwuZ7CyJTO6kQZKYFun0AAYQtBED5XIAGZY4A1GwUABBA2BxgRsOCD8NsgADC5gAtGjoAw2yAAMIoioHF7VcgxUUjB3wDxjw3sgBAADExDDAACCBsDnhMQ/swzAYIIGwOuEZDB2CYDRBA2BxwioYOwDAbIICwOeAAEH+ggeUfoGajAIAAwlUXzKBBSTgDm10AAYQrFywF4ptU9P1NqJkYACCABrw6BgigAW+QAATQgDfJAAJowBulAAE04M1ygAAa8I4JQAANuAMAAmjAHQAQQAPuAIAAAwAf94DY7f2a1gAAAABJRU5ErkJggg==', -'img/plate-negative.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACrklEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAYsIT53kgy7EELTzu0dMCOhsK2IHm5EHNxAAAAYQrG0Yjxzl6MGOLDlziUKAO1BuNTQIggJhwZLVwWHxiswRbVMBCBlsIQUE4yGx0QYAAwhYCoHwugO5zZEPxOQ5XmoKa6YAuDhBATFh8ZIbNcGTHIDsC2TGEsjTIbHQxgADCVhJqIQcvMPVSVNQCgx05qrTQ5QECiAlLUMnii3NSAVroyKLLAwQQC474wpWQqOIYZAAQQNgS4WP0eKcEIOcQIPsxujxAAGELgWuwMgCkCTkO0XMGrlBDzz1IHrmGbhlAAGELgVPoKR1mCHKIwPjYCik8NeUpdMsAAghbNjwArVIxKhv0IhfZEiwVEXpaApl5AN0+gADCcAAw24EaEytx1G7YghVFDJvPoWIrsTVUAAKICUfCWQrEN/GV/biKaGw1JNSspdj0AgQQVgeAWjJADZNA9Tk2X2NzDK7ECTVjEjBksbaOAAIIZ6MUWn83Ag38iS1LYqv/scQ7yPJGfK0igAAiqkkGNBDcJMOWJvA46CbI54SaZAABRFKjFFRNwxqleFpDH4D8laB0REyjFCCAGEkp7bA1y2ElHJAGN8tB2Riak4gCAAHEONB9Q4AAGvCeEUAADbgDAAJowB0AEGAAmnOLVjL3SAQAAAAASUVORK5CYII=', -'img/plate-positive.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACr0lEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFgdQzN2B8DkbgLFJwEdMQ2f+QABhNcBQMsrgVQ90DB2XBZhcxSSup9AfqOvr287LvUAAYTTAZs3bwb5vA8oz45mKBgAfYauHkMNVB/IEUVAR2ANCYAAYsIT53kgy7H5EBb0uEIADbADzcmDmokBAAIIVzaMRo5zmM+whQS6Ghzy6kC90dgkAAKICUdWCwcZhO4bfGkAFjJ4QigcZDa6IEAAYQsBUD4XQPc5sqHYHEIgBBigZjqgiwMEEBMWn5hh8zmyY3ABQrkEZDa6GEAAYSsJtZCDFZh6iSrR0HMFUpQipx8tdHmAAGLC4gtZYn1EVFGLWljJossDBBALrqDEF9SUOgYZAAQQtkT4GD3eKQEwz0Cj4DG6PEAAYQuBa7AyAKQJOQ6RowU9zkHq0NUgWYxsNgoACCBsIXAK2SBkQwiVA8jyOCqqU+j6AAIIWzY8AK1SUQwlVATDHItsIVpaApl5AF0fQABhOACY7UCNiZUww7D5DJtDkNWj+xwqthJbQwUggJhw+GYpEN9EtpzYBIluMTTqQGYtxaYeIICYcBQqh4EaJoHqc2yJCV9RjCV0QGZMAoYs1tYRQADhbZAA63hwgwS5WsYVNTii4yeQbgR6CGeDBCCAiGqSAQ0CN8nwWYxF/CbI54SaZAABRFKjFFRNwxql2OIaltqB/JWgdERMoxQggBhJKe2wNcthJRyQBjfLQdkYmpOIAgABxDjQfUOAABrwnhFAAA24AwACaMAdABBgAGNZcVQdIRYPAAAAAElFTkSuQmCC', -'img/plate-purple.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspis+yvLYAUg5AbAbEWkAsC5V6DMTXgPgUEB8w/iN6glgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAJaJ7x/zc0NMAAAAASUVORK5CYII=', -'img/plate-red.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJqhkZLYCkAxCbAbEWEMtCZR4D8TUgPgXEBxj+/z9BrJEAAcQASoQEMQODLRDPAOL3QPyfAH4PVWtLjNkAAUSM5VlAfIMIi9HxDbBeAuYDBBAhyyuB+AcZlsPwD7AZeOwACCBCPqfEcmRH4AwJgADCF+c3qGA5cnRgTRMAAYQrG0YDsToVc5s61EwMABBA2HxvQWRqJxW/B5uNZh9AAGELAVA+F6BBmSMANRsFAAQQNgeY0bDgwzAbIICwOUCLhg7AMBsggBgxqmNGxq9AkotGDvgGjHhuZAGAABrwyggggLA54DEN7cMwGyCAsDngGg0dgGE2QABhc8ApGjoAw2yAAMLmgANA/IEGln+Amo0CAAIIV10wgwYl4QxsdgEEEK5csBSIb1LR9zehZmIAgAAa8OoYIIAGvEECEEAD3iQDCKABb5QCBBAjSV0zGjTLAQKIcaD7hgABNOCVEUAADbgDAAJowB0AEGAAqUNr9qmufBQAAAAASUVORK5CYII=', -'img/plate-white.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF8SURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRKoDLIDYAYjNgFgLiGWh4o+B+BoQnwLiA0B8glgDAQKIAeQAIrAtEM8A4vf/CYP3ULW2xJgNEEDEWJ4FxDf+kw5uQPXiNR8ggAhZXgnEP/6TD35AzcBpB0AAEfI5JZYjOwJnSAAEEL44v/GfeuAGrjQBEEBMONJmNBCrUzG3qUPNxAAAAYTN9xZEpnZSwXuo2Sj2AQQQthAA5XMBGpQ5AlCzUQBAAGFzgBkNCz4MswECCJsDtGjoAAyzAQIIW1H8FYi5aOSAb0DMjSwAEEBMDAMMAAIImwMe09A+DLMBAgibA67R0AEYZgMEEDYHnKKhAzDMBgggbA4A1ecfaGD5B6jZKAAggLA5ANSYWEkDB6zE1lABCCBcuWApEN+kouU3oWZiAIAAGvDqGCCABrxBAhBAA94kAwigAW+UAgTQgDfLAQJowDsmAAE04A4ACKABdwBAAA24AwACDAAdjZ93cHiPmgAAAABJRU5ErkJggg==', -'img/plate-yellow.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspil+8ZrEAUg5AbAbEWkAsC5V6DMTXgPgUEB+QEP1zglgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAFmR7kVGTu44AAAAASUVORK5CYII=', -'img/platesection.gif':'R0lGODlhFAAUAOZqAOPj4+bm5uLi4tLPz+Df3+Xk5M/MzN/e3szIyNjW1s7Ly7+5ucrGxuHh4eXl5XSh/+Tk5Ofn59PQ0M7Kyry1tcXAwNTS0ru0tODg4MjExNDNzcnFxdbU1FaM/9HOztfV1dDOzry2ttva2t/d3cbBwYyx/3un/6rN/6bF/5a//+bm5eXl5uTj5Hij/1CO/32p/9rX11OJ/8K8vJS3/5i5/9zb21yO/7qzs9nX13mm/8bCwsfDw3Gh/4ut/93d3b64uMjFxY24/6S5/2yb/8fCwqTE/723t+Hg4MG8u5G6/9nY2Nvb2763t97d3cC6uufm5pW0/7mzs3el/6i8/42u/9LOzs3Kys3JycvHx8zJycG7u8vGxubm5+Tj46DB/3ej/4mr/9bT002E/3Ge/5K4/8O+vpC0/3Wh/9TR0cS/v////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGoALAAAAAAUABQAAAfVgGqCg4SFhoeIiYqLjIUCLCsAAV0QDpIABQUAEYQFMiRVIRZaGwpMFgsIWD8YhAEMWRwVCUAGaCQJRAMgOg2uHhI1CD4GYUpXTRMJHwoAhE8LZQpRHh1DOWJgLg88FweuHB8EIA1kXic9SyVTQhIOhCpIFRoUAzZjLzFUHS1nRgSEHEzQACODCBNBaDxAIWVGki0CCHGxYgCHQRMlUjwo8gWKGQYRBwVwksbAjQELdiC4MCAEgw0UAA6KgOEIhBEFCDQAMALCAQECDnBqRLSo0aNIEQUCADs=', -'img/plus.gif':'R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==', -'img/plus0.gif':'R0lGODlhEAAQAJEDAL29vX9/f////////yH5BAEAAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==', -'img/preview.gif':'R0lGODlhEAAQANU3AAAAAPr6+hYWFi4uLvLy8vPz8wEBAWNjYxkZGWBgYMHBwaCgoPv7+0NDQwkJCTk5OSMjIxgYGOTk5Dg4ONfX16mpqQQEBLm5uRMTE9/f3/j4+AgICHh4eMrKymFhYTExMTIyMvT09G5ubmJiYltbW/z8/P39/XBwcNnZ2Tc3Nzs7O7W1tcnJyfX19XJycnFxcVpaWi0tLbS0tDU1NRUVFdvb2zQ0NP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ9wJtwSCwaj8jksVA5zGyHSuEo+wAAEMgVtCKWRFfBhcG4CAAGl+nWgl0NC+LCcCWFRlcAhhBoNAIEGHkeKXkRARoICBoBEXkTKDFXFgo3FBQ3ChZXAzU3GSpXExJCEg9XDxlDBRwbADQJCWcbHARGLCcDDg4DLx1KwMHCRkEAOw==', -'img/prop.gif':'R0lGODlhFAAUAPc/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAD8ALAAAAAAUABQAAAjMAH8IHEiwoMGDCBMqVOgDRwoMKTJkGDDggY0cARDqkCGggMcDFEQ8GLACYYiOLAqA9BABAYuMAzXIbLBhxoQCJCiwRGBiAgqCGlQAqCmARoICLyRYsCBgwc+YLjbEEOBAQAsDHRhoTbAAAkEFPkI8COEDhgAJDBI4EDiixFcfPHj48AHgg4AGFXYgBBuXLgEOFy7k3eujR4/Chg2D0HuQLw8ABEBUuMCBA2ODYA0TSKz5ckEMcHkQGH2jhmnPBE8YWM26NeqFsGPLXhgQADs=', -'img/propane.gif':'R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7', -'img/props.gif':'R0lGODlhEAAQANU/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///////yH5BAEAAD8ALAAAAAAQABAAAAaewJ9wSCwSfbgUJpXJDAYPWy5A1MkEheyBInoMVsQQllXYeiIIVkDDbmxmkwKJckaYJiiNCvAW0BIFLxIWFgILeS4bMQIOAi0GHQySCQsQCj4hDyE+MAISDAkOQiMllzw8Pj4AHwINFTtEpqgABBwXF6+xPj09u7y8ILBDsrQgFRccHMJCl7wEv87LPxg+pwTXNzXa0icG3t/g0kbjQ0EAOw==', -'img/protein.gif':'R0lGODlhFAAUAOZJALW1tb6+vqKiorKyspmZmYaGhqqqqp6enq2traampqysrJKSkpaWloGBgampqZCQkMbGxrq6upubm4ODg46OjpGRkf7+/omJiaGhoaSkpIeHh319fXd3d6Wlpfb29o2NjaCgoPf394SEhH5+foWFhXh4eLGxsW9vb7y8vJSUlH9/f7CwsHp6ep2dnejo6IuLi4yMjMnJyZeXl3Z2dnl5ee3t7Xx8fM3NzXBwcOrq6m5ubuHh4fn5+d3d3cvLy7m5ucjIyJqamre3t6+vr8HBwfDw8OTk5J+fn/j4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAf+gEmCg4SFhoeIiUk9KxUNEwwAO4oeJhw4HBsjGywiPx6HHi0nJSoTBRoXFwUNDiGFFkMnLA0FLxQPCwsPHwUoFoQuMyUNGjALDAQSEgQMDxU1hAA6KgUwKUEHAhkZAgcEHxCEFBwTLwsEIAkGCgoGCSAMDoQiNiQUDAcJCAMAAAMIEmgjRGKEhgcEBBgYECFAgAgDDGDoQCjFhgsLJGRAACAABAgBACDAsIJQBBoYNXL0CBKAggM3COU4VSHhwoYPBzjoUISQBSENPuTb1++fAgFAgBEK4aAAQnXsFDgQgILHoRABKlCQ0QIDhiMdfCBRZISIAW0mYrhQxLat20AAOw==', -'img/pubchem.gif':'R0lGODlhFAAUAKUuAGOHs2SLs2qLumuPum2VunOVunSZunSZwXuZwXycunydwX2gwYOgwYSjwYunwYunyIuryJGryJKuyJKvz5uyz5y1z6K2z6K5z6O80Km80K/A1rDD1rDD3bfH3b7K3b7O3cXS5MXV5MvV5MvY5NLb5NLc69Pf69jf69ni6+Dp8uXp8ubs8uzv8uzv+P///////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAUABQAAAaqwJ9wSCwaj8gkcWNRGj+KgsHAcf5AC4JG+DkMNsiQ4ov6YC6gFchQ2BIvgMtv1Kh4PJTG6PcRPIgFciMIKEQlFEIjAUQJYA0lSSUDjBssEkojk0MKGysTSiSaQgpbDSqRoj+kPx0NRS0XKz8nAEQSASE/Gw0dKCcdDFsoWUUXAw0kJBkRERkoKREDELJFKxYDDiJCKBUBESdK1tIUAxEmVkIsEQaF6O7vRUEAOw==', -'img/question.gif':'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', -'img/reaxys.gif':'R0lGODlhEAAQANU3AMZoaLAsLMdpac15ecVlZbc+Pst0dL5QUMZmZtSNja4mJv///7IwMMx3d60kJMRhYcx2duCurr5RUc58fLEuLrMyMrpFRbY7O8pycvv19dWPj7tJSbtISMlubtqdnc17e816eq8nJ7U4OOGwsMNeXrY8PNyiotqenrlERLhAQLpGRrQ1NcltbdGFha8oKMBXV89/f75SUt+np9CBgc+AgMVkZK4kJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ6wJtwSCwKAxxEysZsggoxjZAZsgxoAgTp0HKoFMLPwCAAAAwyCCCxBkybcMXLtKnYhC64vtaoHYQlenACKExCHYJNE01CI4lMMIw3CyKJEgSSNxGJDzWZNxh6BQGehkMLLHCYpXdFJww2FBc2rEY3GR4zK7RMAba/QkEAOw==', -'img/rectangle.gif':'R0lGODlhEAAQAMQAAP39/vD094KhvliCqFeBp2KJrVuEqmCIrNzl7eju8/b4+vH1+FeCqIOiv/n7/NLe6IimwG+Uterv9ICgvIelwH+fvHOWtvj6+8DQ3+vw9HSYt9rj7Iypw5eyyf///wAAACH5BAEAAB4ALAAAAAAQABAAAAUxoCeOZGmeaGpGAzO8L3GUlgqRhtqRhFqRA5UAKOSpGqSCilPSCJ5QwYSCUVmv2KwpBAA7', -'img/redo.gif':'R0lGODlhFAAUAMZGACBIkDBQkDBQoDBYoDBYsDlbmkZbmTBgsDtgoztos0BosEBowDBw4FJvpEBw0Ep3wkB44Gp5qVV+tkp+4Fh90F5+w1CA8F+CvVCI8FmG71iM7WmJ3GCQ8GOT7miV73CY8HCg8HGi7nek74ak75qtzI2w76Oz0KK10pC48Jq37Ju47KG7662606q71aS777W8x6m+76q+77jA0KnF7rPC77TE4L3F1K7H7bfF7rTL7r/O6dHQyMfR68/S1MjU6c3U7c3X7Nrc3N7c2dre4+Hm6Ovq6////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeCgH+Cg4SFhoeIiYqLPzkxQEWLgzQwJZYjPJI4LhMJCg8eIj5/RA6IMxgDEhcJBxwhOjcLiCoTBUF/JAgCHSAfB4gpEw2DNhEgHBYDiCsZBoNDKB8WDAGINRgEQoIOCwcDAQCJHBAvkoUnGBXnhRQYJj3sgjsbGjLygywt+Pz9/v+BAAA7', -'img/refresh.gif':'R0lGODlhEAAQAKU9ACNiICRjICVkISdmIylpJSpqJStrJi5vKS9xKjN1LTZ6MTh7MjuANT6DOEePQEqSQkuUQ0yVRU6XRlCaSFiXUVqZU16dVmOhW1mmUGWkXVypUminYF+tVmqpYmGvV2SzWme3XXSza2i4XXS0bGu8YHi3b2y9YW2+Ym/AY3DCZXHDZX6+dXLEZoLCeYPDeozIgY3Igo7JhJHKh5TLipfNjZfPjpzSlKfVn6rWoq3Ypa/ZqLHZqrLaq////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAQABAAAAZcwJ9wSCwah6ejUvRRClkoEqi1wihVNp4uh7uNJMZUbefyaEqhyNHE5AgnEGfxIR+C68KIQ7hIHApHEB0ZDAoUMBcCRg8bNDMyMS8bAUoNFhUIBgMAcn54QwSfeEEAOw==', -'img/reset.gif':'R0lGODlhEAAQAOZrAJvPk4zIhafWnoLCfFuQVzp+NIfFgZjOkFSfS4TAfWiqYKvYoaXKoarYoFSWTlqeVVaOUlWgTKjEpl6rVHm4cZ3RlKnPpFypU368danXoJ7RlvD572qtY4TBfLLVrW+vZ4jFgoXHe7LQr4HAd2a1W5DJiWCuVoXDfkaNP5fMjnq2c0aNQOrw6Xi6cKbVnWGjWn7Bd4/JiGapX4LCe6TUm1OdSnu9coLGeHSubaLUmTd7MTZ5MFudVVWNUMLkvaDRl16hV4fEf4XEfo/Jh3y/dWa2XKrSpofIfLzduJvQkovHhYnGgmmrYYvGg3S1bYzKgmCbWne3cYrHg6bVnIHFd2m5XlKVTUiQQGqrY6nFp06YRmyuY1CaSKLHn4m3g1OdS5nOkD6EOKHTlmOyWYzMgovMgjt/NcLlvu717VOeSz6DN////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAQABAAAAeSgGuCg4SFhoeIa2c3VSQ2SIgbZEdiDQJgLSpohmVPCzlTNEkaFDiFPiEZAj8jGCkAB0wihFQVLgATRhZfJQEJUIRFYyYXHoIMHzEBYYgRgl1YUiAFhwhca14rHTBRPYZpWwpXLwZCAw5ZhTUcQ0pLQUQzPASGWjJNBicDTlYELIcogDwwowOChERr1FBDSGhHokAAOw==', -'img/ring3.gif':'R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7', -'img/ring4.gif':'R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==', -'img/ring5.gif':'R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==', -'img/ring6.gif':'R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=', -'img/ring7.gif':'R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7', -'img/ring8.gif':'R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7', -'img/rna.gif':'R0lGODlhFAAUAPcPAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhXAB8IHEiwoMGDCBMqXMiw4YMEDg0WYBCRIIIDACoKPECgYYIEDAIMcLAg4QICIx2odCCg5MGLKxUoMLAgY8IADhggqMhAgEaBDDr+BFAA4s+jSJMqVRgQADs=', -'img/rotate.gif':'R0lGODlhFAAUAOZoAHl5eV5eXn9/f4mJiXR0dHV1dYeHh3p6end3d1dXV4GBgVtbW1xcXIqKil9fX9vb2/39/cHBwW5ubnNzc8TExL29vZKSksXFxd/f335+fsDAwLKysrOzs3Z2dsPDw3FxcYODg8bGxuXl5crKyoKCgs7OzoCAgO/v76Ojo9fX1319fa+vr29vb2FhYVlZWXt7e2VlZWhoaGNjY+rq6lpaWl1dXaSkpPf3993d3XJycujo6PHx8fDw8Pv7++Pj49ra2vb29s3NzYiIiLa2tnh4ePLy8pWVlVhYWMnJydbW1ru7u4+Pj8fHx2tra/j4+KKiooSEhKqqqmlpaWZmZrW1teHh4enp6WBgYHBwcIuLi76+vvT09NPT07GxsZqamp2dneTk5JOTk9zc3KGhoe7u7peXl5CQkG1tbf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAf7gGiCg4SFhoVkEWMoISeHhTgNMgkMAQtSGWKPaBwtNQwJLi4LU00sQ4calQlQFUkpEWYwHxIbhQ8tATAahlxEHR8jhA2WHo8lLAoGgzsyC0ubaCgIZYMVRwkX0WhWhBYBNFXbD08rggMBDjqbYGEIIAgYaF5XDPKGECsABwAvAlFoRjhwoM2QjxwvJgBQMWAAGicSYmQ5dMOCAgImlAmYgebLmRhKHlERQKKAEBIR0PAoQEBClx6EIFAw0aCABwMHSgh6gAXABAUbKFDgYEDAgAJa0BQRAWFQkAMdBADYZxQEgBCbttjIQGACAQQqjIjYhgbIDyRMUjg6FAgAOw==', -'img/rxn.gif':'R0lGODlhFAAUAMIEAAAAAH9/f4eHh5eXl////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAM1SLrc/jDKSau9uIU9FtfftnkjIwbESaKmmLrAiwK0jKqK2464DI6CjYA0ZAQDxYxyyWw6CQkAOw==', -'img/rxnmap.gif':'R0lGODlhFAAUAMIGAAAAAEBAQEBAwICAgICgwKCgpP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAANCeLrc/jDKGKaqK2Cp2+aedXyj+Gmkg4rQ4BaSIBOK68ayUNsOsOS6g21wABiPvgNwd2sklTkmMbIU8iKEGWvL5SYAADs=', -'img/rxnmap2.gif':'R0lGODlhFAAUAMIHAAAAAEBAQO0cJEBAwICAgICgwKCgpP///yH5BAEKAAcALAAAAAAUABQAAANOeLrc/jDKGKaqK2Cp2+aedXyj+GmkgzqC0LQOIRsKXLtDXiiyvMC2XI7XY7RcCuGA6AM4j4CkkEn4uYLTQ696sHVx2e33JSjoROi0epEAADs=', -'img/save.gif':'R0lGODlhFAAUAMZvAAAAACEyRzMzZxE7oTc2bjQ8Rzk5cjE5mDw7eBxBpzU9nDY9nD4+fTM+niREqjVBo0FBgzxCojxCoyhHrUREiUdHj0hNVkRJqjRNs0pKlENLrk1NmlBPnz9SuExPskxQslNSpEtbcVZVqktYvlRWullYsFJidlZexFxdwVxdwltqfWBjyWVkw2dmzGdnzGxrz2d0hWxr0W5t02h4jXBv0XJx13V003Z11Hd23HN/j3p533t61nx714GA2oGA5oSD24iH3YeG7IuK34qJ74+O4I+O84+O9JKR4pGQ9ZST5JOS+JST9ZiX5Zua55qZ/5+e6aCf+6Cf/6Kh6qSj/Kem7ain7qqp/62s8K6t8a6t/6u0w7Oy87K14LSz/7O7xre29be2/7y7/7zByr69/8TIzr3K4cbR5c7Z6dLb6tTd7Njg7d7l8ODn8eru9vb4+////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAfRgH+Cg4SFhoeIiYqIX19bWFVSTUlEQD07NjSGW2NKb5+gb24jJSWGV2NDoZ9ubR0CIoZUYz6rrWsYOiCGT2M4obdoEzUchkxjMqDBZgkuG4ZHYy2sbWtoZmUDKRmGQmFgKycjHRgTCQMoJBWGP11ZU0ZBPjo1MekfFIY8VlBLIf8hTKgg4eECBEM3oiAJEgJAgTNpYGi4IIGBIRpO5IUoMEMNmxwPIihAYOhFER8OAmjxIoaMhQYLDhgwxIWFCBAcNmSoQAECAgQGCCwaSrQo0UAAOw==', -'img/scilligence-qr.jpg':'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', -'img/search.gif':'R0lGODlhEAAQANU9AKXW/5ylxq3e/+fn75ScvQBSe4S11r3v/+///87//7W91gBCa73G3v/352tre9b3/+f//8b3/63G3qXe/63W9zF7pa3v/733/9bW57XO55y93qXe73trczmEpdb//7Xn/4SUtZzG3pytzsbv96Xe9////5SMlFJzjP/erXtre/f//5y954ycve/3/5yMlL3W55S13lJrhGuEnJzG97XW59be53Nrc87n99bv95SltYyltXuErZzG7////wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAaUwF5voCDsCIqBcLnEEDQby0ZDwDCFAwIPAJg8VDiCkqmACc7c1iOkuAYoh8vhMwE8SIErKJLwJCIfXRYgbiMQCBAJBwIAeFcMGQglCB4XjCEMVwMBN4iKAjMnOlc9NQE0IxEUKzEyLigNmgwiLCIMORwFFQaxpEwcCwUdvL5LLw7Bu73FEjbBw8VLEsgFJtHSDikZQQA7', -'img/searchreset.gif':'R0lGODlhFAAUAPeRAOry+uvz+t7EkNe2fs+oZPHm2Pbv5Oz0+u/1++TOq/Tr29SwcMmbYcGOV+bRr9Kubc+oaejx+dm6jOzz+vr28/Tr4vn7/alhObyFUvf6/eLLub6GTd/EpfH2+63apY7GhGqrY4TFfb3Xuk+RSGqsZLqBTMuplJKzdJXPjvz9+9u9hM2mYrSyccfEjtbn4abXo2CfVaPUm6nXoMOSWNC7nWeaVdKsd5dhRurx6eLu7YyyiJXOjmSLRL3fxI7BjLHbp5mkZ4SaUvz591afT4C9eInJfunWpJZ+Rerm2OfToFuaU4nJgp7RlnW+arNzS+/s5YjHgdfcxojGgIvFg+zcv/jy7mqkZH+9d+DHtprPkoHBerFyRcugZp3Hl72KU/fw5YyiY/z6+ffx7fP4/G+vaZiIR5HJh6TUmoHEeW+waYrGg0+NSVaPUtbo4KzYop/Sl4C/em2paG+fa2CkWYjFgtzn236+eEWKQGutZM/lzOfSup/Rlo28iFmIQoO+gHa5bmqlZNKthHa4boi5aMng0pDKibmASGKoXOny92apXYjGhXO8aW+vZ3CwaMyicILBfojIfP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAUABQAAAj/ACMJHEiwoMGDCBEqEPCAAAEIEgokFEhlwQAHXwwkYDGoyaIpeQwqWJAgAwIAiF5AOvPDQxZBXVIQFDAgQ4AIAHoUcSPDzIc3TBqJIPjAQQecANDsifHnRBA8O9RYIUjAQAAAWBU98uMDiRc+RFCMILjCwASsAQJMaDMnShlAWqCsIQghQYe0AQ4QOpSoBgw7S0joICjBhgUEBw64GHKlEB0pIdKwwUGwABcOFsYgyBGHERwyIJTIqWNQDwNHHCpUoMHjDhggR54gLBCowYYNGEr0aWFExQUxEwdqaCAgiQAGN4QEF6gBw4ABM7ZQWC4QywVDTqpQH0jBRJjt4MEHAQQAOw==', -'img/select.gif':'R0lGODlhFAAUAOMIAAAAABAQEDAwMG9vb39/f4+Pj5+fn6+vr////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAAUABQAAAQzEMlJq7046827/5MAjGQ5ChbAqRWruROMyQid3qBkVweuEZaAqYQYEI6GHDCHKDCfUEsEADs=', -'img/selectall.gif':'R0lGODlhFAAUALMMAH9/f4CgwDAwMK+vr4+Pj29vbxAQEKCgpJ+fn0BAwICAgAAAAP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAUABQAAARHkMlJq7046827/5OwjGQ5CtbCqZWqvIeUzAHDUu6ryHNipwzdjtHz3Sa5F2+GSQ4DNMYAuAFYDKYSowDoIkAMK5hBGJvPlggAOw==', -'img/selfrag.gif':'R0lGODlhFAAUANUAACQkJAAAACUlJcjHx3Z2dgsLC8nJyUlJSTs7O25ubgYGBpWVlc/Pz1dXVyMjI2dnZ21tbVRUVM7Ozmtra35+fgEBAQUFBSEhISIiIi0tLZSUlHV1dbKysmNjY46Ojl9fXyAgIBcXFx0dHbq6ui8vLycnJzc3N4qKiv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAZyQJRwSCwaj8ikMgkQAJ5PJyApUE6PV2S2WKVqjQ6JcEskoxAABsos7BIjH9LAW+xQDpk51jg5IS4FekVmCR4lBQEBgkROUigECyAWiQEGSygbECIVlAGXBA0YAQojA5ZLBAccJgEJl0IPQhoBIa+2t0JBADs=', -'img/sep.gif':'R0lGODlhAgANAHAAACH5BAEAAPwALAAAAAACAA0AhwAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAAAgSACftQ7NPIEGDBQcmPKgw076AADs=', -'img/seq.gif':'R0lGODlhFAAUAMQAAMXP2ABFiVN8pStfkwA/f+Xo60t3o0p1odje4x9YkUNwntvg5f39/RdTjhdTjx9YkOvu8ABAgQBHji9ilSZdkx9Xjx9ale7w8gBGi/L09f////7+/v///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAU+ICeOZGmeaKqubOu+cLwujlHS9gkkASaMu96vRBlICBGMojIxIpWWEuAhBFJ9KETjUNJyU4VTWEYum89oUQgAOw==', -'img/sgroup.gif':'R0lGODlhFAAUALMOAI2NjQAAANuQOmYAAG25/wBmtv//xczu/z2S3P/emP+2ZuOqigAAOjoAAP///wAAACH5BAEAAA4ALAAAAAAUABQAAAQ80MlJq704aww62FUHWt83TqZ5Uuoqta4pBEGxKgHhLMc56y7DIMDouWYBhMshtI0EukRDORLSnMusFhMBADs=', -'img/shift.gif':'R0lGODlhFAAUAOZLAD9IzOLi4uPj487Ly3Sh/8bBweXk5NjW1nun/8vHx+Dg4ODf37+5udTS0r64uIyx/8K8vM3Jyb63t8zIyFaM/+Xl5efn59nY2Obm5tfV1c7Kyt7d3dHOztPQ0N/d3ZC0/+bm5ZW0/5a//8bCwqDB/9LPz3ej/6bF/1CO/3Wh/5G6/3mm/8fCwn2p/8zJyeHg4E2E/6S5/5i5/9TR0VyO/5S3/5K4/424/4ut/+bm59vb28rGxqTE/4mr/42u/9DOzuTk5OTj5HGe/3el/3ij/6rN/2yb/9/e3lOJ/3Gh/6i8/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeSgEuCg4SFhoeIiYqLjIUBQRUCGAIGBgIWiQYQBQMSDQwTCQ4KiSAcHRcRGxoHGQMLiRWbnZ+hDgGJOTsuMwUHLCU/I7iIGKepq62viRYKLwIeQEcBFEYrMD0oBEmHAIQ2JEU4Og9KMd2C3jRCLUg+FEQpiAD0AAg3MgQnQzUqit4IHoggwMNEiA+NEipcyLBhokAAOw==', -'img/signal.gif':'R0lGODlhFAAUANUAAG5ubv7+/r29vUpKSsPDw8zMzGxsbGJiYl1dXVxcXIiIiMbGxl5eXkhISHJycpmZmUVFRYmJiYODg8LCwtvb29jY2HNzczAwMHd3dzQ0NFZWVpqamrq6utzc3Pf395WVlWtra8HBwXh4eH5+fnFxcf39/V9fX2lpaYCAgOHh4cnJycDAwDo6OlNTU/Hx8cTExLW1tWZmZm9vb3l5eZubm0lJSXp6eqSkpMfHx////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZcwJxwSCwaj8ikUvlRLI+DxNM4qE2LtsZ12BGxQttcAWCahAUHwy3MaV0w4YKBQQvDHA9N5UoZzXIAEVcZEDg5KTEHGwIECy8CKkYSK0MECAAoICckMhZhn6ChU0EAOw==', -'img/single.gif':'R0lGODlhFAAUAMQbAAICAgEBAQUFBQQEBJ2dnZOTk6CgoJycnJaWlpSUlBwcHJGRkZ6enigoKCEhISAgIHd3d3h4eI+Pj6enp6Ojo5qampiYmKGhoQMDA5mZmQAAAP///wAAAAAAAAAAAAAAACH5BAEAABsALAAAAAAUABQAAAVJ4CaOZGmeqBk5RIoqGpa5ZhHEM01Kt6yTi17utykAcERR4uhLIpjDnwWDTFaoTeIBG9UxBlWiAZz9XQSxVpKCfiRFkwbkTU+FAAA7', -'img/singlearomatic.gif':'R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVV4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoNBvZTqTArTAxUk1oWvAGpEMmmVogNRFR4MDybjCQrYa8Agxq6fODVdmKtpmWhIQgyP6AgYIkIQA7', -'img/singledouble.gif':'R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVZ4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoND2GriA6bjDCFCYmigxq0dKCNyAdMhvVAqmJiAIH1vgJAWvSK8A10H4+WBWwCJxpSUgIBDKDhIWGJCEAOw==', -'img/sortasc.gif':'R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUUICSOpEJCyfCMjmAACxQcBUMgTQgAOw==', -'img/sortdsc.gif':'R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUVICSOUIMQTHEE0AIYgjM+Q0JCyhgCADs=', -'img/spectrum.gif':'R0lGODlhFAAUAKIEAKCgpEBAwMDAwP///////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANBSLrc/jDKSRsQOGsMnBhgKIKCN55D2XxicKoMG7ojvMggLdoKS+sDF4/gy7VSpqDxh1wZlczhZUPtVK7YrHYbSQAAOw==', -'img/spot-blowingdown.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fH////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAcABwAAAakQJtwSCwaj8ikcslsDhGUj6IGY0icxMIjJAB4AQKDpYC1pSDfNHiFrQzU6sHEqXjD07Mmq3tXZ5gvDX1pBAlMBwSDXxAbTA8Lil4EHkwdfIoEHEwugpELKEwjkV4Chksqo14kTZeKZEwyoxdOFAaKDidOFZEic04lihGvTTStaQIMZRoRDnBhV2UmdmkDB2VDFgN22jHXRC0gXhjW3kUICOXpQkEAOw==', -'img/spot-blowingup.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6Ojo////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAajQJxwSCwaj8ikcjlMMJmWTAHgqDGex0RlAOgOKk7skJDidr0NgliIEpzfgs6aIXvbBSTxzWCHh8QqFH1vH1gEboNnFBZPLYlvEgdPHlOPAAUaTy4wlgAGJ08TnV0RTyWjAAtPCqgbTwuoAKuoBk8cqKVMLJWPAxdPBwidAjZPBBMQjxAPak8YNMJ9CA4jay8zEnYGJiBrQysxDwINIpLe5+hMQQA7', -'img/spot-circle.gif':'R0lGODlhHAAcANUvAAAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAcABwAAAaCwJdwSCwaj8ikcslsOp/QqHQKNUVAp8eGMnW0CgaAuABBXKCWSUDMFgcGI6dgMWjbBwRB8xC22wMNTRwufnYeLE0IhX4PTQmLdgVNK5BtJU0kEpUAGh97a5UKgUwCKAyQDHlOFSGgfwkOUCIIEHYGCxlTHSoEChgpB1TCw8TFxsdSQQA7', -'img/spot-crescentdown.gif':'R0lGODlhHAAcANUAAAAAAP7+/gICAp+fn8PDwwoKCv///wYGBtnZ2QcHB9LS0ouLi/39/QsLC7u7u+3t7fPz8wUFBQMDAwgICAkJCXd3d3x8fLe3t7Ozs1VVVYeHh+bm5o2NjTExMRQUFKOjo8fHx6urq19fX/f393Z2domJiUNDQ11dXTU1NVFRUYCAgA0NDb+/v0RERK+vrwQEBCAgIGRkZG5ubmpqanBwcCsrKyYmJv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAcABwAAAanwJtwSCwaj8ikcslsOp/QqHSoWDA5LOYAYFgWVFoAQgkBWJfbkNIBGDA/AJrS0mYSAJEHctQAYJhlAidIMwJiTQAAEjFdQwYyhgAMTTCJETYaBAQLNQeJDU4pkQCeAAmJiSZOJaeorokUJE53r7UXTx61riuNTRUTugAFIlAbo7UKURkUtQUtUg8FwKgHCWNSDgIviRICLlNCCiiJHSDgRAyT5+vsQkEAOw==', -'img/spot-crescentup.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAalQJxwSCwaj8ikcslsOp9FExRZgEQAkUZhOiy8BICwoLLlZsDhMMHFPQ3ScMBhOlnEw4vUFH0HDDRPNgh9aglPHQyEYSVPdooAAmVLD3AIBAAWfAAkTQpvAwMfCgcKIwOJDIZMEAQELDJFNTMECBJNFH4PRxhgNE0wABtJEgAgTTECKkkcDgZNBhdLIs5MKBNLFA5NNw1LHgBNCStLBy1c5+jp6udBADs=', -'img/spot-halfellipsedown.gif':'R0lGODlhHAAcANUAAAAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+Pj////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADIALAAAAAAcABwAAAaTQJlwSCwaj8ikcslsOp/QZSNArVqpjaZiAOh6v11EiukwgM+AQ4gJOaDBhQjTlXh/DRwmy/49OJgffF4EKkwSgl4vTQiIAAxNJIgmTicFfAkWTjGWdgMlThiIGU8ofBUbTx0LbwMaUAwEdgpRMIxgAyJRMgEDq14GBS26MiAEdQArBBPDQgoXXSMezEQPD9PX2ENBADs=', -'img/spot-halfellipseup.gif':'R0lGODlhHAAcANUAAAAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaLQJZwSCwaj8ikcslsOp/GEhRZ+DwAj1BhOiwsBoDwwLPljsDh8CHFnRDScIBpmnDEw44ONIC+AwgaTxcSfmoNTygMhWEnTgEIi2EbBk0WkWkZTRhvkQyHTCIUlxAkTSoHlwQcTSuXYSBNFa4ACk2QrhFNCrMQTRGzAE0JswtNBgLIycrJlFzOz9BLQQA7', -'img/spot-hellipse.gif':'R0lGODlhHAAcANUAAAAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaSQJZwSCwaj8ikcslsOp/QqHTqbJgWCk9Cg1pwJE9SyjAwAM5nQZmBYD4EArRcDhcRkITMYc6XFz53RioDfYVnAyFGASCGjQcNRRaNkxVFE5OGBRORmIaVRCeEnXMCYEUboqMAAxFHBCV7owUjAUlvcY1wEYFJCAwADn3BCm1OEBQYFwkAHRcrFBBU0tPU1dbXUEEAOw==', -'img/spot-vellipse.gif':'R0lGODlhHAAcANUAAAAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PD////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAAcABwAAAabwJZwSCwaj8ikcslsOp9EhMGAgBovFgIAQJhUrMLGIrLdigQF6+mRKJcTihTUwXC7B5QnxM4HpJslAn1lDBZOC4NuD00ZB4luJkwbj24dTCuOlAMhTCgDlAAHHEwqoKEfTHumf0oBpgAgTYiUBE4egokCJE4SoAZPdIN4UBIDbXYKCqxODSwabhFoYC0XEwQYGAQjX9NCUlTd3UEAOw==', -'img/star.png':'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD+SURBVHjaYmDAAn5eU8gF4hxscgABxIRNkOEHQxwYYwEAAcSIofaoghaQugrlanJYP7iBLA8QQJg2/PwfB8QMUIxhC0AAMX7fLv8SSIsxEAdeAgQQE8NPBhsgvgLEDATwZZBagAAC++HbSnluIDULiKNwmLwEiNO5wh9+AwggFE9/WyK/D0g5oinexRXz0B3GAQgguIZv8+TYgdQrIOZD0/AeiMW5kh79BnEAAggRSn8Y3ICYD4hB7O1AvBPKFgTLQQFAAME1/P/DEAbEv4C4GIi9gdgTiEuB+DcQR8DUAQQQC9yGvwzqQNKKO/fRWSTn9HydLHcASE+DCQAEGAA3aVySIkQTEQAAAABJRU5ErkJggg==', -'img/star0.png':'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAERSURBVHjaYmDAAm7cuFEDwtjkAAKICZvg79+/HX/9+uWITQ4ggDA0nDlzxvznz58SQA0SQLYJujxAADFhMT0GiBmgOBZdHiCAGA8dOnQaSHMxEAe+AQQQC9CUVCBjIiMjowhI5P///xiqgHIg8TdAZj5AADGCBHbu3CkAFJgBlNDFoeEikMpyd3f/ABBAjMgSW7du3Q6UlEOz6b63t7cPjAMQQHBPb9q0iefPnz8SIM8CaYa/f//CsBRQjgOmDiCA4BqAEsFAU9n+/fsHYt+FYhCbHSgWAlMHEEDIGtyBJgOpv6uB2A+oyA9Ir/sLAV4wdQABxAJjAE0XB+L8sLCw/Ujeql21atVBoL8qYQIAAQYA5QugNPG/jFEAAAAASUVORK5CYII=', -'img/stop.gif':'R0lGODlhMgAyANU/AOfo5eYxMdtKSMwEAOpHJMjJx7a3taioqOtWQKoVBtCwrK9UT988PJSRlM6TkOI2Dvv7+9ohAfRkU9PU0vP08tvb3MF1cPdza7G4w7qSk6aqs97j57mmqcjQ18XL1t3g26uxvLzCytnc1K6cotDQz8+ioMODe962tOTr7dXc4Z2cn/P8/aGjrMzOyuzt6+zz9cPEwePj4NfY2L29vNXY0fj4+NDW2e/r67Oxs/Dx7/X29bU6K9pdV66urv///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwOXQXc4aBqqlgHw6RmrFqvx9kB5/F0vh1PKIQBaVQHEgTLrsZ6htQmVVCUSo68447DlFkqMGttbBAGMCgoJAoWAgwMAZGRDAICPCUcZoAkhFcyPSgvJA4CkqankwImHBpnPVSdRDMFKxukqLiTAY+qHCyAALFCoBAwPLm5j8qPPBkam7E9OislkMimy9m8Js8qnG09OSsO19iQ2tmqzw0ybAUb4+WTj7vo6dwsDTlXADMrCtaunbOXzpGqXyyuHNBRoJS8XfUIVppIKQOgAlVgyNhwDFUlHh8t8RhJsiRJgxMtjcjnokiNHi9K4LqgI0eOGzhxAtgJIIbP/58/HVBKKcDCrx5FYFTo0PHUiRU5XLhAwdPnhg8fKlSQwXXChBQKFhBVyZLIgQ0ycZ14UdUnVq1cu3olQcJG2LEHWcwYUiGEDQunzp1A8fPtVrkT6NJt0WKRWJAmR2hoACvOjIARGQzOChexYhKMCxSA0SIsDwQjUaN21uCDkAMpyEnKdmJDXBleEy8WDWOGb991FphMbeLX3hwaPACGSDtF7s+jZ+DosWRJjx44ZmRIECHCLtQSeEhgcQaCjBkhHKI7IQP6DAPUqx+4jgOHgUPbBwyIsN87asmUwZBEKfYoYENo8MlHn333+UZaCQlw1113/ZkAgj7ocTCQNid0AP+DEtUteJ8BDgrYAg0jSDjhhAMscGEMOIQwgkQKGBAidgySOAMMJjY2wQcQriikiw1UEOOM2jgSgAPT4digg6IxRsIENNAgAloqChnBAhiwc2RBDPCXgXRP8liAlF5ZKYIIWKEQ5AMRwAlnd1wWiR6SlOSp3wAOhFDimT5WuSabWPnkggLcPaDoonR2GUMBGLDgyFAB7MlnCz1OKeiaWH3gE08vILroqHBa0KULHxwAwgKUWsonDYGq2elPPAEg1T8JkDpqAyE0QIEOKmBgASWVulrCB5vO+ilPUrlgEwQK7PAAAdQSMKoKIahABQsgZFCKq/qVsAGhni67U7M2UfD/qw/RVuvuA1z2MMMaM2Cgwg7ghotCuTEwK1W66upQQw0Q+HDCDu5W+4AJHhQpBAAqrJrvACW4UCu6OQQsMAQc++BxuwiEjAC1ArDQgT5DsNDlxCW80KyzGf+6ccce13ywACKHTIAFHmgw7xAkHKABvuCWsALMAQ/MccE1N23wDghIIHXIApzVQDBDQBBxA/k64PTXYNccrdRkI2CBDQbgAMsQE5C3ALgJWCC3BSbUbffdJuihh3BkS82DAQBcPYhZINwLd4SIJ454BDs07rglElwg+QU8jIBCIGsTAeyFCUy8X3/djVpt1GRPfoEEGaBQwAEUXPHB1p27SuGKolMb4HLppmewQQwNxDB4FTNw20Dse/Kn5aKjkx755KnnwM7vVhjAreH6GS9k7QTcLvXkHLzgfAs6dDJDxBq8XTzooSuavPIWzOBD4CSEHwsJEV9ItPUTIm+7yM1UUEyRmeuEC35RhhEsgDvoi5P+zFYCG7ClAThwAfSEUYAGaMAPPciABaSlQPUVxQEzSIELNgCICchPGEagwPiChQEygIADI+CADA1QADlsAAZNKIAEUYgFHQStARZETwgK0AUPHQCIPZBBDibIQytQoAIw6IETnIADpeSAYE1sIgQGxkWOZTEIADs=', -'img/strip.gif':'R0lGODlhAgAgAJEAAMrT/63/18Wn/9Ts/yH5BAAAAAAALAAAAAACACAAAAIPhG+hq4jMhpxS2GspxbgAADs=', -'img/strusearch.gif':'R0lGODlhEAAQAIQbAJdhRqlhObFyRbNzS712QrmASLuBTLuEULyET7yFUsGOV8OSWMeabsmbYcyiaMuplNCsiNe2ftu9hN7EkOLKlufToOTSwOnWpOzi2PXy8Pr8/v///////////////////yH5BAEAAB8ALAAAAAAQABAAAAVc4CeOxWieX8FoTImKqqYVGNaihTUXmaxZLtIM45vNToWiLxmEKWVM5LAYNeV2PRmkCVsNbQXCK7VqOSgTxDh1MEguF0lgLVJMKpMGgP5JRCILAnwfAQUDgyIPIyEAOw==', -'img/symbol.gif':'R0lGODlhEAAQAOYAAE+Eufv8/WSSwT54spOz1NPg7UyBuEd+ttzm8fr7/f3+/m+axvz9/kF6tP7+/vj6/JGy07XK4c7d64ms0JCw0u3y91GFuUyBt5e11Yaqz1iJvO/0+ODp8tLg7XSdx9Hf7Imsz0l/ttbi7tTg7VGFumCQwGKRwZSz1GOSwVKGuvn7/Pn6/FqKvY6v0FaJu8va6pS01Nnk8GGPwI2v0fX4+0uBt6vE3negydTh7mWTwnuiy3Gbxp262IWpzlOFuuzx9+rw9u7z+N7n8VCFutDe7EJ6tMfX6FCEusPV5/b4+4ut0VGEuVOGutvm8Je21a/H3pa11eHq8m2ZxW2YxKS/2azE3fn7/UN7tIGlzHykyz94s9/o8qjC3Ovw97PJ4Ed+tUV9tU2CuGuXxEJ7tKK92dHf7c3c6////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAQABAAAAd2gGeCg4SFhmdVO0ozFEaHZxIyPYMRQyeHXymFXgMthRgDEIYHBoUaB06GAA1cg0gXBiCqVzyDZi41E6pFZIQZDQSGIWCGY1OFL1pYhwJUhCzBhE+DMESCUDaGHiUmUmKDWQs5AguDOkc+JGGDN0tMFiiP8vOGgQA7', -'img/table.gif':'R0lGODlhEAAQAOZNAP///3un3JK56Pf6/rKysmaLwHWe1Fp8snag1aWlpcbGxnmi2LbD28DAwLq6uoyhxrCwsHCZzlR1rL29vbm5ubW1tbe3t7GxsXOd0sjIyGGFu1FxqVFyqW6Uyru7u5iYmFR1q1Nzqnqk25K03lx+tWSIvnKaz7Ozs6Kioq2trV+DuXCRwcLCwlh6sGCFulx+tFZ2rYCex6urq7i4uGOHvaenp76+vpGRkXqk2miOw8zMzIat3ZWVlcrKym+XzFNzqXOc0W+Wy5ubm56enl6Bt6mpqWySyK6urnmj2Vd5rlh7sWyUyXqm3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAQABAAAAeagE2Cg4SFTQwjAUw4CwgGGCYRQUsxDE07Apmam5orTQGgoaKiBU0iAKipqqk0TUgAOj0KAxMeFgMXECkALk0Lq8CoRE0IABkKDQMOMwQDRTUJACRNBsHAB01AACwNFAMVJzIDKENCAC1NPtarEk0dADYOzQRHCQMfPDcAIU1G66ocmjzIUaCEBhUvDihJAgPEjw0PDEmcSHFQIAA7', -'img/template.gif':'R0lGODlhEAAQAOZFANTU1ODg4NfX1+Pj49PT0+Tk5M3NzWxsbKysrMfHx9/f37CwsGJiYs7OzmFhYWVlZVxcXGNjY9XV1Wtra1lZWfz8/Kenp25ubm1tbfPz88jIyGhoaGlpacvLy+Xl5VBQUNDQ0GBgYHNzc6Ojo/Hx8f39/ampqcHBwWpqaq2trdbW1srKyl1dXbW1tdHR0XBwcPr6+sbGxmdnZ29vb2ZmZlpaWnJycr29veLi4qurq0xMTKampvDw8MTExMXFxc/Pz8PDw3FxcczMzElJSWRkZP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAeygEWCg4SFhgQvOQYQG4aDGTpADiErFyeORRUPFgMKBQsOhjFEGi0TAxIBIQklGYMoBwgQEx0CAAEHCzIfIIIUHR4KAQIEAAJCGCMJHIIuDAoSANIABAI4BRw7gikMAwPE0wCpEQ2CBz0IQQa2BCoBAQUGFIIgHw4LBwHGDTMQCzYPBpGA8YOFAgADRCBIwOCGoQgICgTwYIFGBUw+MDR4EEHDEB6YimyokcDEBQMhUwoKBAA7', -'img/templates.gif':'R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7', -'img/test.gif':'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', -'img/text.gif':'R0lGODlhFAAUAIQVAAoKChERERgYGCAgICkpKTIyMjw8PEVFRU5OTk9PT1ZWVldXV15eXl9fX2RkZGZmZmpqam1tbXBwcHNzc3d3d////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVF4CeOZGmeaKqubOu+IyVTU/Q0C3IYxUmJksgH99l9CIMU5EHisRwNUoHAYixISJYCQRoIWIkDSRBY6QykAADGbrvf8FcIADs=', -'img/tick.gif':'R0lGODlhEAAQANU/AFqhUna9bDt/NWqxYGyyYovPf4bMfI3PgZ7JmT6COIXJejyANm20Y4nOfmmvX5/Kmvj7+GCmV/n7+F2kVGiuXtzv2VqmUWetXEeOQECFOWGnWInNfcPivo/RgoHKdoPJePr8+Tp9NFyjVFynU9bs09jt1ff69/j6937IdIfNfHnAbZ3HmLXWsrnbtVGaSVefT53ImaLEn6DJnGOwWanOpZDShIXLeanLpWSsWz2DN4HJdoLKd1+lVoLLePn7+f///yH5BAEAAD8ALAAAAAAQABAAAAZwwJ9wSCwaj0jkg5YkPhiOW/OHIHQUkVgSNjgUNBmfsMQhwhyNRiQh/lUCqpZwRdmkeGwhKaA4jFgyFwY2E3lCIDMBNQoDDB89IgttQyAWDA0GHjoAApNEEC44OygAIRJJEBgiL6ZTJzkhnkkmslNJQQA7', -'img/tlc.gif':'R0lGODlhEAAQANU7AP///4elwJKux5eyyP7///n9/+71+/3+//r+/+nw94WkwIalwJawx5myyW2SsvX6/3Kl1IKjwNrn8pOux87f7vz+/vz9/vj6/PD1+pGtx+/2+/H4/ZGvyPv9/u3y+Pb5/P/+/4WmwbvT6JexyHOWtm6Ss5iyyPL2+v7+//z+/+/0+Zy/4O/2/Pb4+/3+/nGl1N7p85a83pWwx42sx/P2+WmPsHKl04imwZKtxvX5+/z//////wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAQABAAAAZwwJ1wSCwSa4qAUrlwGHcLAOFAJQAEz8iGZehqHrNnAEAuA3BigERlxhpvAJuIDLqmKQnAKfaRpcseEBgMfwkrFy0AE38wLzlkbkVjAC40ZZFECgQpFigdFQAZTyE6CAWnCAAcTyUjJgOwAw0kT7VFQQA7', -'img/tlcnumber.gif':'R0lGODlhEAAQAMQZAP///6/C1bzM3LfJ2rjK2rbJ2sHS3wgDw67C1q/D1pOvxsfW4rDD1pexyZ22zL2878bW4Zaxya3B1LnK2rbI2bzO3FpX17LF13t53////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAQABAAAAVWYCaOZGmeKKkIBCFEaYYANFCorBsF9ANQpFmtwABYDoABiQdYXSQPDHJCKgKETKRyxOzSkDcuzZqoJZc0ZmNRMUAcpDKASduW1gaJOYyS12N4bnAxMSEAOw==', -'img/tlctemplate.gif':'R0lGODlhEAAQANUrAP///5exyb/R37zM3LfK2q/C1bbJ2vv9/8XV4vf6/b7W7K/D1vz///3///L4/dbk8crd7tnm8pOvxq7C1vX4+8/g8LHE1v7+/7bI2LDD1a3B1O7z+eHs9bfJ2rDN6MXV4bXI2bHF17jJ2q7C1J62zL7N27fI2LbI2fT5/bDE1rnJ2v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZ0wJVwSCwKJQMCYRAwEieABgNgcA4zhwQytGwaTYoHVEp1WhwUbOIiOSmZwwIAggkDxtOqUB5JoTcjWRcAIEMLAAByEBV1DwAHIkMBCAIaABEcZxQbHiVGh4iKFSgqRpMClZccZVYroIgdrSunAh8ksri5K0EAOw==', -'img/toolbar-bg.gif':'R0lGODlhAgAaAIQRAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9PD1+v///////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAACABoAAAUkIAQ95OM4TcMwS7soSiInSI0ch6EbRV8QhIFwICgKAgGAEhACADs=', -'img/toolbarbk-blue.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAGoAAQADAAAAAAAAAAAAAAAAAAYDBAUBAQEBAQAAAAAAAAAAAAAAAAQDAQYQAAEBBQkBAAAAAAAAAAAAAAAUYQJiBBUBUpLSU5QFBhZWEQACAQMFAAAAAAAAAAAAAAAAEgERUgORApITFP/aAAwDAQACEQMRAD8AO+3739Hyu9mc533jw2beMHN+jJdOpXRsLMRN9BCHc2gipzAzlFFFOhBdghBIisug3EKSLYjENYwVEzpv4XhSwQrJ/9k=', -'img/toolbarbk-green.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAG4AAQEBAAAAAAAAAAAAAAAAAAUBAgEAAgMBAAAAAAAAAAAAAAAABAUBAgYHEAABAgMJAQAAAAAAAAAAAAAAYRQBUQORAlLSEwSUVQYWEQACAQMCBwAAAAAAAAAAAAAAEwFRAhKR0VKSA1MEFBX/2gAMAwEAAhEDEQA/AG/pvU9xvuTWzGG97q8d2snIPq+T3b+adyNUFjBNmKtkJwCUizRAtY1QNM0D1DhAy2hIPWNlGnMZlmF2herXwX7IgeV1JFud1JP/2Q==', -'img/toolbarbk-red.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHEAAQEBAAAAAAAAAAAAAAAAAAYFAwEAAwADAAAAAAAAAAAAAAAAAgMFAAQHEAABAAYKAwAAAAAAAAAAAAAAAWFSBBQVUQJiktIDE1OUBQYWVhEAAQIEBwAAAAAAAAAAAAAAABETAVECFNESkgNTBBX/2gAMAwEAAhEDEQA/ACHvvnv0na855xktyqcTtnj9Xi29FOBM0E0AoW2y9L1DsprPieWKHIR7gWSuyMQiXApgEMhoRXjWOS0YoLIdiXvazLtYFSo3TOB//9k=', -'img/toolbarbk-yellow.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHAAAQEBAQAAAAAAAAAAAAAAAAUCBAYBAAIDAQAAAAAAAAAAAAAAAAQFAQIGBxAAAQIDCAMAAAAAAAAAAAAAAAEUUQMTYZGhAlLSBJRVBhYRAAIBAgUFAAAAAAAAAAAAAAATAQISUZHRUpIDUwQUFf/aAAwDAQACEQMRAD8A6X6T2by3N7E7ccv+j5Hcr5Tqbn0ulspygigotuGSzfQCVFbxNosBkkEYMM7MBokAaMNkgMlgDC3KxLMIWF1Z+jPcoDfVhIZbB//Z', -'img/toolbarbk.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAFsAAQEBAAAAAAAAAAAAAAAAAAUCBgEBAAAAAAAAAAAAAAAAAAAAABAAAQIDCQEAAAAAAAAAAAAAAGEUAQMTUZECUtIElFUGFhEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A0n0XqO333JnagKaIA2zQBpmgDLVAFKELAKrKAfVm5cV0QP/Z', -'img/triple.gif':'R0lGODlhFAAUAMQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVxICeOZGmeaMoRDaCewha4r8gaxaYxNRcHiRiGhmIlchrcZkA0/SZChUbHO1mQx6V0M0RRhIapJjKQNUmL3GCLOWSoqIWYLHNzzyM5F/LW2DMpAGUBfFwPCAQqFX0Pb4A1Em8YF4g9HA6OliMOlZqeliEAOw==', -'img/undo.gif':'R0lGODlhFAAUAOYAAP///0BowFCI8Ep+4GCQ4JCw8I2w70BgsEBw0Ki/7lCA8GiV72CQ8HCY8EB44HCg8LjA0FV+tlB40KawwtPW2aq71aG764umy7TL7oCo8Gp5qV+CvTBYsEBwwDBQkDtgo5u370BgoM/S1FCA4Km+76Oz0FmG4Dtos83a7KnF7rW8x5Co8LPC773F1M3U7XCY4OHm6Kq+79rc3LTE4KS776K10tDV5EBosJq37JqtzM3NxF5+w7fF7pu47DBgsFh90LTG7K7H7bfJ6jBw4P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeDgESCg4SFhoeIiYqLgygJMRgujIIJBSAGBiQsiSswREAFCwg3JwM0PIgZQUIFBB0BGxEhAimILw0PCwcHOUQyHwM9iAQKDA8aLYMBAziII0MKDQQ2yiYWiA4IAT4cHoIUAQIzk4MqDgzkgzsCNekiJQI/6UQQAhIT8xUXOvP9/v/9AgEAOw==', -'img/unknown.gif':'R0lGODlhFAAUAOMNAAAAAAgICCAgIEBAQEhISFhYWGBgYHBwcH9/f4eHh5eXl7e3t+fn5////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQ78MlJq11D2U0FAAjHHd8nboR5bsAUrtb3wlIq05Pd4vXOWzPejacLwnS/RypZATE/iZ8tkCwADEyGJAIAOw==', -'img/unlock.gif':'R0lGODlhEAAQANU/AOHh4sbGx83Nzvz8/Pr6+/b29sjIyNHS0uXm593e3u7u79bW1rW1tdnZ2fT19b6+vllZW/T29vHy8/Hx8ezs7PLy8+3u7+3t7uvq68LCw72+v/j4+Nra2v7+/tja2/n5+err7O/w8Pf3+PP09WNhYuHi4+nq6svNztvc3e/v79fX1/79/dfZ26mqq7i6usfIyMXGxv3+/t3f4MTExLa3uOvt7fr5+by8vL+/v729vvj5+cfHx/n4+crKyv///////yH5BAEAAD8ALAAAAAAQABAAAAanwJ9wSCwafyPOYTE5CjuNEsiCOBgIx4YEoHloPAmc0QRCZQZCgefEKaoiGdGwI5CJiQfUrSgouYoOCE1EAgkMRAMEiRuMHwMCLIdDHBUUICYUChgIFCkXAkMNPqM+JS0AKwUOPj2hPgQ2PjQQDAMSEzoGQyo+PBsxLxABIikKBbpCvCIFAzgkOSIWNSM7u68fGxUXIRIhKQUBQwk7Bgbk5gEBMDMqP0EAOw==', -'img/up.gif':'R0lGODlhFAAUAOZAAP7+/g8PD3V1dQcHBwgICBERERAQEA4ODvj4+AMDAwEBARUVFQYGBjQ0ND09PfLy8q2trRYWFr+/v1tbW3R0dOPj476+voyMjI6OjikpKfv7+1BQUHp6eoCAgKGhoc/Pz8TExCUlJSIiIpmZmR4eHhISEgwMDA0NDRkZGQICAjIyMuTk5Nzc3KioqENDQ////3FxcRMTEx0dHRQUFLa2ti0tLc3Nze7u7ktLS7y8vP39/fz8/F1dXRgYGGlpaQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeEgEA6FUCFhoeIhhYLNImOiBgJF4+UQDw/Ey+Vjg0MKgibiAgkCTI2oYcfCz8zLaiGEAU/BRyvhR0HPwc4ALYbBD8DGTevADUpPwo9Eq8PKD/QJSOvIDHQPwY+rx4G1yYOO6gwJ9cMIiyoLgPXPwGoACEK0AECrysR7fW2OQQUtoYaDAUCADs=', -'img/upload.gif':'R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==', -'img/uploadimg.gif':'R0lGODlhEAAQAPcAAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjxAF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ8YKeeKoAaJpTipQjS6VypgkxRI9IkBQ4vMiyCY8Dd/MmNKJlA02cjjZqSQlTMMrUZSgEuRhVKEVnzJ8YNVwAxgmOc7wQBACwp0nhggzJIMoEoktCeg8YnHD0xfJr8wgUZAJQ40JXh5IMFACNCMNRSC1iSDpggkig7IAaNgkBg04OIbogMFlR5VFPRq+KkAAAKvn0AEQKMAwIAA7', -'img/vbk.gif':'R0lGODlhAgAaALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAACABoAAAQf8MnpXGuMrb2USmCCjMhxGKhRrAVBDPAgzEIQADgQAQA7', -'img/warning.gif':'R0lGODlhMgAyANU/AP359/2zc9DQ0PyjVP66g/vk1P2rZPeTPMq4rf21ef7Ck/2uaf69ifqZQ/7FmfudSrazsOTk5LeMb86OZOynds+KWP7Xt/2mWfvcxP7KoaqViMvBvPWZSv2wbvWud/fz8P2oXvSkY+69m/7AjvHNtfSUQq2imvOyhOyPQ/WiXOKJRP64fu2jbvedUfygT/q/lOWbaOybXOysgO/Dpf7Qqe20jf7Hnve5i/3t4Pa2iJSUlOCRV/agV//Jof///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqHRKdX4+1SyRdMqJtNnPqde7mQDgqYxMhm3S0cKL3XtpsHAnhU5mQfJNJA58PTYSEYBKAGuEPTImPolIIjaNNjYTApJGODmElzYOORpom0OMdJcOqwpupkIYc2yqrAoKNxJ4kj57s6G1CiMjMH+bM5WFoRkYGBnBwgwEh5JiZKo9AD4+ABkjDN8ELJCJNcmrDhba2gXf0QQrmYAFN7QOCunq7AT7KysepHko/LJni4Y6Hxj49UuQYMebNCRenLMVzMFBGu8WJgjgIRcYABSAQWOQTdsIjRsDdIhRLIsIis+8fSugDYDGADg7dFgwAVGV/w8eKI4Eh68Aw5Q6dy6IcaaKDFvCZLojYNGHhZQqdS5YYMBABU1TCuR41s5dvxXZRuTUurWrgRR3pPhgEbXdvowMcQBYq9QtCBAXHEohwUDq3bMMA2DAkXQr165/AQ+Y9gSkYYVHcdIowNbv3wugB6Bo2aSGXYUrEudE59gz6AsDYruo4JMJDg/gMKvOqtUz4NCxB7jgoCESEwpTEWNt3Bbyb9jBhbuYDVYJhgSHU+9uvAJDAQWRX0efTp64riMAWKDezrZDSR8ExI8n/6C+CtJGZqzAy77viIMWACcbeS7UV18DlBnxAQvK4cRbcwYkcFF00k1n4IENoGACEjKgxLRXX87hgwMIwRFY4IUNpNjAV0YU4IF2DjLnlgGfXdBBAtBVeKKBKqqIQnFFsJDZgxCGl+OA9KHYo4oqPCQECQEs15lrAuq4I4ZLNnDAlnEJISRfrTn3G4UmXvhAllpuueV9Q8QA5mM01nhkmUpmqaaaKuiAhwgh9OlnCCkEysOgPLRg6KEtcKDooouW4OijJdyppgR6DgFAARtkqummGyDg6aeghirqqJ5mWtsrqKaq6qpaBAEAOw==', -'img/wiggly.gif':'R0lGODlhFAAUAMZKAAAAAAICAgQEBAUFBQgICAoKCgsLCwwMDA8PDxAQEBERERUVFR0dHSwsLC8vLzIyMjMzMzQ0NDY2Njg4ODk5OTo6Ojs7Ozw8PEREREhISExMTFBQUFFRUVZWVllZWVtbW2FhYWRkZGdnZ29vb3V1dXd3d3l5eXp6en19fYGBgYODg46OjpaWlpycnJ6enp+fn6CgoKGhoaKioqampqqqqq2trbCwsLS0tLa2tr29vb6+vr+/v8TExMbGxsnJyc3Nzc/Pz9XW1tfX19vb29/f3+Dg4OHh4ebm5unp6erq6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeJgH+Cg4SFhoeIhUEpLYmHSBEGAC+Ohj49BzOVhkIHQH9FR0SbfzQENicPAAw8my4ACA4mKwE4pDIxQn8zAj6khCUKRjsjHSikIgQYCRUNAD+bMAsXLkcsAL+EIBB/STk3RaQZFjMUBAcNpB4DBRo1Hw6kQzE6giEb2YMOJPmCEBIT+qngIKLfoEAAOw==', -'img/zoombox.gif':'R0lGODlhFAAUAOZTAICAgOvz+ury+vn7/eny+ujx+ff6/b6HTcGPWvTs3Pbv5Ony+dSwcL2FTOHJuM2mYvH2+9Gqdu71++LLuefTuvHl2Nm7jOfToMOSW6xlP/L3/ObRr9/Fj/Ln2eXPqdKuhMqfZePNu9e1ffr29NKtd8ORVrmASLd5Us2kcdq7gPfw5dGrg+bRrvD2+93CkdKubcGOWMmbY9KtbPHm2N/Ep+TMrPfv5e/1+9i5i8yhZ+TOrPfx7byEUZdhRs6nY9e2fbZ7Uc2naObRud/Fo/Po2ta1f+zcv+DHk9e3fd3DkcmbYejVo8+pZa5tSPjx7dCoas+oYwAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAebgFOCg4SFhoeIiYqKCUkvTD5PFkSLRgxIGyoKOiQ5FIkJDB4GNwIBEANDMTOILj8GAQULBAISAygfiDIsLbK0AQEaNBiIUDZRyMnKiA8KUVLQ0dBRiEE1z9LR1Ic4EdjZ0IgdIN/ZACGIQsrJUgDuTogVKwgHDfQNSwApGTuLghMwOFw4oqSHP0EOeIgoUgLIQYRNTJwY8bDiwUAAOw==', -'img/zoomin.gif':'R0lGODlhFAAUAOYAAPTr4uny+vn7/T6DN+jx+dSwcPf6/fbv5L6HTeHJuFOeS1yoUu/1+zV5MPTs3Ony+YvGg+nXpdKuhPn7/t3Ckd7EjebRryprJuTOrNi5i72FTMqfZTJ0LNKubTBxK+jVo97Eo8OSW9KtbPHl2N/Fj/D2+2OyWfLn2ePMmb+LUOXPqde1fffw5d3DkdCoatm7jMGOWHa3bd7Dpuzz+ovHhePNu/P4/ODHky5vKcyhZ2WnXmGwV8+oY2usY9Grg8GPWs2mYsiaYMmbYc6nY/H3/J7RlZ/Sl9/Fo+bRrjN2LubRudGqdsORVvH2++LLuYbFfbyEUffx7eTMrPHm2LmASMqgb/r29JdhRprPkl+tVoLCffPo2rZ7Uffv5de2fezcv+71+/L3/ESLPefTuqxlP82naN/Ep9a1f8mbY82kcdq7gK5tSKbVnZDKiM+pZdKtd+z0+k2WRV6rVOfToLd5Ute3fVqbU2e2XPjx7byDT+ry+uvz+v///wAAAAAAAAAAACH5BAEAAHwALAAAAAAUABQAAAe/gHyCg4SFhoeIiYqJDi0dbkMuL1uLXwV1FiwHGG85Y4wFKgYMentNAkdoU4gUXgZ7BA8BemACaRKIIkglsbN7e2FmIYg8XXuzpXc7CwApiEAHM3qle1lsCgAIiGVSRL8mcjFFPWIDiBlLAgxwC0ZYT20QDYgnGyATNgpxOjR2STg1ECkJUkUGAAADtHBAUSEPHkQjfPxAoKGBhwsfIqghE2WRICcwSMy5IeSKR0EJoKw4w4TLSZRrqNCx8rLmy0AAOw==', -'img/zoomout.gif':'R0lGODlhFAAUAOYAAPTr4u/1+/n7/eny+uzz+tSwcPbv5Ojx+fRFSO71++waI/Ts3O4mLvdUVvpjYvxvbff6/fE1Or6HTeny+ez0+sGPWvjx7c2mYuPMmdKtd9Grg/D2+/Hl2PHm2MORVunXpbyEUc6nY9/Fj9a1f8mbY/H3/OfTuuoRHL+LUObRrvPo2vfw5d3Dkd7DptCoavn7/va2rvjy782kceDHk+LLueHJuNGqdvfv5eDHtvjIv/54dNu/h9i5i8qfZdm7jPH2+7uGUtKubde2fd7EjfSrpN7Eo9KuhM+oY7FyRffx7ebRuejVo8mbYeXPqbyDT8GNU9q7gN/Ep82naPL3/PfAt+zcv7uBTN3CkeTMrM+pZePNu8GOWL2FTMOSW5dhRrNzS/Ln2bmASMqgb/P4/KxlP+bRr9y+pNa0eefToNe1faVcM8iaYNe3fdKtbN/Fo8yhZ+TOrPOgm+ry+uvz+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAe9gHSCg4SFhoeIiYqJCyxBWSEuPiqLVQVsZSsGcBlvJowFTRABcnM/Am4kHYhXQhBzBxMDcgkCMkaIbSkbsbNzc1NRXYhHN3OzpXMECQAoiBcGBHLJBBQBABKIUlglvzoPDg0IEQyIPDYCARQPOVQwRHEKiGA9RS9j4eMMCidaiEprxLQAAMDMkzMYhjixgIiDhgoSuACxsmPJByhkkiwSRGOLCDQzmHjZKKgGiDQjPCAhKQiHmjBfYrCcyTIQADs=' -, -'img/controls/checkbox.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tLS0szMzMzMzMzMzMzMzMzMzMzMzNLS0u7u7v///////////////////////9DQ0O3t7f///////////////////////+3t7dDQ0P///////////////////////8bGxv39/fv7+/v7+/v7+/v7+/v7++Pj4/39/cbGxv///////////////////////8LCwvn5+ff39/f39/f39/f39+vr65eXl/n5+cLCwv///////////////////////7+/v/b29oyMjOXl5fLy8uXl5YyMjIyMjPb29r+/v////////////////////////7q6uvHx8Xx8fHx8fNDQ0Hx8fHx8fN/f3/Hx8bq6uv///////////////////////7W1te7u7tnZ2Wtra2tra2tra9nZ2ejo6O7u7rW1tf///////////////////////7CwsOvr6+Pj49PT01xcXNPT0+Pj4+Pj4+vr67CwsP///////////////////////7Ozs9TU1Onp6ejo6Ojo6Ojo6Ojo6Onp6dTU1LOzs////////////////////+rq6r+/v52dnZSUlJSUlJSUlJSUlJSUlJSUlJ2dnb29vefn5/////////////////T09Obm5uXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fPz8////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7', -'img/controls/checkbox.png':'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', -'img/controls/close.gif':'R0lGODlhEAAQANUAAMczNfRxdPRzdPNydPNzddgqL+AsNN8sM8cpMOY2PuU2PsUgK+UwOfJVYPRja/NjavNja/Nka8UYJ8YZKMUZJ8YgLPJUYMUTJfE/UvA/UfJIWPFIWNRldN+cqMpdSc5uXspXRspYRslYRtWIfMlQQ9ymoMlHPslHP8hHP8c9OeBhW/WBfcc9OuNST/WAfvSAfuPExP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAZ8wJhwSCwaj0eYZ1QceWBEWKgVYgpHohYIKiyRXCvSp/QhvcIl4ghFEKhMqkHgZCVyWBHIw/FIcZAACg0NFgkASDEIDBsaGgwISBwVGJSUC39FHBOUBRIFGBkUmEIdF6AXHB0cphkXHUMwFwaoQ6sHF1xCsaNCq7mIwMExQQA7', -'img/controls/close2.gif':'R0lGODlhEAAQAPcAAP///////////////+DAv71xcKtGRatFRatHRsB5eebLy/////////////////////////////Lr67dmZbpZWd99f/SQlPOPkvORlNx4e7VTU7xxcfn39/////////////////Ls7K5RUM5oafaKjut2euZoa+RkZ+ZpbO15fPeMkMdiY7RiYvj4+P////////r6+rRpacthYu1zddtNTdI1Nc4rK80pJ84rKtI2N91SUvB5e8FcXLx+fv7+/v///9nJyatERO9tbdI8O8cgHGoMCngMCsIUEHgMCmoMCsghINZCQPJzc6U4N+3t7f///65xcctWVdVAPcMdGMAVEf///9XEw3YNCtXEw////8AWEcQgHNtJR7tQULuVlP///6JVVdtOTMUmIb0YEb0XEOPGxf///9XEw////+PGxL0XEb0ZEcgtJ89NS6Nrav7+/p5OTdpBPLwdFLoZELoYEHMPCtTEw////9XEw3MPCroZEboZEb0gGNREQJ1fXv39/ZRUVM47NrkcEbYaELcaENTEw////+LGxf///9TEw7caELYaEL8dE8Y/PJVnZ/z8/I5ycrQ+OsIdELMcEbMdEf///+HGxLMcEOHHxP///7McEbMcEMkfEag7OZqNjf7+/qmpqaE/PdYnG7UeELAeELAeELAeELAeELAeELAeELAeELceEMowKZJDQrq6uv///9bW1mphYaY5ONEmF7YfEK4fEK0gEa0gEK0gEa4fELgfENUnGac8O3hyceTk5P////b29q6url9WVqlBQMo0LMgmFL4jEboiEL4jEMglFsc4MKhFRGNaWsDAwPr6+v///////+7u7qysrF9cXJdQUKg+Pas9O7o+Oak8O6lAP5BQT2NjY7e3t/Ly8v////////////////T09MjIyIWFhV5eXmNYWHJVVV9XV2BgYI2Njc/Pz/f39/////////////////////////z8/O3t7dHR0bi4uK6urru7u9XV1fHx8f7+/v///////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7', -'img/controls/color.gif':'R0lGODlhEAAQAOZaAPr6+vj4+O/v7+Hh4b29vZiYmOPj4+W6YvPz82nK+uvr6/39/fz8/MLCwvHx8cDAwKWlpWTE9dfX16enp/VkxOXl5cfHx7Ozs2lp+u3t7fppabrlYvppymRk9aysrGLWYvXEZMpp+sr6acT1ZPrKacjIyPv7+/VkZP7+/uViumK65bCwsGJi5be3t+ViYrpi5bq6umTlZOrq6mnqaebm5sRk9fb29uzs7MTExPLy8tjY2NhdsF+24d1aseG2X91aWl/TX7bhX1pa3bZf4V2w2NhdXV1d2NiwXbFa3bBd2N2xWrHdWuFftlqx3bDYXV9f4VrOWt3d3V3LXeFfX+fn5/X19enp6YyMjMrKyv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAQABAAAAfWgBJYg4SFhBJaJVmLjI2MJVoWKEcHBwtFLi4LOykpKBZaOAw+JCQmUxoaJkwcHAw4Wg0ASiAgAT8nJwE9FBQADVoPAVXExcZVAQ9aBDZOGxs5OhUVOUkvLzYEWjAIQSIiAgMAAAJDISEIMFotDksjIzdRxDdINTUOLVoXAlb9/v9WBFzQsiKDlA8faBBRoYKGERYsMqzQ4kEGkBkzDPBIkMDAEwwYZHjQMsEKlBgxBjSJEGGAkA4drEzQUkABlZs4c1JRUEALhCtAgwoNCkGL0aNIkxoNBAA7', -'img/controls/date.gif':'R0lGODlhEAAQANU9AO3t7cXFxZOTk5GRkdnZ2U1NTenp6UeEv19fXzZjn6urq6enp4yMjJiYmJycnEKCx7u7u+Li4jRyrBdOijFoq66urlBQUOTk5PLy8rKyskKJ2YqKinp6esDAwMHBwUlJSVhYWLy8vPr6+ra2tsnJyYKCgmxsbKKiorCwsNLS0tbW1mFhYdvb29jY2HNzc+vr66WlpUdHR5mZmUh2uPT09FqW0+fn5+Hh4SJSkaCgoPHx8U+W3+Xl5f///wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAabwJ5wSCwKNbukcpnUCB+1g+RQq0antYeQMktgErNw9zujCCc43CLNVqcnQgiNYCHQ7vM6DSIM6f6AgX8oQgo8h4iJhyNCGQAAAQUFAZGTjxlCFQYGASQODQ0On5sVhTanHiYdA6wDpwpCCxcXDAgIDLUIGy0qOUIwERE2AgKnxCwiABxCJzfOz88pLysfQiU52NnZMi4xIEbgREEAOw==', -'img/controls/dropdown2.gif':'R0lGODlhEAAQALMPAObm5vLy8urq6uPj4/Hx8e3t7QBgpwBjuuXl5ejo6Ovr66CgoABmzJmZmfz8/P///yH5BAEAAA8ALAAAAAAQABAAAARL8MlJq7106b2c/98SjGMHgguhqubpLU0ct+5S3HfH7PthOAuFTGHi+V6CZLLFOL4SsgTtFwJYrbTTAiFDZFGDcPgb4mhcH4x6XYkAADs=', -'img/controls/edit.gif':'R0lGODlhDQAQAPcMALKysr29vb29vb29vb29vb29vbu7u7i4uLW1tc7Ozvn5+f39/f///729vfr6+vr6+vr6+vr6+vr6+vT09Orq6v///7a2tsnJyfn5+f///729vfr6+vr6+vr6+vr6+vr6+vLy8ubm5v///////7a2ts7Ozv///729vfr6+vr6+vr6+vr6+vr6+vT09Ojo6P///////////7W1tf///729vfr6+vr6+vr6+vr6+vr6+vf39/Dw8Ojo6Obm5urq6ri4uP///729vfr6+vr6+vr6+vr6+vr6+vn5+ff39/T09PLy8vT09Lu7u////729vfr6+ufi1+fi1+fi1+fh1+fh1+fi1+fi1////////////////6CgoPj4+N3Vxt3VxtvUxdrSw9rSw9vUxf///+qadOBfQOBfQP///6CgoPX19fX19fX19fDw8Ozs7Ozs7P///+fgu+BfQOBfQPcoDP///6CgoPDw8N3XzN3XzNfRxtPNwv////vwnP/mAJmZmfcoDPcoDP///6CgoOvr69nTyM/Kv8/Kv/////vxnP/sAP/pAP+ZAMJmKf///////6CgoObm5tTPxMnDuP////vynP/xAP/uAP+cAP+aAP///6CgoP///6CgoODg4M/Kv////86/av/2AP/zAP+eAP+cAP///+Dg4KCgoP///6CgoNvb28C6r////6GMEKGMEP+gAP+eAP///8C6r9vb26CgoP///6CgoNbW1snJyf///1pIDaGMENl1Bv///8nJycnJydbW1qCgoP///7KysqCgoKCgoP///////////////6CgoKCgoKCgoKCgoLKysv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANABAAAAjtAAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnzwICADs=', -'img/controls/file.gif':'R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==', -'img/controls/filelink.gif':'R0lGODlhEAAQAOZvAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAepgG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJg2ckAF9ZZkwALihQGGA8b1wwDmoHWj5FVQdCYmtRXm9IOlQnbgQOIQRlKTgjSiZvABMVBQ8ZMxc9DwUVEwCCBgEQFAsCAwMCCxQQAQaCEJT4IYIBiwBtVDA4QmYIAkENJERIoCDHmA8aFCSIIKGBq48gQ2oKBAA7', -'img/controls/group.gif':'R0lGODlhEAAQANUmAHOj41xcXCUlJVJSUrjR8jAwMDw8PHd3d0dHR25ubpu+64yz55/A7WZmZpa76hsbG3R0dJG26oWv5xEREUFBQZe66qXE73el46fF7YCr5Z6/66/L73up5bPN8KLC7Zq964Su5rbP8RQUFKvH7wkJCaLD7v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZNQJNwSCwaj8gkscRQOCILSYZzAVgBwhJhG+psRhiP5lPBmiyltLr5jIKU8LgQkmgEBghDQfCYkORHB4J0dnh6AoBGd3l7DyIUiZGSRUEAOw==', -'img/controls/hidden.gif':'R0lGODlhEAAQAMQRAOvr6/Ly8sTExLu7u7S0tOjo6OLi4uzs7KCgoIqKisjIyN7e3vz8/Onp6ePj4/Dw8Pf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABEALAAAAAAQABAAAAVCYCSOZGmeaKqmQgIkLvzGroAseK7rSOH8wGCwQGgYj0gkYfBoOp/PwQFCrVqtBwFjy+12BYaAQiEmj8tiw2rNbrdDADs=', -'img/controls/html.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHUSURBVDjLxZM7a1RhEIafc3J2z6qJkIuCKChItBNSBQ0iIlZiK4gWItj6HwRbC7FRf4CVnSCIkH9gJVjYiCDximCyZ7/zfXOz2A0I2qVwmmFg3rm870wVEezFavZoey7Q3Hv+/Z87qDsiTlZFBJIGKStZlFSCTpyUlAZgfXXfH9BAPTCberVANBB3RAJRR8wp6jzd/DotALA9UcyZgZxis2QNijpZjSJBVqeIszTfkMY65cAjuHxmgSzGlbUFrp1d5ObGErcuLLNxep5hU3H93AqjYcXti4cZZ2OSDU9CnVURddqmIovTDmoev/5GVcGDF585tjzg1JGWo0tDDgxrThxq6XojieOd0nRZ6dVpBxU3zi/T1BVdViKCcTbcYX11ngB6cca9MSlGlprojHqcglycVJyHL79Q1Jn0TgBdb1gEbz9OeL81IYsRAakYvQSeC/WvVOiLE8GsM4xnvsuGe/Do1RY/dpRenIP753hyZxURJ3JQXbr/Lq6uLfLpZ6aIk9XJssv8VK5dNcQcmcl7fKVl89kHmu0dJRVjYTRHGVSMpELaQLVCtEY8EAvMHHUwn067+0LVybtvok9KSODZiaKEOJENihPm01gD3P+62Oq/f+Nv2d9y2D8jLUEAAAAASUVORK5CYII=', -'img/controls/htmleditor.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKbSURBVBgZBcFNiFVlGADg5/vOuffOdcb5cbKcjUn5V7poFJEiKMKybDYFgdSmKAiiokW1aNHSXWQQuGwR2KJFq2hTkFqUEbZRMzQIJS1nbPxjnHvvOd/b86SI8OSHx1/uT/ZeyslujCGBhEhE0ZTy5/Vr8V26ufzeiSMLQ4AUEQ4c+vHE52/tfiDnNB1UAoAICIu3R47+et0/FwcrZ0+fW/fDkYUB1JCrtK1bV9NnrqpySiSi0EbRNOHOqPX4lrX2bq2dLItromxffuzNr2eOffrsIENKaSIiqm6VdTJ1ospUiZTIEoq5ya6FPXM2be7168nxz6De+c7vhx+a39h/48tF8zN9nYqfrtyx956+4aj49swVMxPTtsyuc+9EpdepbXp41rGf/3oBL+ZmEKfunqiNBfv3TDl+acXqMDyxa8rlxaEUvH5gvQvXkpMXG9+fX9HrVFKdG8iKX26sFM/vGFen7PbSsq29WpWT01eW7Ns2Z02v0utWxrqVsW5HyKQM6mht7lX8duGOj7+5ZPv96y3913r/i8sU9j86Y9QGKUttEjkURAB1jMq4YClluWV6NUlTterSooN7N8opqasgEkFI2kJbgBxDvWiTs+evOvTKg/qdZDgqbq0Uj+yaBEmSIqlzUuVkrJO0TYC6jGKuSnSa0O9mf1weuNHe9PTWDUqEErSFQAki0amyZtiAOrVp6tz5qw6/ep8miqlOdnG59cy+WSWAKlOhkxMoEUaDAvKFr3Z+MBhdX51eW4PXDm7wyds7AAAAQJQwWm1AhmZQSlNKAAAAAADUdS5NWxqoYbTa/jvere6SRuMRkQUFMNWvQQT9TpaS0qnSrbYpf0MNKcVHT717/LmU0nyINQCCQAggwGop5VSdHYX/AYn4JwmEykruAAAAAElFTkSuQmCC', -'img/controls/img.gif':'R0lGODlhEAAQAPevAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAj3AF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ6iSFfLEUQNE05xUoBpdKrWqZJIUS/SIAEGJz4sgm/B0ffVmxpROpGywkcPJTiUpYdZeiaIElSAPowqt+JThA6u1G8AwyXGGB4IQEO48MXSYIRlEkUhsSUDnEYsbnr5UfmUGiYJMGGpM8PJAgoESoxlpKAKpTQRJF0wQGZQFwNomMWjAwTFEBwwuO6os6rGA4YACBACwmk4dAIECA14FBAA7', -'img/controls/input.gif':'R0lGODlhEAAQAMQSAL6+vpycnHNzc4KCgsPDw93d3UxMTJiYmLGxscHBwba2ts7OzsXFxcnJyampqdvb2+zs7AAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAAQABAAAAU/oCSOZGmeaKqqzOG8cIw8IgMYggDtPPTQEpsiQujxfjUAJGI8Am2DSKDpexIGgWkTKVkkGuCwmFFYmc/otDoEADs=', -'img/controls/jsdraw.gif':'R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==', -'img/controls/movebottom3.gif':'R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFGBwoUKDAxwmhBjRIcWKCy9iRKhxI8OOEztiFCnwI0mQEkMeTMnxpMuCAQEAOw==', -'img/controls/movedown3.gif':'R0lGODlhEAAQAJEAAAAAAP///xUFp////yH5BAEAAAMALAAAAAAQABAAAAIcnI+py50CoxRqymUjy43360yOoY1DaVLmyrZDAQA7', -'img/controls/movetop3.gif':'R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFFBwoUODECNKnCiQIcWKCC8OSHhxIUWPEh1ahCgyosiMBk+OPKhypUaBAQEAOw==', -'img/controls/moveup3.gif':'R0lGODlhEAAQAJEAAAAAAP///yYIsf///yH5BAEAAAMALAAAAAAQABAAAAIdnI+py+0j3hFUwvqozjq2vjEgpoxhYpJTqlruixQAOw==', -'img/controls/multiline.gif':'R0lGODlhEAAQALMPAHd3d1JSUlxcXEdHRzAwMCUlJTw8PGZmZnR0dBsbG25ubhQUFBEREQkJCUFBQf///yH5BAEAAA8ALAAAAAAQABAAAAQk8MlJq704680p+IhyCMFgEEV3hWN5FgnTqBZposni0Hzv/7wIADs=', -'img/controls/note.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGGSURBVDjLxZO/alRBFMZ/c6MmomKhBLv4AIJiYekjCFopKSzyCnkGW99BbMTOQhsrBcFKsLCJhRYBNYYsWXNn5s6Z81nMGu+626XwFDOHge/PmfkmSOIk1XHCOvWn0ZdXsulPpAFZQbUgG5BlVDOURLWELEJJXLz3JMwTVOP0tfsLChIEmC2A4OD5g0UHebLLWQl5bAcBJAcC4i9D6FZRiUtGMMOHb9j0PXhGGtruA3hCnpBHzly+i5d+CUHNgCFPoDIDjcEJeQ8yNCxxYL/2m+U55Yh7mpFE8NhE7GiRwGsi7bzF8meoA8io6ZC1jfWm7AnVCPLld1DjPna4y/kbm4Djw1emH56h2oN6VFNzIKOOCI6DFCTKj48cvN6m9jtQC64yAjcXrjrnoBu/94VbDymTPSZvHs/A6RgsT0gZqC1M/46AJcJKx7mbW8RPL5m+e8HKpeusXbmNI1AFDHBkmZHzFpO9p3fkJSNLqEQsfgc6uhCQJRgy7qlF2ypXHynMEfy33/gbubc6XKsT2+MAAAAASUVORK5CYII=', -'img/controls/number.gif':'R0lGODlhEAAQANUgAODg4Li4uPX19Xt7e97e3oODg5OTk4uLi/f39+/v7+zs7MLCwn9/f+Hh4ZaWloeHh66urujo6PHx8Y+Pj/Dw8Pz8/Onp6dfX1/Ly8tzc3Pv7++Xl5dPT03d3d8zMzJmZmf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACAALAAAAAAQABAAAAZxQJBwSCwaj8jkcPFpOp/PhUODECA02Gy24jAIJBQJZkwmCwyThMXT8Vje67YlMTkoNh38Zq/PKw4PEQAdg4OEbIQRDwUbGR2OGZGSjxsFDA0XAR0BF52ZmxcNDAMEHKanqKYEAxAdrq+wsBBKtLW2QkEAOw==', -'img/controls/plaintext.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABjSURBVCjPY/zPgB8wMVCqgAVElP//x/AHDH+D4S8w/sWwl5GBgfE/MSYU/Ifphej8xbCLEaaAOBNS/yPbjIC3iHZD5P9faHqvk+gGbzQTYD76TLQbbP//hOqE6f5AvBsIRhYAysRMHy5Vf6kAAAAASUVORK5CYII=', -'img/controls/plate.gif':'R0lGODlhEAAQAOZ2AKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAQABAAAAfGgHaCg4SFhoeFCSY0MAFRXQgFAQUDA1UEAysQdBkGPjEdUgYgABUOHgEWUxhjClgCYBAKSw0MJF4ubxMyAG0CKVtwdR8KHB1zZigzWklNDiQVTAwZC2sjVwEnHDkMF1k9OyJGEkQaOAhAamE6Gw1OByxPDQ5fFioRCB8/PAdCABNKFrwQUyMOhQRDqAi4cUADAAkYFqSh4MZAiBJnWiAREOQICDlkRogoE4LLhggEPBSxwmYAlAsFbKB5kKDEAwKIcurcqTMQADs=', -'img/controls/plates.gif':'R0lGODlhEAAQANU0AJyUlIF1dYd8fIN2dn9zc5+YmIF0dH5ycpaOjoN4eKqkpJmSkp6WlqyoqLy6uqGamp2Wlqynp6umprq3t4h9fb67u5uTk7KtrZ6Xl8G/v5iQkL26usnJycjIyIuBgb+9vaGZmbSwsKymprCrq4V5ea+srK2oqK+rq6Kbm52VlbWxsa2pqYV6erKurp+Xl4R4eL27u6mkpJqSkv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADQALAAAAAAQABAAAAZxQJpwSCwaj8ikUnlQCBAFQywBWASKsZl2yy0OZs1ndFq9CmWzLHc9RH/DUCnVSiPM0LFOaZKRcBofDittMwMRHjIoJBECLiksQ3YyMA8mKgAVGC0jDEUyDg8NIQAbDBcnEEUEIhQaIAESLxAWA0u2SUEAOw==', -'img/controls/radio.gif':'R0lGODlhEAAQANUjANfX1/Ly8nJycuTk5MnJyenp6eDg4OLi4r+/v9bW1s/Pz/b29qKiorKysoaGhuvr67u7u+7u7vj4+Ojo6Lm5uby8vJycnMTExKOjo5SUlIKCgu3t7Y+Pj8vLy9TU1Nra2vv7++Pj48zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAQABAAAAZmwJFwSCwaj8gk8pEQiRKPpEFUAIEKIsOxQFhYrQtCwagISQAYDEASUhgRgUDG4cjEEUZIZKMRCDQbERBGFwATFX4VEwAXRgcNAwMhIZENB0cEDB2THQwESB8UFhwcFhQeSqmqq0ZBADs=', -'img/controls/radiobutton.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tjY2M7Ozs7OztjY2O7u7v///////////////////////////////////+Li4s3Nzerq6vv7+/v7++rq6s3NzeLi4v///////////////////////////+zs7MrKyvb29vv7+/v7+/v7+/v7+/b29srKyuzs7P///////////////////////9HR0eTk5Pj4+NfX16Ojo6Ojo9fX1/j4+OTk5NHR0f///////////////////////8HBwfLy8vLy8pSUlIaGhoaGhpSUlPLy8vLy8sHBwf///////////////////////729ve7u7u3t7YKCgnJycnJycoKCgu3t7e7u7r29vf///////////////////////8bGxtjY2Ojo6Ly8vHJycnJycry8vOjo6NjY2MbGxv///////////////////////+Xl5bOzs+Tk5OTk5OPj4+Pj4+Tk5OTk5LOzs+Xl5f///////////////////////////8vLy6Ojo8vLy+Pj4+Pj48vLy6Ojo8vLy/////////////////////////////r6+t3d3bu7u56enpGRkZGRkZ6enru7u9fX1/X19f////////////////////////z8/O7u7uXl5eXl5eXl5eXl5eXl5eXl5evr6/r6+v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7', -'img/controls/richtext.gif':'R0lGODlhEAAQAPeMAHeAicba6Mzd6rXO377T4oqSmrrG0v+iKKi2xrzH08jZ57bCztzm7//hpomiuYqjunGIoo2hteTr8oqgtoqRmMvc6e7z+NXh7J+4zLrH06F5SYSds6W3x2mDnN2tbKK0xYearbbBzcqXWZSPh+bq7cSUViVEY5eam0ZigN7p887d6Y2UnNLj7kZfeLGHTs3c6OvSod/r87XAzLzI1LjE0Hd0cHiBi++9c8bKyM7e7Onv9cLX5ufu9tyq1LWMVbrAxNbl79SsyYiesvT09OPi4RM1VI6lut7n8KF7Tb3J1WmBnPn8/tXi7MbP2bTN373S4rvH0/D1+dbi7cSOyOTs85yQgdHg7Nuradzp8fH6/v+iIsna6NXk72qFovP4/LK0t9nm8Obl5XR+ilRvi5uywvX5/IGZsi9ObLjQ4Y54V//jqYZ3f93n8MXa6HKKo7adfjtXdtnl7+Xw+eHr8+Hg3/+gJoaft8KptY2lutjY2I+mvP/ip4ecsP/hpezq55yZlfj7/v+hJ6N7TOfv9+zy+Nusauv0+7Srt3aCjuLi4IuSmsfb6f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIwALAAAAAAQABAAAAjXABkJHEiwICMSC0IsoGHAQAYoSWYkSNBE4IoYARZp1BigY4A2CAQqYoHBwYMHDuygGcDSyQeRQDYYcTNGT4cdBHI+ISMSjAIFE1Dk2CKgaIVFPYIwUoTlhQohcLhYUQIBQpcfh6bcUTTnghQ+Z1IwiRMBTyEcJ9aEKcCDwREQJgYxYGPGRQMtNQQWICRBR4siMqjI8bCnTgkOIstYiAJoiRdDV/oEEpElJKMvNgBoBiDGR4MDGhABoGCQ0ZA3ag4goVN6oB8YNwQlaj1wRJoqRGgP/JOHdkAAOw==', -'img/controls/select.gif':'R0lGODlhEAAQANUhAJWVlaurqyYfQjUqNubMp/f//z0lJ2eGpvP5/P//89PKuvr15J1/Z//77LzE4KnM5I643MScdF6Gq////F6IrZRpTTMxLq/V5rW/3CwvMfn//511XMq3rh4kR9/Dnqqqqv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAAQABAAAAZVwJBwSCwaj8WPcslcAoSgqHQqDUCpWNDnCppwMFOFQ8sFRQSPqGcAIYemi0rnQjBQEG5qY2PJSApRW29UCQwHGlKCWViKi1ONjlFWIU2VSk9ImZpFQQA7', -'img/controls/sequence.gif':'R0lGODlhEAAQANUmALu7u8TExK6urrW1tcPDw7Kysqmpqb29vcfHx9LS0ri4uNnZ2ZmZmZycnM/Pz8DAwM3NzZeXl56ent3d3aKiopiYmNTU1Kurq7CwsNbW1svLy6enp8bGxtvb26SkpNHR0aOjo6qqqt/f362trbGxscrKyv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZVQJNwSCwaj8ikUnkhFRSAwyMQQJSuw5DDkbBkFovORDQpDQ0jQWEQfRCq2KV8GWE0JBSP4aJmH4YRBAQcVhoQEB9dAEMVFXZ4IBsGAhgDCnOYmZpIQQA7', -'img/controls/set.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoJJREFUeNqkU01oE1EQnk02iTFQE7QihUKRkKTF1iU9+FdQCoWYgAcPegkIeiiIWiHgwUvpQXs1Ggo99OYlFwUhWAhYhZJWUmhMxJbYYk1LFDcmJraSv911vjQbevPgg9kZ5vu+eW9n3hM0TaP/WSI+gUCADAYDmUwmEgSBUNRoNJ5jaKjNSyuKsqRjjUaDVFWlWCy2X0BfDJ5nd5r9KxZI0Wh0BuRgMHibcznGrrD/wD6hawwHxBdcLte12dnZGYfDcYOFhkJBpnL5F3Y0IAcMHHB1nYAj+Xw+xHeZ8FSWf1BPTw+trqY2JElyAkilUhsej8dZKhWpu/s4jY+P3+P0s/n5+f0TVCoVqlarL0Oh0KTZbCZZlmlgoN+pqgrBEO/u/iZg4IALTecX+BQX6/X69Xw+v8e7bYqiSMvLy+t+f2AGhhg5YOCAC43+7+T1eh+srCS1hYU32tJSQkun09rg4NA0TwLTIMTIAQMHXGigbU2hVqsZq9UaNZsKKYrKoxRZKDYwKizEyAEDB1xoOk3kzo6xP4PExMT9WyMjl/q2t7+npqYevkBucvLx1d7eE9Li4tutcPjJXEsoCO+z2WxcP0GcC3zmDt8ZHj7bVyyWyO32SLHYOwl4ufyTdna+ELCuriN2nlSEC2x1mshdRZGbkchcSJaLfCOtFI+//prLbRIMMXLAwAEXmk4T+ZLALo+Ojj1PJtc1t7s/bLfbHyUSGQ2GGDlg4IALTesd6Y8JY7JarX6bzTZtsVhOwq+tfdMymZx2MAcOuPrmrSYKaDHRUbZjbIcA8sM6xQ9sADFP4xNf54/t21tnk9kKrG3qBdCLw20T//GCFbY9tj+sVf8KMAACOoVxz9PPRwAAAABJRU5ErkJggg==', -'img/controls/sketches.gif':'R0lGODlhEAAQANUrAPp7VIqqAP94R4jG9YmtAIuqAP2mik6p8f/bxE2p8fKzfHS26YitAFul5+jryKe+OqzAPPymi9Px/9zko9DbgZCxD5jb/++Uc/17U/x7Uk6p8E6o8P97UFul446rALHk/8Xp/5PC7v7NsY+qAF2k5V2k4d3kt+6Uc5KyEfXFmXq25v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZIwJVwSCwaj8ikcslsGh+BAmQVKnUGKwMAEBEGTI7RigSSbFYZEQLgnVA8q8bHklhxUgqMsMIgoFYqGgcLKycCAhdOiouMjYxBADs=', -'img/controls/table.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgICAgP///////4CAgICAgP///////4CAgICAgICAgP///////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7', -'img/controls/table2.gif':'R0lGODlhEAAQAMQeAJ2dncLCwqKiov7+/b+/v729vaenp/Ly7XC6DbS0tPn59qysrGqzCfv7+bi4uJPMRLKysq6uru/v79/f3/T09PDw65qamsPwc3W/EKioqJfbKWWsBrq6uvz8/P///wAAACH5BAEAAB4ALAAAAAAQABAAAAV1oCeOZCk+WKqu6SMiVyzPMSIyWq7vOSNuwKBQKAoMOp0AEqnsDAKiwrFDWFKRg4LIwel6v12HCKKQSBJmM1qigIgWDQolIpfTKY2FyJDp+/99BiICBxMTAoaGiBMHAiIAFZGQkRWTlSIcFpqbnJocJqChoiMhADs=', -'img/controls/tabtext.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVDjLY/j//z8DJZiBKgbkzH9cMHXX6wcgmiwDQJq3nv/4H0SD+OXl5dlA/L+kpOR/QUHB/+zs7P+pqan/ExIS/kdGRv4PDg7+T10XDHwgpsx8VNC56eWDkJ675Hmhbf3zB0uPvP1fuvQpOBDj4uKyIyIi/gcGBv738vL67+zs/N/Gxua/iYnJf11d3f9qamqogRjQcaugZPHjB66V14ZqINrmXyqIn3bvgXXeJfK8ANLcv+3lfxAN4hsZGWVra2v/V1FR+S8nJ/dfXFz8v5CQ0H8eHp7/7Ozs/5mZmVEDEWQzRS6gBAMAYBDQP57x26IAAAAASUVORK5CYII=', -'img/controls/text.gif':'R0lGODlhEAAQAJECAHt7ewAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIdlI+py60Bo3wHGhCosdtxt2VgOJLlB6KMpJbuqxQAOw==' -, -'img/ext/avi.gif':'R0lGODlhEAAQAPfTAIep3K+zu1dgcf///1hhcszV/0Sm9+tQPn+HtO31/vb29i42PLHG8Ddt9uz0/vf6/19zf/H4/rXI8uvz/YuOuPP4/h0jK+fx/W53h1fPVO72/riWOKW97jRJa6i/76/D8NDk/KWz2qvB8LmYHOTq8vb396Wrti42TExYa9PV2C89QDZEV7zAx4F5c3VpKjVHXbrM89Pm/OXn6tTm/LrJ9D5LXkKT4KvB5/X6/lx+xamt//T5/vXy9ik1RKqz9Xl3LFZjpbjU9Ty3PlVfcFmV2k15xnuElFB3j5Sgq83b8G18rrLA6dnc4P2kl11lds3Z6mV7gDNGkLzQ6MyuFtvb3OyLfzFg5n6Is9fe9BwncJCY6ntGSYtjZmeR/02feNP6/4Sj1lbQWKC29XmMo7vY92Nse4Hrgfj7/16e/1U0RFCM/7fJ8uf5/x0kMdzFg/v9//D2/tC6cQENZLG1vXmdx7jH2c3i+INrdIZocFhmjebx/XqCjWHFYdDS2Jur/0FWZbu/yLm9wvnUz8Xd+rK1upW86LHG9vRMM4qQnNjo/KHF8v2aipG342Jzi11lb0Bjptu7G+nHNJfHun2b8pukHpOapvv+/2/ddejUHoB2gPb//+zACne06jCkM+3//9bh9hggKDpt8/H3/vf7//b7/3WQu+Lv/fi0qT9KZ8vh/Ke42fh6a9rq/Sk6hLfR8rS3v5yp4Je75FFsirzH4YCbzurq6vY+J7HF8eny/mRtfJX6kpaz/ygwOoeDioWFj2SCeF2Ibuzz/aSkL2dwgUKcR4mPtf///c2ouNjm/zVn5sLU9///+r3N84ir3jhfv6fI6/54ZAEQa7Gztf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAQABAAAAj/AKdNA0CwYDMwAEgIXDhwgKUzOCJoCAaAUyMTTBYCeDNqh6gEEy4YMGDDCCAZAgE8qADHAS49pgoU8HGlUp9pCkr5utMC2C8kT1glmkEDA4sShPBUaXJKlxk+UOrEAMHMyZwUXKAtEsQDi6RLGSBISQVDQIBeB1Z9cWWHDTItYYiNGbTG7BZbx8jkKELrhg4vQv4EkWA2zaElDKLIiQbEz5FOKp7dMtuhgaEkrbIoCbErE6UFsT6YHWZl0jJVs0h5ErNhxApGIsxKc6ZGmbEBmj7FgeRCViEPZmvtIYKmCyw3kTAJe0FHEQcCAaZRQfUoWahNU36cyIOgGIVcrwQGEXLEywKoNj1qoBhCoAyiaQEBADs=', -'img/ext/bmp.gif':'R0lGODlhEAAQAPesAHV+jMTIztTX3dG9PVxmdv/ozaKosuvs7+ns72NqeZhweOZ3YFpmd/fPFGVqe5CXo8/R12x1hdbb37q4vuHi42hygNrc4N7f4pGXpF9unmhte1Rrn/h3K9mqUbGbVfP09vLz9VebXpQ5P7S5wZLAxNV3MKe/y8C1q/Hw8bvBx+LIv2x7jryODp6v0Jqgafj4+NDT2KOpsomVwNvg5picyE5wW52EL7G2v3iMnvHBB87Nz8fDyMm9S7uyitqmAVaU33qBJIyMkbOjnYSEkO3u8nV4glCWU+qsgH56homPp/CvmNTd393d6FJcbvXOp53CydPX4fDv8OCOVGOLP7OcGbPFz2Fqe1+jbOfo6+bo64W0wtTX3HR8ieXn6Yirlfr6+tfY3OLk5/1wIlyX3putuny4qs7Q06DHqM51N2JrfJKGF6utdrCyaby/x5MuEe99Q5qh1vxdG3Fue5GVoN5eO/vIWqqDjOZ9UIqPnb7G2/b3+I93juFwRpnB55G84mdfgHGq5I18O3l2gqKHJ9q3h87N0XV9jP7YrmN9179SQpY/I9Z1L+jp65iboYyYodDV2kq7OvJqKICIldnNykqIklqfar/rx5uvzvlPILm7v1uK0K15Yp+muJvQpdTb4LFKFre5vyJnBuzr7eQvDE+UVeXn68Cda4iQm8egncOeq6Slr8O8tf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKwALAAAAAAQABAAAAjeAFkdWlSAlcGDCA+i+VQiiI4oL74QkWEBC8JNbhQVWVWHAiMmNDK06YJwzx8NJ5xkMgMFzgYMMBD2+ZGgR4dGoFSkcoAHAsJLY7gMYOFISJxEclRdQNgCUZIGg/wcwSRC0ARRCJ9QqpHDBqA7oxQg2YECoSVIoXwE0kRngaQhhRIu6XSFxxoTb5QQmAMmoYQzpKiwISRmUpMYYRJ6ImFEjQspfMhYGXEg4QwtIYB44GAHB4AAIBIiqFJpiqlInBg8EKAnIatHXsrkQbUiwo1SrlllSXGqQhpDBrZ8QBgQADs=', -'img/ext/c.gif':'R0lGODlhEAAQAOZgAP///2yUP6Gx0IujR99XMv/YS99qWNyRN929LYG7SOlrN4WavPWBRTx0udtnVutvOEN9v/N8P9M/LoulxXmCot9XMd1UMd5UMfnKQ/WZbF6c1Fud1aW/XN5WMYezRpfKZvu/E71nWL5VSXimQmyUStqahrW/rf7BXdRgSuPCLv/CD6PDVv/RD5LHWFCPzGOQu7fLVO3NoehpNtFOMsuRRfOARZq8TJ69TNRALVqb0+tuOOhoNsTMdvKbcrKqfcB/MvGrRlt1N7HNVP7EWLnLUFmZ0/LEGqnCY//SD6CitNM/Lfq/EISdvtJPMv/LSP/ZT/N9Qv/ifv/kh/vEpECRz/Peu3aFptRALv/JQIq34XGUs9VALk1kWY+jYPSphfu+E////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAQABAAAAeZgGCCg4SFhoeIiYY8UVJVAABeGSUChRwwLAUYMT0ROyFFlYJHLURIBU9AETIWIlQalV0jHj5GBSdQChcSDi8uEAtBJCaQQzUKBLyQWg0BXA1ZAFMMOhVKMzSQNgEBCxAbSQwPBFtNByBOKwkDAWBMOVbjOCg/XyopHzcDgxMUHVcGDoDBsgSBkH2EJhgIOAgBggSKIkqcWCgQADs=', -'img/ext/cab.gif':'R0lGODlhEAAQAPfQANnh8Ovs7uDj59/h5ODi5YigzwF84t/g47Ou2QGV/FdhcwGZ/tnc4JKo09nd4bCz3nJ6ipSs2LDN8HuNndLb7YKPnpakzgST+EtvtwGX/QFly6/P9Kq52eDj5n2g0eTn6QFy2OXn6mOFv6a0zzh5zTd1yz9NbsXi+Yy24pmms+Xr9cjT6RGb+3F5iRMueguc/+Po9KCz5yZJhlm8/6Gi2QF53iVFgePl6AWM8QFav5ObtpCn0ySn/zd5zUm2/wGL8QGF7AGI73N7i93k8QGQ9hKf/3WYz9zf4qCz2XKS33N6io+ey6K02q211oKbzViM7MbZ9cbf9ml2iNPc7TpisC1lunaAkEJTnOry+7XE4qm63JTA7Oru9+/w8Wy7+ixcpoOo28HP7gkYNzFKep2w2LzJ5GJvglFbbaGrtiVAfAFv1I6l0gOZ/46k0iY7dQGN9HuImQFu0+Hj5h6j/azN75S65dDa7Dh71Xyg1ae43G6PyvH0+snh93eKmhI3cRYxfXJ5iAFqz55zWrC4wbugnKOy45Ov7eLl6AGB57vT8TRTupuv16+cdHiHmAGS+Z2p0Kl8SsPa8qDE6htAgjh97p/K8d/h48PQ59rLiStEs87H5XOs5Less67c/NvV6jFbnuTq9Cg9cQcwrUdstSdNi7PC4Qw9nXyQoNXX3Hqs3aa327nY9LK03kGy/y2q/ziv/3GV1H6Xy6a42zBjrXiEzaWw0z2A8FljdOzu73iImQF33JumrjhIb2aGu7nH45q/5qCo3MvW6ubn6sbS6AGP9f///2CO6y1CkBuj/9be74WPn9rd4XiMnW6W6UuH7rvR7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANAALAAAAAAQABAAAAj/AKElMVQImCdNCB7QYBUjDLSH0JrNaDWn04lVdCTV2VQlRYiHxny4YsFHRbIVvrSAIXXq0MMnr5BdiDQEEyNITPDIYCbgoTMeL4g92wKrwJpFRmz06QnNVpEFOCRggRKhwA49aXJ1eEiJTQIvxaIk2tBrkp8rjQg8vJOBiAEPKFL9qjSCQxMrAx6ScPRDl5g9oKYMy5KnFoQDD3u8AQJiDBcAhDgJQvJISV5oJYIgUoMBBoVdOpw0sADI0kMRNQwEGgUgWBlZZNosaYEY2odZcTRQsXOplKpYmY4JUQsN17IvOUzRUiTKRSgTt5QJgxiAwac/bnidUWCmwiA5XSBCDQvgYIIUOGhQHbkhPiAAOw==', -'img/ext/cdx.gif':'R0lGODlhEAAQAMZ/ACkyLh02KyE1LCFBMjk/PSFOOShQPSdWP0VOSi5XQ0JWTU9XUzdgTCtlSkFlVDxqU0loWkFuWTlxVzV1VzN2VD5zWl9qZWlpaWdqaUh2YDl9XEp6Y2J0bDiCXlB8Z3Fzc2N5cGt4ckCIZDyLZFaEb2h/dWaBdWiBdkGTbEiRbniCfXmCfkeWb0WXcEeackiac4CJhYCLho2Ji4mNi3qSiZCLjk6heY+Pj1SjflOngFGogl6khF2mhY+Wk1ipg5aVlV2ohXKijlWsg1irhm+oj5uampqenF2zjpqgnZminp+hoGG2k2K2k2K3lKSio2m1lWm2lWq2lme3lXS0l3a0mWm4mGm5lW64l3W3m2y6mnG6m267nKipqKuqq3i9oXy9oLCvsH7Ao37Bp7Gxsam1sIHCqYLDqILGqobFqonFrIvHsLG9ub65vJXIs5bLtbfBvaHMvK7KvqDVwKjVwqbWwqnXxLnVy8vRzsbTzrLaysPVzsDXzrne0L3f0cnm2////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeygH+Cg391ZoSIg31TBxVDbYmDbhQEYHohIlJwiHkjAj+CKFVrEC1bg1oHF4RdETZeSikkglAgfniIPRNcYhuCTyVLMH90O3ZhZ2x/Zb5/wEwrcgYWVAlCNMvNwE0rPkRxVkE8H9m/JToqSQ8cHgwId+V/USc1RYlYZGrNOEeJcx0A3qDJIGiMgxdZBrkYMIMPiwA3CCGRkCPNHyN7gBTAEOlPDA1XvjRY4KTjIBMKZCQKBAA7', -'img/ext/cer.gif':'R0lGODlhEAAQALMIAP///wCAAMDAwAAAAAAAgICAgP//AICAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAARYEMlJq7006M07CIUgCqFYFsEQCAbgtgAMCOk6H4Krt7RaAIfCAUBw5QAoVU6AIxgExWLPFnMVibxaQfbSIWtHgng8nh651Zl2VDKZap34ZgAY2O/4PAYTAQA7', -'img/ext/cfx.gif':'R0lGODlhEAAQANUmAACZ//7+/7Tb8Bij/7vk/+Hy/IjP/5nW/ySn/0S0/+74/w2e/zOt/8zr/xGg/9/y+m696vH4/ard/1W7/zmw/5nU+HHF7ave8iip/3C647DZ75rO602p3Njv+ZbM6k6486XU7XfJ/2G99G7E+Eey9GO66////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAaUQJNQqBkAjpChUog4DigOwGJpmhwBpUKgkDgmhosjSRsoBxrNgemIKTwIhEZAQVAERNKjIGA4hiRRDg8cVwB7XXEODAcABiCFe00AjAcKjRWQAQAJBn0EEpOMVwIEjXwAEwwIAQKQjARzXQxyrVcZZGZmBWkmYQAbEbkRH05DDE4dDwUWV2pKHlcIFFdJVCYXhSNLQQA7', -'img/ext/chm.gif':'R0lGODlhEAAQAKIHAP///4CAgP//AAAAAICAAMDAwAAAgP///yH5BAEAAAcALAAAAAAQABAAAANSeLpK7iweIqooRDZrS5BU5VjDEZznUHlBUZUBIBdDTQTqa8q8bOQXWA+ACwUVMSIKEKItksMb6ilDJUsRaI9QG2SQ1SUQuxsCxlQz1/bsumuSBAA7', -'img/ext/dll.gif':'R0lGODlhEAAQAPeVAIep3Fdgcf///6+zu9Ho/9br/+Lx/9zu/8vl/8Xi/1hhcsDg/6rU/2Nse8bJzrDX/0Sm94qQnO32/8zV/5eepbp7Fax8FpOapuTp7mRtfHfoTyCuFrXa/3e16rbY+e7w8uTq8nmeyc2YCbThuqi/76XS/5mZmVua25HMw9DS2O/+6fHDVnqPwtXf6J2t2YSj1pqo1kKT4WNzjNnc4ImEfKqz9cGbMq/D8NHb5vr6+kLFLLG1vWCHGW98rrvd/6rT/Oi0N7HF8ZmhzEeJPuXn6qfQnavB8O+8Rp1YEfLHZr3S6Kt2FvX7/4Oi1cG2sajT/QebBbXI8guYB9uwRiixHnXnTtTq/9/m7Or65dvi6tLS0r3N8253h32VyJacxoHsV5WZxIir3riYOJek0nOCtX+069OcG/j4+MPh/X69h+j0/4uRtsCTUIygm4Gcz8WQC9PUtbfJ8rzAx7S3v6W97lrVPPX6/9/u6ens8DijTHaIu7rJ9JOWwX6Is5eeyfb29ouOuKWrtqSkpPPz9KvU/eHw/8HAlNeePLrM811ldpim046+8HPmTSZ/Izx7Vru/yHuElNbAW/r9/yCIOKdpEf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJUALAAAAAAQABAAAAjpACsBGEgwzAsAICopXAhAgMOHAgB0kBFoBkOIkuwwgQAhBqRHRBQCyCEAC4U2IyRMmFCjz4UUIs+oYKRlyAYUBg4U2MNFjsg/XzQUaSQFCpoCBLYk2iFyUJoqdXRQceSBAAJEAQaI/HBnUh4ekUyIsZEgTlaFTfBIKARnRRJBFkQYinK2khsMagw4OXRkipk3NILU7XIlpxU2lIBUWLLoRl0WWXQSUFIGyYkQT4zU1dMCKYIEC34QesCARF0yOKyC9sGBdAk6CrRW6uEChqIxQvx4AcNnDaAMcxQ6iNBAQYDjyBU0iOCgUkAAOw==', -'img/ext/doc.gif':'R0lGODlhEAAQAOZ/AP///zZKZJCu1jdLZQlLsgU2ggZCm9zi9ERquZOr5ouk3ZOit5m24HeR1WCBzQEyeIml6VVtpGeK1Qg8iICe5pWkudzo+4Oc2trm++jw/eLs/O/0/TpamCpit9bk+6G63dPi+nij6/P3/pWz4uHq+9nm+6q+8djl+oit5cfa+Nfl+9Lh+oCn57HB166+1Agvi6260PL2/tbc6qq5z01qp6u60enw/VV7zig+bc7e+fDy+pamu+Ls+5243iFMms7e+DppuKS73aW83HeKnEJuxMzd+PT3/nyX2Iqu5NLi+trn+6W0yjJbtoyv5J643+jv/IWs5pGx4t/q+3ul6PT4/eHs/F11q0BmtI+x46+831J3yuXt/F99w6i2zVh+0Wd+s7rF1ISr5tfl+t3p+/P4/srb+Onw/Dhhrunx/ebu/O/1/ZW04uHr+5movq290oGn58nS4tbk+qa2y9Pi++30/Ul0zLLC2NDg+ZyrwHyk6bfI9LDA1ufv/OTt/Mnb+f///yH5BAEAAH8ALAAAAAAQABAAAAfigH+Cdi17Lm41M11yS4J/CQkQFEcSXlpEHSJ0eAOCCQCgoaAERhsVYJ0QJhcOMg4HEQoEVGoLA7cUBxdcBwgHNEMEAgJoQkEDDQANCFk+ChxwBmQCZlUfARIAXwhWBUw4AAYxAmlSPQE3ABEcegUFMAATGwJ9YwwBdQAvZzoFV6AFhpHAMCIAEFGiHjzRYCEOlgAdCEg0QHFCgQfDVKxAEsBRmww2MvDZwsaCGBA5oHQUtIOHhmEwBfwo82blnwoYlJQ44WHOnSJ+UuSxuSCJEwZrojRBEYbFlBA2A0idSnVqIAA7', -'img/ext/eps.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAP7+/v39/fz8/PX19crKysnJycfHx7y8vLKysrCwsJWVlSYmJicszCUqsi4z1zxB21FW3GBk4m5y5Hx/55CT6vn5+fLy8uzs7OLi4tvb29HR0cjIyMTExMHBwbq6ura2trOzs7GxsaWlpZSUlIiIiCwsLB8fH////yH5BAEAAP8ALAAAAAAQABAAAAjTAP8JjHcvXziD4cLheyew4T967ba5c/cOXj144eAJZLdOXbqP6EKi06ctXsZ/7NKdO2euJTly5fhpKxnu3bqVLM29LFfOCj9++/TFu9lSJ8xyqt5V9LavXkNvESXCszeRorxvT9+J27r12zt327bdexpIXz1v87jpYwW2Hbin8OLJm9et2wp939q5fZpN27tudOuKy/tWoLe+futy8yZuG6vC/7xhQ/yOGzd64rIBwPcUm2fP7uTZEwcAAGR6nz1nexdoW+lwT1mNm0273zh/rL4FBAA7', -'img/ext/exe.gif':'R0lGODlhEAAQAKIFAP///4CAgAAAAMDAwAAAv////wAAAAAAACH5BAEAAAUALAAAAAAQABAAAAM4WLrcFTDKCYe9+AYRBvlg+G2dSAACipID5XIDIM+0zNY4cOf0ztuw38z3I/JIrpdgyWw6BY7oIgEAOw==', -'img/ext/fasta.gif':'R0lGODlhEAAQAIQQAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZPz+/P///////////////////////////////////////////////////////////////yH5BAEKAA8ALAAAAAAQABAAAAVe4COOC7OM6JgoTqukKOMyDPIk8KMcecGkC14OcQCgAAEc7EDIiRIJRmDgOKEWBGqrJbCKiFuFwrAwpgKOmjMmyCG9IkYzN4A/AAXlqJBeMxQCLQc2TiwOCnYwCHojIQA7', -'img/ext/fdf.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMfHx7KysrCwsIsBA3h4eXd3dyYmJvMUGP8iJf9DRv9UV/91d/59gOfn6u7u8Hd3ePT09fDw8e3t7uvr7Onp6t/f4Nra27a2t/v7+/Ly8ujo6Ofn5+Li4sTExL29vbGxsaysrIiIiHt7e3Nzc2FhYVlZWR8fH////yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JdPfunjaD2rRlkyew4b969Nq1i0iwnTZ6AslVEBeuI4eP36zAa4cP4zgO4L59G8FyxJp88EZqW1cBXMqVLI9ss5IvnxUr7r5tG0qU6Ll9+/jlq9cQ27pz5tKho6cu3jpuK+w1XdfN3DV0/cLG02fuXVN1XdGpW7dOHTp96LI1Tcct3TV6Yfu128dOrkBs5rjFkycvnuF03eb5/QeYm7yv/fj1C2xuMeDEUdNpDqzOcmBuoEGfG71ucT11qFOzZceunLamrLzJni3bHyt7AQEAOw==', -'img/ext/folder.gif':'R0lGODlhEAAQANUAAP7+mP7+/ltfabO6ztXe9v7TbsSRLP7fev7qhP72kLrC187W7f7zjcuYM7KAGv7LZm1yfsqXMqeuwcaTLplnAZ9tB7eEH6JwCnV6h5hmALyJJK17Ff7lgLSBHJtpA8iVMFxgap1rBcGOKa99F7mGIb+MJ6p4Es7X7r6LJraDHj9CSbnB1qRyDNKfOtuoQ/fEX7uII+WyTbOAG6d1D+67Vv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAQABAAAAaQwJqQQCQIj0hhI/KZKBZJZCNADYgkiyJRGQB4AVZSquMYPWuRBGO9rlI3mBXhg+AY7vgSzCIrKyYHBm6DHAEXGAYFDV+MXi8AFSAiD2lqlpY0kAIllI11dTGaGp0HpaalLqIPFgAFrq+uLZp/ZRsmMywXFSEeFBkqEAsSEALFxscCEBI1CwoDz9DRz1BR1UJBADs=', -'img/ext/gif.gif':'R0lGODlhEgASANUvAH+duQGZ//80Af///yRw1d/v/9ns/9zu/+fGJ+Ty/5zG9fk0BbPY/YrO/4fP+e7XZIbG/tbM2VOr9tzJJAmU8mz5NgOb+b/DgdPp/67W/97v/+Lx/+nIKT1tvbjb/8Pm/2BElO81D/rNAljwUEdHrA+n4ufGKPDMKt3jxgyL8eXUCdPH1JnL/MZ7e7nc/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAASABIAAAZrwJdwSCwaj8ghYMlsLo2A5CtajAqurY9mc5hCX9dFJxBoYLxVsABEIAdcaKI1RGqTIXHlaxVJUUpkLHlCUQkFDiMVFhIMg14FBg8iKhMKHo5RBignCCYcFxmYLwOkpaSiSVRyTqxSrq+wrkEAOw==', -'img/ext/hlp.gif':'R0lGODlhEAAQAPfRAP///0tLS9fh8/v6+Nnh8vLy8tTe8dbg8v//+E5OTmlpaS5jzFBQUClfyu/v7yxfw8bQ4jlrzhBLwenp6fX19djh873J4Jqv2fHy8+3x9dni9BFIuaG559Ld8BVU0ZGt6NPe7+Dk8WmO2Ctn4tXf8BxUww5JveDm826LyB9XxZabpJar1Ht/h///9Ojt9f37/Hea4vDx7MTExLW1tSxhzFVVVTBlzBFMwcrY8/Tw6yVXudbf8BBLxP38/bi/zTZx5m1tbdDb8ai1z/v7/Nvq/9fg887p/9ji89vj8/Lz9j1z4Cpeydrj9FJ/18rR3dbe8iNczSlgy5+v1dTd7+vr62qGwjNjxajd/uLq9XBwcP//7q2tranU/7C6yYev7Mbz/wExvby8vDRp0zNr2+Li5EBx0KaoreDg4NfX1w1Gu8re/yRcy/758zNnzypfyv///S9jzcfQ4yddyoGaz/T09Njj9DNnzurq6tLd8cDJ2yphzXuc4LvG3RZNtyFbzfv//9fe6l2H3sDCxCBWxOru9vb29vn6+v38/tfh8pWVlWBgYP38+BRPxtPc8dnj9Nfg8SJZyZCo2JWkwmpqajls0FdYWZjP/D1luebt+9/n99ra2oGazm1xd9Db7/j+/wxGuNHb7+jo6Cpfxv79/ujt9kqK/9Hc701NTZKYpDtsy2uY9WqJyqKxz9Tf8VF5x1l+xyRZwNbh8iRbytTW2ZHJ/////OPq8CxhzX+c13Gy/zJmzMbP4e/x9v//93CS2RtUx8vLyzJmzRpVyXmk9nl5eU6M/uTo9dHc8WaM2v//+u7z/6enp+Lk5yJbzDRozuDn9N/i7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANEALAAAAAAQABAAAAj/AKMJjIbkWCdQpoIAojJwIKFGxnoAmPjiBJ5ZdAa62AHgz5crlmhx8VSrlaACAg0AMJLLC7QcIYYVU/Omg4xCBHgRKRVIyyEOydgo+aHsmQpNKlWNQGGrCRhcAJB5gDEqz7JHmMaIaQBJ2A0IAMr4iTAEhAICOKC0sUFjkBAAe37dEpWBBIMKT1LY0dWsCoAPPBZEeYDhwKkiA6zIcbZmVSZKsoKVcLVoV4IphiKZgKMnlQg3C5ZssEAKlSJmiBC8SsNIEgBfEj5tQnCgRiIKTrC0mNPn0gVYOqT00sApC5poE3zUGUCG1Qo+MZLEYqFgBspoZ8zEEeCIyREBXSoBEtlyp2GoMJMSBFjPgBgwBwIDAgA7', -'img/ext/htm.gif':'R0lGODlhEAAQAPeFAJCQkP///1hZiYep3FmWvB5gmszl//f396HE5n+ux+3t7TKIzcrY/5jC1Wprm1JSg3SAsqnO/0uItLvO4zOY7L+/v0Oq/m7E6yaKwr7K/4K10Iir3iOR0iac5bDN/0KV5CmW5brb+0BkicbV/D94sTO08DGq8snX/nGBsjuY6kd4pS+i66W54b/f/2hqlzKP2ClFX2FjkG3B5kvB+ez2/zBzsoSj1jOc7Cp7xHGjyMjW/W9ynkhsidvt/7fM/yg9W8Ti/8vq9lGm5ff3+EtsiMbV+1ZWhyJEalWVwFtciyif5sHQ9uTs8T+67kmKxL3X5h9xnjGV7bbY6ez1/9vq+Ojw9/3+/6K33nR4o7PF7KG4yqrQ65Tp/EuBrnSUtGNtnOTy/5S31n+iwDWR2VVWhkmm5snY/3Wo3uHs9j+p97TM/zu5763N/3p+p6jG43vN+NPp/ypsrD3L/n3O+73K/6exvtbW1u/x9CZEZj2g2p+02HWx3bTS8JmqvGvz/6vN/7rK/zJdj/P5/zOp3X2Bq////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIUALAAAAAAQABAAAAjnAAsJHECw4AYbEOwoEMhwgJUAECNCyFFhYUOIVZ5o0CAFRYYPFRsSGDkyQJMvDhwQAlBoSAMCXPzIWYMkgAw0gjK0YfkyyCAMGJSs6BKAxhQ6WAAwIXAgARQEAXBYGOOFChhAOwAwTVCCQxkhLyhYUDGhhw8XAJrO6FCgrVsRE+CoiQFAyxsTIAogMMCXrxsDHpIAkJCHxI0oNRAsWMyDDxA2Rgb3qRMnBYU0Fy7ACBOixZ8HAOaIOeAk0BE8P4joWXKCQQTQd7bsOaODxZUsI4qYYeCaDEuBAoILHx78t0AAyJMrRx4QADs=', -'img/ext/iso.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAIAAAHBgYP/86f3ibfe5L/7jrvWbAv/qyPyhIMuHJvy3UfyGAuJ5Cf+QD9B1Ieeobv93APaHK+yVSeyeX55IDL1VGrI+BMt3S4svDlQOBmoRDZVST+8AAN8AALQAAI8AACAAAHAgIIQ2NohBQWBQUJyIiHVwcP///yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JHEiwoMFA+bBhk8fP4EB59OiteUQRnz+CrP49GmFvVhlyINnNuvgvm714I9bEGxdhHDhx27jFEyhvxAh68byNu4CunLhu2hLM+4fNJrYd4MahSwdBnDYAAcwRtfkIHLdy6XSw0/ENAIAEXWqOeCQOQYJ17Va8O9et27Z52ag6BdCt3bl26l5yG3pvBLZwT7WdW6fugkty/f75O1IvngAA38SVQ0c5AryBJtfA29ZNXFJ0EdxlI5gtnulw3Lh5IwdvtMNs2ebp2+faoe2BAQEAOw==', -'img/ext/jar.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMDAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANoALAAAAAAQABAAAAhuALVlG0iwoLaDCLMBWMhwIbZsCA8qJNgQGwCICQFIu9jwmsdrGTcqlEZyIzaQEgGMGKGwIYCTGT9qLPkSpUCXLmGmLElzRM2MOFf+3NlT5dCbDVcK1XmTpNGFPpm2xOnQZjZsWLNqZfqxq1eUAQEAOw==', -'img/ext/java.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAGdnzDQ0Z0BAIN+geOGdd+CfeN+eeeOdeuKeeuCefOSbeeKce608Mq4+NNhdVddcVEBAQCAgIAEBAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAOsALAAAAAAQABAAAAiAANcJHCiQHMGDB8MZ9IYwoUFz3xoO5GZwXDmJA8mJ20auG0aB38iBOxexITZsVNZ9M0cuIhVs67JlE5gNpYqbKqi8lBmTpsyfP9XNPJiNigqBOXfSHAi06cyaBIsezYltZtWBMNdV/Zk1q1aZXrGCxbrV6cmD19BpS3et7bWDAQEAOw==', -'img/ext/jdx.gif':'R0lGODlhEAAQAJECAAAA/4CAgP///wAAACH5BAEAAAIALAAAAAAQABAAAAIzVI6ZJg0NownwyXjqxdQJe2UeKInfqTXmA4Dg+rmW2MbV3NV1jLf+DzRtOMPQRIHsFC8FADs=', -'img/ext/jpg.gif':'R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==', -'img/ext/js.gif':'R0lGODlhEAAQAKIAAP///wAAAICAgMDAwP//AICAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAANQKLrcISDGJseTQBCwbbTQBBQkGACgyKGPl2YjGcwnG2qrV10TQRY6GwbXqb0yigCJJYSZOK4LhPDYEHQvwWAgCGxrTQCNhgFtz+j0eM2eJQAAOw==', -'img/ext/jsdraw.gif':'R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==', -'img/ext/mdb.gif':'R0lGODlhEAAQAPeKADZKZP///5Cu1jdLZfXm7UwENoYnV+/0/eLs/HwhTpOit5m24Nrm+/Ha3tm/yu7d5Ojw/UgCNJWkuZtHburV3ogwW7psi+7j6Mrb+Iyv5Ho4W93p+87e+Yqu5I+x49fl+t+mtOK8ybBggpamu7DA1oEoU8nb+fP3/qVUeLLC2Onw/HgeTHij64Sr5nyk6bZ+mOzz/aG63eLs+5W04qa2y/z4+aW83NZ8mtucsloNPdmdq6u60dLi+p84abBkgd2nt9+jtHAbSKi2zdyhspE8ZIGn51UJOsfa+FMIOZE7ZMuAnF4PP+/1/bHB14Cn59rn+2oWRefv/Hg6Voit5dbk+tbk+5243qB5ju30/cN4lWISQZ6436S73a6+1Hul6JWz4tnm+8doiNjl+q290vu3y3ceTLBhgeHs/M2Lo9Dg+cqAnMN3lMSYrqp8lubu/NLh+uHr+93o+2cUQ7rF1KZUeIwzX28aSOjv/PT3/pyrwN/q+04FN+nx/dzo+9Pi++nw/ZGx4nEaSKq5z4Ws5pmovqW0yszd+NCGoenL1uXt/P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIoALAAAAAAQABAAAAjyABUJTNGERJcxOwQJoVFIoKJDarJYMENnApEKJU5gyTNAoJIAIAlQoEAgQAI8ByTM6bgGZIMhPjSwIVBGABMFA3JaCFDjB44bIOo4sCPgAB8bXAaICNCAjI4wPYI4kFNUxZkYAFAEQATEgJQCLwgsEQDDjR4rACY8QGOgwJULII0ImLthAYAkIQy0gQsywJ65Ahh8AVDhQd/DEe4gEEDFA4AECVYEgqIlB5ICERDEEfCmAwCHhCD8gRAlEZw+HwRwGPRZ4AgZiwEDxlCktSIJDJ6AEVPFTxpDJo64sK2Ax5YFMwBlmNLCiRcWtgFIn059ekAAOw==', -'img/ext/mht.gif':'R0lGODlhEAAQALMKAP///wAAAICAAMDAwICAgP//AAAA/wCAAAAAgAD/AP///wAAAAAAAAAAAAAAAAAAACH5BAEAAAoALAAAAAAQABAAAARiUElFqr1zEsA7rxnleRuRbSMXrGdndUMgCNIsEMOMcLGQC4VBYRY7BAAxBXC1Wh4Sx6QvYDAApgYjUiakWoGx4xZM5fgK4q0S3Vl6pLF2HMYd2siDfA8dCPL5TEwSggosGREAOw==', -'img/ext/molengine.gif':'R0lGODlhEAAQAOZxAP///xvakPP9+RrZjxbZjRzakB7akff++z3goCLbkxjZjiHbkrfz3BnZjmDlsi3dmPb9+u/893Lou2bmtDTenD7goSDbkkDhour89R/akfL9+R3akfH9+IbrxGrntrLy2Vfkrer79BnZj1Hiqhraj8L14cb248n25Nz57mfmtT/goknhpiXclJ3vz0jhpa/y10Dgoavx1h7bkVnkru389rXz2uD6773130Lho0ziqHPou7Xy22Pls5LtytD36N367i/dmj/gofr+/RfZjUXhpC3cmWHlsjHem3jovHnpvVjkrTjfnhfZjnfpvXbovCfclb3030Hgoqbx1CDbkeH68BzakR/bklTjrN357kfhpWLlsyPblBrakDHdmkDgoqDw0TjfnRnajlvkr5/v0M/36BvZj13ksF7lsKTw0hjajk/iqfH8+Mf25GPlsk7iqC/dmUbhpf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHEALAAAAAAQABAAAAfegHGCgzQ9TTZCg4qCHF8wFgQUY2uLcQIvOSwbDQMiBWpsB4NkZ08bBA9KM11lQws6VIIXJDIBWjsnJzVtBgZMboJgCQoTAB8kXB8AEwpWCIIIGW8oAAISEgIAKEUBKtADZj8hAAcHACFYYgQ4ghUNPCUOGgAAGg4lRgRB7QYUUHAg6IHIcuNIgGdxLiwQ4cEEEggQkpjwMCDBEkFeCkwpkIIBBgwMUmRIEMZbnBgrElRR8GDECCBpAmxx4mNQBDRELBRQMMDAgisMRC2K0CJKgAYupAiopIhDhw5LFwUCADs=', -'img/ext/mov.gif':'R0lGODlhEAAQAOZmAFdXV0tLS3d3dzo6OmVlZWhoaDg4OG5ubhoaGnx8fGlpaV7HcKysrCy6S3272z+uy2NjY1zLT0XET2C92KzLrlxcXDa/f3DC/2JiYi0tLWxsbHrXV01NTXR0dFC4tmW5/2nF3WK6/2e//2rRQk5OTpqamvngaImJiUJCQmzE/2257DU1Naampo6Ojqqqqm7G+CUlJXm+7VtbW6+vr5XhWpHeUWBgYJPiVZSUlHNzc7CwsICAgAkJCaSkpG1tbUxMTM/NhDk5OaDjeLKysnZ2duvYhBUVFXFxcT09PV5eXqTjfJ3fb3fI/3LF/19fX5PdX8/YmJeXl0hISFZWVgUFBZ7icmZmZpXgY3O77HG85uvkmYWFhUFBQYODg57gdFFRUS8vL5PeVlBQUDIyMqPgeHp6ev///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGYALAAAAAAQABAAAAewgGaCg4SFgydEO4YHX1aEOWYKAJOUHGYYhBodBVkxWCpARQEFSIRdZgkWIBciFCY2ZhWEAltlEg0TIR8OSQQBs2YCERsjCx4PMma/gwIuHVVKQlc0N1PKhApmBZSUYxxBhAc9Gi9MTSlQWiRmXIQEZgSqrK5SBwaEFT5Ot7m7KGZgCEEwA2BYsWMDzCQcNACDgSVkvDwJUwMBBB6E7q3gNgmBGSOESGQQYygDFRiCAgEAOw==', -'img/ext/mp3.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAM3NzY+PkcXFxpWYosXJ0vD0/XN1eXx+gtTV17m7vuDh4qmqq/v+/8rLy7Gysj49O1VUUtWMCvutG1I5Dfy2OuybEKNtEP6uJm5OF/zAXWdcSteQKYRyV4OBfv+0VHZmUl1cW/b29vHx8evr68/Pz1BQUEZGRv///yH5BAEAAP8ALAAAAAAQABAAAAjGAP8JHKjPn7aBCBPuw+ftHL9/4fBhS/hP3LlxAMT58+flS7aE+fph7GYF3rx38MIhFIduHLlxXtyxe5foG0J958xxk/elnQJ267z5WyFwoTlz8Nq9ixcvgRdv2lhN9OcNALp26praY9dOHgBs5/5pOyeu3joaCSC8SwdvXEgrArExvJe2nTt62vT1gzvwm7x4a+FtAxDSHMJy9+ypcxdIHIB9/T4iPLd2nbVwhPsZTrgOHj5w/M5p20vxn7lxA8v541u6NcWAADs=', -'img/ext/mrv.gif':'R0lGODlhEAAQAMZ1AABIbAhRcwNYeQhaexpaeyJtiixwjClyjit0kDN1jzh2kjJ4kjR6lDV6lDZ7lTt9l0GCm0aDnEqEnE6KoU6LoVGLolWLolGNpFiRpm2cr2+dsHmjs3mjtHmktHqks3youXypuoKsvIOtvIOtvYSuvoWuvoaxwoaxw4mxwImxwYqxwYqywYqywouzwYuzwoy0wpa3xZy+y5/AzJ/AzabG0anG0avH0qvH06vI0qzI063K1LHL1bDM1rHM1rbP2LfQ2bzT277U3L7U3b7V3b/V3cDV3cPX38TY38TY4MXY38XY4MbY4cXZ4MbZ4MbZ4cjb4crb48zd5NDf5tHg5tLh5tTj6Nvn6+Dq7uXu8ebu8efv8unw8+rx8+rx9Ovx8+vx9Ovy9O7z9e/09vD19/H19/j6+/r7+/r7/Pr8/Pv8/Pv8/fz8/Pv9/fz9/f39/f39/v79/f3+/f7+/f7+/v/+/v///////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAf4gH9/HCQuhi+IhiQdgn8nOERGUlFGTk5MSkU4J38dNlNfVhUYU2NcYFxZVDYbJEFYHxl1Fw8aY3BuZ1lCIilQBXVtc3VWEQdja25bSikrRgs8ZnNzbnUxXW5xXkooLEcOP2nDc2052G5gSissRg0+aXVuc2g32HJgS+tNDHVnc2p1JpQAYwZdvhdJtCgAUgeGhQRXCMyo4yVfiyZd0lQxAKGGGjoIBAB4giRFCyVb3Lh5QyaOSgoDQIRhkoLEECxlVLqBA4eNjDoBdBAR4YlKllNgkoIRo4WGhB0b/pjAEUQJkyVYlzTJ1MNEow0hVKwYS1bFCA+CAgEAOw==', -'img/ext/msg.gif':'R0lGODlhEAAQAPeTAPn8//r8//n7/fX5/GB9qu3z+FCMyOrz/vf6/MDb/Ja14+fx/vn7/+Dq+ePs+eHt/eTv/tTm/U6JxPP2+1GLx97o9zxzvN3q/kWAw9jp/Zy/7VCMyfz9/16Kt+Ts9Ze24+zy+KnF6k+DxafF7FGFxcLa+KK/6fj6/VyIuvj7/T5ttdbn/fX5/6C/6dDh+Iqu4vH3++z0+IWq4kqExObu+T1wvt7s/VGMyLzQ7Pv8/9vq/drp/dnk8VyMydbk+c3g+Nvr/tLj+aC33FeJx2WQzO30/lGIwOzx93yd03CW0LnP7LfX/EyIxNjo/cbf/N/s/vb5/LLM8cTb+N7r/uXt+VuIttPl/fP3+1CNyN7p+ff5/KTD7L3V9O7z+Nfo/WOPzI2w42GPy57B8FmLyEN9wlB9xYeo3Exyr93n91aEtpi24/D1++71/vH1/E2IxOrv+Iup17PL6lSHxvb6/9/r/kiCw6vG7VCJxOPr84mq3EZ2wmaOzPf6/16Nytzq/Z2z1luGyc7a63KZ0b3T9Ja04z95v1OHw/v9/9zo+fL2+7PK69zr/tDh+fH3/rDK65W88LHN8cne9/T4+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJMALAAAAAAQABAAAAjTACcJHEiwoMGDBP/AEUTkS5g+PcYMkUNChCEUBIScaAOgI4AAIHMc4jDhTQckiQghYrPDj40HEBbMaSCDx40kAiApyNII5oIDfBy8eBTDwB4BVqIoaMDiQBEGVMCIWVLAACABXiLYyeOAQQAaZjQkSFC1jIAMjBSNUIOmwoctIUo4KYBFT4ogSlys4NLCxKAIkRxJAbGhxgAcPp7QmQJk0QUdTX7EwUPhTBcPa2BckTRgABQtCBAcCVSFgAoLhchgqDODiRsJEu4YSUMAoe3buG8HBAA7', -'img/ext/msi.gif':'R0lGODlhEAAQAMQQAIaGhgAAAMDAwP///wD//9fX1zNmzGb//2ZmzGbM/zOZzACZzP//AAD/ADNm//f39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAQABAAAAVyICSOQGGeBRCMJGK876CyIoAkx5Eo8koCttxu0SMNZAidYuEoAoEC29Bh6AGOAEFUy9XOgAHvcyxYXcPlgDrwLEPOUQKBcUS7zwCCYD7QrmtlWXtqfixZbFwBDXI+gIgCfQ2FJGlXfQwNjSJrDw9rajQhADs=', -'img/ext/pdb.gif':'R0lGODlhEAAQAOeEAI0xLY80Mpw3L4M8SJ05MUhbdElcdWpUgpRNTY1PU69JQLBORKlQSXddhLZUS3RijqxYU7ZWTJ5iY7hcU0N0yrlfVqJnaEl910l+2Ep+2LdqZcBqYsBuZFGF4lKG4lKG48l0abx4c8h4cFyP6c19dcl/d81+d7OFhs6BebeKic6FfWuZ7NGHgNKQiNmUi9iXjtuXjdGaltqbk9Ofmtydlcyin9ufl8OnrM+mo6ayw9+lneCmn9CqqeCnn6i0xdCsqtKuq+CrpK66y+avqOWwqLa/y7e/y7XB0um2rum2r7rG192/vNTCw+u9tuy9tey+t9nDw77K29vEw8LO3/DFvu/GvsjQ3MrX8s7a88/b89fc5tLd9NPe9NPe9dbf9ezc2tbg9e3d29ji9dnj9trj9t3l9t3m9t7m9uDn9+Ho+OLo9+Lp+OPr+OTr+OXr+ebs+Obt+ejt+unu+unv+erv+ezw+u3y+u3y++/z+/L1/PP2/PX3/Pb4/Pn6/fv6+fz8/vz9/v3+//7+//7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAjVAP8JHEiwYMEpCBNGUXJEi8EphCJKHCSkgJGBfr7cwPFDSkRBgHxYKVDkn58lM4LoaBEiRaA/fXIYmPkvTIwkVJrsQAHhQQc+enLI/AfEhpMqT3qwqGBhTx48dXIU+FfDxRAkRGSUmBDgQwYKcKT+42ECBo0XKjgskHCHzhs1YqFoAEFCxIYIBA54wEDBjNh/JxhEcKBAAII4bNCUEfP3H5MEAAY0WDGiwwUKXRr/y2Fnjps1Z8iA4ZJFcw45btKUGeNlC5YrptsInU176kCpBXLr3h0QADs=', -'img/ext/pdf.gif':'R0lGODlhEAAQAPeNAKysrIsBA8HBwSUlJeHh4eXl5fv7+9ra2uDg4Nvb2+fn59LS0uzs7NjY2N/f3+rq6tTU1K2trdPT09zc3PHx8bGxsdDQ0PPz8+bm5t3d3eTk5PT09D8/P+mqqnV1eNi2uf8BBeq8vsXFxYGBhR4eHtzb2/83Or6+vvsvM+qqq/8FCe4BBMDAwP84O8zMzP8yNenp6dHR0a6uruJeYIyMjv59gOjb2+ianb6+xup9fO7u7nNzdeNbW4qKjd9PTvoBBO1TU7a2tsvLy/9JTf9UV39/gf///6urq/8NEudJSu/i5f8bH/8WGtsaHqqqqtXV1c3NzYiIjeVxccbGxuFwcfLy8qiorL29vf8iJf8oK97e3ulMTbKyuLe3t+nt8f9iZPb29tNSU/f39908O7q6wNNlac7Ozv91d/X19a+vr+vT1sPDy9sBBP8TGLy8vNnZ2eLi4uWNj6sCBejo6OkBBcjIyOTt8P8MEO/a3NcaHf8HC/9rbbu7u7+/v/D//+vr6+aPkO/w8v8+QNuEhvUBBO3t7by8wnJydOdISP9CRYEFB+Pi48fHx////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI0ALAAAAAAQABAAAAjxABsJhFAhAgCDAACkISCwYaMTa3AYIsPFShQHMhIIrLGHyJBEglq8QNFkhAEHTjSeMYGFCRI9IAjRkXPIwEkABb5kWdLmjoofK9gE6OFhRxEaC/IEWMp0qSIMQkTwqeOmoQAILixoCVMCQYMFjN4EsYrgSYYNPhYxKJDADIEKVjUcYGBjzI0NOgpAUADAqgICaHJ4AZQCzJwDMPoKFMDggZotHTokQQRkEAXFjQRUucAjBJ5Afux8KPMAswAlM+Jc+KOgAIIDUDKYpiKFggYCExrEsMBCAuY+RsQUeoABTu4FUyQcaXiFw4Dn0J+T4NAlIAA7', -'img/ext/pic.gif':'R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==', -'img/ext/ppt.gif':'R0lGODlhEAAQAPeYADZKZJCu1v7n2zdLZbBfRP///+/0/ZI1LZE6M71eRduDYlYMD9rm+8F0W/bWxuLs/PCRZ5Oit69HOZk8LN/q+5Wkuejw/Zm24Nzo+6a2y6W0yvT4/e/1/b9hSNLi+vzz7brF1N3p++nw/OHs/NlZK3wgGPCWaJE3MK9QO5amu3ul6LLC2Hij66pMONmBYLJTPbHB140xJaG63ZGx4uiPatnm+9jl+tPi+q290vClavCXaunw/dDg+dLh+vCZcejv/Nfl+qq5z4yv5PC9i9F3WNmAX/V7Qs7e+eHr+/z078NmS8rb+PDFkrxPL5A0J8xxVHYaFPT3/oWs5sNlS8nb+fCWa5E7NPP4/vP3/tV8XP/9+4qu5I+x48zd+OXt/P/8+oSr5oYrLau60dB3WMBhSJW04q6+1Orx/fDJl+fv/PCSW5movoMoHuTt/Ki2zfC2gZyrwLdYQfCmdMdrT51dSPCdXYCn5/CcXogsIZI2Ltbk+tbk++Ls+/Cgb/CbZ3yk6cxxU5Wz4rA5L/DNocfa+O30/Z6439V9XPCRXMhrT6JEM6W83O6CVKS73aRHNLhaQtrn+4AkHP/799Pi+4Gn57DA1oit5Z243v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJgALAAAAAAQABAAAAj5ADEJXAGjkhkcYoK4yaBBICYFClxkGfNkzpQOCbAUgjNAoIICAgggQEDHQYEEUQxUANGxiAAJSSQtQBDGQZwNHCIM2HmIwIcvWhaQ8EMARYCjixoNIHLACCMaTXTIOeDoigERI2QAAGQFzaAhECD0OTDhaAAKlwAkInCHyRsfVRARiGHgTJsQFwAoeVknhwk1ggSwMcsgEAAyIBucyNNAQIESPx5g0MMFQIJHL1oomuAETyQoZntsAeBwjYUdFtJ4QYIByI0jUkgLTMHnwVmzR5dQko2pAgNINWzsmcSjCxVCf3hH8GDoQpkZQiyBsaOCBW8A2LNrzx4QADs=', -'img/ext/ps.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAQEBAMDAwICAgEBAff39+/v7+np6ePj49zc3NXV1dLS0srKysPDw729vba2tq2traSkpJ+fn5GRkYyMjIGBgXl5eWxsbF9fX1hYWFNTU0tLS0NDQzs7Ozc3Ny0tLSoqKiIiIhsbGxMTEw0NDQsLCwYGBgUFBf///yH5BAEAAP8ALAAAAAAQABAAAAj3AK9l25btGjZ+Bq9p23btmj6F6NhZQXdunTp38AK5s8hu3zWK4MaFA8cO4zx89uK9E9jN27dv5yLGiycPnz578gqKW0HOnLp38ezlwzfU3jyB3MiVO6cuJT5s2fzpy1dP2zVzPullu6fPn7ap+fTdM0iu3T108Ky4w6Zt376p9bZpa+eOW7d7rLZh66fP7D55DF2S62aFn9u/6OTNWyfQm7hz4r6py8cqXrt29NyZawig27el5s6xYwdvnjpx4a7tAwdOnNLRgeDBazeynFVv3AA4HpfOSjpx4DyvaOiN3OBy43aSG2eOXLhy2xhaFVhQYcN+1xgGBAA7', -'img/ext/py.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAC/AAB/AAA/ACDfACCfAD+/AEC/ACBfAEB/AGCfAICAAH9/AGBgAF9fAEBAAD8/ACAgAL8AAH8AAD8AAPf3939/f////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAO4ALAAAAAAQABAAAAioAN0JRIfOHDqBCBMKvDbu3Dhy1xQqvNZunDRzESUiZFjuIbprGRNeMyeuZElw5MgdTGguZclw23JlKxnS3bdwOLdh07ZtpjhzCXlu26ZNmzej3n5OTLfuG9Fr28KJW4kwXbee19BxkwoxoTp1IEfm4loz4jp26MBtKwkxYtiV17DlYktOnEq75IC6u+ZtrUmT5MCBy3iNW19v4Ax7wwhSZLZv2sLWdBcQADs=', -'img/ext/pyc.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAH9/AEBAAD8/ACAgAGBgIICAQEBAIGBgQICAYF8/AL8AAIAAAH8AAGAAAEAAAD8AACAAAIAgIGAgIIBAQEAgIJ9gYGBAQIBgYICAgH9/f2BgYEBAQCAgIP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAPUALAAAAAAQABAAAAirAOsJRIfOHDqBCBMKvIZNG7Zy1xQqvBYPmzRzESUiZBjuIbprGRNeMzeuZEl15codTGguZcl07+DNKxmyHrt0ON/Jowdu5jhzCXmCA0ePXjej635OFHfOG9Fr4NKNW4lQXLue17Z9kwoxITlyIK9lg8e1ZsRz9bZxe1cSYsSwK6/Jg9e23DiVd8sBrXetGziTgMupU5fx2rdu79apc7duHUaQIud5oxe2Zr2AADs=', -'img/ext/rm.gif':'R0lGODlhEAAQAPevAMPDw8rKyo2NjcbGxsfHx5+fn2lpaGlpab29vYeHh5OTk/7+/mdnZ6ampqSkpHx8fJqamgQ7cgNCewI6ccTDwefi3Z6ent3j6G1tbQQgXU11l+De2cnT2AEjWYaMlcnHx3OGmgNAe8jGxoCBgoKCgYCAgI+JgjVolLW1tQMvWR8eHqGhoOjb0aOjowQtWqe3xrOztB4/Zy1XfAQ2aZKSkubh3M7PziNTf6ysrCtagYWEg39/f+rn497Z1ouTnDExMP/27uHd2hhLeOjo5ry7umNcVsHCwsHBwenp6QhCeN3d3PDv7vHs5ouXooGYre7o4z5ulnV1dWKBnAE1b0R0oZytu5+dm299jaCwwbGxsXFxcWxsbMTCwXBwcHR0dImFgqmjnre3t3+Vq7/CxWhoaM3MypeXl/7+/Up1mY6OjYuKitva18jHx5CNjamloT9jg2pqand3dzBXfHZ2dcfHyARAdr6/vgQydAI5el+FpsvHwzJQa/7++dPS0cHCwcbGxTFmkpubm1h/oylIbdLQ0NLR0amqquXl5F58lMTExDpyoU9dagQgWIaFhAQkW8rJyZ+kqGiOr8XFxtjQySBOdubg2qOcl+Lf3PLy8sLCwuvo5h0cHHB/jb65srCwsY6OjtrY1QVBeAE5de3t7Y2EfmF8k5aVlKqqqiVKbW2KpTJGW/Dw7lRcZISds4iIif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjzAF8FwNFghRVTaVyNeDBHyauHr6KYsdCgSak3MigJAcQJ4qsHhy4ownPDyQssYnKIQoXpIQlQVO5I4XMGjCVSk6pIuPJQx5gQSTQtoKDih4EgQDQMetjISKgIQxa02YRiSQUmUGI8TKAnVQY0q0wUufSER6QpPrYSqYGIUR1BrTZwONHBA0Q1ntZUgrTHxYw8E1jB8CjglA1CPViAcJRikQEkHj85CPCoTB85qr502uLxlYICBAZIImDIDZdCcDorCPQHgGsRbDJ9INOZRoEAdBL5sYMAwQAGnbNgOHDASwkBEByEAd754agjLQTsiNNFi8eAADs=', -'img/ext/script.gif':'R0lGODlhEAAQAMZdAEhbdElcdUqfCUugCnaGm0yhDE2iDU2jCk2jDk2jD36MoVesJYeWqZGfsZejs5youZypup2quqaxwaayw6i0xa65ya66y5vOjLfAzbXB0rrG177K28DM3cXN28LO38HVvcjQ3LjcrsrX8s7a88/b89jc49Ld9NPe9dbf9dfg9tfk1dji9d7i6dnj9tvk9tvn2d3l9t3m9t/n9+Ho9+Ho+OLo9+Lq+OTr+OXr+Ojr8OXr+ebs+Obu5ufs+ebt+efv5enu+unw6Onw7Onx6Orv+uvv+uzv+ezw+u3y+u3y++7y+/Dy9u/z++/17/H1/PP1/PP2/Pb3+fb4+ff5/fj6/fr7/fv8/vz9/P39/v3+/f3+/v7+/v7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe2gH+Cg4SFhR6IiRsaGR2GHl2RklwWABGFHJJdBj9aFCAAEH9ZW1tLkQk/AglYEwGvo0ELB0NDAgUHKlVQE65/WwdBUhcIA00CA1RMRxMAvwddUZEDAwI8T0U+zb8LQVEhxR8DQkY7NdtZQQe0VwUvU0k4MzHbo1s5ViwlGA4MCgQr6gma4EQJkR42ZLhIcULgnwlIKkh40MAfARIOJwDRQQNGCxQmRojIeKOXyZPOBjUDwLKly0AAOw==', -'img/ext/sdf.gif':'R0lGODlhEAAQAMZQACYmJyYnJi4uLi4uLy8uLi4vLjAvLzY2Njc2Nv8AADc3Nz8+PlxcXGVlZW5ubm9vb2Vl/3Z2b3Z2dn9zf3d3b4BzgHd3d21t/3h4eG5u/29v/395f4B5gG9/f3Z+fm+AgG+BgX9/b35+fn9/dn9/d4CAb39/f4GBb3Z2/3d3/3eJiYeHh4iIf4iIiICA/3+Pj3+QkH+RkYePj5CQkB7GHibIJv9/fy/LL7a2tmbYZm7abre3/2/bb3fdd8DAwMHBwb6+/7+//4DfgMbGxsfHx8jIyMnJycfH/8jI/9DQ0NDQ/7ftt8fxx8f8x/39/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfLgAswL4QvMgiDhTAILTEJj482IJCQKi0IHx2aHR4GmZsfBC0rUENQRFBQIxdKKFBHKCwtJj5FDj9OUBQaRy4QSCkksw1QDqm6GkCpQMGzUA1GDKm7SBk7Qc0mqU9Q3AAnESEUFCUDs084UOlQG03H7iaztQ5FxBM8UEtQOlAWw8VQHkCZ0INJQSE5/GmD1sAHlAo1bki8QYNDCwUPMDjQaCFAhQkgJ1Qo0GIGEQkSkqQ0oXKlhBYtDsRrIYLmipo2WwiAybOnT5gmAgEAOw==', -'img/ext/skc.gif':'R0lGODlhEAAQAOe4ADU+TStGbixGbjFKcjNNcz9VcT5We0JZfEZcfklefkpefkpef0pff0tffk5jg05jhE9jglBlhFBlhVFlhVFmhVJnhlNnhlNohlNoh1Roh1VohlRph1ZphlhqhWByj2F0jmN1j2J1kmZ1iWR2kWZ4kmZ4k2l5jmh5lHR8cGl8mGx8lW19j25+kG+AmXCCnHOCmnGDnXSEnXaFnneGnXiHnH6Kl4+Kd4+aq5ednZqjr6KjpKKjpaOkppultMKhbaSlp6SlqKSmqcWjbpyov6iqrKmqrKmrrqqrraauuauusqyusayusqyvsq2vsq2vs62ws66wsb6wha+ws66xtK+xtK+xtbCxtK2zvLKztbO0tb64dbS1tra3uba4ura4u7W7w+y3TLi8w7u9wLm+xLq+xby+wLy+wb2/wbrAxr3Bx8DCxL/Ey/fFJsDFysPFycHGzMXGyPfHK/fHLMXHyPjJM/jJNcbKzsnLzcnLzsvNz/TNYMvO0MzOz8vO0szO0MzO0s3P0M3P0c7Q0c7Q0s7R08/R0s/R09DR083S2tDS087S2dHS09LT09HV29TV1enXhNTW1tXW2PbWe9XX19XX2NXX2dbX19bX2NbX2dbY2NbY2dfZ2fDYmtjZ2t7awdja2trb29zc2/Xcmd3e393f4Nzf5f/mQf/oQv/pP/znoOfo6enp6urq6uzs7O3t7e7u7/Dw8fLy8vzz0PPz8/Pz9PTz8/f29ff29v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAj+AA3AgFHglJw6YHyEcOECBAcNAmTYusXC1EEwQhrVasUny5YGMWbNWmERoRBFsEiVWUIlQciRJTEqelVJyhMsCl6SjGNS0So3SphMyTmLlglUbOhgRDSqSxMnVojGGqIllR5JNkoNquIkCRYGLVipciVCFqdHKUadMcIWygISkyJtyuFJFIo3XnTw+FFEzAQSlzBRWoMjSg04QHYQUXNnkYUSmTBp6gQBwJUgR8z4CZQn0QXIgj+16cBlTiJDjAQB8gwYk50eGTzM+LLn0AsVZApVANxnxBdCkNrc+BAmzRg8uk+A+kMj1KTnaJBYKpSokKMNAzA8IBDBgXcEBygGSBhPIUBAADs=', -'img/ext/sql.gif':'R0lGODlhEAAQAMZ0AEhbdFFkfVhqgnCAmKWEP6aFP6aFQKaFQaOGSJyHY6eHQ32LoZyIZJ2IZICPpISRpoSTp4mYq4qYq4qYrJCdsJGfspKfspOgs5ektpunuZuouZyouZ2outWnJJ+pur6oar+oasCpaMGqacGqbaKtv8KsbqOuwMOtcaOvwKSvwOKuJaeywMCxh+OxJeOyJduzOKm0xaq1xau1xKu1xue1Jqy3xK+6yrC7ybC7y7K7yei8LbW/z7a/zenANurANbfAzbjB0OzCNbzD0rvE0ezERNXInb/L5O/RZfDSavHUavLVavLVa+vVgsvV6/Hbg/HdiPLdiPLdidbc5vTfidbg9drj9vnlkPHlqvbnpeDn9/brr/bssfbssuXr+Pfus+vu8+nv+env+urv+vnxvfr0wO7y++7z++/z+/v1xPL2/PP2/Pb4/Pf5/f/91//92Pr7/fr7/v/+3P3+/v3+/////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe9gH+Cg4SFgkBCPzk1KxwQhoJDdJOUEI+GPJSTcxBfl4Q3mnJvEAGmhTJ0OzYwJFJqZkYBhSmTo2xqZUW7u4MedDgxJhkVRWhtcW5kLIIYo2tpZmEnVmNYSEQKghRwMygaFhEgSVpOOioGghJramdgXVklS1xRPS0Hgg9pKBsXEw4f5kHx0aKAoAVmxMCrQmWEki1PfLggIGhAEyMYMYZQ4mVKEBoU/wgAQLKkiCNXmLzogADSIBEMGCRoICgQADs=', -'img/ext/swf.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAO7v8cjM06KlquHj5mt9lXuMo97h5VBbaFplc4aVp5Khs4ePmSw6ST5NXk1ecXKFmo2crXuCirK7xcvS2j1LWVxwhTpGUmZ3iJyquGVud5CbpqSwvObo6kNVZniHlcPJzpigprS4u9ba3dvf4qWssbzCxvP29////yH5BAEAAP8ALAAAAAAQABAAAAjpAP8JFIjNmz5v9PwNXPiPXj582tTl05ZPH8N/+tJZyYZwmz5+6fot3BcvXbZ1KLPdW8cvkEiB6b7NU6eun0R62NTZA+ft3wp379CJgwcPH85s8sLVw/dvnLt258LBGzfP37h06LqZi4ct3tNz4uaN8+ZvHtZz7b7tC1SuXTd44bT503dvXNa0+uK1PWcvncd08uSJ65Z2n1Nw78bp84cPnzq43LZiy+au7Tp/8OzNg3vuXTmmTcmZG2fvXbhw3TrXA7dNIL145MqB40b7Xbt69V66Tle5njlz9djFu3fxX7904L59i8ePYUAAOw==', -'img/ext/tibco.gif':'R0lGODlhEAAQAMZ4AAAkOgAnQABBagBCa64fJa8jKbAmLLAmLbEnLbEoLrEoL7IpL7IqMLIsMgBZkABZkbMuNABakgBak7QwNrQxNgBeowBfpABgpABhnwBhpQBinwBioABipgBjpgBkowBkpwBlpABlpQBlpwBmpQBmpgBmpwBmqQBnpwBnqABnqbg7QQBoqrg8Qbo/RABsrwBssLpARrpCR7tCRwturAxvrRJyrxRzrxV1sBd1sCN9tcJYXcNYXCZ+tSd/tsNaXymAt8RbYCqBtyuBty2DuC+EuTiJvE6Ww895fFGYxM96ftB+gtGAgnSs0HWt0Hux0uKtsJTA2uKur+OwsuOxs5zE3eOztZ3F3qTJ4OnCxOrFxurHybvW6fDV1tno8trp8tzq8+Lu9fjq6vjr7Obx9/jt7vju7vju7+ny9+z0+O30+Pr09Pv09PD3+vz4+Pf6/Pj7/fn7/Pn8/vv8/f78/Pr9/v79/f/+/v3//////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfVgH+CgickJyAeg4qCKCgfFxUWHSgli38nJTVMXnFjVjkoJ4qURWh4eGKncE0ZJIMoNml1URMEBUtreEgpD3+OTnhPDActCghAbV80G38kFmB4FAhVeGQxDVxvPSCXFXhhBDCneEkGUnhEKM0VbHYFC2Z4czoKWXdCrh4cV3hKCDJHdkBgYeYMDg2MgshR46OBgQQqsOChIkKCoBIomuBpw2WKljJ4tqBwEWBQiQxGurjBQ+cMFBQrBiwaYWIGjyE/boh4IcDSHwcaQJQIgSECAJ9IFwUCADs=', -'img/ext/txt.gif':'R0lGODlhEAAQAJECAJKm+////////wAAACH5BAEAAAIALAAAAAAQABAAAAIvlI95wN0qQJh0AiVrvUg6RnFGpoVd8DXoWZoLmnpsu76x/NL1CKd7pPvdHJDioQAAOw==', -'img/ext/unknown.gif':'R0lGODlhEAAQAMQeAPz8/MnJyfv7+/n5+fj4+Pr6+vb29vX19ff398zMzN/f3/Ly8svLy/Pz8/T09Orq6vHx8eLi4u/v7+bm5sLCwufn5+np6ezs7MPDw/Dw8MXFxevr6+Pj4+3t7f///wAAACH5BAEAAB4ALAAAAAAQABAAAAV3oMclQWmWiqeqCSEAcExQ6RoIzqFDkgVUmJonAEAMEIhG5gEwODQ14mCKMCw2MUBARXwBBIQD5PKYaLnZb3gh6ZyHabWhsXgT44WBwWCPf6cEfTEChAUFBIFbcIMCho6CjISEkH4wigwDlTADCSoRDCehAQkRHiEAOw==', -'img/ext/vbs.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAACAgPf398DAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANwALAAAAAAQABAAAAh0ALcJHEiw4LVt2RImLKhQ20GF2bbRyjbRYUKHCBdmw8YR47VsGDVSBHnQYsiIGzleW/mRZEaJIy02fLiQFkdsMl1ChFmx5cmIAq9xJKkTpUeKJh8ipHVwIi2ZJ7dp07bt2tSWRbOxZAkR49SvYMNuHUt2ZUAAOw==', -'img/ext/vsd.gif':'R0lGODlhEAAQAMZsAC5PqjZVrUhbdElcdT9csFFfcktds0djtF9mcVBquElsvU9xvllyu1t0z2F4v2h9wWR/322CxISIj4aJj4mMj4uNkIia2pSry52o+5G07aayw5S17JO266i0xam1xqax/Je46pm46qy3yae19p276Z286a66y6C96aG96KO+6K26/K2896bA56fA5qrB5qvC5rfA37bC07fD1K7E5bnD1rnC4LHF47PC/LLG5LvG17TH47vH2bfI47fJ4r3J2r7K28DM3cHN3sLO38jQ3Nbd/dTi+dXj+dbj+djk+dnl+dvn+t3n+t3o+uPn893o++Dq+uDq++Hr+uHr++Lr++Pr++Ps+uPs++Tt++Xu++3u8Ofv++jv++7v8ejw/Onw++nw/Ovx/O7x+O3z/O7z/e70/e/0/fH2/fL2/fP3/fb5/vf5/vn6/f///////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfOgH+CQkFAPz47OTQyMVyCfzURkpMRaWlnJgNZfzAWKzc3REQ3D2lqaB1Dmg4jKmxsCgqvbBVoGgO4DB8fr7GztWQ9PAMJGBizyAUXF106AgcGBr3IFWYXWjYCBA0Na95rCwprFGUXWDMCARAQYWEK7u/KF1QuAgD3Tfn6TRMXV08sBDxCUKGgQQkXpCxBIVCQiDEQxYDZsuxCkhIN/3jw8uXahSpQLB4JkbEDFStTokBxogSJkSIbMmpggmPGixYpTpAAwSFDRgFAgwoNGggAOw==', -'img/ext/xls.gif':'R0lGODlhEAAQAPeRAP///zZKZJCu1jdLZe/0/ZC9i22wZ+jw/eLs/Jm24DNwDV6YVVuiWDRYFZWkuTNpD9rm+5OitzVeGnSlcKa2y9zo+02MNu/1/dfl+tbk+jpvHnCbbTtoHjVJGt3o+5PCjo+x4+Xt/PT4/TZjGzReFMzd+Orx/Xul6Dp9J3yk6aW83GGiVHij6+30/cfa+DlwHmGgWJbEkZywm+Xs5bHB16290q6+1LLC2OLs+5Wz4oyv5ICn59jl+pamu5rGlrrF1EiSP1ieUqq5z8nb+Yqu5JyrwMDRwGSoYEeIO0KJNVKXSOHr+56439Pi+8rb+OHs/FOTQPP3/tLi+oit5ZPEjWmtYt3p+1qaSdbk++nw/T99IaS73WB+XKG63TRjEZmovjx3HzVNGM/dz2WnW5243kKAJYephViYRztxIkeFLejv/PP4/j57Hk+OOYWs5ufv/NDg+dbi1jRNGc7e+WqsZZGx4pW04l+hUzJoKKi2zTReEzNtDkaELMzay9Lh+jRTFzRSFzp3Gd/q+2eqX9rn+9/p39rn+qu60YGn5zRkEtnm+zRtDrDA1vT3/qGzn6W0yoSr5v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjvACMJvEGDkY0ah4TkofBIYCQDVcbcuQLFQpoybKK0KDJAoAEAIEOCVNCIgIMfHQ18OKIEQJ8FC2TsEXEhwoCbg2ZQoZNkAgwkcR4IGKpiy4AVAMT4YIACjxEAXtYQEPCkS4AzAAoEicEAzYZCJIYKEEQmQJsCYDSMKACEg6MGBEwIsJIgAB+RZl5I4AJILIQcAbSIFBlGDYIKGUAECKRg0YNEehr8kdMBgQcBfogEcPjlQJYDb0IsEYBBwBw3mwX2wCFWgCGxThCljuQAAiFFPLA0gVNiiIsUsyNIYZLATh0dUyDtOMFidoDn0KNDDwgAOw==', -'img/ext/xml.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAgKbK8ACAgPHx8cDAwIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAN4ALAAAAAAQABAAAAiBAL11G0iw4EBvCAUCWMiwIbduCbs1ZLgNwDZuACAqtMixYsVrIK8p3JatojZtoiyWBCBSYjZqALQBgMQJGwBqJVu+tKgNkqVQ2CribAlgpyhOoaTZxLmNKMmK2KKq/LjRY8eOTklp3bqVqsSrVj1m5crV68KwYJ2CvSoypNu3IQMCADs=', -'img/ext/xps.gif':'R0lGODlhEAAQAMZZABOq4huq4xas4jCn3hyt5CKv4jWx40O340e25kG56U+25Wu54lu+6JGywl/A6He81Xy94aq0t37C5aS7w4PG6p7D4IvK663J2JzO7JTR68bGxpjT6ZrS7p/T8LHQ3p/U7cTO1KTX7pva8rHW5KzY7qXa8NPT08/U1rbb67fb7rze8dnZ2dra2tvb28Dh8Nzc29zc3N3d3d7e3t/f39Hk7dDl8eLi4uHj5ePj4+Xj4+Tk5Obm5ufn59rr9Onp6erq6uLs8uvr6+3r6ezs7O3t7e7t7e7u7u3w8vDw8O3y9O30+PT09PX19fb29vf39/j4+Pn4+Pr49/v49/n5+fr6+v/69/v7+/z8/P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAebgH+Cg4SFhE1MTU1OTkgmhoJUU1RUVldXMjqQT5yTlTYrGoaLT1NTpVdYS4aMp4xSPSlKhpxOUUkuHxUiQIZQVTUkHCUQHQ40hRcSAwoUFgcIBgUohkcjDBgLAQQCABuGQTMgKg0REw8JGYZIRkIeOTs4LychhkZEQ0VBPz8+OzeG8O3z4YMHjx08DM2QESMGjBYsVqxgAakioUAAOw==', -'img/ext/zip.gif':'R0lGODlhEAAQALMLAP//mQAAAMzMZpmZAP/Mmf//zIaGhsDAwPHx8ff39/j4+P///wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAARXcMlJq712aI3lQIABAAM2CIJxBOi2eUVhKEFsF4AQLAOuBqMggKDj4VaHIGGY2/UAAQNQOSw+DyrmcmnFRafbqvOYDROIY8LXfLai3nD4LhGo2+/3DiYCADs=' -, -'w8/about.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALqSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQwxBGRkYOIMUF9TisqvuPhD8Ba8B/lNgBEEAsVHAkK5CKAWJfIP6NLg3Ev4C4GYivUWIPQABRHPXAkAI57jAQg0JMGg1LAfEFIL5DqT0AAUStNPoIiO/ikDsN9MwvSi0ACCBqORQUmn9xBTo1LAAIIHrkekZqGAIQQEOmeAIIIGo59D+BZEExAAggJip6mB2Ho3moYQFAAJHtUEYogHJ1gVgDyj4BxE+QlHoClQlQ6lCAAKIoRIHFzn+gI0AhlgvE/ED8Eog/APEUIH4KVWYExGGUOhQggJgocSSUmQbEIkDcBcQ5QPwAGsLzgPgtVE0k0EOGlDgUIIAoClGg5fZAKhiI1wDxPSBOglaVoDJVEoh3QZWC2gJFQPVy5NoFEECUpFFVIFUArd9BVaQtKD1CQxNUS8lD63kYUAGFPlAfMzn2AQQQC5mO5AWFEBCDGiTroOlwDxA/A+KLQBwNxK+AWBFNqzPUUwtItRMggJjIcCQzNF0aQJt2oMzzCYjtoexYIBYH1fFAzInFiAigGTak2gsQQOREvQcQ+0HZIIckAPEfIP4MDbHvoBAD5rWTQHoRUu6HAVDpkEtqegUIICYSQxOU/jKBmA1JGOZYSWj5CWreJQHVGgEdewbIroFmNGQAcmQhUA0XsXYDBBAjMWNP0IJdFIg7gFiTSLNBZWoz0PyzQO06QHY3EKMX/EuA8lNBZTGQ/oLPMIAAYiKhzDQjwZEM0HRaC42FnzjSqxdQXpiQI0EAIIBIyfWHgJgbGrLEtlFB9b8EtP5fBW3yMSK1Cc5AMyBBABBAjAM57AgMTRag/X+IUQsQQExDwZEgABBAjENlIBcggIZMCx8ggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDABcWJQaLg/cHgAAAABJRU5ErkJggg==', -'w8/antibody.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHk0AsXLlCtGrt69SpJZgEEEAuxCq9fv/5/8+bNDKtWrfofGBjIYGpqykiOA8+cOfN/7dq1DBwcHAy/f//+b2BgQJQ5AAFEdIhqamoyfv36leHHjx8My5cvZ7hz5w7Jofv48eP/y5YtY/j58yfDt2/fGECOfPDgAVHmAAQQSVGflZUFZ8+ePZvk0Jw6dSqcnZqaCqYVFBSIClGAAGIktfX06NGj/9OnTweHChsbG0NHRwdRFlVUVPz/9esXAysrK0NKSgqDqqoqSUkHIIAYyW3mlZeX/wemMZhjwWYRciQLCwtDV1cXXrW4AEAAMRHrKJBlyGKdnZ2MIEeCHAuUJyokgXpQHFlZWfm/qKiIqJACCCCiHAqyBGQZyMHI4qCQBMmBHFtWVvYfmyNBcqCQBKllBAJkR4LMZGdnJypEAQKIqKj/9+/f/+rqagaYpf7+/gyWlpaM6KEGKnLa2trA4nV1df9BpQTIbT09PXC1p06d+r9hwwZw6QGKkebmZpBnCSYFgAAiKkSZmJgYQQaCDAY5aM2aNQxHjhz5jxSy4MBC9jTQc2Aa2ZEnTpz4v2LFCrAjQSFJrCNBACCAiC6egCEJdiwo1EAOAoUKsmNBDkWKWTBAdvjx48f/r169GuRpsIebmpqIdiQIAAQQSeUoMzMzY0REBDg0QCEGqqlAyQJnukJy+KZNm8AOByWdgIAAkhwJAgABRHKjRE9PDxyyIMeC0mxVVRU89JBDENmRQDX/QeUuKOOBQtLCwoLk4gkggMhqPYGSQXt7OyMwhMFptqam5j+2TAkSAzoM7EiQw6FFGlltBIAAoqiZ193dzcjJyQmqs7E6EgRAcqDo7u3tZaTELoAAYmGgELS2toIdcOzYsf/o6ROE/fz8GIGY4mYhQABRteGMnC6pPQIDEEBMtHAkLQBAAFHNoei5ntoAIICoGqK0DFWAAKJp546aIQwQQDRzKLVDGCCAmGgVetROswABRLPiCdT4oGaIAgQQ41AZcQYIoCEzUgIQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAA7CUl6dYjgNgAAAABJRU5ErkJggg==', -'w8/arrow.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJlHLKYUJCcnO5BrP0AA0TtEHYCONSBHI0AADUTUzydHE0AADYRDDYCh2kCqJoAAGqjMVE9qEgAIIBYSM0MDhQ60R0sChsRqBAggFlJDgspJIAFILyBGMUAAkerQRiqEKKyIugDEG4jVCBBAjKSUj4yMjJSWow1IsWI4d+7cC8TaDxBAA5WZGkGOJEUDQAANhEMvAB1JcqYECKCBcGgiOZoAAojeDj1AapTDAEAAMQ6VsSeAABoyzTyAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAaepph9PbKJ4AAAAASUVORK5CYII=', -'w8/assaycurve.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURX9/fwAAAP////////m0HZAAAAAEdFJOU////wBAKqn0AAABBUlEQVR42mJgJhoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgABCUsqAFSDkAQIImcmEBSDJAwQQCUoBAogEpQABhMxkZGTEpxQggNBMxVCNJA8QQJgOQFWMJA8QQNjcyohdKUAAYfUWI1alAAGEPQQYsSkFCCAcgcWIRSlAAOEKV5jnkOQBAgh3FDCCAZI8QACREFsAAUSCUoAAIkEpQACRkF4BAoiEXAAQQCQoBQggEpQCBBAJSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECiASlAAEGAFFnEo9LI8nlAAAAAElFTkSuQmCC', -'w8/back.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYByPTE4OTmZbSDtBwggYh3JOtCBBRBAxDiSfTDELEAADQpHEuNQgADC50jhwZRXAAKIBZumlJQUhblz5z4gxSKgxxKAVDwWqQdAsxIp9QhAALFgcSQod78i0ZENQKoei9QFIC6kRogDBBC2clQDGALfSHDkfDyOdASa9YEaDgUIIGwOvUuiIxNo7UgQAAggFrRo1wQafp0IBwoAKZAjA7BIL6BGmkQHAAGEnkaZiXTkfiA2oJcjQQAggNCj/vNgdCQIAAQQI3ILn5GREZ8jFYDUehyOpBjMmTOHEZ88QACxEJlpDKAhKTBQjSeAACK2mbd+IB0JAgABRKxDA4H4w0A6FCCAiHIoMJOAy8WBdCxAABGdmYjIUIVAD02gpFGCDwAEEBOaQ+QIhOwDaMhewCLdD62paAIAAgg96v8QkQw+4HFsAq0cCxBAjOhBTij60Qr/fhx1PcmFP6GoBwggDIcC63seoCVf6N0wIeRQgADClut/kBIS0JBbgEUKXElAQ55iABBATFiqsj9AwznIcGwjEB9Aw6DQLKCGQwECiHGojOYBBNCQGSkBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwAGoMizLJ4qVwAAAAAElFTkSuQmCC', -'w8/benzene.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACR7FBGRkaCOCUlxQGIC/CpIRUABBAjKQU+IQuSk5MdgFQ9EDtAhQ4AceLcuXMfYFNPit0AAUQVhwIdmACk4pEc+AFKC0DZjUDHTqDEsQABRJFDoQ4EhaACkgMnAvEEqCPno4VuINDBH8hxKEAAkeVQfA6EOQSoBuRQAyjuR1IHSgobSHUoQACR5FBgBgE5bD8+ByKF9nogFQAN3YXQ0DWASm+AOvgDsfYDBBALiZlPAYpxOhAJwDJQATT6A4EYFhMgDzgAPRMITRIEAUAAkVuOXgA6sAGPIxmAcoVQx32AhuR5qOMNobQA1NFEAYAAIrvAB6VBIP4PwngcuwHqsANImQvkuERS7QMIICYyop4BKZQYCEUdqAwFYkdQEYVUZJEMAAKIXIdeJNUiUFKBhm4gmoeJAgABxMJARwB07AVosiHZwwABNGQaJQABRKpD5UmNMmoBgAAiN41eIDVTQGsqGNAn1cMAAURJ1H+A5uRGQi0qIAYVS/eRHCuA5GGiAEAAkZuZ+qENjAYSmnwMUPYGciwECCBSQ3Qhck0DdEwBjhDcD20TwBy5AIgVQRUAtEFjQKpDAQKIicTiZQFaTdMPchRSccOAFoowByZC6/b70NoJ1k4lOo0CBBDJaRSppimEWuQADd0AqJJGPA5UQErbirBylRgAEECUNpwNsDXfoGxQFOcjlRQPoEkHpcVFrP0AAUStrkgDUkvoA1rOfgDtiiygpCsCEEBU69xhCV28DiTVoQABRO1eKKyNeZGQA0nthQIEEONQGR8FCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMAAkoAMduhLsOgAAAABJRU5ErkJggg==', -'w8/bold.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAA0cWhjx8//r9y5UqKGhUAAcRCD0d2d3czfPv2jeHRo0f/S0tLGckxByCAGGnZekJ2JBMTE8O/f/8YBAUFGRobGxm4uLhIcjBAADHR05Eg8P79e4Y9e/aQbB5AADHR05EgYG1tzeDn50dy9AMEEBO9HZmYmEhWGgUIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCSHbpixQq6OxIEAAKIZIdmZ2cz8PPz09WRIAAQQGS1noAh+r+jo4Ph2bNndHEkCAAEEAPIoeTiI0eO/KdEPykYIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAzBhW1bGrbhsAAAAASUVORK5CYII=', -'w8/boldhash.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs9LElJSdEFUrVAnDZnzpwP5JgBEECMtG49AR0pDqQuAbEYEF8AYkdyHAsQQDSPeqCjXgIpdyAGOc4AiPcDHS9AqjkAAcRCp+i+AOQ7ghwJdWw/ECeSYh5AADHRMLr3AHEoLARBjgVFOxAfAOJCUs0ECCCapVGg4wygIShASdqEAYAAYhnM0Y0MAAKIaTBHNzIACCCqRj21oxsZAAQQy2CObmQAEEBMgzm6kQFAAFEc9bSMbmQAEEAsZDgMRMGje+7cuReSk5NpEt3IACCAyIl6lOgGOlIA5FhaRDcyAAggkqOekZGRAeg4ukQ3MgAIILIyE1IIfkCKbpoCgAAiO9fTI7qRAUAAMQ6V0TyAABoyXRGAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAPWhiCrU78chAAAAAElFTkSuQmCC', -'w8/bracket.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKHSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAsxir5///7/yJEjDLy8vAxsbGwM//79A4uDql8QVlFRYRASEgIJMWLT//79+/+3b99mYGRkBGNwCDExMfz69Yvh8+fPDFZWVgzc3NyM+NwAEEBEOfT69esMx48fBzuSmZkZbAmsjQCyDOgQBnd3d5wWXbx4keHYsWNg/TBHgjz7588fsH4ODg4GW1tbvG4ACCCiHAoyCBQSjo6ODEpKSgx///6FhygIAEMDr34TExMGdXV1MBsWoiAPP3z4kGHHjh3gmCIEAAKIKIeysrKCaTk5OQZRUVFGUtMXDw8PIxBjk/oPCl2Y+fgAQAARlZlA0QQKgd+/f1M1g4BiBpYMCAGAACLKoaDookW7FZYZiQEAATRkiieAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQggohwKquaQ25JUs5yJ+HACCCCiVIIaJKTUy6TU9SDPE+NggAAiqpn38+dPsKFXr14Ft/aRW/ggICUlxSAgIIAzuD9+/Pj/yZMnGC18UHsUZAao8UwIAAQQUQ4FGQRy7JkzZxhOnTqF0pr68eMHg4ODA6iFj1M/SN+ePXvADXD01hioqQcymxAACCBGYqMT6Pv/LCwsDCCM3H4EWcrJycnAz8+PM0SB/aL/X758wUifIHNAjlRQUCCY+AECiHGojI8CBNCQKZ4AAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAUnMlOE1bpzgAAAABJRU5ErkJggg==', -'w8/btncir.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPpSURBVHjaYmSgEkhOTlYAUgpowh/mzp17gRrmAwQQIwUOMwBS8UAMoh0IKL8AxRuBDt9Ajn0AAcRIhgMTgFQ9ttCDOgYZKOBQtwCIJwId/YBYewECiJECB4IsBIXORiA+ALT0Ax69oBD3B+IANP0TgXgCPr0wABBAjEQ4UABIrUeKXlAoNIIcSYwFWMwDOTYfzbxAQmkZIIAYiUiH+4FYACrUCDSwgUqZD+Tg+UhmJwLNXoBLPUAAMRLpyAtQgy4wUBFAY2s+NEngdSxAADES6UhHcqKZBAeDHJuAz7EAAcSIw5f36eVIHI4F2XkAWR4ggJiw6FlPb0eCANCeRGixBXYDNMDgACCAmLAUQQ5IUUAXRyKBQmgAgRzZjywBEECMaFF+HlrOkZS7gXqJCTFizXKA5g+UJAAQQMghmgB15ANiHQlyIDGORPcMPn1Qh8GSQD1MHCCAWJDU5MPKSnJCEV+IwdQS6ymoG8DJENTYAVW1AAHEhFQcKSBVi0Q7EuRAQtFKbLQjqX+A5A5wSQAQQLAQjYfSBKtFdEcSSqswNTAapAbEJiJ0N0IrAlAboQEggGBp1AFJklhfE5XmSEkiaAAWogagjA4QQDCHGkDpA6TmbmzJAD05kJA2kc1CbjYaAAQQEzR9wlrjH0gNTXLTIZEA7lCAAGJBar1cILfcxOZIdDXkhCoQPITSAgABxMQwRABAALGQmG5oopYYABBAJDmU3KoSTy1EtN0AAcSE1hGjtAVE7RjnhzEAAogJqd2nQAtHkpmJGNCLTYAAYkLqYMFaLuQ2fElyJJGhD+8AAgQQC1JBnwCtrg5Q07EUdv4YoK25BwABxIRWdQbQqTVPjDJ/5NoSIICYoBo3QFtOCkg+GTBHQhvxMHcsBBEAAYSc6xegtUvxWkZODidBTwG0xnwAy+wAAcSINhp3H8oNJGUwi8pdEQVol0gAuesMEECMaIoaoM1/UDJQHIDOHcgN66HRDhrPcoSJAwQQel0/AVpUwUYw6O3IAqS0WYgsBxBATFjagIGwEgA6KEAvRyYgdZEL0YePAAKIGV3D+fPnXxgZGT2E+swAyFYAim2kgyNhgbIA6MhKdDUAAcRIrGaoLz/QKLr7kRyZiE0dQAAxkuDTB9BceIBKDlSAOjCAkCNBACCAiBnIdUAaj4KFbiMpw9pYCvMCaHktgJQmJ+DTBxBAjCQY3o802gar2hYyEDnyDK3xYMPjAkhmFBIz7goQQIwkhoYBtJwNwNIJA4XwRTRxeWjz0QGL+on4RpjRAUAAMVKQvgIYENM3xADY6MdCckauAQKIkUoZwwHqYAEs0gdgTTVK7AAIMAA53o7i86G+RwAAAABJRU5ErkJggg==', -'w8/btncir0.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARGSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZDHkegR0HYnMx/cLQ9+0fG8Pjn8JgR5//IgdmozsY6NgFhOwHCCBGIkNxPTSKwcCa7zaDi+BVsONIBSCH7nmvzXD0kyqyMChJBOILXYAAYiQiHe6HZhBwyCWJH2IQZv1CceZ7+5uHYd5LO+TkAXKkI670CxBAjMQ4EhSlfsLnwKFIbQAK3RWvLQg6FiCAGIlxZKnsNrKimZTk0P3YC5yecTkWIIAYcaTJ+/RyJB7HKiKnWYAAYsKiZz29HQkrQUD2QUsOWAaGA4AAYkYLzQIglQFix4ofZdDhfsJAT8DP8h2Mz3+RB3EVjIyMPp4/f/4EiAMQQMxYiiEOQ56HDMEiZxgGAsiyvwMngxe/wAWNBdCxM4GO/QEQQMhRXwArhiJETzAMJECyXwDqLgaAAEJ2aD6sMKdGOUkJANkPcgeyuwACiAka7QGw0ASVlzQBjMwkKUdyhwDIfQABBAtRf1jOo0loMgKt+f+X5FBFKnH8AQII5lBwPQ5qYNDGkf/I0orkHgeAAGKC5nYF9CYadRzJSLYj0dyjABBATMiNXnVOajoU5Mj/FJmA7B6AAGKiXd79T1XTAAKICRbt9KoqyalaQQAggJhgxRIX869B6VCYuwACiAna6cLXvxlQAHMXQAAxMQwRABBATNAOFrxNOJgAsnsAAogJ2Dh9ABsouPlNYpBFO9w9HwACiAmpF8hw8/vgSqdI7jkAEEAwh24EEaAGK7QrMOAA5A5oAxrsPoAAgjl0A6JXqDMoHIrmjg0AAcQEHcQCpdEFsO7rQIcqyH6QO6BgAch9AAGEXDw1IhTpDHhoIgUW2F0AAQR3KDT3TwCxN701HLCiCmQvyH4omAB1FwNAAKEX+I2wcnXqMxe6JwGQfSB7kQfQYByAAELpH4B6e8Be30UgMwGk6cpXGQYzvnsMrIx/6eJI0AAEtPfJAB00uwHjAAQQRkcG6NgHQMc+BDIDPv3lootjYY5ESm6JQEduQFYDEEBYe1xAx15Ad6wy52vw4AAt0iQoutEcuQBdHUAA4ewaojv24EcNcKudmt2VTW+NGGY9d2QAmY/PkSAAEEDEDOQ6wMajQHwRYO8Q1JW1QvS7SQbHPqmCHfnmNw+8LoemyQO49AAEEFFD49AOYD8ok8EbtEy/GKz4bzOAhn+I6WuB6m1QlXjsoyp6aQIKwUJCY/kAAUTqZIMDdOQiAFePUZ3zBZLjJBjwNMpBmaWR2BkSgAAia/oG6GAFqGPjGYibuoEBkKMWMkBmQx6QYidAADFSmiGgycKAATEZIQ/tMIIc8hCpGXmB2KkabAAgwABJk5+jk+MssQAAAABJRU5ErkJggg==', -'w8/btncir1.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARrSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZbFT/M2hoCjKI8P1iYGf5g6Hv5x8Whjef2BhuXH/PcOQ2I8Pjn8IYDgY6dgEh+wECiJHIUFwPjWIwsBd7wuDpIsEgwvud5CTz5jMnw/Y9LxgOvpJBFgYliUB8oQsQQIxEpMP90AwCjtaMUCEGXo5fFGe+zz/YGGasfoecPECOdMSVfgECiJEYR3Ix/WKIMf/JYKbHQHVw6hIDw6zjvAQdCxBAjMQ4si6CiaxoJiU5NK34x/DtHxtOxwIEECOONHmfXo7E41hF5DQLEEBMWPSsp7cjQQBkD8g+kL3QPLEeWR4ggJjRQrMASGWA2DkufxgUJH4y0BNwsf9hkBNkZjhxjwXEVTAyMvp4/vz5EyAOQAAxoUU5qJxkMOZ/wqCt9IthIADIXpD9UFAPdRcDQAAhR30BrBiKCRBlGEiAZL8A1F0MAAGE7NB8WGFOjXKSEgCyH+QOZHcBBBAjNNoDYIm3P/4njRwKCpN/JFUIhQvZYdxAgACChag/rO6mjSMZSXIkLFRB7oG5DyCAYA4F1+OgBgZtHEmeuUjucQAIICZorgK3iECtoMHiSDT3KAAEEBNyo1da6NugcSS6ewACiIl2eZe6yQgggJhg0Y6UcAcVgLkLIICYYIU8F/OvQelQmLsAAogJ2unC178ZUABzF0AAMTEMEQAQQEzQDha8TTiYALJ7AAKICdg4fQAbKLh3//ugciiSez4ABBATUi+Q4ey1j4PKoUjuOQAQQDCHbgRLfJQB98MHAwC5A+QemPsAAgjm0A0wkSMnvw4Kh6K5YwNAADFBB7FAaRQ8WrHxGt+AhyrIfpA7oGAByH0AAYRcPIHGgsC9wIEOVZD90N4o3F0AAQR3KDT3TwCxl18RGbCiCmQvyH4omAB1FwNAAKEX+I2wcrVn9Q+6JwGQfSB7oeABLDRBACCAUBwKTauJYJ/95mHoWPKNbo4F2QOyD2QvFCQiD0AABBAzugZgP/oBsD/9EMgM+PSXi+HytU8MljrsDCxM/2juSKQhSZAjNyCrAQggZmwagY69gO5YHWUe8AABLdJk/8ov6I5cgK4OIICYcRmA7tg9l5kYuH9+ZlCSo15S2Hv0J8OEvTwMIPPxORIEAAKImIFcB9h4FHiMiPULQ6wDK0UjKVfvsTEsPvAbOT2C0mIgvkkJgAAiamgc2gHsB+IEeIOW6ReDk/xbBlMTMaL6Wk/fcTGcPvOKYd9DYeQykgFa0RQSGssHCCBSJxscoCMXAehysEkGIyVWuNi5e78Z8DTKQZmlkdgZEoAAImv6BuhgBahj4xmIm7qBAZCjFjJAZkMekGInQAAxUpohoMnCgAExGSEP7TCCHPIQqRl5gdipGmwAIMAA2Smb3M+iUZQAAAAASUVORK5CYII=', -'w8/btnrec.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHaSURBVHjaYnz37p08AwMDLxBzATELEDMyQMB/hoEByPb/AeJvQPwZIIBYoI7kB2I2qKK/QPxvgB3KBMTMUDewggQBAogFGpJsUEXfgfgn1CcD6VCQu9iBmAPqNi6AAGJBim6QIz8B8Vcg/gUN1YEATFDHcUP5nCA3AgQQzJF/oCH5FerYnwPsUHYomx0a9YwAAcSClHD/QkPy5yBwKAPULX9hSRAggFigjP9Qh8GxoKDggDj0/fv3DGhuAbsPIICYGIYIAAigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIINj4KGw4Go6ho2oDFXjIGOw+gACCjY+COKAxc9BIL2wQdaAHctmgbgJPPgAEEGx8FDZmDhuOHixD4+xQt/0BCCAwAXUsB1QhO8PgmmwAT+MABBBIADSPwwr1BSeUHkzTN6DY/QYQQCCHfoYqGEwTYqCA+s2ANCEGEGAAoXBOakgMlioAAAAASUVORK5CYII=', -'w8/btnrec0.png':'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', -'w8/btnrec1.png':'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', -'w8/butane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC', -'w8/button.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAD6UlEQVR42mJkoBJITk5WAFIKaMIf5s6de4Ea5gMEECMFDjMAUvFADKIdCCi/AMUbgQ7fQI59AAHESIYDE4BUPbbQgzoGGSjgULcAiCcCHf2AWHsBAoiRAgeCLASFzkYgPgC09AMevaAQ9wfiADT9E4F4Aj69MAAQQIxEOFAASK1Hil5QKDSCHEmMBVjMAzk2H828QEJpGSCAGIlIh/uBWAAq1Ag0sIFKmQ/k4PlIZicCzV6ASz1AADES6cgLUIMuMFARQGNrPjRJ4HUsQAAxEulIR3KimQQHgxybgM+xAAHEiMOX9+nlSByOBdl5AFkeIICYsOhZT29HggDQnkRosQV2AzTA4AAggJiwFEEOSFFAF0cigUJoAIEc2Y8sARBAjGhRfh5azpGUu4F6iQkxYs1ygOYPlCQAEEDIIZoAdeQDYh0JciAxjkT3DD59UIfBkkA9TBwggFiQ1OTDykpyQhFfiMHUEuspqBvAyRDU2AFVtQABxIRUHCkgVYtEOxLkQELRSmy0I6l/gOQOcEkAEECwEI2H0gSrRXRHEkqrMDUwGqQGxCYidDdCKwJQG6EBIIBgadQBSZJYXxOV5khJImgAFqIGoIwOEEAwhxpA6QOk5m5syQA9OZCQNpHNQm42GgAEEBM0fcJa4x9IDU1y0yGRAO5QgABiQWq9XCC33MTmSHQ15IQqEDyE0gIAAcTEMEQAQACxkJhuaKKWGAAQQCQ5lNyqEk8tRLTdAAHEhNYRo7QFRO0Y54cxAAKICandp0ALR5KZiRjQi02AAGJC6mDBWi7kNnxJciSRoQ/vAAIEEAtSQZ8Ara4OUNOxFHb+GKCtuQcAAcSEVnUG0Kk1T4wyf+TaEiCAmKAaN0BbTgpIPhkwR0Ib8TB3LAQRAAGEnOsXoLVL8VpGTg4nQU8BtMZ8AMvsAAHEiDYadx/KDSRlMIvKXREFaJdIALnrDBBAjGiKGqDNf1AyUByAzh3IDeuh0Q4az3KEiQMEEHpdPwFaVMFGMOjtyAKktFmILAcQQExY2oCBsBIAOihAL0cmIHWRC9GHjwACiBldw/nz518YGRk9hPrMAMhWAIptpIMjYYGyAOjISnQ1AAHESKxmqC8/0Ci6+5EcmYhNHUAAMZLg0wfQXHiASg5UgDowgJAjQQAggIgZyHVAGo+ChW4jKcPaWArzAmh5LYCUJifg0wcQQIwkGN6PNNoGq9oWMhA58gyt8WDD4wJIZhQSM+4KEECMJIaGAbScDcDSCQOF8EU0cXlo89EBi/qJ+EaY0QFAADFSkL4CGBDTN8QA2OjHQnJGrgECiJFKGcMB6mABLNIHYE01SuwACDAAOd6O4vOhvkcAAAAASUVORK5CYII=', -'w8/button2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKaSURBVHjaYvz//z/DUAAAAcSCLiArKwsS4wdiQSjNi00dDQAoxH4B8SsgfgHEXx4/fvwXJgkQQIywEAU6kBFIcQKxDBCLQtmsQMwExbR2JIz+DcSfgfgDED8EOvYbSAIggMAOhYaiABArAbEIEDNDNdE7XTBCMQPUwS+B+BrQsT8BAggWpazQkBSBht5vaDT8AeJ/dHIkEzSJsUFpkJuEobH7BCCAYA4VgwoyQx35BYi/Qh37l04OZYY6khuIeaAOBfHFQQ4FCCCYQyWBmAMpQYMc+RGIf0Ad/o8OockKdQMDUqgyQR3NABBAMIdyQdPGf2h0/4I68gvUoX/pEJqsUDYn1A3/oW4CiwMEEAuSj2DgH9Rhv2FpFbmYoAUAZmZmpAz0F1sMAgQQE1qOY0B3MK0dCQJQO7A5EO4mgABiYhgiACCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggJAd+h+LHDPS4ACtByCYsQQc3E0AAcSCw/GwIRZWqEH0GtJhxeFgBoAAgjn0D5RmZEAM/cEGrOg9SAYbIIONkoDtBgggmENfQRWwMyCG/kAANGA1EMOObFCHghwJGrBjAAggmEMfMUBGnNmhYjxQxQM5kAuLzbcgBkAAwQR+QgV4oI5lhcoN5NA4KCa/A/FzEAcggFiQ0sFraLALIjmUEckAWgLkAIENe36DuukTSBAggJAdChK4B02XoFAFDUnz0jlE/0GTG2i0GzTR8Obx48fgpAcQQIxDZUIMIMAAL8eFn1Tn28gAAAAASUVORK5CYII=', -'w8/buttonbg.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANDSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxY/JrhM8N7IOsjw3cg6zsQ/gbCPwysDCwMnECSF0jyQ7EYkATyY8mxCyCAGMlJo88Y3i9+yvCOAYS/MPwkWh8PAzuDJIMQgzSDAIMMgzBJDgYIIJIc+pLhw+IHDG8Y7jO8AobZPwqikYlBnkGUQZFBhEGCQZAoBwMEENEOvcHwfPFtYFiCophaAJQcVIBhrMkgRdCxAAFE0KE/GH4tvs7wnOEqw2OaZRRNYELQYZADJgwmnA4GCCC8DgU58jLQgTeBDqU1UGOQYtBnUMDpWIAAwls8gUKSHo4EgVvAZHWF4RFOeYAAwulQoAMX0zK6sQfMEyB+thibHEAAYXUosGxcDPLhQIA7wBh8ASz+0MUBAgirQ+8BCyJq5m5SAMje+8AiEB0ABBATZmH+bjGonBxI8BAYp08Y3qKEKkAAYTj0KbBCpKQwpwYA2f+U4QOKGEAAMaHX3aBqcTCA50B3ANsO8FAFCCAUh74BSpFSd9MSgNzxCphiYQAggFAcCmpiDCaAnKEBAogJl8RgcyhAAKE49PMgcyiyewACCMWhoEbvYALI7gEIIBSHglrmgwkguwcggFAcCuo+DCaA7B6AAEJxKKiPM5gAsnsAAgjFoaCO2GACyO4BCCAm9K7BYALI7gEIIBSHCgH7iYMJCCK5ByCAUBwqysAH7tIOBgByhygw8mEAIIBQHMrNwB4rDQzXwQCkwfHLAe8/AQQQE6YCQXC/e2CHb5gY0AMMIIAwXCTFIBSryCA2oA4F2S+FNjABEEBYg06ZQXzASgCQvQoMIhjiAAGE1aEiDLyxoH72QACQveIMAhh9e4AAwpkY1RkkY7UZZOnqSJB9IHuxyQEEEBN+jdIgjXRxpDp4DAq3XQABRHDs6RfDn8VXgV0tWg5GgEIS5EgOBjacY08AAUT0aB5o5OQWDUbzQGkSV3QjA4AAIml8FNj5W3yX4SVVxkdBRZASMNsAax+ixkcBAojMEed3i0H9f3JGnKXBI86C4PKaFDsBAoiRkumbrww/F79m+AR2LqExfFCFCCz2UKpFUgBAADEOlXkmgAAaMtM3AAEGACiI5SZ+0bsqAAAAAElFTkSuQmCC', -'w8/buttonbg2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMbSURBVHjaYpz+YzkjAwMDDDNhwcjyMIDMJhf8R2PD8D8s+D9AALGgOZAFCTMj0eiOpaZDkR35F4j/INEw/A8ggJAdygrEbFDMjsSGOZYJS8hSw7GwUIQ57hcU/4TSIPt+AwQQC1JIghzFAcRcSJgD6mhWtJCltkNBjvwNddwPIP6GhMHqAAII3aEgx/ECMR8U8wAxJ9SxLEihSk2H/oOGJMiR34H4CxB/ggYMAyy0AQII2aHsUIeCHCgMxIJALAB1LAcNQhU9NH9AHfkBahcDktxvgACCOZQZKUT5oI4UA2IhIOaHirPT0KE/odH8EeoOBqSkAAplZoAAwpZGeaAhKQR1rCBUDDn6qQWQo/0L1A4GaCYCOfwzLEMDBBAs1zMjRT8n1GH8UEcKQ9MtBw0d+gPJkTBHI+cNZoAAYkGKSmZo2mBHyv08SJmLk4YOZUNyJNbSBiCAWNBqJVjIwhwMczQnmkMZqZzjYdHNjuRAlPIbIIBYkGoadAczo9VUMA9Q26EMWGpE9AqGESCAWNDqb0YsjsZV/1OrCsXXtoCXMAABhKtaxCdGrQKfkRS7AQKImhmDpgAggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQKICal/ja3PzYBjxI2awzlE2Q0QQCw4NOIbAqTmaB7WIUYsmAEggFiwOBI2soY+9PcHKRao3QtFxjC7URwNEEAsOIb+YMMpsNE1NqTeIi369d+h9sDs/I3kaLCDAQKIhcDQH/owCy1HSj5D7fuG5OjfUHf9BwggFgbUkV7kob+PaMMs9Bh7eg+19wvUHT9hIQsQQCxIin8xoA79oQ+z0Gs07x3U/i9Q94Dc9QcggFiQ0iZsBO0TA2J88hdUA73HR99D3fEN6oa/AAHEghb83xgQI72/ofyBGnGGORQc/QABhB71sDFzWHR8Zhj4MXxw1AMEELJDGZES+G+o7wbDrAjYoQABxIKk8Dea7wbVPBNAgAEAs9M57GQmTiUAAAAASUVORK5CYII=', -'w8/buttongreen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANCSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxwfs3wmeE9kPWR4TuQ9R0IfwPhHwZWBhYGTiDJCyT5oVgMSAL5e8mxCyCAGMlJo88Y3js/ZXjHAMJfGH4SrY+HgZ1BkkGIQZpBgEGGQZgkBwMEEEkOfcnwwfkBwxuG+wyvgGH2j4JoZGKQZxBlUGQQYZBgECTKwQABRLRDbzA8d74NDEtQFFMLgJKDCjCMNRmkCDoWIIAIOvQHwy/n6wzPGa4yPKZZRtEEJgQdBjlgwmDC6WCAAMLrUJAjLwMdeBPoUFoDNQYpBn0GBZyOBQggvMUTKCTp4UgQuAVMVlcYHuGUBwggnA4FOtCZltGNPWCeAPEzZ2xyAAGE1aHAstEZ5MOBAHeAMfgCWPyhiwMEEFaH3gMWRNTM3aQAkL33gUUgOgAIICbMwvydM6icHEjwEBinTxjeooQqQABhOPQpsEKkpDCnBgDZ/5ThA4oYQAAxodfdoGpxMIDnQHcA2w7wUAUIIBSHvgFKkVJ30xKA3PEKmGJhACCAUBwKamIMJoCcoQECiAmXxGBzKEAAoTj08yBzKLJ7AAIIxaGgRu9gAsjuAQggFIeCWuaDCSC7ByCAUBwK6j4MJoDsHoAAQnEoqI8zmACyewACCMWhoI7YYALI7gEIICb0rsFgAsjuAQggFIcKAfuJgwkIIrkHIIBQHCrKwAfu0g4GAHKHKDDyYQAggFAcys3AvlcaGK6DAUiD45cD3n8CCCAmTAWC4H73wA7fMDGgBxhAAGG4SIpBaK8ig9iAOhRkvxTawARAAGENOmUG8QErAUD2KjCIYIgDBBBWh4ow8O4F9bMHAoDsFWcQwOjbAwQQzsSoziC5V5tBlq6OBNkHshebHEAAMeHXKA3SSBdHqoPHoHDbBRBABMeefjH8cb4K7GrRcjACFJIgR3IwsOEcewIIIKJH80AjJ7doMJoHSpO4ohsZAAQQSeOjwM6f812Gl1QZHwUVQUrAbAOsfYgaHwUIIDJHnN85g/r/5Iw4S4NHnAXB5TUpdgIEECMl0zdfGX46v2b4BHYuoTF8UIUILPZQqkVSAEAAMQ6VeSaAABoy0zcAAQYAKE7lJiVp97oAAAAASUVORK5CYII=', -'w8/buttongreen2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKQSURBVHjaYpz+YzkDEDAyQAAjGmbAQtMC/MdCI2MGgABiQXMUExQzotEMNHTsfyT2PygfmQZhBoAAYkFSxIzkUGY0PiONQhY9BGEO+wvFMHv/AgQQC1KowRwIEmOF0sgOZqRhiP5Hc+AfIP4NpcFqAAII3aEgPhsUs6I5mJEGjkVOh8gO/I1kD1geIICQ0ygz1GEgR7IjYVYahip6aIIc+BMpX8CTA0AAIYcocrSDHMgJxBxQh6OHKrUdCgvNX0iO/Ick/hcggFiQMggTUqiyQx3JiRaqtHTob6gdMEfCkgE4JgECCF9mYkNyMHr0U9OhsJCDORLmaBbkkgcggFjQykjkookFKUOxYSlzqRmif5Acia20YQAIIBYctRKyg5nRfEeLEGVAClX0jAu2DyCAWLBUk4xYHM2IVvhTu8D/h8VxKJUMQACxYKkeGYnA1ASE7AHTAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAueAStcmBbjTvjsAtMAAcRChCP/ofUWadELRaaxOhYggFhwOBJ5ZO0vUr/7Hw379cj2oTuaASCAWHCMWiCPrCGPYNBypAQ2ivcHi4MZAAKIhQFzABXmwF9ojqTH2NNPqL3IDga7DSCAWHD4DHnoD3mYhR6jeT+g9v9GDlWAAGJBcyTyCBosTf5moP/46E/0UAUIIBYswc+I5Mg/DAM34vwLKVT/AwQQcogyIuVu9DHLgRzDB6dRgABCdyhyev3DMPCzIjD+P4AAQi6e/mLx3aCZZwIIMAB2SgxV6z2ozgAAAABJRU5ErkJggg==', -'w8/center.png':'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', -'w8/chain.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFaSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGcm2KDk52QBICQDxhTlz5nwgVT9AANEzRPuBeD8QG5CjGSCAmOgRmtQAAAE0ZNIoQAANGYcCBNCQcShAAA0ZhwIEEAu1DAIWPwpASgGPEgFKzAcIIBYqejoBiOtpFaIAAcRCAzMfQDEu8IEcQwECiBYOXTh37twGfAqANRPJhgIE0JDJTAABNGQcChBAQ8ahAAE0ZBwKEEBEZyZoOZmAR4k9LR0KEECk5HoFWpaThABAAJHi0FtA3EiEugO0cChAADEOlUEygAAaMpkJIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQIMAJDxG1S5GwfoAAAAAElFTkSuQmCC', -'w8/chargen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATTElJ4Zo7d+43bHLJyckFQKofSegAUK0jPktI1QNUzzpnzpzfyGIAAcSExZF8uBwJBf5AvACIQRYVArEDEQFCkh6g/b+B7uBAFgMIIEb01hN6aAJ9ZwCk5gOxAZKyRqCaBqAcyML9RMYeLj0PoHIL0DUguw0ggDCiHhjk34CakIXWQw1zRDMcBC6gieMDuPSAHD4f6AFQcniAFmicQPd8B7EBAgjsanSMll7+Q0OBZgCXHUAxCZibAAJoUOd6YAi/gLEBAmjIFE8AAYThUEZGxkHpUIAAGjIhChBALFTMELgy3AVgWvtAqfkAAcRCRU/jKk9BRdEBSg0HCCAmbIXsYOxCAwQQNUMUV8F/gRqGAwQQ1RwKTIcHqB2KwHTPD6Q+gtgAATTYc/13GAMggLC1ngaN44H1/C8YGyCAsDmKDUuhr0DDel4AhzhKsgQIIEZsORzZoUANoAZvATWKGBxAAZrGFXE18UAAIIAYcRVFaI5NoGGogiqDBciVAjY3AQQQ41AZdgQIoCFT1wME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAOVBownGMQPHAAAAAElFTkSuQmCC', -'w8/chargep.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJlSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATZGRkxKkhOTm5AUjVQ7kfgDhx7ty5G/CoFwBS+4HYACr0AIgdgXoeIKsj1OYACCCMEE1JSWEl4DmQIw2BFoF8swDJAbgAWB6kHqoH5DkFUkMUIICwhSgjWoiALOpHFgNaeAHK/AjE8UA19njsEIA6jgEpFvqBemBiF4DmFRJyKEAAYTgUqOkXmtB6IJ4IMhDKb0SSA4XoASICBNmhhVDHw8B8oKM3EjIHIIDAaQOGgRpEsKQxohusoPQLUg/E+0nQAwrdBmR3YMMAAYSeRr8MQIb+SIwigABiQov2H4O1eAIIoCFTjgIEEAslmkHpC614ghU7BujpFBhbjpTYBRBALBR6FORIBxxFkgM1QxQggCh16EIgPojEt4c68AFUjmoAIIAocigwOhdgqV7BDgXKNVDToQABNGQyE0AAMaGFiNxgdShAAKGHKBuF5j2AVoUXqO1QgABCSaNz5sy5A0xblKbZBbQIUYAAYsJSNspjETOgYaz6ExMDAAGELde/RuODWkv7gY69QANHKkBbVgRbYAABxIitZQ1sPEsAo/EFUogqkNPYJTK5HCCmhQ8QQDibVUDHsdMzVxNq5gEEECM+n+DrO9HCofgAQAAxEWh0sDAMEgAQQIzEjDjTMmSJHfEGCCAmYg0Dhi7zQDkSBAACiHGojOEDBNCQaZQABNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAJHg35fPzWQ0AAAAAElFTkSuQmCC', -'w8/chemdraw.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE9SURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBALsQrZqk1R2mW/Wk8z4pNHVwOTJySGDgACiIUUxxFjOIwPkgdhfJYTAwACiIkcxxEDkB2KjU+suQABRHYaBBlMrqNx8bEBgAAakEyCLb3iAgABxEQPSygBAAHERK+QwJce8QGAAGIiNbFT6hgYn1hzAQKIhdjEDSs2CCVwYtSQAgACiHGw94sBAmjQV3UAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABBgDw7WZP06/zpAAAAABJRU5ErkJggg==', -'w8/chemspider.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcunfv3n+E1Dx48CCGEjsAAoiFGg59+PAhIz75Xbt2/X/x4gWDgoLCEnLtAAggqoQoIyMjIfn/hNQQAgABRLRDP336JIBLjlBZDJRnpLS8Bgggoh3Kx8f3gVyHUgMABBBdov7Xr18MlEY9QAAR7dDTp0/f2bp1K86g2717N86c//LlSwYlJaX36OJv375VnDVrFlHRARBARDsUaJny+/fvscrJy8v/f/z4MdYgu3DhwmFQaFpbWwuhy33+/NmalZWVKPsBAoiJlOjFFX1qamqBuOTu3r1rw8TExEBp+gYIIBZqpEVZWdmNIAvnz5//H2YxTC3IkdLS0v8pdShAABHtUJCBuAydN28euJx0cXEJ+PfvHy9MPUjsyZMnk+7cuSN44sSJJxYWFjKkZkQYAAggFlJC8+/fvxjic+fOBbs+KSmJcc+ePf++fPkCLzOBjmYIDg5mZGFheXDz5k15IP+1lZWVKEzv5cuXFxPrUIAAItqhDg4OPCtWrPiyYMGC/6AMICEh8R8YWowgi0COBKlhZmb+C3QUCyw0YQ42NzdXAFX3N27ckP/27ds/kD5YDGlraz8kxn6AACK5xvjz5w/j6tWr/4HKRlAIgxwJLBH0xcXFLxLSe+TIkQ/37t3j5+LiYtDQ0Firo6MTQqy9AAFEcoEPCrDIyEhGSUlJePoClq8X8Ok5fPjw56VLl/4HlqV+IM+FhIQwkuJIEAAIIIpqJphDiajrKa4BAQKIbg1naJplJVc/QABR5FD0MhOPI/9R2oABCCAmCkII3sYEZjC8aoGZ5wEbGxtJ5SY6AAggknP90aNH3wGLGUFgpoJVny8sLS0lidELqrmQ+Zqamk+xVQLYAEAAEe1QYG5lBJah4CiUkpIClX9hwGKp/fr168pAx4ItBNVQoEIe1i4AmQ0sfwuVlZUngCoGWJkLaqgAGzE2r1+/BsdGWloawWAGCCB41UgInzp16g7IMnRxYNX4AFQJAIugD7j0gvSBPIFLjhj7AQKI4s4drNYBVZHAOv0/cj0PY4OSSVxcHEUtZ4AAokovFOTYq1ev/hcVFWUAVa+wUAA59s2bNwyCgoJk9w5gACCASGmU/MYl9/v3b0ZQc87X1xfD1nXr1v0HpUVKm3kAAcREQpnJisvQjRs3/gM2SLDKBQUFMVLS34IBgAAiOjPhw6CMAmyyrcElv3Dhwv/Lli3DmmmA3RE+YuwACCCqVaH4GhnAJiEoeWCV4+Hh+USM+QABRBWH0qNfDxBAdOnXU8MzAAFE19YTJQAggKjiUFzpDzk0QVUrJQAggBiHymQDQAANmRFngAAaMg4FCKAh41CAABoyDgUIMACIPoR3Is1ykwAAAABJRU5ErkJggg==', -'w8/cleanup.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADmUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCjiJGRkSE5OdkYyFwAxDpA3Dh37twGmDw9ymKAAGIixpFQcAaIc4HYEIjrgQ4XoGeIAgQQE5GOhIEHwJC8AKQ3AHEAPR0KEEBMJDgS2XEbgdifng4FCCCsDk1JSWHEIgxyXDyyo+kZ/QABhNWhwOjFljtAjlMAOk4BKP8Byk+gl0MBAogJS2iy4nD8ByzRH08vhwIEEBMWB/3Gox49+g1AIUwPhwIEEBMxoYnkCWzRT7PcD3QP3H0AAYQeopxE6Ac5Lh/KXkjL6J8zZ84/GBsggJjQQuwTEfo3wkIRFsJAn9M8+gECCMWhoKoQG8YS/QLA6DdACmGa536AACK3UbIAKcrpkvsBAohchy6kd/QDBBAjMS0fLNUpqDV1H0hNBCUDaOZSBCb+D7RyKEAAUdIeDQS1oqAY5Nh+YKjSrEoFCCBKHArKTKAQdARiQVD0gxxLK4cCBBAlDoW1nkAhuh4aqjQr/AECiOQ0Cm0x9UMdhS2qD0BDeiMwzS6glkMBAogch86HRnMjHi0K0JB+AErL5GYyYJpnBur9C2IDBBBRfSZkzwA1G0Bz+wOgIQ/wWLIBGvL7od0XcgC8CgUIIKKbeWiZCBSq5/HlcmgoFkLNnE9GaLIDzYCHEEAAYctM/4CK2AiYA+s3zSfQqICVCgEgx5JYfKE0NwECCGsahfrmJw6f/odmFkVotIIcXYgvHUIduB4aGyAPXoTqg3noAJp6NqDYL2QxgADCmZmAirmBir9iET8PtTARKVQdoJlrAQEHG0BLC3lohoNlvANAfYmwpAdkYzTeAQIIn0NBGY0RXRNQHLloAmWqCVCH10MdvAHaUDmAL7OhhTaoOjYEqQfxsXkWIIDwFk+wjIXsWKjB+6GOQ25MX4Sy9aEOFoAmEVjSuIBmhgFUHUy9LBCLA9XdxeYWgAAiWI5CQxbk2D9o4gHQ2skBKRpxgQdQzABVD6sYQGIHgXgrEPMA7biPywCAACKqwIf2XZixpR20EBJAC2kY+ICUeS4gRy1QL6j7ww8Ue4HPDQABhLNVjw0DayUmQj0AUgDQPHli7QYIIEZSLYKOonACQ+AbvvYqAQeKgUIZvQjCBwACiJGSEAE6GmQhE7CV/4IIxwlB0/o7cuwCCCDGoTLPBBBAQ2bEGSDAAA4pnbzrsbaOAAAAAElFTkSuQmCC', -'w8/copy.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREc5OTk4WAFIJQOxPon0bgfjA3LlzLyALElOWAwQQC6mOhIL9QPwBiBcC8QMiHQnScxBEAz2aCHTsBmTzCTkWIIAYifENWmiCQjIfaJEhKUEJ1AeyqBEaCwZADHLsAmJDFSCAmEi0DOTIeGgUkgtAekGe7IeaRxQACCAmEhzZD6TqqZExoGnUEerYfmL0AAQQE5GOBGWeAmhIHCTTfaA0rQ/yLDQZnAdisLlA/nxCmgECiNgQNYDm1g8UBCQofQbgkFtISDNAALEw0AkAPTkBSE3AElv7idEPEEBDpsAHCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAix6Ggroc9Fd0gQIwigAAip/W0AdrgXQ+kJ1LoyHxoy+rAnDlz8CoECCCSHQpqkwIdaQht7ZPb4leA0gegLX2CACCAiOrcpaSkKEBb5IoUNp6RuzUfgWY1ENu5Awggonuh0KhWgLbUKXGsAzTKHZH794TcARBApEQ9qMdYCEtXFIAP6I4kBgAEEONQGXEGCKAhU44CBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAT+J+UsQfvtwAAAAASUVORK5CYII=', -'w8/copychemdraw.png':'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', -'w8/copyprod.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACz0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGTHEkpOTHYCUA5FGHJg7d+4BdEFiikiAAGKixJFQYADE9UCsj0e7PlSNAYlmwwFAAIF9QwgTAsBQbQDi+Xjk1wNxASVuAQggJgpCEhlsIBD9ILkDlNgFEEAUhSRaqP0nR45YNwEE0KDM9dhCFiCAhkzxBBBAg9ah6KEKEEBDJkQBAmhQOzQlJYULxgYIIKo4FJirA4DUAzxKLgDVJJBqLrAW+wZjAwQQExUcKQCtdRpxyIPK0IkgNVC1ZAGAAKJGiPYD8Qeg7xfgkPeHyl0A4vnkWgIQQEwUhmYBtNYJxKPMABrtiUCsAKpuybELIICYKHCkATQ0A4Eh9oGIUGeAOjYfmhxIAgABxERButwPshjoyAtEaAGp74eqLQRiUCNFgRQ7AQKIEV+dDiweQFGGzUB/qPhEIuyIRzLDEdQeBToSFMIOQLYhMfU+CAAEECGH7iehUUwMeAB0nCI0Vs6DMhiQn0iMQwECiNQQJSUksYUoKC0rgtI0NPncByUFPCUG3KEAAYTXocj1LTTzwNLlBhLSM3KsgBw1Aa2MXQ9NEhew6BWaM2fOOxAbIICYSMg8oDJwIimOxNJfmoBW8xyAVhTrcVQG8FAECCBic/18aPpqoCB9FuKoJidAK4P16HLA0HwPYwMEEBMRoVkA7ZQlUuDIRgLFGMhsAeTKAMgWRFYAEEDEhGg91KIP5OZ0IJ5AoPHxAZoE6rGFJggABBAx/XpQDu/H18skAiQA9RNS8wHmIaBafiD1EVkSIICo1rmjFgA6khWbWwACiJGQg4jsLlMN4HIPQAAxkauRno4EAYAAYqLUAHo4EgQAAoiJWgZRkCYZiTEbIIAYh8pkA0AADZnuMkAADRmHAgTQkHEoQAANGYcCBBgA62Rb2vGZHX0AAAAASUVORK5CYII=', -'w8/curve.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAslmj9+/KiydevW22fPnmV4/fo1XFxAQIBBW1ubwdPTc7KcnFweNRwKEECM5NT1N2/ePD116lST27dvM8D0MzIygtkwGgaEhIQYMjMzGWxtbRkpcShAAJHk0B8/fnC2t7d/O3nyJFxMQUGBwd7enkFGRgYu9urVK4YDBw4w3Lt3j+Hfv39gh0tLSzP09vaqAkP7DjkOBQggoh0KiuaMjIzb79+/B/MNDQ0ZCgoKgsTFxdfj0zdz5sz/mzdvZvjz5w8DOzs7Q3Nz8wc9PT1BUh0KEEBg3xLCoJCMiIj47+7u/t/Hx+f/qVOn/hOjD4YfPHgwKSQkBK4fxCdFPwgDBBBRIVpZWfn//PnzDKysrAzAtElWBvn58ydnQkLCtw8fPjBwcnIyLFu2jIuDg+M7sfoBAohg8XT58uX3IEeCMkltbS0DubkYGO3fZ8yYocrGxsbw7ds3hgULFnwjRT9AABF0KDAEBUC0mZkZCFOUc/n5+e+kpqaC2cBiDRzKxOoFCCC8Dn358mUgMD2BQzMrKyuIGuUhMI0y8vHxMfz+/Zthy5YtoKSgQow+gADC69Dt27evA9EqKioMhHI3sWDSpEn/NTQ0wOzdu3czREVF3Y6Ojv5PyMEAAYS3ZgLVOCDg4OBAlWqwoaHhP6gMZmKChM+jR4/A5ezbt28J6gUIICYCZSeYVlVV/UANh7q4uICLmr9//8KLRrAjgA4nVBEABBBeh+rq6jKIiYmBoj2JGg61sbFh5OLiQinDQQBYTBHUCxBAeKO+tLSUkYHKAJSMtm3bhtImEBQkXFEBBBDdm3nh4eFBsDQKA6BYIwQAAojuDgWVHsBKA6OFRQgABNCANJyB9T4KH9SyIgQAAmhAHArM/YygdgMonYIAKIQJAYAAGrCuiJ2dHTz6ZWVlJxNSDxBAA+bQuLi4IFD7FJSRJCQkygmpBwggxqEy7AgQQEOmFwoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAEGAEDZZxMiUCdQAAAAAElFTkSuQmCC', -'w8/cut.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADj0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHlUEZGRqJxSkqKAxALoIuTCgACiIVUBxILkpOTA4BUPxArAPEGIA7EZhaxxSNAADHRyJHzgdR6ID4AxBeA+AOl5gIEEBMNHJkApEA4ce7cuYlA2gCIN1JqPkAAMVHTkVCQD8QLgI5cAHS0A1TsAKX2AAQQE5UdyYAWgiCHXgA6+gOlMQcQQFQtnrCEoD0xoUkMAAggapejIIc+QApBEP8gNQwGCCBqO1QfmsthxRMDtUIUIICo7VADpBC0JyV9EgIAAcRCQpFTDy28QeABEBcCHbEBSY0AVP4CUrQfINJ8AagnH0AxBgAIIBYiDJkPLRcXIDkUBNYD5RqBjm1ACk0GIP8AksWNeBzmAA11B5heqMccsekBCCAWInJxAtSABGhowUIOJFYPVAMqMx/AiiKk0ISnT6AaBahjsDkMVJQVAvF8XKEJAgABRChE/aGWG0AL8USoxeuRoioByJ+ApBaWPkFpsx/qWQV0h4FCHilAGqAB0IjLIQABxEJE5tgITZ8LkcQnAvF+qMX80NAAOeYBND3DQlQAqu8AssOQHKgAjal6aJX7YM6cOVgdAhBAhBx6ARpSoNCJR8oc+dDQPAi1BKY2AIo3AC01xJFhHKDFmAHMc1BHLsDnEIAAYsTXzAK1JaEhtwHqgAdIIRUIzTgFQLY8UlL4AA2lQCyOgnkIhC9Ciy+UkMblHoAAwutQUN0LdAioTVkADU1YmfgBarEDWugbIMkLEHIUNoDLPQABRNChSLVMPZJDLkAdfhDKzod6ZgPUAyiZjxSAyz0AAUSUQ4kstM8jZbwD0Bz8AFp0UexQgACiZhVqgORAA2javg9NOhQDgACiikORmncP0JLGBmg5O59SOwACiFohCquV+qHp9QLU0QFIjjWgxAKAAGKhkkPtkRzmCMvdQMd9QCq2kKtYkgFAAFEzjQqgRT8IfISWAh+Q5MkCAAHEQigHEpnzHyCF3HxgSCZCHQhLBg746nFCOR4EAAKIhRjNRDgW5Ij7UEcpQNkMSPwHyG1XUh0JAgABxERJ2QYD0LIyEalC2IBU+Augj5KQaj4IAAQQIykjzoRCFtoaykdy8EZoDfWBEkeCAEAAMQ6VoXGAABoyw44AATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAZmIvcCRG00MAAAAASUVORK5CYII=', -'w8/delocalized.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFkS5KTkw1A9Ny5cy9gkyemvQEQQEx0cuR+EAayFZDFgTiBWHMAAoiFltEFdRjIkQJADArND2iOFwCyQWIbCJkFEEBMtHQkMKofQB0BcqQjkP8B2ZFQ8QPEmAcQQIyktEeJjXokx2wAOi4Ri7gAsuOJcQNAADHRICSRHWNAyJHEmgsQQEw0dCTYMdRwJAgABBC1QzQe3THUcCQIAAQQCxVDMh7ogEIg+yOQPYGajgQBgACiODOhOaYQ6JAJpEY3MW4ACCAmKqfJBdRKk+gAIIDIDlFoYX6eGmmSGDcABBATmSFJbGFOcUjCAEAAkRyi6IU5kC9AqSOJcQNAADFRkCZhLSKahiQMAAQQqVH/DUojF+YKtHYkCAAEEEkOBTrgFpAyQnMMiH5AS0eCAEAAMZI6SIajLBWAJQNyHEGMGwACiHGojOYBBNCQ6TMBBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYACjl3l/XY/YnAAAAAElFTkSuQmCC', -'w8/diamond.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMUExURff39/7+/h0dHfn5+fv7+xsbGxwcHAUFBe7u7o+Pj+Tk5Ovr64mJif39/SwsLOLi4hQUFJubm8jIyAMDA8LCwjk5OePj4/j4+DExMREREenp6fLy8lpaWvHx8dra2j8/P8rKypeXl9LS0urq6vr6+q2trRYWFqioqNfX187OzgkJCfT09ODg4NDQ0GBgYMbGxnFxcU5OTnBwcC0tLYeHh1FRUVBQUMPDw5qammdnZzg4OMDAwI2Njd/f3+jo6JiYmBoaGr6+voGBgeXl5UtLS11dXRgYGCcnJ6Kiov///yMjI5CQkLi4uLS0tLCwsCkpKQ4ODtjY2C4uLiUlJcTExEBAQDAwMKOjo+Hh4YWFhUFBQYiIiFlZWezs7BISEjU1NWJiYlJSUh4eHvb29oODg0VFRUJCQqWlpba2tsXFxT4+PkdHR5WVlczMzM3NzXJycufn5zY2NjMzM35+fiEhIVVVVSQkJMvLyygoKKCgoISEhGRkZO3t7bW1tVxcXF5eXhcXF/Dw8Ds7O////w7LLyYAAACEdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AJfSNr4AAAHSSURBVHjaYmgmEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCItC2fwKIUYMUYAAwlCoouDPZ6hVzI0uDhBAaAo9FdICDLh5RfiYqrRRZQACCFUhi6pAqDkLkCHFyVbHgSIFEEDICnnLs5l8maGcWCsmTmUkSYAAQlJoyxPXpIngKvMwBfkww7kAAQRXyJjOFKyK6hCpBC1LuP0AAQST4vd2SxFD9ymzo3GYNVQFQABBKG37JAcNbMHMrccepQQOVIAAAiusTa3OKMAeISx5ivEmIAZAAIEVugqbauCKOml1NT4QDRBAYIUqIvKSThzYlPGGSLDy2IFYAAEEdaq4n5eoLmYEy0azyzhDmAABBA8QrhhJzgi0WNMvdM8Vh3IAAggRcgzqJayCyAEpZyacyA/nAQQQsgyXoEA9XIZZUU1UCEkWIIBQ40Iui60yGcwSK22wkEaWAgggtGTWaCMgr8nSzBXJKhGIKgMQQOgJl1HJhd3Io4wtpwZNAiCAMLMCQ6ZMUbgOhjBAABGduQACiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGABSZ8Qt0ZCFNAAAAAElFTkSuQmCC', -'w8/double.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF6SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDqemIxOSA5OdkAiPsptR8ggFhoGQggRwKp/UAsAGQ/nDt37gSoeAKQygdiRyD+QIxZAAHERA9HAvEFIF6A5Mj5QAySLyDWPIAAYiQlShkZGcl1pCMwND8gORIEFgDFEom1HyCAmOgQkjgdSYq5AAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAFEaoj2D4QjQQAggEh1aCC0cQF2JFRMn9aOBAGAAKJKexQaqjS1HyCAGIfKIBlAAA2ZrghAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAMXkoC4WzeV0AAAAASUVORK5CYII=', -'w8/doublearrow.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqUExURdbW1lRUVAYGBtXV1V5eXlVVVQUFBZ2dnZycnAAAAAEBAWNjY9fX12FhYf7+/qqqqs3Nzdra2gMDAwcHB+jo6F1dXQICAn19faurq2RkZEhISCwsLDExMdnZ2WVlZdDQ0DQ0NNPT0xISEhUVFbq6uqCgoAkJCfb29iAgIEpKSm9vbz8/P/n5+cfHx6+vr+3t7f///6enpzIyMklJScDAwC0tLe7u7np6eicnJ9LS0mhoaPLy8nd3d76+vqmpqVhYWFNTU8HBwXx8fBcXF4qKira2tvT09Pz8/EBAQAQEBGJiYoaGhiIiIv///4IDuQYAAABOdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////AKxN+84AAAGUSURBVHjaYvAlGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECCK6UT5EBDHhAmIcBAeR1oCoAAgiuVEJImAkE2ECQjY2JCcoTFpKEqgAIILhSdmNZBgZmEGAAI2YIj0HQwwGqAiCAEEp5cTjRnhHKAAgguFIOFhxKGWFKAQIIYSpBpQABhDBVlJBSgAAiwQEAAUSCUoAAIsGtAAFEWCkrK5QBEECEHQBXChBARCiFOQAggIhwK8xUgACCKFXx8lVl8XW1wlCnbgnylrsAiA0QQBClupz8ety+ypoYSg3FrEVZfbktQGyAAII6QNzZRstcyQxDKZ+MHC+viZgdiA0QQDC3SnH5cDlicambkYK2mhOYCRBAMKWCnpzcWH3lzcmlwQdmAQQQPAS4ufSxKhXg5OSHsAACCK7U1gV7WBmYSkNZAAFEOMeKiEAZAAFEQuYGCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEGAD9SeQt6RnK8wAAAABJRU5ErkJggg==', -'w8/down.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4TpAZKTk9nwuQEggFgGOqCADlQAUvOBOBaIn+BSBxBATAPsyAQgdR6IJ86dO/cJPrUAAcQ0gI6cDw3JBUBHbiCkHiCAWAYoqj8A8UEgNgA6spAYfQABxEhMZmFkZKRmVPcD8QMgdgQ68gN6xsYFAAKIhU6hKAB1YAJUyACKDxBrBkAA0Svq1wOxAxK/ERiaB0gxACCAaBr1wJAMgEYzCOwHYlDIHgA60hFXmY4LAAQQCx2iGpQOHaEYFLKB5JgJEEBUD1GgIw2gxY4BkvAHaOa5QKiWxAUAAoiJyiGZAI1iAzQpASxiJAGAAGKhYlSDMK4Q2wAMzQWU2AEQQExUcKQBNBTPQ4UcoVENAyDHJ1JqD0AAUZRGgY4sgGYalLSIlMsZiEmbxKRRgAAi26FARzYAqXosypEda0BKlONzC0AAkexQaFQrQGuV/TgyCcixhkBHPiC1bYwLAAQQE4npsQCaFkHlYQA05LBF6wO0dEoxAAggFhJy9Xyo42BgPlLmQQ5ZkAMD0RsclAKAACK2eCpAcyQ+xyaSGuXEAIAAIjqNQhu6CTiUgIofUOM3gJLyEp9bAAKIpMxEwLGBxLTUyXUoQACRlJmADgGF3AIcufwAAw0BQACRXDPhcCzVMw86AAggsqpQNMeS3AgmBwAEEFEDELjSDrS1RBd3AAQQ41AZGgcIoCEz9gQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAAQYAQ2Ug5wgQDD0AAAAASUVORK5CYII=', -'w8/dreversed.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKjSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAulBnz+/Lnh7Nmz9WfOnGF4+fIlw/v37xm+fv3KwMjIyIBcPYP4IAATW758OSMp9gAEEEUOvXXr1v/JkyczvH37Fu4AmINgbGTHUtKuAAggshz69+9ftk2bNv1ct24diM2gra3N4ODgwKCurv6Oi4srDoi34tIbGRn5H9kzxAKAACLLoRs3bvy5Zs0aBmZmZobo6GgGb29vRlqnUYAAItmhjx49+g8KSSYmJoba2loGNTU1khyJnhyIBQABxERqlM+dOxcc3QEBASQ7Ej1jkQIAAogkh16+fPknMAMxSEtLM/j7+wuTG43khChAAJHk0Lt374JDw9LSkoGVlfUdPctRgABiIjF9gmkFBQWKLCUn6gECiOQQBQElJaUL9K6ZAAKIpFz/+/dviCYWlo30TJ8gABBAJIWoqqoq2CJgyNbTO0QBAogkhyoqKoLphw8fUpQ+yUmjAAFEkkNhmej48ePgMpWeUQ8QQCQ51MDAgF1OTg4cotu3b/9JrxwPAgABRJJDgXX7r7S0NFBmYli1ahW4OqVXGgUIIJIbzsrKyoxeXl7gEqChoYHhwIED/+kR/QABRFYLPzQ0VBjYYmL4/v07w6xZsxgmTJjw/+rVq/8/fvy4hVZpFCCAGClpzF64cOH/9OnTGT59+oS1RY+thQ8Dy5YtIymxAgQQI6WjeaBQPHz4sPe5c+fAVey3b9/ADkR2KDY2qV0RgABiHCrDjgABNGR6oQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhV7qdwMl/9MAAAAASUVORK5CYII=', -'w8/dshape.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK0SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAupGiIjI8F1LiMjI5iPXAWDxEB8bm5uBkFBQQZxcXEGExMTBmNj40ZeXt4GShwKEECMpNb1MIciOwzd4ejiwsLCDLm5uQxqamqM5DoUIIBIdmhUVNR/kJ7ly5fjtPTbt2/eQLzo5s2bQgcOHGC4evUqAzMzM0NQUBCDn58fO5D9i1SHAgQQCy3SExcX11YgFhYREWGwtrZm2Lp16/8VK1YwrF69GhTSP4EOJjlkAQKI5MwEi1pSgLe3N2NtbS0DExMTw7p16xgePXpEctsSIIBIdiipjoQBUPoMCAhg+Pv3L8PcuXNBNBsp+gECiKwQJRf4+/sLS0tLM9y6dYvh8uXLP0nRCxBAdC1HWVlZ31laWoJj5e7duyTpBQggukU9DCgoKIBpYDolSR9AANG9ZlJSUroAokkNUYAAIiuNUpJOWVhYNoLo379/k6QPIIDoHqLAkKwHeVRVVZUkfQABxELvNPrw4UMwraioSJI+gAAiK0TJjXpQ2Xn8+HGUTEUsAAggshxKbqhu3779JyhE5eTkGAwMDNhJ0QsQQHRLo6Bqc9WqVaDMxJCWlsZAasMEIIBYyIl2UkMU2IL6v2jRInBOB7aeGJSVlUmOEoAAYqFVGv348eOWJ0+eeO/evZvh1KlTYD3AxglDaGioMDl2AgQQ2bke1C7F1cJH5/Px8TFkZmaC0iXZRQZAAJEd9cgtePQQBokB26PgTGNkZMRga2u7lZ+f34eSNA4QQIxDZdgRIICGTC8UIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAB49tbChjfEqgAAAABJRU5ErkJggg==', -'w8/dummy.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKMpNTWVZD1lZWUGQKofiANVVVU/kKofIIDoEqJQR+4HYgeoY0kGAAHEREdHCgDxBSAuJMccgABiorMjHbu6uj6QYxZAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAkRui8fR0JAgABBBZDgU6rBDauKCLI0EAIIAYh8poHkAADZkWPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAHVBdbh28ks8AAAAASUVORK5CYII=', -'w8/e-br.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB+0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqiElJaUBj/QDID4wd+7cB6SYSUx7AyCAGEltlAAdSoyGA0AcCHTwB2o5FCCAaBX1DkC8npoGAgQQpQ5dAMSOUDwB3bHJyckG1HIoQACxUKj/ITB6D8CiG+gwEF2AJC+ATzNQPSjkQcnjAiGLAAKIhYYZFe4AoINAGbAeSU4RiPcDsQI0PTsSMgwggKiWRoGOCQBSCUhChXgy03yoI4kGAAFEaYjWAx1Yj6WIAjlyA4HM9gCKiSoZAAKIFlEPCql4oAceAB2LK+1tAMoFwjhz5swhaChAAFEa9Q+gaewAWoYAJYP9eHJ9I6kWAQQQpSG6EBgyDWi5eD9Sju/HllHwhDROABBAVC3woUXVAbS0SBUAEEBUdSgwRAVIzc3EAoAAojTq5aHRDctE+WgO3UAthwIEEKUOTUArO9EL/EZqORQggGjVKAFlFkdyMg0uABBA5IRoI4Fq8wAWBx6g1KEAAcQ4VAbJAAJoyHRFAAJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAANuEaTpkv5WxAAAAAElFTkSuQmCC', -'w8/e-c.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB1klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQopmRkRGFn5ycLACkEoDYH4gNgFgAKvUBiC8A8cI5c+YsIMcugABioZaPgY4EObAfyXHIACTmAGWT5VCAAGKhoiPn0zLqAQKIiQqODMDiSFCoGc6dO5cRhIFsRSBOBOIH5NoDEECMlLRHQWkU6ND7QKYCknAi0HE4o5dc+wACiIkKoYnsyAX4HEkJAAggSqPeAI2/kFZpFCCAKHWoPTIHGJoHaOVQgAAaMgU+QABR1aHQAp8mACCAKHXoBTR+AK0cChBAlDr0IBo/n1YOBQggihwKzDwb0ApxA2D0r8eVBIDiDuTaBRBA1KhCC4F4PVr0OwAdBfLEQ6iYPrSuByUVskoGgACiuGYisa4/AGw9OZJjF0AAUSXXQ2sjRyyZCx2QXdcDBBBVQhQtHRpAaywFtNLhAtBDD8i1DyCAGIfKIBlAAA2ZmgkggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAbpRYRsxEFnEAAAAASUVORK5CYII=', -'w8/e-cl.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB6klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALqRoYGRnJtiw5OdkBiXt3zpw5j4nVCxBALNTwLdABAUDKAIjtkYQfAPFFIN4wd+7cB1Cx/UjyjUDcQKwdAAHEQgUH9gOxAh5lAqQ4CBcACCAWChyZAKTm0yuNAgQQCxUdeQCIF0KjnAGaFPyp5VCAAGIhw5EC0OhGBonAdLgAi8MnQNVTDAACiJziKQGa7uCZAosj4QAo94EaDgUIIHIcih6dE+iRRgECiByHGiCxL1ArxAgBgAAix6HI0f6BXrkeIICGTBUKEEDkOPQBEtuBWrmaEAAIIHIcegBLKUBzABBA5Dh0IRq/Hq2xga3cpRgABBDJBT4wlx8AWg4KVQekzLUfKAYqSzciZTAHaFG2kRp1PUAAkVvXB0JbQgZoSQBbMthIjRAFCCCycj207HQENeHolesBAojs1hPUsYHAKFeAhqQ+Whl7EFohbEBrg+LKlHgBQAAxDpVBMoAAGjIFPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABdeFObdlH8zQAAAABJRU5ErkJggg==', -'w8/e-f.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABPUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQw5CUlBQHIOVAQNmDOXPmLCDXDoAAYqGSh0GOrCeg5gAQk+1QgAAaMlEPEEAsNDLXEYvYB0oMBAggmjh07ty5B7CJA9Mo2WYCBNCQiXqAABoyDgUIIJpEfXJy8n4swoVAfIFcMwECiFaZCVuZKkCJgQABNGSiHiCAaJXrGamd6wECaMiEKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADEOlbEngAAaMiEKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAANfkaO5puRsIAAAAASUVORK5CYII=', -'w8/e-h.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFASURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCrMSUlJQFIxcP4c+fOdcSmLjk5GUXdnDlzHMmxDyCAWCjwpAIQO1BRHV4AEEBDJuoBAmjIOBQggIaMQwECaMg4FCCAWKhlEDB3N+CQsqeG+QABxEJFT9fTMkQBAmjIRD1AAFEzRBvxRD3F5ShAAFHNocCaqQFP2qXYoQABNGSiHiCAhoxDAQJoyDgUIICGjEMBAoiSzPQAiA9QUR1eABBAjENl7AkggIZM1AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAArGRoCgceFHgAAAABJRU5ErkJggg==', -'w8/e-more.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFVSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaUlJSBIDUeiB2AOIDQBw4d+7cD8nJyVjFQXqAcv1AqgCIH4DE58yZc4FUewECiJwQTYA6hgFKJ+ATBzrSAOpIEFAA4npyQhQggMhx6AccfFLFSQIAAUSyQ4HRuQBINUKjtxHKxycOjm6oOEiskByHAgQQ41DpLgME0JDJ9QABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAD6njUQCJ93TAAAAABJRU5ErkJggg==', -'w8/e-n.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJcUBSDkgCV2YO3fuBmxqk5OTUdTOmTOngVT7AAKIhQJPgiyuR3OQItCxD4hQS7JDAQKI2lE/n1ZRDxBA1HaoAzBUC2jhUIAAokVmqgc6VoHahgIEEDUdegFKCwBxP7UdChBA1HRoIRI7ABiqAdR0KEAAUc2hwNx+AEhNQM5YQMcKUMt8gACidhptBOIHtEgCAAFEVYcCQ/UDkEpEEkqAFvYUA4AAonquhyaBBWhlKz+l5gIEEK3qelDG+gBlg4qqBEoNBAggmjgUSxKgOFMBBBDNWk/QBsoGapkHEEC0buYlIiUBigBAANHUodAkUEgNswACiJJm3gEiHbsAWvBTlE4BAohxqAySAQTQkOmKAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKECAAQBtij5pF1H3lgAAAABJRU5ErkJggg==', -'w8/e-o.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRFDLDk5WQFIJQCxPhALQIUvAPHFuXPnLkBXT2obAyCAGMlplCA7FOhAkKP6oY7EBR4AcSHQwRvIdShAAFHkUKgj9wOxAZFaE2GhS6q9AAFEaRpdj+ZIcMgBsSMQBwLxBjT184GeMyDHIoAAYiHXhUALQVHtgCQESo+OwBD7gCS2AaiuAJo0YKAf6hGSAEAAURKi+Wj8QDRHggFQbAI0pGHAAZrxSAIAAUSJQ5Gj8ADQQQ/wqF2IRy9RACCAmMiMdgc0oYMEtByg1KEAATRkCnyAABoyDgUIIHIdegGNb09AvQOBpEAQAAQQWQ6F5m5ScrI/AY8SBAABREnUo+fk9dCaCj3jFaBlngXYijFCACCAWChwKKh8jAdiBaScfB7osEZoaAtA5QOQ9IAc2EiOZQABRGldbwCt6wWI0PYBWnNdIKeuBwgginI91FJDIjLHBWRHkgMAAojiZh5SWjSARrM9mgMPIjfvyG3mAQQQ41AZJAMIoCFT4AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAaB97DjfssUAAAAAASUVORK5CYII=', -'w8/e-p.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABhUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQakBKSooDkHLAo+TA3LlzDyALkNO+AAggRkobJUCHNgCpegLKPgBxIdDBC8h1KEAA0SvqBYB4fnJycgK5BgAEEC0c6gjFgaBoR5OrJ9dQgABiobYr0dLjBmAo7kdKwwpAvgGQvkCquQABRI+oP4glGZAMAAKIHg7lx5KxSAYAAURThwKjGRTlyBnoAzBpXCDHLIAAYqGB4/YjRbEBmnQhueYCBBALDQISV+HfCCtHyQEAAcRC4/R5AYpBjnxAiUEAAUSL4omRFj4GCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAokZmOkAPhwIEEONQGSQDCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAFp86yv0Qrk0AAAAASUVORK5CYII=', -'w8/e-s.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB80lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQagAjIyOcnZycHACk7IHYAEnJAyC+CMQb5s6d+4DctgVAALFQw7dAB4Icth6IFfAoEwDiBnLtAAggFio4EuSA/VCH0AwABBA10mg9miM3ALEiMJoZQRjIdgTiCUD8gRJLAAKIkdL2aEpKCig0HWB8qONwAnLtAwggqud6YFJIoEXUAwQQNRy6EY0/H+hYEFagpkMBAogaUQ9Kn/dxZKYFQDwRmBwuUBr1AAFEcYgCHfEBmmEuYJEGJYPzwNDtp9QegACiOETRCnyQw/LRCnwYaAR6qoFc+wACiKoORXIwqBTox+JgwTlz5pBVTAEEEE3qemDIHQBiQyDzAJqUAblmAgQQExWKI3yWH6SW5wECiBp1fT/QsSB6ISgEQQ0PtPSKDC6QawlAAFG9ZsIDJgA9UUiufQABRK/2KNiRlBgAEEDUiPpAIA6ANvHskcQ/QNPoBlhyoAQABBDjUBkkAwigIdMVAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwBCfHWu21mhXQAAAABJRU5ErkJggg==', -'w8/edit-icon-off_0044_vector-smart-object.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3QzY4NDk0NUNGMjI2ODExODcxRkZDMURBRjJFN0U0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NzZFMkFFMzZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NzZFMkFFMjZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgwNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdDNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VylN+QAAA7tJREFUeNq8WNFx2zAMlXz+rzpB1AmiTlB5AssTRLkMYHsCxxPYGSAXZYLEE1idIO4EVjbQCAV6jz4cS4mQrAh3PJ5lEnwEgQeQYTCQPDw8xNTF1uf6+fn5NIT+8ApgCXV31LhPPcNPaAcC/j4KUAKYU7dxWQ9gpMQN4wpqTwS6GhyoAyAvyNY5UCtp0bplLlt8Ti2z5j9R27fNVQOlRSLq3sTxshW2DFKzgEMfg11a+hY+Xw4VfnikFuHTlhQ+DhR8DPhF6L4n3UVnoBbIExSdggEFp/UCl2gFGypBzvoccwfADDZvAxs27PI8FsgGsLxmKf+fOOa8jQ2Shda5B239wwCDuYGCglJxBKOAFLKGgRjkznn02MEHeK5TdCN9ZuBKQ/IluPLQhcrAuUfbBaRFcyxQaUHy5uBb7NO3IPAFte/g2t9Is2cat5InR+2twQVK4QIb830qxiwNV3bI9UdY7ocjHZZoe1jphfpfAL8R/OmSLQyX8mmx7olYNBZpUQtyTUoWvpwNK/3EGgxy5hlfCRy5tOgdeq8vwR8NyMKRbRJZC5hNQO9PYyHqffY4CL9/ND6aij99skERUkgLUztbkXoL39w5rKURY1HWHRmLJsKvfNbMESy2GzBT7K3x7GtH6j/t/xS8WtO8E7AlEyxkqnEfhfBRFNa4HWpLF5AUQVP25FVTWyRTEX2agoPHxrQ5Q183rIRAzlqqIybxCJHfVT7NutOeOzTyB9zpkgSWnKMFDvpSy7Sj37xr6AtjB6lbewG10pszV7t8Fel5ZVvUrpC0QOMrN120RPZKpkPBsz6g3y7Vk9jVNUDfUaY1ZbFlTx+90OZEXLCCnpEZICdnLa4SOY5dwzKXC+BU7C5HdPbhvAjF7knMT4VFXEWH5vIXoJq7AD0AaAbe6ytJCzgje2UQzaWLTATt1CDzTBM4fAPoGXBrhTUjcTN9tQvnwqpL2xYzN8WF8W+P1LjaaDe3gjtVxvqhVXCc8XPR5TELd625yO0ysg+O+sBX+HxAz+XqHFqDHsF3Nar2sS93Aa4oGZhh1nRd3uMozQvG2CBXwjfXvgeIBKa/+ONIIHNhnP9ScaiY9OVgNeuF2snYZf1Fx73zGSXssNMKUVgOBDAGwExzcpqH3FS8Rxnrbrs8azeUfEuhc+27U4UdlO/Ea5vhyFftcw0ynnkej4SOtaZACTtaIwHPZo4rSoWriZQblI+pY/xT2wvzVUAdj2J3iiIkED7O2e61z8t1OFBgmJIuaiiQq74+beSvAAMAjAjeZOJgWvkAAAAASUVORK5CYII=', -'w8/either.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACQklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKqBkZGRIguTk5MdgJTq3LlzZ4P4xNaMAAHESEoVSgVHKgCp80AsAMSJQMcuINaxAAHERC9HQsF6qCMvAPEGUswGCCAmejkSGJr9QMoAiD8AcSAwND+Qoh8ggFjokRGAjkwAUgVQLijKH6ClWRA4gM8MgABioYMjQaHYD+VOADpyA5ID64EYRIMcrojPHIAAYqGxI0HpcT40XR4AOrIQzYEMxIQmCAAEEK3LUeR0ORHoyP1Aej+SI0G5XhHogURCBgEEEFHFEzmZCeioAqQo/wANVQYkBzYip1VC7gAIIJo4FJouz2ORwnAgsQ4FCCAWGqRLB2i6JMqBxAKAAGKhsgPRMwnFDoQBgABioZEDQWnSEejAC9QKCIAAYqHAgbDy0QGLdCE1HQkCAAHEQoYDFaAhmIBWDsKLHFhjg5oAIIBYKHQgOA1CGxsM0MZGIS0KZIAAYiLSkaBcfB/JkcgFdT4ljQ1iAUAAkRr1KLkYX2OD2gAggIh1aCN6MYOrsUErABBAZNVM0MbGfmiUgxobjpQ6hJA7AAKI3EYJSiOYHm1agABiItW30HQJy1SOtMo86AAggFhIiRpoElgNxPZAfJFahToxyQ8ggBiHykAuQAANmQEIgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAyCa3Fu172m4AAAAASUVORK5CYII=', -'w8/electrophoresis.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAB1UExURX9/f/7+/v////v7+35+fv39/ePj45OTk/z8/PT09I+Pj/X19fj4+Pb29unp6fn5+ff3946OjvLy8vPz8+vr642Njfr6+ufn5+Tk5O7u7oODg+3t7ZKSkujo6JSUlIWFhfDw8Obm5uzs7IaGhpCQkO/v7////21b5MsAAAAndFJOU///////////////////////////////////////////////////AINWl9kAAAHXSURBVHjaYlAjEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEEUcjAwMDCAGKiUTBhIAAIIKhCNhElERYIA5WCCAMBQABBFQozM/MzsAC1c/OgUCBhiEKAAIIqZGRkFBOWlBbiYUWhGBlZhaAmAgQQVCErExNQkIODEY1iYhSAKgQIIIhCFk6gGHbACLUaIICgJgogFEoJCoqKCrFCKbhCgACCuRGmn5mPnZ1dhosHTAlyMDJyQhUCBBBcIauQqKigoBQrLx8bG5uiMIiSEOcFuhGqECCAoAo5GRk5BGWApvDx8/Nyc3LziEEoVkaY1QABhHAjr7gEGxsfL7M8FxCoQigFDrhCgACChyMrD9AEXh5+WXY5dnYVATDFheRGgACCK+RQABmhzIziRm5GuBsBAgjJjVzsQFNk+Xl4OSFu5ERxI0AAwd3IyA11IwczEHCwgilWRng4AgQQihs5efmBRiADJrgbAQIIHo6MrGCTGNHiEu5GgACCJ1xgsmKBJFR0AFEIEEBEZwWAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIMAAGlSxagor51UAAAAASUVORK5CYII=', -'w8/ellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAfaSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCz7Ja9eugWlmZmaGe/fuMXBycjI8efKE4devXwx6eno8Hz9+VAOqMZeWlo68ffu27ZcvX36D5NjZ2Rl4eHhYlZWVjwHVL9XS0joF5N+8cuXKZzY2NgYJCQkGoFoGbW1tBkVFRYa/f/8ycHFx4XUoQACxkOozULkLNNTw2bNnlZcuXbIA0kJAx3L/+/cPJMcKohkZGRmYmJgYHjx4YAXk638AAh0dndNAj7b9+fPnNDkhChBALKQ4kIWFhYGPjy/z3LlzOS9evNAE8hn5+fnfCgkJ3dTV1T0iLCy8i4OD4/OPHz9437596wYMQRsgLffq1SvpXbt2SYuLi2sZGBjMBOqbAjTvFykOBQggFmIdCYw6hTt37tRfv37dGxhAokBHvVNXV+8GWrrjzZs3X4H890CHvAElj+/fv4O0nQRGsyAwiXACo9bl1q1bJUDPqR0/frxKVVXVVEZGphqo5h6xDgUIILwOBUUhCHNzc7MAo7jxwoULEZ8/f2ZzdHTcCnRU1/v37y8A0+Only9fgtMZMFrhGMh/A8JADzL8/v37npOT06nnz5+X79271wcY0qFAff+BaTQdaM1nYhwKEEB4HQqyEJQ5nj59mgx0ZBjIkaKiopuBIVnCysp6C2gxODngAyAPAJPCFxERkSMCAgKvgDHyDxiyfhcvXgyVl5c/C8S9QI8QdChAAOEtnkAZAwjMjh07lg8MNQ5gqGwG5uBioMW3QIaDQpsYAFIHUg/SB0zLJS4uLhvfvXvHcuTIkczHjx/bADFBMwACiImABfxAB+Y8evRIU0pK6qmNjU2HoKDg7Z8/f4I9AQpxQo4FyUOTAsihDMBQvW1ra9sCDMn7wCJPGZhm84B2CBByKEAA4XUoMBTUT58+bQssav6bmZnNAEbzVV5eXlDOB5d7YmJiYEcQSj7A9MwALB0YgKUDmAaWDNetrKz6gZnt9+XLl82BntAk5FCAAMKbwIC52xCYDiWB6esDsGDeBMz9H1VUVMClAKicBBXsQI/AkgjWpAMKfXNzc1BIgkMVmkG/AnP+DqBHq4CZVAKYKc2Byo/jcwtAAOF1KDBKYoCOYgcWPdeAmerrt2/fwJaBowLoUBAfVNMASwUG9AY4yJGgHA8MPXAtBKrdYHpBbGBs/QXWUA+AdoAcmgAUnoDPLQABhNehoIQOCgENDY3DwPT1EZjrMdKfpKQkA7AKRREDORpEg0ISRIMciq4XWGq8ABZPS4G53+Lhw4f6hKIeIIDwOvTr16+/gSHDCiySdgPT2VtC6RHkQFhRo6CgAA51nBazsHwDOvY8KOSBniBYPgEEEF6HgtIXyHJgbfMeGL3/8TkUVgStX7+eISoqCpwk8PXHgI4EJYvvIDWgJEQIAAQQXoeCLAM5ABjt/CDD8DkUlrlAAFRJwEIYXxkNVAfWAKp2CQGAAMLrUFBT7fXr1wzAutwBaOgJYIi9Qw9FkANBoQPLODBHA2sfcOaBlbfojgbq4QI2E41AGQtkDyGHAgQQ3nIU2HAAFxk3btxwAvpaEMgHZx4QBlYA4HIRWIQxXL16FWt6PHv2LKj6BZedIPWgdigIgzIf0FPiwOZhFMizwML/BiGHAgQQ3hAFFktLgJQRMFQVgMmAC9a4hbU5QSEJCjVQskCvoUAOB2ZGcDIAFV8gDNMHwkA9rMAyWgko9gtYxs4j5FCAAMIbosDq8iwwBF4Co17w/v37nkDLeYE0Ayg5AKONAdjsAzsWV+4GiYPS+c2bNxmA7VIGUCMG2BMASXEBzXEFJg9hYInyEljTHSPkUIAAYiKQmW4YGRkdA4Ya06lTp7KAaU0LViaCSgSQg/EVQdBiiAHYcAaHLiiZQPWqA+v4QmBoswIbOaeBIXyVkEMBAoiJQLn4EVh9TgamzdvAtCYPbO1UAS1TBeVuUPQRauIh9wxAHgLlbmBMqBw6dKgW1CABVsuPLC0tJwHT7wdC5gAEEDEN52NAw6YC01Q3sNHrB8pIwJqqBGj5bWLHrUDqoElEFdgI6QbWeP7AdPkX2DCZC3TsQVDsEAIAAUSomQfOBMCGyGxgO3I1MCT/AkPWD9j47QVGuxUwhDhBxQs+AJIHKuMAqrcAlg49IEcCHf0H2NlbA8ztU0HdFmIazgABRDDuQDkVaNg3YKKvAxrODMwMrvv37/cFtnwMNDU1O4CWHAQ65gcwhJ8B8XdYkgBikCekgGmSA5i2bYBFVRmw66wE9DioBbYTWKJUAc19S2yfCSCAiO6FAqP+LjCaEoFlZy6wm5wCzLGqwJw8FVgyPAc6+gEwwywFRuE5IP4DzN0soMIcmFmigT1WBWDrSBIUvXJycg+Bnb1FwCTQC8yUH0nphQIEECO+dAbsJ8FzLqhYAWUiUI0D5JsBo7MGGJUmQEfxA0OOC1YLgdIiKCpBmQekD8j+BmzQfAY2Us6ampo2A0P0BLAEAScrYI4HJStwWQxqkOMDAAFE8gAEyAJglJ1SUlKKATpWHVi7WALTWhKwO6wPagWBCn9QTQQsG1mBjePrwDQ5S01N7TjQAzeBofgBVmKQCgACiHGojDgDBNCQGSQDCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAzNXPdBj1swMAAAAASUVORK5CYII=', -'w8/eraser.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIZSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFotcnJyQlA6sHcuXMPYJMnpVYECCAmGjpyPpDqB+L1UAdTBAACiImGjgwAYkco7qfUsQABRPU0iuxIYJRfAGFqOBYggJho6UiYODUcCxBATLR2JLUcCxBATPRwJDUcCxBATPRyJJpjC6ElAtEAIICYKHRkAymOhOoxgDpyASl2AQQQEwWOBFlWDyrQoZhYR+4H4g1AjxWSYh9AADFREN0O0CgEWw4UEyDBkYmk2gkQQExkOtIAGt0TgHQiIcdS6kgQAAggJgoc+QGaORbgcyw1HAkCAAHESGzDICUlBWTheSBWBFr4AEcDBOSRCzCPEHIkKY0SgAAi2qGguh5o8XkoFx6ieBw7EZq7cYYkKQ4FCCBS06gjlMaaHtGSwXyYI6EhSxEACCCSQhQaagLQ6MQaskjRnQiU24AUyqCMdxCqDJR0HObMmTOBWIcCBBDJDWdo2nOEOuY8kI2eXg2gIbkByVEXoI4EyclD2f5QxxMFAAKI5BBFCz0HLEo/EFtLkZJGAQKIcagMkgEE0JDp3AEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA1r7eGSjo9EUAAAAASUVORK5CYII=', -'w8/find.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==', -'w8/fliph.png':'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', -'w8/flipv.png':'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', -'w8/fullscreen.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABEklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQACxEKuwvr4ea5XT2NjISAt9MAAQQIM+BAECiIVUDcT6HJd6XCGKCwAE0KAPQYAAGvQOBAigQe9AgABiHOztQYAAGvQhCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABRLQDQVUUqdUUNcwBCKBBH4IAATToHQgQQIPegQABxEJOGqJGg5VYABBAgz4EAQJo0DcWAAJo0IcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIEGAAqSSc7Nye91AAAAABJRU5ErkJggg==', -'w8/fullscreen2.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABHklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBDZDmxoaPgPwpSqIQQAAmjQhyBAAA16BwIE0KB3IEAAsZCQ5v6S6ymkdPgPymcmVi9AALHQObRJNgMggBgHe4MVIIAGfRoECKBB70CAABr0DgQIoEHvQIAAYiGjqEAXZ6SmHnQAEECkFDP/qBDq/0jVABBApIQgMzGhQ2mIoQOAABr0aRAggAa9AwECaNA7ECCABn1VBxBAgz4EAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECaNA7ECCABr0DAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECDADj+SpPAnbKXAAAAABJRU5ErkJggg==', -'w8/gene.png':'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', -'w8/h.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABRUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJUUBSCUgCS2YO3fuA2xqk5OTG5C4B+bMmXOAVPsAAoiFAk+CHFqP7AAgfoBDbT0an2SHAgTQkIl6gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAYqGiWfuBxRDNHAoQQEMmRAECaMg4FCCAqBn1jsCa6QCOmoniri5AAA2ZEAUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCCBKcj2oSdeIxscFGilp4oEAQAAxDpVBMoAAGjJRDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDQYx4/2Il6LAAAAABJRU5ErkJggg==', -'w8/handle.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAmElEQVR42mL8//8/w1AAAAHEQq7GvXv3Zn7//p1BUlKSQVxcnEFGRmY6NnVPnjzJfPnyJcPz588ZODk5GZydnaeTYx9AADFSEqJnz57NBDkABNAdjOxAmLyxsfF0cu0CCCBGSqMe3UESEhJg+sWLF1g9QC4ACCBGaqVRbCFIDQfCAEAAMVI7M505cyYTRJuYmEynprkAAQYAWQ5L+xSV5joAAAAASUVORK5CYII=', -'w8/handle2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC/SURBVHjaYvz//z8DqYCRkZEVSPECMStU6DcQf4bSyACrOqCdv0m1EyCAWBjIAxxArATEUlAzQI68D8TvoGwGqAOFgFgRyv4DxM+A+CYWDxEEAAFErkN/APFrIBaDYiEofgd1MAPUgUJQRzJAHfkaqpdkABBA5Dr0N9RiGBvmIFgoMiA58DPUA7egen6TYyFAADGSmUbR06AQlhD8jBTC75DTMDl2AgQQpQ5Fd7A4EOtBxS4B8UtsmYwcOwECDAAGeTjR5bLpHwAAAABJRU5ErkJggg==', -'w8/helix.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQADR3KEfPnz4//btW4oLa4AAoqlDf/z48f/q1asMz549o9gsgABioYUD//79+x8Ykgw3b95k+PjxIwMPDw/FZgIEEAu1Hfj582eGp0+fMrx+/RoUogwsLCwM8vLyFJsNEEBUcSiwvQB24MOHDxnevHnD8Pv3bwZGRkYGTk5OBiUlJQZ+fn6K7QAIIBZqOPLu3bsMjx8/Zvj58yfYgWxsbODQFBERYZCWlgaJMVJqD0AAUezQO3fuMNy/f5/h379/DBwcHAzMzMwMDx48AEf/lStXQMmBwcTEhOIQBQggih366NEjBiYmJgY+Pj4GFRUVsGNBIQvK6cBiiWHPnj0Mampq/4HyFIUqQABRI+oZeHl5GXR0dBi4ubnBjnF2dv5vbGzMsGXLFnAIgxwN8gglACCAKHYoKNRAxRAo4ygrK/+HORYUshoaGmB5UHqlFAAEEMUOBTkClNtfvHjBICMjw2Bvb/8f5GhQkvj27Rs4c4HEKQUAAcRIaVfk06dP/48fP85w7do1BjExMQZJSUmGP3/+gB0ISrugdCsrKwtiU5RGAQKI4hAFpU8tLS0GVlZWcHoF5XIQG1SWghwuJSVFsSNBACCAqJLrb9++DS6eQCEIcuTLly/BxdP169cZ2NnZQbme4qgHCCCKHQoq7EEhCcxEDAoKCuBM9P79e3D6BNVW27ZtA4Xqf2B9T1GoAgQQVYonUKgZGhqCcz6oFvLz8/tvY2PDsGnTJnBdDwphShsmAAFEcTMP1EoCNeVevXoFTpcgACo7BQUFGQwMDMDpFBSylAKAAKJKOQpKp4sWLQLncEtLS3DxBEoSX79+Bed+cXFxih0KEEAUF0/ATAMunu7du8cgLCzMoKioCM5YsCIKlOs1NTVBSYCiNAoQQIzUGNIBOfbWrVtgB4KKJxANSregzAUqQyl1JAgABBDFUQ+skcCOBIUgyNOgaAeFLKg2ApWx1GjigQBAAFHsUFA9D2otgRwICj1QegSxqVHIIwOAAKLYoSBHCggIgNMhqIVErRBEBwABRJUqVE9Pj4GLi4smDoQBgACiODMBa6H/wDKTpo4EAYAAYhwqA7kAATRkhnQAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwABdj0ooKrhSoQAAAABJRU5ErkJggg==', -'w8/helm_aa.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADWklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xeBaVBKZkST+8+QyNDFiEsnQAAx4kr8l//bM8xgEGaAyTOiWPCOIZ3hIIMuDmMBAginoUH/pRmigAb8BxuCTEKMXsbwjGEtDkMBAghHmK7/fxNoJMKzyEaC3MrIEM1wE6gKu26AAMLhUqP/oQyOGKL/4QEBYu1nWMtwFqtbAQIIq0v7/guDjfwP1vwfSsPcCHEzI4MTgwBDL1Y3AQQQFkPfHO4Aeg5myH+4UQxI3oeAWIYuhtfnMU0ACCAs3s/5/54hF8mrqF5HjbipDHwM0zCCACCAMFx64v9ahgSUJATBVlDXM8INBxmcwLCB4SSGuwACCMPQZoYYBh64dkaoAXsYrBnuA8n/KOn2PwM3MI00YvgVIIDQDF32/zlDEEbYMTDsYDBgCAaSsIhCGB3M8ByoC9UUgABCM7QV6E5GeAjC1F5kOAb0vCuQfIoUcTAylqEFzaUAAYRiaAtQhxVKrENctQfoHgYGfQZFYNpEDmeIiy0ZtNAMBQggFEODGR4xvELKQ7CUuZbBBcz3YtiGFNYwt75i2MnwECUAAAIIpZTSZMz+v4ChDO55iHv3AHEmXM0eYDCghvgChmwGeZRkBRBAaOn0l5D621IGI6Sig5GhBBhJMVAvlwD53fCAAZHngRngpjDbO2RTAAIILaLY3lUzLIGHKYi+wHCUwQHuWQ8g7xlK/lrMUMmAaiQDA0AAYaTTFEZWhi1IiX8PMOqk4ekA5PXlSCljCwMrQxpGjgIIICzZdO//VKD9TChZFLPkB4n8BQbLHAZnDEMBAghr0Zfwn4khFZ7TEUYi8j0kwc1h+MWwCEvhBxBAWA198F+DYSGDPIbLYNUJhPeQIZ7hBoMCFkMBAghrearAWA0MABS7kVItzKWgKFLAWkgDBBDOOkrzfzqDOYqBqMFwAlgt3sBRRwEEEM56H+RW9NIUkUUZgAmvBmflDhBAjLjbp57/HzFIoAUCLExfAJPZLpz1PkAA4TH0yP+3SLGPXvJLMpjjNBQggBhp0ZIGCCCatKUAAogmhgIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgAADAPe43aRzzdddAAAAAElFTkSuQmCC', -'w8/helm_base.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiGhDd/8/QHRCAQgghv9EwfL/Bv/1/lf+J041QACxEGNxxf+dDFkMjAyTGBj+tzESVg8QQER4vxxoZDYDDxDmMmxhqCIiEAACiPE/EUbmMHBDeV8ZJjN4MxByLUAAMRHy+C6gK0FGMoIhN9C1Wwm6FiCAmAiFJcjjIIdBooARyMshGAgAAcSEz+M7oK6EhhQQggzmYcgjYCxAADHhNnIX0E0QVyKSH4THTcBYgABiwheWPFAXMsCN/g/lgYzFHbYAAcSELywZkBJ0FEM5NGwhRnPjSWAAAYTF0EqwkdzQiIG47ASDEcMjhuPwVABzLXZjAQKICdOVO+CJCOIuEHmUQZPBHUgisjbC2GoMYwECiAmXkciRc5PhLDDJWwDJ11ADYQaDjN2MYSxAAKEYWv1/KTj3QLyHUHkc6EoGBg0GWYaTKAkMBEAJbCGasQABhGJoyTJZhu1oMQ4yfBfQlSDajuEw3Mj/0JTwn2EngzRQJ7I5AAGElvffL/WOkmQIhXobIncCVDrBQS6DFVQOIr+O4THDtmVC0cimAAQQRoHybqkP0NgQqBaQW7qBHveBuq8biIuRgmAdw0OGHcsEo1HNAAggjNgXit6y7AXDGngg3GA4x2AGjzRrcGTBjFwLTGbbMYxkYAAIICzpFGTsc4ZV0BgGpVBxePhaAcltUHUQI4WiMU0ACCAc5SkoECTAYcsIz/EM8HQLcSVmWMIAQADhyPuwQEAkrP/wFMqAI3oQACCA8JT8CNcywPMXLMZxeRwCAAIIT3mKiDJYIU2ckQwMAAGEt+QXit4KjLI1UG9DQhfkcfxGMjAABBCBOkoQnBLWwCMJ5MptBIxkYAAIICKaBm+XWv4P+r8cCEP/m/1/u5SwDoAAIqrF8Q5sbAjQyHdLiVEPEEBENntAriXOlSAIEECMxLa63m5hYBD2IU4tQAAx0qLNDxBANGmfAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAIDTkuSH1ZORAAAAAElFTkSuQmCC', -'w8/helm_blob.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGAUExURai8w+zv8dPJxpegqd3e3iYmJri4uPXy78+2mO7w8ZqZmfrVqu/v75admvPFq/j28aKlq+7y9U5OThoaGvzZsTY2Nvb08b/N1e7z+O7u7RUVFfb29vr6+pCQkP///+3t7fLy8vX19YCAgPf398nJyaurq/n5+erq6kVFRVVVVT8/P9DQ0KioqAwMDOjo6FBQUPv7+/j4+Nvb28bGxiMjI/Pv7vHIrvDx9KGpsJyOnKvM2eCxm+re1+7t7fH29XaGkuvw97rI2vLx8Nzk6M/y+4eVlqClmJ+VgqKjpImOlaKpp6XM6vj3+ae4vrfU8J26yvn6+Pr5+Pv6+ZDD74yNjuLdyLDS2omx4fTz8u3t7n+Ce6Kv06CMjaOSlbOQi5ycxNjSuMS6sPP38ta5q4+krfPSwezh2/jix7mmh/X2+Pn9++y/jPTr4riWkfLSsbPd4dP1+d/x/frx7qXA38S7q86xppKVnJOyw/Dx8+fIrbPF6MvLywgICO7u7gAAAP///1hZnnoAAACAdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AOAVLZwAAAidJREFUeNpiqCcaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggJCVKhrrCAnXwIGwkI6xIpI0QAAhKTVSEq6rkzJhhQITqbo6YSUjhDxAACGUVmvV1WnKsqlUQ4EKm6xmXZ1WNVwBQADBlWqL1omqysvJKEtDgbKMnLwqUFAbpgIggGBK1TXqhFgMFWpRgIIhi1CdhjpUCUAAQZUaKNWJsijWYgBFFtE6JQOIGoAAgirVE9ZVVePBVMqjpqorrAdRAxBAUKVcdfryCrVYgIK8fh0XRA1AAEGVCtXJytViBXKydUIQNQABBFUqLMUmg12pDJuUMEQNQABBldaYqCjX1koyZqqJSXI6AVVIVjhBlCqrmNRA1AAEEEwpa7V0bS1nTqKHo10aCyMPD6eNM8SX0tWsUKUAAYSiVEIkyp7Xm8+3sMg8y9rKgd8WRSlAAKEq5U4RzwjmY0hgFqjKtveKTkJRChBAaKa6WriHmzHE5ScLcPgzxbiYIisFCCAMU0viKxlyw0otOMqZYgtQlAIEEIpSwXSushC/VPFQS16/PE+3YjEUBwAEEIpSSU61QBl2wYiKAEN2wSAfsUgUpQABhKIUG0AoBQgglCjABhBRABBAJEQsQACRkFwAAoiERAgQQCQkbYAAIiHDAAQQCdkQIIBIyNwAAURCkQEQQCQURAABRELxBhBAJBSaAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQgwAKs512mdfKXeAAAAAElFTkSuQmCC', -'w8/helm_chem.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC8klEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCyYQo3fd7AJMP2D8/8zMIIxKgCJMDF8+Ofxq54T3QSAAMJi6Be22K9BL74xI4uBjEWmIYDr73qJe9yYJgAEEBZDmZkEX4jt+soJcw+EhhnICHU5iMX9nd+NSRXTBIAAwmLof4Y/zH84/3AgG8UAD4L/cLczMPxh+MuMLUwBAghrREE0w1zJiGQYspG4AUAAMWE3EmYwzHiI0f/hVjDA3Y/NeIAAwur9/3B3ooYiA4qL/yO5HBUABBALdg8wosT6b8a/TP/B3uL684/hPyNyEsNmLEAAseAyEuY+tn83BP28hL+x/mRieMNecCfj8jdGQokfIIBY8EuDjP3KoM644rz4VQaGo9rpNtZPNd79ZsKWHRAAIIBwZlNEPDMBk85Hli/sn9i1gE549Z8R7hNcACCAmLC7Djk6/jP8Y/jB9J2FmXETI8t/RYa/8PSAK2kBBBALLjciEg4nw12GaB1W1ceCwv9XnFJ4/ZONESmVYAMAAcSEO/ZhrvnOoMmw99y51XVPORi5fzH/+49iMTa3AgQQzsT/Hx4MjMAw/cDylTVrj8ndeI3vXMz//2MkPVQAEEBMuKPoPwMsSpiBpv9n/Pmv8fkv0Rjvf4yIaMIeAAABxII77iGu+MOk9XHNCmaGX2wMDDyPdy7/xfQfKSNjz6YAAYQzTBmRUgDTf5CPGRn+/Wf6z/EXPUtjAoAAYsKdSRlRCg1GDANwp1OAAGLCne//YwQFrED8j2QVNgAQQCy4I4oBw4WIdMGAt5QCCCAWbI7n+cv2nY2YavM7319s4QcQQFgM/fB/ksR+t9/M2NMDcuXC+veyhDoWxwIEECOm2PmnNyQYmDArPOTKGW7RP40XhtLoJgAEECMtGr0AAUSTFgpAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQggmhgKEEA0MRQgwAB9HtzkRRnoOAAAAABJRU5ErkJggg==', -'w8/helm_cterm.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADV0lEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcx/GdghPNBKRrBi2foZsSlEyCAGHEl/sv/7RlmMAgBjYEY/B/Kghj9jiGd4SCDLg5jAQIIp6HB/6UYouEuZIAbBwNLGJ4zrMVhKEAA4QjTDf9vgo2EGcQINRgBohluAlVh1w0QQDhcavQ/lMERRQQRCDCwn2ENw1msbgUIIKwu7fsvDDbyP0okwVj/oTwHBgGgSmz6AQIIi6FvDncwxCCF43+k0GSEQoibYxk6GF6fxzQBIICweD/n/weGHLhH/8PjnwEjDfxnmMrAxzANIwgAAgjDpSf+rwWmQVgIMsAj6D+K2xmh0ZfAsJ7hJIa7AAIIw6Ve/7UZgtDcAzH0K8NihnsMPAwuDNZIUbea4RrDdjS3AgQQmkuX/X/OEAx3HSOK1ysYXgETki4wHO/CQ/k/QwjDS4blaC4DCCA0l2r/T2awRDIKofkuQyHDMqA7GRl2MegxSCAlr2MMcxmuorgVIIBQ8n7Lf0YGK6hBvii5fjPDFwZNBl6wnBtK6mUA6jiOFoQAAYRiaDDQay8ZxMHszRhxfQPK3gV0pz5SaL9k2M7w8L88klsBAgglTDUZcxgWouUhRqh2fQZhhl6gey8xTEFJXv8ZFgAToDyK9wECCC1Mfwmpvy1jMEQp6GBhd5dhJsN1BhEGH3DqgKk4z9DFcEOY/R2yKQABhJGkZv+fz9CHtQT9j8EGkUXAtJqGlqQAAggj8acysjJsgeZwRqQ0gMgOyJl2CwMLhpEMDAABhCXv1wGTzj94UkIt/BiQAoWB4Q/DUoYGLAUKQABhLfoSgUkrDWtxh+r1OQy/GBZhKfwAAgiroQ/+awLjVB5nSQrR8wgYmtcZFLAYChBAWMtTBcYqYD7/j5bI/yMVMCC4CJhxFbAW0gABhLOO0vifDsyw2NwKoY8DE9gNHHUUQADhrPdrgVUbA9x9/9GMBFV8NTgrd4AAYsTdPvX8/5BBEofcCwZphl04632AAMJj6NH/b1AyAawUgISqBIM5TkMBAoiRFi1pgACiSVsKIIBoYihAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQgwAIU/76aa/+1IAAAAAElFTkSuQmCC', -'w8/helm_find.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==', -'w8/helm_import.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQADRxFCAAKKJoQABRBNDAQKIBZkz/f8MAsr/MzBiFclgyESSAAggFENfMXgylIEVgQpEiCpGqLb/QMjE8A/Mh3jxP1yuA6gTGQAEEAt2FzGC8T+ooTD+f6hREDGIgf/g1iMAQAAxYTPuP9xjyO5kgNP/4BhhOTIACCAWTENB7pnBEMHAz/CBYTvDYyDrGJAEGVjKsA3I8mKQQ3IPIxaXAgQQE6aRDAyXGSYDtTMwhDJ8YtBlCGPQYuADGmbN0M2wmkEWyP8IDc//QDdiq44AAogJPS5BYAVDPMNEoIF8DGkMvAz5DHoMOkDDbBhOMkxg8AEazA8OGEYkZ6ACgABiwkw0/xn2ALWD3PsUqOU40HgGaMQwMDwCkssZHsIdAAksdAAQQFhifweDGcMkhmUMq4C0K4M0UuosBLrcDGhVGThyYAZiuhQggBiRhRr/f2eogLsL5MEPQFfpw1MkJLz1wAYyQuMeBLoYOBjqkWILIIBYMCOKESld8gMjCpGLQIbqQt34Hyk/obsVIICwRNR/aMr7D7fmH1JiZwR7GYIZkYxHBgABhObSeQybkbyGyIgQC5ng7oO4B5abXjNkoZgCEEAoYfry/0uUnIWaBf/DMyoDWmJiZBBjEEcKU4AAYqRFWwoggGhSngIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAEM8kax0vpcsAAAAAElFTkSuQmCC', -'w8/helm_layout.png':'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', -'w8/helm_linker.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADzElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiIWQgk+56yfdZ7jHcJ/hP4MCgwqDIkNgHt9k/HoAAogRX5I68X8uw1IGUQYLBkEgycDwmuENw2kgjmZIZLBkxK0PIIBwGvrFO3XLKaBx1gwCDIxAV0IwCLxnOMRwhsGYYa4Pz1bsegECCIehR/+nM6gyhDGAZBkZIGpgToOIrWC4wzCLwRqrewECCGtELfnvyuDIEArWDHMhxOj/YB6IHc5gz+AKVIlNP0AAYXHp5f92DHkM6khuQ7gPwQOxbzBMBAaFHoZrAQIIi6EW/3UYnKHakElk42DW7GK4yXAcw1CAAMLwfuZ/IaCRDHDD/kO9DXcF1EBIMLgx8AJ1oJsBEEBohn71XsHgBTUCFpYQiGwwwmhGBj+G5cCUgmoKQAChGTp7izGDMNQlDPCoQTbwP1L4gvwhzGDAMHcLqikAAYQWpgb/vRl04B6HaNvKsAwuL8fQgRJ5IKOvMGxhuIgSrgABhOLSl09eMGhDvfcf6mkQNgIaC4EaDD3wwIGFuw7DS6BOZHMAAgjF0HvSokhJHd3jIODJcI7hFdydMIPFGe5LI6sCCCAUQ+8DQ+g/PFIYMfIRas5CpANBhgcoVgMEEEopdY9BFCksUY2FBMViYFCIwXMVTFwEzVCAAEIxVIzhE1LaRCT0cwxRUBVGDMXwsES49TPQrcgAIIBQDFVgeIdWIiGMQs5fDNBIhAXDWwYlFEMBAgglTJWBJSbCSMwMDAsIRqQUAAJv0AwFCCBUQxm/AI1FaP6PktT/o2VWWFp+BfS+Mko6BQggtBwVCSx1GJDimRGHl5ET/1FgMYgKAAIILUdd+O/L0Im1TMIsBGFypcAcZYCiDCCA0FxqwKjFcADsUUQWYIDykVMqItntB5a8Bmg2AwQQRm3awmAGzOHK8DBjhGdaZEtgIXuXYTbDKQy/AAQQRnlqyjgLWIP+gRvzHy33MMCLQgagqiUM04A60M0ACCCsFV/m/8sMsQx8GBkTOaT/AzPKYgY9hulYqj6AAMJa8U1ndGRoY7gML6kQLkZYcgWowh6rkQwMAAGEs95f/T8bWOfbMkiiVXsg1gtgMjrCMJUhBEeDAiCA8LRQbv+fCQwzZaCxlsBSgRlo6G9g1jjB8AwYPREM2QyqONsoAAEETy7Y4V/mWf8d/qv+5/gvC4QcQJbL/2n//zLj1wUQQIzENs8fABUqMBKnFiCAGGnR5gcIIJq0TwECiCaGAgQQTQwFCCCaGAoQQDQxFCDAACflNCUJWTDfAAAAAElFTkSuQmCC', -'w8/helm_mex.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==', -'w8/helm_nterm.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADNElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcyMCLx/0N5EDqBoYsRl06AAGLElfgv/3dgmMEgCFMGNgqB3zFkMBxk0MVhLEAA4TQ0+L8UQzTUVf/hLkawljI8Y1iLw1CAAMIRphv+3wQaCTEG4jYGhv9wg0EgmuEmUBV23QABhMOlRv9DGJyg2hFuhZEQsf0MaxjOYnUrQABhdWnffyGgkQwYnoaREKMdGQSAKrHpBwggLIa+PdzJEAv3JiOK4UheBPJiGToZ3pzHNAEggLB4P+f/e4YclFiHufY/kpEQsSkM/AzTMIIAIIAwXHry/1qGRLAXGeER9B+emBDikJBNYFgP1IFuBkAAYRjaCPQUN9SrZQz3wEbMZLgLj7D/SG79z8DLEMXQgOFXgABCM3T5/xcMQXCPX2foAxtyj+ErPEwZUXLYf4ZQhpcMy9DcChBAaIa2MMRADYRo/8awBB4EKFGBZHwMUBcqAAgglLzf8p+RwQolggoYahksoQb4Qa2CyGyEGvwfqOMYmqEAAYRiaDBDB9AzYkjxrMfgxTCBgQvM3oTkcUSWYATq2Mnw8L88UhoACCAU72sy5jAsRErgIDoGGJ7XkRIRA5LHIfQChmwGeZRkBRBAaGHaJHye4QJKyHEDgwA3+M8AUt8kjCoKEEAYiX/O/3nAOEctkZDzPmq59Z+hmCGeIR0t+QMEEEY6TWFkZdgCjyzU0glWmiJEtjKwYBjJwAAQQFjyfj2wrPyDFB2MSHEOS2wQ+h9QZT2WQAEIIKxFXyIwaaUi5RvkAhA5UOYw/GJYhKXwAwggrIY++K/BsIhBDsMQ1ILwITA0bzAoYDEUIICwlqcKjNVAQxlQjETP9QxAFZVYjWRgAAggnHWU5v90BguUPMSAwjsOLGZu4KijAAIIZ71fA8z1yLn8P1LJD+ItBarABQACiBF3+9Tz/yMGCRxyzxlkGXbirPcBAgiPoUf+v8HibVgNIMlgjtNQgABipEVLGiCAaNKWAgggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECDAB+RNxwBMcJHQAAAABJRU5ErkJggg==', -'w8/helm_nucleotide.png':'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', -'w8/helm_sugar.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAE4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yT179jCAiq8/f/4wPn78mHX37t3eubm5644cOcLw/ft3BiYm0vz5798/Bg4ODgZbW1uGyZMnB7m7u2+Vk5P7zcrK+p+RkZHBwcEBp16AAGIhxgKgY22Ajj105coVhqysLAYJCQkGoOEMxJbBIEeA1ILo379/M6xYsQLk+XUuLi4gx9sBlRwmZAZAABFyKCMw1KzPnTt3aPPmzQw5OTlgi0AhA/UA3BHYHAZjI6sFpzdgTIA8OmvWLIbg4OBD1tbWtkD5oyBluBwCEEB4HQo08P/Vq1cPb9q0iSE5OZnh7du3cMuwhRa+EEZX9+3bN4b09HSwYwUFBQ9ra2sz4nMLQADhTWScnJz+/f39DPHx8Qzv3r3D6UhsjsKSfDDUgDyemJjI0N3dDUq7/vjcAhBAeB365s2bDTw8PKD0hCvtkiSOzUOgpMTNzQ22C59agADC69DLly8ziIuLM/z9+5fkEMOmFjn6YXpAZoPsuHDhAl5PAQQQ3jQKSkfMzMwYhuOyFJcHCGU4UMb6+vUrXocCBBChzIRhITY2Ozs7GCM7FBRSv379AmOYg9BpZDMIlckAAcRCRBmKl83GxgZOIocPHwbHAExcTEyMwdjYmEFHR4fh58+feEsBYgBAALEwUAhAFgFrLQZFRUUGWVlZcMiAxH78+MFw6dIlsEdUVFTAGRKbR4nNeAABxEKsY3BFO4wtJSXFoK6uDueDcjOomgVWFmBxEJ+YYgwXAAggYqtQgskBlCZBGLn2AdXroOSAq2IgpRsEEEAkRT2yweihASodQI4D0SAAqiBu3rzJoK+vD65ykR2HXoIQE7oAAcRCqiNhIYJsIajAXrlyJUqmASUFUKNDT08PI9qxZSJCoQsQQCRnJuTog7G/fPnCEBkZCc7hoFAFFd4gDMpcpNZquABAADERm5kI1dugUAPldBAGOVhZWZlhzZo1YD6sJKAEAAQQEzmZCR2gV7GgUASVocBGDcPWrVvBfOSSg5jAQAcAAcRESfkJwqCMAirceXl54WIgDApFV1dXcOZ6/fo1mI/Pw4QCAyCAyC7wYQaDMpC5uTnYwbBMA5MTFRVliIqKApenIDlszURikwRAALEQ6uMgG4arIQJyLLYiBxTloMYGtlyOniFhvQZcACCA8EY9FxcXStWHraDGVSZia23hanDD2qT4AEAA4XUoqAx8+fIlvBBHtoxQesPWQsIWKywsLAzPnz8HVwz4AEAA4XWoiIhIACjqQO1FStMyrpwNCgRQNQuyC585AAGE16HAMnBjSUkJw4IFCxiEhYVx1ijEZgjkkAbRIDPnzp3LUFlZCYr+jfj0AgQQCwGDGbW0tGyDgoIOz5w5kyEpKQmcnmCND1wdO0JFDSgUQVE+ffp0hvDwcAZgDxTUXWbE110GCCBCxdN/YG48Aiy87YBRc6ivrw9cHkpKSuJNDrhCGSQGavGD0iQolxcVFYHasXYgOwjFCkAAEVWOAh13BBgK7Lq6ut75+fnrDh48CE5X5AzpgEoSOzs7hkmTJgUBQ3Ur0IzfxOgFCCDGoTI0DhBAQ2Y0DyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAB65lTZlf25QAAAABJRU5ErkJggg==', -'w8/heptane.png':'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', -'w8/hexane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==', -'w8/inkblue.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyMi1kxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvb/X/wfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYALrNohf1uT4fAAAAAElFTkSuQmCC', -'w8/inkclear.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcqqmnbQDEB0A0rRwKEEAseCwnxRwHILYHYgES9XECcSUQx0PZE69futqKTSFAAFEr6gPI0CMDxPuA2A+Ii4F4DhBX4FIMEEDUcugCEtVLA/FeIP4GjYk1UEd/waUBIIBYqOTQBySo5QDi9UD8EYj9oY5jBuJ6ID6MSxNAALEMQAbuAWIFIDZACsHpQGwExMa4NAEEEL0dGgbE2dDM9wyI2aGOjIWG7g1cGgECiJ4OtQLixdAMcxBUsADxbCBWA2IvIN6NTzNAANGrwHcB4u1AvByIO4E4A4iPA/FvqAd2EzIAIICo4VBQ+fcGiBtxZKoCIN4CLX5ADlwGxJOBuAvqgTvEWAIQQJREvRwQl0PLUD4g3gnEP5HkQRmjA4jNgDgTiOdDQ9QdiN2AeD8plgEEELkOBWWGpUD8FYinQB0ISns7QLUL1CGhQHwSiO2A+CIQ1wKxD7TcPEeqhQABRI5DQRZvAuJdQJwMLQ8ZoGlwKxDPheboLCCeB02HrtCk4UuOI0EAIIBITaPMUIc8AuIQJEeCwHVoSN6A1jjroY4UBuKF0JDeSm46AwggUh0qCcSCQCwGTXvo4A40ekHgKLQ+L4KWlw2U5FiAACLFobJAvBYaQqLQEMPWrLsLxJ7Q0N8LzUiT0EKfZAAQQMQ6VBrqMFgoToBmpA1ArI0jZEGO5YLGwAFKy0CAACLGoeJAvA6pHgbl8rdALAXE8tB0p4FF300g9gDiJ0BcA8TclDgUIIAIORQUGquQQhJU5X0A4iaoxaDa5R20FMDm2KtAHATEFtDGCCO5DgUIIHwO5YLWzXZQ/lRosVMFtfACtIYBNdtUocWTJhZzTgNxG7QVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKrTK/kOtQgADCVzOBQvM/tCjaBFV7AprWWqDR/QvauHCA9n1gZm6CVqEXoSGvC8QpUPPIAgABhM+hsKruILTA3gpNa9OgGQfkyHZoWQpz5Fxo5iqFptln0KQQCcTnKYl6gAAipq5vhjZut0MbIvpA/B2Iq4HYEtoyB4GVQPwKiEuQmn/M0EbxTkrLUYAAIsahe6C4HeowUIjlQNuSoVA1oCLsPjTdghx3G4gDoen2NzVa3gABRErr6RA0vc6FOiIJKg5qZz6ElgggRz6GNliuUrOLABBApNT126EZQgKaBhmgGek8tGxlgToSVMBfonZfBiCAyGmPfoZmsOXQLsgSIGaDFmGh0IqA6gAggMhx6B5oq0gJiK9Aa6azQBwFTZM0AQABRG5XBFQeCkEz1jFoX/0VLbuxAAHEOFTG8AECaMgM5AIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAO0bNaPuHT9oAAAAASUVORK5CYII=', -'w8/inkclearall.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARBSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAseCS0NTTpof9nEBcCcTxUPbE65eutmJTCBBAAxmiMkC8D4j9gLgYiOcAcQUuxQABxDJAjpQG4r1A/ASIPYD4IxB/AOJEXBoAAmggHMoBxOuhjvMH4i9AzAzE9UB8GJcmgAAaCIf2ALECEBtAHQkC04HYCIiNcWkCCCB6OzQMiLOB2AGInwExO9SRsdDQvYFLI0AA0dOhVkC8GJphDoIKFiCeDcRqQOwFxLvxaQYIIHrlehcg3g7Ey4G4E4gzgPg4EP+GemA3IQMAAogaDgWVf3x45AuAeAu0+AE5cBkQTwbiLqgH7hBjCUAAUeJQOSCeCrXoKRCvAWJJJHljaEg1AnEmtKycDy2O3IC4DYj/EmsZQACRm0ZBmWEpEH8F4ilA/BOa9naAaheoQ0KB+CQQ2wHxRSCuBWIfILYH4nOkWggQQOQ4FGTxJiDeBcTJ0PKQAZoGtwLxXGiOzgLiedB06AoNWV9yHAkCAAFEatQzQx3yCIhDkBwJAtehIQkqYr5BC3WQI4WBeCE0pLeSm84AAohUh4LSoCAQiwGxGRb5O9DoBYGj0Pq8CFpeNlCSYwECiBSHygLxWmgIiUJDzACLurtA7AkN/b3QjDQJLfRJBgABRKxDpaEOg4XiBGhG2gDE2jhCFuRYLmgMHKC0DAQIIGIcKg7E65DqYVAufwvEUkAsD013Glj03YQWRaAWUg0Qc1PiUIAAIuRQUGisQgrJ2dDmWBPUYlDt8g5aCmBz7FUgDgJiC2hjhJFchwIEED6HckHrZjsofyq02KmCWngBWsOAmm2q0OJJE4s5p6GFO6gVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKxPuR2p8kA4AAwlczgULzP7Qo2gRVewKa1lqg0f0L2rhwgPZ9YGZuglahF6EhrwvEKVDzyAIAAYTPobCq7iC0wN4KTWvToBkH5Mh2aFkKc+RcaOYqhabZZ9CkEAnE5ymJeoAAIqaub4Y2brdDGyL6QPwdiKuB2BLaMgeBlUD8CohLkJp/zNBG8U5Ky1GAACLGoXuguB3qMFCI5UDbkqFQNaAi7D403YIcdxuIA6Hp9jc1Wt4AAURK6+kQNL3OhToiCSoOamM+hJYIIEc+hjZYrlKziwAQQKTU9duhGUICmgYZoBnpPLRsZYE6ElTAX6J2XwYggMhpj36GZjBQ/+cNEC8BYjZoERYKrQioDgACiByH7oG2ipSA+Aq0ZjoLxFHQNEkTABBA5HZFQOWhEDRjHYP21V/RshsLEECMQ2UMHyCAhsz4KEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEADhHHIGwP7H8AAAAASUVORK5CYII=', -'w8/inkgreen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyLhRnxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvY//uUfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAGcSooA/lcDbAAAAAElFTkSuQmCC', -'w8/inkred.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACuElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocuZGRhxCcPEEBMg8SRzECKEZ9jAQKIaRA4kh1IsUDdgtOxAAHEMsCO5AFSHED8AyYW///PH2xqAQKIZQAdKQSkJIH4M1ToHxD/wqUeIIBYBsiRIAcaAfEnUHRDHfgTGJo4ax+AAGIZAEfKA6kgIP4KxKxA/B6I3wAd+RefPoAAYqGzI+WAVAUQgxz1AoifAfFNXOkSGQAEEBMdHakMpPqBWAOIxYD4CxDvBzryNzH6AQKIiU6O9AVSq6HpUhCInwLxPKAjvxJrBkAAMdKy9QQNxSogjgLi39Bi6AgQpwAd+Y4UswACiCYOhRbaiUDcAMTS0KLnDzRNugIdeY9UMwECiIUGjtQFUh1A7AUV+g9NYiC7ppDjSBAACCAWKjsyHkj1ArEwcqxB6QtAPINcswECiIWKjswDUhOQHIYMQFFfCQzN7+SaDxBAVEmjQEd6AKnteJQsADoykRI7AAKIiQqOBJmRi0cJKAPVUmoPQABRoxzlBGJjPPJFwNB8QqklAAFEDYd+h1aJ2MAkoCNXUiMPAAQQE4XR7gSNVmyO2QDKQNTKrAABRFZmAjpQG0hlgmoYIGaH5nZQgQ6qiT4A8S5QlUmoRUQKAAggkh0KdKQjkNoCxFxoUoVAh02gVXUMEEDkRH0AELMBcRYQL4eKPQbiVbRs2AAEEBOJoQlq6LqD2pLA0JsOpLdCpXqA/Ge0dChAAJFaM+kDsQoQMwMdDaoSFaGhuZDWTUWAACI16qOR+jggvdOA2B8Ymh9p7VCAACI1RCWAuB2I1wHxJWK6ENQCAAHEOFSGHQECaMgMkgEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAN1ToiE3YhuIAAAAAElFTkSuQmCC', -'w8/lasso.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZERp1xycrIDlGkAxAJQ9gUg/gDED+bOnfsAmz5ia0aAAGIkWiGaI4EOAzkoHogdoI6DOwqIH0KV2SM5HgQOAPFGIN4AdPgHUhwLEEAkOxTqwH6o5QuA+CDQ0g2E9AP1KQCpAKjnQOyJQH0NxDoWIIBIcijQsgSoIycC8QTkUCEFQJNJP5TrCDKHkDsAAohoh6akpIBCYz7U4AvUyCBAB4PMMwCaZ0jIHQABREquB4VAILUcCQJAsxJBGQ/o4ABCagECiBSHKgANPkBC1BILFiJlNpwAIIBYyIgqBWjubsQTuuuBag1xFUloQB6ILxJSBBBApIToBWiubYQavB/oGAEsnkmAlqP5RHjcAGomwVIDIIBIcagBtIwEOWAClI0tyuKhdAIBR4Lk9wNxITEhDxBApFahiVDH3YcmAQEsZSUsfQpAHYPuwAAgBjmwHmQe0JELiLEYIIBIKZ76oY4QgOIPUMdegNY4F6E1EbLjDkCTCkifPpT+AC2HF5BSOwEEEDkFfj00TTVCpWBVqD40vWFL2zCPHCC3zgcIIHKqUFDOvwi0cAKWNDcfi1ZQDVZIyHxC7gAIIHKaeQ+hoYcrE8FCkYGYTEUsAAggchx6AD23I2WiD9BcbAiqaqElA9ZMRSoACCCSHQqtnQygjoOBfKgHDGFJAqrOEFqUxVPqUIAAYiFT3wZoxoGl043Y0iE0VxeSWKViBQABBE7ExGD0jAPE96nZ1SBkP0AAkeVQqGPvUyPtEetQgACipHMHKkfrsdX3tAAAAUS2Q6FV3wMcZSfVAUAAUdpdDoSWADR3LEAAkd0LRWuqzYeWoYlEtkFJ7jIDBBAjKSPOeBwrAG0DJECTwwFiqk1S+vUAAcRI6tA4vkEIpG7IB2L6VqTYDRBAjENlDB8ggIbM2BNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAEMfeNO+fxrEAAAAAElFTkSuQmCC', -'w8/moveview.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAUVSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQABR7MDfv39zg+hp06bNYWRknNPW1jYHWZxSABBADKCCmlz869cvbhC9ePFikKPADgTRkydPngMSBzqSnRLzQRgggBjJrUn+/v3LwszM/GflypVzIiIiGICOA2MQ+PfvH8OMGTMY0tPTU2DqyA1AgAAiy4FABzABwb/NmzfPCQwMBDmWgYODg+HHjx9gGhiyYEcCQ5YhJiYmBaaeHAcCBBDZIfjhw4c8DQ0NvZcvXzKEh4czSEtLM/T19YFCDezgOXPmMPDy8jJcv34dJEe2IwECiInUkIMlfgEBgUl2dnYMLi4uDCtWrEjh5obkCRYWFobZs2engELWxsaGQVRUtBSaJDhB+kl1IEAAsZAarUD8FSa2atWqlD9//rCD2EAaljZhctlAx/6EqWVlZf2KbA6x9gIEEBOxGQJk6L179+bExsbOOX78+Byoo9iBFnKBDWKCGIWUUbhA+kDsc+fOzQGmxTk3btyYAzIHJk4MAAggJmJz69OnT+f4+voyLFmyhGHu3LmwIooFubhCSdyMjL+AjgSH7sKFCxmWLl3K4OPjw3D//v05IPOIdSRAABF0IMiwV69eTfXw8GC4du0ag5SUFENxcTFM7jswRL4hhxySA/+A5EHs/Px8BgUFBYa7d+8yuLu7Mzx58mQOsUUPQAARdODbt2/bgCHHfuXKFQZQRpg/fz6DpqZmyuvXrycCc3Ltu3fv+kDqvn8Hu4Xh58+f4HQGEgfJg9TJy8tnLFq0iIGfn5/h9u3b4JB8/vz5HGIcCBBABIsZY2PjOcA0BA4hdnZ2BkFBQYZv376BQg85tMBiIEeC1PDw8KBEOSjjcHFxgYomcFkJkgN6EhQjKYQcCBBABNMBMDrgjgCFzosXLxjweQqkBoTRwadPn+DmgPQ/e/aMqEwCEICxMigCIAZhYDQwdcUPS/2hAg28cMUDA9fUQE8AM5ldCM+AVQVVpRJ2H6iK+zQz93JJR0Tg7ogImBn23ujuS5kfhUQ5fxoARznWWsjMXwE/AURUhX369Ok5wKgFNwSAhfMcoOOcYXKwBkF1dTVYPisrC6OhAIxWcTc3N7A80LFzjhw5MofYxgJAABHMJKCyzsTEJAVY74JD8NChQ6BcHAmNTnFgCArAGgjINEgcJA9iV1RUtO7atQsckhs2bGCwtrZOIbY5BhBABB0Iqg1AjgQZun79egY1NTUGBwcHBmjh/AVuEFpBDSoHYfL29vYMKioqDKtXr2ZwdnYG1z6wmoUQAAggogpLkCNBRQfQYSk3b95kQK6+/kDrOFjIwTIQqHyEVXUBAQEpQAyvMpGrQEIAIICIrrxBVRTIcOQKPyEhYU5ISMhUWCMBOSQTExOnhoaGzoHV1TC9pLZoAAKIhRTFyIYDc2n59u3bGYC1DMgxc8TExODq8vLy5oCqRFCaAxZLU2VkZFLQ9RMLAAKIogYrsMUyB9QWBIUaJycnw9evX8G1DagwBhU/s2bNYkhNTaWowQoQQGT3FYBRxwKi582bBy4+gA4A90lANIjf398PLkqADmWipE8CEEAUdWhgZd3MmTPhjgTRnZ2dVOs0AQQQA6UGwHp23d3dYMeBCmxqOQ6EAQKIcbCPDwIE0KAfWQAIoEHvQIAAGvQOBAigQe9AgAAa9A4ECKBB70CAABr0DgQIMADHQzZnH73ISAAAAABJRU5ErkJggg==', -'w8/n2s.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC+UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGbGKJycnOwApBzThA3Pnzj1ArNmEGkcAAcRISusJ3aFAByYAqXogVgDiD0B8ASplAMQCQPwAiAuBDt5AqUMBAohshwIdOR9IgRwKckQj0DEXsIRyPTSkFwDlEylxKEAAkeVQJEcmAh2wAJ8eaKjPJ+RYQu4ACCCSHQq0OADIXE+MI5EcWwCk+oHYEVe6JeQOgAAix6H3QWkPaKEj1BEN0CgGpcdEpOgGpVlDoLoHUHX7QTRMH6kOBQggkoonoGUG0IwzESYGtBjk0ANQcX+oQw5AM5MCknaQHgegGQrkFE8AAURqOWoAdRx6LoZZ3ojGf4BcXCGbQSoACCBSHaqAZjkDNIQUoMnhAxL/AizaoZ77QIlDAQKInJpJAFsoI4UYLDQvULNmAgggUh0KslwAGGrIjrWH0heRohsUegFAdf1oIY/sIZIAQACxkOFQEAAVUQugUVoIqn2QohjkUEEsegMoCWmAACKneFoPjW5DpHRHqLQAxQCoWNuAq9An5A6AACInjTZC02E/CXrmQ9P2RnLTKEAAkVuFwqrFDdAa6gOekJyPFO0wgFGrEXIHQABR0ihJQApVkKUbYdUjtEHiD20PCOAwDsWxhNwBEECUNvMUoFVmABYHfYCG+ERo20ABn2MJuQMggChyKJbqFebYD8jNPqDce0IhS8gdAAFENYcS0UbYj8exRnPmzDmPzwyAAKJLnwkauo7Q5IAO1gHxG0JmAAQQ3Tp3OBwLyny9wNB8TEg/QAAxkjriTG70oyUDUOa6CcTtQEceJEYfQAAxkjM0TgXHCgMpMaAjrxOrByCAwMUCuZhMRyqRYxdAADFSOtlATOgCHScBpPiB+DYwFP+RYw9AADEOlVkRgAAaMkM6AAE0ZBwKEEBDxqEAAQYAhSNqR6rmTsAAAAAASUVORK5CYII=', -'w8/new.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABiElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALEQq5CRkZEodcnJyQVAyh+Pkg9AXDh37twHMAFi2hsAAcRCA8/3A/ECIH6IQz4eiBOAuIEUQwECiJHY1lNKSooDkHIgQmk9EBsCQ+wCjhCfD6QUgPggED8AqltAjBsAAoiUEF0PMhgadfjAAVyOhIKDUIfagzwFdDhI7QVClgMEECkOFYCmrQOUpAtQCEKTBih0/0PNJQgAAmjI5HqAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAACK14RwPbPE4DIRDAQKIlIYzoS4GOQDUcE4kxg0AAcQ4VMZHAQJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAOORDGyRRCoQAAAAASUVORK5CYII=', -'w8/octane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==', -'w8/open.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACbUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALHQwtCbN2/ibEAICwsziIiIMJJqJkAAUd2h3d3d/4EOxaumtLT0v7q6OkmOBQggBlDriZo4OTn5/7lz5/7jkm9oaPi/cePG/6SaCxBARIfopk2bCIYUDABDC6echoYGw549e8DJg4uLiyE7O5uokAUIIFIcymBtbQ1OY4QcCXQATssNDAwYODk54WaCHExMMgAIIJLSqJWVFQPJaQvTI4ywEAfFErH6AAJoyBRPAAE0ZBwKEEBDxqEAAUTVcvTMmTP/t2/fDmbHx8czyMnJMVLLbIAAoppD//79C3bkw4cPwfzTp0+DHEq1QAAIIKpF/dSpU+GOBAGQo4GOpVpfHCCAqOLQNWvW/L906RKG+MyZMxlAtRQ17AAIIIod+vz58/87duwAs0EVAgzA2NOmTWN49+4dxY4FCCCqRX1iYiK4QkDiM8Icy8JCeVYACCCKHQpyBMiRQEcxYnE8o6GhIVUCAiCAKPaqqKgoIw8PD86ojYuLY+Dl5aW4mAIIIKpEPbCRwfjr1y8Mx/78+fM/NRwJAgABRLU0ysbGxvjnzx/kdi5VhwkBAojoqAe1HefPnw9q5uF0ADD04Oxt27YxXLt2DexmbGq/ffsGN5cYABBAjMR6/M2bN/+PHTtG1fpbVlaWAZjZiEoaAAHEOFQGcgECaMi0ngACaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAAPdDxta50rsAAAAAElFTkSuQmCC', -'w8/paste.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACU0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREat4cnKyAJAqAOILc+fO3QDlMwDZH0hxCKHyHCCAGIkp8Ak4cj8QPwBiByBuBOJ6qLQj0LEXqOVQgAAi26FIjgQ55iAQ9wMxSCwRqqSfFMcScgdAAJHlUDRHgkAClE4EOmwBVE0CKY4l5A6AACI3M82HOvIhEAegOxKaRkHsQpCHgI42oDQzAQQQtXL9B6TQZaCFYwECiFyHgtIhyGJ5IN4ATZtYHUMtxwIEEFkOhRY9jlDHgsACWjsWIIDIjnp6OxYggChKo/R0LEAAUZyZ6OVYgACiSq6nh2MBAogqDgVaBipX70MtB5WrC4H4ALRqpYpjAQKIiUqONIDW87B63wCKE/E5Bsmx6wnZAxBATFRyJKianACkA6GhWQ+rOokIOXuo5/ACgABiopIjP0BDaAO0liIqmpHMCCRkH0AAkdsowXAkmnwDKKSAco5o4vCGChDnI5tByB0AAcREjZBEkzeAOmIhnpA9j88MbAAggEgKUSIdCcpQhcgtKWxtWXT9hNwBEEBEO5RajiS3PQoQQExERnc/LR1JDAAIIGLTqAK08zYgjgQBgAAi1qHg9ic0+unuSBAACCCiHIpcl8McS09HggBAAJGa69G7x1RzJCF3AAQQEymGQEPWAVr7JNIjJGEAIIAYh8qIM0AADZmxJ4AAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAPhUa4lF02ewAAAABJRU5ErkJggg==', -'w8/pastechemdraw.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAASYSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBDVHPrq1atlf/78ed3U1FTFyMjITG2HAgQQIyk1U0dHhy1QvSfQIb+AmOHv378M//79+2Nvby+jqamZ8PTpU3Y2NrbPPT09G+/cuXPX1dWVAeh4mHZmJiamtytWrFh97dq1p6Q6FCCAWEhRzMfHt8LW1lYK5ECQB4EWg2lubm6GvXv3Mly4cIHBzc2Nt7S0NAak5ufPnwwwD4HUPnv2jGHVqlXKQLEGoL63pNgNEEAkOZSLi0uMl5eX4cqVKwzMzMwgPlj8zZs3DBwcHAzm5uYM379/ZwCGLFge5LjPnz+DQp1BQECAQVFREcQ2AGpRBmKSHAoQQCQ5FGQhyCEwy69fvw5J6ExMcBoUwiA5GACFpqSkJAM7Ozs4GQD5rEBhNlKjHiCASHIoNE2C2SCLQaEEchgoen/9+gVnw2iQWlCyAHng69evDF++fAGxQXaS3GQDCCAWcnIgyAEgx/Dz84MdBAplaWlpcPSDAMyhyB4EOfb3798MnZ2dxps2bcpkZWW9DeS/ItZOgAAiOURhGQnmWBAAZRpra2twiIHEYBhcrEAdDOKD0rSgoCCDlpZWNJDNBCwhKoAx8YgYuwECiGSHIjsE5ghYknjx4gVYHDmJwNSAQhNYaoAdqqKiwlBQUBAJjAE+Tk7OQmCM3CZkN0AAkeRQmANhmQaULkHRDiuGQCGGHu0w8OPHD3BJAANKSkoMmZmZ3rt3734IVF8L1PcOn90AAUSSQ0G5FhRSoNABsUEOhYmBHIeM0dMqyHOwogsU4jw8PAygog4ItIBYAYjxOhQggEiOelDIQHMv2BHATAEWAzmKhYUFJdcj08D0CKZBZS6IBsUCKDMCPQkqqtgJ2Q0QQCQ7FBSaIEfCHAVif/v2DZ4kYFUmemYCRTuoqII5HsYGOvQ/McUVQAAxkRr1MEeCQhJkOQjDMg4sDcI8AAt15DQLY4NCGDnTEQIAAURyiMIsATkK5iBYJoM5HlsahYUwLORhHiTWoQABRLJDQRaDQhRkEchSGA0DoAyGHnrIyQDGBmUkWFFGDAAIIJJzPcgyWIMDFrrI1SoII2cibEUcLJmQEqIAAcRCTtUJizqYo5FrKVDGQg5NPE1GkhwKEEBkRT0sLSKHDAiA6nqQHErLHC36YWKg5EOKQwECiIXcXA+zENmhID6ofMToRmApW0G1GKztQAwACCCSq1BYgxmW20FpEuZYkBgozeKKeliygXkMve2KDwAEEEkOBYXWrVu3wNUfzAKQw0A1EyxJoEc9MW0HYgBAAJHkUGC/aOa2bdtAXQluoMP+QRsbv62srNRPnjwpgFwCoIcoetSDkg+oOgW2npiJqXgAAoikXijQAlBw6YEcCioEoMK/gUlBE2iODTC9iWKrDtEqAJC+H6DeKzDzsQI9+hBYLS8Fyl3GZzdAADEOlYFcgAAaMiMlAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhPyHQCpaCrgAAAAASUVORK5CYII=', -'w8/pentane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC', -'w8/plus.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABUklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRGreHJycgOQqkcSOjB37lxHfGYR29YACCAmajmS1gAggJiGgiNBACCAhkwaBQigIeNQgAAaMg4FCKAh41CAACKpeAIWPwJAygCPEnk0vgBQjwMe9Q+gmCAACCBSy1GQI/dTUX0jEDcQYxBAAA2ZqAcIoCHjUIAAGjIOBQggUtPoBSDGV3fHA3ECmvpCApmJKAAQQIykDEAQqkJp2SgBCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAFEkkMHcogSIIAYh8r4KEAADZmoBwigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAADqYn5SNHiO4AAAAASUVORK5CYII=', -'w8/propane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==', -'w8/protein.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAR3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsVCi+cePH//fvn3L8O7dO4bPnz8zfPv2jeHPnz9gOVZWVgYuLi4GXl5eBiEhITDm4OBgJNcugABiJKd4Ajro/6NHjxgeP37M8OnTJwZGRkYGJiYmMA3DyABkBw8PD4OMjAwYAz1AsoMBAogkhwLVgh147do1cOgxMzOjOA7ZkeiOhTmYk5OTQUVFhUFWVhakhmgHAwQQ0Q4FRun/69evM9y6dQsceiBHwhxErEORHaygoMCgqqrKwMLCQpRjAQKIKIf+/v37/4ULFxgePHgATnuwqAbnRiQa3aHYkgCMBmFxcXEGHR0dkJkEHQsQQEzERPfNmzcZQFGO7EgQDYt6EA0SQ8YwdbjEQXpevXrFcPfuXbAdhNwBEEAEcz3IgSCHIluCnnnQQxMWyvhCFAZAGRKW0fABgABiIlT8XL58GafDQKECC03kkEIOPWQ96CELU3vnzh2G79+/4w1VgABiIhSaQMeipENcaZGQA9EzHLIYqOx99uwZ3hAFCCCcDv3169f/e/fuYXUArrSHLo8t7WILdRD/+fPnYDtxuQcggHA6FFSQg2ob5HRHyLHYkgc2PdhC9ufPnwwfP37EGaIAAYTToW/evMEo0LGVm/ByDkt5Skr0g9gfPnzA6VCAAGLBF6L4cjc2C5HLU/SyFJTTQWxkGsaG8UG1HS4AEEAseOpzrLUMriIJ3eHIYtgciWwezIOg6McFAAKIBU/RhDNq0R1CTMgil5///v3DCE1Y7scFAAIIp0OxOQZrHYwlzeJqSYEcBHIkzFMwNnolgA0ABBDOzARsO2JEDy6HY2NjSxLo6Rbd86AqGhcACCCcDuXm5sbwLbrB+EoDbJUAerpGNwM5cNABQADhdKiAgAA4avA11XBFGb4YwFUigDCoR4ALAAQQTocKCgrC0xC2xgWuhjFZ3QyoWfz8/DjVAAQQToeC+jowx+ILMeQQQWbDMEg/DCOrQ1cLavnz8fHhdChAAOF0KKgxq6ysjGEJOsbXMMbmSGwOBomBGtFsbGw4G9AAAYS3PSohIQHOVKAyFVfUIzsOvTBHTw7o5SgMs7Ozgx2KDwAEEN5mHsiH2tra4NyLHhLYQhc5BNFDE51GNkteXh7kWLzdEYAAItgVAYWqhoYGVktxORadjU09SOzv378MUlJSDGJiYgQzHEAAsRCRIxnl5OT+g+p+UOcOudrDFq3o0Y+tJIB5WlRUlOhuM0AAEd1dBvr+/8OHD8GdMZAlsAYwvgYKekmBHKKgPhIwAEBmENVdBgggkgcgXr9+De7sgUIY2bHYGivYyllQ7QNyICi6SRmAAAggsoZ0gM2x/6DxJlAIg1rlyN0LWKMEPfpBpQcoPYKiG18xhAsABBAjJUPjoD7O169fwV0WUEMbVIwBxcChCRskA3WFQZUHiCZmoAEXAAggxqEyhg8QQENmfBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIMAAmqGgcFmPArAAAAAASUVORK5CYII=', -'w8/pubchem.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAURSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBBVHfr27VupAwcOfD158uT1b9++sVLTbIAAYqRGzfT9+3eWixcv3rh586YyOzs7A8jMX79+Mejo6JxSV1d34OHh+U6pHQABRJFDHz9+7Pz06dOZt2/fVgaZo6+vv1lBQSEGyGZ69OjRnAsXLgQzMjIyKCoqvlFTU7MWExO7Ra5dAAFElkM/f/7MCXTE07t37wqCQhDoiFNaWlrWnJycf5DVffnyhfPOnTvrb9y44f77928GGRmZn3p6ekrCwsLPSLUTIICIdujPnz8Zv379KnblypWbQMv5ubi4GHR1dWcoKSnlghwISpMfP37U+vTpUyArK+sdISGhLWxsbF+B6n6DHPzgwYOpV69eTQSawaCsrPzF0NBQAujJb0BMlAMAAogoh75//14YFILAKGYXFBRk0NbWngEMnRI+Pr6voOgHim8DRTfQwS/5+fk3//37V/Tdu3eef/78YWdmZv5jamoqCEqnQE9wP3/+vPTSpUv1wFgBJYmfBgYG0kAz3xJyA0AAgRM+IXz58uV5M2bM+A/MMGuAIcIKEz906NC7zZs3/wcmgRhkcRD+8eMH46tXrxTPnz+/A6QGmNEqkOWuXbs2AWQmyGxi3AAQQCzEphFQSKqoqESCohLE37t3729gKN1xcXER4eDg+IeuHhSloqKi94HYQ0RExA4YIweBYtfl5eU3guSAdCkw9POBme0nMfYDBBBRDgUZ9u/fP1CRww106Adg5ugARukvc3NzTWL0A5PJIaDjlIDRbQ0TA4aqEKhEIBYABBDRIQoKfmAmAZeHwMxUDgxJZlJyLTR076ObSSwACCCSayZguWkBzM3/sUU3yUUOCSEKEEBMpBgKytnATOMATHNH6V3XAwQQExmh8ANYZapQw3JSoh4ggEhyKBMT0x9gaC4GNj4k6B2iAAHERIrvQVEPKpy5ubn/PHv2zJieDgUIIJJCFFhfc4JoYM2kfwYIQM06YvUCC/yG69evT0DyODMpmQkggIgqnkBVIogG1d0gWkJC4hqwcRFw+PDhp8bGxi6ysrJ7cekFVZtnz559C0zX7F5eXnCXAavb11AHsxPjBoAAItahQsBGCQOwqlygqqoaCyqagM25jUCpAKAj9gDFv8nJyaWLi4uvBhbkwkDLWYCh9ef+/ftbgNWoIbAG+wh0JAfMPFAD5tatW5uBjRiiQxQggIhuPYFqI2D9XA6qoYCN4WVAh6bw8vKCKwBgq2g6sBESDqy5eIE10AdgY4QLqI4FlKaBjWdtoAduwZp9sFYUMHZAjZKdwKo0mphGCUAAkdQeBbXknzx5kgNsnPSDWvCampr7gW1RT2Dm+oneXoV5AgSAnhAHhjoo5HWAVS+ogV0J1NdBSv4ACCCyGs6gtum9e/f6gS2ffFCDWEND4xQwSTiBmn3oDgZWt1uBzTpHYJpkAKbrTmAoVhLbBkUGAAFEUVcE5GBgKE0DNqYzQCEMLA32Ax0SBMrRQAceAOZ0HVAPANR+BYrnovcASAEAAUS1zh3QUVuAIecOSnug6IV27jYDQ9ufnBBEBwABxEjN8VFgO4Ad6NibLCwsn4Gtel1qFvgAAcQ4VAZyAQJoyIyUAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABACF7nps6Bf6+AAAAAElFTkSuQmCC', -'w8/reaxys.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAFRUlEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAAsRBS8OrkqSMPVq615pGXYfj99RsDEysrw68PHxn+//3LwMTCzMDACPIjobKUkeHvz59ApUwgJphmYmNjkPPzOSpsaGCDTydAADESKqhPl1b8vz13AdhANiEhBjZ+foa/P74zsPLwMHx59IThz9evQEezgB36/+8foFv/M0DMZAQKgTAzg3yQH8PHm7cZ/v3+zfD3O1Av0AxOCQkGNj5eBsupExnx2Q8QgDAyVgEQBIDokYFGEYWzNfv/v1Nb5axoRWal/YDDbY/jcZddkDAGUlV/UrkzBpRzPHdAPQjQroVbNnhr0YwCZWIpRbiSzA63KvRSwkwz3jNE7yhNChxKwWudvfgTQAQdyMLFxcAuKMjAxMkB5rPx8QF9Lw6MXhZwdP/59o1BzteL4evjJwwfgY74+/0nOIT///sHdgxI3bP9Bxi+PHgEZjMyMzMwiTAzfLh9h0HcypKgAwECiKAD+TXUGCScHBiYgVH8D5juPt+9y/D78xdEGgFG0NtzF8BsbmlpBikXR4ZPt24z/Pr4ieH7y1fAkP4DNEMdHvXM7BwMPIpywBD/ysApJUXQgQABRNCBr0+cYri7aCkDMxcnJNuzsOLIFIxAx/xmeH/5CgO7iDDDH2ByAKU/FnY2cKZ6A/TEvx8/GYQM9Rkerd/M8BMYvezCQgQdCBBABB0Iyhws3FzgNEhYLSvYYb8fPgLzWbm5gUmAiUHC1prhNzDtvr96HRj9P4D4Jzh5gKKcEAAIIIIqwGmJBAAqQsDFCRCAihZQ1N6av4DhzelzDPqVZQwfbt4COvo7OMPB1OEDAAFE0IGg4oSiNiMokQK1c4qLMdxbuZrhx5u3DFzAIoZDVIQoBwIEEEEH8iorMfwHJnRKAKhQ5xQXB5aDf4DuZQRmnpfA0P3FwC4kSFAvQAAR9AIwx9qAyi1KACjn/gLm/G8vXoCLGXBRAy7cGQnqBQgggja/PHT4m5CBPsM/YMFLXvD9B2cyTmCU/v9NekwABBBBB2pkpTMLAx0Iyp3kpkE+VVWGr8+eM5ATEwABRFAHKx/fJW5FhTZQlUZqjobl6q9PnoCrNVDUkgoAAoigAz/fvvNLUEPjHJ+62jtSM8u/X78YeBUVGH68fkVUjsUGAAKIiZgo+vP921opZ6cLoMKVlLTHJigALKA/A0Oe/GIKIICYiLEIVPIL6etmCRsZfCM2oYPqYFDd/BcYigxkJA0YAAgggg4UsTBnELW0YBDQ1b1p3NYyjx2YG0HVFSFPsfLygBsEf4DNMGKKE1wAIICYiEnkYAy0BNgIKDLtbjvILSvD8A9UjeF0339ghmABN1j/AAtkShwIEEAkpVygo34Dqyhv446Wg5ySEuAaAquhwLQKqjm+PHwE6RZQAAACiInUMu3P129fgQ1YL5OOlovAHPoV5EhQUx5FGbC8YwRVwBSkPRgACCDS8z7QkcDi4xuwK2AAbPJrqaelnOeRlWX49f4DuPUCqm9BRctHYIuZkZRcjwMABBALJZr/fP78SD4owB6YIeJ+f/1a+Pb0GeW3Fy+D+x/gXhyo3gWmX1ABDwplRqQQBXegCGU2IAAIIIocCI7yb98+AztMU1XiY9Z/f/ZcXNrTPQjYEK36fPc+03dgAf3z1WtgaxzYrxEQBHc54Q4EOk4hPJSgFQABxDjYxwcBAmjQjywABNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBgA/u/aOQD290cAAAAASUVORK5CYII=', -'w8/rectangle.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yY8fPzIcPnxY6cmTJ4tfv35t8urVq1+gKpeRkZEBnUYGyGKwKhqbHiEhITZtbe3zVlZW0UD2XS4uLpxuAQggRnx1/alTp1SPHj265+rVq3JMTEwMbGxsGI7DxcYGkB39798/hj9//jD8/v2bQVFR8XFGRoaLqKjoLVx6AQIIb4hev3597pUrV+QkJSX/BgUFlR45cmTt5cuXOdjZ2SmKxp8/fzIAQ/Kng4ODx/r167vu378vu3379hVxcXFGuPQABBBehwINMGRhYWHw9vYu19DQ6D99+jQDNVpboNAEeVZTU3MmkPtp+vTpy4ABoopPD0AA4c1Mb9++ZQBFuYiIyA6QwaCQwBe1xAKQGSCzQElJUFDwEoj/7ds3vHoAAghviIJCDxSiM2bMADv4169fDJRGOwhwcHAw3L17l6GkpAQcuszMzAT1AAQQCyGfg8CPHz/gfGqEKCz6v3//DolWJsKlJEAAsRBV2DJRr7iFeZRUTwMEEMGoJ8ZSUh1JDgAIIBZaGk5NABBATJQ6EldhT2oxRkg9QAANmboeIIDIdii1u9mEYg8ggFiILUqoVTzh8iAhcwECiIkYQ0EFNKhlAyqYqRGSMA+DGiWgSoQYzwMEEMHMBGrdpKenM3R3dzOoq6vDC2lKwd+/fxnExcUZFBQUwJ4nFAAAAYTXocA2ItgAoOPsgI0GhsePHzOwsrJSxaGgut7U1JTBz89PERSynJyceNUDBBDeNApsMV0GNpotd+7c2SEgIPDi5cuX57m5udmokouZmH6/f/9e/c6dOzNA0Q9s9t3Dpx4ggPA2nIGtJ7Vp06btAbUXQY0RWOMBW8ueEB9dHESDoh/UjpCTk3sJbDg7Atu913G5BSCA8DoUZAgwFJVBDeZLly5pfv369ReuhI/cekd3EIxGlwdmUDY9Pb1blpaWgcDW/R0+Pj6cbgEIIMahMuwIEEBDpmYCCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAAIlCY255Y4QAAAABJRU5ErkJggg==', -'w8/redo.png':'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', -'w8/ring3.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==', -'w8/ring4.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC', -'w8/ring5.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC', -'w8/ring6.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==', -'w8/ring7.png':'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', -'w8/ring8.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==', -'w8/rna.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADPUExURbm5ub6+vre3t/7+/ru7u9LS0ri4uMDAwLq6uvz8/L+/v/T09L29vfHx8fv7++zs7Ly8vO/v76ioqJycnP39/efn597e3ra2tqCgoPPz88LCwuLi4sfHx8TExOTk5NXV1dvb23x8fHZ2dqSkpMXFxdHR0fX19e7u7o2NjYODg+rq6v///8jIyNnZ2d3d3a6urnV1ddfX15CQkNra2rW1tdTU1I+Pj5iYmMzMzMbGxtzc3Ovr6+bm5pSUlNDQ0M/Pz87Ozo6Ojvf39/Dw8P///zkY1nQAAABFdFJOU///////////////////////////////////////////////////////////////////////////////////////////ALLusTgAAAGPSURBVHjaYnAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggnEoF+dFFAAIIl1InWVZ0IYAAwq6Uk1/FxA5dECCAsCnlFDTlYmIQRBcGCCBMpcy8rIwMHOzSzOgSAAGEoZRZgZGJjVHcQQTDDIAAwlBqzMDEJYXVAwABhKFUgEXGWhKrUoAAwlDKosONI/wAAghDqZCtKg61AAGEoVTCQNHcEKtSgADCUMrL5qjMgzViAAIIU1CaR4CDkYEVUylAAGHTz8IlpGGkiyEMEEDYlMrx62sqmWGEGEAA4UguWsISVuiCAAGEXak2n4W4PbogQABhVSomKsvAZIMuChBA2JQK87AwsbHyoQsDBBCmUjlGAQYmRjEMlS4AAYShVJSRg0FKnpcZ0zKAAMJQys7Ersctgs0HAAGEoZRBxpkZe3IBCCAMpZZquLI7QABhKFXHWWQABBAJpQtAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgAAiQSlAgAEADs28LxBPmkAAAAAASUVORK5CYII=', -'w8/rotate.png':'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', -'w8/rxn.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEDUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCr8OjRo/83b97M8ObNGwY/Pz8QZqSnQwECiAFU4BODk5OT/9+4ceP/o0eP/oPYX79+/U+sXmpggAAiKeqFhYUZZGVlGQ0NDRnOnz9P1wAFCCCiHYrsOAMDA4YLFy7Q1aEAAUS0Q0GOO3bsGIqjv337RreGAkAAkRSib9++BWWm/1xcXODoB2YwuoUoQAAR7VCY45CjHxbC9AAAAURSZkKP/sePH4NDmBi9ly5doiiZAAQQSQ4FOo4RPfqJzf07d+5kePfuHdmOBQggkmsmkOP27t0LZltZWZEU/R0dHQz/yWypAwQQyQ4FRT8sFJFDmBi9wBBl2LBhA1khChBARFWhoOoT5CAY+PjxI8PixYv/37t3j+HXr18M8+fPZ1BXV8frWJj+rVu3Mpibm/+XkpIiqQoGCCBGYmKiu7v7/82bN6mWg0VEREDJgCSHAgQQUSHq5uYGCgU4/9y5cwwgh0dGRoL5ixYtYggKCmLg4eHBqv/v37/gzARq0IAAsKIAVxagDEmsQwECiCiH6uvroxhoZ2fHUFFR8f/nz58M379/B5WxDA4ODgz4LD5z5sx/mEN9fX0ZSHEkCAAEENnt0ezsbAZQs2/Tpk3gEFq5ciVRVSowLTO4urqS3EQECCCyHQps7oFDsrS0lGHSpEngaAU5lhCIiooiyz6AAGIh16Gw1hMoRGHpDlRsJSYm4tQTGBjIIC0tTVaDGyCASHYoKHpBIQfKTCDHwdIdcgkBCmlQeWttbc2InNPd3d3JLikAAoiR1IoCWGb+h3VHcAGQPCj9ghraoLQMyjjAjPefnZ2d7O4LQACR3CVoaGj4f+TIkf+vX7/G2xUBdVXmzZv3H6SeGl0RgAAiOTOBWkygmqipqQlvLgeFYnh4ODwWKK0kAAKIrFwP7DeBGycgBxNqw4JKBVAmAzmWkh4BQACRnEZTUlLAmQXUEgJmHAY5OTkGUMjhK8BBDpw6dSo4NkAelJGRAetDKlsJpl2AACLZoY2Njf9BFoKKIViogkoAUG0DzOV4HQzU9x8UutAWF7yxAqoEgObhdSxAAJHsUGDR9B/asWNwcXEBY5DDQeUpyMEgx4OKJpDlwCKJkZjiDlgdM9TV1eFVDxBAJDsUZDAoykGOQ25Mg9ItLLPBylhQEgGJR0REgMcDkM2AqYPRwNoNr6cAAoiR3KFxYKj+B9VOIEvQC31szTpQmQoCsOYiNMQZ1NTUUCoGXAAggBipMYYPCyFQKCKHNAxwcnLCMw8ohEltOYEAQAAxDpXJBoAAGjLDjgABNGQcChBAQ8ahAAE0ZBwKEGAAsYK8GTAhlXcAAAAASUVORK5CYII=', -'w8/rxnmap.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADGUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQRQ5NSUnhBWIWejgUIIBYyHQgN5BinjNnzid6hShAADEOlcwEEEBDJo0CBNCQcShAAA0ZhwIE0JBxKEAAsZCR4xWAVAIBZQuAJcIDajoUIIDICVEBIK4HYnsscvpQOQFGRkYGdEwJAAggsoonYKgWgBwKDLVAsCFQRyQnJ68HUgfnzp07AaYWKLYfSDngMMoRaMYBYuwECCCSQxTqqAvIoYYW2hfQtCwE4g9AxzPCMJBfCFV3gVh7AQKI5pkJ6LAFQOoBMGSRQ9UfiBuBch+INQcggOiV6z8QKYYTAATQgBdPxGYygAAaMuUoQACR61AHHFEHKjvjsYgrYIn2eFIsBAggkh0KzBQG0LKyEYs0SCwAqCYASX0/NNcjF0OJUHUJxNoLEEAklaPA8hNU/NwHFS/Q3IzNIyBHzgdiQ2hIgspRRzSHwjx8HqQOKAcupvC5BSCASA1RUIG+AZcjocXRBlAVClULcgDIgflY1F2Ahux+oKMVCFkMEEBMJIRmP7RALySi7CyEpkOQHlDtpQB0TAOOMhbksfVAeQF8ZgIEEBORjgyANkQCSSikQQ6E6QOFXD5y2kVybCKU2Y/PMIAAYiLCkQbQNJcINJToFhHUQ45IDgA5aD40bWLU+aCSBNqGwAoAAghvZoJmHlBm2Ai0uIGccgyas0GOVQTiAmixZIgeM1APgOwKxNZQAQggQiEKK1oayCxvUdIh1JwD0IyGLXOB0vZ6aJsX3B2HyQMEEAue0IyGFuyGVKhYCqG5ux+Jja9cVIBWHvD6FSCAMKIe6EBQf/0vkF4D5AqD2pdUqgVBjWoBYMg54lIAcwsoyQHdgJI0AAIIW9SLwtwMSptUrK5BHk4EOQYXhgGQI4GOFULWDBBAWDUAo4ULn4EDgQECCFdmEh/IlhIwNLnQxQACCKcPgKEqNZhCFCCA8EoCHcs2WBwKEECEytE/wGhgZBgEACCAhsxoHkAADZmuCEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAB2+2loyg9nNgAAAABJRU5ErkJggg==', -'w8/rxnmap2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEL0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQC6UGpKSkiAOpv3Pnzn2DLkfNZAUQQIzkGAZ0HDuQYgU67gs+ddR0KEAAgQ0jBScnJ3PRymx8GCCASHEgB60DAR8GCCBiHclOy9gCms9ISA1AANHMkdT2DEAAsRDINMzADPMT6Nh+ILcAiD8AcSFQbAG9iyeAAMJbjgId9BfoSAcgMwCIFYE4EYjrB6IcBQggYsrRD1BHPwBSD4AOnw/EBkD+BWIsAKpVAFIKWKQeQM0kCgAEEMGaCeYgaMiCwAYgjichMECxsR8aEzC8HypONAAIIGKrUGTHTSTFEqBHJ0CZgUC2IyiNQ0NzAikOBQggYh26EOY4pBA2IMGeA0AMUy8AciipaRQggJiIDBWQ4z4AHRdAZvTjrsMZGXFiYKkjAlMHEECktJ5AoeqPxE4gQa8AAT4uwAxjAAQQ/toALfcC8Xsk/n2kEMaX6x2Q9UHF3iNlTqIqBIAAYiIhU8CKJ+To9yeiaFoPzUDIAMRfD5UnCgAEEKkNZ/ToD8DjSAGoIxeg12RQ/gKoPFEAIIBIdSgoFBNAjoBmsAd4or8f6qhCHDFUCPXQfGIsBgggkhwKjf4LSCG5EFv0Ay1PgKpxJGAkSD4Aqh4vAAggcvpMyI7bgB790PIVFEqOQI99IOBxkHwgKPQJlcsAAUSOQzdAQ6EAGr3odf56aAvrApGxBKoMGgmlV4AAwttnAhW6ODJKAjTUYGACUpoD1eMO5AQA0IxAXP0ugAAi16HzoYV2IpQGhcZCUutvYstREAAIIHL79Q7Qptt6aMgKECpTyQHAABGEsQECiIVEjQbQZhq2ghpUc52HNjhAobuBGgEKYwAEEElRD01/B6GF+AMsBbwB1BP90DSXSI1oBwGAAGIiI8o34CpqQDkYWuuAui0GxBbmOGJPBJkPEEBMJGiE5eTz0BY6ofKR6MIcG5gzZw7KEBFAAJGTmSZA26YNRDq2H1rmkhKaUuhiAAFEdBqFZqTz0NZ6ITRUJwId1EBEBuyHpl2Q3odQGtxxRK8YQCMywND8gW4OQADhdSiwhc0INOg/kiEwtiG0dzof6oBGaOb5QMDBoOpWHqnUMEAfJwCq4wY69Cu6foAAIjiaB3QsE9Cgf0i5HlYngy2ApsF8qOUboKXCAWK6wlDH7weqFYTyxYCOfIVNLUAAETXsCHMs1OD1SCHyARqNF6F8fWjJIACVA0VrIrKjoWaA9NvDqlqgvCFQXALoyBe43AAQQESPjwIdywI08A9SXW8PjUpC/Z8LUEfDBiIeQDEo5E8B8T4gBqVLvC0tgAAieSAXSyUggJQcHLCMslzAk3HkgA58RIy9AAFE1lgl0AJWCutwCSDmJMVOgACieIAVaCEvsTUNEIuTaw9AADEOlXkmgAAaMtM3AAEGADgui7Z4EMnPAAAAAElFTkSuQmCC', -'w8/save.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACnklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBBDJDk1JSWFhZGRkoAQDzSDZXoAAYgDlemJwcnIyM7VDCWgmE7H2AwQQsY7kpFWUggKAGDcABBAxjuSjdfoD2sFKyB0AATTgjiTWsQABhM+RkvTO2UA7uXG5ByCAcDmSd6CKIaDdHNjcBBBALLQoX4GWOeCRfjB37twHuCSBcj/mzJmDIQ4QQIzojRJgGScNVPyUAkfuB1IOBJQ5Au04gMcMQaBj3yOLAQQQthD9S2HsgRwZCHTIBhyOOA9VcwBPqL5HD1WAAGJBC00+oKIXOCxoAFL2RDr2AAG5fKB5ILM+AO0LxFEDcgEd+w3GBwgg9BAF5fRPOCyoB+IFQPyQgCMPAi3/gEd+IxB/hJkJSs84kgGokoE7FCCA0HO7Ip50859AJiEnPeM1E9ltAAHEhJY27g/W1hNAAA2ZZh5AAA0ZhwIEEAsNapb/xJSVpAKAABoyIQoQQEPGoQABNGQcChBATGjpS5HMdLkej1wCNcpfgABCD1E2Ms0JADpmPjZHAqn5ZHpeGJkPEEDouf45BZ4GhRwyPx4kRoF535E5AAGEEqLARsAnoGUSZBiaCHMsssOh9AJyiinkBgkIAAQQtsxEcrcY6JAFSI5FaSkB5RLJiHZBdDGAAGLC4pOnQIX8ZDp2ApLQBVC7lJw4R280gwBAAOGqmf5hEQM13eYDPfGABDvXo6VbZCCAZC5KnwlI/UBXDBBALDh89BnUNgWGEnLmMiQycxwkwSONQDsuIPdCgXZ/xaYQIICGTL8eIICGzEgJQAANmbEngAAaMqN5AAFEtEORHMxCTwfCMEAAMQ6VWRGAABoyzTyAABoyDgUIoCHjUIAAAwCquOzXqgdXzAAAAABJRU5ErkJggg==', -'w8/select.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABm0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDKUXw4OTmZcaDdAMIAAcRIqMBnZGSkW4DhAwABNGSiHiCAWEhRDEwG1K5vD8ydO9eRGIUAATRkQhQggFjI1OcIDIkD5FoKjJkGIFVPih6AABoyIQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRQDtUnVQNAANHdocAyNAFIBZCqDyCABiJE48nRBBBATHQOTQUg5UCOXoAAoneI5pOrESCA6O3QAHI1AgQQuY0SA2A0kqwHiBXIdShAAJHUwqdBexQEBIEtsQ+E3AEQQIOhwE8gRhFAANGlz4TU/rwAxIlA/ADKLwCxgSGqSMgdAAHEQqdQA5WdjUAHNSCJFQI9sBFIzwfSoCILb0McIIBoHvXQsjMQzZFgAO0lGII6oYTMAQggxqEyPgoQQEOm9QQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBgAKUdefhOjYOqAAAAAElFTkSuQmCC', -'w8/selectall.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACzElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAUexQRkZGDJySktKATRwdkwIAAojqIZqcnJwApPKBtAA1zQUIIFpEfTwQgxwZQE1DAQKIidLoRgtNBSBlAMSFoFClpkMBAojaIQpy3AYgXgDECkCHG1DLYIAAorZDQelz4ty5cz9AHUy1UAUIICYqZ6IHQEdegApNBKVTamUqgABionImmgjjQB38gFqZCiCAmKgUmrBMtAFNaiK1oh8ggJiomYmgaRMZbKBWpgIIICZqZiJ0QWpmKoAAYqJBJmLAEv0UZyqAAGKidibCEqpUyVQAAcREo0zEQO1MBRBALNTMRNDorYeGXiJQ/ABSpuoHZSo8SQQvAAggJmplIqAjHIDUeWgINwLxeqAYyHEC1MhUAAHESE6/HtQYgTXngNgRGoogfiPQUROQQnc+1OGJQAxy7H4gVoTFACl2AwQQC4WZ6AI0FEGZxRDogAdoRVMg0MGgZLAe2lD5AE0WC0i1DCCAyApRYAselInuQy2GhyKeTAcLXZAjLwDVG5IaogABRK5D+2FRihyKRJQSAVAHO4IyFSl2AwQQ2FekYqiF5BZpAtCMR5KdAAFEdmaiBiDFboAAoqgchRb466HJYAIwOgtxVLHzoenZkdxyFCCAmChwpAFSubkAmyOhuX8BtHgCZaj95CYbgAAiNzMZQMtEAWhIIdf1oAbKAmg6dEAS94d6igGaCReQYjdAAJEb9euhjmSA0vVIcgeg5aQDmjgymA/0yAFo+UsUAAggch0aiC9EkRzMgCVEQeoLQcXanDlziLYQIIAoqUINoCGrAE2jiQTarBgZihS7AQKI7MwEtcwQWo0mgBogOBxZgORIe3IcCQIAAcQ4VCYbAAJoyAw7AgTQkHEoQAANGYcCBNCQcShAgAEACzRFJ/iMF+gAAAAASUVORK5CYII=', -'w8/selfrag.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACI0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQABR5FBGRkasOCUlRQCXHAiTAwACiIkSR2IDycnJCkBqPTl68QGAAGKipiOhIAGIHaAOphoACCBapNF4IL4AxPnUNBQggKjqUGAoBkCZidCQpRoACCAmGoTmxLlz54JC9AHQ4VRzLEAAMVExNEFpEhSiC6BCE6EOpwoACCBqhigo9BYAQ/MDlL8BiA2olakAAoiJytG+EMaBOngDtTIVQAAxUTMTAR13AE1qIrUyFUAAMVEzE6ELUjNTAQQQEw0yEQOWUKU4UwEEEBMNMhE6oEqmAgggJmpnIizRT5VMBRBATNTOREAxASB2oHamAgggJmpmIqgDzwPxfiB7PcjR1MpUAAHERI1MBA3FfmjzDuRwQaiy+0j1P0WZCiCAGMkZ0gE184AOaAAy5aHpcz4oxECNEWDoPUBLGiA5UNIohIa2IUgNqfYCBBAThdFuAAtFoOWOyI6ERjkoEylCuSBHfiA3UwEEEFkhCuxqBEAdeAA9FAlkvPlQDwiSai9AAJHrUJCFF4EWTiAxXQtAHbtxzpw5C0jRCxBADCCHkoopLbxBDibVToAAYhwq46MAATRk+vUAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgAlFuN8C8/7xAAAAABJRU5ErkJggg==', -'w8/seq.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJuSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJmHD+MDycnJBUAsQIw9IHUg9eS6ByCAyA5RoKUJQKofiokBYLVQfSQDgABiItORDkBqPpSbAOQ3EFAPkoc5cD5UP0kAIICYyHCkAZBaD+UegNL1uEIKKB4AkkdTvx5qDtEAIICYSHSkADQkQfQFIA4E4gWwqEW3HMqHhfwCqPoLUP3ziU3fIAAQQIyEMkxKSgpytPoDMcjyD0CsOHfu3A9QB+0HUg5Q8YlI6uOBWAEUkkC1jkievY/k2Y1I6g/MmTPnADZ3AAQQCxGeqccilghzJBSAQuo91HJs6gNhDJA+oGMTocnHAIqRAVaHAgQQMQ5txBKioDR5AMmxsJyPHqL5UMeD5BORQhTmGYwQxeUIgAAiGPWMjIzIaQ4Ujeehlm8AOjQQWjbCHBoIFNuAVjrsh3ILgXITgGKgkAyAesoQKPYAvRzFBgACiCSHImWQ80gh4IDsEGyVApJHkNWDHHkBW4GPDQAEEMkORSrs5yMJLQBamointJiPVI7C0vgCXDUTNgAQQGQ5FGo5KJRAoXUBaKkhEUXbeWj6ngBUX4ivCsUGAAKIYDmKSyPUMlBGcySyKASpayTHkSAAEECMQ2XsCSCAhkwzDyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAJt64YPhN1TvAAAAAElFTkSuQmCC', -'w8/sgroup.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACt0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALLglGRkaSDEpOTlYAUg5ArA/EC+fOnXuBGH3EVuEAAYTVoSkpKSBX/ifgMJCjDIDYHupAAahUIrGOJAUABBAjNh8RCk2gIxOA1HwsUiBHLiDFAcSGKEAAMWEJTXYi9OlTw5GkAIAAwnAo0LKfROhzQOM/AOINtMxMAAHEghaaQkDqHYFoF4CmTRj4AMSgjLQfKOcI9OgHLGkZrhaUfoFiIP0BQLwA6kmCACCA0DMTMVkd2ZGJQAzKOPuh4nDHQtNxP1Imgzkc5jCQ5w4Q61CAAGJBi/a3JEQ7PE2CHIfm2IlImQ0Uwo1QOh/No0QDgAAip8C3R8840OLIEeoYA7QSAaR2Akg9EBuSm5YBAogchzZiy91ojsUHEolQgwEAAohkhwIddACP3AWoQ5DBfGh6han5AM1EJAGAAKJFXY+eOQSgjj2PVAI0QkOf6BoMIIBQaiZS63c8Rdh9aK7GBg5Ak88BUmomgACiVespEE86dICWDAmkGAgQQExoIcFLDVciZSx8ZeR8tMoALwAIICZqhzCouQd1wAOggxWRylBsIJ9YcwECCMVhc+bM+UiFAE2AFv4B0NBtAFK4HCxArKEAAcSEJUSYqZRO/ZGLJKiDiSlnsQKAAMJwKDBU/1LJoQHQxgd62r2ApyjDCQACiAlHOmOkkmP3IzsWykbOQBOJNQgggBhxlWPklqlAx4CiuB5L2YnejgW3F4gtRwECiAVfF4HCCgCUeeShmcoBqSUFcvREfFUxNgAQQIxDZSAXIICGTL8eIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAx8rRvU6ExAMAAAAASUVORK5CYII=', -'w8/single.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKOJkZGRZD3JyckGQKofiAPnzJnzgVT9AAFElxCFOnI/EDtAHUsyAAggJjo6UgCILwBxITnmAAQQE50d6Th37twP5JgFEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQOSGaDw9HQkCAAHEABokIxVDQ7UAiAXoZSdAADEOldE8gAAaMi18gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwCeIKhoGrTRJwAAAABJRU5ErkJggg==', -'w8/spectrum.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURT9IzH9/f////////+0N6z8AAAAEdFJOU////wBAKqn0AAAA7klEQVR42mJgJhIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABhFDIiBXApQECCEkhExaAUAgQQEQrBAggohUCBBAOhQwYCgECiGiFAAFEtEKAACJaIUAA4VTIgKYQIICQFTLgUwgQQEQrBAggNIUMcGXoCgECiGiFAAGEqZABppABRSFAAOFVyICkECCAiFYIEEBEp0eAACI6hQMEENEKAQKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAAwBppRCnygJdngAAAABJRU5ErkJggg==', -'w8/spot-blowingdown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDitywAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABg0lEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQhkIOEXkuUwMeIXRxgABCU8jKr8j0HwiY2MRYUWUAAghNoabAfyhg0kaVAQggVIWizP/hgFkYRQoggFAVciEp/G+MIgUQQCgKdZj+IwNJZDmAAEJRqM+LrI6FE1kOIIBQFLKzICsUkEaWAwggFIX83CgmyiHLAQQQikJZFDeyyCDLAQQQikI9FDdyayDLAQQQikJlFE8zoXgGIIBQFGqhKPyvgiwHEECoAY4ajiixDRBAqAqNkNWJo0gBBBCqQhE2hDo+dRQpgABCSxRIBiqhJgqAAEJLZqoIhYKoCRIggNAUmsC9w8SDKgMQQGgKpQT5oOrY0DIDQACh5xk1aIpkZkeTAAggjMwlxgxUysxsiC4OEECY2VVX4f9/CXYMYYAAwpavOTiwCAIEENEFAEAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGADPv66EeffprAAAAAElFTkSuQmCC', -'w8/spot-blowingup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6OjowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8SBLkAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGFSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggbAo5sSkECCAMhWKSrP/5THkwFAIEELpCTlHm////M4timAoQQGgKWTRB6oAqeVnQFAIEEJpCDab/EMAki6YQIIBQFfIY/YcBJhVUhQABhKrQnA2hUBFVIUAAoSrUEoEr/C+PqhAggFAUsjAh1P0XEUNRCBBAKAp1kdT9F2JHUQgQQCgK5ViRFLJKoSgECCAUhXoGSArZ1FEUAgQQikJhZKv/C6IoBAggFIWqKAq5URQCBBCKQi4UhdIoCgECCEUhN4rC/ygKAQIIj4lsKAoBAghFoQwezwAEEIpCHeRwZBZHUQgQQCgK2TmQFDKZoSgECCDUuBYWgKsT4EdNugABhJp6JExgZnLwKaOmHoAAQkvh+sZCEB+rKaClcIAAwsiF2ob8TLxK7Bi5ECCAiC4AAAKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEGABAoPUJVnlBdgAAAABJRU5ErkJggg==', -'w8/spot-circle.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAmmZgAAAAwdFJOU///////////////////////////////////////////////////////////////AGKl0HgAAAFQSURBVHjaYtAnEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAYShUE1RQ55cWwVAIEEBoCvl0Wdn+///PKsAhjqYQIIBQFYoJM/6HAEZmZVSFAAGEopCJm/k/DDCzMKEoBAggFIXsbP8RgJEXRSFAAKEolNFDUiing6IQIIBQFHL8Rwb8KAoBAghFISeKQlYUhQABhKJQG0WhKopCgABCUagihKROSh5FIUAAofqaEUkhF6qvAQIINRw1eODqeNDCESCAUGNGVBEeM5x8qDEDEEBoca3EIQBWx8YtiRbXAAGEkXpktVi4JDTZMVIPQAARnR4BAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgAAiWiFAgAEAodiBFKm9ZEIAAAAASUVORK5CYII=', -'w8/spot-crescentdown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAClUExURQAAAAICAp+fnwoKCv///8PDw4uLi/39/dnZ2dLS0gcHBwYGBgUFBQMDA7u7u/Pz8wkJCe3t7QgICAsLC3d3d1VVVSYmJnZ2dlFRUYmJiQ0NDTU1NW5ubmRkZHBwcIeHh/f397e3tzExMV9fX0RERI2Nja+vryAgIKOjo7+/v+bm5nx8fCsrK7Ozs8fHx2pqaoCAgKurq11dXUNDQxQUFAQEBP///31J1csAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABgUlEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgABCUcjJhsxT1UTmAQQQikImBhYkHrMBshxAAKEp5EBw+BlQzAcIIDSFhggOHwMTshxAAKEo1GCQQ3C0URUCBBCKQlYGHkEYW0GYQRdZDiCAUBTyMzAawdj6jMgONjMDCCDUcGRg4JUFe5xFhpGBgR1ZCiCAUBWqMzDwiMmzsrLpcDMwCKNIAQQQqkIJoDkMQDVcQIrBGEUKIIBQFUqCVUCAgDiKFEAAoSpkZUACiihSAAGElihMEOqkWFBkAAIITaGIEEwdszKqDEAAoSnUYoSbyIkqAxBA6OlRVABqoAqaBEAAoSsUZAZbzs3FgSYBEEAYKZyP0RQYP4xq6OIAAYSZFTilGRiU9DCEAQIIW55hZ8ciCBBARGcugAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABBgCePjGhpCQ+agAAAABJRU5ErkJggg==', -'w8/spot-crescentup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWjopcAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGDSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCJtCNWwKAQIIQyGrgOB/QV5WDIUAAYSukFWf6f///0yiGCoBAghdoSRI3f//LHroCgECCE2hOvN/KGBHUwgQQGgKhbmh6rg10RQCBBCaQiaYgf+ZpVBlAAIIVaEZB1whCyeqQoAAQlUoywNX+F8VVSFAAKEq5Eao+8+EGkIAAYSikB+kgIPlvxjYqSooCgECCEUhF/N/ZmZ5LnYuZWae/zyojgQIIBSFAiwsOkZglqkxC4cQikKAAEJRKPKfmR/KlGD6b4KiECCAUBQa/JeGs4X+K6AoBAggFIWGTFpwtgwfG4pCgABCUcgmjsRRQlUIEEAoCjWEkR3Mh6IQIIBQFJrzInHk/qMoBAggFIWc2kgcdl0UhQABRHTmAgggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBgA3fiNbRF8wqwAAAAASUVORK5CYII=', -'w8/spot-halfellipsedown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+PjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRjeb4AAAAzdFJOU///////////////////////////////////////////////////////////////////AHGevY4AAAFmSURBVHjaYjAiEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAGEqpCXEQnwokgBBBCKQi7m/0iAQxNZDiCAUBTysSErZFdElgMIIBSFAuzIClkFkeUAAghFoR4nskI2GWQ5gABCUajzH8VqPmQ5gABCUSiPopBFC1kOIIBQFAqhKPyvjywHEECo4ciBopAHWQoggFAVqiCrU0ORAgggVIXqrAh1nGIoUgABhKrQEEkhsyqKFEAAoSqUQLZaEkUKIIDQUo8GQp2oNIoMQAChKZTlhtsshSoDEEBoCnlY4CZyocoABBB6wjWABiWzEpoEQAChK2RkBlvOxqqLJgEQQBhZQYEFmIS0WYTRxQECCDPPcIn//68shyEMEEDYMhc/PxZBgAAiOhcCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAgwAP90wpHYv4TVAAAAAElFTkSuQmCC', -'w8/spot-halfellipseup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8whroAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFkSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCKtCVSxiAAGEqZBVnv8/vyIrujBAAGEoZOVm/v//P7McukqAAMJQqAxS9/8/uyaaOEAAoSsUZvkPBWqoEgABhK6Qkw+qjk8WVQIggNAUMjLDDPzPIoUiAxBAaArFheAK2XlRZAACCE2hBg9c4X91FBmAAEJVyMiBUPdfmg1ZCiCAUBWK/UcGkshSAAGEqlCCBUkdD4ojAQIIVaGSCJJCARVkKYAAQlWoxY6kkEUGWQoggFAVaqO4UQFZCiCAUBWKoijkQpYCCCBUhRwoCgWRpQACCFUhF4pCAWQpgABCVSiIovA/shRAAKEq5ERRx40sBRBAqArZmJABShQCBBDRuRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAIlohQAARrRAgwADnsqT2BolpWAAAAABJRU5ErkJggg==', -'w8/spot-hellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWGuOYAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFPSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAoSnkVePmkuOU0uCWEUJTCBBAKApVNNmY2f6DABMzGw8HikKAAEJWyM/E9B8BmJiUWJAkAQIIoZBFkv0/KmCVR1IJEEAIhVrM/9EBsyJCIUAAwRUyKvzHBOy8cIUAAQRXKPYfGxCFKwQIILhCYWzqWIXhCgECiGgTAQIIrlCdGYs6JkSwAwQQwtfSWHwtiPA1QAAhhaMqRjgqMyIUAgQQvpgRRI4ZgABCiWsOnv98UGV8/7lQ4xoggNBSj4CIhDjnf1lxbREBtNQDEEBEp0eAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQYADruK7+ajRtnQAAAABJRU5ErkJggg==', -'w8/spot-vellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYPWtQAAAAudFJOU////////////////////////////////////////////////////////////wCCj3NVAAABaElEQVR42mLQJRIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAgiLQg42Ng5MUYAAwlAoLsby/z+LsCi6OEAAoSvk5Rb8DwRKTKxoEgABhKZQnZ/zPxhwcmmiygAEEJpCPp7/UMAsgioDEECoCgX+IwFUywECCFWhKhNCHY8YihRAAKEq5EY2kR9FCiCAUBRKsiMr/K+GLAcQQCgKpVHU/ZdFlgMIIBSF2igmMisiywEEEIpCDWZkhewyyHIAAYSiUAvFZnZ5ZDmAAGLAGYxoAQkQQCgKGVEVKiDLAQQQnnBkQZECCCBUhXJIMcOkgiIFEECoCoWQTWRDkQIIIKJTD0AAoSkUYoamRy4utJQLEEAYKVxHCqROECOFAwQQZp4RZpGQYFHGyDMAAUR0LgQIIKLzNUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGAItVsXfzSWweAAAAAElFTkSuQmCC', -'w8/symbol.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABXUExURXx8fH19fYyMjISEhJycnPX19dHR0f///5SUlLS0tKampv7+/uDg4NLS0ouLi+3t7ezs7P39/Zubm+Hh4cPDw7Ozs5OTk/r6+sLCwoWFhaenp/b29v///+N16u0AAAAddFJOU/////////////////////////////////////8AWYbnagAAAehJREFUeNpikCEaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEELpScTYhBgZGBgYONn50pQABhKqUlYOBkZkNyBAQY2Bg5kFVChBAKEp5gQZysEPYnEC2FIpSgABCVsoGlGXmhvGYgO5gQVYKEEBISvkZgEACzuUBuphBBEkpQAAhKWUCKRWAc9lBXAZBhDxAACGUCoOl2BFSYiA+J4IPEEAIpVxAlzIyI1nIBQo0JAGAAEIoZQYZwoekVJQR1QUAAYRQCjSDEUUpMLiAIqxwPkAAoShlYGBCVQoUQigFCCCEUj6QsZhK4eEsAxBADCi+QPGWEMhFSAIAAYQaWIzIkceBFgcAAYQcBUBTGMWRowDFfhmAAEJSygoyhRfOFWBA4crIAAQQso08QHOY2JHt50ROLgABhJIIWfkYGIQgYc7OAjQTNcECBBBcKRckHXJBg1YUmA/ADERSAwgguFIWqLNYISIsEIUy0oiQBggghFIGKGBkhwYHBCCUAgQQslKoLDh8JBkZGRlQ4w8ggFBMhagFxzrMDiRTAQII1QFgtaBczc0IswOhFCCASCgyAAKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMABYEojZyOA2dAAAAAElFTkSuQmCC', -'w8/template.png':'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', -'w8/templates.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==', -'w8/text.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGxSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKU1JS9gMpByj3AxBfQOKDwAOouAGSmOPcuXMP4DOXmIYRQACRE6IfoJYLArEjmtxCoJghkBYE4gXUDFGAACLHoYGEQggo/wGIE6EhTBUAEEAspIYmIUfCQHJycgLUofFAtgMepQegGC8ACCBSQ3QiCWrjkZJDA5Cuh2J7KB+UvvPR0jhOABBAJDmU2NBESss4kwlQfANInljDAAKIlsXTRlBaJcLjRKVjgACimUOBjlhATXUAATRkCnyAABoyDgUIoCHjUIAAGjIOBQigIeNQgACiyKFYahx7HOoEkLgC5NgFEECMpAzpMDIywixWgNYqBjgK+o2wYgdalYI8oICk5gJUzQFiW08AAcQ4VMaeAAJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAKvCX+dy+c4IAAAAAElFTkSuQmCC', -'w8/tlc.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADLklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQojg3N/f6379/5X///v0TJsbIyMgAKzmQ2bgASJ6JiYkdCB5OnjxZk1i7AQKIJIf++vVLSENDg9PAwIAT6GDyQoaFheHZs2cMR48eFSJFH0AAkeTQP0CgoKDA4OjoSFE03r9/n+Hw4cN/SNEDEEAkORQUtcBQZfj37x8DMPpRohwWrTA2jI8sDwKsrKwMnz9/BkU/SZ4DCCAWUkMDZDnIkT9//kRxILY0is3RIABKNqQ6FCCAWEh1JMgCYEYAY3IBBwcH2LOkAIAAYiI16qnRNkBPIsQAgAAiuRwl1QJqmQEQQEykhsRAAYAAYqI0Cg8ePMiwYcMGcE6mJQAIIIoc+vLlS4aLFy8y3Lhxg+Hy5cs0dShAADGRE4pIFQDDjx8/wDQI0xIABBBFmUlKSorB0NCQQV5enkFXVxer+jdv3oCTxsOHDylyKEAAsVCSW0FlqouLC7x8xQb279/PcPPmTYZPnz4xREREMLCxsZGVKQECiORcj24JyPG4HAlKDiAHggp4UGb7/v072SEKEEBUb4+C2gEwz4BaSjo6OmAxYKuLgZ+fn+xyFCCAWChJo+gAVC2CSgBQCCorK4ND2tzcnEFaWppBUlKSogAACCCqhuiVK1cY1q9fz7B582ZwJoIBGRkZBmZmZooqDoAAoqh4QgfPnz8HOwhUZL1//56qVShAALFQK9pBQE9Pj+Hp06cMPDw84KKLmgAggEhu5uFzLCiKfXx8wE1AXl5eqjoUIIBYqJ3rick05KRRgAAakNYTKB2TahZAALGQagGoG/Ht2zdw34kcAOozff36FUyTAgACiCSHgspFkENBuRrUZyKnVwBigzyJXFwRAwACiCSHggp0UGEuJCREUdSLiIgQ7VEYAAggUkOUBRRt7969A1sEKwXw9ULRSwpQowTUjgWKkWQ3QACRpBgYmu9Onz7Ne+bMmZ8UFmfswKh/R4rdAAHEOFRGnAECaMiM5gEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAC8MDpHkUYVwQAAAABJRU5ErkJggg==', -'w8/tlcnumber.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACHUExURf///4iIiD8/P46OjqOjo52dnT4+PpycnKSkpIeHh6KiouDg4IqKio+Pj4yMjH5+fn19fYuLi1ZWVpmZmXp6epaWlomJicHBwUxMTJqamoODg3x8fG1tbURERI2NjZGRkWxsbJubm4aGhmBgYKGhoZCQkHR0dJ+fn6CgoHd3d2FhYYWFhf///1NaGcwAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAG3SURBVHjaYtAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBB2pWKCvLzMzHLMzMx8PHBBgADCrlSJAQ4k4YIAAYRdKSNCKStcECCAGFDsBFnJzCeIXSlAAMGVaiPbiaSUHa4UIIAYsNoJ4ohryXCjKAUIIOxKOYEkm5AsE4oDAAIIt1JRBgUmFFMBAghNKacUDzOzFLMAiM3GpIyiFCCAUJWKsEmDdYDdysDCxoHsAIAAQlHKxsQkAFPKwsbNwcSBbCpAAKEo5WBggytlEGJiEkHxFkAAobmViR+uFCMKAAIIrpQTolQaXSnCAQABhM1UbhlNhFJFuFKAAEIzFWwek6waNgcABBB6FID8zsTAwyfMwiLMosLCwaUKVwoQQFiUgn2P4koIAAggdAeAKQk2bixKAQIIrpRHg4OFhYWLH64SyZUQABBADJjpn4OJjYlNFNNUgABiICarQABAAOFRim4qQAChK+XErRQggNCV8qiDfcfFxcEljyYFEEAklC4AAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMAMOn4YmdrAldAAAAAElFTkSuQmCC', -'w8/tlctemplate.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACyUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKI4Pz//nICAgDQjI+MfEB9Prcby+fPnp319fUbUcihAAJHkUF5eXqmcnBwxHh4ehn///jEAHQyXgzkaJjZ79myq1s0AAUSSQ4GO+M3GxsbAysrK8PfvX4aJEydC0g8TZgr6+vWrSH19/VNqhTBAAJHkUFCogUIM5DAQBoVqcnIyA44QZgZSUtQKYYAAYiFVA8yhIMDMzMxArxAGCCCyHAoC3759o2sIAwQQyQ4FOQjkyMWLFzP8/v0bbwhj8yQMA9X+JsVegAAiOY2CwJ8/fxiAUQcPUVwhjA+AQpwUABBATKRGOyik+Pj4GKKiosAhhyuE8WFYqJICAAKIiZwQBQEpKSm4ZbhCGFv0kwsAAoiJnIyEDPCF8KVLl6jmUIAAIjtEiQlhkIORwffv38kOZYAAoihECYWwoaEhXPzLly8My5YtYzh//jzJ6RMEAAKIhYGKAD2EkcGvX78YXr16xfDp0yeyzAYIIBZyHIOr1YQtpJ48eQJOu2JiYgyhoaFgmhwAEECkNkrAUQhKg6BykFBZ+OPHD4b169czCAsLM0RGRjKoqKgwEGge4gQAAURqgc8KbOoxcHNzgx0JyuH4QpiFhYVBTk4O1DwkK10iA4AAIsmhwIbFM2Cxwwis/v6AHArM1eLAEGbGFcIgh/r4+FDsSBAACCCSHNrf34/S2qmpqXkBDC1xfCEMqv/JjW5kABBAFOV6QiGMrfUPbZCQ7HCAAKLIoYRCGD0jwqpYaHuAlRS7AAKIquUoegjjauaB7AUWW89IMRsggBiHyvgoQAANmX49QAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA09lh7Bw8AlsAAAAASUVORK5CYII=', -'w8/triple.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABdklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADGA6np8mFyQnJwcAMQC1HIPQADRJESBDkwAUuuBeD+yY0HiUDmSPQUQQEw0cuR8KPfC3LlzP6CJzweyDQh5Ch0ABBATDR25AOjIRBziF/B5ChsACCCmAXAkXnFcACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIIBISaPIjgmgpyNBACCACDoUaNkCIOWIZukBUCMCj2Oo6kgQAAggshvOuJpkQHEHWrgHIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA2mVFgTpYWXoAAAAASUVORK5CYII=', -'w8/undo.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEOElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCzEKPrF/EPoPccvXpavEP5fbvb3/G/5fkF4X1h4/qCqBwggRmJy1EuZ1+7PbH/IMX9iYGAE8v+xs76VnqF4nPsvdvUAAUSEoW+47wU+qHir8oONEeHBf3wvlaZpzRB6i00HQAChGfqT+RsHwx+OP5xQN/xjfsl3q+Re+nvhvwys/3m+/GH9x8TI8JvlFzAuuH8qr9CvFH+OaShAAKGF6VejZ2lPeMWXqu3kBofYG8lTy+7b/GFkZOD4K35DYjXzZ6bP/zg+2b+yeyfyhf1WNNN3rnzeX+iGAgQQmqGsXKwSL00fe/0s15nF8/eJzpWKx5Z/gL7m/Sp1WGqW0jbOX+xArz2/e5/9puV74R8sTwNfTOa6zowWhgABhGYo4zdmEQamj7yXullec7y+NvWV+ncWRgaxl8pdQreldvJD3SSxk53h/9m7GW/EP4rerRMqFEYLAoAAQjP0P8PfN9zsb0U/ch9YDeIxAkOS76NOpuIJ7hdscPcw/hXcrhb4a/Pn+B+sz1xfaqIbChBAWBL/P7Z/QMMgJjAyiD7WT1LbKvic7T9q/PLMEmDg+gxMw9zfxP4yopoAEEA4cxTrf+b/jAxsfyXXauzl+YUpz36LbzfHe6DPmP7yoidLgADCmqMYGf4x/AMnNsb/nNfZvmLN339YGZh/MwLVMn1GlwMIICwuZfrFAPY+UDnDX+bH+TctvzFjBBHzD8VPvD/5/gPV/eNFlwUIICb0iPrP9YfvP5gFdC3Db8aH2nsOXYn8jmbsH55Prq8tvggDA+gXK4ZLAQIIzdB/on+FvwvCLIAExR/Go4sPz/3KhmL5ny/8H9V/AjMu72O+ryxogQoQQGhhyrNT9jQPx3dRNK9KsL9nQCo8fvJ/cH/M+sroLyP3T8VOyYPoLgUIIEZi6/3fjKxQpX+Y33Q/enyt+p0w03/py3Z24h/R1QIEENGFNMzIX/zvZtxnuFnyUegfA997uX6+L5hqAQKIhbQy/Sf3+6QHn++Ev5L6z8DzU71Vcx0nljIVIIBIMvQv46e0+7LX4z8I/QdmC8U1mgv5PmFTBxBAJBj6h/lj8H2tO17vgR7n/CN1Vi8fexHNwAAQQESH6R/Gj0Z3pa/7v5JiYOD6o7bUOlDyLS61AAFEtKG/RB4r3ih/JwLyuNRZHawlPgwABBCR3v/KfcPmyqS34v+AlYjcbrME0bf4VAMEEFGG/mf8oHh1yhvx/wwcf2T2q7XiN5KBASCAiPL+P77vWhzvWf7zfZPfozJN4SQh9QABRFSO+sv8Vej3l+98vzlYGPmf8f0ipB4ggBhJaZ4jsip+ABBAjLRo8wMEEE0aaAABRBNDAQKIJoYCBBBNDAUIIJoYChBgAGNdaBuYWAS9AAAAAElFTkSuQmCC', -'w8/unknown.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZGRYguTk5MNgNR8IAbRD4A4cO7cuRcI1ZAAAcRCz1CBOnI/EAtAhRSgfEFCegECiImOjhRAcyQMCADlHAjpBwggeqZRAyyOhIELhDQDBBA9HfoBh3giMI1+IKQZIIBY6BDdBUihdgCIHdAcuYAYswACiJGU9igpuR7qyPto0V0IDVlQJjoAdOQBmAQhdwAEEE0cipRxDNCkHgAdp4hNDyF3AAQQrdJoAhZHUgQAAohWDsWVuxeSayBAAFE16qEFOsyh+9GkFwCjPRGXXkLuAAggFirmbuQ0CcrhIEfFQ/kHgY5soMQOgABioYEj4YU70HGO1EpLAAFEjTTajyPj6FMz0QMEEDUcqoBD/CI1HQoQQNRwKLbqD5RxJlDToQABxEJmmqyHRjfIkRuhbAVicje5ACCAyMlM6BkHVHcbQh36AdQIpkXBDBBALCSG5nwsGQcUwgrI9TYtAEAAkZpGEwaqzwQQQNTITBdoHZogABBApDp0ApaWuSM9QhQggEiu64HpFNQQtgdVi9Ac/oEaDiHkDoAAYhwqA7kAATRkBiAAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwAD8GHi1bWM0DwAAAABJRU5ErkJggg==', -'w8/up.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4RpDZKTk1UJuQEggFgGMpCADhQAUv1AvBGIb+NTCxBATAPoSAMgtR+IP8ydO3cDIfUAAcQ0QI5MgDqSAejIQmL0AAQQywBFNcihH4A4kFi9AAHEQueoXg/EClChQGBoPiBWP0AAMdHJkQVA6jySIxuBjjxAihkAAcRITPHDyMhISVTPB+IAJOEDQEc6Yism8QGAAGKhY1SDwANS0iUyAAggJjpFNQNSuvxAjpkAAcRCg1yNHtUwUAh05AVyzQYIIKqlURxRDQMbgI4MJFSV4wMAAcRE46gGAVAoJlJqB0AAsdAwqhmghXoiuekSGQAEEAuVczVV0yUyAAggJhpENQwsADpyAbUyKkAAsZAR1aBQdCCgFBSKhdQsUQACiOhcD3SkA9SRAgSUg9KjISn1ODG5HiCAWIgMSQdYs4wIkEiqI4kBAAFEVBqFNiCISW8TiGkEkwMAAoikAh8YsvOhbUlsAGtjg1pRDxBAJOV6oEMScYQsSY1gcgBAAJFcPOFwbCA1CnV8ACCAyCpH0RxLciOYHAAQQBT166GdNLq4AyCAGIfKiDNAAA2ZIR2AABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAAfb5aXw5jBkAAAAASUVORK5CYII=', -'w8/wiggly.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxEKuQkZGRapYmJyc3ACl7IP4AxI1z5sy5QEgPQACx0DtkgI4sAFL1SEICQOxISB9AALEMQCz6Q+kFUHojMZoAAmggHAqKZgcQnjt3riJIABj1BDUBBBAjsa0nStIoWpqcCMT7oVKOQMceIMYNAAHEQoc0mYCWJgPQQpcoABBATHROkwegbFDIJgJD8wOxhgAEED3S6EFoKAYAHSZIriEAAUSTNIolTa6HFUOgNImunhg3AAQQy2BNk+gAIICYBmuaRAcAAcRCyzQJxIqUOA4ZAAQQC5WiGz1NfoCmSQOkUKUIAAQQC43T5ANqRRNAAFEjjSogpckFaGmSag4FCCBqRP0HpJAEpclEWhTGAAHEQmGaBIFGWqRJdAAQQCxUSJMOtEiT6AAggJgoTJMTaJUm0QFAALFQIU0W0qMRCxBATGRE+wVoFMPSJF0AQACxkOBIUJTPRxN+QC+HAgQQ0SEKTX90S5PoACCAGIfKQC5AAA2ZAQiAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMACbRnicOR6zYgAAAABJRU5ErkJggg==', -'w8/zoombox.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAFBMVEW5ubmMjIzy8vL8/PyUlJTFxcWcnJz4+Pjp6en+/v6AgIDd3d3q6ur9/f2BgYH7+/v19fWEhIQAAAD///////8VFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+nAyXOAAAAFXRSTlP//////////////////////////wAr2X3qAAABaUlEQVR42mIQIRoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIHSlDGyCgmzY9QMEEKooiyAUsGBRChBAyEoZBAUZWUEMVkZBQUyTAQKIAUUlAzY2DAAEEJKAoCAHgsMhKIiuFCCAGJDciWIOA4Z7AQIIIS3IiCrDiG4sQAAhuQ7oIyE4APoN3bUAAQTnsoEMERKGAiGQNWyoSgECiAHhKQylaC4ACCAcSoWxKAUIIBwO4MPiAIAAwuotYS4uLkxvAQQQjsDiAgUWD6pSgAAiIQoAAoiEiAUIINzJRZCbG1UpQADhSoQioFSLGtUAAYQzaXNjqAUIIJwZBqwURS1AAOHOhozoagECCE+ORVcLEED4Mjcjao4ECCC85QBELYwHEED4iwyQWlYYByCACJQuLAiVIgABREJBBBBAJCgFCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQgwAC7qoMIKTGpjAAAAABJRU5ErkJggg==', -'w8/zoomin.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMXSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKvx9evX/8+fP8/w+PFjhhcvXoDFJCQkGGRlZRkMDAwYxMTEGKnpUIAAYiS1wP/8+XPDokWL6j98+IBXnYCAAENcXFwjLy9vAzUcChBAJDl0165d/0+fPg1mc3BwMFhZWTHo6OjAHQPyxOXLl+uPHz/O8OPHD7A6U1NTBjc3N4pDFyCAiHYosiOhlq8HMoNwKF8HVB8IU29iYsLg7u5OkWMBAoiJ2OiGWZqamgoLoSA8WoJAakBqQeDMmTNgMyhxKEAAEeVQUJqEhSS2TNLa2vofhNHFQWpBoYlsBrkAIICYiMndoIwDSpPQ6CYJAKN8PUgvyAyQWeQ6FCCACDoUVASBgKWlJQOB6MaZDECZDtkscgBAABF0KKicBAFdXd1Gci0BlQzIZpEDAAKIYIEPK8yRy0Ns6RGbeHV1NSOS3nqYWeQAgAAaMlUoQAARDFFQtQgKCVDxAgtVWEihhyS6OHLxBjOLXAAQQARDFFR3gwCoxiHXEphemFnkAIAAIuhQQ0NDMA2qFkE1Dhl2rIPqhZtFDgAIIIIOFRUVZQQ1MEB1N6haJNUCkB6QXpAZILPIdShAABFV14PS2KRJk+phVSixTThQAT9r1iwwOy8vj6KWFEAAEZXrQRaAqk8QmD17NriBQiAZgBolcEdCHV1/7949YLj8J8uxAAFEUTMPVFuBKgJ8zTx0ANJXUFCgz8zMfIkUhwIEEM0bzqCQXL58OcWOBQggRnKHdF69egXuijx58gRvVwQU3egOJcexAAHESOuxJ1Ca7Ovrq8eWFEhxLEAAMdJjkOzv3796EyZMuEiJYwECiJFeo3n4HAtKz9nZ2XiLPIAAolujBBRioJADhSA6IJQxQQAggOjaesLlWEdHR4J6AQKIcSAGckHJYMaMGRdBIQlyJLAHQLCmAwggxqEy4gwQQEOm4QwQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYABfVmpFagI9FgAAAABJRU5ErkJggg==', -'w8/zoomout.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADOElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQXRz65s0bXkrNAAggujhURETkM4z97ds3Y3LMAAggxoHKTEAHK3BxcT0gVj1AAA1YGoU58ubNmxLEqAcIIMbBUDwBQ5cV6PDf+NQABBDZDn39+vX/8+fPMzx+/JjhxYsXYDEJCQkGWVlZBgMDAwYxMTFGEh3LDHTsX1zyAAFEskM/f/78f9GiRQwfPnzAq05AQIAhLi6OgZeXl6CDv3z5Ys7Dw3MS6FheoGM/Y1MDEEAkOXTXrl3/T58+DWZzcHAwWFpaMujq6jKwsbGBxX79+sVw+fJlhuPHjzP8+PEDLGZqasrg5ubGSGnyAAggoh2K7Eio5WD9OJT/B6pnQFNPkWMBAoiJ2OiGWZqamgqzFJ/FjCA1ILUgANILMoMShwIEEFEOBaVJWMiQkklAakF6kM0gFwAEEBMxuRuUcUBpEhrdJAGQHpBekBkgs8h1KEAAEXQoqAgCAVDGIRDdOJMBVC/cLHIAQAARdCionAQBUO4mF8D0wswiBwAEEAshBbDCHFYEgUBraytRUVhdXc2IrBdmFjkAIICGTHsUIIAIhiioWgSFBKgwZ2dnRwkpYgFIL8wscgFAABEMUVDdDQKgGodcANMLM4scABBABB0KamCAAKhaBNU4ZNjxH6qXwdDQkGyHAgQQQYeCCm1QAwNUd4OqRVIBSA9IL8gMUVFRsqtRgAAiKjOBWkGwqvDVq1dEhypILazqhZlBLgAIIKIcCmqqwarC2bNngxsoBJIBqFHyH6QWqYZjuHfv3v//ZDaAAQKI5s08dADSV1BQwMDMzExSMgAIIJo3nEEhuXz5coodCxBAZHdFQOnvwoULBLsioOhGdyg5jgUIIJp37kBpsq+vD2tSIMWxAAFE8yqUEQhAjgE5Ch2AHD9hwgSGv3//EgwtgACiS10PCjF8jp0xYwZBMwACiG6NEnyOJZQxQQAggOjaesLlWEdHR4J6AQJoQEZKQGkSFN2gkAQ50srKimBmAgggxqEy4gwQQEOm4QwQQAPu0G/fvhEVpQABNGSiHiCAhkzUAwTQkHEoQAANGYcCBNCQcShAgAEA6phqKE8YIKYAAAAASUVORK5CYII=' -}; - - -/***/ }), - -/***/ "./form/Accordion.js": -/*!***************************!*\ - !*** ./form/Accordion.js ***! - \***************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -if (typeof (__JSDraw2_TouchMol) == 'undefined') { - dojo.require('dijit.layout.AccordionContainer'); - dojo.require('dijit.layout.ContentPane'); -} - -scil.Accordion = scil.extend(scil._base, { - constructor: function(parent, options) { - this.T = 'FORM.ACCORDION'; - scil.Accordion.addStylesheet(); - - if (typeof (parent) == 'string') - parent = scil.byId(parent); - this.options = options == null ? {} : options; - - var style = ''; - if (this.options.width > 0) - style += 'width:' + this.options.width + 'px;'; - if (this.options.height > 0) - style += 'height:' + this.options.height + 'px;'; - - this.container = new dijit.layout.AccordionContainer({style: style}, parent); - for (var i = 0; i < this.options.items.length; ++i) { - var item = this.options.items[i]; - this.container.addChild(new dijit.layout.ContentPane({ - title: item.title, - content: item.html, - })); - } - this.container.startup(); - - if (this.options.onafterrender != null) - this.options.onafterrender(this); - }, -}); - -scil.apply(scil.Accordion, { - stylesheetAdded: false, - - addStylesheet: function() { - if (this.stylesheetAdded) - return; - - this.stylesheetAdded = true; - scil.Utils.addCss(this.getCss()); - }, - - getCss: function() { - var code = '.dijitAccordionInnerContainer{background-color: #efefef;border: solid 1px #b5bcc7;}\r\n' + - '.dijitAccordionContainer .dijitAccordionChildWrapper{background-color: #ffffff;border: 1px solid #759dc0;margin: 0 2px 2px;}\r\n' + - '.dijitAccordionTitle .arrowTextUp, .dijitAccordionTitle .arrowTextDown {display: none;font-size: 0.65em;font-weight: normal !important;}\r\n' + - '.dijitAccordionTitle{padding: 5px 7px 2px 7px;min-height: 17px;}\r\n'; - - return code; - }, -}); - - -/***/ }), - -/***/ "./form/App.Lite.js": -/*!**************************!*\ - !*** ./form/App.Lite.js ***! - \**************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.App = { - imgSmall: function (name, wrapasurl) { - var s = "small/" + name; - if (wrapasurl) - s = "url(" + s + ")"; - return s; - } -}; - -/***/ }), - -/***/ "./form/AutoComplete.js": -/*!******************************!*\ - !*** ./form/AutoComplete.js ***! - \******************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - - - -/** -* AutoComplete class - Convert a INPUT field into a auto-complete field -* @class scilligence.AutoComplete -*
-* Example:
-*    var input = scil.Utils.createElement(document.body, "input");
-*    var ac = new scil.AutoComplete(element, "http://server/ajax.ashx?cmd=autocomplete");
-* 
-*/ -scil.AutoComplete = scil.extend(scilligence._base, { - /** - * @constructor AutoComplete - * @param {string or DOM} element - the INPUT element to be converted - * @param {string} url Ajax url to list items. The ajax service should return { succeeded: true, ret: { items: [] } } - */ - constructor: function (element, url, options, form) { - this.input = null; - this.auto = null; - this.url = url; - this.sugid = 0; - this.disabled = false; - this.options = options == null ? {} : options; - this.form = form; - - var me = this; - this.input = typeof (element) == "string" ? document.getElementById(element) : element; - if (this.input.tagName == "INPUT") { - scil.connect(this.input, "onkeyup", function (e) { me.keydown(e); }); - - this.auto = scil.Utils.createElement(document.body, "div", null, { display: "none", backgroundColor: "white", border: "solid 1px gray", position: "absolute" }); - scil.connect(document.body, "onmousedown", function (e) { var src = e.srcElement || e.target; if (src != me.q && !scil.Utils.isChildOf(src, me.auto)) me.clickout(); }); - - if (this.options.listedonly) { - scil.connect(this.input, "onblur", function (e) { me.validateList(); }); - } - } - - scil.AutoComplete._all.push(this); - }, - - validateList: function () { - var s = this.input.value; - if (this.items == null || scil.Utils.indexOf(this.items, s) < 0) - this.input.value = ""; - }, - - isVisible: function () { - return this.auto != null && this.auto.style.display == ""; - }, - - hide: function () { - if (this.auto != null) - this.auto.style.display = "none"; - }, - - keydown: function (e) { - if (this.disabled || this.input == null || this.url == null || this.url == "") - return; - - if (this.input.value.length < 1 || e.keyCode == 27 || (e.ctrlKey || e.metaKey)) { - this.auto.style.display = "none"; - return; - } - - if (!this.isVisible() && e.keyCode == 13) - return; - - if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13) { - this.highlight(e); - return; - } - - var sugid = ++this.sugid; - if (scil.Utils.startswith(this.url, "data:")) { - // local data - var ret = this.filterlist(this.url.substr(5).split(','), this.input.value); - this.list(ret, sugid); - } - else if (scil.Utils.startswith(this.url, "javascript:")) { - var s = this.url.substr(11); - var fn = scil.Utils.eval(s); - var items = fun(this); - - var ret = this.filterlist(items, this.input.value); - this.list(ret, sugid); - } - else { - // url to ajax call - var me = this; - var args = { q: this.input.value }; - if (this.options.onsuggest != null) - this.options.onsuggest(args, this.form, this); - scil.Utils.jsonp(this.url, function (ret) { me.list(ret.items == null ? ret : ret.items, sugid); }, args); - } - }, - - filterlist: function (list, q) { - var ret = []; - if (q != null && q != "" && list != null) { - q = q.toLowerCase(); - for (var i = 0; i < list.length; ++i) { - if (list[i].toLowerCase().indexOf(q) >= 0) - ret.push(scil.Utils.trim(list[i])); - } - } - return ret; - }, - - isParentHidden: function (q) { - var obj = q; - while (obj != null && obj.style != null) { - if (obj.style.display == "none" || obj.style.visibility == "hidden") - return true; - obj = obj.parentNode; - } - return false; - }, - - list: function (items, sugid) { - if (items == null || items.length == 0 || sugid != this.sugid || this.isParentHidden(this.input)) { - this.items = null; - this.auto.style.display = "none"; - return; - } - - if (this.auto.style.display != "") { - var p = scilligence.Utils.getOffset(this.input); - var scroll = scilligence.Utils.scrollOffset(); - var zIndex = scil.Utils.getZindex(this.input) + 1; - if (scil.Utils.isIE) { - var s2 = JsUtils.getScrollOffset(this.e); - scroll.offset(-s2.x, -s2.y); - } - var w = this.input.offsetWidth; - if (this.options.minautowidth > 0 && this.options.minautowidth > w) - w = this.options.minautowidth; - if (w < 100) - w = 100; - var pos = scil.Utils.isFixedPosition(this.input) ? "fixed" : "absolute"; - dojo.style(this.auto, { zIndex: zIndex, position: pos, display: "", width: (w - 2) + "px", left: (p.x + scroll.x) + "px", top: (p.y + scroll.y + this.input.offsetHeight) + "px" }); - } - - this.items = items; - scilligence.Utils.removeAll(this.auto); - var me = this; - for (var i = 0; i < items.length; ++i) { - var div = scilligence.Utils.createElement(this.auto, 'div', items[i]); - dojo.connect(div, "onclick", function (e) { me.click(e); }); - dojo.connect(div, "onmouseover", function (e) { me.mouseover(e); }); - dojo.connect(div, "onmouseout", function (e) { me.mouseout(e); }); - } - }, - - highlight: function (e) { - if (this.auto == null || this.auto.style.display == "none") - return; - - e.preventDefault(); - if (e.keyCode == 27) { - this.hide(); - return; - } - - var children = this.auto.childNodes; - var sel = null; - for (var i = 0; i < children.length; ++i) { - var item = children[i]; - if (item.getAttribute("sel") == "1") { - sel = i; - break; - } - } - - if (e.keyCode == 13) { - if (sel != null) - this.clickItem(children[sel]); - return; - } - - var newsel = null; - if (e.keyCode == 38 || e.keyCode == 40) { - if (sel == null) { - newsel = 0; - } - else if (e.keyCode == 38) { - newsel = sel - 1; - if (newsel < 0) - newsel = children.length - 1; - } - else { - newsel = sel + 1; - if (newsel >= children.length) - newsel = 0; - } - - e.preventDefault(); - } - - if (newsel != null && newsel != sel) { - if (sel != null) - this._hilitItem(children[sel], false); - this._hilitItem(children[newsel], true); - } - }, - - mouseover: function (e) { - this._hilitItem(e.srcElement || e.target, true); - }, - - mouseout: function (e) { - this._hilitItem(e.srcElement || e.target, false); - }, - - _hilitItem: function (item, f) { - if (f) { - item.style.backgroundColor = "#ddf"; - item.setAttribute("sel", "1"); - } - else { - item.style.backgroundColor = "white"; - item.removeAttribute("sel"); - } - }, - - getItemValue: function (src) { - var s = unescape(src.innerHTML); - if (s == " ") - s = ""; - return s; - }, - - click: function (e) { - var src = e.srcElement || e.target; - this.clickItem(src); - }, - - clickItem: function (src) { - var s = this.getItemValue(src); - if (this.options.onSetValue != null) - this.options.onSetValue(this.input, s); - else if (this.options.overwrite == "unit") - this.input.value = this.changeUnit(this.input.value, s); - else if (this.options.overwrite == false) - this.input.value += s; - else - this.input.value = s; - this.hide(); - if (this.options.overwrite) - this.input.select(); - this.input.focus(); - - if (this.options.onclickitem != null) - this.options.onclickitem(s); - - scil.Utils.fireEvent(this.input, "change", false, true); - }, - - clickout: function (e) { - if (this.auto.style.display == "") - this.auto.style.display = "none"; - } -}); - -scil.apply(scil.AutoComplete, { - _all: [], - - hideAll: function () { - for (var i = 0; i < this._all.length; ++i) - this._all[i].hide(); - } -}); - -/***/ }), - -/***/ "./form/Chart.js": -/*!***********************!*\ - !*** ./form/Chart.js ***! - \***********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * Chart class - Chart Control - * @class scilligence.Chart - * Supported chart types: pie, line, stackedline, area, stackedarea, column, clusteredcolumn, bar, clusteredbar, bubble - *
- * Example 1:
- *    <script type="text/javascript">
- *        scil.ready(function () {
- *            new scil.Chart('div1', { type: "bar", width: 800, height: 300,
- *                ajax: { url: "service.aspx?cmd=datasource&source=bug" }
- *            });
- *        });
- *    </script>
- *
- * Example 2:
- *    <script type="text/javascript">
- *        scil.ready(function () {
- *            new scil.Chart('div1', { type: "bar", width: 800, height: 300,
- *                series: [
- *                    { label: "Series 1", data: { A: 10000, B: 9200, C: 11811, D: 12000, E: 7662, F: 13887} },
- *                    { label: "Series 2", data: { A: 3000, B: 12000, D: 12783} }
- *                ]
- *            });
- *        });
- *    </script>
- *
- * Example 3:
- *    <script type="text/javascript">
- *        scil.ready(function () {
- *            new scil.Chart('div1', { type: "bar", width: 800, height: 300,
- *                xlabels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
- *                series: [
- *                    { label: "Series 1", data: [10000, 9200, 11811, 12000, 7662, 13887] }
- *                ]
- *            });
- *        });
- *    </script>
- *
- * Example 4:
- *    <script type="text/javascript">
- *        new scil.Chart('container', { type: "bubble", width: 800, height: 300, xmin: 0, ymin: 0, xmax: 8, ymax: 20, ytitle: "Bubble",
- *            series: [
- *                    { label: "Series 1", data: [
- *                    { x: 1, y: 12.45, size: 1, color: 'red' },
- *                     { x: 2, y: 15.45, size: 2, color: "green" },
- *                     { x: 3, y: 2, size: 1.5 },
- *                     { x: 4, y: 7, size: 3.5 },
- *                     { x: 5, y: 12, size: 1.5 },
- *                     { x: 6, y: 7, size: 4.5 }
- *                     ]
- *                    }
- *                ]
- *        });
- *    });
- *    </script>
- * 
- */ - -if (typeof (__JSDraw2_TouchMol) == 'undefined') { - dojo.require('dojox.charting.Chart'); - dojo.require('dojox.charting.plot2d.Areas'); - dojo.require('dojox.charting.plot2d.StackedAreas'); - dojo.require('dojox.charting.plot2d.Bars'); - dojo.require('dojox.charting.plot2d.ClusteredBars'); - dojo.require('dojox.charting.plot2d.Columns'); - dojo.require('dojox.charting.plot2d.ClusteredColumns'); - dojo.require('dojox.charting.plot2d.StackedColumns'); - dojo.require('dojox.charting.plot2d.Lines'); - dojo.require('dojox.charting.plot2d.StackedLines'); - dojo.require('dojox.charting.plot2d.Markers'); - dojo.require('dojox.charting.plot2d.MarkersOnly'); - dojo.require('dojox.charting.plot2d.Pie'); - dojo.require('dojox.charting.plot2d.Scatter'); - dojo.require('dojox.charting.plot2d.Grid'); - dojo.require('dojox.charting.plot2d.Spider'); - dojo.require('dojox.charting.plot2d.Bubble'); - - dojo.require('dojox.charting.axis2d.Default'); - dojo.require('dojox.charting.action2d.Highlight'); - dojo.require('dojox.charting.action2d.Tooltip'); - dojo.require('dojox.charting.action2d.MoveSlice'); - dojo.require('dojox.charting.action2d.Magnify'); - dojo.require('dojox.charting.widget.Legend'); - dojo.require('dojox.charting.themes.Claro'); -} - -// http://demos.dojotoolkit.org/dojox/charting/tests/test_pie_smart_label.html -scil.Chart = scil.extend(scil._base, { - /** - * @constructor Chart - * @param {string or DOM} element - the parent Element - * @param {dict} options - { type { string }, width, height, title {string}, legend {bool}, labelstyle: { string: hidden, columns, null }, - * theme {string}, animate {bool}, shadow {bool}, xtitle {string}, ytitle {string}, linewith: {int}, - * series: [{label, data}] } - */ - constructor: function(parent, options) { - this.T = 'CHART'; - scil.Chart.addStylesheet(); - - if (typeof (parent) == 'string') - parent = scil.byId(parent); - this.parent = parent; - this.loadData(options); - }, - - loadData: function(options) { - this.options = options == null ? {} : options; - if (this.options.series != null) - this.render(); - else - this.loadDataFromUrl(this.options.ajax == null ? null : this.options.ajax.url); - }, - - loadDataFromUrl: function(url) { - if (scil.Utils.isNullOrEmpty(url)) - return false; - - this.options.series = null; - - var me = this; - scil.Utils.jsonp(url, function(ret) { - if (ret == null || ret.length == null || ret.length == 0) - return; - - if (typeof (ret[0]) != 'object') { - me.options.series = [{data: ret}]; - } else { - var keys = []; - for (var k in ret[0]) - keys.push(k); - - var x = keys[0]; - var data = []; - for (var i = 0; i < ret.length; ++i) - data.push(ret[i][x]); - - me.options.series = []; - if (keys.length == 1) { - me.options.series.push({label: x, data: data}); - } else { - me.options.xlabels = data; - - for (var k = 1; k < keys.length; ++k) { - var data = []; - var y = keys[k]; - for (var i = 0; i < ret.length; ++i) - data.push(ret[i][y]); - me.options.series.push({label: y, data: data}); - } - } - } - - me.render(); - }); - }, - - downloadImage: function() { - if (JSDrawServices.url == null || JSDrawServices.url == '') { - scil.Utils.alert('JSDraw web service is not available'); - return; - } - - var html = '
' + this.parent.innerHTML + '
'; - scil.Utils.post(JSDrawServices.url + '?cmd=html2image', {html: html, css: scil.Chart.getCss(), width: this.parent.offsetWidth}); - }, - - render: function() { - scil.Utils.removeAll(this.parent); - - var type = null; - switch (this.options.type) { - case 'column': - type = dojox.charting.plot2d.Columns; - break; - case 'clusteredcolumn': - type = dojox.charting.plot2d.ClusteredColumns; - break; - case 'stackedcolumn': - type = dojox.charting.plot2d.StackedColumns; - break; - case 'bar': - type = dojox.charting.plot2d.Bars; - break; - case 'clusteredbar': - type = dojox.charting.plot2d.ClusteredBars; - break; - case 'line': - type = dojox.charting.plot2d.Lines; - break; - case 'stackedline': - type = dojox.charting.plot2d.StackedLines; - break; - case 'area': - type = dojox.charting.plot2d.Areas; - break; - case 'stackedarea': - type = dojox.charting.plot2d.StackedAreas; - break; - case 'scatter': - type = dojox.charting.plot2d.Scatter; - break; - case 'grid': - type = dojox.charting.plot2d.Grid; - break; - case 'spider': - type = dojox.charting.plot2d.Spider; - break; - case 'bubble': - type = dojox.charting.plot2d.Bubble; - break; - case 'pie': - type = dojox.charting.plot2d.Pie; - if (!(this.options.radius > 0)) - this.options.radius = 100; - break; - } - - if (!scil.Utils.isNullOrEmpty(this.options.title)) { - scil.Utils.createElement(this.parent, 'h3', scil.Lang.res(this.options.title), {margin: 0, textAlign: 'center', fontSize: this.options.titlesize > 0 ? this.options.titlesize + 'px' : null}); - } - - var div = scil.Utils.createElement(this.parent, 'div'); - - if (this.options.width > 0) - this.parent.style.width = this.options.width + 'px'; - if (this.options.height > 0) - div.style.height = this.options.height + 'px'; - - var chart = new dojox.charting.Chart(div); - - if (this.options.theme != null) - chart.setTheme(dojox.charting.themes[this.options.theme]); - else - chart.setTheme(dojox.charting.themes.Claro); - - if (this.options.fontcolor == null) - this.options.fontcolor = 'blue'; - - var args = { - type: type, - markers: true, - gap: this.options.gap > 0 ? this.options.gap : 5, - radius: this.options.radius > 0 ? this.options.radius : null, - htmlLabels: true, - fontColor: this.options.fontcolor, - labelWiring: this.options.fontcolor, - animate: this.options.animate, - }; - if (this.options.linewidth > 0) - args.stroke = {width: this.options.linewidth}; - if (this.options.labelstyle != null) - args.labelStyle = this.options.labelstyle; - if (this.options.shadow != false) - args.shadow = {dx: 2, dy: 2, width: 2, color: [0, 0, 0, 0.3]}; - chart.addPlot('default', args); - if (this.options.plots != null) { - for (var k in this.options.plots) - chart.addPlot(k, this.options.plots[k]); - } - - var xargs = {}; - var yargs = {vertical: true, fixLower: 'major', fixUpper: 'major'}; - - if (this.options.xmin != null) - xargs.min = this.options.xmin; - if (this.options.xmax != null) - xargs.max = this.options.xmax; - if (this.options.xtitle != null) { - xargs.title = this.options.xtitle; - xargs.titleOrientation = 'away'; - xargs.titleGap = 1; - } - - if (this.options.ymin != null) - yargs.min = this.options.ymin; - if (this.options.ymax != null) - yargs.max = this.options.ymax; - if (this.options.ytitle != null) { - yargs.title = scil.Lang.res(this.options.ytitle); - yargs.titleGap = 5; - } - - var series = this.options.series; - var xlabels = this.options.xlabels; - if (series[0].data != null && series[0].data.length == null) { - xlabels = []; - var values = []; - var data = series[0].data; - for (var k in data) { - xlabels.push(k); - values.push(data[k]); - } - - var series2 = []; - for (var i = 0; i < series.length; ++i) { - if (i > 0) { - values = []; - data = series[i].data; - for (var k = 0; k < xlabels.length; ++k) { - var v = data[xlabels[k]]; - values.push(v == null ? 0 : v); - } - } - series2.push({label: scil.Lang.res(series[i].label), data: values, args: series[i].args, additup: series[i].additup}); - } - series = series2; - } - - if (this.options.type == 'pie') { - chart.addSeries(series[0].label, series[0].xydata != null ? series[0].xydata : this.array2data(series[0].data, null, xlabels, this.options.showpercentage)); - } else { - if (xlabels != null) - xargs.labels = this.array2data(xlabels, true); - - chart.addAxis('x', xargs); - chart.addAxis('y', yargs); - - if (this.options.type == 'bubble') { - chart.addSeries(series[0].label, series[0].xydata || series[0].data); - } else { - for (var i = 0; i < series.length; ++i) - chart.addSeries(series[i].label == null ? 'Series-' + (i + 1) : series[i].label, series[i].xydata != null ? series[i].xydata : this.array2data(series[i].data, null, xlabels, null, series[i].additup), series[i].args); - } - } - - //new dojox.charting.widget.Legend(chart, "default"); - if (this.options.tooltips != false) - new dojox.charting.action2d.Tooltip(chart, 'default'); - switch (this.options.type) { - case 'pie': - case 'scatter': - case 'grid': - new dojox.charting.action2d.MoveSlice(chart, 'default'); - break; - case 'bar': - case 'clusteredbar': - new dojox.charting.action2d.Highlight(chart, 'default'); - break; - case 'column': - case 'clusteredcolumn': - new dojox.charting.action2d.Highlight(chart, 'default'); - break; - case 'line': - case 'stackedline': - new dojox.charting.action2d.Magnify(chart, 'default'); - break; - case 'area': - case 'stackedarea': - new dojox.charting.action2d.Magnify(chart, 'default'); - break; - } - - chart.render(); - - if (this.options.legend) { - var legend = scil.Utils.createElement(this.parent, 'div'); - new dojox.charting.widget.Legend({chart: chart}, legend); - } - - var me = this; - chart.connectToPlot('default', function(evt) { - if (evt.type == 'onclick') { - if (me.options.onclick != null) - me.options.onclick(evt); - } else if (evt.type == 'onmouseover') { - if (me.options.onmouseover != null) - me.options.onmouseover(evt); - } else if (evt.type == 'onmouseout') { - if (me.options.onmouseout != null) - me.options.onmouseout(evt); - } - }); - }, - - array2data: function(list, asAxis, xlabels, showpercentage, additup) { - var sum = 0; - if (showpercentage) { - for (var i = 0; i < list.length; ++i) { - if (!isNaN(list[i])) - sum += list[i]; - } - } - - var v = null; - var ret = []; - for (var i = 0; i < list.length; ++i) { - if (asAxis) { - ret.push({value: i + 1, text: list[i]}); - } else { - var v2 = null; - if (additup) { - if (v == null) - v = list[i]; - else if (list[i] != null && !isNaN(list[i])) - v += list[i]; - v2 = list[i] == null ? null : v; - } else { - v2 = list[i]; - } - - var s = v2; - var t = s; - if (xlabels != null && xlabels[i] != null) { - if (showpercentage && !isNaN(s) && sum > 0) - s = (Math.round(s / sum * 1000) / 10) + '%'; - s = xlabels[i] + ' (' + s + ')'; - t = xlabels[i]; - } - - ret.push({x: i + 1, y: v2, text: t, tooltip: s}); - } - } - - return ret; - }, -}); - - -scil.apply(scil.Chart, { - stylesheetAdded: false, - - addStylesheet: function() { - if (this.stylesheetAdded) - return; - - this.stylesheetAdded = true; - scil.Utils.addCss(this.getCss()); - }, - - getCss: function() { - var code = '.dijitTooltip { position: absolute; z-index: 2000; display: block; left: 0; overflow: visible; }\r\n'; - code += '.dijitTooltipContainer { border: solid #aaf 1px; background: #fff; color: blue; padding: 2px; border-radius: 3px; }\r\n'; - code += '.dijitTooltipConnector { position: absolute; }\r\n'; - code += '.dojoxLegendIcon { float: left; }\r\n'; - - return code; - }, -}); - - -/***/ }), - -/***/ "./form/Clipboard.js": -/*!***************************!*\ - !*** ./form/Clipboard.js ***! - \***************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.Clipboard = { - copy: function (text) { - if (scil.Utils.isNullOrEmpty(text)) - return false; - - var e = scil.Utils.createElement(document.body, "textarea", null, { position: 'fixed', top: 0, left: 0, width: '2px', height: '2px', padding: 0, border: 'none', outline: 'none', boxShadow: 'none', background: 'transparent' }); - e.value = text; - e.select(); - - var ret = false; - try { - ret = document.execCommand('copy'); - } catch (err) { - } - - document.body.removeChild(e); - return ret; - } -}; - -/***/ }), - -/***/ "./form/ContextMenu.js": -/*!*****************************!*\ - !*** ./form/ContextMenu.js ***! - \*****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - - -/** - * ContextMenu class - *
- * Example:
- *    var callback = function (key, obj) {
- *        alert( key + " clicked");
- *    };
- *
- *    var items = [{ caption: "Color", key: "x", callback: function (key) { alert("Color: " + key);  }, children: ["Red", "Blue"] },
- *            "Small", "Big"
- *        ];
- *
- *    var menu = new scil.ContextMenu(items, callback, null);
- *    function test() {
- *        menu.show(100, 100);
- *    }
- * 
- * @class scilligence.ContextMenu - */ -scil.ContextMenu = scil.extend(scil._base, { - /** - * @constructor ContextMenu - * @param {array} items - an array of menu item deifinitions - * @param {function} callback - callback function - * @param {Menu} parentMenu - parent menu item - */ - constructor: function(items, callback, parentMenu, doc, lang) { - this.T = 'CONTEXT_MENU'; - this.document = doc == null ? document : doc; - this.tbody = null; - this.callback = callback; - this.submenus = {}; - this.items = items; - this.cur = null; - this.parentMenu = parentMenu; - this.obj = null; - this.lang = lang != null ? lang : scil.Lang; - }, - - isFrom: function(e) { - if (this.tbody == null) - return false; - if (scil.Utils.isChildOf(e, this.tbody.parentNode)) - return true; - - for (var k in this.submenus) { - if (this.submenus[k].isFrom(e)) - return true; - } - - return false; - }, - - /** - * Show this context menu - * @function show - * @param {number} x - x coordinate - * @param {number} y - y coordinate - * @param {object} obj - tagged object - */ - show: function(x, y, obj, items, left) { - this.hide(); - this._create(items); - this.obj = obj; - - var maxZindex = scil.Utils.getMaxZindex(); - var parent = this.tbody.parentNode; - parent.style.display = ''; - parent.style.zIndex = maxZindex > 0 ? maxZindex + 1 : 100; - scil.Utils.moveToScreen(x, y, parent, left); - }, - - /** - * Hide context menu - * @function hide - */ - hide: function(hideParent) { - if (this.tbody == null || this.tbody.parentNode.style.display == 'none') - return false; - this.tbody.parentNode.style.display = 'none'; - for (var k in this.submenus) - this.submenus[k].hide(); - this.setCur(null); - if (hideParent && this.parentMenu != null) - this.parentMenu.hide(hideParent); - return true; - }, - - /** - * Check if the menu is visible - * @function isVisible - * @returns true or false - */ - isVisible: function() { - return this.tbody != null && this.tbody.parentNode.style.display != 'none'; - }, - - _create: function(items) { - if (items != null) - this.items = items; - if (this.tbody == null) { - var me = this; - this.tbody = scil.Utils.createTable(this.document.body, 0, 0, {position: 'absolute', display: 'none', backgroundColor: '#eee', color: '#000', border: 'solid 1px #ddd'}); - this.tbody.setAttribute('jspopupmenu', '1'); - dojo.connect(this.tbody.parentNode, 'onmousedown', function(e) { - if (e.button != 2) me.click(e); - }); - dojo.connect(this.tbody.parentNode, 'onmouseover', function(e) { - me.hilit(e); - }); - dojo.connect(this.document.body, 'onmousedown', function(e) { - me.clickOut(e); - }); - this._createItems(); - } else if (items != null) { - this._createItems(); - } - }, - - _createItems: function() { - scil.Utils.removeAll(this.tbody); - for (var i = 0; i < this.items.length; ++i) { - var item = this.items[i]; - if (item == '-') { - if (i == 0 || this.items[i - 1] == '-' || i == this.items.length - 1) - continue; - var tr = scil.Utils.createElement(this.tbody, 'tr'); - scil.Utils.createElement(tr, 'td', null, {textAlign: 'center', width: '20px', backgroundColor: '#f5f5f5'}); - scil.Utils.createElement(tr, 'td', '
', {padding: '0 2px 0 2px'}).colSpan = 3; - } else { - if (typeof item == 'string') - item = {caption: item}; - if (item.key == null) - item.key = item.caption; - var sub = item.children != null && item.children.length > 0; - var bg = item.bg == null ? '#eee' : item.bg; - var tr = scil.Utils.createElement(this.tbody, 'tr', null, {backgroundColor: bg}, item.disabled ? null : {menukey: item.key}); - scil.Utils.createElement(tr, 'td', item.checked ? '✔' : null, {textAlign: 'center', width: '20px', backgroundColor: '#f5f5f5'}); - var style = {padding: '1px 3px 1px 3px', color: item.disabled ? 'gray' : ''}; - var s = item.nottranslate ? item.caption : this.lang.res(item.caption); - if (item.icon != null) - s = '' + s; - scil.Utils.createElement(tr, 'td', s, style); - style.fontSize = '75%'; - style.paddingLeft = '10px'; - scil.Utils.createElement(tr, 'td', item.shortcut == null ? '' : item.shortcut, style); - scil.Utils.createElement(tr, 'td', sub ? '›' : null, {textAlign: 'right', width: '30px', paddingRight: '5px'}); - - if (sub) - this.submenus[item.key] = new scil.ContextMenu(item.children, item.callback == null ? this.callback : item.callback, this, this.document); - else - delete this.submenus[item.key]; - } - } - }, - - hilit: function(e) { - var tr = scil.Utils.getParent(e.srcElement || e.target, 'TR'); - if (tr != null && tr.getAttribute('menukey') != null) - this.setCur(tr); - }, - - setCur: function(tr) { - if (this.cur != null) { - this.cur.childNodes[0].style.backgroundColor = '#f5f5f5'; - this.cur.childNodes[1].style.backgroundColor = ''; - this.cur.childNodes[2].style.backgroundColor = ''; - this.cur.childNodes[3].style.backgroundColor = ''; - var sub = this.submenus[this.cur.getAttribute('menukey')]; - if (sub != null) - sub.hide(); - } - - this.cur = tr; - if (tr != null) { - tr.childNodes[0].style.backgroundColor = '#aaf'; - tr.childNodes[1].style.backgroundColor = '#aaf'; - tr.childNodes[2].style.backgroundColor = '#aaf'; - tr.childNodes[3].style.backgroundColor = '#aaf'; - var sub = tr == null ? null : this.submenus[tr.getAttribute('menukey')]; - if (sub != null) { - var p = scil.Utils.getOffset(tr.childNodes[3], false); - var p2 = scil.Utils.getOffset(tr.childNodes[0], false); - sub.show(p.x + tr.childNodes[3].offsetWidth + 1, p.y, null, null, p2.x); - } - } - }, - - getCallbackObj: function() { - return this.parentMenu == null ? this.obj : this.parentMenu.getCallbackObj(); - }, - - click: function(e) { - var tr = scil.Utils.getParent(e.srcElement || e.target, 'TR'); - var key = tr == null ? null : tr.getAttribute('menukey'); - if (this.submenus[key] != null) - return; - if (key != null && this.callback != null) - this.callback(key, this.getCallbackObj(), tr.childNodes[0].innerHTML != ''); - this.hide(true); - e.preventDefault(); - }, - - clickOut: function(e) { - var tbody = scil.Utils.getParent(e.srcElement || e.target, 'TBODY'); - if (tbody != null && tbody.getAttribute('jspopupmenu') == '1') - return; - this.hide(); - }, -}); - -scil.apply(scil.ContextMenu, { - isFromContextMenu: function(src) { - var tbody = scil.Utils.getParent(src, 'TBODY'); - return tbody != null && tbody.getAttribute('jspopupmenu') == '1'; - }, -}); - - -JSDraw2.ContextMenu = scil.ContextMenu; - - -/***/ }), - -/***/ "./form/Dialog.js": -/*!************************!*\ - !*** ./form/Dialog.js ***! - \************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - - -/** - * Dialog class - * @class scilligence.Dialog - *
- * Example:
- *    // Create a popup dialog
- *    var div = scil.Utils.createElement(null, "div");
- *    var txt = scil.Utils.createElement(div, "textarea", null, { width: "580px", height: "400px" });
- *    var btn = scil.Utils.createElement(
- *            scil.Utils.createElement(div, "div", null, { textAlign: "center" }),
- *                "button", "OK", { width: "200px" });
- *
- *    var dlg = new scilligence.Dialog("My Dialog", div);
- *    dojo.connect(btn, "onclick", function (e) { dlg.hide(); });
- *    dlg.show();
- * 
- */ -scil.Dialog = scil.extend(scil._base, { - /** - * @constructor Dialog - * @param {string} title - defaultdialog title - * @param {DOM} body - dialog body - * @param {dictionary} options { parentWindow, noclose, notitle } - */ - constructor: function(title, body, options) { - this.T = 'DIALOG'; - this.options = options == null ? {} : options; - this.lang = this.options.lang == null ? scil.Lang : this.options.lang; - this.id = this.options.id; - if (this.id == null || this.id == '') { - if (scil.Dialog._idincrease == null) - scil.Dialog._idincrease = 0; - this.id = '__jsdialog' + (++scil.Dialog._idincrease); - } - if (scil.Dialog._allitems == null) - scil.Dialog._allitems = {}; - scil.Dialog._allitems[this.id] = this; - - this.parentWindow = this.options.parentWindow == null ? window : this.options.parentWindow; - this.body = body; - this.title = title; - this.WRAPPER = 'content'; - this.dialog = null; - this.dialogmask = null; - this.movingSt = null; - }, - - /** - * Check if the dialog is visible - * @function isVisible - * @returns true or false - */ - isVisible: function() { - return this.dialog != null && this.dialog.style.display != 'none'; - }, - - isFrom: function(e) { - if (!this.isVisible()) - return false; - return scil.Utils.isChildOf(e, this.dialog); - }, - - show2: function(options) { - if (options == null) - options = {}; - this.show(options.title, options.zindex, options.modal, options.immediately, options.owner); - }, - - /** - * Show dialog - * @function show - * @param {string} title - dialog title - * @param {number} zindex - zIndex of dialog DOM - * @param {bool} modal - Modal dialog - * @returns true or false - */ - show: function(title, zindex, modal, immediately, owner) { - this.owner = owner; - if (this.isVisible()) { - if (title != null && this.dialog.titleElement != null) - this.dialog.titleElement.innerHTML = this.lang.res(title); - return; - } - - if (modal == null) - modal = true; - - if (!(scil.Dialog.kTimer > 0)) - immediately = true; - - this._create(); - this.movingSt = null; - if (title != null && this.dialog.titleElement != null) - this.setTitle(title); - var maxZindex = scil.Utils.getMaxZindex(); - if (JSDraw2.defaultoptions.minDlgZindex > 0 && maxZindex < JSDraw2.defaultoptions.minDlgZindex) - maxZindex = JSDraw2.defaultoptions.minDlgZindex; - var z = zindex == null ? maxZindex + 10 : zindex; - this.dialog.alpha = 0; - this.dialog.style.display = ''; - this.dialogmask.style.display = ''; - this.dialogmask.style.minHeight = '100%'; - this.dialogmask.style.height = '100%'; - this.dialogmask.style.width = '100%'; - if (z > 0) { - this.dialogmask.style.zIndex = z + 1; - this.dialog.style.zIndex = z + 2; - } - if (!modal) { - this.dialog.style.zIndex = z + 1; - this.dialogmask.style.display = 'none'; - } - - this.dialog.style.borderColor = modal ? '#fff' : JSDraw2.Skin.dialog.bkcolor; - - if (scilligence.Utils.isTouch || immediately) { - dojo.style(this.dialog, {display: '', opacity: 1.00, filter: 'alpha(opacity=100)'}); - } else { - dojo.style(this.dialog, {display: '', opacity: .00, filter: 'alpha(opacity=0)'}); - this.dialog.timer = setInterval('scil.Dialog.get(\'' + this.id + '\').fade(1)', scil.Dialog.kTimer); - } - this.moveCenter(); - scil.Dialog.stack.push(this); - - if (this._scilform && this.form != null && this.form.fields != null) - this.form.focus(); - }, - - setTitle: function(title) { - this.dialog.titleElement.innerHTML = this.lang.res(title); - }, - - moveCenter: function() { - var d = dojo.window.getBox(); - var width = d.w; - var height = d.h; - var left = d.l; - var top = d.t; - var dialogwidth = this.dialog.offsetWidth; - var dialogheight = this.dialog.offsetHeight; - var topposition = Math.round(top + (height - dialogheight) / 2); - var leftposition = Math.round(left + (width - dialogwidth) / 2); - - dojo.style(this.dialog, {top: Math.max(top, topposition) + 'px', left: Math.max(left, leftposition) + 'px'}); - this.scroll(); - this.updateWidth(); - }, - - _create: function() { - if (this.dialog != null) - return; - - var me = this; - var topBody = this.parentWindow.document.body; - var zi = 200; - var tbody = scilligence.Utils.createTable(topBody, 0, 0, {position: 'absolute', borderRadius: '3px', width: w, height: h, zIndex: zi, backgroundColor: JSDraw2.Skin.dialog.bkcolor, border: JSDraw2.Skin.dialog.border}); - this.dialog = tbody.parentNode; - this.dialog.setAttribute('__scilligence_dlg', this.id); - - var tr, td; - var bordertop = '0'; - if (this.options.notitle) { - bordertop = '5px'; - } else { - tr = scilligence.Utils.createElement(tbody, 'tr', null, {height: '30px'}); - td = scilligence.Utils.createElement(tr, 'td', this.lang.res(this.title), {paddingLeft: '5px', fontWeight: 'bold', color: scil.App == null || scil.App.config == null ? '' : scil.App.config.text}); - this.dialog.titleElement = td; - td = scilligence.Utils.createElement(tr, 'td', null, {textAlign: 'right', verticalAlign: 'top'}); - if (!this.options.noclose) { - var img = scilligence.Utils.createElement(td, 'img', null, {cursor: 'pointer', marginRight: '5px'}, {title: JSDraw2.Language.res('Close'), src: scil.Utils.imgSrc('img/dlgclose.jpg')}); - dojo.connect(scilligence.Utils.isIpad ? td : img, 'onclick', function(e) { - me.hide(); - e.preventDefault(); - }); - } - - if (this.options.movable != false) { - if (scilligence.Utils.isTouch) { - dojo.connect(tr, 'ontouchstart', function(e) { - if (e.touches.length == 1) me.startMove(e.touches[0]); - }); - dojo.connect(topBody, 'ontouchmove', function(e) { - if (e.touches.length == 1 && me.move(e.touches[0])) { - e.preventDefault(); - return false; - } - }); - dojo.connect(topBody, 'ontouchend', function() { - me.endMove(); - }); - } else { - tr.style.cursor = 'move'; - dojo.connect(tr, 'onmousedown', function(e) { - me.startMove(e); - }); - dojo.connect(topBody, 'onmousemove', function(e) { - me.move(e); - }); - dojo.connect(topBody, 'onmouseup', function() { - me.endMove(); - }); - } - } - } - - tr = scil.Utils.createElement(tbody, 'tr'); - td = scil.Utils.createElement(tr, 'td', null, {padding: bordertop + ' 5px 5px 5px'}); - td.colSpan = 2; - - var w = this.options.width; - var h = this.options.height; - var style = {background: '#fff', padding: '5px'}; - if (w > 0 || h > 0) - scil.apply(style, {width: w > 0 ? w : null, height: h > 0 ? h : null, overflow: 'scroll'}); - - if (this.options.bodystyle != null) - scil.apply(style, this.options.bodystyle); - - var div = scil.Utils.createElement(td, 'div', null, style); - if (typeof this.body == 'string') - div.innerHTML = '
' + this.body + '
'; - else - div.appendChild(this.body); - - var opacity = this.options.opacity > 0 ? this.options.opacity : 75; - this.dialogmask = scilligence.Utils.createElement(topBody, 'div', null, {position: 'absolute', top: '0', left: '0', minHeight: '100%', height: '100%', width: '100%', background: '#999', opacity: opacity / 100.0, filter: 'alpha(opacity=' + opacity + ')', zIndex: zi - 1}); - dojo.connect(window, 'onresize', function() { - me.resize(); - }); - dojo.connect(window, 'onscroll', function() { - me.scroll(); - }); - - // bug: I#5763 - if (this.options.fixtransparentissue && dojox.gfx.renderer == 'silverlight') { - this.dialogmask.style.backgroundColor = 'white'; - this.dialogmask.style.opacity = '1.0'; - this.dialogmask.style.filter = 'alpha(opacity=100)'; - } - }, - - scroll: function() { - if (!this.isVisible() || this.dialogmask == null || this.dialogmask.style.display == 'none') - return; - var d = dojo.window.getBox(); - var right = Math.max(d.w + d.l, this.dialog.offsetLeft + this.dialog.offsetWidth); - var bottom = Math.max(d.h + d.t, this.dialog.offsetTop + this.dialog.offsetHeight); - if (this.dialogmask.offsetWidth <= right) - this.dialogmask.style.width = right + 'px'; - if (this.dialogmask.offsetHeight <= bottom) - this.dialogmask.style.height = bottom + 'px'; - }, - - resize: function() { - this.scroll(); - }, - - /** - * Move the dialog to a new position - * @function move - * @param {number} x - * @param {number} y - */ - moveTo: function(x, y) { - scil.Utils.moveToScreen(x, y, this.dialog); - }, - - startMove: function(e) { - this.movingSt = null; - var src = e.srcElement || e.target; - if (src.tagName == 'IMG') - return; - this.movingSt = new JSDraw2.Point(e.clientX, e.clientY); - }, - - move: function(e) { - if (this.movingSt == null || (e.which || e.button) != 1) - return false; - - var delta = new JSDraw2.Point(e.clientX - this.movingSt.x, e.clientY - this.movingSt.y); - var top = scilligence.Utils.parsePixel(this.dialog.style.top) + delta.y; - var left = scilligence.Utils.parsePixel(this.dialog.style.left) + delta.x; - this.moveTo(left, top); - - this.movingSt = new JSDraw2.Point(e.clientX, e.clientY); - return true; - }, - - endMove: function() { - this.movingSt = null; - }, - - updateWidth: function(f) { - this.dialog.style.width = (this.dialog.firstChild.firstChild.offsetWidth + 2) + 'px'; - }, - - /** - * Hide dialog - * @function hide - * @param {bool} immediately - set this to true to skip fading animation - */ - hide: function(immediately) { - if (this.options.onhide != null) - this.options.onhide(); - - if (!(scil.Dialog.kTimer > 0)) - immediately = true; - - if (immediately || scilligence.Utils.isTouch) { - this.close(); - } else { - if (this.dialog != null) { - clearInterval(this.dialog.timer); - this.dialog.timer = setInterval('scil.Dialog.get(\'' + this.id + '\').fade(0)', scil.Dialog.kTimer); - } - } - - scil.Dialog.stack.pop(); - scil.AutoComplete.hideAll(); - }, - - close: function() { - if (this.dialog == null) - return; - - clearInterval(this.dialog.timer); - this.dialog.timer = null; - this.dialog.style.display = 'none'; - this.dialogmask.style.display = 'none'; - this.dialogmask.style.width = '0px'; - this.dialogmask.style.height = '0px'; - }, - - fade: function(flag) { - if (flag == null) - flag = 1; - - var value = flag == 1 ? this.dialog.alpha + scil.Dialog.kSpeed : this.dialog.alpha - scil.Dialog.kSpeed; - this.dialog.alpha = value; - dojo.style(this.dialog, {opacity: value / 100, filter: 'alpha(opacity=' + value + ')'}); - - if (value >= 99) { - clearInterval(this.dialog.timer); - this.dialog.timer = null; - } else if (value <= 1) { - this.close(); - } - }, -}); - -scil.apply(scil.Dialog, { - stack: [], - kTimer: 10, - kSpeed: 40, - - keydown: function(e) { - if (e.keyCode == 27 && this.stack.length > 0) - this.stack[this.stack.length - 1].hide(); - }, - - /** - * Get the Dialog object by its ID - * @function {static} get - * @param {string} id - the dialog ID - */ - get: function(id) { - if (scil.Dialog._allitems == null) - scil.Dialog._allitems = {}; - return scil.Dialog._allitems[id]; - }, - - getDialog: function(e) { - while (e != null) { - var t = scil.Utils.getParent(e, 'TABLE'); - if (t == null) - return null; - - var id = t.getAttribute('__scilligence_dlg'); - if (id != null) - return this.get(id); - e = t.parentNode; - } - return null; - }, -}); - -scil.onload(function() { - dojo.connect(document.body, 'onkeydown', function(e) { - scil.Dialog.keydown(e); - }); -}); - - -JsDialog = JSDraw2.Dialog = scil.Dialog; - - -/***/ }), - -/***/ "./form/DnD.js": -/*!*********************!*\ - !*** ./form/DnD.js ***! - \*********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.DnD = scil.extend(scil._base, { - constructor: function(parent, options) { - this.T = 'DND'; - this.src = null; - this.copy = null; - this.dragging = false; - this.disabled = false; - - this.options = options; - if (typeof (parent) == 'string') - parent = scil.byId(parent); - - var me = this; - dojo.connect(parent, 'onmousedown', function(e) { - if (!me.disabled) me.mousedown(e); - }); - - dojo.connect(document.body, 'onmousemove', function(e) { - if (!me.disabled) me.mousemove(e); - }); - dojo.connect(document.body, 'onmouseup', function(e) { - if (!me.disabled) me.mouseup(e); - }); - }, - - isDragging: function() { - return this.dragging; - }, - - cancel: function() { - if (this.src != null) { - if (this.options.oncancel != null) - this.options.oncancel(this); - } - - this.src = null; - this.copy = null; - this.dragging = false; - }, - - mousedown: function(e, src) { - if (this.options.onstartdrag != null) { - this.src = this.options.onstartdrag(e, this); - this.startpos = {x: e.clientX, y: e.clientY}; - } - }, - - mousemove: function(e) { - if (this.src == null) - return; - - if (this.copy == null && (Math.abs(e.clientX - this.startpos.x) > 10 || Math.abs(e.clientY - this.startpos.y) > 10)) { - if (this.options.oncreatecopy != null) - this.copy = this.options.oncreatecopy(e, this); - } - - if (this.copy != null) { - var scroll = scil.Utils.scrollOffset(); - this.copy.style.left = (e.clientX + scroll.x + 2) + 'px'; - this.copy.style.top = (e.clientY + scroll.y + 2) + 'px'; - - this.dragging = true; - } - - if (this.options.ondragover != null) - this.options.ondragover(e, this); - }, - - mouseup: function(e) { - if (this.src != null) { - if (this.options.ondrop != null) - this.options.ondrop(e, this); - } - - this.src = null; - this.copy = null; - this.dragging = false; - }, -}); - - -/***/ }), - -/***/ "./form/DropdownButton.js": -/*!********************************!*\ - !*** ./form/DropdownButton.js ***! - \********************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** -* DropdownButton class -* @class scilligence.DropdownButton -*
-* Example:
-*    <button id='d'>Select City</button>
-*    <script type="text/javascript">
-*        scil.ready(function () {
-*            new scil.DropdownButton('d', { items: ["Boston", "New York", "London"],
-*                callback: function (city) { alert(city); } });
-*        });
-*    </script>
-* 
-*/ -scilligence.DropdownButton = scilligence.extend(scilligence._base, { - /** - * @constructor DropdownButton - * @param {string or DOM} button - the BUTTON element to be converted - * @param {dict} options - { items: [], callback: function(item) {} } - */ - constructor: function (button, options) { - this.T = "DROPDOWN_BUTTON"; - this.auto = null; - this.options = options == null ? {} : options; - - var me = this; - this.button = typeof (button) == "string" ? document.getElementById(button) : button; - dojo.connect(this.button, "onclick", function () { me.show(); }); - - var s = this.options.dropdown == null ? "▼" : this.options.dropdown; - if (this.button.tagName == 'TABLE') { - var list = this.button.getElementsByTagName("TD"); - var td = list[list.length - 1]; - scil.Utils.createElement(td, "span", s); - } - else { - if (this.options.expandright) - scil.Utils.createElement(this.button, "span", s, { fontSize: "70%" }); - else - scil.Utils.createElement(this.button, "span", s, { fontSize: "70%" }); - } - }, - - isVisible: function () { - return this.auto != null && this.auto.style.display == ""; - }, - - show: function () { - if (this.options.onshowdropdown != null) - this.options.onshowdropdown(this); - - if (this.auto == null) { - var me = this; - var w = this.options.width; - if (!(w > 0) && scil.Utils.isIE && scil.Utils.isIE <= 8) - w = 200; - - var pos = scil.Utils.isFixedPosition(this.button) ? "fixed" : "absolute"; - var tbody = scil.Utils.createTable(document.body, 0, 1, { borderRadius: "2px", border: JSDraw2.Skin.dialog.border, backgroundColor: JSDraw2.Skin.dialog.bkcolor, display: "none", position: pos, width: w }); - this.auto = tbody.parentNode; - - var div = JsUtils.createElement(JsUtils.createElement(tbody, "tr"), "td", null, { padding: "5px" }); - this.area = scil.Utils.createElement(div, "div", null, { backgroundColor: "#fff" }); - //this.auto = scil.Utils.createElement(document.body, "div", null, { display: "none", backgroundColor: this.options.backgroundColor == null ? "white" : this.options.backgroundColor, border: "solid 1px gray", position: "absolute", width: w }); - - dojo.connect(document.body, "onmousedown", function (e) { var src = e.srcElement || e.target; if (src != me.q && !scil.Utils.isChildOf(src, me.auto)) me.clickout(); }); - this.list(this.options.items); - } - this.auto.style.display = ""; - this.position(); - }, - - hide: function () { - if (this.auto != null) - this.auto.style.display = "none"; - }, - - position: function () { - var p = scilligence.Utils.getOffset(this.button); - var scroll = scilligence.Utils.scrollOffset(); - var zIndex = scil.Utils.getZindex(this.button) + 1; - if (scil.Utils.isIE) { - var s2 = JsUtils.getScrollOffset(this.e); - scroll.offset(-s2.x, -s2.y); - } - - var x, y; - if (this.options.expandright) { - x = p.x + scroll.x + this.button.offsetWidth; - y = p.y + scroll.y; - } - else { - x = p.x + scroll.x; - y = p.y + scroll.y + this.button.offsetHeight; - } - dojo.style(this.auto, { zIndex: zIndex, display: "", x: 0, y: 0 }); - scil.Utils.moveToScreen(x, y, this.auto); - }, - - list: function (items) { - if (items == null || items.length == 0) - return; - - if (this.auto.style.display != "") - this.position(); - - if (items.length == null) { - var list = []; - for (var k in items) - list.push({ label: items[k], key: k }); - items = list; - } - - scil.Utils.removeAll(this.area); - var me = this; - for (var i = 0; i < items.length; ++i) { - var item = items[i]; - if (item == "-" && (i == 0 || items[i - 1] == "-" || i == items.length - 1)) - continue; - this.createItem(item); - } - }, - - createItem: function (item) { - if (item == "-") { - scil.Utils.createElement(this.area, 'hr', null, { margin: 0, padding: 0, borderColor: scil.App.config == null ? null : scil.App.config.frame }); - return; - } - - if (typeof (item) == "string") - item = { label: item }; - - var label = this.options.translate ? scil.Lang.res(item.label) : item.label; - if (item.key == null && label != item.label) - item.key = item.label; - - var div = scil.Utils.createElement(this.area, 'div', null, { padding: "3px 10px 3px 10px", color: JSDraw2.Skin.menu.color, cursor: "pointer" }, { url: item.url, key: item.key }); - - var div2 = div; - if (item.items != null && item.items.length > 0) { - var tbody = scil.Utils.createTable(div, 0, 0, { width: "100%" }); - var tr = scil.Utils.createElement(tbody, "tr"); - var div2 = scil.Utils.createElement(tr, "td", null, { textAlign: "left" }); - scil.Utils.createElement(tr, "td", "►", { paddingLeft: "10px", textAlign: "right", fontSize: "50%" }); - } - - if (item.icon != null) - scil.Utils.createElement(div2, "img", null, { marginRight: "5px" }, { src: item.icon }); - if (label != null) - scil.Utils.createElement(div2, "span", label); - - var me = this; - if (item.items != null && item.items.length > 0) { - item.expandright = true; - item.dropdown = ""; - new scil.DropdownButton(div, item); - } - else { - if (item.key == null && item.label != null) - item.key = item.label; - dojo.connect(div, "onclick", function (e) { if (item.onclick != null) item.onclick(); me.click(e, div); }); - } - - dojo.connect(div, "onmouseover", function (e) { me.mouseover(e, div); }); - dojo.connect(div, "onmouseout", function (e) { me.mouseout(e, div); }); - }, - - getItem: function (e) { - var src = e.srcElement || e.target; - if (src.tagName != "DIV") - src = scil.Utils.getParent(src, "DIV"); - return src; - }, - - mouseover: function (e) { - this.getItem(e).style.backgroundColor = "#ddf"; - this.getItem(e).style.color = JSDraw2.Skin.menu.highlightcolor; - }, - - mouseout: function (e) { - this.getItem(e).style.backgroundColor = "#fff"; - this.getItem(e).style.color = JSDraw2.Skin.menu.color; - }, - - clickout: function (e) { - this.hide(); - }, - - click: function (e) { - var src = this.getItem(e); - var url = src.getAttribute("url"); - var key = src.getAttribute("key"); - if (this.options.callback != null) - this.options.callback(key == null || key == "" ? src.innerText || src.textContent : key, url); - else if (this.options.onclick != null) - this.options.onclick(key == null || key == "" ? src.innerText || src.textContent : key, url); - else if (url != null) { - if (this.options.target == null) - window.location = url; - else - window.open(url, this.options.target); - } - this.hide(); - } -}); - - -/***/ }), - -/***/ "./form/DropdownInput.js": -/*!*******************************!*\ - !*** ./form/DropdownInput.js ***! - \*******************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * DropdownInput class - * @class scilligence.DropdownInput - *
- * Example:
- *    <input id='d'/>
- *    <script type="text/javascript">
- *        scil.ready(function () {
- *            new scil.DropdownInput('d', { items: ["Boston", "New York", "London"],
- *                onclickitem: function (city) { alert(city); }
- *            });
- *        });
- *    </script>
- * 
- */ - -// TODO: Recover style -// https://github.com/scilligence/JSDraw.Lite/issues/4 -// document.write(''); - -scil.DropdownInput = scil.extend(scilligence._base, { - /** - * @constructor DropdownInput - * @param {string or DOM} input - the INPUT element to be converted - * @param {dict} options - { items: [], overwrite: true/false, onclickitem: function(item) {}, onsuggest: function(args) {}, augto } - */ - constructor: function(input, options) { - this.T = 'DROPDOWN_INPUT'; - this.auto = null; - this.options = options == null ? {} : options; - this.input = typeof (input) == 'string' ? document.getElementById(input) : input; - this.itemschanged = true; - this.sugid = 0; - this.suggestlength = this.options.suggestlength > 0 ? this.options.suggestlength : 1; - - if (this.options.autosuggest == '') - this.options.autosuggest = null; - - var me = this; - this.input.style.background = '#fff ' + scil.Utils.imgSrc('img/dropdown.gif', true) + ' no-repeat right center'; - this.input.style.border = 'solid 1px #999'; - this.input.style.padding = '2px'; - this.input.className = '_scil_dropdown'; - this.updateReadonly(); - - dojo.connect(this.input, 'onkeyup', function(e) { - me.keyup(e); - }); - dojo.connect(this.input, 'onclick', function(e) { - me.clickMe(e); - }); - }, - - updateDropdown: function(readonly) { - if (readonly != null) { - this.options.readonly = readonly; - this.updateReadonly(); - } - this.input.style.backgroundImage = this.options.items == null ? '' : scil.Utils.imgSrc('img/dropdown.gif', true); - }, - - updateReadonly: function() { - this.input.readOnly = this.options.readonly; - this.input.style.backgroundColor = this.options.readonly ? '#eee' : '#fff'; - }, - - keyup: function(e) { - if (this.disabled || this.input == null || this.options.autosuggest == null && this.options.onFilter == null && this.options.items == null) - return; - - if (this.options.readonly) { - if (this.options.items != null) - this.highlight(e); - return; - } - - if (this.input.value.length < this.suggestlength || e.keyCode == 9 || e.keyCode == 13) { - if (this.auto != null) - this.auto.style.display = 'none'; - return; - } - - var sugid = ++this.sugid; - if (this.options.onFilter != null) { - var ret = this.options.onFilter(this.input.value); - this.list(ret, sugid); - this.itemschanged = true; - } else if (scil.Utils.startswith(this.options.autosuggest, 'data:')) { - // local data - var ret = this.filterlist(this.options.autosuggest.substr(5).split(','), this.input.value); - this.list(ret, sugid); - this.itemschanged = true; - } else if (scil.Utils.startswith(this.options.autosuggest, 'javascript:')) { - var s = this.options.autosuggest.substr(11); - var fn = scil.Utils.eval(s); - var items = fn(this); - - var ret = this.filterlist(items, this.input.value); - this.list(ret, sugid); - this.itemschanged = true; - } else if (this.options.items != null && this.options.autosuggest == null) { - // local data - var ret = this.filterlist(this.options.items, this.input.value); - this.list(ret, sugid); - this.itemschanged = true; - } else if (this.options.autosuggest != null) { - // url to ajax call - var me = this; - var args = {q: this.input.value}; - if (this.options.onsuggest != null) - this.options.onsuggest(args); - scil.Utils.jsonp(this.options.autosuggest, function(ret) { - me.list(ret.items == null ? ret : ret.items, sugid); - me.itemschanged = true; - }, args); - } - - }, - - filterlist: function(list, q) { - var ret = []; - if (q != null && q != '' && list != null) { - q = q.toLowerCase(); - for (var i = 0; i < list.length; ++i) { - if (list[i].toLowerCase().indexOf(q) >= 0) - ret.push(scil.Utils.trim(list[i])); - } - } - return ret; - }, - - clickMe: function(e) { - if (this.options.items == null) - return; - - var input = e.srcElement || e.target; - if (input.offsetWidth - (e.offsetX == null ? e.layerX : e.offsetX) < 16) - this.show(); - }, - - setItems: function(list) { - if (list == null) - return; - this.options.items = list; - this.itemschanged = true; - }, - - isChildOf: function(src) { - return src == this.input || JsUtils.isChildOf(src, this.auto); - }, - - isDropdownVisible: function() { - return this.auto != null && this.auto.style.display == ''; - }, - - isVisible: function() { - return this.input != null && this.input.style.display == ''; - }, - - show: function() { - if (this.auto == null) { - var me = this; - var pos = scil.Utils.isFixedPosition(this.input) ? 'fixed' : 'absolute'; - this.auto = scil.Utils.createElement(document.body, 'div', null, {display: 'none', backgroundColor: 'white', overflow: 'hidden', border: 'solid 1px gray', position: pos, zIndex: 99999}); - dojo.connect(document.body, 'onmousedown', function(e) { - var src = e.srcElement || e.target; - if (src != me.q && src.parentNode != me.auto) me.clickout(); - }); - } - - if (this.itemschanged) - this.list(this.options.items, ++this.sugid); - this.auto.style.display = ''; - this.auto.style.zIndex = scil.Utils.getZindex(this.input) + 1; - this.updateDropdownSize(); - }, - - highlight: function(e) { - if (this.auto == null || this.auto.style.display == 'none') { - if (e.keyCode == 13 || e.keyCode == 40) { - this.show(); - e.preventDefault(); - } - return; - } - - e.preventDefault(); - if (e.keyCode == 27) { - this.hide(); - return; - } - - var children = this.auto.childNodes; - var sel = null; - for (var i = 0; i < children.length; ++i) { - var item = children[i]; - if (item.getAttribute('sel') == '1') { - sel = i; - break; - } - } - - if (e.keyCode == 13) { - if (sel != null) - this.clickItem(children[sel]); - return; - } - - var newsel = null; - if (e.keyCode == 38 || e.keyCode == 40) { - if (sel == null) { - newsel = 0; - } else if (e.keyCode == 38) { - newsel = sel - 1; - if (newsel < 0) - newsel = children.length - 1; - } else { - newsel = sel + 1; - if (newsel >= children.length) - newsel = 0; - } - - e.preventDefault(); - } else { - if (e.char != null) { - var c = e.char.toLowerCase(); - newsel = this.findNextMatch(c, sel == null ? 0 : sel + 1, children.length); - if (newsel == null && sel != null) - newsel = this.findNextMatch(c, 0, sel); - } - } - - if (newsel != null && newsel != sel) { - if (sel != null) - this._hilitItem(children[sel], false); - this._hilitItem(children[newsel], true); - } - }, - - findNextMatch: function(c, start, end) { - for (var i = start; i < end; ++i) { - var item = this.auto.childNodes[i]; - if (item.innerHTML) { - var s = this.getItemValue(item); - if (s.length > 0 && s.substr(0, 1).toLowerCase() == c) - return i; - } - } - return null; - }, - - updateDropdownSize: function() { - if (!this.isDropdownVisible()) - return; - - var p = scil.Utils.getOffset(this.input); - var scroll = scilligence.Utils.scrollOffset(); - if (scil.Utils.isIE) { - var s2 = JsUtils.getScrollOffset(this.e); - scroll.offset(-s2.x, -s2.y); - } - var w = this.input.offsetWidth; - if (this.options.minautowidth > 0 && this.options.minautowidth > w) - w = this.options.minautowidth; - if (w < 100) - w = 100; - dojo.style(this.auto, {left: (p.x + scroll.x) + 'px', top: (p.y + scroll.y + this.input.offsetHeight) + 'px', width: (w - 2) + 'px'}); - }, - - hide: function() { - if (this.auto != null && this.auto.style.display != 'none') - this.auto.style.display = 'none'; - }, - - isParentHidden: function(q) { - var obj = q; - while (obj != null && obj.style != null) { - if (obj.style.display == 'none' || obj.style.visibility == 'hidden') - return true; - obj = obj.parentNode; - } - return false; - }, - - list: function(items, sugid) { - if (items == null || items.length == 0 || sugid != this.sugid || this.isParentHidden(this.input)) { - if (this.auto != null) { - scilligence.Utils.removeAll(this.auto); - this.auto.style.display = 'none'; - } - return; - } - if (this.auto == null || this.auto.style.display == 'none') { - this.itemschanged = false; - this.show(); - } - - this.itemschanged = false; - scilligence.Utils.removeAll(this.auto); - if (items == null || items.length == 0) - return; - - var me = this; - for (var i = 0; i < items.length; ++i) { - var s = items[i]; - var div = scilligence.Utils.createElement(this.auto, 'div', scil.Utils.isNullOrEmpty(s) ? ' ' : s, {padding: '2px', textAlign: this.options.align}); - dojo.connect(div, 'onclick', function(e) { - me.click(e); - }); - dojo.connect(div, 'onmouseover', function(e) { - me.mouseover(e); - }); - dojo.connect(div, 'onmouseout', function(e) { - me.mouseout(e); - }); - } - }, - - mouseover: function(e) { - this._hilitItem(e.srcElement || e.target, true); - }, - - mouseout: function(e) { - this._hilitItem(e.srcElement || e.target, false); - }, - - _hilitItem: function(item, f) { - if (f) { - item.style.backgroundColor = '#ddf'; - item.setAttribute('sel', '1'); - } else { - item.style.backgroundColor = 'white'; - item.removeAttribute('sel'); - } - }, - - clickout: function(e) { - this.hide(); - }, - - click: function(e) { - var src = e.srcElement || e.target; - this.clickItem(src); - }, - - getItemValue: function(src) { - var s = scil.Utils.htmlDecode(src.innerHTML); - if (s == ' ') - s = ''; - return s; - }, - - clickItem: function(src) { - var s = this.getItemValue(src); - if (this.options.onSetValue != null) - this.options.onSetValue(this.input, s); - else if (this.options.overwrite == 'unit') - this.input.value = this.changeUnit(this.input.value, s); - else if (this.options.overwrite == false) - this.input.value += s; - else - this.input.value = s; - this.hide(); - if (this.options.overwrite) - this.input.select(); - this.input.focus(); - - if (this.options.onclickitem != null) - this.options.onclickitem(s); - - scil.Utils.fireEvent(this.input, 'change', false, true); - }, - - changeUnit: function(s, unit) { - var r = JSDraw2.Table.parseValueUnit(s); - if (r == null || r.value == null) - return ''; - return r.value + (unit == null ? '' : unit); - }, -}); - - - -/***/ }), - -/***/ "./form/Favorite.js": -/*!**************************!*\ - !*** ./form/Favorite.js ***! - \**************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.Favorite = scil.extend(scil._base, { - constructor: function(key, onAddFavorite) { - this.T = 'FAVORITE'; - this.key = key; - this.items = null; - this.onAddFavorite = onAddFavorite; - this.changed = false; - }, - - getList: function(type) { - this._load(); - return this.items[type]; - }, - - contains: function(name, type) { - this._load(); - - var list = this.items[type]; - return list == null ? false : scil.Utils.indexOf(list, name) >= 0; - }, - - add: function(name, f, type) { - this._load(); - - var list = this.items[type]; - if (list == null) { - if (f) { - this.items[type] = [name]; - this.changed = true; - } - } else { - var p = scil.Utils.indexOf(list, name); - if (p < 0 && f) { - list.push(name); - this.changed = true; - } else if (p >= 0 && !f) { - list.splice(p, 1); - this.changed = true; - } - } - - if (this.onAddFavorite != null) - this.onAddFavorite(name, f, type); - - if (this.changed) - this._save(); - }, - - _save: function() { - if (this.items == null) - return; - - var s = scil.Utils.json2str(this.items); - scil.Utils.createCookie('scil_helm_favorites_' + this.key, s); - }, - - _load: function() { - if (this.items != null) - return; - - var s = scil.Utils.readCookie('scil_helm_favorites_' + this.key); - var v = scil.Utils.eval(s); - this.items = v == null ? {} : v; - }, -}); - - -/***/ }), - -/***/ "./form/FieldNumber.js": -/*!*****************************!*\ - !*** ./form/FieldNumber.js ***! - \*****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * FieldNumber class - FieldNumber Control - * @class scilligence.FieldNumber - */ -scil.FieldNumber = scil.extend(scil._base, { - /** - * Constructor - * @function constroctor - * @param {DOM} parent - * @param {dict} options - { width, min, max, allowoperator, scale, units } - */ - constructor: function(input, options) { - this.T = 'FIELD_NUMBER'; - if (typeof (input) == 'string') - input = scil.byId(input); - this.options = options == null ? {} : options; - this.input = input; - this.unit = null; - //this.input.style.textAlign = "right"; - - var me = this; - if (this.options.allowoperator) { - this.auto = new scil.DropdownInput(input, - { - items: this.options.items == null ? ['', '≥', '≤', '<', '>', '±'] : this.options.items, - onSetValue: function(input, s) { - me.onSetOperator(input, s); - }, - }); - } - - var tr; - var viewonly = this.options.viewonly || this.input.disabled || this.input.readOnly; - if (this.options.units != null && !viewonly) { - var tbody = scil.Utils.createTable(null, 0, 0, {border: 'solid 1px #ccc'}); - this.input.parentNode.insertBefore(tbody.parentNode, this.input); - - tr = scil.Utils.createElement(tbody, 'tr'); - scil.Utils.createElement(tr, 'td').appendChild(this.input); - this.unit = scil.Utils.createElement(scil.Utils.createElement(tr, 'td', null, {borderLeft: 'solid 1px #ccc'}), 'select', null, {width: this.options.unitwidth}); - scil.Utils.listOptions(this.unit, this.options.units, null, true, false); - - scil.connect(this.unit, 'onchange', function() { - scil.Utils.fireEvent(me.input, 'change'); - }); - - this.input.style.border = 'none'; - this.unit.style.border = 'none'; - } - - var me = this; - scil.connect(input, 'onchange', function(e) { - var s = input.value; - if (s != '' && s != null && (me.options.accepts == null || !new RegExp(me.options.accepts).test(s)) && !scil.Utils.isNumber(s, me.options.allowoperator)) { - input.value = ''; - scil.Utils.alert('A number is required!'); - } else { - if (me.unit != null) - s += me.unit.value; - me.setValue(s); - } - }); - - if (!viewonly && this.options.mobiledata != null) { - var me = this; - new scil.MobileData(input, { - weighstation: true, url: scil.MobileData.getDefaultUrl(true), onresult: function(ret) { - me.setValue(ret.barcode); - scil.MobileData.markRecieved(input); - return true; - }, - }); - scil.Utils.createButton(scil.Utils.createElement(tr, 'td'), { - label: '⚖', title: 'Select Weigh Station', type: 'a', onclick: function() { - scil.MobileData.selectWeighstation(); - }, - }); - } - }, - - onSetOperator: function(input, op) { - if (op == '') - return; - - var s = scil.Utils.trim(input.value); - if (op == '±') { - if (s.indexOf('±') >= 0) - return; - input.value = s + ' ±'; - } else { - var c = s.length > 0 ? s.substr(0, 1) : null; - if (c == '≥' || c == '≤' || c == '>' || c == '<') - s = s.substr(1); - input.value = op + s; - } - }, - - clear: function() { - this.input.value = ''; - }, - - setValue: function(v) { - v = v == null ? null : (JSDraw2.Table == null ? {value: v} : JSDraw2.Table.splitUnit(v + '')); - if (v == null) { - this.input.value = ''; - return; - } - - if (this.options.scale > 0 && !isNaN(v.value)) - v.value *= this.options.scale; - - if (this.options.decimal > 0) - v.value = scil.Utils.round(v.value, this.options.decimal); - - if (v.unit2 == null) - v.unit2 = this.options.defaultunit; - - if (this.unit != null) { - this.input.value = v.value; - scil.Utils.selectOption(this.unit, v.unit2, true); - } else { - this.input.value = v.value + (v.unit2 == null ? '' : v.unit2); - if (JSDraw2.ColorCoding != null) - JSDraw2.ColorCoding.show(this.input, v.value, this.options); - } - }, - - getValue: function() { - var v = scil.Utils.trim(this.input.value); - if (!scil.Utils.isNullOrEmpty(v) && !isNaN(v)) { - if (this.options.scale > 0) - v /= this.options.scale; - - if (this.unit != null) - v = v + this.unit.value; - } - - return v; - }, -}); - - -/***/ }), - -/***/ "./form/Menu.js": -/*!**********************!*\ - !*** ./form/Menu.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** -* Menu class - Menu Control -* @class scilligence.Menu -*/ -scil.Menu = { - timeout: scilligence.Utils.isTouch || window.navigator.msPointerEnabled ? 2000 : 500, - closetimer: 0, - menuitem: null, - - isOpen: function () { - return scil.Menu.menuitem != null && scil.Menu.menuitem.style.display != "none"; - }, - - open: function (id) { - scil.Menu.cancelclosetime(); - if (scil.Menu.menuitem) - scil.Menu.menuitem.style.display = 'none'; - scil.Menu.menuitem = document.getElementById(id); - scil.Menu.menuitem.style.display = ''; - }, - - close: function () { - if (scil.Menu.menuitem) - scil.Menu.menuitem.style.display = 'none'; - }, - - openOrClose: function (id) { - if (scil.Menu.menuitem == null || scil.Menu.menuitem.style.display == "none") - this.open(id); - else - this.close(); - }, - - closetime: function () { - scil.Menu.closetimer = window.setTimeout(scil.Menu.close, scil.Menu.timeout); - }, - - cancelclosetime: function () { - if (scil.Menu.closetimer) { - window.clearTimeout(scil.Menu.closetimer); - scil.Menu.closetimer = null; - } - } -}; - - -JSDraw2.Menu = scil.Menu; - - -/***/ }), - -/***/ "./form/Popup.js": -/*!***********************!*\ - !*** ./form/Popup.js ***! - \***********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * Popup class - * @class scilligence.Popup - *
- * Example:
- * <span id='k'>Test</span> More words
- * <span id='Span1'>Test2</span>
- * <script type="text/javascript">
- *     scil.onload(function () {
- *         new scil.Popup('k', { html: "Hello, World!", caption: "Hellow" });
- *         new scil.Popup('Span1', { html: "<img src='face.gif'>", caption: "Picture" });
- *     });
- * </script>
- * 
- */ -scil.Popup = scil.extend(scil._base, { - /** - * @constructor Popup - * @param {string or DOM} element - the INPUT element to be converted - * @param {dictionary} options - { caption, html, ongethtml: function() {} } - */ - constructor: function(a, options) { - this.T = 'POPUP'; - if (typeof (a) == 'string') - this.a = scil.byId(a); - else - this.a = a; - - if (options == null) - this.options = {}; - else - this.options = options; - - if (this.a != null) { - var me = this; - dojo.connect(this.a, 'onmouseout', function() { - scil.Popup.hide(); - }); - dojo.connect(this.a, 'onmouseover', function(e) { - scil.Popup.show(me, e); - }); - } - - scil.Popup.init(); - }, - - getHtml: function(e) { - if (this.options.ongethtml2 != null) - return this.options.ongethtml2(this, e); - - if (this.options.html == null) { - if (this.options.ongethtml != null) - this.options.html = this.options.ongethtml(this); - } - return this.options.html; - }, - - getCaption: function(e) { - if (this.options.ongetcaption2 != null) - return this.options.ongetcaption2(this, e); - - return this.options.caption; - }, -}); - -scil.apply(scil.Popup, { - current: null, - inited: null, - - show: function(popup, e2) { - this.hide(); - this.current = popup; - e = new scil.Popup.Event(e2); - - var caption = this.current.getCaption(e2); - var html = this.current.getHtml(e2); - - if (scil.Utils.isNullOrEmpty(html)) { - this.hide(); - return; - } - - this.create(); - this.area.innerHTML = ''; - this.title.innerHTML = ''; - this.div.style.display = ''; - - this.title.innerHTML = caption == null ? '' : caption; - this.area.innerHTML = html; - - if (e != null) - this.move(e); - }, - - hide: function() { - this.current = null; - if (this.div != null) { - this.title.innerHTML = ''; - this.area.innerHTML = ''; - this.div.style.display = 'none'; - } - }, - - move: function(e) { - if (this.current == null) - return; - - if (this.div == null || this.div.style.display == 'none') - return; - - var obj = e.srcElement == null ? e.target : e.srcElement; - if (this.current.a == obj || this.isChildOf(obj, this.current.a)) { - this.moveto(e); - return; - } - - if (this.isChildOf(obj, this.div)) - return; - - this.hide(); - }, - - moveto: function(e) { - this.create(); - var scrollLeft = this.scrollLeft(); - var scrollTop = this.scrollTop(); - - var winWidth = 0; - var winHeight = 0; - - if (document.all == null) { - winWidth = window.innerWidth; - winHeight = window.innerHeight; - } else { - winWidth = document.documentElement.clientWidth; - winHeight = document.documentElement.clientHeight; - } - - var w = this.div.offsetWidth; - var h = this.div.offsetHeight; - - var x = e.clientX + scrollLeft + 10; - var y = e.clientY + scrollTop + 20; - if (x - scrollLeft + w > winWidth && x - scrollLeft - w > 0) - x -= w + 15; - if (y - scrollTop + h > winHeight && y - scrollTop - h > 0) - y -= h + 25; - - this.div.style.left = x + 'px'; - this.div.style.top = y + 'px'; - }, - - isChildOf: function(obj, parent) { - while (obj != null) { - if (obj == parent) - return true; - obj = obj.parentNode; - } - - return false; - }, - - scrollLeft: function(e) { - return this.filterResults( - window.pageXOffset ? window.pageXOffset : 0, - document.documentElement ? document.documentElement.scrollLeft : 0, - document.body ? document.body.scrollLeft : 0, - ); - }, - - scrollTop: function(e) { - return this.filterResults( - window.pageYOffset ? window.pageYOffset : 0, - document.documentElement ? document.documentElement.scrollTop : 0, - document.body ? document.body.scrollTop : 0, - ); - }, - - filterResults: function(n_win, n_docel, n_body) { - var n_result = n_win ? n_win : 0; - if (n_docel && (!n_result || (n_result > n_docel))) - n_result = n_docel; - return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result; - }, - - init: function() { - if (this.inited == true) - return; - this.inited = true; - - dojo.connect(document, 'onmousemove', function(e) { - scil.Popup.move(e); - }); - }, - - create: function() { - if (this.div != null) - return; - - this.div = document.createElement('div'); - this.div.style.display = 'none'; - this.div.style.whiteSpace = 'nowrap'; - this.div.style.backgroundColor = 'white'; - this.div.style.borderStyle = 'solid'; - this.div.style.borderColor = '#f0f0f0 #a0a0a0 #a0a0a0 #f0f0f0'; - this.div.style.borderWidth = '2px'; - this.div.style.position = 'absolute'; - this.div.style.zIndex = scil.Utils.getMaxZindex(); - this.div.style.textAlign = 'left'; - document.body.appendChild(this.div); - - var div = document.createElement('div'); - div.style.border = '1px solid highlight'; - div.style.padding = '1px'; - this.div.appendChild(div); - - this.title = document.createElement('div'); - this.title.style.textAlign = 'center'; - this.title.style.border = JSDraw2.Skin.dialog.border; - this.title.style.backgroundColor = JSDraw2.Skin.dialog.bkcolor; - this.title.style.color = 'white'; - div.appendChild(this.title); - - this.area = document.createElement('div'); - this.area.style.padding = '2px'; - this.area.style.backgroundColor = 'white'; - div.appendChild(this.area); - }, -}); - - -scil.Popup.Event = scil.extend(scil._base, { - constructor: function(e) { - this.clientX = e.clientX; - this.clientY = e.clientY; - this.srcElement = e.target || e.srcElement; - }, -}); - - -/***/ }), - -/***/ "./form/Progress.js": -/*!**************************!*\ - !*** ./form/Progress.js ***! - \**************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** -* Progress class - To Show Progress -* @class {static} scilligence.Progress -*
-* Example:
-*    scilligence.Progress.show("Running", function() { alert("cancelled"); });
-*    var count = 0;
-*    setInterval(function() { scilligence.Progress.update(++count, "Value " + count); }, 500);
-* 
-*/ -scilligence.Progress = { - dlg: null, - bar: null, - msg: null, - oncancel: null, - - /** - * Show progress bar - * @function {static} show - * @param {string} caption dialog caption - * @param {function} or false: oncalcel callback function when users click on Cancel button - * @param {string} msg Message - * @param {boolean} showprogressbar - * @returns null - */ - show: function (caption, oncancel, msg, showprogressbar) { - this.create(); - if (oncancel == false) { - this.cancelbtn.style.display = "none"; - this.oncancel = null; - } - else if (typeof(oncancel) == "function") { - this.cancelbtn.style.display = ""; - this.oncancel = oncancel; - } - this.msg.innerHTML = msg == null ? "" : msg; - this.frame.style.display = showprogressbar == false ? "none" : ""; - this.dlg.show(caption); - }, - - hide: function () { - if (this.dlg != null) - this.dlg.hide(); - }, - - cancel: function () { - if (this.oncancel != null) - this.oncancel(); - this.hide(); - }, - - update: function (percent, msg) { - if (percent > 100) - percent = 100; - else if (!(percent > 0)) - percent = 0; - - var n = Math.round(300 * percent / 100); - if (n < 0) - n = 0; - this.bar.style.width = n + "px"; - this.msg.innerHTML = msg == null ? "" : msg; - }, - - create: function (u) { - if (this.dlg != null) - return false; - - var div = scilligence.Utils.createElement(null, "div", null, { margin: "5px", width: "320px", textAlign: "center" }); - this.animator = scilligence.Utils.createElement(div, "div", scil.Utils.imgTag("animator.gif"), { textAlign: "center" }); - this.msg = scilligence.Utils.createElement(div, "div", " ", { textAlign: "center" }); - this.frame = scilligence.Utils.createElement(div, "div", null, { width: "300px", height: "20px", border: "solid 1px #e0e0e0", textAlign: "left" }); - this.bar = scilligence.Utils.createElement(this.frame, "div", " ", { width: "1px", height: "20px", backgroundColor: "blue" }); - this.cancelbtn = scilligence.Utils.createElement(div, "button", scil.Utils.imgTag("cancel.gif") + "Cancel", { marginTop: "10px" }); - dojo.connect(this.cancelbtn, "onclick", function () { scilligence.Progress.cancel(); }); - - this.dlg = new JSDraw2.Dialog("Progress", div); - return true; - } -}; - - -/***/ }), - -/***/ "./form/Resizable.js": -/*!***************************!*\ - !*** ./form/Resizable.js ***! - \***************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.Resizable = scil.extend(scil._base, { - constructor: function(handle, options) { - this.T = 'RESIZABLE'; - if (typeof (handle) == 'string') - handle = scil.byId(handle); - this.options = options == null ? {} : options; - this.resizing = null; - this.handle = handle; - this.bgcolor = this.handle.style.backgroundColor; - - if (this.options.direction == 'y') - handle.style.cursor = 'ns-resize'; - else if (this.options.direction == 'x') - handle.style.cursor = 'ew-resize'; - - var me = this; - dojo.connect(handle, 'onmousedown', function(e) { - me.start(e); - }); - scil.connect(document.body, 'onmousemove', function(e) { - if (me.resize(e)) e.preventDefault(); - }); - scil.connect(document.body, 'onmouseup', function(e) { - me.resizing = null; - }); - - if (this.options.mouseovercolor != null) { - scil.connect(handle, 'onmouseover', function() { - me.handle.style.backgroundColor = me.options.mouseovercolor; - }); - scil.connect(handle, 'onmouseout', function() { - me.handle.style.backgroundColor = me.bgcolor; - }); - } - }, - - resize: function(e) { - if (this.resizing == null) - return false; - - var delta = this.options.direction == 'y' ? (e.clientY - this.resizing.y) : (e.clientX - this.resizing.x); - if (delta == 0) - return true; - - var f = false; - if (this.options.onresize != null) - f = this.options.onresize(delta, this); - - if (f) { - if (this.options.direction == 'y') - this.resizing.y = e.clientY; - else - this.resizing.x = e.clientX; - } - - return true; - }, - - start: function(e) { - if (this.options.direction == 'y') - this.resizing = {y: e.clientY}; - else if (this.options.direction == 'x') - this.resizing = {x: e.clientX}; - }, -}); - - -/***/ }), - -/***/ "./form/Table.js": -/*!***********************!*\ - !*** ./form/Table.js ***! - \***********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * Table class - Table Control - * @class scilligence.Table - *
- * Example 1:
- *    dojo.ready(function () {
- *        var parent = scil.Utils.createElement(document.body, "div");
- *        var columns = {
- *            user: { label: "User", type: "input", width: 300 },
- *            role: { label: "Role", type: "select", options: ["", "Member", "Manager"], width: 300 }
- *        };
- *        var table = new scilligence.Table({viewonly: false, header: true});
- *        table.render(parent, columns);
- *
- *        table.setData([{ user: "Tony", role: "Member" }, { user: "Jack", role: "Manager"}]);
- *    });
- *
- * Example 2 (Double Header Table):
- *    <script type="text/javascript">
- *        var table;
- *        dojo.ready(function () {
- *            var parent = scil.Utils.createElement(document.body, "div");
- *            var columns = {
- *                mass: { label: "Mass", type: "number", align: "center", width: 200, unit: "g" },
- *                file: { label: "NMR", type: "file", options: { uploadurl: "service.aspx?cmd=upload"} },
- *                name: { label: "Compound Name", type: "input", width: 200 },
- *                vendor: { label: "Vendor", type: "editableselect", options: ["Company A", "Company B"], width: 200 }
- *            };
- *            table = new scil.Table({ viewonly: true, header0: [null, { label: "Scilli", colspan: 2 }, { label: "Kinase"}] });
- *            table.render(parent, columns);
- *            table.addRow({ mass: 160, name: "Compound 123", vendor: "Sigma" });
- *        });
- *  </script>
- * 
- */ -scil.Table = scil.extend(scil._base, { - /** - * @constructor Table - * @param {bool} viewonly - * @param {bool} header - * @param {dictionary} options - { viewonly(bool), header(bool), selectrow (bool), rowcheck(bool), delrow(bool), addrow (bool), selectrow (bool), onAdd, onselectrow, onchange } - */ - constructor: function(viewonly, header, options) { - this.T = 'TABLE'; - if (viewonly != null && typeof (viewonly) == 'object') { - this.options = viewonly; - this.viewonly = this.options.viewonly; - this.header = this.options.header; - } else { - // old constructor: (viewonly, header, options) - this.viewonly = viewonly; - this.header = header; - if (scil.Table._tableincrease == null) - scil.Table._tableincrease = 0; - this._tableid = ++scil.Table._tableincrease; - - if (typeof (options) == 'function') - this.options = {onAdd: options}; - else if (options == null) - this.options = {}; - else - this.options = options; - } - - this.groupIndex = 0; - this.checkIndex = 1; - this.dataIndex = 2; - this._startrow = 2; - this.tbody = null; - this.items = null; - this.key = null; - - this._lastcheck = null; - }, - - /** - * Get table data as xml - * @function getData - */ - getXml: function() { - var n = this.tbody.childNodes.length - this._startrow; - if (n == 0) - return ''; - var xml = '\n'; - for (var i = 0; i < n; ++i) { - var tr = this.tbody.childNodes[i + this._startrow]; - - var hasdata = false; - var row = {}; - var j = this.dataIndex; - for (var k in this.items) { - var v = scil.Form.getFieldData(tr.childNodes[j++].field); - row[k] = v; - if (!hasdata && v != null && v != '') - hasdata = true; - } - - if (!hasdata) - continue; - - xml += '' + scil.Utils.escXmlValue(v) + '\n'; - } - xml += '\n'; - } - xml += '
'; - return xml; - }, - - /** - * Set table xml data - * @function setXml - * @param {xml} xml - * @returns null - */ - setXml: function(xml, lockeditems) { - var root = null; - if (typeof xml == 'object') { - root = xml; - } else if (typeof xml == 'string') { - var doc = scil.Utils.parseXml(xml); - if (doc != null) - root = doc.documentElement || doc.firstElementChild; - } - - var data = []; - try { - if (root != null && root.getElementsByTagName == null) - root = null; - } catch (e) { - } - - if (root != null) { - var rows = root.getElementsByTagName('r'); - for (var i = 0; i < rows.length; ++i) { - var row = {}; - - var cells = rows[i].getElementsByTagName('i'); - for (var j = 0; j < cells.length; ++j) { - var e = cells[j]; - var k = e.getAttribute('n'); - row[k] = e.text || e.textContent; - } - - data.push(row); - } - } - - this.setData(data); - }, - - getCsv: function() { - var s = ''; - var i = 0; - for (var k in this.items) { - if (++i > 1) - s += ','; - s += scil.Utils.escCsvValue(this.items[k].label); - } - s += '\n'; - - var n = this.tbody.childNodes.length - this._startrow; - for (var j = 0; j < n; ++j) { - var tr = this.tbody.childNodes[j + this._startrow]; - var row = this.getRowData(tr, true); - - i = 0; - for (var k in this.items) { - if (++i > 1) - s += ','; - s += scil.Utils.escCsvValue(row[k]); - } - - s += '\n'; - } - return s; - }, - - /** - * Get table data - collection: { id.1: {...}, id.2 : {...}, ... } - * @function getData - * @param {dictionary} collection - the collection that data will be placed in - * @param {string} id - id prefix - */ - getData: function(collection, id, rowcheck) { - if (collection == null) { - var rows = []; - var n = this.tbody.childNodes.length - this._startrow; - for (var i = 0; i < n; ++i) { - var tr = this.tbody.childNodes[i + this._startrow]; - var row = this.getRowData(tr, rowcheck); - rows.push(row); - } - return rows; - } else { - var n = this.tbody.childNodes.length - this._startrow; - collection[id + '.n'] = n; - for (var i = 0; i < n; ++i) { - var tr = this.tbody.childNodes[i + this._startrow]; - var key = id + '.' + i + '.'; - if (tr.getAttribute('isnew') == '1') - collection[key + 'isnew'] = 1; - - var j = this.dataIndex; - for (var k in this.items) - collection[key + k] = scil.Form.getFieldData(tr.childNodes[j++].field); - } - } - }, - - /** - * Get JSON data of a row - * @function getRowData - */ - getRowData: function(tr, rowcheck) { - if (tr == null) - return null; - if (typeof (tr) == 'number') { - tr = this.tbody.childNodes[tr + this._startrow]; - if (tr == null) - return null; - } - - var row = {}; - if (tr.getAttribute('isnew') == '1') - row.isnew = 1; - - var j = this.dataIndex; - for (var k in this.items) { - var td = tr.childNodes[j++]; - var v = td == null ? null : scil.Form.getFieldData(td.field); - if (v != null && v != '') - row[k] = v; - } - - if (rowcheck && tr.childNodes[this.checkIndex].firstChild.checked) - row.rowchecked = true; - - return row; - }, - - getRowTexts: function(tr) { - if (tr == null) - return null; - if (typeof (tr) == 'number') { - tr = this.tbody.childNodes[tr + this._startrow]; - if (tr == null) - return null; - } - - var row = {}; - if (tr.getAttribute('isnew') == '1') - row.isnew = 1; - - var j = this.dataIndex; - for (var k in this.items) { - var e = tr.childNodes[j++]; - var v = e.text || e.textContent; - if (v != null && v != '') - row[k] = v; - } - - return row; - }, - - /** - * Get JSON data of the current selected row - * @function getCurrentRowData - */ - getCurrentRowData: function() { - return this.getRowData(this.currow); - }, - - /** - * Set table data - * @function setData - * @param {array} data - the array of table data, one array item is for one row - * @returns null - */ - setData: function(data, lockeditems) { - this.clear(); - if (data != null) { - for (var i = 0; i < data.length; ++i) - this.addRow(data[i], lockeditems); - } - - if (!this.viewonly && this.options.addrow != false) - this.addRow(); - }, - - /** - * Remove all rows - * @function clear - * @returns null - */ - clear: function() { - this.dirty = false; - for (var i = this.tbody.childNodes.length - 1; i >= this._startrow; --i) - this.tbody.removeChild(this.tbody.childNodes[i]); - this.currow = null; - }, - - /** - * Render table - * @function render - * @param {string or DOM} parent - parent element - * @param {array} item - column definition as an array - * @returns null - */ - render: function(parent, items) { - this.items = {}; - for (var id in items) { - if (items[id] != null) { - this.items[id] = items[id]; - if (items[id].iskey) - this.key = id; - } - } - this._hideCookieCols(this.items); - - if (typeof (parent) == 'string') - parent = dojo.byId(parent); - - var me = this; - var div = scil.Utils.createElement(parent, 'div'); - this.tbody = scilligence.Utils.createTable(div, 0, 3, {borderRight: JSDraw2.Skin.jssdf.border, borderBottom: JSDraw2.Skin.jssdf.border, borderTop: JSDraw2.Skin.jssdf.border}); - this.tbody.parentNode.setAttribute('class', 'scil_table'); - if (!this.viewonly && this.options.addrow != false) { - var addbtn = scil.Utils.createElement(scil.Utils.createElement(div, 'div'), 'img', null, null, {src: scil.Utils.imgSrc('img/add.gif'), title: scil.Lang.res('Add')}); - dojo.connect(addbtn, 'onclick', function() { - if (me.options.onAdd != null) me.options.onAdd(me); else me.addRow(); - }); - } - - var r0 = scil.Utils.createElement(this.tbody, 'tr'); - var header0 = this.options.header0; - var r = scil.Utils.createElement(this.tbody, 'tr'); - if (header0 != null) { - scil.Utils.createElement(r0, 'td', null, {display: this.options.grouping ? '' : 'none'}); - scil.Utils.createElement(r0, 'td', null, {display: this.options.rowcheck ? '' : 'none'}); - for (var i = 0; i < header0.length; ++i) { - var item = header0[i]; - if (item == null) { - scil.Utils.createElement(r0, 'td'); - } else { - var td = scil.Utils.createElement(r0, 'td', scil.Lang.res(item.label), scil.Table.headerstyles, {colSpan: item.colspan}); - td.style.textAlign = 'center'; - } - } - } - - var td = scil.Utils.createElement(r, 'td', null, scil.Table.headerstyles); - if (this.options.grouping) { - td.style.width = '5px'; - scil.Utils.createElement(td, 'img', null, null, {src: scil.Utils.imgSrc('img/minus.gif')}, function(e) { - me.groupExpandAll(e); - }); - } else { - td.style.display = 'none'; - } - - var td = scil.Utils.createElement(r, 'td', null, scil.Table.headerstyles); - if (this.options.rowcheck) { - td.style.width = '5px'; - if (this.options.rowcheck != 'radio') - scil.Utils.createElement(td, 'checkbox', null, null, null, function(e) { - me.checkAll((e.srcElement || e.target).checked); - }); - } else { - td.style.display = 'none'; - } - - var style = scil.clone(scil.Table.headerstyles); - style.borderBottom = JSDraw2.Skin.jssdf.border; - style.borderLeft = JSDraw2.Skin.jssdf.border; - - for (var id in this.items) { - var item = this.items[id]; - var s = scil.Lang.res(item.label); - if (item.unit != null && item.unit != '') - s += ' (' + scil.Lang.res(item.unit) + ')'; - var td = scil.Utils.createElement(r, 'td', s, style, {key: id}); - if (item.width != null) - td.style.width = item.width + 'px'; - if (item.type == 'hidden' || item.ishidden) - td.style.display = 'none'; - - if (item.type == 'checkbox' && item.headercheckbox != false && !this.viewonly && !item.viewonly) { - var chk = scil.Utils.createElement(td, 'checkbox'); - this.connectCheckAll(chk, id); - } - } - if (this.header == false) - r.style.display = 'none'; - if (!this.viewonly) { - if (this.options.delrow != false) - scil.Utils.createElement(r, 'td', ' ', style); - this.addRow(); - } - - if (this.options.selectrow) - dojo.connect(this.tbody, 'onclick', function(e) { - me.clickRow(e); - }); - }, - - connectCheckAll: function(chk, id) { - var me = this; - dojo.connect(chk, 'onclick', function(e) { - me.checkAll((e.srcElement || e.target).checked, id); - }); - }, - - hidColumn: function(key) { - return this.showColumn(key, false); - }, - - /** - * Show or hide a column - * @function showColumn - * @param {string} key - * @param {bool} f - * @returns true or false - */ - showColumn: function(key, f) { - if (this.options.header0 != null) - return false; - - if (f == null) - f = true; - - var item = this.items[key]; - if (item == null || item.type == 'hidden') - return false; - item.ishidden = !f; - - if (this.tbody == null || this.tbody.childNodes.length <= 1) - return false; - - var icol = this.getColIndex(key); - if (icol == -1) - return false; - - for (var i = 1; i < this.tbody.childNodes.length; ++i) - this.tbody.childNodes[i].childNodes[icol].style.display = f ? '' : 'none'; - - return true; - }, - - getColIndex: function(key) { - var tr = this.tbody.childNodes[1]; - for (var i = 0; i < tr.childNodes.length; ++i) { - if (tr.childNodes[i].getAttribute('key') == key) - return i; - } - - return -1; - }, - - /** - * Check all rows - * @function checkAll - */ - checkAll: function(f, key) { - var nodes = this.tbody.childNodes; - if (key == null) { - for (var i = this._startrow; i < nodes.length; ++i) { - if (nodes[i].style.display == 'none') - nodes[i].childNodes[this.checkIndex].firstChild.checked = false; - else - nodes[i].childNodes[this.checkIndex].firstChild.checked = f; - } - } else { - var icol = this.getColIndex(key); - if (icol == -1) - return false; - - for (var i = this._startrow; i < nodes.length; ++i) { - if (nodes[i].style.display == 'none') { - nodes[i].childNodes[this.checkIndex].firstChild.checked = false; - } else { - var td = nodes[i].childNodes[icol]; - var list = td.getElementsByTagName('input'); - if (list != null && list.length == 1) - list[0].checked = f; - } - } - } - }, - - /** - * Get checked rows - * @function getCheckedRows - */ - getCheckedRows: function() { - var ret = []; - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].childNodes[this.checkIndex].firstChild.checked) - ret.push(i - this._startrow); - } - return ret; - }, - - /** - * Get checked row data - * @function getCheckedRowData - */ - getCheckedRowData: function() { - var ret = []; - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].childNodes[this.checkIndex].firstChild.checked) - ret.push(this.getRowData(list[i])); - } - return ret; - }, - - /** - * Get checked row data. If no row checked, it will use the current row - * @function getCheckedRowData2 - */ - getCheckedRowData2: function() { - var ret = []; - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].childNodes[this.checkIndex].firstChild.checked) - ret.push(this.getRowData(list[i])); - } - - if (ret.length == 0 && this.cur != null) - ret.push(this.getCurrentRowData()); - return ret; - }, - - /** - * Get key of a row - * @function getKey - */ - getKey: function(tr) { - return tr == null ? null : tr.getAttribute('key'); - }, - - /** - * Check a row by using its key - * @function checkRow - */ - checkRow: function(key) { - if (!this.options.rowcheck) - return; - - if (typeof key == 'string') { - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) - if (list[i].getAttribute('key') == key) - list[i].childNodes[this.checkIndex].firstChild.checked = true; - } else if (typeof key == 'object') { - var tr = key; - if (tr.tagName == 'TR') - tr.childNodes[this.checkIndex].firstChild.checked = true; - } - }, - - /** - * Get all keys of checked rows - * @function getCheckedKeys - */ - getCheckedKeys: function() { - var ret = []; - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].childNodes[this.checkIndex].firstChild.checked) - ret.push(list[i].getAttribute('key')); - } - return ret; - }, - - /** - * Get all keys of checked rows. If no row checked, it returns selected row. - * @function getCheckedKeys2 - */ - getCheckedKeys2: function() { - var ret = this.getCheckedKeys(); - if (ret.length == 0) { - var key = this.getCurrentKey(); - if (key != null) - ret.push(key); - } - return ret; - }, - - /** - * Check a row by using its key. If no row checked, it returns selected row. - * @function getCheckedKeys2 - */ - getCheckedRows2: function() { - var ret = this.getCheckedRows(); - if (ret.length == 0) { - if (this.currow != null) - ret.push(this.currow); - } - return ret; - }, - - /** - * Get the key of current row - * @function getCurrentKey - */ - getCurrentKey: function() { - if (this.currow == null) - return null; - - var key = this.currow.getAttribute('key'); - return key == '' ? null : key; - }, - - clickRow: function(e) { - var src = e.srcElement || e.target; - var src; - if (src.tagName == 'TR') - tr = src; - else if (src.tagName == 'A') - return; - else - tr = scil.Utils.getParent(src, 'TR'); - - if (tr != null && this.tbody != tr.parentNode) - tr = null; - this.selectRow(tr); - }, - - selectFirstRow: function() { - var tr = this.tbody.childNodes[this._startrow]; - this.selectRow(tr); - }, - - findRow: function(key) { - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].getAttribute('key') == key) - return list[i]; - } - return null; - }, - - selectRow: function(tr) { - if (typeof (tr) == 'string') - tr = this.findRow(tr); - - var old = this.currow; - if (this.currow != null) - this.currow.style.backgroundColor = this.currow.getAttribute('bgcolor'); - this.currow = tr; - if (this.currow != null) - this.currow.style.backgroundColor = JSDraw2.Skin.jssdf.rowcolor; - - if (this.options.onselectrow != null) - this.options.onselectrow(this.currow, old); - }, - - /** - * Delete a row - * @function delRow - * @param {string} key the key value - * @returns true or false - */ - delRow: function(key) { - var list = this.tbody.childNodes; - for (var i = 0; i < list.length; ++i) { - if (list[i].getAttribute('key') == key) { - this.tbody.removeChild(list[i]); - if (this.options.onchange != null) - this.options.onchange(this); - this.dirty = true; - return true; - } - } - return false; - }, - - /** - * Update a row - * @function updateRow - * @param {string} key the key value - * @param {dictionary} data row data - * @returns true or false - */ - updateRow: function(key, data) { - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].getAttribute('key') == key) { - var tr = list[i]; - if (data == null) - data = {}; - data.rowchecked = this.options.rowcheck && tr.childNodes[this.checkIndex].firstChild.checked; - var r = this.addRow(data, null, tr); - this.tbody.removeChild(tr); - if (this.currow == tr) - this.selectRow(r); - return true; - } - } - return false; - }, - - /** - * Set cell value - * @function setCellValue2 - * @param {string/number/DOM} rowkey the key of the row, or row index, or TR - * @param {string} colkey the key of the column - * @param {object} value - * @returns true or false - */ - setCellValue2: function(rowkey, colkey, value) { - if (this.items[colkey] == null) - return false; - - var tr = null; - if (typeof (rowkey) == 'number') { - tr = this.tbody.childNodes[this._startrow + rowkey]; - } else if (typeof (rowkey) == 'object' && rowkey.tagName == 'TR') { - tr = rowkey; - } else { - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].getAttribute('key') == rowkey) { - tr = list[i]; - break; - } - } - } - - if (tr == null) - return false; - - for (var i = 0; i < tr.childNodes.length; ++i) { - var td = tr.childNodes[i]; - if (td.getAttribute('__tid') == colkey && td.field != null) { - scil.Form.setFieldData(td.field, this.items[colkey], this.viewonly, value); - return true; - } - } - - return false; - }, - - /** - * Get cell value - * @function getCellValue2 - * @param {string/number} rowkey the key of the row, or row index - * @param {string} colkey the key of the column - * @returns the cell value - */ - getCellValue2: function(rowkey, colkey) { - if (this.items[colkey] == null) - return null; - - var tr = null; - if (typeof (rowkey) == 'number') { - tr = this.tbody.childNodes[this._startrow + rowkey]; - } else { - var list = this.tbody.childNodes; - for (var i = this._startrow; i < list.length; ++i) { - if (list[i].getAttribute('key') == rowkey) { - tr = list[i]; - break; - } - } - } - - if (tr == null) - return null; - - for (var i = 0; i < tr.childNodes.length; ++i) { - var td = tr.childNodes[i]; - if (td.getAttribute('__tid') == colkey && td.field != null) - return scil.Form.getFieldData(td.field); - } - - return null; - }, - - _hilitRow: function(e, f) { - var tr = e.target || e.srcElement; - if (tr.tagName != 'TR') - tr = scil.Utils.getParent(tr, 'TR'); - if (tr == null || tr.getAttribute('sciltable') != '1') - return; - - if (f || tr == this.currow) - tr.style.backgroundColor = JSDraw2.Skin.jssdf.rowcolor; - else - tr.style.backgroundColor = tr.getAttribute('bgcolor'); - }, - - groupExpandAll: function(e) { - var img = e.target || e.srcElement; - var f = scil.Utils.endswith(img.src, 'minus.gif'); - img.src = scil.Utils.imgSrc('img/' + (f ? 'plus' : 'minus') + '.gif'); - - var tr = this.tbody.childNodes[this._startrow]; - while (tr != null) { - tr = this.groupExpand(tr, f); - } - }, - - groupExpand: function(tr, f) { - var s0 = this.getCellValue(tr, this.options.grouping); - if (scil.Utils.isNullOrEmpty(s0)) - return null; - - var img = tr.childNodes[this.groupIndex].firstChild; - if (img.tagName != 'IMG') - return null; - if (f == null) { - f = scil.Utils.endswith(img.src, 'minus.gif'); - } - - var n = 0; - while ((tr = tr.nextSibling) != null) { - var s = this.getCellValue(tr, this.options.grouping); - if (s0 != s) - break; - ++n; - tr.style.display = f ? 'none' : ''; - } - - img.src = scil.Utils.imgSrc('img/' + (f ? (n > 0 ? 'plus' : 'plus0') : 'minus') + '.gif'); - return tr; - }, - - /** - * Add a row - * @function addRow - * @param {dictionary} values row values - * @param {reserved} lockeditems - * @param {DOM} beforerow new row will be inserted before this row - * @returns null - */ - addRow: function(values, lockeditems, beforerow) { - if (values == null && this.options.onAdd != null) - return null; - - if (this.options.onBeforeAddRow != null) - values = this.options.onBeforeAddRow(values); - - var me = this; - var bgcolor = this.tbody.childNodes.length % 2 == 1 ? JSDraw2.Skin.jssdf.oddcolor : JSDraw2.Skin.jssdf.evencolor; - var r = scil.Utils.createElement(null, 'tr', null, {backgroundColor: bgcolor}, {sciltable: '1', bgcolor: bgcolor}); - if (beforerow == null) - this.tbody.appendChild(r); - else - this.tbody.insertBefore(r, beforerow); - - dojo.connect(this.tbody.parentNode, 'onmouseover', function(e) { - me._hilitRow(e, true); - }); - dojo.connect(this.tbody.parentNode, 'onmouseout', function(e) { - me._hilitRow(e, false); - }); - - var newgroup = false; - var td = scil.Utils.createElement(r, 'td'); - if (this.options.grouping) { - var s = values == null ? null : values[this.options.grouping]; - var s0 = this.getCellValue(r.previousSibling, this.options.grouping); - if (scil.Utils.isNullOrEmpty(s) || s != s0) { - newgroup = true; - var img = scil.Utils.createElement(td, 'img', null, null, {title: 'Expand/Collapse All', src: scil.Utils.imgSrc('img/minus.gif')}); - scil.connect(img, 'onclick', function(e) { - me.groupExpand(r); - }); - } - } else { - td.style.display = 'none'; - } - - var td = scil.Utils.createElement(r, 'td'); - if (this.options.rowcheck) { - var name = this.options.rowcheck == 'radio' ? '__scil_table_' + this._tableid + '_radio' : null; - var checktype = this.options.rowcheck == 'radio' ? 'radio' : 'checkbox'; - var check = scil.Utils.createElement(td, checktype, null, null, {name: name}); - check.checked = values == null ? false : values.rowchecked; - if (this.options.onrowcheck != null) - dojo.connect(check, 'onchange', function() { - me.options.onrowcheck(r, check.checked); - }); - - if (checktype == 'checkbox') - scil.connect(check, 'onclick', function(e) { - me.checkedClick(e); - }); - } else { - td.style.display = 'none'; - } - - if (values == null) { - r.setAttribute('isnew', '1'); - } else { - if (this.key != null && values[this.key] != null) - r.setAttribute('key', values[this.key]); - } - - for (var id in this.items) { - var item = this.items[id]; - var td = scil.Utils.createElement(r, 'td', null, item.styles, item.attributes); - td.style.borderLeft = JSDraw2.Skin.jssdf.border; - if (item.type == 'hidden' || item.ishidden) - td.style.display = 'none'; - - var viewonly = this.viewonly || item.viewonly || lockeditems != null && lockeditems[id]; - td.field = scil.Form.createField(td, item, viewonly, values == null ? item.value : values[id], values, true, true); - if (viewonly && item.type != 'img') { - td.field.style.width = '100%'; - } else { - if (td.field.tagName == 'INPUT' || td.field.tagName == 'SELECT' || td.field.tagName == 'TEXTAREA') { - this._connectOnchange(td.field, item); - if (item.addrowonenter && beforerow == null) - td.field.focus(); - } - } - - td.setAttribute('__tid', id); - this.connectKeydown(td, item); - } - - if (!this.viewonly && lockeditems == null && this.options.delrow != false) { - var td = scil.Utils.createElement(r, 'td'); - td.style.borderLeft = JSDraw2.Skin.jssdf.border; - var b = scil.Utils.createElement(td, 'img', null, null, {src: scil.Utils.imgSrc('img/del.gif'), title: scil.Lang.res('Delete')}); - dojo.connect(b, 'onclick', function() { - me.removeRow(this); - }); - } - - if (this.options.onAddRow != null) - this.options.onAddRow(r, values); - - if (newgroup && this.options.grouplinestyle != null) { - for (var i = 0; i < r.childNodes.length; ++i) - r.childNodes[i].style.borderTop = this.options.grouplinestyle; - } - - return r; - }, - - checkedClick: function(e) { - var check = e.srcElement || e.target; - if (!check.checked) - return; - - if (e.shiftKey) { - var nodes = this.tbody.childNodes; - var start = scil.Utils.indexOf(nodes, scil.Utils.getParent(this._lastcheck, 'TR')); - var end = scil.Utils.indexOf(nodes, scil.Utils.getParent(check, 'TR')); - if (st != -1 && ed != -1) { - var st = Math.min(start, end); - var ed = Math.max(start, end); - for (var i = st; i <= ed; ++i) { - if (nodes[i].style.display == 'none') - nodes[i].childNodes[this.checkIndex].firstChild.checked = false; - else - nodes[i].childNodes[this.checkIndex].firstChild.checked = true; - } - } - } - this._lastcheck = check; - }, - - _connectOnchange: function(field, item) { - var me = this; - dojo.connect(field, 'onchange', function(e) { - me.onchange(e, item); - }); - }, - - setCellValue: function(tr, key, v) { - for (var i = 0; i < tr.childNodes.length; ++i) { - var td = tr.childNodes[i]; - if (td.field != null && td.getAttribute('__tid') == key) { - scil.Form.setFieldData(td.field, this.items[key], this.viewonly, v); - break; - } - } - }, - - getCellValue: function(tr, key) { - for (var i = 0; i < tr.childNodes.length; ++i) { - var td = tr.childNodes[i]; - if (td.field != null && td.getAttribute('__tid') == key) - return scil.Form.getFieldData(td.field); - } - return null; - }, - - connectKeydown: function(td, item) { - if (this.viewonly || td.field.tagName != 'INPUT' || !item.addrowonenter) - return; - - var me = this; - dojo.connect(td.field, 'onkeydown', function(e) { - if (e.keyCode == 13) { - var tr = scil.Utils.getParent(td, 'TR'); - if (typeof (item.addrowonenter) == 'function') - item.addrowonenter(td, item, me); - if (me.tbody.childNodes[me.tbody.childNodes.length - 1] == tr) - me.addRow(); - } - }); - }, - - onchange: function(e, item) { - this.dirty = true; - if (this.options.onchange != null) - this.options.onchange(this, e, item); - }, - - removeRow: function(img) { - var me = this; - scil.Utils.confirmYes('Delete this row?', function() { - var tr = scilligence.Utils.getParent(img, 'TR'); - tr.parentNode.removeChild(tr); - if (me.options.onchange != null) - me.options.onchange(this); - me.dirty = true; - }); - }, - - showHideColumns: function() { - if (this.showhideDlg == null) { - var columns = { - caption: {label: 'Caption', width: 400}, - key: {label: 'Key', width: 100, iskey: true}, - }; - - var me = this; - var fields = {table: {type: 'table', columns: columns, options: {rowcheck: true, viewonly: true}}}; - this.showhideDlg = scil.Form.createDlgForm('Show/Hide Columns', fields, { - label: 'OK', onclick: function() { - me.showHideColumns2(); - }, - }, {hidelabel: true}); - } - - this.showhideDlg.show(); - - var rows = []; - for (var k in this.items) { - if (this.items[k].type != 'hidden') - rows.push({caption: this.items[k].label, key: k, rowchecked: !this.items[k].ishidden}); - } - this.showhideDlg.form.setData({table: rows}); - this.showhideDlg.moveCenter(); - }, - - showHideColumns2: function() { - var cols = ''; - - var table = this.showhideDlg.form.fields.table.jsd; - var list = table.getData(null, null, true); - for (var i = 0; i < list.length; ++i) { - var f = list[i].rowchecked == true; - this.showColumn(list[i].key, f); - if (!f) - cols += list[i].key + ','; - } - this.showhideDlg.hide(); - - if (!scil.Utils.isNullOrEmpty(this.options.hidecolumncookiekey)) - scil.Utils.createCookie(this.options.hidecolumncookiekey + '_scil_table_hidecols', cols, 3650); // 10 years - }, - - _hideCookieCols: function(cols) { - if (scil.Utils.isNullOrEmpty(this.options.hidecolumncookiekey)) - return; - - var s = scil.Utils.readCookie(this.options.hidecolumncookiekey + '_scil_table_hidecols'); - if (scil.Utils.isNullOrEmpty(s)) - return; - - var ss = s.split(','); - for (var i = 0; i < ss.length; ++i) { - var col = cols[ss[i]]; - if (col != null) - cols[ss[i]].ishidden = true; - } - }, -}); - - -scilligence.apply(scilligence.Table, { - headerstyles: { /*border: "solid 1px #eee", */whiteSpace: 'nowrap', textAlign: 'center', verticalAlign: 'top', backgroundColor: '#bbb'}, //scil.Utils.imgSrc("img/header-bg.gif", true) + " repeat-x" }, - - /** - * Create a table - * @function {static} create - * @param {object} obj the data object to be loaded into the table. obj.load() will be called - * @param {string or DOM} parent parent element - * @param {array} items table column items. item: { id, iskey ... } - * @param {bool} viewonly indicate if creating a viewonly table - * @returns a new Table object - */ - create: function(obj, parent, items, viewonly, loadimmediately) { - if (typeof parent == 'string') - parent = dojo.byId(parent); - - var div = scil.Utils.createElement(parent, 'div'); - var table = new scil.Table(viewonly); - table.render(div, items); - - if (loadimmediately != false && obj.load != null) - scil.onload(function() { - obj.load(); - }); - return table; - }, - - /** - * List pages - * @function {static} listPages - * @param {DOM} div - parent div - * @param {number} page - * @param {number} totalpages - * @param {function} onclick(page) {} - */ - listPages: function(div, page, totalpages, onclick) { - scil.Utils.removeAll(div); - if (!(page >= 1) || !(totalpages > 1)) - return; - - --page; - - var st, ed; - if (totalpages <= 11) { - st = 0; - ed = totalpages; - } else { - st = page - 5; - if (st < 0) - st = 0; - ed = st + 11; - if (ed > totalpages) - ed = totalpages; - if (ed - st < 11) { - st = ed - 11; - if (st < 0) - st = 0; - } - } - - this.createPage(div, scil.Lang.res('Previous Page'), page > 0 ? page : null, onclick); - - if (st > 0) { - this.createPage(div, 1, 1, onclick); - if (st > 1) - this.createPage(div, '...', null, onclick); - } - - for (var k = st; k < page; ++k) - this.createPage(div, k + 1, k + 1, onclick); - this.createPage(div, page + 1, null, onclick); - for (var k = page + 1; k < ed; ++k) - this.createPage(div, k + 1, k + 1, onclick); - if (ed < totalpages) { - if (ed + 1 < totalpages) - this.createPage(div, '...', null, onclick); - this.createPage(div, totalpages, totalpages, onclick); - } - - this.createPage(div, scil.Lang.res('Next Page'), page + 1 < totalpages ? page + 2 : null, onclick); - }, - - createPage: function(div, label, page, onclick) { - if (page == null) - scil.Utils.createElement(div, 'span', label); - else - scil.Utils.createButton(div, { - label: label, type: 'a', onclick: function() { - onclick(page); - }, - }); - - scil.Utils.createElement(div, 'span', ' '); - }, - - rows2xml: function(rows) { - if (rows == null) - return null; - - var s = ''; - for (var i = 0; i < rows.length; ++i) { - var r = rows[i]; - s += ''; - for (var k in r) { - var v = r[k]; - if (!scil.Utils.isNullOrEmpty(v)) - s += '' + scil.Utils.escXmlValue(v) + ''; - } - s += ''; - } - s += '
'; - return s; - } -}); - - -/***/ }), - -/***/ "./form/Tree.js": -/*!**********************!*\ - !*** ./form/Tree.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * Tree class - Tree Control - * @class scilligence.Tree - *
- * Example:
- *    var parent = scil.Utils.createElement(document.body, "div");
- *    var ac = scil.Tree(parent, { url: "/path/ajax.ashx?cmd=loadtree" });
- * 
- */ -scil.Tree = scil.extend(scil._base, { - /** - * @constructor Tree - * @param {string or DOM} parent - the parent element - * @param {dictionary} options - * @param {bool} solo - */ - constructor: function(parent, options, solo, dropdown) { - this.T = 'TREE'; - this.container = parent; - this.options = options == null ? {} : options; - this.solo = solo != null ? solo : this.options.solo; - this.dropdown = dropdown != null ? dropdown : this.options.dropdown; - - this.onAddItem = null; - this.onSelectItem = null; - this.onExpandItem = null; - this.cur = null; - this.margin = 28; - this.idname = 'id'; - - var me = this; - scil.Utils.removeAll(parent); - //dojo.connect(parent, "onclick", function (e) { me.onSelect(e.srcElement || e.target); }); - }, - - clear: function() { - scil.Utils.removeAll(this.container); - }, - - reloadCur: function() { - if (this.cur == null) - return; - - this.reload(this.cur); - }, - - reload: function(node) { - if (node == null) - return false; - - node.removeAttribute('loaded'); - if (node.firstChild.nextSibling != null) - node.removeChild(node.firstChild.nextSibling); - - var img = this._expand(node); - this.onExpand(img); - return true; - }, - - getCurRoot: function() { - return this.getRoot(this.cur); - }, - - getRoot: function(node) { - if (node == null) - return null; - - var n = this.getParent(node); - var p = node; - while (n != null) { - p = n; - n = this.getParent(p); - } - return p; - }, - - getParent: function(node) { - return node.parentNode == null || node.parentNode == this.container ? null : node.parentNode.parentNode; - }, - - add: function(parent, item) { - if (item == null) - return null; - - if (item.length != null) { - for (var i = 0; i < item.length; ++i) - this.add(parent, item[i]); - return null; - } - - if (item._more) - item.leaf = true; - if (this.options.onAddItem != null) - item = this.options.onAddItem(item); - else if (this.onAddItem != null) - item = this.onAddItem(item); - - var n = null; - if (parent == null) { - n = scilligence.Utils.createElement(this.container, 'div'); - } else { - var container = parent.firstChild.nextSibling; - if (container == null) - container = scil.Utils.createElement(parent, 'div', null, {marginLeft: this.margin + 'px'}); - n = scil.Utils.createElement(container, 'div'); - } - - n.item = item; - - var m = scilligence.Utils.createElement(n, 'div', null, {padding: '3px 0 3px 0', whiteSpace: 'nowrap'}); - var img = scilligence.Utils.createElement(m, 'img', null, {width: '16px'}, item.leaf || item.disabled ? {src: scil.Utils.imgSrc('img/blank.gif')} : {src: scil.Utils.imgSrc('img/plus.gif'), title: 'Expand'}); - var me = this; - dojo.connect(img, 'onclick', function(e) { - me.onExpand(e.srcElement || e.target); - }); - if (this.dropdown) - scilligence.Utils.createElement(m, 'img', null, null, {src: item.shortcut ? 'img/status_shortcut.gif' : 'img/status_' + (item.status == null || item.status == '' ? 'open' : item.status) + '.gif'}); - if (item.icon != null) { - if (item.icon.indexOf('/') < 0) - item.icon = 'img/icons/' + item.icon + '.gif'; - scilligence.Utils.createElement(m, 'img', null, {paddingRight: this.options.icongap}, {src: item.icon}); - } - - scil.Utils.createElement(m, 'span', item._more ? 'more...' : item.name); - m.className = 'tbar'; - if (item.disabled) { - m.style.color = 'gray'; - m.setAttribute('disabled', 'on'); - } else { - m.style.cursor = 'pointer'; - dojo.connect(m, 'onclick', function(e) { - if ((e.target || e.srcElement) != m.firstChild) me.select(m.parentNode); - }); - } - - this.add(n, item.children); - if (parent != null) - this.expand(parent, true); - if (item.expand == false) - this.expand(n, false); - - if (item.selected) - this.select(n); - return n; - }, - - expand: function(node, f) { - var bar = node.firstChild; - var img = bar.firstChild; - if (bar.nextSibling == null) { - img.src = 'img/blank.gif'; - img.removeAttribute('title'); - } else { - bar.nextSibling.style.display = f ? '' : 'none'; - this._expand(node, f); - } - }, - - _expand: function(node, f) { - var img = node.firstChild.firstChild; - img.src = scil.Utils.imgSrc(f ? 'img/minus.gif' : 'img/plus.gif'); - img.setAttribute('title', f ? 'Shrink' : 'Expand'); - return img; - }, - - shrinkSiblings: function(node) { - var list = node.parentNode.childNodes; - for (var i = 0; i < list.length; ++i) { - if (list[i] != node) - this.expand(list[i], false); - } - }, - - onExpand: function(img) { - var bar = img.parentNode; - if (bar.tagName != 'DIV' || bar.className != 'tbar') - return; - - var f = null; - var n = bar.parentNode; - if (n != null && n.item != null && n.item.leaf) - return; - - if (this.options.url == null || n.getAttribute('loaded') == '1' || bar.nextSibling != null) { - f = bar.nextSibling == null || bar.nextSibling.style.display == 'none'; - this.expand(n, f); - if (f && this.solo) - this.shrinkSiblings(n); - return; - } - - if (this.onExpandItem != null) { - if (this.onExpandItem(n, f)) - return; - } - - this.loadNodes(n); - }, - - loadNodes: function(n) { - var me = this; - var fn = function(ret) { - if (n.item._more) { - var parent = n.parentNode; - parent.removeChild(n); - n = parent.parentNode; - } else { - if (n.getAttribute('loaded') == '1') - return; - n.setAttribute('loaded', '1'); - } - - if (ret.rows != null && ret.rows.length > 0) - me.add(n, ret.rows); - else if (ret.length > 0) - me.add(n, ret); - me.expand(n, true); - }; - - if (n.item.children != null) { - fn(n.item.children); - return; - } - - var beforeload = function() { - n.firstChild.firstChild.src = scil.Utils.imgSrc('img/animatorsmall.gif'); - }; - var afterload = function() { - n.firstChild.firstChild.src = scil.Utils.imgSrc('img/plus.gif'); - }; - var args = n.item; - if (this.onAjaxData != null) - args = this.onAjaxData(n); - if (this.options.url != null && this.options.url != '') - scil.Utils.ajax(this.options.url, fn, args, {popup: false, beforeload: beforeload, afterload: afterload}); - }, - - select: function(node) { - if (typeof node == 'string') - node = this.find(null, node); - - if (node == null || node.item != null && node.item.selectable == false) - return; - - if (node.item != null && node.item._more) { - this.loadNodes(node); - return; - } - - if (this.cur != null) - this.cur.firstChild.style.background = ''; - this.cur = node; - if (this.dropdown && this.cur != null) - this.cur.firstChild.style.background = '#f6f4b9'; - this.cur.firstChild.style.background = '#ddf'; - if (this.onSelectItem != null) { - var isleaf = null; - if (this.cur != null) - isleaf = this.cur.firstChild.nextSibling == null; - this.onSelectItem(this.cur, isleaf); - } - }, - - getIconText: function(node) { - if (node == null) - return null; - var img = node.firstChild.childNodes[2]; - if (img.tagName == 'SPAN') - return img.innerHTML; - return '' + img.nextSibling.innerHTML; - }, - - setCurrent: function(value, key) { - var n = this.find(null, value, key); - if (n != null) - this.select(n); - - return n; - }, - - find: function(parent, value, key) { - var container = parent == null ? this.container : parent.firstChild.nextSibling; - if (container == null) - return null; - - if (key == null) - key = 'id'; - - var children = container.childNodes; - for (var i = 0; i < children.length; ++i) { - var n = children[i]; - if (n.item != null && n.item[key] == value) - return n; - - var c = this.find(n, value, key); - if (c != null) - return c; - } - return null; - }, - - getChildren: function(parent) { - var container = parent == null ? this.container : parent.firstChild.nextSibling; - return container == null ? null : container.childNodes; - }, - - getParent: function(n) { - return n.parentNode.parentNode; - }, -}); - - -/***/ }), - -/***/ "./form/UploadFile.js": -/*!****************************!*\ - !*** ./form/UploadFile.js ***! - \****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -scil.UploadFile = { - dlg: null, - form: null, - msg: null, - files: [], - filetypes: [], - kIframe: "__scil_uploadfile_iframe", - - show: function (options) { - this.create(); - this.dlg.show(); - this.form.reset(); - this.options = options == null ? {} : options; - - if (options.msg != null) - this.msg.innerHTML = options.msg; - - for (var i = 0; i < this.files.length; ++i) - this.files[i].value = ""; - for (var i = 0; i < this.filetypes.length; ++i) { - scil.Utils.removeAll(this.filetypes[i]); - this.filetypes[i].style.display = this.options.filetypes != null ? "" : "none"; - if (this.options.filetypes != null) - scil.Utils.listOptions(this.filetypes[i], this.options.filetypes); - } - }, - - upload: function () { - var me = this; - var params = this.options.params; - scil.Utils.ajaxUploadFile(this.form, this.options.url, params == null ? {} : params, function (ret) { me.dlg.hide(); me.options.callback(ret); }); - }, - - create: function (parent) { - if (this.dlg != null) - return; - - var me = this; - // form method='post' id='__newfile' enctype='' - var div = JsUtils.createElement(null, "div", "
", { padding: "15px" }); - this.form = div.firstChild; - this.msg = scil.Utils.createElement(this.form, "div", "Please specify files to be uploaded"); - var tbody = scil.Utils.createTable(this.form); - for (var i = 0; i < 5; ++i) { - var tr = scil.Utils.createElement(tbody, "tr"); - var td = scil.Utils.createElement(tr, "td"); - var file = scil.Utils.createElement(td, "file", null, null, { name: "f" + i }); - - td = scil.Utils.createElement(tr, "td"); - var type = scil.Utils.createElement(td, "select", null, null, { name: "filetype.f" + i }); - - this.files.push(file); - this.filetypes.push(type); - } - - var tr = scil.Utils.createElement(tbody, "tr"); - var td = scil.Utils.createElement(tr, "td", null, { paddingTop: "10px", textAlign: "center" }, { colSpan: 2 }); - scil.Utils.createButton(td, { src: scil.App.imgSmall("submit.png"), label: "Upload", onclick: function () { me.upload(); } }); - - this.dlg = new scil.Dialog("Upload File", div); - } -}; - -/***/ }), - -/***/ "./src/BA.js": -/*!*******************!*\ - !*** ./src/BA.js ***! - \*******************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.BA = scilligence.extend(scilligence._base, { - constructor: function (b, a, ri) { - this.b = b; - this.a = a; - this.ringclosure = ri; - this.next = []; - this.f = null; - this.parent = null; - this.depth = null; - }, - - find: function (a) { - var stack = new JSDraw2.Stack(); - stack.push(this); - while (stack.length() > 0) { - var ba = stack.pop(); - if (ba.a == a) - return ba; - - for (var k = 0; k < ba.next.length; ++k) - stack.push(ba.next[k]); - } - - return null; - }, - - list: function (list, mode) { - var stack = new JSDraw2.Stack(); - stack.push(this); - var depthfirst = mode == "depthfirst"; - while (stack.length() > 0) { - var ba = depthfirst ? stack.pop() : stack.popHead(); - list.push(ba); - for (var k = 0; k < ba.next.length; ++k) - stack.push(ba.next[k]); - } - }, - - startAtom: function () { - return this.b == null ? null : this.b.otherAtom(this.a); - }, - - addNext: function (ba) { - this.next.push(ba); - ba.parent = this; - ba.depth = this.depth + 1; - }, - - stereo: function () { - var bs = this.a.bonds; - if (this.b == null || !this.a.isMarkedStereo()) - return null; - - - // find out 2D layout - var angles = []; - var bonds = []; - var a0 = this.a; - var angle0 = this.b.otherAtom(a0).p.angleTo(a0.p); - DEBUG.print(a0.elem); - DEBUG.print(angle0); - for (var i = 0; i < bs.length; ++i) { - if (bs[i] == this.b) - continue; - - var a1 = bs[i].otherAtom(a0); - var ang = a1.p.angleTo(a0.p); - var angle = ang - angle0; - DEBUG.print(a1.elem + ", " + ang + ", " + angle); - if (angle < 0) - angle += 360; - var p = angles.length; - for (var k = 0; k < angles.length; ++k) { - if (angle < angles[k]) { - p = k; - break; - } - } - - var next = null; - for (var k = 0; k < this.next.length; ++k) { - if (this.next[k].b == bs[i]) { - next = this.next[k]; - break; - } - } - if (next == null && this.a.ringclosures != null) { - for (var k = 0; k < this.a.ringclosures.length; ++k) { - if (this.a.ringclosures[k].next.b == bs[i]) { - next = this.a.ringclosures[k].next; - this.a.ringclosures.splice(k, 1); - break; - } - } - } - if (next == null) - return null; - - angles.splice(p, 0, angle); - bonds.splice(p, 0, next); - } - this.next = bonds; - - for (var i = 0; i < bonds.length; ++i) - DEBUG.print(bonds[i].a.elem + ", " + angles[i]); - - var pattern = ""; - if (this.b.type == JSDraw2.BONDTYPES.WEDGE && this.b.a1 == this.a) - pattern += "U"; - else if (this.b.type == JSDraw2.BONDTYPES.HASH && this.b.a1 == this.a) - pattern += "D"; - else - pattern += "-"; - - for (var i = 0; i < bonds.length; ++i) { - if (bonds[i].b.type == JSDraw2.BONDTYPES.WEDGE && bonds[i].b.a1 == this.a) - pattern += "U"; - else if (bonds[i].b.type == JSDraw2.BONDTYPES.HASH && bonds[i].b.a1 == this.a) - pattern += "D"; - else - pattern += "-"; - } - - DEBUG.print(pattern); - switch (pattern) { - case "D--": - case "DD-": - case "DDD": - case "--D": - case "-D-": - case "-DD": - case "D---": - case "-U--": - case "--D-": - case "---U": - case "DU--": - case "-DU-": - case "--DU": - case "U--D": - return "@"; - case "U--": - case "UU-": - case "UUU": - case "--U": - case "-U-": - case "-UU": - case "U---": - case "-D--": - case "--U-": - case "---D": - case "UD--": - case "-UD-": - case "--UD": - case "D--U": - return "@@"; - } - - return null; - }, - - renderSmiles: function () { - var s = ""; - if (this.b != null) { - var ring = ""; - if (this.b.ring != null) - ring = this.b.ring ? "@" : "!@"; - switch (this.b.type) { - case JSDraw2.BONDTYPES.DOUBLE: - s += ring + "="; - break; - case JSDraw2.BONDTYPES.TRIPLE: - s += ring + "#"; - break; - case JSDraw2.BONDTYPES.SINGLEORDOUBLE: - s += ring + "-," + ring + "="; - break; - case JSDraw2.BONDTYPES.SINGLEORAROMATIC: - s += ring + "-," + ring + ":"; - break; - case JSDraw2.BONDTYPES.DOUBLEORAROMATIC: - s += ring + "=," + ring + ":"; - break; - case JSDraw2.BONDTYPES.UNKNOWN: - s += ring + "~"; - break; - case JSDraw2.BONDTYPES.DUMMY: - s += ring + ".."; - break; - default: - if (this.b.ring != null) - s += ring + "-"; - break; - } - } - - if (this.ringclosure == null) { - var stereo = this.stereo(); - // B, C, N, O, P, S, F, Cl, Br, and I - var ar = JSDraw2.PT.isArAtom(this.a.elem); - if (this.a.elem == "5'" || this.a.elem == "3'") { - // do nothing - } - else if (this.a.bio) { - s += "[[" + this.a.elem + "]]"; - } - else if ((ar || this.a.elem == 'Cl' || this.a.elem == 'F' || this.a.elem == 'Br' || this.a.elem == 'I' || this.a.elem == 'B') && - this.a.charge == 0 && this.a.isotope == null && stereo == null && this.a.query == null && !this.a.locked) { - if (this.a.aromatic && ar) - s += this.a.elem.toLowerCase(); - else - s += this.a.elem; - } - else { - s += "["; - if (this.a.query != null && this.a.query.als != null) { - for (var k = 0; k < this.a.query.als.length; ++k) { - if (k > 0) - s += ","; - if (this.a.query.t == false) - s += "!"; - s += this.a.query.als[k]; - } - } - else { - if (this.a.isotope != null) - s += this.a.isotope; - s += this.a.elem; - } - - if (this.a.charge != 0) { - if (this.a.hcount > 1) - s += "H" + this.a.hcount; - - if (this.a.charge == 1) - s += '+'; - else if (this.a.charge == -1) - s += '-'; - else - s += (this.a.charge > 0 ? "+" : "-") + Math.abs(this.a.charge); - } - - if (stereo != null) - s += stereo + (this.a.hcount == 1 ? "H" : ""); - - if (this.a.query != null && this.a.query.rbc != null) - s += ";R" + this.a.query.rbc; - if (this.a.query != null && this.a.query.sub != null) - s += ";X" + this.a.query.sub; - if (this.a.locked) - s += ";0"; - s += "]"; - } - - if (this.a.ringclosures != null) { - var list = this.a.ringclosures; - for (var k = 0; k < list.length; ++k) - s += (list[k].ri < 10 ? "" : "%") + list[k].ri; - } - } - else { - s += (this.ringclosure < 10 ? "" : "%") + this.ringclosure; - } - - if (this.next.length > 0) { - for (var i = 0; i < this.next.length - 1; ++i) { - var child = this.next[i].renderSmiles(); - if (child == null || child.length == 0) - continue; - if (/^[0-9|\=|\#]+$/.test(child)) - s += child; - else - s += "(" + child + ")"; - } - s += this.next[this.next.length - 1].renderSmiles(); - } - - return s; - } -}); - - -/***/ }), - -/***/ "./src/Base64.js": -/*!***********************!*\ - !*** ./src/Base64.js ***! - \***********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// - - - -/** -* Base64 class provide base64 encode/decode functions -* @class {static} scilligence.JSDraw2.Base64 -*/ -JSDraw2.Base64 = { - // private property - _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", - - /** - * Base64 encode a string - * @function {static} encode - * @param {string} input input string - * @returns encoded string - */ - encode: function (input) { - if (input == null) - return null; - - var output = ""; - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; - var i = 0; - - input = JSDraw2.Base64._utf8_encode(input); - - while (i < input.length) { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - output = output + - this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + - this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); - } - return output; - }, - - /** - * Base64 decode a string - * @function {static} decode - * @param {string} input input string - * @returns decoded string - */ - decode: function (input) { - if (input == null) - return null; - - var output = ""; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0; - - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - while (i < input.length) { - - enc1 = this._keyStr.indexOf(input.charAt(i++)); - enc2 = this._keyStr.indexOf(input.charAt(i++)); - enc3 = this._keyStr.indexOf(input.charAt(i++)); - enc4 = this._keyStr.indexOf(input.charAt(i++)); - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output = output + String.fromCharCode(chr1); - if (enc3 != 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 != 64) { - output = output + String.fromCharCode(chr3); - } - - } - output = JSDraw2.Base64._utf8_decode(output); - return output; - }, - - // private method for UTF-8 encoding - _utf8_encode: function (string) { - string = string.replace(/\r\n/g, "\n"); - var utftext = ""; - - for (var n = 0; n < string.length; n++) { - var c = string.charCodeAt(n); - if (c < 128) { - utftext += String.fromCharCode(c); - } - else if ((c > 127) && (c < 2048)) { - utftext += String.fromCharCode((c >> 6) | 192); - utftext += String.fromCharCode((c & 63) | 128); - } - else { - utftext += String.fromCharCode((c >> 12) | 224); - utftext += String.fromCharCode(((c >> 6) & 63) | 128); - utftext += String.fromCharCode((c & 63) | 128); - } - } - return utftext; - }, - - // private method for UTF-8 decoding - _utf8_decode: function (utftext) { - var string = ""; - var i = 0; - var c = c1 = c2 = 0; - - while (i < utftext.length) { - c = utftext.charCodeAt(i); - if (c < 128) { - string += String.fromCharCode(c); - i++; - } - else if ((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i + 1); - string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } - else { - c2 = utftext.charCodeAt(i + 1); - c3 = utftext.charCodeAt(i + 2); - string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - return string; - } -}; - -/***/ }), - -/***/ "./src/Core.js": -/*!*********************!*\ - !*** ./src/Core.js ***! - \*********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -DEBUG = { - enable: false, - clear: function () { - if (DEBUG.enable) - document.getElementById("DEBUG").value = ''; - }, - print: function (s) { - if (DEBUG.enable) { - var console = document.getElementById("DEBUG"); - console.value += s + "\n"; - } - } -}; - - -/** -* scilligence namespace (scil is an alias name) -* @namespace scilligence -*/ -scilligence = { _base: function () { } }; -oln = scilligence; -scil = scilligence; - -/** -* scilligence.apply is a tool function to append new properties to a dictionary object -*
-* Example:
-*    var person = { firstname: "Tony", lastname: "Yuan" };
-*    scilligence.apply(person, { company: "Scilligence" });
-* 
-* @function {function} scilligence.apply -*/ -scilligence.overwrite = scilligence.apply = function (dest, atts, defaults) { - if (defaults) - scilligence.apply(dest, defaults); - - if (dest && atts && typeof atts == 'object') { - for (var k in atts) - dest[k] = atts[k]; - } - return dest; -}; - -scilligence.apply(scilligence, { - /** - * scilligence.extend is a tool function to do OO programming in Javascript - *
-    * Example:
-    *    // parent class, here scilligence._base is empty class
-    *    Person = scilligence.extend(scilligence._base, {
-    *        constructor: function(firstname, lastname) {
-    *            this.firstname = firstname;
-    *            this.lastname = lastname;
-    *        },
-    *
-    *        getFullname: function() {
-    *            return this.lastname + ", " + this.firstname;
-    *        }
-    *    });
-    *
-    *    // sub class
-    *    Employee = scilligence.extend(Person, {
-    *        constructor: function (firstname, lastname, employeeid) {
-    *            this.superclass().constructor(firstname, lastname);
-    *            this.employeeid = employeeid;
-    *        },
-    *
-    *        getEmployeeID: function () {
-    *            return this.employeeid;
-    *        }
-    *    });
-    *    
-    *    // define static method
-    *    scilligence.apply(Employee, {
-    *        kCompany: "Scilligence", // static property
-    *
-    *        getEmployNo: function (id) { // static method
-    *            return "SCI-" + id;
-    *        }
-    *    }
-    *
-    *    // create an Employee object
-    *    var e = new Employee("Tony", "Yuan", 192);
-    *    var s = e.getFullname();
-    * 
- * @function {function} scilligence.extend - */ - extend: function () { - var io = function (atts) { for (var k in atts) this[k] = atts[k]; }; - var oc = Object.prototype.constructor; - return function (sb, sp, overrides) { - if (typeof sp == 'object') { - overrides = sp; - sp = sb; - sb = overrides.constructor != oc ? overrides.constructor : function () { sp.apply(this, arguments); }; - } - var F = function () { }; - var spp = sp.prototype; - F.prototype = spp; - var sbp = sb.prototype = new F(); - sbp.constructor = sb; - sb.superclass = spp; - if (spp.constructor == oc) - spp.constructor = sp; - sb.override = function (atts) { scilligence.override(sb, atts); }; - sbp.superclass = sbp.supr = (function () { return spp; }); - sbp.override = io; - scilligence.override(sb, overrides); - sb.extend = function (atts) { return scilligence.extend(sb, atts); }; - return sb; - }; - } (), - - override: function (origclass, overrides) { - if (overrides) { - var p = origclass.prototype; - scilligence.apply(p, overrides); - if (document.all != null && overrides.hasOwnProperty('toString')) - p.toString = overrides.toString; - } - }, - - clone: function (src) { - if (src == null) - return null; - - if (src.length != null) - return src.concat([]); - - var dest = {}; - scil.apply(dest, src); - return dest; - }, - - cloneArray: function (src) { - if (src == null) - return null; - - if (src.length != null) { - var ret = []; - for (var i = 0; i < src.length; ++i) { - if (typeof src[i] == "object") - ret[i] = scil.clone(src[i]); - else - ret[i] = src[i]; - } - return ret; - } - - var dest = {}; - scil.apply(dest, src); - return dest; - }, - - byId: function (id) { - return document.getElementById(id); - }, - - connect: function (element, event, callback) { - if (element == null || event == null || event == "" || callback == null) - return; - - if (element.addEventListener != null) - element.addEventListener(event.substr(2), function (e) { callback(e, element); }); - else if (element.attachEvent != null) - element.attachEvent(event, function (e) { callback(e, element); }); - else - dojo.connect(element, event, function (e) { callback(e, element); }); - } -}); - -scilligence.ready = dojo.ready; -scilligence.onload = dojo.addOnLoad; - - -/* -scilligence.getGeoLocation = function () { - var p = null; - if (navigator.geolocation) { - navigator.geolocation.getCurrentPosition(function (position) { scilligence.geolocation = { x: position.coords.latitude, y: position.coords.longitude} }); - } -}; -scilligence.getGeoLocation(); -*/ - - -/***/ }), - -/***/ "./src/Drawer.js": -/*!***********************!*\ - !*** ./src/Drawer.js ***! - \***********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Drawer = { - kMinFontSize: 4, - - drawFormula: function (surface, p, reversed, s, color, fontsize) { - //I#11940 - if (reversed) { - var c = s.charAt(0); - if (c >= '0' && c <= '9') - reversed = false; - } - - var rect = new JSDraw2.Rect(); - var ss = this.splitFormula(s); - for (var i = 0; i < ss.length; ++i) { - if (reversed) { - if (ss[i].num != null) { - var r = this.drawWord(surface, rect, p, color, fontsize, ss[i].num, reversed, true); - if (rect.isEmpty()) - rect = r; - else - rect.union(r); - } - } - - var r = this.drawWord(surface, rect, p, color, fontsize, ss[i].str, reversed, false); - if (rect.isEmpty()) - rect = r; - else - rect.union(r); - - if (!reversed) { - if (ss[i].num != null) { - r = this.drawWord(surface, rect, p, color, fontsize, ss[i].num, reversed, true); - if (rect.isEmpty()) - rect = r; - else - rect.union(r); - } - } - } - - return rect; - }, - - drawWord: function (surface, rect, p, color, fontsize, w, reversed, isnumber) { - if (isnumber) - fontsize /= 1.4; - var n = this.drawLabel(surface, p, w, color, fontsize, false, reversed ? "end-anchor" : "start-anchor"); - var r = n._rect.clone(); - var nw = r.width / 2; - - var dx = 0; - var dy = isnumber ? fontsize / 4 : 0; - if (rect.isEmpty()) { - // dx = -nw; - } - else if (reversed) { - dx = -(p.x - rect.left) - nw; - if (w == "I" || w == "i" || w == "l" || w == "r" || w == "f" || w == ".") { - dx -= fontsize / 6.0; - // r.width -= 4; - } - - if (scil.Utils.isChrome) - dx -= fontsize / 10.0; - } - else { - dx = (rect.right() - p.x) + nw; - if (w == "I" || w == "i" || w == "l" || w == "r" || w == "f" || w == ".") { - dx += fontsize / 6.0; - // r.width -= 4; - } - - if (scil.Utils.isChrome) - dx += fontsize / 10.0; - } - - n.setTransform([dojox.gfx.matrix.translate(dx, dy)]); - r.left += dx; - r.top += dy; - return r; - }, - - splitFormula: function (s) { - if (/^[A-Z]+$/.test(s) || /^[\(][^\(\)]+[\)]$/.test(s) || /^[\[][^\[\]]+[\]]$/.test(s)) - return [{ str: s}]; - - var ret = []; - - var bracket = 0; - var number = false; - var w = ""; - for (var i = 0; i < s.length; ++i) { - var c = s.charAt(i); - if (bracket > 0 || c == '(') { - if (c == '(') { - if (bracket == 0) { - if (w != "") { - if (number && ret.length > 0) - ret[ret.length - 1].num = w; - else - ret.push({ str: w }); - } - number = false; - w = ""; - } - - ++bracket; - } - else if (c == ')') { - --bracket; - } - - w += c; - if (bracket == 0) { - ret.push({ str: w }); - w = ""; - } - } - else { - if (c >= 'A' && c <= 'Z') { - if (w != "") { - if (number && ret.length > 0) - ret[ret.length - 1].num = w; - else - ret.push({ str: w }); - } - number = false; - w = ""; - } - else if (c >= '0' && c <= '9' && !number) { - if (w != "") - ret.push({ str: w }); - number = true; - w = ""; - } - w += c; - } - } - - if (w != "") { - if (number && ret.length > 0) - ret[ret.length - 1].num = w; - else - ret.push({ str: w }); - } - return ret; - }, - - drawCurveArrow: function (surface, p1, p2, p1a, p2a, color, linewidth) { - if (p1a == null || p2a == null) { - var anchors = JSDraw2.Curve.calcAnchors(p1, p2); - p1a = anchors.p1a; - p2a = anchors.p2a; - } - - surface.createPath("").moveTo(p1.x, p1.y) - .curveTo(p1a.x, p1a.y, p2a.x, p2a.y, p2.x, p2.y) - .setStroke({ color: color, width: linewidth, cap: "round" }); - JSDraw2.Drawer.drawArrowhead(surface, p2a, p2, color, linewidth); - }, - - drawCurve: function (surface, p1, p2, deg, r, color, linewidth) { - var anchors = JSDraw2.Curve.calcAnchors(p1, p2, deg, r); - var p1a = anchors.p1a; - var p2a = anchors.p2a; - - surface.createPath("").moveTo(p1.x, p1.y) - .curveTo(p1a.x, p1a.y, p2a.x, p2a.y, p2.x, p2.y) - .setStroke({ color: color, width: linewidth, cap: "round" }); - }, - - drawArrow: function (surface, p1, p2, color, linewidth, dottedline, arrowstyle) { - if (arrowstyle == "dual") { - var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y); - var v = d.clone().rotate(90).setLength(linewidth); - var tp1 = p1.clone().offset(d.x + v.x, d.y + v.y); - var tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y); - JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline); - JSDraw2.Drawer.drawArrowhead2(surface, tp1, tp2, color, linewidth, "top"); - - v = d.clone().rotate(-90).setLength(linewidth); - tp1 = p1.clone().offset(d.x + v.x, d.y + v.y); - tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y); - JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline); - JSDraw2.Drawer.drawArrowhead2(surface, tp2, tp1, color, linewidth, "top"); - } - else if (arrowstyle == "reversible") { - var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y); - var v = d.clone().rotate(90).setLength(linewidth); - var tp1 = p1.clone().offset(d.x * 0.6 + v.x, d.y * 0.6 + v.y); - var tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y); - JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline); - JSDraw2.Drawer.drawArrowhead2(surface, tp1, tp2, color, linewidth, "top"); - - v = d.clone().rotate(-90).setLength(linewidth); - tp1 = p1.clone().offset(d.x + v.x, d.y + v.y); - tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y); - JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline); - JSDraw2.Drawer.drawArrowhead2(surface, tp2, tp1, color, linewidth, "top"); - } - else { - if (arrowstyle == "solid") { - var v = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).setLength(linewidth * 4); - JSDraw2.Drawer.drawLine(surface, p1, p2.clone().offset(-v.x, -v.y), color, linewidth, dottedline); - } - else { - JSDraw2.Drawer.drawLine(surface, p1, p2, color, linewidth, dottedline); - } - JSDraw2.Drawer.drawArrowhead(surface, p1, p2, color, linewidth, arrowstyle); - } - }, - - drawArrowhead: function (surface, p1, p2, color, linewidth, arrowstyle) { - if (arrowstyle == "solid") { - this.drawArrowhead2(surface, p1, p2, color, linewidth, arrowstyle); - } - else if (arrowstyle == "double") { - this.drawArrowhead2(surface, p1, p2, color, linewidth); - this.drawArrowhead2(surface, p2, p1, color, linewidth); - } - else if (arrowstyle == "none") { - } - else { - this.drawArrowhead2(surface, p1, p2, color, linewidth); - } - }, - - drawArrowhead2: function (surface, p1, p2, color, linewidth, as) { - var v = p1.clone().offset(-p2.x, -p2.y).setLength(linewidth * 7); - var deg = v.angle(); - var v1 = v.clone().rotate(25); - var v2 = v.clone().rotate(-25); - var a1 = p2.clone().offset(v1.x, v1.y); - var a2 = p2.clone().offset(v2.x, v2.y); - - if (as == "solid") { - JSDraw2.Drawer.drawTriangle(surface, a1, p2, a2, color); - } - else if (as == "top") { - JSDraw2.Drawer.drawLine(surface, a1, p2, color, linewidth); - } - else if (as == "bottom") { - JSDraw2.Drawer.drawLine(surface, a2, p2, color, linewidth); - } - else { - JSDraw2.Drawer.drawLine(surface, a1, p2, color, linewidth); - JSDraw2.Drawer.drawLine(surface, a2, p2, color, linewidth); - } - }, - - drawTriangle: function (surface, p1, p2, p3, color) { - var t = surface.createPath("").moveTo(p1.x, p1.y).lineTo(p2.x, p2.y).lineTo(p3.x, p3.y).lineTo(p1.x, p1.y); - t.setFill(color); - return t; - }, - - drawBracket: function (surface, r, color, linewidth, shape) { - var m = linewidth * 3; - var w = linewidth; - - switch (shape) { - case "round": - this.drawCurve(surface, r.topleft(), r.bottomleft(), -30, 0.3, color, linewidth); - this.drawCurve(surface, r.topright(), r.bottomright(), 30, 0.3, color, linewidth); - break; - case "curly": - break; - default: - JSDraw2.Drawer.drawLine(surface, r.topleft(), r.topleft().offset(m, 0), color, w); - JSDraw2.Drawer.drawLine(surface, r.topleft(), r.bottomleft(), color, w); - JSDraw2.Drawer.drawLine(surface, r.bottomleft(), r.bottomleft().offset(m, 0), color, w); - - JSDraw2.Drawer.drawLine(surface, r.topright(), r.topright().offset(-m, 0), color, w); - JSDraw2.Drawer.drawLine(surface, r.topright(), r.bottomright(), color, w); - JSDraw2.Drawer.drawLine(surface, r.bottomright(), r.bottomright().offset(-m, 0), color, w); - break; - } - }, - - drawDoubleArrow: function (surface, r, color, linewidth) { - var m = linewidth * 3; - var w = linewidth; - - this.drawLine(surface, r.topleft(), r.topright(), color, w); - this.drawArrow(surface, r.topleft(), r.bottomleft(), color, w); - this.drawArrow(surface, r.topright(), r.bottomright(), color, w); - }, - - drawLabel: function (surface, p, s, fontcolor, fontsize, opaque, align, offsetx, stroke) { - var w = fontsize + 2; - if (opaque) { - var r = new JSDraw2.Rect(p.x - w / 2, p.y - w / 2, w, w); - surface.createRect({ x: r.left, y: r.top, width: r.width, height: r.height }) - .setFill(opaque == true ? "#fff" : opaque); - } - - var x = p.x + (offsetx == null ? 0 : offsetx); - var y = p.y + w / 2 - 2; - if (align == "start-anchor") { - align = "start"; - x -= fontsize * 0.4; - } - if (align == "end-anchor") { - align = "end"; - x += fontsize * 0.4; - // s = JSDraw2.SuperAtoms.reverseLabel(s); - } - var args = { x: x, y: y, text: s, align: align == null ? "middle" : align }; - var t = null; - if (dojox.gfx.renderer == "canvas") { - t = surface.createText(args); - t.shape.fontStyle = "bold " + (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px Arial"; - t.shape.fillStyle = fontcolor; - t.shape.align = "center"; - - t.mwidth = this.getTextWidth(surface, t); - t.getTextWidth = function () { return t.mwidth; }; - } - else { - t = surface.createText(args) - .setFont({ family: "Arial", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px", weight: "normal" }) - .setFill(fontcolor); - if (stroke != false) - t.setStroke(fontcolor); - } - - // space char causes hang-up issue - if (/^[ ]+$/.test(s)) - t._rect = new JSDraw2.Rect(x, y, s.length * fontsize / 2, fontsize + 4); - else - t._rect = new JSDraw2.Rect(x, y, t.getTextWidth(), fontsize + 4); - - t._rect.top -= t._rect.height * 0.8; - if (align == "end") - t._rect.left -= t._rect.width; - return t; - }, - - drawText2: function (surface, p, s, fontcolor, fontsize, rotatedeg) { - var w = fontsize + 2; - var t = null; - if (dojox.gfx.renderer == "canvas") { - t = surface.createText({ x: p.x, y: p.y + w / 2 - 2, text: s }); - t.shape.fontStyle = "bold " + (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px Arial"; - t.shape.fillStyle = fontcolor; - t.shape.align = "center"; - - t.mwidth = this.getTextWidth(surface, t); - t.getTextWidth = function () { return t.mwidth; }; - } - else { - t = surface.createText({ x: p.x, y: p.y + w / 2 - 2, text: s, align: "middle" }) - .setFont({ family: "Arial", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px", weight: "normal" }) - .setFill(fontcolor); - } - if (rotatedeg != null) - t.setTransform([dojox.gfx.matrix.rotateAt(rotatedeg, p.x, p.y)]); - return t; - }, - - drawText: function (surface, p, s, fontcolor, fontsize, align, italic) { - if (align == null) - align = "left"; - - var t = null; - if (dojox.gfx.renderer == "canvas") { - t = surface.createText({ x: p.x, y: p.y + fontsize + 2, text: s }); - t.shape.fontStyle = (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px Arial"; - t.shape.fillStyle = fontcolor; - t.shape.align = align; - - t.mwidth = this.getTextWidth(surface, t); - t.getTextWidth = function () { return t.mwidth; }; - } - else { - var font = { family: "Arial", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + "px", weight: "normal" }; - if (italic) - font.style = "italic"; - t = surface.createText({ x: p.x, y: p.y + fontsize + 2, text: s, align: align }) - .setFont(font) - .setFill(fontcolor); - } - - if (align == "right") { - var w = t.getTextWidth(); - t.setTransform([dojox.gfx.matrix.translate(-w, 0)]); - } - return t; - }, - - getTextWidth: function (surface, s) { - var ctx = surface.surface.rawNode.getContext('2d'); - ctx.save(); - ctx.fillStyle = s.fillStyle; - ctx.strokeStyle = s.fillStyle; - ctx.font = s.fontStyle; - ctx.textAlign = "center"; - //ctx.textBaseline = "bottom"; - var width = ctx.measureText(s.text).width / 6; - ctx.restore(); - return width; - }, - - drawBasis: function (surface, p1, p2, color, linewidth) { - this.drawLine(surface, p1, p2, color, linewidth); - - var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).scale(1.0 / 6.0); - var p = p1.clone().offset(-d.x * 0.5, -d.y * 0.5); - for (var i = 0; i < 5; ++i) { - p.offset(d.x, d.y); - var t = p.clone().offset(d.x * 1.25, d.y * 1.25); - t.rotateAround(p, -45); - - this.drawLine(surface, p, t, color, linewidth); - } - }, - - drawCurves: function (surface, p1, p2, color, linewidth) { - var path = surface.createPath(); - path.moveTo(p1.x, p1.y); - - var len = p1.distTo(p2); - var n = Math.floor(len / linewidth); - var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).scale(1.0 / n); - var v = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).rotate(90).setLength(linewidth * 2); - for (var k = 1; k <= n; k += 2) { - var p = p1.clone().offset(d.x * k, d.y * k); - var t1 = p.clone().offset(d.x, d.y); - if (((k - 1) / 2) % 2 == 1) - p.offset(v.x, v.y); - else - p.offset(-v.x, -v.y); - path.qCurveTo(p.x, p.y, t1.x, t1.y); - } - path.setStroke({ color: color, width: linewidth }); - }, - - drawLine: function (surface, p1, p2, color, linewidth, dotline, cap) { - if (linewidth == null) - linewidth = 1; - - if (dotline == null || dotline <= 1) { - return surface.createLine({ x1: p1.x, y1: p1.y, x2: p2.x, y2: p2.y }) - .setStroke({ color: color, width: linewidth, cap: cap == null ? "round" : cap }); - } - else { - var len = p1.distTo(p2); - var n = Math.floor(len / dotline); - if (n % 2 == 0) - --n; - - var d = p2.clone().offset(-p1.x, -p1.y).scale(1.0 / n); - var d2 = d.clone().scale(0.3); - var st = new JSDraw2.Point(((p2.x - p1.x) - d.x * n) / 2, ((p2.y - p1.y) - d.y * n) / 2); - - for (var k = 0; k < n; k += 2) { - var t1 = p1.clone().offset(st.x + d.x * k + d2.x, st.y + d.y * k + d2.y); - var t2 = t1.clone().offset(d.x - d2.x, d.y - d2.y); - surface.createLine({ x1: t1.x, y1: t1.y, x2: t2.x, y2: t2.y }) - .setStroke({ color: color, width: linewidth, cap: cap == null ? "round" : cap }); - } - } - }, - - drawRect: function (surface, r, color, linewidth, radius, style) { - if (r == null || r.isEmpty()) - return; - var opts = { x: r.left, y: r.top, width: r.width, height: r.height }; - if (radius != null) - opts.r = radius; - if (style != null) - opts.style = style; - return surface.createRect(opts).setStroke({ color: color, width: linewidth }); - }, - - drawDShape: function (surface, r, color, linewidth, reverse) { - var rad = r.height / 2; - var x = r.right() - rad; - var y = r.center().y; - var path = surface.createPath() - .moveTo({ x: x, y: r.top }) - .arcTo(rad, rad, 0, false, true, this._calcPoint(x, y, rad, 180 / 2)) - .arcTo(rad, rad, 0, false, true, this._calcPoint(x, y, rad, 180)) - .lineTo({ x: r.left, y: r.bottom() }) - .lineTo({ x: r.left, y: r.top }) - .lineTo({ x: x, y: r.top }) - .closePath() - .setStroke({ color: color, width: linewidth }); - - if (reverse) - path.setTransform([dojox.gfx.matrix.rotateAt(Math.PI, r.center().x, y)]); - return path; - }, - - _calcPoint: function (x, y, rad, deg) { - deg = (Math.PI / 180) * (360 - deg); - return { - x: Math.round((rad * -Math.sin(deg)) + x), y: Math.round(y - (rad * Math.cos(deg))) - }; - }, - - drawEllipse: function (surface, r, color, linewidth) { - var c = r.center(); - return surface.createEllipse({ cx: c.x, cy: c.y, rx: r.width / 2, ry: r.height / 2 }).setStroke({ color: color, width: linewidth }); - }, - - drawPie: function (surface, x, y, r, deg1, deg2) { - var calcPoint = function (deg, rad) { - deg = (Math.PI / 180) * (360 - deg); - return { x: Math.round((r * -Math.sin(deg)) + x), y: Math.round(y - (r * Math.cos(deg))) - }; - }; - return surface.createPath() - .moveTo({ x: x, y: y }) - .lineTo(calcPoint(deg1)) - .arcTo(r, r, 0, false, true, calcPoint(deg2 / 2)) - .arcTo(r, r, 0, false, true, calcPoint(deg2)) - .lineTo({ x: x, y: y }) - .closePath() - .setFill("#535353"); - }, - - drawDiamond: function (surface, r, color, linewidth) { - var c = r.center(); - var points = [ - { x: c.x, y: r.top }, - { x: r.right(), y: c.y }, - { x: c.x, y: r.bottom() }, - { x: r.left, y: c.y }, - { x: c.x, y: r.top } - ]; - return surface.createPolyline(points).setStroke({ color: color, width: linewidth }); - }, - - drawHexgon: function (surface, r, color, linewidth) { - var c = r.center(); - var d = new JSDraw2.Point(0, r.width / 2); - d.rotate(-30); - var points = [ - { x: r.right(), y: c.y }, - { x: c.x + d.x, y: c.y - d.y }, - { x: c.x - d.x, y: c.y - d.y }, - { x: r.left, y: c.y }, - { x: c.x - d.x, y: c.y + d.y }, - { x: c.x + d.x, y: c.y + d.y }, - { x: r.right(), y: c.y } - ]; - return surface.createPolyline(points).setStroke({ color: color, width: linewidth }); - }, - - drawPentagon: function (surface, r, color, linewidth) { - var c = r.center(); - var p1 = c.clone().offset(0, -r.width / 2); - var p2 = p1.clone().rotateAround(c, 72); - var p3 = p2.clone().rotateAround(c, 72); - var p4 = p3.clone().rotateAround(c, 72); - var p5 = p4.clone().rotateAround(c, 72); - - var points = [ - { x: p1.x, y: p1.y }, - { x: p2.x, y: p2.y }, - { x: p3.x, y: p3.y }, - { x: p4.x, y: p4.y }, - { x: p5.x, y: p5.y }, - { x: p1.x, y: p1.y }, - ]; - return surface.createPolyline(points).setStroke({ color: color, width: linewidth }); - } -}; - -/***/ }), - -/***/ "./src/FormulaParser.js": -/*!******************************!*\ - !*** ./src/FormulaParser.js ***! - \******************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.FormulaParser = { - parse: function (s, orphan, bonds) { - if (scil.Utils.isNullOrEmpty(s)) - return null; - - var salt = null; - var p = s.indexOf('.'); - if (p > 0) { - // e.g. --COOH.2HCl - salt = s.substr(p + 1); - s = s.substr(0, p); - } - - var m = this._parse(s, orphan, bonds); - if (m == null && orphan) - m = this.pareFormulaAsSalt(s); - - if (m == null || m.atoms.length == 0) - return null; - - if (!scil.Utils.isNullOrEmpty(salt)) { - var m2 = this.pareFormulaAsSalt(salt); - if (m2 == null || m2.atoms.length == 0) - return null; - - var a1 = m.atoms[m.atoms.length - 1]; - var a2 = m2.atoms[0]; - m.mergeMol(m2); - var b = new JSDraw2.Bond(a1, a2); - b.type = JSDraw2.BONDTYPES.DUMMY; - m.addBond(b); - } - - JSDraw2.SuperAtoms.normalize(m); - return m; - }, - - pareFormulaAsSalt: function (salt) { - if (scil.Utils.isNullOrEmpty(salt)) - return null; - - var coef = 1; - var s2 = salt.replace(/^[0-9]+/, ""); - if (s2.length < salt.length) { - coef = parseInt(salt.substr(0, salt.length - s2.length)); - salt = s2; - } - if (coef < 1) - return null; - - // --COOH.NH4+ - var m = null; - var salt2 = salt.replace(/[+|-][1-9]?$/, ""); - var charge = this.parseCharge(salt.substr(salt2.length)); - salt = salt2; - - // strip H's - var elem = salt.replace(/[H][0-9]{0,10}/g, ""); - m = this.molFromAtom(elem, false, charge); - if (m == null) { - var s2 = salt.replace(/^[A-Z][a-z]?/, ""); - if (s2.length < salt.length) { - elem = salt.substr(0, salt.length - s2.length); - m = this._parse(s2); - if (m == null) - return null; - var atts = JSDraw2.SuperAtoms._getAttachAtoms(m); - if (atts == null || atts.length != 1) - return null; - var a1 = atts[0].a; - a1.attachpoints = []; - if (elem != "H") { - var a2 = new JSDraw2.Atom(atts[0].a.p.clone(), elem); - var b = new JSDraw2.Bond(a1, a2); - m.addAtom(a2); - m.addBond(b); - } - } - } - - if (m == null || m.atoms.length == 0) - return null; - - var m0 = m.clone(); - for (var i = 1; i < coef; ++i) { - var a1 = m.atoms[m.atoms.length - 1]; - var m3 = m0.clone(); - var a2 = m3.atoms[0]; - m.mergeMol(m3); - var b = new JSDraw2.Bond(a1, a2); - b.type = JSDraw2.BONDTYPES.DUMMY; - m.addBond(b); - } - - return m; - }, - - parseSalt: function (s) { - if (scil.Utils.isNullOrEmpty(s)) - return null; - - var caps = s; // s.toUpperCase(); - var salts = JSDraw2.defaultoptions.salts || JSDraw2.salts; - if (salts != null && salts[caps] != null) { - if (salts[caps] == "") - return { coef: 1, mf: null, mw: 0, s: s }; - } - - var s2 = ""; - if (!JSDraw2.FormulaParser.ignoresaltcoef) { - var patt = /^[0-9]{0,10}[\.]?[0-9]{0,9}[ ]?/; - var s2 = patt.exec(s) + ""; - if (s2.length == s.length) - return null; - } - - var coef = 1.0; - if (s2 != "") { - coef = parseFloat(s2); - if (isNaN(coef)) - coef = 1.0; - } - s = s.substr(s2.length); - caps = s; // s.toUpperCase(); - - var mf = null; - var mw = null; - var salts = JSDraw2.defaultoptions.salts || JSDraw2.salts; - if (salts != null && salts[caps] != null) { - mf = salts[caps]; - mw = this.mf2mw(mf, true); - } - else { - mf = s; - mw = this.mf2mw(mf, true); - } - if (mw == null || mw == 0) - return null; - - return { coef: coef, mf: coef == 1 ? mf : coef + "(" + mf + ")", mw: Math.round(mw * (coef > 0 ? coef : 1) * 1000) / 1000, s: coef == 1 ? s : coef + s, stats: this.mf2Stats(mf, true) }; - }, - - parseCharge: function (s) { - if (scil.Utils.isNullOrEmpty(s)) - return 0; - if (s == "+" || s == "++" || s == "+++") - return s.length; - else if (s == "-" || s == "--" || s == "---") - return -s.length; - - if (s.length > 1 && (s.substr(s.length - 1) == '+' || s.substr(s.length - 1) == '-')) - s = s.substr(s.length - 1) + s.substr(0, s.length - 1); - return parseInt(s); - }, - - stripHs: function (s) { - if (s == null || s.length <= 1) - return s; - var s2 = s.replace(/[+|-][1-9]?$/, ""); - var charge = s.substr(s2.length); - if (/^[A-Z][a-z]?[H][0-9]{0,2}$/.test(s2)) { - var elem = /^[A-z][a-z]?/.exec(s); - var e = JSDraw2.PT[elem]; - if (e != null && e.m != null) - return elem + charge; - } - else if (/^[H][0-9]{0,2}[A-Z][a-z]?$/.test(s2)) { - var elem = /[A-z][a-z]?$/.exec(s); - var e = JSDraw2.PT[elem]; - if (e != null && e.m != null) - return elem + charge; - } - return s; - }, - - mergeStats: function (dest, from, coef) { - if (dest == null) - dest = { elements: {}, charges: 0, isotopes: {} }; - - if (from != null) { - if (coef == null) - coef = 1; - for (var e in from.elements) { - if (dest.elements[e] == null) - dest.elements[e] = from.elements[e] * coef; - else - dest.elements[e] += from.elements[e] * coef; - } - for (var e in from.isotopes) { - if (dest.isotopes[e] == null) - dest.isotopes[e] = {}; - var iso = dest.isotopes[e]; - var iso2 = from.isotopes[e]; - for (var i in iso2) { - if (iso[i] == null) - iso[i] = iso2[i] * coef; - else - iso[i] += iso2[i] * coef; - } - } - - if (from.charges != null) - dest.charges += from.charges * coef; - } - - return dest; - }, - - getAtomStats: function (mol) { - if (mol == null) - return null; - - var ret = { elements: {}, charges: 0, isotopes: {}, bios: [] }; - - var hs = 0; - var multicenterHs = 0; - for (var i = 0; i < mol.atoms.length; ++i) { - var a = mol.atoms[i]; - if (a.elem == "5'") { - if (ret.elements["H"] == null) - ret.elements["H"] = 1; - else - ++ret.elements["H"]; - } - else if (a.elem == "3'") { - if (ret.elements["H"] == null) - ret.elements["H"] = 1; - else - ++ret.elements["H"]; - if (ret.elements["O"] == null) - ret.elements["O"] = 1; - else - ++ret.elements["O"]; - } - else if (a.bio != null) { - switch (a.bio.type) { - case JSDraw2.BIO.ANTIBODY: - case JSDraw2.BIO.PROTEIN: - case JSDraw2.BIO.GENE: - case JSDraw2.BIO.DNA: - case JSDraw2.BIO.RNA: - var se = new JSDraw2.SequenceEditor(); - se.setXml(a.bio.sequences); - ret.bios.push({ mw: se.getMolWeight() }); - break; - } - } - else if (a.elem == "@") { - var list = mol.getAllBonds(a); - var dummy = 0; - var sum = 0; - for (var k = 0; k < list.length; ++k) { - if (list[k].type == JSDraw2.BONDTYPES.DUMMY) { - ++dummy; - } - else { - var val = list[k].valence(); - if (val > 0) - sum += Math.floor(val); - } - } - if (dummy > 0) - multicenterHs += sum; - } - else if (a.elem == "#") { - var salt = this.parseSalt(a.alias); - if (salt != null) - this.mergeStats(ret, salt.stats, salt.coef); - } - else { - var e = a.elem; - if (a.isotope > 0) { - var n = ret.isotopes[e]; - if (n == null) - ret.isotopes[e] = {}; - var iso = ret.isotopes[e]; - if (iso[a.isotope] == null) - iso[a.isotope] = 1; - else - iso[a.isotope] = iso[a.isotope] + 1; - } - else { - var n = ret.elements[e]; - if (n == null) - ret.elements[e] = 1; - else - ret.elements[e] = n + 1; - } - hs += a.hcount; - } - ret.charges += a.charge; - } - - hs -= multicenterHs; - if (hs > 0) { - if (ret.elements["H"] != null) - ret.elements["H"] = hs + ret.elements["H"]; - else - ret.elements["H"] = hs; - } - - return ret; - }, - - stats2mw: function (stats) { - if (stats == null) - return null; - - var sum = 0; - for (var k in stats.elements) { - if (k == "D") - sum += JSDraw2.PT["H"].iso[2] * stats.elements[k]; - else if (k == "T") - sum += JSDraw2.PT["H"].iso[3] * stats.elements[k]; - else { - var e = JSDraw2.PT[k]; - if (e == null || e.m == null) - //continue; - return null; - sum += e.m * stats.elements[k]; - } - } - - if (stats.bios != null) { - for (var i = 0; i < stats.bios.length; ++i) - sum += stats.bios[i].mw; - } - - sum += this._isotopemass(stats.isotopes); - if (sum > 0) - sum = scil.Utils.round(sum, 4); - return sum; - }, - - stats2em: function (stats) { - if (stats == null) - return null; - - var sum = 0; - for (var k in stats.elements) { - var e = JSDraw2.PT[k]; - if (e == null || e.em == null) - //continue; - return null; - sum += e.em * stats.elements[k]; - } - - sum += this._isotopemass(stats.isotopes); - return sum; - }, - - _isotopemass: function (isotopes2) { - if (isotopes2 == null) - return 0; - - var sum = 0; - for (var k in isotopes2) { - var e = JSDraw2.PT[k]; - if (e == null || e.m == null) - continue; - - var isotopes = isotopes2[k]; - for (var i in isotopes) { - var m = e.iso[i]; - sum += (m == null ? e.m : m) * isotopes[i]; - } - } - return sum; - }, - - stats2mf: function (stats, html) { - if (stats == null) - return; - - var s = ""; - if (stats.elements["C"] != null) { - s += "C"; - if (stats.elements["C"] > 1) - s += (html ? "" + stats.elements["C"] + "" : stats.elements["C"]); - } - if (stats.elements["H"] != null) { - s += "H"; - if (stats.elements["H"] > 1) - s += (html ? "" + stats.elements["H"] + "" : stats.elements["H"]); - } - - for (var e in stats.elements) { - if (e != "C" && e != 'H' && e != 'R') { - s += e; - if (stats.elements[e] > 1) - s += (html ? "" + stats.elements[e] + "" : stats.elements[e]); - } - } - - for (var e in stats.isotopes) { - var isotopes = stats.isotopes[e]; - for (var iso in isotopes) { - if (html) - s += "" + iso + "" + e; - else - s += "{" + iso + "}" + e; - if (isotopes[iso] > 1) - s += (html ? "" + isotopes[iso] + "" : isotopes[iso]); - } - } - - var r = stats.elements['R']; - if (r > 0) { - s += 'R'; - if (r > 1) - s += (html ? "" + r + "" : r); - } - - if (stats.charges != 0) { - var c = Math.abs(stats.charges); - var t = (stats.charges > 0 ? "+" : "-") + (c > 1 ? c : ''); - if (html) - s += "" + t + ""; - else - s += t; - } - return s; - }, - - mf2mw: function (mf, issalt) { - var stats = this.mf2Stats(mf, issalt); - return this.stats2mw(stats); - }, - - normMF: function (mf) { - var stats = this.mf2Stats(mf); - return this.stats2mf(stats); - }, - - mf2Stats: function (mf, issalt) { - if (mf == null || mf == "") - return null; - - var charges = 0; - var mf2 = mf.replace(/(([+|-][0-9]{0,2})|([ ][0-9]{0,2}[+|-]))$/, ""); - if (mf2.length < mf.length) { - charges = this.parseCharge(mf.substr(mf2.length)); - } - - var ret = this.mf2Stats2(mf2); - if (ret != null && charges != 0) { - // I#10049 - if (issalt) - charges = this.calcSaltCharges(ret, charges); - - ret.charges += charges; - } - - return ret; - }, - - calcSaltCharges: function (ret, charges) { - if (JSDraw2.defaultoptions.calcsaltcharges != true) - return charges; - - if (charges >= 1) { - if (charges > 1) { - for (var k in ret.elements) - ret.elements[k] /= charges * 1.0; - } - - if (ret.elements["H"] == null) - ret.elements["H"] = 0; - --ret.elements["H"]; - charges = 0; - } - - return charges; - }, - - mf2Stats2: function (s) { - var m = JSDraw2.SuperAtoms.get(s); - if (m != null) - return this.getAtomStats(m); - - var ret = { elements: {}, charges: 0 }; - - var numpat = /^[0-9]+/; - var sum = 0; - var p; - while ((p = s.indexOf('(')) >= 0) { - if (p > 0) { - var stats = this._mf2Stats(s.substr(0, p)); - if (stats == null) - return null; - ret = this.mergeStats(ret, stats); - } - - s = s.substr(p); - - var f = false; - var n = 0; - for (var i = 1; i < s.length; ++i) { - var c = s.charCodeAt(i); - if (c == 40) { // ( - ++n; - } - else if (c == 41) { // ) - if (n == 0) { - var bracket = s.substr(1, i - 1); - s = s.substr(i + 1); - var sub = s.match(numpat); - var k = 1; - if (sub != null && sub.length == 1) { - s = s.substr(sub[0].length); - k = parseInt(sub[0]); - } - - var stats = this.mf2Stats2(bracket); - if (stats == null) - return null; - ret = this.mergeStats(ret, stats, k); - - f = true; - break; - } - else { - --n; - } - } - } - - if (!f) - return null; - } - - var stats = this._mf2Stats(s); - if (stats == null) - return null; - ret = this.mergeStats(ret, stats); - return ret; - }, - - _mf2Stats: function (s) { - var patt = /^[A-Z][a-z]?[0-9]{0,9}/; - var patt2 = /^[A-Z][a-z]?/; - - var ret = { elements: {}, charges: 0 }; - while (s != "") { - var c = patt.exec(s); - if (c == null) - return null; - - var s2 = c[0]; - if (s2 == "") - return null; - - var symb = patt2.exec(s2)[0]; - var e = JSDraw2.PT[symb == "D" || symb == "T" ? "H" : symb]; - var n = symb.length == s2.length ? 1 : parseInt(s2.substr(symb.length)); - - var stats = { elements: {}, charges: 0 }; - if (e == null) { - var m = JSDraw2.SuperAtoms.get(symb); - if (m == null || !(m.mw > 0)) - return null; - stats = this.getAtomStats(m); - } - else { - if (!(e.m > null)) - return null; - else - stats.elements[symb] = 1; - } - ret = this.mergeStats(ret, stats, n); - s = s.substr(s2.length); - } - return ret; - }, - - molFromAtom: function (elem, addAttachPoint, charge) { - var s2 = elem.replace(/[+|-][1-9]?$/, ""); - if (s2.length < elem.length) { - charge = this.parseCharge(elem.substr(s2.length)); - elem = s2; - } - - var e = JSDraw2.PT[elem]; - if (e != null && e.a > 0) { - m = new JSDraw2.Mol(); - var a = new JSDraw2.Atom(new JSDraw2.Point(0, 0), elem); - if (charge != null) - a.charge = charge; - m.addAtom(a); - if (addAttachPoint) - a.attachpoints = [1]; - return m; - } - - return null; - }, - - _parse: function (s, orphan, bonds) { - if (scil.Utils.isNullOrEmpty(s)) - return null; - - if (new RegExp("^[\(][^\(\)]+[\)]$").test(s)) - s = s.substr(1, s.length - 2); - - var s2 = this.stripHs(s); - var m = this.molFromAtom(s2, true); - if (m != null) - return m; - - var tokens = { O: ["O"], S: ["S"], Se: ["Se"], Te: ["Te"], Y: ["Y"], NH: ["N"], PH: ["P"], CO: ["C", "^=O"], CO2: ["C", "^=O", "O"], CH2: ["C"], C2H4: ["C", "C"], C3H6: ["C", "C", "C"], C4H8: ["C", "C", "C", "C"], C5H10: ["C", "C", "C", "C", "C"] }; - if (orphan) - tokens.H = []; - - if (scil.Utils.startswith(s, '(')) { - var p = s.indexOf(')'); - if (p > 0) { - var s1 = s.substr(1, p - 1); - var t = s.substr(p + 1); - var s2 = t.replace(/^[0-9]+/, ""); - var repeat = 1; - if (s2.length < t.length) - repeat = parseInt(t.substr(0, t.length - s2.length)); - var ret = this._parseConnectors(s1, orphan); - if (ret != null && ret.remained == "") { - var atoms = []; - for (var i = 0; i < repeat; ++i) - atoms = atoms.concat(ret.atoms); - m = this._connect(atoms, s2); - if (m != null) - return m; - } - } - } - - m = JSDraw2.SuperAtoms.get(s); - if (m != null) - return m; - - m = this.molFromAtom(s, true); - if (m != null) - return m; - - for (var k in tokens) { - var m = this._tryFormula(k, tokens[k], s); - if (m != null) - return m; - } - - if (s.length >= 3) { - var elem = s.substr(0, 2); - var e = JSDraw2.PT[elem]; - if (e != null && JSDraw2.PT.isMetal(e.a) && - (e != JSDraw2.PT.K && e != JSDraw2.PT.Na && e != JSDraw2.PT.Rb && e != JSDraw2.PT.Cs && - e != JSDraw2.PT.Fr && e != JSDraw2.PT.Sb)) - return this._tryFormula(elem, [elem], s); - } - - // Common Formula: --CnH[n*2]--, --CnH[n*2+1], --CnH[n*2-1], and --CnH[n*2-3] - if (bonds == 1 || bonds == 2) { - var reg = /^C[0-9]+H[0-9]+$/; - if (reg.test(s)) { - var p = s.indexOf('H'); - var cs = parseInt(s.substr(1, p - 1)); - var hs = parseInt(s.substr(p + 1)); - if (cs > 0 && (bonds == 2 && cs * 2 == hs /* --CnH[n*2]-- */ || bonds == 1 && (cs * 2 + 1 == hs /* --CnH[n*2+1]-- */ || cs * 2 - 1 == hs /* --CnH[n*2-1]-- */ || cs * 2 - 3 == hs /* --CnH[n*2-3]-- */))) { - var m = new JSDraw2.Mol(); - var a1 = new JSDraw2.Atom(new JSDraw2.Point(0, 0), 'C'); - var a2 = null; - a1.attachpoints = [1]; - m.addAtom(a1); - for (var i = 1; i < cs; ++i) { - var y = i % 2 == 1 ? 0.5 : 0; - a2 = new JSDraw2.Atom(new JSDraw2.Point(a1.p.x + 1, y), 'C'); - m.addAtom(a2); - - var b = new JSDraw2.Bond(a1, a2); - if (i == cs - 1) { - if (cs * 2 - 1 == hs) /* --CnH[n*2-1]-- */ - b.type = JSDraw2.BONDTYPES.DOUBLE; - else if (cs * 2 - 3 == hs) /* --CnH[n*2-3]-- */ - b.type = JSDraw2.BONDTYPES.TRIPLE; - } - m.addBond(b); - - a1 = a2; - } - - if (bonds == 2) - (a2 == null ? a1 : a2).attachpoints = [2]; - - return m; - } - } - } - - return null; - }, - - _parseConnectors: function (s, orphan) { - var tokens = { O: ["O"], S: ["S"], Se: ["Se"], Te: ["Te"], Y: ["Y"], NH: ["N"], PH: ["P"], CO: ["C", "=O"], CO2: ["C", "=O", "O"], CH2: ["C"], C2H4: ["C", "C"], C3H6: ["C", "C", "C"], C4H8: ["C", "C", "C", "C"], C5H10: ["C", "C", "C", "C", "C"] }; - if (orphan) - tokens.H = []; - - var atoms = []; - while (s.length > 0) { - var findone = false; - for (var k in tokens) { - if (scil.Utils.startswith(s, k)) { - atoms = atoms.concat(tokens[k]); - s = s.substr(k.length); - findone = true; - break; - } - } - - if (!findone) - break; - } - - return atoms.length == 0 ? null : { atoms: atoms, remained: s }; - }, - - _tryFormula: function (prefix, atoms, s) { - if (!scil.Utils.startswith(s, prefix, true)) - return null; - - return this._connect(atoms, s.substr(prefix.length)); - }, - - _connect: function (atoms, name) { - var m = JSDraw2.SuperAtoms.get(name); - if (m == null) { - m = this._parse(name, null, 1); - if (m == null) - m = this.molFromAtom(name, false); - } - - if (m == null) - return; - m = m.clone(); - - var atts = JSDraw2.SuperAtoms._getAttachAtoms(m); - if (atts == null || atts.length != 1) - return null; - - var a1 = atts[0].a; - var a2 = null; - var branch = null; - a1.attachpoints = []; - for (var i = atoms.length - 1; i >= 0; --i) { - var c = atoms[i]; - - if (c.substr(0, 1) == "^") { - branch = c.substr(1); - continue; - } - - // I#12074 - a1 = this._connectAtom(a1, c, m); - if (branch != null) { - this._connectAtom(a1, branch, m); - branch = null; - } - } - - a1.attachpoints = [1]; - return m; - }, - - _connectAtom: function (a1, c, m) { - var doublebond = false; - if (c.substr(0, 1) == "=") { - c = c.substr(1); - doublebond = true; - } - - var p = a1.p.clone(); - p.offset(1, 0); - var a2 = new JSDraw2.Atom(p, c); - var b = new JSDraw2.Bond(a1, a2); - if (doublebond) - b.type = JSDraw2.BONDTYPES.DOUBLE; - m.addAtom(a2); - m.addBond(b); - return a2; - } -}; - - -/***/ }), - -/***/ "./src/Group.js": -/*!**********************!*\ - !*** ./src/Group.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// - - - -/** -* Group class - defines Object groups -* @class scilligence.JSDraw2.Group -*/ -JSDraw2.Group = scil.extend(scil._base, { - /** - * @constructor Group - * @param {string} name - group name - * @param {string} type - group type - */ - constructor: function (name, type) { - this.T = "GROUP"; - this.type = type; - this.name = name; - this.id = null; - this._rect = null; - this.p = null; - this.gap = 6.0; - this.group = null; // a group can belong to another group - this.color = null; - this.a = null; - this.ratio = null; - this.tag = null; - }, - - clone: function () { - var g = new JSDraw2.Group(this.name, this.type); - g.id = this.id; - g._rect = this._rect == null ? null : this._rect.clone(); - g.p = this.p == null ? null : this.p.clone(); - g.color = this.color; - g.gap = this.gap; - g.ratio = this.ratio; - g.tag = this.tag; - return g; - }, - - html: function (scale) { - var s = " 0) - s += " gap='" + this.gap + "'"; - s += ">"; - return s; - }, - - readHtml: function (e) { - //this.p = JSDraw2.Point.fromString(e.getAttribute("p")); - var gap = parseFloat(e.getAttribute("gap")); - if (gap > 0) - this.gap = gap; - }, - - flipY: function (y) { - }, - - flipX: function (x) { - }, - - scale: function (s, origin) { - }, - - offset: function (dx, dy) { - }, - - rect: function () { - return this._rect; - }, - - toggle: function (p, tor) { - var r = this._rect; - if (r == null) - return; - return p.y >= r.top && p.y <= r.bottom() && (Math.abs(p.x - r.left) < tor / 2 || Math.abs(p.x - r.right()) < tor / 2) || - p.x >= r.left && p.x <= r.right() && (Math.abs(p.y - r.top) < tor / 2 || Math.abs(p.y - r.bottom()) < tor / 2); - }, - - drawCur: function (surface, r, color, m) { - var r2 = this._rect; - if (r2 == null) - return; - var c = r2.center(); - surface.createCircle({ cx: r2.left, cy: c.y, r: r }).setFill(color); - surface.createCircle({ cx: r2.right(), cy: c.y, r: r }).setFill(color); - surface.createCircle({ cx: c.x, cy: r2.top, r: r }).setFill(color); - surface.createCircle({ cx: c.x, cy: r2.bottom(), r: r }).setFill(color); - - if (m != null) { - for (var i = 0; i < m.atoms.length; ++i) { - if (m.atoms[i].group != this) - continue; - m.atoms[i].drawCur(surface, r * 0.75, color); - } - for (var i = 0; i < m.graphics.length; ++i) { - if (m.graphics[i].group != this) - continue; - m.graphics[i].drawCur(surface, r * 0.75, color); - } - } - }, - - _updateRect: function (m, bondlength) { - var r = m.getGroupRect(this, bondlength); - this._rect = r; - return r; - }, - - draw: function (surface, linewidth, m, fontsize) { - var r = this._rect; - if (r == null) - return; - - var color = this.color == null ? "gray" : this.color; - //r.inflate(this.gap * linewidth, this.gap * linewidth); - if (this.type == "chiral") { - JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left + r.width / 2, r.top - fontsize), this.name, color, fontsize, false); - } - else { - JSDraw2.Drawer.drawRect(surface, r, color, linewidth / 4, linewidth * 3); //.setFill("#ffffff"); - JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left + r.width / 2, r.bottom() + fontsize / 2), this.name, color, fontsize, false); - } - - if (!scil.Utils.isNullOrEmpty(this.tag)) - JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left, r.top - fontsize), this.tag, "black", fontsize, false, "start"); - if (!scil.Utils.isNullOrEmpty(this.ratio)) - JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.right(), r.bottom() + fontsize / 2), "ratio: " + this.ratio, "black", fontsize, false, "end"); - }, - - drawSelect: function (lasso) { - lasso.draw(this, this._rect.fourPoints()); - } -}); - -JSDraw2.Group.cast = function (a) { - return a != null && a.T == 'GROUP' ? a : null; -}; - -/***/ }), - -/***/ "./src/IDGenerator.js": -/*!****************************!*\ - !*** ./src/IDGenerator.js ***! - \****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.IDGenerator = scil.extend(scil._base, { - constructor: function (start) { - this.i = start > 0 ? start : 0; - this.used = this.i == 0 ? null : {}; - }, - - next: function (id) { - if (this.used == null) - return ++this.i; - - if (id > 0 && !this.used[id]) { - this.used[id] = true; - return id; - } - - id = ++this.i; - while (this.used[id]) - id = ++this.i; - this.used[id] = true; - return id; - } -}); - -/***/ }), - -/***/ "./src/JSDraw.Core.js": -/*!****************************!*\ - !*** ./src/JSDraw.Core.js ***! - \****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** -@project JSDraw -@version 5.3.1 -@description JSDraw Chemical/Biological Structure Editor -*/ - -/** -* JSDraw2 namespace -* @namespace scilligence.JSDraw2 -*/ -JSDraw2 = {}; -scilligence.JSDraw2 = JSDraw2; -scilligence.JSDraw3 = JSDraw3 = JSDraw2; - -JSDraw2.speedup = { fontsize: 4, gap: 0, disableundo: false, minbondlength: 1 }; - -/** -* JSDraw Version -* @property scilligence.JSDraw2.version -*/ -JSDraw2.version = "JSDraw V5.3.1"; - -// JSDraw file version -JSDraw2.kFileVersion = "5.0"; - -/** -* JSDraw Default Options -* @property {dictionay} scilligence.JSDraw2.defaultoptions default Editor options: { skin: "w8" or null, delheteroatom: false, salts: { name: MF, ...}, abbreviations: {}, tlc: {}, popupwidth: number, popupheight: number, popupxdraw: true or false, monocolor: true or false, jdrawpath: "http://server/jdraw/" } -*/ -JSDraw2.defaultoptions = {}; -JSDraw2.password = {encrypt:true}; - -JSDraw2.TEXTKEYWORDS = ["°C", "rt", "reflux", "hr", "min", "sec", "psi", "atm", "overnight", "microwave", "Δ"]; -JSDraw2.MOLECULETYPES = ["SmallMolecule", "Polymer", "Peptide", "DNA", "RNA", "ADC", "ChemicalReagent"]; -JSDraw2.CHIRALITIES = ["Achiral", "Absolute", "Racemic", "Diastereomeric", "Enatiomer R", "Enatiomer S"]; - -/** -* Predefined Bond Types: -
-JSDraw2.BONDTYPES = {
-    UNKNOWN: 0,
-    SINGLE: 1,
-    DOUBLE: 2,
-    TRIPLE: 3,
-    DELOCALIZED: 4,
-    WEDGE: 5,
-    HASH: 6,
-    WIGGLY: 7,
-    EITHER: 8,
-    SINGLEORDOUBLE: 9,
-    SINGLEORAROMATIC: 10,
-    DOUBLEORAROMATIC: 11,
-    QUADRUPLE: 12,
-    DUMMY: 13,
-    PEPTIDE: 21,
-    NUCLEOTIDE: 22,
-    DISULFIDE: 23,
-    AMIDE: 24
-}
-
-* @class {static} scilligence.JSDraw2.BONDTYPES -*/ -JSDraw2.BONDTYPES = { - UNKNOWN: 0, - SINGLE: 1, - DOUBLE: 2, - TRIPLE: 3, - DELOCALIZED: 4, - WEDGE: 5, - HASH: 6, - WIGGLY: 7, - EITHER: 8, - SINGLEORDOUBLE: 9, - SINGLEORAROMATIC: 10, - DOUBLEORAROMATIC: 11, - QUADRUPLE: 12, - DUMMY: 13, - BOLD: 14, - BOLDHASH: 15, - PEPTIDE: 21, - NUCLEOTIDE: 22, - DISULFIDE: 23, - AMIDE: 24 -}; - -JSDraw2.RXNCENTER = { - NOTCENTER: -1, - CENTER: 1, - BREAK: 4, - CHANGE: 8, - BREAKANDCHANGE: 12 -}; - -JSDraw2.ALIGN = { - RIGHT: 0, - BOTTOM: 1, - LEFT: 2, - TOP: 3 -}; - -JSDraw2.BIO = { - AA: 'AA', - //BASE: 'BASE', - ANTIBODY: 'ANTIBODY', - PROTEIN: "PROTEIN", - GENE: "GENE", - DNA: "DNA", - RNA: "RNA", - BASE_DNA: "BASEDNA", - BASE_RNA: "BASERNA" -}; - -JSDraw2.ANTIBODY = { - IgG: "IgG", - Fab: "Fab", - ScFv: "ScFv" -}; - - -JSDraw2.DNATable = { - GCT: "A", GCC: "A", GCA: "A", GCG: "A", - CGT: "R", CGC: "R", CGA: "R", CGG: "R", AGA: "R", AGG: "R", - AAT: "", AAC: "N", - GAT: "D", GAC: "D", - TGT: "C", TGC: "C", - CAA: "Q", CAG: "Q", - GAA: "E", GAG: "E", - GGT: "G", GGC: "G", GGA: "G", GGG: "G", - CAT: "H", CAC: "H", - ATT: "I", ATC: "I", ATA: "I", - TTA: "L", TTG: "L", CTT: "L", CTC: "L", CTA: "L", CTG: "L", - AAA: "K", AAG: "K", - ATG: "M", - TTT: "F", TTC: "F", - CCT: "P", CCC: "P", CCA: "P", CCG: "P", - TCT: "S", TCC: "S", TCA: "S", TCG: "S", AGT: "S", AGC: "S", - ACT: "T", ACC: "T", ACA: "T", ACG: "T", - TGG: "W", - TAT: "Y", TAC: "Y", - GTT: "V", GTC: "V", GTA: "V", GTG: "V", - ATG: "[", - TAA: "]", TGA: "]", TAG: "]" -}; - - -JSDraw2.RNATable = { - GCU: "A", GCC: "A", GCA: "A", GCG: "A", - CGU: "R", CGC: "R", CGA: "R", CGG: "R", AGA: "R", AGG: "R", - AAU: "N", AAC: "N", - GAU: "D", GAC: "D", - UGU: "C", UGC: "C", - CAA: "Q", CAG: "Q", - GAA: "E", GAG: "E", - GGU: "G", GGC: "G", GGA: "G", GGG: "G", - CAU: "H", CAC: "H", - AUU: "I", AUC: "I", AUA: "I", - AUG: "[", - UUA: "L", UUG: "L", CUU: "L", CUC: "L", CUA: "L", CUG: "L", - AAA: "K", AAG: "K", - AUG: "M", - UUU: "F", UUC: "F", - CCU: "P", CCC: "P", CCA: "P", CCG: "P", - UCU: "S", UCC: "S", UCA: "S", UCG: "S", AGU: "S", AGC: "S", - ACU: "T", ACC: "T", ACA: "T", ACG: "T", - UGG: "W", - UAU: "Y", UAC: "Y", - GUU: "V", GUC: "V", GUA: "V", GUG: "V", - UAA: "]", UGA: "]", UAG: "]" -}; - -/***/ }), - -/***/ "./src/JSDraw.Lite.js": -/*!****************************!*\ - !*** ./src/JSDraw.Lite.js ***! - \****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.needPro = function () { - scil.Utils.alert("This is a JSDraw Pro feature."); -}; - -JSDraw2.Security = { - kEdition: "Lite", - error: null, - valid: true, - - _check: function () { - } -}; - - -scil.apply(JSDraw2, { - Text: { cast: function (a) { return null; } }, - Shape: { cast: function (a) { return null; } }, - Bracket: { cast: function (a) { return null; } }, - AssayCurve: { cast: function (a) { return null; } }, - Arrow: { cast: function (a) { return null; } }, - TLC: { cast: function (a) { return null; } }, - Spectrum: { cast: function (a) { return null; } }, - Plus: { cast: function (a) { return null; } }, - Group: { cast: function (a) { return null; } }, - RGroup: { cast: function (a) { return null; } } -}); - - - -/***/ }), - -/***/ "./src/JSDraw.Table.js": -/*!*****************************!*\ - !*** ./src/JSDraw.Table.js ***! - \*****************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Table = { - splitUnit: function (s) { - if (s == null || s == " ") - return null; - s = scil.Utils.trim(s); - if (s.length == 0) - return null; - - var unit2 = null; - var unit = null; - var num = s.replace(/[a-z|\/|%|°]+$/i, ""); - if (num != s) { - unit2 = s.substr(num.length); - unit = unit2.toLowerCase(); - num = scil.Utils.trim(num); - } - - if ((unit == "w/w" || unit == "w/v") && scil.Utils.endswith(num, "%")) { - num = num.substr(0, num.length - 1); - unit2 = unit = "% " + unit; - } - - if (unit == "%w/w") - unit2 = unit = "% w/w"; - else if (unit == "%w/v") - unit2 = unit = "% w/v"; - - return { value: scil.Utils.trim(num), unit: unit, unit2: unit2 }; - }, - - readSdfRecord: function (sdfmol, readattributes) { - if (sdfmol.substr(0, 1) == "\n") - sdfmol = sdfmol.substr(1); - else if (sdfmol.substr(0, 2) == "\r\n") - sdfmol = sdfmol.substr(2); - - var p = sdfmol.indexOf("\nM END"); - if (p < 0) - p = sdfmol.indexOf("\nM END"); - if (p < 0) - return null; - - var p1 = sdfmol.indexOf("\n", p + 1); - var molfile = p1 < 0 ? sdfmol : sdfmol.substr(0, p1); - var s = p1 < 0 ? null : sdfmol.substr(p1 + 1); - var props = readattributes ? JSDraw2.Table.readProps(s) : null; - - return { molfile: molfile, props: props }; - }, - - readProps: function (s) { - var ret = {}; - if (s == null) - return ret; - - var ss = s.split('\n'); - for (var i = 0; i < ss.length; ++i) { - s = ss[i]; - var n = null; - var v = null; - - if (s.substr(0, 1) == ">") { - var p = s.indexOf('<', 1); - if (p > 0) { - ++p; - var p1 = s.indexOf('>', p); - if (p1 > 0) - n = s.substr(p, p1 - p); - } - - for (++i; i < ss.length; ++i) { - s = ss[i]; - if (scil.Utils.trim(s).length == 0) - break; - if (v == null) - v = s; - else - v += s; - } - } - - if (n != null) - ret[scil.Utils.trim(n)] = scil.Utils.trim(v); - } - - return ret; - } -}; - -/***/ }), - -/***/ "./src/JSDrawIO.js": -/*!*************************!*\ - !*** ./src/JSDrawIO.js ***! - \*************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.JSDrawIO = { - downloaddlg: null, - jsdsavedlg: null, - jsdFiles: { jsdraw: "JSDraw2 XML", mol: "Mol File", rxn: "Reaction File", inchi: "InChI", helm: "HELM", xhelm: "xHELM", smiles: "SMILES", cml: "Chemical Markup Language", cdxml: "ChemDraw CDXML", cdx: "ChemDraw CDX", png: "PNG Picture" }, - jsdFiles2: { jsd: "JSDraw XML", png: "PNG Picture" }, - jsdFiles3: { helm: "HELM", xhelm: "xHELM" }, - jsssavedlg: null, - jssFiles: { sdf: "SDF File", csv: "CSV File", jssdf: "Xml File", json: "Json File" }, - - callWebservice: function (cmd, data, callback) { - if (JSDrawServices.url == null || JSDrawServices.url == "") - scil.Utils.alert("JSDraw web service is not available"); - else - scil.Utils.ajax(JSDrawServices.url + "?cmd=" + cmd, callback, data); - }, - - needCrossdomain: function () { - if (JSDrawServices.xdomain) { - var s = window.location + ""; - var p = s.indexOf("://"); - var p2 = s.indexOf("/", p + 3); - var host = s.substr(0, p2 + 1); - if (!scil.Utils.startswith(JSDrawServices.url.toLowerCase(), host.toLowerCase())) - return true; - } - return false; - }, - - jsdFileOpen: function (jsd) { - var msg; - if (JSDraw2.Security.kEdition == "Lite") - msg = this.res("Please select a HELM file") + " (*.helm, *.xhelm):"; - else - msg = this.res("Please select a chemistry file") + " (*.mol, *.rxn, *.cdx, *.skc, *.helm, *.xhelm, *.smiles etc.):"; - - if (this.needCrossdomain()) { - var url = JSDrawServices.url + "?cmd="; - scil.Utils.uploadFile("" + this.res("Import File"), - msg, url + "xdomain.post", function (xfilename) { - scil.Utils.jsonp(url + "openjsd", function (ret) { JSDraw2.JSDrawIO.jsdFileOpen2(jsd, ret); }, - { _xfilename: xfilename }); - }, null, null, null, null, true); - } - else { - if (this.jsdFileOpenDlg == null) { - var fields = { - note: { type: "html", template: "
" + msg + "
" }, - file: { type: "postfile", attributes: { name: "file"} }, - importas: JSDraw2.Security.kEdition == "Lite" ? null : { type: "select", items: { "": "", "reactant": "Import as Reactant", "product": "Import as Product"} } - }; - var me = this; - this.jsdFileOpenDlg = scil.Form.createDlgForm("Load File", fields, - { src: scil.App.imgSmall("open.png"), label: "Load File", onclick: function () { me.jsdFileOpen1(); } }, - { usepostform: true, hidelabel: true }); - } - - this.jsdFileOpenDlg.show(); - this.jsdFileOpenDlg.jsd = jsd; - this.jsdFileOpenDlg.form.postform.reset(); - /* - scil.Utils.uploadFile("" + this.res("Import File"), - this.res("Please select a chemistry file") + " (*.mol, *.rxn, *.cdx, *.skc, *.smiles etc.):", - JSDrawServices.url + "?cmd=openjsd", - function (ret) { JSDraw2.JSDrawIO.jsdFileOpen2(jsd, ret); }); - */ - } - }, - - jsdFileOpen1: function () { - var me = this; - this.jsdFileOpenDlg.form.post(JSDrawServices.url + "?cmd=openjsd", null, function (ret) { - var importas = me.jsdFileOpenDlg.form.fields.importas == null ? null : me.jsdFileOpenDlg.form.fields.importas.value; - me.jsdFileOpen2(me.jsdFileOpenDlg.jsd, ret, importas); - me.jsdFileOpenDlg.hide(); - }); - }, - - jsdFileOpen2: function (jsd, ret, importas) { - var data = ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents; - if (importas == "reactant" || importas == "product") { - var m = new JSDraw2.Mol(); - if (ret.format == "molfile") - m.setMolfile(data); - else if (ret.format == "rxn") - m.setRxnfile(data); - else - m.setXml(data); - - if (m.atoms.length > 0) { - var rxn = m.parseRxn(true); - var f = false; - if (rxn == null) { - if (jsd.pasteMol(m, null, importas)) - f = true; - } - else if (rxn.arrow == null && rxn.products.length == 0) { - for (var i = 0; i < rxn.reactants.length; ++i) - if (jsd.pasteMol(rxn.reactants[i], null, importas)) - f = true; - } - else { - if (importas == "reactant" && rxn.reactants != null) { - for (var i = 0; i < rxn.reactants.length; ++i) - if (jsd.pasteMol(rxn.reactants[i], null, importas)) - f = true; - } - else if (importas == "product" && rxn.products != null) { - for (var i = 0; i < rxn.products.length; ++i) - if (jsd.pasteMol(rxn.products[i], null, importas)) - f = true; - } - } - - if (f) - jsd.refresh(true); - else - scil.Utils.alert("No structure imported"); - } - } - else { - if (ret.format == "molfile" || scil.Utils.endswith(ret.filename, ".mol")) - jsd.setMolfile(data); - else if (ret.format == "rxn" || scil.Utils.endswith(ret.filename, ".rxn")) - jsd.setRxnfile(data); - else if (ret.format == "xhelm" || scil.Utils.endswith(ret.filename, ".xhelm")) - jsd.setXHelm(data); - else if (ret.format == "helm" || scil.Utils.endswith(ret.filename, ".helm")) - jsd.setHelm(data); - else - jsd.setXml(data); - } - }, - - jsdFileSave: function (jsd) { - if (JSDraw2.JSDrawIO.jsdsavedlg == null) { - var div = scil.Utils.createElement(null, "div", this.res("Please select the file format to be saved: "), { width: "420px", margin: "10px" }); - var sel = scil.Utils.createElement(div, "select"); - scil.Utils.createElement(sel, "option"); - if (JSDraw2.Security.kEdition == "Lite") { - if (jsd.options.helmtoolbar) - scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles3, null, false); - else - scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles, null, false); - } - else if (jsd.options.tlcplate) - scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles2, null, false); - else - scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles, null, false); - - var s = scil.Utils.createElement(div, "div", null, { marginTop: "20px", textAlign: "center" }); - scil.Utils.createButton(s, { src: scil.App.imgSmall("submit.png"), label: "Save File", onclick: function (e) { JSDraw2.JSDrawIO.jsdFileSave2(); e.preventDefault(); } }); - scil.Utils.createButton(s, " "); - scil.Utils.createButton(s, { src: scil.App.imgSmall("cancel.png"), label: "Cancel", onclick: function (e) { JSDraw2.JSDrawIO.jsdsavedlg.hide(); e.preventDefault(); } }); - - JSDraw2.JSDrawIO.jsdsavedlg = new JSDraw2.Dialog("" + this.res("Save File"), div); - JSDraw2.JSDrawIO.jsdsavedlg.sel = sel; - } - JSDraw2.JSDrawIO.jsdsavedlg.jsd = jsd; - JSDraw2.JSDrawIO.jsdsavedlg.show(); - JSDraw2.JSDrawIO.jsdsavedlg.sel.selectedIndex = 0; - }, - - jsdFileSave2: function () { - this.jsdFileSave3(JSDraw2.JSDrawIO.jsdsavedlg.sel.value, JSDraw2.JSDrawIO.jsdsavedlg.jsd); - this.jsdsavedlg.hide(); - }, - - jsdFileSave3: function (ext, jsd) { - var s; - if (ext == "helm") - s = jsd.getHelm(); - else if (ext == "xhelm") - s = jsd.getXHelm(); - else - s = jsd.getXml(); - - var dt = new Date(); - var prefix = JSDraw2.Security.kEdition == "Lite" && jsd.options.helmtoolbar ? "HELM" : "JSDraw"; - var filename = prefix + dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate() + "." + ext; - var args = { client: "jsdraw", wrapper: "none", filename: filename, contents: s }; - scil.Utils.post(JSDrawServices.url + "?cmd=savefile", args, "_blank"); - }, - - cleanup: function (jsd) { - var selected = jsd.m.clone(true); - if (selected != null && selected.atoms.length == 0) - selected = null; - var smiles = selected != null ? selected.getSmiles() : jsd.getSmiles(); - if (smiles == null || smiles == "") - return; - - var url = JSDrawServices.url; - if (url == null) { - scil.Utils.alert("JSDraw Web Service is not configured yet."); - return; - } - - var l = window.location; - var s = l.protocol + "//" + l.host + "/"; - - var fun = null; - if (scil.Utils.startswith(url.toLowerCase(), s.toLowerCase())) { - fun = scil.Utils.ajax; - smiles = selected != null ? selected.getXml() : jsd.getXml(); - } - else { - fun = scil.Utils.jsonp; - } - - var openbonds = []; - if (selected != null) { - for (var i = 0; i < jsd.m.bonds.length; ++i) { - var b = jsd.m.bonds[i]; - if (b.a1.selected != b.a2.selected) - openbonds.push(b); - } - } - - var me = this; - fun(url + "?cmd=cleanup", function (data) { - if (selected != null) { - var m = me._data2Mol(data); - if (m != null && !m.isEmpty()) { - m.setBondLength(jsd.bondlength); - - if (!me._connectOpenBonds(jsd.m, m, openbonds, jsd.bondlength)) { - var center = selected.rect().center(); - var center2 = m.rect().center(); - m.offset(center.x - center2.x, center.y - center2.y); - } - - jsd.pushundo(); - jsd.delSelected(); - - m.setSelected(true); - jsd.m.mergeMol(m); - jsd.refresh(true); - - } - } - else { - me._setMolData(jsd, data, null, true); - } - }, { input: smiles, inputformat: "jsdraw" }); - }, - - _connectOpenBonds: function (host, m, bonds, bondlength) { - if (bonds.length == 0) - return false; - - if (bonds.length > 1) { - for (var i = 0; i < bonds.length; ++i) { - var bond = bonds[i]; - var move = bond.a1.selected ? bond.a1 : bond.a2; - var fix = bond.a1.selected ? bond.a2 : bond.a1; - var a = m.getObjectById(move.id); - if (a == null) - continue; - - var nb = bond.clone(); - nb.replaceAtom(move, a); - m.addBond(nb); - } - return false; - } - - var bond = bonds[0]; - var move = bond.a1.selected ? bond.a1 : bond.a2; - var fix = bond.a1.selected ? bond.a2 : bond.a1; - - var a = m.getObjectById(move.id); - if (a == null) - return false; - - // translate - var p; - if (bond.selected) { - var i = scil.Utils.indexOf(host.bonds, bond); - host.bonds.splice(i, 1); - p = host.guessBond(fix, bondlength); - host.bonds.splice(i, 0, bond); - } - else { - p = move.p; - } - m.offset(p.x - a.p.x, p.y - a.p.y); - - // rotate - var p2 = m.guessBond(a, bondlength); - var ang1 = fix.p.angleTo(p); - var ang2 = p2.angleTo(p); - m.rotate(p, ang1 - ang2); - - var nb = bond.clone(); - nb.replaceAtom(move, a); - m.addBond(nb); - return true; - }, - - _data2Mol: function (data) { - var m = new JSDraw2.Mol(); - if (typeof (data) == "string") - m = m.setXml(data); - else - m = m.setXml(data.output); - return m; - }, - - _setMolData: function (jsd, data, q, clear) { - var m = this._data2Mol(data); - if (m == null || m.isEmpty()) - return; - - jsd.pushundo(); - if (jsd.setXml(m.getXml()) != null) - jsd.refresh(true); - }, - - name2structure: function (jsd) { - var fn = function (q) { - var url; - if (JSDrawServices.id2s != null && JSDrawServices.id2s.url != null && JSDrawServices.id2s.regex != null && q.match(JSDrawServices.id2s.regex) != null) - url = JSDrawServices.id2s.url; - else if (JSDrawServices.n2s != null && JSDrawServices.n2s.url != null) - url = JSDrawServices.n2s.url; - - if (url == null) { - scil.Utils.alert("Name-to-structure is not configured yet."); - return; - } - - scil.Utils.jsonp(url, function (data) { JSDraw2.JSDrawIO._setMolData(jsd, data, q); }, { q: q, fmt: "jsdraw" }, { showprogress: true }); - }; - - // caption, message, defaultval, btn, callback, - var msg = JSDrawServices.n2s != null && JSDrawServices.url.msg != null ? JSDrawServices.n2s.msg : this.res("Please type chemical name, CAS, SMILES etc.") + ":"; - scil.Utils.prompt2({ - caption: "" + this.res("Name to Structure"), - message: msg, - button: this.res("Convert"), - callback: fn, - autosuggesturl: (JSDrawServices.n2s != null ? JSDrawServices.n2s.suggest : null), - iconurl: scil.Utils.imgSrc("img/name2s.gif"), - owner: jsd - }); - }, - - res: function (s) { - return JSDraw2.Language.res(s); - }, - - jssFileOpen: function (jss) { - var check = { msg: "Appending Mode" }; - if (jss.options.appendingmode) { - check.checked = true; - check.disabled = true; - } - var structurecolumn = jss.options.structurecolumn == null ? "" : jss.options.structurecolumn; - scil.Utils.uploadFile("" + this.res("Open File"), - this.res("Please select a file") + " (*.sdf,*.rdf,*.xls,*.csv,*.smiles):", JSDrawServices.url + "?cmd=openjss", - function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jss, ret); }, { structurecolumn: structurecolumn }, check); - - if (this.needCrossdomain()) { - var url = JSDrawServices.url + "?cmd="; - scil.Utils.uploadFile("" + this.res("Open File"), - this.res("Please select a file") + " (*.sdf,*.rdf,*.xls,*.csv,*.smiles)", - url + "xdomain.post", function (xfilename) { - scil.Utils.jsonp(url + "openjss", function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jsd, ret); }, - { _xfilename: xfilename, structurecolumn: structurecolumn }); - }, null, null, null, null, true); - } - else { - scil.Utils.uploadFile("" + this.res("Open File"), - this.res("Please select a file") + " (*.sdf,*.rdf,*.xls,*.csv,*.smiles):", JSDrawServices.url + "?cmd=openjss", - function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jss, ret); }, { structurecolumn: structurecolumn }, check); - } - }, - - jssFileOpen2: function (jss, ret, check) { - var appendingmode = scil.Utils.uploadfileDlg.check.checked; - if (scil.Utils.endswith(ret.filename, ".rdf")) - jss.setRdf(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, null, !appendingmode); - //else if (scil.Utils.endswith(ret.filename, ".sdf")) - // jss.setSdf(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, null, !appendingmode); - else - jss.setXml(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, !appendingmode, appendingmode); - }, - - jssFileSave: function (jss) { - if (JSDraw2.JSDrawIO.jsssavedlg == null) { - var div = scil.Utils.createElement(null, "div", this.res("Please select a file type") + ":", { width: "350px", margin: "10px" }); - var sel = scil.Utils.createElement(div, "select"); - scil.Utils.createElement(sel, "option"); - scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jssFiles, null, false); - - var s = scil.Utils.createElement(div, "div", null, { marginTop: "20px", textAlign: "center" }); - var btn = scil.Utils.createElement(s, "button", "" + this.res("Save")); - dojo.connect(btn, "onclick", function (e) { JSDraw2.JSDrawIO.jssFileSave2(); e.preventDefault(); }); - JSDraw2.JSDrawIO.jsssavedlg = new JSDraw2.Dialog("" + this.res("Save File"), div); - JSDraw2.JSDrawIO.jsssavedlg.sel = sel; - } - JSDraw2.JSDrawIO.jsssavedlg.jss = jss; - JSDraw2.JSDrawIO.jsssavedlg.show(); - JSDraw2.JSDrawIO.jsssavedlg.sel.selectedIndex = 0; - }, - - jssFileSave2: function () { - var ext = JSDraw2.JSDrawIO.jsssavedlg.sel.value; - var dt = new Date(); - var filename = "JSDrawTable" + dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate() + "." + ext; - var args = { client: "jssdf", wrapper: "none", filename: filename }; - switch (ext) { - case "sdf": - args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getSdf(); - break; - case "jssdf": - args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getXml(); - break; - case "json": - args.contents = scil.Utils.json2str(JSDraw2.JSDrawIO.jsssavedlg.jss.getJson()); - break; - case "csv": - args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getCsv(); - break; - } - scil.Utils.post(JSDrawServices.url + "?cmd=savefile", args, "_blank"); - JSDraw2.JSDrawIO.jsssavedlg.hide(); - } -}; - -/***/ }), - -/***/ "./src/Language.js": -/*!*************************!*\ - !*** ./src/Language.js ***! - \*************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Language = { - current: null, - use: function (lang) { - }, - - res: function (s) { - return s; - } -}; - -/***/ }), - -/***/ "./src/Lasso.js": -/*!**********************!*\ - !*** ./src/Lasso.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Lasso = scilligence.extend(scilligence._base, { - constructor: function (extra, linewidth, selecting) { - this.surface = extra; - this.linewidth = linewidth; - this.list = selecting ? [] : null; - - this.lasthits = []; - this.curhits = []; - this.line = null; - }, - - hit: function (a) { - if (scil.Utils.indexOf(this.lasthits, a) >= 0) - return; - - a.selected = !a.selected; - if (a.selected) - a.drawSelect(this); - else - this.remove(a); - this.curhits.push(a); - }, - - endHits: function(start, end) { - this.lasthits = this.curhits; - this.curhits = []; - - if (this.line != null) - this.surface.remove(this.line); - this.line = JSDraw2.Drawer.drawLine(this.surface, start, end, "#aaf", this.linewidth / 2); - }, - - draw: function (a, points) { - if (points.x != null) - points = [points]; - - var nodes = []; - for (var i = 0; i < points.length; ++i) { - var p = points[i]; - var c = this.surface.createCircle({ cx: p.x, cy: p.y, r: this.linewidth * 2 }).setFill(JSDraw2.Editor.COLORSELECTED); - nodes.push(c); - } - - if (this.list != null) - this.list.push({ a: a, nodes: nodes }) - }, - - remove: function (a) { - var nodes = null; - for (var i = 0; i < this.list.length; ++i) { - if (this.list[i].a == a) { - nodes = this.list[i].nodes; - this.list.splice(i, 1); - break; - } - } - - if (nodes == null) - return; - - for (var i = 0; i < nodes.length; ++i) - this.surface.remove(nodes[i]); - } -}); - -/***/ }), - -/***/ "./src/PT.Lite.js": -/*!************************!*\ - !*** ./src/PT.Lite.js ***! - \************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.PT = { - commonUsed: { C: "C", N: "N", O: "O", S: "S", P: "P", F: "F", Cl: "L", Br: "B", I: "I", H: "H,D,T", Si: null, R: "R" }, - - getCommonUsedElements: function (forwhat) { - var list = []; - if (forwhat == "menu") { - for (var e in JSDraw2.PT.commonUsed) - list.push({ caption: e, shortcut: JSDraw2.PT.commonUsed[e] }); - list.push("-"); - } - else { - for (var e in this.commonUsed) - list.push(e); - } - - //list.push("..."); - return list; - }, - - '*': { a: 0 }, - 'X': { a: 0 }, // halogen - 'R': { a: 0 }, - - H: { a: 1, c: '909090', m: 1.0079, em: 1.0078, e: 1, v: [1], iso: { 1: 1.0078, 2: 2.0141, 3: 3.0161} }, - // JSDraw.Pro - Be: { a: 4, c: 'C2FF00', m: 9.0122, em: 9.0122, v: [0, 2], iso: { 9: 9.0122} }, - B: { a: 5, c: 'FFB5B5', m: 10.811, em: 11.0093, e: 3, v: [3], iso: { 10: 10.0129, 11: 11.0093} }, - C: { a: 6, c: '000000', m: 12.0107, em: 12, e: 4, v: [4], iso: { 12: 12, 13: 13.0034} }, - N: { a: 7, c: '3050F8', m: 14.0067, em: 14.0031, e: 5, v: [3], iso: { 14: 14.0031, 15: 15.0001} }, - O: { a: 8, c: 'FF0D0D', m: 15.9994, em: 15.9949, e: 6, v: [2], iso: { 16: 15.9949, 17: 16.9991, 18: 17.9992} }, - F: { a: 9, c: '90E050', m: 18.9984, em: 18.9984, e: 7, v: [1], iso: { 19: 18.9984} }, - // JSDraw.Pro - Na: { a: 11, c: 'AB5CF2', m: 22.9898, em: 22.9898, v: [0, 1], iso: { 23: 22.9898} }, - // JSDraw.Pro - Si: { a: 14, c: 'F0C8A0', m: 28.0855, em: 27.9769, e: 4, v: [4], iso: { 28: 27.9769, 29: 28.9765, 30: 29.9738} }, - P: { a: 15, c: 'FF8000', m: 30.9738, em: 30.9738, e: 5, v: [3, 5], iso: { 31: 30.9738} }, - S: { a: 16, c: 'C0C000', m: 32.065, em: 31.9721, e: 6, v: [2, 4, 6], iso: { 32: 31.9721, 33: 32.9715, 34: 33.9679, 36: 35.9671} }, - Cl: { a: 17, c: '1FF01F', m: 35.453, em: 34.9689, e: 7, v: [1, 3, 5, 7], iso: { 35: 34.9689, 37: 36.9659} }, - // JSDraw.Pro - K: { a: 19, c: '8F40D4', m: 39.0983, em: 38.9637, v: [0, 1], iso: { 39: 38.9637, 40: 39.964, 41: 40.9618} }, - Ca: { a: 20, c: '3DFF00', m: 40.078, em: 39.9626, v: [0, 2], iso: { 40: 39.9626, 42: 41.9586, 43: 42.9588, 44: 43.9555, 46: 45.9537, 48: 47.9525} }, - // JSDraw.Pro - Ge: { a: 32, c: '668F8F', m: 72.64, em: 73.9212, v: [4, 2], iso: { 70: 69.9243, 72: 71.9221, 73: 72.9235, 74: 73.9212, 76: 75.9214} }, - As: { a: 33, c: 'BD80E3', m: 74.9216, em: 74.9216, e: 5, v: [3, 5], iso: { 75: 74.9216} }, - Se: { a: 34, c: 'FFA100', m: 78.96, em: 79.9165, e: 6, v: [2, 4, 6], iso: { 74: 73.9225, 76: 75.9192, 77: 76.9199, 78: 77.9173, 80: 79.9165, 82: 81.9167} }, - Br: { a: 35, c: 'A62929', m: 79.904, em: 78.9183, e: 7, v: [1, 3, 5, 7], iso: { 79: 78.9183, 81: 80.9163} }, - // JSDraw.Pro - I: { a: 53, c: '940094', m: 126.904, em: 126.904, e: 7, v: [1, 3, 5, 7], iso: { 127: 126.904} }, - // JSDraw.Pro - - isElectronAcceptor: function (e) { - var an = e.a; - return an >= 6 && an <= 9 || // Element.C && atomicno <= Element.F || - an >= 15 && an <= 17 || // atomicno > Element.P && atomicno <= Element.Cl || - an >= 33 && an <= 35 || // atomicno >= Element.As && atomicno <= Element.Br || - an >= 50 && an <= 53 || // atomicno >= Element.Sb && atomicno <= Element.I || - an >= 83 && an <= 85; // atomicno >= Element.Bi && atomicno <= Element.At; - }, - - showQueryAtoms: function (parent, f) { - var buttons = parent.getElementsByTagName("button"); - for (var i = 0; i < buttons.length; ++i) { - if (buttons[i].getAttribute("r") == "1") - buttons[i].style.display = f ? "" : "none"; - } - }, - - makeAtomList: function (list, f) { - if (list == null || list == "") - return null; - - var atoms = []; - var ss = list.split(","); - for (var i = 0; i < ss.length; ++i) { - var s = scilligence.Utils.trim(ss[i]); - if (this.isValidAtomList(s)) - atoms.push(s); - } - - return atoms.length == 0 ? null : { atoms: atoms, t: !scilligence.Utils.isFalse(f) }; - }, - - isMetal: function (atomicno) { - return false; - }, - - isValidAtomList: function (s) { - var e = JSDraw2.PT[s]; - return e != null && e.a > 0 || s == "*" || s == "A" || s == "a" || s == "c" || this.isArAtom(s.toUpperCase()); - }, - - isArAtom: function (s) { - return s == "C" || s == "N" || s == "S" || s == "P" || s == "O"; - } -}; - -/***/ }), - -/***/ "./src/Skin.js": -/*!*********************!*\ - !*** ./src/Skin.js ***! - \*********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Skin = { - jsdraw: null, - jssdf: null, - dialog: null, - - reset: function () { - this.jsdraw = { bkcolor: "#e1e1e1", bkimg: scil.Utils.imgSrc("img/hbg.gif"), toolbarbk: scil.Utils.imgSrc("img/toolbarbk.jpg"), hovercolor: "#eef", btnselcolor: "#bbf" }; - this.jssdf = { bgcolor: "#eee", headerimg: scil.Utils.imgSrc("img/header-bg.gif"), headercolor: "#eee", rowcolor: "#f96", oddcolor: "", evencolor: "#eee", border: "solid 1px #ccc" }; - scilligence.apply(this.jssdf, this.jsdraw); - this.dialog = { bkimg: scil.Utils.imgSrc("img/dlgheader.gif"), bkcolor: "#6badf6", border: "1px solid #4f6d81" }; - }, - - red: function () { - this.jsdraw = { bkcolor: "#ECCDDC", bkimg: scil.Utils.imgSrc("img/hbg-red.gif"), toolbarbk: scil.Utils.imgSrc("img/toolbarbk-red.jpg"), hovercolor: "#fCdDeC" }; - this.jssdf = { bgcolor: "#F8CEE8", headerimg: scil.Utils.imgSrc("img/header-bgred.gif"), headercolor: "#F8CEE8", rowcolor: "#FfeEf8", oddcolor: "", evencolor: "#eee", border: "solid 1px #ccc" }; - scilligence.apply(this.jssdf, this.jsdraw); - this.dialog = { bkimg: scil.Utils.imgSrc("img/dlgheader-red.gif"), bkcolor: "#E7A6DF", border: "1px solid #4f6d81" }; - }, - - green: function () { - this.jsdraw = { bkcolor: "#C7EEDF", bkimg: scil.Utils.imgSrc("img/hbg-green.gif"), toolbarbk: scil.Utils.imgSrc("img/toolbarbk-green.jpg"), hovercolor: "#d7fEeF" }; - this.jssdf = { bgcolor: "#CCF8E8", headerimg: scil.Utils.imgSrc("img/header-bggreen.gif"), headercolor: "#CCF8E8", rowcolor: "#dCFff8", oddcolor: "", evencolor: "#eee", border: "solid 1px #ccc" }; - scilligence.apply(this.jssdf, this.jsdraw); - this.dialog = { bkimg: scil.Utils.imgSrc("img/dlgheader-green.gif"), bkcolor: "#95D09C", border: "1px solid #4f6d81" }; - }, - - blue: function () { - this.jsdraw = { bkcolor: "#CDD0EC", bkimg: scil.Utils.imgSrc("img/hbg-blue.gif"), toolbarbk: scil.Utils.imgSrc("img/toolbarbk-blue.jpg"), hovercolor: "#dDe0fC" }; - this.jssdf = { bgcolor: "#DCDFF6", headerimg: scil.Utils.imgSrc("img/header-bgblue.gif"), headercolor: "#DCDFF6", rowcolor: "#eCeFFf", oddcolor: "", evencolor: "#eee", border: "solid 1px #ccc" }; - scilligence.apply(this.jssdf, this.jsdraw); - this.dialog = { bkimg: scil.Utils.imgSrc("img/dlgheader-blue.gif"), bkcolor: "#8BB6CC", border: "1px solid #4f6d81" }; - }, - - yellow: function () { - this.jsdraw = { bkcolor: "#ECECCD", bkimg: scil.Utils.imgSrc("img/hbg-yellow.gif"), toolbarbk: scil.Utils.imgSrc("img/toolbarbk-yellow.jpg"), hovercolor: "#fCfCdD" }; - this.jssdf = { bgcolor: "#F4F4E1", headerimg: scil.Utils.imgSrc("img/header-bgyellow.gif"), headercolor: "#F4F4E1", rowcolor: "#F4F4B8", oddcolor: "", evencolor: "#eee", border: "solid 1px #ccc" }; - scilligence.apply(this.jssdf, this.jsdraw); - this.dialog = { bkimg: scil.Utils.imgSrc("img/dlgheader-yellow.gif"), bkcolor: "#C8BA8F", border: "1px solid #4f6d81" }; - }, - - menu: { highlightcolor: "#c60", color: "blue" }, - form: { - labelstyles: { backgroundColor: "#eef", border: "solid 1px #dde", textAlign: "left", verticalAlign: "top", whiteSpace: "nowrap" }, - fieldcolor: "blue", - rowselectcolor: "#aaf" - } -}; - -JSDraw2.Skin.reset(); - - -/***/ }), - -/***/ "./src/Stack.js": -/*!**********************!*\ - !*** ./src/Stack.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** -* Stack class - define Stack data structure -* @class scilligence.JSDraw2.Stack -*
-* Example:
-*    var stack = JSDraw2.Stack(50);
-*    stack.push("Hydrogen");
-*    stack.push("Exygen");
-*
-*    var item = stack.pop();
-* 
-*/ -JSDraw2.Stack = scilligence.extend(scilligence._base, { - /** - * @constructor Stack - * @param {number} capacity - */ - constructor: function (capacity) { - this._items = []; - this._capacity = capacity; - }, - - /** - * Get an item by its index - * @function item - * @param {number} i - the index - * @returns the item - */ - item: function (i) { - return this._items[i]; - }, - - /** - * Clear all items - * @returns null - */ - clear: function () { - this._items = []; - }, - - /** - * Get item count - * @function length - * @returns a number - */ - length: function () { - return this._items.length; - }, - - isEmpty: function () { - return this._items.length == 0; - }, - - /** - * Push a new item at the end of stack - * @function push - * @param {object} i - the item - * @returns null - */ - push: function (i) { - if (this._items.length > this._capacity) - this._items.splice(0, 1); - this._items.push(i); - }, - - /** - * Pop out the top item in the stack - * @function pop - * @returns the item - */ - pop: function () { - if (this._items.length == 0) - return null; - return this._items.pop(); - }, - - popHead: function () { - if (this._items.length == 0) - return null; - var i = this._items[0]; - this._items.splice(0, 1); - return i; - } -}); - - - -scil.Deque = scil.apply(scil._base, { - constructor: function () { - this.items = []; - }, - - pushRange: function (list) { - if (list == null) - return; - - for (var i = 0; i < list.length; ++i) - this.push(list[i]); - }, - - push: function (n) { - this.items.push(n); - }, - - pop: function () { - if (this.items.length == 0) - return null; - - var r = this.items[0]; - this.items.splice(0, 1); - return r; - }, - - length: function () { - return this.items.length; - }, - - clear: function () { - this.items = []; - } -}); - -/***/ }), - -/***/ "./src/SuperAtoms.js": -/*!***************************!*\ - !*** ./src/SuperAtoms.js ***! - \***************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.SuperAtoms = { - sdf: "\nMolEngine02241412152D\n\n 6 6 0 0 0 0 999 V2000\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 3 2 0 0 0 0\nM END\n> \nBenzene\n\n$$$$\n\nMolEngine02241412152D\n\n 6 6 0 0 0 0 999 V2000\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM END\n> \nHexane\n\n$$$$\n\nMolEngine02241412152D\n\n 5 5 0 0 0 0 999 V2000\n 0.0000 0.4821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4836 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4006 1.2621 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4836 2.5242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.0421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 1 1 0 0 0 0\nM END\n> \nPentane\n\n$$$$\n\nMolEngine02241412152D\n\n 3 3 0 0 0 0 999 V2000\n 0.7800 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 2 3 1 0 0 0 0\nM END\n> \nPropane\n\n$$$$\n\nMolEngine02241412152D\n\n 4 4 0 0 0 0 999 V2000\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 1 1 0 0 0 0\nM END\n> \nButane\n\n$$$$\n\nMolEngine02241412152D\n\n 7 7 0 0 0 0 999 V2000\n 0.0000 0.9727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2196 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7405 0.3471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4174 1.7527 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7405 3.1581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2196 3.5054 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.5327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 1 1 0 0 0 0\nM END\n> \nHeptane\n\n$$$$\n\nMolEngine02241412152D\n\n 8 8 0 0 0 0 999 V2000\n 0.0000 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.1031 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6631 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7660 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7660 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6631 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.1031 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 1 1 0 0 0 0\nM END\n> \nOctane\n\n$$$$\n", - - dict: null, - reversible: {}, - AminoAcids: {}, - DNAs: {}, - RNAs: {}, - templates: {}, - nterminals: {}, - cterminals: {}, - customtemplates: {}, - - listFunctionalGroups: function (parent) { - this.read(); - var cols = [{ key: 'name', caption: 'Name', width: 200 }, { key: 'molfile', type: "structure", caption: 'Structure'}]; - var jss = new JSDraw2.Table(null, { columns: cols, toolbar: ["search"] }, parent); - - var list = []; - for (var name in this.dict) - list.push({ name: name, molfile: this.dict[name] == null ? null : this.dict[name].getMolfile() }); - jss.setJson({ rows: list }); - - }, - - filter: function (q, n) { - if (q == null || q == "") - return null; - - var ret = []; - q = q.toLowerCase(); - var len = q.length; - for (var k in this.dict) { - if (k.length >= len && k.substr(0, len).toLowerCase() == q) { - ret.push(k); - if (ret.length >= n) - break; - } - } - return ret; - }, - - get: function (name) { - this.read(); - var m = this.dict[name]; - if (m == null) - m = this.nterminals[name]; - if (m == null) - m = this.cterminals[name]; - return m == null ? null : m.clone(); - }, - - getDNA: function (name) { - this.read(); - return this.DNAs[name]; - }, - - getRNA: function (name) { - this.read(); - return this.RNAs[name]; - }, - - getAA: function (name) { - this.read(); - return this.AminoAcids[name]; - }, - - getTemplate: function (name) { - this.read(); - return this.templates[name]; - }, - - hasCustomTemplates: function (name) { - this.read(); - for (var k in this.customtemplates) - return true; - return false; - }, - - getCustomTemplate: function (name) { - this.read(); - return this.customtemplates[name]; - }, - - // COOH --> HOOC, CO2H --> HO2C, n-But --> n-But, Boc --> Boc - reverseLabel: function (s) { - this.read(); - if (this.get(s) != null) - return this.reverseLabel2(s); - - var c = s.substr(0, 1); - var s1 = s.substr(1); - if ((c == "O" || c == "S") && this.get(s1) != null) - return this.reverseLabel2(s1) + c; - - return s; - }, - - reverseLabel2: function (s) { - if (this.reversible[s] == null) - return s; - - var ret = ""; - for (var i = s.length - 1; i >= 0; --i) { - var n = 1; - for (var j = i; j >= 0; --j) { - var c = s.charCodeAt(j); - if (c >= 65 && c <= 90) - break; - else - ++n; - } - i -= n - 1; - ret += s.substr(i, n); - } - return ret; - }, - - guessOne: function (name) { - this.read(); - - name = name.toLowerCase(); - for (var k in this.dict) { - if (k.toLowerCase() == name) - return k; - } - - return null; - }, - - read: function () { - if (this.dict != null) - return; - this.dict = {}; - this.addSdf(this.sdf); - - if (JSDraw2.defaultoptions != null) - this.addSdf(JSDraw2.defaultoptions.abbreviations); - this.addSdf(JSDraw2.abbreviations); - - if (this.onAfterRead != null) - this.onAfterRead(); - }, - - addSdf: function (sdf) { - if (sdf == null || sdf == "") - return; - - var unknown = 0; - var ss = sdf.split("$$$$"); - for (var k = 0; k < ss.length; ++k) { - var r = JSDraw2.Table.readSdfRecord(ss[k], true); - if (r == null) - break; - - var template = r.props["T"]; - var customtemplate = r.props["CT"]; - var strname = r.props["Name"]; - var m = new JSDraw2.Mol(); - m.setMolfile(r.molfile); - //this.normalize(m); - if (template != null) { - this.templates[template] = m; - } - else if (customtemplate != null) { - this.customtemplates[customtemplate] = m; - } - } - }, - - _getAttachAtoms: function (m) { - var list = []; - if (m != null) { - for (var i = 0; i < m.atoms.length; ++i) { - var a = m.atoms[i]; - for (var k = 0; k < a.attachpoints.length; ++k) - list[a.attachpoints[k] - 1] = { apo: a.attachpoints[k], a: a }; - } - } - return list; - }, - - _alignMol: function (dest, a, src, a0, len) { - if (len > 0) - src.setBondLength(len); - - var bonds = dest.getNeighborBonds(a); - if (bonds.length == 0) { - src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y); - } - else if (bonds.length == 1) { - // offset to reference atom - src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y); - - b = bonds[0]; - // rotate to the reversed direction - var deg = b.otherAtom(a).p.angleTo(a.p); - var bs = src.getNeighborBonds(a0); - if (bs.length == 1) - src.rotate(a.p, deg + 60 - a0.p.angleTo(bs[0].otherAtom(a0).p)); - else if (bs.length == 2) - src.rotate(a.p, deg + 180 - a0.p.middleAngle(bs[0].otherAtom(a0).p, bs[1].otherAtom(a0).p)); - } - else if (bonds.length == 2) { - // offset to reference atom - src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y); - - // rotate to the reversed direction - var deg = a.p.middleAngle(bonds[0].otherAtom(a).p, bonds[1].otherAtom(a).p); - var bs = src.getNeighborBonds(a0); - if (bs.length == 1) - src.rotate(a.p, deg + 60 - a0.p.angleTo(bs[0].otherAtom(a0).p)); - else if (bs.length == 2) - src.rotate(a.p, deg + 180 - a0.p.middleAngle(bs[0].otherAtom(a0).p, bs[1].otherAtom(a0).p)); - } - else { - return false; - } - - return true; - } -}; - - - -/***/ }), - -/***/ "./src/Text.js": -/*!*********************!*\ - !*** ./src/Text.js ***! - \*********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// - - - -/** -* Text class -* @class scilligence.JSDraw2.Text -*/ -JSDraw2.Text = scilligence.extend(scilligence._base, { - /** - @property {Rect} _rect Position - */ - /** - @property {string} text Text value - */ - /** - @property {string} color Display Color - */ - /** - @property {bool} selected Selecting Flag - */ - - /** - * @constructor Text - * @param {Rect} r - the position - * @param {string} text - text value - */ - constructor: function (r, text) { - this.T = "TEXT"; - this._rect = r; - this.text = text; - this.color = null; - this.fontsize = 1.0; - this.selected = false; - this.fieldtype = null; - this.readonly = false; - this.anchors = []; - this.italic = null; - }, - - clone: function () { - var a = new JSDraw2.Text(this._rect.clone(), this.text); - a.id = this.id; - a.color = this.color; - a.fieldtype = this.fieldtype; - a.readonly = this.readonly; - a.fontsize = this.fontsize; - a.italic = this.italic; - return a; - }, - - allAnchorsIn: function (m) { - if (this.anchors.length == 0) - return false; - for (var i = 0; i < this.anchors.length; ++i) { - var a = this.anchors[i]; - if (JSDraw2.Atom.cast(a) != null && m.atoms.indexOf(a) < 0 || - JSDraw2.Bond.cast(a) != null && m.bonds.indexOf(a) < 0 || - JSDraw2.Bracket.cast(a) != null && m.graphics.indexOf(a) < 0) - return false; - } - return true; - }, - - attach: function (obj) { - // anchors can contain one bracket, or any number of atoms and/or bonds - if (JSDraw2.Bracket.cast(obj) != null) { - this.anchors = [obj]; - return true; - } - - if (JSDraw2.Atom.cast(obj) == null && JSDraw2.Bond.cast(obj) == null) - return false; - - if (this.anchors.length == 1 && JSDraw2.Bracket.cast(this.anchors[0]) != null) - this.objects = []; - - for (var i = 0; i < this.anchors.length; ++i) { - if (this.anchors[i] == obj) { - this.anchors.splice(i, 1); - return true; - } - } - this.anchors.push(obj); - return true; - }, - - html: function (scale) { - var ss = ""; - for (var i = 0; i < this.anchors.length; ++i) - ss += (ss == "" ? "" : ",") + this.anchors[i].id; - var s = " 0) - s += " fontsize='" + this.fontsize.toFixed(2) + "'"; - if (this.readonly) - s += " v='1'"; - if (this.italic) - s += " italic='1'"; - if (this.fieldtype != null && this.fieldtype != "") - s += " fieldtype='" + scil.Utils.escXmlValue(this.fieldtype) + "'"; - if (ss != "") - s += " anchors='" + ss + "'"; - s += ">" + scilligence.Utils.escXmlValue(this.text) + ""; - return s; - }, - - readHtml: function (e, map) { - var r = JSDraw2.Rect.fromString(e.getAttribute("p")); - var s = e.getAttribute("s"); - if (s == null) - s = e.text || e.textContent; - if (r == null || scil.Utils.isNullOrEmpty(s)) - return false; - - // I#6220: p="27.495 -5.105 570.397 0.901" - if (r.width > r.height * 100) - r.width = r.height * 5.0; - if (r.height > r.height * 100) - r.height = r.width / 5.0; - - this._rect = r; - this.text = s; - this.readonly = scil.Utils.isTrue(e.getAttribute("v")); - this.italic = scil.Utils.isTrue(e.getAttribute("italic")); - this.dummy = scil.Utils.isTrue(e.getAttribute("dum")); - this.fieldtype = e.getAttribute("fieldtype"); - - var fontsize = parseFloat(e.getAttribute("fontsize")); - if (fontsize > 0) - this.fontsize = fontsize; - - var s2 = e.getAttribute("anchors"); - if (s2 != null && s2 != "") { - var anchors = []; - var ss = s2.split(','); - for (var j = 0; j < ss.length; ++j) { - var a = map[parseInt(ss[j])]; - if (a != null && (JSDraw2.Atom.cast(a) != null || JSDraw2.Bond.cast(a) != null || JSDraw2.Bracket.cast(a) != null)) - anchors.push(a); - } - this.anchors = anchors; - } - return true; - }, - - flipY: function (y) { - }, - - flipX: function (x) { - }, - - scale: function (s, origin) { - if (this._rect != null) - this._rect.scale(s, origin); - }, - - offset: function (dx, dy) { - if (this._rect != null) - this._rect.offset(dx, dy); - }, - - rect: function () { - return this._rect == null ? null : this._rect.clone(); - }, - - toggle: function (p, tor) { - return this._rect != null && this._rect.contains(p); - }, - - removeObject: function (obj) { - for (var i = 0; i < this.anchors.length; ++i) { - if (this.anchors[i] == obj) { - this.anchors.splice(i, 1); - break; - } - } - }, - - drawCur: function (surface, r, color, m) { - var p = this._rect.center(); - surface.createCircle({ cx: p.x, cy: p.y, r: r }).setFill(color); - - if (m != null) { - for (var i = 0; i < this.anchors.length; ++i) - this.anchors[i].drawCur(surface, r * 0.75, color); - } - }, - - draw: function (surface, linewidth, m, fontsize) { - var s = this.text; - if (s == null) - return; - - var r = this._rect; - var fs = fontsize * (this.fontsize > 0 ? this.fontsize : 1.0); - var color = this.color == null || this.color.length == 0 ? "black" : this.color; - var t = JSDraw2.Drawer.drawText(surface, new JSDraw2.Point(r.left, r.top), s, color, fs, null, this.italic); - r.width = t == null ? 0 : t.getTextWidth(); - r.height = fs + 4; - - //var ss = s.match(/[ ]{0,}[a-z|0-9|*|$|@|?|!][ ]{0,}[=]/gi); - //if (ss != null) { - // var c = ss[0].substr(0, ss[0].indexOf('=')); - // c = scilligence.Utils.trim(c); - // for (var i = 0; i < this.anchors.length; ++i) { - // var b = JSDraw2.Bond.cast(this.anchors[i]); - // if (b != null) - // JSDraw2.Drawer.drawLabel(surface, b.center(), c, color, fontsize * 0.85); - // } - //} - }, - - drawSelect: function (lasso) { - lasso.draw(this, this._rect.fourPoints()); - } -}); - -JSDraw2.Text.cast = function (a) { - return a != null && a.T == 'TEXT' ? a : null; -}; - -/***/ }), - -/***/ "./src/Toolbar.js": -/*!************************!*\ - !*** ./src/Toolbar.js ***! - \************************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -JSDraw2.Toolbar = scil.extend(scil._base, { - constructor: function (editor) { - this.toolbar = null; - this.editor = editor; - this.options = editor.options; - this.toptoolbarTbody = null; - this.BORDERSTYLE = "solid 1px #ccc"; - this.toolbarbkcolor = "#fcfcfc"; - }, - - destroy: function () { - }, - - getButtons: function () { - return this.toolbar.getElementsByTagName("img"); - }, - - show: function (f) { - this.toolbarrow.style.display = f ? "" : "none"; - }, - - createToolbars: function (div) { - var elems = ["H", "C", "N", "O", "S", "P", "F", "Cl", "Br", "..."]; - if (this.options.query) - elems.push("●"); - - var style = { border: this.BORDERSTYLE, background: JSDraw2.Skin.jsdraw.bkcolor }; - - var me = this.editor; - var mainbody = scil.Utils.createTable(null, 0, 0, style); - this.toolbar = mainbody; - dojo.connect(mainbody.parentNode, "onclick", function (e) { me.onSelBtn(e == null ? window.event : e); e.preventDefault(); }); - scil.Utils.unselectable(mainbody.parentNode); - - var background = JSDraw2.Skin.jsdraw.bkcolor; - if (this.options.skin == "si") - background += " url(" + JSDraw2.Skin.jsdraw.toolbarbk + ") repeat-x "; - else if (JSDraw2.Skin.jsdraw.bkimg != null) - background += " url(" + JSDraw2.Skin.jsdraw.bkimg + ") repeat-x "; - var tr = scilligence.Utils.createElement(mainbody, "tr", null, { background: background }); - this.toolbarrow = tr; - - var s = scilligence.Utils.imgTag("jsdraw.gif", null, "title='" + this.res("About JSDraw") + "' style='width:" + this.options.btnsize + "px;height:" + this.options.btnsize + "px;' cmd='jsdraw'"); - if (!this.isSkinW8()) - scilligence.Utils.createElement(tr, "td", s, { paddingLeft: "3px" }); - - var tbody = scilligence.Utils.createTable(scilligence.Utils.createElement(tr, "td"), 0, 0, { marginTop: (this.options.skin == "si" ? "8px" : "2px"), marginBottom: "1px" }); - if (scilligence.Utils.isTouch && !scilligence.Utils.isIE) - dojo.connect(tbody.parentNode, "ontouchmove", function (e) { e.preventDefault(); }); - if (this.isSkinW8()) { - tbody.parentNode.align = this.options.toolbaralign == null ? 'center' : this.options.toolbaralign; - if (this.options.toolbarleftmargin != null) - tbody.parentNode.style.marginLeft = this.options.toolbarleftmargin; - } - this.toptoolbarTbody = tbody; - this.recreateTopToolbar(); - - tr = scilligence.Utils.createElement(mainbody, 'tr'); - if (!this.isSkinW8()) { - td = scilligence.Utils.createElement(tr, 'td', null, { verticalAlign: "top", backgroundPosition: "left" }); - tbody = scilligence.Utils.createTable(td, 1, null, { color: "#000" }); - var style = { width: this.options.btnsize + "px", height: this.options.btnsize + "px", fontWeight: "bold", cursor: 'default', textAlign: 'center', verticalAlign: 'middle', padding: "2px" }; - if (this.options.scale != 1) - style.fontSize = (this.options.scale * 100) + "%"; - for (var i = 0; i < elems.length; ++i) { - var r = scilligence.Utils.createElement(tbody, 'tr'); - var d = scilligence.Utils.createElement(r, 'td', elems[i], style, { cmd: elems[i] }); - if (elems[i] == "...") - d.setAttribute('title', this.res("Element Periodic Table")); - else if (elems[i] == "●") - d.setAttribute('title', this.res("Atom Properties")); - this.editor.connectHandlers.push(dojo.connect(d, "onmouseover", function () { this.style.backgroundColor = JSDraw2.Skin.jsdraw.hovercolor; })); - this.editor.connectHandlers.push(dojo.connect(d, "onmouseout", function () { this.style.backgroundColor = ''; })); - } - } - td = scilligence.Utils.createElement(tr, "td", null, { borderTop: this.BORDERSTYLE, borderLeft: this.BORDERSTYLE }); - if (this.isSkinW8()) { - td.colSpan = 2; - td.style.borderLeft = ""; - } - - div.parentNode.insertBefore(mainbody.parentNode, div); - td.appendChild(div); - div.style.border = ""; - - this.editor.maintable = mainbody.parentNode; - }, - - _makePluginFun: function (fn) { - var me = this.editor; - return function (e) { - fn(me); - (e.srcElement || e.target).setAttribute("jsdrawactivate", "false"); - e.preventDefault(); - } - }, - - recreateTopToolbar: function () { - var width = this.editor.dimension.x; - var tbody = this.toptoolbarTbody; - var buttons = this.createButtons(width); - var jsdtb = "__jsd_tb_" + this.editor.id; - var me = this; - - scilligence.Utils.removeAll(tbody); - - var tr = scilligence.Utils.createElement(tbody, "tr"); - var tr2 = null; - if (this.isSkinW8()) - tr2 = scilligence.Utils.createElement(tbody, "tr", null, { height: "6px", fontsize: "1px" }); - - for (var i = 0; i < buttons.length; ++i) { - var b = buttons[i]; - this.createButton(tr, tr2, b, jsdtb); - } - - var plugins = JSDraw2.defaultoptions.plugins; - if (this.options.plugins != null) { - if (plugins == null) - plugins = this.options.plugins; - else - plugins = plugins.concat(this.options.plugins); - } - if (plugins != null) { - var w = Math.round(2 * this.options.btnsize / 20); - var nleft = 0; - var nright = 0; - for (var i = 0; i < plugins.length; ++i) { - var plugin = plugins[i]; - if (plugin.location == "left") { - if (nleft++ == 0) { - td = scilligence.Utils.createElement(null, "td", "separator"); - tr.insertBefore(td, tr.firstChild); - tr2.insertBefore(scilligence.Utils.createElement(null, "td"), tr2.firstChild); - } - td = scilligence.Utils.createElement(null, "td"); - tr.insertBefore(td, tr.firstChild); - tr2.insertBefore(scilligence.Utils.createElement(null, "td"), tr2.firstChild); - } - else { - if (nleft++ == 0) { - td = scilligence.Utils.createElement(tr, "td", "separator"); - scilligence.Utils.createElement(tr2, "td"); - } - td = scilligence.Utils.createElement(tr, "td"); - scilligence.Utils.createElement(tr2, "td"); - } - this.createBtnImg(td, plugins[i].iconurl, null, null, plugins[i].tooltips, null, plugins[i].width, plugins[i].label); - this.editor.connectHandlers.push(dojo.connect(td, "onclick", this._makePluginFun(plugins[i].onclick))); - } - } - }, - - createButtons: function (width) { - var buttons = []; - - var bonds = [{ c: "triple", t: "Triple bond", label: "Triple" }, - { c: "up", t: "Wedge bond", label: "Up" }, { c: "down", t: "Hash bond", label: "Down" }, { c: "wiggly", t: "Wiggle bond", label: "Wiggle" }, - { c: "delocalized", t: "Delocalized bond", label: "Delocalized" }, { c: "either", t: "Either double bond", label: "Either" }, - { c: "boldhash", t: "Hashed bond", label: "Hashed" }, { c: "bold", t: "Bold bond", label: "Bold" }, - { c: "dummy", t: "Ionic bond", label: "Ionic" }, { c: "unknown", t: "Dotted bond", label: "Dotted"}]; - if (this.options.query) - bonds.concat([{ c: "singledouble", t: "Single or Double", label: "Single" }, { c: "singlearomatic", t: "Single or Aromatic" }, { c: "doublearomatic", t: "Double or Aromatic"}]); - - var smallscreen = this.isSkinW8() && width <= 400; - - var filesubmenus = []; - if (this.options.showfilemenu != false) { - filesubmenus.push({ c: "save", t: "Export", label: "Export" }); - filesubmenus.push({ c: "open", t: "Import", label: "Import" }); - } - - var selecttools = [{ c: "lasso", t: "Lasso Selection", label: "Lasso" }, - { c: "selfrag", t: "Select Fragment", label: "Fragment" }, { c: "selectall", t: "Select All", label: "All"}]; - - var addabout = false; - if (this.options.tlcplate) { - buttons.push({ c: "new", t: "New", label: "New", sub: filesubmenus }); - buttons.push({ c: "tlctemplate", t: "Template", label: "Template" }); - buttons.push({ c: "|" }); - buttons.push({ - c: "spot-circle", t: "Circle Spot", label: "Circle", sub: [ - { c: "spot-hellipse", t: "Horizontal Ellipse Spot", label: "Ellipse" }, - { c: "spot-vellipse", t: "Vertical Ellipse Spot", label: "Ellipse" }, - { c: "spot-halfellipseup", t: "Half-Ellipse Spot", label: "Ellipse" }, - { c: "spot-halfellipsedown", t: "Half-Ellipse Spot", label: "Ellipse" }, - { c: "spot-blowingup", t: "Blowing-up Spot", label: "Blowing" }, - { c: "spot-blowingdown", t: "Blowing-down Spot", label: "Blowing" }, - { c: "spot-crescentup", t: "Crescent Spot", label: "Crescent" }, - { c: "spot-crescentdown", t: "Crescent Spot", label: "Crescent" } - ] - }); - buttons.push({ c: "eraser", t: "Eraser", label: "Eraser" }); - buttons.push({ c: "|" }); - buttons.push({ c: "tlc", t: "TLC Plate", label: "TLC" }); - buttons.push({ c: "tlcnumber", t: "Number Plate", label: "Number" }); - buttons.push({ c: "electrophoresis", t: "Electrophoresis Gel Plate", label: "Electrophoresis" }); - buttons.push({ c: "|" }); - buttons.push({ c: "text", t: "Text/Atom Label", label: "Text" }); - buttons.push({ c: "|" }); - buttons.push({ c: "undo", t: "Undo", label: "Undo" }); - buttons.push({ c: "redo", t: "Redo", label: "Redo" }); - buttons.push({ c: "|" }); - buttons.push({ c: "center", t: "Move to center", label: "Center" }); - buttons.push({ c: "zoomin", t: "Zoom in", label: "Zoom" }); - buttons.push({ c: "zoomout", t: "Zoom out", label: "Zoom" }); - - addabout = true; - } - else if (this.options.workflow) { - buttons.push({ c: "new", t: "New", label: "New", sub: filesubmenus }); - buttons.push({ c: "|" }); - buttons.push({ c: "select", t: "Box Selection", label: "Box", sub: selecttools }); - buttons.push({ c: "moveview", t: "Move/View", label: "Move" }); - buttons.push({ c: "zoombox", t: "Zoom Box", label: "Zoom" }); - buttons.push({ c: "|" }); - buttons.push({ c: "rectangle", t: "Rectangle", label: "Rectangle" }); - buttons.push({ c: "diamond", t: "Diamond", label: "Diamond" }); - buttons.push({ c: "ellipse", t: "Ellipse", label: "Ellipse" }); - buttons.push({ c: "dreversed", t: "D Reversed", label: "D Reversed" }); - buttons.push({ c: "dshape", t: "D Shapre", label: "D Shapre" }); - buttons.push({ c: "|" }); - buttons.push({ c: "arrow", t: "Reaction arrow", label: "Reaction" }); - buttons.push({ c: "text", t: "Text/Atom Label", label: "Text" }); - buttons.push({ c: "|" }); - buttons.push({ c: "eraser", t: "Eraser", label: "Eraser" }); - buttons.push({ c: "|" }); - buttons.push({ c: "undo", t: "Undo", label: "Undo" }); - buttons.push({ c: "redo", t: "Redo", label: "Redo" }); - buttons.push({ c: "|" }); - buttons.push({ c: "center", t: "Move to center", label: "Center" }); - buttons.push({ c: "zoomin", t: "Zoom in", label: "Zoom" }); - buttons.push({ c: "zoomout", t: "Zoom out", label: "Zoom" }); - - addabout = true; - } - else if (this.options.helmtoolbar) { - org.helm.webeditor.Interface.getHelmToolbar(buttons, filesubmenus, selecttools, this.options); - if (this.options.showabout != false) - addabout = true; - } - else { - if (this.options.pastechemdraw) { - filesubmenus.push({ c: "pastechemdraw", t: "Paste ChemDraw, ISIS/Draw...", label: "Paste" }); - filesubmenus.push({ c: "copychemdraw", t: "Copy ChemDraw, ISIS/Draw, Word...", label: "Copy" }); - } - - if (this.isSkinW8()) { - filesubmenus.push({ c: "about", t: "About JSDraw", label: "About" }); - buttons.push({ c: "new", t: "New", label: "New", sub: filesubmenus }); - } - else { - buttons.push({ c: "new", t: "New", sub: filesubmenus, label: "New" }); - } - - if (scilligence.Utils.serviceAvailable() && JSDraw2.Security.kEdition != "Lite") - buttons.push({ c: "n2s", t: "Name to Structure", label: "N2S", sub: [{ c: "cleanup", t: "Clean up", label: "Clean"}] }); - if (buttons.length > 0) - buttons.push({ c: "|" }); - - if (!this.options.appmode) { - selecttools.push({ c: "copy", t: "Copy", label: "Copy" }); - selecttools.push({ c: "cut", t: "Cut", label: "Cut" }); - selecttools.push({ c: "paste", t: "Paste", label: "Paste" }); - } - - buttons.push({ c: "select", t: "Box Selection", label: "Box", sub: selecttools }); - buttons.push({ c: "center", t: "Move to center", label: "Center", sub: smallscreen ? null : [{ c: "zoomin", t: "Zoom in", label: "Zoom" }, { c: "zoomout", t: "Zoom out", label: "Zoom" }, { c: "rotate", t: "Rotate", label: "Rotate" }, { c: "fliph", t: "Flip Horizontal", label: "Flip" }, { c: "flipv", t: "Flip Vertical", label: "Flip"}] }); - buttons.push({ c: "moveview", t: "Move/View", label: "Move", sub: [{ c: "zoombox", t: "Zoom Box", label: "Zoom"}] }); - buttons.push({ c: "|" }); - - buttons.push({ c: "eraser", t: "Eraser", label: "Eraser" }); - if (!this.options.appmode) - buttons.push({ c: "undo", t: "Undo", label: "Undo", sub: [{ c: "redo", t: "Redo", label: "Redo"}] }); - buttons.push({ c: "|" }); - buttons.push({ c: "single", t: "Single bond", label: "Single" }); - buttons.push({ c: "double", t: "Double bond", label: "Double", sub: bonds }); - buttons.push({ c: "chain", t: "Chain Tool", label: "Chain" }); - buttons.push({ c: "|" }); - - var i = 0; - var last = null; - JSDraw2.SuperAtoms.read(); - var templateicons = { benzene: 1, hexane: 1, pentane: 1, propane: 1, butane: 1, heptane: 1, octane: 1 }; - for (var k in JSDraw2.SuperAtoms.templates) { - ++i; - var name = k; - var c = templateicons[k.toLowerCase()] ? k.toLowerCase() : "template"; - if (i <= 3) { - last = { c: c, cmd: "template." + k, label: name, t: name }; - buttons.push(last); - } - else { - if (last.sub == null) - last.sub = []; - last.sub.push({ c: c, cmd: "template." + k, label: name, t: name }); - } - } - - if (JSDraw2.SuperAtoms.hasCustomTemplates() && this.options.showcustomtemplates != false) - last.sub.push({ c: "templates", cmd: "template.[custom]", label: "Templates", t: "Custom Templates" }); - - buttons.push({ c: "|" }); - if (this.isSkinW8()) { - var elements = [{ c: "e-H", t: "Element H", label: "Hydrogen" }, - { c: "e-O", t: "Element O", label: "Oxygen" }, { c: "e-N", t: "Element N", label: "Nitrogen" }, { c: "e-S", t: "Element S", label: "Sulfur" }, - { c: "e-P", t: "Element P", label: "Phosphorus" }, { c: "e-F", t: "Element F", label: "Fluorine" }, { c: "e-Cl", t: "Element Cl", label: "Chlorine" }, - { c: "e-Br", t: "Element Br", label: "Bromine" }, { c: "e-more", t: "Element Periodic Table", label: "P.T."}]; - buttons.push({ c: "e-C", t: "Element C", label: "Carbon", sub: elements }); - } - - if (JSDraw2.Security.kEdition != "Lite") { - buttons.push({ - c: "text", t: "Text/Atom Label", label: "Text", sub: smallscreen ? null : [{ c: "sgroup", t: "SGroup - Tag Atom/Bond/Bracket", label: "SGroup" }, - { c: "bracket", t: "Bracket", label: "Bracket" }, { c: "symbol", t: "Symbol", label: "Symbol"}] - }); - buttons.push({ - c: "rectangle", t: "Rectangle", label: "Rectangle", sub: [{ c: "diamond", t: "Diamond", label: "Diamond" }, { c: "ellipse", t: "Ellipse", label: "Ellipse" }, - { c: "dreversed", t: "D Reversed", label: "D Reversed" }, { c: "dshape", t: "D Shapre", label: "D Shapre" }, - { c: "curve", t: "Curve", label: "Curve" }, { c: "tlc", t: "TLC Plate", label: "TLC" }, { c: "tlctemplate", t: "Template", label: "Template" }, - { c: "electrophoresis", t: "Electrophoresis Gel Plate", label: "Electrophoresis" }, { c: "assaycurve", t: "Assay Curve", label: "Assay" }, { c: "spectrum", t: "Spectrum", label: "Spectrum"}] - }); - } - - buttons.push({ c: "chargep", t: "Increase charges", label: "Charge", sub: [{ c: "chargen", t: "Descrease charges", label: "Charge"}] }); - - if (this.options.rxn && JSDraw2.Security.kEdition != "Lite") { - buttons.push({ c: "|" }); - buttons.push({ - c: "arrow", t: "Reaction arrow", label: "Reaction", sub: [{ c: "plus", t: "Reaction Plus", label: "Plus" }, { c: "rxn", t: "Clean up reaction", label: "Clean" }, - { c: "copyprod", t: "Copy reactants to products", label: "R->P" }, { c: "rxnmap", t: "Map reaction", label: "Map" }, { c: "rxnmap2", t: "Clear reaction map", label: "Clear"}] - }); - } - if (this.options.biology && JSDraw2.Security.kEdition != "Lite") { - if (this.editor.helm != null) - org.helm.webeditor.Interface.addToolbar(buttons, null, null, this.options); - buttons.push({ c: "seq", t: "Peptide Sequence", label: "Peptide", sub: [{ c: "helix", t: "DNA Sequence", label: "DNA" }, { c: "rna", t: "RNA Sequence", label: "RNA" }, { c: "antibody", t: "Antibody", label: "Antibody" }, { c: "protein", t: "Protein", label: "Protein" }, { c: "gene", t: "Gene", label: "Gene"}] }); - } - - if (this.isSkinW8() && this.options.inktools && !smallscreen) { - buttons.push({ c: "|" }); - buttons.push({ c: "inkred", t: "Ink - Red", label: "Ink", sub: [{ c: "inkblue", t: "Ink - Blue", label: "Ink" }, { c: "inkgreen", t: "Ink - Green", label: "Ink" }, { c: "inkclear", t: "Clear Ink", label: "Clear1" }, { c: "inkclearall", t: "Clear All Inks", label: "Clear"}] }); - } - - if (JSDraw2.Security.kEdition != "Lite") { - if (this.options.sendquery) { - buttons.push({ c: "|" }); - var list = [{ c: "chemspider", t: "Search ChemSpider", label: "ChemSpider"}]; - if (JSDraw2.defaultoptions.reaxys != false) - list.push({ c: "reaxys", t: "Search Reaxys", label: "Reaxys" }); - buttons.push({ c: "pubchem", t: "Search PubChem", label: "PubChem", sub: list }); - } - } - - if (this.options.usechemdraw) - buttons.push({ c: "chemdraw", t: "ChemDraw Editor", label: "ChemDraw" }); - } - - if (JSDraw2.Fullscreen != null) { - if (this.options.exitfullscreen) { - buttons.push({ c: "|" }); - buttons.push({ c: "fullscreen2", t: "Regular Size", label: "Fullscreen" }); - } - else if (this.options.fullscreen) { - buttons.push({ c: "|" }); - buttons.push({ c: "fullscreen", t: "Fullscreen Size", label: "Fullscreen" }); - } - } - - if (addabout) { - buttons.push({ c: "|" }); - buttons.push({ c: "about", t: "About JSDraw", label: "About" }); - } - - if (this.isSkinW8()) - this.relayoutButtonsByWidth(buttons, width, this.options.plugins == null ? 0 : this.options.plugins.length); - return buttons; - }, - - relayoutButtonsByWidth: function (buttons, width, nplugins) { - var n = Math.round(width / (this.options.skin == "w8" ? 50 : 60)) - buttons.length - nplugins; - if (n < 0 && n < -8) { - for (var i = buttons.length - 1; i >= 0; --i) { - if (buttons[i].c == "|") - buttons.splice(i, 1); - } - n = Math.round(width / (this.options.skin == "w8" ? 50 : 60)) - buttons.length - nplugins; - } - if (n == 0) - return; - - if (n > 0) { - for (var i = 0; i < buttons.length; ++i) { - if (buttons[i].c == "ring5") { - var sub = buttons[i].sub; - for (var j = 0; j < n; ++j) { - buttons.splice(i + j + 1, 0, sub[0]); - sub.splice(0, 1); - buttons[i + j].sub = null; - if (sub.length == 0) - break; - else - buttons[i + j + 1].sub = sub; - } - break; - } - } - } - else if (n < 0) { - n = -n; - var ranks; - if (this.options.workflow) - ranks = ["zoomout", "zoombox", "redo", "zoomin", "eraser", "moveview"]; - else if (this.options.helmtoolbar) - ranks = ["zoombox", "zoomout", "zoomin", "redo", "eraser"]; - else - ranks = ["double", "chain", "pubchem", "pentane", "hexane", "zoombox", "moveview", "zoomout", "zoomin", "redo", "n2s", "eraser", "seq", "chemdraw", "chargep", "rectangle", "arrow", "text"]; - - for (var i = buttons.length - 1; i > 0; --i) { - if (width < 500 && buttons[i].c == "|") { - buttons.splice(i, 1); - continue; - } - var rank = scil.Utils.indexOf(ranks, buttons[i].c); - if (rank >= 0 && rank + 1 <= n) { - while (i > 0 && buttons[i - 1].c == "|") { - buttons.splice(i - 1, 1); - --i; - } - if (buttons[i - 1].sub == null) - buttons[i - 1].sub = []; - var sub = buttons[i - 1].sub; - if (this.options.skin == "si" && sub.length > 0) - sub.push("|"); - sub.push(buttons[i]); - var list = buttons[i].sub; - buttons[i].sub = null; - if (list != null) { - for (var k = 0; k < list.length; ++k) - sub.push(list[k]); - } - buttons.splice(i, 1); - } - } - } - }, - - res: function (s) { - return JSDraw2.Language.res(s); - }, - - isSkinW8: function () { - return this.options.skin == "w8" || this.options.skin == "si"; - }, - - setHoverable: function (e) { - this.editor.connectHandlers.push(dojo.connect(e, "onmouseover", function () { this.style.background = JSDraw2.Skin.jsdraw.hovercolor; })); - this.editor.connectHandlers.push(dojo.connect(e, "onmouseout", function () { this.style.background = this.getAttribute("pushed") == null ? "" : JSDraw2.Skin.jsdraw.btnselcolor; })); - }, - - exchangeButton: function (parent, td) { - if (this.options.skin == "si") { - //parent.innerHTML - //"
Pentane
" - //td.innerHTML - //"
Butane
" - var img1 = parent.childNodes[0]; - var txt1 = img1.nextSibling; - - var tds = td.childNodes[0].getElementsByTagName("td"); - var img2 = tds[0].childNodes[0]; - var txt2 = tds[1].childNodes[0]; - - var src = img1.src; - var subtitle = txt1.innerHTML; - var cmd = dojo.attr(parent, "cmd"); - var title = dojo.attr(parent, "title"); - - img1.src = img2.src; - txt1.innerHTML = txt2.innerHTML; - dojo.attr(parent, "cmd", dojo.attr(td, "cmd")); - dojo.attr(parent, "title", dojo.attr(td, "title")); - - img2.src = src; - txt2.innerHTML = subtitle; - dojo.attr(td, "cmd", cmd); - dojo.attr(td, "title", title); - - } - else { - var src = parent.src; - var cmd = dojo.attr(parent, "cmd"); - var title = dojo.attr(parent, "title"); - var subtitle = parent.nextSibling != null ? parent.nextSibling.innerHTML : null; - - parent.src = td.src; - dojo.attr(parent, "cmd", dojo.attr(td, "cmd")); - dojo.attr(parent, "title", dojo.attr(td, "title")); - if (td.nextSibling != null) - parent.nextSibling.innerHTML = td.nextSibling.innerHTML; - - td.src = src; - dojo.attr(td, "cmd", cmd); - dojo.attr(td, "title", title); - if (td.nextSibling != null) - td.nextSibling.innerHTML = subtitle; - } - }, - - createButton: function (tr, tr2, b, jsdtb) { - var td; - var img; - var w = Math.round(2 * this.options.btnsize / 20); - var tbid = jsdtb + "_" + b.c; - if (b.c == "|") { - td = scilligence.Utils.createElement(tr, "td", ""); - } - else { - td = scilligence.Utils.createElement(tr, "td"); - var src = null; - if (this.isSkinW8()) - src = "w8/" + b.c + ".png"; - else - src = "img/" + b.c + ".gif"; - img = this.createBtnImg(td, (b.img != null ? b.img : scil.Utils.imgSrc(src)), tbid, b.cmd != null ? b.cmd : b.c, this.res(b.t), null, null, this.res(b.label)); - } - - if (b.hidden) - td.style.display = "none"; - - if (b.sub == null) { - if (tr2 != null) - scilligence.Utils.createElement(tr2, "td"); - return td; - } - - var td1; - if (this.options.skin == "si") { - td1 = scil.Utils.createElement(img.parentNode.parentNode, "td", "▼", { fontSize: "10px", color: "gray", borderTop: "solid 1px #ccc", borderRight: "solid 1px #ccc", borderBottom: "solid 1px #ccc" }); - this.setHoverable(td1); - } - else { - if (tr2 == null) - td1 = scilligence.Utils.createElement(tr, "td", "▼", { fontSize: (this.options.btnsize / 2) + "px", verticalAlign: "bottom", color: "gray" }); - else - td1 = scilligence.Utils.createElement(tr2, "td", null, { height: "10px", background: scil.Utils.imgSrc("w8/handle.png", true) + " no-repeat center center" }); - } - - if (b.hidden) - td1.style.display = "none"; - - if (scilligence.Utils.isTouch) { - dojo.connect(td, "ontouchmove", function () { JSDraw2.Menu.open(tbid + "_sub"); }); - dojo.connect(td1, "onclick", function () { JSDraw2.Menu.open(tbid + "_sub"); }); - } - else { - if (window.navigator.msPointerEnabled) { - dojo.connect(td, "onMSPointerMove", function (e) { - if (e.buttons == 1) - JSDraw2.Menu.open(tbid + "_sub"); - }, false); - } - if (this.isSkinW8()) { - dojo.connect(td1, "onclick", function () { - JSDraw2.Menu.open(tbid + "_sub"); - }); - //if (!scilligence.Utils.isIE) - // dojo.connect(td, "onclick", function () { JSDraw2.Menu.close(); }); - td1.setAttribute("title", this.res("click to expand")); - dojo.connect(td1, "onmouseover", function (e) { (e.target || e.srcElement).style.backgroundImage = scil.Utils.imgSrc("w8/handle2.png", true); }); - dojo.connect(td1, "onmouseout", function (e) { (e.target || e.srcElement).style.backgroundImage = scil.Utils.imgSrc("w8/handle.png", true); }); - } - else { - dojo.connect(td1, "onmouseover", function () { JSDraw2.Menu.open(tbid + "_sub"); }); - dojo.connect(td1, "onmouseout", function () { JSDraw2.Menu.closetime(); }); - dojo.connect(td1, "onclick", function () { JSDraw2.Menu.close(); }); - } - } - - var tbody = scil.Utils.createTable(td, 0, 0, - { - display: "none", zIndex: 99999999, borderRadius: Math.round((this.options.skin == "si" ? 3 : 4) * this.options.btnsize / 40) + "px", - position: "absolute", backgroundColor: this.options.skin == "si" ? this.toolbarbkcolor : JSDraw2.Skin.jsdraw.bkcolor, border: this.BORDERSTYLE, padding: "2px" - }); - //if (this.options.skin == "w8" && !scilligence.Utils.isIE) - // tbody.parentNode.style.border = null; - var table = tbody.parentNode; - table.id = tbid + "_sub"; - table.onmouseover = JSDraw2.Menu.cancelclosetime; - table.onmouseout = JSDraw2.Menu.closetime; - - var bs = b.sub; - var leftmargin = 0; - var singlerow = this.options.skin != "w8" || bs.length <= 5; - if (!singlerow) { - leftmargin = -(this.options.btnsize / 2 + 4); - table.style.marginLeft = leftmargin + 'px'; - } - if (scilligence.Utils.isIE && scilligence.Utils.isIE < 8 && !this.isSkinW8()) - table.style.margin = (this.options.btnsize + 4) + 'px 0 0 ' + (leftmargin - this.options.btnsize - 2) + 'px'; - - var tr = null; - for (var j = 0; j < bs.length; ++j) { - var bn = bs[j]; - if (singlerow || j % 2 == 0) - tr = scilligence.Utils.createElement(tbody, 'tr'); - td = scilligence.Utils.createElement(tr, "td"); - if (bn == "|") { - scil.Utils.createElement(td, "hr", null, { margin: "5px 0 0 0", padding: 0 }); - continue; - } - if (j > 0 && this.isSkinW8()) - td.style.paddingTop = w + "px"; - var src = null; - if (this.isSkinW8()) - src = "w8/" + bn.c + ".png"; - else - src = "img/" + bn.c + ".gif"; - this.createBtnImg(td, (bn.img != null ? bn.img : scil.Utils.imgSrc(src)), null, bn.cmd != null ? bn.cmd : bn.c, this.res(bn.t), tbid, null, this.res(bn.label), true); - } - - return td; - }, - - createBtnImg: function (td, src, tbid, cmd, title, parent, width, label, sub) { - if (width == null) - width = this.options.btnsize; - var w = Math.round(2 * width / 20); - if (this.options.skin == "si") { - if (sub) - td = scil.Utils.createElement(td, "div", null, { height: "32px" }); - var table = scil.Utils.createTable(td, 0, 0, sub ? null : { margin: "0 2px 0 2px", backgroundColor: this.toolbarbkcolor }); - var tr = scil.Utils.createElement(table, "tr"); - var td1 = scil.Utils.createElement(tr, "td", null, sub ? null : { border: "solid 1px " + JSDraw2.Skin.jsdraw.bkcolor }); - var td2 = null; - var img = scilligence.Utils.createElement(td1, "img", null, { marginTop: "-5px" }, { src: src, alt: title }); - var styles = { marginTop: "-11px", width: width + "px", fontSize: "9px", textAlign: "center", color: "gray", whiteSpace: "nowrap", overflow: "hidden" }; - if (sub) { - var td2 = scil.Utils.createElement(tr, "td"); - if (scil.Utils.isIE && scil.Utils.isIE < 8) - styles.fontSize = styles.marginTop = styles.width = null; - styles.textAlign = "left"; - scil.Utils.createElement(td2, "div", label == null || label == "" ? " " : label, styles); - } - else { - scil.Utils.createElement(td1, "div", label == null || label == "" ? " " : label, styles); - } - - this.setHoverable(sub ? td : td1); - if (title != null) - (sub ? td : td1).setAttribute('title', title); - if (cmd != null) - (sub ? td : td1).setAttribute('cmd', cmd); - if (parent != null) - (sub ? td : td1).setAttribute('parent', parent); - if (tbid != null) - (sub ? td : td1).id = tbid; - return img; - } - - var style = { textAlign: "center", padding: this.isSkinW8() ? "2px 2px 0 2px" : "2px", verticalAlign: "middle", width: width + "px", height: this.options.btnsize + "px" }; - var img; - if (this.isSkinW8()) { - var button = this.options.buttonshape + ".png"; - style.background = "url(" + scil.Utils.imgSrc("w8/" + button) + ") center center no-repeat"; - img = scilligence.Utils.createElement(td, "img", null, style, { src: src, alt: title }); - scil.Utils.createElement(td, "div", label == null || label == "" ? " " : label, { width: width + "px", fontSize: "9px", textAlign: "center", color: "gray", whiteSpace: "nowrap", overflow: "hidden" }); - } - else { - img = scilligence.Utils.createElement(td, "img", null, style, { src: src, alt: title }); - } - - if (cmd != null) - img.setAttribute('cmd', cmd); - if (title != null) - img.setAttribute('title', title); - if (parent != null) - img.setAttribute('parent', parent); - if (tbid != null) - img.id = tbid; - if (this.isSkinW8()) { - var me = this; - this.editor.connectHandlers.push(dojo.connect(img, "onmouseover", function () { this.style.backgroundImage = scil.Utils.imgSrc("w8/" + me.options.buttonshape + "1.png", true); })); - this.editor.connectHandlers.push(dojo.connect(img, "onmouseout", function () { - this.style.backgroundImage = scil.Utils.imgSrc("w8/" + me.options.buttonshape + (this.getAttribute("pushed") == null ? "" : "0") + ".png", true); - })); - } - else { - this.setHoverable(img); - } - return img; - } -}); - -/***/ }), - -/***/ "./src/Utils.js": -/*!**********************!*\ - !*** ./src/Utils.js ***! - \**********************/ -/***/ (() => { - -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -// http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx -function getIEVersion() { - // if (window.navigator.appName == "Netscape" || window.navigator.appVersion.indexOf("Edge/") > 0) { - // var s = window.navigator.appVersion; - // s = s.substr(s.indexOf("Edge/") + 5); - // var p = s.indexOf('.'); - // return parseInt(s.substr(0, p)); - // } - if (window.navigator.appName != "Microsoft Internet Explorer" && window.navigator.appName.indexOf("MSAppHost") < 0 && !(window.navigator.appVersion.indexOf("Trident") > 0 && document.documentMode >= 11)) - return false; - return document.documentMode == null ? (document.compatMode == "CSS1Compat" ? 7 : 6) : document.documentMode; -}; - -var __ieversion = getIEVersion(); - -var __ieAppVersion = __ieversion ? (window.postMessage ? (window.performance ? 9 : 8) : 7) : null; -if (__ieversion) { - var silverlight = typeof (JSDraw2_disablesilverlight) == "undefined" || !JSDraw2_disablesilverlight ? "silverlight," : ""; - if (dojo.version.major <= 1 && dojo.version.minor < 7) - dojo.config.gfxRenderer = silverlight + "vml"; - else if (__ieversion < 9) - dojo.config.gfxRenderer = silverlight + "vml,svg"; -} - -dojo.require("dojo.io.script"); -dojo.require("dojo.io.iframe"); -dojo.require("dojox.gfx"); -dojo.require("dojox.gfx.utils"); -dojo.require("dojo.window"); - -if (typeof (__JSDraw2_TouchMol) == "undefined") { - dojo.require("dojox.charting.Chart2D"); - dojo.require("dojox.charting.axis2d.Default"); - dojo.require("dojox.charting.plot2d.Default"); - dojo.require("dojox.charting.themes.Wetland"); -} -if (!(dojo.version.major <= 1 && dojo.version.minor <= 6)) - dojo.require("dojox.storage.LocalStorageProvider"); - -// Canvas on Android 2.x; dojo 1.7 won't need it -if (dojo.version.major <= 1 && dojo.version.minor < 7) { - scil.onload(function () { - dojox.gfx.Text.prototype._renderShape = function (/* Object */ctx) { - var s = this.shape; - ctx.save(); - ctx.fillStyle = s.fillStyle; - ctx.strokeStyle = s.fillStyle; - ctx.font = s.fontStyle; - ctx.textAlign = s.align; - ctx.fillText(s.text, s.x, s.y); - ctx.restore(); - ctx.stroke(); - }; - }); -} - -scilligence.suggestInstallSilverlight = function () { - if (dojox.gfx.renderer == "vml") { - if (confirm("JSDraw2.Editor runs much faster with Silverlight in IE 6,7,8. Do you want to install Silvelight now?")) - window.open("http://www.silverlight.net/downloads"); - } -}; - -function _isHtml5() { - var ie = __ieversion; - if (ie) - return ie >= 9; - else - return document.doctype != null && document.doctype.name != null && document.doctype.name.toLowerCase() == "html" -}; -function getAndroidVersion() { - var s = window.navigator.userAgent; - var p = s.indexOf("Android"); - if (p < 0) - return false; - s = s.substr(p + 8); - p = s.indexOf(';'); - s = s.substr(0, p); - p = s.indexOf('.'); - if (p > 0) - s = s.substr(0, p); - return isNaN(s) ? true : parseFloat(s); -}; -function getiOSVersion() { - var s = window.navigator.userAgent; - var p = s.indexOf("iPad"); - if (p < 0) - p = s.indexOf("iPhone"); - if (p < 0) - return false; - var p = s.indexOf('OS', p + 4); - if (p < 0) - return true; - s = s.substr(p + 3); - p = s.indexOf('_'); - s = s.substr(0, p); - p = s.indexOf('.'); - if (p > 0) - s = s.substr(0, p); - return isNaN(s) ? true : parseInt(s); -}; - -/** -* Utils class - provides variety of tool functions -* @class scilligence.Utils -*/ -scilligence.Utils = { - __xcode: 10, - isIE: __ieversion, - isIE8Lower: __ieversion && __ieversion < 9, - nativemode: window.navigator.appName.indexOf("MSAppHost") >= 0, - isHtml5: _isHtml5(), - isFirefox: navigator.userAgent.indexOf('Firefox') >= 0, - isOpera: navigator.userAgent.indexOf('Opera') >= 0, - isChrome: navigator.userAgent.indexOf('Chrome') >= 0, - isLinux: navigator.userAgent.indexOf('Linux') >= 0, - isUbuntu: navigator.userAgent.indexOf('Ubuntu') >= 0, - isIpad: getiOSVersion(), - isAndroid: getAndroidVersion(), - isTouch: navigator.userAgent.indexOf('iPad') >= 0 || navigator.userAgent.indexOf('iPhone') >= 0 || navigator.userAgent.indexOf('Android') >= 0, - isSilverlight: null, - lastTouchTm: 0, - buttonWidth: 160, - - getTopWindow: function () { - var w = window; - while (w.parent != null && w.parent != w) - w = w.parent; - return w; - }, - - isRightButton: function (e) { - if (e == null) - return; - - if (e.which) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera - return e.which == 3; - else if ("button" in e) // IE, Opera - return e.button == 2; - return false; - }, - - isTouchDblClick: function (e) { - var tm = new Date().getTime(); - var d = tm - scil.Utils.lastTouchTm; - scil.Utils.lastTouchTm = tm; - return e.touches.length == 1 && d <= 500; - }, - - /** - * Check if a html element has a parent - * @function {static} hasAnsestor - * @param {DOM} obj - to be checked child - * @param {DOM} parent - * @returns a number - */ - hasAnsestor: function (obj, parent) { - if (parent == null || obj == null) - return false; - - while (obj != null) { - if (obj.parentNode == parent) - return true; - obj = obj.parentNode; - } - return false; - }, - - /** - * Round a number with specific decimal - * @function {static} round - * @param {number} val - a number to be rounded - * @param {number} n - the number of decimal - * @returns a number - */ - round: function (val, n) { - if (val == null || isNaN(val)) - return null; - var d = Math.pow(10, n); - return Math.round(val * d) / d; - }, - - /** - * Round a number to significant digits - * @function {static} roundToSignificantDigits - * @param {number} d - a number to be converted - * @param {number} digits - * @returns a number - */ - roundToSignificantDigits: function (d, digits) { - if (d == 0 || isNaN(d)) - return d; - - var scale = Math.pow(10, Math.floor(this.log10(Math.abs(d))) + 1); - return scale * this.round(d / scale, digits); - }, - - log10: function (val) { - return Math.log(val) / Math.LN10; - }, - - /** - * Round a number as string - * @function {static} roundStr - * @param {number} val - a number to be converted - * @param {number} n - the number of decimal - * @param {number} padding - * @returns a string - */ - roundStr: function (val, n, padding) { - if (val == null || isNaN(val)) - return ""; - else if (val == 0) - return "0"; - - var d = Math.pow(10, n); - var s = (Math.round(val * d) / d) + ""; - if (s == "0" && val != 0 || n > 0 && (Math.abs(val) < 1 / d || val < 1 && s.length < (val + "").length)) { //I#9297 - var e = Math.floor(this.log10(val)); - if (e < 1) { - var ret = this.roundStr(val * Math.pow(10, -e), n, padding) + "e" + e; - return parseFloat(ret) == parseFloat(s) ? s : ret; - } - } - - if (padding == false || n <= 0) - return s; - - var p = s.indexOf('.'); - if (p < 0) { - s += "."; - p = s.length - 1; - } - - var m = s.length - 1 - p; - for (var i = m; i < n; ++i) - s += "0"; - return s; - }, - - /** - * Convert a number into a formatted string - * @function {static} num2str - * @param {number} val - a number to be converted - * @param {number} n - the number of decimal - * @param {string} unit - the unit of the number - * @returns a string - */ - num2str: function (val, n, unit, padding) { - if (val == null || !isFinite(val) || isNaN(val)) - return ""; - - if (unit == null) - return this.roundStr(val, n, padding); - else if (unit == "%") - return this.roundStr(val * 100, n, padding) + unit; - - if (unit == "L" || unit == "l") { - //val /= 1000; - unit = unit.toUpperCase(); - } - - if (Math.abs(val) >= 1000) - return this.roundStr(val / 1000, n, padding) + " " + this._convertUnit(unit, 1000); - if (Math.abs(val) >= 1) - return this.roundStr(val, n, padding) + " " + this._convertUnit(unit, 1); - - val *= 1000; - if (Math.abs(val) >= 1) - return this.roundStr(val, n, padding) + " " + this._convertUnit(unit, 0.001); - - val *= 1000; - return this.roundStr(val, n, padding) + " " + this._convertUnit(unit, 0.000001); - }, - - _convertUnit: function (unit, scale) { - switch (scale) { - case 1: - if (unit == "g/L") - return "mg/mL"; - else if (unit == "U/L") - return "mU/mL"; - else - return unit; - case 1000: - if (unit == "g/L") - return "g/mL"; - else if (unit == "U/L") - return "U/mL"; - else - return "k" + unit; - case 0.001: - if (unit == "g/L" || unit == "mg/mL") - return "mg/L"; - else if (unit == "U/L" || unit == "mU/mL") - return "mU/L"; - else - return "m" + unit; - case 0.000001: - if (unit == "g/L" || unit == "mg/mL") - return "ug/L"; - else if (unit == "U/L" || unit == "mU/mL") - return "uU/L"; - else - return "u" + unit; - } - }, - - disabledcontextmenus: [], - disableContextMenu: function (element, doc) { - if (element != null && scil.Utils.indexOf(this.disabledcontextmenus, element) < 0) - this.disabledcontextmenus.push(element); - - if (doc == null) - doc = document; - - if (doc.body.__contextmenudisabled) - return; - - doc.body.__contextmenudisabled = true; - doc.body.oncontextmenu = function (e) { - if (e == null) - e = event; - - var src = e.target || e.srcElement; - var list = scil.Utils.disabledcontextmenus; - for (var i = 0; i < list.length; ++i) { - if (src == list[i] || scil.Utils.isChildOf(src, list[i])) - return false; - } - - if (src.parentNode != null && JSDraw2.Editor.get(src.parentNode.id) != null || - src.firstChild != null && src.firstChild.getAttribute != null && src.firstChild.getAttribute("jspopupmenu") == "1") { - if (e.preventDefault != null) - e.preventDefault(); - return false; - } - - if (scil.ContextMenu.isFromContextMenu(src)) { - if (e.preventDefault != null) - e.preventDefault(); - return false; - } - - // fix context menu problem on Safari - var div = scil.Utils.getParent(src, "div"); - if (div != null && JSDraw2.Editor.get(div.id) != null) { - if (e.preventDefault != null) - e.preventDefault(); - return false; - } - }; - }, - - serviceAvailable: function () { - return typeof JSDrawServices != "undefined" && typeof JSDrawServices.url != "undefined" && JSDrawServices.url != null; - }, - - /** - * evaluate a javascript expression - * @function {static} eval - * @param {string} s - javascript expression - * @returns javascript object - */ - eval: function (s) { - if (s == "" || typeof (s) != "string") - return null; - - try { - eval("var s=" + s); - return s; - } - catch (e) { - } - - return null; - }, - - /** - * Evaluation if an object is true. true, 1, on, yes will be true - * @function {static} isFalse - * @param {object} s - the input object - * @returns true or false - */ - isTrue: function (s) { - s = (s + "").toLowerCase(); - return s == "1" || s == "true" || s == "yes" || s == "on"; - }, - - /** - * Evaluation if an object is false. false, 0, off, no will be false - * @function {static} isFalse - * @param {object} s - the input object - * @returns true or false - */ - isFalse: function (s) { - s = (s + "").toLowerCase(); - return s == "0" || s == "false" || s == "no" || s == "off"; - }, - - isAttTrue: function (e, att) { - var s = e.getAttribute(att) + ""; - return s == "" || this.isTrue(s); - }, - - isAttFalse: function (e, att) { - var s = e.getAttribute(att) + ""; - return s == "0" || s.toLowerCase() == "false"; - }, - - /** - * Convert a number into a formatted string - * @function {static} formatStr - * @param {number} v - a number to be converted - * @param {number} w - total width the result string - * @param {number} d - the number of demical - * @returns a string - */ - formatStr: function (v, w, d) { - var s = v == null ? "" : v.toFixed(d) + ""; - return scil.Utils.padLeft(s, w, ' '); - }, - - /** - * Generate a GUID - * @function {static} uuid - * @returns a string - */ - // http://www.broofa.com/2008/09/javascript-uuid-function/ - uuid: function () { - var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); - var uuid = []; - var i; - var radix = chars.length; - - // rfc4122, version 4 form - var r; - - // rfc4122 requires these characters - uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; - uuid[14] = '4'; - - // Fill in random data. At i==19 set the high bits of clock sequence as - // per rfc4122, sec. 4.1.5 - for (i = 0; i < 36; i++) { - if (!uuid[i]) { - r = 0 | Math.random() * 16; - uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; - } - } - - return uuid.join('').toLowerCase(); - }, - - /** - * Append chars to a string - * @function {static} padLeft - * @param {string} s - the input string - * @param {number} n - total width of result string - * @param {char} c - the character to be appended - * @returns a string - */ - padLeft: function (s, n, c) { - var s1 = ''; - for (var i = (s + "").length; i < n; ++i) - s1 += (c == null ? ' ' : c); - return s1 + s; - }, - - /** - * Insert chars at the beginning of a string - * @function {static} padRight - * @param {string} s - the input string - * @param {number} n - total width of result string - * @param {char} c - the character to be inserted - * @returns a string - */ - padRight: function (s, n, c) { - var s1 = ''; - for (var i = s.length; i < n; ++i) - s1 += (c == null ? ' ' : c); - return s + s1; - }, - - /** - * Evaluate if a string ends with another sub-string - * @function {static} endswith - * @param {string} s - the input string - * @param {string} token - the sub-string to be tested - * @returns true or false - */ - endswith: function (s, token, casesensitive) { - if (s == null || token == null || s.length < token.length) - return false; - var t = s.substr(s.length - token.length, token.length); - if (casesensitive) - return t == token; - else - return t.toLowerCase() == token.toLowerCase(); - }, - - /** - * Evaluate if a string starts with another sub-string - * @function {static} endswith - * @param {string} s - the input string - * @param {string} token - the sub-string to be tested - * @returns true or false - */ - startswith: function (s, token, casesensitive) { - if (s == null || token == null || s.length < token.length) - return false; - var t = s.substr(0, token.length); - if (casesensitive) - return t == token; - else - return t.toLowerCase() == token.toLowerCase(); - }, - - /** - * Trim a string - * @function {static} ltrim - * @param {string} s - the input string - * @returns a string - */ - trim: function (s) { - return s == null ? null : s.replace(/^[\s|\t\r\n]+|[\s|\t\r\n]+$/g, ""); - }, - - /** - * Trim the left spaces of a string - * @function {static} trim - * @param {string} s - the input string - * @returns a string - */ - ltrim: function (s) { - return s == null ? null : s.replace(/^[\s|\t\r\n]+/, ""); - }, - - /** - * Trim the right spaces of a string - * @function {static} rtrim - * @param {string} s - the input string - * @returns a string - */ - rtrim: function (s) { - return s == null ? null : s.replace(/[\s|\t\r\n]+$/, ""); - }, - - isFixedPosition: function (e) { - while (e != null) { - if (e.style != null && e.style.position == "fixed") - return true; - e = e.parentNode; - } - return false; - }, - - getOffset: function (e, scroll) { - var d = scil.Utils.scrollOffset(); - var p = new JSDraw2.Point(0, 0); - while (e != null) { - if (e.offsetLeft > 0 || e.offsetTop > 0) - p.offset(e.offsetLeft, e.offsetTop); - - if (this.isIE && (e.scrollLeft > 0 || e.scrollTop > 0)) - p.offset(e.scrollLeft, e.scrollTop); - - if (scil.Utils.isIE) { - if (e.scrollTop > 0 || e.scrollLeft > 0) { - p.offset(-e.scrollLeft, -e.scrollTop); - } - } - - // if (e.style.position == "absolute") { - // if (__ieversion && __ieversion < 8) { - // p.offset(-d.x, -d.y); - // break; - // } - // //break; - // } - - e = e.offsetParent; - } - - //if (__ieversion && __ieAppVersion < 8) - // p.offset(d.x, d.y); - - if (scroll != false) - p.offset(-d.x, -d.y); - return p; - }, - - getScrollOffset: function (e) { - var p = new JSDraw2.Point(0, 0); - while (e != null) { - if (e.scrollLeft > 0 || e.scrollTop > 0) - p.offset(e.scrollLeft, e.scrollTop); - e = e.offsetParent; - } - return p; - }, - - scrollOffset: function () { - var iebody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body; - - var x = scil.Utils.isIE ? iebody.scrollLeft : pageXOffset; - var y = scil.Utils.isIE ? iebody.scrollTop : pageYOffset; - - return new JSDraw2.Point(x, y); - }, - - scriptUrl: function () { - if (this._scripturl != null) - return this._scripturl; - if (JSDraw2.defaultoptions.imagebase != null) - this._scripturl = JSDraw2.defaultoptions.imagebase; - if (this._scripturl != null) - return this._scripturl; - - var list = document.getElementsByTagName("script"); - for (var i = 0; i < list.length; i++) { - var e = list[i]; - if (e.tagName == "SCRIPT") { - var s = e.getAttribute('src'); - if (s == null || s.length == 0) - continue; - - var p = s.lastIndexOf('/'); - var path = p < 0 ? '' : scil.Utils.trim(s.substr(0, p + 1)); - var file = scil.Utils.trim(p < 0 ? s : s.substr(p + 1)).toLowerCase(); - p = file.indexOf('?'); - if (p > 0) - file = file.substr(0, p); - - if (this.startswith(file, "scilligence.jsdraw2.") && this.endswith(file, ".js")) { - if (scil.Utils.startswith(path, "http://") || scil.Utils.startswith(path, "https://") || scil.Utils.startswith(path, "//")) - return this._scripturl = path; - - if (scil.Utils.startswith(path, '/')) - return this._scripturl = document.location.protocol + "//" + document.location.host + path; - - var url = document.location + ""; - p = url.indexOf('?'); - if (p > 0) - url = url.substr(0, p); - - p = url.lastIndexOf('/'); - return this._scripturl = url.substr(0, p + 1) + path; - } - else if (file == "jsdraw.core.js") { - return this._scripturl = path + "../"; - } - } - } - - return null; - }, - - _imgBase: function () { - return scil.Utils.scriptUrl(); - }, - - imgSrc: function (button, wrapasinurl) { - var s = scil.Utils._imgBase() + button; - if (wrapasinurl) - s = "url(" + s + ")"; - return s; - }, - - imgTag: function (b, label, extra) { - return "" + (label == null ? "" : label); - }, - - styleRect: function (e) { - return new JSDraw2.Rect(scil.Utils.parsePixel(e.style.left), - scil.Utils.parsePixel(e.style.top), - scil.Utils.parsePixel(e.style.width), - scil.Utils.parsePixel(e.style.height)); - }, - - parsePixel: function (s) { - if (s == null || !scil.Utils.endswith(s, "px")) - return null; - - s = s.substr(0, s.length - 2); - return isNaN(s) ? null : parseInt(s); - }, - - /** - * Clone an array - * @function {static} cloneArray - * @param {array} ar - the array to be cloned - * @returns a new array - */ - cloneArray: function (ar) { - var r = []; - this.mergeArray(r, ar); - return r; - }, - - /** - * Merge two arrays - * @function {static} mergeArray - * @param {array} dest - the destination array to be merged to - * @param {array} src - the source arrays to be merged from - * @returns null - */ - mergeArray: function (dest, src) { - for (var i = 0; i < src.length; ++i) - dest.push(src[i]); - }, - - /** - * Find the index of an item in an array - * @function {static} mergeArray - * @param {array} ar - the array to be searched - * @param {object} i - the item to be searched - * @returns the index if succeeded; -1 if failed - */ - fingArrayIndex: function (ar, i) { - for (var k = 0; k < ar.length; ++k) { - if (ar[k] == i) - return k; - } - return -1; - }, - - getFunctionName: function (f) { - if (typeof f == "function") { - var fName = (f + "").match(/function\s*([\w\$]*)\s*\(/); - if (fName !== null) - return fName[1]; - } - - return null; - }, - - splitCsvRow: function (s) { - if (s == null || s == "\r" || s == "") - return; - - if (s.substr(s.length - 1) == "\r") - s = s.substr(0, s.length - 1); - - var ret = []; - - var inquote = false; - var v = ""; - for (var i = 0; i < s.length; ++i) { - var c = s.substr(i, 1); - if (c == '\"') { - if (!inquote) { - if (v == "") - inquote = true; - else - v += c; - } - else { - if (i < s.length - 1) { - var c1 = s.substr(i + 1, 1); - if (c1 == '\"') { - v += c; - ++i; - } - else if (c1 == ',') { - ret.push(v); - v = ""; - inquote = false; - ++i; - } - else { - v += c; - } - } - else { - inquote = false; - } - } - } - else if (c == ',') { - if (inquote) { - v += c; - } - else { - ret.push(v); - v = ""; - } - } - } - - ret.push(v); - - return ret; - }, - - escCsvValue: function (v) { - if (v == null) - return ""; - if (typeof (v) != "string") - v = v + ""; - if (v.indexOf(',') >= 0 || v.indexOf('\"') >= 0 || v.indexOf('\r') >= 0 || v.indexOf('\n') >= 0) - v = '\"' + v.replace(/[\"]/g, "\"\"").replace(/\r\n/g, "") + '\"'; - return v; - }, - - /** - * Unescape an xml value - * @function {static} unescXmlValue - * @param {object} v - the input string - * @returns a string - */ - unescXmlValue: function (v) { - if (v == null) - return ''; - return v.replace(/</gi, "<").replace(/>/gi, ">").replace(/ /gi, "\n").replace(/'/g, "'").replace(/"/g, "\"").replace(/&/gi, "&"); - }, - - /** - * Escape the object as the xml value - * @function {static} escXmlValue - * @param {object} v - the input object - * @param {bool} trim - indicate if trim the spaces - * @returns a string - */ - escXmlValue: function (v, trim) { - if (v == null) - return ''; - - if (typeof (v) != "string") - v = v + ""; - - if (trim) - v = scil.Utils.trim(v); - return v.replace(/&/g, "&").replace(//g, ">").replace(/\r/g, " ").replace(/\n/g, " ").replace(/'/g, "'").replace(/"/g, """); - }, - - escUrlData: function (s) { - if (s == null) - return s; - - var ret = ""; - for (var i = 0; i < s.length; ++i) { - var c = s.charCodeAt(i); - var s1 = s.substr(i, 1); - if (c > 255) - ret += s1; - else if (s1 == "+") - ret += "%2b"; - else - ret += escape(s1); - } - - return ret; - }, - - escFileName: function (s) { - if (s == null) - return s; - - var ret = ""; - for (var i = 0; i < s.length; ++i) { - var c = s.substr(i, 1); - if (s.charCodeAt(i) > 255 || /[a-z|0-9|_| |\-|\(|\)|\{|\}|\[|\]|\.]/ig.test(c)) - ret += c; - else - ret += '_'; - } - return ret; - }, - - getFirstChild: function (parent, tag) { - if (parent == null) - return null; - for (var i = 0; i < parent.childNodes.length; ++i) { - if (parent.childNodes[i].tagName == tag) - return parent.childNodes[i]; - } - return null; - }, - - /** - * Parse an xml string - * @function {static} parseXml - * @param {string} xml - input xml string - * @returns a XML document object - */ - parseXml: function (xml) { - var ret = this.parseXml2(xml); - if (ret != null && ret.succeeded) - return ret.doc; - return null; - }, - - parseXml2: function (xml) { - if (xml == null) - return null; - - xml = this.trim(xml); - if (xml.length < 10 || xml.substr(0, 1) != "<" || xml.substr(xml.length - 1, 1) != ">") - return null; - - var succeeded = false; - var error = null; - var doc = null; - try { - if (window.DOMParser) { - doc = new DOMParser().parseFromString(xml, "text/xml"); - } - else // Internet Explorer - { - doc = new ActiveXObject("Microsoft.XMLDOM"); - doc.async = "false"; - doc.loadXML(xml); - } - succeeded = true; - } - catch (e) { - error = e.message; - } - - return { succeeded: succeeded, error: error, doc: doc }; - }, - - xquery: function (e, path, returnone) { - if (e == null || path == null || path == "") - return null; - - var ret = null; - var list = path.split('/'); - for (var i = 0; i < list.length; ++i) { - var s = list[i]; - if (s == "") - continue; - - var tag = s.replace(/[\[]@[a-z]+[0-9|a-z]{0,9}='[^\']+'[\]]$/, ""); - s = s.substr(tag.length + 2, s.length - (tag.length + 3)); - - var key = null; - var val = null; - var p = s.indexOf('='); - if (p > 0) { - key = s.substr(0, p); - p += 2; - val = s.substr(p, s.length - p - 1); - } - - var e2 = null; - for (var k = 0; k < e.childNodes.length; ++k) { - var c = e.childNodes[k]; - if (c.tagName == tag) { - if (key == null || c.getAttribute(key) == val) - e2 = c; - } - - if (e2 != null) { - if (i == list.length - 1) { - if (returnone) - return e2; - - if (ret == null) - ret = [e2]; - else - ret.push(e2); - } - else { - e2 = c; - break; - } - } - } - - if (ret != null) - return ret; - if (e2 == null) - return null; - else - e = e2; - } - return null; - }, - - /** - * Parse an json string - * @function {static} parseJson - * @param {string} s - input json string - * @returns a javascript object - */ - parseJson: function (s) { - return this.eval(s); - }, - - /** - * Test if a string contains a word - * @function {static} containsWord - * @param {string} str - the string to be tested - * @param {string} word - the word to be tested - * @param {bool} ignorecase - indicate if ignoring cases or not - * @returns true of false - */ - containsWord: function (str, word, ignorecase) { - if (str == null || word == null || str == "" || word == "") - return false; - if (ignorecase) - word = word.toLowerCase(); - var words = str.toLowerCase().split(/\W+/); - for (var i = 0; i < words.length; ++i) { - if (words[i] == word) - return true; - } - return false; - }, - - /** - * Show message dialog.
- * For Windows 8 metro Apps, and Office Apps, standard alert() function is not allowed. alert2() can be an alternative. - * @function {static} alert2 - * @param {string} message - message body - * @param {string} caption - dialog caption - * @param {function()} callback - callback function - * @param {string} iconurl - image url of the dialog icon - * @param {number} width - dialog width - * @returns null - */ - alert2: function (message, caption, callback, iconurl, width) { - if (scil.Utils.alertdlg == null) { - var tbody = scil.Utils.createTable(); - var tr = scil.Utils.createElement(tbody, "tr"); - var img = scil.Utils.createElement(scil.Utils.createElement(tr, "td", null, { verticalAlign: "top" }), "img", null, { height: "50px", width: "50px" }); - var td = scil.Utils.createElement(tr, "td", null, { textAlign: "center" }); - var msg = scil.Utils.createElement(td, "div", null, { padding: "10px", textAlign: "left", maxWidth: "800px", maxHeight: "400px", overflow: "auto", color: "#000" }); - //if (scil.Utils.isIE) - // msg.style.height = "expression(clientHeight>360 ? '360px' : 'auto')"; - var ok = scil.Utils.createElement(td, "button", scil.Utils.imgTag("tick.gif", this.res("OK")), { width: "80px" }); - - scil.Utils.alertdlg = new JSDraw2.Dialog("Attention", tbody.parentNode); - scil.Utils.alertdlg.msg = msg; - scil.Utils.alertdlg.img = img; - - dojo.connect(ok, "onclick", function (e) { var d = scil.Utils.alertdlg; if (d.callback != null) d.callback(); d.hide(); e.preventDefault(); }); - } - - if (iconurl == null || iconurl == "") - iconurl = scil.Utils.imgSrc("img/information.gif"); - else if (!scil.Utils.startswith(iconurl, "http:")) - iconurl = scil.Utils.imgSrc("img/" + iconurl + ".gif"); - scil.Utils.alertdlg.show(caption); - scil.Utils.alertdlg.callback = callback; - scil.Utils.alertdlg.msg.innerHTML = message == null ? '' : "
" + message + "
"; - scil.Utils.alertdlg.img.src = iconurl; - - scil.Utils.alertdlg.moveCenter(); - }, - - /** - * Show confirm dialog.
- * For Windows 8 metro Apps, and Office Apps, standard confirm() function is not allowed. confirm() can be an alternative. - * @function {static} confirm - * @param {string} message - message body - * @param {function(string status)} callback - callback function. status value: true, false, 'cancel' - * @param {bool} cancelbtn - indicate if it shows Cancel button or not - * @param {string} caption - dialog caption - * @returns null - */ - confirm: function (message, callback, cancelbtn, caption, owner) { - if (scil.Utils.confirmdlg == null) { - var tbody = scil.Utils.createTable(); - var tr = scil.Utils.createElement(tbody, "tr"); - scil.Utils.createElement(tr, "td", "", { verticalAlign: "top" }); - var td = scil.Utils.createElement(tr, "td", null, { textAlign: "center" }); - var msg = scil.Utils.createElement(td, "div", null, { padding: "10px", textAlign: "left", maxHeight: "360px", color: "black" }); - //if (scil.Utils.isIE) - // msg.style.height = "expression(clientHeight>360 ? '360px' : 'auto')"; - var yes = scil.Utils.createElement(td, "button", this.res("Yes"), { width: "80px" }); - var no = scil.Utils.createElement(td, "button", this.res("No"), { width: "80px" }); - var cancel = scil.Utils.createElement(td, "button", this.res("Cancel"), { width: "80px" }); - - scil.Utils.confirmdlg = new JSDraw2.Dialog(this.res("Attention"), tbody.parentNode); - scil.Utils.confirmdlg.msg = msg; - scil.Utils.confirmdlg.cancel = cancel; - - dojo.connect(yes, "onclick", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback(true); }); - dojo.connect(no, "onclick", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback(false); }); - dojo.connect(cancel, "onclick", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback('cancel'); }); - } - - scil.Utils.confirmdlg.show(); - scil.Utils.confirmdlg.callback = callback; - scil.Utils.confirmdlg.cancel.style.display = cancelbtn ? '' : "none"; - scil.Utils.confirmdlg.msg.innerHTML = message == null ? '' : "
" + message + "
"; - scil.Utils.confirmdlg.hide(true); - scil.Utils.confirmdlg.show(caption, null, null, null, owner); - }, - - /** - * A simple version confirm dialog, only showing Yes, No button - * @function {static} confirmYes - * @param {string} message - message body - * @param {function()} callback - callback function. - * @returns null - */ - confirmYes: function (message, callback, owner) { - scil.Utils.confirm(message, function (f) { if (f) callback(); }, null, null, owner); - }, - - /** - * Show prompt dialog, and ask to input a string
- * For Windows 8 metro Apps, and Office Apps, standard prompt() function is not allowed. This prompt() can be an alternative. - * @function {static} prompt2 - * @param {string} caption - dialog caption - * @param {string} message - message body - * @param {string} defaultvalue - default value in the input box - * @param {string} button - the button label - * @param {function()} callback - callback function. - * @param {string} iconurl - the url of dialog icon - * @param {bool} zindex - zIndex of the dialog - * @param {bool} multiline - indicate if showing multiline input box - * @param {number} height - * @returns null - */ - prompt2: function (options) { - return this.prompt(options.caption, options.message, options.defaultvalue, options.button, - options.callback, options.iconurl, options.zindex, options.multiline, options.autosuggesturl, options.owner, - options.maxlength, options.height); - }, - - /** - * Show prompt dialog, and ask to input a string
- * For Windows 8 metro Apps, and Office Apps, standard prompt() function is not allowed. This prompt() can be an alternative. - * @function {static} prompt - * @param {string} caption - dialog caption - * @param {string} message - message body - * @param {string} defaultval - default value in the input box - * @param {string} btn - the button label - * @param {function()} callback - callback function. - * @param {string} iconurl - the url of dialog icon - * @param {bool} zindex - zIndex of the dialog - * @param {bool} multiline - indicate if showing multiline input box - * @returns null - */ - prompt: function (caption, message, defaultval, btn, callback, iconurl, zindex, multiline, autosuggesturl, owner, maxlength, height) { - if (scil.Utils.promptdlg == null) { - var tbody = scil.Utils.createTable(); - var tr = scil.Utils.createElement(tbody, "tr"); - var icon = scil.Utils.createElement(scil.Utils.createElement(tr, "td"), "div", null, { width: "50px" }); - var td = scil.Utils.createElement(tr, "td"); - var msg = scil.Utils.createElement(td, "div", null, { color: "black" }); - - var div = scil.Utils.createElement(td, "div"); - var input = scil.Utils.createElement(div, "input", null, { width: "360px", display: "none" }); - input.setAttribute("x-webkit-speech", "on"); - var textarea = scil.Utils.createElement(div, "textarea", null, { width: "360px", display: "none" }); - - var div = scil.Utils.createElement(td, "div", null, { textAlign: "center", paddingTop: "5px" }); - var button = scil.Utils.createElement(div, "button", btn, { width: scil.Utils.buttonWidth + "px" }); - - var dlg = scil.Utils.promptdlg = new JSDraw2.Dialog(this.res("Message"), tbody.parentNode); - dlg.icon = icon; - dlg.msg = msg; - dlg.input = input; - dlg.textarea = textarea; - dlg.button = button; - - var fn = function (e) { var d = dlg; d.hide(); if (d.callback != null) d.callback(d.input.style.display == "none" ? d.textarea.value : d.input.value, d.input.style.display == "none" ? d.textarea : d.input); if (e.preventDefault != null) e.preventDefault(); }; - dojo.connect(dlg.input, "onkeydown", function (e) { if (e.keyCode == 13) { fn(e); } }); - dojo.connect(button, "onclick", fn); - - dlg.auto = new scil.AutoComplete(input, null); - } - - var dlg = scil.Utils.promptdlg; - - dlg.input.style.display = multiline ? "none" : ""; - dlg.textarea.style.display = multiline ? "" : "none"; - dlg.input.setAttribute("maxlength", maxlength > 0 ? maxlength : ""); - - if (height > 0) { - dlg.input.style.height = height + "px"; - dlg.textarea.style.height = height + "px"; - } - else { - dlg.input.style.height = ""; - dlg.textarea.style.height = ""; - } - - dlg.auto.url = autosuggesturl; - dlg.auto.disabled = autosuggesturl == null || autosuggesturl == ""; - - dlg.show(caption, zindex); - if (iconurl == null) { - dlg.icon.innerHTML = " "; - } - else { - dlg.icon.innerHTML = ""; - dlg.icon.style.display = ""; - } - - dlg.msg.innerHTML = message == null ? '' : message; - dlg.button.innerHTML = btn == null ? this.res("OK") : this.res(btn); - (multiline ? dlg.textarea : dlg.input).value = defaultval == null ? '' : defaultval; - dlg.callback = callback; - - dlg.hide(true); - dlg.show2({ owner: owner }); - (multiline ? dlg.textarea : dlg.input).select(); - (multiline ? dlg.textarea : dlg.input).focus(); - }, - - /** - * Create a Cookie - * @function {static} createCookie - * @param {string} name - the cookie's name - * @param {string} value - the value of the cookie - * @param {number} days - total days that the cookie will expire - * @returns null - */ - createCookie: function (name, value, days, ignoreStore) { - if (!ignoreStore) { - var store = dojox.storage == null || dojox.storage.LocalStorageProvider == null ? null : new dojox.storage.LocalStorageProvider(); - if (store != null && store.isAvailable()) { - store.initialize(); - store.put(name, value); - return; - } - } - - var expires = ""; - if (days) { - var date = new Date(); - date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); - expires = "; expires=" + date.toGMTString(); - } - document.cookie = name + "=" + escape(value) + expires + "; path=/"; - }, - - /** - * Read a Cookie - * @function {static} readCookie - * @param {string} name - the cookie's name - * @returns the value of the cookie as a string - */ - readCookie: function (name, ignoreStore) { - if (!ignoreStore) { - var store = dojox.storage == null || dojox.storage.LocalStorageProvider == null ? null : new dojox.storage.LocalStorageProvider(); - if (store != null && store.isAvailable()) { - store.initialize(); - return store.get(name); - } - } - - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for (var i = 0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0) == ' ') - c = c.substring(1, c.length); - if (c.indexOf(nameEQ) == 0) - return unescape(c.substring(nameEQ.length, c.length)); - } - return null; - }, - - /** - * Erase a Cookie - * @function {static} eraseCookie - * @param {string} name - the cookie's name - * @returns null - */ - eraseCookie: function (name) { - if (dojox.storage != null && dojox.storage.LocalStorageProvider != null) { - var store = new dojox.storage.LocalStorageProvider(); - if (store.isAvailable()) { - store.initialize(); - return store.remove(name); - } - } - - createCookie(name, "", -1); - }, - - /** - * Format file size - * @function {static} formatFilesize - * @param {number} s - file size - * @returns a string - */ - formatFilesize: function (filesize) { - if (!(filesize > 0)) - return ""; - - if (filesize / 1000 < 1) - return filesize + "Bytes"; - filesize = filesize / 1000; - if (filesize / 1000 < 1) - return Math.round(filesize * 10) / 10 + "KB"; - filesize = filesize / 1000; - if (filesize / 1000 < 1) - return Math.round(filesize * 10) / 10 + "MB"; - filesize = filesize / 1000; - if (filesize / 1000 < 1) - return Math.round(filesize * 10) / 10 + "GB"; - filesize = filesize / 1024; - return Math.round(filesize * 10) / 10 + "TB"; - }, - - today: function () { - return scil.Utils.trunc2date(new Date()); - }, - - trunc2date: function (d) { - return d == null ? null : new Date(d.getFullYear(), d.getMonth(), d.getDate()); - }, - - time: function (tm) { - if (tm == null) - return new Date(); - - var t = null; - if (typeof (tm) == "string") { - if (/^[0-9]+$/.test(tm)) { - tm = parseInt(tm); - } - else { - var ss = tm.split('-'); - if (ss.length == 3) { - var y = parseInt(ss[0]); - var m = ss[1].length == 3 ? this._parseMonth(ss[1]) : (parseInt(ss[1]) - 1); - var d = parseInt(ss[2]); - - if (y > 0 && m >= 0 && m < 12 && d > 0 && d <= 31) - return new Date(y, m, d); - } - } - } - if (t == null) - t = new Date(tm); - - // If tm is a string, like 2015-04-30, the time is UTC time. Convert it into local time. - var offset = t.getTimezoneOffset(); - if (isNaN(offset)) - offset = 0; - return new Date(t.getTime() + offset * 60000); - }, - - _months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - _weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - - weekday: function (dt) { - return this._weekdays[dt.getDay()]; - }, - - _parseMonth: function (s) { - if (s == null || s.length != 3) - return -1; - s = s.substr(0, 1).toUpperCase() + s.substr(1).toLowerCase(); - return scil.Utils.indexOf(this._months, s); - }, - - formatTime: function (tm, format) { - if (tm == 0) - return ""; - if (tm == null) - tm = new Date(); - if (typeof tm != "object") - tm = scil.Utils.time(tm); - - if (JSDraw2.timezoneoffet > 0) - tm = new Date(tm.getTime() + JSDraw2.timezoneoffet * 60 * 60 * 1000); - - // date part - var s = format; - if (scil.Utils.isNullOrEmpty(s)) - s = "yyyy-mmm-dd"; - - s = s.replace("yyyy", tm.getFullYear()) - .replace("yy", (tm.getFullYear() + "").substr(2)) - .replace("mmm", scil.Utils._months[tm.getMonth()]) - .replace("mm", scil.Utils.padLeft(tm.getMonth() + 1, 2, '0')) - .replace("dd", scil.Utils.padLeft(tm.getDate(), 2, '0')); - - // time part - var h12 = s.indexOf("hh") >= 0; - var h = tm.getHours(); - s = s.replace("hh", this.padLeft(h % 12, 2, '0')) - .replace("HH", this.padLeft(h, 2, '0')) - .replace("MM", this.padLeft(tm.getMinutes(), 2, '0')) - .replace("SS", this.padLeft(tm.getSeconds(), 2, '0')) - .replace("ss", this.padLeft(tm.getSeconds(), 2, '0')); - if (h12) - s += h >= 12 ? "PM" : "AM"; - - return s; - }, - - /** - * Convert a date number into visible date string - * @function {static} dateStr - * @param {number} tm - the number of time - * @param {bool} classic - if classic is true, it won't show Today, Yesterday etc. - * @returns a string - */ - dateStr: function (input, classic, format) { - if (scil.Utils.isNullOrEmpty(input) || input == 0) - return ""; - var tp = typeof (input); - if (!(tp == "object" || tp == "number" || tp == "string")) - return ""; - var tm = input; - if (tp != "object") { - tm = scil.Utils.time(tm); - if (tm == null) - return ""; - } - - var days = (scil.Utils.today().getTime() - scil.Utils.trunc2date(tm).getTime()) / 1000 / 60 / 60 / 24; - - var ret = null; - if (!classic) { - if (days == 0) - ret = JSDraw2.Language.res("Today"); - else if (days == 1) - ret = JSDraw2.Language.res("Yesterday"); - } - if (ret == null) { - if (scil.Utils.isNullOrEmpty(format)) { - format = JSDraw2.defaultoptions.dateformat; - if (scil.Utils.isNullOrEmpty(format)) - format = "yyyy-mmm-dd"; - } - - // if the input is 2014-04-08, this is to fix the timezone issue - if (typeof (input) == "string") - tm = new Date(tm); - - ret = scil.Utils.formatTime(tm, format); - } - - return ret; - }, - - /** - * Convert a time number into visible time string - * @function {static} timeStr - * @param {number} tm - the number of time - * @param {bool} classic - if classic is true, it won't show Today, Yesterday etc. - * @returns a string - */ - timeStr: function (tm, classic, timefmt) { - if (scil.Utils.isNullOrEmpty(tm) || tm == 0) - return ""; - - if (typeof (tm) == "string") { - if (tm == "new") - return "" + JSDraw2.Language.res("New") + ""; - else - return tm; - } - - if (tm == null) - return ""; - if (typeof tm != "object") - tm = scil.Utils.time(tm); - - var s = timefmt != null ? timefmt : JSDraw2.defaultoptions.timeformat; - if (scil.Utils.isNullOrEmpty(s)) - s = "HH:MM"; - - return scil.Utils.dateStr(tm, classic) + " " + scil.Utils.formatTime(tm, s); - }, - - /** - * Create a Button - * @function {static} createButton - * @param {string or DOM} parent - the parent of the new element. The parent can be set to null, so it won't have a parent - * @param {dictionary} button - { caption: string, onclick: function } - * @returns the new button - */ - createButton: function (parent, button, lang) { - if (typeof parent == "string") - parent = dojo.byId(parent); - - if (button == null) - return; - if (typeof (button) == "string") { - this.createElement(parent, "span", button); - return; - } - - var s = (lang == null ? scil.Lang : lang).res(button.caption || button.label); - var title = scil.Lang.res(button.title); - - if (button.src == null && button.iconurl != null) - button.src = button.iconurl; - if (button.title == null && button.tooltips != null) - button.title = button.tooltips; - - var a = null; - if (button.type == "b") { - var tbody = scil.Utils.createTable(parent, 0, 0, { float: button.float == null ? "left" : button.float, textAlign: "center", margin: 0, borderRadius: "2px" }); - a = tbody.parentNode; - if (button.id != null) - a.setAttribute("id", button.id); - scil.Utils.createElement(scil.Utils.createElement(tbody, "tr"), "td", " 0 ? " height='" + button.imgheight + "'" : "") + ">", { padding: "3px 12px 0 12px" }); - scil.Utils.createElement(scil.Utils.createElement(tbody, "tr"), "td", s, { color: "#fff", fontSize: "60%" }); - } - else { - if (s == null && (button.src || button.icon) != null) { - a = this.createElement(parent, "img", null, { width: button.width, cursor: "pointer", verticalAlign: "middle" }, { src: (button.src || button.icon), title: button.title, id: button.id }); - } - else { - if (button.src != null) - s = " 0 ? " height='" + button.imgheight + "'" : "") + ">" + s; - - if (button.type == "a") - a = this.createElement(parent, button.tagname != null ? button.tagname : (s == "" || s == null ? "span" : "u"), s, { width: button.width, cursor: "pointer", background: button.background, whiteSpace: "nowrap" }, { title: title, id: button.id }); - else - a = this.createElement(parent, "button", s, { width: button.width, background: button.background, padding: button.padding }, { title: title, id: button.id }); - } - } - - if (button.items != null) { - if (a.tagName == "IMG" || a.tagName == "U") { - var b = this.createElement(parent, "span", null); - b.appendChild(a); - a = b; - } - } - - var hc = button.highlightcolor == null ? JSDraw2.Skin.menu.highlightcolor : button.highlightcolor; - var c = button.color == null ? (button.type == "b" ? "" : JSDraw2.Skin.menu.color) : button.color; - a.style.color = c; - if (button.type == "b") { - scil.connect(a, "onmouseover", function () { a.style.background = hc; }); - scil.connect(a, "onmouseout", function () { a.style.background = c; }); - } - else { - scil.connect(a, "onmouseover", function () { a.style.color = hc; }); - scil.connect(a, "onmouseout", function () { a.style.color = c; }); - } - - if (button.items != null) { - if (button.callback == null) { - button.callback = function (cmd) { - if (button.onclick != null) { - button.onclick(cmd); - } - else { - for (var i = 0; i < button.items.length; ++i) { - if (button.items[i].label == cmd && button.items[i].url != null) { - if (button.items[i].target == null) - window.location = button.items[i].url; - else - window.open(button.items[i].url, button.items[i].target); - } - } - } - }; - } - new scil.DropdownButton(a, button); - } - else { - if (button.onclick != null) - dojo.connect(a, "onclick", function (e) { button.onclick(e); }); - else if (button.url) - dojo.connect(a, "onclick", function () { if (button.target == null) window.location = button.url; else window.open(button.url, button.target); }); - } - - if (button.key != null) - a.setAttribute("key", button.key); - - return a; - }, - - /** - * Create a HTML element. - *
-    * Example:
-    *    var div = scil.Utils.createElement(document.body, "div", 
-    *       "<" + "a href='javascript:alert(99)'>test</a" + ">", {textAlign:'center'}, {class: 'myclass'});
-    * 
- * @function {static} createElement - * @param {DOM} parent - the parent of the new element. The parent can be set to null, so it won't have a parent - * @param {string} tag - the name of the new element - * @param {string} html - the innerHTML of the new element - * @param {dictionary} styles - styles of the new element - * @param {dictionary} attributes - attributes of the new element, such as the name, id, class etc. - * @param {onclick} function - * @returns the new HTML element - */ - createElement: function (parent, tag, html, styles, attributes, onclick) { - if (typeof (parent) == "string") - parent = scil.byId(parent); - - if (attributes != null && attributes.title != null) - attributes.title = this.res(attributes.title); - - var e = null; - tag = tag.toLowerCase(); - if (tag == "checkbox" || tag == "radio" || tag == "password" || tag == "hidden" || tag == "file" || tag == "image") { - if (scil.Utils.isIE8Lower) { - var att = attributes != null && attributes["name"] != null ? " name='" + attributes["name"] + "'" : ""; - e = document.createElement(""); - } - else { - e = document.createElement("input"); - e.type = tag; - } - } - else { - e = document.createElement(tag); - } - - if (parent != null) - parent.appendChild(e); - - if (html != null) { - if (tag == "radio" || tag == "checkbox") - this.createElement(parent, "span", html); - else - e.innerHTML = html; - } - - if (styles != null) { - for (var k in styles) { - var v = styles[k]; - if (v == null) - continue; - - if ((k == "width" || k == "height" || k == "padding" || k == "margin") && typeof (v) == "number") - v = v + "px"; - - e.style[k] = v; - } - } - - if (attributes != null) { - for (var k in attributes) { - if (attributes[k] != null) - e.setAttribute(k, attributes[k]); - } - } - - if (onclick != null) - dojo.connect(e, "onclick", function (event) { onclick(event, e); }); - - return e; - }, - - // /** - // * Download a file from the same site. It won't work to download cross-site contents. - // *
-    //    * Example:
-    //    *    scil.Utils.downloadFile("data/m.mol", function(data) { alert(data); });
-    //    * 
- // * @function {static} downloadFile - // * @param {string} url - url of the file - // * @param {function} callback - function(data) {} - // */ - // downloadFile: function (url, callback) { - // var iframe = scil.Utils.createElement(document.body, "iframe", null, { width: 1, height: 1, display: "none" }, - // { frameBorder: 0, src: url }); - - // scil.connect(iframe, "onload", function () { - // var doc = null; - // if (iframe.contentDocument != null) - // doc = iframe.contentDocument; - // else if (iframe.contentWindow != null) - // doc = iframe.contentWindow.document; - // var body = doc == null ? null : doc.body; - - // var data; - // if (body == null && doc.documentElement != null) - // data = new XMLSerializer().serializeToString(doc); - // else - // data = scil.Utils.getInnerText(body); - - // iframe.parentNode.removeChild(iframe); - // if (callback != null) - // callback(data, url); - // }); - // }, - - /** - * Create a HTML table element - * @function {static} createTable - * @param {DOM} parent - the parent of the new table. The parent can be set to null, so it won't have a parent - * @param {number} cellspacing - the cell spacing in pixel - * @param {number} cellpadding - the cell padding in pixel - * @param {dictionary} styles - styles of the new element - * @param {number} border - the border width of the table - * @returns the new HTML element - */ - createTable: function (parent, cellspacing, cellpadding, styles, border) { - var table = this.createElement(parent, "table", null, styles); - if (cellspacing != null) - table.cellSpacing = cellspacing; - if (cellpadding != null) - table.cellPadding = cellpadding; - if (border >= 0) - table.border = border; - return this.createElement(table, "tbody"); - }, - - /** - * Create a HTML table element - * @function {static} createTable - * @param {DOM} parent - the parent of the new table. The parent can be set to null, so it won't have a parent - * @param {dict} styles - styles of the new element - * @param {dict} attributes - attributes - * @returns the new HTML element - */ - createTable2: function (parent, styles, attributes) { - var table = this.createElement(parent, "table", null, styles, attributes); - return this.createElement(table, "tbody"); - }, - - createTR: function (parent, styles) { - return scil.Utils.createElement(parent, "tr", styles); - }, - - createTD: function (parent, styles) { - if (parent.tagName != "TR") - parent = this.createTR(parent); - return scil.Utils.createElement(parent, "td", styles); - }, - - createCenterBox: function (parent, border) { - var t = this.createTable(parent, 0, 0, null, border); - t.parentNode.setAttribute("align", "center"); - var tr = this.createElement(t, "tr"); - var td = this.createElement(tr, "td", null, { textAlign: "left" }); - return td; - }, - - createSelect: function (parent, items, value, sortitems, styles) { - var sel = this.createElement(parent, "select", null, styles); - this.listOptions(sel, items, value, false, sortitems); - return sel; - }, - - /** - * Specify items of a SELECT element - * @function {static} listOptions - * @param {DOM} select - the destination SELECT element - * @param {array or dictionary} items - items to be added - * @param {string} val - the value of the selected item - * @param {bool} removeall - indicate if removing all existing items before adding new items - * @param {bool} sortitems - indicate if sorting items before adding them - * @returns null - */ - listOptions: function (select, items, val, removeall, sortitems) { - if (removeall != null) - this.removeAll(select); - if (items == null) - return; - - if (items.length != null) { - if (sortitems) - items.sort(); - for (var i = 0; i < items.length; ++i) { - var s = items[i]; - var opt = this.createElement(select, "option", s, null, { value: s }); - if (s == val) - opt.setAttribute("selected", "selected"); - } - } - else { - var ss = {}; - var list = []; - for (var k in items) { - ss[items[k]] = k; - list.push(items[k]); - } - if (sortitems) - list.sort(); - - for (var i = 0; i < list.length; ++i) { - var v = list[i]; - var k = ss[v]; - var opt = this.createElement(select, "option", v, null, { value: k }); - if (k == val) - opt.setAttribute("selected", "selected"); - } - } - }, - - /** - * Select an item in a SELECT element based on a value - * @function {static} selectOption - * @param {DOM} select - the destination SELECT element - * @param {string} val - the value of the selected item - * @returns null - */ - selectOption: function (select, val, ignorecase) { - if (select == null) - return; - - for (var i = 0; i < select.options.length; ++i) { - var opt = select.options[i]; - if (this.isEqualStr(opt.value, val + "", ignorecase) || typeof (val) == "boolean" && (val == true && scil.Utils.isTrue(opt.value) || val == false && scil.Utils.isFalse(opt.value))) { - select.selectedIndex = i; - return; - } - } - select.selectedIndex = -1; - }, - - isEqualStr: function (s1, s2, ignorecase) { - if (s1 == null && s2 == null) - return true; - if (s1 == null || s2 == null) - return false; - - if (ignorecase) - return s1.toLowerCase() == s2.toLowerCase(); - return s1 == s2; - }, - - /** - * Remove all child elements - * @function {static} removeAll - * @param {DOM} parent - the parent HTML element - * @returns null - */ - removeAll: function (parent) { - if (parent == null || parent.childNodes == null) - return; - for (var i = parent.childNodes.length - 1; i >= 0; --i) - parent.removeChild(parent.childNodes[i]); - }, - - /** - * Get the first parent element with a given tag name - * @function {static} getParent - * @param {DOM} obj - the start HTML element - * @param {string} tag - the element tag name to be searched - * @returns the first parent element - */ - getParent: function (obj, tag) { - tag = tag.toUpperCase(); - while (obj != null) { - if (obj.tagName != null && obj.tagName.toUpperCase() == tag) - return obj; - obj = obj.parentNode; - } - return obj; - }, - - /** - * Test if an element is a child of a parent - * @function {static} testParent - * @param {DOM} obj - the child HTML element to be tested - * @param {DOM} parent - the parent element to be tested - * @returns true or false - */ - testParent: function (obj, parent) { - if (obj == null || parent == null) - return false; - while (obj != null) { - if (obj.parentNode == parent) - return true; - obj = obj.parentNode; - } - return false; - }, - - /** - * Find the first child of a given tag name - * @function {static} firstElement - * @param {DOM} parent - the parent element to be tested - * @param {string} tag - the tag name to be searched - * @returns the child HTML element - */ - firstElement: function (parent, tag) { - if (parent == null) - return null; - for (var i = 0; i < parent.childNodes.length; ++i) { - var c = parent.childNodes[i]; - if (tag == null && c.nodeName != '#text' || tag != null && c.nodeName == tag) - return c; - } - return null; - }, - - arrayContainsArray: function (superset, subset) { - for (var i = 0; i < subset.length; ++i) { - if (this.indexOf(superset, subset[i]) < 0) - return false; - } - return true; - }, - - indexOf: function (list, a, ignorecase) { - if (list == null) - return -1; - - if (ignorecase && typeof (a) == "string") - a = a.toLowerCase(); - else if (typeof (a) != "string") - ignorecase = false; - - for (var i = 0; i < list.length; ++i) { - var s = list[i]; - if (ignorecase) - s = s.toLowerCase(); - if (s == a) - return i; - } - return -1; - }, - - delFromArray: function (list, a) { - var n = 0; - for (var i = list.length - 1; i >= 0; --i) { - if (list[i] == a) { - list.splice(i, 1); - ++n; - } - } - return n; - }, - - /** - * Post data to a url - * @function {static} post - * @param {string} url - the destination url to to be posted to - * @param {dictionary} args - the data to be posted - * @param {string} target - the target frame - * @returns null - */ - post: function (url, args, target) { - if (this.form == null) - this.form = scil.Utils.createElement(document.body, "form", null, { display: "none" }); - - scil.Utils.removeAll(this.form); - for (var k in args) { - var f = scil.Utils.createElement(this.form, "textarea"); - f.name = k; - f.value = args[k]; - } - - this.form.target = target; - this.form.method = "post"; - this.form.action = url; - this.form.submit(); - }, - - postIframe: function (url, args) { - if (this.postform == null) - this.postform = scil.Utils.createElement(document.body, "form", null, { display: "none" }); - - dojo.io.iframe.send({ - url: url, - form: this.form, - method: "POST", - content: args, - timeoutSeconds: 5, - preventCache: true, - handleAs: "text", - error: function (data) { }, - handle: function (data) { } - }); - }, - - alert: function (s) { - if (scil.Utils.isNullOrEmpty(s)) - return; - if (s.length > 1000) - s = s.substr(0, 1000) + "..."; - if (scil.Utils.nativemode) { - this.alert2(s, "JSDraw2.Editor Message"); - } - else { - alert(s); - } - }, - - /** - * Download data from a url - * @function {static} download - * @param {string} url - the destination url - * @param {function} callback - the callback function - * @returns null - */ - download: function (url, callback) { - if (url.indexOf('?') > 0) - url += "&__tm=" + new Date().getTime(); - else - url += "?__tm=" + new Date().getTime(); - if (scil.Utils.startswith(url, "http://")) { - var jsonpArgs = { - url: url, - callbackParamName: "callback", - load: callback, - error: function (error) { alert(error); } - }; - dojo.io.script.get(jsonpArgs); - } - else { - var xhrArgs = { - url: url, - handleAs: "text", - load: callback, - error: function (error) { /*alert(error);*/ } - }; - dojo.xhrGet(xhrArgs); - } - }, - - /** - * Perform an Ajax call - *
-    * Example:
-    *    var callback = function(ret) {
-    *        alert(ret.message);
-    *    };
-    *    scilligence.ajax("/path/ajax.ashx", callback, { username: "tom", password: "123" });
-    * 
- * @function {static} ajax - * @param {string} url - the destination url - * @param {function(dictionary)} callback - the callback function - * @param {dictionary} params - data to be sent - * @returns null - */ - ajax: function (url, callback, params, opts) { - if (opts == null) - opts = {}; - - var xhrArgs = { - url: url, - sync: opts.sync, - handleAs: "text", - content: scil.Utils.stupidTomcatBug(params), - timeout: opts.timeout, - error: function (data) { - if (opts.showprogress) - scil.Progress.hide(); - - if (opts.onError != null) - opts.onError(data); - else - scil.Utils.alert(data.message); - }, - load: function (data) { - if (opts.showprogress) - scil.Progress.hide(); - - scil.Utils.ajaxCallback(data, callback, opts.onError, opts.ignoresucceedcheck); - if (scil.User != null && scil.User.onAjax != null) - scil.User.onAjax(); - } - }; - - if (opts.showprogress) - scil.Progress.show((opts.caption == null ? "Loading ..." : opts.caption), false, (opts.message == null ? "Communicating with the server ..." : opts.message), false); - - if (scil.Utils.onajaxcall != null) - scil.Utils.onajaxcall(xhrArgs, opts); - - if (opts.headers != null) - xhrArgs.headers = opts.headers; - - switch (opts.verb) { - case "delete": - case "del": - dojo.xhrDelete(xhrArgs); - break; - case "put": - dojo.xhrPut(xhrArgs); - break; - case "get": - dojo.xhrGet(xhrArgs); - break; - default: - dojo.xhrPost(xhrArgs); - break; - } - }, - - stupidTomcatBug: function (params) { - return params; - }, - - ajaxwait: function (url, params) { - var ret = null; - var fun = function (r) { ret = r; }; - this.ajax(url, fun, params, { sync: true }); - return ret; - }, - - /** - * Perform an JSONP call - *
-    * Example:
-    *    var callback = function(ret) {
-    *        alert(ret.message);
-    *    };
-    *    scilligence.ajax("http://otherserver/path/ajax.ashx", callback, { username: "tom", password: "123" });
-    *
-    *    // cross domain call to post large data
-    *    var url = "http://server/jsdraw/service.aspx?cmd=";
-    *    var jsd = JSDraw.get("div1");
-    *    scil.Utils.jsonp(url + "jsdraw2img", function (ret) {
-    *        alert(ret.src);
-    *    }, { jsdraw: jsd.getXml() }, { xdomainurl: url + "xdomain.postdata" });
-    * 
- * @function {static} jsonp - * @param {string} url - the destination url - * @param {function} callback - the callback function - * @param {dictionary} params - data to be sent - * @returns null - */ - jsonp: function (url, callback, params, opts) { - if (opts == null) - opts = {}; - - if (params == null) - params = { wrapper: "jsonp" }; - else - params.wrapper = "jsonp"; - - if (scil.Utils.startswith(url, "//")) { - var s = (window.location + "").toLowerCase(); - if (scil.Utils.startswith(s, "https:")) - url = "https:" + url; - else - url = "http:" + url; - } - - var p = url.indexOf('?'); - if (p < 0) - url += "?"; - else - url += "&"; - url += "__jsdraw_timestamp__=" + new Date().getTime(); - - if (opts.showprogress) - scil.Progress.show((opts.caption == null ? "Loading ..." : opts.caption), false, (opts.message == null ? "Communicating with the server ..." : opts.message), false); - - if (opts.xdomainurl != null) { - scil.Utils.postXdomainData(opts.xdomainurl, function (xfilename) { - scil.Utils.jsonp(url, function (ret) { - if (opts.showprogress) - scil.Progress.hide(); - - if (callback != null) - callback(ret); - }, { _xfilename: xfilename }); - }, params); - } - else { - var jsonpArgs = { - url: url, - callbackParamName: "callback", - content: scil.Utils.stupidTomcatBug(params), - error: function (data) { - if (opts.showprogress) - scil.Progress.hide(); - - if (opts.onError != null) - opts.onError(data); - else - scil.Utils.alert(data.message); - }, - load: function (data) { - if (opts.showprogress) - scil.Progress.hide(); - - scil.Utils.ajaxCallback(data, callback, opts.onError, opts.ignoresucceedcheck); - } - }; - - if (scil.Utils.onjsonpcall != null) - scil.Utils.onjsonpcall(jsonpArgs); - - dojo.io.script.get(jsonpArgs); - } - }, - - getZindex: function (e) { - while (e != null) { - if (e.style != null && e.style.zIndex != "" && e.style.zIndex != null) - return parseInt(e.style.zIndex); - e = e.parentNode; - } - return 1; - }, - - onAjaxCallback: null, - ajaxCallback: function (data, callback, onError, ignoresucceedcheck) { - var ret = null; - switch (typeof (data)) { - case "string": - try { - eval("var o=" + data); - ret = o; - } - catch (e) { - scil.Utils.alert("Error when parsing Ajax results:\n" + e.message + "\n" + data); - return; - } - break; - case "object": - ret = data; - break; - default: - scil.Utils.alert("Unknown return format"); - break; - } - - if (scil.Utils.onAjaxCallback != null) { - if (scil.Utils.onAjaxCallback(ret)) - return; - } - - if (ignoresucceedcheck == true) { - if (callback != null) - callback(ret); - } - else if (ret.succeed) { - if (callback != null) - callback(ret.ret); - } - else { - if (scil.User != null && scil.User.needLogin != null && scil.User.needLogin(ret)) - return; - - if (onError != null) { - onError(ret); - } - else { - if (ret.errcode == "None") - scil.Utils.alert(ret.error); - else - scil.Utils.alert("[" + (ret.errcode == null ? "ERROR" : ret.errcode) + "]: " + ret.error); - } - } - }, - - ajaxUploadFile: function (form, url, params, callback) { - if (params == null) - params = {}; - if (url.toLowerCase().indexOf("wrapper=textarea") < 0) { - var p = url.indexOf('?'); - if (p > 0) - url += "&wrapper=textarea"; - else - url += "?wrapper=textarea"; - } - - // I#12036 - if (scil.Utils.___ajaxUploadFile == null) { - dojo.config.dojoBlankHtmlUrl = scil.Utils.imgSrc("blank.html"); - dojo.io.iframe.send({ - url: dojo.config.dojoBlankHtmlUrl, - form: form, - method: "get", - content: params, - timeoutSeconds: 60, - preventCache: true, - handleAs: "text" - }); - scil.Utils.___ajaxUploadFile == true; - } - - dojo.io.iframe.send({ - url: url, - form: form, - method: "post", - content: params, - timeoutSeconds: 60, - preventCache: true, - handleAs: "text", - error: function (data) { - scil.Progress.hide(); - scil.Utils.alert(data.message); - }, - handle: function (data) { - scil.Progress.hide(); - scil.Utils.ajaxCallback(data, callback); - } - }); - - scil.Progress.show("Uploading", false, "Communicating with the server ...", false); - }, - - ajaxPostFile: function (form, url, params, callback) { - if (params == null) - params = {}; - if (url.toLowerCase().indexOf("wrapper=textarea") < 0) { - var p = url.indexOf('?'); - if (p > 0) - url += "&wrapper=textarea"; - else - url += "?wrapper=textarea"; - } - dojo.io.iframe.send({ - url: url, - form: form, - method: "post", - content: params, - timeoutSeconds: 5, - preventCache: true, - handleAs: "text", - //error: function (data) { scil.Utils.alert(data.message); }, - handle: function (data) { if (callback != null) callback(data); } - }); - }, - - res: function (s) { - return JSDraw2.Language.res(s); - }, - - UploadFileDlg: scilligence.extend(scilligence._base, { - callback: null, - url: null, - params: null, - msg: null, - checkfiles: null, - dlg: null, - btn: null, - tbody: null, - files: [], - - constructor: function (multiple) { - var div = JsUtils.createElement(null, "div", "
"); - this.form = div.firstChild; - this.tbody = JsUtils.createTable(this.form, null, null, { margin: "6px", width: "350px" }, { align: "center" }); - var tr = JsUtils.createElement(this.tbody, "tr"); - this.msg = JsUtils.createElement(tr, "td"); - this.msg.colSpan = 2; - - if (multiple != null && multiple == true) - multiple = 5; - - var n = 1; - if (multiple && scil.Utils.isIE && scil.Utils.isIE < 10) - var n = multiple > 1 ? multiple : 5; - - var args = { size: 26, name: "file" }; - if (multiple && n == 1) - args.multiple = "multiple"; - - for (var i = 0; i < n; ++i) { - tr = JsUtils.createElement(this.tbody, "tr"); - JsUtils.createElement(tr, "td", scil.Utils.res("File") + ":"); - this.files[i] = JsUtils.createElement(JsUtils.createElement(tr, "td"), "file", null, null, args); - } - - if (scil.MobileData != null) { - var me = this; - tr = JsUtils.createElement(this.tbody, "tr"); - JsUtils.createElement(tr, "td", "
" + scil.Utils.res("From Mobile") + ":
", null, { valign: "top" }); - var td2 = JsUtils.createElement(tr, "td"); - this.mobileimages = JsUtils.createElement(td2, "hidden", null, null, { name: "mobileimages" }); - scil.Utils.createButton(td2, { label: "Show", type: "a", onclick: function () { me.showImageList(); } }); - this.imagelistdiv = JsUtils.createElement(td2, "div", null, { display: "none" }); - this.imagelist = scil.MobileData.createImageList(this.imagelistdiv, multiple); - } - - tr = JsUtils.createElement(this.tbody, "tr", null, { display: "none" }); - JsUtils.createElement(tr, "td", "Password:"); - JsUtils.createElement(JsUtils.createElement(tr, "td"), "password", null, null, { name: "jsdraw.upload.password" }); - this.passwordRow = tr; - - JsUtils.createElement(JsUtils.createElement(this.tbody, "tr"), "td", " "); - - tr = JsUtils.createElement(this.tbody, "tr"); - JsUtils.createElement(tr, "td"); - this.btn = JsUtils.createElement(scil.Utils.createElement(tr, "td"), "button", "" + scil.Utils.res("Upload")); - - this.dlg = new JSDraw2.Dialog("Upload File", div); - }, - - showImageList: function () { - if (this.imagelistdiv.style.display == "none") { - this.imagelistdiv.style.display = ""; - scil.MobileData.listImages(this.imagelist, this.params); - } - else { - this.imagelistdiv.style.display = "none"; - } - }, - - show: function (caption, message, url, callback, params, showpassword, postonly, checkfiles) { - this.dlg.show(caption); - this.postonly = postonly; - this.checkfiles = checkfiles; - if (this.imagelistdiv != null) { - this.imagelistdiv.style.display = "none"; - this.imagelist.clear(); - } - - var me = this; - if (this.btn != null) { - dojo.connect(this.btn, "onclick", function (e) { me.show2(); e.preventDefault(); }); - this.btn = null; - } - - this.callback = function (ret) { - if (callback != null) - callback(ret); - me.dlg.hide(); - }; - this.url = url; - this.params = params; - this.form.reset(); - this.passwordRow.style.display = showpassword ? "" : "none"; - this.msg.innerHTML = message; - }, - - show2: function () { - if (this.mobileimages != null) - this.mobileimages.value = scil.MobileData.getSelectedImages(this.imagelist); - - if (this.postonly) { - var filename = this.files[0].value; - var p = filename.lastIndexOf('\\'); - if (p > 0) - filename = filename.substr(p + 1); - var id = new Date().getTime(); - var args = this.params == null ? {} : scil.clone(this.params); - args._xfilename = id + "_" + filename; - - var me = this; - scil.Utils.ajaxPostFile(this.form, this.url, args, function () { me.callback(args._xfilename); }); - } - else { - var me = this; - if (this.checkfiles) { - var list = []; - var files = this.files[0].files; - for (var i = 0; i < files.length; ++i) - list.push(files[i].name); - this.checkfiles(list, function (overwrite) { - var args = scil.clone(me.params); - args.overwrite = overwrite; - scil.Utils.ajaxUploadFile(me.form, me.url, args, me.callback); - }); - } - else { - scil.Utils.ajaxUploadFile(me.form, me.url, me.params, me.callback); - } - } - } - }), - - postXdomainData: function (url, callback, data) { - var id = new Date().getTime(); - var args = scil.clone(data); - if (args == null) - args = {}; - args._xfilename = id; - - if (this.xdomainform == null) - this.xdomainform = scil.Utils.createElement(document.body, "form", null, { display: "none" }); - scil.Utils.ajaxPostFile(this.xdomainform, url, args, function () { if (callback != null) callback(args._xfilename); }); - }, - - /** - * Upload a file with Ajax - *
-    * Example:
-    *    var callback = function(ret) { alert(ret.message); };
-    *    scil.Utils.uploadFile("Uploade File", "Please upload attachments", "/uploade.aspx", callback, { project: "HIV" });
-    * 
- * @function {static} uploadFile - * @param {string} caption - the caption of uploading dialog - * @param {string} message - the message body of uploading dialog - * @param {string} url - the destination url - * @param {function} callback - the callback function - * @param {dictionary} params - data to be sent - * @param {bool} chk - reserved - * @param {bool} multiple - data to be sent - * @param {string} showpassword - * @param {bool} postonly - * @returns null - */ - uploadfileDlg: null, - uploadfileDlg2: null, - uploadFile: function (caption, message, url, callback, params, chk, multiple, showpassword, postonly, checkfiles) { - if (multiple) { - if (this.uploadfileDlg2 == null) - this.uploadfileDlg2 = new scil.Utils.UploadFileDlg(true); - this.uploadfileDlg2.show(caption, message, url, callback, params, showpassword, postonly, checkfiles); - this.uploadfileDlg2.check = chk; - } - else { - if (this.uploadfileDlg == null) - this.uploadfileDlg = new scil.Utils.UploadFileDlg(); - this.uploadfileDlg.show(caption, message, url, callback, params, showpassword, postonly, checkfiles); - this.uploadfileDlg.check = chk; - } - }, - - uploadFile2: function () { - var dlg = this.uploadfileDlg; - var params = dlg.params; - scil.Utils.ajaxUploadFile(this.uploadfileDlg.form, dlg.url, params == null ? {} : params, dlg.callback); - }, - - ie2touches: function (e) { - var list = e.getPointerList(); - var touches = []; - for (var i = 0; i < list.length; ++i) - touches.push({ pointerId: list[i].pointerId, clientX: list[i].clientX, clientY: list[i].clientY, target: e.target, button: e.button }); - touches.sort(function (a, b) { return a.pointerId - b.pointerId; }); - e.touches = touches; - return e; - }, - - getScreenSize: function (win) { - if (win == null) - win = window; - var scrollRoot = win.document.documentElement || win.document.body; - var uiWindow = win.document.parentWindow || win.document.defaultView; - return { - w: uiWindow.innerWidth || scrollRoot.clientWidth, - h: uiWindow.innerHeight || scrollRoot.clientHeight - }; - }, - - /** - * Convert a JSON object into a string - * @function {static} uploadFile - * @param {dictionary} v - the input jsop object - * @returns a string - */ - json2str: function (v, readable, restrict) { - var quot = restrict ? "\"" : "'"; - - if (v == null) - return "null"; - if (typeof (v) == "number") - return v; - if (typeof (v) == "boolean") - return v ? "true" : "false"; - if (typeof (v) == "string") { - var s = v.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); - if (quot == "\"") - s = s.replace(/\"/g, "\\\""); - else - s = s.replace(/\'/g, "\\'"); - return quot + s + quot; - } - if (typeof (v) == "object") { - if (v.length != null) { // array - var s = (readable ? "[ " : "["); - for (var i = 0; i < v.length; ++i) - s += (i > 0 ? (readable ? ", " : ",") : "") + this.json2str(v[i], readable, restrict); - s += (readable ? " ]" : "]"); - return s; - } - else { - var s = (readable ? "{ " : "{"); - var j = 0; - for (var k in v) { - if (k == null || k == '' || v[k] == null || k.substr(0, 1) == '_') - continue; - - if (++j > 1) { - if (s.substr(s.length - 1, 1) == "}") - s += (readable ? ",\r\n" : ","); - else - s += (readable ? ", " : ","); - } - - if (!restrict && /^[a-z|_]+[0-9|a-z|_]{0,1000}$/.test(k)) - s += k; - else - s += quot + k + quot; - s += (readable ? ": " : ":") + this.json2str(v[k], readable, restrict); - } - s += (readable ? " }" : "}"); - return s; - } - } - return "null"; - }, - - getMaxZindex: function () { - var z1 = this.getMaxZindex2("div"); - var z2 = this.getMaxZindex2("iframe"); - var z3 = this.getMaxZindex2("table"); - return Math.max(Math.max(z1, z2), z3); - }, - - getMaxZindex2: function (tag) { - // I#11869 - var zindex = document.body.className == "mce-fullscreen" ? 101 : 1; - var list = document.getElementsByTagName(tag); - for (var i = 0; i < list.length; ++i) { - if (list[i].style == null || list[i].style.display == "none") - continue; - var z = list[i].style.zIndex; - if (z != null && z != "") { - var k = parseInt(z); - if (k > zindex) - zindex = k; - } - } - return zindex; - }, - - isAllParentVisible: function (e) { - if (e == null) - return false; - - while (e != null && e.style != null) { - if (e.style.display == "none") - return false; - e = e.parentNode; - } - return true; - }, - - /** - * Convert an XML object into JSON object - * @function {static} xml2Json - * @param {XMLElement} parent - the parent XML element - * @param {string} tag - the xml tag name to be looked up - * @returns an array of object - */ - xml2Json: function (parent, tag) { - if (parent == null) - return null; - var list = parent.getElementsByTagName(tag); - if (list == null || list.length == 0) - return null; - - var ret = []; - for (var i = 0; i < list.length; ++i) { - var e = list[i]; - var item = { _e: e }; - for (var k = 0; k < e.attributes.length; ++k) { - var at = e.attributes[k]; - item[at.name] = at.value; - } - ret.push(item); - } - - return ret; - }, - - /** - * Convert a JSON oject array into an xml string - * @function {static} jsonList2Xml - * @param {array} list - the input array of objects - * @param {string} tag - the xml tag name to be wrapped in xml - * @returns a string - */ - jsonList2Xml: function (list, tag) { - if (list == null) - return ""; - - var s = ""; - for (var i = 0; i < list.length; ++i) - s += this.json2Xml(list[i], tag); - return s; - }, - - /** - * Convert a JSON oject into an xml string - * @function {static} json2Xml - * @param {dictionary} dict - the input object - * @param {string} tag - the xml tag name to be wrapped in xml - * @param {string} innerXml - the inner xml to be placed in the xml element - * @returns a string - */ - json2Xml: function (dict, tag, innerXml) { - if (dict == null) - return ""; - - var s = "<" + tag; - for (var k in dict) { - var v = dict[k]; - if (v == null || typeof (v) == "string" && v == "") - continue; - var type = typeof (v); - if (type != "object" && type != "function") - s += " " + k + "=\"" + scil.Utils.escXmlValue(dict[k]) + "\""; - } - if (innerXml != null && innerXml != "") - s += ">" + innerXml + ""; - else - s += "/>"; - return s; - }, - - /** - * Merge two arrays - * @function {static} joinArray - * @param {array} list1 - the first array - * @param {array} list2 - the second array - * @returns a new array - */ - joinArray: function (list1, list2) { - if (list1 == null && list2 == null) - return null; - else if (list1 == null) - return list2; - else if (list2 == null) - return list1; - - var ret = []; - if (typeof list1 == "string" || list1.length == null) { - ret.push(list1); - } - else { - for (var i = 0; i < list1.length; ++i) - ret.push(list1[i]); - } - if (typeof list2 == "string" || list2.length == null) { - ret.push(list2); - } - else { - for (var i = 0; i < list2.length; ++i) - ret.push(list2[i]); - } - - return ret; - }, - - /** - * Get inner xml of an xml element - * @function {static} getInnerXml - * @param {XmlElement} element - * @returns a string - */ - getInnerXml: function (e) { - if (e == null) - return; - - if (e.documentElement != null) - e = e.documentElement; - - if (e.innerXML) - return e.innerXML; - - if (e.xml) - return e.xml; - - if (typeof XMLSerializer != "undefined") { - var s = ""; - for (var i = 0; i < e.childNodes.length; ++i) - s += (new XMLSerializer()).serializeToString(e.childNodes[i]); - return s; - } - - return null; - }, - - getInnerText: function (e) { - if (e == null) - return; - - if (e != null && e.documentElement != null) - e = e.documentElement; - return scil.Utils.trim(e.innerText || e.textContent || e.text); - }, - - getChildXmlElements: function (e, tag) { - if (e != null && e.documentElement != null) - e = e.documentElement; - if (e == null) - return null; - - var ret = []; - for (var i = 0; i < e.childNodes.length; ++i) { - if (e.childNodes[i].tagName == tag) - ret.push(e.childNodes[i]); - } - return ret; - }, - - num2letter: function (i, lowercase) { - var s = ""; - while (i > 0) { - var c = (i - 1) % 26; - s = String.fromCharCode(c + (lowercase ? 97 : 65)) + s; - i = (i - c - 1) / 26; - } - return s; - }, - - isImg: function (ext) { - return ext == "gif" || ext == "png" || ext == "jpg" || ext == "jpeg" || ext == "tif" || ext == "tiff" || ext == "bmp"; - }, - - isOfficeFile: function (ext) { - return ext == "doc" || ext == "docx" || ext == "rtf" || ext == "ppt" || ext == "pptx" || ext == "xls" || ext == "xlsx"; - }, - - isPDF: function (ext) { - return ext == "pdf"; - }, - - isSpectraFile: function (ext) { - return ext == "jdx"; - }, - - isChemFile: function (ext) { - return ext == "cdx" || ext == "cdxml" || ext == "jsd" || ext == "jsdraw" || ext == "mol" || ext == "sdf" || ext == "mol2" || ext == "cml" || - ext == "skc" || ext == "tgf" || ext == "mrv" || ext == "rxn" || ext == "rdf" || ext == "helm" || ext == "xhelm"; - }, - - getFileExt: function (filename) { - if (filename == null) - return null; - var p = filename == null ? -1 : filename.lastIndexOf('.'); - if (p <= 0) - return null; - return filename.substr(p + 1); - }, - - isChildOf: function (e, parent) { - if (parent == null || e == null) - return false; - - while (e != null) { - if (e.parentNode == parent) - return true; - e = e.parentNode; - } - return false; - }, - - getElements: function (parent, name, ignorecase) { - var ret = []; - if (parent != null && parent.childNodes != null) { - for (var i = 0; i < parent.childNodes.length; ++i) { - var a = parent.childNodes[i]; - if (a.tagName == name || ignorecase && a.tagName != null && name != null && a.tagName.toLowerCase() == name.toLowerCase()) - ret.push(a); - } - } - return ret; - }, - - getFirstElement: function (parent, name) { - var ret = []; - if (parent != null && parent.childNodes != null) { - for (var i = 0; i < parent.childNodes.length; ++i) { - var a = parent.childNodes[i]; - if (name == null && a.tagName != null || name != null && a.tagName == name) - return a; - } - } - return null; - }, - - parseIndex: function (s) { - if (s == null) - return null; - var s2 = s.replace(/[0-9]+$/, ""); - if (s2 == s) - return { prefix: s2, index: null }; - return { prefix: s2, index: parseInt(s.substr(s2.length)) }; - }, - - removeArrayItem: function (list, item) { - var p = scil.Utils.indexOf(list, item); - if (p < 0) - return false; - list.splice(p, 1); - return true; - }, - - removeArrayItems: function (list, items) { - var n = 0; - for (var i = 0; i < items.length; ++i) - if (this.removeArrayItem(list, items[i])) - ++n; - return n; - }, - - moveToScreen: function (x, y, e, left) { - var d = dojo.window.getBox(); - if (x + e.offsetWidth > d.l + d.w) { - if (left != null) - x = left - e.offsetWidth; - else - x = d.l + d.w - e.offsetWidth; - } - if (x < 0) - x = 0; - - if (y + e.offsetHeight > d.t + d.h) - y = d.t + d.h - e.offsetHeight; - if (y < 0) - y = 0; - - e.style.left = x + "px"; - e.style.top = y + "px"; - }, - - unselectable: function (e) { - e.onselectstart = function () { return false; }; - e.setAttribute("unselectable", "on"); - dojo.style(e, { - webkitTouchCallout: "none", - webkiUserDelect: "none", - khtmlUserSelect: "none", - MozUserSelect: "none", - msUserSelect: "none", - userSelect: "none" - }); - }, - - letter2num: function (s) { - if (scil.Utils.isNullOrEmpty(s)) - return 0; - - var ret = 0; - s = s.toUpperCase(); - for (var i = 0; i < s.length; ++i) { - var c = s.charCodeAt(i); - if (c >= 65 && c <= 90) - ret = ret * 26 + (c - 65 + 1); - } - - return ret; - }, - - num2letter: function (i_1based, lowercase) { - var s = ""; - while (i_1based > 0) { - var c = (i_1based - 1) % 26; - s = String.fromCharCode(c + (lowercase ? 97 : 65)) + s; - i_1based = (i_1based - c - 1) / 26; - } - return s; - }, - - connect: function (element, event, fun) { - return dojo.connect(element, event, fun); - }, - - array2str: function (list, sep) { - if (list == null || list.length == 0) - return ""; - - var s = ""; - if (sep == null) - sep = ','; - for (var i = 0; i < list.length; ++i) { - if (i > 0) - s += sep; - if (list[i] != null) - s += list[i]; - } - return s; - }, - - isDictEmpty: function (obj) { - if (obj == null) - return true; - for (var k in obj) - return false; - return true; - }, - - getDictValues: function (dict, list) { - if (dict == null) - return null; - - if (list == null) - list = []; - else if (list == true) - list = [""]; - - for (var k in dict) - list.push(dict[k]); - return list; - }, - - getDictKeys: function (dict, list) { - if (dict == null) - return null; - - if (list == null) - list = []; - else if (list == true) - list = [""]; - - for (var k in dict) - list.push(k); - return list; - }, - - getDictKeyByValue: function (dict, v) { - if (dict == null) - return null; - for (var k in dict) { - if (dict[k] == v) - return k; - } - return null; - }, - - setEnv: function (env) { - if (env == null || env == "") - return; - document.body.style.backgroundImage = scil.Utils.imgSrc("img/" + env + ".gif", true); - document.body.style.backgroundRepeat = "no-repeat"; - }, - - sound: function (wav) { - if (this.isIE && this.isIE < 9) - return; - - if (this.__sound == null) - this.__sound = this.createElement(document.body, "audio", null, { display: "none" }); - if (this.__sound.src != wav) - this.__sound.src = wav; - this.__sound.play(); - }, - - escapeHtml: function (s) { - if (s == null) - return ""; - - return s.replace(/>/g, ">").replace(/ 255) - sum += 2; - else - ++sum; - } - return sum; - }, - - areListEq: function (x, y) { - if (x == y) - return true; - if (x == null && y != null || x != null && y == null || x.length != y.length) - return false; - for (var i = 0; i < x.length; ++i) { - if (x[i] != y[i]) - return false; - } - return true; - }, - - areDictEq: function (main, to) { - if (main == to) - return true; - if (main == null || to == null) - return false; - for (var k in main) { - var x = main[k]; - var y = to[k]; - if (!(x == y || x == null && y == "" || x == "" && y == null)) - return false; - } - return true; - }, - - splitStr: function (s, separator) { - if (s == null) - return null; - - var ret = []; - var ss = s.split(separator); - for (var i = 0; i < ss.length; ++i) - ret.push(this.trim(ss[i])); - return ret; - }, - - isEmptyStr: function (s) { - return this.isNullOrEmpty(s); - }, - - regFindAllMatches: function (s, pattern, start) { - var ret = []; - if (s == null) - return ret; - - if (start > 0) - s = s.substr(start); - else - start = 0; - - var m; - var st = 0; - while ((m = pattern.exec(s)) != null) { - var p = m.index; - var w = m + ""; - ret.push({ start: st + p + start, str: w }); - - st += p + w.length; - s = s.substr(p + w.length); - } - - return ret; - }, - - isNumber: function (s, allowoperator) { - if (typeof (s) == "number") - return true; - if (scil.Utils.isNullOrEmpty(s)) - return false; - - var p = s.indexOf('.'); - if (p > 0) { - var i = s.indexOf(','); - if (i > 0 && i < p) - s = s.replace(/[,]/g, ''); - } - - // I#11086 - if (allowoperator) - return new RegExp("^[>|<|≥|≤]?[ ]{0,50}[-]?[0-9]+([\.][0-9]{0,50})?([e|E][-|+][0-9]+)?([ ]{0,50}[±][0-9]{0,50}([\.][0-9]{0,50})?)?$").test(s + ""); - else - return !isNaN(s); - }, - - htmlDecode: function (s) { - if (scil.Utils.isNullOrEmpty(s)) - return s; - var e = document.createElement('div'); - e.innerHTML = s; - return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; - }, - - html2Text: function (html) { - if (this.isNullOrEmpty(html)) - return html; - var e = document.createElement('div'); - e.innerHTML = html; - return e.childNodes.length === 0 ? "" : this.getInnerText(e); - }, - - parseNumber: function (s) { - var n = s == null ? NaN : parseFloat(s); - return isNaN(n) ? null : n; - }, - - /** - * Test if it is null or empty string - * @function {static} isNullOrEmpty - * @param {var} s - var to be tested - * @returns bool - */ - isNullOrEmpty: function (s) { - return s == null || typeof (s) == "string" && s == ""; - }, - - /** - * Test if it is not a number - * @function {static} isNaN - * @param {var} n - var to be tested - * @returns bool - */ - isNaN: function (n) { - return n == null || isNaN(n); - }, - - /** - * Get outer xml of an XML element - * @function {static} getOuterXml - * @param {XMLElement} e - * @returns a string - */ - getOuterXml: function (e) { - if (e == null) - return null; - return e.xml != null ? e.xml : (new XMLSerializer()).serializeToString(e); - }, - - /** - * Add css script in a page - * @function {static} addCss - * @param {string} code - css script - */ - addCss: function (code) { - var style = document.createElement('style'); - style.type = 'text/css'; - - if (style.styleSheet) { - // IE - style.styleSheet.cssText = code; - } else { - // Other browsers - style.innerHTML = code; - } - - document.getElementsByTagName("head")[0].appendChild(style); - }, - - /** - * Insert all items of a dirctionary in another dictionary - * @function {static} insertAfterDict - * @param {dict} dict - destination - * @param {dict} items - items to be inserted - * @param {string} key - reference item - */ - insertAfterDict: function (dict, items, key) { - var found = false; - - var temp = {}; - for (var k in dict) { - if (k == key) { - found = true; - } - else if (found) { - temp[k] = dict[k]; - delete dict[k]; - } - } - - for (var k in items) - dict[k] = items[k]; - - for (var k in temp) - dict[k] = temp[k]; - }, - - /** - * Insert all items of a dirctionary in another dictionary - * @function {static} insertBeforeDict - * @param {dict} dict - destination - * @param {dict} items - items to be inserted - * @param {string} key - reference item - */ - insertBeforeDict: function (dict, items, key) { - var found = false; - - var temp = {}; - for (var k in dict) { - if (k == key || found) { - found = true; - temp[k] = dict[k]; - delete dict[k]; - } - } - - for (var k in items) - dict[k] = items[k]; - - for (var k in temp) - dict[k] = temp[k]; - }, - - disableSelection: function (d) { - if (d == null) - return; - - scil.apply(d.style, { - webkitTouchCallout: "none", /* iOS Safari */ - webkitUserSelect: "none", /* Chrome */ - mozUserSelect: "none", /* Firefox */ - msUserSelect: "none", /* IE/Edge */ - userSelect: "none" - }); - }, - - getLastBarcode: function (callback, category, email, url) { - scil.Utils.jsonp(url != null ? url : "JSDraw/Service.aspx?cmd=mobile.getlast", function (ret) { - callback(ret); - }, { category: category, useremail: email }); - }, - - beep: function (doublebeep) { - if (typeof (Audio) == "undefined") - return; - - if (this._beepobj == null) - //this._beepobj = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU="); - this._beepobj = new Audio("data:audio/wav;base64,UklGRtoEAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YbUEAAB9dXFpa3F4fYSLkZiUjoeCe3RuaWtze36GjJOZkYyGgHpybGhvc3uBiI2UmZCKhX93cWxob3Z9g4mQlZaPioN8dm9qanF4f4OLkZeUjoiBe3RvaWxzeICGi5OYlIuFgXlybWltdHuBiI6Ul5CLhn14cmlqcHV8g4mOl5ePiYR8dnBoa3F3foWKkZaVjoiBenVwZ2xyeoCFjZKXlIyGgHpza2lvdHmCh4+Tl5KKhX54cWtpb3Z9gYmPlpePiYN9dnBoa3F4foOLkZeWjYmAfHRvZ25yeX+FjZKXlIyFgXlza2lvc3uAh46Vl5CLhX93cWtqb3V9g4iQlZePioJ9dnFoa3F4foSKkZaUj4eBfHVuaWtzeX+GjJKYk4yGgHl0bWdudXt/iI2VmJCMhX53cWtqb3Z8g4iQlZaPioN8dnFoa3B4foSKkZeVjoiCe3RuaWxzeX+Gi5OXk42Gf3tzbGhtdXuBh4yVl5GMhH54cmtpcHV8g4mOlpaRiYN9dm9raXF4fYSLkJaWjoeCenZuaGxzeICFjJOXk4yHf3pzbWltdHqBiI2Ul5GNhH54cmtpbnd7gomQlZePi4J9dnBqanF3fYOLkJiUj4eBfHVuaWtzeX+FjJKYk4yHgHpzbGltc3uBh42Vl5GLhX92c2ppcXV8gomPlZiOioJ+dnFpaXF5fYOKkZeWjYiDenVuaWtzeIGFjJKXk42GgHl1bWhtdHt/h42Vl5KLhH93c2tob3V9g4iPlZePi4N8d3Bpa3F3foSJkZaWj4eCfHNvaGtyen+FjJGYlIuIgHl0bGhuc3uBh42Ul5KMg4B4cmtocXR8g4mPlZWRioJ9d29ram93foSJkZeUjomCe3VvaG1yd3+Hi5KYlI2GgHpzbmdtdHqBiIyVlpKLhH95cmppb3V8g4iOlpeQiYN+dnFqaXJ2fYSLj5iUj4iCfHRuaWxzeH+FjJGYk42Hf3tzbWhudHqAho6TmZGLhX94c2ppbnZ8gomOlpePi4J+dnBqanB3foOKkJeWjoiBfHRwaGxyeH+Gi5KYk46GgXpzbWdudHqAh46TmJGMhX54cmtpb3V8g4ePlZiPioR9dnFpa3B2foOKkZaVj4iBfHZuaWxyeX6EjZGYlI2GgXlzbmhuc3qBho2Ul5KLhX95cWtpcHV8gYiPlZePi4R8d3FpanB3foOKkJiVjomBe3ZuamtyeICFipOWlI6FgXp1a2psc3uAh46SmJKLhX94c2tocHR9goiOlZeRioN9d3BqaXF3foKLkJWVj4mBfHVvaWtyeH+Gi5KXloyHgHl0bmhuc3qAh42Tl5KMhX55cmtocHZ7goiOlZePioR8eHBqanF2fYSJkJiVj4iCfHZuaGxzeH2Hi5KXlY2FgHtzbWltc3qAh42UlpKMhX94c2tqbnZ6gomOlpaRi4N9d3FpanF2fYSKkJWWjomCe3ZvaWtxeX6Fi5KYk42HgXp0bmhtc3uAhoyUmJKLhYB4c2tocHR9gYiOlpeQioN9d3JqanB3fISJkJeVj4iBfnRwaWpyeX6FjJGXlI6GgHp1bGlucnqBhoyUmJKMhH94c21nb3V8gYmOlZeQi4N+d3FqaXB3fQA="); - this._beepobj.play(); - - if (doublebeep) { - var me = this; - setTimeout(function () { me._beepobj.play(); }, 300); - } - }, - - textareaSelect: function (ta, startPos, endPos) { - // do selection - // Chrome / Firefox - if (typeof (ta.selectionStart) != "undefined") { - ta.focus(); - ta.selectionStart = startPos; - ta.selectionEnd = endPos; - } - - // IE - if (document.selection && document.selection.createRange) { - ta.focus(); - ta.select(); - var range = document.selection.createRange(); - range.collapse(true); - range.moveEnd("character", endPos); - range.moveStart("character", startPos); - range.select(); - } - }, - - /** - * Fire an event - * @function {static} fireEvent - * @param {DOM} element - * @param {string} eventname - */ - fireEvent: function (element, eventname, bubbles, cancelable, args) { - var event; // The custom event that will be created - - if (document.createEvent) { - event = document.createEvent("HTMLEvents"); - event.initEvent(eventname, bubbles == null ? true : bubbles, cancelable == null ? true : cancelable); - } else { - event = document.createEventObject(); - event.eventType = eventname; - } - - if (args != null) - scil.apply(event, args); - - event.eventName = eventname; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent("on" + event.eventType, event); - } - }, - - sum: function (list) { - return scil.Math.sum(list); - }, - - avg: function (list) { - return scil.Math.avg(list); - }, - - stdev: function (list) { - return scil.Math.stdev(list); - } -}; - -scil.form = {}; -JsUtils = scil.Utils; -scil.Utils.padleft = scil.Utils.padLeft; -scil.Utils.padright = scil.Utils.padRight; - - - -/***/ }), - -/***/ "./form/Form.ts": -/*!**********************!*\ - !*** ./form/Form.ts ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ButtonTypes: () => (/* binding */ ButtonTypes), -/* harmony export */ Form: () => (/* binding */ Form), -/* harmony export */ FormInt: () => (/* binding */ FormInt) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -var ButtonTypes; -(function (ButtonTypes) { - ButtonTypes["SELECT"] = "select"; -})(ButtonTypes || (ButtonTypes = {})); -/** - * Form class - * @class scilligence.Form - *
- * Supported field types:
- *    basic types: hidden, number, text, radio, date, color
- *    list types: select, dropdowninput, editableselect, dropdowncheck, multiselect
- *    table and text: table, tabtext, richtext, html, plaintext
- *    chemistry and biology: jsdraw, jdraw.fm, jsdraw.se, jsdraw.table, plate, sketches, plates
- *    file: file, filepath, filelink, filedblink, image
- *    form: subform
- * Example:
- *    <script type="text/javascript">
- *        dojo.ready(function () {
- *            var parent = scil.Utils.createElement(document.body, "div");
- *            var columns = {
- *                mass: { label: "Mass", type: "number", width: 200, unit: "g" },
- *                name: { label: "Compound Name", type: "input", width: 600, button: { label: "Test", onclick: function () { alert(99); } } },
- *                vendor: { label: "Vendor", type: "select", options: ["Company A", "Company B"], width: 700 }
- *            };
- *            var form = new scil.Form({ viewonly: false });
- *            form.render(parent, columns, { immediately: true });
- *        });
- *    </script>
- * 
- */ -class FormInt { - /** - * @constructor Form - * @param {bool} viewonly - build a viewonly Form - */ - constructor(options) { - this.T = 'FORM'; - if (typeof (options) == 'boolean') - this.options = { viewonly: options }; - else if (options == null) - this.options = {}; - else - this.options = options; - this.lang = this.options.lang == null ? scil.Lang : this.options.lang; - this.viewonly = this.options.viewonly; - this.items = null; - this.tbody = null; - this.fields = null; - this.buttons = null; - } - destory() { - this.items = null; - scil.Utils.removeAll(this.tbody); - this.tbody = null; - this.fields = null; - this.buttons = null; - } - /** - * Collect form data in xml format - * @function getXml - * @returns xml string - */ - getXml(nowrapper) { - var ret = nowrapper ? '' : '\n'; - for (var id in this.fields) { - var field = this.fields[id]; - var v = scil.Form.getFieldData(field, this.items[id]); - if (v != null && v != '') { - ret += ''; - if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' || field.stype == 'jsdraw.se' || - field.stype == 'jsdraw.fm' || field.stype == 'table' || field.stype == 'plate' || field.stype == 'plates') - ret += v; - else - ret += scil.Utils.escXmlValue(v); - ret += '\n'; - } - } - if (!nowrapper) - ret += ''; - return ret; - } - /** - * Set form data - * @function setXml - * @param {xml} data the form data, *id* is the key - */ - setXml(xml) { - try { - var data = scil.Form.xml2Json(xml); - this.setData(data); - } - catch (e) { - alert('Error raised when setting form data: ' + e.message); - } - } - /** - * Collect form data - * @function getData - * @returns the form data as a dictionary, with *id* as the key - */ - getData(includeNullValues) { - var ret = {}; - for (var id in this.fields) { - var field = this.fields[id]; - if (field != null) { - var v = scil.Form.getFieldData(field, this.items[id]); - if (includeNullValues || !scil.Utils.isNullOrEmpty(v)) - ret[id] = v; - } - } - return ret; - } - /** - * Set form data - * @function setData - * @param {dictonary} data the form data, *id* is the key - */ - setData(data, overwritemode) { - this.setDirty(false); - for (var id in this.fields) { - var field = this.fields[id]; - if (field == null) - continue; - var v = null; - if (data != null) { - v = data[id]; - var item = this.items[id]; - if (v == null && item != null) { - if (item.alternativekey != null) - v = data[item.alternativekey]; - if (v == null && item.was != null) - v = data[item.was]; - } - } - if (overwritemode) { - if (v != null) - scil.Form.setFieldData(field, this.items[id], this.viewonly, v, data); - } - else { - scil.Form.setFieldData(field, this.items[id], this.viewonly, v, data); - } - } - this.setDirty(false); - } - /** - * Set a field value - * @function setFieldValue - * @param {string} id - the id of the field - * @param {string} v - value to be set - */ - setFieldValue(id, v, data) { - var field = this.fields[id]; - scil.Form.setFieldData(this.fields[id], this.items[id], this.viewonly, v, data); - } - /** - * Clear field values - * @function clear - */ - clear() { - this.setData({}); - } - onchange(field, args) { - this.dirty = true; - if (this.options.onchange != null) - this.options.onchange(field, this, args); - } - setDirty(f) { - this.dirty = f == null || f == true ? true : false; - } - preventUnsaved(msg) { - var me = this; - scil.connect(window, 'onbeforeunload', function (e) { - if (me.dirty) { - if (msg == null) - msg = 'WARNING: Form data are not saved yet.'; - var s = scil.Lang.res(msg); - if (e != null) - e.returnValue = s; - return s; - } - }); - } - switchForm(key) { - if (this.options.alternativeforms == null) - return false; - if (this.alternativeforms == null) { - this.alternativeforms = {}; - this.alternativeforms[''] = { tbody: this.tbody, fields: this.fields, items: this.items }; - } - if (this.alternativeforms[key] == null) { - var items = this.options.alternativeforms[key]; - if (items != null) { - this.render2(items, this.parent, this.renderoptions); - this.alternativeforms[key] = { tbody: this.tbody, fields: this.fields, items: this.items }; - } - } - var cur = this.alternativeforms[key]; - if (cur == null) - cur = this.alternativeforms['']; - this.tbody = cur.tbody; - this.fields = cur.fields; - this.items = cur.items; - for (var k in this.alternativeforms) - this.alternativeforms[k].tbody.parentNode.style.display = k == key ? '' : 'none'; - return true; - } - selectrow(key) { - this.highlightrow(this.items[key]); - } - onselectrow(e) { - var src = e.target || e.srcElement; - var td = scil.Utils.getParent(src, 'TD'); - var item = null; - for (var k in this.items) { - if (this.items[k] != null && (this.items[k].td1 == td || this.items[k].td2 == td)) { - item = this.items[k]; - break; - } - } - this.highlightrow(item); - } - highlightrow(item) { - if (this.currentrow == item) - return; - if (this.currentrow != null) { - this.currentrow.td1.style.backgroundColor = this.currentrowbckcolor; - if (this.currentrow.td2 != null) - this.currentrow.td2.style.backgroundColor = ''; - } - if (item != null) { - this.currentrowbckcolor = item.td1.style.backgroundColor; - item.td1.style.backgroundColor = JSDraw2.Skin.form.rowselectcolor; - if (item.td2 != null) - item.td2.style.backgroundColor = JSDraw2.Skin.form.rowselectcolor; - } - this.currentrow = item; - if (this.options.onselectrow != null) - this.options.onselectrow(item); - } - /** - * Render the form - * @function render - * @param {string or DOM} parent parent element - * @param {dict} items field definition - * @param {immediately: true/false, buttons:[] } options - */ - render(parent, items, options) { - this.parent = parent; - this.renderoptions = options; - this.render2(items, this.parent, this.renderoptions); - } - render2(items, parent, options) { - var align = options == null ? null : options.align; - var buttons = options == null ? null : options.buttons; - var immediately = typeof (options) == 'boolean' ? options : (options == null ? true : options.immediately != false); - this.tbody = null; - this.fields = {}; - this.items = {}; - this.buttons = []; - let item; - for (var k in items) { - item = items[k]; - if (item == null) - continue; - this.items[k] = item; - if (item.label == null && item.caption != null) - item.label = item.caption; - if (JSDraw2.Table != null && scil.Utils.indexOf(JSDraw2.Table.kNumberColumns, item.type) >= 0) { - item.type = 'number'; - if (item.unit == null) - item.unit = JSDraw2.Table.kDefaultUnits[item.type]; - } - } - if (this.options.usepostform) { - var div = JsUtils.createElement(parent, 'div', '
'); - this.postform = div.firstChild; - parent = this.postform; - } - var cols = this.options.cols; - if (!(cols > 0)) { - if (!(cols > 1)) - cols = 1; - for (var id in this.items) { - item = this.items[id]; - if (item.colspan > cols) - cols = item.colspan; - } - } - let tr; - var colspan = cols; - this.tbody = scil.Utils.createTable(parent); - var lastitem = null; - for (var id in this.items) { - item = this.items[id]; - if (typeof (item) == 'function') { - continue; - } - else if (item.type == 'group') { - tr = scil.Utils.createElement(this.tbody, 'tr'); - colspan = cols; - } - else if (lastitem != null && lastitem.type == 'group' || !(tr != null && cols > 1 && colspan < cols)) { - tr = scil.Utils.createElement(this.tbody, 'tr'); - colspan = item.colspan > 0 ? item.colspan : 1; - } - else { - colspan += item.colspan > 0 ? item.colspan : 1; - } - var field = this.newField(item, tr, immediately, (options == null ? null : options.hidelabel), (options == null ? null : options.vertical)); - if (field != null) - item.field = this.fields[id] = field; - if (item.type == 'group' && cols > 1) - item.td1.colSpan = cols * 2; - else if (item.colspan > 1) - item.td2.colSpan = (item.td2.colSpan > 0 ? item.td2.colSpan : 1) + (item.colspan - 1) * 2; - if (field != null && this.options.onenter != null && field.tagName == 'INPUT') - this.connectKeyEnter(field, this.options.onenter); - } - if (this.options.onselectrow != null) { - var me = this; - dojo.connect(this.tbody.parentNode, 'onclick', function (e) { - me.onselectrow(e); - }); - } - if (align != null) - this.tbody.parentNode.setAttribute('align', align); - if (buttons != null) { - tr = scil.Utils.createElement(this.tbody, 'tr'); - scil.Utils.createElement(tr, 'td', ' '); - tr = scil.Utils.createElement(this.tbody, 'tr'); - this.buttonTR = tr; - if (options == null || !options.vertical) - scil.Utils.createElement(tr, 'td'); - var td = scil.Utils.createElement(tr, 'td', null, { whiteSpace: 'nowrap' }); - if (options.centerbuttons) - td.style.textAlign = 'center'; - if (buttons.length > 0) { - for (var i = 0; i < buttons.length; ++i) { - var b = buttons[i]; - if (b == ' ') - scil.Utils.createElement(td, 'span', ' '); - else - this.buttons.push(scil.Utils.createButton(td, b, this.lang)); - } - } - else { - this.buttons.push(scil.Utils.createButton(td, buttons, this.lang)); - } - } - } - post(url, params, callback) { - if (this.postform == null) - return; - if (params == null) - params = {}; - scil.apply(params, this.getData()); - scil.Utils.ajaxUploadFile(this.postform, url, params, callback); - } - postForm(url, params, callback) { - if (this.postform == null) - return; - scil.Utils.ajaxUploadFile(this.postform, url, params, callback); - } - /** - * Check required fields - * @function checkRequiredFields - */ - checkRequiredFields() { - var fields = this.fields; - var n = 0; - for (var k in this.items) { - var item = this.items[k]; - var field = fields[k]; - if (item == null || field == null) - continue; - item.td1.style.backgroundColor = JSDraw2.Skin.form.labelstyles.backgroundColor; - if (item.type == 'jsdraw.table') { - n += field.jsd.checkRequiredFields(0); - } - if (!item.required) - continue; - var s = scil.Form.getFieldData(field); - if (scil.Utils.isNullOrEmpty(s)) { - item.td1.style.backgroundColor = 'red'; - ++n; - } - } - return n; - } - /** - * Reset required fields - * @function resetRequiredFields - */ - resetRequiredFields() { - var fields = this.fields; - for (var k in this.items) { - var item = this.items[k]; - var field = fields[k]; - if (item == null || field == null) - continue; - item.td1.style.backgroundColor = JSDraw2.Skin.form.labelstyles.backgroundColor; - } - } - connectKeyEnter(field, onenter) { - dojo.connect(field, 'onkeydown', function (e) { - if (e.keyCode == 13) { - onenter(field); - e.preventDefault(); - } - }); - } - newField(item, tr, immediately, hidelabel, veritcal) { - var me = this; - if (!this.viewonly) { - if (item.type == 'jsdraw' || item.type == 'xdraw') { - if (JSDraw2.defaultoptions != null && JSDraw2.defaultoptions.usexdraw) - item.type = 'xdraw'; - //if (item.options == null) - // item.options = {}; - // I#9132 - if (item.options != null) - item.options.ondatachange = function () { - me.onchange(field); - }; - else - item.ondatachange = function () { - me.onchange(field); - }; - } - else if (item.type == 'jsdraw.table' || item.type == 'jsdraw.se' || item.type == 'jsdraw.fm' || item.type == 'table' || - item.type == 'plate' || item.type == 'plates' || item.type == 'tabtext' || item.type == 'richtext' || item.type == 'plaintext') { - //if (item.options == null) - // item.options = {}; - // I#9132 - if (item.options != null) - item.options.onchange = function (jss, args) { - me.onchange(field, args); - }; - else - item.onchange = function (jss, args) { - me.onchange(field, args); - }; - } - } - var field = this.newField2(item, tr, immediately, hidelabel, veritcal); - if (field == null) - return null; - if (!this.viewonly) { - if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA') - scil.connect(field, 'onchange', function () { - me.onchange(field); - }); - else if (field.tagName == 'SELECT' && !JSDraw2.__touchmolapp) // TouchMol for Word fails here - scil.connect(field, scil.Utils.isIE && scil.Utils.isIE < 9 ? 'onclick' : 'onchange', function () { - me.onchange(field); - }); - if (field.tagName == 'INPUT' && item.mobiledata != null && item.type != 'number') - new scil.MobileData(field, { category: item.mobiledata, url: scil.MobileData.getDefaultUrl(false) }); - } - return field; - } - newField2(item, tr, immediately, hidelabel, veritcal) { - var s = item.label == null ? ' ' : this.lang.res(item.label) + ':'; - if (item.type == 'group') { - if (this.tbody.childNodes.length > 0) { - scil.Utils.createElement(scil.Utils.createElement(this.tbody, 'tr'), 'td', ' ', { fontSize: '50%' }, { colSpan: 2 }); - tr = scil.Utils.createElement(this.tbody, 'tr'); - } - tr.style.backgroundImage = scil.Utils.imgSrc('img/header-bg.gif', true); - tr.style.backgroundRepeat = 'repeat-x'; - var d = dojo.clone(JSDraw2.Skin.form.labelstyles); - scil.apply(d, { fontWeight: 'bold', color: '#555', background: '' }); - if (item.collapsible != false) - scil.apply(d, { backgroundImage: scil.Utils.imgSrc('img/collapse.gif', true), backgroundPosition: 'right', backgroundRepeat: 'no-repeat' }); - var td = scil.Utils.createElement(tr, 'td', s, d, { colSpan: 2 }); - if (item.collapsible != false) - dojo.connect(td, 'onclick', function (e) { - scil.Form.expand(e); - }); - item.group = td; - item.td1 = td; - return null; - } - else if (item.type == 'note') { - var td = scil.Utils.createElement(tr, 'td', null, null, { colSpan: 2 }); - var div = scil.Utils.createElement(td, 'div', this.lang.res(item.label || item.str), item.style); - if (item.color != null) - div.style.color = item.color; - item.td1 = td; - return null; - } - else { - if (hidelabel) { - item.td1 = scil.Utils.createElement(tr, 'td'); - } - else { - if (item.required) - s += '*'; - if (scil.Utils.isNullOrEmpty(item.icon)) { - item.td1 = scil.Utils.createElement(tr, 'td', s, JSDraw2.Skin.form.labelstyles); - } - else { - item.td1 = scil.Utils.createElement(tr, 'td'); - scil.Utils.createElement(item.td1, 'img', null, null, { src: item.icon }); - scil.Utils.createElement(item.td1, 'span', s); - } - if (item.labelstyle != null) - scil.apply(item.td1.style, item.labelstyle); - } - if (veritcal) - tr = scil.Utils.createElement(this.tbody, 'tr'); - var td = scil.Utils.createElement(tr, 'td', item.leading, null, { valign: 'top' }); - item.td2 = td; - var field = scil.Form.createField(td, item, this.viewonly, item.value, null, immediately, null, this); - if (item.type == 'hidden') { - tr.style.display = 'none'; - tr.setAttribute('hidden', '1'); - } - return field; - } - } - getFieldValue(key) { - return scil.Form.getFieldData(this.fields[key]); - } - focus(key) { - scil.Form.focus(this.fields, key); - } -} -class Form extends FormInt { - static focus(fields, key) { - if (fields == null) - return; - var field = null; - if (key == null) { - for (var k in fields) { - var f = fields[k]; - if (f != null && (f.tagName == 'INPUT' || f.tagName == 'TEXTAREA' || f.tagName == 'SELECT') && !f.disabled && !f.readOnly) { - var tr = scil.Utils.getParent(f, 'TR'); - if (tr != null && tr.style.display != 'none' && !f.disabled) { - field = f; - break; - } - } - } - } - else { - field = fields[key]; - } - if (field != null && field.style.dislay != 'none' && field.focus != null) { - try { - field.focus(); - } - catch (e) { - } - } - } - static mergeForm(src1, src2) { - if (src1 == null && src2 == null) - return null; - var ret = {}; - if (src1 == null) { - for (var k in src2) { - if (src2[k] != null) - ret[k] = src2[k]; - } - return ret; - } - if (src2 == null) { - for (var k in src1) { - if (src1[k] != null) - ret[k] = src1[k]; - } - return ret; - } - for (var k in src1) { - if (src2[k] == null && src1[k] != null) - ret[k] = src1[k]; - } - for (var k in src2) { - if (src2[k] != null) - ret[k] = src2[k]; - else - delete ret[k]; - } - return ret; - } - static createElement(parent, tag, html, styles, attributes, onclick) { - if (attributes != null && attributes.title != null) - attributes.title = scil.Lang.res(attributes.title); - return scil.Utils.createElement(parent, tag, html, styles, attributes, onclick); - } - static expand(e) { - var td = e.target || e.srcElement; - if (td.tagName != 'TD') - return; - var s = td.style.backgroundImage; - var expand = s.indexOf('expand.gif') > 0; - if (expand) - td.style.backgroundImage = scil.Utils.imgSrc('img/collapse.gif', true); - else - td.style.backgroundImage = scil.Utils.imgSrc('img/expand.gif', true); - var tr = td.parentNode.nextSibling; - while (tr != null && tr.childNodes.length != 1 && tr.getAttribute('buttonrow') != '1') { - if (tr.getAttribute('hidden') != '1') - tr.style.display = expand ? '' : 'none'; - tr = tr.nextSibling; - } - } - static _isAllString(s) { - if (s == null || typeof (s) != 'object') - return false; - if (s.length > 0) - return true; - var n = 0; - for (var k in s) { - if (typeof (s[k]) != 'string') - return false; - ++n; - } - return n > 0; - } - static _getListItems(item) { - if (typeof (item.items) == 'function') - item.items = item.items(); - var list = item.items; - if (list == null && item.options != null && item.options.items != null) { - list = item.options.items; - item.items = list; - item.options.items = null; - } - if (list == null && this._isAllString(item.options)) { - list = item.options; - item.items = list; - item.options = null; - } - return list; - } - static createField(parent, item, viewonly, value, values, immediately, fortable, form) { - var tag = 'input'; - var itemtype = item.type; - if (parent != null && (itemtype == 'input' || itemtype == 'select' || itemtype == 'date' || itemtype == 'color' || itemtype == 'radio' || itemtype == 'checkbox' || itemtype == null)) - parent.style.whiteSpace = 'nowrap'; - if ( /*fortable && */viewonly && (itemtype == null || itemtype == 'input' || itemtype == 'select' || itemtype == 'editableselect' || - itemtype == 'htmltext' || itemtype == 'multiselect' || itemtype == 'dropdowninput' || itemtype == 'dropdowncheck' || itemtype == 'date') && - item.template == null && (fortable || item.unit == null)) - itemtype = 'html'; - switch (itemtype) { - case '': - case 'hidden': - case 'date': - case 'color': - case 'editableselect': - case 'dropdowninput': - case 'dropdowncheck': - case 'multiselect': - tag = 'input'; - break; - case 'password': - tag = 'password'; - break; - case 'rawfile': - tag = 'file'; - break; - case 'number': - tag = 'input'; - break; - case 'htmltext': - tag = 'texarea'; - break; - case 'jsdraw': - case 'xdraw': - case 'jsdraw.fm': - case 'jsdraw.se': - case 'jsdraw.table': - case 'plate': - case 'plates': - case 'table': - case 'tabtext': - case 'richtext': - case 'plaintext': - case 'html': - case 'fileshelf': - case 'file': - case 'filepath': - case 'filelink': - case 'filedblink': - case 'subform': - case 'image': - case 'curve': - case 'sketches': - case 'code': - case 'signature': - tag = 'div'; - break; - case 'button': - tag = 'button'; - break; - case 'postfile': - tag = 'file'; - break; - case 'user': - tag = 'input'; - if (item.autosuggesturl == null) - item.autosuggesturl = 'Ajax.ashx?cmd=user.suggest'; - break; - default: - if (itemtype != null) - tag = itemtype; - break; - } - if (item.viewonly) - viewonly = item.viewonly; - //if (item.type == "number" && !viewonly && item.align == null) - //item.align = "right"; - if (viewonly) { - if (tag == 'textarea') - tag = 'div'; - } - if (typeof (parent) == 'string') - parent = dojo.byId(parent); - var field; - if (itemtype == 'checkbox') { - var p = scil.Utils.createElement(parent, 'label', null, { whiteSpace: 'nowrap' }); - field = scil.Utils.createElement(p, tag, null, item.style, item.attributes); - if (item.str != null) - scil.Utils.createElement(p, 'span', form.lang.res(item.str)); - } - else { - field = scil.Utils.createElement(parent, tag, null, item.style, item.attributes); - if (viewonly && tag == 'div' && (item.type == 'htmltext' || item.type == 'textarea') && - item.width != null && (item.style == null || item.style.maxWidth == null)) { - if (typeof (item.width) == 'number') - field.style.maxWidth = item.width + 'px'; - else - field.style.maxWidth = item.width; - //field.style.wordBreak ="break-all"; - field.style.wordWrap = 'break-word'; - } - } - if (item.type == 'select') - this._getListItems(item); - if (tag == 'select') { - var list = this._getListItems(item); - if (list != null) { - var addblank = item.addblank; - if (addblank == null) { - if (list.length == null) { - addblank = true; - for (var k in list) { - if (list[k] == null || list[k] == '') { - addblank = false; - break; - } - } - } - else { - if (list.length == 0 || list[0] != null && list[0] != '') - addblank = true; - } - } - if (addblank) { - // @ts-ignore - scil.Utils.listOptions(field, ['']); - } - scil.Utils.listOptions(field, list, value, null, item.sort != false ? true : false); - } - else if (item.url != null) { - scil.Form.listOptions(field, item.url); - } - } - if (!viewonly && item.button != null) { - if (item.button.length > 0) { - for (var i = 0; i < item.button.length; ++i) - this.createFieldButton(parent, item.button[i], form, field); - } - else { - this.createFieldButton(parent, item.button, form, field); - } - } - if (item.button2 != null) - scil.Utils.createButton(parent, item.button2); - if (!fortable && (item.str != null || item.unit != null) && itemtype != 'checkbox') - scil.Utils.createElement(parent, 'span', ' ' + (item.str || item.unit), { whiteSpace: 'nowrap' }); - var w = fortable && item.listwidth != null ? item.listwidth : item.width; - if (w != null && w > 0) - field.style.width = w + 'px'; - if (item.height > 0 && !(viewonly && tag == 'div' && (item.type == 'htmltext' || item.type == 'textarea'))) - field.style.height = item.height + 'px'; - if (item.align != null) - field.style.textAlign = item.align; - if (viewonly) { - if (tag == 'input' || tag == 'password') { - field.readOnly = true; - field.style.border = 'none'; - } - else if (tag == 'checkbox' || tag == 'select') { - field.disabled = true; - } - } - else { - if (item.readonly || item.viewonly) { - if (tag == 'input') - field.readOnly = true; - else if (tag == 'checkbox' || tag == 'radio' || tag == 'select') - field.disabled = true; - } - } - if (tag != 'div' || itemtype == 'textarea' || itemtype == 'html') - field.style.color = JSDraw2.Skin.form.fieldcolor; - field.stype = itemtype; - // I#10377 - // var args = item.options == null ? scil.clone(item) : item.options; - var args = scil.clone(item); - if (item.options != null) - scil.apply(args, item.options); - if (viewonly) - args.viewonly = viewonly; - if (itemtype == 'jsdraw' || itemtype == 'xdraw') { - var fn = function () { - if (itemtype == 'xdraw') - field.style.height = ''; - field.jsd = itemtype == 'jsdraw' || viewonly ? new JSDraw2.Editor(field, args) : new scil.XDraw(field, args); - if (!scil.Utils.isNullOrEmpty(value)) - scil.Form.setFieldData(field, item, viewonly, value); - }; - if (immediately) - fn(); - else - scil.ready(fn); - } - else if (itemtype == 'jsdraw.table') { - var fn = function () { - field.jsd = new JSDraw2.Table(null, args, field); - if (value != null) - field.jsd.setXml(value); - if (item.rows > 0) { - for (var i = field.jsd.getRowCount(); i < item.rows; ++i) - field.jsd.insert(); - } - }; - if (immediately) - fn(); - else - scil.ready(fn); - } - else if (itemtype == 'plate' || itemtype == 'plates') { - var fn = function () { - if (args.hidetable == null) - args.hidetable = true; - if (itemtype == 'plate') - field.jsd = new JSDraw2.Plate(field, args); - else - field.jsd = new JSDraw2.Plates(field, args); - if (value != null) - field.jsd.setXml(value); - }; - if (immediately) - fn(); - else - scil.ready(fn); - } - else if (itemtype == 'jsdraw.se') { - var fn = function () { - field.jsd = new JSDraw2.SequenceEditor(field, args); - if (value != null) - field.jsd.setXml(value); - }; - if (immediately) - fn(); - else - scil.ready(fn); - } - else if (itemtype == 'jsdraw.fm') { - var fn = function () { - field.jsd = new JSDraw2.Formulation(field, args); - if (value != null) - field.jsd.setXml(value); - }; - if (immediately) - fn(); - else - scil.ready(fn); - } - else if (itemtype == 'table') { - field.jsd = new scil.Table(args); - field.jsd.render(field, item.columns); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'tabtext') { - field.jsd = new scil.FieldTabText(field, args); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'code') { - field.style.marginBottom = '4px'; - field.jsd = new scil.FieldCode(field, args); - if (value != null) - field.jsd.setValue(value); - } - else if (itemtype == 'signature') { - field.jsd = new scil.FieldSignature(field, args); - if (value != null) - field.jsd.setValue(value); - } - else if (itemtype == 'richtext') { - field.jsd = new scil.FieldRichText(field, args); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'plaintext') { - field.jsd = new scil.FieldPlainText(field, args); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'subform') { - field.jsd = new scil.FieldSubform(field, args); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'file' || itemtype == 'filelink' || itemtype == 'filedblink' || itemtype == 'filepath' || itemtype == 'image') { - if (itemtype == 'file') - field.jsd = new scil.FieldFile(field, args); - else if (itemtype == 'image') - field.jsd = new scil.FieldImage(field, args); - else if (itemtype == 'filelink' || itemtype == 'filedblink' || itemtype == 'filepath') { - args.cmd = itemtype; - field.jsd = new scil.FieldFileLink(field, args); - } - if (item.render != null) - value = item.render(value, values); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'sketches') { - field.jsd = new scil.FieldSketches(field, args); - if (item.render != null) - value = item.render(value, values); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'fileshelf') { - field.jsd = new scil.FileShelf(field, args); - if (value != null) - field.jsd.list(value); - } - else if (itemtype == 'curve') { - field.jsd = new scil.FieldCurve(field, args); - if (value != null) - field.jsd.setXml(value); - } - else if (itemtype == 'number') { - field.jsd = new scil.FieldNumber(field, args); - this.setFieldData(field, item, viewonly, value, values); - } - else if (itemtype == 'date') { - if (!viewonly && !item.viewonly) - new scil.DatePicker(field, item.options); - if (value != null) { - if (value == '{today}') - value = scil.Utils.dateStr(new Date(), true, 'yyyy-mm-dd'); - } - this.setFieldData(field, item, viewonly, value, values); - } - else if (itemtype == 'color') { - field.jsd = new scil.ColorPicker2(field, { viewonly: viewonly }); - this.setFieldData(field, item, viewonly, value, values); - } - else if (itemtype == 'button') { - field.innerHTML = item.text; - } - else { - if (value != null || itemtype == 'html' && (item.template != null || item.render != null)) - this.setFieldData(field, item, viewonly, value, values); - } - if (itemtype == 'img' && item.src != null) - field.src = item.src; - if (item.title != null) - field.setAttribute('title', item.title); - if (item.onclick != null) - dojo.connect(field, 'onclick', function () { - item.onclick(field, item, form); - }); - if (field.tagName == 'INPUT') { - if (item.onenter != null) - dojo.connect(field, 'onkeydown', function (e) { - if (e.keyCode == 13) { - item.onenter(field); - e.preventDefault(); - } - }); - else if (scil.Utils.isIE && scil.Utils.isIE < 9) // fix bug I#6556 - dojo.connect(field, 'onkeydown', function (e) { - if (e.keyCode == 13) { - e.preventDefault(); - } - }); - } - if (item.autosuggest != null && item.autosuggest != '' && field.tagName == 'INPUT') - field.jsd = new scil.AutoComplete(field, item.autosuggest, item.options, form); - else if (item.autosuggesturl != null && item.autosuggesturl != '' && field.tagName == 'INPUT') - field.jsd = new scil.AutoComplete(field, item.autosuggesturl, item.options, form); - var options = item.options; - if (options == null) - options = {}; - if (item.items != null) - options.items = item.items; - if (!viewonly && itemtype == 'editableselect') - field.jsd = new scil.EditableSelect(field, options); - else if (!viewonly && itemtype == 'dropdowninput') - field.jsd = new scil.DropdownInput(field, options); - else if (!viewonly && itemtype == 'dropdowncheck') - field.jsd = new scil.DropdownCheck(field, options); - else if (!viewonly && itemtype == 'multiselect') - field.jsd = new scil.DropdownCheck(field, options); - else if (!viewonly && itemtype == 'htmltext') { - if (args.buttons == null) - args.buttons = []; - else if (typeof (args.buttons) == 'string') - args.buttons = [args.buttons]; - args.buttons.push({ - iconurl: scil.Utils.imgSrc('img/uploadimg.gif'), tooltips: 'Insert Image', onclick: function (ed) { - scil.Richtext.insertImage(ed); - }, - }); - args.buttons.push({ - iconurl: scil.Utils.imgSrc('img/benzene.gif'), tooltips: 'Insert Structure', onclick: function (ed) { - scil.Richtext.insertStructure(ed); - }, - }); - if (args.extrabuttons != null) - args.buttons.push(args.extrabuttons); - if (value != null && value == '') - field.value = value; - scil.Richtext.initTinyMCE(field, args); - } - // else if (itemtype == "number") { - // dojo.connect(field, "onchange", function (e) { - // var s = field.value; - // if (s != "" && s != null && !scil.Utils.isNumber(s, item.allowoperator)) { - // scil.Utils.alert("A number is required!"); - // field.value = ""; - // } - // }); - // } - // I#9132 - if (field.tagName == 'INPUT' || field.tagName == 'SELECT' || field.tagName == 'TEXTAREA') { - if (item.onchange != null) - dojo.connect(field, 'onchange', function () { - item.onchange(field, form); - }); - if (item.onfocus != null) - dojo.connect(field, 'onfocus', function () { - item.onfocus(field, form); - }); - if (item.onblur != null) - dojo.connect(field, 'onblur', function () { - item.onblur(field, form); - }); - } - if (item.padding >= 0 && (field.tagName == 'INPUT' || field.tagName == 'DIV')) - field.style.paddingLeft = field.style.paddingRight = item.padding + 'px'; - if (field.tagName == 'INPUT' && field.disabled != true && item.type != 'checkbox' && item.type != 'radio') - dojo.connect(field, 'onfocus', function () { - field.select(); - }); - if (field.jsd != null) - field.jsd.parentform = form; - return field; - } - static createFieldButton(parent, button, form, field) { - var b = scil.Utils.createButton(parent, button); - if (b != null) { - if (button.onclick2 != null) { - dojo.connect(b, 'onclick', function () { - button.onclick2(field, form); - }); - } - else if (button.ajaxurl != null) { - dojo.connect(b, 'onclick', function () { - scil.Utils.ajax(button.ajaxurl, function (ret) { - if (button.append != null) - field.value += ret + button.append; - else - field.value = ret; - }, { q: field.value }); - }); - } - } - } - static getFieldData(field, item) { - if (field == null) - return null; - if (field.stype == 'jsdraw') { - if (item != null && item.dataformat != null) - return field.jsd.getData(item.dataformat); - else - return field.jsd.getXml(); - } - if (field.stype == 'xdraw' || field.stype == 'jsdraw.se' || field.stype == 'jsdraw.fm' || - field.stype == 'table' || field.stype == 'plate' || field.stype == 'plates') { - return field.jsd.getXml(); - } - else if (field.stype == 'jsdraw.table') { - if (field.jsd.getRowCount() == 0) - return null; - return field.jsd.getXml(); - } - else if (field.type == 'checkbox' || field.type == 'radio') - return field.checked; - else if (field.stype == 'htmltext') { - var ed = scil.Form.getEd(field); - return ed == null ? field.innerHTML : scil.Richtext.getHtml(ed); - } - else if (field.stype == 'file' || field.stype == 'filelink' || field.stype == 'filedblink' || field.stype == 'filepath' || - field.stype == 'image' || field.stype == 'curve' || field.stype == 'sketches') - return field.jsd.getXml(); - else if (field.stype == 'tabtext' || field.stype == 'richtext' || field.stype == 'plaintext' || field.stype == 'subform') - return field.jsd.getXml(); - else if (field.stype == 'code') - return field.jsd.getValue(); - else if (field.stype == 'signature') - return field.jsd.getValue(); - else if (field.stype == 'number') - return field.jsd.getValue(); - else if (field.type == 'password') - return field.value == '' ? '' : (item.encrypt != false && JSDraw2.password != null && JSDraw2.password.encrypt && scil.Form.encryptpassword != null ? scil.Form.encryptpassword(field.value) : field.value); - else if (field.stype == 'postfile' || field.stype == 'button') - return null; - else { - if (field.value == null) - return field.getAttribute('originalvalue'); - return field.value == '' ? null : field.value; - } - } - static setFieldData(field, item, viewonly, value, values) { - if (item == null) - return; - var originalvalue = value; - if (item.render != null) - value = item.render(value, values); - if (viewonly && item.maxlength > 0 && typeof (value) == 'string' && value.length > item.maxlength) - value = value.substr(0, item.maxlength - 3) + '...'; - if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' || field.stype == 'jsdraw.se' || - field.stype == 'jsdraw.fm' || field.stype == 'plate' || field.stype == 'plates') { - if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' && item.options != null && item.options.spreadsheet) - field.jsd.clear(true); - else - field.jsd.clear(); - if (item.type == 'jsdraw') { - if (item.dataformat != null) - field.jsd.setData(value, item.dataformat); - else if (!(value == null || typeof (value) == 'string' && value == '')) - field.jsd.setXml(value); - } - else { - if (value != null && value.rows != null && field.stype == 'jsdraw.table') - field.jsd.setJson(value); - else if (!(value == null || typeof (value) == 'string' && value == '')) - field.jsd.setXml(value); - if (field.stype == 'jsdraw.table' && item.options != null && item.options.spreadsheet) - field.jsd.createTable(); - if (field.stype == 'jsdraw.table' && item.rows > 0) { - for (var i = field.jsd.getRowCount(); i < item.rows; ++i) - field.jsd.insert(); - } - } - } - else if (field.stype == 'table') { - if (value != null && (typeof (value) == 'string' || typeof (value) == 'object' && value.tagName == 'table')) - field.jsd.setXml(value); - else if (value != null && value.length > 0) - field.jsd.setData(value); - else - field.jsd.setData([]); - } - else if (item.type == 'tabtext' || item.type == 'richtext' || item.type == 'plaintext') { - field.jsd.setXml(value); - } - else if (item.type == 'checkbox' || item.type == 'radio') { - field.checked = scil.Utils.isTrue(value); - } - else if (item.type == 'select') { - if (viewonly) { - var list = this._getListItems(item); - if (list != null && list.length == null) - value = list[value]; - this._setInnerHTML(field, value, originalvalue); - } - else { - scil.Utils.selectOption(field, value); - } - } - else if (item.type == 'date') { - if (typeof (value) == 'string' && !scil.Utils.isNullOrEmpty(value) && !isNaN(value)) { - value = parseFloat(value); - if (isNaN(value)) - value = null; - } - var s = item.timeformat == null ? scil.Utils.dateStr(value, true, item.dateformat) : scil.Utils.timeStr(value, true, item.timeformat); - if (viewonly) { - if (field.tagName == 'INPUT') - field.value = s; - else - this._setInnerHTML(field, s, originalvalue); - } - else { - field.value = s; - } - } - else if (item.type == 'color') { - field.jsd.setValue(value); - } - else if (field.stype == 'code') { - field.jsd.setValue(value); - } - else if (field.stype == 'signature') { - field.jsd.setValue(value); - } - else if (field.stype == 'number') { - return field.jsd.setValue(value); - } - else if (field.stype == 'html') { - var s = value == null ? '' : value; - if (item != null && item.template != null) - s = this.renderTemplate(item.template, value, values); - else if (typeof (s) == 'string' && s.match(/^((http[s]?)|(ftp)):[\/]{2}.+$/i) != null) - s = '' + s + ''; - this._setInnerHTML(field, s, originalvalue); - } - else if (field.stype == 'file' || field.stype == 'filelink' || field.stype == 'filedblink' || field.stype == 'filepath' || field.stype == 'image' || field.stype == 'curve' || field.stype == 'sketches' || field.stype == 'subform') { - field.jsd.setXml(value); - } - else if (field.stype == 'fileshelf') { - field.jsd.list(value); - } - else if (item.type == 'htmltext') { - if (viewonly) { - this._setInnerHTML(field, field.innerHTML = value == null ? '' : value, originalvalue, true); - } - else { - var ed = scil.Form.getEd(field); - if (ed != null && ed.dom != null) - ed.setContent(value == null ? '' : value); - else - field.value = value == null ? '' : value; - } - } - else if (field.stype == 'textarea') { - if (field.tagName == 'TEXTAREA') - field.value = value == null ? '' : value; - else - this._setInnerHTML(field, this.wrapTextarea(value), originalvalue, true); - } - else if (field.stype != 'div' && field.stype != 'button') { - if (field.stype == 'hidden' && value != null && typeof (value) == 'object' && value.tagName != null) // I#10361 - value = scil.Utils.getOuterXml(value); - if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA') - field.value = value == null ? '' : value; - else if (field.tagName == 'DIV') - this._setInnerHTML(field, value == null ? '' : value, originalvalue); - } - if (item.onrendered != null) - item.onrendered(field, value); - } - static wrapTextarea(value) { - var whitespace = 'white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;'; - return value == null ? '' : '
' + scil.Utils.escapeHtml(value) + '
'; - } - static _setInnerHTML(field, value, originalvalue, clear) { - if (value == null) - value = ''; - else if (clear) - value += '
'; // I#11990 - field.innerHTML = value; - // very tricky: in chrome: - // 0 == "" -> true - // 0 != "" -> false - // if (originalvalue != null && originalvalue != "") - if (originalvalue != null && (originalvalue + '') != '') - field.setAttribute('originalvalue', originalvalue); - } - static renderTemplate(template, value, values) { - let s = template.replace(/\{\?\}/g, value == null ? '' : value); - if (values == null) - return s; - var tokens = s.match(/\{\{[a-z|0-9]+\}\}/ig); - if (tokens == null) - return s; - for (var i = 0; i < tokens.length; ++i) { - var token = tokens[i]; - var k = token.substr(2, token.length - 4); - var v = values[k]; - s = s.replace(token, v == null ? '' : v); - } - return s; - } - static listOptions(select, url) { - scil.Utils.ajax(url, function (ret) { - scil.Utils.listOptions(select, ret); - }); - } - /** - * Create a form - * @function {static} create - * @param {object} obj the data object to be loaded into the table. obj.load() will be called - * @param {string or DOM} parent parent element - * @param {array} buttons an array of button definitions. button: { caption: string, onclick: function } - * @param {array} items an array of field definitions. item: { id, iskey ... } - * @param {bool} viewonly indicate if creating a viewonly table - * @returns a new Table object - */ - static create(obj, parent, items, buttons, viewonly) { - if (typeof parent == 'string') - parent = dojo.byId(parent); - var div = scil.Utils.createElement(parent, 'div'); - var form = new scil.Form(viewonly); - form.render(div, items); - if (buttons != null) { - var tr = scil.Utils.createElement(form.tbody, 'tr'); - var td = scil.Utils.createElement(tr, 'td'); - td = scil.Utils.createElement(tr, 'td'); - if (buttons.length == null) { - scil.Utils.createButton(td, buttons); - } - else { - for (var i = 0; i < buttons.length; ++i) - scil.Utils.createButton(td, buttons[i]); - } - } - if (obj.load != null) - scil.onload(function () { - obj.load(); - }); - return form; - } - /** - * Create a HTML form - * @function {static} createForm2 - * @param {DOM} parent parent element - * @param {array} items an array of field definitions. item: { id, iskey ... } - * @param {dict} buttons button definition: { label, onclick } - * @returns a form object - *
-     * Example:
-     *    dojo.ready(function () {
-     *        var parent = scil.Utils.createElement(document.body, "div");
-     *        var items = {
-     *            notes: { type: "note", label: "This is a test" },
-     *            username: { label: "username:", tag: "input", width: 200 },
-     *            password: { label: "Your Password:", tag: "password", width: 200 }
-     *        };
-     *        var form = scil.Form.createForm2(parent, items, { label: "Login", onclick: function () { alert("Blah..." } });
-     *    });
-     * 
- */ - static createForm2(parent, items, buttons, options) { - if (options == null) - options = {}; - var form = null; - if (buttons != null) - options.buttons = buttons; - if (options.tabs != null) { - form = new scil.TabbedForm(options).render(parent); - } - else { - form = new scil.Form(options); - form.render(parent, items, options); - for (var k in items) { - if (items[k] == null) - continue; - if (items[k].type == 'group' && items[k].group != null && items[k].collapsed) - this.expand({ target: items[k].group }); - } - } - return form; - } - static _connetOnClick(e, fn) { - dojo.connect(e, 'onclick', function () { - fn(); - }); - } - /** - * Create a HTML Dialog form - *
-     * Example:
-     *    dojo.ready(function () {
-     *        var items = {
-     *            notes: { type: "note", label: "This is a test" },
-     *            username: { label: "username:", tag: "input", width: 200 },
-     *            password: { label: "Your Password:", tag: "password", width: 200 }
-     *        };
-     *        var dlg = scil.Form.createDlgForm("Login", items,
-     *                { label: "Login", onclick: function () { alert("Blah..."); dlg.hide(); } }, 350);
-     *    });
-     * 
- * @function {static} createDlgForm - * @param {string} caption dialog caption - * @param {array} items an array of field definitions. item: { id, iskey ... } - * @param {dict} buttons button definition: { label, onclick } - * @param {options}: { onenter, viewonly } - * @returns a dialog object - */ - static createDlgForm(caption, items, buttons, options) { - const args = {}; - if (typeof (options) == 'number') { - args.width = options + 'px'; - options = null; - } - else if (options != null && options.width > 0) { - args.width = options.width + 'px'; - } - var div = scil.Utils.createElement(null, 'div', null, args); - var dlg = new JSDraw2.Dialog(caption, div, options); - dlg.show(); - dlg.form = this.createForm2(div, items, buttons, options); - dlg._scilform = true; - dlg.hide(true); - dlg.show2({ owner: this }); - if (options != null && options.oncreated) - options.oncreated(dlg.form); - return dlg; - } - static createFormDlg(caption, items, buttons, options) { - return this.createDlgForm(caption, items, buttons, options); - } - /** - * Create a HTML Tabbed Dialog form - *
-     * Example:
-     *    <button onclick='test()'>Test</button>
-     *    <script type="text/javascript">
-     *        function test() {
-     *            var options = { tabs: {
-     *                a: { caption: "Tab A", fields: { field1: { label: "Field1"}} },
-     *                b: { caption: "Tab B", fields: { field2: { label: "Field2" }, field3: { label: "Field3"}} }
-     *            }, buttons: { label: "Test", onclick: function() { alert(999); } }, border: true
-     *            };
-     *
-     *            var dlg = scil.Form.createTabDlgForm("Test", null, null, options);
-     *            dlg.form.setData({ field1: "AAA", field2: "124" });
-     *        }
-     *    </script>
-     * 
- * @function {static} createTabDlgForm - * @returns a dialog object - */ - static createTabDlgForm(caption, options) { - return this.createDlgForm(caption, null, null, options); - } - static createForm(items, btn, onclick, border, extra, enter) { - const style1 = { verticalAlign: 'top', whiteSpace: 'nowrap' }; - const style2 = { textAlign: 'left' }; - if (border) { - style1.border = 'solid 1px #f0f0f0'; - style1.backgroundColor = '#f5f5f5'; - } - var tbody = scil.Utils.createTable(); - var required = false; - for (var i = 0; i < items.length; ++i) { - if (items[i].required) { - required = true; - break; - } - } - if (required) { - var tr = scil.Utils.createElement(tbody, 'tr'); - scil.Utils.createElement(tr, 'td'); - scil.Utils.createElement(tr, 'td', '* indicates required field', style2); - } - for (var i = 0; i < items.length; ++i) { - var it = items[i]; - var tr = scil.Utils.createElement(tbody, 'tr'); - var td = scil.Utils.createElement(tr, 'td', it.label + (it.required ? '*' : ''), style1); - if (it.colspan) { - td.colSpan = 2; - } - else { - td = scil.Utils.createElement(tr, 'td', null, style2); - if (it.tag != null) { - var input = scil.Utils.createElement(td, it.tag); - if (it.tag == 'select') - scil.Utils.listOptions(input, it.options); - if (it.width != null) - input.style.width = it.width + 'px'; - if (it.height != null) - input.style.height = it.height + 'px'; - if (it.id != null) - input.id = it.id; - if (it.tag == 'hidden') - tr.style.display = 'none'; - if (it.align != null) - input.style.textAlign = it.align; - if (it.id == enter) - dojo.connect(input, 'onkeydown', function (e) { - if (e.keyCode == 13) { - onclick(); - e.preventDefault(); - } - }); - } - if (it.span != null) - scil.Utils.createElement(td, 'span', it.span); - } - } - var tr = scil.Utils.createElement(tbody, 'tr'); - scil.Utils.createElement(tr, 'td', ' '); - tr = scil.Utils.createElement(tbody, 'tr'); - scil.Utils.createElement(tr, 'td'); - var td = scil.Utils.createElement(tr, 'td'); - if (btn != null) { - if (typeof (btn) == 'string') { - var b = scil.Utils.createElement(td, 'button', btn); - dojo.connect(b, 'onclick', onclick); - } - else if (btn != null && typeof (btn) == 'object' && btn.length > 0) { - var buttons = []; - for (var i = 0; i < btn.length; ++i) { - var bn = btn[i]; - var b = scil.Utils.createElement(td, 'button', bn.caption); - if (bn.id != null) - b.id = bn.id; - this._connetOnClick(b, bn.onclick); - } - } - } - if (extra != null) - scil.Utils.createElement(td, 'span', extra); - return tbody.parentNode; - } - static fillForm(data, prefix) { - for (const k in data) { - const field = dojo.byId((prefix == null ? '' : prefix) + k); - if (field != null) { - if (field.tagName == 'SELECT') - JsUtils.selectOption(field, data[k]); - else - field.value = data[k] == null ? '' : data[k]; - } - } - } - static collectFormData(parent) { - var ret = {}; - var inputs = parent.getElementsByTagName('input'); - for (var i = 0; i < inputs.length; ++i) { - var n = inputs[i]; - var type = (n.getAttribute('type') + '').toLowerCase(); - switch (type) { - case 'radio': - case 'checkbox': - if (n.checked) - this._addValue(ret, n.id, n.value == null || n.value.length == 0 ? 'true' : n.value); - break; - case 'button': - break; - default: - this._addValue(ret, n.id, n.value); - break; - } - } - var textareas = parent.getElementsByTagName('textarea'); - for (var i = 0; i < textareas.length; ++i) { - var n = textareas[i]; - this._addValue(ret, n.id, n.value); - } - var selects = parent.getElementsByTagName('select'); - for (var i = 0; i < selects.length; ++i) { - var n = selects[i]; - this._addValue(ret, n.id, n.value); - } - return ret; - } - static _addValue(dict, key, value) { - if (key == null || key.length == 0) - return; - var p = key.lastIndexOf('.'); - if (p > 0) - key = key.substr(p + 1); - dict[key] = value; - } - static toAmount(v, liquid) { - if (v == null || v == 0) - return '-'; - else if (v >= 1000) - return (v / 1000) + (liquid ? 'L' : 'kg'); - else if (v < 0.001 && liquid) - return (v * 1000000) + 'ug'; - else if (v < 1) - return (v * 1000) + (liquid ? 'uL' : 'mg'); - else - return v + (liquid ? 'mL' : 'g'); - } - static processAmount(c) { - if (!(c.amount > 0)) - c.amount = null; - if (!(c.amountleft > 0)) - c.amountleft = null; - var v = c.amount == null ? c.amountleft : c.amount; - if (v <= 0) - v = null; - if (v === null) { - c.unit = c.isliquid ? 'L' : 'kg'; - } - else if (v >= 1000) { - c.amount /= 1000; - c.amountleft /= 1000; - c.unit = c.isliquid ? 'L' : 'kg'; - } - else if (v < 0.001 && !c.isliquid) { - c.amount *= 1000000; - c.amountleft *= 1000000; - c.unit = 'ug'; - } - else if (v < 1) { - c.amount *= 1000; - c.amountleft *= 1000; - c.unit = c.isliquid ? 'uL' : 'mg'; - } - else { - c.unit = c.isliquid ? 'mL' : 'g'; - } - } - // static setButtonValueByKey(buttons, key, s) { - // if (buttons == null) - // return; - // - // for (var i = 0; i < buttons.length; ++i) { - // if (buttons[i].key == key) { - // buttons[i].b.value = s == null ? '' : s; - // break; - // } - // } - // } - static setButtonValueByKey(buttons, key, value) { - if (buttons == null || scil.Utils.isNullOrEmpty(key) || scil.Utils.isNullOrEmpty(value)) - return; - for (let i = 0; i < buttons.length; ++i) { - if (buttons[i].key == key) { - buttons[i].b.value = value; - break; - } - } - } - static getButtonValueByKey(buttons, key) { - if (buttons == null) - return null; - for (var i = 0; i < buttons.length; ++i) { - if (buttons[i].key == key) - return buttons[i].b.value; - } - return null; - } - static getButtonValuesByKey(buttons, keys, dict) { - if (dict == null) - dict = {}; - for (var i = 0; i < keys.length; ++i) - dict[keys[i]] = this.getButtonValueByKey(buttons, keys[i]); - return dict; - } - static createToolbarButtons(parent, buttons, padding, tableAlign) { - if (parent == null || buttons == null) - return; - var tr = null; - if (tableAlign != null) - tr = scil.Utils.createElement(scil.Utils.createTable2(parent, null, { cellSpacing: 0, cellPadding: 0, align: tableAlign }), 'tr'); - for (var i = 0; i < buttons.length; ++i) { - if ((i == 0 || buttons[i - 1] == '-' || buttons[i - 1] == '|') && (buttons[i] == '-' || buttons[i] == '|')) - continue; - if (tableAlign != null) - parent = scil.Utils.createElement(tr, 'td'); - this._createButton(parent, buttons[i], padding); - } - } - static _createButton(parent, button, padding) { - if (button == null) - return; - if (typeof (padding) != 'number' || padding <= 0) - padding = 3; - if (button == '-' || button == '|') { - scil.Utils.createElement(parent, 'span', '|', { margin: '0 ' + (2 * padding) + 'px 0 ' + (2 * padding) + 'px' }); - return; - } - button.label = scil.Lang.res(button.label); - button.caption = scil.Lang.res(button.caption); - button.title = scil.Lang.res(button.title); - var b = null; - if (button.type == 'select') { - if (button.label != null) { - var l = scil.Utils.createElement(parent, 'span', button.label + ':', button.labelstyle); - l.style.marginLeft = padding + 'px'; - } - b = scil.Utils.createElement(parent, 'select', null, button.styles, button.attributes); - scil.Utils.listOptions(b, button.items || button.options, button.value, null, button.sort); - if (button.onchange != null) - dojo.connect(b, 'onchange', function (b) { - button.onchange(b); - }); - b.style.marginRight = padding + 'px'; - } - else if (button.type == 'input' || button.type == 'date' || button.type == 'color') { - if (button.label != null) { - var l = scil.Utils.createElement(parent, 'span', button.label + ':', button.labelstyle); - l.style.marginLeft = padding + 'px'; - } - b = scil.Utils.createElement(parent, 'input', null, button.styles, button.attributes); - if (button.onenter != null) - dojo.connect(b, 'onkeydown', function (e) { - if (e.keyCode == 13) - button.onenter(b); - }); - if (button.onchange != null) - dojo.connect(b, 'onchange', function (b) { - button.onchange(b); - }); - if (button.autosuggesturl != null) - new scil.AutoComplete(b, button.autosuggesturl, { onsuggest: button.onsuggest }); - b.style.marginRight = padding + 'px'; - if (button.type == 'date') - new scil.DatePicker(b); - else if (button.type == 'color') - new scil.ColorPicker2(b); - if (button.value != null) - b.value = button.value; - } - else { - b = scil.Utils.createButton(parent, button); - b.style.margin = padding + 'px'; - } - button.b = b; - } - static getEd(field) { - // @ts-ignore - return tinymce.get(field.id); - } - static dict2formxml(dict) { - return this.json2xml(dict); - } - static json2xml(dict, nowrapper) { - if (dict == null) - return null; - var ret = nowrapper ? '' : '\n'; - for (var k in dict) { - var v = dict[k]; - if (v != null && v != '') { - ret += ''; - ret += scil.Utils.escXmlValue(v); - ret += '\n'; - } - } - if (!nowrapper) - ret += ''; - return ret; - } - static encryptpassword(s) { - if (scil.Utils.isNullOrEmpty(s)) - return null; - var Key = CryptoJS.enc.Utf8.parse(JSDraw2.password != null && JSDraw2.password.key != null ? JSDraw2.password.key : 'PSVJQRk9qTEp!6U1dWUZ%RVFG=1VVT0='); - var IV = CryptoJS.enc.Utf8.parse(JSDraw2.password != null && JSDraw2.password.iv != null ? JSDraw2.password.iv : '!WlSLVE2ZU+NaW?='); - var encryptedText = CryptoJS.AES.encrypt(s, Key, { iv: IV, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); - return '(?|' + encryptedText + ')'; - } - static xml2Json(xml) { - var root = null; - if (typeof xml == 'object') { - root = xml; - } - else if (typeof xml == 'string') { - var doc = scil.Utils.parseXml(xml); - if (doc != null) - root = doc.documentElement || doc.firstElementChild; - } - if (root == null || root.childNodes == null) - return null; - var data = {}; - for (var i = 0; i < root.childNodes.length; ++i) { - var e = root.childNodes[i]; - if (e.tagName != 'i') - continue; - var id = e.getAttribute('id'); - if (id == null) - id = e.getAttribute('n'); - var v = scil.Utils.getFirstElement(e); - if (v != null && scil.Utils.isIE && scil.Utils.isIE < 9) - v = v.xml; - data[id] = v != null ? v : (e.text || e.textContent); - } - return data; - } - static ext2Icon(filename) { - if (filename == null) - return 'unknown'; - var p = filename.lastIndexOf('.'); - if (p < 0) - return 'unknown'; - var ext = filename.substr(p + 1).toLowerCase(); - switch (ext) { - case 'avi': - case 'bmp': - case 'c': - case 'cab': - case 'cdx': - case 'cer': - case 'chm': - case 'dll': - case 'doc': - case 'eps': - case 'exe': - case 'fasta': - case 'fdf': - case 'gif': - case 'hlp': - case 'htm': - case 'iso': - case 'jar': - case 'java': - case 'jdx': - case 'jpg': - case 'js': - case 'jsdraw': - case 'mdb': - case 'mht': - case 'molengine': - case 'mov': - case 'mp3': - case 'mrv': - case 'msg': - case 'msi': - case 'pdb': - case 'pdf': - case 'pic': - case 'ppt': - case 'ps': - case 'py': - case 'pyc': - case 'rm': - case 'sdf': - case 'skc': - case 'sql': - case 'swf': - case 'txt': - case 'vbs': - case 'vsd': - case 'xls': - case 'xml': - case 'xps': - case 'zip': - return ext; - case 'docx': - case 'rtf': - return 'doc'; - case 'dx': - return 'jdx'; - case 'oxps': - return 'xps'; - case 'pptx': - return 'ppt'; - case 'xlsx': - case 'csv': - return 'xls'; - case 'jpeg': - return 'jpg'; - case 'svg': - case 'tif': - case 'tiff': - return 'pic'; - case 'mp4': - return 'mp3'; - case 'wav': - return 'avi'; - case 'png': - case 'wmf': - case 'emf': - return 'bmp'; - case 'html': - case 'shtml': - case 'xhtml': - return 'htm'; - case 'gz': - return 'zip'; - case 'cdxml': - return 'cdx'; - case 'tgf': - return 'skc'; - case 'mol': - case 'rxn': - case 'jsd': - case 'jssdf': - return 'jsdraw'; - case 'cs': - case 'vb': - case 'cpp': - case 'c': - case 'aspx': - case 'asp': - return 'script'; - case 'config': - return 'xml'; - default: - return 'unknown'; - } - } -} -scil.Form = Form; - - -/***/ }), - -/***/ "./form/Lang.ts": -/*!**********************!*\ - !*** ./form/Lang.ts ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Lang: () => (/* binding */ Lang) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Lang class - translate web page into other lanagues - * @class scilligence.Lang - *
- * Example:
- *    scil.Lang.use('cn');
- *    var s = scil.Lang.res("Print");
- * 
- */ -class Lang { - static add(dict, lang) { - if (dict == null) - return; - var dest = lang == null ? this.en : scil.Lang[lang]; - if (dest == null) - scil.Lang[lang] = {}; - scil.apply(dest, dict); - } - static setLang(lang, reload) { - if (lang == null || lang == "") - scil.Utils.createCookie(this.key, "", -1, true); - else - scil.Utils.createCookie(this.key, lang, 180, true); - if (reload) - window.location.reload(); - } - static use(lang) { - if (lang == null) - return; - lang = lang.toLowerCase(); - if (lang == "zh") - lang = "cn"; - this.language = lang; - this.current = this[lang]; - if (this.current == null) { - this.current = this.en; - this.language = null; - } - JSDraw2.Language.use(lang); - } - static res(s, lang) { - if (scil.Utils.isNullOrEmpty(s) || typeof (s) != "string") - return s; - if (lang != null) { - var dict = this[lang]; - return dict == null || dict[s] == null ? s : dict[s]; - } - if (this.current == null) { - let lang = scil.Utils.readCookie(this.key, true); - if (lang != null && lang != "") - this.use(lang); - if (this.current == null && this.lang != null) - this.use(this.lang); - if (this.current == null) { - // @ts-ignore - lang = window.navigator.userLanguage; - if (lang != null && lang.length > 2) - this.use(lang.substr(0, 2)); - if (this.current == null) - this.current = this.en; - } - } - var ret = this.current == null ? null : this.current[s]; - if (ret == null || ret == "") - ret = JSDraw2.Language.res(s); - return ret; - } - static translate(parent, tags) { - if (tags == null || tags == "") { - this.translate(parent, "span"); - } - else { - var ss = tags.split(','); - for (var i = 0; i < ss.length; ++i) - this.translate(parent, ss[i]); - } - } - static translate2(parent, tag) { - if (tag == null || tag == "") - return; - var list = (parent == null ? document : parent).getElementsByTagName(tag); - if (list == null) - return; - for (var i = 0; i < list.length; ++i) { - var e = list[i]; - if (e.getAttribute(this.token) == null) - continue; - // @ts-ignore - var s = this.reg(e.innerHTML); - if (scil.Utils.isNullOrEmpty(s)) - continue; - e.innerHTML = s; - } - } -} -Lang.token = "translate"; -Lang.key = "scil_lang"; -Lang.current = null; -Lang.language = null; -Lang.en = {}; -Lang.cn = {}; -scil.Lang = Lang; - - -/***/ }), - -/***/ "./form/Tab.ts": -/*!*********************!*\ - !*** ./form/Tab.ts ***! - \*********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Tabs: () => (/* binding */ Tabs), -/* harmony export */ TabsInt: () => (/* binding */ TabsInt) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Tabs class - Tabs Control - * @class scilligence.Tabs - *
- * Example:
- <div id="div1"></div>
- <script type="text/javascript">
- scil.ready(function () {
- var options = {
- tabs: {
- a: { caption: "Tab A" },
- b: { caption: "Tab B", closable: true }
- },
- onRemoveTab: function (td, tabs) { alert("remove tab"); },
- onBeforeShowTab: function (td, old, tabs) { },
- onShowTab: function (td, old, tabs) { },
- onCreateTab: function(td, clientarea, tabs) { },
- border: true
- };
-
- var tabs = new scil.Tabs("div1", options);
- });
- </script>
- * 
- */ -class TabsInt { - constructor(parent, options) { - this.T = 'TABS'; - const me = this; - this.options = options == null ? {} : options; - this.currenttab = null; - this.area = null; - if (typeof (parent) == 'string') - parent = dojo.byId(parent); - let tabarea; - const tbody = scil.Utils.createTable(parent, 0, 0, { width: '100%', marginBottom: this.options.marginBottom == null ? '20px' : this.options.marginBottom }); - this.dom = this.table = tbody.parentElement; - this.vertical = true; - const tabborder = this.options.border ? null : scil.Tabs.kBorderStyle; - const areapadding = this.options.border ? '5px' : 0; - const areaborder = this.options.border ? scil.Tabs.kBorderStyle : null; - const taggap = this.options.tabgap == null ? '4px' : this.options.tabgap; - switch (this.options.tablocation) { - case 'left': { - const tr = scil.Utils.createElement(tbody, 'tr'); - tabarea = scil.Utils.createElement(tr, 'td', null, { borderRight: tabborder, width: '1%', verticalAlign: 'top', borderRightWidth: taggap }); - this.area = scil.Utils.createElement(tr, 'td', null, { padding: `${areapadding}px`, border: areaborder, width: '99%', verticalAlign: 'top' }); - this.vertical = false; - break; - } - case 'right': { - const tr = scil.Utils.createElement(tbody, 'tr'); - this.area = scil.Utils.createElement(tr, 'td', null, { padding: `${areapadding}px`, border: areaborder, width: '1%', verticalAlign: 'top' }); - tabarea = scil.Utils.createElement(tr, 'td', null, { borderLeft: tabborder, width: '99%', verticalAlign: 'top', borderLeftWidth: taggap }); - this.vertical = false; - break; - } - case 'bottom': { - this.area = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, { padding: `${areapadding}px`, border: areaborder }); - tabarea = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, { borderTop: tabborder, borderTopWidth: taggap }); - break; - } - default: { // top - tabarea = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, { borderBottom: tabborder, borderBottomWidth: taggap }); - this.area = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, { padding: `${areapadding}px`, border: areaborder }); - break; - } - } - this.tabcontainer = scil.Utils.createTable(tabarea, 0, 0); - if (this.vertical) - this.tr = scil.Utils.createElement(this.tabcontainer, 'tr'); - if (this.options.showtabs == false) - this.tr.style.display = 'none'; - const tabs = this.options.tabs; - if (tabs != null) { - if (tabs.length > 0) { - for (let i = 0; i < tabs.length; ++i) - this.addTab(tabs[i]); - } - else { - for (const k in tabs) - this.addTab(tabs[k], k); - } - } - } - resizeClientarea(width, height) { - const list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes; - for (let i = 0; i < list.length; ++i) { - let td; - if (this.vertical) - td = list[i]; - else - td = list[i].childNodes[0]; - if (td.clientarea == null) - continue; - if (width > 0) { - td.clientarea.style.width = width + 'px'; - this.options.clientareawidth = width; - } - if (height > 0) { - td.clientarea.style.height = height + 'px'; - this.options.clientareaheight = height; - } - } - if (this.options.onresizeclientarea != null) - this.options.onresizeclientarea(width, height, this); - } - addTab(options, key) { - if (this.vertical) { - if (this.tr.childNodes.length > 0) - scil.Utils.createElement(this.tr, 'td', ' '); - } - else { - if (this.tabcontainer.childNodes.length > 0) - scil.Utils.createElement(scil.Utils.createElement(scil.Utils.createElement(this.tabcontainer, 'tr'), 'td'), 'div', null, { height: `5px` }); - } - var me = this; - var caption = options.caption; - var icon = options.icon; - var padding = this.options.tabpadding == null ? '5px 10px 1px 10px' : this.options.tabpadding; - var tr = this.vertical ? this.tr : scil.Utils.createElement(this.tabcontainer, 'tr'); - var style = { border: 'solid 1px #ddd', padding: padding, backgroundColor: '#eee' }; - switch (this.options.tablocation) { - case 'left': - style.borderRight = 'none'; - style.borderTopLeftRadius = '5px'; - style.borderBottomLeftRadius = '5px'; - break; - case 'right': - style.borderLeft = 'none'; - style.borderTopRightRadius = '5px'; - style.borderBottomRightRadius = '5px'; - break; - case 'bottom': - style.borderTop = 'none'; - style.borderBottomLeftRadius = '5px'; - style.borderBottomRightRadius = '5px'; - break; - default: // top - style.borderBottom = 'none'; - style.borderTopLeftRadius = '5px'; - style.borderTopRightRadius = '5px'; - break; - } - const td = scil.Utils.createElement(tr, 'td', null, style, { key: key || options.tabkey, sciltab: '1' }); // TODO - const tbody2 = scil.Utils.createTable2(td, null, { cellSpacing: 0, cellPadding: 0 }); - const s = (icon != null ? '' : '') + (caption == null ? 'Tab' : scil.Lang.res(caption)); - let td2 = null; - switch (this.options.tablocation) { - case 'left': - case 'right': - td._label = scil.Utils.createElement(scil.Utils.createElement(tbody2, 'tr'), 'td', s, null, null, function (e) { - me.showTab(td); - }); - td2 = scil.Utils.createElement(scil.Utils.createElement(tbody2, 'tr'), 'td'); - break; - case 'bottom': - default: // top - var tr2 = scil.Utils.createElement(tbody2, 'tr'); - td._label = scil.Utils.createElement(tr2, 'td', s, null, null, function (e) { - me.showTab(td); - }); - td2 = scil.Utils.createElement(tr2, 'td'); - break; - } - if (options.closable) { - const img = scil.Utils.createButton(td2, { - src: scil.Utils.imgSrc('img/del2.gif'), title: 'Close', style: {}, onclick: function (e) { - me.closeTab(td); - }, - }); - img.style.marginLeft = '10px'; - td.style.paddingRight = '2px'; - scil.connect(td2, 'onmouseover', function () { - img.style.background = '#fff'; - }); - scil.connect(td2, 'onmouseout', function () { - img.style.background = ''; - }); - } - if (options.onmenu != null) { - scil.connect(td, 'onmouseup', function (e) { - if (scil.Utils.isRightButton(e)) - options.onmenu(e); - e.preventDefault(); - }); - scil.Utils.disableContextMenu(td); - } - options.caption = null; - options.visible = this.currenttab == null; - options.marginBottom = 0; - options.caption = caption; - td.clientarea = scil.Utils.createElement(this.area, 'div', null, { display: 'none', width: this.options.clientareawidth, height: this.options.clientareaheight, overflowY: this.options.clientareaheight > 0 ? 'scroll' : null }); - if (options.style != null) - dojo.style(td.clientarea, options.style); - if (this.currenttab == null) - this.showTab(td); - if (options.html != null) - td.clientarea.innerHTML = options.html; - if (this.options.onCreateTab != null) - this.options.onCreateTab(td, td.clientarea, this); - return td; - } - updateTabLabel(key, s) { - var td = typeof (key) == 'string' ? this.findTab(key) : key; - if (td != null && td._label != null) - td._label.innerHTML = s; - } - closeTab(td) { - var me = this; - scil.Utils.confirmYes('Close this tab?', function () { - me.removeTab(td); - }); - } - currentTabKey() { - return this.currenttab == null ? null : this.currenttab.getAttribute('key'); - } - findTab(key) { - var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes; - for (var i = 0; i < list.length; ++i) { - var td; - if (this.vertical) - td = list[i]; - else - td = list[i].childNodes[0]; - if (td.getAttribute('key') == key) - return td; - } - return null; - } - removeTab(key) { - var td = typeof (key) == 'string' ? this.findTab(key) : key; - if (td == null) - return null; - if (this.options.onRemoveTab != null) - this.options.onRemoveTab(td, this); - var list = this.allTabsAsArray(); - var i = scil.Utils.indexOf(list, td); - if (i > 0) - this.showTab(list[i - 1]); - else - this.showTab(list[i + 1]); - td.clientarea.parentNode.removeChild(td.clientarea); - delete td.clientarea; - if (this.vertical) { - var td0 = td.previousSibling; - if (td0 != null && td0.clientarea == null) - td0.parentNode.removeChild(td0); - td.parentNode.removeChild(td); - } - else { - var tr = td.parentNode; - var tr0 = tr.previousSibling; - if (tr0 != null) - tr0.parentNode.removeChild(tr0); - tr.parentNode.removeChild(tr); - } - } - allTabsAsArray() { - var ret = []; - var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes; - for (var i = 0; i < list.length; ++i) { - var td; - if (this.vertical) - td = list[i]; - else - td = list[i].childNodes[0]; - if (td.getAttribute('sciltab') == '1') - ret.push(td); - } - return ret; - } - allTabs() { - var ret = {}; - var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes; - for (var i = 0; i < list.length; ++i) { - var td; - if (this.vertical) - td = list[i]; - else - td = list[i].childNodes[0]; - if (td.getAttribute('sciltab') == '1') { - var k = td.getAttribute('key'); - if (k != null && k != '') - ret[k] = td; - } - } - return ret; - } - showTab(td) { - if (typeof (td) == 'string') { - td = this.findTab(td); - } - else if (typeof (td) == 'number') { - var list = this.allTabsAsArray(); - td = list[td]; - } - if (td != null && td.tagName != 'TD') - td = scil.Utils.getParent(td, 'td'); - if (td == null) - return; - const old = this.currenttab; - if (this.options.onBeforeShowTab != null) { - if (this.options.onBeforeShowTab(td, old) == false) - return; - } - if (this.currenttab != null) { - this.currenttab.style.backgroundColor = '#eee'; - this.currenttab.style.color = ''; - } - if (old != null && old.clientarea != null) - old.clientarea.style.display = 'none'; - td.style.backgroundColor = scil.Tabs.kHighlightColor; - td.style.color = '#fff'; - this.currenttab = td; - if (td.clientarea != null) - td.clientarea.style.display = ''; - if (this.options.onShowTab != null) - this.options.onShowTab(td, old, this); - } - show() { - this.table.style.display = ''; - } - hide() { - this.table.style.display = 'none'; - } -} -class Tabs extends TabsInt { -} -Tabs.kHighlightColor = '#88f'; -Tabs.kBorderStyle = 'solid 1px #88f'; -scil.Tabs = Tabs; - - -/***/ }), - -/***/ "./form/TabbedForm.ts": -/*!****************************!*\ - !*** ./form/TabbedForm.ts ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TabbedForm: () => (/* binding */ TabbedForm) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * TabbedForm class - TabbedForm Control - * @class scilligence.TabbedForm - *
- * Example:
- *    dojo.ready(function () {
- *        var parent = scil.Utils.createElement(document.body, "div");
- *            var options = { tabs: {
- *                a: { caption: "Tab A", fields: { field1: { label: "Field1"}} },
- *                b: { caption: "Tab B", fields: { field2: { label: "Field2" }, field3: { label: "Field3"}} }
- *            }, buttons: { label: "Test", onclick: function() { alert(999); } }, border: true
- *            };
- *        var form = new scil.TabbedForm(options).render(parent);
- *    });
- * 
- */ -class TabbedForm { - constructor(options) { - this.T = 'TABBED_FORM'; - this.form = null; - this.options = options; - this.buttons = []; - this.fields = {}; - } - render(parent) { - if (typeof (parent) == 'string') - parent = dojo.byId(parent); - var me = this; - this.options.onShowTab = function (td, old) { - if (!td.rendered && old != null) - me.renderTabForm(td); - }; - this.options.onBeforeShowTab = function (td, old) { - if (me.options.onbeforeshowtab != null && td != old) - return me.options.onbeforeshowtab(td, old); - }; - var first = true; - for (var k in this.options.tabs) - this.options.tabs[k].tabkey = k; - this.tabs = new scil.Tabs(parent, this.options); - for (var k in this.options.tabs) { - this.options.tabs[k].tabkey = k; - var td = this.tabs.findTab(k); - td.form = new scil.Form(this.options); - if (!this.options.delayrender || first) { - this.renderTabForm(td); - first = false; - } - } - var buttons = this.options.buttons; - if (buttons != null) { - var div = scil.Utils.createElement(parent, 'div', null, { marginTop: '10px', textAlign: 'center' }); - if (buttons.length > 0) { - for (var i = 0; i < buttons.length; ++i) - this.buttons.push(scil.Utils.createButton(div, buttons[i])); - } - else { - this.buttons.push(scil.Utils.createButton(div, buttons)); - } - } - return this; - } - /** - * Set a field value - * @function setFieldValue - * @param {string} id - the id of the field - * @param {string} v - value to be set - */ - setFieldValue(id, v, data) { - var field = this.fields[id]; - scil.Form.setFieldData(this.fields[id], this.items[id], this.viewonly, v, data); - } - focus(key) { - scil.Form.focus(this.fields, key); - } - /** - * Check required fields - * @function checkRequiredFields - */ - checkRequiredFields(stub) { - var n = 0; - var tabs = this.tabs.allTabs(); - for (var k in tabs) { - var form = tabs[k].form; - if (form != null) - n += form.checkRequiredFields(); - } - return n; - } - /** - * Reset required fields - * @function resetRequiredFields - */ - resetRequiredFields() { - var tabs = this.tabs.allTabs(); - for (var k in tabs) { - var form = tabs[k].form; - if (form != null) - form.resetRequiredFields(); - } - } - renderTabForm(td) { - if (td.rendered) - return; - var k = td.getAttribute('key'); - var fields = null; - if (this.options.tabs != null && this.options.tabs[k] != null) - fields = this.options.tabs[k].fields; - var display = td.clientarea.style.display; - td.clientarea.style.display = ''; - td.form.render(td.clientarea, fields, this.options.tabs[k]); - td.clientarea.style.display = display; - scil.apply(this.fields, td.form.fields); - td.rendered = true; - } - getCurTabData(includeNullValues) { - if (this.tabs.currenttab == null || this.tabs.currenttab.form == null) - return null; - return this.tabs.currenttab.form.getData(includeNullValues); - } - /** - * Collect form data in xml format - * @function getXml - * @returns xml string - */ - getXml(nowrapper) { - var ret = nowrapper ? '' : '\n'; - var tabs = this.tabs.allTabs(); - for (var k in tabs) { - var form = tabs[k].form; - if (form != null) - ret += form.getXml(true); - } - if (!nowrapper) - ret += ''; - return ret; - } - /** - * Set form data - * @function setXml - * @param {xml} data the form data, *id* is the key - */ - setXml(xml) { - try { - var data = scil.Form.xml2Json(xml); - this.setData(data); - } - catch (e) { - alert('Error raised when setting form data: ' + e.message); - } - } - getData(includeNullValues) { - if (this.options.getdata == 'tab') - return this.getCurTabData(includeNullValues); - var ret = {}; - var tabs = this.tabs.allTabs(); - for (var k in tabs) { - var form = tabs[k].form; - if (form != null) { - var data = form.getData(includeNullValues); - scil.apply(ret, data); - } - } - return ret; - } - setData(data, overwritemode) { - if (this.options.setdata == 'tab') { - if (this.tabs.currenttab != null && this.tabs.currenttab.form != null) - this.tabs.currenttab.form.setData(data, overwritemode); - } - else { - var tabs = this.tabs.allTabs(); - for (var k in tabs) { - var form = tabs[k].form; - if (form != null) - form.setData(data, overwritemode); - } - } - } -} -scil.TabbedForm = TabbedForm; - - -/***/ }), - -/***/ "./page/Page.Custom.ts": -/*!*****************************!*\ - !*** ./page/Page.Custom.ts ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageCustom: () => (/* binding */ PageCustom) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page.Custom class - Page.Custom Control - * @class scilligence.Page.Custom - *
- * Example:
- *        var tabs = this.page.addTabs();
- *        scil.pmf.Company.allForms(this, tabs, this.parenttable, true);
- *
- *        var me = this;
- *        this.dynamicform = tabs.addForm({
- *            caption: "Dynamic Form",
- *            type: "custom",
- *            onclear: function () {
- *                scil.Utils.removeAll(me.dynamicform.form.div);
- *            },
- *            onrefresh: function (from, args) {
- *                scil.Utils.removeAll(me.dynamicform.form.div);
- *                var fields = {
- *                    mass: { label: "Mass", type: "number", width: 200, unit: "g" },
- *                    name: { label: "Compound Name", type: "input", width: 200, button: { label: "Test", onclick: function () { alert(99); } } },
- *                    vendor: { label: "Vendor", type: "select", options: ["Company A", "Company B"], width: 200 }
- *                };
- *                var form = new scil.Form({ viewonly: false });
- *                form.render(me.dynamicform.form.div, fields, { immediately: true });
- *            }
- *        });
- * 
- */ -class PageCustom { - constructor(page, options, parent) { - this.T = 'PAGE.CUSTOM'; - const me = this; - this.refreshneeded = true; - this.page = page; - this.options = options; - this.receivers = []; - let buttons = []; - if (options.norefresh == false) - buttons.push({ - src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function () { - me.refresh(); - }, - }); - if (this.options.buttons != null) - buttons = buttons.concat(this.options.buttons); - this.form = new scil.Page.ExplorerForm(parent, { expandable: options.expandable, caption: options.caption, visible: options.visible, buttons: buttons, marginBottom: options.marginBottom, expanded: this.options.expanded, onexpand: this.options.onexpand }); - this.form.host = this; - if (this.options.oncreate != null) - this.options.oncreate(this.form.div, this.options); - } - show() { - this.form.show(); - } - hide() { - this.form.hide(); - } - refresh(from, args) { - if (args != null) - this.args = args; - if (!this.form.isVisible()) { - this.refreshneeded = true; - return; - } - this.refreshneeded = false; - if (this.options.onrefresh != null) - this.options.onrefresh(from, this.args, this); - } - clear() { - if (this.options.onclear != null) - this.options.onclear(); - } -} -scil.Page.Custom = PageCustom; - - -/***/ }), - -/***/ "./page/Page.Explorer.ts": -/*!*******************************!*\ - !*** ./page/Page.Explorer.ts ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageExplorer: () => (/* binding */ PageExplorer) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw -// Copyright (C) 2014 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -class PageExplorer { - constructor(parent, options) { - this.T = 'PAGE.EXPLORER'; - if (typeof (parent) == 'string') - parent = scil.byId(parent); - this.options = options; - this.resizing = null; - if (options.resizable == null) - options.resizable = true; - const tbody = scil.Utils.createTable(parent, 0, 0, { width: '100%' }); - const tr = scil.Utils.createElement(tbody, 'tr'); - if (options.left == false) { - this.left = null; - this.middle = null; - } - else { - const w = options.leftwidth > 0 ? options.leftwidth : 200; - const td = scil.Utils.createElement(tr, 'td', null, { width: '1%', paddingRight: '1px' }, { vAlign: 'top' }); - const tbody2 = scil.Utils.createTable(td, 0, 0, options.resizable ? null : { width: w }); - const tr2 = scil.Utils.createElement(tbody2, 'tr'); - const td2 = scil.Utils.createElement(tr2, 'td'); - this.left = scil.Utils.createElement(td2, 'div', null, options.resizable ? { width: w, overflow: 'hidden' } : null); - if (options.middle != false) { - this.middle = scil.Utils.createElement(tr, 'td'); - const div = scil.Utils.createElement(this.middle, 'div', null, { width: `${scil.Page.kHandleWidth}px` }); - scil.Utils.unselectable(this.middle); - scil.Utils.unselectable(div); - } - if (options.resizable) { - const me = this; - new scil.Resizable(this.middle, { - direction: 'x', mouseovercolor: scil.Page.kHandleColor, onresize: function (delta) { - return me.onresize(delta); - }, - }); - } - } - this.right = options.right == false ? null : scil.Utils.createElement(tr, 'td', null, { width: '99%', paddingLeft: options.left == false ? null : '1px' }, { vAlign: 'top' }); - } - onresize(delta) { - const w = scil.Utils.parsePixel(this.left.style.width) + delta; - if (w > 20) { - this.left.style.width = w + 'px'; - if (this.options.onresize != null) - this.options.onresize(w, this); - return true; - } - return false; - } -} -scil.Page.Explorer = PageExplorer; - - -/***/ }), - -/***/ "./page/Page.ExplorerForm.ts": -/*!***********************************!*\ - !*** ./page/Page.ExplorerForm.ts ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageExplorerForm: () => (/* binding */ PageExplorerForm), -/* harmony export */ PageExplorerFormInt: () => (/* binding */ PageExplorerFormInt) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw -// Copyright (C) 2014 Scilligence Corporation -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -class PageExplorerFormInt { - constructor(parent, options) { - this.T = 'PAGE.EXPLORER_FORM'; - this.options = options == null ? {} : options; - if (typeof (parent) == 'string') - parent = scil.byId(parent); - const tbody = scil.Utils.createTable(parent, 0, 0, { width: '100%', background: '#fff' }); - this.dom = this.root = tbody.parentNode; - if (this.options.visible == false) - this.root.style.display = 'none'; - if (options.caption == null) { - tbody.parentElement /* parentNode */.style.borderTop = 'solid 1px ' + scil.Page.ExplorerForm.kHeaderStyle.background; - this.title = null; - } - else { - this.title = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', scil.Lang.res(options.caption), scil.Page.ExplorerForm.kHeaderStyle); - } - this.toolbar = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, scil.Page.ExplorerForm.kToolbarStyle); - if (options.toolbarvisible == false) - this.toolbar.style.display = 'none'; - this.toolbar.style.whiteSpace = 'nowrap'; //I#11762 - this.main = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, scil.Page.ExplorerForm.kAreaStyle); - this.div = scil.Utils.createElement(this.main, 'div'); - this.table = tbody.parentNode; - scil.Form.createToolbarButtons(this.toolbar, options.buttons, options.padding); - if (this.title != null && options.expandable != false) { - const me = this; - dojo.connect(this.title, 'onclick', function () { - const f = !me.isExpanded(); - me.expand(f); - if (me.options.onexpand != null) - me.options.onexpand(f); - }); - if (options.expanded == false) - this.expand(false); - } - if (this.options.marginTop != null) - this.table.style.marginTop = this.options.marginTop; - this.table.style.marginBottom = this.options.marginBottom == null ? '25px' : this.options.marginBottom; - } - isVisible() { - return scil.Utils.isAllParentVisible(this.root); - } - show() { - if (this.isVisible()) - return; - this.root.style.display = ''; - if (this.host != null && this.host.refresh != null && this.host.refreshneeded) - this.host.refresh(); - } - hide() { - this.root.style.display = 'none'; - } - collapse() { - this.expand(false); - } - expand(f) { - if (f == null) - f = true; - this.toolbar.style.display = f ? '' : 'none'; - this.main.style.display = f ? '' : 'none'; - this.title.style.backgroundImage = scil.App.imgSmall(f ? 'expand.png' : 'collapse.png', true); - this.title.style.backgroundRepeat = 'no-repeat'; - this.title.style.backgroundPosition = 'left center'; - if (this.host != null && this.host.refresh != null && this.host.refreshneeded) - this.host.refresh(); - } - isExpanded() { - return this.main.style.display == ''; - } -} -class PageExplorerForm extends PageExplorerFormInt { -} -PageExplorerForm.kHeaderStyle = { background: '#88f', color: 'white', padding: '3px 10px 3px 16px', whiteSpace: 'nowrap', borderTopLeftRadius: '5px', borderTopRightRadius: '5px' }; -PageExplorerForm.kToolbarStyle = { background: '#f5f5f5', border: 'solid 1px #f5f5f5', padding: '0 5px 0 5px' }; -PageExplorerForm.kAreaStyle = { border: 'solid 1px #f5f5f5', padding: '5px' }; -scil.Page.ExplorerForm = PageExplorerForm; - - -/***/ }), - -/***/ "./page/Page.Form.ts": -/*!***************************!*\ - !*** ./page/Page.Form.ts ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageForm: () => (/* binding */ PageForm) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page.Form class - Page.Form Control - * @class scilligence.Page.Form - */ -class PageForm { - constructor(page, options, parent) { - this.T = 'PAGE.FORM'; - const me = this; - this.refreshneeded = true; - this.page = page; - this.options = options; - this.receivers = []; - let buttons = []; - if (options.norefresh == false) - buttons.push({ - src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function () { - me.refresh(); - }, - }); - if (this.options.buttons != null) - buttons = buttons.concat(this.options.buttons); - if (options.viewonly == null) - options.viewonly = true; - this.form = new scil.Page.ExplorerForm(parent, { expandable: options.expandable, caption: options.caption, visible: options.visible, buttons: buttons, marginBottom: options.marginBottom, expanded: this.options.expanded, onexpand: this.options.onexpand }); - this.form.host = this; - this.table = new scil.Form({ alternativeforms: this.options.alternativeforms, viewonly: options.viewonly, onchange: this.options.onformchange }); - this.table.render(this.form.div, this.options.fields, { immediately: true, hidelabel: options.hidelabel }); - } - show() { - this.form.show(); - } - hide() { - this.form.hide(); - } - refresh(from, args) { - if (args != null) - this.args = args; - if (!this.form.isVisible() || !this.form.isExpanded()) { - this.refreshneeded = true; - return; - } - if (scil.Utils.isDictEmpty(this.args)) - return; - const me = this; - this.refreshneeded = false; - let params = this.args; - if (params == null) - params = {}; - if (me.options.onbeforerefresh != null) - me.options.onbeforerefresh(params); - this.page.receiverClear(this); - scil.Utils.ajax(this.page.url + this.options.object + '.load', function (ret) { - if (me.options.onsetdata != null) { - me.options.onsetdata(me.table, ret); - } - else if (me.options.savedoc && ret.doc != null && ret.doc != '') { - me.table.setXml(ret.doc); - me.table.setData(ret, true); - } - else { - me.table.setData(ret); - } - }, params); - } - clear() { - this.table.setData({}); - this.page.receiverClear(this); - } -} -scil.Page.Form = PageForm; - - -/***/ }), - -/***/ "./page/Page.Tab.ts": -/*!**************************!*\ - !*** ./page/Page.Tab.ts ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageTab: () => (/* binding */ PageTab) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page.Tab class - Page.Tab Control - * @class scilligence.Page.Tab - */ -class PageTab { - constructor(page, options, parent) { - this.T = 'PAGE.TAB'; - this.page = page; - this.options = options == null ? {} : options; - this.onShowTab2 = this.options.onShowTab; - const me = this; - this.options.onShowTab = function (tab, old) { - if (old != null && old.form != null) - old.form.hide(); - if (tab.form != null) - tab.form.show(); - if (me.onShowTab2 != null) - me.onShowTab2(tab, old); - }; - this.tabs = new scil.Tabs(parent, this.options); - } - addForm(options, listento) { - const td = this.tabs.addTab(options); - const caption = options.captions; - options.caption = null; - td.form = scil.Page.addForm(this.page, options, listento, td.clientarea); - options.caption = caption; - scil.Page.setBorder(td.form.form); - return td.form; - } - removeTab(key) { - return this.tabs.removeTab(key); - } - findTab(key) { - return this.tabs.findTab(key); - } - showTab(td) { - this.tabs.showTab(td); - } - show() { - this.tabs.show(); - } - hide() { - this.tabs.hide(); - } -} -scil.Page.Tab = PageTab; - - -/***/ }), - -/***/ "./page/Page.Table.ts": -/*!****************************!*\ - !*** ./page/Page.Table.ts ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageTable: () => (/* binding */ PageTable) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page.Table class - Page.Table Control - * @class scilligence.Page.Table - */ -class PageTable { - constructor(page, options, parent) { - this.T = 'PAGE.TABLE'; - const me = this; - this.refreshneeded = true; - this.page = page; - this.options = options; - this.receivers = []; - let buttons = []; - if (!options.norefresh) - buttons.push({ - src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function () { - me.refresh(); - }, - }); - if (this.options.fields != null) { - buttons.push('-'); - if (this.options.canadd != false) - buttons.push({ - src: scil.App.imgSmall('add.png'), title: 'New', onclick: function () { - me.add(); - }, - }); - if (this.options.canedit != false) - buttons.push({ - src: scil.App.imgSmall('edit.png'), title: 'Edit', onclick: function () { - me.edit(); - }, - }); - } - if (this.options.buttons != null) - buttons = buttons.concat(this.options.buttons); - if (this.options.columnhidable) { - buttons.push('-'); - buttons.push({ - src: scil.App.imgSmall('columns.png'), title: 'Show/Hide Columns', onclick: function () { - me.table.showHideColumns(); - }, - }); - } - this.form = new scil.Page.ExplorerForm(parent, { expandable: options.expandable, caption: options.caption, visible: options.visible, marginBottom: options.marginBottom, buttons: buttons, expanded: this.options.expanded, onexpand: this.options.onexpand }); - this.form.host = this; - this.pages = scil.Utils.createElement(this.form.div, 'div'); - this.tablediv = scil.Utils.createElement(this.form.div, 'div'); - this.recreateTable(); - } - recreateTable() { - scil.Utils.removeAll(this.tablediv); - const me = this; - this.table = new scil.Table(true, null, { - onAddRow: this.options.onAddRow, selectrow: true, onselectrow: function (tr) { - me.selectrow(tr); - }, rowcheck: this.options.rowcheck, grouping: this.options.grouping, grouplinestyle: this.options.grouplinestyle, hidecolumncookiekey: this.options.hidecolumncookiekey, - }); - this.table.render(this.tablediv, this.options.columns); - this.table.tbody.parentNode.style.width = '100%'; - if (this.options.oncreatetable != null) - this.options.oncreatetable(this); - } - selectFirstRow() { - this.table.selectFirstRow(); - } - show() { - this.form.show(); - } - hide() { - this.form.hide(); - } - clear() { - scil.Utils.removeAll(this.pages); - this.table.setData({}); - this.page.receiverClear(this); - } - selectrow(tr) { - const id = tr == null ? null : tr.getAttribute('key'); - let args = null; - /*if (id != null)*/ - { - args = {}; - args[this.options.key] = id; - const data = this.table.getRowData(tr); - if (this.options.name != null && data != null) - args[this.options.name] = data[this.options.name]; - this.page.receiverRefresh(this, args); - } - if (this.options.onselectrow != null) - this.options.onselectrow(tr, args); - } - loadPage(page) { - if (this.args == null) - this.args = {}; - if (this.options.onloadpage != null) - this.options.onloadpage(this.args, page, this); - this.refresh(null, null, null, page); - } - list(ret) { - const me = this; - if (ret == null) - ret = {}; - this.table.setData(ret.rows == null ? ret : ret.rows); - scil.Table.listPages(this.pages, ret.page, ret.pages, function (page) { - me.loadPage(page); - }); - } - refresh(from, args, selectfirstrow, page) { - if (args != null) - this.args = args; - if (this.args == null) - this.args = {}; - this.args.page = page; - if (!this.form.isVisible() || !this.form.isExpanded()) { - this.refreshneeded = true; - return; - } - this.page.receiverClear(this); - this.refreshneeded = false; - const me = this; - let params = this.args; - if (params == null) - params = {}; - if (me.options.onbeforerefresh != null) - me.options.onbeforerefresh(params); - const fun = this.options.jsonp ? scil.Utils.jsonp : scil.Utils.ajax; - fun(this.page.url + this.options.object + '.list', function (ret) { - if (me.options.onbeforelisting != null) - me.options.onbeforelisting(ret, me); - if (selectfirstrow) { - me.list(ret); - me.table.selectFirstRow(); - } - else { - const key = me.table.getCurrentKey(); - me.list(ret); - if (key != null) - me.table.selectRow(key); - } - //if (ret.length == 0) - // scil.Utils.alert("No records found. It might because you don't have access to it."); - if (me.options.onrefreshed != null) - me.options.onrefreshed(me); - }, params); - } - add(values) { - if (this.options.onAddNew != null && this.options.onAddNew(this.args) == false) - return; - this.add2(values); - } - add2(values) { - this.create(); - this.dlg.show(); - if (this.options.usetabs) - this.dlg.form.tabs.showTab(0); - if (this.options.onshowform != null) - this.options.onshowform(this.dlg, this.args); - const data = values != null ? values : (this.options.defaultvalues == null ? {} : this.options.defaultvalues); - this.applyArgs(data); - if (this.options.key != null) - data[this.options.key] = null; - if (this.options.onloaddata) - this.options.onloaddata(data, this.args, this.dlg); - this.dlg.form.setData(data); - this.dlg.editkey = null; - this.showDelButton(false); - } - copyNew(key) { - if (key == null) { - for (const k in this.options.fields) { - if (this.options.fields[k].iskey) { - key = k; - break; - } - } - } - if (key == null) - return; - const me = this; - this.edit(function (ret) { - ret[key] = ' '; - me.dlg.editkey = null; - }); - } - edit(onsetdata) { - if (this.table.currow == null) { - scil.Utils.alert('please select a row first'); - return; - } - this.add2(); - this.showDelButton(true); - const me = this; - const data = {}; - data[this.options.key] = this.table.currow.getAttribute('key'); - this.dlg.editkey = data[this.options.key]; - if (this.options.onEdit != null && this.options.onEdit(data) == false) - return; - scil.Utils.ajax(this.page.url + this.options.object + '.load', function (ret) { - //me.applyArgs(ret); - if (me.options.onloaddata) - me.options.onloaddata(ret, me.args, me.dlg); - if (onsetdata != null) - onsetdata(ret, me); - if (me.options.savedoc && ret.doc != null && ret.doc != '') { - me.dlg.form.setXml(ret.doc); - me.dlg.form.setData(ret, true); - } - else { - me.dlg.form.setData(ret); - } - }, data); - } - applyArgs(data) { - if (this.args != null) - scil.apply(data, this.args); - } - cancel() { - if (this.dlg != null) - this.dlg.hide(); - } - save() { - if (this.dlg.form.checkRequiredFields() > 0) { - scil.Utils.alert('Some required field(s) are blank'); - return; - } - const me = this; - const data = this.dlg.form.getData(); - if (this.options.savedoc) - data.doc = this.dlg.form.getXml(); - if (this.options.onbeforesave) { - if (this.options.onbeforesave(data, this.args, this.dlg.form) == false) - return false; - } - scil.Utils.ajax(this.page.url + this.options.object + '.save', function (ret) { - me.dlg.hide(); - if (ret != null && ret.rows != null && ret.rows.length > 0) { - for (let i = 0; i < ret.rows.length; ++i) { - if (me.dlg.editkey != null) - me.table.updateRow(me.dlg.editkey, ret.rows[i]); - else - me.table.addRow(ret.rows[i]); - } - } - else { - me.refresh(); - } - if (me.options.onaftersave) - me.options.onaftersave(ret, me); - }, data, { showprogress: true }); - } - del() { - const me = this; - scil.Utils.confirmYes('Delete this record?', function () { - const data = me.dlg.form.getData(); - scil.Utils.ajax(me.page.url + me.options.object + '.del', function (ret) { - me.dlg.hide(); - me.refresh(); - }, data); - }); - } - showDelButton(f) { - if (this.dlg == null) - return; - for (let i = 0; i < this.dlg.form.buttons.length; ++i) { - const b = this.dlg.form.buttons[i]; - if (b != null && b.getAttribute('key') == 'delete') { - b.style.display = f ? '' : 'none'; - break; - } - } - } - create() { - if (this.dlg != null) - return; - const me = this; - let buttons = [{ - src: scil.App.imgSmall('submit.png'), label: 'Save', key: 'save', onclick: function () { - me.save(); - }, - }]; - if (this.options.candelete != false) - buttons.push({ - src: scil.App.imgSmall('del.png'), label: 'Delete', key: 'delete', onclick: function () { - me.del(); - }, - }); - buttons.push({ - src: scil.App.imgSmall('cancel.png'), label: 'Cancel', key: 'cancel', onclick: function () { - me.cancel(); - }, - }); - if (this.options.editbuttons != null) { - if (this.options.editbuttons.length == null) - buttons.push(this.options.editbuttons); - else - buttons = buttons.concat(this.options.editbuttons); - } - if (this.options.usetabs) { - this.dlg = scil.Form.createTabDlgForm(this.options.formcaption, { tabs: this.options.fields, buttons: buttons, border: true, onchange: this.options.onformdatachange }); - } - else { - this.dlg = scil.Form.createDlgForm(this.options.formcaption, this.options.fields, buttons, { alternativeforms: this.options.alternativeforms, hidelabel: this.options.hidelabel, oncreated: this.options.oncreateform, onchange: this.options.onformdatachange }); - } - } -} -scil.Page.Table = PageTable; - - -/***/ }), - -/***/ "./page/Page.Tree.ts": -/*!***************************!*\ - !*** ./page/Page.Tree.ts ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PageTree: () => (/* binding */ PageTree) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page.Tree class - Page.Tree Control - * @class scilligence.Page.Tree - *
- * Example:
- *    <div id='parent'></div>
- *    <script type="text/javascript">
- *        scil.ready(function () {
- *            var root = { name: "Root", icon: "", expanded: true, children: [{ name: "Child", icon: "", leaf: true }, { name: "Child 2", icon: "", leaf: false } ] };
- *            var tree = new scil.Tree(scil.byId("parent"));
- *            tree.clear();
- *            tree.add(null, root);
- *        });
- *    </script>
- * 
- */ -class PageTree { - constructor(page, options, parent) { - this.T = 'PAGE.TREE'; - var me = this; - this.refreshneeded = true; - this.page = page; - this.options = options == null ? {} : options; - this.receivers = []; - var buttons = []; - if (this.options.onrender == null) { - buttons.push({ - src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function () { - me.refresh(); - }, - }); - if (this.options.fields != null) { - buttons.push('-', { - src: scil.App.imgSmall('add.png'), title: 'New', onclick: function () { - me.add(); - }, - }); - buttons.push({ - src: scil.App.imgSmall('edit.png'), title: 'Edit', onclick: function () { - me.edit(); - }, - }); - } - } - if (this.options.buttons != null) - buttons = buttons.concat(this.options.buttons); - var args = this.options.object == null ? null : { url: this.page.url + this.options.object + '.tree', icongap: '3px', onAddItem: this.options.onAddItem }; - this.form = new scil.Page.ExplorerForm(parent, { toolbarvisible: options.toolbarvisible, expandable: options.expandable, caption: options.caption, visible: options.visible, marginTop: options.marginTop, marginBottom: options.marginBottom, buttons: buttons, expanded: this.options.expanded, onexpand: this.options.onexpand }); - this.form.host = this; - if (this.options.onrender != null) { - this.options.onrender(this.form.div, args); - } - else { - this.tree = new scil.Tree(this.form.div, args); - this.tree.onSelectItem = function (item) { - me.select(item); - }; - this.tree.onExpandItem = function (node, f) { - if (me.options.onexpand != null) - return me.options.onexpand(node, f); - }; - if (this.options.startrefresh != false) - this.refresh(); - } - this.form.main.style.padding = `0`; - scil.Page.setBorder(this.form); - } - show() { - this.form.show(); - } - hide() { - this.form.hide(); - } - select(node) { - if (this.options.onselectitem != null) { - if (this.options.onselectitem(node)) - return; - } - var args = {}; - if (this.options.onBuildArgs != null) { - args = this.options.onBuildArgs(node); - } - else { - if (node != null && node.item != null && node.item[this.options.key] != null) { - args[this.options.key] = node.item[this.options.key]; - if (this.options.name != null) - args[this.options.name] = node.item.name; - } - } - this.page.receiverRefresh(this, args); - } - refresh(currentOnly) { - if (!this.form.isVisible()) { - this.refreshneeded = true; - return; - } - if (this.tree == null) - return; - if (currentOnly) { - this.tree.reloadCur(); - return; - } - this.refreshneeded = false; - this.tree.clear(); - if (this.options.root != null) { - if (this.options.root.selectable == null) - this.options.root.selectable = false; - if (this.options.root.showroot == false && this.options.root.children != null) { - for (var i = 0; i < this.options.root.children.length; ++i) - this.tree.cur = this.tree.add(null, this.options.root.children[i]); - } - else { - this.tree.cur = this.tree.add(null, this.options.root); - } - } - if (this.options.object != null && this.options.object != '') - this.tree.reloadCur(); - } - applyArgs(data) { - if (this.args != null) - scil.apply(data, this.args); - } - add() { - this.create(); - this.dlg.show(); - if (this.options.onshowform != null) - this.options.onshowform(this.dlg); - this.dlg.form.setData(this.options.defaultvalues == null ? {} : this.options.defaultvalues); - } - edit() { - this.add(); - var data = {}; - data[this.options.key] = this.tree.cur == null || this.tree.cur.item == null ? null : this.tree.cur.item[this.options.key]; - if (data[this.options.key] != null) { - var me = this; - scil.Utils.ajax(this.page.url + this.options.object + '.load', function (ret) { - if (me.options.onloaddata) - me.options.onloaddata(ret); - me.dlg.form.setData(ret); - }, data); - } - } - save() { - var me = this; - var data = this.dlg.form.getData(); - if (this.options.onbeforesave) { - var sel = {}; - sel[this.options.key] = this.tree.cur == null || this.tree.cur.item == null ? null : this.tree.cur.item[this.options.key]; - if (this.options.onbeforesave(data, sel) == false) - return false; - } - scil.Utils.ajax(this.page.url + this.options.object + '.save', function () { - me.dlg.hide(); - if (me.options.onSaved != null) - me.options.onSaved(me, data); - else - me.refresh(true); - }, data); - } - del() { - var me = this; - var data = this.dlg.form.getData(); - scil.Utils.ajax(this.page.url + this.options.object + '.del', function () { - me.dlg.hide(); - me.refresh(); - }, data); - } - create() { - if (this.dlg != null) - return; - var me = this; - var buttons = [{ - src: scil.App.imgSmall('submit.png'), label: 'Save', onclick: function () { - me.save(); - }, - }, - { - src: scil.App.imgSmall('del.png'), label: 'Delete', onclick: function () { - me.del(); - }, - }]; - this.dlg = scil.Form.createDlgForm(this.options.formcaption, this.options.fields, buttons); - if (this.options.oncreateform != null) - this.options.oncreateform(this.dlg.form); - } -} -scil.Page.Tree = PageTree; - - -/***/ }), - -/***/ "./page/Page.ts": -/*!**********************!*\ - !*** ./page/Page.ts ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Page: () => (/* binding */ Page), -/* harmony export */ PageInt: () => (/* binding */ PageInt) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// Scilligence JSDraw -// Copyright (C) 2014 Scilligence Corporation -// Version 1.0.0.2013-11-06 -// http://www.scilligence.com/ -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Page class - Page Framework - * JSDraw.Page framework helps to quickly build modern web applications - * @class scilligence.Page - *
- * Example:
- *    <div id="placeholder"></div>
- *
- *    <script type="text/javascript">
- *    scil.ready(function () { init(); });
- *
- *    function init() {
- *        var tree = {
- *            caption: "Analytical Category",
- *            key: "category",
- *            name: "category",
- *            //object: "instrument",
- *            root: { name: "Categories", icon: "img/ext/bmp.gif", children: [
- *                { name: "Cambridge", icon: "img/ext/pdf.gif", isleaf: true },
- *                { name: "Boston", icon: "img/ext/doc.gif", isleaf: true }
- *            ]
- *            }
- *        };
- *        this.page = new scil.Page(scil.byId("placeholder"), tree, { resizable: true, leftwidth: 300 });
- *
- *        var width = 300;
- *        var instruments = this.page.addForm({
- *            caption: "Analyticals",
- *            key: "analyticalid",
- *            name: "name",
- *            object: "analytical",
- *            columns: {
- *                analyticalid: { type: "hidden", iskey: true },
- *                name: { label: "Analytical Name", width: 200 },
- *                category: { label: "Category", width: 200 },
- *                version: { label: "Version", width: 100 }
- *            },
- *            formcaption: "Analytical",
- *            fields: {
- *                analyticalid: { type: "hidden", iskey: true },
- *                name: { label: "Analytical Name", width: 800 },
- *                category: { label: "Category", width: 800 },
- *                version: { label: "Version", width: 100 },
- *                requestform: { label: "Request Form", type: "textarea", height: 200, width: 800 },
- *                resultform: { label: "Request Form", type: "textarea", height: 200, width: 800 }
- *            }
- *        }, this.page.tree);
- *
- *    }
- *    </script>
- * 
- */ -class PageInt { - constructor(parent, tree, forms, middle, onRefreshReceivers) { - this.T = 'PAGE'; - let args; - if (forms != null && forms.length > 0 || middle != null || onRefreshReceivers != null) { - args = { middle: middle, onRefreshReceivers: onRefreshReceivers, forms: forms }; - } - else { - args = forms == null ? {} : forms; - } - if (tree == null && args.left == null) - args.left = false; - if (tree != null) - args.onresize = tree.onresizetree; - this.onRefreshReceivers = args.onRefreshReceivers; - this.url = scil.Page.ajaxurl == null ? 'ajax.ashx?cmd=' : scil.Page.ajaxurl; - this.explorer = new scil.Page.Explorer(parent, args); - if (tree != null && tree.root != null && tree.root.children != null) { - for (let i = 0; i < tree.root.children.length; ++i) - tree.root.children[i].name = scil.Lang.res(tree.root.children[i].name); - } - this.tree = null; - if (tree != null) { - // const div = scil.Utils.createElement(this.explorer.left, "div", null, { width: tree.width > 0 ? tree.width : 240 }); - if (tree.type == 'table') - this.table = new scil.Page.Table(this, tree, this.explorer.left); - else if (tree.type == 'form') - this.form = new scil.Page.Form(this, tree, this.explorer.left); - else - this.tree = new scil.Page.Tree(this, tree, this.explorer.left); - } - if (args.forms != null) { - let last = this.tree == null ? this.form : this.tree; - for (let i = 0; i < args.forms.length; ++i) - last = this.addForm(args.forms[i], last); - } - } - addTabs(options) { - const tabs = new scil.Page.Tab(this, options, this.explorer.right); - if (options != null && options.visible == false || options == false) - tabs.hide(); - return tabs; - } - addDiv(text, style) { - return scil.Utils.createElement(this.explorer.right, 'div', text, style); - } - addForm(options, listento, parent, leftside) { - return scil.Page.addForm(this, options, listento, parent, leftside); - } - addResizeHandle(onresize, height) { - const div = this.addDiv(); - div.style.height = (height > 0 ? height : scil.Page.kHandleWidth) + 'px'; - div.style.marginBottom = '2px'; - new scil.Resizable(div, { direction: 'y', mouseovercolor: scil.Page.kHandleColor, onresize: onresize }); - return div; - } - removeForm(form) { - const root = form.form.root; - root.parentNode.removeChild(root); - } - receiverRefresh(form, args) { - if (this.onRefreshReceivers != null) - this.onRefreshReceivers(args, form); - for (let i = 0; i < form.receivers.length; ++i) - form.receivers[i].refresh(form, args); - } - receiverClear(form) { - for (let i = 0; i < form.receivers.length; ++i) - form.receivers[i].clear(); - } -} -class Page extends PageInt { - static addForm(page, options, listento, parent, leftside) { - if (parent == null) - parent = leftside ? page.explorer.left : page.explorer.right; - let form = null; - if (options.type == 'form') - form = new scil.Page.Form(page, options, parent); - else if (options.type == 'custom') - form = new scil.Page.Custom(page, options, parent); - /* - else if (options.type == 'calendar') - form = new scil.Page.Calendar(page, options, parent); - */ - else - form = new scil.Page.Table(page, options, parent); - if (listento != null) - listento.receivers.push(form); - scil.Page.setBorder(form.form); - options.form = form; - return form; - } - static setBorder(form) { - form.toolbar.style.borderLeftColor = scil.Tabs.kHighlightColor; - form.toolbar.style.borderRightColor = scil.Tabs.kHighlightColor; - form.main.style.borderLeftColor = scil.Tabs.kHighlightColor; - form.main.style.borderRightColor = scil.Tabs.kHighlightColor; - form.main.style.borderBottomColor = scil.Tabs.kHighlightColor; - } -} -scil.Page = Page; - - -/***/ }), - -/***/ "./src/Atom.ts": -/*!*********************!*\ - !*** ./src/Atom.ts ***! - \*********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Atom: () => (/* binding */ Atom) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Atom class - * @class scilligence.JSDraw2.Atom - */ -class Atom { - /** - * @constructor Atom - * @param {Point} p - coordinate - * @param {string} elem - element symbol - * @bio {bool} bio - indicate if this is a Bio object - */ - constructor(p, elem, bio) { - this.T = 'ATOM'; - this.p = p; - this.charge = 0; - this.isotope = null; - this.radical = null; - this.group = null; - this.alias = null; - this.superatom = null; - this.attachpoints = []; - this.rgroup = null; - this.bio = bio; - this.locked = false; - this.hidden = null; - this._rect = null; - if (bio == null) { - if (elem == null || elem.length == 0) { - this.elem = 'C'; - } - else if (elem == 'D') { - this.elem = 'H'; - this.isotope = 2; - } - else if (elem == 'T') { - this.elem = 'H'; - this.isotope = 3; - } - else { - this.elem = elem; - } - } - else { - this.elem = elem; - } - this.color = null; - this.hcount = null; - this.selected = false; - this.f = null; - this.bonds = null; - this.id = null; - this.atommapid = null; - this.query = null; - this.hasError = null; - this.hs = null; - this.val = null; - this.tag = null; - } - clone(selectedOnly) { - const a = new JSDraw2.Atom(this.p.clone(), this.elem, dojo.clone(this.bio)); - a.charge = this.charge; - a.isotope = this.isotope; - a.radical = this.radical; - a.hcount = this.hcount; - a.id = this.id; - a.color = this.color; - a.tag = this.tag; - a.alias = this.alias; - a.superatom = this.superatom == null ? null : this.superatom.clone(); - a.attachpoints = scil.clone(this.attachpoints); - a.rgroup = this.rgroup == null ? null : this.rgroup.clone(selectedOnly); - a.atommapid = this.atommapid; - a.hasError = this.hasError; - a.hs = this.hs; - a.val = this.val; - if (this.query != null) - a.query = scil.clone(this.query); - if (this.bio != null) - a.bio = scil.clone(this.bio); - a.locked = this.locked; - a.hidden = this.hidden; - a.ratio = this.ratio; - a.selected = this.selected; - return a; - } - biotype() { - return this.bio == null ? null : this.bio.type; - } - isMarkedStereo() { - var bs = this.bonds; - if (bs == null || bs.length != 3 && bs.length != 4) - return false; - for (var i = 0; i < bs.length; ++i) { - if (bs[i].a1 == this && (bs[i].type == 5 /* JSDraw2.BONDTYPES.WEDGE */ || bs[i].type == 6 /* JSDraw2.BONDTYPES.HASH */)) - return true; - } - return false; - } - updateRGroup() { - if (this.rgroup != null) - this.rgroup.text = (this.alias == null || this.alias == '' ? this.elem : this.alias) + '='; - } - getLabel() { - if (this.alias != null && this.alias != '') - return this.alias; - return this.elem; - } - html(scale, len) { - var s = '= 1 && this.radical <= 3) - s += ' rad=\'' + this.radical + '\''; - if (this.isotope > 0) - s += ' iso=\'' + this.isotope + '\''; - if (this.tag != null && this.tag != '') - s += ' tag=\'' + scil.Utils.escXmlValue(this.tag) + '\''; - if (this.alias != null && this.alias != '') - s += ' alias=\'' + scil.Utils.escXmlValue(this.alias) + '\''; - if (this.color != null) - s += ' clr=\'' + this.color + '\''; - if (this.atommapid > 0) - s += ' ami=\'' + this.atommapid + '\''; - if (this.locked) - s += ' locked=\'1\''; - if (this.attachpoints.length > 0) { - var apos = ''; - for (var i = 0; i < this.attachpoints.length; ++i) - apos += (i > 0 ? ',' : '') + this.attachpoints[i]; - s += ' apo=\'' + apos + '\''; - } - if (this.hs > 0) - s += ' hs=\'' + this.hs + '\''; - if (this.val > 0) - s += ' val=\'' + this.val + '\''; - if (this.group != null) - s += ' g=\'' + this.group.id + '\''; - if (this.query != null) { - if (this.query.sub != null) - s += ' sub=\'' + this.query.sub + '\''; - if (this.query.uns != null) - s += ' uns=\'' + (this.query.uns ? 1 : 0) + '\''; - if (this.query.rbc != null) - s += ' rbc=\'' + this.query.rbc + '\''; - if (this.query.als != null && this.query.t != null) { - s += ' als=\'' + this.query.als.join(',') + '\''; - s += ' als_t=\'' + (this.query.t == false ? 0 : 1) + '\''; - } - } - } - else { - s += ' bio=\'' + this.bio.type + '\''; - if (!scil.Utils.isNullOrEmpty(this.bio.subtype)) - s += ' subtype=\'' + this.bio.subtype + '\''; - if (!scil.Utils.isNullOrEmpty(this.bio.sequences)) - s += ' seq=\'' + scil.Utils.escXmlValue(this.bio.sequences) + '\''; - if (this.bio.id > 0) - s += ' bioid=\'' + scil.Utils.escXmlValue(this.bio.id) + '\''; - if (!scil.Utils.isNullOrEmpty(this.bio.annotation)) - s += ' ann=\'' + scil.Utils.escXmlValue(this.bio.annotation) + '\''; - if (this.elem == '?' && !scil.Utils.isNullOrEmpty(this.bio.ambiguity)) - s += ' amb=\'' + scil.Utils.escXmlValue(this.bio.ambiguity) + '\''; - if (this.biotype() == "HELM_BLOB" /* org.helm.webeditor.HELM.BLOB */ && !scil.Utils.isNullOrEmpty(this.bio.blobtype)) - s += ' blobtype=\'' + scil.Utils.escXmlValue(this.bio.blobtype) + '\''; - } - if (this.rgroup == null && this.superatom == null) { - s += '/>'; - } - else { - s += '>\n'; - if (this.rgroup != null) { - s += '\n'; - s += this.rgroup.html(scale) + '\n'; - for (var j = 0; j < this.rgroup.mols.length; ++j) { - var s2 = this.rgroup.mols[j]._getXml(null, null, null, null, len, true); - if (s2 != null) - s += s2; - } - s += ''; - } - if (this.superatom != null) { - s += '\n'; - s += this.superatom._getXml(null, null, null, null, len, true); - s += ''; - } - s += ''; - } - return s; - } - readHtml(e) { - var c = e.getAttribute('c'); - if (c != null) - this.charge = parseInt(c); - var rStr = e.getAttribute('clr'); - if (rStr != null) - this.color = rStr; - var rad = e.getAttribute('rad'); - if (rad != null && rad != '') - this.radical = parseInt(rad); - var iso = e.getAttribute('iso'); - if (iso != null && iso != '') - this.isotope = parseInt(iso); - var hs = e.getAttribute('hs'); - if (hs != null && hs != '') - this.hs = parseInt(hs); - var val = e.getAttribute('val'); - if (val != null && val != '') - this.val = parseInt(val); - var tag = e.getAttribute('tag'); - if (tag != null && tag != '') - this.tag = tag; - var alias = e.getAttribute('alias'); - if (alias != null && alias != '') - this.alias = alias; - var ami = e.getAttribute('ami'); - if (ami != null && !isNaN(ami)) - this.atommapid = parseInt(ami); - var apo = e.getAttribute('apo'); - if (apo != null && apo != '') { - var ss = apo.split(','); - for (var i = 0; i < ss.length; ++i) { - var s2 = ss[i]; - var apon = isNaN(s2) ? 0 : parseInt(s2); - if (apon > 0) - this.attachpoints.push(apon); - } - } - var rbc = e.getAttribute('rbc'); - if (rbc != null) { - if (this.query == null) - this.query = {}; - this.query.rbc = parseInt(rbc); - } - var sub = e.getAttribute('sub'); - if (sub != null) { - if (this.query == null) - this.query = {}; - this.query.sub = sub == '*' ? '*' : parseInt(sub); - } - var uns = e.getAttribute('uns'); - if (uns == '1' || uns == '0') { - if (this.query == null) - this.query = {}; - this.query.uns = uns == '1'; - } - var als = JSDraw2.PT.makeAtomList(e.getAttribute('als'), e.getAttribute('als_t')); - if (als != null) { - if (this.query == null) - this.query = {}; - this.query.als = als.atoms; - this.query.t = als.t; - } - if (this.bio != null) { - this.bio.subtype = e.getAttribute('subtype'); - this.bio.sequences = e.getAttribute('seq'); - const bioid = parseInt(e.getAttribute('bioid')); - if (bioid > 0) - this.bio.id = bioid; - var ann = e.getAttribute('ann'); - if (!scil.Utils.isNullOrEmpty(ann)) - this.bio.annotation = ann; - var amb = e.getAttribute('amb'); - if (this.elem == '?' && !scil.Utils.isNullOrEmpty(amb)) - this.bio.ambiguity = amb; - var blobtype = e.getAttribute('blobtype'); - if (this.biotype() == "HELM_BLOB" /* org.helm.webeditor.HELM.BLOB */ && !scil.Utils.isNullOrEmpty(blobtype)) - this.bio.blobtype = blobtype; - } - if (this.elem != null) { - var rgEl = scil.Utils.getFirstElement(e, 'rgroup'); - if (rgEl) { - var t = scil.Utils.getFirstElement(rgEl, 'i'); - if (t != null) { - var r = new JSDraw2.RGroup(); - if (r.readHtml(t, null)) { - this.rgroup = r; - r.position = JSDraw2.Point.fromString(e.getAttribute('p')); - var divs = scil.Utils.getElements(rgEl, 'div'); - for (var i = 0; i < divs.length; ++i) { - var m = new JSDraw2.Mol(); - if (m.setXml(divs[i]) != null) - r.mols.push(m); - } - } - } - } - } - if (this.alias != null || this.bio != null) { - var superatom = scil.Utils.getFirstElement(e, 'superatom'); - var div = superatom == null ? null : scil.Utils.getFirstElement(superatom, 'div'); - if (div != null) { - var m = new JSDraw2.Mol(); - if (m.setXml(div) != null) { - if (m.atoms.length == 1 && m.atoms[0].elem == this.alias) { - this.elem = this.alias; - this.alias = null; - } - else { - this.superatom = m; - } - } - } - } - } - toggle(p, tor) { - if (this._rect != null) - return this._rect.contains(p); - return this.p.distTo(p) <= tor; - } - drawCur(surface, r, color, m) { - const c = this._rect == null ? this.p : this._rect.center(); - surface.createCircle({ cx: c.x, cy: c.y, r: r }).setFill(color); - if (this.elem == '@' && m != null) { - const list = m.getAllBonds(this); - for (let i = 0; i < list.length; ++i) { - const b = list[i]; - if (b.type == 13 /* JSDraw2.BONDTYPES.DUMMY */) - b.otherAtom(this).drawCur(surface, r * 0.75, color); - } - } - } - needShowAtomLabel() { - return this.elem != 'C' || this.charge != 0 || this.isotope != null || this.hcount == 4; - } - // showLabel: function() { - // return a.elem != 'C' || a.charge != 0 || a.isotope != null || a.hcount == 4; - // }, - drawBio(surface, linewidth, fontsize, color) { - var a = this; - var biotype = this.biotype(); - var p = a.p.clone(); - if (biotype == JSDraw2.BIO.ANTIBODY) { - color = '#00f'; - var color2 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv ? '#bbb' : color; - var color3 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv || a.bio.subtype == JSDraw2.ANTIBODY.Fab ? '#bbb' : color; - surface.createCircle({ cx: p.x, cy: p.y, r: fontsize }) - .setFill('white') - .setStroke({ color: color, width: linewidth / 2 }); - fontsize /= 2; - p.offset(0, -linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - linewidth, p.y), new JSDraw2.Point(p.x - linewidth - fontsize, p.y - fontsize), color2, linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + linewidth, p.y), new JSDraw2.Point(p.x + linewidth + fontsize, p.y - fontsize), color, linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - 2 * linewidth, p.y + fontsize / 1.5), new JSDraw2.Point(p.x - 2 * linewidth - fontsize, p.y - fontsize + fontsize / 1.5), color2, linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + 2 * linewidth, p.y + fontsize / 1.5), new JSDraw2.Point(p.x + 2 * linewidth + fontsize, p.y - fontsize + fontsize / 1.5), color, linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - linewidth, p.y), new JSDraw2.Point(p.x - linewidth, p.y + fontsize * 2), color3, linewidth); - JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + linewidth, p.y), new JSDraw2.Point(p.x + linewidth, p.y + fontsize * 2), color3, linewidth); - } - else if (biotype == JSDraw2.BIO.PROTEIN) { - var colors = [{ offset: 0, color: '#4ea1fc' }, { offset: linewidth / 20, color: '#0072e5' }, { offset: linewidth / 10, color: '#003b80' }]; - surface.createCircle({ cx: this.p.x, cy: this.p.y, r: fontsize }) - .setFill({ type: 'radial', cx: this.p.x + fontsize / 4, cy: this.p.y + fontsize / 4, colors: colors }); - } - else if (biotype == JSDraw2.BIO.GENE || biotype == JSDraw2.BIO.DNA || biotype == JSDraw2.BIO.RNA) { - color = '#00f'; - var color2 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv ? '#bbb' : color; - var color3 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv || a.bio.subtype == JSDraw2.ANTIBODY.Fab ? '#bbb' : color; - surface.createCircle({ cx: p.x, cy: p.y, r: fontsize }) - .setFill('white') - .setStroke({ color: color, width: linewidth / 2 }); - this.drawEllipse(surface, p.x + fontsize / 6, p.y + fontsize / 3, fontsize / 6, fontsize / 2, color, -20); - this.drawEllipse(surface, p.x + fontsize / 6, p.y - fontsize / 3, fontsize / 6, fontsize / 2, color, +20); - this.drawEllipse(surface, p.x - fontsize / 6, p.y + fontsize / 3, fontsize / 6, fontsize / 2, color, +20); - this.drawEllipse(surface, p.x - fontsize / 6, p.y - fontsize / 3, fontsize / 6, fontsize / 2, color, -20); - } - else if (org.helm.webeditor.isHelmNode(a)) { - org.helm.webeditor.Interface.drawMonomer(surface, a, p, fontsize, linewidth, color); - } - else { - if (color == null) - color = a.bio.type == JSDraw2.BIO.AA ? '#00F' : (a.bio.type == JSDraw2.BIO.BASE_RNA ? '#278925' : '#FFAA00'); - this.drawDiamond(surface, p.x, p.y, fontsize * 0.55, color, linewidth); - p.offset(0, -1); - JSDraw2.Drawer.drawLabel(surface, p, a.elem, color, fontsize * (a.elem.length > 1 ? 2 / a.elem.length : 1.0), null, null, null, false); - } - //if (this.selected) - // this.drawSelect(surface, linewidth); - } - drawDiamond(surface, x, y, w, color, linewidth) { - surface.createRect({ x: x - w, y: y - w, width: 2 * w, height: 2 * w }) - .setTransform([dojox.gfx.matrix.rotategAt(45, x, y)]) - .setFill('white') - .setStroke({ color: color, width: linewidth / 2 }); - } - drawEllipse(surface, x, y, rx, ry, color, deg) { - surface.createEllipse({ cx: x, cy: y, rx: rx, ry: ry }) - .setFill(color) - .setTransform([dojox.gfx.matrix.rotategAt(deg, x, y)]); - } - hasLabel(m, showcarbon) { - var a = this; - return a.bio == null && (a.elem != 'C' || a.charge != 0 || a.radical != null || - a.elem == 'C' && (showcarbon == 'all' || showcarbon == 'terminal' && m.getNeighborAtoms(a).length == 1) || - a.isotope != null || a.hcount == 4 || a.hs > 0 || a.val > 0 || a.alias != null && a.alias != '' || - a.query != null && (a.query.sub != null || a.query.uns != null || a.query.rbc != null || a.query.als != null && a.query.t != null)); - } - hasErr() { - var a = this; - var e = a.bio ? null : JSDraw2.PT[a.elem]; - return (!a.bio && (e == null || e.a >= 0 && a.hasError)) && a.elem != '3\'' && a.elem != '5\''; - } - draw(surface, linewidth, m, fontsize, showError) { - var a = this; - this._rect = null; - var e = a.bio ? null : JSDraw2.PT[a.elem]; - var hasError = showError && this.hasErr(); - var color = a.color; - if (a.bio != null) { - this.drawBio(surface, linewidth, fontsize, color); - return; - } - var atomcolor = color; - if (color == null) { - if (surface.monocolor) - color = 'black'; - else - color = e == null || e.c == null ? '#000' : '#' + e.c; - atomcolor = color; - if (hasError) - atomcolor = e == null || e.c == null ? '#000' : '#fff'; - } - if (a.attachpoints.length > 0) - this.drawApo(a, m, surface, linewidth, fontsize, color); - if (a.alias != null && a.alias != '') { - this._rect = JSDraw2.Atom.drawAlias(m.calcHDir(a, 4 * linewidth, true), surface, a.p, a.alias, hasError ? 'red' : atomcolor, fontsize); - } - else { - var elem = a.elem; - var isotope = a.isotope; - if (elem == 'H') { - if (isotope == 2) { - elem = 'D'; - isotope = null; - } - else if (isotope == 3) { - elem = 'T'; - isotope = null; - } - } - else if (a.query != null) { - var x = ''; - var x2 = ''; - if (a.query.als != null) - x = (a.query.t == false ? '!' : '') + '[' + a.query.als.join(',') + ']'; - if (a.query.rbc != null) - x2 += (x2 == '' ? '' : ',') + 'r' + a.query.rbc; - if (a.query.sub != null) - x2 += (x2 == '' ? '' : ',') + 's' + a.query.sub; - if (a.query.uns) - x2 += (x2 == '' ? '' : ',') + 'u'; - if (x != '' || x2 != '') - elem = (x == '' ? elem : x) + (x2 == '' ? '' : '(' + x2 + ')'); - } - var x2n = 0; - var y2 = 0; - if (hasError || this._haslabel) { - var t = JSDraw2.Drawer.drawLabel(surface, a.p, elem, atomcolor, fontsize, hasError ? '#f00' : false); - var c = null; - var h = null; - var n = null; - var iso = null; - var s = ''; - if (a.charge != 0) - s += (Math.abs(a.charge) == 1 ? '' : Math.abs(a.charge) + '') + (a.charge > 0 ? '+' : '-'); - switch (a.radical) { - case 1: - s += ':'; - break; - case 2: - s += '^'; - break; - case 3: - s += '^^'; - break; - } - if (s != '') - c = JSDraw2.Drawer.drawLabel(surface, a.p, s, color, fontsize / 1.2, false); - if (isotope != null) - iso = JSDraw2.Drawer.drawLabel(surface, a.p, isotope + '', color, fontsize / 1.1, false); - if (a.query == null && a.hcount > 0 && (this._haslabel || elem != 'C' || a.charge != 0 || a.hcount == 4)) { - h = JSDraw2.Drawer.drawLabel(surface, a.p, 'H', color, fontsize, false); - n = a.hcount == 1 ? null : JSDraw2.Drawer.drawLabel(surface, a.p, a.hcount + '', color, fontsize / 1.4, false); - } - var tw = t.getTextWidth(); - if (c != null || h != null || n != null || iso != null) { - var extra = scil.Utils.isOpera ? Math.round(fontsize / 4) : 0; - var hw = h == null ? 0 : h.getTextWidth() + extra; - var nw = n == null ? 0 : n.getTextWidth() + extra; - var cw = c == null ? 0 : c.getTextWidth() + extra; - var iw = iso == null ? 0 : iso.getTextWidth() + extra; - var noAdj = true; //scil.Utils.isIE || scil.Utils.isTouch; - switch (m.calcHDir(a, 4 * linewidth)) { - case JSDraw2.ALIGN.RIGHT: - if (iso != null) - iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]); - if (h != null) - h.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw / 2 + (noAdj ? 0 : 2), 0)]); - if (n != null) - n.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw + nw / 2 + (noAdj ? 0 : 4), 4)]); - if (c != null) - c.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw + nw + cw / 2 + (noAdj ? 0 : 2), -4)]); - x2n = tw / 2 + hw + nw + cw + (noAdj ? 0 : 2); - break; - case JSDraw2.ALIGN.LEFT: - if (iso != null) - iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]); - if (n != null) - n.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw / 2 + (noAdj ? 0 : 4)), 4)]); - if (h != null) - h.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw + hw / 2 + (noAdj ? 0 : 6)), 0)]); - if (c != null) - c.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw + hw + cw / 2 + (!noAdj ? 0 : 0)), -4)]); - x2n = tw / 2; - break; - case JSDraw2.ALIGN.BOTTOM: - if (iso != null) - iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]); - if (h != null) - h.setTransform([dojox.gfx.matrix.translate(0, fontsize)]); - if (n != null) - n.setTransform([dojox.gfx.matrix.translate(hw / 2 + nw / 2 + (noAdj ? 0 : 2), fontsize + 4)]); - if (c != null) - c.setTransform([dojox.gfx.matrix.translate((h == null ? tw / 2 : hw / 2 + nw) + cw / 2 + (noAdj ? 0 : 4), (h == null ? 0 : fontsize) - 4)]); - x2n = (h == null ? tw / 2 : hw / 2 + nw) + cw + (noAdj ? 0 : 4); - break; - case JSDraw2.ALIGN.TOP: - if (iso != null) - iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]); - if (h != null) - h.setTransform([dojox.gfx.matrix.translate(0, -fontsize)]); - if (n != null) - n.setTransform([dojox.gfx.matrix.translate(hw / 2 + nw / 2 + (noAdj ? 0 : 2), -fontsize + 4)]); - if (c != null) - c.setTransform([dojox.gfx.matrix.translate((h == null ? tw / 2 : hw / 2 + nw) + cw / 2 + (noAdj ? 0 : 4), (h == null ? 0 : -fontsize) - 4)]); - x2n = (h == null ? tw / 2 : hw / 2 + nw) + cw + (noAdj ? 0 : 4); - y2 = (h == null ? 0 : -fontsize) - 4; - break; - } - } - else { - x2n = tw / 2; - } - } - if (a.atommapid != null) { - var p = a.p.clone(); - var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '(' + a.atommapid + ')', '#f55', fontsize / 1.4); - x2n += t.getTextWidth(); - } - if (a.val > 0) { - var p = a.p.clone(); - var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '(' + (a.val == 15 ? 0 : a.val) + ')', '#000', fontsize / 1.2); - x2n += t.getTextWidth(); - } - if (a.tag != null && a.tag != '') { - var p = a.p.clone(); - var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '<' + a.tag + '>', '#000', fontsize / 1.2); - x2n += t.getTextWidth(); - } - } - if (a.locked) - surface.createCircle({ cx: a.p.x, cy: a.p.y, r: fontsize * 0.6 }).setStroke({ color: '#0ff', width: linewidth }); - } - drawApo(a, m, surface, linewidth, fontsize, color) { - var attachpoints = a.attachpoints; - for (var i = 0; i < attachpoints.length; ++i) { - var apo = attachpoints[i]; - var d = fontsize * 1.5; - var p = m.guessBond(a, d, i); - if (p == null) { - p = a.p.clone(); - p.offset(d, 0); - } - var ap = a.p.clone(); - if (a._haslabel) - ap.shrink(p, fontsize * 0.6); - JSDraw2.Drawer.drawLine(surface, ap, p, color, linewidth / 2, apo == 99 ? 2 : 0); - if (apo == 99 || apo == 98) { // Basis - var v = new JSDraw2.Point(ap.x - p.x, ap.y - p.y).rotate(90).setLength(fontsize); - var p1 = p.clone().offset(v.x, v.y); - var p2 = p.clone().offset(-v.x, -v.y); - if (apo == 99) - JSDraw2.Drawer.drawBasis(surface, p1, p2, color, linewidth / 2); - else - JSDraw2.Drawer.drawCurves(surface, p1, p2, color, linewidth / 2); - } - else { - this.drawDiamond(surface, p.x, p.y, fontsize * 0.3, color, linewidth / 3); - JSDraw2.Drawer.drawText(surface, p.offset(-fontsize * 0.2, -fontsize * 0.6), apo + '', color, fontsize * 0.7); - } - } - } - drawSelect(lasso) { - var c = this._rect == null ? this.p : this._rect.center(); - lasso.draw(this, c); - } - // -- static -- - static cast(a) { - return a != null && a.T == 'ATOM' ? a : null; - } - static match(x, y) { - if (!scil.Utils.areListEq(x.attachpoints, y.attachpoints)) - return false; - var e1 = x.elem; - var e2 = y.elem; - var f = JSDraw2.Atom.match2(e1, e2); - if (f) - return true; - if (x.isotope != y.isotope || x.charge != y.charge) - return false; - if (x.bio != null || y.bio != null) { - if (x.bio == null || y.bio == null) - return false; - return x.bio.type == y.bio.type && e1 == e2; - } - if (e1 != 'L' && e2 != 'L') - return false; - var list1 = []; - var list2 = []; - var t1 = true; - var t2 = true; - if (e1 == 'L') { - if (x.query != null && x.query.als != null) { - for (var i = 0; i < x.query.als.length; ++i) - list1.push(x.query.als[i]); - if (x.query.t == false) - t1 = false; - } - } - else { - list1.push(e1); - } - if (e2 == 'L') { - if (y.query != null && y.query.als != null) { - for (var i = 0; i < y.query.als.length; ++i) - list2.push(y.query.als[i]); - if (y.query.t == false) - t2 = false; - } - } - else { - list2.push(e2); - } - for (var i = 0; i < list1.length; ++i) { - for (var j = 0; j < list2.length; ++j) { - f = JSDraw2.Atom.match(list1[i], list2[j]); - if (f && t1 == t2) - return true; - } - } - return t1 != t2; - } - static match2(e1, e2) { - return e1 == e2 || e1 == '*' || e1 == 'A' || e2 == '*' || e2 == 'A' || - e1 == 'X' && (e2 == 'F' || e2 == 'Cl' || e2 == 'Br' || e2 == 'I') || - e2 == 'X' && (e1 == 'F' || e1 == 'Cl' || e1 == 'Br' || e1 == 'I') || - e1 == 'Q' && (e2 != 'H' && e2 != 'C') || - e2 == 'Q' && (e1 != 'H' && e1 != 'C'); - } - static drawAlias(dir, surface, p, s, color, fontsize) { - return JSDraw2.Drawer.drawFormula(surface, p, dir == JSDraw2.ALIGN.LEFT, s, color, fontsize); - // var t = null; - // if (dir == JSDraw2.ALIGN.LEFT) - // t = JSDraw2.Drawer.drawLabel(surface, p, s, color, fontsize, false, "end-anchor"); - // else - // t = JSDraw2.Drawer.drawLabel(surface, p, s, color, fontsize, false, "start-anchor"); - // return t._rect; - } - static isValidChiral(c) { - if (c == null) - return false; - return /^R|S|(abs)|(\&[0-9]+)|(and[0-9]+)|(or[0-9]+)$/.test(c); - } - static isStereo(s) { - return s != null && /^((abs)|(or[0-9]+)|(and[0-9]+))$/.test(s); - } -} -JSDraw2.Atom = Atom; - - -/***/ }), - -/***/ "./src/Bond.ts": -/*!*********************!*\ - !*** ./src/Bond.ts ***! - \*********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Bond: () => (/* binding */ Bond), -/* harmony export */ BondB: () => (/* binding */ BondB) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Bond class - * @class scilligence.JSDraw2.Bond - */ -class Bond { - /** - * @constructor Bond - * @param {Atom} a1 - the first atom - * @param {Atom} a2 - the second atom - * @param {BONDTYPES} type - bond type - */ - constructor(a1, a2, type) { - this.T = "BOND"; - this.a1 = a1; - this.a2 = a2; - this.apo1 = null; - this.apo2 = null; - this.color = null; - this.ring = null; - this.order = null; - this.rcenter = null; - this.selected = false; - this.tag = null; - this.f = null; - this.r1 = null; - this.r2 = null; - this.ratio1 = null; - this.ratio2 = null; - this.type = type == null ? 1 /* JSDraw2.BONDTYPES.SINGLE */ : type; - } - clone() { - var b = new JSDraw2.Bond(this.a1, this.a2, this.type); - b.id = this.id; - b.color = this.color; - b.order = this.order; - b.apo1 = this.apo1; - b.apo2 = this.apo2; - b.ring = this.ring; - b.rcenter = this.rcenter; - b._parent = this._parent; - b.r1 = this.r1; - b.r2 = this.r2; - b.ratio1 = this.ratio1; - b.ratio2 = this.ratio2; - b.z = this.z; - b.tag = this.tag; - b.selected = this.selected; - return b; - } - replaceAtom(old, na) { - if (this.a1 == old) - this.a1 = na; - else if (this.a2 == old) - this.a2 = na; - else - return false; - return true; - } - isBio() { - return this.type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */ || this.type == 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */; - } - bondLength() { - return this.a1.p.distTo(this.a2.p); - } - center() { - return new JSDraw2.Point((this.a1.p.x + this.a2.p.x) / 2, (this.a1.p.y + this.a2.p.y) / 2); - } - angle() { - return this.vector().angle(); - } - vector() { - return new JSDraw2.Point(this.a2.p.x - this.a1.p.x, this.a2.p.y - this.a1.p.y); - } - /** - * Get the other Atom of the Bond - * @function otherAtom - * @param {Atom} a - one atom on the bond - * @returns the other Atom - */ - otherAtom(a) { - if (this.a1 == a) - return this.a2; - else if (this.a2 == a) - return this.a1; - return null; - } - /** - * Switch the atoms' order - * @function reverse - * @returns null - */ - reverse() { - var a = this.a1; - this.a1 = this.a2; - this.a2 = a; - var apo = this.apo1; - this.apo1 = this.apo2; - this.apo2 = apo; - } - valence() { - switch (this.type) { - case 1 /* JSDraw2.BONDTYPES.SINGLE */: - case 5 /* JSDraw2.BONDTYPES.WEDGE */: - case 6 /* JSDraw2.BONDTYPES.HASH */: - case 7 /* JSDraw2.BONDTYPES.WIGGLY */: - case 21 /* JSDraw2.BONDTYPES.PEPTIDE */: - case 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */: - case 23 /* JSDraw2.BONDTYPES.DISULFIDE */: - case 24 /* JSDraw2.BONDTYPES.AMIDE */: - case 14 /* JSDraw2.BONDTYPES.BOLD */: - case 15 /* JSDraw2.BONDTYPES.BOLDHASH */: - return 1; - case 4 /* JSDraw2.BONDTYPES.DELOCALIZED */: - return 1.5; - case 2 /* JSDraw2.BONDTYPES.DOUBLE */: - case 8 /* JSDraw2.BONDTYPES.EITHER */: - return 2; - case 3 /* JSDraw2.BONDTYPES.TRIPLE */: - return 3; - case 0 /* JSDraw2.BONDTYPES.UNKNOWN */: - case 13 /* JSDraw2.BONDTYPES.DUMMY */: - return 0; - default: - return null; - } - } - _centerDoubleBond(m, b) { - var atoms1 = m.getNeighborAtoms(b.a1, b.a2); - var atoms2 = m.getNeighborAtoms(b.a2, b.a1); - return atoms1.length == 0 && atoms2.length == 2 || atoms2.length == 0 && atoms1.length == 2; - } - _shirftDirection(m, b) { - var a1 = null; - var a2 = null; - var atoms1 = m.getNeighborAtoms(b.a1, b.a2, true); - if (atoms1.length == 1) - a1 = atoms1[0]; - if (a1 == null) { - var atoms2 = m.getNeighborAtoms(b.a2, b.a1, true); - if (atoms2.length == 1) - a2 = atoms2[0]; - if (a2 == null) { - if (atoms1.length >= 2 && atoms2.length >= 2) { - if (m._hasDoubleBonds(atoms1[0])) - a1 = atoms1[0]; - else if (m._hasDoubleBonds(atoms1[1])) - a1 = atoms1[1]; - if (m._hasDoubleBonds(atoms2[0])) - a2 = atoms2[0]; - else if (m._hasDoubleBonds(atoms2[1])) - a2 = atoms2[1]; - } - } - } - if (a1 != null) { - var ang = b.p1.angleAsOrigin(b.p2, a1.p); - return ang <= 180; - } - if (a2 != null) { - var ang = b.p2.angleAsOrigin(a2.p, b.p1); - return ang <= 180; - } - } - html() { - var s = " 0 && this.a1.superatom != null) - s += " apo1='" + this.apo1 + "'"; - if (this.apo2 > 0 && this.a2.superatom != null) - s += " apo2='" + this.apo2 + "'"; - if (this.tag != null) - s += " tag='" + scil.Utils.escXmlValue(this.tag) + "'"; - s += "/>"; - return s; - } - readHtml(e) { - var r = e.getAttribute("clr"); - if (r != null) - this.color = r; - var tag = e.getAttribute("tag"); - if (tag != null && tag != "") - this.tag = tag; - } - toggle(p, tor) { - return p.onLine(this.a1.p, this.a2.p, tor / 5); - } - drawCur(surface, r, color) { - var p = this.center(); - surface.createCircle({ cx: p.x, cy: p.y, r: r }).setFill(color); - } - _drawBond(surface, b, color, linewidth, shrink, shift, dotline, gap, cap) { - if (shrink == null || shrink == 0) { - JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth, dotline, cap); - } - else { - var d = shift == 0 ? new JSDraw2.Point(0, 0) : b.vector().scale(1.0 / Math.abs(shift)); - var v = b.vector().rotate(shrink > 0 ? 90 : -90).setLength(gap == null ? linewidth * 2 : gap); - JSDraw2.Drawer.drawLine(surface, b.p1.clone().offset(d.x + v.x, d.y + v.y), b.p2.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth, dotline, cap); - } - } - getRColor(c, r) { - if (!scil.Utils.isNullOrEmpty(this.color)) - return c; - switch (r) { - case 1: - return "#641E16"; - case 2: - return "#0000ff"; - case 3: - return "#aaaaaa"; - } - return "black"; - } - splitPosR(s) { - if (!scil.Utils.isNullOrEmpty(s)) { - var s2 = s == "?" ? "?:?" : s + ""; - var p = s2.indexOf(':'); - if (p >= 0) { - var pos = s2.substr(0, p); - var r = s2.substr(p + 1); - return { pos: (pos == "" ? "?" : pos), r: (r == "" ? "?" : r) }; - } - } - return { pos: "?", r: "?" }; - } - _fmtBondAnn() { - var s1 = ""; - var s2 = ""; - var r1 = this.splitPosR(this.r1); - var r2 = this.splitPosR(this.r2); - if (r1.pos != "?" || r2.pos != "?") { - s1 += (s1 == "" ? "" : "; ") + "Pos: " + r1.pos; - s2 += (s2 == "" ? "" : "; ") + "Pos: " + r2.pos; - } - if (r1.r != "?" || r2.r != "?") { - s1 += (s1 == "" ? "" : "; ") + "R#: " + r1.r; - s2 += (s2 == "" ? "" : "; ") + "R#: " + r2.r; - } - var defaultratio = org.helm.webeditor.defaultbondratio == null ? "" : org.helm.webeditor.defaultbondratio; - var ratio1 = scil.Utils.isNullOrEmpty(this.ratio1) ? defaultratio : this.ratio1; - var ratio2 = scil.Utils.isNullOrEmpty(this.ratio2) ? defaultratio : this.ratio2; - if (ratio1 != defaultratio || ratio2 != defaultratio /* https://github.com/PistoiaHELM/HELMWebEditor/issues/148 */) { - s1 += (s1 == "" ? "" : "; ") + "Ratio: " + ratio1; - s2 += (s2 == "" ? "" : "; ") + "Ratio: " + ratio2; - } - return { ba1: s1, ba2: s2 }; - } - drawBondAnnotation(surface, fontsize, b) { - var s = this._fmtBondAnn(); - var ba1 = s.ba1; - var ba2 = s.ba2; - if (ba1 == "" && ba2 == "") - return; - var dx = (b.p1.x - b.p2.x) / 90; - var dy = (b.p1.y - b.p2.y) / 90; - var c1 = new JSDraw2.Point((b.p1.x + b.p2.x) / 2, (b.p1.y + b.p2.y) / 2); - var c2 = c1.clone(); - if (Math.abs(b.a1.p.x - b.a2.p.x) < fontsize) { - //vertical - c1.offset(fontsize * dx + fontsize * 0.2, fontsize * dy - fontsize * 0.5); - c2.offset(-fontsize * dx + fontsize * 0.2, -fontsize * dy - fontsize * 0.5); - if (!scil.Utils.isNullOrEmpty(ba1)) - JSDraw2.Drawer.drawText(surface, c1, ba1, "green", fontsize); - if (!scil.Utils.isNullOrEmpty(ba2)) - JSDraw2.Drawer.drawText(surface, c2, ba2, "green", fontsize); - } - else if (Math.abs(b.a1.p.y - b.a2.p.y) < fontsize) { - //horizontal - c1.offset(fontsize * dx, fontsize * dy - fontsize * 0.9); - c2.offset(-fontsize * dx, -fontsize * dy + fontsize * 0.6); - if (!scil.Utils.isNullOrEmpty(ba1)) - JSDraw2.Drawer.drawLabel(surface, c1, ba1, "green", fontsize, null, null, null, false); - if (!scil.Utils.isNullOrEmpty(ba2)) - JSDraw2.Drawer.drawLabel(surface, c2, ba2, "green", fontsize, null, null, null, false); - } - else { - c1.offset(fontsize * dx, fontsize * dy); - c2.offset(-fontsize * dx, -fontsize * dy); - if (!scil.Utils.isNullOrEmpty(ba1)) - JSDraw2.Drawer.drawLabel(surface, c1, ba1, "green", fontsize, null, null, null, false); - if (!scil.Utils.isNullOrEmpty(ba2)) - JSDraw2.Drawer.drawLabel(surface, c2, ba2, "green", fontsize, null, null, null, false); - } - } - draw(surface, linewidth, m, fontsize, simpledraw) { - if (this.type == 13 /* JSDraw2.BONDTYPES.DUMMY */) { - if ((this.a1.elem == "@" || this.a2.elem == "@") && !this.a1.p.equalsTo(this.a2.p)) - JSDraw2.Drawer.drawLine(surface, this.a1.p, this.a2.p, "#eee", linewidth / 2); - return; - } - if (this.a1.p.equalsTo(this.a2.p)) - return; - var b = new JSDraw2.BondB(this); - if (!simpledraw) { - if (b.a1._haslabel) - b.p1.shrink(b.p2, fontsize * 0.6); - if (b.a2._haslabel) - b.p2.shrink(b.p1, fontsize * 0.6); - } - var color = scil.Utils.isNullOrEmpty(this.color) ? "black" : this.color; - if (simpledraw || b.type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */ || b.type == 24 /* JSDraw2.BONDTYPES.AMIDE */) { - JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth); - return; - } - else if (b.type == 23 /* JSDraw2.BONDTYPES.DISULFIDE */) { - JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth); - return; - } - else if (b.type == 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */) { - JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth); - return; - } - if (this.r1 > 0 || this.r2 > 0) { - var c = new JSDraw2.Point((b.p1.x + b.p2.x) / 2, (b.p1.y + b.p2.y) / 2); - var color1 = this.getRColor(this.color, this.r1); - var color2 = this.getRColor(this.color, this.r2); - if (this.z) { - var p1 = new JSDraw2.Point(b.p1.x, c.y); - var p2 = new JSDraw2.Point(b.p2.x, c.y); - JSDraw2.Drawer.drawLine(surface, b.p1, p1, color1, linewidth, null, "butt"); - JSDraw2.Drawer.drawLine(surface, p1, c, color1, linewidth, null, "butt"); - JSDraw2.Drawer.drawLine(surface, c, p2, color2, linewidth, null, "butt"); - JSDraw2.Drawer.drawLine(surface, p2, b.p2, color2, linewidth, null, "butt"); - } - else { - JSDraw2.Drawer.drawLine(surface, b.p1, c, color1, linewidth, null, "butt"); - JSDraw2.Drawer.drawLine(surface, c, b.p2, color2, linewidth, null, "butt"); - if (this.r1 == 1 && this.r2 == 2 || this.r1 == 2 && this.r2 == 1) { - JSDraw2.Bond.showHelmAnnotation(this.a1, this.a2, this.r1); - JSDraw2.Bond.showHelmAnnotation(this.a2, this.a1, this.r2); - } - } - return; - } - if (!simpledraw) - this.drawBondAnnotation(surface, fontsize, b); - var dir = 8; - if (b.type == 2 /* JSDraw2.BONDTYPES.DOUBLE */ || b.type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */ || b.type == 8 /* JSDraw2.BONDTYPES.EITHER */ || b.type == 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */) - dir = this._shirftDirection(m, b) ? 8 : -8; - if (b.type == 2 /* JSDraw2.BONDTYPES.DOUBLE */ && this._centerDoubleBond(m, b)) { - this._drawBond(surface, b, color, linewidth, -dir, 0, null, linewidth); - this._drawBond(surface, b, color, linewidth, dir, 0, null, linewidth); - } - else if (b.type == 1 /* JSDraw2.BONDTYPES.SINGLE */ || b.type == 14 /* JSDraw2.BONDTYPES.BOLD */ || b.type == 2 /* JSDraw2.BONDTYPES.DOUBLE */ || b.type == 3 /* JSDraw2.BONDTYPES.TRIPLE */ || b.type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */) { - this._drawBond(surface, b, color, b.type == 14 /* JSDraw2.BONDTYPES.BOLD */ ? 3 * linewidth : linewidth, null, null, null, null, b.type == 14 /* JSDraw2.BONDTYPES.BOLD */ ? "butt" : "round"); - if (b.type == 2 /* JSDraw2.BONDTYPES.DOUBLE */ || b.type == 3 /* JSDraw2.BONDTYPES.TRIPLE */) - this._drawBond(surface, b, color, linewidth, dir, dir); - if (b.type == 3 /* JSDraw2.BONDTYPES.TRIPLE */) - this._drawBond(surface, b, color, linewidth, -dir, -dir); - if (b.type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */) - this._drawBond(surface, b, color, linewidth, dir, dir, 4); - } - if (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */) { - var v = b.vector().rotate(90).setLength(linewidth * 2); - surface.createPolyline([ - b.p1.x, b.p1.y, - b.p2.x + v.x, b.p2.y + v.y, - b.p2.x - v.x, b.p2.y - v.y - ]) - .setStroke({ width: 2 }) - .setFill(color); - } - if (b.type == 6 /* JSDraw2.BONDTYPES.HASH */ || b.type == 15 /* JSDraw2.BONDTYPES.BOLDHASH */) { - var len = b.bondLength(); - var n = Math.floor(len / (linewidth * 2)); - var d = b.vector().scale(1.0 / n); - var v = b.vector().rotate(90); - for (var k = 1; k <= n; ++k) { - var p = b.p1.clone().offset(d.x * k, d.y * k); - var vlen = linewidth * 2; - if (b.type == 6 /* JSDraw2.BONDTYPES.HASH */) - vlen *= k / n; - else - vlen *= 0.6; - var vi = v.clone().setLength(vlen); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(vi.x, vi.y), p.clone().offset(-vi.x, -vi.y), color, linewidth); - } - } - if (b.type == 7 /* JSDraw2.BONDTYPES.WIGGLY */) - JSDraw2.Drawer.drawCurves(surface, b.p1, b.p2, color, linewidth); - if (b.type == 8 /* JSDraw2.BONDTYPES.EITHER */) { - var d = b.vector().scale(1.0 / Math.abs(dir)); - var v = b.vector().rotate(dir > 0 ? 90 : -90).setLength(linewidth * 2); - var p1 = b.p1.clone().offset(d.x + v.x, d.y + v.y); - var p2 = b.p2.clone().offset(-d.x + v.x, -d.y + v.y); - JSDraw2.Drawer.drawLine(surface, b.p1, p2, color, linewidth); - JSDraw2.Drawer.drawLine(surface, b.p2, p1, color, linewidth); - } - if (b.type == 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */) { - this._drawBond(surface, b, color, linewidth); - this._drawBond(surface, b, color, linewidth, dir, dir, 2); - } - if (b.type == 9 /* JSDraw2.BONDTYPES.SINGLEORDOUBLE */ || b.type == 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */) { - this._drawBond(surface, b, color, linewidth, 0, 0, 2); - this._drawBond(surface, b, color, linewidth, dir / 2, dir / 2, null, linewidth * 1.5); - this._drawBond(surface, b, color, linewidth, -dir / 2, -dir / 2, b.type == 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */ ? 2 : null, linewidth * 1.5); - } - if (b.type == 0 /* JSDraw2.BONDTYPES.UNKNOWN */) - this._drawBond(surface, b, color, linewidth, null, null, linewidth * 1.2); - if (b.b.ring != null) { - var p = this.center(); - surface.createCircle({ cx: p.x, cy: p.y, r: linewidth * 3 }) - .setStroke({ color: color, width: linewidth / 2, style: b.b.ring ? "Solid" : "Dash" }); - } - if (b.b.rcenter != null) { - var p = this.center(); - var d = b.vector().rotate(90).setLength(linewidth * 3); - var v = b.vector().setLength(linewidth * (b.b.rcenter == 12 /* JSDraw2.RXNCENTER.BREAKANDCHANGE */ ? 1.5 : 1)); - if (b.b.rcenter == 1 /* JSDraw2.RXNCENTER.CENTER */) { - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2); - d = b.vector().rotate(90).setLength(linewidth * 1.6); - v = b.vector().setLength(linewidth * 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(d.x - v.x, d.y - v.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(-d.x + v.x, -d.y + v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2); - } - else if (b.b.rcenter == -1 /* JSDraw2.RXNCENTER.NOTCENTER */) { - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2); - } - else if (b.b.rcenter == 4 /* JSDraw2.RXNCENTER.BREAK */) { - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2); - } - else if (b.b.rcenter == 8 /* JSDraw2.RXNCENTER.CHANGE */) { - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x, d.y), p.clone().offset(-d.x, -d.y), color, linewidth / 2); - } - else if (b.b.rcenter == 12 /* JSDraw2.RXNCENTER.BREAKANDCHANGE */) { - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x, d.y), p.clone().offset(-d.x, -d.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2); - JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2); - } - } - } - drawSelect(lasso) { - lasso.draw(this, this.center()); - } - // -- static -- - static cast(a) { - return a != null && a.T == 'BOND' ? a : null; - } - static showHelmAnnotation(a1, a2, r1) { - if (a1.bio == null || scil.Utils.isNullOrEmpty(a1.bio.annotation)) - return; - if (r1 == 2 && a1.p.x > a2.p.x || r1 == 1 && a1.p.x < a2.p.x) - a1.bio.annotationshowright = true; - else - a1.bio.annotationshowright = null; - } -} -class BondB { - constructor(b) { - this.b = b; - this.a1 = b.a1; - this.a2 = b.a2; - this.type = b.type; - this.p1 = b.a1.p.clone(); - this.p2 = b.a2.p.clone(); - } - vector() { - return new JSDraw2.Point(this.p2.x - this.p1.x, this.p2.y - this.p1.y); - } - bondLength() { - return this.p1.distTo(this.p2); - } -} -JSDraw2.Bond = Bond; -JSDraw2.BondB = BondB; - - -/***/ }), - -/***/ "./src/Bracket.ts": -/*!************************!*\ - !*** ./src/Bracket.ts ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Bracket: () => (/* binding */ Bracket) -/* harmony export */ }); -// -// JSDraw -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -/** - * Bracket class - * @class scilligence.JSDraw2.Bracket - */ -class Bracket { - constructor(type, rect, shape) { - this.T = "BRACKET"; - this.atoms = []; - this.type = type; - this._rect = rect; - this.color = null; - this.shape = shape; - } - clone() { - const b = new JSDraw2.Bracket(this.type, this._rect.clone(), this.shape); - b.color = this.color; - b.sgrouptexts = this.sgrouptexts; - return b; - } - getXbonds(m) { - var list = []; - var bonds = m.bonds; - for (var i = 0; i < bonds.length; ++i) { - var b = bonds[i]; - var f1 = scil.Utils.indexOf(this.atoms, b.a1) >= 0; - var f2 = scil.Utils.indexOf(this.atoms, b.a2) >= 0; - if (f1 != f2) - list.push(b); - } - return list; - } - allAtomsIn(m) { - if (this.atoms.length == 0) - return false; - for (var i = 0; i < this.atoms.length; ++i) { - if (m.atoms.indexOf(this.atoms[i]) < 0) - return false; - } - return true; - } - getTypeNum() { - if (this.type == null) - return null; - var type = this.type + ""; - if (type.match(/^[c][0-9]+$/)) - return type.substr(1); - // else if (type.match(/^[0-9]+$/)) - // return type; - return null; - } - getType() { - if (this.type == null) - return ""; - var type = this.type + ""; - if (type.match(/^[c][0-9]+$/)) - type = "c"; - // else if (type.match(/^[0-9]+$/)) - // type = "mul"; - return type; - } - getSubscript(m) { - const t = m.getSgroupText(this, "BRACKET_TYPE"); - return t == null ? null : t.text; - } - createSubscript(m, s) { - if (scil.Utils.isNullOrEmpty(s)) - return null; - var t = m.getSgroupText(this, "BRACKET_TYPE"); - if (t != null) - return t; - var gap = m.medBondLength(1.56) / 2; - t = m.setSgroup(this, "BRACKET_TYPE", s, this._rect.right() + gap / 4, this._rect.bottom() - gap); - return t; - } - html(scale) { - //if (this.atoms == null || this.atoms.length == 0) - // return; - var ss = ""; - if (this.atoms != null && this.atoms.length > 0) { - ss = this.atoms[0].id + ""; - for (var i = 1; i < this.atoms.length; ++i) - ss += "," + this.atoms[i].id; - } - var s = ""; - return s; - } - flipY(y) { - } - flipX(x) { - } - scale(s, origin) { - this._rect.scale(s, origin); - } - offset(dx, dy) { - this._rect.offset(dx, dy); - } - rect() { - return this._rect; - } - toggle(p, tor) { - var r = this._rect; - if (r == null) - return; - var x1 = p.x - r.left; - var x2 = r.right() - p.x; - return p.y >= r.top - tor && p.y <= r.bottom() + tor && (x1 >= -tor / 2 && x1 < tor || x2 >= -tor / 2 && x2 < tor); - } - drawCur(surface, r, color, m) { - var r2 = this._rect; - if (r2 == null) - return; - var y = r2.center().y; - surface.createCircle({ cx: r2.left, cy: y, r: r }).setFill(color); - surface.createCircle({ cx: r2.right(), cy: y, r: r }).setFill(color); - if (m != null) { - for (var i = 0; i < this.atoms.length; ++i) - this.atoms[i].drawCur(surface, r * 0.75, color); - } - } - draw(surface, linewidth, m, fontsize) { - var r = this._rect; - var color = this.color == null ? "gray" : this.color; - JSDraw2.Drawer.drawBracket(surface, r, color, linewidth); - } - drawSelect(lasso) { - lasso.draw(this, this._rect.fourPoints()); - } - cornerTest(p, tor) { - return this._rect.cornerTest(p, tor); - } - resize(corner, d, texts) { - this._rect.moveCorner(corner, d); - if (texts == null) - return; - switch (corner) { - case "topleft": - for (var i = 0; i < texts.topleft.length; ++i) - texts.topleft[i]._rect.offset(d.x, d.y); - for (var i = 0; i < texts.topright.length; ++i) - texts.topright[i]._rect.offset(0, d.y); - for (var i = 0; i < texts.bottomleft.length; ++i) - texts.bottomleft[i]._rect.offset(d.x, 0); - break; - case "topright": - for (var i = 0; i < texts.topright.length; ++i) - texts.topright[i]._rect.offset(d.x, d.y); - for (var i = 0; i < texts.topleft.length; ++i) - texts.topleft[i]._rect.offset(0, d.y); - for (var i = 0; i < texts.bottomright.length; ++i) - texts.bottomright[i]._rect.offset(d.x, 0); - break; - case "bottomleft": - for (var i = 0; i < texts.bottomleft.length; ++i) - texts.bottomleft[i]._rect.offset(d.x, d.y); - for (var i = 0; i < texts.bottomright.length; ++i) - texts.bottomright[i]._rect.offset(0, d.y); - for (var i = 0; i < texts.topleft.length; ++i) - texts.topleft[i]._rect.offset(d.x, 0); - break; - case "bottomright": - for (var i = 0; i < texts.bottomright.length; ++i) - texts.bottomright[i]._rect.offset(d.x, d.y); - for (var i = 0; i < texts.bottomleft.length; ++i) - texts.bottomleft[i]._rect.offset(0, d.y); - for (var i = 0; i < texts.topright.length; ++i) - texts.topright[i]._rect.offset(d.x, 0); - break; - } - } - removeObject(obj) { - var a = JSDraw2.Atom.cast(obj); - if (a == null) - return; - for (var i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i] == a) { - this.atoms.splice(i, 1); - break; - } - } - } - getTexts(m) { - var ret = { topleft: [], topright: [], bottomleft: [], bottomright: [] }; - var c1 = this._rect.center(); - for (var i = 0; i < m.graphics.length; ++i) { - var t = JSDraw2.Text.cast(m.graphics[i]); - if (t == null || t.anchors.length != 1 || t.anchors[0] != this) - continue; - var c = t._rect.center(); - if (c.x < c1.x) { - if (c.y < c1.y) - ret.topleft.push(t); - else - ret.bottomleft.push(t); - } - else { - if (c.y < c1.y) - ret.topright.push(t); - else - ret.bottomright.push(t); - } - } - return ret; - } - static cast(g) { - throw new Error("Not implemented"); - } -} -JSDraw2.Bracket = Bracket; - - -/***/ }), - -/***/ "./src/JSDraw.Editor.ts": -/*!******************************!*\ - !*** ./src/JSDraw.Editor.ts ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Editor: () => (/* binding */ Editor), -/* harmony export */ EditorInt: () => (/* binding */ EditorInt), -/* harmony export */ MSTouch: () => (/* binding */ MSTouch) -/* harmony export */ }); -/* harmony import */ var _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/jsdraw2 */ "./src/types/jsdraw2.ts"); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// - -/** - * Editor class - define an Editor object. - *
- * Example:
- *   <html>
- *   <head>
- *   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js"></script>
- *   <script type="text/javascript" src='http://[PATH]/Scilligence.JSDraw2.js'></script>
- *   </head>
- *   <body>
- *   <div id='ed'></div>
- *   <script type='text/javascript'>
- *     dojo.ready(function() {
- *       // create a JSDraw Editor
- *       var editor = new JSDraw2.Editor("ed", { skin: "w8", width: 800, height: 400 });
- *
- *       // create a JSDraw viewer
- *       //var editor = new JSDraw2.Editor("ed", { skin: "w8", width: 800, height: 400, viewonly: true });
- *
- *       // create a JSDraw popup Editor
- *       //var editor = new JSDraw2.Editor("ed", { skin: "w8", width: 800, height: 400, popup: true });
- *     });
- *   </script>
- *   </body>
- *   </html>
- * 
- * @class scilligence.JSDraw2.Editor - */ -class EditorInt { - /** - * Constructor a JSDraw Editor - * @constructor Editor - * @param {string} dv - the id of the div placeholder - * @param {dictionary} options - the options for the editor:
    - *
  • background - background color
  • - *
  • biology - Set this flag to false to hide seqence button
  • - *
  • buttonshape - circle, or square
  • - *
  • data - actual data
  • - *
  • dataformat - data format. It can be molfile, rxnfile, html
  • - *
  • height
  • - *
  • focusbox - indicate if show focusing box if focused. default: true
  • - *
  • focuscolor - the border color when focused
  • - *
  • inktools - set this flag to false to hide ink tools
  • - *
  • highlighterrors - set this flag to false not to highlight errors in reb box
  • - *
  • ondatachange - datachange event handler
  • - *
  • plugins - plugins, as an array [{iconurl, tooltips, onclick}, ...]
  • - *
  • popup - Create a viewer, and double-click to show popup editor
  • - *
  • popupheight - Popup Editor height
  • - *
  • popupwidth - Popup Editor width
  • - *
  • query - Set this flag to false to disable query atoms (A, R, X, Q, *, etc.) in periodic table
  • - *
  • removeHydrogens - Remove hydrogen atoms before show the structure
  • - *
  • rxn - Set this flag to false to disable reaction buttons on toolbar
  • - *
  • scale - A factore to zoom the whole editor, including toolbars. This is useful for iPad applications
  • - *
  • sendquery - Set this flag to false to hide PubChem, ChemSpider search button
  • - *
  • skin - set this to "w8" to display the editor in JSDraw2 mode; leave this parameter to empty to display editor in classic mode (2.0)
  • - *
  • showcarbon - all or terminal
  • - *
  • showfilemenu - set this flag to false to hide file menus
  • - *
  • showimplicithydrogens - Set flag to false to hide implicit hydrogens
  • - *
  • showtoolbar - set this flag to false not to show toolbar
  • - *
  • viewonly
  • - *
  • width
  • - *
- */ - constructor(dv, options) { - this._testdeactivation = null; - this.frameoffset = new JSDraw2.Point(0, 0); - this.touch = { - reset: function (jsd) { - if (this.cloned != null) { - jsd.pushundo(this.cloned); - jsd.setModified(true); - } - this.center = null; - this.start1 = null; - this.start2 = null; - this.end1 = null; - this.end2 = null; - this.gesture = null; - this.deg = null; - this.scale = null; - this.cloned = null; - } - }; - this.holding = new class { - constructor() { - this.delay = 1000; - this.tor = 2; - this.e = null; - this.tm = null; - this.timer = null; - this.jsd = null; - } - start(e, jsd) { - if (!scil.Utils.isTouch && !window.navigator.msPointerEnabled) - return; - this.end(); - this.e = { clientX: e.clientX, clientY: e.clientY }; - this.tm = new Date().getTime(); - this.jsd = jsd; - const me = this; - this.timer = setTimeout(function () { me.timeout(); }, this.delay); - } - end() { - if (this.timer == null) - return; - this.e = null; - this.tm = null; - clearTimeout(this.timer); - this.timer = null; - } - timeout() { - if (this.e != null) { - this.jsd.start = null; - this.jsd.showContextMenu(this.e, this.jsd.options.viewonly); - } - this.end(); - } - move(e) { - if (this.e != null && (Math.abs(e.clientX - this.e.clientX) > this.tor || Math.abs(e.clientY - this.e.clientY) > this.tor)) - this.end(); - } - }(); - this.disableundo = JSDraw2.speedup.disableundo; - this.T = "DRAW"; - JSDraw2.Editor.COLORCURRENT = [0, 255, 0, 0.5]; - JSDraw2.Editor.COLORSELECTED = [0, 0, 255, 0.5]; - this.options = options == null ? {} : options; - this.chiral = null; - if (JSDraw2.Editor._id == null) { - JSDraw2.Editor._id = 0; - JSDraw2.Editor._allitems = {}; - } - ++JSDraw2.Editor._id; - if ((typeof dv) == "string") - dv = dojo.byId(dv); - if (dv == null) - return; - this.ptElement = null; - this.connectHandlers = []; - this.maintable = null; - this.div = dv; - if (this.div.id == null || this.div.id.length == 0) - this.div.id = "__JSDraw_" + JSDraw2.Editor._id; - this.id = this.div.id; - JSDraw2.Editor._allitems[this.id] = this; - if (JSDraw2.defaultoptions == null) - JSDraw2.defaultoptions = {}; - if (this.options.popup == null) - this.options.popup = scil.Utils.isAttTrue(this.div, "popup"); - if (this.options.viewonly == null) - this.options.viewonly = scil.Utils.isAttTrue(this.div, "viewonly"); - if (this.options.removehydrogens == null) - this.options.removehydrogens = JSDraw2.defaultoptions.removehydrogens != null ? JSDraw2.defaultoptions.removehydrogens : scil.Utils.isAttTrue(this.div, "removehydrogens"); - if (this.options.query == null) - this.options.query = JSDraw2.defaultoptions.query != null ? JSDraw2.defaultoptions.query : !scil.Utils.isAttFalse(this.div, "query"); - if (this.options.rxn == null) - this.options.rxn = JSDraw2.defaultoptions.rxn != null ? JSDraw2.defaultoptions.rxn : !scil.Utils.isAttFalse(this.div, "rxn"); - if (this.options.biology == null) - this.options.biology = JSDraw2.defaultoptions.biology != null ? JSDraw2.defaultoptions.biology : !scil.Utils.isAttFalse(this.div, "biology"); - if (this.options.sendquery == null) - this.options.sendquery = JSDraw2.defaultoptions.sendquery != null ? JSDraw2.defaultoptions.sendquery : !scil.Utils.isAttFalse(this.div, "sendquery"); - if (this.options.showtoolbar == null) - this.options.showtoolbar = JSDraw2.defaultoptions.showtoolbar != null ? JSDraw2.defaultoptions.showtoolbar : !scil.Utils.isAttFalse(this.div, "showtoolbar"); - if (this.options.showcustomtemplates == null) - this.options.showcustomtemplates = JSDraw2.defaultoptions.showcustomtemplates != null ? JSDraw2.defaultoptions.showcustomtemplates : !scil.Utils.isAttFalse(this.div, "showcustomtemplates"); - if (this.options.usechemdraw == null) - this.options.usechemdraw = JSDraw2.defaultoptions.usechemdraw != null ? JSDraw2.defaultoptions.usechemdraw : scil.Utils.isAttTrue(this.div, "usechemdraw"); - if (this.options.showcarbon == null) - this.options.showcarbon = JSDraw2.defaultoptions.showcarbon; - if (this.options.pastechemdraw == null) - this.options.pastechemdraw = JSDraw2.defaultoptions.pastechemdraw; - if (this.options.width > 0) - this.div.style.width = this.options.width + "px"; - if (this.options.height > 0) - this.div.style.height = this.options.height + "px"; - if (this.options.ondatachange == null) - this.options.ondatachange = dojo.attr(this.div, "ondatachange"); - if (this.options.data == null) - this.options.data = dojo.attr(this.div, "data"); - if (this.options.dataformat == null) - this.options.dataformat = dojo.attr(this.div, "dataformat"); - if (this.options.showimplicithydrogens == null) - this.options.showimplicithydrogens = JSDraw2.defaultoptions.showimplicithydrogens != null ? JSDraw2.defaultoptions.showimplicithydrogens : !scil.Utils.isAttFalse(this.div, "showimplicithydrogens"); - if (this.options.inktools == null) - this.options.inktools = JSDraw2.defaultoptions.inktools != null ? JSDraw2.defaultoptions.inktools : !scil.Utils.isAttFalse(this.div, "inktools"); - if (this.options.highlighterrors == null) - this.options.highlighterrors = JSDraw2.defaultoptions.highlighterrors != null ? JSDraw2.defaultoptions.highlighterrors : !scil.Utils.isAttFalse(this.div, "highlighterrors"); - if (this.options.skin == null) { - this.options.skin = JSDraw2.defaultoptions.skin != null ? JSDraw2.defaultoptions.skin : dojo.attr(this.div, "skin"); - if (this.options.skin == null) - this.options.skin = "w8"; - } - if (this.options.monocolor == null) - this.options.monocolor = scil.Utils.isAttTrue(this.div, "monocolor"); - if (this.options.fullscreen == null) - this.options.fullscreen = JSDraw2.defaultoptions.fullscreen != null ? JSDraw2.defaultoptions.fullscreen : scil.Utils.isAttTrue(this.div, "fullscreen"); - if (this.options.buttonshape == null) - this.options.buttonshape = JSDraw2.defaultoptions.buttonshape != null ? JSDraw2.defaultoptions.buttonshape : dojo.attr(this.div, "buttonshape"); - if (this.options.buttonshape == null || this.options.buttonshape == "") - this.options.buttonshape = scil.Utils.isIE ? "circle" : "square"; - if (this.options.buttonshape == "square") - this.options.buttonshape = "btnrec"; - else if (this.options.buttonshape == "circle") - this.options.buttonshape = "btncir"; - if (!(this.options.scale > 0)) { - if (JSDraw2.defaultoptions.scale != null) { - this.options.scale = JSDraw2.defaultoptions.scale; - } - else { - const s = dojo.attr(this.div, "scale"); - if (!isNaN(s)) - this.options.scale = parseFloat(s); - //if (!(this.options.scale > 0)) - // this.options.scale = this.isSkinW8() ? 1.3 : 1.0; - } - } - this.options.btnsize = this.isSkinW8() ? 42 : (20 * this.options.scale); - if (this.options.data == null) { - const molfile = dojo.attr(this.div, "molfile"); - if (molfile != null) { - this.options.data = molfile; - this.options.dataformat = "molfile"; - } - } - if (this.options.data == null) { - const rxnfile = dojo.attr(this.div, "rxnfile"); - if (rxnfile != null) { - this.options.data = rxnfile; - this.options.dataformat = "rxnfile"; - } - } - if (this.options.skin == "w8") - JSDraw2.Skin.jsdraw = { bkcolor: "#fff" }; - this.movingresolution = this.options.movingresolution > 0 ? this.options.movingresolution : 6; - this.bondlength = JSDraw2.Editor.BONDLENGTH; - this.tor = JSDraw2.Editor.TOR; - this.linewidth = JSDraw2.Editor.LINEWIDTH; - this.fontsize = JSDraw2.Editor.FONTSIZE; - this.angleStop = JSDraw2.Editor.ANGLESTOP; - const rect = scil.Utils.styleRect(this.div); - this.dimension = new JSDraw2.Point(rect.width, rect.height); - if (!(this.dimension.x > 0)) - this.dimension.x = this.div.offsetWidth == 0 ? 650 : this.div.offsetWidth; - if (!(this.dimension.y > 0)) - this.dimension.y = this.div.offsetHeight == 0 ? 320 : this.div.offsetHeight; - this.div.style.textAlign = "left"; - this.div.style.cursor = "default"; - this.div.style.width = this.dimension.x + "px"; - this.div.style.height = this.dimension.y + "px"; - if (scil.helm != null && this.options.helm != false) - this.helm = new scil.helm.Plugin(this); - this.m = new JSDraw2.Mol(this.options.showimplicithydrogens); - this.status = null; - this.modified = false; - this.toolbar = null; - this.touching = null; - this.start = null; - this.lastmove = null; - this.end = null; - this.curObject = null; - this.curButton = null; - this.movingClone = null; - this.resizing = null; - this.texteditor = { input: null, text: null, atom: null }; - this.rotating = null, - this.mousedownPoint = null; - this._lastMousedownTm = null; - this.lassolast = null; - this.chaintool = null; - this.activated = false; - this.ink = null; - JSDraw2.Security._check(); - this.undocapacity = 10; - this._undostack = new JSDraw2.Stack(this.undocapacity); - this._redostack = new JSDraw2.Stack(this.undocapacity); - if (!this.setMol(this.options.data)) { - switch ((this.options.dataformat + "").toLowerCase()) { - case "mol": - case "molfile": - this.setMolfile(this.options.data); - break; - case "molbase64": - this.setMolbase64(this.options.data); - break; - case "rxn": - case "rxnfile": - this.setRxnfile(this.options.data); - break; - case "rxnbase64": - this.setRxnbase64(this.options.data); - break; - case "jdx": - this.setJdx(this.options.data); - break; - case "html": - case "xml": - case "jsdraw": - this.setXml(this.options.data == null ? this.div : this.options.data); - break; - case "helm": - this.setHelm(this.options.data == null ? this.div : this.options.data); - break; - case "molurl": - this.download(this.options.data, "mol"); - break; - case "rxnurl": - this.download(this.options.data, "rxn"); - break; - case "xmlurl": - this.download(this.options.data, "xml"); - break; - case "jdxurl": - this.download(this.options.data, "jdx"); - break; - default: - this.setXml(this.div); - } - } - const hastoolbar = !this.options.popup && !this.options.viewonly; - this.div.innerHTML = ""; - if (this.options.background != null) - this.div.style.background = this.options.background; - else - this.div.style.background = "#fff"; - if (hastoolbar && this.options.showtoolbar) { - if (this.isSkinW8()) { - this.dimension.y -= 70; - } - else { - this.dimension.x -= 28; - this.dimension.y -= 24; - } - } - dojo.style(this.div, { width: this.dimension.x + "px", height: this.dimension.y + "px" }); - const me = this; - if (!this.options.viewonly || this.options.popup == true) { - if (scil.Utils.serviceAvailable() && scil.DnDFile != null) { - new scil.DnDFile(this.div, { - url: JSDrawServices.url + "?cmd=openjsd", - onupload: function (args) { - if (!scil.Utils.isChemFile(scil.Utils.getFileExt(args.filename))) - return false; - }, - callback: function (ret) { - me.activate(true); - JSDraw2.JSDrawIO.jsdFileOpen2(me, ret); - } - }); - } - } - if (hastoolbar) { - this.toolbar = new JSDraw2.Toolbar(this); - this.toolbar.createToolbars(this.div); - if (!this.options.showtoolbar) - this.toolbar.show(false); - if (window.navigator.msPointerEnabled) { - dojo.connect(this.div, "onselectstart", function (e) { e.preventDefault(); }); - // only caption multi-touch. one-point touch is handler by mouse-down/move/up - dojo.connect(this.div, "onMSPointerDown", function (e) { - e = scilligence.mstouch.down(e); - if (e != null && e.touches.length > 1) - me.touchStart(e); - else - me.resetGesture(); - }); - dojo.connect(this.div, "onMSPointerMove", function (e) { - e = scilligence.mstouch.move(e); - if (e != null && e.touches.length > 1) - me.touchMove(e); - }); - dojo.connect(this.div, "onMSPointerUp", function (e) { - e = scilligence.mstouch.up(e); - if (e != null && e.touches.length > 1) - me.touchEnd(e); - }); - dojo.connect(this.div, "onMSGestureHold", function (e) { - me.showContextMenu(e); - e.preventDefault(); - }); - //this.div.addEventListener("MSGestureStart", function (e) { me.gestureStart(e); }, false); - //this.div.addEventListener("MSGestureChange", function (e) { me.gestureChange(e); }, false); - //this.div.addEventListener("MSGestureEnd", function (e) { me.gestureEnd(e); }, false); - } - if (scil.Utils.isTouch) { - this.activate(false, false); - this.connectHandlers.push(dojo.connect(document.body, 'ontouchstart', function (e) { return me.bodyTouchStart(e); })); - this.connectHandlers.push(dojo.connect(this.maintable, 'onclick', function (e) { return me.touchClick(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'ontouchstart', function (e) { return me.touchStart(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'ontouchmove', function (e) { return me.touchMove(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'ontouchend', function (e) { return me.touchEnd(e); })); - } - else { - this.activate(false, false); - this.connectHandlers.push(dojo.connect(document, 'onmousedown', function (e) { return me.bodyMouseDown(e); })); - //this.connectHandlers.push(dojo.connect(document, 'onclick', function (e) { me.bodyClick(e); })); - this.connectHandlers.push(dojo.connect(document, 'onkeydown', function (e) { me.keydown(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function (e) { me.mousedown(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'onmousemove', function (e) { me.mousemove(e); })); - this.connectHandlers.push(dojo.connect(this.div, 'onmouseup', function (e) { me.mouseup(e); })); - if (scil.Utils.isFirefox) - this.connectHandlers.push(dojo.connect(this.div, 'onwheel', function (e) { me.mousewheel(e); })); - else - this.connectHandlers.push(dojo.connect(this.div, 'onmousewheel', function (e) { me.mousewheel(e); })); - } - dojo.attr(this.div, '__ajaxform', '1'); - } - else { - if (this.options.popup) { - if (scil.Utils.isTouch) { - this.connectHandlers.push(dojo.connect(this.div, 'ontouchstart', function (e) { - if (!scil.Utils.isTouchDblClick(e)) - return; - me.dblclick(); - e.preventDefault(); - return false; - })); - } - else { - this.connectHandlers.push(dojo.connect(this.div, 'ondblclick', function (e) { - me.dblclick(); - })); - } - } - if (!scil.Utils.isTouch) { - this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function (e) { me.mousedown(e, true); })); - this.connectHandlers.push(dojo.connect(this.div, 'onmousemove', function (e) { me.mousemove(e, true); })); - this.connectHandlers.push(dojo.connect(this.div, 'onmouseup', function (e) { me.mouseup(e, true); })); - if (scil.Utils.isFirefox) - this.connectHandlers.push(dojo.connect(this.div, 'DOMMouseScroll', function (e) { me.mousewheel(e); })); - else - this.connectHandlers.push(dojo.connect(this.div, 'onmousewheel', function (e) { me.mousewheel(e, true); })); - } - } - this.connectHandlers.push(dojo.connect(this.div, 'onresize', function () { if (!me._clearing) - me.onResize(); })); - dojo.style(this.div, { userSelect: "none", oUserSelect: "none", MozUserSelect: "none", khtmlUserSelect: "none", webkitUserSelect: "none" }); - // guarantee all parents are visible - let parents = null; - if (scil.Utils.isIE && (scil.Utils.isIE < 9 || dojox.gfx.renderer != "svg")) - parents = this._showAllParents(this.div); - this.surface = dojox.gfx.createSurface(this.div, this.dimension.x, this.dimension.y); - if (parents != null) { - //this.surface.rowNode.setAttribute("unselectable", "on"); - this._hideElements(parents); - } - if (scil.Utils.isSilverlight == null) { - // @ts-ignore - scil.Utils.isSilverlight = this.div.firstChild != null && this.div.type == "application/x-silverlight"; - } - if (scil.Utils.isSilverlight) { - if (this.options.popup) { - // this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function (e) { me.mousedown2(e); e.preventDefault(); })); - this.div.style.position = "relative"; - let zindex = parseInt(this.div.style.zIndex + ""); - if (isNaN(zindex)) - zindex = 0; - scil.Utils.createElement(this.div, "div", null, { - position: "absolute", left: '0', top: '0', background: "white", filter: "alpha(opacity=1)", - width: this.dimension.x + "px", height: this.dimension.y + "px", zIndex: `${zindex + 1}` - }); - } - else if (hastoolbar) { - this.surface.connect("onkeydown", function (e) { me.keydown(e); }); - } - } - if (this.options.showcontextmenu != false) { - scil.Utils.disableContextMenu(this.div); - //scil.Utils.disableContextMenu(this.surface); - } - this.modified = false; - //this.activate(true); - if (this.options.scale > 0) { - const s = 30 / this.bondlength * this.options.scale; - if (s != 1) - this.scale(this.options.scale); - this.fitToWindow(); - } - this.redraw(); - this.loaded = true; - if (hastoolbar) { - if (this.options.tlcplate) - this.doCmd("tlc"); - else - this.doCmd("select"); - if (!this.options.appmode && !scil.Utils.isIE) // except IE, I#10205 - scil.connect(document, "onpaste", function (e) { if (me.doPaste(e)) - e.preventDefault(); }); - } - else { - this.doCmd("moveview"); - } - } - doPaste(s) { - if (!this.activated) - return false; - if (this.texteditor.ed != null && this.texteditor.ed.input != null && this.texteditor.ed.input.style.display != "none") - return false; - const maxZindex = scil.Utils.getMaxZindex(); - const zindex = scil.Utils.getZindex(this.div); - if (maxZindex > zindex) - return false; - const clipboard = s; - if (clipboard != null && clipboard.clipboardData != null) - s = clipboard.clipboardData.getData("text/plain"); - let m = null; - if (!scil.Utils.isNullOrEmpty(s)) { - m = new JSDraw2.Mol(); - m.setXml(s); - if (m.isEmpty()) - m = null; - } - if (m == null) - m = JSDraw2.Editor.getClipboard(); - if (m == null) { - // try ajax paste - if (clipboard != null && clipboard.clipboardData != null && JSDrawServices != null && JSDrawServices.url != null) { - const rtf = clipboard.clipboardData.getData("text/rtf"); - if (!scil.Utils.isNullOrEmpty(rtf)) { - const me = this; - scil.Utils.ajax(JSDrawServices.url + "?cmd=paste.rtf2jsdraw", function (ret) { - if (ret == null && ret.jsdraw == null) - return; - const m = new JSDraw2.Mol(); - if (m.setXml(ret.jsdraw) == null) - return; - const f = me.pasteMol(m); - if (f) - me.refresh(); - }, { rtf: rtf }); - } - } - return false; - } - const ret = this.pasteMol(m); - if (ret) - this.refresh(); - return true; - } - _showAllParents(e) { - const ret = { display: [], visibility: [], visvalues: [] }; - while (e != null && e.style != null) { - if (e.style.display == "none") { - ret.display.push(e); - e.style.display = ""; - } - if (e.style.visibility != "" && e.style.visibility != null && e.style.visibility != "visible") { - ret.visibility.push(e); - ret.visvalues.push(e.style.visibility); - e.style.visibility = "visible"; - } - e = e.parentNode; - } - return ret; - } - _hideElements(ret) { - if (ret == null) - return; - for (let i = 0; i < ret.display.length; ++i) - ret.display[i].style.display = "none"; - for (let i = 0; i < ret.visibility.length; ++i) - ret.visibility[i].style.visibility = ret.visvalues[i]; - } - reset() { - this.clear(true); - this._undostack.clear(); - this._redostack.clear(); - if (this.options.tlcplate) - this.doCmd("tlc"); - else - this.doCmd("select"); - } - /** - * Push the current status into undo stack - * @function pushundo - * @returns null - */ - pushundo(m, action) { - if (this.disableundo) - return; - if (m == null && action != null && this.lastaction == action) - return; - this.lastaction = action; - this._redostack.clear(); - this._undostack.push(m == null ? this.clone() : m); - } - /** - * Undo once - * @function undo - * @returns null - */ - undo() { - if (this.disableundo) - return; - const m = this._undostack.pop(); - if (m == null) - return false; - this._redostack.push(this.clone()); - this.restoreClone(m); - this.setModified(true); - return true; - } - restoreClone(m) { - this._setmol(m.mol); - this.resetScale(m); - } - /** - * Redo once - * @function redo - * @returns null - */ - redo() { - if (this.disableundo) - return; - const m = this._redostack.pop(); - if (m == null) - return false; - this._undostack.push(this.clone()); - this._setmol(m.mol); - this.resetScale(m); - this.setModified(true); - return true; - } - /** - * Copy - * @function copy - * @returns null - */ - copy(m) { - if (m == null) { - m = this.m.clone(true); - m.bondlength = this.bondlength; - } - JSDraw2.Editor.setClipboard(m, this.bondlength); - if (scil.Clipboard != null && m != null && !m.isEmpty()) { - scil.Clipboard.copy(m.getXml(null, null, null, null, this.bondlength)); - return true; - } - return false; - } - /** - * Cut - * @function cut - * @returns null - */ - cut() { - if (!this.copy()) - return false; - this.pushundo(); - return this.delSelected() > 0; - } - /** - * Paste - * @function past - * @param {Point} pos - place the pasted structure to this location - * @returns the Mol - */ - paste(pos) { - const m = JSDraw2.Editor.getClipboard(); - return this.pasteMol(m); - } - /** - * Paste a mol - * @function past - * @param {Mol} m - molecule to be pasted - * @param {Point} pos - place the pasted structure to this location - * @returns the Mol - */ - pasteMol(m, pos, clear) { - if (m == null) - return false; - if (typeof (m) == "string") { - const mol = new JSDraw2.Mol(this.options.showimplicithydrogens); - mol.setMolfile(m); - m = mol; - } - const empty = this.m.isEmpty(); - this.pushundo(); - if (!!clear) - this.clear(null, true); - let len = null; - if (m.bondlength > 0) { - len = this.bondlength; //I#9549 - m.scale(this.bondlength / m.bondlength); - //this.resetScale(); - } - else { - let len2 = m.medBondLength(); - if (!(len2 > 0)) - len2 = 1.56; - let len = this.m.medBondLength(); - if (!(len > 0)) - len = this.bondlength; - m.scale(len / len2); - } - if (pos == null) { - m.moveCenter(this.dimension.x, this.dimension.y); - m.offset(10, 10); - } - else { - const c = m.center(); - m.offset(pos.x - c.x, pos.y - c.y); - } - m.showimplicithydrogens = this.options.showimplicithydrogens; - this.m.setSelected(); - m.setSelected(true); - m.calcHCount(true); - // make rxn - let reaction = null; - const rxn = this.m.parseRxn(true); - const rxn2 = m.parseRxn(true); - if ((clear == "reactant" || clear == "product") && rxn2 != null && rxn2.arrow == null) { - if (clear == "reactant") - scil.Utils.mergeArray(rxn.reactants, rxn2.reactants); - else - scil.Utils.mergeArray(rxn.products, rxn2.reactants); - reaction = rxn; - } - else if (rxn != null && (rxn.reactants.length > 0 || rxn.products.length > 0)) { - if (rxn.arrow != null) { - if (rxn2.arrow == null) { - if (rxn.reactants.length == 0) - rxn.reactants = rxn2.reactants; - else - scil.Utils.mergeArray(rxn.products, rxn2.reactants); - reaction = rxn; - } - } - else { - if (rxn2.arrow != null) { - if (rxn.arrow == null) { - if (rxn2.reactants.length == 0) - rxn2.reactants = rxn.reactants; - else - scil.Utils.mergeArray(rxn2.products, rxn.reactants); - } - reaction = rxn2; - } - } - } - if (reaction != null) { - this.m.setRxn(reaction, len); - this.fitToWindow(); - } - else { - const tlcplates = []; - for (let i = m.graphics.length - 1; i >= 0; --i) { - const t = JSDraw2.TLC.cast(m.graphics[i]); - if (t != null) { - m.graphics.splice(i, 1); - tlcplates.splice(0, 0, t); - } - } - this.m.mergeMol(m); - for (let i = 0; i < tlcplates.length; ++i) - this.addTlcPlate(tlcplates[i]); - if (m.chiral != null) - this.m.chiral = m.chiral; - if (empty) - this.fitToWindow(); - } - this.setModified(true); - return true; - } - /** - * Reset scaling - * @function resetScale - * @returns null - */ - resetScale(s) { - this.bondlength = s == null ? JSDraw2.Editor.BONDLENGTH : s.bondlength; - this.tor = s == null ? JSDraw2.Editor.TOR : s.tor; - this.linewidth = s == null ? JSDraw2.Editor.LINEWIDTH : s.linewidth; - this.fontsize = s == null ? JSDraw2.Editor.FONTSIZE : s.fontsize; - this.angleStop = s == null ? JSDraw2.Editor.ANGLESTOP : s.angleStop; - } - clone() { - return { mol: this.m.clone(), bondlength: this.bondlength, tor: this.tor, linewidth: this.linewidth, fontsize: this.fontsize, angleStop: this.angleStop }; - } - showTextEditor(obj, p, str) { - const text = this.texteditor.text = JSDraw2.Text.cast(obj); - if (text != null && text.readonly) - return; - if (this.texteditor.hidetime != null) { - const tm = this.texteditor.hidetime; - this.texteditor.hidetime = null; - if (new Date().getTime() - tm < 500) - return; - } - const a = this.texteditor.atom = JSDraw2.Atom.cast(obj); - const t = JSDraw2.Text.cast(obj); - const shp = this.texteditor.shape = JSDraw2.Shape.cast(obj); - const br = t != null && t.anchors != null && t.anchors.length == 1 ? JSDraw2.Bracket.cast(t.anchors[0]) : null; - if (a != null) { - p.x -= 6 * this.bondlength / 30; - p.y -= 9 * this.bondlength / 30; - } - else if (shp != null) { - p.x = shp._rect.left + shp._rect.width / 10; - p.y = shp._rect.center().y - 9 * this.bondlength / 30; - } - const me = this; - if (this.texteditor.ed == null) { - const input = scil.Utils.createElement(document.body, "input"); - this.texteditor.ed = new scil.DropdownInput(input, { onclickitem: function (s) { return me.clickTextItem(s); } }); - dojo.style(this.texteditor.ed.input, { position: "absolute", display: "none", zIndex: '999' }); - this.connectHandlers.push(dojo.connect(this.texteditor.ed.input, "onkeydown", function (e) { return me.txtKeypress(e); })); - } - const options = this.texteditor.ed.options; - if (a != null) { - let list = null; - if (a.bio != null && this.helm != null) - list = scil.helm.Monomers.getMonomerList(a); - else - list = JSDraw2.defaultoptions.atomlist != null ? JSDraw2.defaultoptions.atomlist : JSDraw2.PT.getCommonUsedElements("list"); - this.texteditor.ed.setItems(list); - options.onSetValue = function (input, s) { input.value = s; }; - options.minautowidth = JSDraw2.defaultoptions.minautowidth1 > 0 ? JSDraw2.defaultoptions.minautowidth1 : 100; - if (a.bio != null) - options.onFilter = null; - else - options.onFilter = function (q) { return me.filterAtomType(q); }; - } - else if (shp != null) { - this.texteditor.ed.setItems(null); - } - else if (br != null) { - if (t.fieldtype == "BRACKET_TYPE") { - this.texteditor.ed.setItems(JSDraw2.SGroup == null ? null : JSDraw2.SGroup.getDisplayTypes()); - options.onSetValue = function (input, s) { - let s2 = ""; - if (scil.Utils.endswith(s, ")")) { - const p = s.lastIndexOf('('); - if (p > 0) - s2 = s.substr(p + 1, s.length - p - 2); - } - input.value = s2; - }; - options.minautowidth = JSDraw2.defaultoptions.minautowidth2 > 0 ? JSDraw2.defaultoptions.minautowidth2 : 150; - options.onFilter = null; - } - else if (t.fieldtype == "MOL_TYPE") { - this.texteditor.ed.setItems(JSDraw2.MOLECULETYPES); - options.onSetValue = function (input, s) { - if (scil.Utils.isNullOrEmpty(s)) - this.mol.delGraphics(t); - else - input.value = s; - }; - options.minautowidth = JSDraw2.defaultoptions.minautowidth2 > 0 ? JSDraw2.defaultoptions.minautowidth2 : 150; - options.onFilter = null; - } - } - else { - this.texteditor.ed.setItems(JSDraw2.defaultoptions.textlist != null ? JSDraw2.defaultoptions.textlist : JSDraw2.TEXTKEYWORDS); - options.onSetValue = function (input, s) { if (scil.Utils.indexOf(options.items, s) >= 0) - input.value += s; - else - input.value = s; }; - options.minautowidth = JSDraw2.defaultoptions.minautowidth3 > 0 ? JSDraw2.defaultoptions.minautowidth3 : 300; - options.autosuggest = this.options.reagentsuggest; - options.onFilter = options.autosuggest != null ? null : function () { }; - } - const z = scil.Utils.getZindex(this.div); - this.texteditor.ed.input.style.zIndex = z > 0 ? (z + 1) : 1; - if (text != null) - p = new JSDraw2.Point(text._rect.left, text._rect.top); - else - p.offset(-2, -2); - const offset = scil.Utils.getOffset(this.div, false); - dojo.style(this.texteditor.ed.input, { fontSize: this.fontsize + "px" }); - dojo.style(this.texteditor.ed.input, { left: (p.x + offset.x) + "px", top: (p.y + offset.y) + "px", display: "" }); - let selectall = true; - if (text != null) { - this.texteditor.ed.input.value = str == null ? text.text : str; - } - else if (a != null) { - let s = a.getLabel(); - if (a.charge > 0) { - if (a.charge > 1) - s += a.charge; - else - s += "+"; - } - else if (a.charge < 0) { - if (a.charge > 1) - s += a.charge; - else - s += "-"; - } - this.texteditor.ed.input.value = s; - } - else if (shp != null) { - this.texteditor.ed.input.value = shp.text; - } - else if (str != null) { - this.texteditor.ed.input.value = str; - selectall = false; - } - // dojo.attr(this.texteditor.ed, "changed", ''); - this.txtAutosize(); - if (selectall) - this.texteditor.ed.input.select(); - this.texteditor.ed.input.style.display = ""; - this.texteditor.ed.input.focus(); - this.texteditor.showtime = new Date().getTime(); - } - filterAtomType(q) { - if (this.texteditor.atom == null) - return; - return JSDraw2.SuperAtoms.filter(q, JSDraw2.defaultoptions.suggestcount > 0 ? JSDraw2.defaultoptions.suggestcount : 10); - } - createImageTo(parent) { - if (!scil.Utils.serviceAvailable() || parent == null) - return; - if (typeof (parent) == "string") - parent = scil.byId(parent); - const jsdraw = this.getXml(); - scil.Utils.ajax(JSDrawServices.url + "?cmd=jsdraw2img", function (ret) { - scil.Utils.createElement(parent, "img", null, null, { src: ret.src, jsdraw: JSDraw2.Base64.encode(jsdraw) }); - }, { jsdraw: jsdraw }); - } - clickTextItem(s) { - if (this.texteditor.atom != null) { - if (s == "...") { - this.hideTextEditor(true); - this.m.setSelected(false); - this.texteditor.atom.selected = true; - this.refresh(false); - const me = this; - this.showPT(function (elem) { me.menuSetAtomType2(elem); }); - } - else { - this.hideTextEditor(); - } - } - else { - this.txtAutosize(); - } - } - insertSymbol(symbol) { - if (this.texteditor.ed == null || this.texteditor.ed.input.style.display == "none") - return false; - this.texteditor.ed.input.focus(); - let caretposition = JSDraw2.Symbol.getCaretPosition(this.texteditor.ed.input); - const s = this.texteditor.ed.input.value; - if (caretposition > 0 && caretposition < s.length) { - this.texteditor.ed.input.value = s.substr(0, caretposition) + symbol + s.substr(caretposition); - ++caretposition; - JSDraw2.Symbol.setCaretPosition(this.texteditor.ed.input, caretposition); - } - else { - this.texteditor.ed.input.value += symbol; - } - this.txtAutosize(); - return false; - } - hideTextEditor(cancel) { - if (this.texteditor.ed == null || this.texteditor.ed.input.style.display == "none") - return; - if (this.texteditor.showtime != null) { - const tm = this.texteditor.showtime; - this.texteditor.showtime = null; - if (new Date().getTime() - tm < 500) - return; - } - this.texteditor.ed.hide(); - this.texteditor.ed.input.style.display = "none"; - this.texteditor.ed.input.style.display = "none"; - this.texteditor.hidetime = new Date().getTime(); - let s = scil.Utils.trim(this.texteditor.ed.input.value); - this.texteditor.ed.input.value = ""; - if (cancel == true) - return; - if (this.options.onvalidatetext != null) { - if (this.options.onvalidatetext(s, this.texteditor, this) == false) - return; - } - if (JSDraw2.Symbol != null) - JSDraw2.Symbol.hide(); - if (this.texteditor.atom != null) { - if (s == "") - s = "C"; - const cloned = this.clone(); - let f; - if (this.texteditor.atom.bio != null) { - if (this.helm != null && scil.helm.isHelmNode(this.texteditor.atom)) { - f = this.helm.setNodeTypeFromGui(this.texteditor.atom, s); - } - } - else { - s = JSDraw2.FormulaParser.stripHs(s); - f = this.m.setAtomAlias(this.texteditor.atom, s) || this.m.setAtomType(this.texteditor.atom, s, true); - } - if (f) { - this.pushundo(cloned); - this.refresh(true); - } - } - else if (this.texteditor.shape != null) { - if (this.texteditor.shape.text != s) { - this.pushundo(); - this.texteditor.shape.text = s; - this.refresh(true); - } - } - else { - if (this.texteditor.text == null) { - if (s.length == 0) - return; - const offset = scil.Utils.getOffset(this.div, false); - const rect = scil.Utils.styleRect(this.texteditor.ed.input); - rect.offset(-offset.x, -offset.y); - const txt = new JSDraw2.Text(rect, s); - this.pushundo(); - this.m.addGraphics(txt); - this.refresh(true); - } - else { - if (s == this.texteditor.text.text) - return; - this.pushundo(); - if (s.length == 0) - this.texteditor.text._parent.delObject(this.texteditor.text); - else - this.texteditor.text.text = s; - if (this.texteditor.text.fieldtype == "BRACKET_TYPE" && this.texteditor.text.anchors.length == 1 && JSDraw2.Bracket.cast(this.texteditor.text.anchors[0]) != null) { - if (scil.Utils.isNumber(s)) - this.texteditor.text.anchors[0].type = "mul"; - else - this.texteditor.text.anchors[0].type = s; - } - this.texteditor.text = null; - this.refresh(true); - } - } - } - showTemplatesDlg() { - JSDraw2.CustomTemplates.show(false, this); - } - showSymbolDlg() { - const input = this.texteditor == null || this.texteditor.ed == null ? null : this.texteditor.ed.input; - const pt = input == null || input.style.display == "none" ? null : { x: input.offsetLeft, y: input.offsetTop + input.offsetHeight + 5 }; - const me = this; - JSDraw2.Symbol.show(false, function (s) { return me.insertSymbol(s); }, pt); - } - txtKeypress(e) { - if ((e.keyCode == 40 || e.keyCode == 38) && (e.ctrlKey || e.metaKey) && JSDraw2.Symbol != null) { - if (e.keyCode == 40) - this.showSymbolDlg(); - else - JSDraw2.Symbol.hide(); - e.preventDefault(); - return false; - } - if (e.keyCode == 27 || e.keyCode == 13) { - this.hideTextEditor(e.keyCode == 27); - e.time2 = 903; - e.preventDefault(); - return false; - } - this.txtAutosize(); - } - txtAutosize() { - const w = scil.Utils.textWidth(this.texteditor.ed.input.value) * this.fontsize * 0.6 + this.fontsize * 3; - this.texteditor.ed.input.style.width = (w < 100 ? 100 : w) + "px"; - this.texteditor.ed.updateDropdownSize(); - } - _setmol(m) { - this.m = m; - this.m.showimplicithydrogens = this.options.showimplicithydrogens; - this.start = null; - this.end = null; - this.status = null; - this.curObject = null; - } - /** - * Scale the molecule - * @function scale - * @param {number} s - the scaling factor - * @param {Point} origin - the scaling origin - * @returns null - */ - scale(s, origin) { - if (s <= 0 || s == 1.0) - return; - if (this.bondlength * s < JSDraw2.speedup.minbondlength) - s = JSDraw2.speedup.minbondlength / this.bondlength; - this.m.scale(s, origin); - this.bondlength *= s; - this.tor *= s; - this.linewidth *= s; - this.fontsize *= s; - if (origin == null) - this.moveCenter(); - } - /** - * Set modified flag - * @function setModified - * @param {bool} f - true or false - * @returns null - */ - setModified(f) { - this.modified = f; - if (f == false) - return; - if (this.options.ondatachange != null && this.loaded) { - if (typeof this.options.ondatachange == "function") { - this.options.ondatachange(this); - } - else { - try { - eval(this.options.ondatachange)(this); - } - catch (e) { - } - } - } - } - /** - * Refresh the display - * @function refresh - * @param {bool} modified - modified flag - * @returns null - */ - refresh(modified) { - this.m.stats = null; - if (modified == true || modified == false) - this.setModified(modified); - this.redraw(); - } - calcTextRect() { - if (this.surface == null || scil.Utils.isIE8Lower && this.surface.rawNode == null) - return; - const g = this.createGroup(); - this.m.draw(g, this.linewidth, this.fontsize, true, null, null, true); - this.surface.remove(g); - } - createGroup(parent) { - const g = (parent == null ? this.surface : parent).createGroup(); - if (dojox.gfx.renderer == "svg") - g.rawNode.setAttribute("__surface_parentid", this.id); - return g; - } - moveview(p) { - this.viewoffset = p; - if (this.viewoffset != null) - this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.viewoffset.x, this.viewoffset.y)]); - else - this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(0, 0)]); - } - /** - * Redraw the molecule - * @function redraw - * @returns null - */ - redraw(extraOnly) { - if (this.surface == null || scil.Utils.isIE8Lower && this.surface.rawNode == null) - return; - if (this.surface.rootgroup == null) { - this.surface.rootgroup = this.createGroup(); - if (JSDraw2.Security.error != null) { - this.surface.createText({ x: 5, y: 25, text: JSDraw2.Security.error, align: "start" }) - .setFont({ family: "Arial", size: "20px", weight: "normal" }) - .setFill("#ffe0e0"); - } - } - if (this.viewoffset != null) - this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.viewoffset.x, this.viewoffset.y)]); - else - this.surface.rootgroup.setTransform(null); - this._clearing = true; - if (extraOnly) { - if (this.surface.extra != null) { - this.surface.extra.clear(); - this.surface.extra.lasso = null; - } - } - else { - this.surface.rootgroup.clear(); - this.surface.extra = null; - this._clearing = false; - const g = this.createGroup(this.surface.rootgroup); - g.monocolor = this.options.monocolor || JSDraw2.defaultoptions.monocolor; - this.simpledraw = this.fontsize <= JSDraw2.speedup.fontsize; - this.updateGroupRect(); - this.m.draw(g, this.linewidth, this.fontsize, null, this.dimension, this.options.highlighterrors, this.options.showcarbon, this.simpledraw); - } - const cmd = this.getCmd(); - if (this.surface.extra == null) - this.surface.extra = this.createGroup(this.surface.rootgroup); - const extra = this.surface.extra; - if (this.curObject != null) - this.curObject.drawCur(extra, this.fontsize / 2 + 1, JSDraw2.Editor.COLORCURRENT, this.m, cmd); - if (this.start != null && this.end != null) { - switch (cmd) { - case "arrow": - if (this.arrowtool != null && this.arrowtool.connector == "rejector") - JSDraw2.Drawer.drawArrow(extra, this.start, this.end, "gray", this.linewidth, this.linewidth * 2); - else - JSDraw2.Drawer.drawArrow(extra, this.start, this.end, "gray", this.linewidth); - break; - case "curve": - JSDraw2.Drawer.drawCurveArrow(extra, this.start, this.end, null, null, "gray", this.linewidth / 2); - break; - case "rectangle": - JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 2, 5); - break; - case "assaycurve": - JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 4); - break; - case "spectrum": - JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 4); - break; - case "ellipse": - JSDraw2.Drawer.drawEllipse(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 2); - break; - case "diamond": - JSDraw2.Drawer.drawDiamond(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 2); - break; - case "dreversed": - JSDraw2.Drawer.drawDShape(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 2, true); - break; - case "dshape": - JSDraw2.Drawer.drawDShape(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth / 2); - break; - case "doublearrow": - JSDraw2.Drawer.drawDoubleArrow(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth); - break; - case "tlc": - case "electrophoresis": - if (this.movingClone == null) - new JSDraw2.TLC.create(cmd, this.start, this.end, this.fontsize / 2).draw(extra, this.linewidth, null, this.fontsize); - break; - case "select": - case "lasso": - case "selfrag": - case "zoombox": - if (this.movingClone == null) - JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), "#aaaaff", 1); - break; - case "bracket": - JSDraw2.Drawer.drawBracket(extra, new JSDraw2.Rect().set(this.start, this.end), "gray", this.linewidth); - break; - case "chain": { - let pts; - if (this.chaintool != null) { - pts = this.chaintool.points; - for (let i = 1; i < pts.length; ++i) - JSDraw2.Drawer.drawLine(extra, pts[i - 1], pts[i], "gray", this.linewidth); - } - if (!(scil.Utils.isIE && scil.Utils.isIE < 9 && this.options.appmode)) - JSDraw2.Drawer.drawText(extra, pts[pts.length - 1], pts.length - 1, "gray", this.fontsize); - break; - } - default: - if (cmd == "sgroup") - JSDraw2.Drawer.drawArrow(extra, this.start, this.end, "red", this.linewidth / 2); - else if (cmd != "rotate" && cmd != "eraser" && cmd != "plus" && cmd != "rxnmap" && cmd != "text" && - cmd != "undo" && cmd != "redo" && cmd != "zoomin" && cmd != "zoomout") - JSDraw2.Drawer.drawLine(extra, this.start, this.end, "gray", this.linewidth); - break; - } - } - if (this.status != null && this.status.length > 0) { - const y = this.dimension.y - 10; - extra.createText({ x: 5, y: y, text: this.status, align: "bottom" }) - .setFont({ family: "Arial", size: "14px", weight: "normal" }) - .setFill("#000"); - } - } - /** - * Fit the molecule to the view window - * @function fitToWindow - * @param {number} maxBondLength - maximum bond length - * @returns null - */ - fitToWindow(maxBondLength) { - const rect = this.m.rect(); - if (rect == null) - return; - if (maxBondLength == null) { - maxBondLength = JSDraw2.Editor.BONDLENGTH; - if (this.options.scale > 0) - maxBondLength *= this.options.scale; - } - rect.inflate(this.bondlength, this.bondlength); - const hs = rect.width / this.dimension.x; - const vs = rect.height / this.dimension.y; - let s; - if (hs == 0) - s = vs; - else if (vs == 0) - s = hs; - else - s = Math.max(vs, hs); - if (maxBondLength > 0 && this.bondlength / s > maxBondLength) - s = this.bondlength / maxBondLength; - if (s == 1.0) - this.moveCenter(); - else - this.scale(1.0 / s); - } - /** - * Move the structure to center of the view window - * @function moveCenter - * @returns null - */ - moveCenter() { - this.m.moveCenter(this.dimension.x, this.dimension.y); - } - updateGroupRect() { - for (let i = 0; i < this.m.graphics.length; ++i) { - const g = JSDraw2.Group.cast(this.m.graphics[i]); - if (g != null) - g._updateRect(this.m, this.bondlength); - } - } - /** - * Clean up reaction - * @function cleanupRxn - * @returns true if it is a reaction - */ - cleanupRxn(bondlength) { - const f = this.m.cleanupRxn(this.bondlength); - if (f) - this.fitToWindow(this.bondlength); - return f; - } - setRxn(rxn, redraw, bondlength, addlabel) { - this.pushundo(); - if (bondlength != null) - this.bondlength = bondlength; - if (addlabel) { - for (let i = 0; i < rxn.reactants.length; ++i) - rxn.reactants[i].removeTextByFieldType("RXNLABEL"); - for (let i = 0; i < rxn.products.length; ++i) - rxn.products[i].removeTextByFieldType("RXNLABEL"); - } - this.m.setRxn(rxn, this.bondlength); - this.calcTextRect(); - this.m._layoutRxn(rxn, this.bondlength); - if (addlabel) { - for (let i = 0; i < rxn.reactants.length; ++i) - this.m._addRxnLabel(rxn.reactants[i], this.bondlength / 2); - for (let i = 0; i < rxn.products.length; ++i) - this.m._addRxnLabel(rxn.products[i], this.bondlength / 2); - } - this.fitToWindow(this.bondlength); - if (redraw != false) - this.redraw(); - } - /** - * Clear all contents - * @function clear - * @param {bool} redraw - indicate if redrawing the view wndow - * @returns null - */ - clear(redraw, fireevents) { - const isempty = this.m.isEmpty(); - this.m.clear(); - this.curObject = null; - if (redraw) - this.redraw(); - this.resetScale(); - if (this.options.scale > 0) - this.scale(this.options.scale); - if (this.ink != null) - this.ink.clear(); - if (!isempty) { - if (fireevents && this.options.onClear != null) - this.options.onClear(); - } - } - toggleAtom(p) { - return this.m.toggleAtom(p, this.simpledraw ? JSDraw2.Editor.TOR : this.tor); - } - toggle(p) { - return this.m.toggle(p, this.simpledraw ? JSDraw2.Editor.TOR : this.tor); - } - fixWedgeDir(b) { - const atoms1 = this.m.getNeighborAtoms(b.a1, b.a2); - const atoms2 = this.m.getNeighborAtoms(b.a2, b.a1); - if ((atoms1.length == 0 || atoms1.length == 1) && atoms1.length < atoms2.length) - b.reverse(); - } - /** - * Get the fragment containing a given atom - * @function getFragment - * @param {Atom} a - the given atom - * @returns the fragement as a Mol object - */ - getFragment(a) { - const frags = this.m.splitFragments(); - for (let i = 0; i < frags.length; ++i) { - if (frags[i].containsAtom(a)) - return frags[i]; - } - return null; - } - /** - * Get the center of a set of atoms - * @function getCenter - * @param {array} atoms - an array of atoms - * @returns a Point object - */ - getCenter(atoms) { - let x = 0; - let y = 0; - if (atoms == null) - atoms = this.m.atoms; - if (atoms.length == 0) - return null; - for (let i = 0; i < atoms.length; ++i) { - const a = atoms[i]; - x += a.p.x; - y += a.p.y; - } - return new JSDraw2.Point(x / atoms.length, y / atoms.length); - } - /** - * Rotate atoms around a point - * @function rotate - * @param {array} atoms - an array of atom - * @param {Point} origin - rotating orgin - * @param {deg} atoms - rotating degree - * @returns null - */ - rotate(atoms, origin, deg) { - if (atoms == null) - atoms = this.m.atoms; - if (Math.abs(deg) < 0.1 || atoms.length == 0) - return false; - for (let i = 0; i < atoms.length; ++i) - atoms[i].p.rotateAround(origin, deg); - return true; - } - // mousedown2(e) { - // // silverlight - simulate double-click - // if (this.options.popup) { - // const tm = new Date().getTime(); - // if (this._lastMousedownTm != null && tm - this._lastMousedownTm < 300) - // this.dblclick(); - // this._lastMousedownTm = tm; - // } - // }, - startResize(obj, p, ctrl, cmd) { - if (obj.resize == null) - return; - const corner = obj.cornerTest(p, this.tor, ctrl, cmd); - if (corner != null) { - const list = []; - this.resizing = { corner: corner, obj: obj, start: p, list: list }; - const br = JSDraw2.Bracket.cast(obj); - if (br != null) - this.resizing.texts = br.getTexts(this.m); - } - } - getConnectingAtomBonds(list, notused) { - const links = []; - if (list != null && list.length > 0) { - const m = list[0]._parent; - m.clearFlag(); - for (let i = 0; i < list.length; ++i) - list[i].f = true; - for (let i = 0; i < m.bonds.length; ++i) { - const b = m.bonds[i]; - if (b.a1.f != b.a2.f) { - links.push({ a: b.a1.f ? b.a1 : b.a2, b: b }); - } - } - } - return links; - } - mousewheel(e, viewonly) { - if (!this.activated && !viewonly) - return; - const cmd = this.getCmd(); - if (cmd != "moveview") - return; - let delta = (-e.detail || (Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX)); - if (scil.Utils.isFirefox) - delta *= 20.0; - if (delta > 0 || delta < 0) { - const p = this.eventPoint(e); - this.scale(1.0 + delta / 500.0, p); - if (!viewonly) { - this.pushundo(null, "moveview"); - this.refresh(true); - } - else { - this.redraw(); - } - } - if (scil.Utils.isFirefox) { - e.stopImmediatePropagation(); - e.stopPropagation(); - } - e.preventDefault(); - } - mousedown(e, viewonly) { - if (!this.activated) { - this.mousedownPoint = new JSDraw2.Point(e.clientX, e.clientY); - if (viewonly && e.button == 0) - this.start = this.eventPoint(e); - return; - } - if (this.contextmenu != null && this.contextmenu.hide()) - return; - JSDraw2.Menu.close(); - this.holding.start(e, this); - //this.div.focus(); - if (!scil.Utils.isTouch && e.button != (scil.Utils.isIE8Lower ? 1 : 0)) - return; - this.start = null; - this.end = null; - this.movingClone = null; - this.resizing = null; - this.lassolast = null; - const cmd = this.getCmd(); - const tm = new Date().getTime(); - const tm0 = this._lastMousedownTm; - this._lastMousedownTm = tm; - if (tm - tm0 < JSDraw2.Editor.dblclickdelay && (cmd == "select" || cmd == "lasso" || cmd == "selfrag")) { - if (this.surface.extra != null) - this.surface.extra.lasso = null; - this.mousedblclick(e); - e.preventDefault(); - return; - } - const p = this.eventPoint(e); - if (cmd == "moveview") { - this.start = p; - this.viewoffset = null; - return; - } - if (scil.Utils.startswith(cmd, "spot-")) { - this.start = p; - return; - } - if (cmd == "inkred" || cmd == "inkblue" || cmd == "inkgreen") { - if (this.ink == null) { - this.surface.ink = this.createGroup(); - this.ink = new JSDraw2.Ink(this.surface.ink); - } - this.ink.start(cmd.substr(3), p); - return; - } - const obj = this.toggle(p); - if (cmd == "eraser") { - this.start = p; - this.erasercache = { count: 0, cloned: this.clone(), singleton: false }; - if (obj != null) { - if (JSDraw2.TLC.cast(obj) != null) { - obj.cornerTest(p, this.tor, false, "eraser"); - if (obj.curspot != null) - this.erasercache.singleton = true; - } - this.delObject(obj); - ++this.erasercache.count; - this.redraw(); - } - this.div.style.cursor = "pointer"; - return; - } - this.curObject = obj; - this.div.style.cursor = "crosshair"; - if (obj != null) { - if (cmd == "select" || cmd == "lasso" || cmd == "selfrag" || (cmd == "tlc" || cmd == "electrophoresis") && JSDraw2.TLC.cast(obj) != null) { - if (obj.selected && obj.resize != null && this.m.countSelected() == 1) - this.startResize(obj, p, e.ctrlKey || e.metaKey, cmd); - if (this.resizing == null && !obj.selected) { - let a = null; - const g = null; - let br; - if (cmd == "selfrag") { - a = JSDraw2.Atom.cast(obj); - const b = JSDraw2.Bond.cast(obj); - const g = JSDraw2.Group.cast(obj); - br = JSDraw2.Bracket.cast(obj); - if (b != null) - a = b.a1; - } - if (!e.shiftKey) - this.m.setSelected(false); - if (a != null) { - // selfrag to select a fragment - if (a != null) { - const m = a._parent.getFragment(a, a._parent); - for (let i = 0; i < m.atoms.length; ++i) - m.atoms[i].selected = true; - for (let i = 0; i < m.bonds.length; ++i) - m.bonds[i].selected = true; - } - if (this.options.onselectionchanged != null) - this.options.onselectionchanged(this); - this.redraw(); - } - else if (g != null) { - // selfrag to select group atoms - for (let i = 0; i < g._parent.atoms.length; ++i) { - if (g._parent.atoms[i].group == g) - g._parent.atoms[i].selected = true; - } - } - else if (br != null) { - // selfrag to select bracket atoms - for (let i = 0; i < br.atoms.length; ++i) { - if (br.atoms[i].group == g) - br.atoms[i].selected = true; - } - } - else { - obj.selected = true; - const b = JSDraw2.Bond.cast(obj); - if (b != null) - b.a1.selected = b.a2.selected = true; - else - this.startResize(obj, p, e.ctrlKey || e.metaKey, cmd == "tlc" || cmd == "electrophoresis"); - } - } - if (cmd != "tlc" && cmd != "electrophoresis" || this.resizing != null) { - this.start = p; - this.movingClone = this.clone(); - this.movingClone.startPt = p.clone(); - this.div.style.cursor = "moveview"; - } - if (cmd == "tlc" || cmd == "electrophoresis") - this.redraw(); - return; - } - } - const a1 = JSDraw2.Atom.cast(obj); - if (a1 != null) { - p.x = a1.p.x; - p.y = a1.p.y; - p.atom = a1; - } - this.lastmove = this.start = p; - if (this.start.tm == null) - this.start.tm = new Date().getTime(); - if (cmd == "lasso" && obj == null) { - if (!e.shiftKey && this.m.setSelected(false) > 0) - this.redraw(); - this.lassolast = p; - return; - } - if (cmd == "chain") { - this.chaintool = { a: a1, start: this.start, p2: null, end: null, points: [] }; - return; - } - if (cmd == "rotate" && a1 == null && !this.m.isEmpty()) { - const atoms = this.m.atoms; - let list = []; - for (let i = 0; i < atoms.length; ++i) { - if (atoms[i].selected) - list.push(atoms[i]); - } - if (list.length == 0) { - const center = this.getCenter(null); - if (center != null) - this.rotating = { atoms: null, center: center }; - } - else if (list.length == 1) { - const center = list[0].p.clone(); - if (list.length == 1) { - const frag = this.getFragment(list[0]); - if (frag != null) - list = frag.atoms; - } - this.rotating = { atoms: list.length == 1 ? null : list, center: center }; - } - else { - const links = this.getConnectingAtomBonds(list, false); - if (links.length == 1) - this.rotating = { atoms: list, center: links[0].a.p.clone() }; - else - this.rotating = { atoms: list, center: this.getCenter(list) }; - } - if (this.rotating != null) - this.rotating.cloned = this.clone(); - if (a1 != null) { - this.m.setSelected(); - a1.selected = true; - this.redraw(); - } - return; - } - if (cmd == "arrow") { - this.arrowtool = { from: obj }; - if (JSDraw2.Shape.cast(obj) != null) { - const conn = obj.bestConnectPoint(this.start, this.tor); - this.start = conn.p; - this.arrowtool.connector = conn.connector; - } - } - if (cmd != "rxnmap" && !(e.ctrlKey || e.metaKey)) { - if (!e.shiftKey && this.m.setSelected() > 0) - this.redraw(); - } - } - selectCurrent(obj, e) { - if (this.curObject == obj) - return false; - this.curObject = obj; - if (this.options.onselectcurrent != null) - this.options.onselectcurrent(e, obj, this); - if (this.options.showhelmpopup) - this.onHelmSelectCurrent(e, obj); - return true; - } - onHelmSelectCurrent(e, obj) { - const a = JSDraw2.Atom.cast(obj); - if (a == null || this.start != null || this.contextmenu != null && this.contextmenu.isVisible()) { - org.helm.webeditor.MolViewer.hide(); - return; - } - const type = a == null ? null : a.biotype(); - if (type == null) - return; - const set = org.helm.webeditor.Monomers.getMonomerSet(type); - const s = a == null ? null : a.elem; - const m = set == null ? null : set[s.toLowerCase()]; - org.helm.webeditor.MolViewer.show(e, type, m, s, this, a); - } - mousemove(e, viewonly) { - if (!this.activated) { - //this.mousedownPoint = null; - if (viewonly && this.start != null && !this.frozen) { - const p = this.eventPoint(e); - this.moveview(new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y)); - e.preventDefault(); - } - return; - } - this.holding.move(e); - const cmd = this.getCmd(); - const p = this.eventPoint(e); - if (cmd == "moveview") { - if (this.start != null && e.button == 0) { - this.moveview(new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y)); - e.preventDefault(); - } - return; - } - if (cmd == "inkblue" || cmd == "inkred" || cmd == "inkgreen") { - if (this.ink != null) - this.ink.add(p); - return; - } - this.lastmove = p; - let f = false; - let obj = null; - if (this.start == null || cmd != "select" && cmd != "lasso" && cmd != "selfrag") { - obj = this.toggle(p); - f = this.selectCurrent(obj, e); - } - if (this.start != null) { - if (cmd == "arrow") { - if (this.start != null) { - this.end = this.guessArrow(this.start, p); - f = true; - } - } - else if (cmd == "zoombox" || cmd == "curve") { - if (this.start != null) { - this.end = p; - f = true; - } - } - else if (cmd == "rotate") { - if (this.rotating != null) { - if (this.rotating.a1 == null) { - this.rotating.a0 = this.rotating.a1 = p.angleTo(this.rotating.center); - } - else { - const a2 = p.angleTo(this.rotating.center); - f = this.rotate(this.rotating.atoms, this.rotating.center, a2 - this.rotating.a1); - if (f) - f = "all"; - this.rotating.a1 = a2; - } - } - } - else if (cmd == "select" || cmd == "lasso" || cmd == "selfrag" || cmd == "tlc" || cmd == "electrophoresis") { - if (this.start != null) { - if (this.lassolast) { - this.end = p; - this.lassoSelect(this.lassolast); - this.lassolast = p; - } - else if (this.resizing != null) { - if (!this.resizing.start.equalsTo(p)) { - const delta = p.clone().offset(-this.resizing.start.x, -this.resizing.start.y); - this.resizing.obj.resize(this.resizing.corner, delta, this.resizing.texts); - if (e.shiftKey && JSDraw2.Shape.cast(this.resizing.obj) != null) - this.resizing.obj._rect.height = this.resizing.obj._rect.width; - this.resizing.start = p; - this.resizing.changed = true; - f = "all"; - } - } - else if (this.movingClone != null) { - if (this.end == null) { - this.end = this.start; - if (e.ctrlKey || e.metaKey) { - const m = this.m.clone(true); - m.showimplicithydrogens = this.options.showimplicithydrogens; - if (!m.isEmpty()) { - this.m.setSelected(); - m.setSelected(true); - m.calcHCount(true); - this.m.mergeMol(m); - } - } - } - if (!this.end.equalsTo(p)) { - this.m.offset(p.x - this.end.x, p.y - this.end.y, true); - this.end = p; - } - f = "all"; - } - else { - this.end = p; - f = true; - } - } - } - else if (cmd == "rectangle" || cmd == "ellipse" || cmd == "diamond" || cmd == "dshape" || cmd == "dreversed") { - if (e.shiftKey) - p.equalMove(this.start); - this.end = p; - f = true; - } - else if (cmd == "bracket" || cmd == "sgroup" || cmd == "assaycurve" || cmd == "spectrum" || cmd == "doublearrow" || cmd == "tlc" || cmd == "electrophoresis") { - this.end = p; - f = true; - } - else if (cmd == "chain") { - this.end = p; - f = this._makeChain(this.chaintool, p); - } - else if (cmd == "eraser") { - if (this.erasercache != null && !this.erasercache.singleton) { - obj = this.toggle(p); - if (obj != null) { - this.delObject(obj); - ++this.erasercache.count; - f = "all"; - } - } - } - else if (scil.Utils.startswith(cmd, "spot-")) { - } - else { - if (JSDraw2.Atom.cast(this.curObject) != null) - this.end = this.curObject.p.clone(); - else - this.end = this._guessBond(this.start, p); - f = true; - } - } - if (f != false && !(this.start != null && p.tm - this.start.tm < JSDraw2.Editor.undoGestureTime)) - this.redraw(f != "all"); - } - mouseup(e, viewonly) { - this.holding.end(); - let b; - if (!scil.Utils.isTouch && e.button == 2) { // right click - if (!viewonly) { - if (!this.activated) - this.activate(true); - } - if (this.touch.start1 == null) // Windows8 issue - this.showContextMenu(e, viewonly); - e.preventDefault(); - return; - } - if (!this.activated) { - if (this.mousedownPoint != null && this.mousedownPoint.x == e.clientX && this.mousedownPoint.y == e.clientY) - this.activate(true); - if (viewonly && e.button == 0) { - this.endMove(e, viewonly); - e.preventDefault(); - } - return; - } - const cmd = this.getCmd(); - if (cmd == "moveview") { - this.endMove(e, viewonly); - e.preventDefault(); - return; - } - if (cmd == "inkred" || cmd == "inkblue" || cmd == "inkgreen") { - if (this.ink != null) - this.ink.end(); - return; - } - if (this.start == null) - return; - this.div.style.cursor = "default"; - const p1 = this.start; - let p2 = this.lastmove == null ? p1.clone() : this.lastmove; - this.lastmove = null; - this.start = null; - // detect undo gesture - const dx = Math.abs(p1.x - p2.x); - if ((p2.tm - p1.tm < JSDraw2.Editor.undoGestureTime) && Math.abs(dx) > 2 * 10 && dx > 5 * Math.abs(p1.y - p2.y) && this.toggle(p1) == null && this.toggle(p2) == null) { - if (p1.x > p2.x) - this.undo(); - else - this.redo(); - this.refresh(false); - return; - } - let f = null; - if (cmd == "text") { - this.showTextEditor(this.curObject, new JSDraw2.Point(p2.x, p2.y)); - return; - } - if (cmd == "sgroup") { - if (p1.equalsTo(p2)) { - this.showTextEditor(this.curObject, new JSDraw2.Point(p2.x, p2.y)); - } - else { - const obj1 = p1.atom != null ? p1.atom : this.toggle(p1); - const obj2 = this.toggle(p2); - if (JSDraw2.Text.cast(obj1) != null) { - const cloned = this.clone(); - if (obj1.attach(obj2)) - this.pushundo(cloned); - } - this.refresh(true); - } - return; - } - if (cmd == "eraser") { - if (this.erasercache != null) { - if (this.erasercache.count > 0) { - this.pushundo(this.erasercache.cloned); - this.curObject = null; - if (this.helm != null) - this.helm.resetIDs(); - this.refresh(true); - } - this.erasercache = null; - } - return; - } - if (cmd == "plus") { - if (this.curObject == null) { - this.pushundo(); - this.m.addGraphics(new JSDraw2.Plus(p2)); - this.refresh(true); - } - return; - } - if (cmd == "rxnmap") { - this.doRxnMap(this.curObject); - return; - } - const d = p1.distTo(p2); - if (cmd == "arrow" || cmd == "curve") { - if (this.arrowtool != null && this.arrowtool.from != null) { - const from = JSDraw2.Shape.cast(this.arrowtool.from); - let to = JSDraw2.Shape.cast(this.curObject); - const connector = this.arrowtool.connector; - this.arrowtool = null; - if (from != null && from != to) { - if (connector == "rejector") { - if (from.reject != from) { - this.pushundo(); - if (from.reject == to) - from.reject = null; - else - from.reject = to; - this.refresh(true); - return; - } - } - else { - this.pushundo(); - if (to == null) { - const rect = from.rect(); - const dx = 0; - const dy = 0; - const pp2 = p2.clone(); - if (p2.x < p1.x) - pp2.x -= rect.width; - if (p2.y < p1.y) - pp2.y -= rect.height; - to = this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect(pp2.x, pp2.y, rect.width, rect.height), "rectangle")); - } - if (to != null) { - this.pushundo(); - if (this.isShapeConnected(from, to)) { - scil.Utils.delFromArray(to.froms, from); - } - else { - if (this.isShapeConnected(to, from)) - scil.Utils.delFromArray(from.froms, to); - if (Math.abs(p1.y - p2.y) < this.tor) { - if (this.isIsolatedShape(to)) { - const dy = from._rect.center().y - to._rect.center().y; - to._rect.offset(0, dy); - } - else if (this.isIsolatedShape(from)) { - const dy = to._rect.center().y - from._rect.center().y; - from._rect.offset(0, dy); - } - } - else if (Math.abs(p1.x - p2.x) < this.tor) { - if (this.isIsolatedShape(to)) { - const dx = from._rect.center().x - to._rect.center().x; - to._rect.offset(dx, 0); - } - else if (this.isIsolatedShape(from)) { - const dx = to._rect.center().x - from._rect.center().x; - from._rect.offset(dx, 0); - } - } - to.froms.push(from); - } - this.refresh(true); - return; - } - } - this.refresh(); - return; - } - } - this.pushundo(); - if (d >= this.bondlength) - p2 = this.guessArrow(p1, p2); - else - p2 = p1.clone().offset(3 * this.bondlength, 0); - if (cmd == "arrow") - this.m.addGraphics(new JSDraw2.Arrow(p1, p2)); - else - this.m.addGraphics(new JSDraw2.Curve(p1, p2)); - this.refresh(true); - return; - } - if (cmd == "rectangle" || cmd == "ellipse" || cmd == "doublearrow" || cmd == "diamond" || cmd == "dshape" || cmd == "dreversed") { - if (d < this.bondlength / 8) - p2 = new JSDraw2.Point(p1.x + this.bondlength, p1.y + this.bondlength); - else if (d < this.bondlength / 2) - return; - this.pushundo(); - if (cmd == "rectangle") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "rectangle")); - else if (cmd == "ellipse") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "ellipse")); - else if (cmd == "diamond") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "diamond")); - else if (cmd == "dshape") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "dshape")); - else if (cmd == "dreversed") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "dreversed")); - else if (cmd == "doublearrow") - this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), "doublearrow")); - this.refresh(true); - return; - } - if (cmd == "assaycurve") { - if (d < this.bondlength / 8 && this.m.isEmpty()) - p2 = new JSDraw2.Point(p1.x + this.bondlength * 8, p1.y + this.bondlength * 6); - else if (Math.abs(p1.x - p2.x) < this.bondlength * 2 || Math.abs(p1.y - p2.y) < this.bondlength * 2) - return; - this.pushundo(); - this.m.addGraphics(new JSDraw2.AssayCurve(new JSDraw2.Rect().set(p1, p2))); - this.refresh(true); - return; - } - if (cmd == "spectrum") { - if (d < this.bondlength / 8 && this.m.isEmpty()) - p2 = new JSDraw2.Point(p1.x + this.bondlength * 14, p1.y + this.bondlength * 6); - else if (Math.abs(p1.x - p2.x) < this.bondlength * 2 || Math.abs(p1.y - p2.y) < this.bondlength * 2) - return; - this.pushundo(); - this.m.addGraphics(new JSDraw2.Spectrum(new JSDraw2.Rect().set(p1, p2))); - this.refresh(true); - return; - } - if (cmd == "tlc" || cmd == "electrophoresis") { - let modified = false; - if (this.movingClone == null) { - if (d < this.bondlength / 2) - return; - this.pushundo(); - const tlc = new JSDraw2.TLC.create(cmd, p1, p2, this.fontsize / 2); - if (tlc.rect().height > 2 * this.bondlength && tlc.spots.length > 0) { - this.addTlcPlate(tlc); - modified = true; - } - this.refresh(modified); - return; - } - } - if (scil.Utils.startswith(cmd, "spot-")) { - const tlc = JSDraw2.TLC.cast(this.curObject); - const clone = this.clone(); - if (tlc != null && tlc.addSpot(cmd.substr(5), p2, this.tor)) { - this.pushundo(clone); - this.refresh(true); - } - return; - } - if (cmd == "rotate" && this.rotating != null) { - if (this.rotating.a1 != this.rotating.a0) { - this.pushundo(this.rotating.cloned); - this.refresh(true); - } - this.rotating = null; - return; - } - if (cmd == "select" || cmd == "lasso" || cmd == "selfrag" || cmd == "rotate" || cmd == "tlc" || cmd == "electrophoresis") { - if (this.lassolast != null) { - this.lassolast = null; - } - else if (this.resizing != null) { - if (this.resizing.changed) { - this._bracketReselectAtoms(); - this.pushundo(this.movingClone); - this.movingClone = null; - this.resizing = null; - f = true; - } - } - else if (this.movingClone != null) { - if (!this.movingClone.startPt.equalsTo(p2)) { - this._bracketReselectAtoms(); - this.pushundo(this.movingClone); - this.mergeOverlaps(); - this.movingClone = null; - f = true; - } - } - else { - if (d < this.bondlength) { - if (this.curObject != null) - this.curObject.selected = true; - } - else { - this.selectInRect(new JSDraw2.Rect().set(p1, p2)); - } - } - this.refresh(f); - if (this.options.onselectionchanged != null) - this.options.onselectionchanged(this); - return; - } - if (cmd == "zoombox") { - const rect = new JSDraw2.Rect().set(p1, p2); - if (rect.width > 10 && rect.height > 10) { - const s = Math.min(this.dimension.x / rect.width, this.dimension.y / rect.height); - const c = rect.center(); - this.pushundo(); - this.scale(s * 0.9, c); - this.m.offset(this.dimension.x / 2 - c.x, this.dimension.y / 2 - c.y); - } - else if (rect.width < 5 && rect.height < 5) { - this.fitToWindow(); - } - this.redraw(); - return; - } - if (cmd == "chain") { - if (this.chaintool != null && this.chaintool.points.length > 0) { - f = false; - const cloned = this.clone(); - const pts = this.chaintool.points; - let m = null; - for (let i = 1; i < pts.length; ++i) { - let a1 = this.toggleAtom(pts[i - 1]); - let a2 = this.toggleAtom(pts[i]); - if (m == null) { - if (a1 != null) - m = a1._parent; - else if (a2 != null) - m = a2._parent; - else - m = this.m; - } - if (a1 != null && a1._parent != m) - a1 = null; - if (a2 != null && a2._parent != m) - a2 = null; - if (a1 == null) { - a1 = new JSDraw2.Atom(pts[i - 1]); - m.addAtom(a1); - this._addNewAtomInExistingGroup(a2, [a1]); - f = true; - } - if (a2 == null) { - a2 = new JSDraw2.Atom(pts[i]); - m.addAtom(a2); - this._addNewAtomInExistingGroup(a1, [a2]); - f = true; - } - if (m.findBond(a1, a2) == null) { - m.addBond(new JSDraw2.Bond(a1, a2), null, true); - f = true; - } - } - this.chaintool = null; - if (f) - this.pushundo(cloned); - this.refresh(f); - return; - } - } - if (cmd == "bracket") { - let br; - this.m.setSelected(false); - const r = new JSDraw2.Rect().set(p1, p2); - const list = this.m.bracketSelect(r); - if (list.length > 0) { - this.pushundo(); - br = new JSDraw2.Bracket(null, r); - br.atoms = list; - list[0]._parent.addGraphics(br); - f = true; - } - this.refresh(f); - if (br != null) { - const t = br.createSubscript(this.m, "#"); - if (t != null) - this.showTextEditor(t, null, ""); - } - else { - const t = JSDraw2.Text.cast(this.curObject); - if (t != null && t.fieldtype == "BRACKET_TYPE" && t.anchors.length == 1 && JSDraw2.Bracket.cast(t.anchors[0]) != null) - this.showTextEditor(t, null, t.text); - } - return; - } - // atom properties - if (cmd == "●") { - let a; - if ((a = JSDraw2.Atom.cast(this.curObject)) != null) - this.showAtomDlg(a); - else if ((a = JSDraw2.Bond.cast(this.curObject)) != null) - this.showBondDlg(a); - return; - } - if (cmd == "undo" || cmd == "redo" || cmd == "zoomin" || cmd == "zoomout") - return; - const cloned = this.clone(); - if (d <= this.tor) { - // no mouse drag, this is just a click event - if (scil.Utils.startswith(cmd, "template.")) { - this.pushundo(cloned); - this.addTemplate(cmd.substr(9), this.curObject, p2); - this.refresh(true); - return; - } - let a; - if ((a = JSDraw2.Atom.cast(this.curObject)) != null) { - const e = JSDraw2.PT[cmd]; - if (cmd == "antibody" || cmd == "protein" || cmd == "gene") - f = this.m.setAtomType(a, cmd); - else if (e != null) - f = this.m.setAtomType(a, cmd); - else if (cmd == "..." || cmd == "more") - f = this.m.setAtomType(a, this.ptElement); - else if (cmd == "chargep" || cmd == "chargen") - f = this.increaseNum(a, cmd == "chargep" ? +1 : -1); - else if (this.helm != null && this.helm != null && this.helm.isHelmCmd(cmd)) { - if (scil.helm.isHelmNode(a)) - this.helm.changeMonomer(a, cloned); - } - else { - if (this.helm != null && scil.helm.isHelmNode(a)) - this.helm.changeMonomer(a, cloned); - else - f = this._addAutoBond(a, cmd); - } - } - if ((b = JSDraw2.Bond.cast(this.curObject)) != null) { - switch (cmd) { - case "double": - f = this.m.setBondType(b, 2 /* JSDraw2.BONDTYPES.DOUBLE */); - break; - case "triple": - f = this.m.setBondType(b, 3 /* JSDraw2.BONDTYPES.TRIPLE */); - break; - case "unknown": - f = this.m.setBondType(b, 0 /* JSDraw2.BONDTYPES.UNKNOWN */); - break; - case "dummy": - f = this.m.setBondType(b, 13 /* JSDraw2.BONDTYPES.DUMMY */); - break; - case "either": - f = this.m.setBondType(b, 8 /* JSDraw2.BONDTYPES.EITHER */); - break; - case "wiggly": - f = this.m.setBondType(b, 7 /* JSDraw2.BONDTYPES.WIGGLY */); - break; - case "bold": - f = this.m.setBondType(b, 14 /* JSDraw2.BONDTYPES.BOLD */); - break; - case "boldhash": - f = this.m.setBondType(b, 15 /* JSDraw2.BONDTYPES.BOLDHASH */); - break; - case "delocalized": - f = this.m.setBondType(b, 4 /* JSDraw2.BONDTYPES.DELOCALIZED */); - break; - case "singledouble": - f = this.m.setBondType(b, 9 /* JSDraw2.BONDTYPES.SINGLEORDOUBLE */); - break; - case "singlearomatic": - f = this.m.setBondType(b, 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */); - break; - case "doublearomatic": - f = this.m.setBondType(b, 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */); - break; - case "up": - if (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */) { - b.reverse(); - f = true; - } - else { - f = this.m.setBondType(b, 5 /* JSDraw2.BONDTYPES.WEDGE */); - this.fixWedgeDir(b); - } - break; - case "down": - if (b.type == 6 /* JSDraw2.BONDTYPES.HASH */) { - b.reverse(); - f = true; - } - else { - f = this.m.setBondType(b, 6 /* JSDraw2.BONDTYPES.HASH */); - this.fixWedgeDir(b); - } - break; - default: - f = this.m.setBondType(b, b.type == 1 /* JSDraw2.BONDTYPES.SINGLE */ ? 2 /* JSDraw2.BONDTYPES.DOUBLE */ : 1 /* JSDraw2.BONDTYPES.SINGLE */); - break; - } - } - if (!f && this.curObject == null) { - if (this.options.helmtoolbar && !this.helm.isHelmCmd(cmd)) - return; - const bondtype = this.Cmd2BondType(cmd); - if (bondtype != null) { - const a1 = this.m.addAtom(new JSDraw2.Atom(p2)); - const p = p2.clone().offset(this.bondlength, 0).rotateAround(p2, -30); - let a2 = JSDraw2.Atom.cast(this.toggle(p)); - if (a2 == null) - a2 = this.m.addAtom(new JSDraw2.Atom(p)); - this.m.addBond(new JSDraw2.Bond(a1, a2)); - f = true; - } - } - // draw isolated atom - if (!f && this.curObject == null) { - const s = cmd == "more" || cmd == "..." ? this.ptElement : cmd; - const e = JSDraw2.PT[s]; - if (e != null && e.a > 0 || cmd == "antibody" || cmd == "protein" || cmd == "gene" || this.helm != null && this.helm.isHelmCmd(cmd)) { - const a = this.m.addAtom(new JSDraw2.Atom(p2)); - if (cmd == "antibody") { - a.bio = { type: JSDraw2.BIO.ANTIBODY }; - a.elem = "X"; - } - else if (cmd == "protein") { - a.bio = { type: JSDraw2.BIO.PROTEIN }; - a.elem = "X"; - } - else if (cmd == "gene") { - a.bio = { type: JSDraw2.BIO.GENE }; - a.elem = "X"; - } - else if (this.helm != null && this.helm.createIsolatedMonomer(cmd, a)) { - ; - } - else { - this.m.setAtomType(a, s); - } - f = true; - } - } - if (f) { - this.pushundo(cloned); - this.refresh(f); - } - return; - } - let a1 = JSDraw2.Atom.cast(p1.atom != null ? p1.atom : this.toggle(p1)); - let a2 = JSDraw2.Atom.cast(this.toggle(p2)); - if (a1 != null && a2 != null) { - if (a1._parent != a2._parent) { - scil.Utils.alert("Cannot create bond between the two atoms"); - return; - } - } - if (this.options.helmtoolbar) { - if (this.helm.connnectGroup(p1, this.curObject)) { - this.pushundo(cloned); - this.redraw(); - return; - } - if ((a1 == null || a2 == null) && this.helm != null && !this.helm.isHelmCmd(cmd)) { - if (cmd == "single") { - if (this.helm.connnectGroup(p1, this.curObject)) - this.pushundo(cloned); - } - this.redraw(); - return; - } - if (this.helm != null && this.helm.isHelmCmd(cmd)) { - if (a1 != null && a2 == null) { - this.helm.extendChain(a1, cmd, p1, p2, cloned); - return; - } - else if (a1 == null && a2 == null) { - this.redraw(); - return; - } - } - } - const m = a1 != null ? a1._parent : (a2 != null ? a2._parent : this.m); - this.pushundo(cloned); - const c1 = this._countAABonds(a1); - const ao1 = a1; - if (a1 == null) { - if (c1 != null) { - // add H or OH on peptide terminal Amino Acid - if (c1.peptideN == 0 && c1.others == 0) - a1 = m.addAtom(new JSDraw2.Atom(p1, "H")); - else if (c1.peptideC == 0 && c1.others == 0) - a1 = m.addAtom(new JSDraw2.Atom(p1, "O")); - } - else { - a1 = m.addAtom(new JSDraw2.Atom(p1)); - } - } - const c2 = this._countAABonds(a2); - const ao2 = a2; - if (a2 == null) { - p2 = this._guessBond(p1, p2); - if (c1 != null) { - // add H or OH on peptide terminal Amino Acid - if (c1.peptideN == 0 && c1.others == 0) - a2 = m.addAtom(new JSDraw2.Atom(p2, "H")); - else if (c1.peptideC == 0 && c1.others == 0) - a2 = m.addAtom(new JSDraw2.Atom(p2, "O")); - } - else { - a2 = m.addAtom(new JSDraw2.Atom(p2)); - } - } - if (a1 != null && a2 != null) { - this._addNewAtomInExistingGroup(ao1, [a2]); - this._addNewAtomInExistingGroup(ao2, [a1]); - let b = this.m.findBond(a1, a2); - if (b == null) { - let bondtype; - if (ao1 != null && ao2 != null && ao1._parent != ao2._parent) { - scil.Utils.alert("Cannot create bond between the two atoms"); - } - else if (this.helm != null && (scil.helm.isHelmNode(a1) || scil.helm.isHelmNode(a2))) { - this.helm.connectFragment(a1, a2, !scil.helm.isHelmNode(a1) || !scil.helm.isHelmNode(a2)); - } - else { - bondtype = this.Cmd2BondType(cmd); - if (bondtype == null) - bondtype == 1 /* JSDraw2.BONDTYPES.SINGLE */; - if (c1 != null && c2 != null) { - // connect two amino acids - if (c1.peptideN == 0 && c2.peptideC == 0) - b = new JSDraw2.Bond(a1, a2, 21 /* JSDraw2.BONDTYPES.PEPTIDE */); // peptide bond - else if (c2.peptideN == 0 && c1.peptideC == 0) - b = new JSDraw2.Bond(a2, a1, 21 /* JSDraw2.BONDTYPES.PEPTIDE */); // reversed peptide bond - else if (ao1.elem == "C" && ao2.elem == "C" && c1.disulfide == 0 && c2.disulfide == 0) - b = new JSDraw2.Bond(a1, a2, 23 /* JSDraw2.BONDTYPES.DISULFIDE */); - else if (ao1.elem == "K" && c1.amide == 0 && c2.peptideC == 0) - b = new JSDraw2.Bond(a1, a2, 24 /* JSDraw2.BONDTYPES.AMIDE */); // amide bond to K - else if (ao2.elem == "K" && c2.amide == 0 && c1.peptideC == 0) - b = new JSDraw2.Bond(a2, a1, 24 /* JSDraw2.BONDTYPES.AMIDE */); // reversed amide bond to K - } - else if (c1 != null) { - // connect one amino acid to structure - if (c1.peptideN + c1.peptideC + c1.others < 2) - b = new JSDraw2.Bond(a1, a2, a2.elem == "H" ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 1 /* JSDraw2.BONDTYPES.SINGLE */); - else if (ao1.elem == "C" && c1.disulfide == 0) - b = new JSDraw2.Bond(a1, a2, 23 /* JSDraw2.BONDTYPES.DISULFIDE */); // using sulfide bond to C - else if (ao1.elem == "K" && c1.amide == 0) - b = new JSDraw2.Bond(a1, a2, 24 /* JSDraw2.BONDTYPES.AMIDE */); // using amide bond to K - } - else if (c2 != null) { - // connect one amino acid to structure - if (c2.peptideN + c2.peptideC + c2.others < 2) - b = new JSDraw2.Bond(a2, a1, a1.elem == "H" ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 1 /* JSDraw2.BONDTYPES.SINGLE */); - else if (ao2.elem == "C" && c2.disulfide == 0) - b = new JSDraw2.Bond(a2, a1, 23 /* JSDraw2.BONDTYPES.DISULFIDE */); // using sulfide bond to C - else if (ao2.elem == "K" && c2.amide == 0) - b = new JSDraw2.Bond(a2, a1, 24 /* JSDraw2.BONDTYPES.AMIDE */); // using amide bond to K - } - else { - b = new JSDraw2.Bond(a1, a2, bondtype); - } - } - if (b != null) - m.addBond(b, bondtype != 13 /* JSDraw2.BONDTYPES.DUMMY */, true); - } - } - this.start = null; - this.refresh(b != null); - } - _bracketReselectAtoms() { - const br = JSDraw2.Bracket.cast(this.curObject); - if (br == null) - return; - const list = this.m.bracketSelect(br.rect()); - if (list != null && list.length > 0) - br.atoms = list; - } - _addNewAtomInExistingGroup(olda, atoms) { - if (olda == null) - return; - for (let k = 0; k < atoms.length; ++k) { - const a = atoms[k]; - if (a == null) - continue; - // attach to existing groups - if (olda.group != null && a.group == null) - a.group = olda.group; - // attach to existing brackets - for (let i = 0; i < this.m.graphics.length; ++i) { - const br = JSDraw2.Bracket.cast(this.m.graphics[i]); - if (br == null || br.atoms == null) - continue; - if (scil.Utils.indexOf(br.atoms, olda) >= 0 && scil.Utils.indexOf(br.atoms, a) < 0) - br.atoms.push(a); - } - } - } - mousedblclick(e) { - if (this.options.viewonly) - return; - const p = this.eventPoint(e); - const obj = this.toggle(p); - if (obj == null) - return; - let a = JSDraw2.Atom.cast(obj); - if (a == null) { - const b = JSDraw2.Bond.cast(obj); - if (b != null) - a = b.a1; - } - if (a == null) - return; - this.m.setSelected(false); - const m = a._parent.getFragment(a, a._parent); - for (let i = 0; i < m.atoms.length; ++i) - m.atoms[i].selected = true; - for (let i = 0; i < m.bonds.length; ++i) - m.bonds[i].selected = true; - this.refresh(false); - } - endMove(e, viewonly) { - if (this.start == null) - return; - const p = this.eventPoint(e); - const d = new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y); - this.start = null; - this.moveview(null); - if (d.x != 0 || d.y != 0) { - if (!viewonly) - this.pushundo(); - this.m.offset(d.x, d.y); - if (viewonly) - this.redraw(); - else - this.refresh(true); - } - } - isIsolatedShape(n) { - if (n.froms.length > 0) - return false; - for (let i = 0; i < this.m.graphics.length; ++i) { - const s = JSDraw2.Shape.cast(this.m.graphics[i]); - if (s != null && scil.Utils.indexOf(s.froms, n) >= 0) - return false; - } - return true; - } - isShapeConnected(from, to) { - if (from == null || to == null) - return false; - for (let i = 0; i < to.froms.length; ++i) { - if (to.froms[i] == from) - return true; - } - return false; - } - _countAABonds(a) { - if (a == null || a.biotype() != JSDraw2.BIO.AA) - return null; - const ret = { peptideN: 0, peptideC: 0, disulfide: 0, amide: 0, others: 0 }; - const list1 = this.m.getAllBonds(a); - for (let i = 0; i < list1.length; ++i) { - if (list1[i].type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */) { - if (list1[i].a1 == a) - ++ret.peptideN; - else - ++ret.peptideC; - } - else if (list1[i].type == 23 /* JSDraw2.BONDTYPES.DISULFIDE */) { - ++ret.disulfide; - } - else if (list1[i].type == 24 /* JSDraw2.BONDTYPES.AMIDE */) { - ++ret.amide; - } - else if (list1[i].type == 1 /* JSDraw2.BONDTYPES.SINGLE */) { - const oa = list1[i].otherAtom(a); - if (oa.bio == null) - ++ret.others; - } - } - return ret; - } - addTlcPlate(tlc) { - if (tlc == null || !(tlc.spots.length > 0)) - return; - let tlcsetting = null; - if (JSDraw2.defaultoptions != null && JSDraw2.defaultoptions.tlc != null && tlc.type != "electrophoresis") { - tlcsetting = JSDraw2.defaultoptions.tlc; - const scale = tlc.spotsize / (JSDraw2.Editor.FONTSIZE / 2); - if (tlcsetting.width > 0) - tlc._rect.width = tlcsetting.width * scale; - if (tlcsetting.height > 0) - tlc._rect.height = tlcsetting.height * scale; - const list = this.getAllTlcPlates(true); - if (list != null && list.length > 0) { - const prev = list[list.length - 1]; - const gap = tlcsetting.gap > 0 ? tlcsetting.gap : tlcsetting.width / 5; - tlc._rect.left = prev._rect.right() + gap; - tlc._rect.top = prev._rect.top; - } - } - this.m.addGraphics(tlc); - if (tlcsetting != null && tlcsetting.autonumbering) - this.numberTlcPlates(); - if (this.options.onAddTLC != null) - this.options.onAddTLC(tlc); - this.moveCenter(); - } - hideChirarlities(selectonly) { - const texts = []; - for (let i = 0; i < this.m.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.m.graphics[i]); - if (t != null && t.anchors != null && t.anchors.length == 1 && t.fieldtype == "CHIRAL") { - const a = JSDraw2.Atom.cast(t.anchors[0]); - if (!selectonly || a.selected) - texts.push(t); - } - } - if (texts.length > 0) { - for (let i = 0; i < texts.length; ++i) - this.m.delGraphics(texts[i]); - this.pushundo(); - this.refresh(true); - } - } - detectChiralities(selectonly) { - const me = this; - JSDraw2.JSDrawIO.callWebservice("mol.getchiralatoms", { mol: this.getXml(), format: "xml" }, function (ret) { - let n = 0; - const cloned = me.clone(); - for (const k in ret) { - const id = parseInt(k); - const a = me.m.getObjectById(id); - if ((!selectonly || a.selected) && me.m.markChirality(a, ret[k], me.bondlength)) - ++n; - } - if (n > 0) { - me.pushundo(cloned); - me.refresh(true); - } - }); - } - increaseNum(a, delta) { - if (delta != 1 && delta != -1) - return false; - let f = false; - if (a.elem == "R") { - const r = scil.Utils.parseIndex(a.alias); - if (r == null || r.index == null) { - f = a._parent.setAtomAlias(a, (r == null || r.prefix == null ? "R" : r.prefix) + "1"); - } - else { - if (delta > 0) { - f = a._parent.setAtomAlias(a, r.prefix + (r.index + 1)); - } - else { - if (r.index > 1) - f = a._parent.setAtomAlias(a, r.prefix + (r.index - 1)); - } - } - } - else { - f = a._parent.setAtomCharge(a, a.charge + delta); - } - return f; - } - mergeOverlaps() { - const overlaps = []; - for (let i = 0; i < this.m.atoms.length; ++i) { - if (this.m.atoms[i].selected) { - const a1 = this.m.atoms[i]; - for (let k = 0; k < this.m.atoms.length; ++k) { - const a2 = this.m.atoms[k]; - if (!a2.selected && a2.toggle(a1.p, this.tor)) { - overlaps.push({ a1: a1, a2: a2 }); - break; - } - } - } - } - const bonds = []; - for (let k = 0; k < overlaps.length; ++k) { - const a1 = overlaps[k].a1; - const a2 = overlaps[k].a2; - let b = this.m.findBond(a1, a2); - if (b != null) { - bonds.push(b); - continue; - } - for (let i = 0; i < this.m.bonds.length; ++i) { - b = this.m.bonds[i]; - if (b.a1 == a1) { - if (b.a2 != a2) { - const t = this.m.findBond(b.a2, a2); - b.a1 = a2; - if (t != null) - bonds.push(b); - } - } - else if (b.a2 == a1) { - if (b.a1 != a2) { - const t = this.m.findBond(b.a1, a2); - b.a2 = a2; - if (t != null) - bonds.push(b); - } - } - } - } - for (let i = 0; i < bonds.length; ++i) - this.m.delBond(bonds[i], false); - for (let i = 0; i < overlaps.length; ++i) - this.m.delAtom(overlaps[i].a1, false); - return bonds.length + overlaps.length; - } - onDel() { - if (this.texteditor.ed != null && this.texteditor.ed.input.style.display != "none") - return false; - const cloned = this.clone(); - if (this.delObject(this.curObject) || this.delSelected() > 0) { - this.pushundo(cloned); - if (this.helm != null) - this.helm.resetIDs(); - this.curObject = null; - this.refresh(true); - return true; - } - return false; - } - showContextMenu(e, viewonly) { - if (this.options.showcontextmenu == false) - return; - const items = org.helm.webeditor.Interface.onContextMenu(this, e, viewonly); - if (items == null) - return; - const me = this; - if (this.contextmenu == null) - this.contextmenu = new JSDraw2.ContextMenu(items, function (cmd, obj) { me.menuCallback(cmd, obj); }); - const scrolloffset = scil.Utils.scrollOffset(); - this.contextmenu.show(e.clientX + scrolloffset.x, e.clientY + scrolloffset.y, this.curObject, items); - this.contextmenu.pos = this.eventPoint(e); - } - menuSetStereochemistry(cmd) { - if (cmd == "abs") - cmd = null; - this.pushundo(); - if (this.m.chiral == cmd) - this.m.chiral = null; - else - this.m.chiral = cmd; - this.refresh(true); - } - menuCallback(cmd, obj) { - let modified = false; - const cloned = this.clone(); - switch (cmd) { - // case "Chiral": - // this.pushundo(); - // this.m.chiral = !this.m.chiral; - // this.refresh(true); - // break; - case "curveline": - obj.setAssayCurveLine(this); - break; - case "curveonly": - obj.setAssayCurveOnly(this); - break; - case "overlaycurves": - this.overlayCurves2(obj); - break; - case "setrawassaydata": - obj.setAssayCurveRawData(this); - break; - case "spectrum_setdata": - obj.setSpectrumData(this); - break; - case "spectrum_setdatafromfile": - obj.setSpectrumDataFromFile(this); - break; - case "spectrum_attributes": - obj.viewAttributes(this); - break; - case "maskassaysamplepoint": - modified = obj.maskSamplePoint(obj.curspot); - break; - case "pastechemdraw": - JSDraw2.ChemDraw.paste(this); - break; - case "pastechemdrawasproduct": - JSDraw2.ChemDraw.paste(this, "product"); - break; - case "pastechemdrawasreactant": - JSDraw2.ChemDraw.paste(this, "reactant"); - break; - case "copychemdraw": - JSDraw2.ChemDraw.copy(this); - break; - case "copymolfile": - this.copyAs("molfile"); - break; - case "copymolfile2000": - this.copyAs("molfile2000"); - break; - case "copymolfile3000": - this.copyAs("molfile3000"); - break; - case "copysmiles": - this.copyAs("smiles"); - break; - case "pastemolfile": - this.pasteAs("molfile"); - break; - case "about": - JSDraw2.Editor.showAbout(); - break; - case "abouthelm": - scil.helm.about(); - break; - case "removeatomvalues": - this.removeAtomValues(); - break; - case "viewlarge": - this.viewLarge(); - break; - case "movecenter": - this.moveCenter(); - this.redraw(); - break; - case "atom_prop": { - let a; - if ((a = JSDraw2.Atom.cast(obj)) != null) - this.showAtomDlg(a); - break; - } - case "atom_tag": - let s = obj.bio == null ? "Atom " + obj.elem : obj.bio.type; - if (obj.bio != null && obj.bio.subtype != null) - s += " " + obj.bio.subtype; - this.addTag(obj, obj.p, s, true); - break; - case "helm_set_sense": - if (obj.bio.annotation != "5'ss") { - obj.bio.annotation = "5'ss"; - modified = true; - } - break; - case "helm_set_antisense": - if (obj.bio.annotation != "5'as") { - obj.bio.annotation = "5'as"; - modified = true; - } - break; - case "helm_set_clear": - if (obj.bio.annotation != "5'") { - obj.bio.annotation = "5'"; - modified = true; - } - break; - case "helm_complementary_strand": - if (scil.Utils.startswith(obj.bio.annotation, "5'")) - modified = this.helm.makeComplementaryStrand(obj) != null; - break; - case "helm_create_group": - modified = this.helm.createGroup(obj, null, true) != null; - break; - case "helm_group_collapse": - modified = this.helm.collapseGroup(obj, true) != null; - break; - case "helm_bond_prop": - this.helm.setBondProp(obj); - break; - case "helm_atom_prop": - this.helm.setAtomProp(obj); - break; - case "group_setproperties": - this.setGroupProperties(obj); - break; - case "detectstereochemistry": - this.detectChiralities(true); - break; - case "hidestereochemistry": - this.hideChirarlities(true); - break; - case "detectstereochemistry2": - this.detectChiralities(); - break; - case "hidestereochemistry2": - this.hideChirarlities(); - break; - case "bond_prop": { - const b = JSDraw2.Bond.cast(obj); - if (b != null) - this.showBondDlg(b); - break; - } - case "bond_tag": - this.addTag(obj, obj.center(), "[None]", true); - break; - case "bond_locant": - this.addTag(obj, obj.center(), "U = Unknown Locant"); - break; - case "bio_showsequence": - this.showSequences(obj); - break; - case "rgroup_define": - this.rgroupDefine(obj); - break; - case "rgroup_remove": { - const a = JSDraw2.Atom.cast(obj); - if (a != null && a.rgroup != null) { - a.rgroup = null; - modified = true; - } - break; - } - case "rgroup_addstructure": - this.addRgroupStructure(obj); - modified = true; - break; - case "setbracketsubscription": - this.setBracketSubscription(obj); - break; - case "setbracketratio": - this.setBracketRatio(obj); - break; - case "setbracketmw": - this.setBracketData(obj, "POLYMER_MW", "MW=", 1); - break; - case "registrationparent": - this.setBracketData(obj, "REG_PARENT", "Parent=", 2); - break; - case "graphics_bring2front": - modified = this.m.setZOrder(obj, -1); - break; - case "graphics_set2back": - modified = this.m.setZOrder(obj, 0); - break; - case "tlc_addlane": - modified = JSDraw2.TLC.cast(obj) != null && obj.addLane(); - break; - case "tlc_duplicatespot": - modified = JSDraw2.TLC.cast(obj) != null && obj.duplicateSpot(obj.curspot); - break; - case "tlc_duplicatelane": - modified = JSDraw2.TLC.cast(obj) != null && obj.duplicateLane(obj.curspot); - break; - case "tlc_showlanelabel": - modified = JSDraw2.TLC.cast(obj) != null && obj.showLaneLabel(!obj.showlanelabel); - break; - case "tlc_removespot": - modified = JSDraw2.TLC.cast(obj) != null && obj.removeSpot(obj.curspot); - break; - case "tlc_setrfvalue": - modified = JSDraw2.TLC.cast(obj) != null && obj.setRfValue(obj.curspot, this); - break; - case "tlc_setlanelabels": - JSDraw2.TLC.setLaneLabels(this, obj); - break; - case "Copy": - this.copy(); - break; - case "Select All": - if (this.selectAll()) - this.refresh(false); - break; - case "copy-viewonly": - this.copy(cloned == null ? null : cloned.mol); - break; - case "Cut": - if (this.cut()) - this.refresh(false); - break; - case "edit-popup": - if (this.options.popup) - this.dblclick(); - break; - case "Expand": - this.expandSuperatom(); - break; - case "Paste": - if (this.paste(this.contextmenu.pos)) - this.refresh(false); - break; - case "Delete": - modified = this.delSelected() > 0; - break; - case "multi-center": - modified = this.createMulticenter() != null; - break; - case "Clear": - this.clear(false, true); - modified = true; - break; - case "Undo": - if (this.undo()) - this.refresh(false); - break; - case "Redo": - if (this.redo()) - this.refresh(false); - break; - case "workflow_properties": - JSDraw2.Shape.showProperties(this, JSDraw2.Shape.cast(obj)); - break; - } - if (modified) { - this.pushundo(cloned); - this.refresh(modified); - } - } - overlayCurves2(curve) { - curve = JSDraw2.AssayCurve.cast(curve); - if (curve == null) - return; - const list = []; - for (let i = 0; i < this.m.graphics.length; ++i) { - const c = JSDraw2.AssayCurve.cast(this.m.graphics[i]); - if (c != null && c.selected) - list.push(c); - } - this.overlayCurves(list, curve); - } - overlayCurves(list, curve) { - if (scil.Utils.indexOf(list, curve) < 0) - return; - this.pushundo(); - for (let i = 0; i < list.length; ++i) { - list[i].curveline = false; - if (list[i] == curve) { - list[i].curveonly = false; - } - else { - list[i]._rect = curve._rect.clone(); - list[i].curveonly = true; - } - } - this.refresh(true); - } - setGroupProperties(obj) { - const g = JSDraw2.Group.cast(obj); - if (g == null) - return; - const me = this; - if (this.groupPropDlg == null) { - const me = this; - const fields = { ratio: { label: "Ratio", type: "number", accepts: "(and)|(or)|[*|?]", width: 100 }, tag: { label: "Annotation", width: 300 } }; - this.groupPropDlg = scil.Form.createDlgForm("Group Properties", fields, { label: "Save", onclick: function () { me.setGroupProperties2(); } }); - } - this.groupPropDlg.show(); - this.groupPropDlg.form.setData({ ratio: g.ratio, tag: g.tag }); - this.groupPropDlg.g = g; - } - setGroupProperties2() { - const data = this.groupPropDlg.form.getData(); - const g = this.groupPropDlg.g; - if (data.ratio != "" && this.hasGroupBond(g)) - data.ratio = ""; - if ((g.ratio == null ? "" : g.ratio + "") != data.ratio || g.tag != data.tag) { - this.pushundo(); - g.ratio = data.ratio; - g.tag = data.tag; - this.groupPropDlg.hide(); - this.refresh(true); - } - } - hasGroupBond(g) { - const list = g.a == null ? null : this.m.getAllBonds(g.a); - return list != null && list.length > 0; - } - copyAs(fmt) { - let s = null; - switch (fmt) { - case "molfile": - s = this.getMolfile(); - break; - case "molfile2000": - s = this.getMolfile(false); - break; - case "molfile3000": - s = this.getMolfile(true); - break; - case "smiles": - s = this.getSmiles(true); - break; - } - if (scil.Utils.isNullOrEmpty(s)) { - scil.Utils.alert("Nothing placed on clipboard"); - return; - } - scil.Clipboard.copy(s); - } - pasteAs(fmt) { - } - rgroupDefine(obj) { - JSDraw2.needPro(); - } - createMulticenter() { - JSDraw2.needPro(); - } - viewLarge() { - const label = this.options.viewonly ? "Dismiss" : "Save"; - JSDraw2.Editor.showPopup("View Structure", label, null, { value: this.clone(), format: "clone" }); - } - removeAtomValues() { - let cloned = null; - for (let i = 0; i < this.m.atoms.length; ++i) { - const a = this.m.atoms[i]; - if (a.tag != null && a.tag != "") { - if (cloned == null) - cloned = this.clone(); - a.tag = null; - } - } - if (cloned != null) { - this.pushundo(cloned); - this.refresh(true); - } - return cloned != null; - } - /** - * Select all object - * @function selectAll - * @returns true or false - */ - selectAll() { - const f = this.m.setSelected(true) > 0; - if (this.options.onselectionchanged != null) - this.options.onselectionchanged(this); - return f; - } - addRgroupStructure(rgroup) { - JSDraw2.needPro(); - } - menuTLCSetSpotShape(obj, shape, size) { - JSDraw2.needPro(); - } - menuTLCSetSpotSize(obj, size) { - JSDraw2.needPro(); - } - menuTLCLabel(obj, cmd) { - JSDraw2.needPro(); - } - menuTLCSetLabel(obj, cmd) { - JSDraw2.needPro(); - } - menuTLCFill(obj, cmd) { - JSDraw2.needPro(); - } - menuShapeType(obj, cmd) { - JSDraw2.needPro(); - } - menuAlignShapes(obj, cmd) { - JSDraw2.needPro(); - } - menuShapeFill(obj, cmd) { - JSDraw2.needPro(); - } - menuAntiboyType(obj, cmd) { - JSDraw2.needPro(); - } - showSequences(obj) { - JSDraw2.needPro(); - } - menuSetFontsize(cmd, obj) { - JSDraw2.needPro(); - } - menuSetColor(cmd, obj) { - JSDraw2.needPro(); - } - addTag(obj, p, s, edit) { - JSDraw2.needPro(); - } - setBracketData(br, fieldtype, prefix, ypos) { - JSDraw2.needPro(); - } - setBracketSubscription(br) { - if (br == null) - return; - let t = this.m.getSgroupText(br, "BRACKET_TYPE"); - if (t == null) - t = br.createSubscript(this.m, "#"); - this.showTextEditor(t, null, t.text); - } - setBracketRatio(br) { - JSDraw2.needPro(); - } - menuBracket(cmd, sub, checked, obj) { - JSDraw2.needPro(); - } - menuSetTextField(cmd, txt) { - JSDraw2.needPro(); - } - menuSetAttachPoint(cmd, obj) { - JSDraw2.needPro(); - } - lockAtomConnection(f) { - JSDraw2.needPro(); - } - menuSetAtomQuery(cmd, sub, checked, obj) { - JSDraw2.needPro(); - } - menuSetAtomQuery2(key, val) { - JSDraw2.needPro(); - } - menuSetAtomType(cmd, obj) { - if (cmd == "..." || cmd == "more") { - const me = this; - this.showPT(function (elem) { me.menuSetAtomType2(elem, obj); }); - } - else { - this.menuSetAtomType2(cmd, obj); - } - } - menuSetAtomType2(elem, obj) { - let n = 0; - const cloned = this.clone(); - const a = JSDraw2.Atom.cast(obj); - if (a != null && !a.selected) { - if (a._parent.setAtomType(a, elem)) - ++n; - } - else { - const atoms = this.m.allAtoms(); - for (let i = 0; i < atoms.length; ++i) { - const a = atoms[i]; - if (a.selected && a._parent.setAtomType(a, elem)) - ++n; - } - } - if (n > 0) { - this.pushundo(cloned); - this.refresh(true); - } - } - menuSetAtomCharges(cmd) { - const charges = parseInt(cmd); - if (isNaN(charges)) - return; - let n = 0; - const cloned = this.clone(); - const atoms = this.m.allAtoms(); - for (let i = 0; i < atoms.length; ++i) { - const a = atoms[i]; - if (a.selected && a._parent.setAtomCharge(a, charges)) - ++n; - } - if (n > 0) { - this.pushundo(cloned); - this.refresh(true); - } - } - menuSetAtomIsotope(cmd) { - JSDraw2.needPro(); - } - menuSetAtomRadical(cmd) { - JSDraw2.needPro(); - } - menuSetEhnStereochemistry(cmd) { - JSDraw2.needPro(); - } - menuSetBondTop(cmd) { - JSDraw2.needPro(); - } - menuSetRxnCenter(cmd) { - JSDraw2.needPro(); - } - menuSetBondType(cmd) { - JSDraw2.needPro(); - } - // @ts-ignore - getAllTlcPlates(sorting) { - JSDraw2.needPro(); - } - numberTlcPlates() { - JSDraw2.needPro(); - } - expandSuperatom() { - if (!this.helm.expandSuperAtom(this.curObject)) - JSDraw2.needPro(); - } - _setSelectedBondType(bt) { - let n = 0; - const bonds = this.m.allBonds(); - for (let i = 0; i < bonds.length; ++i) { - const b = bonds[i]; - if (b.selected && b._parent.setBondType(bonds[i], bt)) - ++n; - } - return n; - } - doRxnMap(curobj) { - JSDraw2.needPro(); - } - Cmd2BondType(cmd) { - switch (cmd) { - case "single": - return 1 /* JSDraw2.BONDTYPES.SINGLE */; - case "double": - return 2 /* JSDraw2.BONDTYPES.DOUBLE */; - case "triple": - return 3 /* JSDraw2.BONDTYPES.TRIPLE */; - case "unknown": - return 0 /* JSDraw2.BONDTYPES.UNKNOWN */; - case "dummy": - return 13 /* JSDraw2.BONDTYPES.DUMMY */; - case "either": - return 8 /* JSDraw2.BONDTYPES.EITHER */; - case "wiggly": - return 7 /* JSDraw2.BONDTYPES.WIGGLY */; - case "bold": - return 14 /* JSDraw2.BONDTYPES.BOLD */; - case "boldhash": - return 15 /* JSDraw2.BONDTYPES.BOLDHASH */; - case "delocalized": - return 4 /* JSDraw2.BONDTYPES.DELOCALIZED */; - case "up": - return 5 /* JSDraw2.BONDTYPES.WEDGE */; - case "down": - return 6 /* JSDraw2.BONDTYPES.HASH */; - } - return null; - } - delObject(obj) { - if (obj == null) - return false; - const br = JSDraw2.Bracket.cast(obj); - if (br != null) { - for (let i = 0; i < this.m.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.m.graphics[i]); - if (t != null && scil.Utils.indexOf(t.anchors, br) >= 0) - this.m.delObject(t); - } - this.m.delObject(br); - return true; - } - const tlc = JSDraw2.TLC.cast(obj); - if (tlc != null) { - if (tlc.removeSpot(tlc.curspot)) - return true; - } - const rgroup = JSDraw2.RGroup.cast(obj); - if (rgroup != null) - return false; - const a = JSDraw2.Atom.cast(obj); - if (a != null) { - if (this.delAA(a)) - return true; - if (JSDraw2.defaultoptions.delheteroatom != false && a.bio == null) { - if (a.elem != "C" || a.alias != null && a.alias != "") { - a.elem = "C"; - a.alias = null; - a._parent.setHCount(a); - return true; - } - } - } - const f = obj._parent.delObject(obj); - if (f) { - if (tlc != null) - this.numberTlcPlates(); - } - return f; - } - delSelected() { - let hasTcl = false; - for (let i = 0; i < this.m.graphics.length; ++i) { - if (JSDraw2.TLC.cast(this.m.graphics[i]) != null) { - hasTcl = true; - break; - } - } - const n = this.m.delSelected(); - if (n > 0 && hasTcl) - this.numberTlcPlates(); - return n; - } - hasSelected() { - const n = this.m.hasSelected(); - if (n > 0) { - for (let i = 0; i < this.m.graphics.length; ++i) { - if (JSDraw2.TLC.cast(this.m.graphics[i]) != null) { - this.numberTlcPlates(); - break; - } - } - } - return n; - } - lassoSelect(last) { - if (this.start == null || this.end == null) - return; - const extra = this.surface.extra; - if (extra.lasso == null) - extra.lasso = new JSDraw2.Lasso(extra, this.linewidth, true); - JSDraw2.Drawer.drawLine(extra, last, this.end, "#aaf", this.linewidth / 2); - this.m.lassoSelect(extra, this.start, this.end, last, this.linewidth, this.tor / 8); - } - selectInRect(r) { - return this.m.selectInRect(r); - } - addTemplate(key, obj, p) { - const a = JSDraw2.Atom.cast(obj); - const b = JSDraw2.Bond.cast(obj); - const m2 = key == "[custom]" ? JSDraw2.CustomTemplates.get(key) : JSDraw2.SuperAtoms.getTemplate(key); - if (m2 == null) - return; - const m = m2.clone(); - m.setBondLength(b == null ? this.bondlength : b.bondLength()); - if (a != null) { - this._addNewAtomInExistingGroup(a, m.atoms); - const a0 = m.atoms[0]; - if (JSDraw2.SuperAtoms._alignMol(a._parent, a, m, m.atoms[0])) - m.replaceAtom(a0, a); - else - return; - } - else if (b != null) { - this._addNewAtomInExistingGroup(b.a1, m.atoms); - this._addNewAtomInExistingGroup(b.a2, m.atoms); - let b0 = null; - for (let i = 0; i < m.bonds.length; ++i) { - if (m.bonds[i].type != 1 /* JSDraw2.BONDTYPES.SINGLE */) { - b0 = m.bonds[i]; - break; - } - } - if (b0 == null) - b0 = m.bonds[0]; - m.offset(b.a1.p.x - b0.a1.p.x, b.a1.p.y - b0.a1.p.y); - const dir = this._caclBondDir(this.m, b); - const dir0 = this._caclBondDir(m, b0); - if (dir > 0 && dir0 > 0 || dir < 0 && dir0 < 0) - m.flipX(b.a1.p.x); - const deg = b.angle(); - const deg0 = b0.angle(); - m.rotate(b0.a1.p.clone(), deg - deg0); - m.replaceBond(b0, b); - } - else { - const a0 = m.atoms[0]; - m.offset(p.x - a0.p.x, p.y - a0.p.y); - } - for (let i = 0; i < m.atoms.length; ++i) { - const a0 = m.atoms[i]; - const a2 = JSDraw2.Atom.cast(this.toggle(a0.p)); - if (a2 != null && a != a0) - m.replaceAtom(a0, a2); - } - // attach to existing group - let group = null; - if (a != null && a.group != null) - group = a.group; - if (b != null && b.a1.group != null && b.a2.group != null && b.a1.group == b.a2.group) - group = b.a1.group; - if (group != null) { - for (let i = 0; i < m.atoms.length; ++i) - m.atoms[i].group = group; - } - const parent = a != null ? a._parent : (b != null ? b._parent : null); - if (parent != null) - parent.mergeMol(m); - else - this.m.mergeMol(m); - } - _caclBondDir(m, b) { - let n = 0; - let atoms = m.getNeighborAtoms(b.a1, b.a2); - for (let i = 0; i < atoms.length; ++i) { - if (b.a1.p.angleAsOrigin(b.a2.p, atoms[i].p) > 180) - ++n; - else - --n; - } - atoms = m.getNeighborAtoms(b.a2, b.a1); - for (let i = 0; i < atoms.length; ++i) { - if (b.a2.p.angleAsOrigin(atoms[i].p, b.a1.p) > 180) - ++n; - else - --n; - } - return n; - } - keydown(e) { - if (!this.activated) - return; - if (this.texteditor.ed != null && this.texteditor.ed.input.style.display == "") - return; - if (this.helm != null) { - this.helm.cancelDnD(); - org.helm.webeditor.MolViewer.hide(); - } - if (scil.Utils.getZindex(this.div) < scil.Utils.getMaxZindex()) - return; - this._keypresschar = String.fromCharCode(e.keyCode); - if (e.preventDefault == null) - e.preventDefault = function () { }; - if (this.contextmenu != null) - this.contextmenu.hide(); - if (e.keyCode == 27) { - if (this.start != null) { - this.start = null; - this.redraw(); - } - } - // ctrl - if (e.ctrlKey || e.metaKey) { - switch (e.keyCode) { - case 89: // Y - case 121: - if (!this.options.appmode) { - if (this.redo()) - this.refresh(true); - } - break; - case 90: // Z - case 122: - if (!this.options.appmode) { - if (this.undo()) - this.refresh(true); - } - break; - case 67: // C - case 99: - if (!this.options.appmode) - this.copy(); - break; - case 86: // V - case 118: - if (!this.options.appmode && scil.Utils.isIE) { // except IE, I#10205 - // IE uses this; All other browsers use document.onpaste event - if (this.paste()) - this.refresh(true); - } - break; - case 88: // X - case 120: - if (!this.options.appmode) { - if (this.cut()) - this.refresh(true); - } - break; - case 65: // A - case 97: - if (this.selectAll()) - this.refresh(false); - e.preventDefault(); - break; - } - return; - } - const a = JSDraw2.Atom.cast(this.curObject); - if (e.keyCode == 8 || e.keyCode == 46) { // del - if (this.onDel()) - e.preventDefault(); - return; - } - // move selected objects - if (this.m.hasSelected()) { - let dx = 0; - let dy = 0; - switch (e.keyCode) { - case 37: // left - dx = -1; - break; - case 38: // up - dy = -1; - break; - case 39: // right - dx = 1; - break; - case 40: // down - dy = 1; - break; - } - if (dx != 0 || dy != 0) { - this.pushundo(); - //this.m.offset(e.shiftKey ? dx : dx * this.bondlength / 2, e.shiftKey ? dy : dy * this.bondlength / 2, true); - this.m.offset(e.shiftKey ? dx : dx * 20, e.shiftKey ? dy : dy * 20, true); - this.refresh(true); - e.preventDefault(); - return; - } - } - let c; - if (this.curObject == null) { - if (this.getCmd() == "seq") { - c = String.fromCharCode(e.keyCode); - if (JSDraw2.SuperAtoms.getAA(c) != null) { - this.createAA(this.lastmove, c, JSDraw2.BIO.AA); - } - } - else if (this.getCmd() == "helix") { - c = String.fromCharCode(e.keyCode); - if (JSDraw2.SuperAtoms.getDNA(c) != null) { - this.createAA(this.lastmove, c, JSDraw2.BIO.BASE_DNA); - } - } - else if (this.getCmd() == "rna") { - c = String.fromCharCode(e.keyCode); - if (JSDraw2.SuperAtoms.getRNA(c) != null) { - this.createAA(this.lastmove, c, JSDraw2.BIO.BASE_RNA); - } - } - return; - } - if (a != null) { - if (a.bio) { - if (e.keyCode == 13) { - this.showTextEditor(a, a.p.clone()); - e.preventDefault(); - return; - } - if (this.helm != null && scil.helm.isHelmNode(a)) { - c = String.fromCharCode(e.keyCode); - if (scil.helm.Monomers.getMonomer(a, c) != null) { - this.pushundo(); - a.elem = c; - this.refresh(true); - } - } - else if (a.biotype() == JSDraw2.BIO.AA && JSDraw2.SuperAtoms.getAA(c) != null || a.biotype() == JSDraw2.BIO.BASE_DNA && JSDraw2.SuperAtoms.getDNA(c) != null || a.biotype() == JSDraw2.BIO.BASE_RNA && JSDraw2.SuperAtoms.getRNA(c) != null) { - c = String.fromCharCode(e.keyCode); - if (a.selected) { - if (a.elem != c) { - this.pushundo(); - a.elem = c; - this._setSuperatom(a); - this.refresh(true); - } - } - else { - this.insertAA(a, c); - } - } - return; - } - else if (a.elem == "R") { - if (e.keyCode >= 49 && e.keyCode <= 57) { - const rlabel = "R" + (e.keyCode - 48); - if (a.alias != rlabel) { - this.pushundo(); - this.m.setAtomAlias(a, rlabel); - this.refresh(true); - } - return; - } - } - switch (e.keyCode) { - //case 16: // * - case 56: - c = '*'; - break; - case 50: - c = '@'; - break; - case 187: - case 107: - c = '+'; - break; - case 189: - case 109: - c = '-'; - break; - case 61: - if (scil.Utils.isFirefox) - c = '+'; - break; - case 173: - if (scil.Utils.isFirefox) - c = '-'; - break; - case 65: - case 97: - c = 'A'; - break; - case 81: - case 113: - c = 'Q'; - break; - case 66: - case 98: - c = 'Br'; - break; - case 67: - case 99: - c = 'C'; - break; - case 68: - case 100: - c = 'D'; - break; - case 70: - case 102: - c = 'F'; - break; - case 72: - case 104: - c = 'H'; - break; - case 73: - case 105: - c = 'I'; - break; - case 76: - case 108: - c = 'Cl'; - break; - case 78: - case 110: - c = 'N'; - break; - case 79: - case 111: - c = 'O'; - break; - case 80: - case 112: - c = 'P'; - break; - case 82: - case 114: - c = 'R'; - break; - case 83: - case 115: - c = 'S'; - break; - case 84: - case 116: - c = 'T'; - break; - case 88: - case 120: - c = 'X'; - break; - case 77: - case 109: - c = 'M'; - break; - case 69: - c = "Me"; - break; - case 13: - this.showTextEditor(a, a.p.clone()); - e.preventDefault(); - return; - } - if (c == '+' || c == '-') { - const cloned = this.clone(); - if (this.increaseNum(a, c == '+' ? +1 : -1)) { - this.pushundo(cloned); - this.refresh(true); - return; - } - } - else if (c == "Me") { - const cloned = this.clone(); - if (this.m.setAtomAlias(a, c)) { - this.pushundo(cloned); - this.refresh(true); - return; - } - } - else if (c != null) { - const cloned = this.clone(); - if (this.m.setAtomType(a, c)) { - this.pushundo(cloned); - this.refresh(true); - return; - } - } - return; - } - const shp = JSDraw2.Shape.cast(this.curObject); - if (shp != null && e.keyCode == 13) { - this.showTextEditor(shp, shp._rect.center()); - e.preventDefault(); - return; - } - const b = JSDraw2.Bond.cast(this.curObject); - if (b != null) { - if (b.isBio()) { - let f = false; - let cloned = null; - if (e.keyCode == 83 && b.type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */) { - cloned = this.clone(); - f = this.m.setBondType(b, 23 /* JSDraw2.BONDTYPES.DISULFIDE */); - } - else if (e.keyCode == 49 && b.type == 23 /* JSDraw2.BONDTYPES.DISULFIDE */) { - cloned = this.clone(); - f = this.m.setBondType(b, 21 /* JSDraw2.BONDTYPES.PEPTIDE */); - } - if (f) { - this.pushundo(cloned); - this.refresh(true); - } - } - else { - let c = -1; - if (e.keyCode == 189 || e.keyCode == 109) - c = 10; - else if (e.keyCode == 187 || e.keyCode == 107) - c = 11; - else if (e.keyCode == 192) - c = 13; - else - c = e.keyCode - 48; - if (c >= 0 /* JSDraw2.BONDTYPES.UNKNOWN */ && c <= 13 /* JSDraw2.BONDTYPES.DUMMY */ && this.curObject.type != c) { - const cloned = this.clone(); - if (this.m.setBondType(b, c)) { - this.pushundo(cloned); - if (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */ || b.type == 6 /* JSDraw2.BONDTYPES.HASH */) - this.fixWedgeDir(b); - this.refresh(true); - return; - } - } - else if (c == 9 && (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */ || b.type == 6 /* JSDraw2.BONDTYPES.HASH */)) { - this.pushundo(); - b.reverse(); - this.refresh(true); - return; - } - } - return; - } - const txt = JSDraw2.Text.cast(this.curObject); - if (txt != null) { - this.showTextEditor(txt); - e.preventDefault(); - return; - } - const t = JSDraw2.TLC.cast(this.curObject); - if (t != null) { - if (t.curspot != null) { - switch (e.keyCode) { - case 187: - case 189: - const clone = this.clone(); - if (t.curspot.move((e.keyCode == 187 ? 0.1 : -0.1) * (e.shiftKey ? 0.1 : 1))) { - this.pushundo(clone); - this.refresh(true); - } - e.preventDefault(); - break; - case 190: // > - this.pushundo(); - t.changeSize(t.curspot, "110%"); - this.refresh(true); - break; - case 188: // < - this.pushundo(); - t.changeSize(t.curspot, "90%"); - this.refresh(true); - break; - case 82: // R - case 76: // L - { - this.pushundo(); - //if (Math.abs(t.curspot.ry1) <= 1) - t.curspot.rx += e.shiftKey ? -0.2 : 0.2; - if (t.curspot.rx < 0.1) - t.curspot.rx = 0.1; - this.refresh(true); - } - break; - case 85: // U - { - this.pushundo(); - //if (Math.abs(t.curspot.ry1) <= 1) - t.curspot.ry1 += e.shiftKey ? -0.2 : 0.2; - this.refresh(true); - } - break; - case 68: // D - { - this.pushundo(); - //if (Math.abs(t.curspot.ry1) <= 1) - t.curspot.ry2 += e.shiftKey ? -0.2 : 0.2; - this.refresh(true); - } - break; - } - } - } - } - toCharArray(s, m) { - if (!(m > 0)) - m = 1; - const ss = []; - for (let i = 0; i < s.length; ++i) - ss.push(s.substr(i, m)); - return ss; - } - splitString(s, pat) { - const ss = []; - const re = new RegExp("^" + pat); - let ret; - while ((ret = re.exec(s)) != null) { - const c = ret + ""; - ss.push(c); - if (s.length == c.length) - return ss; - s = s.substr(c.length); - } - return null; - } - createAA2(s, biotype, expand, asrxn, nterminal, cterminal, selected) { - if (scil.Utils.isNullOrEmpty(s)) - return; - if (expand) - s = s.replace(/[>|\^]/g, ""); - if (new RegExp("^[a-z|^|>]+$").test(s)) - s = scil.Utils.trim(s).toUpperCase(); - let ss = null; - if (biotype == JSDraw2.BIO.BASE_DNA) { - if (new RegExp("^[A|G|T|C]+$").test(s)) { - ss = this.toCharArray(s); - } - else { - scil.Utils.alert2("Invalid DNA sequence."); - return; - } - } - if (biotype == JSDraw2.BIO.BASE_RNA) { - if (new RegExp("^[A|G|T|C|U]+$").test(s)) { - ss = this.toCharArray(s); - } - else { - scil.Utils.alert2("Invalid RNA sequence."); - return; - } - } - else if (biotype == JSDraw2.BIO.AA) { - s = s.replace(/[\.]/g, "-"); - if (s.indexOf('-') > 0) - ss = s.split('-'); - else if (new RegExp("^([A-Z][a-z|0-9]{2}[\\^]?)+[>]?$").test(s)) - ss = this.splitString(s, "[A-Z][a-z|0-9]{2}[\\^|>]?"); - else if (new RegExp("^([A-Z][\\^]?)+[>]?$").test(s)) { - ss = this.splitString(s, "[A-Z][\\^|>]?"); - } - if (ss == null) { - scil.Utils.alert2("Invalid peptide sequence."); - return; - } - } - if (ss.length >= 3 && scil.Utils.endswith(ss[ss.length - 1], ">") && s.indexOf('^') <= 0) - ss[0] += "^"; - let m; - if (expand && biotype == JSDraw2.BIO.AA) - m = this._createExpandedAA(ss, biotype, nterminal, cterminal); - else - m = this._createCollapsedAA(ss, biotype, nterminal, cterminal); - if (m == null) - return false; - if (nterminal == null || nterminal == "") - nterminal = "H"; - if (cterminal == null || cterminal == "") - cterminal = "OH"; - const seq = (nterminal != null ? nterminal + "-" : "") + s + (cterminal != null ? "-" + cterminal : ""); - if (this.options.onAddSequence != null) { - if (this.options.onAddSequence(m, seq, asrxn)) - return true; - } - this.m.setSelected(false); - if (selected != false) - m.setSelected(true); - this.pushundo(); - if (asrxn == "reactant" || asrxn == "product") { - const rxn = this.m.parseRxn(); - if (asrxn == "reactant") - rxn.reactants.push(m); - else - rxn.products.push(m); - this.setRxn(rxn, false, this.bondlength); - } - else { - this.m.mergeMol(m); - } - this.fitToWindow(); - // const t = null; - // if (biotype == JSDraw2.BIO.AA) { - // const c = m.rect().centerBottom(); - // const r = new JSDraw2.Rect(c.x - s.length * this.fontsize / 3, c.y + this.bondlength / 2, 0, 0); - // t = new JSDraw2.Text(r, seq); - // t.fieldtype = "SEQUENCE"; - // t.anchors = scil.clone(m.atoms); - // this.m.addGraphics(t); - // } - this.refresh(true); - // if (t != null) { - // const c = m.rect().centerBottom(); - // t._rect.offset(c.x - t._rect.center().x, 0); - // } - return true; - } - _createCollapsedAA(ss, biotype, nterminal, cterminal) { - if (nterminal == null || nterminal == "") - nterminal = "H"; - if (cterminal == null || cterminal == "") - cterminal = "OH"; - const head = []; - let circle = null; - let tail = null; - const all = []; - for (let i = 0; i < ss.length; ++i) { - let c = ss[i]; - const iscircle = c.length > 1 && (c.substr(c.length - 1) == "^" || c.substr(c.length - 1) == ">"); - if (iscircle) - c = c.substr(0, c.length - 1); - const a = new JSDraw2.Atom(null, c, { type: biotype }); - switch (biotype) { - case JSDraw2.BIO.AA: - a.superatom = JSDraw2.SuperAtoms.getAA(c); - break; - case JSDraw2.BIO.BASE_DNA: - a.superatom = JSDraw2.SuperAtoms.getDNA(c); - break; - case JSDraw2.BIO.BASE_RNA: - a.superatom = JSDraw2.SuperAtoms.getRNA(c); - break; - } - if (a.superatom == null) { - scil.Utils.alert("It cannot parse: " + c); - return; - } - all.push(a); - if (iscircle) { - if (circle == null) { - circle = [a]; - } - else { - if (tail == null) { - circle.push(a); - tail = []; - } - else { - tail.push(a); - } - } - } - else { - if (tail != null) - tail.push(a); - else if (circle != null) - circle.push(a); - else - head.push(a); - } - } - let bondtype = 1 /* JSDraw2.BONDTYPES.SINGLE */; - if (biotype == JSDraw2.BIO.AA) - bondtype = 21 /* JSDraw2.BONDTYPES.PEPTIDE */; - else if (biotype == JSDraw2.BIO.DNA || biotype == JSDraw2.BIO.RNA) - bondtype = 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */; - if (circle != null && circle.length == 1) { - head.push(circle[0]); - circle = null; - if (tail != null) { - for (let i = 0; i < tail.length; ++i) - head.push(tail[i]); - tail = null; - } - } - let nterm = null; - let cterm = null; - const m = new JSDraw2.Mol(this.options.showimplicithydrogens); - if (head.length > 0) { - nterm = new JSDraw2.Atom(null, "C"); - m.addAtom(nterm); - head.splice(0, 0, nterm); - const b = new JSDraw2.Bond(head[1], nterm, biotype == JSDraw2.BIO.AA ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */); - b.apo1 = 1; - m.addBond(b); - } - m.addAtom(all[0]); - for (let i = 1; i < all.length; ++i) { - m.addAtom(all[i]); - const b = new JSDraw2.Bond(all[i], all[i - 1], bondtype); - b.apo1 = 1; - b.apo2 = 2; - m.addBond(b); - } - if (circle == null) { - const o = new JSDraw2.Atom(null, biotype == JSDraw2.BIO.AA ? 'O' : "3'"); - m.addAtom(o); - head.push(o); - cterm = o; - const b = new JSDraw2.Bond(o, head[head.length - 2], biotype == JSDraw2.BIO.AA ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */); - b.apo2 = 2; - m.addBond(b); - } - else { - if (head.length == 0 && (tail == null || tail.length == 0)) { - const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], 21 /* JSDraw2.BONDTYPES.PEPTIDE */); - b.apo1 = 1; - b.apo2 = 2; - m.addBond(b); - } - else if (circle[0].elem == 'C' && circle[circle.length - 1].elem == 'C') { - const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], 23 /* JSDraw2.BONDTYPES.DISULFIDE */); - b.apo1 = 3; - b.apo2 = 3; - m.addBond(b); - } - else if (circle[0].elem == 'K' && (tail == null || tail.length == 0)) { - const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], 24 /* JSDraw2.BONDTYPES.AMIDE */); - b.apo1 = 3; - b.apo2 = 2; - m.addBond(b); - } - if (tail != null && tail.length > 0) { - cterm = new JSDraw2.Atom(null, "C"); - m.addAtom(cterm); - tail.push(cterm); - const b = new JSDraw2.Bond(tail[tail.length - 2], cterm, 1 /* JSDraw2.BONDTYPES.SINGLE */); - b.apo1 = 1; - m.addBond(b); - } - } - if (circle == null || circle.length == 1) { - let last = null; - this.layoutAtoms(head, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.LINE, this.bondlength, last); - if (head.length > 0) - last = head[head.length - 1]; - if (circle != null) { - this.layoutAtoms(circle, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.LINE, this.bondlength, last); - if (circle.length > 0) - last = circle[circle.length - 1]; - if (tail != null) - this.layoutAtoms(tail, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.LINE, this.bondlength, last); - } - } - else { - const center = new JSDraw2.Point(0, 0); - this.layoutAtoms(circle, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.CIRCLE, this.bondlength, center.clone().offset(1, 0), center); - if (head.length > 0) { - head.push(null); - head.reverse(); - this.layoutAtoms(head, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.LINE, this.bondlength, circle[0].p, center); - } - if (tail != null && tail.length > 0) { - tail.splice(0, 0, null); - this.layoutAtoms(tail, _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.ShapeTypes.LINE, this.bondlength, circle[circle.length - 1].p, center); - } - } - if (nterm != null) { - if (biotype == JSDraw2.BIO.AA) { - if (nterminal == "H") - nterm.elem = "H"; - else - m.setAtomAlias(nterm, nterminal); - } - else { - nterm.elem = "5'"; - } - } - if (cterm != null) { - if (biotype == JSDraw2.BIO.AA) { - if (cterminal == "OH") - cterm.elem = "O"; - else if (cterminal == "NH2") - cterm.elem = "N"; - else - m.setAtomAlias(cterm, cterminal); - } - else { - cterm.elem = "3'"; - } - } - return m; - } - _createExpandedAA(ss, biotype, nterminal, cterminal) { - if (nterminal == null || nterminal == "") - nterminal = "H"; - if (cterminal == null || cterminal == "") - cterminal = "OH"; - let mol = null; - let last = null; - for (let i = 0; i < ss.length; ++i) { - const c = ss[i]; - let m = JSDraw2.SuperAtoms.getAA(c); - if (m == null) { - scil.Utils.alert("Unknow Amino Acid: " + c); - return null; - } - m = m.clone(); - m.setBondLength(this.bondlength); - const attachs = JSDraw2.SuperAtoms._getAttachAtoms(m); - for (let k = 2; k < attachs.length; ++k) - attachs[k].a.attachpoints = []; - if (i == 0) { - mol = m; - attachs[0].a.attachpoints = []; - if (nterminal != "H") { - const p = this._guessAutoBond(attachs[0].a); - const a = new JSDraw2.Atom(p, "C"); - const b = new JSDraw2.Bond(attachs[0].a, a, 1 /* JSDraw2.BONDTYPES.SINGLE */); - mol.addAtom(a); - mol.addBond(b); - mol.setAtomAlias(a, nterminal); - } - last = attachs[1].a; - continue; - } - if (i % 2 == 1) { - for (let k = 0; k < m.atoms.length; ++k) - m.atoms[k].p.y *= -1; - for (let k = 0; k < m.bonds.length; ++k) { - if (m.bonds[k].type == 5 /* JSDraw2.BONDTYPES.WEDGE */) - m.bonds[k].type = 6 /* JSDraw2.BONDTYPES.HASH */; - else if (m.bonds[k].type == 6 /* JSDraw2.BONDTYPES.HASH */) - m.bonds[k].type = 5 /* JSDraw2.BONDTYPES.WEDGE */; - } - } - const p0 = attachs[0].a.p; - const p = this._guessAutoBond(last); - m.offset(p.x - p0.x, p.y - p0.y); - mol.mergeMol(m); - last.attachpoints = []; - attachs[0].a.attachpoints = []; - const b = new JSDraw2.Bond(last, attachs[0].a, 1 /* JSDraw2.BONDTYPES.SINGLE */); - mol.addBond(b); - last = attachs[1].a; - } - if (last != null) { - last.attachpoints = []; - if (cterminal != "H") { - const p = this._guessAutoBond(last); - const a = new JSDraw2.Atom(p, "C"); - const b = new JSDraw2.Bond(last, a, 1 /* JSDraw2.BONDTYPES.SINGLE */); - mol.addAtom(a); - mol.addBond(b); - if (cterminal == "OH") - a.elem = "O"; - else - mol.setAtomAlias(a, cterminal); - } - } - return mol; - } - layoutAtoms(atoms, shape, d, p1, p2) { - if (atoms == null || atoms.length == 0) - return; - if (p2 == null) - p2 = new JSDraw2.Point(0, 0); - if (p1 == null) - p1 = p2.clone().offset(d, 0); - switch (shape) { - case "line": { - if (atoms[0] != null) - atoms[0].p = p1.clone(); - const s = d / p1.distTo(p2); - const dx = (p1.x - p2.x) * s; - const dy = (p1.y - p2.y) * s; - for (let i = 1; i < atoms.length; ++i) - atoms[i].p = p1.clone().offset(dx * i, dy * i); - break; - } - case "circle": { - const deg = 360 / atoms.length; - const r = d / 2 / Math.sin(deg / 2 * Math.PI / 180); - const s = r / p1.distTo(p2); - p1 = new JSDraw2.Point(p2.x + (p1.x - p2.x) * s, p2.y + (p1.y - p2.y) * s); - if (atoms[0] != null) - atoms[0].p = p1.clone(); - for (let i = 1; i < atoms.length; ++i) - atoms[i].p = p1.clone().rotateAround(p2, deg * i); - break; - } - } - } - createAA(p, c, biotype) { - if (p == null) - return; - this.pushundo(); - const h = new JSDraw2.Atom(p.clone().offset(-this.bondlength, 0), biotype == JSDraw2.BIO.AA ? 'H' : "5'"); - const a = new JSDraw2.Atom(p.clone(), c, { type: biotype }); - a.superatom = null; - if (biotype == JSDraw2.BIO.AA) - a.superatom = JSDraw2.SuperAtoms.getAA(c); - else if (biotype == JSDraw2.BIO.BASE_DNA) - a.superatom = JSDraw2.SuperAtoms.getDNA(c); - else if (biotype == JSDraw2.BIO.BASE_RNA) - a.superatom = JSDraw2.SuperAtoms.getRNA(c); - const o = new JSDraw2.Atom(p.clone().offset(this.bondlength, 0), biotype == JSDraw2.BIO.AA ? 'O' : "3'"); - this.m.addAtom(h); - this.m.addAtom(a); - this.m.addAtom(o); - let b = new JSDraw2.Bond(h, a, 1 /* JSDraw2.BONDTYPES.SINGLE */); - b.apo2 = 2; - this.m.addBond(b); - b = new JSDraw2.Bond(a, o, 1 /* JSDraw2.BONDTYPES.SINGLE */); - b.apo1 = 1; - this.m.addBond(b); - this.curObject = a; - this.refresh(true); - } - delAA(a) { - if (a == null || a.biotype() != JSDraw2.BIO.AA && a.biotype() != JSDraw2.BIO.BASE_DNA && a.biotype() != JSDraw2.BIO.BASE_RNA) - return false; - const next = this.findNextAA(a, false); - if (next == null) - return false; - this.m.delBond(next.b, false); - const mm = this.m.getFragment(next.a); - mm.offset(a.p.x - next.a.p.x, a.p.y - next.a.p.y); - const bonds = this.m.getNeighborBonds(a); - for (let i = 0; i < bonds.length; ++i) { - const b = bonds[i]; - if (b.a1 == a) - b.a1 = next.a; - else if (b.a2 == a) - b.a2 = next.a; - } - a._parent.delAtom(a); - return true; - } - _setSuperatom(a) { - a.superatom = null; - const c = a.elem; - switch (a.biotype()) { - case JSDraw2.BIO.BASE_DNA: - a.superatom = JSDraw2.SuperAtoms.getDNA(c); - break; - case JSDraw2.BIO.BASE_RNA: - a.superatom = JSDraw2.SuperAtoms.getRNA(c); - break; - case JSDraw2.BIO.AA: - a.superatom = JSDraw2.SuperAtoms.getAA(c); - break; - } - } - insertAA(a, c) { - if (a == null || !a.bio) - return; - if (a.biotype() == JSDraw2.BIO.AA && JSDraw2.SuperAtoms.getAA(c) == null || a.biotype() == JSDraw2.BIO.BASE_DNA && JSDraw2.SuperAtoms.getDNA(c) != null || a.biotype() == JSDraw2.BIO.BASE_RNA && JSDraw2.SuperAtoms.getRNA(c) != null) - return; - const dx = this.bondlength; - const right = true; - const list = null; - const next = this.findNextAA(a, true); - this.pushundo(); - const na = new JSDraw2.Atom(a.p.clone().offset(dx, 0), c, dojo.clone(a.bio)); - const nb = new JSDraw2.Bond(na, a, a.biotype() == JSDraw2.BIO.AA ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 1 /* JSDraw2.BONDTYPES.SINGLE */); - this.m.addAtom(na); - this.m.addBond(nb); - this._setSuperatom(na); - nb.apo1 = 1; - nb.apo2 = 2; - if (next != null) { - this.m.delBond(next.b, false); - const mm = this.m.getFragment(next.a); - mm.offset(dx, 0); - const b = new JSDraw2.Bond(next.a, na, a.biotype() == JSDraw2.BIO.AA ? 21 /* JSDraw2.BONDTYPES.PEPTIDE */ : 1 /* JSDraw2.BONDTYPES.SINGLE */ /*, true */); // TODO: check last true - b.apo1 = 1; - b.apo2 = 2; - this.m.addBond(b); - } - this.curObject = na; - this.refresh(true); - } - findNextAA(a, forinsert) { - const bonds = this.m.getNeighborBonds(a); - if (bonds.length == 0) - return null; - else if (bonds.length == 1) - return { a: bonds[0].otherAtom(a), b: bonds[0] }; - let backup = null; - for (let i = bonds.length - 1; i >= 0; --i) { - const oa = bonds[i].otherAtom(a); - if (Math.abs(a.p.y - oa.p.y) < this.tor / 2) { - if (oa.p.x < a.p.x) { - backup = bonds[i]; - bonds.splice(i, 1); - } - else if (oa.p.x >= a.p.x) { - return { a: oa, b: bonds[i] }; - } - } - } - let ret = null; - for (let i = 0; i < bonds.length; ++i) { - const b = bonds[i]; - const oa = b.otherAtom(a); - if (ret == null) { - ret = { a: oa, b: b }; - } - else if (!forinsert && b.isBio() && !ret.b.isBio()) { - ret = { a: oa, b: b }; - } - else { - if (oa.p.x < a.p.x && ret.a.p.x < a.p.x || oa.p.x > a.p.x && ret.a.p.x > a.p.x) { - if (oa.p.y > ret.a.p.y) - ret = { a: oa, b: b }; - } - else if (oa.p.x > a.p.x) { - ret = { a: oa, b: b }; - } - } - } - if (ret == null) { - return { a: backup.otherAtom(a), b: backup }; - } - else if (!forinsert && !ret.a.bio) { - const oa = backup.otherAtom(a); - if (oa.bio) - return { a: oa, b: backup }; - } - return ret; - } - findNextAAs(a, right) { - const list = []; - while (a != null) { - const r = this._findNextAA(a, right); - if (r != null) { - list.push(r); - a = r.a; - } - else { - break; - } - } - return list; - } - _findNextAA(a, right) { - const bonds = this.m.bonds; - for (let i = 0; i < bonds.length; ++i) { - const oa = bonds[i].otherAtom(a); - if (oa != null && Math.abs(oa.p.y - a.p.y) < this.tor / 2 && (right && oa.p.x > a.p.x || !right && oa.p.x < a.p.x)) - return { b: bonds[i], a: oa }; - } - return null; - } - /** - * Set the view window size - * @function setSize - * @param {number} width - new width - * @param {number height - new height - * @returns null - */ - setSize(width, height) { - if (this.maintable != null) { - if (width > 0) - this.maintable.style.width = width + "px"; - if (height > 0) - this.maintable.style.height = height + "px"; - if (this.isSkinW8()) - this.resize(width, height - 24); - else - this.resize(width - 28, height - 24); - } - else { - this.resize(width, height); - } - } - onResize(width, height) { - if (this.options.onresize != null) { - if (this.options.onresize()) - return; - } - this.resize(width > 0 ? width : this.div.offsetWidth, height > 0 ? height : this.div.offsetHeight); - } - resize(width, height) { - if (scil.Utils.isIpad) { - // this one cause ELN problem on iPad - if (scil.eln != null /* ELN 2.0 */ || scil.App != null && scil.App.AccountTypes != null /* ELN 1.x */) - return; - } - if (this._setSurfaceSize(new JSDraw2.Point(width, height))) { - if (this.isSkinW8() && this.toolbar != null) - this.toolbar.recreateTopToolbar(); - } - } - _setSurfaceSize(sz) { - if (Math.abs(sz.x - this.dimension.x) < 6 && Math.abs(sz.y - this.dimension.y) < 6) - return false; - if (sz.x > 0) - this.dimension.x = sz.x; - if (sz.y > 0) - this.dimension.y = sz.y; - this.div.style.width = this.dimension.x + "px"; - this.div.style.height = this.dimension.y + "px"; - this.surface.setDimensions(this.dimension.x, this.dimension.y); - this.fitToWindow(); - this.redraw(); - return true; - } - dblclick() { - if (this.popuplocked) { - scil.Utils.alert("Editing is currently locked"); - return false; - } - const me = this; - const fn = function (jsd) { - me.restoreClone(jsd.clone()); - me.fitToWindow(); - me.refresh(true); - if (me.options.onpopupsaved != null) - me.options.onpopupsaved(me); - }; - JSDraw2.Editor.showPopup("JSDraw2 Popup Editor", "Save", fn, { value: this.clone(), format: "clone" }); - } - _makeChain(chain, end) { - if (chain == null || chain.end != null && chain.end.distTo(end) < this.tor) - return false; - if (end.distTo(chain.start) < this.bondlength * 2) - chain.p2 = end; - chain.end = end; - chain.points = []; - const d = chain.start.distTo(end); - let p1 = chain.start; - let p2; - if (chain.a == null) { - if (Math.abs(end.y - p1.y) / Math.abs(end.x - p1.x) < 0.1) // horizontally - p2 = p1.clone().offset(this.bondlength * (end.x > p1.x ? 1 : -1), 0).rotateAround(p1, 30); - else - p2 = this._guessBond(p1, chain.p2, true); - } - else { - p2 = this._guessAutoBond(chain.a, end); - } - if (p2 == null) - return false; - chain.points = [chain.start]; - chain.points.push(p2); - let angle; - let d2 = chain.start.distTo(p2); - while (d2 != 0 && d2 < d) { - const origin = p2; - if (chain.points.length == 2) { - const t1 = p1.clone().rotateAround(origin, 120); - const t2 = p1.clone().rotateAround(origin, -120); - if (t1.distTo(end) < t2.distTo(end)) { - p2 = t1; - angle = 120; - } - else { - p2 = t2; - angle = -120; - } - } - else { - angle = -angle; - p2 = p1.clone().rotateAround(origin, angle); - } - p1 = origin; - chain.points.push(p2); - d2 = chain.start.distTo(p2); - } - return true; - } - _guessAutoBond(a, end) { - if (a == null) - return null; - if (end == null) - return a._parent.guessBond(a, this.bondlength); - let p = null; - const atoms = a._parent.getNeighborAtoms(a); - if (atoms.length == 0) { - p = a.p.clone().offset(this.bondlength, 0); - if (end != null) { - const deg = Math.round(end.angleTo(a.p) / 30) * 30; - p.rotateAround(a.p, deg); - } - } - else if (atoms.length == 1) { - const a1 = atoms[0]; - p = a1.p.clone().rotateAround(a.p, -120); - if (end != null) { - const t = a1.p.clone().rotateAround(a.p, 120); - if (t.distTo(end) < p.distTo(end)) - p = t; - } - } - else if (atoms.length == 2) { - const a1 = atoms[0]; - const a2 = atoms[1]; - const ang1 = a1.p.angleTo(a.p); - const mid = a.p.middleAngle(a1.p, a2.p); - p = a1.p.clone().rotateAround(a.p, mid - ang1 + 180); - } - return p; - } - _addAutoBond(a, cmd) { - const m = a._parent; - const p = this._guessAutoBond(a); - if (p == null) - return false; - let elem = null; - const c = this._countAABonds(a); - let bondtype = this.Cmd2BondType(cmd); - if (c != null) { - // add H or OH on peptide terminal Amino Acid - if (c.peptideN == 0 && c.others == 0) { - elem = "H"; - bondtype = 21 /* JSDraw2.BONDTYPES.PEPTIDE */; - } - else if (c.peptideC == 0 && c.others == 0) - elem = "O"; - else - return false; - } - let na = JSDraw2.Atom.cast(this.toggle(p)); - if (na != null) { - if (na._parent != a._parent) - na = null; - } - if (na == null) { - na = new JSDraw2.Atom(p, elem); - this._addNewAtomInExistingGroup(a, [na]); - m.addAtom(na); - // attach to existing group - if (a.group != null) - na.group = a.group; - } - else { - if (m.findBond(a, na) != null) - return false; - } - const nb = new JSDraw2.Bond(a, na, bondtype); - m.addBond(nb, null, true); - return true; - } - _guessBond(p1, p2, notor) { - if (!notor && p1.distTo(p2) < this.tor) - return null; - let a = p2.angleTo(p1); - const m = Math.abs(a) % this.angleStop; - if (a > 0) - a = a - m + (m > (this.angleStop / 2) ? this.angleStop : 0); - else - a = -(-a - m + (m > (this.angleStop / 2) ? this.angleStop : 0)); - return new JSDraw2.Point(this.bondlength, 0).rotate(a).offset(p1.x, p1.y); - } - guessArrow(p1, p2) { - if (p1.distTo(p2) < this.bondlength) - return null; - const a = p2.angleTo(p1); - const m = a % 90; - if (m == 0) - return p2; - let s = 0; - if (m < 5) - s = -m; - else if (90 - m < 5) - s = 90 - m; - else - return p2; - return p2.clone().rotateAround(p1, s); - } - setFrameoffset(x, y) { - this.frameoffset.x = x; - this.frameoffset.y = y; - } - eventPoint(e) { - const f = true; - //if (scil.Utils.isIpad) - // f = false; - const objoffset = scil.Utils.getOffset(this.div, f); - //objoffset = new JSDraw2.Point(0, 0); - const pt = new JSDraw2.Point(e.clientX - objoffset.x - this.frameoffset.x, e.clientY - objoffset.y - this.frameoffset.y); - pt.tm = new Date().getTime(); - pt.clientX = e.clientX; - pt.clientY = e.clientY; - return pt; - } - getCmd(td) { - if (td == null) - td = this.curButton; - let s = td == null ? "select" : td.getAttribute('cmd'); - if (s.length > 2 && s.substr(0, 2) == "e-") - s = s.substr(2); - return s; - } - onSelBtn(e) { - let td = (e.target || e.srcElement); - if (td.getAttribute('cmd') != null) { - this.onCmd(td); - return; - } - for (let i = 0; i < 5; ++i) { - td = td.parentElement; - if (td == null || td.tagName != "TD") - return; - if (td.getAttribute('cmd') != null) { - this.onCmd(td); - return; - } - } - } - /** - * Do a toolbar command - * @function doCmd - * @param {string} cmd - the command name - * @returns null - */ - doCmd(cmd) { - if (this.toolbar == null) - return; - const list = this.toolbar.getButtons(); - for (let i = 0; i < list.length; ++i) { - let p = list[i]; - if (this.options.skin == "si") - p = p.parentNode; - if (p.getAttribute("cmd") == cmd) { - this.onCmd(p); - break; - } - } - } - onCmd(td) { - let useonce = true; - this.start = null; - const cmd = this.getCmd(td); - JSDraw2.Menu.close(); - switch (cmd) { - case "about": - case "jsdraw": - JSDraw2.Editor.showAbout(); - break; - case "inkclearall": - if (this.ink != null) - this.ink.clear(); - break; - case "inkclear": - if (this.ink != null) - this.ink.clearLastOne(); - break; - case "center": - this.pushundo(); - this.fitToWindow(); - this.redraw(); - break; - case "zoomin": - this.pushundo(); - this.scale(1.25, new JSDraw2.Point(this.dimension.x / 2, this.dimension.y / 2)); - this.redraw(); - useonce = false; - break; - case "zoomout": - this.pushundo(); - this.scale(0.75, new JSDraw2.Point(this.dimension.x / 2, this.dimension.y / 2)); - this.redraw(); - useonce = false; - break; - case "new": - if (!this.m.isEmpty()) { - const me = this; - scil.Utils.confirmYes("Clear all contents?", function () { - me.pushundo(); - me.clear(null, true); - me.refresh(true); - if (me.options.filenew != null) - me.options.filenew(me); - }, this); - } - else { - if (this.ink != null) - this.ink.clear(); - } - break; - case "save": - if (this.options.filesave != null) - this.options.filesave(this); - else if (scil.Utils.serviceAvailable()) - JSDraw2.JSDrawIO.jsdFileSave(this); - else { - // @ts-ignore - this.onShowSaveFileDlg(); - } - break; - case "open": - if (this.options.fileopen != null) - this.options.fileopen(this); - else if (scil.Utils.serviceAvailable()) - JSDraw2.JSDrawIO.jsdFileOpen(this); - else - this.onShowOpenFileDlg(); - break; - case "undo": - if (this.undo()) - this.refresh(true); - useonce = true; - break; - case "redo": - if (this.redo()) - this.refresh(true); - useonce = true; - break; - case "rxn": { - const cloned = this.clone(); - if (this.cleanupRxn(this.bondlength)) { - this.pushundo(cloned); - this.refresh(true); - } - break; - } - case "copyprod": - const rxn = this.m.parseRxn(true); - if (rxn != null && rxn.reactants.length > 0 && rxn.products.length == 0) { - this.pushundo(); - for (let i = 0; i < rxn.reactants.length; ++i) { - rxn.products.push(rxn.reactants[i].clone()); - } - this.setRxn(rxn, false); - this.refresh(true); - } - else { - scil.Utils.alert("It's already a reaction"); - } - break; - case "rxnmap2": { - const cloned = this.clone(); - if (this.m.clearAtomMap() > 0) { - this.pushundo(cloned); - this.refresh(true); - } - else { - scil.Utils.alert("No reaction map found"); - } - break; - } - case "seq": - JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.AA, "Peptide"); - break; - case "helix": - JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.BASE_DNA, "DNA"); - break; - case "rna": - JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.BASE_RNA, "RNA"); - break; - case "n2s": - JSDraw2.JSDrawIO.name2structure(this); - break; - case "cleanup": - JSDraw2.JSDrawIO.cleanup(this); - break; - case "selectall": - if (this.selectAll()) - this.redraw(); - break; - case "copy": - this.copy(); - break; - case "cut": - if (this.cut()) - this.redraw(); - break; - case "paste": - if (this.paste()) - this.redraw(); - break; - case "fliph": - this.flip("hori"); - break; - case "flipv": - this.flip("vert"); - break; - case "reaxys": - case "scifinder": - case "pubchem": - case "chemspider": - this.sendQuery(cmd); - useonce = true; - break; - case "chemdraw": - JSDraw2.ChemdrawPopup.show(this); - useonce = true; - break; - case "eraser": - if (!this.onDel()) - useonce = false; - break; - case "...": - case "more": - this.showPT(); - useonce = false; - break; - case "pastechemdraw": - JSDraw2.ChemDraw.paste(this); - break; - case "copychemdraw": - JSDraw2.ChemDraw.copy(this); - break; - case "symbol": - this.showSymbolDlg(); - break; - case "template.[custom]": - this.showTemplatesDlg(); - useonce = false; - break; - case "tlctemplate": - JSDraw2.TLCTemplates.show(true, this); - break; - case "tlcnumber": - this.numberTlcPlates(); - break; - case "fullscreen": - case "fullscreen2": - if (JSDraw2.Fullscreen != null) - JSDraw2.Fullscreen.show(this); - useonce = true; - break; - case "helm_import": - if (this.helm != null) - this.helm.showImportDlg(); - useonce = true; - break; - case "helm_find": - if (this.helm != null) - this.helm.showFindReplaceDlg(); - useonce = true; - break; - case "helm_mex": - if (this.helm != null) - scil.helm.MonomerExplorer.showDlg(this); - useonce = true; - break; - case "helm_layout": - if (this.helm != null) - this.helm.clean(null, true); - useonce = true; - break; - default: - useonce = false; - break; - } - if (!useonce) - this.onCmd2(td); - } - onCmd2(td) { - const cmd = this.getCmd(td); - if (cmd == "rxnmap") { - const rxn = this.m.parseRxn(); - if (rxn == null || rxn.reactants.length == 0 || rxn.products.length == 0) { - scil.Utils.alert("Please draw a completed reaction first."); - return; - } - } - const pid = dojo.attr(td, "parent"); - const parent = pid == null ? null : dojo.byId(pid); - if (parent != null) { - this.toolbar.exchangeButton(parent, td); - td = parent; - } - if (this.curButton != td) { - if (this.options.skin == "w8") { - const me = this; - if (this.curButton != null) { - dojo.style(this.curButton, { backgroundImage: scil.Utils.imgSrc("w8/" + me.options.buttonshape + ".png", true) }); - this.curButton.removeAttribute("pushed"); - } - td.setAttribute("pushed", 1); - dojo.style(td, { backgroundImage: scil.Utils.imgSrc("w8/" + me.options.buttonshape + "0.png", true) }); - } - else if (this.options.skin == "si") { - if (this.curButton != null) { - dojo.style(this.curButton, { background: "" }); - this.curButton.removeAttribute("pushed"); - } - td.setAttribute("pushed", 1); - dojo.style(td, { background: JSDraw2.Skin.jsdraw.btnselcolor }); - } - else { - if (this.curButton != null) { - dojo.style(this.curButton, { border: "none", padding: "2px" }); - //this.curButton.removeAttribute("pushed"); - } - //td.setAttribute("pushed", 1); - dojo.style(td, { border: "solid 1px", borderColor: "#c0c0c0 #f5f5f5 #f5f5f5 #c0c0c0", padding: "1px" }); - } - this.curButton = td; - } - } - flip(dir) { - if (this.m.isEmpty()) - return; - let list = []; - const atoms = this.m.atoms; - for (let i = 0; i < atoms.length; ++i) { - if (atoms[i].selected) - list.push(atoms[i]); - } - if (list.length == 0) { - const graphics = this.m.graphics; - for (let i = 0; i < graphics.length; ++i) { - if (graphics[i].selected && JSDraw2.Curve.cast(graphics[i]) != null) - list.push(graphics[i]); - } - if (list.length != 0) { - this.pushundo(); - for (let i = 0; i < list.length; ++i) - list[i].flip(); - this.refresh(true); - return; - } - } - let flipBond = null; - let flipaxis = null; - let center = null; - if (list.length == 0) { - center = this.getCenter(); - list = atoms; - } - else if (list.length == 1) { - center = list[0].p.clone(); - const frag = this.getFragment(list[0]); - if (frag != null) - list = frag.atoms; - } - else { - if (list.length == 2 && (flipBond = this.m.findBond(list[0], list[1])) != null) { - center = flipBond.center(); - const frag = this.getFragment(list[0]); - if (frag != null) - list = frag.atoms; - } - else { - const links = this.getConnectingAtomBonds(list); - if (links.length == 1) { - flipBond = links[0].b; - center = (flipBond.a1.f ? flipBond.a1 : flipBond.a2).p.clone(); - } - else if (links.length == 2) { - flipaxis = { a1: links[0].a, a2: links[1].a }; - } - else { - center = this.getCenter(list); - } - } - } - if (flipBond != null) - flipaxis = { a1: flipBond.a1, a2: flipBond.a2 }; - this.pushundo(); - if (flipaxis != null) { - const deg = flipaxis.a2.p.angleTo(flipaxis.a1.p); - center = flipaxis.a1.p.clone(); - this.rotate(list, center, -deg); - for (let i = 0; i < list.length; ++i) { - const p = list[i].p; - p.y = center.y - (p.y - center.y); - } - this.rotate(list, center, deg); - } - else { - if (dir == "vert") { - for (let i = 0; i < list.length; ++i) { - const p = list[i].p; - p.y = center.y - (p.y - center.y); - } - } - else { - for (let i = 0; i < list.length; ++i) { - const p = list[i].p; - p.x = center.x - (p.x - center.x); - } - } - } - this._invertStereoBonds(list); - this.refresh(true); - } - _invertStereoBonds(list) { - const all = list.length == this.m.atoms.length; - for (let i = 0; i < this.m.bonds.length; ++i) { - const b = this.m.bonds[i]; - if (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */ || b.type == 6 /* JSDraw2.BONDTYPES.HASH */) { - if (scil.Utils.indexOf(list, b.a1) >= 0 || scil.Utils.indexOf(list, b.a2) >= 0) { - b.type = b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */ ? 6 /* JSDraw2.BONDTYPES.HASH */ : 5 /* JSDraw2.BONDTYPES.WEDGE */; - } - } - } - } - sendQuery(cmd) { - const smiles = this.getSmiles(); - if (smiles == null || smiles == "") { - scil.Utils.alert("No query structure drawn"); - return; - } - let url; - switch (cmd.toLowerCase()) { - case "pubchem": - url = "http://pubchem.ncbi.nlm.nih.gov/search/search.cgi?cmd=search&q_type=dt&simp_schtp=fs&q_data="; - break; - case "chemspider": - url = "http://www.chemspider.com/Search.aspx?q="; - break; - case "reaxys": - url = "https://www.reaxys.com/reaxys/secured/hopinto.do?context=S&query="; - break; - case "scifinder": - url = "https://www.reaxys.com/reaxys/secured/hopinto.do?context=S&query="; - break; - default: - return; - } - url += escape(smiles); - window.open(url, "_blank"); - } - onShowOpenFileDlg() { - const me = JSDraw2.Editor; - if (me.openfiledlg == null) { - let fileformats = null; - if (JSDraw2.Security.kEdition == "Lite") { - if (this.options.helmtoolbar) - fileformats = { helm: "HELM", xhelm: "xHELM" }; - else - fileformats = { mol: "Mol File", smiles: "SMILES" }; - } - else if (me.openfiledlg?.jsd.options.tlcplate) // TODO: check jsd - fileformats = JSDraw2.JSDrawIO.jsdFiles2; - else - fileformats = JSDraw2.JSDrawIO.jsdFiles; - const fields = { filetype: { label: "File Type", type: "select", items: fileformats }, contents: { label: "Contents", type: "textarea", width: 800, height: 400 } }; - me.openfiledlg = scil.Form.createDlgForm("Import File", fields, { label: "Import", onclick: function () { me.onOpenFile(); } }); - } - me.openfiledlg.show(); - me.openfiledlg.form.setData({}); - me.openfiledlg.jsd = this; - } - onShowSaveFileDl() { - const me = JSDraw2.Editor; - if (me.savefiledlg == null) { - let fileformats = null; - if (JSDraw2.Security.kEdition == "Lite") { - if (this.options.helmtoolbar) - fileformats = { helm: "HELM", xhelm: "xHELM" }; - else - fileformats = { mol: "Mol File", smiles: "SMILES" }; - } - else - // @ ts-ignore - if (me.savefiledlg?.jsd.options.tlcplate) // TODO: check jsd - fileformats = JSDraw2.JSDrawIO.jsdFiles2; - else - fileformats = JSDraw2.JSDrawIO.jsdFiles; - const fields = { filetype: { label: "File Type", type: "select", items: fileformats }, contents: { label: "Contents", type: "textarea", width: 800, height: 400 } }; - me.savefiledlg = scil.Form.createDlgForm("Export File", fields, null, { - onchange: function (field) { - if (field == me.savefiledlg.form.fields.filetype) - me.onSaveFile(); - } - }); - } - me.savefiledlg.show(); - me.savefiledlg.form.setData({}); - me.savefiledlg.jsd = this; - } - onPT(elem) { - JSDraw2.Editor.periodictable.hide(); - if (elem != null) - this.ptElement = elem; // TODO: ? - } - showPT(callback) { - JSDraw2.needPro(); - } - showAtomDlg(a) { - JSDraw2.needPro(); - } - setAtomProps(a) { - JSDraw2.needPro(); - } - showBondDlg(b) { - JSDraw2.needPro(); - } - setBondProps(b) { - JSDraw2.needPro(); - } - /** - * Set Secptrum JDX data - * @function setJdx - * @param {string} data - JDX string - */ - setJdx(data) { - const m = new JSDraw2.Mol(); - m.setJdx(data, this.bondlength); - this.setMol(m); - } - getData(format) { - if (format == "mol") - return this.getMolfile(); - else if (format == "mol3000") - return this.getMolfile(true); - else if (format == "rxn") - return this.getRxnfile(); - else if (format == "rxn3000") - return this.getRxnfile(null, true); - else if (format == "xml") - return this.getXml(); - else if (format == "helm") - return this.getHelm(); - else if (format == "xhelm") - return this.getXHelm(); - else if (format == "smiles") - return this.m.getSmiles(); - else if (format == "helm") - return this.getHelm(); - else if (format == "xhelm") - return this.getXHelm(); - else - return null; - } - setData(data, format) { - this.setFile(data, format); - } - /** - * Load file data - * @function setFile - * @param {string} data - the file contents - * @param {string} filetype - the file type: mol, rxn, xml. Other file types can be loaded with JSDraw.WebServices - * @returns the Mol object loaded - */ - setFile(data, filetype) { - let m = null; - if (filetype == "mol") - m = this.m.setMolfile(data); - else if (filetype == "rxn") - m = this.m.setRxnfile(data); - else if (filetype == "xml") - m = this.m.setXml(data); - else if (filetype == "helm") { - this.setHelm(data); - return; - } - else if (filetype == "xhelm") { - this.setXHelm(data); - return; - } - else if (filetype == "jdx") - m = this.m.setJdx(data, this.bondlength); - else - return; - if (m == null) { - this.clear(true); - return; - } - this.setMol(m); - return this.m; - } - /** - * Load a Mol object - * @function setMol - * @param {Mol} mol - the Mol object to be loaded - * @returns true or false - */ - setMol(mol) { - if (mol != null && typeof (mol) == "object" && mol.T == "MOL") { - this.m = mol; - this.m.showimplicithydrogens = this.options.showimplicithydrogens; - if (this.options.removehydrogens) - this.m.removeHydrogens(); - this.m.calcHCount(); - this.m.toScreen(this.bondlength); - this.fitToWindow(); - this._setmol(this.m); - this.refresh(true); - return true; - } - return false; - } - /** - * Load a molfile - * @function setMolFile - * @param {string} molfile - the mol file contents - * @returns null - */ - setMolfile(molfile) { - this.setFile(molfile, "mol"); - } - /** - * Load a rxnfile - * @function setRxnFile - * @param {string} rxnfile - the rxn file contents - * @returns null - */ - setRxnfile(rxnfile) { - this.setFile(rxnfile, "rxn"); - } - /** - * Get molfile data - * @function getMolfile - * @param {bool} v3000 - indicate if rendering it in mol v3000 format - * @returns the molfile string - */ - getMolfile(v3000, excludeDummyBonds) { - this.m.bondlength = this.bondlength; - return this.m.getMolfile(false, v3000, excludeDummyBonds); - } - /** - * Get SVG data - * @function getSvg - * @returns the svg string - */ - getSvg() { - const g = dojox.gfx; - if (g.renderer != "svg") - return null; - const r = this.m.rect(); - r.inflate(20, 20); - const gu = dojox.gfx.utils; - this.m.offset(-r.left, -r.top); - this.redraw(); - let xml = gu._cleanSvg(gu._innerXML(this.surface.rawNode)); - this.m.offset(r.left, r.top); - this.redraw(); - xml = xml.replace(/ width="[0-9]+"/, " width=\"" + Math.round(r.width) + "\""); - xml = xml.replace(/ height="[0-9]+"/, " height=\"" + Math.round(r.height) + "\""); - return xml; - } - /** - * Get JSDraw Xml data - * @function getXml - * @param {number} width - the view width - * @param {number} height - the view height - * @param {bool} viewonly - indicate if it is viewonly mode - * @returns a string - */ - getXml(width, height, viewonly, withsvg) { - let svg = null; - try { - svg = withsvg ? this.getSvg() : null; - } - catch (e) { - } - this.m.bondlength = this.bondlength; - return this.m.getXml(width > 0 ? width : this.dimension.x, height > 0 ? height : this.dimension.y, viewonly, svg, this.bondlength); - } - getHtml(width, height, viewonly, withsvg) { - return this.getXml(width, height, viewonly, withsvg); - } - getSequence(highlightselection) { - return this.helm == null ? null : this.helm.getSequence(highlightselection); - } - getHelm(highlightselection) { - return this.helm == null ? null : this.helm.getHelm(highlightselection); - } - setHelm(s) { - return this.helm == null ? null : this.helm.setHelm(s); - } - getXHelm() { - return this.helm == null ? null : this.helm.getXHelm(); - } - setXHelm(s) { - return this.helm == null ? null : this.helm.setXHelm(s); - } - /** - * Set JSDraw Xml data - * @function setXml - * @param {string} xml - the JSDraw Xml string - * @returns the Mol object loaded - */ - setXml(xml, setmodified) { - const doc = typeof (xml) == "string" ? scil.Utils.parseXml(xml) : xml; - if (doc == null) { - if (typeof (xml) == "string" && xml.indexOf("M END") > 0) - return this.setMolfile(xml); - return; - } - if (this.helm != null && this.helm.isXHelm(doc)) { - this.setXHelm(doc); - return; - } - this.clear(); - let root = null; - if (typeof (xml) == "string") - root = doc == null ? null : (doc.documentElement || doc.firstElementChild); - else - root = xml; - this.m.setXml(root); - this.m.calcHCount(); - if (this.m.bondlength > 0) { - this.m.scale(JSDraw2.Editor.BONDLENGTH / this.m.bondlength); - this.resetScale(); - } - else { - this.m.toScreen(this.bondlength); - } - this.fitToWindow(); - this._setmol(this.m); - this.refresh(setmodified == null ? true : setmodified); - return this.m; - } - setHtml(xml) { - return this.setXml(xml); - } - /** - * Get Rxnfile - * @function getRxnfile - * @param {bool} groupbyplus - indicate if grouping reactants/products based on explicit plus signs - * @param {bool} v3000 - indicate if rendering in v3000 format - * @returns a string - */ - getRxnfile(groupbyplus, v3000) { - return this.m.getRxnfile(groupbyplus, v3000); - } - /** - * Get SMILES - * @function getSmiles - * @returns a string - */ - getSmiles(notused) { - return this.m.getSmiles(); - } - setMolbase64(molfile) { - const s = JSDraw2.Base64.decode(molfile); - this.setMolfile(s); - } - setRxnbase64(rxnfile) { - const s = JSDraw2.Base64.decode(rxnfile); - this.setRxnfile(s); - } - getMolbase64() { - const s = this.m.getMolfile(); - return JSDraw2.Base64.encode(s); - } - hasHelmNodes() { - if (this.helm == null) - return false; - for (let i = 0; i < this.m.atoms.length; ++i) { - if (scil.helm.isHelmNode(this.m.atoms[i])) - return true; - } - return false; - } - /** - * Get Formula - * @function getFormula - * @param {bool} html - indicate if rendering Formula in HTML format - * @returns a string - */ - getFormula(html) { - if (this.hasHelmNodes()) - return this.helm.getMF(html); - else - return this.m.getFormula(html); - } - /** - * Get molecular weight - * @function getMolWeight - * @returns a number - */ - getMolWeight() { - if (this.hasHelmNodes()) - return this.helm.getMW(); - else - return this.m.getMolWeight(); - } - /** - * Get Extinction Coefficient - * @function getExtinctionCoefficient - * @returns a number - */ - getExtinctionCoefficient() { - if (this.hasHelmNodes()) - return this.helm.getExtinctionCoefficient(); - else - return null; - } - /** - * Get exact mass - * @function getExactMass - * @returns a number - */ - getExactMass() { - return this.m.getExactMass(); - } - setAny(s, fmt) { - if (!scil.Utils.serviceAvailable() || s == null || s.length == 0) - return; - const me = this; - const xhrArgs = { - url: scil.Utils.scriptUrl() + "Service.aspx?cmd=tomolfile", - postData: "input=" + escape(s) + "&fmt=" + escape(fmt), - handleAs: "json", - load(ret) { - if (ret.success) { - me.pushundo(me.clone()); - me.setMolfile(ret.result); - } - else { - scil.Utils.alert(ret.error); - } - }, - error(ret) { - scil.Utils.alert(ret.message); - } - }; - const deferred = dojo.rawXhrPost(xhrArgs); - } - /** - * Highlight a query structure - * @function highlight - * @param {string or Mol} query - the query structure - * @returns true or false - */ - highlight(query) { - let q = null; - if (typeof query == "string") - q = new JSDraw2.Mol(this.options.showimplicithydrogens).setMolfile(query); - else - q = query.T == "MOL" ? query : query.m; - if (q == null) - return false; - const target = this; - const map = q.aamap(target.m, false, true); - target.redraw(); - return map != null; - } - /** - * Perform a sub-structure search using this molecule as the query - * @function highlight - * @param {Editor} target - the target structure - * @returns true or false - */ - sss(target) { - return target.highlight(this); - } - res(s) { - return JSDraw2.Language.res(s); - } - isSkinW8() { - return this.options.skin == "w8" || this.options.skin == "si"; - } - download(url, filetype) { - const me = this; - const callback = function (data) { - if (data.ret != null) - me.setFile(data.ret.molfile, filetype); - else - me.setFile(data, filetype); - }; - scil.Utils.download(url, callback); - } - /** - * Write the current structure into a cookie, so it can be reloaded next time - * @function writeCookie - * @param {string} name - cookie name - * @param {number} days - cookie valid days - * @returns null - */ - writeCookie(name, days) { - if (name == null || name.length == 0) - name = "__jsdraw_cookie_structure"; - if (!(days > 0)) - days = 30; - const html = this.getXml(); - scil.Utils.createCookie(name, html, days); - } - /** - * Read the structure from a saved cookie - * @function readCookie - * @param {string} name - cookie name - * @returns null - */ - readCookie(name) { - if (name == null || name.length == 0) - name = "__jsdraw_cookie_structure"; - const html = scil.Utils.readCookie(name); - this.setXml(html); - } - /** - * Destory the editor - * @returns null - */ - destroy() { - this.div = null; - this.curObject = null; - this.curButton = null; - this.texteditor = { input: null, text: null, atom: null }; - this.maintable = null; - if (this.toolbar != null) { - this.toolbar.destroy(); - this.toolbar = null; - } - if (this.surface != null) { - try { - this.surface.destroy(); - } - catch (e) { - } - this.surface = null; - } - for (let i = 0; i < this.connectHandlers.length; ++i) - dojo.disconnect(this.connectHandlers[i]); - this.connectHandlers = null; - } - bodyMouseDown(e) { - const src = e.target || e.srcElement; - if (this.texteditor.ed != null && this.texteditor.ed.isVisible() && !(this.texteditor.ed.isChildOf(src) || JSDraw2.Symbol != null && JSDraw2.Symbol.isFrom(src))) { - this.hideTextEditor(); - return; - } - if (this.texteditor.ed != null && this.texteditor.ed.isChildOf(src) || this.contextmenu != null && this.contextmenu.isFrom(src)) - return; - const dlg = scil.Dialog.getDialog(src); - if (dlg != null && dlg.owner == this) - return; - if (this._testdeactivation != null) { - if (this._testdeactivation(e, this)) - return; - } - const f = scil.Utils.hasAnsestor(src, this.surface.children[0].rawNode) || this.isFromSvgGroup(src) || scil.Utils.hasAnsestor(src, this.maintable); - //const f = src.__gfxObject__ != null || scil.Utils.hasAnsestor(src, this.maintable); - if (this.activated) { - if (!f) - this.activate(false); - } - else { - if (f) - this.activate(true); - } - } - isFromSvgGroup(src) { - if (dojox.gfx.renderer != "svg") - return false; - const g = scil.Utils.getParent(src, "g"); - return g != null && g.getAttribute("__surface_parentid") == this.id; - } - bodyTouchStart(e) { - if (this.activated && e.touches.length > 0) { - const te = e.touches[0]; - const src = te.target || te.srcElement; - if (!scil.Utils.hasAnsestor(src, this.maintable)) - this.activate(false); - } - this.bodyMouseDown(e); - } - // bodyClick (e) { - // }, - touchClick(e) { - if (!this.activated) { - this.activate(true); - e.preventDefault(); - return false; - } - } - resetGesture() { - this.touch.reset(this); - } - touchStart(e) { - if (!this.activated) - return; - if (JSDraw2.Menu.isOpen()) { - JSDraw2.Menu.close(); - e.preventDefault(); - return false; - } - if (e.touches.length == 1) { - this.mousedown(e.touches[0]); - e.preventDefault(); - return false; - } - else if (e.touches.length == 2) { - this.lastmove = null; - this.resetGesture(); - this.touch.start1 = this.eventPoint(e.touches[0]); - this.touch.start2 = this.eventPoint(e.touches[1]); - this.touch.center = new JSDraw2.Point((this.touch.start1.x + this.touch.start2.x) / 2, (this.touch.start1.y + this.touch.start2.y) / 2); - e.preventDefault(); - return false; - } - } - touchMove(e) { - if (!this.activated) - return; - if (e.touches.length == 1) { - this.mousemove(e.touches[0]); - e.preventDefault(); - this.resetGesture(); - return false; - } - this.holding.end(); - if (this.ink != null) - this.ink.cancel(); - this.start = null; - if (e.touches.length == 2) { - const p1 = this.eventPoint(e.touches[0]); - const p2 = this.eventPoint(e.touches[1]); - if (this.touch.start1 == null) { - this.touch.start1 = p1; - this.touch.start2 = p2; - return; - } - if (p1.equalsTo(this.touch.end1) && p2.equalsTo(this.touch.end2)) - return; - this.touch.end1 = p1; - this.touch.end2 = p2; - if (this.touch.gesture == null && this.touch.start1 != null && this.touch.start2 != null) { - const d1 = this.touch.end1.distTo(this.touch.start1); - const d2 = this.touch.end2.distTo(this.touch.start2); - if (d1 > 25 || d2 > 25) { - const a1 = this.touch.end1.angleTo(this.touch.start1); - const a2 = this.touch.end2.angleTo(this.touch.start2); - const da = Math.abs(a1 - a2); - if (d1 > 8 && d2 > 8 && (da < 30 || Math.abs(da - 360) < 30)) { - this.touch.gesture = "moving"; - } - else { - const a3 = d1 > 25 ? this.touch.start1.angleAsOrigin(this.touch.end1, this.touch.start2) : this.touch.start2.angleAsOrigin(this.touch.end2, this.touch.start1); - if (Math.abs(a3 - 180) < 45 || Math.abs(a3 - 360) < 45) - this.touch.gesture = "zooming"; - else - this.touch.gesture = "rotating"; - } - //dojo.byId("Textarea1").value += "d1=" + d1 + ", d2=" + d2 + ", " + a1 + ", " + a2 + ", " + a3 + "\r\n"; - } - } - if (this.touch.gesture != null && (!this.touch.end1.equalsTo(this.touch.start1) || !this.touch.end2.equalsTo(this.touch.start2))) { - if (this.touch.gesture == "zooming") { - const dx = this.touch.end1.x - this.touch.start1.x; - const dy = this.touch.end2.y - this.touch.start1.y; - if (Math.abs(dx) >= this.movingresolution || Math.abs(dy) >= this.movingresolution) { - this.touch.scale = this.touch.end1.distTo(this.touch.end2) / this.touch.start1.distTo(this.touch.start2); - if (this.touch.cloned == null) - this.touch.cloned = this.clone(); - this.scale(this.touch.scale, this.touch.center); - this.touch.start1 = this.touch.end1; - this.touch.start2 = this.touch.end2; - this.redraw(); - //this.surface.rootgroup.setTransform([dojox.gfx.matrix.scaleAt(this.touch.scale, this.touch.scale, this.touch.center.x, this.touch.center.y)]); - } - } - else if (this.touch.gesture == "moving") { - const dx = this.touch.end1.x - this.touch.start1.x; - const dy = this.touch.end1.y - this.touch.start1.y; - if (Math.abs(dx) >= this.movingresolution || Math.abs(dy) >= this.movingresolution) { - if (this.touch.cloned == null) - this.touch.cloned = this.clone(); - this.m.offset(dx, dy); - this.touch.start1 = this.touch.end1; - this.redraw(); - //this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.touch.end1.x - this.touch.start1.x, this.touch.end1.y - this.touch.start1.y)]); - } - } - else if (this.touch.gesture == "rotating") { - let a1 = this.touch.start2.angleAsOrigin(this.touch.start1, this.touch.end1); - let a2 = this.touch.start1.angleAsOrigin(this.touch.start2, this.touch.end2); - if (a1 > 180) - a1 -= 360; - if (a2 > 180) - a2 -= 360; - if ((Math.abs(a1) >= 1 || Math.abs(a2) >= 1) && Math.abs(a1) < 30 && Math.abs(a2) < 30) { - const s = Math.abs(a2) / (Math.abs(a1) + Math.abs(a2)); - const x = this.touch.start1.x + (this.touch.start2.x - this.touch.start1.x) * s; - const y = this.touch.start1.y + (this.touch.start2.y - this.touch.start1.y) * s; - this.m.rotate(new JSDraw2.Point(x, y), Math.abs(a1) > Math.abs(a2) ? a1 : a2); - this.touch.start1 = this.touch.end1; - this.touch.start2 = this.touch.end2; - this.redraw(); - } - } - } - e.preventDefault(); - return false; - } - this.resetGesture(); - } - touchEnd(e) { - if (!this.activated) - return; - this.resetGesture(); - this.mouseup(e); - return false; - } - /** - * Activate the editor and set focus - * @function activate - * @param {bool} f - indicate setting focus or name - * @param {bool} show - indicate if redrawing the structure - * @returns null - */ - activate(f, show) { - if (this.activated == f || this.maintable == null) - return; - this.activated = f; - if (f) { - if (JSDraw2.__currentactived != this && JSDraw2.__currentactived != null) - JSDraw2.__currentactived.activate(false); - JSDraw2.__currentactived = this; - } - if (window.navigator.msPointerEnabled) { - if (f) { - if (document.body.style.overflow != "hidden") { - this._msContentZooming = document.body.style.msContentZooming; - this._overflow = document.body.style.overflow; - document.body.style.msContentZooming = "none"; - document.body.style.overflow = "hidden"; - } - } - else { - if (document.body.style.overflow != this._overflow) { - document.body.style.msContentZooming = this._msContentZooming; - document.body.style.overflow = this._overflow; - } - } - } - if (!f && this.contextmenu != null) - this.contextmenu.hide(); - if (show == false) - return; - if (this.options.focusbox != false) - this.maintable.style.borderColor = f ? (this.options.focuscolor == null ? "#5555ff" : this.options.focuscolor) : "#cccccc"; - if (!f && this.curObject != null) { - this.curObject = null; - this.redraw(); - } - if (this.options.onfocus != null) - this.options.onfocus(f); - } -} -class Editor extends EditorInt { - /** - * Get the Editor object by its ID - * @function {static} get - * @param {string} id - the Editor ID - * @returns the Editor object - */ - static get(id) { - if (JSDraw2.Editor._allitems == null) - JSDraw2.Editor._allitems = {}; - return id == null ? null : JSDraw2.Editor._allitems[id]; - } - static getClipboard() { - let data = scil.Utils.readCookie("__jsdrawclipboard"); - if (data == null || data == "") - return null; - data = JSDraw2.Base64.decode(data); - const m = new JSDraw2.Mol(); - if (m.setXml(data) == null || m.isEmpty()) - return null; - //scil.Utils.createCookie("__jsdrawclipboard", ""); - return m; - } - static setClipboard(m, bondlength) { - if (m != null && !m.isEmpty()) { - scil.Utils.createCookie("__jsdrawclipboard", JSDraw2.Base64.encode(m.getXml(null, null, null, null, bondlength))); - return true; - } - scil.Utils.alert("Nothing placed on clipboard."); - return false; - } - /** - * Show JSDraw About box - * @function {static} showAbout - * @returns null - */ - static showAbout() { - if (JSDraw2.Editor.about == null) { - const div = scil.Utils.createElement(null, "div", null, { width: "430px", color: "black" }); - scil.Utils.createElement(div, "img", null, null, { src: scil.Utils.imgSrc("img/jsdraw2.jpg") }); - let lic; - if (JSDraw2.Security.kEdition == "Lite") { - lic = "JSDraw Lite for HELM"; - } - else { - const exp = JSDraw2.Security.lic == null ? null : JSDraw2.Security.lic.expiration; - lic = JSDraw2.Security.error != null ? JSDraw2.Security.error : "Licensed to " + JSDraw2.Security.lic.licensor + ", expires on " + exp.getFullYear() + "-" + (exp.getMonth() + 1) + "-" + exp.getDate(); - if (!JSDraw2.Security.valid) - lic = "" + lic + ""; - } - scil.Utils.createElement(div, "div", lic, { textAlign: "right" }); - const tbody = scil.Utils.createTable(div, null, null, { borderTop: "solid 1px gray", width: "100%" }); - const tr = scil.Utils.createElement(tbody, "tr"); - scil.Utils.createElement(tr, "td", JSDraw2.version); - scil.Utils.createElement(tr, "td", "http://www.jsdraw.com", { textAlign: "right" }); - const btn = scil.Utils.createElement(scil.Utils.createElement(div, "div", null, { textAlign: "center" }), "button", "OK", { width: scil.Utils.buttonWidth + "px" }); - JSDraw2.Editor.about = new JSDraw2.Dialog(JSDraw2.Language.res("About JSDraw"), div); - scil.connect(btn, "onclick", function (e) { - JSDraw2.Editor.about.hide(); - e.preventDefault(); - }); - } - JSDraw2.Editor.about.show(); - } - static onClickPT(elem, id) { - JSDraw2.Editor.get(id).onPT(elem); - } - static onSaveFile() { - const fields = JSDraw2.Editor.savefiledlg.form.fields; - const fmt = fields.filetype.value; - const txt = fields.contents; - txt.value = JSDraw2.Editor.savefiledlg.jsd.getData(fmt); - txt.select(); - txt.focus(); - } - static onOpenFile() { - const fields = JSDraw2.Editor.openfiledlg.form.fields; - const s = fields.contents.value; - const fmt = fields.filetype.value; - JSDraw2.Editor.openfiledlg.jsd.setData(s, fmt); - JSDraw2.Editor.openfiledlg.hide(); - } - static initNoDelay() { - const list = document.getElementsByTagName("div"); - for (let i = 0; i < list.length; i++) { - const e = list[i]; - if (dojo.hasClass(e, 'JSDraw')) { - new JSDraw2.Editor(e); - dojo.removeClass(e, 'JSDraw'); - } - } - } - /** - * Initialize all DIV HTML elements and their class marked as JSDraw, and convert all of them into JSDraw Editor
- * This function can be called before document.onload().
- * new JSDraw2.Editor() can only be used in or after document.onload(). - * @function {static} init - */ - static init() { - scil.onload(function () { - JSDraw2.Editor.initNoDelay(); - }); - } - /** - * Create a JSDraw Editor
- * This function can be called before document.onload().
- * new JSDraw2.Editor() can only be used in or after document.onload(). - * @function {static} create - * @param {string or DOM} id - the ID of DIV placehold, or the DIV DOM object - * @param {dictonary} options - creating options. Please check Editor contructor for details - */ - static create(id, options) { - dojo.ready(function () { new JSDraw2.Editor(id, options); }); - } - static write(id, options) { - document.writeln("
"); - scil.onload(function () { new JSDraw2.Editor(id, options); }); - } - static showPopupIframe(title, btnText, btnFn, value) { - const newcreated = false; - const parentWindow = scil.Utils.getTopWindow(); - parentWindow.JSDraw2.Editor.showPopup(title, btnText, btnFn, value); - } - static getPopupSize(win) { - const args = { width: 800, height: 400 }; - if (JSDraw2.defaultoptions != null) { - const w = JSDraw2.defaultoptions.popupwidth; - const h = JSDraw2.defaultoptions.popupheight; - const d = scil.Utils.getScreenSize(win); // dojo.window.getBox(); - if (typeof (w) == "string" && w.substr(w.length - 1, 1) == "%") - args.width = d.w * parseInt(w.substr(0, w.length - 1)) / 100; - else if (typeof (w) == 'number') - args.width = w; - if (typeof (h) == "string" && w.substr(h.length - 1, 1) == "%") - args.height = d.h * parseInt(h.substr(0, h.length - 1)) / 100; - else if (typeof (h) == 'number') - args.height = h; - } - return args; - } - /** - * Show JSDraw Poup Editor
- * @function {static} showPopup - * @param {string} title - the title of the Popup dialog - * @param {string} btnText - the button text of the Popup dialog - * @param {function(editor)} btnFn - the callback function when user clicks on the button - * @param {number} zindex - the zIndex of the dialog DOM - */ - static showPopup(title, btnText, btnFn, value, zindex) { - let args = null; - if (JSDraw2.Editor.popupdlg == null) { - args = this.getPopupSize(); - const tbody = scil.Utils.createTable(); - let tr = scil.Utils.createElement(tbody, 'tr'); - let td = scil.Utils.createElement(tr, 'td'); - args.div = scil.Utils.createElement(td, "div", null, { width: args.width + "px", height: args.height + "px" }); - tr = scil.Utils.createElement(tbody, 'tr'); - td = scil.Utils.createElement(tr, 'td', null, { textAlign: "center" }); - const button = scil.Utils.createElement(td, "button", null, { width: scil.Utils.buttonWidth + "px" }); - //const cancel = scil.Utils.createElement(td, "button", scil.Utils.imgTag('cancel.gif', "Cancel", { width: scil.Utils.buttonWidth + "px" }); - JSDraw2.Editor.popupdlg = new JSDraw2.Dialog(title, tbody.parentNode); - JSDraw2.Editor.popupdlg.button = button; - //JSDraw2.Editor.popupdlg.cancel = cancel; - } - JSDraw2.Editor.popupdlg.show(title, zindex); - if (args != null) { - if (JSDraw2.defaultoptions.popupxdraw /* && scil.Utils.isIE */) { - args.height -= 40; - args.value = value; - JSDraw2.Editor.popupdlg.jsd = new scilligence.XDraw(args.div, args); - } - else { - args.div.style.border = "solid 1px #ddd"; - JSDraw2.Editor.popupdlg.jsd = new JSDraw2.Editor(args.div); - this._loadPopupData(value); - } - if (!scil.Utils.isIE || scil.Utils.isIE > 8) - JSDraw2.Editor.popupdlg.updateWidth(); - //div = null; - const fn = function (e) { - let f = true; - if (JSDraw2.Editor.popupdlg.callback != null) { - f = JSDraw2.Editor.popupdlg.callback(JSDraw2.Editor.popupdlg.jsd); - JSDraw2.Editor.popupdlg.callback = null; - } - if (f != false) - JSDraw2.Editor.popupdlg.hide(); - e.preventDefault(); - }; - dojo.connect(JSDraw2.Editor.popupdlg.button, "onclick", fn); - //const fn2 = function (e) { JSDraw2.Editor.popupdlg.hide(); e.prevendDefault(); }; - //dojo.connect(JSDraw2.Editor.popupdlg.cancel, "onclick", fn2); - } - else { - this._loadPopupData(value); - } - JSDraw2.Editor.popupdlg.button.innerHTML = scil.Utils.imgTag("tick.gif", btnText); - JSDraw2.Editor.popupdlg.callback = btnFn; - return JSDraw2.Editor.popupdlg.jsd; - } - static _loadPopupData(value) { - if (value == null) { - JSDraw2.Editor.popupdlg.jsd.clear(true); - return; - } - if (value.format == "jsdraw" || value.format == "html" || value.format == "xml") - JSDraw2.Editor.popupdlg.jsd.setXml(value.value); - else if (value.format == "mol" || value.format == "molfile") - JSDraw2.Editor.popupdlg.jsd.setMolfile(value.value); - else if (value.format == "jdx") - JSDraw2.Editor.popupdlg.jsd.setJdx(value.value); - else if (value.format == "clone") { - JSDraw2.Editor.popupdlg.jsd.restoreClone(value.value); - JSDraw2.Editor.popupdlg.jsd.fitToWindow(); - } - else - JSDraw2.Editor.popupdlg.jsd.clear(true); - JSDraw2.Editor.popupdlg.jsd.refresh(); - } -} -Editor.__xcode = 91; -Editor.undoGestureTime = 300; -Editor.dblclickdelay = 300; -Editor.BONDLENGTH = 30.0; -Editor.ANGLESTOP = 30.0; -Editor.LINEWIDTH = 2.0; -Editor.TOR = 10.0; -Editor.FONTSIZE = 14.0; -class MSTouch { - static down(e) { - const me = MSTouch; - this.pointers[e.pointerId] = { clientX: e.clientX, clientY: e.clientY, target: e.target, button: e.button, pointerId: e.pointerId, _tm: new Date().getTime() }; - e.touches = me.toTouches(); - //dojo.byId("DEBUG").value = "down: " + e.touches.length + "\r\n"; - return e; - } - static move(e) { - const me = MSTouch; - const t = this.pointers[e.pointerId]; - if (t == null) - return; - t.clientX = e.clientX; - t.clientY = e.clientY; - t._tm = new Date().getTime(); - e.touches = me.toTouches(); - //dojo.byId("DEBUG").value += "move: " + e.touches.length + "\r\n"; - return e; - } - static up(e) { - const me = MSTouch; - delete me.pointers[e.pointerId]; - e.touches = this.toTouches(); - //dojo.byId("DEBUG").value += "up: " + e.touches.length + "\r\n"; - return e; - } - static toTouches() { - const me = MSTouch; - const touches = []; - const tm = new Date().getTime(); - const list = []; - for (const k in me.pointers) { - if (me.pointers[k]._tm > tm - 5000) - touches.push(me.pointers[k]); - else - list.push(k); - } - for (let i = 0; i < list.length; ++i) - delete me.pointers[list[i]]; - touches.sort(function (a, b) { return a.pointerId - b.pointerId; }); - return touches; - } -} -scilligence.mstouch = MSTouch; -JSDraw2.Editor = Editor; -//@ts-ignore -var JSDraw = JSDraw2.Editor; - - -/***/ }), - -/***/ "./src/JSDraw.MolHandler.ts": -/*!**********************************!*\ - !*** ./src/JSDraw.MolHandler.ts ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _types_mol_handler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types/mol-handler */ "./src/types/mol-handler.ts"); -// @ts-nocheck - -JSDraw2.MolHandler = scil.extend(scil._base, { - constructor: function (options) { - this.T = 'MOLHANDLER'; - this.options = JSON.parse(JSON.stringify(_types_mol_handler__WEBPACK_IMPORTED_MODULE_0__.defaultMolHandlerOptions)); - this.options = Object.assign(this.options, options ?? {}); - this.bondlength = JSDraw2.Editor.BONDLENGTH; - this.m = new JSDraw2.Mol(this.options.showimplicithydrogens); - } -}); - - -/***/ }), - -/***/ "./src/Mol.ts": -/*!********************!*\ - !*** ./src/Mol.ts ***! - \********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ChiralTypes: () => (/* binding */ ChiralTypes), -/* harmony export */ Mol: () => (/* binding */ Mol) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -var ChiralTypes; -(function (ChiralTypes) { - ChiralTypes["AND"] = "and"; - ChiralTypes["OR"] = "or"; -})(ChiralTypes || (ChiralTypes = {})); -/** - * Mol class - define a Molecule object - *
- * Example:
- *    var molfile = "\n";
- *    molfile += "MolEngine02021312372D\n";
- *    molfile += "\n";
- *    molfile += "  2  1  0  0  0  0  0  0  0  0999 V2000\n";
- *    molfile += "    0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\n";
- *    molfile += "    1.3510    0.7800    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0\n";
- *    molfile += "  1  2  1  0  0  0  0\n";
- *    molfile += "M  END\n";
- *
- *    var m = new JSDraw3.Mol();
- *    m.setMolfile(molfile);
- *
- *    var smiles = m.getSmiles();
- * 
- * @class scilligence.JSDraw2.Mol - */ -class Mol { - /** - * @constructor Mol - */ - constructor(showimplicithydrogens) { - this.T = 'MOL'; - this.name = null; - this.atoms = []; - this.bonds = []; - this.graphics = []; - this.stats = null; - this.showimplicithydrogens = showimplicithydrogens != false; - this.props = null; - } - _addAtom(a, parent) { - this.atoms.push(a); - a._parent = parent != null ? parent : this; - } - _addBond(a, parent) { - this.bonds.push(a); - a._parent = parent != null ? parent : this; - } - _addGraphics(a, parent) { - this.graphics.push(a); - a._parent = parent != null ? parent : this; - } - /** - * Reset object IDs including atoms, bonds, and other graphics - * @function resetIds - * @returns null - */ - resetIds(keepoldid) { - const idg = new JSDraw2.IDGenerator(keepoldid ? this._getMaxID() : 0); - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - a.id = idg.next(a.id); - a.atomid = i + 1; - } - for (let i = 0; i < this.bonds.length; ++i) { - const a = this.bonds[i]; - a.id = idg.next(a.id); - a.bondid = i + 1; - } - for (let i = 0; i < this.graphics.length; ++i) { - const a = this.graphics[i]; - a.id = idg.next(a.id); - a.graphicsid = i + 1; - } - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.rgroup != null) - a.rgroup.id = idg.next(a.rgroup.id); - } - } - _getMaxID() { - let max = 0; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.id > max) - max = a.id; - } - for (let i = 0; i < this.bonds.length; ++i) { - const a = this.bonds[i]; - if (a.id > max) - max = a.id; - } - for (let i = 0; i < this.graphics.length; ++i) { - const a = this.graphics[i]; - if (a.id > max) - max = a.id; - } - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.rgroup != null) { - if (a.rgroup.id > max) - max = a.rgroup.id; - } - } - return max; - } - getObjectById(id) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].id == id) - return this.atoms[i]; - } - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i].id == id) - return this.bonds[i]; - } - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].id == id) - return this.graphics[i]; - } - } - /** - * Clone the Mol object - * @function clone - * @param {boolean} selectedOnly - indicate if cloning only selected objects - * @return a new Mol object - */ - clone(selectedOnly) { - const m = new JSDraw2.Mol(); - m.bondlength = this.bondlength; - m.name = this.name; - m.chiral = this.chiral; - m.props = scil.clone(this.props); - m.showimplicithydrogens = this.showimplicithydrogens; - m.mw = this.mw; - m.attachpoints = this.attachpoints; - const map = []; - this.resetIds(true); - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (selectedOnly && !a.selected) - continue; - const a1 = a.clone(selectedOnly); - if (selectedOnly) - a1.atommapid = null; - m._addAtom(a1); - map[a.id] = a1; - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (selectedOnly && !(b.selected && b.a1.selected && b.a2.selected)) - continue; - const b1 = b.clone(); - m._addBond(b1); - map[b.id] = b1; - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (selectedOnly && !g.selected) - continue; - const g1 = g.clone(map); - m._addGraphics(g1); - map[g.id] = g1; - } - // fix references - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - const b1 = map[b.id]; - if (b1 == null) - continue; - b1.a1 = map[b.a1.id]; - b1.a2 = map[b.a2.id]; - if (b1.a1 == null || b.a2 == null) - i = i; - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - const g1 = map[g.id]; - if (g1 == null) - continue; - if (JSDraw2.Group.cast(g) != null) { - for (let j = 0; j < this.atoms.length; ++j) { - const a = this.atoms[j]; - if (a.group == g) - map[a.id].group = g1; - } - if (g.a != null) - g1.a = map[g.a.id]; - if (g.group != null) - g1.group = map[g.group.id]; - } - else if (JSDraw2.Bracket.cast(g) != null) { - g1.atoms = this._getMappedArray(g.atoms, map); - } - else if (JSDraw2.Text.cast(g) != null) { - g1.anchors = this._getMappedArray(g.anchors, map); - } - else if (JSDraw2.Shape.cast(g) != null) { - g1.froms = this._getMappedArray(g.froms, map); - if (g1.reject != null) - g1.reject = map[g1.reject.id]; - } - } - m._setParent(m); - return m; - } - _getMappedArray(list, map) { - const ret = []; - for (let i = 0; i < list.length; ++i) { - const d = list[i]; - if (d != null && map[d.id] != null) - ret.push(map[d.id]); - } - return ret; - } - guessBond(a, len, extra) { - let p = a.p.clone(); - const bonds = this.getAllBonds(a); - switch (bonds.length + (extra > 0 ? extra : 0)) { - case 0: - p.offset(1, 0); - break; - case 1: - p = bonds[0].otherAtom(a).p.clone().rotateAround(a.p, 120); - break; - case 2: { - const p1 = bonds[0].otherAtom(a).p; - const p2 = bonds[1].otherAtom(a).p; - const angle = a.p.angleAsOrigin(p1, p2); - if (Math.abs(angle - 180) <= 1) { - p = p1.clone(); - p.rotateAround(a.p, 90); - } - else { - p.x = (p1.x + p2.x) / 2; - p.y = (p1.y + p2.y) / 2; - p.rotateAround(a.p, 180); - } - break; - } - case 3: { - const p1 = bonds[0].otherAtom(a).p; - const p2 = bonds[1].otherAtom(a).p; - const p3 = bonds[2].otherAtom(a).p; - let a1 = p.angleAsOrigin(p1, p2); - let a2 = p.angleAsOrigin(p2, p3); - let a3 = p.angleAsOrigin(p3, p1); - if (a1 > 180) - a1 = 360 - a1; - if (a2 > 180) - a2 = 360 - a2; - if (a3 > 180) - a3 = 360 - a3; - if (a1 > a2 && a1 > a3) - p = p3.clone(); - else if (a2 > a1 && a2 > a3) - p = p1.clone(); - else - p = p2.clone(); - p.rotateAround(a.p, 180); - break; - } - default: - return null; - } - p.setLength(len, a.p); - return p; - } - getMaxRIndex(index) { - if (index == null) - index = 0; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.elem != 'R') - continue; - const r = scil.Utils.parseIndex(a.alias); - if (r == null || r.index == null) - continue; - if (r.index > index) - index = r.index; - if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) { - const r2 = a.rgroup.mols[j].getMaxRIndex(index); - if (r2 > index) - index = r2; - } - } - } - return index; - } - /** - * Set color to all objects - * @function setColor - * @param {string} color - a color, such as red, blue, #ffe, #f0f0f0 - * @param {bool} selectedOnly - indicate if only set the color to selected objects - * @returns null - */ - setColor(color, selectedOnly) { - let n = 0; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.color != color && (!selectedOnly || a.selected)) { - a.color = color; - ++n; - } - if (a.rgroup != null) { - if (a.rgroup.color != color && (!selectedOnly || a.rgroup.selected)) { - a.rgroup.color = color; - ++n; - } - for (let j = 0; j < a.rgroup.mols.length; ++j) - n += a.rgroup.mols[j].setColor(color, selectedOnly); - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.color != color && (!selectedOnly || b.selected)) { - b.color = color; - ++n; - } - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (g.color != color && (!selectedOnly || g.selected)) { - g.color = color; - ++n; - } - } - return n; - } - /** - * Remove all object - * @function clear - * @returns null - */ - clear() { - this.name = null; - this.chiral = null; - this.atoms = []; - this.bonds = []; - this.graphics = []; - } - /** - * Test if the Mol object is empty - without any atom, bond, or graphics - * @function isEmpty - * @returns true or false - */ - isEmpty() { - return this.atoms.length == 0 && this.bonds.length == 0 && this.graphics.length == 0; - } - /** - * Set selecting flags to all objects - * @function setSelected - * @param {bool} f - true or false - * @returns null - */ - setSelected(f) { - if (f == null) - f = false; - let n = 0; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.selected != f) { - a.selected = f; - ++n; - } - if (a.rgroup != null) { - if (a.rgroup.selected != f) { - a.rgroup.selected = f; - ++n; - } - for (let j = 0; j < a.rgroup.mols.length; ++j) - n += a.rgroup.mols[j].setSelected(f); - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.selected != f) { - b.selected = f; - ++n; - } - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (g.selected != f) { - g.selected = f; - ++n; - } - } - return n; - } - lassoSelect(extra, start, end, last, linewidth, tor) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.p.inTriangle(start, end, last)) - extra.lasso.hit(a); - if (a.rgroup != null) { - const g = a.rgroup; - const r2 = g.rect(); - if (r2.center().inTriangle(start, end, last)) - extra.lasso.hit(g); - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].lassoSelect(extra, start, end, last, linewidth, tor); - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.center().inTriangle(start, end, last)) - extra.lasso.hit(b); - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - const r2 = g.rect(); - if (r2.center().inTriangle(start, end, last)) - extra.lasso.hit(g); - } - extra.lasso.endHits(start, end); - } - getSelectedAtomInMol() { - const list = []; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.selected) { - list.push(a); - } - else if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) { - const r = a.rgroup.mols[j].getSelectedAtomInMol(); - if (r.length > 0) - return r; - } - } - } - return list; - } - bracketSelect(r) { - let ret = []; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (r.contains(a.p)) - ret.push(a); - } - // find open connected bonds - const xbonds = []; - const bonds = scil.clone(this.bonds); - for (let i = this.bonds.length - 1; i >= 0; --i) { - const b = this.bonds[i]; - const f1 = scil.Utils.indexOf(ret, b.a1) >= 0; - const f2 = scil.Utils.indexOf(ret, b.a2) >= 0; - if (f1 != f2) { - if (JSDraw2.Point.intersect(b.a1.p, b.a2.p, r.topleft(), r.bottomleft()) || - JSDraw2.Point.intersect(b.a1.p, b.a2.p, r.topright(), r.bottomright())) { - xbonds.push({ b: b, a: f2 ? b.a1 : b.a2 }); - bonds.splice(i, 1); - } - } - } - // only handle one or two open connected bonds - if (xbonds.length == 2 || xbonds.length == 1) { - const oldbonds = this.bonds; - this.bonds = bonds; - const frags = this.splitFragments(); - this.bonds = oldbonds; - if (frags.length > 1) { - for (let i = 0; i < frags.length; ++i) { - if (scil.Utils.arrayContainsArray(frags[i].atoms, ret)) { - // avoid circle - if (xbonds.length == 1 && scil.Utils.indexOf(frags[i].atoms, xbonds[0].a) < 0 || - xbonds.length == 2 && scil.Utils.indexOf(frags[i].atoms, xbonds[0].a) < 0 && scil.Utils.indexOf(frags[i].atoms, xbonds[1].a) < 0) { - ret = frags[i].atoms; - break; - } - } - } - } - } - for (let i = 0; i < ret.length; ++i) - ret[i].selected = true; - return ret; - } - selectInRect(r) { - let n = 0; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (r.contains(a.p)) { - a.selected = true; - ++n; - } - if (a.rgroup != null) { - const g = a.rgroup; - const r2 = g.rect(); - if (r2 != null && r.contains(r2.center())) { - g.selected = true; - ++n; - } - for (let j = 0; j < a.rgroup.mols.length; ++j) - n += a.rgroup.mols[j].selectInRect(r); - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (r.contains(b.center())) { - b.selected = true; - ++n; - } - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - const r2 = g.rect(); - if (r2 != null && r.contains(r2.center())) { - g.selected = true; - ++n; - } - } - return n; - } - hasAtom(a) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i] == a) - return true; - } - return false; - } - hasGraphics(g) { - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i] == g) - return true; - } - return false; - } - hasBond(b) { - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i] == b) - return true; - } - return false; - } - calcHCount(recalc) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (recalc || a.hcount == null) - this.setHCount(a); - if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].calcHCount(recalc); - } - } - } - setHCount(a) { - a.hcount = null; - if (this.showimplicithydrogens == false || a.bio) - return; - let error = false; - let v = null; - if (a.elem != 'R' && a.alias != null && a.alias != '') { - if (a.superatom == null) { - if (a.elem != '#') - error = true; - } - else if (a.superatom != null) { - const bonds = this.getNeighborBonds(a, true); - if (bonds.length > a.superatom.attachpoints) { - if (a.superatom.atoms.length > 0) - error = true; - } - else { - for (let i = 0; i < bonds.length; ++i) { - if (bonds[i].valence() != 1) { - error = true; - break; - } - } - } - } - } - else if (a.hs > 0) { - v = a.hs - 1; - } - else { - const e = JSDraw2.PT[a.elem]; - if (e != null && e.v != null && e.e != null) { - const bonds = this.getNeighborBonds(a); - let sum = 0; - let naromatic = 0; - for (let i = 0; i < bonds.length; ++i) { - const val = bonds[i].valence(); - if (val == null) - return; - if (val == 1.5) { - ++naromatic; - if (naromatic > 2) // two benzene-rings - sum += 1; - else - sum += 1.5; - } - else { - sum += bonds[i].valence(); - } - } - // the two bonds connect to O and S on c1cocc1 should be single bond - // TODO: Nitrogen on c1ncnc1: one N should be NH, and one should N - if (bonds.length == 2 && (a.elem == 'O' || a.elem == 'S') && - bonds[0].type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */ && bonds[1].type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */) { - --sum; - } - // charges - let extra = 0; - const pair_e = e.e <= 4 ? 0 : e.e % 4; - const single_e = e.e <= 4 ? e.e : 4 - (e.e % 4); - if (a.charge > 0) { - if (pair_e > 0) { - if (pair_e >= a.charge) - extra = a.charge; - else - return; - } - else if (single_e > 0) { - if (single_e >= a.charge) - extra -= a.charge; - else - return; - } - } - else if (a.charge < 0) { - if (single_e > 0) { - if (single_e > -a.charge) - extra = a.elem == 'B' || a.elem == 'P' || a.elem == 'Si' ? -a.charge : a.charge; // I#8702 - else - return; - } - } - // radical - if (a.radical == 1 || a.radical == 3) - sum += 2; - else if (a.radical == 2) - ++sum; - // attach points - if (a.attachpoints != null) { - for (let i = 0; i < a.attachpoints.length; ++i) { - if (a.attachpoints[i] != 99) - ++sum; - } - } - sum = Math.ceil(sum); - error = true; - for (let i = 0; i < e.v.length; ++i) { - if (sum <= e.v[i] + extra) { - v = e.v[i] + extra - sum; - error = false; - break; - } - } - } - } - a.hasError = error; - return a.hcount = v; - } - hasError() { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.hasError) - return true; - } - return false; - } - hasGenericAtom() { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.elem == 'R' && a.bio == null || a.superatom != null && a.superatom.atoms.length == 0) - return true; - } - return false; - } - /** - * Find a bond - * @function findBond - * @param {Atom} a1 - the first atom - * @param {Atom} a2 - the second atom - * @returns the bond - */ - findBond(a1, a2) { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.a1 == a1 && b.a2 == a2 || b.a1 == a2 && b.a2 == a1) - return b; - } - return null; - } - /** - * Move all objects to the center - * @function moveCenter - * @param {number} width - the width of the view - * @param {number} height - the height of the view - * @returns null - */ - moveCenter(width, height) { - if (this.isEmpty()) - return; - const center = this.center(); - this.offset(width > 0 ? (width / 2 - center.x) : 0, height > 0 ? (height / 2 - center.y) : 0); - } - /** - * Clean up the reaction, and make it looks nicer - * @function cleanupRxn - * @returns null - */ - cleanupRxn(defaultbondlength) { - const rxn = this.parseRxn(true); - if (rxn == null || rxn.reactants.length == 1 && rxn.products.length == 0 && rxn.arrow == null) - return false; - let bondlength = this.medBondLength(); - if (!(bondlength > 0)) - bondlength = defaultbondlength > 0 ? defaultbondlength : JSDraw2.Editor.BONDLENGTH; - return this._layoutRxn(rxn, bondlength); - } - _layoutRxn(rxn, bondlength) { - const pluses = []; - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].T == 'PLUS') - pluses.push(this.graphics[i]); - } - let x = null; - let y = null; - for (let i = 0; i < rxn.reactants.length; ++i) { - const r = rxn.reactants[i].rect(); - if (r.width == 0) - r.inflate(bondlength, 0); - if (r.height == 0) - r.inflate(0, bondlength); - if (x == null) { - x = r.right(); - y = r.center().y; - } - else { - x += bondlength; - if (pluses.length > 0) { - const plus = pluses.pop(); - plus.p = new JSDraw2.Point(x, y); - } - else { - const plus = new JSDraw2.Plus(new JSDraw2.Point(x, y)); - this._addGraphics(plus); - } - x += bondlength; - rxn.reactants[i].offset(x - r.left, y - r.center().y); - x += r.width; - } - } - const arrow = rxn.arrow; - if (arrow != null) { - const ang = arrow.p2.angleTo(arrow.p1); - arrow.p2.rotateAround(arrow.p1, -ang); - const r = arrow.rect(); - if (x == null) { - x = r.right(); - y = r.center().y; - } - else { - x += bondlength; - arrow.offset(x - r.left, y - r.center().y); - x += r.width; - } - // adjust arrow width - let width = 0; - if (rxn.above != null) { - for (let i = 0; i < rxn.above.length; ++i) { - const w = rxn.above[i]._rect.width; - if (w > width) - width = w; - } - } - if (rxn.below != null) { - for (let i = 0; i < rxn.below.length; ++i) { - const w = rxn.below[i]._rect.width; - if (w > width) - width = w; - } - } - if (width > 0 && width + bondlength > r.width) { - const d = width + bondlength - r.width; - arrow.p2.offset(d, 0); - x += d; - } - // layout reaction conditions above/below arrow - const d = bondlength / 10; - const center = arrow.rect().center(); - if (rxn.above != null) { - let y1 = center.y - d * 2; - for (let i = rxn.above.length - 1; i >= 0; --i) { - const t = rxn.above[i]; - t.offset(center.x - t._rect.center().x, y1 - t._rect.bottom()); - y1 = t._rect.top - d; - } - } - if (rxn.below != null) { - let y2 = center.y + d * 2; - for (let i = 0; i < rxn.below.length; ++i) { - const t = rxn.below[i]; - t.offset(center.x - t._rect.center().x, y2 - t._rect.top); - y2 = t._rect.bottom() + d; - } - } - } - for (let i = 0; i < rxn.products.length; ++i) { - const r = rxn.products[i].rect(); - if (r.width == 0) - r.inflate(bondlength, 0); - if (r.height == 0) - r.inflate(0, bondlength); - if (x == null) { - x = r.right(); - y = r.center().y; - } - else { - if (i > 0) { - x += bondlength; - if (pluses.length > 0) { - const plus = pluses.pop(); - plus.p = new JSDraw2.Point(x, y); - } - else { - const plus = new JSDraw2.Plus(new JSDraw2.Point(x, y)); - this._addGraphics(plus); - } - } - x += bondlength; - rxn.products[i].offset(x - r.left, y - r.center().y); - x += r.width; - } - } - for (let i = 0; i < pluses.length; ++i) - this.delObject(pluses[i]); - return true; - } - /** - * Return the center coorindate of all objects - * @function center - * @returns the center as a Point object - */ - center() { - return this.rect().center(); - } - /** - * Return the Rect of a Group - * @function getGroupRect - * @param {Group} g - the input group - * @returns a Rect object - */ - getGroupRect(g, bondlength) { - let r = null; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.group != g || a.hidden) - continue; - const p = a.p; - if (r == null) - r = new JSDraw2.Rect(p.x, p.y, 0, 0); - else - r.unionPoint(p); - } - for (let i = 0; i < this.graphics.length; ++i) { - const g2 = this.graphics[i]; - if (g2.group != g) - continue; - const rect = JSDraw2.Group.cast(g2) != null ? this.getGroupRect(g2, bondlength) : g2.rect(); - if (r == null) - r = rect.clone(); - else - r.union(rect); - } - if (r != null && g.gap > 0) - r.inflate(g.gap * bondlength / 15.0, g.gap * bondlength / 15.0); - return r; - } - /** - * Get the Rect of selected atoms - * @function getSelectedRect - * @returns a Rect object - */ - getSelectedRect() { - let r = null; - for (let i = 0; i < this.atoms.length; ++i) { - if (!this.atoms[i].selected) - continue; - const p = this.atoms[i].p; - if (r == null) - r = new JSDraw2.Rect(p.x, p.y, 0, 0); - else - r.unionPoint(p); - } - return r; - } - /** - * Return the Rect of all object - * @function rect - * @returns a Rect object - */ - rect(withoutRgroups) { - if (this.atoms.length == 0) { - if (this.graphics.length == 0) - return null; - const r = this.graphics[0].rect(); - for (let i = 1; i < this.graphics.length; ++i) - r.union(this.graphics[i].rect()); - return r; - } - let x1 = null; - let y1 = null; - let x2 = null; - let y2 = null; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.hidden) - continue; - const p = a.p; - if (x1 == null) { - x1 = x2 = p.x; - y1 = y2 = p.y; - continue; - } - if (p.x < x1) - x1 = p.x; - else if (p.x > x2) - x2 = p.x; - if (p.y < y1) - y1 = p.y; - else if (p.y > y2) - y2 = p.y; - } - const r = new JSDraw2.Rect(x1, y1, x2 - x1, y2 - y1); - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (JSDraw2.Group.cast(g) != null) - continue; - r.union(g.rect()); - } - if (!withoutRgroups) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.rgroup == null) - continue; - r.union(a.rgroup.rect()); - for (let j = 0; j < a.rgroup.mols.length; ++j) - r.union(a.rgroup.mols[j].rect()); - } - } - return r; - } - /** - * Move all objects - * @function offset - * @param {number} dx - x offset - * @param {number} dy - y offset - * @param {bool} selectedOnly - indicated if moving only selected objects - * @returns null - */ - offset(dx, dy, selectedOnly) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (selectedOnly != true || a.selected) - a.p.offset(dx, dy); - if (a.rgroup != null) { - if (selectedOnly != true || a.rgroup.selected) - a.rgroup.offset(dx, dy); - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].offset(dx, dy, selectedOnly); - } - } - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (selectedOnly != true || g.selected) { - this.graphics[i].offset(dx, dy); - } - else { - if (selectedOnly && !g.selected) { - const t = JSDraw2.Text.cast(g); - if (t != null && t.anchors.length > 0) { - let all = true; - for (let j = 0; j < t.anchors.length; ++j) { - if (!t.anchors[j].selected) { - all = false; - break; - } - } - if (all) { - t.selected = true; - t.offset(dx, dy); - } - } - } - } - } - } - /** - * Rotate all objects around a point - * @function rotate - * @param {Point} origin - the position to be rotated around - * @param {number} deg - degrees to be rotated - * @returns null - */ - rotate(origin, deg) { - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i].p.rotateAround(origin, deg); - } - /** - * Delete an object - * @function delObject - * @param {object} obj - Atom, bond, or graphics to be removed - * @returns null - */ - delObject(obj) { - if (obj == null) - return; - const a = JSDraw2.Atom.cast(obj); - if (a != null) - return this.delAtom(a); - const b = JSDraw2.Bond.cast(obj); - if (b != null) - return this.delBond(b); - return this.delGraphics(obj); - } - delGraphics(obj) { - const group = JSDraw2.Group.cast(obj); - if (group != null) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].group == group) - this.atoms[i].group = null; - } - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].group == group) - this.graphics[i].group = null; - } - } - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i] == obj) { - this.graphics.splice(i, 1); - this.objectRemoved(obj); - return true; - } - } - return false; - } - delAtom(a, checkBonds) { - const atoms = []; - atoms.push(a); - if (checkBonds != false) { - for (let i = this.bonds.length - 1; i >= 0; --i) { - const b = this.bonds[i]; - if (b.a1 == a || b.a2 == a) { - this.bonds.splice(i, 1); - this.objectRemoved(b); - atoms.push(b.otherAtom(a)); - if (a.atommapid != null) - this.clearAtomMap(a.atommapid); - } - } - } - let n = 0; - for (let i = 0; i < atoms.length; ++i) { - const a1 = atoms[i]; - if (a == a1 || !a1.bio) { - if (this.delLoneAtom(atoms[i])) - ++n; - } - } - return n > 0; - } - delBond(b, delLoneAtom) { - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i] == b) { - this.bonds.splice(i, 1); - if (delLoneAtom != false) { - if (!b.a1.bio) - this.delLoneAtom(b.a1); - if (!b.a2.bio) - this.delLoneAtom(b.a2); - } - this.objectRemoved(b); - return true; - } - } - return false; - } - delLoneAtom(a) { - if (!this.isLoneAtom(a)) { - this.setHCount(a); - return false; - } - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i] == a) { - this.atoms.splice(i, 1); - if (a.atommapid != null) - this.clearAtomMap(a.atommapid); - this.objectRemoved(a); - return true; - } - } - return false; - } - objectRemoved(obj) { - for (let i = 0; i < this.graphics.length; ++i) { - const g = this.graphics[i]; - if (g.removeObject != null) - g.removeObject(obj); - } - } - hasSelected() { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (this.atoms[i].selected) - return true; - if (a.rgroup != null) { - if (a.rgroup.selected) { - return true; - } - else { - for (let j = 0; j < a.rgroup.mols.length; ++j) { - if (a.rgroup.mols[j].hasSelected()) - return true; - } - } - } - } - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i].selected) - return true; - } - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].selected) - return true; - } - return false; - } - delSelected() { - let n = 0; - const atoms = scil.clone(this.atoms); - for (let i = 0; i < atoms.length; ++i) { - const a = atoms[i]; - if (a.selected) { - this.delAtom(atoms[i]); - ++n; - } - if (a.rgroup != null) { - if (a.rgroup.selected) { - a.rgroup = null; - ++n; - } - else { - for (let j = 0; j < a.rgroup.mols.length; ++j) - n += a.rgroup.mols[j].delSelected(); - } - } - } - const bonds = scil.clone(this.bonds); - for (let i = 0; i < bonds.length; ++i) { - if (bonds[i].selected) { - this.delBond(bonds[i]); - ++n; - } - } - const graphics = scil.clone(this.graphics); - for (let i = 0; i < graphics.length; ++i) { - if (graphics[i].selected) { - this.delObject(graphics[i]); - ++n; - } - } - return n; - } - setBondLength(d) { - const s = d / this.medBondLength(); - if (isNaN(s)) - return false; - this.scale(s); - } - getSketchType() { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].bio != null) - return 'biologics'; - } - return this.isRxn() ? 'reaction' : 'molecule'; - } - /** - * Merge another Molecule - * @function mergeMol - * @param {Mol} m - the Molecule to be merged - */ - mergeMol(m, _parent, group) { - for (let i = 0; i < m.atoms.length; ++i) { - this.addAtom(m.atoms[i]); - if (group != null) - m.atoms[i].group = group; - } - for (let i = 0; i < m.bonds.length; ++i) { - const b = m.bonds[i]; - if (this.findBond(b.a1, b.a2) == null) - this.addBond(b, false); - } - for (let i = 0; i < m.graphics.length; ++i) - this.addGraphics(m.graphics[i]); - this._setParent(this); - } - replaceAtom(old, newa) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i] == old) { - this.atoms[i] = newa; - break; - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.a1 == old) - b.a1 = newa; - if (b.a2 == old) - b.a2 = newa; - } - this.setHCount(newa); - } - replaceBond(old, newb) { - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i] == old) { - this.bonds[i] = newb; - break; - } - } - this.replaceAtom(old.a1, newb.a1); - this.replaceAtom(old.a2, newb.a2); - } - /** - * Add a graphics - * @function addGraphics - * @param {Graphics} g - the graphics to be added - * @returns the Graphics added - */ - addGraphics(g) { - if (this.hasGraphics(g)) - return null; - this._addGraphics(g); - return g; - } - /** - * Add an Atom - * @function addAtom - * @param {Atom} a - the atom to be added - * @returns the Atom added - */ - addAtom(a) { - if (this.hasAtom(a)) - return null; - this._addAtom(a); - return a; - } - /** - * Add a Bond - * @function addBond - * @param {Bond} b - the bond to be added - * @param {bool} resetcharge - indicate if reset atoms' charges of bonded atoms - * @returns the Bond added - */ - addBond(b, resetcharge, add2rgroup) { - if (this.hasBond(b)) - return null; - if (b.a1.mol != b.a2.mol) { - if (add2rgroup) { - this._addBond2RGroupMol(b); - } - else { - scil.Utils.alert('Cannot create this bond'); - return null; - } - } - this._addBond(b); - if (resetcharge != false && b.type != 13 /* JSDraw2.BONDTYPES.DUMMY */) - b.a1.charge = b.a2.charge = 0; - if (b.a1.alias == 'Me') - b.a1.alias = null; - if (b.a2.alias == 'Me') - b.a2.alias = null; - this.setHCount(b.a1); - this.setHCount(b.a2); - return b; - } - _addBond2RGroupMol(b) { - const m = b.a1._parent || b.a2._parent; - if (m == null || b.a1._parent == b._parent && b.a2._parent == b.a1._parent) - return; - if (b.a1._parent == null) { - m.addAtom(b.a1); - b.a1._parent = m; - } - if (b.a2._parent == null) { - m.addAtom(b.a2); - b.a2._parent = m; - } - m.addBond(b); - b._parent = m; - } - /** - * Set atom alias - * @function setAtomAlias - * @param {Atom} a - the target atom - * @param {string} alias - alias name - * @returns true of false - */ - setAtomAlias(a, alias, len) { - if (alias == null || alias == '') - return this.setAtomType(a, alias); - if (a.alias == alias) - return false; - let elem = '*'; - let m = JSDraw2.SuperAtoms.get(alias); - if (m == null) { - const alias2 = alias.replace(/^[\+|\-]/, '').replace(/[\+|\-]$/, ''); - if (JSDraw2.PT[alias2] != null || (/^R[0-9]+$/).test(alias)) - return this.setAtomType(a, alias); - const s = JSDraw2.SuperAtoms.guessOne(alias); - if (s != null) { - alias = s; - m = JSDraw2.SuperAtoms.get(alias); - } - else { - // leading O or S - const list = this.getNeighborBonds(a); - const orphan = list == null || list.length == 0 || list.length == 1 && list[0].type == 13 /* JSDraw2.BONDTYPES.DUMMY */; - m = JSDraw2.FormulaParser.parse(alias, orphan, list.length); - if (m != null && m.atoms.length == 0) - return this.setAtomType(a, m.atoms[0].elem); - if (orphan) { - const salt = JSDraw2.FormulaParser.parseSalt(alias); - if (salt != null) - elem = '#'; - } - } - } - a.isotope = null; - a.query = null; - a.hcount = null; - a.radical = null; - a.charge = 0; - a.alias = alias; - if (m != null) { - const attach = JSDraw2.SuperAtoms._getFirstAttachAtom(m); - if (attach != null) - JSDraw2.SuperAtoms._alignMol(a._parent, a, m, attach, len != null ? len : this.medBondLength(1.56)); - a.superatom = m; - a.rgroup = null; - a.elem = elem; - } - else { - if (!scil.Utils.isNullOrEmpty(alias)) - a.elem = elem; - if (a.elem == 'R') - a.updateRGroup(); - else - a.rgroup == null; - a.superatom = null; - } - this.setHCount(a); - return true; - } - setAttachPoint(a, apo) { - if (apo > 0 && !(a.attachpoints.length == 1 && a.attachpoints[0] == apo)) { - a.attachpoints = [apo]; - a._parent.setHCount(a); - return true; - } - return false; - } - /** - * Set atom type - * @function setAtomType - * @param {Atom} a - the target atom - * @param {string} elem - element symbol of atom - * @returns true of false - */ - setAtomType(a, elem, setCharge) { - if (elem == 'antibody' || elem == 'protein' || elem == 'gene' || elem == 'dna' || elem == 'rna') { - if (a.biotype() == JSDraw2.BIO.ANTIBODY || a.biotype() == JSDraw2.BIO.PROTEIN || a.biotype() == JSDraw2.BIO.GENE || a.biotype() == JSDraw2.BIO.DNA || a.biotype() == JSDraw2.BIO.RNA) - return false; - switch (elem) { - case 'antibody': - a.bio = { type: JSDraw2.BIO.ANTIBODY }; - break; - case 'protein': - a.bio = { type: JSDraw2.BIO.PROTEIN }; - break; - case 'gene': - a.bio = { type: JSDraw2.BIO.GENE }; - break; - case 'dna': - a.bio = { type: JSDraw2.BIO.DNA }; - break; - case 'rna': - a.bio = { type: JSDraw2.BIO.RNA }; - break; - } - a.elem = 'X'; - a.isotope = null; - a.query = null; - a.hcount = null; - a.radical = null; - a.charge = 0; - return true; - } - let charge = null; - if (elem.length > 1 && /[\+|\-][0-9]?$/.test(elem)) { - const s = elem.replace(/[\+|\-][0-9]?$/, ''); - const cs = elem.substr(s.length); - elem = s; - if (cs == '+') - charge = 1; - else if (cs == '-') - charge = -1; - else - charge = parseInt(cs); - } - if (a.elem == elem && (elem == 'H' && a.isotope == null) || a.bio) - return false; - let alias = null; - let e = elem == 'D' || elem == 'T' ? 'H' : elem; - if ((/^R[0-9]+$/).test(elem)) { - e = 'R'; - alias = elem; - } - if (JSDraw2.PT[e] == null) - return false; - const oldelem = a.elem; - a.elem = e; - if (e != 'R') - a.rgroup = null; - a.alias = alias; - a.superatom = null; - if (elem == 'D') - a.isotope = 2; - else if (elem == 'T') - a.isotope = 3; - else - a.isotope = null; - a.query = null; - if (charge > 0 || charge < 0) - a.charge = charge; - else if (setCharge) - a.charge = 0; - if (oldelem == '@') { - a.alias = null; - a.bio = null; - const list = this.getAllBonds(a); - for (let i = 0; i < list.length; ++i) { - const b = list[i]; - if (b.type == 13 /* JSDraw2.BONDTYPES.DUMMY */) - scil.Utils.removeArrayItem(this.bonds, b); - } - } - a._parent.setHCount(a); - if (e == 'R') - a.updateRGroup(); - return true; - } - /** - * Set atom charges - * @function setAtomCharge - * @param {Atom} a - the target atom - * @param {number} charge - charges - * @returns true of false - */ - setAtomCharge(a, charge) { - if (charge == null || isNaN(charge) || a.bio) - return false; - charge = Math.round(charge); - if (a.charge == charge) - return false; - a.charge = charge; - a._parent.setHCount(a); - return true; - } - /** - * Set bond type - * @function setBondType - * @param {Bond} b - the target bond - * @param {BONDTYPES} type - predefined bond type - * @returns true of false - */ - setBondType(b, type) { - if (b.a1.biotype() == JSDraw2.BIO.AA && b.a2.biotype() == JSDraw2.BIO.AA) { - if (b.type == 23 /* JSDraw2.BONDTYPES.DISULFIDE */ && type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */ || b.type == 21 /* JSDraw2.BONDTYPES.PEPTIDE */ && type == 23 /* JSDraw2.BONDTYPES.DISULFIDE */) { - b.type = type; - return true; - } - } - else { - if (type < 0 /* JSDraw2.BONDTYPES.UNKNOWN */ && type > 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */ || b.a1.bio || b.a2.bio) - return false; - b.type = type; - b._parent.setHCount(b.a1); - b._parent.setHCount(b.a2); - return true; - } - } - isLoneAtom(a) { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.a1 == a || b.a2 == a) - return false; - } - return true; - } - medBondLength(defaultValue) { - if (this.bonds.length == 0) - return defaultValue; - let step = Math.floor(this.bonds.length / 10); - if (step == 0) - step = 1; - const list = []; - for (let i = 0; i < this.bonds.length; i += step) { - const b = this.bonds[i]; - list.push(b.a1.p.distTo(b.a2.p)); - } - if (list.length == 0) - return 1.5; - if (list.length == 1) - return list[0] <= 0 ? 1.5 : list[0]; - list.sort(); - const d = list[Math.round(list.length / 2)]; - return d <= 0 ? 1.5 : d; - } - _hasDoubleBonds(a) { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.type == 2 /* JSDraw2.BONDTYPES.DOUBLE */ && (b.a1 == a || b.a2 == a)) - return true; - } - return false; - } - getNeighborAtoms(a, oa, excludeDummyBond) { - const list = []; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (excludeDummyBond && b.type == 13 /* JSDraw2.BONDTYPES.DUMMY */) - continue; - if (b.a1 == a) { - if (b.a2 != oa) - list.push(b.a2); - } - else if (b.a2 == a) { - if (b.a1 != oa) - list.push(b.a1); - } - } - return list; - } - getNeighborBonds(a, excludeDummyBonds) { - const list = []; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if ((b.a1 == a || b.a2 == a) && - (!excludeDummyBonds || b.type != 13 /* JSDraw2.BONDTYPES.DUMMY */ && b.type != 0 /* JSDraw2.BONDTYPES.UNKNOWN */)) - list.push(b); - } - return list; - } - /** - * Remove all hydrogen atoms - * @function removeHydrogens - * @returns the count of removed atoms - */ - removeHydrogens() { - const hs = []; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.elem == 'H' && a.isotope == null) - hs.push(i); - } - for (let k = hs.length - 1; k >= 0; --k) { - const a = this.atoms[hs[k]]; - for (let i = this.bonds.length - 1; i >= 0; --i) { - const b = this.bonds[i]; - if (b.a1 == a || b.a2 == a) - this.bonds.splice(i, 1); - } - this.atoms.splice(hs[k], 1); - } - return hs.length; - } - draw(surface, linewidth, fontsize, textonly, dimension, highlighterrors, showcarbon, simpledraw) { - if (linewidth == null) - linewidth = 2; - if (fontsize == null) - fontsize = 14; - if (textonly) { - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].T == 'TEXT') - this.graphics[i].draw(surface, linewidth, this, fontsize); - } - } - else { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - a._outside = a.p.x < -JSDraw2.speedup.gap || a.p.x > dimension.x + JSDraw2.speedup.gap || a.p.y < -JSDraw2.speedup.gap || a.p.y > dimension.y + JSDraw2.speedup.gap; - a._haslabel = a.hasLabel(this, showcarbon); - } - // draw bonds connect to hidden group atom - const bonds = []; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.a1._outside && b.a2._outside && !b.a1.hidden && !b.a2.hidden) - continue; - if (!simpledraw || !b.selected) { - if (this.moveHiddenAtomToGroupBorder(b.a1, b.a2) || this.moveHiddenAtomToGroupBorder(b.a2, b.a1)) - b.draw(surface, linewidth, this, fontsize, simpledraw); - else - bonds.push(b); - } - } - for (let i = 0; i < this.graphics.length; ++i) - this.graphics[i].draw(surface, linewidth, this, fontsize); - for (let i = 0; i < bonds.length; ++i) - bonds[i].draw(surface, linewidth, this, fontsize, simpledraw); - const tor = linewidth * 2; - if (simpledraw) { - // I#9069 - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a._outside || !a.hasErr()) - continue; - const w = 8; - const r = new JSDraw2.Rect(a.p.x - w / 2, a.p.y - w / 2, w, w); - JSDraw2.Drawer.drawRect(surface, r, 'red', linewidth).setFill('red'); - } - } - else { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a._outside) - continue; - // check overlapping - for (let k = i + 1; k < this.atoms.length; ++k) { - const a1 = this.atoms[k]; - if (Math.abs(a.p.x - a1.p.x) < tor && Math.abs(a.p.y - a1.p.y) < tor) { - const r = new JSDraw2.Rect(a.p.x - fontsize / 2, a.p.y - fontsize / 2, fontsize, fontsize); - JSDraw2.Drawer.drawRect(surface, r, 'red', linewidth); - break; - } - } - a.draw(surface, linewidth, this, fontsize, highlighterrors); - if (a.rgroup != null) { - if (a.rgroup.text != null) - a.rgroup.draw(surface, linewidth, this, fontsize); - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].draw(surface, linewidth, fontsize, textonly, dimension, highlighterrors); - } - } - } - this.drawSelect(new JSDraw2.Lasso(surface, linewidth * (simpledraw ? 5 : 1), false), simpledraw); - let s = null; - if (this.chiral == 'and') - s = '[AND Enantiomer]'; - else if (this.chiral == 'or') - s = '[OR Enantiomer]'; - else if (this.chiral == true) - s = 'Chiral'; - if (s != null) - JSDraw2.Drawer.drawText(surface, new JSDraw2.Point(dimension.x - fontsize * 4, fontsize * 1), s, 'gray', fontsize, 'right'); - } - } - moveHiddenAtomToGroupBorder(a, a2) { - if (!a.hidden) - return false; - const g = this._findGroup(a); - if (g == null) - return false; - const r = g.rect(); - if (!a2.hidden) { - // group to atom: use the closest border - const p = a2.p; - if (p.x < r.left) - a.p.x = r.left; - else if (p.x > r.right()) - a.p.x = r.right(); - else - a.p.x = p.x; - if (p.y < r.top) - a.p.y = r.top; - else if (p.y > r.bottom()) - a.p.y = r.bottom(); - else - a.p.y = p.y; - a._outside = false; - } - else { - // group to group - const g2 = this._findGroup(a2); - if (g2 == null) - return false; - const r2 = g2.rect(); - if (r.left >= r2.left && r.left <= r2.right() || r.right() >= r2.left && r.right() <= r2.right() || r2.left >= r.left && r2.left <= r.right() || r2.right() >= r.left && r2.right() <= r.right()) { - // vertically overlapped: vertical center - const x = (Math.max(r.left, r2.left) + Math.min(r.right(), r2.right())) / 2; - a.p.x = a2.p.x = x; - a.p.y = r.bottom() < r2.top ? r.bottom() : r.top; - a2.p.y = r2.top > r.bottom() ? r2.top : r2.bottom(); - } - else if (r.top >= r2.top && r.top <= r2.bottom() || r.bottom() >= r2.top && r.bottom() <= r2.bottom() || r2.top >= r.top && r2.top <= r.bottom() || r2.bottom() >= r.top && r2.bottom() <= r.bottom()) { - // horizontally overlapped: horizontal center - const y = (Math.max(r.top, r2.top) + Math.min(r.bottom(), r2.bottom())) / 2; - a.p.y = a2.p.y = y; - a.p.x = r.right() < r2.left ? r.right() : r.left; - a2.p.x = r2.left > r.right() ? r2.left : r2.right(); - } - else { - // then corner to corner - if (r.right() < r2.left) { - if (r.bottom() < r2.top) { - a.p = r.bottomright(); - a2.p = r2.topleft(); - } - else { - a.p = r.topright(); - a2.p = r2.bottomleft(); - } - } - else { - if (r.bottom() < r2.top) { - a.p = r.bottomleft(); - a2.p = r2.topright(); - } - else { - a.p = r.topleft(); - a2.p = r2.bottomright(); - } - } - } - a._outside = false; - a2._outside = false; - } - return true; - } - _findGroup(a) { - for (let i = 0; i < this.graphics.length; ++i) { - const g = JSDraw2.Group.cast(this.graphics[i]); - if (g != null && g.a == a) - return g; - } - return null; - } - drawSelect(lasso, simpledraw) { - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].selected) - this.graphics[i].drawSelect(lasso); - } - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i].__drawselect = false; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.selected) { - b.drawSelect(lasso); - if (simpledraw) { - b.a1.__drawselect = true; - b.a2.__drawselect = true; - } - } - } - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.selected && !a.__drawselect) - a.drawSelect(lasso); - if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].drawSelect(lasso, simpledraw); - } - } - } - setZOrder(g, z) { - const i = scil.Utils.indexOf(this.graphics, g); - if (i < 0 || this.graphics.length == 1) - return false; - if (z == 0) { - if (z != i) { - this.graphics.splice(i, 1); - this.graphics.splice(0, 0, g); - } - } - else if (z == -1) { - if (i != this.graphics.length - 1) { - this.graphics.splice(i, 1); - this.graphics.push(g); - } - } - return true; - } - calcHDir(a, tor, drawalias) { - const atoms = this.getNeighborAtoms(a); - if (atoms.length == 0 && a.charge == 0) - return drawalias ? JSDraw2.ALIGN.RIGHT : JSDraw2.ALIGN.LEFT; - let r = false; - let b = false; - let l = false; - let t = false; - for (let i = 0; i < atoms.length; ++i) { - const oa = atoms[i]; - const dx = oa.p.x - a.p.x; - const dy = oa.p.y - a.p.y; - if (dx > tor) - r = true; - else if (dx < -tor) - l = true; - if (dy > tor) - b = true; - else if (dy < -tor) - t = true; - } - if (!r) - return JSDraw2.ALIGN.RIGHT; - else if (!l) - return JSDraw2.ALIGN.LEFT; - else if (!b) - return JSDraw2.ALIGN.BOTTOM; - else if (!t) - return JSDraw2.ALIGN.TOP; - return JSDraw2.ALIGN.RIGHT; - } - /** - * Set molfile - * @function setMolfile - * @param {string} molfile - the input molfile - * @returns the Mol object - */ - setMolfile(molfile, rxn) { - const m = this.setMolfile2(molfile, rxn); - if (m != null) - this.guessSuperAtoms(); - return m; - } - guessSuperAtoms() { - return 0; - } - setMolfile2(molfile, rxn) { - if (molfile != null && molfile.length > 4) { - if (molfile.substr(0, 4) == '$RXN') - return this.setRxnfile(molfile); - if (molfile.substr(0, 4) == '$MDL') - return this.setRgfile(molfile); - } - this.clear(); - if (molfile == null || molfile.length == 0) - return null; - let lines = null; - if (molfile.indexOf('\n') >= 0) - lines = molfile.split('\n'); - else - lines = molfile.split('|'); - for (let i = 0; i <= Math.min(3, lines.length - 1); ++i) { - if (lines[i].toUpperCase().indexOf(' V2000') > 0) { - this.setMolV2000(lines, i, rxn); - if (i == 3) - this.name = scil.Utils.trim(lines[0]); - return this; - } - else if (lines[i].toUpperCase().indexOf(' V3000') > 0) { - this.setMolV3000(lines, i + 1, rxn); - if (i + 1 == 3) - this.name = scil.Utils.trim(lines[0]); - return this; - } - } - return null; - } - setMolV2000(lines, start, rxn, rAtoms) { - const natoms = parseFloat(lines[start].substr(0, 3)); - const nbonds = parseFloat(lines[start].substr(3, 3)); - const chiral = lines[start].substr(12, 3); - if (!JSDraw2.defaultoptions.and_enantiomer) - this.chiral = chiral == ' 1'; - if (isNaN(natoms) || isNaN(nbonds)) - return null; - ++start; - for (let i = start; i < natoms + start; i++) { - const s = lines[i]; - const x = parseFloat(s.substr(0, 10)); - const y = -parseFloat(s.substr(10, 10)); - let e = scil.Utils.trim(s.substr(31, 3)); - const c = s.length >= 39 ? parseInt(s.substr(36, 3)) : 0; - const ami = rxn && s.length >= 63 ? parseInt(s.substr(60, 3)) : 0; - const hs = s.length >= 45 ? parseInt(s.substr(42, 3)) : 0; - const val = s.length >= 51 ? parseInt(s.substr(48, 3)) : 0; - if (isNaN(x) || isNaN(y) || isNaN(c)) - return null; - let alias = null; - if ((/^R[0-9]+$/).test(e)) { - alias = e; - e = 'R'; - } - const a = new JSDraw2.Atom(new JSDraw2.Point(x, y), e == 'R#' ? 'R' : e); - a.alias = alias; - if (ami > 0) - a.atommapid = ami; - if (hs > 0 && hs <= 5) - a.hs = hs; - if (val > 0 && val <= 15) - a.val = val; - this._addAtom(a); - switch (c) { - case 1: - a.charge = 3; - break; - case 2: - a.charge = 2; - break; - case 3: - a.charge = 1; - break; - case 5: - a.charge = -1; - break; - case 6: - a.charge = -2; - break; - case 7: - a.charge = -3; - break; - } - } - start += natoms; - for (let i = start; i < (nbonds + start); i++) { - const line = lines[i]; - const sI = parseFloat(line.substr(0, 3)) - 1; - const eI = parseFloat(line.substr(3, 3)) - 1; - const order = parseInt(line.substr(6, 3)); - const stereo = parseInt(line.substr(9, 3)); - const ring = line.length >= 18 ? parseInt(line.substr(15, 3)) : null; - const rcenter = line.length >= 21 ? line.substr(18, 3) : null; - if (isNaN(sI) || isNaN(eI) || isNaN(order)) - return null; - const a1 = this.atoms[sI]; - const a2 = this.atoms[eI]; - let b; - switch (order) { - case 0: - b = 0 /* JSDraw2.BONDTYPES.UNKNOWN */; - break; - case 1: - switch (stereo) { - case 1: - b = 5 /* JSDraw2.BONDTYPES.WEDGE */; - break; - case 4: - b = 7 /* JSDraw2.BONDTYPES.WIGGLY */; - break; - case 6: - b = 6 /* JSDraw2.BONDTYPES.HASH */; - break; - default: - b = 1 /* JSDraw2.BONDTYPES.SINGLE */; - break; - } - break; - case 2: - b = stereo == 3 ? 8 /* JSDraw2.BONDTYPES.EITHER */ : 2 /* JSDraw2.BONDTYPES.DOUBLE */; - break; - case 3: - b = 3 /* JSDraw2.BONDTYPES.TRIPLE */; - break; - case 4: - b = 4 /* JSDraw2.BONDTYPES.DELOCALIZED */; - break; - case 5: - b = 9 /* JSDraw2.BONDTYPES.SINGLEORDOUBLE */; - break; - case 6: - b = 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */; - break; - case 7: - b = 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */; - break; - case 8: - b = 0 /* JSDraw2.BONDTYPES.UNKNOWN */; - break; - case 9: - b = 13 /* JSDraw2.BONDTYPES.DUMMY */; - break; - } - const bond = new JSDraw2.Bond(a1, a2, b); - if (ring == 1) - bond.ring = true; - else if (ring == 2) - bond.ring = false; - if (rxn) - this.readRxnCenter(bond, rcenter); - this._addBond(bond); - } - const sgroups = []; - start += nbonds; - for (let i = start; i < lines.length; ++i) { - const s = scil.Utils.rtrim(lines[i]); - const token = s.length >= 6 ? s.substr(0, 6) : null; - const token3 = s.length >= 6 ? s.substr(0, 3) : null; - if (token == 'M ISO') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(10 + k * 8, 3)); - const v = parseInt(s.substr(14 + k * 8, 3)); - if (isNaN(ai) || isNaN(v)) - return null; - this.atoms[ai - 1].isotope = v; - } - } - else if (token == 'M RAD') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(10 + k * 8, 3)); - const v = parseInt(s.substr(14 + k * 8, 3)); - if (isNaN(ai) || isNaN(v)) - return null; - if (v >= 1 && v <= 3) - this.atoms[ai - 1].radical = v; - } - } - else if (token == 'M CHG') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(10 + k * 8, 3)); - const v = parseInt(s.substr(14 + k * 8, 3)); - if (isNaN(ai) || isNaN(v)) - return null; - this.atoms[ai - 1].charge = v; - } - } - else if (token == 'M ALS') { - //M ALS 7 4 F C N S O - const ai = parseInt(s.substr(7, 3)); - const n = parseInt(s.substr(10, 3)); - const f = s.substr(14, 1) == 'F'; - const list = []; - for (let k = 0; k < n; ++k) { - const el = scil.Utils.trim(s.substr(16 + k * 4, 4)); - if (JSDraw2.PT.isValidAtomList(el)) - list.push(el); - } - const a = this.atoms[ai - 1]; - if (a.query == null) - a.query = {}; - a.query.t = f; - a.query.als = list; - } - else if (token == 'M SUB') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(9 + 8 * k + 1, 3)); - const v = parseInt(s.substr(9 + 8 * k + 5, 3)); - const a = this.atoms[ai - 1]; - if (a.query == null) - a.query = {}; - if (v == -1) - a.query.sub = 0; - else if (v == -2) - a.query.sub = '*'; - else - a.query.v = v; - } - } - else if (token == 'M UNS') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(9 + 8 * k + 1, 3)); - const v = parseInt(s.substr(9 + 8 * k + 5, 3)); - const a = this.atoms[ai - 1]; - if (a.query == null) - a.query = {}; - a.query.uns = v == 1; - } - } - else if (token == 'M RBC') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(9 + 8 * k + 1, 3)); - const v = parseInt(s.substr(9 + 8 * k + 5, 3)); - const a = this.atoms[ai - 1]; - if (v == -1 || v > 0) { - if (a.query == null) - a.query = {}; - a.query.rbc = v == -1 ? 0 : v; - } - } - } - else if (token == 'M RGP') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(10 + k * 8, 3)); - const rr = parseInt(s.substr(14 + k * 8, 3)); - if (isNaN(ai) || isNaN(rr)) - return null; - if (this.atoms[ai - 1].elem == 'R') { - const a = this.atoms[ai - 1]; - if (a.alias == null || a.alias == '') - a.alias = 'R' + rr; - if (rAtoms != null) - rAtoms[rr] = a; - } - } - } - else if (token == 'M APO') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(10 + k * 8, 3)); - const rr = parseInt(s.substr(14 + k * 8, 3)); - if (!isNaN(ai) && !isNaN(rr) && this.atoms[ai - 1] != null) - this.atoms[ai - 1].attachpoints.push(rr); - } - } - else if (token == 'M STY') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const si = parseInt(s.substr(10 + k * 8, 3)); - const sn = s.substr(14 + k * 8, 3); - let br = null; - if (sn == 'DAT') { - br = new JSDraw2.Text(); - } - else if (sn == 'SUP') { - br = { type: 'SUPERATOM', atoms: [] }; - } - else { - for (const ty in JSDraw2.SGroup.stys) { - if (JSDraw2.SGroup.stys[ty] == sn) { - br = new JSDraw2.Bracket(ty == '' ? null : ty, null); - break; - } - } - if (br == null) - br = new JSDraw2.Bracket(null, null); - } - if (br != null) - sgroups[si] = br; - } - } - else if (token == 'M SMT') { - const si = parseInt(s.substr(7, 3)); - let sa = s.substr(11); - if (sa.length > 0 && sa.substr(0, 1) == '^') - sa = sa.substr(1); - sgroups[si].subscript = sa; - } - else if (token == 'M SCL') { - const si = parseInt(s.substr(7, 3)); - sgroups[si].cls = s.substr(11); - } - else if (token == 'M SPL') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const ci = parseInt(s.substr(10 + k * 8, 3)); - const pi = parseInt(s.substr(14 + k * 8, 3)); - if (JSDraw2.Text.cast(sgroups[ci]) != null && JSDraw2.Bracket.cast(sgroups[pi]) != null) - sgroups[ci].anchors = [sgroups[pi]]; // text attached to bracket - } - } - else if (token == 'M SCN') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const si = parseInt(s.substr(10 + k * 8, 3)); - const conn = s.substr(14 + k * 8, 2); - if (JSDraw2.Bracket.cast(sgroups[si]) != null) - sgroups[si].conn = conn; - } - } - else if (token == 'M SNC') { - const n = parseInt(s.substr(6, 3)); - for (let k = 0; k < n; ++k) { - const si = parseInt(s.substr(10 + k * 8, 3)); - const num = scil.Utils.trim(s.substr(14 + k * 8, 2)); - if (JSDraw2.Bracket.cast(sgroups[si]) != null) { - if (sgroups[si].type == 'c') - sgroups[si].type = 'c' + num; - else if (sgroups[si].type == 'mul') - sgroups[si].type = num + ''; - } - } - } - else if (token == 'M SAL') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - if (sg != null) { - const n = parseInt(s.substr(10, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(14 + k * 4, 3)); - const a = this.atoms[ai - 1]; - if (a != null) { - if (sg.type == 'SUPERATOM') - sg.atoms.push(a); - else if (JSDraw2.Bracket.cast(sg) != null) - sg.atoms.push(a); - else if (JSDraw2.Text.cast(sg) != null) - sg.anchors.push(a); - } - } - } - } - else if (token == 'M SPA') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - if (JSDraw2.Bracket.cast(sg) != null && sg.type == 'mul') { - const n = parseInt(s.substr(10, 3)); - for (let k = 0; k < n; ++k) { - const ai = parseInt(s.substr(14 + k * 4, 3)); - const a = this.atoms[ai - 1]; - if (a != null) { - if (sg.spa == null) - sg.spa = []; - sg.spa.push(a); - } - } - } - } - else if (token == 'M SBL') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - const n = parseInt(s.substr(10, 3)); - for (let k = 0; k < n; ++k) { - const bi = parseInt(s.substr(14 + k * 4, 3)); - const b = this.bonds[bi - 1]; - if (b != null && JSDraw2.Text.cast(sg) != null) - sg.anchors.push(b); - } - } - else if (token == 'M SDI') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - const n = parseInt(s.substr(10, 3)); - if (sg != null && n == 4) { - const p1 = new JSDraw2.Point(parseFloat(s.substr(13, 10)), -parseFloat(s.substr(23, 10))); - const p2 = new JSDraw2.Point(parseFloat(s.substr(33, 10)), -parseFloat(s.substr(43, 10))); - if (p1.isValid() && p2.isValid()) { - if (sg._rect == null) - sg._rect = new JSDraw2.Rect().set(p1, p2); - else - sg._rect.unionPoint(p1).unionPoint(p2); - } - } - } - else if (token == 'M SDT') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - if (JSDraw2.Text.cast(sg) != null) - sg.fieldtype = scil.Utils.trim(s.substr(11, 30)); - } - else if (token == 'M SDD') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - if (JSDraw2.Text.cast(sg) != null) { - const p = new JSDraw2.Point(parseFloat(s.substr(11, 10)), -parseFloat(s.substr(21, 10))); - if (p.isValid()) - sg._rect = new JSDraw2.Rect(p.x, p.y, 0, 0); - } - } - else if (token == 'M SED') { - const si = parseInt(s.substr(7, 3)); - const sg = sgroups[si]; - if (JSDraw2.Text.cast(sg) != null) - sg.text = scil.Utils.trim(s.substr(11)); - } - else if (token3 == 'A ') { - const ai = parseInt(s.substr(3, 3)); - ++i; - this.atoms[ai - 1].alias = scil.Utils.trim(lines[i]); - } - else if (token3 == 'V ') { - const ai = parseInt(s.substr(3, 3)); - const v = scil.Utils.trim(s.substr(7)); - this.atoms[ai - 1].tag = v; - } - else if (token == 'M END') { - break; - } - } - const superatoms = []; - const brackets = []; - const gap = this.medBondLength(1.56) / 2; - for (let i = 0; i < sgroups.length; ++i) { - // post-process sgroups - const sg = sgroups[i]; - if (sg == null) - continue; - const br = JSDraw2.Bracket.cast(sg); - if (sg._rect != null && (br != null || sg.text != null && sg.text != '')) { - this.addGraphics(sg); - if (br != null) { - if (br.getType() != '') { - //this.setSgroup(br, "BRACKET_TYPE", br.getType(), br._rect.right() + gap / 4, br._rect.bottom() - gap); - this.setSgroup(br, 'BRACKET_TYPE', br.subscript || br.getType(), br._rect.right() + gap / 4, br._rect.bottom() - gap); - } - else - brackets.push(br); - if (br.conn != null && br.conn != '') - this.setSgroup(br, 'BRACKET_CONN', br.conn.toLowerCase(), br._rect.right() + gap / 4, br._rect.top - gap / 4); - JSDraw2.SuperAtoms.collapseRepeat(this, br); - } - else { - if (scil.Utils.endswith(sg.fieldtype, '_TYPE') && sg.fieldtype != 'BRACKET_TYPE') - sg.fieldtype = 'BRACKET_SUBTYPE'; - else if (scil.Utils.endswith(sg.fieldtype, '_MOD')) - sg.fieldtype = 'BRACKET_MOD'; - } - } - else if (sg.type == 'SUPERATOM') { - const na = new JSDraw2.Atom(null, 'C'); - const m = new JSDraw2.Mol(); - superatoms.push({ a: na, m: m }); - m.atoms = sg.atoms; - for (let k = 0; k < m.atoms.length; ++k) - scil.Utils.removeArrayItem(this.atoms, m.atoms[k]); - let p = null; - let apo = 0; - for (let j = this.bonds.length - 1; j >= 0; --j) { - const b = this.bonds[j]; - const f1 = scil.Utils.indexOf(m.atoms, b.a1); - const f2 = scil.Utils.indexOf(m.atoms, b.a2); - if (f1 >= 0 && f2 >= 0) { - m.bonds.splice(0, 0, b); - this.bonds.splice(j, 1); - } - else if (f1 >= 0) { - if (p == null) - p = b.a1.p.clone(); - b.a1.attachpoints.push(++apo); - b.apo1 = apo; - b.a1 = na; - } - else if (f2 >= 0) { - if (p == null) - p = b.a2.p.clone(); - b.a2.attachpoints.push(++apo); - b.apo2 = apo; - b.a2 = na; - } - } - na.p = p != null ? p : m.atoms[0].p.clone(); - na.superatom = m; - na.alias = sg.subscript; - switch (sg.cls) { - case 'AminoAcid': - case 'AA': - na.bio = { type: JSDraw2.BIO.AA }; - na.elem = na.alias; - na.alias = null; - break; - case 'BASE': - case 'DNA': - na.bio = { type: JSDraw2.BIO.BASE_DNA }; - na.elem = na.alias; - na.alias = null; - break; - case 'RNA': - na.bio = { type: JSDraw2.BIO.BASE_RNA }; - na.elem = na.alias; - na.alias = null; - break; - } - this._addAtom(na); - } - } - for (let i = 0; i < brackets.length; ++i) { - const br = brackets[i]; - const t = this.getSgroupText(br, 'BRACKET_TYPE'); - if (t != null) - brackets[i].type = t.text; - if (br.atoms != null) { - for (let k = 0; k < superatoms.length; ++k) { - const a = superatoms[k].a; - const m = superatoms[k].m; - if (scil.Utils.removeArrayItems(br.atoms, m.atoms) > 0) - br.atoms.push(a); - } - } - } - // set R groups: some R groups are only marked using alias - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.elem == 'C' && a.alias != null && (/^R[0-9]+$/).test(a.alias)) { - const alias = a.alias; - a.alias = null; - this.setAtomAlias(a, alias); - } - } - if (JSDraw2.defaultoptions.and_enantiomer) { - if (this.hasStereoCenter() && chiral == ' 0') - this.chiral = ChiralTypes.AND; - } - return this; - } - hasRGroup() { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.elem == 'R') - return true; - } - return false; - } - /** - * Get molfile - * @function getMolfile - * @param {bool} rxn - get it as a Rxn file - * @param {bool} v3000 - render it in Molfile V3000 format - * @returns a string - */ - getMolfile(rxn, v3000, excludeDummyBonds) { - if (v3000 == null) { - if (this.needV3000()) - v3000 = true; - } - if (v3000) - return this.getMolV3000(rxn); - else - return this.getMolV2000(rxn, excludeDummyBonds); - } - needV3000() { - return this.atoms.length > 999 || this.bonds.length > 999 || this.hasEnhancedStereochemistry(); - } - getRgfile(rxn, rgroups, superatoms) { - return null; - } - _getRgroups(rgroups) { - if (rgroups == null) - rgroups = { n: 0, list: [] }; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - a.iR = null; - if (a.elem == 'R' && (a.alias != null && a.alias != '' || a.rgroup != null)) { - a.iR = ++rgroups.n; - if (a.rgroup != null && a.rgroup.mols.length > 0) - rgroups.list.push(a); - } - } - return rgroups; - } - getSubMol(atoms) { - const m = this; - const set = { atoms: scil.clone(atoms), bonds: [], openbonds: [] }; - for (let j = 0; j < m.bonds.length; ++j) { - const b = m.bonds[j]; - const f1 = scil.Utils.indexOf(atoms, b.a1) >= 0; - const f2 = scil.Utils.indexOf(atoms, b.a2) >= 0; - if (f1 && f2) { - //if (scil.Utils.indexOf(set.atoms, b.a1) < 0) - // set.atoms.push(b.a1); - //if (scil.Utils.indexOf(set.atoms, b.a2) < 0) - // set.atoms.push(b.a2); - set.bonds.push(b); - } - else if (f1) { - //if (scil.Utils.indexOf(set.atoms, b.a1) < 0) - // set.atoms.push(b.a1); - set.openbonds.push({ b: b, oa: b.a2 }); - } - else if (f2) { - //if (scil.Utils.indexOf(set.atoms, b.a2) < 0) - // set.atoms.push(b.a2); - set.openbonds.push({ b: b, oa: b.a1 }); - } - } - return set; - } - expandSuperAtoms(superatoms2) { - const superatoms = []; - const m = this.clone(null); - const list = scil.clone(m.atoms); - for (let i = 0; i < list.length; ++i) { - const a = list[i]; - if (a.superatom != null) { - const m2 = JSDraw2.SuperAtoms.addToMol(m, a, a.superatom); - superatoms.push({ a: a, m: m2 }); - if (superatoms2 != null) - superatoms2.push({ a: a, m: m2 }); - } - else if (a.elem == '5\'') { - m.setAtomType(a, 'H'); - } - else if (a.elem == '3\'') { - m.setAtomType(a, 'O'); - } - } - for (let i = 0; i < m.graphics.length; ++i) { - const br = JSDraw2.Bracket.cast(m.graphics[i]); - if (br == null) - continue; - if (br.atoms != null && superatoms != null) { - const atoms = []; - let m2 = null; - for (let k = 0; k < br.atoms.length; ++k) { - for (let j = 0; j < superatoms.length; ++j) { - if (br.atoms[k] == superatoms[j].a) { - m2 = superatoms[j].m; - break; - } - } - if (m2 == null) { - atoms.push(br.atoms[k]); - } - else { - for (let j = 0; j < m2.atoms.length; ++j) - atoms.push(m2.atoms[j]); - } - } - br.atoms = atoms; - } - JSDraw2.SuperAtoms.expandRepeat(m, br); - } - m.calcHCount(true); - return m; - } - getMolV2000(rxn, excludeDummyBonds) { - const superatoms = []; - const m = this.expandSuperAtoms(superatoms); - m.chiral = this.chiral; - if (excludeDummyBonds) { - for (let i = m.bonds.length - 1; i >= 0; --i) { - const b = m.bonds[i]; - if (b.type == 13 /* JSDraw2.BONDTYPES.DUMMY */) - m.bonds.splice(i, 1); - } - } - const hasRgroup = false; - const rgroups = m._getRgroups(); - if (rgroups.list.length > 0) - return m.getRgfile(rxn, rgroups, superatoms); - let s = (m.name == null ? '' : m.name) + '\n'; - s += m._getMolHeader(); - s += '\n'; - s += m._getMolV2000(rxn, null, superatoms); - return s; - } - allAtoms(list) { - if (list == null) - list = []; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - list.push(a); - if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].allAtoms(list); - } - } - return list; - } - allBonds(list) { - if (list == null) - list = []; - for (let i = 0; i < this.bonds.length; ++i) - list.push(this.bonds[i]); - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.rgroup != null) { - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].allBonds(list); - } - } - return list; - } - _getMolTime() { - const dt = new Date(); - const yr = dt.getFullYear() + ''; - return scil.Utils.formatStr(dt.getMonth() + 1, 2, 0).replace(' ', '0') + - scil.Utils.formatStr(dt.getDate(), 2, 0).replace(' ', '0') + - yr.substr(2) + - scil.Utils.formatStr(dt.getHours(), 2, 0).replace(' ', '0') + - scil.Utils.formatStr(dt.getMinutes(), 2, 0).replace(' ', '0'); - } - _getMolHeader() { - const dt = new Date(); - const yr = dt.getFullYear() + ''; - return ' JSDraw2' + this._getMolTime() + '2D\n'; - } - _getMolV2000(rxn, rgroups, superatoms) { - if (rgroups != null) - this._getRgroups(rgroups); - const len = this.bondlength > 0 ? this.bondlength : this.medBondLength(); - const scale = len > 0 ? (1.56 / len) : 1.0; - let s = ''; - s += scil.Utils.formatStr(this.atoms.length, 3, 0); - s += scil.Utils.formatStr(this.bonds.length, 3, 0); - s += ' 0 0'; - if (this.hasStereoCenter() && this.chiral != 'and') - s += ' 1'; - else - s += ' 0'; - s += ' 0 0 V2000\n'; - let isotopes = ''; - let radicals = ''; - let tags = ''; - let query = ''; - let rgp = ''; - let apo = ''; - let astr = ''; - this.resetIds(); - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.isotope != null) - isotopes += 'M ISO' + ' 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.isotope, 4, 0) + '\n'; - if (a.radical >= 1 && a.radical <= 3) - radicals += 'M RAD 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.radical, 4, 0) + '\n'; - if (a.tag != null && a.tag != '') - tags += 'V ' + scil.Utils.formatStr(i + 1, 3, 0) + ' ' + a.tag + '\n'; - if (a.alias != null && a.alias != '') - astr += 'A ' + scil.Utils.formatStr(i + 1, 3, 0) + '\n' + a.alias + '\n'; - for (let k = 0; k < a.attachpoints.length; ++k) - apo += 'M APO 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.attachpoints[k], 4, 0) + '\n'; - if (a.query != null) { - if (a.query.als != null && a.query.als.length > 0) { - query += 'M ALS ' + scil.Utils.formatStr(i + 1, 3, 0) + scil.Utils.formatStr(a.query.als.length, 3, 0) + (a.query.t == false ? ' T ' : ' F '); - for (let k = 0; k < a.query.als.length; ++k) - query += scil.Utils.padRight(a.query.als[k], 4, ' '); - query += '\n'; - } - if (a.query.rbc != null) - query += 'M RBC 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.rbc == 0 ? -1 : a.query.rbc, 4, 0) + '\n'; - if (a.query.uns != null) - query += 'M UNS 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.uns ? 1 : 0, 4, 0) + '\n'; - if (a.query.sub != null) - query += 'M SUB 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.sub == 0 ? -1 : (a.query.sub == '*' ? -2 : a.query.sub), 4, 0) + '\n'; - } - let elem = a.elem; - if (a.elem == 'R') { - if (a.iR > 0) { - elem = 'R#'; - rgp += 'M RGP 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(parseInt(a.iR), 4, 0) + '\n'; - } - else { - elem = 'R'; - } - } - else if (elem == 'H') { - if (a.isotope == 2) - elem = 'D'; - else if (a.isotope == 3) - elem = 'T'; - } - s += scil.Utils.formatStr(a.p.x * scale, 10, 4); - s += scil.Utils.formatStr(-a.p.y * scale, 10, 4); - s += scil.Utils.formatStr(0, 10, 4); - s += ' '; - s += scil.Utils.padRight(elem, 2, ' '); - s += ' 0'; - let c = 0; - switch (a.charge) { - case 1: - c = 3; - break; - case 2: - c = 2; - break; - case 3: - c = 1; - break; - case -1: - c = 5; - break; - case -2: - c = 6; - break; - case -3: - c = 7; - break; - } - s += scil.Utils.formatStr(c, 3, 0); - s += ' 0'; - if (a.hs > 0) - s += scil.Utils.formatStr(a.hs, 3, 0); - else - s += ' 0'; - s += ' 0 0'; - if (a.val > 0) - s += scil.Utils.formatStr(a.val, 3, 0); - else - s += ' 0'; - s += ' 0 0'; - if (rxn && a.atommapid > 0) - s += scil.Utils.formatStr(a.atommapid, 3, 0); - else - s += ' 0'; - s += ' 0 0\n'; - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - s += scil.Utils.formatStr(b.a1.id, 3, 0); - s += scil.Utils.formatStr(b.a2.id, 3, 0); - let order = 0; - let stereo = 0; - switch (b.type) { - case 0 /* JSDraw2.BONDTYPES.UNKNOWN */: - order = 8; - break; - case 13 /* JSDraw2.BONDTYPES.DUMMY */: - order = 9; - break; - case 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */: - order = 7; - break; - case 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */: - order = 6; - break; - case 9 /* JSDraw2.BONDTYPES.SINGLEORDOUBLE */: - order = 5; - break; - case 1 /* JSDraw2.BONDTYPES.SINGLE */: - case 2 /* JSDraw2.BONDTYPES.DOUBLE */: - case 3 /* JSDraw2.BONDTYPES.TRIPLE */: - case 4 /* JSDraw2.BONDTYPES.DELOCALIZED */: - order = b.type; - stereo = 0; - break; - case 21 /* JSDraw2.BONDTYPES.PEPTIDE */: - case 22 /* JSDraw2.BONDTYPES.NUCLEOTIDE */: - case 23 /* JSDraw2.BONDTYPES.DISULFIDE */: - case 24 /* JSDraw2.BONDTYPES.AMIDE */: - order = 1; - stereo = 0; - break; - case 5 /* JSDraw2.BONDTYPES.WEDGE */: - case 14 /* JSDraw2.BONDTYPES.BOLD */: - order = 1; - stereo = 1; - break; - case 6 /* JSDraw2.BONDTYPES.HASH */: - case 15 /* JSDraw2.BONDTYPES.BOLDHASH */: - order = 1; - stereo = 6; - break; - case 7 /* JSDraw2.BONDTYPES.WIGGLY */: - order = 1; - stereo = 4; - break; - case 8 /* JSDraw2.BONDTYPES.EITHER */: - order = 2; - stereo = 3; - break; - } - s += scil.Utils.formatStr(order, 3, 0); - s += scil.Utils.formatStr(stereo, 3, 0); - s += scil.Utils.formatStr(0, 3, 0); - if (b.ring != null) - s += scil.Utils.formatStr(b.ring ? 1 : 2, 3, 0); - else - s += scil.Utils.formatStr(0, 3, 0); - s += scil.Utils.formatStr(b.rcenter == null ? 0 : b.rcenter, 3, 0); - s += '\n'; - } - s += isotopes; - s += radicals; - s += tags; - s += astr; - s += query; - s += rgp; - s += apo; - let nSTY = 0; - if (superatoms != null) { - for (let i = 0; i < superatoms.length; ++i) { - const a = superatoms[i].a; - const m = superatoms[i].m; - if (m == null) - continue; - ++nSTY; - const sty = scil.Utils.formatStr(nSTY, 3, 0); - s += 'M STY 1 ' + sty + ' SUP\n'; - s += this.writeList('M SAL ' + sty, m.atoms, 'id', 4, 8); - s += this.writeList('M SBL ' + sty, m.bonds, 'bondid', 4, 8); - s += 'M SMT ' + sty + ' ' + (a.alias == null ? a.elem : a.alias) + '\n'; - if (a.bio != null) - s += 'M SCL ' + sty + ' ' + a.biotype() + '\n'; - } - } - const texts = []; - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null) - texts.push(t); - } - // SGroup - let sgroupdata = ''; - const id = { k: nSTY }; - const brackets = []; - for (let i = 0; i < this.graphics.length; ++i) { - const br = JSDraw2.Bracket.cast(this.graphics[i]); - if (br == null) - continue; - brackets.push(br); - const r = br._rect; - let bracketatoms = null; - let bracketbonds = null; - if (br.atoms.length > 0) { - bracketatoms = this.getExpandedAtoms(br.expandedatoms == null ? br.atoms : br.expandedatoms); - bracketbonds = br.getXbonds(this); - } - const k = ++id.k; - let connectivity = null; - const sgroup = { sty: '', spl: '', data: '', id: id }; - const tp = br.getType(); - const snc = br.getTypeNum(); - sgroup.subscript = tp; - let type = JSDraw2.SGroup.stys[tp]; - if (type == null) { - if (bracketbonds != null && bracketbonds.length == 2) - type = 'SRU'; - else - type = 'GEN'; - } - sgroup.sty += ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + type; - let fieldtype = JSDraw2.SGroup.fieldtypes[tp]; - if (fieldtype == null) - fieldtype = 'BRACKET'; - const custom = type == null; - let subscript = null; - for (let j = 0; j < texts.length; ++j) { - const t = texts[j]; - if (t != null && t.anchors.length == 1 && t.anchors[0] == br) { - if (t.fieldtype == 'BRACKET_CONN') { - connectivity = t.text; - } - else if (t.fieldtype != 'BRACKET_TYPE' || t.text != tp && tp != 'mul' || custom) { - let ft = t.fieldtype; - if (fieldtype != null && ft != null && ft.length > 8 && ft.substr(0, 8) == 'BRACKET_') { - if (ft == 'BRACKET_SUBTYPE') - ft = fieldtype + '_TYPE'; - else - ft = fieldtype + ft.substr(7); - } - if (type == 'SRU') - sgroup.subscript = t.text; - else - this.getDataGroup(t.text, ft, t._rect.left * scale, -t._rect.top * scale, k, sgroup); - } - else if (t.fieldtype == 'BRACKET_TYPE' && tp == 'mul') { - subscript = t.text; - } - texts[j] = null; - } - } - sgroupdata += 'M STY' + scil.Utils.formatStr(sgroup.sty.length / 8, 3, 0) + sgroup.sty + '\n'; - //sgroupdata += "M SLB 1 1 1\n"; - if (connectivity == 'ht' || connectivity == 'hh' || connectivity == 'eu') - sgroupdata += 'M SCN' + scil.Utils.formatStr(1, 3, 0) + ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + connectivity.toUpperCase() + ' \n'; - if (snc != null) - sgroupdata += 'M SNC' + scil.Utils.formatStr(1, 3, 0) + ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + scil.Utils.padLeft(snc, 3, ' ') + ' \n'; - if (sgroup.spl != '') - sgroupdata += 'M SPL' + scil.Utils.formatStr(sgroup.spl.length / 8, 3, 0) + sgroup.spl + '\n'; - if (br.atoms.length > 0) { - sgroupdata += this.writeList('M SAL ' + scil.Utils.formatStr(k, 3, 0), bracketatoms, 'id', 4, 8); - sgroupdata += this.writeList('M SBL ' + scil.Utils.formatStr(k, 3, 0), bracketbonds, 'id', 4, 8); - if (!scil.Utils.isNullOrEmpty(sgroup.subscript) && /* I#10773 */ !(type == 'MUL' && sgroup.subscript == 'mul')) - sgroupdata += 'M SMT 1 ' + sgroup.subscript + '\n'; - const atoms = br.atoms; - if (br.type != 'n' || type == 'SRU') - sgroupdata += this.writeList('M SPA ' + scil.Utils.formatStr(k, 3, 0), atoms, 'id', 4, 8); - } - sgroupdata += 'M SDI ' + scil.Utils.formatStr(k, 3, 0) + ' 4'; - sgroupdata += scil.Utils.formatStr(br._rect.left * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(-br._rect.bottom() * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(br._rect.left * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(-br._rect.top * scale, 10, 4); - sgroupdata += '\n'; - sgroupdata += 'M SDI ' + scil.Utils.formatStr(k, 3, 0) + ' 4'; - sgroupdata += scil.Utils.formatStr(br._rect.right() * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(-br._rect.top * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(br._rect.right() * scale, 10, 4); - sgroupdata += scil.Utils.formatStr(-br._rect.bottom() * scale, 10, 4); - sgroupdata += '\n'; - if (subscript != null && subscript != '') { - sgroupdata += 'M SMT ' + scil.Utils.formatStr(k, 3, 0) + ' ' + subscript; - sgroupdata += '\n'; - } - sgroupdata += sgroup.data; - } - for (let i = 0; i < texts.length; ++i) { - const t = texts[i]; - if (t == null) - continue; - let k = id.k; - const sgroup = { sty: '', spl: '', data: '', id: id }; - this.getDataGroup(t.text, t.fieldtype, t._rect.left * scale, -t._rect.top * scale, null, sgroup); - sgroupdata += 'M STY' + scil.Utils.formatStr(sgroup.sty.length / 8, 3, 0) + sgroup.sty + '\n'; - // I#11604 - if (id.k == k) - ++id.k; - k = id.k; - let sal = ''; - let sbl = ''; - for (let j = 0; j < t.anchors.length; ++j) { - const a = t.anchors[j]; - if (JSDraw2.Atom.cast(a) != null) - sal += ' ' + scil.Utils.formatStr(a.atomid, 3, 0); - else if (JSDraw2.Bond.cast(a) != null) - sbl += ' ' + scil.Utils.formatStr(a.bondid, 3, 0); - } - if (sal != '') - sgroupdata += 'M SAL ' + scil.Utils.formatStr(k, 3, 0) + scil.Utils.formatStr(sal.length / 4, 3, 0) + sal + '\n'; - if (sbl != '') - sgroupdata += 'M SBL ' + scil.Utils.formatStr(k, 3, 0) + scil.Utils.formatStr(sbl.length / 4, 3, 0) + sbl + '\n'; - sgroupdata += sgroup.data; - } - s += sgroupdata; - s += 'M END\n'; - return s; - } - getExpandedAtoms(atoms) { - const ret = []; - for (let i = 0; i < atoms.length; ++i) { - const a = atoms[i]; - if (a.superatom == null) { - ret.push(a); - } - else { - for (let k = 0; k < a.superatom.atoms.length; ++k) - ret.push(a.superatom.atoms[i]); - } - } - return ret; - } - writeList(prefix, list, key, chars, countperline) { - if (list == null || list.Length == 0) - return ''; - let s = ''; - let countlastline = list.length % countperline; - if (countlastline == 0) - countlastline = countperline; - const lines = (list.length - countlastline) / countperline + 1; - for (let i = 0; i < lines; ++i) { - const countthisline = i + 1 == lines ? countlastline : countperline; - s += prefix; - s += scil.Utils.formatStr(countthisline, 3); - for (let j = 0; j < countthisline; ++j) - s += scil.Utils.formatStr(list[i * countperline + j][key], chars); - s += '\n'; - } - return s; - } - getMolV3000(rxn) { - const superatoms = []; - const m = this.expandSuperAtoms(superatoms); - m.chiral = this.chiral; - return m._getMolV3000(); - } - _getMolV3000(rxn) { - const len = this.bondlength > 0 ? this.bondlength : this.medBondLength(); - const scale = len > 0 ? (1.56 / len) : 1.0; - this.resetIds(); - const dt = new Date(); - const yr = dt.getFullYear() + ''; - let s = ''; - if (!rxn) { - s += (this.name == null ? '' : this.name) + '\n'; - s += ' JSDraw ' + scil.Utils.formatStr(dt.getMonth() + 1, 2, 0).replace(' ', '0') + - scil.Utils.formatStr(dt.getDate(), 2, 0).replace(' ', '0') + - yr.substr(2) + - scil.Utils.formatStr(dt.getHours(), 2, 0).replace(' ', '0') + - scil.Utils.formatStr(dt.getMinutes(), 2, 0).replace(' ', '0') + '2D\n'; - s += '\n'; - s += ' 0 0 0 999 V3000\n'; - } - const enhancedstereochemistry = this.getEnhancedStereochemistry(); - const chiral = this.hasStereoCenter() || !scil.Utils.isNullOrEmpty(enhancedstereochemistry); - s += 'M V30 BEGIN CTAB\n'; - s += 'M V30 COUNTS ' + this.atoms.length + ' ' + this.bonds.length + ' 0 0 ' + (chiral ? 1 : 0) + '\n'; - s += 'M V30 BEGIN ATOM\n'; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - let elem = a.elem; - if (elem == 'R') { - if (a.iR > 0) - elem = 'R#'; - else - elem = 'R'; - } - else if (elem == 'H') { - if (a.isotope == 2) - elem = 'D'; - else if (a.isotope == 3) - elem = 'T'; - } - s += 'M V30 ' + a.id + ' ' + elem; - s += ' ' + scil.Utils.formatStr(a.p.x * scale, 0, 4); - s += ' ' + scil.Utils.formatStr(-a.p.y * scale, 0, 4); - s += ' 0 ' + (rxn && a.atommapid > 0 ? a.atommapid : 0); - if (a.charge != null && a.charge != 0) - s += ' CHG=' + a.charge; - if (a.radical >= 1 && a.radical <= 3) - s += ' RAD=' + a.radical; - //if (chiralatoms[a.id] != null) - // s += " CFG=" + chiralatoms[a.id]; - s += '\n'; - } - s += 'M V30 END ATOM\n'; - s += 'M V30 BEGIN BOND\n'; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - let order = 0; - let stereo = 0; - switch (b.type) { - case 0 /* JSDraw2.BONDTYPES.UNKNOWN */: - order = 8; - break; - case 13 /* JSDraw2.BONDTYPES.DUMMY */: - order = 9; - break; - case 11 /* JSDraw2.BONDTYPES.DOUBLEORAROMATIC */: - order = 7; - break; - case 10 /* JSDraw2.BONDTYPES.SINGLEORAROMATIC */: - order = 6; - break; - case 9 /* JSDraw2.BONDTYPES.SINGLEORDOUBLE */: - order = 5; - break; - case 1 /* JSDraw2.BONDTYPES.SINGLE */: - case 2 /* JSDraw2.BONDTYPES.DOUBLE */: - case 3 /* JSDraw2.BONDTYPES.TRIPLE */: - case 4 /* JSDraw2.BONDTYPES.DELOCALIZED */: - order = b.type; - stereo = 0; - break; - case 5 /* JSDraw2.BONDTYPES.WEDGE */: - order = 1; - stereo = 1; - break; - case 6 /* JSDraw2.BONDTYPES.HASH */: - order = 1; - stereo = 3; - break; - case 7 /* JSDraw2.BONDTYPES.WIGGLY */: - order = 1; - stereo = 2; - break; - case 8 /* JSDraw2.BONDTYPES.EITHER */: - order = 2; - stereo = 2; - break; - } - s += 'M V30 ' + (i + 1) + ' ' + order + ' ' + b.a1.id + ' ' + b.a2.id; - if (stereo > 0) - s += ' CFG=' + stereo; - if (b.ring != null) - s += ' TOPO=' + (b.ring ? 1 : 2); - if (rxn && b.rcenter > 0) - s += ' RXCTR=' + b.rcenter; - s += '\n'; - } - s += 'M V30 END BOND\n'; - s += enhancedstereochemistry; - s += 'M V30 END CTAB\n'; - s += 'M END\n'; - return s; - } - hasStereoCenter() { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.type == 5 /* JSDraw2.BONDTYPES.WEDGE */ || b.type == 6 /* JSDraw2.BONDTYPES.HASH */) - return true; - } - return false; - } - hasEnhancedStereochemistry() { - return false; - } - getEnhancedStereochemistry() { - return ''; - } - setMolV3000(lines, start, rxn, pos, endtoken) { - return this; - } - readV30Collections(lines, i, atommap) { - } - readV30Bonds(lines, i, atommap, rxn) { - } - getChiralAtom(t) { - if (t == null || t.anchors == null || t.anchors.length != 1 || t.fieldtype != 'CHIRAL') - return null; - const a = JSDraw2.Atom.cast(t.anchors[0]); - if (a == null) - return null; - return JSDraw2.Atom.isValidChiral(t.text) ? a : null; - } - markChirality(a, c, bondlength) { - return false; - } - findBestPostion(a, bondlength) { - const atoms = a._parent.getNeighborAtoms(a); - const p = a.p.clone(); - if (atoms != null && atoms.length > 0) { - const deg = atoms[0].p.angleTo(a.p); - p.offset(bondlength * 0.37, 0); - p.rotateAround(a.p, deg - 60); - p.x -= bondlength * 0.25; - p.y -= bondlength * 0.25; - } - else { - p.x -= bondlength * 0.25; - p.y -= bondlength * 0.75; - } - return p; - } - readRxnCenter(bond, s) { - const rcenter = s == null ? null : parseInt(s); - switch (rcenter) { - case -1: - bond.rcenter = -1 /* JSDraw2.RXNCENTER.NOTCENTER */; - break; - case 1: - bond.rcenter = 1 /* JSDraw2.RXNCENTER.CENTER */; - break; - case 12: - case 13: - bond.rcenter = 12 /* JSDraw2.RXNCENTER.BREAKANDCHANGE */; - break; - case 4: - case 5: - bond.rcenter = 4 /* JSDraw2.RXNCENTER.BREAK */; - break; - case 8: - case 9: - bond.rcenter = 8 /* JSDraw2.RXNCENTER.CHANGE */; - break; - } - } - readV30Atoms(lines, i, atommap, rxn) { - } - readV30Counts(lines, i, counts) { - } - parseV30Attributes(ss, start) { - return null; - } - getDataGroup(data, key, x, y, k2, sgroup) { - } - containsWord(word) { - word = word.toLowerCase(); - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null && scil.Utils.containsWord(t.text, word, true)) - return true; - } - return false; - } - containsText(s) { - s = s.toLowerCase(); - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null && t.text != null && t.text.toLowerCase().indexOf(s) >= 0) - return true; - } - return false; - } - /** - * Get Mol property - * @function getProp - * @param {string} k - the property name - * @returns the property - */ - getProp(k) { - return this.props == null ? null : this.props[k]; - } - /** - * Set Mol property - * @function setProp - * @param {string} k - the property name - * @param {object} v - the property value - * @returns null - */ - setProp(k, v) { - if (v == null) { - if (this.props != null) - delete this.props[k]; - } - else { - if (this.props == null) - this.props = {}; - this.props[k] = v + ''; - } - } - /** - * Set RGfile - * @function setRgfile - * @param {string} rgfile - the input rgfile - * @returns the Mol object - */ - setRgfile(rgfile) { - return null; - } - _setParent(m) { - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i]._parent = m; - for (let i = 0; i < this.bonds.length; ++i) - this.bonds[i]._parent = m; - for (let i = 0; i < this.graphics.length; ++i) - this.graphics[i]._parent = m; - } - _setGroup(g) { - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i].group = g; - for (let i = 0; i < this.bonds.length; ++i) - this.bonds[i].group = g; - } - toggleAtom(p, tor) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.toggle(p, tor)) - return a; - if (a.rgroup != null) { - const list = a.rgroup.mols; - for (let j = 0; j < list.length; ++j) { - const r = list[j].toggleAtom(p, tor); - if (r != null) - return r; - } - } - } - return null; - } - toggle(p, tor) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.toggle(p, tor)) - return a; - if (a.rgroup == null) - continue; - if (a.rgroup.toggle(p, tor)) - return a.rgroup; - const list = a.rgroup.mols; - for (let j = 0; j < list.length; ++j) { - const r = list[j].toggle(p, tor); - if (r != null) - return r; - } - } - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.toggle(p, tor)) - return this.bonds[i]; - } - for (let i = this.graphics.length - 1; i >= 0; --i) { - const g = this.graphics[i]; - if (g.toggle(p, tor)) - return this.graphics[i]; - } - return null; - } - /** - * Set Rxnfile - * @function setRxnfile - * @param {string} rxnfile - the input rxnfile - * @returns the Mol object - */ - setRxnfile(rxnfile) { - return this; - } - setRxnV3000(lines) { - return this; - } - readCtabs(lines, i, n, list, endtoken) { - for (let k = 0; k < n; ++k) { - const m = new JSDraw2.Mol(); - const pos = {}; - m.setMolV3000(lines, i, true, pos, endtoken); - i = pos.i; - if (!m.isEmpty()) - list.push(m); - } - return i; - } - setRxnV2000(lines) { - return this; - } - setRxn(rxn, bondlength) { - return this; - } - /** - * Get Rxnfile - * @function getRxnfile - * @param {bool} groupbyplus - indicate if grouping reactants/products by explicit plus signs - * @param {bool} v3000 - indicate if rendering the rxnfile in V3000 format - * @returns a string - */ - getRxnfile(groupbyplus, v3000) { - const rxn = this.parseRxn(true, groupbyplus); - if (rxn == null) - return null; - if (v3000) - return this.getRxnV3000(rxn); - else - return this.getRxnV2000(rxn); - } - getAllBrackets() { - const list = []; - for (let j = 0; j < this.graphics.length; ++j) { - const b = this.graphics[j]; - if (JSDraw2.Bracket.cast(b) != null) - list.push(b); - } - return list; - } - getAllTexts() { - const list = []; - for (let j = 0; j < this.graphics.length; ++j) { - const b = this.graphics[j]; - if (JSDraw2.Text.cast(b) != null) - list.push(b); - } - return list; - } - getRxnV2000(rxn) { - return null; - } - getRxnV3000(rxn, groupbyplus) { - return null; - } - /** - * Get JSDraw xml file format - * @function getXml - * @param {number} width - the width of the view - * @param {number} height - the height of the view - * @param {bool} viewonly - in viewonly mode - * @returns a string - */ - getXml(width, height, viewonly, svg, len) { - return this._getXml(width, height, viewonly, svg, len); - } - getHtml(width, height, viewonly, svg, len) { - return this.getXml(width, height, viewonly, svg, len); - } - _getXml(width, height, viewonly, svg, len, inside) { - return null; - } - /** - * Set Secptrum JDX data - * @function setJdx - * @param {string} data - JDX string - * @returns a Mol object - */ - setJdx(data, bondlength) { - return this; - } - /** - * Set JSDraw xml file format - * @function setXml - * @param {string} xml - the input JSDraw html/xml string - * @returns a Mol object - */ - setXml(xml) { - return this; - } - setHtml(xml) { - return this.setXml(xml); - } - toScreen(screenBondLength) { - let len = this.medBondLength(); - if (!(len > 0)) - len = 1.56; - const scale = screenBondLength / len; - this.scale(scale); - return scale; - } - /** - * Scale the molecule - * @function scale - * @param {number} scale - the scaling factor - * @param {Point} origin - the origin of scaling - * @returns null - */ - scale(scale, origin) { - if (!(scale > 0)) - return; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - a.p.scale(scale, origin); - if (a.rgroup != null) { - if (a.rgroup != null) - a.rgroup.scale(scale, origin); - for (let j = 0; j < a.rgroup.mols.length; ++j) - a.rgroup.mols[j].scale(scale, origin); - } - } - for (let i = 0; i < this.graphics.length; ++i) - this.graphics[i].scale(scale, origin); - } - /** - * Flip the molecule around an X axis - * @function flipX - * @param {number} x - the x axis - * @returns null - */ - flipX(x) { - for (let i = 0; i < this.atoms.length; ++i) { - const p = this.atoms[i].p; - p.x = x - (p.x - x); - } - for (let i = 0; i < this.graphics.length; ++i) - this.graphics[i].flipX(x); - } - /** - * Flip the molecule around a Y axis - * @function flipY - * @param {number} y - the y axis - * @returns null - */ - flipY(y) { - for (let i = 0; i < this.atoms.length; ++i) { - const p = this.atoms[i].p; - p.y = y - (p.y - y); - } - for (let i = 0; i < this.graphics.length; ++i) - this.graphics[i].flipY(y); - } - clearFlag() { - for (let i = 0; i < this.atoms.length; ++i) { - this.atoms[i].f = null; - this.atoms[i].ringclosures = null; - } - for (let i = 0; i < this.bonds.length; ++i) - this.bonds[i].f = null; - } - _connectFragsByPlus(frags, bondlen) { - return null; - } - _splitFrags(frags) { - for (let i = 0; i < frags.length; ++i) { - const ss = frags[i].splitFragments(); - if (ss.length > 0) { - frags.splice(i, 1); - for (let k = 0; k < ss.length; ++k) - frags.splice(i, 0, ss[k]); - i += ss.length - 1; - } - } - } - _connectNextLine(frags, rect, above, arrow, bondlen) { - return null; - } - detectRxn(arrow) { - return null; - } - _findCloseTexts(t, texts, dy, ret) { - for (let k = 0; k < texts.length; ++k) { - const x = texts[k]; - if (x == null) - continue; - const r1 = t.rect(); - const r2 = x.rect(); - if (Math.abs(r1.top - r2.top) < dy || Math.abs(r1.top - r2.bottom()) < dy || - Math.abs(r1.bottom() - r2.top) < dy || Math.abs(r1.bottom() - r2.bottom()) < dy) { - const overlap = Math.min(r1.right(), r2.right()) - Math.max(r1.left, r2.left); - if (overlap >= Math.min(r1.width, r2.width) / 2) { - ret.push(x); - texts[k] = null; - } - } - } - } - parseRxn2() { - return null; - } - /** - * Test if the molecule is a reaction - * @function isRxn - * @returns true or false - */ - isRxn() { - return null; - } - _groupByPlus(rxn) { - if (rxn == null) - return rxn; - const pluses = []; - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].T == 'PLUS') - pluses.push(this.graphics[i]); - } - if (pluses.length == 0) { - if (rxn.reactants.length > 1) { - for (let i = 1; i < rxn.reactants.length; ++i) - rxn.reactants[0].mergeMol(rxn.reactants[i]); - rxn.reactants = [rxn.reactants[0]]; - } - if (rxn.products.length > 1) { - for (let i = 1; i < rxn.products.length; ++i) - rxn.products[0].mergeMol(rxn.products[i]); - rxn.products = [rxn.products[0]]; - } - } - else { - // order by x - const xx = []; - for (let i = 0; i < pluses.length; ++i) { - const x = pluses[i].p.x; - let p = xx.length; - for (let k = 0; k < xx.length; ++k) { - if (x < xx[k]) { - p = k; - break; - } - } - xx.splice(p, 0, x); - } - rxn.reactants = this._groupByPlus2(xx, rxn.reactants); - rxn.products = this._groupByPlus2(xx, rxn.products); - } - return rxn; - } - _groupByPlus2(pluses, mols) { - const list = []; - const n = pluses.length; - for (let i = 0; i < mols.length; ++i) { - const m = mols[i]; - const cx = mols[i].center().x; - let f = false; - for (let k = 0; k < n; ++k) { - if (cx < pluses[k]) { - if (list[k] == null) - list[k] = m; - else - list[k].mergeMol(m); - f = true; - break; - } - } - if (!f) { - if (list[n] == null) - list[n] = m; - else - list[n].mergeMol(m); - } - } - const ret = []; - for (let i = 0; i < list.length; ++i) { - if (list[i] != null) - ret.push(list[i]); - } - return ret; - } - /** - * Parse the molecule as a reaction - * @function parseRxn - * @returns a Reaction object: { reactants, products, arrow, above, below } - */ - parseRxn(copygraphics, groupbyplus) { - let rxn = this._parseRxn(); - if (groupbyplus) - rxn = this._groupByPlus(rxn); - // if (rxn != null && copygraphics) { - // var brackets = this.getAllBrackets(); - // var texts = this.getAllTexts(); - // this._addGraphicsRxnMol(rxn.reactants, brackets, texts); - // this._addGraphicsRxnMol(rxn.products, brackets, texts); - // } - return rxn; - } - _addGraphicsRxnMol(mols, brackets, texts) { - for (let i = 0; i < mols.length; ++i) { - const m = mols[i]; - for (let k = 0; k < brackets.length; ++k) { - const b = brackets[k]; - if (b != null && b.allAtomsIn(m)) { - m.graphics.push(b); - brackets[k] = null; - } - } - for (let k = 0; k < texts.length; ++k) { - const b = texts[k]; - if (b != null && b.allAnchorsIn(m)) { - m.graphics.push(b); - brackets[k] = null; - } - } - } - } - _parseRxn() { - return null; - } - _hasOverlap(left, right, rect) { - const l = rect.left; - const r = rect.right(); - return l < right && r > left; - } - _sortTextByTop(texts) { - if (texts == null || texts.length == 0) - return texts; - const yy = []; - const sorted = []; - for (let i = 0; i < texts.length; ++i) { - const y = texts[i]._rect.top; - let p = yy.length; - for (let k = 0; k < yy.length; ++k) { - if (y < yy[k]) { - p = k; - break; - } - } - yy.splice(p, 0, y); - sorted.splice(p, 0, texts[i]); - } - return sorted; - } - /** - * Get the whole fragment containing an input atom - * @function getFragment - * @param {Atom} a - the input atom - * @returns a Mol object - */ - getFragment(a, parent) { - this.setAtomBonds(); - this.clearFlag(); - const tree = this._getTree(a).tree; - const path = []; - tree.list(path, 'breadthfirst'); - const m = new JSDraw2.Mol(); - for (let k = 0; k < path.length; ++k) { - const b = path[k]; - if (b.a != null && b.ringclosure == null) - m._addAtom(b.a, parent); - if (b.b != null) - m._addBond(b.b, parent); - } - return m; - } - /** - * Split it into fragments - * @function splitFragments - * @returns an array of Mol - */ - splitFragments(skipHiddenAtoms) { - this.clearFlag(); - let fragid = -1; - const bonds = scil.Utils.cloneArray(this.bonds); - while (bonds.length > 0) { - const b = bonds[0]; - if (skipHiddenAtoms) { - if (b.a1.hidden || b.a2.hidden) { - bonds.splice(0, 1); - continue; - } - } - b.f = b.a1.f = b.a2.f = ++fragid; - bonds.splice(0, 1); - while (true) { - let n = 0; - for (let i = bonds.length - 1; i >= 0; --i) { - const b = bonds[i]; - if (b.a1.hidden || b.a2.hidden) { - bonds.splice(i, 1); - continue; - } - if (b.f == null && (b.a1.f == fragid || b.a2.f == fragid)) { - b.f = b.a1.f = b.a2.f = fragid; - bonds.splice(i, 1); - ++n; - } - } - if (n == 0) - break; - } - } - const frags = []; - for (let k = 0; k <= fragid; ++k) { - const m = new JSDraw2.Mol(); - frags.push(m); - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].f == k) - m._addAtom(this.atoms[i], this); - } - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i].f == k) - m._addBond(this.bonds[i], this); - } - } - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].f == null) { - if (skipHiddenAtoms && this.atoms[i].hidden) - continue; - const m = new JSDraw2.Mol(); - frags.push(m); - m._addAtom(this.atoms[i], this); - } - } - // brackets - for (let i = 0; i < this.graphics.length; ++i) { - const br = JSDraw2.Bracket.cast(this.graphics[i]); - if (br == null) - continue; - for (let k = 0; k < frags.length; ++k) { - if (br.atoms == null || br.atoms.length == 0) - continue; - if (frags[k].containsAllAtoms(br.atoms)) { - frags[k].graphics.push(br); - for (let j = 0; j < this.graphics.length; ++j) { - const t = JSDraw2.Text.cast(this.graphics[j]); - if (t != null && t.anchors != null && t.anchors.length == 1 && t.anchors[0] == br) - frags[k].graphics.push(t); - } - } - } - } - // attached texts - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t == null || t.anchors == null || t.anchors.length == 0) - continue; - for (let k = 0; k < frags.length; ++k) { - if (frags[k].containsAllAtoms(t.anchors)) - frags[k].graphics.push(t); - } - } - // set chiral flags - for (let i = 0; i < frags.length; ++i) { - const frag = frags[i]; - for (let j = 0; j < frag.atoms.length; ++j) { - const g = frag.atoms[j].group; - if (g != null && g.type == 'chiral') { - frag.chiral = true; - break; - } - } - } - for (let i = 0; i < frags.length; ++i) - frags[i].bondlength = this.bondlength; - return frags; - } - containsAllAtoms(atoms) { - if (atoms == null || atoms.length == 0) - return false; - for (let i = 0; i < atoms.length; ++i) { - if (scil.Utils.indexOf(this.atoms, atoms[i]) < 0) - return false; - } - return true; - } - /** - * Check if the Mol contains an atom - * @function containsAtom - * @param {Atom} a - the input atom - * @returns true or false - */ - containsAtom(a) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i] == a) - return true; - } - return false; - } - setAtomBonds(clear) { - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i].bonds = null; - if (clear) - return; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.a1.bonds == null) - b.a1.bonds = []; - b.a1.bonds.push(b); - if (b.a2.bonds == null) - b.a2.bonds = []; - b.a2.bonds.push(b); - } - } - setBondOrders() { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - b.order = b.valence(); - } - if (DEBUG.enable) { - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - DEBUG.print(b.a1.id + '-' + b.a2.id + ' ' + b.order); - } - } - const rings = this._getRings(); - const ars = []; - while (rings.length > 0) { - let n = 0; - for (let i = rings.length - 1; i >= 0; --i) { - const r = rings[i]; - if (this.isAromaticRing(r)) { - ++n; - ars.push(r); - rings.splice(i, 1); - for (let k = 0; k < r.length; ++k) - r[k].order = 1.5; - } - } - if (n == 0) - break; - } - return { arrings: ars, rings: rings }; - } - isAromaticRing(r) { - if (r.length == 6) { - let b1 = r[0]; - for (let k = 1; k <= r.length; ++k) { - const b2 = r[k == r.length ? 0 : k]; - if (!(b1.order == 1 && b2.order == 2 || - b1.order == 2 && b2.order == 1 || - b1.order == 1.5 && b2.order >= 1 && b2.order <= 2 || - b2.order == 1.5 && b1.order >= 1 && b1.order <= 2)) { - return false; - } - b1 = b2; - } - return true; - } - if (r.length == 5) { - let b1 = r[0]; - for (let k = 1; k <= r.length; ++k) { - const b2 = r[k == r.length ? 0 : k]; - if (b1.order == 1 && b2.order == 1) { - let v; - if (b1.a1 == b2.a1 || b1.a1 == b2.a2) - v = b1.a1; - else if (b1.a2 == b2.a1 || b1.a2 == b2.a2) - v = b1.a2; - if (v != null && - (r[(k + 1) % 5].order == 2 || r[(k + 1) % 5].order == 1.5) && - r[(k + 2) % 5].order == 1 && - (r[(k + 3) % 5].order == 2 || r[(k + 3) % 5].order == 1.5)) { - if (v.elem == 'N' || v.elem == 'O' || v.elem == 'S' || v.elem == 'P') { - return true; - } - else if (v.elem == 'C') { - for (let i = 0; i < v.bonds.length; ++i) { - const order = v.bonds[i].order; - if (order == 1.5 || order == 2) - return true; - } - } - } - return false; - } - b1 = b2; - } - return false; - } - return false; - } - prepareScreen() { - const atoms = JSDraw2.FormulaParser.getAtomStats(this).elements; - const allrings = this.setBondOrders(); - const bonds = { 0: 0, 1: 0, 1.5: 0, 2: 0, 3: 0 }; - for (let i = 0; i < this.bonds.length; ++i) - ++bonds[this.bonds[i].order]; - const rings = { n5: 0, a5: 0, n6: 0, a6: 0 }; - for (let i = 0; i < allrings.arrings.length; ++i) { - if (allrings.arrings[i].length == 5) - ++rings.a5; - else if (allrings.arrings[i].length == 6) - ++rings.a6; - } - for (let i = 0; i < allrings.rings.length; ++i) { - if (allrings.rings[i].length == 5) - ++rings.n5; - else if (allrings.rings[i].length == 6) - ++rings.n6; - } - return { atoms: atoms, bonds: bonds, rings: rings }; - } - clearAtomMap(ai) { - let n = 0; - if (ai == null) { - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].atommapid != null) { - ++n; - this.atoms[i].atommapid = null; - } - } - } - else { - for (let i = 0; i < this.atoms.length; ++i) { - if (ai == this.atoms[i].atommapid) { - ++n; - this.atoms[i].atommapid = null; - } - } - } - return n; - } - getMaxMapId() { - let maxid = 0; - const list = this.atoms; - for (let i = 0; i < list.length; ++i) { - if (list[i].atommapid != null && list[i].atommapid >= maxid) - maxid = list[i].atommapid; - } - return maxid + 1; - } - screen(target, fullstructure) { - if (this.stats == null) - this.stats = this.prepareScreen(); - if (target.stats == null) - target.stats = target.prepareScreen(); - const atomsq = this.stats.atoms; - const atomst = target.stats.atoms; - let at = atomst['*'] == null ? 0 : atomst['*']; - at += atomst['A'] == null ? 0 : atomst['A']; - at += atomst['X'] == null ? 0 : atomst['X']; - at += atomst['Q'] == null ? 0 : atomst['Q']; - at += atomst['L'] == null ? 0 : atomst['L']; - for (const e in atomsq) { - if (e == 'H' || e == '*' || e == 'A' || e == 'X' || e == 'Q' || e == 'L') - continue; - if (fullstructure && !(atomsq[e] == atomst[e]) || !fullstructure && !(atomsq[e] <= atomst[e] + at)) - return false; - } - const bondsq = this.stats.bonds; - const bondst = target.stats.bonds; - for (const e in bondsq) { - if (fullstructure && !(bondsq[e] == bondst[e]) || !fullstructure && !(bondsq[e] <= bondst[e])) - return false; - } - return fullstructure && - this.stats.rings.a5 == target.stats.rings.a5 && - this.stats.rings.n5 == target.stats.rings.n5 && - this.stats.rings.a6 == target.stats.rings.a6 && - this.stats.rings.n6 == target.stats.rings.n6 || - !fullstructure && - this.stats.rings.a5 <= target.stats.rings.a5 && - this.stats.rings.n5 <= target.stats.rings.n5 && - this.stats.rings.a6 <= target.stats.rings.a6 && - this.stats.rings.n6 <= target.stats.rings.n6; - } - /** - * Perform a full-structure search - * @function fullstructureMatch - * @param {Mol} target - the target mol - * @returns true or false - */ - fullstructureMatch(target, matchstereobonds) { - if (target == null || this.atoms.length != target.atoms.length || - this.bonds.length != target.bonds.length || this.getMolWeight() != target.getMolWeight()) - return false; - return this.aamap(target, true, null, matchstereobonds) != null; - } - getBrackets() { - const list = []; - for (let i = 0; i < this.graphics.length; ++i) { - const b = JSDraw2.Bracket.cast(this.graphics[i]); - if (b != null) { - list.push(b); - b.sgrouptexts = this.getSgroupTexts(b); - } - } - return list; - } - // todo: match included atoms as well - matchBrackets(target) { - const list1 = this.getBrackets(); - const list2 = target == null ? [] : target.getBrackets(); - if (list1.length != list2.length) - return false; - for (let i = 0; i < list1.length; ++i) { - let f = false; - for (let k = 0; k < list2.length; ++k) { - if (list1[i].sgrouptexts == list2[k].sgrouptexts) { - f = true; - break; - } - } - if (f != null) - return false; - } - return true; - } - /** - * Perform a sub-structure search using the Mol as a query - * @function substructureMatch - * @param {Mol} target - the target mol - * @returns true or false - */ - substructureMatch(target) { - return this.aamap(target, false) != null; - } - /** - * Perform atom-by-atom mapping using the Mol as a query - * @function aamap - * @param {Mol} target - the target mol - * @param {bool} fullstructure - indicate if performing a full-structure search - * @param {bool} highlighting - indicate if highlighting mapped atoms and bonds - * @returns the map result as a dictionary - */ - aamap(target, fullstructure, highlighting, matchsterebonds) { - const map = this.aamap2(target, fullstructure, matchsterebonds); - if (highlighting) { - target.setColor(map == null ? null : 'black'); - if (map != null) { - for (let i = 0; i < map.atoms.length; ++i) - map.atoms[i].t.color = 'red'; - for (let i = 0; i < map.bonds.length; ++i) - map.bonds[i].t.color = 'red'; - } - } - return map; - } - aamap2(target, fullstructure, matchsterebonds) { - if (DEBUG.enable) { - DEBUG.clear(); - } - if (!this.screen(target, fullstructure)) { - if (DEBUG.enable) - DEBUG.print('screen failed'); - return null; - } - const path = this._bfPath(); - target.setAtomBonds(); - target.clearFlag(); - this.clearFlag(); - let i = 0; - while (i < path.length) { - let f = false; - let n = path[i]; - if (n.b == null) { // start of new fragment - for (let j = (n.f == null ? 0 : (n.f + 1)); j < target.atoms.length; ++j) { - const t = target.atoms[j]; - n.f = j; - if (t.f == null && JSDraw2.Atom.match(t, n.a)) { - f = true; - n.a.f = t; - t.f = n.a; - break; - } - } - } - else if (n.ringclosure != null) { // ring closure - const b = target.findBond(n.b.a1.f, n.b.a2.f); - if (b != null && n.b.order == b.order && (!matchsterebonds || n.b.type == b.type)) { - f = true; - b.f = n.b; - n.b.f = b; - } - } - else { - const st = n.f == null ? 0 : n.f + 1; - const t = n.startAtom().f; - for (let k = st; k < t.bonds.length; ++k) { - n.f = k; - const b = t.bonds[k]; - const oa = b.otherAtom(t); - if (b.f == null && oa.f == null && n.b.order == b.order && (!matchsterebonds || n.b.type == b.type) && JSDraw2.Atom.match(n.a, oa)) { - f = true; - n.a.f = oa; - oa.f = n.a; - n.b.f = b; - b.f = n.b; - break; - } - } - } - if (f) { - // step next - ++i; - if (DEBUG.enable) { - let s = ''; - if (n.a != null) - s += n.a.id + ' -> ' + n.a.f.id + ' '; - if (n.b != null) - s += n.b.a1.id + '-' + n.b.a2.id + ' -> ' + n.b.f.a1.id + '-' + n.b.f.a2.id; - DEBUG.print(s); - } - } - else { - // then back-trace - if (n.b != null && n.b.f != null) { - n.b.f.f = null; - n.b.f = null; - } - if (n.a != null && n.a.f != null) { - n.a.f.f = null; - n.a.f = null; - } - n.f = null; - if (--i < 0) { - if (DEBUG.enable) - DEBUG.print('failed'); - return null; - } - n = path[i]; - if (n.b != null && n.b.f != null) { - n.b.f.f = null; - n.b.f = null; - } - if (n.a != null && n.a.f != null) { - n.a.f.f = null; - n.a.f = null; - } - if (DEBUG.enable) - DEBUG.print('trace back'); - } - } - if (DEBUG.enable) - DEBUG.print('succeed'); - const atommap = []; - for (let i = 0; i < this.atoms.length; ++i) - atommap.push({ q: this.atoms[i], t: this.atoms[i].f }); - const bondmap = []; - for (let i = 0; i < this.bonds.length; ++i) - bondmap.push({ q: this.bonds[i], t: this.bonds[i].f }); - return { atoms: atommap, bonds: bondmap }; - } - _setAromaticFlag() { - for (let i = 0; i < this.atoms.length; ++i) - this.atoms[i].aromatic = false; - for (let i = 0; i < this.bonds.length; ++i) { - const b = this.bonds[i]; - if (b.type == 4 /* JSDraw2.BONDTYPES.DELOCALIZED */) - b.a1.aromatic = b.a2.aromatic = true; - } - } - /** - * Get SMILES - * @function getSmiles - * @returns a string - */ - getSmiles() { - return null; - } - _getSmiles() { - return null; - } - _getRings() { - // if (DEBUG.enable) { - // DEBUG.clear(); - // } - const rings = []; - this.setAtomBonds(); - this.clearFlag(); - for (let i = 0; i < this.atoms.length; ++i) { - this.clearFlag(); - for (let j = 0; j < i; ++j) - this.atoms[j].f = 'ex'; - const start = this.atoms[i]; - const ret = this._getTree(start); - if (ret.ri == 0) - continue; - const path = []; - ret.tree.list(path, 'breadthfirst'); - for (let k = 0; k < path.length; ++k) { - const b = path[k]; - if (b.depth > 3) - break; - if (b.ringclosure != null) { - const ring = [b.b]; - rings.push(ring); - let a = b.startAtom(); - let n = k; - while (a != start) { - for (let j = n - 1; j > 0; --j) { - const t = path[j]; - if (t.a == a) { - ring.push(t.b); - a = t.startAtom(); - n = j; - break; - } - } - } - a = b.a; - n = k; - while (a != start) { - for (let j = n - 1; j > 0; --j) { - const t = path[j]; - if (t.a == a) { - ring.splice(0, 0, t.b); - a = t.startAtom(); - n = j; - break; - } - } - } - } - } - } - // if (DEBUG.enable) { - // for (let i = 0; i < rings.length; ++i) { - // DEBUG.print("ring:" + i); - // var r = rings[i]; - // for (let j = 0; j < r.length; ++j) { - // var s = " " + r[j].a1.id + "-" + r[j].a2.id; - // DEBUG.print(s); - // } - // } - // } - return rings; - } - _bfPath() { - const ss = []; - const trees = this._getTrees(); - for (let i = 0; i < trees.length; ++i) - trees[i].list(ss, 'breadthfirst'); - return ss; - } - _getTrees() { - this.setAtomBonds(); - this.clearFlag(); - const starts = []; - let ri = 0; - while (true) { - let start = null; - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.f == null && !a.isMarkedStereo()) { - start = a; - break; - } - } - if (start == null) { - for (let i = 0; i < this.atoms.length; ++i) { - const a = this.atoms[i]; - if (a.f == null /* && !a.isMarkedStereo() */) { - start = a; - break; - } - } - } - if (start == null) - break; - const ret = this._getTree(start, ri); - starts.push(ret.tree); - ri = ret.ri; - } - return starts; - } - // breadthfirst - _getTree(a, ri) { - if (ri == null) - ri = 0; - const start = new JSDraw2.BA(null, a, null); - start.depth = 0; - start.a.f = true; - const stack = new JSDraw2.Stack(); - stack.push(start); - let ba; - while ((ba = stack.popHead()) != null) { - const bonds = ba.a.bonds; - if (bonds == null) - continue; - for (let i = 0; i < bonds.length; ++i) { - const b = bonds[i]; - if (b.f) - continue; - b.f = true; - let next = null; - const oa = b.otherAtom(ba.a); - if (oa.f == 'ex') - continue; - if (oa.f == null) { - oa.f = true; - next = new JSDraw2.BA(b, oa, null); - stack.push(next); - } - else { - ++ri; - if (oa.f == true && oa.ringclosures == null) - oa.ringclosures = []; - oa.ringclosures.push({ ri: ri, next: new JSDraw2.BA(b, ba.a, ri) }); - next = new JSDraw2.BA(b, oa, ri); - } - ba.addNext(next); - } - } - return { tree: start, ri: ri }; - } - // depth-first - _getPath(b) { - const stack = new JSDraw2.Stack(); - stack.push({ b: b, a: b.a1.bonds.length > b.a2.bonds.length ? b.a1 : b.a2 }); - b.a1.f = true; - const path = []; - while ((b = stack.pop()) != null) { - if (b.b.f) - continue; - path.push(b); - if (b.a.f) - b.ringclosure = true; - b.b.f = b.a.f = true; - const bonds = b.a.bonds; - for (let i = bonds.length - 1; i >= 0; --i) { - if (!bonds[i].f) - stack.push({ b: bonds[i], a: bonds[i].otherAtom(b.a) }); - } - } - return path; - } - /** - * Get molecular formula - * @function getFormula - * @param {bool} html - indicate if rendering the formula in HTML format - * @returns a string - */ - getFormula(html) { - const rxn = this.parseRxn(); - if (rxn == null) - return this._getFormula(html); - let s = ''; - if (rxn.arrow != null) { - for (let i = 0; i < rxn.reactants.length; ++i) - s += (i > 0 ? ' + ' : '') + rxn.reactants[i]._getFormula(html); - s += html ? ' → ' : ' ---> '; - for (let i = 0; i < rxn.products.length; ++i) - s += (i > 0 ? ' + ' : '') + rxn.products[i]._getFormula(html); - return s; - } - else { - for (let i = 0; i < rxn.reactants.length; ++i) - s += (i > 0 ? ' + ' : '') + rxn.reactants[i]._getFormula(html); - } - return s; - } - _getFormula(html) { - const m = this.expandSuperAtoms(); - const stats = JSDraw2.FormulaParser.getAtomStats(m); - return JSDraw2.FormulaParser.stats2mf(stats, html); - } - /** - * Get molecular weight - * @function getMolWeight - * @returns a number - */ - getMolWeight() { - const mw = this.getMixtureMW(); - if (mw > 0) - return mw; - if (this.hasGenericAtom()) - return null; - const m = this.expandSuperAtoms(); - const stats = JSDraw2.FormulaParser.getAtomStats(m); - const sum = JSDraw2.FormulaParser.stats2mw(stats); - return sum == null ? null : Math.round(sum * 10000) / 10000; - } - getMixtureMW() { - for (let i = 0; i < this.graphics.length; ++i) { - const br = JSDraw2.Bracket.cast(this.graphics[i]); - if (br == null || !(br.type == '' || br.type == null)) - continue; - const t = this.getSgroupText(br, 'POLYMER_MW'); - if (t == null) - continue; - const s = scil.Utils.trim(t.text); - if (s != null && scil.Utils.startswith(s, 'mw=')) { - const n = s.substr(3); - return parseFloat(n); - } - } - return null; - } - /** - * Get exact mass - * @function getExactMass - * @returns a number - */ - getExactMass() { - if (this.hasGenericAtom()) - return null; - const m = this.expandSuperAtoms(); - const stats = JSDraw2.FormulaParser.getAtomStats(m); - const sum = JSDraw2.FormulaParser.stats2em(stats); - return sum == null ? null : Math.round(sum * 10000) / 10000; - } - getAllBonds(a) { - const ret = []; - const bonds = this.bonds; - for (let i = 0; i < bonds.length; ++i) { - if (bonds[i].a1 == a || bonds[i].a2 == a) - ret.push(bonds[i]); - } - return ret; - } - getAllBondAtoms(a) { - const ret = []; - const bonds = this.bonds; - for (let i = 0; i < bonds.length; ++i) { - if (bonds[i].a1 == a) - ret.push(bonds[i].a2); - else if (bonds[i].a2 == a) - ret.push(bonds[i].a1); - } - return ret; - } - countSelected() { - let n = 0; - for (let i = 0; i < this.atoms.length; ++i) { - if (this.atoms[i].selected) - ++n; - } - for (let i = 0; i < this.bonds.length; ++i) { - if (this.bonds[i].selected) - ++n; - } - for (let i = 0; i < this.graphics.length; ++i) { - if (this.graphics[i].selected) - ++n; - } - return n; - } - setSgroup(br, fieldtype, v, x, y) { - if (v == '') - v = null; - if (fieldtype == 'BRACKET_TYPE' && v == 'mul' && br.subscript != null && br.subscript != '') { - v = br.subscript; - br.subscript = null; - } - let t = this.getSgroupText(br, fieldtype); - if (v == null) { - if (t != null) { - this.delGraphics(t); - return t; - } - } - else { - if (t != null) { - if (t.text != v) { - t.text = v; - return t; - } - } - else { - const r = new JSDraw2.Rect(x, y, 0, 0); - t = new JSDraw2.Text(r, v); - t.fieldtype = fieldtype; - t.anchors.push(br); - br._parent.addGraphics(t); - return t; - } - } - return null; - } - getSgroupText(br, fieldtype) { - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null && t.fieldtype == fieldtype && t.anchors.length == 1 && t.anchors[0] == br) - return t; - } - return null; - } - getSgroupTexts(br) { - const ss = []; - for (let i = 0; i < this.graphics.length; ++i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null && t.anchors.length == 1 && t.anchors[0] == br) - ss.push(t.text); - } - if (ss.length == 0) - return null; - ss.sort(); - return scil.Utils.array2str(ss, '; '); - } - removeTags(br, fieldtypes) { - let n = 0; - for (let i = this.graphics.length - 1; i >= 0; --i) { - const t = JSDraw2.Text.cast(this.graphics[i]); - if (t != null && t.anchors.length == 1 && t.anchors[0] == br && fieldtypes.indexOf(t.fieldtype + ',') >= 0) { - this.delGraphics(t); - ++n; - } - } - return n; - } -} -JSDraw2.Mol = Mol; -var JsMol = Mol; - - -/***/ }), - -/***/ "./src/Point.ts": -/*!**********************!*\ - !*** ./src/Point.ts ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Plus: () => (/* binding */ Plus), -/* harmony export */ Point: () => (/* binding */ Point), -/* harmony export */ PointInt: () => (/* binding */ PointInt) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -/** - * Point class - define a position on the screen - * @class scilligence.JSDraw2.Point - */ -class PointInt { - /** - * @constructor Point - * @param {number} x - * @param {number} y - */ - constructor(x, y) { - this.x = isNaN(x) ? 0 : x; - this.y = isNaN(y) ? 0 : y; - } - /** - * Check if the x, y values are valid number - * @function isValid - * @returns true or false - */ - isValid() { - return !isNaN(this.x) && !isNaN(this.y); - } - /** - * Get the length from the Point to the origin (0, 0) - * @function length - * @returns a number - */ - length() { - return Math.sqrt(this.x * this.x + this.y * this.y); - } - /** - * Get the distance from this Point to another Point (p) - * @function distTo - * @param {Point} p - the other point - * @returns a number - */ - distTo(p) { - const dx = this.x - p.x; - const dy = this.y - p.y; - return Math.sqrt(dx * dx + dy * dy); - } - /** - * Test if this point is on the line composing of p1-p2 - * @function onLine - * @param {Point} p1 - the first point of the line - * @param {Point} p2 - the second point of the line - * @param {number} tor - the tolerance - * @returns true or false - */ - onLine(p1, p2, tor) { - const d2 = p1.distTo(p2); - const d = p1.distTo(this) + p2.distTo(this) - d2; - return Math.abs(d) <= tor * (50 / d2); - } - inTriangle(v1, v2, v3) { - const b1 = JSDraw2.Point.sign(this, v1, v2) < 0.0; - const b2 = JSDraw2.Point.sign(this, v2, v3) < 0.0; - const b3 = JSDraw2.Point.sign(this, v3, v1) < 0.0; - return b1 == b2 && b2 == b3; - } - flip(p1, p2) { - const a0 = p2.angleTo(p1); - const a = this.angleTo(p1) - a0; - return this.rotateAround(p1, -2 * a); - } - /** - * Move the Point - * @function offset - * @param {number} dx - offset x - * @param {number} dy - offset y - * @returns the Point itself - */ - offset(dx, dy) { - this.x += dx; - this.y += dy; - return this; - } - offset2(d) { - this.x += d.x; - this.y += d.y; - return this; - } - /** - * Scale the point around an origin - * @function offset - * @param {number} scale - the scale factor - * @param {Point} origin - the origin - * @returns the Point itself - */ - scale(s, origin) { - if (origin != null) { - this.x = (this.x - origin.x) * s + origin.x; - this.y = (this.y - origin.y) * s + origin.y; - } - else { - this.x *= s; - this.y *= s; - } - return this; - } - /** - * Reverse the point - * @function reverse - * @returns the Point itself - */ - reverse() { - this.x = -this.x; - this.y = -this.y; - return this; - } - /** - * Clone the point - * @function clone - * @returns a new Point object - */ - clone() { - return new JSDraw2.Point(this.x, this.y); - } - /** - * Test if this Point equals to the other one - * @function equalsTo - * @param {Point} p - the other Point - * @returns true or false - */ - equalsTo(p) { - return p != null && this.x == p.x && this.y == p.y; - } - /** - * Get the angle of the point from X axis - * @function angle - * @returns a number in degree - */ - angle() { - const a = Math.atan2(this.y, this.x) * 180 / Math.PI; - return a < 0 ? (a + 360) : a; - } - /** - * Get the angle with a Point as the origin - * @function angleTo - * @param {Point} origin - the origin - * @returns a number in degree - */ - angleTo(origin) { - const a = Math.atan2(this.y - origin.y, this.x - origin.x) * 180 / Math.PI; - return a < 0 ? (a + 360) : a; - } - /** - * Get the angle of p1-(this)-p2 - * @function angleAsOrigin - * @param {Point} p1 - the first point - * @param {Point} p2 - the second point - * @returns a number in degree - */ - angleAsOrigin(p1, p2) { - const v1 = p1.clone().offset(-this.x, -this.y); - const v2 = p2.clone().offset(-this.x, -this.y); - const a = v2.angle() - v1.angle(); - return a < 0 ? (a + 360) : a; - } - middleAngle(p1, p2) { - const a1 = p1.angleTo(this); - const a2 = p2.angleTo(this); - let mid = (a1 + a2) / 2; - if (Math.abs(a1 - a2) > 180) { - mid += 180; - if (mid >= 360) - mid -= 360; - } - return mid; - } - /** - * Rotate the point around the origin - * @function rotate - * @param {number} deg - the degree to be rotated - * @returns the Point itself - */ - rotate(deg) { - const d = this.length(); - if (d == 0) - return this; - const a = this.angle(); - this.x = d * Math.cos((a + deg) * Math.PI / 180); - this.y = d * Math.sin((a + deg) * Math.PI / 180); - return this; - } - /** - * Rotate the point around a point - * @function rotateAround - * @param {Point} origin - the origin - * @param {number} deg - the degree to be rotated - * @returns the Point itself - */ - rotateAround(origin, deg, len) { - this.offset(-origin.x, -origin.y) - .rotate(deg) - .offset(origin.x, origin.y); - if (len > 0) - this.setLength(len, origin); - return this; - } - setLength(len, origin) { - if (origin == null) - return this.scale(len / this.length()); - this.offset(-origin.x, -origin.y); - this.scale(len / this.length()); - return this.offset(origin.x, origin.y); - } - toString(scale) { - if (!(scale > 0)) - scale = 1.0; - return (this.x * scale).toFixed(3) + " " + (-this.y * scale).toFixed(3); - } - shrink(origin, delta) { - const d = this.distTo(origin); - const s = (d - delta) / d; - this.x = (this.x - origin.x) * s + origin.x; - this.y = (this.y - origin.y) * s + origin.y; - return this; - } - equalMove(start) { - const d = Math.abs(this.x - start.x); - if (this.y > start.y) - this.y = start.y + d; - else - this.y = start.y - d; - } -} -class Point extends PointInt { - static fromString(s) { - const ss = s.split(' '); - if (ss.length != 2) - return null; - const x = parseFloat(ss[0]); - const y = -parseFloat(ss[1]); - if (isNaN(x) || isNaN(y)) - return null; - return new JSDraw2.Point(x, y); - } - static centerOf(p1, p2) { - return new JSDraw2.Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2); - } - static sign(p1, p2, p3) { - return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y); - } - static _onSegment(p, q, r) { - if (q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y)) - return true; - return false; - } - static _orientation(p, q, r) { - // See 10th slides from following link for derivation of the formula - // http://www.dcs.gla.ac.uk/~pat/52233/slides/Geometry1x1.pdf - const val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); - if (val == 0) - return 0; // colinear - return (val > 0) ? 1 : 2; // clock or counterclock wise - } - static intersect(p1, q1, p2, q2) { - // Find the four orientations needed for general and - // special cases - const o1 = this._orientation(p1, q1, p2); - const o2 = this._orientation(p1, q1, q2); - const o3 = this._orientation(p2, q2, p1); - const o4 = this._orientation(p2, q2, q1); - // General case - if (o1 != o2 && o3 != o4) - return true; - // Special Cases - // p1, q1 and p2 are colinear and p2 lies on segment p1q1 - if (o1 == 0 && this._onSegment(p1, p2, q1)) - return true; - // p1, q1 and p2 are colinear and q2 lies on segment p1q1 - if (o2 == 0 && this._onSegment(p1, q2, q1)) - return true; - // p2, q2 and p1 are colinear and p1 lies on segment p2q2 - if (o3 == 0 && this._onSegment(p2, p1, q2)) - return true; - // p2, q2 and q1 are colinear and q1 lies on segment p2q2 - if (o4 == 0 && this._onSegment(p2, q1, q2)) - return true; - return false; // Doesn't fall in any of the above cases - } -} -class Plus { - constructor(p) { - this.p = p; - } - rect() { - throw new Error('Not implemented'); - } - clone(map) { - throw new Error('Not implemented'); - } - draw(surface, linewidth, m, fontsize) { - throw new Error('Not implemented'); - } -} -JSDraw2.Point = Point; -JSDraw2.Plus = Plus; - - -/***/ }), - -/***/ "./src/Rect.ts": -/*!*********************!*\ - !*** ./src/Rect.ts ***! - \*********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CornerTypes: () => (/* binding */ CornerTypes), -/* harmony export */ Rect: () => (/* binding */ Rect) -/* harmony export */ }); -////////////////////////////////////////////////////////////////////////////////// -// -// JSDraw.Lite -// Copyright (C) 2018 Scilligence Corporation -// http://www.scilligence.com/ -// -// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0) -// -////////////////////////////////////////////////////////////////////////////////// -var CornerTypes; -(function (CornerTypes) { - CornerTypes["TOPLEFT"] = "topleft"; - CornerTypes["TOPRIGHT"] = "topright"; - CornerTypes["BOTTOMLEFT"] = "bottomleft"; - CornerTypes["BOTTOMRIGHT"] = "bottomright"; -})(CornerTypes || (CornerTypes = {})); -/** - * Rect class - define a Rectangle on the screen - * @class scilligence.JSDraw2.Rect - */ -class Rect { - /** - * @constructor Rect - * @param {number} left - * @param {number} top - * @param {number} width - * @param {number} height - */ - constructor(left, top, width, height) { - this.left = isNaN(left) ? 0 : left; - this.top = isNaN(top) ? 0 : top; - this.width = isNaN(width) ? 0 : width; - this.height = isNaN(height) ? 0 : height; - } - /** - * Set Rect based on two points - * @function set - * @param {Point} p1 - the first point - * @param {Point} p2 - the second point - * @returns the Rect itelf - */ - set(p1, p2) { - this.left = Math.min(p1.x, p2.x); - this.top = Math.min(p1.y, p2.y); - this.width = Math.abs(p1.x - p2.x); - this.height = Math.abs(p1.y - p2.y); - return this; - } - /** - * Get the top-left corner of the Rect - * @function topleft - * @returns a Point object - */ - topleft() { - return new JSDraw2.Point(this.left, this.top); - } - /** - * Get the top-right corner of the Rect - * @function topright - * @returns a Point object - */ - topright() { - return new JSDraw2.Point(this.right(), this.top); - } - /** - * Get the bottom-left corner of the Rect - * @function bottomleft - * @returns a Point object - */ - bottomleft() { - return new JSDraw2.Point(this.left, this.bottom()); - } - /** - * Get the bottom-right corner of the Rect - * @function bottomright - * @returns a Point object - */ - bottomright() { - return new JSDraw2.Point(this.right(), this.bottom()); - } - fourPoints() { - return [this.topleft(), this.topright(), this.bottomleft(), this.bottomright()]; - } - /** - * Clone this Rect - * @function clone - * @returns a new Rect object - */ - clone() { - return new JSDraw2.Rect(this.left, this.top, this.width, this.height); - } - /** - * Check if the Rect is empty - * @function isEmpty - * @returns true or false - */ - isEmpty() { - return !(this.width > 0 && this.height > 0); - } - /** - * Test if the Rect area contains a Point - * @function contains - * @param {Point} p - the point to be tested - * @returns true or false - */ - contains(p) { - return p.x >= this.left && p.x <= this.right() && p.y >= this.top && p.y <= this.bottom(); - } - /** - * Get the right coordinate - * @function right - * @returns a number - */ - right() { - return this.left + this.width; - } - /** - * Get the bottom coordinate - * @function bottom - * @returns a number - */ - bottom() { - return this.top + this.height; - } - /** - * Get the center of the Rect - * @function center - * @returns the center as a Point object - */ - center() { - return new JSDraw2.Point(this.left + this.width / 2, this.top + this.height / 2); - } - centerLeft() { - return new JSDraw2.Point(this.left, this.top + this.height / 2); - } - centerRight() { - return new JSDraw2.Point(this.right(), this.top + this.height / 2); - } - centerTop() { - return new JSDraw2.Point(this.left + this.width / 2, this.top); - } - centerBottom() { - return new JSDraw2.Point(this.left + this.width / 2, this.bottom()); - } - /** - * Offset the rect - * @function offset - * @param {number} dx - the x offset - * @param {number} dy - the y offset - * @returns the rect itself - */ - offset(dx, dy) { - this.left += dx; - this.top += dy; - return this; - } - /** - * Scale the rect - * @function scale - * @param {number} s - the scaling factor - * @param {Point} origin - the base Point - * @returns the rect itself - */ - scale(s, origin) { - if (origin != null) { - this.left = (this.left - origin.x) * s + origin.x; - this.top = (this.top - origin.y) * s + origin.y; - } - else { - this.left *= s; - this.top *= s; - } - this.width *= s; - this.height *= s; - return this; - } - /** - * Union another Point - * @function unionPoint - * @param {Point} p - the Point to be unioned - * @returns the rect itself - */ - unionPoint(p) { - if (p.x < this.left) { - this.width += this.left - p.x; - this.left = p.x; - } - else if (p.x > this.right()) { - this.width += p.x - this.right(); - } - if (p.y < this.top) { - this.height += this.top - p.y; - this.top = p.y; - } - else if (p.y > this.bottom()) { - this.height += p.y - this.bottom(); - } - return this; - } - /** - * Union another Rect - * @function union - * @param {Rect} r - the Rect to be unioned - * @returns the rect itself - */ - union(r) { - if (r == null) - return; - const right = this.right(); - const bottom = this.bottom(); - if (r.left < this.left) - this.left = r.left; - if (r.top < this.top) - this.top = r.top; - this.width = Math.max(right, r.right()) - this.left; - this.height = Math.max(bottom, r.bottom()) - this.top; - return this; - } - /** - * Inflate the Rect - * @function inflate - * @param {number} dx - the delta in x direction - * @param {number} dy - the delta in y direction - * @returns the rect itself - */ - inflate(dx, dy) { - if (dy == null) - dx = dy; - if (this.width + 2 * dx < 0) - dx = -this.width / 2; - if (this.height + 2 * dy < 0) - dy = -this.height / 2; - this.offset(-dx, -dy); - this.width += 2 * dx; - this.height += 2 * dy; - return this; - } - distance2Point(p) { - const r = this.right(); - const b = this.bottom(); - let d = new JSDraw2.Point(this.left, this.top).distTo(p); - d = this._minDist(d, p, this.left + this.width / 2, this.top); - d = this._minDist(d, p, r, this.top); - d = this._minDist(d, p, r, this.top + this.height / 2); - d = this._minDist(d, p, r, b); - d = this._minDist(d, p, this.left + this.width / 2, b); - d = this._minDist(d, p, this.left, b); - d = this._minDist(d, p, this.left, this.height / 2); - return d; - } - _minDist(d, p, x, y) { - return Math.min(d, new JSDraw2.Point(x, y).distTo(p)); - } - cross(p1, p2) { - const c1 = this.contains(p1); - const c2 = this.contains(p2); - if (c1 && c2) - return 0; - else if (c1 && !c2) - return -2; - else if (!c1 && c2) - return 2; - const a = p2.angleTo(p1); - const aa = []; - aa[0] = new JSDraw2.Point(this.left, this.top).angleTo(p1) - a; - aa[1] = new JSDraw2.Point(this.right(), this.top).angleTo(p1) - a; - aa[2] = new JSDraw2.Point(this.right(), this.bottom()).angleTo(p1) - a; - aa[3] = new JSDraw2.Point(this.left, this.bottom()).angleTo(p1) - a; - for (let i = 0; i < aa.length; ++i) { - if (aa[i] < 0) - aa[i] += 360; - } - aa.sort(function (a, b) { return a - b; }); - if (aa[0] < 90 && aa[3] > 270) - return 1; - if (aa[0] > 90 && aa[0] < 180 && aa[3] > 180 && aa[3] < 270) - return -1; - return 0; - } - /** - * Convert the Rect into a string - * @function toString - * @param {number} scale - the scale factor - * @returns a string - */ - toString(scale) { - if (!(scale > 0)) - scale = 1.0; - return (this.left * scale).toFixed(3) + " " + - (-this.bottom() * scale).toFixed(3) + " " + - (this.width * scale).toFixed(3) + " " + - (this.height * scale).toFixed(3); - } - cornerTest(p, tor) { - if (Math.abs(p.x - this.left) < tor && Math.abs(p.y - this.top) < tor) - return CornerTypes.TOPLEFT; - if (Math.abs(p.x - this.right()) < tor && Math.abs(p.y - this.top) < tor) - return CornerTypes.TOPRIGHT; - if (Math.abs(p.x - this.left) < tor && Math.abs(p.y - this.bottom()) < tor) - return CornerTypes.BOTTOMLEFT; - if (Math.abs(p.x - this.right()) < tor && Math.abs(p.y - this.bottom()) < tor) - return CornerTypes.BOTTOMRIGHT; - return null; - } - moveCorner(corner, d) { - switch (corner) { - case "topleft": - this.set(this.topleft().offset(d.x, d.y), this.bottomright()); - break; - case "topright": - this.set(this.topright().offset(d.x, d.y), this.bottomleft()); - break; - case "bottomleft": - this.set(this.bottomleft().offset(d.x, d.y), this.topright()); - break; - case "bottomright": - this.set(this.bottomright().offset(d.x, d.y), this.topleft()); - break; - } - } - // -- static -- - static fromString(s) { - if (s == null) - return null; - const ss = s.split(' '); - if (ss.length != 4) - return null; - const left = parseFloat(ss[0]); - const top = parseFloat(ss[1]); - const wd = parseFloat(ss[2]); - const ht = parseFloat(ss[3]); - if (isNaN(left) || isNaN(top) || isNaN(wd) || isNaN(ht)) - return null; - return new JSDraw2.Rect(left, -top - ht, wd, ht); - } - ; -} -JSDraw2.Rect = Rect; - - -/***/ }), - -/***/ "./src/types/jsdraw2.ts": -/*!******************************!*\ - !*** ./src/types/jsdraw2.ts ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CommandTypes: () => (/* binding */ CommandTypes), -/* harmony export */ MoleculeTypes: () => (/* binding */ MoleculeTypes), -/* harmony export */ ShapeTypes: () => (/* binding */ ShapeTypes), -/* harmony export */ TextKeywords: () => (/* binding */ TextKeywords) -/* harmony export */ }); -const MoleculeTypes = ["SmallMolecule", "Polymer", "Peptide", "DNA", "RNA", "ADC", "ChemicalReagent"]; -const TextKeywords = ["°C", "rt", "reflux", "hr", "min", "sec", "psi", "atm", "overnight", "microwave", "Δ"]; -// export type BondType = `${BondTypes}`; -const AlignTypes = new class { - constructor() { - this.RIGHT = 0; - this.BOTTOM = 1; - this.LEFT = 2; - this.TOP = 3; - } -}(); -const AntibodyTypes = new class { - constructor() { - this.IgG = 'IgG'; - this.Fab = 'Fab'; - this.ScFv = 'ScFv'; - } -}(); -const BioTypes = new class { - constructor() { - this.AA = 'AA'; - //BASE: 'BASE'; - this.ANTIBODY = 'ANTIBODY'; - this.PROTEIN = 'PROTEIN'; - this.GENE = 'GENE'; - this.DNA = 'DNA'; - this.RNA = 'RNA'; - this.BASE_DNA = 'BASEDNA'; - this.BASE_RNA = 'BASERNA'; - } -}(); -// const BioTypes = new class { -// AA = 'AA'; -// //BASE= 'BASE', -// ANTIBODY = 'ANTIBODY'; -// PROTEIN = 'PROTEIN'; -// GENE = 'GENE'; -// DNA = 'DNA'; -// RNA = 'RNA'; -// BASE_DNA = 'BASEDNA'; -// BASE_RNA = 'BASERNA'; -// }(); -var ShapeTypes; -(function (ShapeTypes) { - ShapeTypes["LINE"] = "line"; - ShapeTypes["RECT"] = "rect"; - ShapeTypes["CIRCLE"] = "circle"; - ShapeTypes["SQUARE"] = "square"; - ShapeTypes["ELLIPSE"] = "ellipse"; - ShapeTypes["POLYGON"] = "polygon"; -})(ShapeTypes || (ShapeTypes = {})); -var CommandTypes; -(function (CommandTypes) { - CommandTypes["ABOUT"] = "about"; - CommandTypes["JSDRAW"] = "jsdraw"; - CommandTypes["INKCLEARALL"] = "inkclearall"; -})(CommandTypes || (CommandTypes = {})); - - -/***/ }), - -/***/ "./src/types/mol-handler.ts": -/*!**********************************!*\ - !*** ./src/types/mol-handler.ts ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ defaultMolHandlerOptions: () => (/* binding */ defaultMolHandlerOptions) -/* harmony export */ }); -const defaultMolHandlerOptions = new class { - constructor() { - this.showimplicithydrogens = true; - } -}; - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -/*!************************!*\ - !*** ./src/package.ts ***! - \************************/ -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ initJsDrawLite: () => (/* binding */ initJsDrawLite) -/* harmony export */ }); -async function initJsDrawLite() { - const logPrefix = 'JSDrawLite: _package.initJsDrawLite()'; - console.debug(`${logPrefix}, start`); - window.jsDraw2$ = window.jsDraw2$ || {}; - if (!window.jsDraw2$.initPromise) { - window.jsDraw2$.initPromise = (async () => { - console.debug(`${logPrefix}, IN`); - // console.debug(`${logPrefix}, dojo.ready(), before`); - // await timeout(new Promise((resolve, reject) => { - // try { - // if (window.dojo.config.afterOnLoad) { - // console.debug(`${logPrefix}, dojo.config.afterOnLoad already`); - // resolve(); - // } - // - // dojo.require('dojo/ready')(() => { - // console.debug(`${logPrefix}, dojo.ready(), callback`); - // resolve(); - // }); - // } catch (err: any) { - // reject(err); - // } - // }), 20000, 'dojo.ready() callback timeout 20000 ms'); - console.debug(`${logPrefix}, loadModules(), before`); - await loadModules(); - console.debug(`${logPrefix}, loadModules(), after`); - console.debug(`${logPrefix}, OUT`); - })(); - } - console.debug(`${logPrefix}, end`); - return window.jsDraw2$.initPromise; -} -async function loadModules() { - // Based on _merge.lite.bat - __webpack_require__(/*! ./Core.js */ "./src/Core.js"); // defines window.scilligence (scil) - __webpack_require__(/*! ./Utils.js */ "./src/Utils.js"); - __webpack_require__(/*! ./JSDraw.Core.js */ "./src/JSDraw.Core.js"); - __webpack_require__(/*! ./JSDraw.Lite.js */ "./src/JSDraw.Lite.js"); - __webpack_require__(/*! ./PT.Lite.js */ "./src/PT.Lite.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Atom */ "./src/Atom.ts")); - __webpack_require__(/*! ./BA.js */ "./src/BA.js"); - __webpack_require__(/*! ./Base64.js */ "./src/Base64.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Bond */ "./src/Bond.ts")); - __webpack_require__(/*! ./JSDrawIO.js */ "./src/JSDrawIO.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Mol */ "./src/Mol.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Point */ "./src/Point.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Rect */ "./src/Rect.ts")); - __webpack_require__(/*! ./Stack.js */ "./src/Stack.js"); - __webpack_require__(/*! ./SuperAtoms.js */ "./src/SuperAtoms.js"); - __webpack_require__(/*! ./FormulaParser.js */ "./src/FormulaParser.js"); - __webpack_require__(/*! ./Toolbar.js */ "./src/Toolbar.js"); - __webpack_require__(/*! ./Lasso.js */ "./src/Lasso.js"); - __webpack_require__(/*! ./Drawer.js */ "./src/Drawer.js"); - __webpack_require__(/*! ./Language.js */ "./src/Language.js"); - __webpack_require__(/*! ./IDGenerator.js */ "./src/IDGenerator.js"); - __webpack_require__(/*! ./Skin.js */ "./src/Skin.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./JSDraw.Editor */ "./src/JSDraw.Editor.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./JSDraw.MolHandler */ "./src/JSDraw.MolHandler.ts")); - __webpack_require__(/*! ./JSDraw.Table.js */ "./src/JSDraw.Table.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./Bracket */ "./src/Bracket.ts")); // File not found - __webpack_require__(/*! ./Group.js */ "./src/Group.js"); - __webpack_require__(/*! ./Text.js */ "./src/Text.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../form/Lang */ "./form/Lang.ts")); - __webpack_require__(/*! ../form/Menu.js */ "./form/Menu.js"); - __webpack_require__(/*! ../form/ContextMenu.js */ "./form/ContextMenu.js"); - __webpack_require__(/*! ../form/Dialog.js */ "./form/Dialog.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../form/Form */ "./form/Form.ts")); - __webpack_require__(/*! ../form/AutoComplete.js */ "./form/AutoComplete.js"); - __webpack_require__(/*! ../form/Progress.js */ "./form/Progress.js"); - __webpack_require__(/*! ../form/Table.js */ "./form/Table.js"); - __webpack_require__(/*! ../form/Tree.js */ "./form/Tree.js"); - __webpack_require__(/*! ../form/DropdownInput.js */ "./form/DropdownInput.js"); - __webpack_require__(/*! ../form/Popup.js */ "./form/Popup.js"); - __webpack_require__(/*! ../form/UploadFile.js */ "./form/UploadFile.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../form/Tab */ "./form/Tab.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../form/TabbedForm */ "./form/TabbedForm.ts")); - __webpack_require__(/*! ../form/FieldNumber.js */ "./form/FieldNumber.js"); - __webpack_require__(/*! ../form/Chart.js */ "./form/Chart.js"); - __webpack_require__(/*! ../form/Clipboard.js */ "./form/Clipboard.js"); - __webpack_require__(/*! ../form/Accordion.js */ "./form/Accordion.js"); - __webpack_require__(/*! ../form/DnD.js */ "./form/DnD.js"); - __webpack_require__(/*! ../form/Resizable.js */ "./form/Resizable.js"); - __webpack_require__(/*! ../form/Favorite.js */ "./form/Favorite.js"); - __webpack_require__(/*! ../form/DropdownButton.js */ "./form/DropdownButton.js"); - __webpack_require__(/*! ../form/App.Lite.js */ "./form/App.Lite.js"); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page */ "./page/Page.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Custom */ "./page/Page.Custom.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Explorer */ "./page/Page.Explorer.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.ExplorerForm */ "./page/Page.ExplorerForm.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Form */ "./page/Page.Form.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Tab */ "./page/Page.Tab.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Table */ "./page/Page.Table.ts")); - await Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../page/Page.Tree */ "./page/Page.Tree.ts")); - __webpack_require__(/*! ../Scilligence.JSDraw2.Resources.js */ "./Scilligence.JSDraw2.Resources.js"); -} -// //name: ensureLoadJsDrawLite -// export async function ensureLoadJsDrawLite(): Promise { -// _package.logger.debug(`Package '${_package.friendlyName}' ensure load.`); -// } -window.jsDraw2$ = window.jsDraw2$ || {}; -window.jsDraw2$.initPromise = (async () => { - await initJsDrawLite(); -})(); - -})(); - -jsdrawlite = __webpack_exports__; -/******/ })() -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtZHJhdy1saXRlLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7Ozs7Ozs7Ozs7O0FDdFlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLEdBQUc7QUFDSCxDQUFDOzs7Ozs7Ozs7OztBQzFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxNQUFNLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7Ozs7Ozs7Ozs7O0FDdlBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsUUFBUTtBQUNsQjtBQUNBO0FBQ0EsdURBQXVELHFCQUFxQjtBQUM1RTtBQUNBLDhCQUE4Qix5REFBeUQ7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxVQUFVO0FBQ3hCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsb0RBQW9EO0FBQzNILHlHQUF5RyxxQkFBcUI7QUFDOUgsc0VBQXNFLEtBQUsscUJBQXFCO0FBQ2hHLHlFQUF5RSxnRkFBZ0Y7QUFDekosNkVBQTZFLEtBQUssdURBQXVEO0FBQ3pJLHNIQUFzSCxtQkFBbUI7QUFDekksOERBQThELGdDQUFnQztBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ3pGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQSx1QkFBdUI7QUFDdkIsR0FBRztBQUNILENBQUM7Ozs7Ozs7Ozs7O0FDMUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwQ0FBMEM7QUFDaEUsc0JBQXNCO0FBQ3RCO0FBQ0EsNkNBQTZDLDhCQUE4QjtBQUMzRTtBQUNBO0FBQ0EsMkJBQTJCLDhCQUE4QixJQUFJLDhCQUE4QjtBQUMzRixPQUFPO0FBQ1A7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix1RUFBdUU7QUFDakcsMEJBQTBCLHVDQUF1Qyx1Q0FBdUM7QUFDeEcsMEJBQTBCLG1EQUFtRDtBQUM3RSw0QkFBNEI7QUFDNUI7QUFDQSx1Q0FBdUMsa0NBQWtDLDZCQUE2QixJQUFJLGdCQUFnQixHQUFHO0FBQzdIO0FBQ0EsNkJBQTZCLGtEQUFrRDtBQUMvRSxXQUFXO0FBQ1gsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkIsYUFBYSxNQUFNO0FBQ25CLGFBQWEsWUFBWSxZQUFZO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUNBQXFDLE9BQU8sSUFBSSxVQUFVLElBQUk7QUFDOUQ7QUFDQSxhQUFhLFlBQVk7QUFDekIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsT0FBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxzQkFBc0IsT0FBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGlCQUFpQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQscUJBQXFCO0FBQ3hFO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGVBQWU7QUFDNUIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxzSEFBc0g7QUFDakw7QUFDQTtBQUNBLHNHQUFzRyxtRUFBbUU7QUFDeks7QUFDQSw0REFBNEQ7QUFDNUQsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCw2Q0FBNkM7QUFDN0YsZ0RBQWdELDZDQUE2QztBQUM3RixzQkFBc0Isb0JBQW9CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDViwyR0FBMkcsc0JBQXNCO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsd0NBQXdDO0FBQy9GO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxRQUFRO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQ0FBa0M7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwQkFBMEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGtCQUFrQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGtCQUFrQjtBQUNyRDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsaUJBQWlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsaUJBQWlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsaUJBQWlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxpQkFBaUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsaUJBQWlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsOENBQThDO0FBQ3ZFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsOENBQThDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHVEQUF1RDtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdUJBQXVCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsSUFBSSxZQUFZLElBQUk7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFlBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esc0NBQXNDLElBQUk7QUFDMUM7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFlBQVk7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxZQUFZO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsUUFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLFFBQVE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUM1eEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDRCQUE0QjtBQUMzRCwrQkFBK0IsK0JBQStCO0FBQzlELCtCQUErQiwyQkFBMkI7QUFDMUQsK0JBQStCLGdDQUFnQztBQUMvRDtBQUNBO0FBQ0EsNEJBQTRCLG9CQUFvQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1QkFBdUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRjtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQ2xKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7OztBQy9CRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxXQUFXLDZEQUE2RCxtREFBbUQsY0FBYyxtQkFBbUIsU0FBUztBQUNsTDtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLFFBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix3QkFBd0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQUksc0NBQXNDO0FBQ25ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUN4QixLQUFLO0FBQ0w7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix1QkFBdUI7QUFDdkI7QUFDQSx3QkFBd0I7QUFDeEIsS0FBSztBQUNMO0FBQ0EsWUFBWSx1Q0FBdUM7QUFDbkQ7QUFDQSx1QkFBdUIsa0hBQWtIO0FBQ3pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUMxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNB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QUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGNBQWMsUUFBUTtBQUN0QixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGNBQWMsUUFBUTtBQUN0QixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixjQUFjLGVBQWU7QUFDN0IsY0FBYyxZQUFZLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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O0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBSSx1QkFBdUI7QUFDNUMsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFB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O0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsOEJBQThCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw4QkFBOEI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDLENBQUM7WUFDNUMsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksUUFBUSxJQUFJLFdBQVcsRUFBRTtZQUNsQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksUUFBUSxJQUFJLFVBQVUsRUFBRTtZQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEQsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjthQUFNLElBQUksUUFBUSxJQUFJLFdBQVcsRUFBRTtZQUNsQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjthQUFNLElBQUksUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUNoQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0MsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjthQUFNLElBQUksUUFBUSxJQUFJLE1BQU0sSUFBSSxRQUFRLElBQUksVUFBVSxJQUFJLFFB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S0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLElBQUksQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDO1lBQ1YsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLElBQUksQ0FBQztZQUNWLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNY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SSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFckQsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUNuRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLHVIQUF1SDtZQUN2SCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTztnQkFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU07Z0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7O2dCQUUvRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFD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QUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RNLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDck0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNySixPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3RKO2FBQU0sSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDekMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7WUFDckksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBQyxDQUFDO2lCQUM1RCxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1NBQ3hHO2FBQU0sSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsRyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ2YsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3JFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM5RyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBQyxDQUFDO2lCQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDO2lCQUNoQixTQUFTLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRyxJQUFJLENB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QUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNoRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDOUMsTUFBTTt3QkFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSTs0QkFDckIsSUFBSSxHQUFHLElBQUksSUFBSTtnQ0FDYixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDM0YsSUFBSSxDQUFDLElBQUksSUFBSTtnQ0FDWCxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM3RixJQUFJLENBQUMsSUFBSSxJQUFJO2dDQUNYLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNsRyxJQUFJLENBQUMsSUFBSSxJQUFJO2dDQUNYLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3pHLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUNiLE1BQU07d0JBQ1IsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU07NEJBQ3ZCLElBQUksR0FBRyxJQUFJLElBQUk7Z0NBQ2IsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzNGLElBQUksQ0FBQyxJQUFJLElBQUk7Z0NBQ1gsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM1RCxJQUFJLENBQUMsSUFBSSxJQUFJO2dDQUNYLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2hHLElBQUksQ0FBQyxJQUFJLElBQUk7Z0NBQ1gsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM5SSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDaEUsTUFBTTt3QkFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRzs0QkFDcEIsSUFBSSxHQUFHLElBQUksSUFBSTtnQ0FDYixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDM0YsSUFBSSxDQUFDLElBQUksSUFBSTtnQ0FDWCxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDN0QsSUFBSSxDQUFDLElBQUksSUFBSTtnQ0FDWCxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pHLElBQUksQ0FBQyxJQUFJLElBQUk7Z0NBQ1gsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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LEVBQUUsR0FBUztRQUN2SSxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlFO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFH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QUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNoQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2hCLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRTtZQUN4QixPQUFPO1FBRVQsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUU7WUFDNUMsVUFBVTtZQUNWLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsR0FBRyxFQUFFLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FB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QUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN6SSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQ3JELENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUk7aUJBQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sd0NBQStCLEVBQUU7Z0JBQ3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzFJO2lCQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLG1DQUEyQixFQUFFO2dCQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMxSTtpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxvQ0FBNEIsRUFBRTtnQkFDbEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNsSDtpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyw2Q0FBb0MsRUFBRTtnQkFDMUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakgsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxL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QyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdEMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEI7YUFBTTtZQUNMLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QztRQUVELEtBQUssSUFBSSxD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QztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDUixNQUFNO2dCQUNSLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssR0FBRztvQkFDTixDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUNSLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFO29CQUNMLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ1QsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDUixNQUFNO2dCQUNSLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssR0FBRztvQkFDTixDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUNSLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ1IsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEdBQUc7b0JBQ04sQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDUixNQUFNO2dCQUNSLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssR0FBRztvQkFDTixDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUNSLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ1QsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEdBQUc7b0JBQ04sQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDUixNQUFNO2dCQUNSLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssR0FBRztvQkFDTixDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUNSLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ1IsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFL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QyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDdEYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNoRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNoRixJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxL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QUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsR0FBZSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sQ0FBQyxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDN0MsTUFBTSxDQUFDLEdBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHO2dCQUNaLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ2Q7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRztnQkFDWixHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNkO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLElB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RUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyRDtpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN2TSw2Q0FBNkM7Z0JBQzdDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFB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QUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDcEksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJO29CQUNyQixLQUFLLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNwSCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUk7b0JBQ3JCLEtBQUssSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDaks7WUFFRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ1osSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDWixHQUFHLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDdEg7cUJBQU07b0JBQ0wsSUFBSSxHQUFHLEdBQUcsQ0FBQztpQkFDWjthQUNGO2lCQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLElBQUksR0FBRyxHQUFHLENBQUM7cUJBQ1IsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQ3JCLElBQUksR0FBRyxHQUFHLENBQUM7YUFDZDtZQUVELENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNULENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsSUFBSSxLQUFLLENBQUM7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVixRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQztvQkFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNOLE1BQU07Z0JBQ1IsS0FBSyxDQUFDO29CQUNKLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ04sTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDTixNQUFNO2dCQUNSLEtBQUssQ0FBQyxDQUFDO29CQUNMLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ04sTUFBTTtnQkFDUixLQUFLLENBQUMsQ0FBQztvQkFDTCxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNOLE1BQU07Z0JBQ1IsS0FBSyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDTixNQUFNO2FBQ1A7WUFDRCxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVuQyxDQUFDLElBQUksS0FBSyxDQUFDO1lBQ1gsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7Z0JBQ1YsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztnQkFFdEMsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUViLENBQUMsSUFBSSxRQUFRLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDWCxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O2dCQUV2QyxDQUFDLElBQUksS0FBSyxDQUFDO1lBRWIsQ0FBQyxJQUFJLFFBQVEsQ0FBQztZQUNkLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQztnQkFDeEIsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztnQkFFN0MsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUNiLENBQUMsSUFBSSxVQUFVLENBQUM7U0FDakI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4QixDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNoQjtvQkFDRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE1BQU07Z0JBQ1I7b0JBQ0UsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDVixNQUFNO2dCQUNSO29CQUNFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQ1YsTUFBTTtnQkFDUjtvQkFDRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE1BQU07Z0JBQ1I7b0JBQ0UsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDVixNQUFNO2dCQUNSLHNDQUE4QjtnQkFDOUIsc0NBQThCO2dCQUM5QixzQ0FBOEI7Z0JBQzlCO29CQUNFLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNmLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ1gsTUFBTTtnQkFDUix3Q0FBK0I7Z0JBQy9CLDJDQUFrQztnQkFDbEMsMENBQWlDO2dCQUNqQztvQkFDRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ1gsTUFBTTtnQkFDUixxQ0FBNkI7Z0JBQzdCO29CQUNFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQ1YsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDWCxNQUFNO2dCQUNSLG9DQUE0QjtnQkFDNUI7b0JBQ0UsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDVixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNYLE1BQU07Z0JBQ1I7b0JBQ0UsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDVixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNYLE1BQU07Z0JBQ1I7b0JBQ0UsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDVixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNYLE1BQU07YUFDUDtZQUNELENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUNoQixDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztnQkFFaEQsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUMsSUFBSSxJQUFJLENBQUM7U0FDWDtRQUVELENBQUMsSUFBSSxRQUFRLENBQUM7UUFDZCxDQUFDLElBQUksUUFBUSxDQUFDO1FBQ2QsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNWLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDVixDQUFDLElBQUksS0FBSyxDQUFDO1FBQ1gsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNULENBQUMsSUFBSSxHQUFHLENBQUM7UUFFVCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLElBQUk7b0JBQ1gsU0FBUztnQkFFWCxFQUFFLElBQUksQ0FBQztnQkFDUCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLElBQUksWUFBWSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUM7Z0JBQ25DLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFOUQsQ0FBQyxJQUFJLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJO29CQUNmLENBQUMsSUFBSSxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQ25EO1NBQ0Y7UUFFRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxJQUFJO2dCQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakI7UUFFRCxTQUFTO1FBQ1QsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLEVBQUMsQ0FBQyxFQUFFLElBQUksRUFBQyxDQUFDO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDN0MsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRSxJQUFJLElBQUk7Z0JBQ1osU0FBUztZQUNYLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUVuQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdGLFlBQVksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztZQUN4QixNQUFNLE1BQU0sR0FBUSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUMsQ0FBQztZQUN6RCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBRXRCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDaEIsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFDbEQsSUFBSSxHQUFHLEtBQUssQ0FBQzs7b0JBRWIsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNoQjtZQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztZQUMvRCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLFNBQVMsSUFBSSxJQUFJO2dCQUNuQixTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUM7WUFFNUIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzVELElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxjQUFjLEVBQUU7d0JBQ2pDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3FCQUN2Qjt5QkFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO3dCQUNqRixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUNyQixJQUFJLFNBQVMsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7NEJBQ3JGLElBQUksRUFBRSxJQUFJLGlCQUFpQjtnQ0FDekIsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUM7O2dDQUV6QixFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ2pDO3dCQUVELElBQUksSUFBSSxJQUFJLEtBQUs7NEJBQ2YsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDOzs0QkFFMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUN4Rjt5QkFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUU7d0JBQ3ZELFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3FCQUNwQjtvQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNqQjthQUNGO1lBRUQsVUFBVSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQy9GLHNDQUFzQztZQUV0QyxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxZQUFZLElBQUksSUFBSTtnQkFDdEUsVUFBVSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQzFJLElBQUksR0FBRyxJQUFJLElBQUk7Z0JBQ2IsVUFBVSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMvSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRTtnQkFDbEIsVUFBVSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ2pHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QixVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEcsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWxHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO29CQUM1RyxVQUFVLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUV4RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxLQUFLO29CQUNqQyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5RjtZQUVELFVBQVUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDaEUsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakUsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakUsVUFBVSxJQUFJLElBQUksQ0FBQztZQUVuQixVQUFVLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2hFLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFF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QUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsQ0FBUztRQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElB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LEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJO1lBQ3RCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxFQUFFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFB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SUFDSCxLQUFLO1FBQ0gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE1BQWE7UUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsRUFBUyxFQUFFLEVBQVM7UUFDaEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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LENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUVkLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFTLEVBQUUsRUFBUztRQUNsQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQVMsRUFBRSxFQUFTLEVBQUUsRUFBUztRQUN6QyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxDQUFRO1FBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcs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akUsTUFBTSwwSkFBOEQsQ0FBQztJQUNyRSxNQUFNLDBJQUFzRCxDQUFDO0lBQzdELE1BQU0sd0lBQXFELENBQUM7SUFDNUQsTUFBTSw0SUFBdUQsQ0FBQztJQUM5RCxNQUFNLDBJQUFzRCxDQUFDO0lBRTdELG1CQUFPLENBQUMsK0VBQXFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsK0JBQStCO0FBQy9CLGdFQUFnRTtBQUNoRSw4RUFBOEU7QUFDOUUsSUFBSTtBQUVKLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtJQUN4QyxNQUFNLGNBQWMsRUFBRSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vU2NpbGxpZ2VuY2UuSlNEcmF3Mi5SZXNvdXJjZXMuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vQWNjb3JkaW9uLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0FwcC5MaXRlLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0F1dG9Db21wbGV0ZS5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vZm9ybS9DaGFydC5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vZm9ybS9DbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vQ29udGV4dE1lbnUuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vRGlhbG9nLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0RuRC5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vZm9ybS9Ecm9wZG93bkJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vZm9ybS9Ecm9wZG93bklucHV0LmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0Zhdm9yaXRlLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0ZpZWxkTnVtYmVyLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL01lbnUuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vUG9wdXAuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vUmVzaXphYmxlLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL1RhYmxlLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL1RyZWUuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vVXBsb2FkRmlsZS5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0JBLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvQmFzZTY0LmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvQ29yZS5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0RyYXdlci5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0Zvcm11bGFQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9Hcm91cC5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0lER2VuZXJhdG9yLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvSlNEcmF3LkNvcmUuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9KU0RyYXcuTGl0ZS5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0pTRHJhdy5UYWJsZS5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0pTRHJhd0lPLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvTGFuZ3VhZ2UuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9MYXNzby5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL1BULkxpdGUuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9Ta2luLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvU3RhY2suanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9TdXBlckF0b21zLmpzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvVGV4dC5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL1Rvb2xiYXIuanMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9VdGlscy5qcyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vZm9ybS9Gb3JtLnRzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL0xhbmcudHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL2Zvcm0vVGFiLnRzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9mb3JtL1RhYmJlZEZvcm0udHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3BhZ2UvUGFnZS5DdXN0b20udHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3BhZ2UvUGFnZS5FeHBsb3Jlci50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vcGFnZS9QYWdlLkV4cGxvcmVyRm9ybS50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vcGFnZS9QYWdlLkZvcm0udHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3BhZ2UvUGFnZS5UYWIudHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3BhZ2UvUGFnZS5UYWJsZS50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vcGFnZS9QYWdlLlRyZWUudHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3BhZ2UvUGFnZS50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0F0b20udHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9Cb25kLnRzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvQnJhY2tldC50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL0pTRHJhdy5FZGl0b3IudHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9KU0RyYXcuTW9sSGFuZGxlci50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL01vbC50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL1BvaW50LnRzIiwid2VicGFjazovL2pzZHJhd2xpdGUvLi9zcmMvUmVjdC50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlLy4vc3JjL3R5cGVzL2pzZHJhdzIudHMiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy90eXBlcy9tb2wtaGFuZGxlci50cyIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pzZHJhd2xpdGUvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2pzZHJhd2xpdGUvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9qc2RyYXdsaXRlL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vanNkcmF3bGl0ZS8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInNjaWwuVXRpbHMuaW1nU3JjID0gZnVuY3Rpb24gKGJ1dHRvbiwgd3JhcGFzaW51cmwpIHtcclxudmFyIHMgPSBudWxsO1xyXG5pZiAoYnV0dG9uICE9IG51bGwpXHJcbiAgICBidXR0b24gPSBidXR0b24udG9Mb3dlckNhc2UoKTtcclxudmFyIGltZ2Jhc2U2NCA9IEpTRHJhdzIuUmVzb3VyY2VzW2J1dHRvbl07XHJcbmlmIChpbWdiYXNlNjQgIT0gbnVsbCkge1xyXG4gICAgdmFyIHAgPSBidXR0b24ubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIHZhciB0eXBlID0gYnV0dG9uLnN1YnN0cihwICsgMSk7XHJcbiAgICBzID0gJ2RhdGE6aW1hZ2UvJyArIHR5cGUgKyAnO2Jhc2U2NCwnICsgaW1nYmFzZTY0O1xyXG59XHJcbmVsc2Uge1xyXG4gICAgcyA9IHNjaWwuVXRpbHMuX2ltZ0Jhc2UoKSArIGJ1dHRvbjtcclxufVxyXG5pZiAod3JhcGFzaW51cmwpXHJcbiAgICBzID0gJ3VybCgnICsgcyArICcpJztcclxucmV0dXJuIHM7XHJcbn07XHJcblxyXG5zY2lsLkFwcC5pbWdTbWFsbCA9IGZ1bmN0aW9uIChidXR0b24sIHdyYXBhc3VybCkge1xyXG5pZiAoYnV0dG9uICE9IG51bGwpXHJcbiAgICBidXR0b24gPSBidXR0b24udG9Mb3dlckNhc2UoKTtcclxudmFyIGltZ2Jhc2U2NCA9IEpTRHJhdzIuUmVzb3VyY2VzWydzbWFsbC8nICsgYnV0dG9uXTtcclxuaWYgKGltZ2Jhc2U2NCAhPSBudWxsKSB7XHJcbiAgICB2YXIgcCA9IGJ1dHRvbi5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgdmFyIHR5cGUgPSBidXR0b24uc3Vic3RyKHAgKyAxKTtcclxuICAgIHMgPSAnZGF0YTppbWFnZS8nICsgdHlwZSArICc7YmFzZTY0LCcgKyBpbWdiYXNlNjQ7XHJcbn1cclxuZWxzZSB7XHJcbiAgICBzID0gJ3NtYWxsLycgKyBidXR0b247XHJcbiAgICBpZiAod3JhcGFzdXJsKVxyXG4gICAgICAgIHMgPSAndXJsKCcgKyBzICsgJyknO1xyXG59XHJcbnJldHVybiBzO1xyXG59O1xyXG5cclxuXHJcbkpTRHJhdzIuUmVzb3VyY2VzPXsnJzonJyxcclxuJ3NtYWxsL2FkYy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUFZKUkVGVWVOcGlZQmd5UUZOTHN3Q0kzd094QVluNjVnUHhmeGlmQ1VsdUFSQS9BT0w5eEJvS01neElKUUJ4SW9hQjE2OWQvd0NWSU1wUVpNT0FlaGRnR0FoVUFKTGNEOFNGaEF4RmM1azlrSDhmbTVjM1FBMWFqODlRZE1PZzdFYVlQQ09hWWdHb0t4V0FPQkNJKzZGc1I2QzNMdUF3RE1YTGpGaThnODNRRDFCWDdNZG5HTHFYa1NQSEVjbjdGOUNVNk9NeURLdUJhSVpPaExvT0dSd0V1UnliWVZpOWpDVUlHcUJlQkhzWmFCQmVQVXpVem5GVU41QUZUOEk5Q0kwWWVUUTVCeWdUUkQ5QUQwc1dITWttQUlnTm9CR2lBRFVZQnVxaE5FaitBTFFNR0VLUndrS0VtZ1ZJK2R5UjdnVTFRSUFCQUJ3T1oxS0VVZStPQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9hZGQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNExHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhNeklnTnprdU1UVTVNamcwTENBeU1ERTJMekEwTHpFNUxURXpPakV6T2pRd0lDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUyTFRFeExUQXpWREV4T2pJd09qTTNMVEEwT2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UWXRNVEV0TUROVU1URTZNakE2TlRndE1EUTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMkxURXhMVEF6VkRFeE9qSXdPalU0TFRBME9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09qTTFNR0poT1RGbExUUTFaamt0TkRneE9DMDRNR015TFRBNFpEaG1Zalk1TTJKbE1Ed3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3pOVEJpWVRreFpTMDBOV1k1TFRRNE1UZ3RPREJqTWkwd09HUTRabUkyT1ROaVpUQThMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3pOVEJpWVRreFpTMDBOV1k1TFRRNE1UZ3RPREJqTWkwd09HUTRabUkyT1ROaVpUQThMM2h0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVqY21WaGRHVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNk16VXdZbUU1TVdVdE5EVm1PUzAwT0RFNExUZ3dZekl0TURoa09HWmlOamt6WW1Vd1BDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmQyaGxiajR5TURFMkxURXhMVEF6VkRFeE9qSXdPak0zTFRBME9qQXdQQzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQThMM2h0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQamN5TURBd01DOHhNREF3TUR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K056SXdNREF3THpFd01EQXdQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQalkxTlRNMVBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TUR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU1Ed3ZaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3ZlRHA0YlhCdFpYUmhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCtncVF2ZHdBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQkkwbEVRVlI0MnF5VnpXM0RNQXlGUHpVZUlDUGtsTFB2QlFKNWhHN1FUcEJtQTIxU2Q0SjBBeHRkb0w2MDEyaURhQVAySWdHTXJMbzJZZ0kwYUZCNjRNOGpaVVNFTmFVQ01NWk1uZGtDZGJSOTFLS0lTUHlVUVY2QkN5Q1pYZ0FYejR3QWpZamtFZGJBR2RnQk9PZCtrc043djIvYnRvcS9BWGdDK3FrSWErQ3FJeElSa25aZGR5aEViRFhnUXhiMVd5bVZmK1NzNzJqQVoxWDhKWkxxUFFJODNzR1c0MjJybyttYys5WTFtNlBXMmxUTFd0ZlFyc0RwYlo3eWVwT1N1T1M5My9kOWY5QUhyTFdmeVE0aGJJWmhlTlQrRUFLS2x6YzEvQ3B3YkE0UEpYSjN4TVAzT3pMOUtOR21uUnI4Q1FuQXFRU1laak1zQkh6UmQ2ck1PUUNOWGc1TjAwaWhBY1hsa0RjbDU1VDdZMzFkbDY2dlhIWXAyamtMMXF6OUJQd09BRXRKeUZCR04rbWpBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2FkZGFubm90YXRpb24ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVN0SlJFRlVlTnBpWUJoeGdCRkVhR3BwL3FlR1lkZXZYUWViQnphUVVnQnpGQXZNOUlTRUJLcDRHV2FnNDZuVHA2aHE0SDVxeFFuY3k5ZXVYc09xb3FPamcrSEdqUnNNcG1hbUROSlMwZ3pPenM0TXZMeThHT3EwdExVWWlBcERVRkJJUzBzem1BTGgzbjE3R2RvNzJoazBOVFFKSmhzSFBON0lCK0tEd0NReEFhb1daUE44SUY0QXhBdlJrczBCWXRQaEJhQmlReGdIcU40QUd1NENaS1ZETTNNelVEcnJSOVlNTWhTSXoxZFdWYUtrUTdnTHpVek5jRHJ2NmJPbkRFK2ZQbVdBZXJNUTZKSVBVSDBnRjU0SGhyRUNTQjdrUW1MQ0VCbkFYT2tJTWhTcWJ6MFFId0JpQjZDWUlMbDUrUUVRTjBJdEtBVGlEVUQ4SG9nTnljckxVNlpPQVljWkVNK0g2cDlQVWhoaUxWbHVYR2Y0L1Brek9BVUFzUUVzbHFtUmx3MmczcVlOQUFnd0FESGNBUEJRUjJjUkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvYWRkYnliYXJjb2RlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFURkpSRUZVZU5waVlCZ0ZsQUpHVFMzTkJDQWRUeVh6RnJJQUNRVWczZ2pFRnlnMERPUW9CUllvQjJUWWZpQStBTVFIZ2JnZWlCdUIyQjVOa3dNUU8wTGx3ZnpyMTY2RGZMa2ZxbytCaFV5WEdNQTRRTU1Da0NWSk1WQUJTaWRrWjJlREdhZFBuV1k0ZGZyVWVpUmZmbVFpMGpBQkpBTVpzck95d2RqVXpCUlpUUUdJSU5aQUEySzl3VUtrNnhncUtpb1lORFUwVVNRQy9BTVl6RXpOd096MmpuYUdHemR1NkxNUTZ6cVFZYWFtS0Y1a2tKYVdCbU1RNE9QbEExdE9qSUVmUUFxdjM3Z09GNEFaL1BUcFU0Wm56NTZCMlo4K2Z5TGF5NkRZYytqbzZJQUxYTHQ2RFV4djJMaUJZZXJVcVNocWlZMlVEMFNxKzhpQ0ZFNk9TQklIMEdoUWt1bUhSZERVYVZQaDZSRGRVbklLQndPWXdWRHdBSXJCaFFNak9hVUEwQkVPTU1PQWVma0JUY3REZ0FBREFPOThUd3NzN1BVSEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvYWRkYnllbWFpbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBWmRKUkVGVWVOcTBsTEZ1d2tBTWh0MG9heEU3Q3lOMENrTllDMC9BNVExZ0xVUEZFNkJPZEVNZE1wYzNvRzhBckdTQXFUQ3kwSmxINlArZkhIUUZRb0xhV2pKM01iNHY5dG1PeUIvTEhYL3FEL1VBUy9rWG5NUG1jN1BteGxmREdOcUMwbmk0RWNaemMyamJCWXJDS0JIZWxndEZWc3pvM1RsbnhYUDJBLzF6cGxlUUI1dEJxMmxrbDRDQ3lIb2FmaVlVOXFyQzF2QnZuR2JqblI2QXcwQ2pQWVBxODBwaHZVc3Y5QzRaNFR4UjZBcVFyZ05qWkM5WnNOT2luRUVCMldFN3hmcUkxUkRHOXNMenpIRmRGQUlxZEk3RHZQUXA5QTA2Sk5BWUk1VktSWkpsSXN0a3liWTVNQVAyb3BmWEh0cXdEZWh6MnZ5UmlhVC8xSmV3R2FadVpjMms3QlZzM202QlNXTDFqVjhRMkdHYWpJeFNxOVhzYWpwR21tSFQ3a2V2STlsdXR4MFhPRWJJV1JNUzhNN0NNUHhocEkxS0tkMlhiT3ErTXlYWFVocWlBSzFZNG1Oa3RpaUpMWXExN2IvMlhIYStjL0hYUnEzS2FxYUhtU2FCZkk3ajJIVmRGQ3FLTnZvNng0M1RNL0Z2K0V5MWRWSUNGb0IzcG1tS3puOTAvTURlSWtpZkU4UEpDVFRxQlNMN2tQK1Nid0VHQUZBQmxuaDVpUGpoQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9hZGRjaGFpbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBWTFKUkVGVWVOck1WRDFTd2tBVTNqQzJ6TkRUUUVsc3NBaDFQSUhoQk1GV0N1VUV3QW1RSXJZbUowQlBBRGNnbGRpSkJiYm1Cdmk5K0cxbVhZeE9tSEhHbmZubXpkdWZiOS83M3R0VjZyOFA1OWlESGJjemdBbUJMVERmUEcxU21hOGRTWFlQY3cwa3dDdXd4RnhYMWs2T0pKUEQ1NGdxNDV6WUJkQjJLaEExSkJLNkJabXh2c2VjVXlYbG1TWURXaGFaRDVOVjFWQ0swQWNDWUEyU0c0Tk0waDFWcWpJT3ZzUEVnQkNsakZUSVJkTkxwQnYvV2hTZENsc2lKWm1rTmdmR2pMb2dLNDJRTGJDZzJ5QkpvVnNRQktyWmJLb29pc1JkaVJTNlNMVVNzaVdidFEzN1lCZWhIL1RWOEdxb1hkK28vbGRDZzJ3RXNsdjIzSURhcVo3WHkxR3YxNVhsZDdFM09JaE1oT2VUMHY2ZXBIbWZsWTB3REdYZnhDNktpRHpWQWtzaHNPbU1OaWVON3FKUERTK29JZjNkMis3d2M4Q2hOVk5kbFR5MWpIcXBKRTZVNTNuS1BYWE5yZm5sWm9SYi9oNHI0Nm5OOUx0bFlkWjU5TThidTVheC9tMGM2NjIra0RDaEJNcjZCSHpqRXFWN0V1dVRiL3VRcEdNZWVKUksvL0JSdEhSVWZ6bytCQmdBK1lXNVVkK1hodFFBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9hZGRjb2RpbmdyZWdpb24ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVdSSlJFRlVlTnJzVkRGV2cwQVEzZVJ4QUhvYVNvS0ZVSkEyZUFLWEUwQk9vSGFVT1lJVzJCcE9FRDJCNUFTbUVrdWJXUE1lQjRoLzRpeHZqUkgyUGJWejNwczN3K3pmUDdNenV3anhMeitWa1hJbS91UU9wcXlmNndxK0MzL0ZTdytJTFJpVHdiamE5NlBhajlnWjJURXZFQ0RRRWwxQTV3Q0ZzRE9zMjFBSlA5VUtrSnlNaU5iOC9VRUl1YVpGalRBQWNNUCttcE5WakpseEFaUzBZVXlsQ3JLNDNBYWd2dFlRbUZyaVNpbUY0emd4Qll1aWlMR1BpRXNGdEw0aDJBQ29xanlGU3JXUXlFUkVVU1NZVUNVam5mY1IzdEJRdU9yQWNNRFUzK1dvRDhHTlhrMmphUmZMODF4NG5yZjNzeXpyNHZWTExkcTJEY1VBNFFLNk01RTBUWGZBWG81LytWN2JsZ21xdUMwNlg1N3ZwL3dsdm4zYmttbUdla2dEZWRKajViTHNwdXlmK0lkYnd0NGo4N1dwREk5YkVkN2t5RmRRZXJPMm11WVJvUmVUZlBvNURCemQ1WmNTSDZ1TXlPaTFHUk1lOURUbWFvbmdIa1N2Zi9vL2ZCZGdBUDdqbWRIQ0JRL3NBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2FkZGNvbW1lbnQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVV0SlJFRlVlTnBpWUJqc2dCR1hoS2FXcGdLUXlnZGlCeUEyZ0FwL0FPSURRTHp4K3JYckM0ZzJFR2hZQTVDcUorQVlrTUdCUUlNL0lBc3lZVEZzUHJwaEN4Y3NaTGgyOVJwRGRuWTJzakRJNWZ1QjZnVndHZ2lVQkNsS0lDSElRRUhSanl6QWdxWWdIOGJnNWVWbDBOVFFoTE5CUUZwS21zSE0xQXpNdm43ak9zUG56NThab0E1SXhCcUdRQmUrQjFKZ0w0QTBMbGl3QUtmVEVoSVNHRTZkUGdYak9nTEQ4Z0MyTUJTZ05ObWdHM2dCeGdEWnJxV3RCY2FuVDU4R2kwMmROaFV1aHVRNkZIM29CbTRrdzFFSGtKTU9NN0tNcUtnb3lLWU1JT1pBMTNYajVnMkcwNmRPTXp4OTloUmRLdkRONnpjdmNDWnNZTVNBa3NKK0lzSVQ1S3BFb09zMklBc3lvNnNDMlFaMHFRWlNka01IRDRCNEFkU3dFK2lTTERnMFhVVGpGMElEL2dIUWtBZjRuTTJDSjUvQ1FDS3Vnb0FrQUF6TC8wQ2NRTFZ5RFZwOERVTUFFR0FBcWdkbWpnQll6M0VBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9hZGRmaWxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFPaEpSRUZVZU5waVpJQUNUUzNOQmdieXdZTHIxNjQvQURHWWtBVHJ5VFFzSG9nVllCd1daQm1nTFNTN0V1Z3plMlErQzVya2ZpeDZHb0VXSFNEV0FoWTB2Z01XTlFwQWl3eUJobjRneGtCR29HS1EveE1JaE9FR0lMNklKd3hCUG5nSWloeVFnU0JYN1dlZ0RuQmtJVWFWbWFrWm1INzY3Q25EMDZkUDhhcGxJaXFSTFZnQXhnRUJBUVRWTWpGUUdiQVE4aVl5a0phU0p1aDluSkZ5N2VvMXZDNlpPbTBxdzlTcFV6RWloWDVlVGtoSVFJa1VjR0xjc0FHTVlWNG15Y0JUcDA5aGlJRU13U1krTUxHTXpmdTR2RW15Z1lTOGlXNGdxS1J0cEpLUEgxQTdDQmtBQWd3QWVraE4ySDFkWXU4QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvYWRkZmlsZXRvbGluay5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVFZKUkVGVWVOclVVOXR0d2tBUWRCQUZrQXJnRjM1eXFTQjBRRklCU2dYR0ZVQTZTQ3FJVXdGUWdaMEtZbjd3WjF5QzAwRm1wRG0wdXB3VUIvZ2dLNDN1c2JkemM3dDdTWExwZHVVbjQ4bDRnR0VST2ZOYzcrdTJLMkhQekVsMkYvaTVmdjJUUWloekdPK0JPWkJCelNaUS9Rbmt3TmN2WEJWamV5S2pramRMUnROVEh6dVFEWUhVcTFnUnB4UUM4Vk9nQ0hONEZ1c0hON0V3ZytCTWpxYzN5dWNTY01iWEFDOVJRZ1NzTVl5QXJmSGZBQVY4dHhqcFowNmZqSDlLUC9BUVU4amlYUHVlOHpuUkpZV1VsVkxKYnFpNHhybVppSC8wWWF0Z2IxUmFhVjdLMytxSmpTNTFpbWxpQ2pQZ0E0ZEtzK2VVd3d6N096VTVDVktzUjVwblVVSUU1U0t6S2xzOXpmczNwaWdISDlzbVdtVlcwOTRXbXZKYmR2M0xaKzNEb1pWOWhEbExXT2t2TDA4VTk1NzhDL3NXWUFBT0VHMHZTV0czK1FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvYWRkZm9sZGVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNZEpSRUZVZU5waVlCaHhnQkdabzZtbHVSK0xtc2JyMTY0ZklObEFvR0VKUUdvK0ZqVVBnTmdRYU9nSG9nd0VHcVFBcEVHRytRT3hBUTUxRzRENEloSG1MUUFaNkFCazdLZFNFRHF5RUtQS3pOUU1URDk5OXBUaDZkT25lTlV5RVdQZ2dnVUx3RGdnSUlDZ1dpWnFKeHNXUXQ1RUJ0SlMwZ1M5anpOU3JsMjlodGNsVTZkTlpaZzZkU3BHcE5EUHl3a0pDU2lSQWs2TUd6YUFNY3pMSkJsNDZ2UXBEREdRSWRqRUJ5YVdzWGtmbHpkSk5wQ1FOOUVOQkpVbWpWVHk4UU9xRjdBQUFRWUFoSXBEamZ2ei9aTUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2FkZG5vdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9SSlJFRlVlTnBpWUJqc2dCSEcwTlRTL0UrSlFkZXZYV2RFRWFERVFHUzlUTlQyTXRVTlpNSGlmQWNnNVVDay9nUEFzRHRBVXhkU1BWSll5TkNzQUtRTWdGZ0I2dVVMZU1PUWdHRU5RS28rSUNDQVFWcGFtbUhxMUtrZ01mTENFS2d4QUdRWWlCMFlFTWlRblpVTmszSWcxNFg5WnFabVlBWXZMeStZaHZHdjM3Z090aERvL1ExRVJ3cElIaGVJajQvL0R3ME8wc0p3NnJTcFlEckFIeHFHVVA3VFowL0o4dklCWUNRNHdMd0tpeFFrc0FIRFFKaXpjWUFQOEpJRkdHWllTcHNMNk1WWEE1RXU5WWVtUTVnbEM0RDRJOURBQmtweWxRQVFHOUNseEFZSU1BRDhxV0dKaUllMytRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2FkZHRvcGxhdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVpCSlJFRlVlTnJzVkxGU3drQVFQZERDUnFSaGhobWEyQkVyTEpKVytRTENGNkExbFIyZFdHRW5GdEdTOEFWQ2FRVzJVa2dqaVIwV1NRMzRBZmcyczhkc0dBdEdzSE5uWHZidWN2ZjIzZTdkS2ZWdjIxcUtQdWFKMmR3Um41Zm14dlVPeUdxQXNTOEdqb0FMb0FvTWdGUDJOOEFaejNuaDRHWGdUY3k1QjZZMFFSTDIyZE1QajMwUEdJczVOSllGT21Kbk0yQ29nKzdSSjVmTE5Wbkpoei94QS9UbjdEOHhGakJSSG5nRUR1cjFldDYyYlJRZ1ZReWprQUlZSE9oWkYyWEphaHpna2hYUTFwL0Vscysxek1uN0pQYnVnNnRjMTVWNUxLZEY1NHB6UThSVktPd3hlWnVqYjJLSm90Q2lFdWVzQk5WRE1WWnFOQnJLTEpxSjFVN0ZVYlpseCszV2JVc0ZRVkNSaEE0bmViem1aM0ZhUUdaWlZvS3dVQ2pFSU1zY1ptSlJLMEpzc1FsVkh2d1UvcGo5bUJNKzhBTi9SYVNKd3pCVVVSVEY3Y1hYSW5GVGxseUVHdWV5dy9tN0E3cmN6MjVRbEhiNmh4ektZMkF3dkEyTDBwYzVORmlOSTN5ZmllZHlGU2tqRzcyT3RuNGM5UFhNcnQyZXJuNGNVcjk1QlNCQUgvSXBGZTlQMzhOdkFRWUFVRkdCQmtjNkFFQUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2FkbWludG9vbHMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJEaEROamxETnpBNFJVRTVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UkRoRE5qbEROa1k0UlVFNU1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pCRE5VSXpRME5DT0RSRFFURXhSVFpCUXpSQ09EUXlRakZFTlRWRFF6RXhJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakJETlVJelEwTkRPRFJEUVRFeFJUWkJRelJDT0RReVFqRkVOVFZEUXpFeElpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCt5c3hZbHdBQUFmRkpSRUZVZU5xczFGOUlVMUVjd1BGN042bTFGRU5ZM2JkR3hNUnREejRNOWlTWXNMY0lpb0tFSURBMndSNENJYUZCVXFFOWhKcHdleEg3ODlyZmw2RWcwb3N2YVd5cGlBOEQzd3A2RVd4YTdONkpibjBQL3RRcE9uZXRBeDhPOTdENzIvbjl6ajAvdlZRcWFmOXo2SWxFb3Z6NUFnWXdoeGY0VmVubFFxR2dKWk5KTFJBSTdBYjArLzFxdm9FeG5NUm56T0k4Ym1INXNJRDVmRjVMcFZKYU5CcmRXYXZ4ZXIxM21QdFFqNWNZZ1lFdjZFZWkwaTVkTHRmZVozVGhJYTdEZ3plNEpHbWZ3eGtuTmF6QkthVGh3eXRabjhkM1ZTYVVuQWFjUUFmdVNTMHRxZWROdE1rZnJWWWJVS1hjaTlOeXV0OGsxZHU0aHZ0NGphdE9kdmdIZC9FQVE3TERWZ3hLUFdkZzRxd2MySkVCTmFuVm83TDFCb3pLbW5JWjc5R0ViaFFycFh6UVdFRTdMdUl0Tm5FRjYvaUVXcWNCTlhsWmZkaGZNUzdmWmcrbThBR05UZ051aitkeU1CL1JnbUdwNVR2RVBCN1BuaCs3ZlQ1Zk5ZZTNpQ1VKdGliQnA0ckY0ck5jTHJjWmk4VVczRzczMWwwT0JvTk92bHREcnVlTVhOYzY3dk5ZS0JTeXd1RndKaDZQbTA0RGFuS3pWQ2V5MVU1MVhYL0tMcHRwZzc4TncxaW9OdVh5c1lFVUluaHMyM2FEYVpxZHpEK3kyV3l6Nng5NjZSTk1xMDhxblU3WE1aOVEvWE83SHg1M3RKRHlvR1ZadGJTeEhDbi8zTit4SFk4SUk1UEpST2plTnJFbS93b3dBUHBjajdETldOL2dBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2FkdmFuY2Vkc2VhcmNoLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZSRGhETmpsRE56UTRSVUU1TVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlJEaEROamxETnpNNFJVRTVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qVTJNMlptTVdObUxURTNOMk10TkRWaU15MDRaV05qTFdSbFlUWXdOVFZqTlRRNVlpSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzNNRVV3UlVKR01UYzBORVl4TVVVMlFUVkZSRU00TTBFd00wRkNOVE0yUlNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BoYnlzM2dBQUFNMlNVUkJWSGphckpSZFNKTlJHTWZQWHJlNWNKdXBaRVdtcFdUU1RKeE5YSGl4b3J5UUlSSGRHbWlyc1NRcUlTTFdSTm1GR05vb2hhQmNGM21UTENLWkxqSWlESXUwMUJJeFpHMDBHNElrV3pXZHVNMXQvWStkWkhNTElUcndnL2VjODV6bmZiNTUwV2lVL00vRlQzYm9jRGoyOXZUMFZNM056Y241Zkg0WVJ4ejRDSjREMXgrNVFDQkE5SG85S1N3c1hIL0xpN1V3RkFxUnBxWW0zY0RBd0ltRmhRVjZsQzBTaVlRcEtTbFU3anYyUWZBUW1Pbmw4dkl5c1ZxdHBLS2lJdEhDbFpVVjB0alkyTkRYMTNkY0lwSE1xMVNxTDFxdDlrVjNkM2RvZkh3OEZhc0tZa3B3QmdqQkhmcU80N2prTGc4T0RwWkFtU1l6TTlNSDVidHpjbklleVdTeWR4a1pHYXRZQkFwZlErd291QVpxd1h0RzNGcHplWGg0V0tEVDZSNUhJcEVhdXVmeGVDRW9GV1JsWlUxQlViM1g2eDJQc2VRMHVBSmV3ZVdMRm91RmxKZVhyeXZrSUV4TUpwTUJselUwaG1WbFpVL2xjbmtiNGthV2xwWU9landlQzVSdGp6SENCdWJCSHJCMW80WGN5TWpJZ1ptWm1YTlVnYy9uSTJLeE9BaCswbS9xS3M3eklWY1g4OFlMdnRLRU1lSmppQWN5dUxrVG1XcERSai9ET2dmT3Y0WEQ0Ujl3ZXhzUzBnb1pGYzV1c0RlcHpMSkZSa0pTVmtFRUhBWXk4QkxZd1FtV3piVWlpSG1qQVB2QUdITTlYaUVzR1lOcmp0SFJVUlYxRTliUUgvRDYrL3RycEZJcHpTNlZzeko1Q1dnQUF2QVdKTFFacDFRcTNXcTF1cFhXSWJKS3BxZW5zMEV4L1diS25vRW40QWk0QzJpQ25FQU5kZ2tFZ25nTFVYZWtvNlBqQWRwSWhLclgrLzMrU3B4WENvVkNxdkFUaTlOdEZnNk91WG9CVklQN2JyZjdWR2xwcVQraDlXakpJQUhaY0xYWTVYTGxvWXlxc1JlbXBhWGxvbXc4dE1WWmhuUEIyZCt0SE5EbDUrY2ZzOWxzdGJBMGtORExzU3NZREpLSmlZbTg5dloyNmVUa3BBL1d6cktyeXl3eDliUUJVR0l0UlVWRk85Q2lPdW8rOTdjeFJGMUdmR2ZUMDlPbmtMalptS3Rid0ExdTByaDNkWFcxWUNKRk5ScU5rZTY1emVZYjJqSFo4WFVnUm5Yb01VaUkyV3krWkxmYjl6YzNOOWR5L3poSDZWL093N0pEbloyZEdvUXRhREFZcmpxZHpwUDh6VjdTSVVyblhySXJ4TEN1dDdmWEFvVmJFSmFTZ29LQ041c3FWQ2dVYS9YSWFuTGpXc1M5ZG1obzZCN0czUWVqMFdqNkpjQUF2SUptQjEyVm8wRUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2FsbHVzZWQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk16VXdNMFpDUTBVNFJVRkdNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TXpVd00wWkNRMFE0UlVGR01URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pNME5UTTRSakpFT0RaQ05ERXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPak0wTlRNNFJqSkZPRFpDTkRFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtWZ2d0Q2dBQUF0VkpSRUZVZU5xc2xFMW8wbUVjeHgrZDVtYlkySXNiTENpOXlIQ3RsRTNZUWNKMkNZbHl3N0xWcUxsMGg1VVlxeGdVQllHRVMrWTJtZ1JoUm9mWXhLSkdCNm5jSEtOMjZMS09pbUpiT3dnSmpqbkRUYWRiMzhjOHJLbmxZQTk4NFBrL3ovUC9Qcy92bGJHOXZVMzJjekRKUGcvVy93NzQvWDZ5dXJwS3lzcktDbTFYYm14c0hHdHJhNXRuczlsL1ZxakpPL0g1ZkkxZFhWMGZ3T1BGeFVWR1QwOFBxYXVySXdLQklBK2hVR2lYU0NSaHZWNy9JSlZLWmYvUE16a1dpd205WGk4SE5NVGo4UW91bDB1S2NJVEpaSjdzNit1N2lJdkZPcDN1Tmw2YmJ6SU9iZUp3RE5NMXpOTkZQQ0VGejlMcDlMMzI5dmJQY3JsOFhxVlN2VEdaVE11RmZKaWh2Z0dSM0h6M09BV0d3VjBXaS9XSituZDZlbHJOWURCcVFxSFEyVUtDbTZBaGs4bjgzTnJhMmkzWUFlNkQ2K0JyZVhrNUdSZ1l1TFd5c25LbXRiWDFWWDkvdjd1UTRIZUlKZmg4ZnJDNnVucm51aDVjQTJyd0kydEtKalBFNC9IRVpyTzVVNkZRckJWTUc3enFjQ0tSYUlRSlB0eE1vdEVvVFprNzJGTG1YaWdDOUNZOWdsQnB0VnJQTnpjM3A0b210bGdzOWhrTWhzR21wcWJ4cGFVbEd2VmhCRWVlRTR6ay9Qc0ZKTUFWaUtiK21kZ3c0UmNZcjYydFpVMU9UajRQQm9NSDRLc0wyRG9OT0lET1RXQ281TkpEOUxnZWo4Y0owUVNxNEdveW1hU0JxZ0N2d1V3eHNUeEJXbVp6YzNNMVkyTmpiMXRhV3I2TmpvNGFhUkxEK1Nld2ZUTVhFSHZKelNFY0RnczBHczBVa3ZXOXcrRjRST3NYWWdwc3ZjaVorYTdrYm9OU08yNDBHbDNkM2QxUDdIYjdVN3JtY3JsVUN3c0xWdmp3Qmo0L2x0eHRBb0hBb2Q3ZVhzdkl5TWhEdFZydFJ1b1ExS2h1ZG5aV1YxOWZmd2srRE95cEgwWWlrYU5WVlZWTXBWS1pGZE5xdFlOdXQvdnl4TVJFcDFRcURkQ2kzMU0vUkh2eXI2K3ZMK04xTDZrZzVnZWRUbWNISWh4SGdBZ1N2ZURQZEoyZXp4TVVpVVNiZUpIQlpyT2R3MmZhWXJGTW9XRm1UOHBrTWtKcmxzUGg1QW5DRlFTVy9iWDJXNEFCQU1GL04vZUM1RzhvQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9hbnRpYm9keS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTXRKUkVGVWVOcGlZQmd5UUZOTHN3Q0kzd094QVluNjVnUHhmeGlmQ1VsdUFSQS9BT0w5eEJvS01neElKUUJ4SW9hQjE2OWQvd0NWSU1wUVpNT0FlaGRnR0FoVUFKTGNEOFNGaEF4RmM1azlrSDhmbTVjM1FBMWFqODlRZE1PZzdFYVlQQ09hWWdHb0t4V0FPQkNJKzZGc1I2QzNMdUF3RE1YTGpGaThnODNRRDFCWDdNZG5HTHFYa1NQSEVjbjdGOUNVNk9NeURLdUJhSVpPaExvT0dSd0V1UnliWVZpOWpDVUlHcUJlQkhzWmFCQmVQVXpVem5HakJnNUNBMW1JVUxNQUtaODcwcjJnQmdnd0FDaUJWV2xBZEFicEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvYXBwcm92YWwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVJsSlJFRlVlTnBpWUJoeGdKbFNBelMxTkFORVJVVTUzcngrODRKaUEwR0dBYW4xUUJ3Qk5QUWwwTkFMakJRWVpnQ2s5Z094QUpLd0lRdVpob0VNbVk5bTJJTHIxNjVmWUNMVGdmMUFiSURFdndBMExCSEVZQ0xEZFFWQUtnRko2QU1RTzhJNGpHZ0tHWUEyVFNBUWJ1ZlJoQjJCZWc2Z0dBaFU2QUFOWUhCWUFIRWhVTkVITE9GMkh5M2NDdEVkd0FSVXFBQ05laGdBZVdjLzFEWElZRCtXU01Ed0RSTTBERGFnaVJ0QURRMkF1ZzRqRWtDdXd4WXN5R0dZQUUwSzZBQmtXUUI2SklDU0NGNERrUUlkNUgwRlBCRWRDRFJzQXk1SmxHUUR0ZFVRaUEvZ1VEOEJuMkZZOHpJd1AvNEE0b1hBdkFseXZRT1MxQUdnWVpHRTBpbk9oQTNVM0FEeUhqVE1Ia0RabEFOUXNzS1NoT2dIQUFJTUFQbm1ZS3FpRi9OT0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvYXNzYXkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVV0SlJFRlVlTnJNbE1GTncwQVFSUmRFQWFTRGNBeW5UUVYyS29pcEFLZ2dTZ1ZBQlpRUVVrR2NDdXhVRUhNaFYzY1FsOEFmNmEyMEdCc1NIeENXdmxhZTNmbitNL1BYenYzMzUySm80dVIyNHJWY0M5WGg0OUNFK09WQXNtY3RlNkVRTnZIZVZVK0NmVGtWNXNKYUNzcG9iNnpsWHNpRmQySFJTY2pCVEVoWUs2RWh1ZVNNeFZlUVBZU1NZOEs0NUFYWUNpT3BtbXBkb3RUSVhpR3oyQmlpSGUvZmgwS1ROeUs2YVpWL1JLbGhMVHdKYjhKTFBJek9LWk04MDhFcStrZ0JnYVBNUiszbmZRTnJEeVdueE5DWGpQNmx2RTlGVnYva2dMWnR0Z3pCMU8wcHovcmxVVjcvWnFrMm9hbngyTVlUVzZJOE84V2pYd2hwY2tpK016STh1TU9UN2x5RkxpVFQrRkpxMDZpM2d3amo1QUpZK1RYR1BvK1F4amNraHlIVTlEY1pvakNvVExndEl4VDZVd2JUUjJqMnliRE9rWUZZYkRiNGZ5aXlGU1JsMXhYN3MrZFRnQUVBMnBKMUZqekJuaWNBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9hc3NheXZpZXdlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBYnBKUkVGVWVOcnNWTDFPQWtFUUh0RENobmdOamRkZ1FnRldXQnl0NGoyQXh3UEl6d05nWW9zRlVvalhJUUsyNEJNSUQwQ0Vta0lxT1RzYUxNbUZld0NkMmN5ZEUySWlVZXljWk81aloyZS9uVzkzRm9CLys2MkY2Sk04U0Y1dGlLOGI1aCtWRFpEbDBXUGJJckNMWGtEUG9qK2hIekpXMFk4NFo4U2JaOUNmUlU0RGZVWUprckRQU0JOZHhoNzZST1JRVEVQdkNHVXUrdERmTkx5Uy9EQjltZnJvOHM0VEpuWUZVWXJSSXBsTXJNbExlZWRGbEZEa2hTVDlVVWcrOW5mV2RSMzBQUjJXM2hJY3g1SG5tSkVWWHZEWkVIRVdLK3d4K2EyL2V5S1JnTnAxRGN3VEUveHg4NjZwa0MwbUNUVWhKWVZWYXlLV29rV1daVUg3dmcyR1lZQ1JOaUJ0cE5VNGQ1WlRjMmlua3BBaWRTYW9zRVRDVGlRU1VZdHMyMVpTblZjbmtFeng4bVZaa2NmamNTMGdSSW5VM1B1SVE4WWV0MFhSOHp5VlE4UkVRa2hHOGZuYlBCZ3ZGb3ZQVzBhSnFrSkV1clVPWTUxbHV6ZjJEYlNhTFhVaDQvRTRJQmtNQnVwY2FSNEpKMStkb2NhdDRDTjVsNnJKRi9LS2lNNlFLaU16VFJOSzV5VmdGWDNaTnRWdm50WTZ6ek96UmQ5b05CcGFJM25FVFU0OXNyUHlJQm84UHd6OTVGOEFGZmxOUHVPWDlYZjJJY0FBWjNXWjVTU3ZVbzhBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9hdmVyYWdlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFPVkpSRUZVZU5waVlCaTVRRk5MVXdHRUtUV0hDWW1kQU1WVU01QXFnT29Hc2hBWnZnSkFLZ0NJUDF5L2RuMERSUzZFR3JZZmlPT0J1Qi9JbjArcGwvdUIrQUhRWlk1QTJoRGtVcUNoQVdRWkNFMUdJTTJKSUQ3UTBBOUFxaENJNjNIcFlVVFMzQUJsWGtDU3p3ZUZHeEF2Uk5PM0htckpCNmhGRy9CRkNyS0JCa0FjQ1BJeW1ocVFBU0RYTHdCaUFieXhETFR0QVpKM1Fmd0RXSUppSXlpU2dISU5wSVNoQXhBZndDRjNBZXBDa2lJRnBPRWlOZ21neThneVVCNFc2RGpBQTJ5RkNYb3N4eU5GZ0FHVWpjdFFaUGxDcUt0UkltVUJuakFqQkI3UXJGd0ZDREFBWG1sRFNLZlRrVklBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9iYXJjb2RlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFIVkpSRUZVZU5waVlCZ0Z3eDh3Z2doTkxjMzlRTXFCUXJNT1hMOTIzWkVGU1NBUmlCV0ErQUVVZ3l3NEFLVVhRR2tGSkRaSWpRQVFYNENLMTRNTVFUWVFKZ2d5NUNCTUFSSnRqMlJKUEJLN0VkbDNUTlFPdzFFRFJ3MmtNT3VCVXY1RENzeXlCMlU5bUFzWFVtZ1l6QXpxQTRBQUF3QkhPaHQ5bXVEYzVRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2JhdGNocmVnaXN0ZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWVaSlJFRlVlTnFVVkQxMmdrQVFYbndjZ0RvMFdtcUtTSUZ0NUFUaUNaQTJGT29KakNkUUM5T3FKekEzaUxha2tDcVcwcEJXYm1CbWVOL3k5aEZJY042Yk43dXp3N2ZmL0N5YXFDSHRUdHNnMDYwNFRzOWY1MGh1dEpxQUN6SXVhVnh5ekJlMUNEU3RCQ1FBRGpLd1pic245VlZBQWpnZ2RvTzlYd3BJQVUweUY5TERINlE1WmtVZ1M4U2ZTQjFPdlF6d2cweEVoOU1DMjd4VzVPdURkWllxN1Y5cC9VeHJSeXVBNVlHa3ZGNkFqWlJZWWJiSEpUNmF4aXluUlVCT2RVNzZSRHBobit1Nll1Z09zM052NU1uUUxlSTQzbUxtc3BhNkFzYTBVN0RZU0w5cG1zSzI3V0psUnFSSGdDN29XeCsrbHE3TTJaaDBDRnRIT002QjViclBpV2tzMlcwa1piSlh6L051ZjBrWWhqZUt1eUYreEd1UUVnM2Mxa2NLUXBtL3V2S3VqRkpld3lscXdZZFI4cDEwMTIvcjdLQm45L0lhU2wrU0pBTDFGcGlFclJ3cFRXbktsVWNDMjVuMEIwRWdncGNnVzNjZU95b3o3dlFPWTJiSitqVUFOa0YzeDBnaC9pZk5GQjJlWVM3emVBM0Z2S0REY3RCV0dKMHVqNDM1WUdiTzhET1VZQTUrQ2pNQ2E2azM2ZmlMWkkrZHdDT0E3Mmh2Y1FlcFhnTlNBMEJIcENxUTZyUklYVVBLSjRBczVidEVTbFV5WUliOGRxc0FpNDk5ai9GaGY2UjBWQlZmcmQydkh5eEFtc3JIQmtwaDNUT1V1bnBqeVc4K3ZuUEl4WThBQXdBT0MrbXZab0g5SXdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvYmVuemVuZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVnhKUkVGVWVOclVWRUZTd2pBVXBYZ0JOdDNYSmE3d0JOSVRBQ2VnUFlGd0F1UUU0Z25FRTRnbkVKZXU2RXJjMGIzTXlOYWQ3NDB2VHRwSlFuWGMrR2ZlWkpya3Y3ejNmOUpXNjQ4amNrMTJ6N3BEREwwanVlWDJaYnVzVDU0NHlEb1lIb0ZYNENOQU9JdmorSG4vdGkrRENrRjRqU0VCN3ZnTkZTdkhnUm5BY1lEMWMzdTlYZHRNbXhOZ0R0d0NCNTg2WUUxUzVHUmVoVmlrMVNkOVh1RDAxRk5qSGpvR3BzQTljSXE5aDRwQ05ZSldWMUtRKzRxSDVJVXMwMUVoVjFXRklOekpLazh1a0RRTnRSajcrMUpIRnh1cExDTXRYdEdpQ0NzV2pwQnlyK2x5Z3B5UnNUd0FIbVFoYjBLbW9JdWhjdnNWK2NDN3JzU1BnODJVeTYrbVFORmF4WjM5Z3N3MGMxRnZDaWQzcHJnTnlUcHF5Tnc4dzdaMUZVcnJRamVOU2YxTlI0NFRxWElrRzJNUEVjdHpJM1VwQ0l2UVc4NVV5MVNrcnVBdHVKU3p2TW52YTJNbCtxTG51cTgrd2lTZzdsdWxiZlgveEtjQUF3RHRJSUp0Qnllc0V3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2Jpb2xvZ2ljYWxyZWFnZW50LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFUOUpSRUZVZU5yTVZNRnh3akFRRkl6L1VRbm1TVjVRUVV3SFVFRkNCWmxVRUtnZ1NRZFFBYVlDM0VIOGlwKzRCSGRBZG1mV0dZV3hKRHp3NEdhV3M5RjR0YmNublRFM2pnRi94by9qRENucldLK3JuMnJUaDNDb3ZBTWVPdFkvc05ta2wwUitBSnc4YXdkZzdyeG53RXRRSVVvcWtjdHpVcEloVVYzWmJrekZRQm90R2FSVHovb0NhRUMya2kyVzd5SENKT0pJSnFJMmJLczQxaFJmRk1BSVdBSmYrbysrSHFrYXNFRkNtZjdQSTlqUkFEbXdVcm1GOGhQSll3cmZQZWZSTGRtb2JHNmM2Z3gzZXdnVnM0Z0Z0WElxbFUyczVKTTY2b3Mza1ZtUlQ0SmRoc0pCU0I2OXhJWjhmQlpabzl0RThqMnZhZEwzOHBNVUtWZnp2cVdXejYvc2VuTEZZSEdic2NWR241Y2NiQlBwT0x1OTROSHlOY1YySEJGZnNQUzFTL1kzRDBXMmM0WkJhL2pzL0lPTEJxeDdVMlF3QjJ0aDdpRitCUmdBSzJ4czJMNzBaZlFBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9iaW9sb2d5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVUU1T1RoRk5UZzRSa00wTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFVRTVPVGhGTlRjNFJrTTBNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qbGxaVEJsT0RZMExUYzNPVGd0TkRJNU1DMWlOalUxTFdZM1pHTm1aRGswWldRME1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3hSa0UwUmtVME9UZEVRalV4TVVVMlFVVkNOamhGUkRVd1F6UXlSVUkyTkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BwWTVSY2tBQUFLYVNVUkJWSGphak5SZmFGSlJIQWZ3Njd4ZXBhWllKRkxFSXNKb2dpbVVXK1hzajVEQ2lFV2pKUlJXby9DbFdFUVBRVVZFNWw3Q2dvcWdnZ1Y3TVlXZUt2cnpVTDNZcExCb1JoZVN5bnFJRW1vVDB0U1o2M3ZrZCtYT21YcmdBNTU3Ny9sNXp2bjl6bEdZeldhdVNUc0gzK0NtN05seUdJUXIrWHllaTBham5OMXVyNzNrdWVaTmhGT2dBU1Y4aGlINExYMmcwV2ptREtnUHVBZ0s4SWY2NzZBTGRzRUhPQWpkVUYyV1VxbmtFb21FZ0tBekpwTnBsajFUeUpZc3dBTVloV2YwWjAvZ01WeW05MnpRZGZnRng5bWdiRFk3WXJGWU9ySDBVYTFXeTNYVXpXNEZmS2YrRWxnRDIyQUNYbFB3VmJCRkdxVFg2L09UazVQOXlXU3kycGNIL0FrL1lBZjFqOUcreFNCRTc4N0FXMWdKZTloSGhVS2h6MmF6SlRITGVYdFlocE53RzNwaExjM3VQYXltUkR3bmorQXFiTS9sY2h2OWZuOC9XMjZqcEx5QTAzQUhlaWdZYTJwYURadnhYN2dIeG1LeGVDc1VDdlY2UEo2UFVvQ09CcVd5QWNacHo1cTFzWEs1UEpGT3A3dmtwZE1vb0F2Q1hPdFc0WG4rZml3V0d5cVZTblBxMEEwR0tvdGxWTVJpR3dFNXRWcjlNcFZLSGZaNnZRZXdoMm9rYUphbllsMUtCYTJsZmNwejdiVXBRUkNNOFhoOFdLZlRGYXhXNnpRTHVGZjJnUkVlUWljVmI2dG1RSmJGWURDNDFlbDBjamd0ODdJOHhVNFBGZlRYVnRHUTVYVTRhWjk4UGgrblVxa2FKcVZFTmJhdmpka3BrZVVCaDhNUmxvSTFDcWlnZmR3UDYxc0VQSVFzOTJReW1XNGs0NzhCVDhBbU9BOTN3VXJQMllnS0ZUVnJ1K0Vzc253a0Vva01Cd0tCbmJWcEd3d0c2VGRMeERVS09rYjlTN0NZU3FrUHZyQkFjSlRPK2ppQ0NxSW9EcnBjcmpDTHhiTmJWN29yU1piNkYrQXBqTUFBdmJ0SXgzTXpWSTlicFZKaDlWZzdLcnpiN1piZk5qZm9rcENmYldZaExJQnBtS25MOUJ2Y05xK2tlL1dmQUFNQTRCckMweEd5WXNVQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvY2FsZW5kYXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJqTkRSamhDTURjNFJrTTBNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UmpORFJqaENNRFk0UmtNME1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pCaVlUbGpZVEppTFdJek16UXROR0prWXkxaFlUUm1MV05oWlRVMlkySTJaamhpTXlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveE1VSkVSRE0zTXpkRU1UQXhNVVUyT1RRd09FTTNSVFl3TTBJeE1UWkRSU0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHZ4c3RNa0FBQUpjU1VSQlZIamFySlc5aXhOUkZNWG40OFd3NmlZaUpLQUo2cklRTUlpZ0VsSUpJaElEbWtJd1dJaWQvNENvblNDb2lLQ0ZpR2doRnJwcUkySUt0UlZVTUdtRGJ1Rm9SQVd6UlZMb1l0eGtNak9ldTV5QlcyZ1ExNEZmNXQxNTc1MDM5OTZUeEM0V2kyOHR5NW9GWTJCYi8zZ05Cb09wU3FVeVp6QVdrbVNsVjhLeC92UGxyQ1ROMzF5MlllMitncEdlNEQzNnk5anlmViswaHZMUkJjZkJHK0J5M3VYaVVBbElOb0dPSVJMVTYzVXJsOHVGR0dmYjdmWWhFVndTWlhBSmJPSEcwMkFIT0VxQlorQTFPTWVEUEZtZlNDU3VOQnFOZFpKbE5wczlXeWdVRmcwWFRJRURZQk1Gcm9MdG9NSzR6MHoyTTVhRGI0R0RZRm9lZUo1M0E0S2htVlRnUDR4MWJBK0hReXNJQWlzTWw2c1RHZFpMVXA0REc3bjRFMU84dzQwdndIdkdJZWY3RUxwZExwZFQ2WFE2NkhhN0M0aG5EV3NtZ2cyUW91QUNuMzJqNEJmUUEvZFlva1hPUFJJelM3TktwVksvMCtrWUVmUXBkQmZNVUtBSzlvRlRqTy96d0llTTU4RVIxM1dmdEZxdGxLU00xS3UxV3UyblVYNGFxeHBGeWlJV3g1R0tmZDVIeVdSUzc3RjFVNWE0MEtiQVdBbU4xYk9JWDRLUVpaRTlBWHk0M0JVUlhBVytnOE5nRFFVOXB2V1lBajNXck14NElJMkJTQlhHTmpSMkQ4YmVGbi8xVm9PVHJLRUluZ0E3d1RGbDdGZmdJZ1hmZ1Fzdzlua1llNzI4Sll4OUJqNGNHYjY2ZEdvUDJFeUJEQ2lBM2FyTEgxU2NZU1AzOGk3R3ZnekJ3RXd3c2pQaFZ5bWVjNVN4N2RqWUR1dHpVeGw3bmh2aUZyNEViWENkS1grV3Q0YlFOUmg3V295ZHorYy93b2N6SXJnVzdBTFAxY255bC9DRC9vdWJ0d0U4VUc4b2U1NUNOQUpoczluY2lqcG1mZ2t3QUdTMjZ4UVVXSURUQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9jYW5jZWwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1UazNSVGN6T1VRNFJVRkJNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TVRrM1JUY3pPVU00UlVGQk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21FMVpqZGhNV0V4TFRVeVltRXROREEzWWkxaU1EQXlMVFl4WVRCall6SmxNRFEyWWlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwRlJEWXdRMFpGTXpkRE5EVXhNVVUyT0VZNVJrTkNOVGRDUXpaRVF6WTBNQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGdVR1dsUUFBQUtyU1VSQlZIamFsTlJkYUZKaEdBZndWNDhySjYxSUc3akN3bW9zQnJ1UTZVV055Q1lFV2hTc0QyemdZQmZDSmhFUmZaQkJFcldSb0NCcmtqRXNDcm9aSlN2NlFER0hWOEV3Y0l3dUJqSllqQmowdFJTY3pwVCtMenlPdzBsbGUrQ0hlSGpQYzk2djU1RjFkbmF5T21FREYxaGdCUXFnZ1J3OGhpZjVmSDVwY25LU21VeW05WmNVTlJJZEFnKzkvQUY4OEIxS3NBTjJ3eGw0RGxOS3BYSk0vTEpNTXNPTDRJWnhtSUFLcXg4ZGxVcGxWS2ZUQ1c2M2U4QnNObWY1UTdsb3dBVzRDZWRwU1kyUzhaZ1hCT0ZzTnB1ZEd4d2NqQ3d1TGpiemgwSnJheXYvNWRNTVVySjV0c0VvRm9zc0hBNVA1M0k1WXpRYVBXbTFXdDhxYUpaM3dDOUt0aFgyd2pJZGdqVDBzRm91bDVkVktoWHplRHpYREFaRE1oYUxIZUhKVG9DYU5ya2EyK0FwZklLRGttUmVtSUVlL2djbnpiUmE3WnJENFJnUGhVSXVudkF5bmVaZjBVcy9ZUmphNERYc291ZDhqMi9Rb2IwU2Y4VnV0NytmblozVjhJVEhJVlZqV1hOZ2hmM3dBcHp3QUI3Q1hlbmc5dmIyMzBhamNWVkJsL1pYblgyZm9ROStwSzJab0JYOUZ5MHRMVXl0VmkvSnFRSktEUTV6VFhTRnlvMU9IWWVVVjFCRmJLOHpwZ3NTOEJsZTBuS0xjS1hXWU56TE5nVmRpejAxOWxFSGIrQUg5TU0zK3ZBSWxlS0llUERDd29Jc2xVcHBlTUlRbktMVHJNWStlRWUxZTVTUzhSZ0ZYZ24zYWFzQzFXMUlwOU5kcFZKSmtOTjk2NURjdHdPMDFGNzRJcG41VmJJVGxGZ21ReUlXQ0FTRyt2cjZFdFhtY0FuTWNJNXRJdmlsanNmakxKUEo5RGlkenJGa010bGJiUTRoYW1YM05wTVFyWXRGSWhHOXkrVjZoQm5lMHV2MWY2b0plWlU0NEREdy90YThrWVJZN2pHdjF6dGxzVmo4TnBzdEptMWYvTFJQd3hhWWhnRlJ5VW5EeUx0VG9WRHcrM3krNjhGZzhCbWZiYTJPblljaEt2eGhhbWQ4OWw5NWQ2SGFWdE43Q1Z6azI5M2QzU3ROVFUzckNmNEpNQURXMjlGTGN3Sy9RUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9jYXJ0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNVVl3TWtaRk56YzRSVUZGTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1VWXdNa1pGTnpZNFJVRkZNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09tRmtNbUl6WXpNMUxUazJNakl0TkRneU1pMWhObUkyTFRGak1qaGpNV1psTURZME1TSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcERNa0kxTlRNM01EYzBNemt4TVVVMlFUVkZSRU00TTBFd00wRkNOVE0yUlNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BqUUptbWNBQUFHb1NVUkJWSGphekpTN1M4TlFGTWFiMm9oTmtXaEJMRUloQkI5ZGhBNGQzSXI2QnhqRWlvT0RndDNFUVVURXBTQTRLYmk0MmpHTDdqcUo0RmhFSEZ3Y0pGamZWYVNvdFNFbThUdHdLV2xKSUlFT1h2aHg3ajFKUHU1NWhiTnRPOVRPRlE2MWVVVktwZElJckVEN2dOOWE0TUUwemFTdTYvM1ltK1RrSkVsNmdyMEgzNkFqZ0ZqY3Nxd2JVUlFUcVZTS2ZEcXdJNElnbkdCekRmWUE3MU9RYmpOZXE5VUttVXptc2xnc0xqZENCdnRnblozckFVS09nZy9jTXRwYWxBc21OQll3aDBsUUFTOXVWVDRHTXdFRlpSQXpERU56RXp3Rnc2QW5nQ0M5MjRlaWx0MEVYNmtGS05FK3hUandTM25NNVhKZlhvMTlDS1o5Q29xc3hhb0krZE5MOEJ6MGdnRWZnakUyREhldFJYRk9SNTNsY3BQWlRnOHhDblVJMEhSVXdadVhZSnc5bkFTTDFQVXNBcktHdzFwTTZCWjA4enh2ZUFsU1R1YUJ4UGJVbjFkc2VzTE14N0diVDRGbjhtdWFsa3luMDJVM3dRcGpBU1RBR3RoMkNYa1VEQUlGcktxcU9xY295azVERVBQb2ZQa0h6TElxdm52a2tQeGRZQVhmVHNpeXZOc1VjamFiZFo0TDRBQlFLeXg1Q0Q2Q0RiQ0YzOVpSUHA4L2EyclFmLy9IL2hOZ0FLZVhlNHNEaUY2aEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvY2F0ZWdvcmllcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSzVKUkVGVWVOcGlZQmdJb0ttbDZRREN4S2hsSXRKTUJ5Z21DQmdKdUd3L0ZvTU9YTDkyM1pFU0Z6b0NEV0FFWVJDYldsNG1HckFRb2FZZjZQVVBVTFlBRUgrZ3hNQ0ZRS3dBeFBaUS9rWWdma0NKZ2ZGb3J2S0hzaGRRRW9hRm9GaUZ4bXdoTmNMUUFCaUdjRGFsQmw2QWVqTWZ5bjhBRlJzOHljWUFHck1Ya1BqK2xJYmhCV0NFSElCbVJRWnFHQmlQVk5MSVUrcGw5SVI5RUlvcExnOGJRSmhhZVJsY1pERU1GQUFJTUFEQkR5Mkx3T3pYN0FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvY2VsbGxpbmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWF4SlJFRlVlTnFzVkR0U3d6QVFOWkFEdUhIdmt0REVuQ0J4UjRjcHFZQVRKSndnOWdsd1RtRG5CREVsbFoyTzBoVnAwektrTUIxMHZCM2VNckxHR1FNVHplem9zNnVudDI4bE9jNkIyMUZmd1BCczZLSUxPTjF1WGpiYlB3TVM1QlkyaGZtd2lxNkpnTUtXc0JUZ1RTOGd3SVROaWhzWDJGUllmZ0dkay9VVi9OVmVRSUtWc0FTQktkZUVZUVJ6ZVVnaHpMQXVHV1N3MEFROXRnaG1aSlVhYXlXQmhOV1k3QjNFNU9qdVpFNkoyb0E4c1VGZ2JCMXlUaDBUMkJyK1VCMEVGWFl6WFJzWUc2ZmNwRHBkVXFkSFdONVZBTGFFV2NSMnlvRVVnSm85d041WjFaRXlFSjlrQW91WmtiQ3NKVFBxL3cxSVJqVURSSytRcVlRc1VHem8yVkRQRWZabGVqOVp0RmJLanFGTlk5dzlzNFdzZU1KTG50c0JBd0pVU3JsRFE1ZmdDZG1uSFFmNVpON1NzQVpReExHcktURFE1U1puejBOd3FXVXI1U1VyWGZCMTJDOGs0b0UvbDV1dXVSbHJNaFE5cElxekRoWXJwajltMVV1NXpLeTB5SE92c1NjNjJMM3RQanpQVzh0clFmK0orYlA2TUg5Q2R3cDdwVWxSTHZpeXJqWGQvMzRPQWRPYzlINE8xdmNscWQrd0lNcEFiOExpMTk5WEI3aHZWTGozZ3oxNCt4SmdBRlhwdjdlRGl6RXJBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2NoYW5nZWxhYmVsLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZPVVZFUVRGR016QTRSVUZHTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk9VVkVRVEZHTWtZNFJVRkdNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qaGtNekExWXpBekxUSTROMlF0TkdWaE15MDVOVFptTFdRNE1UTXlORFpsT0RRMllTSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzNPVEJETjBORk56YzBORE14TVVVMlFUVkZSRU00TTBFd00wRkNOVE0yUlNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1ByNTkzcUFBQUFNdlNVUkJWSGphakpSaFNGTlJHSWJ2WnJiWmFJSVNCYlZjRTBxR3RBbEtvclZnaExIK2FhMnRXYnFhWVpRSTBpU0lTQm9zUWJjMkI2V3hYeFp6dEVBb3BVSnBUbVVocG1Qa0h3MFJRUzBKTm5WVG00cXU5OGk5c2pHWEhuaDJkODc1N252ZWMrNzNIU29halZJTU9wMnVtcy9uUjEwdVZ6RXpWbGxaU1FtRlFrb3NGaWRBeG9lSGg2bFlEVFpGdDQyTkRTb1FDQlJYVkZRMGRIUjA2RWlmTkRaN0oyUmZiVHZhYkRhZlV5Z1VMLzErZnk1VzZadWZueTlzYlcxOTJOL2ZmejRZREVwVFVsS083VmVRUld4cXRkcUJpWW1Kb1ZBb1ZCcUpSR1lMQ2dvbVdTelc4YzNOVGRiMDlQVGZjRGhNbks0Zy9pNklNQyt2cnE1U09CNEs4ZkVPT1J6T0VwZkxQWUsvNGEydHJmenk4bktyMCttOGdtQkZibTV1R1JhNWpibEo4QjRjMm5QTGFNdHdlQVlyTG9NSTRERUJXSUE4bHNBejRLRkZlY2tFRDVDZnRiVzFKWWxFTW1rd0dHelk1cHBVS2gxTEVtOEdDN1NvR29SMkZZU0wyZlQwOUNLY3hjZ2VaMzRRQ01GMzhCWm9VMU5URnhLMmpCU1p3a2RnN1NIR0FWM2dGR2dBYnVKMFptWW1JMEZRclZhUCtYeSs1Zkh4OFdSaVhOQU5ac0F0b0FjbjhDR3Q5ZlgxVHJmYmZUUk9NQ3NyNi9mYzNOeGhuR1hDWVNNSHlkaG44Qk5VZ1VmMCtUV0JIektaYkVpdjE3dDZlM3NGTzRMWjJka0JwVkk1MHRUVTlBYmI1ekJpSG8rSFB6bzYrZ1ZPZk9nK0FFL0JOWEFSaUpCTzMxQiszUzB0TGMwUWJZZFR5WFppTTZXSHNqUGlyOWpoY0NpOVhtOEcraCtRMEYvVDB0S2VJTzQ1NW1UZ0VzZ0g3NUJlOXpvN083dnk4dklvazhuVVBEZzRXTGdqR0NOcTRQRjRwMUYrZnBGSXhGcGNYR3lFK0F1NEpDSnljQUU0eVBZaCtLbW5wNGRDckxLbXB1YSt4V0twaTdzcENPdnI2NVJHbzNtTXZQeUlRTFpLcFRKQnVBKzNDeHVVZ0YvMGs4ckp5YUdNUnFNYURyMFFQa25lajNNWTY3UzJ0cllPVjlObHVPakN0bDlqdUFUWTZhL3NwdlAzSmd4VTJlMzI2M0s1L0U5czZjVTFKQ3Rsczlrc3FKaFBPUGdpREowRkpuQ0RFU05KamJrN1ZxdTFqQkZMS3NpSXRyVzEyYkIxRDlMcEZTMDJRRTlYQXcwb0V3Z0V3WVRTKzU5b1ptYW1IZlc5am00akxhb0NwWFQ2aEppTGVGK0NwRUdNUE5ycGU1QTRuQUpYd2NwdThmOEVHQUJOQzVZU1BYeUZNd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9jaGFuZ2Vsb2NhdGlvbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUjVKUkVGVWVOcmNVOHNOZ2tBUVhhMUFPL0NxSjZ4QTdNQU9oQXJRQ3NRS0ZpdlFEdEFLcEFNNHlaVU8xQXIwVGZJMm1ZTWk2OGxJOHJJN3c4emIrUnJ6NjEvUHgzZzhHVnNjRVZBQnUvcFNINzhtQk5rS3h4SllBeU5nQXhRaWcvam03UG9lQWM2QUU1d0w0SUQ3RkFpQXZUYnlJV3lBQkpFS2lXRlVjeUIwdXM2RWRKQ1VwV1pueUpGWFUrQWdOVXFZa3VHNVJWUVovaTF3dDhwY1NoQy9KZVRyVXBkTWFzWkdqT0EwVnpZNXI5THA0bE42VnlCVWNraGQ0QjZrUE9nNkhvOFh1cFFrMXAzdi9GODFwUkFDclVCYUtjZmtMclhrY0hjZTRJQlJSRzFac0hHZkkwUTBGZWZMdHFSMjg5NWx0YmZpSEx0dXNtRTU1S0hQSEVwSFM3VmVHN1V0SVI4NCtCQ1czTnRVajQ4amhiN3hiVXB1L3ZaN0NqQUF0Q1p5WUUzOEVxRUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2NoYXJ0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNcEpSRUZVZU5waVlCaTVRRk5MVXdHRUtUV0hDWW1kQU1WVU01QVlIeGdnOFFPQWVEN1pCa0pkMzA5SUVRdXhwbDIvZHIwQjZqS1FLdzJBL0FWQWVnTWxMb1FCa0lIeEZMc1F5YVVnbHkyZ3lFQlFCQUNwQjFBTUNzZENvTUVmU0lwbG9DRU9TTEZhRDhRT1FDd0F4QXBRbW1RWDVnTXh5QldKUU5jWUlvazdraFhMUUVNQ2tWeGJBS1FPQU1VdWtKV3dvWW4yUHBLUVBkU3JET1NtUTFEZ1Q4VG1XcklNaEhydEFqbDVHZDNBZUtCWDdja3dweEFXdnNnR2doTHJBVElMbVFjMEsxY0JBZ3dBZGdRNlQyalhmbGtBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9jaGFydDIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVN4SlJFRlVlTnBpWUJnV1FGTkwwNEJZdFV4SW12cmo0K01kY0tnN0Q1U2ZEOFFDUkJzSUJBYnA2ZW5yLy8vL2o4czFDVUJjUUlxQkRDd3NMQ0FYN01kaTZBSWdmZ0RFSDBneUVBUTJiTmdnRUJvV3VoL29QUkR1QjRsZHYzWTlFVWdGQW5FOVVLd0JuNEVzNkFKUG56MWx1SHIxS3NpbEtPRUpOUFFDMERCSElCTVVsdkZBZWlFUUh3QzVHaVNIMDBCa29LMnRiZUR1N3Q2L2MrZE9XQkJjQUdvMkJCb1lBR1Q3ZzF3TUVvTml3Z1p5YzNFTHFLaW9GQUFOWkVCejdRWlE2QkFWaHBRQ0ZqSVNPU2o1eENNRlFTSFpCb0xDbEorZi84T3hZOGNjaUU0MmhNTFUwTkF3Z0tSMFNDa1lYQWFDd2hROW16SWl4ZDUrRFEwTmg4K2ZQek04ZmZvVUxNYkx5OHZBeDhlSGx5OG5KL2NCbUxNY1libUZFYTNNRXlEVHNhRGs4NEdCRmdBZ3dBQ3JaMmhjbVpkTldRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2NoZWNrLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLSkpSRUZVZU5waVlCanNnQkhHME5UU2RFQ1QrM0Q5MnZVTDZCcUE2aFNBbEFLYThBV2cyZzhnQmd1UzRINGdQb0NzQ0lyUkFjamllQ1MrQVJBSG91a0YyL3lmSEM4QzllMUg5aDBUdGNPUXBnWWVJTk1NVURoL29FdXlBY1dXQURtR0FKTU0zSGZJeVNZZW1nVElBUWRvbjJXdzVCUmk5UmtBc1FDMldONVBwbHY2a1lOcThDZHNGanpoU0d4cEk0RExRRkRVMTVOUjJueWdhVTZoT2dBSU1BQ05teWo3V0c1L3dRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2NoZW1pY2FscmVhZ2VudC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBYVpKUkVGVWVOcXNWTEZPQWtFUUhkR0U2aFFMRWhNYXNBSWJzY0lTd3crZzFuSm5qOUVhR3lpa1ZmL0FZQzBlUFFScUxLU1JvNlE1R2tra1hFZHp6bXgyTCt0bElZdGhrOG5NN0V6ZXZ0bWRXWUFOcnkzWnlSeGxzcWlLb1p3Wml1ME1uYkVPWUNRRTFrWFpDK1VjbzN5dVRSVUI4eWpkSlRGZkZ5Y2kyVlJTTmd6S3dRWnJBL0k3T2xjbFllemtQd3czc25aMDd4ZVZpWktVWHI2RnpGL1dBa1NnR0RkVmoxWEUrQzNxTXdTZXJTbzVpWWxWRkdMelRodk50eVlNdjRaUXVpcUZjMW1yU1FjckFjZDRZaFYxbmd1azAya1dLQlFLcWtJSTlFNDQyM0lrSG84VEt3djFQcit6QTlvM2RnMklScU93V0N4ZzRrNWc3czJaVFl4VGh5a1lqVWJKNmZmMGVXVnpvLzZoSGhSU3ZpbjdZam1PNDdmYjdjQTNUZFBYYVp1WTdJaXloZTE1WHVBVFl4M0FQOVBSNlhRQzI3WnRxTnhYd0xJc3VMaThvSksxMnFiRkw1dzlSdjJoemxqbFRuTkJRditqSDV5eGlxRW85WWszTUx0OHd6Q1lKQklKMWVHMVpRd0h2QS9wdStxSnpjWnJnNEVSSTlkMXcyRFgyR1lENVFjclRVZWVqMW1QczN4VWZMd1VxeUZZYittUHJUR0dXVkdKUEc3eStoVmdBR1VscE1WbFVqK0lBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2NoZW1pc3RyeS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UmpORFJqaENNRUk0UmtNME1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSak5EUmpoQ01FRTRSa00wTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamRsWldFMk1XVmxMV0UzTWpBdE5EWXlOaTA0WVdSakxXRm1OelEwWkRObU5UY3dZU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG80TVRjNVJqRTBRemRFUWtJeE1VVTJRVVZDTmpoRlJEVXdRelF5UlVJMk5DSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QdVd5Z1NzQUFBSk9TVVJCVkhqYW5KUlBpQkpSSE1lZlk2NlRyc0VpYkFTYmlSQmUxc2pESElySUxsMEVJVHUwUkVMR0l0T2xnNWNRUE1UbXFZUU1LWWc5RmhncnpDVVc4NUxoeFlzWm1KQmVJMkdXdHNGL1phT3pqbjBueHRCcVI1c2ZmSmo1dmZkNzMvZDc3LzNlTTR6SFk2Smw0WENZRkl0RllyRllkdUdtd0p0Slg3L2ZKOWxzbGpBTTh6dWVJblBNYURRcW4wdGdHK3pQaXoraTFkbnI5WWdnQ0E2SXJzTmRBYWZCQjYweG1obldhclZUNVhMNUpVM1RaK0U2d0FaZ2RBdDZQQjRCKzhPTG9uZ1A3a1BRQkx4dVFadk45czF1dCsrTlJxT0xjQ1h3Q1h6VnZZZUtRVXpFNXdxUXdSRFFRTlNWb1dvVzhCanNnT1Y1U1N4U05wS2FGVkd6cEhRTDRqQ1VzbG1CNkErMWFRa2MweTJZeStXdW9tdzZLSnQzY09QZ1BMaWxTN0JRS0RpU3llU20wK204ZndCRGs1TGxVM0FVQlA5TEVFdWw0dkg0VmlRU2VRSkJBWG9HTkQ4Q3o5UjYzQVFuRmhhTXhXSVJyOWU3Ny9QNVhqY2FqV3NtazJsNXFudFB2ZGRiQ3dsaXFldWxVdWxDTUJpODIyNjNpY3ZsMmhrT2g3MC93bDZCTCtBNkpwdnBNRXcvWDVJa0xmbjkvdTFXcTNVUy8wYWU1MDI0S1FPS29neVRlRFVKWmRBQm5pODZuVTV2QkFLQjVsK0NTb2xFbzFFMm44L2ZobnNtbFVxeGxVcEZ6R1F5TDNESy96eUF3V0R3MmUxMjczSWNkd2N4bzVrbG8wUVlkTnkwV3ExcnlJaUNXQi9OMzRGdzJJbWF6ZWJqZUpFdUp4S0pHek1aMXV2MVZaWmxIK0RldWxISTU1UkhWY2xZTWN6YzFTcG1XWmFiaUg4ZkNvV2U0ekM1WC9leTArbXNkYnZkVmJ3dWJ5ZDdCS0hwZlpNUHU1bFl6RWVNbGF2VnFoOCs5MU9BQVFBU1V1aVdxbGJ2YndBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvY2hlcnJ5cGljay5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUlZKUkVGVWVOcnNWTkVOZ2tBTVBRa0QzQWo4NHRlNUFSdTRnaVBvQk9JRXNva3lnV3pnZmVrdkl6Q0NMWGsxVDlURUNEOG1Obm5RNjVYMnRkZkR1YitNbFprKzhubGVUaEhzZXJtV0tmU2xZRE15M2w1UUpsaDBnRW9MOUxwa2JZaEJRM3NSM3hTa3U0UXllSHlRS1VnZml1MEZzTm9LMXJiSkFhUDBzb0J6cnhNYlJ4VjAySXRvMDA1UVBhUVVoNVBBdy9FcjBSajZUc2tXbEIyQ2VzRkJHWWl0RXR0S21ZbCtwS1F0dGFSN1ZiS0RjOGU5VSthd2VXNFAxcDcwWjdvZmxxYXRDYlFPTDBzV1F3Wm1PaXF0SFFyMERGTVFiU0o0T2xERlU4bjNVYUhUdHRMN1JHQ2pvNktIdUNhLzhIWnNiTENwbnlZRkdOYUN4b1o1NkdkMytUekYxWk9FQyt0aGpTczBSdXJmK0IvZUJCZ0E4Sjk5bTRKeU5jb0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2NsZWFyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFUSkpSRUZVZU5yTVZEc1N3VkFVamM4Q05Pa3BxV1FIc2dOV1FGWkFWbUNVcXBSS3JBQ2RUbmFRVkpRb0RUTXN3Ymt6NTgyOGVjUExveUV6Wng3Si9aeDd6NzNQOC83OUtSVVpORnZOR280NUlHZDgyQjl5bTMzWklha0t0Z0V5SkJoOXpaRE9ReUFBc3dmK3QvRjdCYVJrKzNBT0NPY09uVU85VExaZ1JkWlJVUXVVVXgyNEF3T0xUVUtibWtzUGhjRWEyUmVXdkJPZWRXdEFaQlFSUEFTTEhNUkt6WktyUmpBcHNRczBITVFTZ1lLM1kwTUZFK0JrbHZGQ3JESFFlNlZ5UlZOdUIweUJNekR6ZmY5eXU5NXlVeXpheWNoc3JTVUFtYzZDQ2lhR1hhWjZiQjFzYmVaaXBTelp5RHNwcThkMnRQRTlLRnc5R0tYS1NWTlplaG15cDBlS0ZYNTBPV2lzUEc2SVdyY2RSVWkvdW0zSVVoaEZMRlVDTFF0aTVVTEF0c3N5ay8wUHJzTFlhYTkvL2p3RkdBQklCWHpYSDlvUitBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2Nsb3NlZG5vdGVib29rcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TVRrM1JUY3pRVEU0UlVGQk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNVGszUlRjelFUQTRSVUZCTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0UxTmtVeFFqZzFPREkxUVRFeFJUWkJSVE13T1VNMlFqTXdOakU0UTBJMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rRTFOa1V4UWpnMk9ESTFRVEV4UlRaQlJUTXdPVU0yUWpNd05qRTRRMEkwSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K0lqTmVTQUFBQWxKSlJFRlVlTnFVbE0xckUwRVl4aWViYUdJZzBCb2FSQVNqeFNxaVNCZVhXUFVVdlFpS3VZaUlDQUZCOFNUNkYvZ0hxT0NsSGxvUEtpS0plQXZxUVMwUkVWSWxGcVYraFhoUXNCcEpFWWt4TWV6RzV5WFAybkhiTk8zQWo4eThrM24yL1pyeHRkdHRKU09kVG0vSzUvUEh3K0Z3SGN1T2NXbkRxTmZyZjdMWjdIWExzbVlEMnNaRzBRWHJsaW5vQXkzd0dNd2Eyc1pyY0JmNFFXQVp5UDlYdUNLNmgvdkFlZjNUdG0wNytISDhmcjlQTTR2M0J0RnRuZmcxNDBOd3lWMDRqcU9pMGVobFlHRStBcE9MQlM1MGkvK2ZoODFtMDRKSEo5eDFvOUZRcG1sK3hIUXFsOHNwRkVzL3Q3bHJoZHhKSXBINEZvdkZwaUg2WDlSZHp0azlQY1Q0RFg2NGkxQW9wSXJGNGxGTWh6RFhVeU41M2Q1VHNGQW9ERllxbFdRa0V1bTRiaGlxV3EwbU1VMmlLTjV6OHVFN1lBOVl1MkRJd1dCd0VnZXY2WnNpNUJGN0E4YkJMVloyWXJHUTkzcmJSa3ZGYy9CU01rR3Z0bkh2SnBnQmErWjVtRXFsbnNiajhZdXRWc3MxemJEUlI4RlhjQVNjcHRnMHVBRjI4bU8rZVI1bU1wbVJjcmw4QmprVW9YdmdKeGdHaDhCSy91MEx5SUhQTE01aDNyRHZ2REZ6Z21pYjk2VlNhYUpXcThuTldBWFRTVzU5b0xoNE1nVlc4eU5iMkQ3aXdEc3BnemVIMHJuOVlDdDRBSDZCWjh4ZGhZL0hLV0NDVCtBKzdUdG9hM2piSm9hMkdVVEkvUXp4RlRGNU0vcUEzSnlyUExJTEhHTWRIREluaUxaNWdWQnZZM3FPSXBQZ3JEeEo5UEl0R0FBSHdBWlBKemdMdGMxK2lpa2VlQUxHK05ZTjhhM3M2L1U0Nm9LUHdCVjZKZU1nY3pXOGhFYzI0TGFPTGloZTdHYlZGTnRndmJaZWJOaU1SUDBWWUFBL2thdE1pVUNSOVFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvY29sbGFwc2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUVGU1VSQlZIamFZdnovL3o4RE5RRkFBREV4VUJrQUJCRFZEUVFJSUtvYkNCQkFWRGNRSUlDb2JpQkFBRkhkUUlBQXdtcmd3b1VMLzFkV1Z2Ny84K2NQSzdJNGlBOFNYN1JvRWM2MEJoQkFHQWIrL2Z1WDZmcjE2d3pIamgxanFLMnQvUVV6RkVTRCtDQnhrRHhJSFRZREFRS0lBWlN3MGZHdlg3ODRLaW9xL3R2WjJmMHZMeS8vLyszYk4wa1lIMFQvL3YyYkZacytFQVlJSUVaY09RWG1vcU5IanpMdzhmRXhmUDc4bWNIS3lvcWh1Ym1aallXRjVUY3VMd01FRUFNdW0wQVk1QkprbCtKekdRd0RCQkFESVFVZ1EwQ1JBQW9HUW1wQkdDQ0FHS2xkT0FBRUVOWFRJVUFBVWQxQWdBQ2l1b0VBQVVSMUF3RUNpT29HQWdRUTFRMEVDREFBb2ZqdHlwMnFiT1VBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9jb2x1bW5zLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQktrbEVRVlI0Mm1MOC8vOC9BelVCUUFBeE1WQVpBQVFRMVEwRUNDQ3FHd2dRUUN6SUhFWkdSblI1VUFBekVoSkRqZ2VBQU1MbHd2OVF6SUJFTTZDSllZMU5nQURDWlNBamtpc1kwY1RSNVZFQVFBQVJDa05HSXNYZ0FDQ0FxQjRwQUFHRUVpbXpaczM2Ly9YclY0WlhyMTR4Z09qYnQyOHpiTisrSGNWRkV5Wk1BSWZkeTVjdkdiNTkrOFp3NjlZdEZGY0RCQkFMdWcyWm1aa01uejkvQnJOalkyTXhYTURGeFFVVy8vTGxDemhWb0tzQkNDQVVMNHVJaUlCcEhoNGVYTW1JUVVoSUNFVU5PZ0FJSUNiMDlNVEt5Z3JuLy92M0R6TkdnSmF3czdOanBEOFlBQWdnRm13YTJOallHSGg1ZWJHNkVDUU9NZ2hrS0RaNWdBQkNjU0hJR3pCYmNaVkM2UExvNmdBQ2lKSGF4UmRBQUZFOUhRSUVFTlVOQkFnZ3Foc0lFRUJVTnhBZ3dBQmZkbExFMFdkQ0h3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2NvbnRhaW5lci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBS1ZKUkVGVWVOcGlZQmpzZ0JHWGhLYVdaZ0NRV285RDJ2SDZ0ZXNIc0VtdzRMRXNIb2dMZ1Jvbm9GblVENlFjZ0JpcmdVeDRERHdJeFBsQUF3eVFERXNBVWlCOEFaY21uQVpDWGZZQmlBV1FoQldBZUFGUWJnUEpCa0xCQnl4aUgvRnBZQ0VpNGd5ZzN2YUhobDBqcFFiMms1SnNDSG1aSVRzN215RWdJSUJvQXdtNmNPclVxUXdqeklXa2dxRnY0QU1pY3cvUmtWS0lsSWZCQlFaNjZUUDBBRUNBQVFESURTbDlwMzI4bmdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvY29udGFpbmVyY29weS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTXhKUkVGVWVOcGlaQ0FDYUdwcEpnQ3BlRFRod3V2WHJsOUFWOHZDUUJ3QUdiWVJpR0VHK0FOeFBSQUhvaXRrSXRMQUR5QkRnQzQ2QU1KQWRnRVFYOFNta0ZnREo2SUxBQTF1b01SQW9nRUxqa2h3Z0lZUkRBaUFNQ2h5Z0M1YlFMS0JVTU11UUNNQ0JBeWdZYmlBa0F0eGVma2dLT0NSSXFFZmlCV2d5WWQwQTNFRStBTktYRWcyWUNLUVF4cW9Fc3M0dkc0QXRHQTlLQ3lSY2d4RkxqU0V4bm9qRUR1U0hCWkF3LzVqWXcrdVNLRmExb09DQzBDdm5rY3FiU2cyMEJHYTVSand4ZXJRQXdBQkJnQTY5MEJCQTM4N3NnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2NvbnRhaW5lcmVtcHR5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFOOUpSRUZVZU5waVlCanNnQkdYaEthV1pnQ1FXbzlEMnZINnRlc0hzRW13NExFc0hvZ0xnUm9ub0ZuVUQ2UWNnQmlyZ1V6SW5QMXllZ0pBN0FERUNrRHVRU0RPQnhwZ2dHUllBcEFDNFF1NFhNR0V4Z2RwM2cvU0JIWFpCeUFXUUpJSFdiUUFLTGVCV0FQUndRY3NZaC94YVdDaWRpd3pFZUVpOGcxMGZIUUpGdGpJZ1I0UGpReWlBTFprWTRoa01BZ3N4SlhtaUVrMm9GZytEMG82NUxvUW01Y0QwYndNY3VFQ3NyME1OSFFETldPWjZzbUdZc0JDUVA0QkVOY0RJNFVCbWdYOVFXRktWdkVGTFF4QWh2UkQ4ekFJSEFSR1VBUERrQVlBQVFZQWRsSkJIYlhZdDZJQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvY29udGFpbmVydXNlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFVWkpSRUZVZU5waVlCaHlRRk5MMHdDSUhjalZ6NGhtMkh3Z2xRRGxYZ0Rpd092WHJqOGd5MENvcS9hanlYOEE0a1Nnb1J1SU5aQUppWTNObXdKQXZCNW9XVCt4QnJLZ3VRWUQ4UEx5TWpnN094ZEFMU1FZQk13d3hwdlhiMDZJaW9xQ1hHU0JyQ0ExTlpWaHc0WU5ERUE1Q1FGK2dRUTJkcmFiUUxVM2lJb1VhRmdHQUtuNVVPL0N3ZVJKa3htcXFxc1lQbi8rRE9KT0FMcTBrQ2dEb1lZcWdNSU9pQTJ3U0Y5QUNsK1E5dzhDRFcvQThESXlBSHJwQXhEUHhCWUVRTUFCTkVBUktBZXk5Q1lReHdQWkQySEJ3SVF2Z0tIZUNrU0xNQUZRRW9QS1RjQ1hiSEFaQ2txRGhraGVCUUYvS0ExS1RnK1EweWt6TVdrTEtRaEFZYW9COGphUXpRbWtJNERZRVNqM0ExczZKQVpzQk9JQWFHU0JzQ0hRZFIrd3BrTWlYWG9CNkRKUXlnQkZTQ08yTE1sRWFta0NUU0lQME5NcDJRWkN3VUcwU0JwQ0FDREFBRVUyZFZpdjNmR1hBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2NvcHkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUxkSlJFRlVlTnBpWUJoeGdCRmRRRk5MMDRHQW5nZlhyMTEvZ0V1U0JZdllmaUErZ0VPOUFCQnZCT0lHVWd3RWdVUWdUc0FpRHJJSXJ3OXdHZmdCanlzWnlERlFBWWRMRHBBVEtmK0JsQ0tTb2ZiSUVRSVZQd2dUQUVZUVNuZ3lZYk1GRkl0QWpPeWFnMUQ4RU5rd0lLaEgxOHRFUkxBY2hJWXBVZDVub25iQ3hob3B3SENFaFlzOTFJVUNsQmpZaUNWTUczQllUTmhBWk0xSUxpVWFVRDBNNlJNcGFDQWU2SFY3YWhtNGdFQjJhNlI1QVFzUVlBQW1heTFHUldQK1JRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2Nvc3Rjb250cm9sLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFVQkpSRUZVZU5waVlCZ0ZndzR3d2hpYVdwcjdLVFJyNGZWcjF4ZXdJQWs0QUxFam1ZYkZBN0VDaUlGc0lBUFFoZ1BJZktDckJZQlVQeEFIU0V0TEN6eDkrdlFCMUNVTmFPb2NZR3dtWEZaQ0RRTUZRMEoyZHJiQWd2a0xHQUlDQWtDdXFNY1hQRXg0dkZFQXhBWWFHaG9NQWY0QkRLZFBuMmFvcktoa0FMb1VIRHhBUXhOSU5SQVVMZ3lmUDM5bTRPUGpZK0RsNVdWd2NYVmhBSG9iSnU5UHFvSGdRQVlaVUZWZEJYYlpudDE3d0FaRGdRQ3BCb0lqeU5uWm1RSGs3YjM3OWpMY3VIR0RRVk5ERXlaL0Fac21GbnpwQ2hSV3AwNmRZbWhyYldQNDlPa1QyT3ZYYjF4SGxpZmVoYUJFQ3FRV2dNSVFGSGFnU0FIUklENFFKQUxsTDVEcVpaQ2hpYURFRGpSa0FqQWNEd0RwUmlCZkVXb1p3YXozSDBnMWtwbFQ3SUg0SUNqQk04TkVSRVZGR1NuSXh3OUJrZmptOVpzSGc3LzRBZ2d3QUE4UWIxb2lybWh4QUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9jb3N0c2hlZXRzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLNUpSRUZVZU5waVlCanNnQkZkUUZOTDB3RklPUkNwLzhEMWE5Y1BJQXN3WVZFRU1zeWVDTVBzc1ZuTWdrUHhRYURORGZoTUEvb0VxendUdGNPUUtBT0JyZ2tBWWFvWUNQWGFmQkFteGxBV0lnTi9BUkEvQkdJQmFuaDVJaEFYQUxFL0VGK2dob0VmZ05nUlN0ZFR3OHYxVU1Pb0ZzdUYwTEFENFVhS0RRUW1jRkM0SllJd2xFMnhsMEdHUHFCcXdpWUY0SEtoUExUVXdRZmtvV21Ub0lFUG9JbTVuZ2dISFdRWWNnQWd3QUJWVENlaVBVN2Vkd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9jcmVhdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwR1JqQkJNVUZFTXpjek9UVXhNVVUyUVRZNE1EazVOREEzUXpZNU56UTNOeUlnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBHTTBOR09FSXdSamhHUXpReE1VVTJRakZGTlRnd1FVWTJNVEEzUWpneVJpSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEdNME5HT0VJd1JUaEdRelF4TVVVMlFqRkZOVGd3UVVZMk1UQTNRamd5UmlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOekl6TVdRM1lUa3RabVpoTUMwME56QTFMV0psWmprdE56QXpNVFZrT1RCak16QmxJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1pHTUVFeFFVUXpOek01TlRFeFJUWkJOamd3T1RrME1EZEROamszTkRjM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtOOUJScFFBQUFmOUpSRUZVZU5xazFFMklFbUVZQi9EUlZwYzVaSWw0RVMrNTdSU0NMUjNheklNbHNocExRWUtub0VPQmtDRERKc1ZHZVZ1RVZsZ0hPb1FFVmhBVVpCREJncmNRSXVqakVOV2g4V011SFlLNXVDZG5kZkNqL3h1UGtSSHE2TUFQNWNYbjcvdnh2R1B5ZXIzY0hJOHBuVTRQOHZsOHNkVnFIWlVrYWMwMFkrQUtiTU5CdDl2OW85Rm8rSzFXYTgvaGNMdzY0SFE2allZZGdqSjg2ZlY2Y3J2ZERzWGo4VEJtcU5ScXRSM3pETE03QWk2UXV0M3VuVXdtRTBCd3RGcXQzdlA3L1lZRFQ4SVQ0T0dCeFdKaDlWcTVYQlpkTGxlOVVDamNOQko0SFNyd0ZzN0JLVjNYc3g2UHA0TnpxS2lxT21nMm05ekNGRUUydUErWFlBTWVneFVVbnVkdmk2SjRWcFpsSVpsTVhoVUVZV0xnS2hSQmh6UHduY2Fld1Uvc1hjeG1zeDFMSkJKdnNKZWZXTUc0d0JSc3NrSjRSMkVpYk1GVHVJVVQzcy9sY3B6UDUvdFQ5TDlBT3kweERKL2hCRmpnRWNSb0w1OFBmNHpRa2VKL0F3UHdFTG9ndzNFNmlDanMwWExyNC9ibzcxTytBUzlBWlZjS0RzTjdDTUV1QkNlRkRXZklscE9ESy9BUjJGMzhSdU5CK3FQU3RMM0ZabmdCMXVFbENOUm55N0JJL1ZZeTB2a3NVS0cyWUhmMEE0VzhwbjFUak41THR1U3ZjQmV5ZEJncENwenBZWUZPbXRWRjZqbDluaGVrbWQ1cmJPUFB6eHYyZTRhYXBwMm03MHRHaTFITDlmdjkwY0JJSkhJTm41ZnAwaHQ2T3AwT1o3ZmJSOForQ1RBQUVWNmRmeEpqb2RNQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvY3JlYXRlMi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TlRaR1FrSkNNMFU0UmtNMU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOVFpHUWtKQ00wUTRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPbU16T1RrNFptWXpMV1V3WVRrdE5HRXlNUzA1WkdZMExXSXlZakEyTVRJM09ESXpZeUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCTTBFek16QTRNVGRHTkRFeE1VVTJRVGN5TVRnelFrVkNOekpDTkVGQ1JDSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9Qa0ozOHJVQUFBSjNTVVJCVkhqYXBKTlBhSkp4R01mZjZlYWZTUXp5a0FTendpenprRU1jT25mSVJsZ2VDb1FPZGJCTFhtYlNjQkxOU3g0TUR4V2pwUkNKaDlWbDVLRlJwdlJuc0toRGhDTFdoZ2VkeGZ5VFRBS0RpVHJubjc0L2VJMnd6VTM4d29mMy9UM1BqKy92ZWQvbitmVTFtMDJxazR4RzQ4alMwdEkxSG8vM0RNdHZvTkhLbFVvbHl1ZnpVYU9qbzMvM005b05VcWtVNVhRNmoyMXZiMVByNit1OGNEanM0SEs1RnFSdS9HdTJtLzR6RkFxRlZEUWF2YXZWYWhmajhmaEJpVVFTZ2ZrUHBMSkFEbVJkR1JMaDg4b3JLeXR5aThYeU1wUEpiQXdNRER4SCtDTDRBbzUyYlZpdFZpdHF0ZHF0MSt0bmlzV2lHU0V4V0FEZndlZXVETW0veStWeWgxZ3MxckRENFhnbmw4dEhLcFhLWmFSK2cxV1EzN2RoSXBGZ20weW1oekE4YVRhYjUwbXMwV2hVNmZRNThHdXZwdlMzWG9MQjRPbkp5Y21uNVhKWmFMVmF6MmcwbXRXMnZUUGdEYmhBUHp0WEdBcUYrcFZLNWJKSUpJcDRQSjdIT3AxdUladk5IdUJ3T0JUZFhTRTVGN3lnMTUwcnROdnRFVHdpczdPemgvMSsvNlY4UGovbDlYb24wT0VjNG04QmNkNEF5MkNNN08xbzJCS014bU94MkhtcFZEb1hDQVNtWWNoRWxUV2szR0Fja0FhVmQ2dXdyLzNxb2FNc0REWjdhMnRyeUdBd3BER1Q4d3dHNHhWU05yQkcvNllyKzc1NnFLYXFVcWsyRlFwRkJsWGV3d0ZPaEJmcGtTRmZkQVJjNzJxdzZkdEN1Vnl1MnpLWkxJRnFTV2dLSEFkaGNBdWM2TXFRU0N3V1UzdytuNnJYNjJTNUNhYkJXZkFSUE5xcEI0eTlCcFUyYStrRGVBMkdBWnZNSnByV25lRU91Z01HUVF4Y1RhZlRZNzBha3F0NEUweWdnWjlzTnR2OVpETEo3Y1dRNkN0NHdtUXlUeFVLaFVHMzIvMmdWME9pdVZxdDlsTWdFQXlCOTYzZ0h3RUdBTlNGNVhFcHN4Y3JBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2NyZWF0ZWNvbnRhaW5lcnMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJqUXlPRFUxTkVRNFJrTXhNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UmpReU9EVTFORU00UmtNeE1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRU1rVTVSalk0T0RaQ1F6RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpFTWtVNVJqWTVPRFpDUXpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtEa0NPZkFBQUFzZEpSRUZVZU5yTWxNMXJFMUVVeFRPVEdjMUhKYWxTVzJNbE1WMW9LMFZLU0JRaG9DNENKVkJVMUlJS0VYRlo4QzhSUVYwSkxuU2xHSFZqM0VoRkdvbVYyRkowSVpyU3ROVmFiWm9ZYlpxa21ablVjOHNKZE9GS3VuRGd4N3g1TTNQZk9mZWRHV1Y5ZmQyMmxZZHEyK0pEeTJhelhwemJnUEl2QmVyMXVxM1piRzZNN1hhN3BRUUNnVW1NczZBc2Mzek9Bam93dVpES3NRYmtiZW1UWmxtV0VRcUY3QjZQUjk0eFM2V1NUM081WE50eGNRdGNBcU5nQlp3Qk44QUZzQWhrMGF2Z0RqZ0Nkb0ZIVUhldHQ3ZjNzZGZyYmMvbGNwRm9OUHBRNmV2clMrUG1BM0FTMUtoQ3AxSUhGYW1jVzZOaUdhOHFpcUlXQ2dVTExvMXdPTnhNSnBOelVuQ0s2czZEMTFSNEN0d0daOEVTRlY0QmQwRUV0SU1uVURneVBEejhsQXBEd1dCd1V1V0swcDlsVUdUQkFxaXdyNjJ4bkgrQ1g1dm1saU9SU0ludkxQWDA5S3lKd2pGWkRSd0QxYjlZYm0yUXpCdWI3Sy9Bc2c3TFRWaVdWcW5JOUxRODVBWnZnUitrMmJQajRCNDREZWJCTkRnSDdvT2p3QWxld1BKbEhNOWdlWGMrbnovWTNkMDlJUVZsbDc5UXBWaWVZU3crc0xnTGpBUEp4aWMrRXdSVHBtaytqOGZqbjkxdTkwUXFsVnFLeFdLR1dNN2c1azF3a1QxeWJzcGlhMGVsWDl0NFhXRXJLZ2gwbTY3cnYzRjJsc3RsM2UvMzExc0tXN1lrYzk5QUZMd0VCN2pBT3hCamErU3IyZy9HRE1NNE1UUTA5QkVCYjZUVDZjT2RuWjB6R2xlYmxhQ0M3eUJQcFNsd2lBb2xXblhwRzlqRGdxOWdlWFZ3Y1BCOVYxZFhEUUdmQlhXeC9BWTNyNE1FTXllMk9zQUMyTW5kRmVYN0dDMXBoWHovYzdDNkY1YmxIUTFGTzJxMTJxTEdHSHlsdW5rV2xWMlczZzZ3b0d4S25OWTlUTVFFMk5IZjM1K1RUU3dXaXdNT2gyTkdxMWFyc21NQnNjQ0dyekRvcy93VUZTb2M1WnlMNmhjUW0zRlkvdUh6K2F4TUpsTkJ3WFlsa1VpTU1Jc20xYW9Nc0U1N052NkZXbk5Ob2lIWUpteHUvS0djVHFmVmFEUlU1Yi8vWS84UllBQUQxeGZJZkZaNEx3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2NyeXN0YWwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVNwSlJFRlVlTnJzbE0xdHdrQVFoVzByQmJnRWZIUk9wZ0tnQWtnRk1SV0VEaUlxZ0ZTQU84QWRtRlFRbjhLUmRCQjNrTHdYdlpXR3hUamk1NFFZNldrODJ0MXY1MmZsSUxqYjFTeDlUR09vZHlubndYem4wQUxRY3pqVDdlZTI0RWVrN0pqWkt6VENRZ2lmYUdQQzJJcUhvUzhUOTVVSUV3cENsZ3BmUVEwMEYrZ1o2cG5ZdHpYMEJtMFVqMVhoRTBzZVFobHZWWmFCNHNiRXZuSHRCUm9vNXVXeC9GL0pPZlFOVFV5ODZ4amdoeXNSUHRQWjNOOUV5SS9aV0VHekZ0alFYV1pnSzdjZStsQzRsV3U4ZXNYQk5HWVArLzBPTFNHQ1M2eFAzWHBrZ1JyOWlGTlRQMnBvWm1DWitsdG9rSHV3Z3d5OWc1VU81aTVMbGRab2tMVVBPd3Iwb0xSU1QyZ25ZTmtHNndSNjBGaHZqcGtWeDJEL0FsdWduYkJUZmh4OEhvdmIrQTMrQ2pBQVdldDNRd09YSU5VQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvY3V0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFWVkpSRUZVZU5waVlCZ0ZNS0NwcGFrQXhBNVl4QVdBMkFDWFBrWWNob0VNMmcvRUQ0RDRBeEE3WHI5Mi9RTlFQQUhJbmc4Vld3QVVLMFRYeTRURElwQ0JqVUFOaWxCREUwQXVoaHBtQ01RZzhRSnNHbkVaQ0hLQlBwUjlFSWp0Z1JoazRBV2dKUmVBdEFIVUlnekFnc1BBQlVBY0QzVFZlWmhCVU5vQUtMWWZhbUFoMFdHSUZKWUJVRzhLUUYwdEFMVU1GQndQeUkxdEF4ZFhsLzg1dVRuL2dlejVoTlF6RVdHbXdxZFBuK0JzUW9xWkNhVkZJTFg5MTY5ZlArN2Z2NzhEeVBZUUZSVmxmUFA2elFGeVhRZ0x2MFFvQmtWT1BiNkV6WVRIZFEzUTlEZ0JHQUViUUFrYmFpaUlYZy9LTVVSN0dlcUM1VUI4QUdoUUpFd2M2TlVYUUMvZkJESXpnRmdDeU45STBFQ296ZnVoWEV1Z3BoL0k4a0QrRGFDaElEVVpRUG9paUUvSXkvM1EyQXlFZWhNRFFQTXdLRHpuUXlNT3I0R2dBcUFRcU9rQWdRaHpoTklCQkJNeUtVVWN6Y3RSZ0FBREFCK2FlV0ZLWHVqbUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvZGVsLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ2EwbEVRVlI0Mm1MOC8vOC9BelVCUUFBeE1WQVpBQVFRMVEwRUNDQ3FHd2dRUUN6b0FoZnFXcmwrWDdyUzlwZVhaOGQvWnVZZC8vNzlZMEFQNWY4c3pDd3M3ejkzTWt1SzdUQ2IxcmNiV1E0Z2dEQmN5UFQ4WmJ2TXh2WDV3dnVPcnZuMy83OHJBek9xa3Yvc2JDeXNENTh1a2Rpd3RvanJ4TmtXZFAwQUFZUmg0RDhoZ1IyZnhlUytTRHk3eHkyeTcraTZmLzhRaG9JTVk3bjNhSW5VL2tQaFRBeXNERC9rWlU2aTZ3Y0lJTXd3NUdEZi9zclpOdWlaak1vWDhTZDNlRVQySFZuMy8rOC82MytjN0F3Z3c2U0Job0dVUGJHM1cvbGJXYjRVWFR0QUFHR0VJZVBmZnd4TVRJeTdYenRaQi8zYjkzK2QrSk9iUEg5T2MwLzlMQ3QxVzJiZndaRC9qSXdNVHh6dFZ2NVJrSWxoLy9uN0Q3cCtnQUJpd1JwVndJaGdZbVhaL2NiUjJ1ZjNCZjQ2L211M25maHYzTlQvTGlyODVZMmh3WlEvc2xLMWpEOSsvR0hnNHNiUUNoQkFHRjcrQzhYL2dDNzl6OGx4OExPRXhHdUd2NzhaMkJsK00zeGo1L3o3VTBaaTgvKy9mLzc4ZzZwREJ3QUJoRE1kZ21QenpvTVZjbnYzaHYvbTQvdjlYRXJoaCtpVHUveUN1dzV1QTBhVTgzOW03Rm9CQWdpcjZEODJTR3lDSXVEL2YwYUdWeFltZmU4OUhOeGZ5eWgvRW41eWg1OS8zMkZnUlAxM1pzQmlLRUFBWVlqOFoyUGxaRVdPVFZBRXlFbldNLy83ZCtpRGswMFF5RkNoSjNmNCtFQ0cvdm5qZ0s0ZklJQXdyWGo4ckUzcThENkVZVXB5TVl3L2YvOWtnTVQrM285T3RrRnZaRlErQ1Q2L3ljZDUvRXdudW5hQUFNS01aWDYrN1I4MXRBMitTOGxjL3FNa1c4VDQ4eGNpYVlBTVpXYmErOW5lMnYvdmVaNWFCbG1aUGVqYUFRS0lrZHJsSVVBQVViMjBBUWdncWhzSUVFQlVOeEFnd0FEMzZQYmlabDM4bHdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvZGVsaXZlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVTFKUkVGVWVOcnNWREZPdzBBUWRBd0ZwUnYzZHBkUWhSZkUvQ0M4SU9JRkVSVXRma0hnQmNrUEFpVVY1eGNrRlNsanVpQlNVS2JNVERSSWk1U3pMa1NpeWtvajI3ZHp1N083dm91aWt4MXJaNGVRTzVlZElrM1RaUDIxWHZrNDU0R0JNanhHUUI5d3dMV1BHNE9jTUxNbkVIMFBlRjBxR0szQVd0OXk3SjRXRnFhR1hBdTBKNERrOFo1Y0U2Q1Vhb3JKRisrTDcxMFAwWk5QUEQrQUNuZ1JXc0E5U0xmd2MwTm1FdDdKVHlGdDRJSkFYMThqT1h4OWUxTVNwODFVVEJWRGs4QWFWZFp4d3l4S2JaNXJDRDJWbUhuNFJhTkNxWnhLRmN1Y2VZTE41ZStHQk13MDRWd0s3SUIrRXRWYTMzMDNsUnl4SnlwOWJJTFFIdFdHZ2ZwYmduc0Z1RGpndjNaR1hhSVNFN1dnMGpBbWg1eVVvWlRkcUU4amZlZXE0UGRKQ1FoSU5UWEwwUTlOcS9ZRkN3M0lzcnFhK015MDRXKzNEVTZBNHcyajQ3bmhKS0h1K2QvdXc2MEFBd0M1bW00WDR0Szk4d0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9kZWxzZWxlY3RlZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBS0NTVVJCVkhqYVl2ei8vejhETlFGQUFERXhVQmtBQkJBTE1zZlQwOU1lU0NVQXNTNmF1a2RBdkcvNzl1MVRDQmtJRUVDTU1DOEREZk1HVWxzSXFKOEZORFFkbndLQUFFSTI4QWFRVW1kbFltSndZV0pudU0zMG4rSE9yeC9ZOUNoVlNTbzhabm4vdVpOWlVteUgyYlMrM2NpU0FBR0VISWFLWUlQNWhCbEN0MnhqeURoM2kwR0pqUVBETkhZbUpuWFdoMCtYU0d4WVc4UjE0bXdMdWp4QUFDRWJlQnhFM1B6N2krR05oQUtEM0pPN0RPa1g3akFvSWhuS3hNRDRxL0FIYzZiVS9rUGhUQXlzREQva1pVNmlHd2dRUU1nR0ZnRHgwNXVmUHpKTU45Vmd1QytueWlEMzZEWkQyb1hiRERLczdDRDV2Mm0vbVM4cDdqL2tCK0k4c2JkYitWdFp2aFRkUUlBQVlrUk9oOEJ3NUFkU2dVQnNyTS9CclJSOTlvYXI5T01ickRlMVRaNTlreEsvb3JiN2dOdC9Sa2FHSjQ1QXd4UmtZdXpuVHZ1RGJpQkFBREdBRE1TRkQ4V20ybC9VdGR6N2dGbmsvME1HdnY4M1JSVS9IM1VMYkQrWW5NMkNTdzlBQU9GTjJMYUxaaDM4TENIeG11SHZid1oyaHQ4TTM5ZzUvLzZVa2Roc04yZktIMXg2QUFJSXQrdFNzbG1PT2ZtdWVNVEU5Lzgybit5djgxS2EzNTh3c1A4L0w2UDFZVjljbWpNdWZRQUJoTldGQnhNeVdGanVQVm9pRFl6Ti8vOFpHVjVabVBTOTkzQndmeTJqL0VuNHlSMSsvbjJIMSsyTFNYWEdwaGNnZ0RCc09OUFl6bm5VMW5QRlEwYisveUI4Rk9qS2d5bFo3Q0M1L1VDWG5aWFIvSGlmZ2ZYL2FVbjFqNGV6aXh6UTlRTUVFS2FCS2JuOTk0RmVReGlHR2dFZzc1NEdHbnFIZ2VIL0dTTzdrK2o2QVFLSUJjUEovSHpiUDJwb0czeVhrcm44UjBtMnlHNDJhZ1E0THB5NWQzOU1xdi9mOHp5MURMSXllOUMxQXdRUUk3WExRNEFBb25wNUNCQkFWRGNRSUlDb2JpQkFnQUVBbXhkaXBlbW5FNUlBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9kb2MucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rWkZSVFEzTXpBNU1qUkVNVEZGTmpnMlFVWkdOVUU1UVVWQk4wRTRRa1FpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtaRlJUUTNNa1k1TWpSRU1URkZOamcyUVVaR05VRTVRVVZCTjBFNFFrUWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21ZeVlqa3dORE5sTFdKa05HVXRORFJsWVMwNU5qZGtMV001WVdKbVl6bGxNakU1WlNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvNE1VTkVOa00wUmpjME5ESXhNVVUyUVRWRlJFTTRNMEV3TTBGQ05UTTJSU0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHFUemdlUUFBQU1BU1VSQlZIamFySlJOYUJOUkVNZmY3dWJMdEtaR3FVbFRVOU5ESTRRVXp5TFlnNzFZY2xJVXZCWnBhZkhpcWFHSE5DU2tKS2NlVllvS1V1Z2hIbkpRUWFyZ0lWNEVJeUhRZWdpMlVodFNxekdhSnMxSHMrdC82a3ZZYmxOUER2eXl1OW4zL2pzemIyWUVSVkhZL3pRZC9XU3oyUXVoVUdnT3QwVWdxQmNZalVZbVNSSTc1c1A2V3ExV21JVzUzZTc5dG1BK254L2MyTmdvaDhQaEdCNUY5WTVvTk1yUzZmU0JjQWM3VmFsVWdsTlRVeWR3WDJvTHdtU0h3NUVmR1JuNW90Mnh0TFRFMXRiV21ObHM3aVI0a29SRVVSUU9oVXdtQ0lKVUxwZFpKcFBwa1NoR2JvVkNnZWwwT3ExUUUveWlrTFVwYXE4MG1Vd3ljc2w4UHQrTXhXSVpVSGpTOEw4MlhCTDRCbWE1TU9zb3VMZTNKeUt4YkdGaFlhNVlMQW90SnhPSkJFTittVjZ2MSs2dEEvT3hnZ2FEUWRuZTNtYno4L1AzRUxvWHp3MTR0b3RYRFlpcHc1SjROWVQ1dFk0b2RvOElOaG9Ob2JlM2x5MHZMeitGZ0JsZUtvRkF3TGU1dWVuVGVDZndVQitRT01RdUI0UEJSM0RnNStUazVQMjJJRGJKT3pzN0xCYUwzWUJuZmFWU1NjemxjaFA0Lzh5L0Noa25UR1UxaFBXVTY3TTZ6WmZKM2dPcUt5Zm9Bci9wc01GNXZrWUc2OERGdzFjZ3RONXNObDI0ZHVzNmZOUUFla0EzRjNqQ3k4TUVib0puUEdTUlB5Zm9UTGtEaDd1Q1d6OFlBZ044STUza05LRFdlczMzM0tHdUJLKzQyQVM0UWdmVTlyQmVyd3MybTQyaExWOVM1YSt1cnJyOGZ2OWRKSjFDZmdQSzRDcDREdDZCSDJBTXZBQnYrWW1MUndwN2RIVFVqemJyUngzMjREOExYbDBET1hBYjJIbVlHWEFkbkFPM1FCcGNBaC9VWlNQYTdYYnlNSUNUVmJhMnRycmo4YmdkOTdUUW8wcUpnOU95UGt5Y1Bnd0podXRIZGRrb21EcFUyRFB3OENLZkhrVjQrcFZLUTFNTjlDNENhcklzVDNzOG5vZmcrL2o0ZUZMdG9lejFldG5LeXNwamlGQzVVQy9YVWJUVlZDcDEwTk1xd2YxV3pxclY2bGdrRW9rUER3ODMxWjBpb1NOc3lXU3luM0tKNTBwck4wTFJVemp3NU5CZzVhUExpbmVuUWF0ZS93b2lkNTlkTGxmWDR1TGlqSFljWVU0eXA5TjUzTVEySUcrZnJGWnIyNEUvQWd3QS9ZUWd3NU9zenBJQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvZG9jdW1lbnQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rWkZSVFEzTXpBNU1qUkVNVEZGTmpnMlFVWkdOVUU1UVVWQk4wRTRRa1FpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtaRlJUUTNNa1k1TWpSRU1URkZOamcyUVVaR05VRTVRVVZCTjBFNFFrUWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21ZeVlqa3dORE5sTFdKa05HVXRORFJsWVMwNU5qZGtMV001WVdKbVl6bGxNakU1WlNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvNE1VTkVOa00wUmpjME5ESXhNVVUyUVRWRlJFTTRNMEV3TTBGQ05UTTJSU0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHFUemdlUUFBQU1BU1VSQlZIamFySlJOYUJOUkVNZmY3dWJMdEtaR3FVbFRVOU5ESTRRVXp5TFlnNzFZY2xJVXZCWnBhZkhpcWFHSE5DU2tKS2NlVllvS1V1Z2hIbkpRUWFyZ0lWNEVJeUhRZWdpMlVodFNxekdhSnMxSHMrdC82a3ZZYmxOUER2eXl1OW4zL2pzemIyWUVSVkhZL3pRZC9XU3oyUXVoVUdnT3QwVWdxQmNZalVZbVNSSTc1c1A2V3ExV21JVzUzZTc5dG1BK254L2MyTmdvaDhQaEdCNUY5WTVvTk1yUzZmU0JjQWM3VmFsVWdsTlRVeWR3WDJvTHdtU0h3NUVmR1JuNW90Mnh0TFRFMXRiV21ObHM3aVI0a29SRVVSUU9oVXdtQ0lKVUxwZFpKcFBwa1NoR2JvVkNnZWwwT3ExUUUveWlrTFVwYXE4MG1Vd3ljc2w4UHQrTXhXSVpVSGpTOEw4MlhCTDRCbWE1TU9zb3VMZTNKeUt4YkdGaFlhNVlMQW90SnhPSkJFTittVjZ2MSs2dEEvT3hnZ2FEUWRuZTNtYno4L1AzRUxvWHp3MTR0b3RYRFlpcHc1SjROWVQ1dFk0b2RvOElOaG9Ob2JlM2x5MHZMeitGZ0JsZUtvRkF3TGU1dWVuVGVDZndVQitRT01RdUI0UEJSM0RnNStUazVQMjJJRGJKT3pzN0xCYUwzWUJuZmFWU1NjemxjaFA0Lzh5L0Noa25UR1UxaFBXVTY3TTZ6WmZKM2dPcUt5Zm9Bci9wc01GNXZrWUc2OERGdzFjZ3RONXNObDI0ZHVzNmZOUUFla0EzRjNqQ3k4TUVib0puUEdTUlB5Zm9UTGtEaDd1Q1d6OFlBZ044STUza05LRFdlczMzM0tHdUJLKzQyQVM0UWdmVTlyQmVyd3MybTQyaExWOVM1YSt1cnJyOGZ2OWRKSjFDZmdQSzRDcDREdDZCSDJBTXZBQnYrWW1MUndwN2RIVFVqemJyUngzMjREOExYbDBET1hBYjJIbVlHWEFkbkFPM1FCcGNBaC9VWlNQYTdYYnlNSUNUVmJhMnRycmo4YmdkOTdUUW8wcUpnOU95UGt5Y1Bnd0podXRIZGRrb21EcFUyRFB3OENLZkhrVjQrcFZLUTFNTjlDNENhcklzVDNzOG5vZmcrL2o0ZUZMdG9lejFldG5LeXNwamlGQzVVQy9YVWJUVlZDcDEwTk1xd2YxV3pxclY2bGdrRW9rUER3ODMxWjBpb1NOc3lXU3luM0tKNTBwck4wTFJVemp3NU5CZzVhUExpbmVuUWF0ZS93b2lkNTlkTGxmWDR1TGlqSFljWVU0eXA5TjUzTVEySUcrZnJGWnIyNEUvQWd3QS9ZUWd3NU9zenBJQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvZG93bi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUpKUkVGVWVOcGlZQmh4Z0JHZnBLYVdaaitRTWtBVFhuajkydlVGdVBTd0VMQVFaSmdEbXRoQmZCcVlxTzNsRVdnZ0M1YVlWUUJTQ2xDdUFCWTk4a0Exc0loNkFJenhCNFJpR1dUWWZqeU9TSUJpRUZCRWwyUkdGM2p6K3MwRFVWRlJCU3pwRHgxTUFMcHVKYkZoMkFqRUgvQVk5Z0dxaG9HZ0M2R3UvQUIwSlNlV1JBMERtVURYblNBbjY5MUhpaUFZdUFBMHpKRGNaRk5JcEJoeExvUzZjaitTMXpjQVhSZElhY0l1Sk5aMVJBT2dLK2NEY1FOWk9ZV0VzTVFLQUFJTUFGa29MeEhWa2hxa0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvZG93bmxvYWRjc3YgLSBjb3B5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVGxDTlRkRVJrVTROa05FTVRGRk5qZzBNamRCTVRZeVFUaEVNamM1TlRVaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFUbENOVGRFUmtRNE5rTkVNVEZGTmpnME1qZEJNVFl5UVRoRU1qYzVOVFVpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qTkZPVFl4UWtNeE9EWkJPREV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pORk9UWXhRa015T0RaQk9ERXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrcUU5S2pnQUFBeEpKUkVGVWVOck1sRnRJazJFWXg3OXZ6aDBhVTFyTTZVYU1YTVpTWXRDRldpclRtNHJRRGhUU2hhSmRUQzBSakxYUXdRSXBFTHZKR2dpeGl4RVIxb1RBRUR5bXBnaUtjd21SalZUQ3RzWFdFclc1dzRjNzlIL2xNenhnVjE3NHdJL3QyL3U4ei9zOC8vZi9qVTRrRXRSQkJvYzY0RGo4QmJuVDA5TkZaclA1WmlRUytZM25KRVJDSUJDRW9HME16d0xBMjI4elRkTlVPQnlPTXd4ek5DOHZiNjZwcWNuQ1hWcGFPdW56K1J4R28vRU5oOFBoWXBFeUdBd1hGeFlXRkxXMXRSOW1abWErenMvUEp5UDJGQ1M1cmEydDhXQXdtRE00T0hoanMwTjBFczNJeUFocnRWb21Gb3N4ZXIyK1FTNlhpelVhemFlUmtaRzdvVkRvYVdwcXFuTy9MZ3NMQ3lua0JFZEhSNW5OZ3FUdGVEeE9rNGVwcVNtSnhXSlJ6YzdPTm1abFpWRURBd1ByTlRVMWwwVWlrZk4vdW0xc2JORC9OTnkrSUpGSVFqS1pqQm9mSDg5ZVcxdWI2Kzd1enNXQmJuYjVCUENDOEZZKzlCWTdIQTVHS3BXR0lFbDhUMEcxV2gyeFdxMlc2dXBxM2VycWFxeWdvTUN0VUNpNmxwZVh6MExmZTBqcEF1OUJMbWprOC9sU1hBU1RucDRlU0V0TCs0YUwzVm1RQkxUOE1qUTBkTi9yOWFhZzRFcGRYWjJ5cjYrdkVXTTNzN2YrR09qQk9uZ0JSeWo5Zm4rRnkrWHl0TFcxdmQzaFE5eFVUbjE5ZlhObVppYnBibVZzYkN4bGNuTHlvVkFvZkk1bE1ub0lOSUFnc0FJbDRHUGNKemlRMTlQVDgyeXpJRnBQZUR3ZUNqYXBIQjRlUHRQUzBuSUJWcUtxcXFvZUJRSUJHN1N5czJkZUFTbkFCNGh2SzBBUmNFRVNEbkxQY1dBYm1zZmpCVHM2T3E2V2xKVDh0TmxzdDN0N2U2K1ZsNWVieThySzdQbjUrZjFFR3piazdHYzJPQVhtd0FTNERvN2g0R1F1V28zQXZFcFlSOTNaMldsU3FWUk1hV25wYTNSOHZyMjkvUlc2cHVEUHJZTGZ0eWxFakd3RUo5bnZKQy9JUmNTd3VWS24wOTFCc1FCWk1KbE1FK3pKMjR1UmVBY000RFN4SDlDQTQwUUNlRkVtRm92N3VkRm9OQW5qQysxMnV4WmpYdHA5NjA2bmt4aWZ2QTBVVytRelVJRWY3T2hCSFBvSGsvb3gwUU1hSGhNdExpNHFvTk1Sc25GM1FFL0s3WFpUbUdUckoxSlpCRzZ4SFVheDl5UHM5Yks0dVBnWGZlai9zZjhLTUFBZk5WNzRMMmNRSEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvZG93bmxvYWRjc3YucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVJ4SlJFRlVlTnEwVk1FUmdqQVFEQXdGMElGKzhTTldJQjFvQjJnSFVvRmFnVnFCMm9FZFlBbSs5RXNKNlVEM25HVW1vNGtFMUp2WjRjSWRtODNkQmFWK2JJRzVTQWJKREk5K1c1TGI5YmFxL2ZBbGxnTzlsbnhMWndRS1N5QnJ3NGI4dTdtT0hFbENLamdCRlNDbGlJRUQzNTlkcFFrdDd5UnhEMXhZZ2dVdzRWcGlRNUxtM01TTHNFS2hUMEFCZjB1Vkc4YU93Rmg4eWZFaGZDckJzVGRTVStOb2Nzd3hTQ1NlY3BNM3M5VlFBeU4rdEFhQkJ2Rk9qZ2Yvekp3NTg3d0laYTQwRmRVMk5WUXFxbFMrVFhITjJ0SW5NZlNZczlUbWY2Tnc2dkE3RTI3WmdNcThzNTBKMmFDQ25XMjB5S04rY1QxenZKTDZVNWVqaGcxVHk1MnRPUHhlLzhPU2luU0xIMDRHeFlGTFlXRzc4QTIyVnYrMGh3QURBUFVEVnRiSVE3NCtBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2Rvd25sb2FkZXhjZWwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVNkSlJFRlVlTnBpWUtBeVlFVG1hR3BwSmdBcEJWSU51WDd0ZWdPTXpZUW1Gdy9FOGlTYVY0L01ZY0dpWUNIUXhnTlFGd3Y4ZFJSY3ovamdleVBUL1I4UGZvZUx6V2RkK2FvUUtIOEJ5VmNFRFVUMnlnYzFSNnVEZjUwRisvOSsvdnNCS25ZQm54NG1RdjVoM3Y5K0FzUFAvd0lNM013T1FOY2xFbExQUWxRb2NZTHRmVUNNVW9JdUJJWmhBY08vL3g4WTMvNis4Q2RZdEo4aUE0RUJidkJmZ0tXZWVlLzdRcGExcnd2L3N6QTZhRGpvSjVEdFpYQUVYTHZPQ0RRWW5NN3UxQjhVcE5qTFNHbXRuaXBoQ1BJMk5qWWxMZ3pBd1NiYndBbEFERXJVRDVEekxOa0dnbklMa0NvRTRrUml3cENGaVBBVGdDVnFJTjhCNUZwODJZOVFUakhBVXB5QkRMOUFiSG00SCtxaUR5UVVYdzVBRnpQaWNtRWgxRUJTUUNNRExRRkFnQUVBTEZKajErYi9aSlFBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9kb3dubG9hZGltYWdlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFYMUpSRUZVZU5yc1ZMRnVnekFRTlNnckVuTlpHRWtuTW1SdnhBODRmOURNREMxck9qVDVnclFEWGNNZmxCOUFvU3NNWldvWTI0RWRLVC9RZCtSY3ViU0tFbVdxMUVNbjM1M3g4N3Z6MlVMOHk3bGlEQytIVnhnM1orSk10bS9ibkl3QkIzSUVKbVJnQXgvRFBjZVhpRmVIa1BEL056Sm1iOUptdGkrc0c0NGRMV2JQSjNZdFdEMlFrczJ4bzJYUTh5azlHNndXN0JPN0N2NktIR3dTblFTSUJTMFdVeTF2VkxHaEVucE5iREgzZ1RIaEd2dGFWdTZ2Z0h3Z0xvQm43Rk1IckJpWTVKWEJiQ21sY0J4SGxFVXBpckpZNDE4aWxQUlRYdE9PbUJ5eC93eU4xRWtqWGlsbVV6a1Y0L0ZZeFBnQTJLM0ZmRDdRMk4xeXpaWU1UUFlqN2FxeDc4Q0ltV1ZaM1RyblltL3ZkanR5cGFrVm4xS1pBV0NoOWVaQ1kvL1ZQZ1RnZVY1bkIwR2daMmliV21GVDFlMFlSNnFPbXJUS3FPdGF4RTl4WjgvdjVvcmRqMFB4KzExL1NPSjRENWhsbVI1T0RiNEp4emF2eS9VVllSaDJnYVpwUkpxbVpOSmxpSXhUWHdIdHJrc092Zk9kVC83R2UvZ3B3QUM4aFlsQUI2cFEzQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9kb3dubG9hZHBkZi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUkJKUkVGVWVOcTBsTUVOZ2pBVWhxSGhMaHZJRlM4eUFpTzRnVGdDRXdnVGlCT29JemdCc2dFbnVaWU5Pb0wvU3g0SnFTVnRpYjdrVHd1MFgvLzNhQnNFUDQ1dy9wRHUwZ0pONGdzWjNrTTE5WVgyN1FodFBYbm4rVU5rR1BEQWlpL1RUTTZBb29jdU5GWWZFMWttVXZvTkZFTUZ1eDg1RTRxdmhjVkNHalJoRDIzWVNRdkpXWDBsUzdrQ0taNHNnaVFvd3gxdHg5L0k1WWgzeWlsbHJkZ2RsK0dHSmpmVnpSVjRwYlRnb21jZ3dXcmJMMThDa29zZU1NbXdTdDl2WGtDdWx5bDlLMURZQnNCZFp1cXZCaUlPQy8zVndJYjNtM1Nwb1hBNCtBUXJvWlBMd1k0YzZoZnpxWmkyanBxMmtqY1FrUm11TThtWGc5TjkyTElqNVhGOTVYQWNMamtzR2VnVGRmRFArQWd3QVBZRVVOeDR5QzIzQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9kb3dubG9hZHNkZi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRmxTVVJCVkhqYVl2ei8vejhETlFGQUFERWlHNmlsclpVQXBCUklOZVRhMVdzTk1EWkFBREdoeWNVRHNUeUo1dFVqY3dBQ2lBV0xnclZBL0FYRXVIN3QrZ0ZOTFUwRkpGYy9BSW85QUlvNTRESVFJSURRdmJ3ZlNHa0M4UThnRmdEaURTQkQwRFE1QXZGK05DOHp3dGdBQWNTRXhZVXNTTjUrZ0NTdUNLVmhybnNJeEkzb21nRUNDTjFBRGlDK0E4UWJvZndDSkxrUHhBUW9RQUNoR3dqeXFoS1NLeTRneWIySDBnZGdya2VPWFJnQUNDQnNrUktHeEw0QURVdGtReDRBdzlvUmw0c0JBZ2liZ2VEWVJmWXFNRllUb09JTmpJeU1jRmVDMkVBNUZMMEFBY1JFUWxxckowWWhRQUFSTkJEb0FnTnNiRndBSUlDSWNXRUFEalpXQUJCQXhCZzRBUm9Cb0Z6U1FFZ3hRQUFSTkJCb0NNaXdRaUJPSkNZTUFRS0loWWp3RTREbEdHZ2UvZ0MwNUFJdVBRQUJ4RUxBUWdNc3hka0R0QVNQQWdBQ0NGdmhJRUJzTm9QbGJlVENBU0NBMEYxWUNEV1FGSUJTUUFBRUVDTzFxd0NBQUFNQXlBRmhMa3FGOTRnQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvZHVwbGljYXRlcGFja2FnZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2T1VZME1qY3lSa0U0UmtKQk1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZPVVkwTWpjeVJqazRSa0pCTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamhsWWpJM05EUTFMVFpoWkRrdE5EazJNeTA0TlRKakxUWmtOV1kxTkdWaFpqY3lOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8xTkROQ01qVXhSRGMwTkRVeE1VVTJRVFZGUkVNNE0wRXdNMEZDTlRNMlJTSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QcFRaQ0xBQUFBSk1TVVJCVkhqYXJKUlBpQkpoR01ibm0yWldOMWZwSUN4SmE2SW9JaXZlOGxDUUcxMkVEaEswRUZSSGIrRWhwTEk5bUJETENvWDA1OUFoT2daMWtlaGlIb3E2ZVBBU3haSlJMY0Ztc0tlZ1JtWWNuZW41NUIxM2tzYmRwZjNneC9kblpoNi85MzJmVjJhYXByQ2ZnK1h6K1VlWUQ0SVpNTXZQckdjVGEvdHdnL3VhcGowdGxVcENMQmJiRmd5RlF2eUtLcmdEWHBNNFB6TUlLd1I3S0I1d1VWR1VWclBaWEV1bFV1Tm5MSkZJYkdHK0JrNlM0T05kUm5mQU1JeGI0WEI0dmxnc3JtUXltZStXb0lMNU9QZ0lib013K0FCa0NsVWs3R3VSYnEvMWVyM1RzaXkvcjlmcnk5QVNKUG8xUHMrREpEaEtleXQwY3lJRmd1Mk1DMis1WEs2K3grTVpDL0V4QUVmQVlmQVYzQVhyOU5HQTBNR1FHSWtQaDBPOVVDaWNhalFhSysxMiswd2dFSGpCUSs3aDRRbmdBNHZnRXlpQWgyRFRGcTR3T2FQS3JGS3A4TEFqdFZxdEhBd0duOXNGNThBU3VBa2k0QmtKYWc1RlVWRVVBOTh6djkvZmx5UnAwR3ExemtvT1B2c0NYb0hyb084Z2VKbWNvZUNtYzR5eGRiZmIvVkt5dldBbFdhQUt6NUxmbkFTWGRGMS9rc3ZsT3ZGNG5KWEw1U3ZkYm5kQm10SVJPL1hrQUhhNUJMdjg4SHE5TXhBN2hQMHZpZHBJbzlhVDk5QzJWM0hEU0RhYk5hUFJxQWpyYkZhcjFSc1MyZU1jZVBPUFhFNGJHN0ROUmpxZEZwTEo1T2pBNS9PSlBHZHBubGh3YjBxK0hJZXFxdU0xaWo0eTltK3dSc1pkK04rL0w5RzJmZ2U4K3luNEdZVEFNdDNXMkdOTy8rcGxQcjZCOCtBQmlGSGxmKzRrQUROdjMwNFVkZDU2ays5dzY2eUNDK0R0TkRGZUJKaGFnQTlIMjA2bmMreVBBQU1BRU1iRUhzMUFhRjhBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9lZGl0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFSRkpSRUZVZU5waVlCZ0ZsQUpHVWhScmFta21BS2w0SUw0QXhJM1hyMTMvZ0s2R2lRVERESUJVUHhCdkJHSVFlejlVakhRWEFqVUtBS256UVB3QTZDcEhxQmpJY0pDTEZaRmRTcXlCNjZGTUJTZ2RDTVFnUSs0RHNTUFF3QXRFZXhsb1dBUFVvRVNnUmtNZ2ZRRHFXcEFsQjVBTkF3Rm1Bb1lGQUtsMmtJdUFHaCtBeE42OGZyTlRWRlJVQXhxT25rRCtEMlE5TEhnTUE3bHFQaEFYSXJzQ0tPNEFwQUtnWHYxQVZLUkFJMkUvMUV1RmFKYWNoMXF5QUp0ZVhHRUlpcjBQeUlaQkFTamNOdUF5REorQjlrQzhFTTNWSU84ekFBMUx4QmZ1dU1JUTVPVUhhRGtFRkc2S2hGSUZMZ01ka01Jc0g1cHNBckZGQXJFR2ZvQWFDcUluNGdzellnMVVoSWJYaCtGWEhnSUVHQUM3b21TTzA4NWRMd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9lZGl0YW5ub3RhdGlvbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVVJKUkVGVWVOclVWRHR1d2tBVWRCd080TVk5TFZSd0F1QUVzVStBYzRMSUp3aWNnTnlBNUFTaFRBZVVxWEFWV3ZjZ3hXWEt6S0JaOUxMS2I2MDBlZExJdTg4NzQvZlo1eWo2WTd0c1ErcjFlNHMwVForQUJIZytIbzV2N2wzY1FxekFnNWdBQTJBTlg5SktFRVFLTElBYWFQWXZlNHBXd05LZDZRU0lNWXBIWUE0a2lxelV1Z2tXbE5nR1VkM3BBeHY1S0RZTVNobmttU0lwUDNtZDR5Tk5TTjB5NEZYMU82Y3ZYK0dmLzAyRUxQZzFvcWlNYncyczRMc1B2U0pqWU9mNWxyN1AyazlOK2RCQnBaalpKb1FLc202TWttbVA1WnNnMWJxdFlLVkxUQ3NodEFxdDJRem8yaFJaUjYrbXhYZWMyQjdHNDBwejZpWmpDdHdhUHRkVE43cyt4NzgySk9mQVNIc1cvNEVwTXdKRlVjdVhmY0dKTGt3ME94RVN6ZXVOVjB2WHBQT0UrQnpXT0RZSFMvMDljdTIzM010M01yUGZxdXVXMDQzK2hiMExNQUFoWjNRTml4OG4wUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9lbWFpbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUGRKUkVGVWVOcnNsTUVOZ2tBUVJkY05CZENCZXNTVGRnQVZxQldvRlJnNm9BUHBRS3pBVUFGMklGN2thZ2xiZ24rU0w5a1FFQlM5R0NmNWJpQXp6ejhmVWFsLy9YNE41TU9iZUdzY281NnNXM0V0RW9jWEs4aUhjaWg5RVRTSHB0QUpLb0ZTTVNST0ZiNHA2a0xDWmhFM2l3bFZObENjSGFBakdvYzRRNEJOQThqRnNTY3NnTndIVU51TkFNaktNelptR0J6VndHUXc0MlhBbWJKMGRVQmNRUUV6T1FQZ1c3QUZZU2w2bG5VYk9FMzVvRGtFNEVLbkc3cmVNb3FrYWM1NUZyb01BcGJUbGFsYnNWcTY3VWtTTUpaczIyQ3REdTFjdS80bzlhZGZQZHZoRG5tWk56a3VNeTZCSVcvMktmT1ZmNXU3QUFNQTZLRlUzMlZ6czh3QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvZXhwYW5kLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQTlrbEVRVlI0Mm1MOC8vOC9BelVCUUFBeE1WQVpBQVFRMVEwRUNDQ3FHd2dRUUZRM0VDQ0E4QnA0NWNvVmxVT0hEbm45Ky9lUGFBTUJBZ2l2Z2UvZXZWTjcvdnk1NitIRGg0azJGQ0NBOEJwb1kyT3pUVkpTY2pjcGhnSUVFRjREbVppWVNEWVVJSUFJUmdySVVDc3JxMjFzYkd4dlFZYmV1SEZERVo5NmdBQWlhQ0RJUmNlUEgvZjY5ZXVYc0pTVTFHNE5EWTM3K05RREJCQVRJY09PSERuaUJYSVp5RENROTBFdXhnY0FBZ2l2TE1pd1o4K2V1VXBJU0JCbEdBZ0FCQkFMUGtraElhRmJvTUxEMXRhV0tNTkFBQ0NBR0tsZDJnQUVFTld6SGtBQVVkMUFnQUNpdW9FQUFVUjFBd0VDaU9vR0FnUVlBQmhYVzBINnVId1NBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2V4cG9ydC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTjFKUkVGVWVOcGlZQmlNUUZOTFV3SEdacUhBRUFFZ2xRREU4VUFNWWl1aUdBaFU0QUNrSEhEb1gzRDkydlVIVUhVZ1EveUJPQUJKZmdNMkY0SU1zd2ZpZ3poY0JESmdQdFExNk9BaUxpOGZCTHFrQVljckh3QU45WWQ2RXgxY2dER1lTQXk2Zzdnc0k5bEFvT3NNb0Y3R0FFQmZYU0FwbHFISllqOHVieUlEWXBPTkFWcGtnQXh6aExKUndwUW9Md085QkVvV2dVRDhBWW9UZ1dJZlFCaGtPRFRKa1JhR1VFTkJybkpFRGpOb2NuTWdLNmVnR1lRVk1GRTdYNDlBQTlFakpSNllCT3hKTkFPVTZCZGlNM0FCRUI4ZzAyRVBhRlo2QXdRWUFBT0tPdk8xaUpOQ0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvZXhwb3J0Y3N2LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFWQkpSRUZVZU5yTVZERk93MEFRTkpBSHBIRkJaN3FFaHZ3QTV3V0JqaTdrQlJFdndOK2d3cWtvTVJXaUluNEJwa25hb3laRjhnTm1wRG5wY3VRaUh3aUpsVVo3Y2M1enM3TjdUcEwvR1AzVGZtYlhuVitRZEpHdWdUSEE5Y2tXSVRia1NIbmcvWEs1V0JydEk4a0l1SEQrcjNZcEpOazVVQWNVa2VCZWF2eDRENVZjUTBrUlVHbEFPbEtaZmpSMmNSaHBYUjA2TEpvUTZnWXErVnVncWlhcXl4cUwxMUNaYnJRZG00SFhESklOdGQ3eXRGWEpLSWxqY1Ftc2hRbWVyUW1TYStUaVBCUXBWUTFkenpSdStkNlM1Um5SVUlVYVlydVorZGZOalNPN1NOTTBWMlo2dFA3Zzl6SHlGTGdDTnNBRG50MGhQd012UUk4YlY1K3JlYWhrRXMrZzdBYWdiM09wTW1wR3BXdlg5VW9QZXNnWHozaG5nVGVSVmM1aFQ4QXREMjAxTmppMUJGRWlvb25qMjRjK0V0YlRjaGZoZ2RPSVFwOGlFM2tkTTFsVStBcEwrZldUTU1sZnhaY0FBd0NscFd5Yk93Mk05Z0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9maWxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3pZekkzTVRReFlTMWpZbU01TFRRMU9Ua3RPRGt4WXkweVpXVTROamMyT1dJME5XUWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORE5FTnpVelFVTTRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5ETkVOelV6UVVJNFJVRkVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qazFNREUxTXpNeE9EWkRSakV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2prMU1ERTFNek15T0RaRFJqRXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrTEpjLzhRQUFBYkJKUkVGVWVOcGkvUC8vUHdNMUFSTURsUUVMSVFVM2J0eGcrUERoQXdNek16Tk1TQldJMWFIcy8zLy8vcjFtWUdCd240T0RBeXpBU01qTDBkSFJETHQzNzJiZzV1WUdjWTJCZURNUVB3TVpCdkxoMTY5ZlJWTlRVejFiVzF1dndnMzg4ZU1IUTExZG5mL3QyN2M5V1lFQXFoZ01Iang0d1BENTgyY0dKaWFtZjBDdUJ4Q3ZCdUppbVB5M2I5OW1BMTF2R1JRVVZOblUxTFFaN09XV2xwYVlsU3RYZHB1Ym15OEZxY0VUdG91QmVEYU04Ky9mUHdZakk2TXFvT3RUZ2ZwbnM3R3hsWUJkR0JrWnVWOUtTbXB1YjIvdkVuUVRrcEtTR1BidjM4L0F4Y1dGWVRyUWRReWJObTFpME5YVlpTZ3VMbzU1OXV4Wk10Z2xJRjhHQndjL3grWWtrQ3Z3QVZCd2dRQklQOGdjbU5mKy8vNzltNFdTNUFMVi81L3E2WERVUUNvYUNNa2c1QU9ZZnBpQkxJOGZQLzVGaVlGUS9TeGdBNEVseHRzWk0yYTRBdk15cGhlWThJY0tLQWZkdlh1WEFhUWZaQTQ0TWF1b3FMUnUyN1p0cFkrUGo1ZSt2djV2OU9JTGxGdEEyUXhiTGlvdkwyZTRkKzhlNi9QbnozbnQ3T3pDNGFYTnhZc1hKWUZzbzU4L2Z6SWlhMkpuWjBjdUM3Rm1QV0Q0L1dka1pEd0hkTXh6Um1wWEFRQUJCZ0JXb0xzMEhITmg5QUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9maWx0ZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNExHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhNeklnTnprdU1UVTVNamcwTENBeU1ERTJMekEwTHpFNUxURXpPakV6T2pRd0lDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUyTFRFeExUQXpWREUxT2pRd09qTXlMVEEwT2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UWXRNVEV0TUROVU1UVTZOREU2TVRFdE1EUTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMkxURXhMVEF6VkRFMU9qUXhPakV4TFRBME9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09qSmpNelZsTkRJekxXWXpaVEV0TkdVMU1DMDVOekl4TFRKaU9HSXhZVGRoWVdSbU16d3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3lZek0xWlRReU15MW1NMlV4TFRSbE5UQXRPVGN5TVMweVlqaGlNV0UzWVdGa1pqTThMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEb3lZek0xWlRReU15MW1NMlV4TFRSbE5UQXRPVGN5TVMweVlqaGlNV0UzWVdGa1pqTThMM2h0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVqY21WaGRHVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNk1tTXpOV1UwTWpNdFpqTmxNUzAwWlRVd0xUazNNakV0TW1JNFlqRmhOMkZoWkdZelBDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmQyaGxiajR5TURFMkxURXhMVEF6VkRFMU9qUXdPak15TFRBME9qQXdQQzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQThMM2h0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQamN5TURBd01DOHhNREF3TUR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K056SXdNREF3THpFd01EQXdQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQalkxTlRNMVBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TUR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU1Ed3ZaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3ZlRHA0YlhCdFpYUmhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs4bnNtMHdBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQXhFbEVRVlI0MnV5VXNRM0NNQkJGbnhFRHNNYVppZzJDc2dCdHlvekFDQm1CRGRnZ0l5UWpwTUh1RUNORUxHQ2FSQXFXaVIwcEJSSjh5YzJkLzhsUDN6cmxuR05OYlZoWlB6aHc2eGYwWG1kQWx1aHZ6YzIwc3dPQkRxaUJYV1JZRDF5anlOYllIaWdUWGxkWll4OStVZm4vVUNrRmdHaXBnZE1uVkd2c0VjRDN6NFZ5SHJCQ3FPWGlsQWVjS3RDNmhGQ2p5S05FU3pOSnZiUEdIcWI5SmNpanlnbDZQQ3puM05zSlNiUTBvc1dsK1AvTElheWlLTzU1bmo5VDdxcXYzOWl2QVFDZjJWWjBzUGdqM0FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvZmluYW5jZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TlRaR1FrSkNOREk0UmtNMU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOVFpHUWtKQ05ERTRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPbVZoWVRnNFltSmxMVEE1TVRBdE5ERXpPUzFoTURNekxURmpOR1JsTlROaFpHUmxZaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8yTXpZd05FWXhNemRFUWpNeE1VVTJRVVZDTmpoRlJEVXdRelF5UlVJMk5DSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QaUhMUHBBQUFBSmxTVVJCVkhqYXJOUkxhQk5oRUFmd3pXYTFlUmpTSXBFU1RBeWFwR21nSUdySUlSNjhpT0toOVJJUDZrWEZnTnFDQjl0Q0ZEd0lVaStHVlJGRVVJU2NmUFN3OUhGUnZGaUtFQzlhSk5xQ0VraXBSRFFHaVZtQ20vNUhadXNtNXRHQ0N6L0M1dnQyc3BtWmIweTFXazM0bjVjcGtVZzBmcmNmWGtPVjczZkRLR2h3QXhiMGphcXFDc2xrVWdnR2czOEQrbnkreG9BdjRST2NCZ2NIOFBMYUlrVGhPOTJVeTJWQlVSUWhHbzJ1UFN6WmJMYkdnTFQ1SUZ5RkhrTXd1Z0t3QjE3b1g0aWlXUGV3MkNRTm0rRWsvOVZ0c0dKWSt3MHlYT045Z3NWaXFYdlk3SEs1alBmRE1BVFg0UkVVWVF0OGhjOHdEeE93Qzg2YnpXYkZicmYzcGxJcE9aZkxxYkZZYk1rVURvZjFZRWZoSENUaHpUb0tPazdwUUdGNjNHNjNVQ2dVdXRQcDlCSDlEVGZCSFJqaHhIdjF4TGU1NXVDWUpFbUhuVTduUWlBUVdNcG1zeFlLZUFnTER6blFVM2dGWjdqU0h6c0VwWlFNNXZQNWZsVGNYaXFWdGtxY2swVnVsejdPenhTbllLcGR0R3ExdW9LL095L0w4a1dyMVRxQWw1dVRlTzBEOVNTOGcxdmNIaE9ka29paWFNVmlVZlQ3L2N2bzUrVS9mUWpUY0J4bUlRMVgxbnZNS3BWS2J5UVNxVHNjSWdlZ3Zoc0Exd2FQN2dtUHg2TTBhMnpxcjBtNHVZRmcxSy9lZUR6K3VOVkp1UTAvNFQ1czd4QnNKMXlHQ3lqTXIxWUJOVzdzTHY2VWVCQlFnWGJBWGpnRkIrQUxIOGxLNHk5Snpib0JGQjVqZCtFdEZaUi92TWFIWUlpUFlneWV0QXRJNDhyUHArUXNYSUlaZm11VjkwenlhTE9DKzU4M3BKbG11Q2lIeitBNWZJTXhmWllhOWxEaDd0SHd3TE1QTkUycm45aVpUS1paMHZmUi9JVDNMWXJpaEI4VUxCUUtDUTZIWTIxaFZZQUJBTVdGcUNUK2VCdzFBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2ZvbGRlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3pZekkzTVRReFlTMWpZbU01TFRRMU9Ua3RPRGt4WXkweVpXVTROamMyT1dJME5XUWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORE5FTnpVelFVTTRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5ETkVOelV6UVVJNFJVRkVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qazFNREUxTXpNeE9EWkRSakV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2prMU1ERTFNek15T0RaRFJqRXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrTEpjLzhRQUFBYkJKUkVGVWVOcGkvUC8vUHdNMUFSTURsUUVMSVFVM2J0eGcrUERoQXdNek16Tk1TQldJMWFIcy8zLy8vcjFtWUdCd240T0RBeXpBU01qTDBkSFJETHQzNzJiZzV1WUdjWTJCZURNUVB3TVpCdkxoMTY5ZlJWTlRVejFiVzF1dndnMzg4ZU1IUTExZG5mL3QyN2M5V1lFQXFoZ01Iang0d1BENTgyY0dKaWFtZjBDdUJ4Q3ZCdUppbVB5M2I5OW1BMTF2R1JRVVZOblUxTFFaN09XV2xwYVlsU3RYZHB1Ym15OEZxY0VUdG91QmVEYU04Ky9mUHdZakk2TXFvT3RUZ2ZwbnM3R3hsWUJkR0JrWnVWOUtTbXB1YjIvdkVuUVRrcEtTR1BidjM4L0F4Y1dGWVRyUWRReWJObTFpME5YVlpTZ3VMbzU1OXV4Wk10Z2xJRjhHQndjL3grWWtrQ3Z3QVZCd2dRQklQOGdjbU5mKy8vNzltNFdTNUFMVi81L3E2WERVUUNvYUNNa2c1QU9ZZnBpQkxJOGZQLzVGaVlGUS9TeGdBNEVseHRzWk0yYTRBdk15cGhlWThJY0tLQWZkdlh1WEFhUWZaQTQ0TWF1b3FMUnUyN1p0cFkrUGo1ZSt2djV2OU9JTGxGdEEyUXhiTGlvdkwyZTRkKzhlNi9QbnozbnQ3T3pDNGFYTnhZc1hKWUZzbzU4L2Z6SWlhMkpuWjBjdUM3Rm1QV0Q0L1dka1pEd0hkTXh6Um1wWEFRQUJCZ0JXb0xzMEhITmg5QUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9mb2xkZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvell6STNNVFF4WVMxalltTTVMVFExT1RrdE9Ea3hZeTB5WldVNE5qYzJPV0kwTldRaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5ETkVOelV6UVVNNFJVRkVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TkRORU56VXpRVUk0UlVGRU1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2prMU1ERTFNek14T0RaRFJqRXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamsxTURFMU16TXlPRFpEUmpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtMSmMvOFFBQUFiQkpSRUZVZU5waS9QLy9Qd00xQVJNRGxRRUxJUVUzYnR4ZytQRGhBd016TXpOTVNCV0kxYUhzLzMvLy9yMW1ZR0J3bjRPREF5ekFTTWpMMGRIUkRMdDM3MmJnNXVZR2NZMkJlRE1RUHdNWkJ2TGgxNjlmUlZOVFV6MWJXMXV2d2czODhlTUhRMTFkbmYvdDI3YzlXWUVBcWhnTUhqeDR3UEQ1ODJjR0ppYW1mMEN1QnhDdkJ1SmltUHkzYjk5bUExMXZHUlFVVk5uVTFMUVo3T1dXbHBhWWxTdFhkcHVibXk4RnFjRVR0b3VCZURhTTgrL2ZQd1lqSTZNcW9PdFRnZnBuczdHeGxZQmRHQmtadVY5S1NtcHViMi92RW5RVGtwS1NHUGJ2MzgvQXhjV0ZZVHJRZFF5Yk5tMWkwTlhWWlNndUxvNTU5dXhaTXRnbElGOEdCd2MveCtZa2tDdndBVkJ3Z1FCSVA4Z2NtTmYrLy83OW00V1M1QUxWLzUvcTZYRFVRQ29hQ01rZzVBT1lmcGlCTEk4ZlAvNUZpWUZRL1N4Z0E0RWx4dHNaTTJhNEF2TXlwaGVZOEljS0tBZmR2WHVYQWFRZlpBNDRNYXVvcUxSdTI3WnRwWStQajVlK3Z2NXY5T0lMbEZ0QTJReGJMaW92TDJlNGQrOGU2L1BuejNudDdPekM0YVhOeFlzWEpZRnNvNTgvZnpJaWEySm5aMGN1QzdGbVBXRDQvV2RrWkR3SGRNeHpSbXBYQVFBQkJnQldvTHMwSEhOaDlBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2Zvcm1zLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOVFpHUWtKQ05EWTRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5UWkdRa0pDTkRVNFJrTTFNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qazNNVVJFUmpjME9EWkNOekV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2prM01VUkVSamMxT0RaQ056RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrRVFRMjdBQUFBdzFKUkVGVWVOcU1WVjFJV21FWS9vNGVmMks1TmtQS05zdVVOak9GRW94aTdJY3VZaGRkZERGMk5id01MVFpvRUFTN3lGMXNDeUc2Y2pCRzVFMWpDMkpkREVJdkJnMWh1U2dLb1FWaUpZSzRaVTVvb2FWMjlueE8zWmtkdHo1NDhKejNPK2M1Ny9PK3ovdkpjQnhINkVvbWsyUmxaVVVwRm90cmNmczdlTDRseXVmekJ6MDlQVCtWU2lWaFM5RndPR3h4T0J6UFJTTFJMbTdGcGJoY0xpZUlWV1hMWkRJa204MnFGaFlXSG9Fd3l2STJycGhNcHU4dWw4dEJ2d3FjMHJqVDZTVHI2K3NGNHNwMWZIeE1wcWFtaU1majhlSmFqZEFmUXF3c0lBRTZGaGNYWlRzN084OGdSUnFOUmptcFZDcVlIZllaS0J1dnI2Ly9nZXRDQW1YQ21wcWF6T2JtcHFHdnIrOVRaMmZuSzRsRXdrMU1URGduSnlkSklwRWdNcGxNaVBQQjl2WjJQOGl5cFVDWk1KZkxTVlFxVmJ5M3Q5ZU5CcDN1N2UzZG41MmRIWTNINHh6THN0VktlQTBmRHFDRzdXY0lFV1NibXBvU0l5TWpIMUNUamtBZzBMcTB0S1NodFVQbnF4SFNXaVQ1QWI3a05DUWJJWG10dTd2YjA5Ylc5bjV3Y1BBcDZza2lXNEpNS3NseXdCRFFMa2dJeVN3a0gwRHkyLzM5L1hnb0ZMcm5kcnVuc2NVSWtKR2lDNjVTSXdDbWFwSVBJTm1YU3FXVU5wdE5BYW5ObExDS1hHcitDM3pQQ2ttbVhmNDhOalkycmRmcjF5RDVDYlVRSkhNQ1daNEFOc0RNbnl5VzV5azVuTDVydDlzZktoU0tXdmpQQnNsdi9pUDVFakFPTko4aFRLZlRyTmxzL2pZOFBPemYyTmpvT2pvNjRpRDVFRjFtTUhwQ3N2TlVHRkQ3MTJDWG1WazJELzlkWGwxZHRjWmlzZXNnL3pJL1AzL1RhRFRld1ZqZHhpT1Z1QVc4TG5hWk8wT0lUTkxCWU5Bd01ERHdFYlZzYjJ4c1BMUmFyYm02dXJvTXlwR2g0MTZCWERITG5HQlQ2TnlpaGpHTHhmSUN2eGR4cnozSDBYVlM2UUwrYVNPRnZDaW01SjNmNysrZm01c2JXbDVldmt2UHlYOU1TaGZzbGhMc2NqRlkyR2hwYVFucWRMb1FadGxPWjdsS2x3dkxZREM4M05yYUdoVWlaTkNNVm1SMUExMDloY0ZkcGZNd0VvbFVQUS9WYXJYVTYvWHFTc21VQ2JFUjFtcTFKek16TTQvNUwyRjZpRWFqSWFXL0N2NWlHSWI0ZkQ1eFEwUERWN3dmb2JGZkFnd0FPdUJYOXBuZFpDY0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2Zvcm11bGF0aW9uLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFSSkpSRUZVZU5yVVZNRU53akFNREZFSFlBUytzRVRMQkl3QVRGQ1lnSFlDWUFMS0NFeEF1Z0Y4NkpjUkdJRTc1RWVJbkJKK1lNbE40cDVQanUzWW1GK1h3WGd5SG1MZFFrZkJ2N2E3ZFpYbUJCL2E4OEI4aDY0emZCWlFrdFlCNEFCSEIxSVhrQkUvaHk0RFBJTmFXQ0dqR2pxSEJCRjV4UEFrM01tKzhPemNYelJ5MkJvaERQRzBOUllBYmxvbGltdFBoQnFlT1gvWWxNb2hid1UxQldzVHU2RUlycGhPR0drSlRYS3ArSnRrU3RJcklTWDUyWThNNXcwV0p6bHNwVURwRWNKaENoMUlqOWJjMDlZWG9kVWlqRlJScTJyejhjb1JjYWx2T1lrdzhmVjgxVGJtMndqNVdrb2srUzdua3BPang0KzRyWWZuc05pL3hwZFgzUldXbVJ5UFdzSWpVNGR5QW41bi9rS2VBZ3dBa0todXpuZnJPc1FBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9nZW5lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFUVkpSRUZVZU5xOGxERnV3a0FVUkpmRVJUcEk0WnBRa2lia0JxYWp5eEhpbkNCd2dvZ1RSSndnNGdTUUUrQ1NEdE9FbHRRZ3hXWEt6RWl6MHNvU3h0OUkrZExZSzl0Nm5qLzdiZWNxcW4vZjcxRE9VRmRuN2krZ2dRVVluWEtHMHhoS29PbEZEZ0VqWkFXMW9VS3FYYTNBMFFiS0lhNC9vVGZlMjMzdGJpM0FheDZPaCtOdkhNZmZXS2JLYkFTdG9SdGMzMElGbjZudHNOUXlnWGZRdTl6NlhWNUNFemplbTRBQmVDWHdCSHJXbWhvQ21qY1pHMjdPWEZuT0pTZm5qZWFRclhXaEYraFY2NWxlMUFpWXE4VVB1V08yRHh3ajVXd0dlamRaMERaZGQ2b3liSjM1bGxObDV0MzZZZ3c1d0lVSkdBeDlxZ3hUZlRrZVR2ZFRnTFBhd0JMOEo0akRhYk5ZajM0K0l3TXNrYnVaUU15MFYyNDdNaGhNMU9xVGhudGYrL2RWTVpjWlFFUHovL0JFTFFYOTMvb1RZQURTUWx3QWlqb1RkQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9nZW5lY29uc3RydWN0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJdEpSRUZVZU5waVlCZ0ZvMkFVREFCZ0JCR2FXcG9LUUNvQmkvd0JJSFlnUW96aCtyWHJEU0NhQ2NvSEdSaVBwcVllcXRFZVNjd2VLbGFQUlMzRWhVRFhnVXoyaHhwNkFVa1JTT01ES1BzQmtzVXcrZ0NhV2hEL0lBdVFXQURFSDZBdWJNU2lDQVFXUW1tWUx4S3dxQVh4UDhEQ0VDU3dIMHNZTm1MeEhqWXhVQmd5amlaSjZnQ0FBQU1BOGhnZEFzYUd2NHNBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9nZW5laWQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVg5SlJFRlVlTnE4a3pGT3d6QVloVjFVZFNYTVNCREdzcENjZ0dSZ1JPVUVOSnlnZEdRaWpFd2xKNEJ5QVZKMXJSVGZnRXgwWVVCSXpHUmhZdUg5MHJOa1JjS3BHYkQwNUwrcSsvbjUvWCtWY3F6aDRUQVFLWSsxMWZIOUV4U1pEM3ZMai9CUFFEckxVU1lXYk1ZTC9JQUFDYVNDdHFGR0JOZ2xkbEdJT25jQmU4WVJ0bWVvaHFSZVFOZnkzZnBsdlFOSVFMZkhCTWZ2cDd2MXIwQkN6N0RKczB4T212V0ZYUFIxdXdxdFN4V0FzUk5vZ1NPQ1puUnJ1bHgrbjV3WHI4V1ZobU1CTHdETk80RVd1Q0o0Q28xWmkxSzRWWFNyZVh4cUluQ05qV1EyWjVaelN0RzVZc01LNWwweFp5ZndEZHBuaGhQV0JTK1N2RFZjbGRBZHowZGR3SnBQdktjNytjR1JPQnVzSHVXeUJLNHlqcFE1N3dRYU45cDZ0b0FDTk9hQnpzY2NwUlJPRzJkVDJKaU1tZFhXT0NrelNwalJadU11MjM5RGJCa3p6TmdNZTFadkFOWWJBMXZ3VHlzT3hXYkppZ0dWT0ZUZkE1WllvekpocGdmdFovYzlEQ1o4NmtpYVlCeTFsdzlRQUJxZzFIWElCMWdTK3IvclI0QUJBQUJJZzV2MU5VVWdBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2dpdmVvd25lcnNoaXAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk0wRkZSa0kxTlRnNFJrSkNNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TTBGRlJrSTFOVGM0UmtKQ01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21JNE5XVTJaVEZrTFdRMk9URXROR1ZpTVMxaVpESTBMVFE0TVRObE9HTTFaVFV3TnlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQ05EWkdNMFE1UXpkRlJUa3hNVVUyUWtVeU9VSTNSRFJETnpjM01rTXlNQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGhEaEhtRUFBQUxXU1VSQlZIamFsSlZkYUZKaEdNZlA4UXNubTlyWXBrVkRrK2hqZmNISXRFR2ppMkl3aGhBanlBWmpJVUxOa2tZMzBtNWFhQmxCV1dJdzZLSmRHR2dYTTRrS0hlUkZzYmFTSWk4YUNjN21ZbEFFRFQvd2MvWi94OW1ZQjAva0M3OExuK2VjLzNuZTUvbS9yM1MxV3FXNFZxRlFvR1ptWms0SUJJSjkrSmtEUVpEZXlGY3FGVXF2MTFPdHJhMmI3d2k0eEVxbGtzaHF0ZHBEb2RBaGlVVHlIU0VwR0FJM3dEeDVKcGZMVVg2L3YwYVFWMDhzblU1VEpwUEpnUXJhZW5wNnpxRFNpd2lmQi9mQkk2RGlLcVN1WUN3VzAwUWlFYTNkYnJmS1pMSTgyUnF6d3VBWk1EVWtXQ3dXOS9UMjl2NVJLcFdaYkRiTFRyOEQyb1lFYVpyK3ZiS3lJbDViVzZORUloRTd2UlA4YUVpd3U3djdFOFN5R01vNTBuZytuNytSYWdLajRBbVhZTjBwdDdTMGxNZkh4MGVOUnVPY1hDN1hpY1hpVjdDWEFxbnI0REY0MjFDRnNBemw4L2tzQ29WaXZxT2pZeEZEdVlEd0FmQVM2SUhzdndYeitUeXh6TzFNSnJNL0dBd09kM1YxUFVUTWlKUU5YQU96NENsWWI2NVFLUHkzNE1URXhHQTRITlk2bmM0aGpVYVRKOVd5MWozd0JUakJqbFFxeFMyWVNDU2tYcS8zcXNmakdWT3BWRVdPWFIwRkI4RVlldnNSdlg1anM5a01HeCt1RVhTNzNRYTFXaDN2NysrUGNZaWRCdS9Cd1ByTFBONTJDSjJjbXBvS3dCR1hTYnRxcHB4TUpnY3NGb3NYWDY0bkpnZVR6SGFGVEpWRWxKeGxPaEFJM0dsdmIvOWNJNGdHTjNWMmRuS1pscHdPWWgwenFETFRIZ1o3U1JKRlNKYVhseSt4ZlVnT2JabERjQnZqMndmQUIwNkJEK0ExODk0eEZOUW1ZUG1QajZtMWNRaW1HS3NRUDk3Y0V2Y0Q0dFU0YmlXNlppZ1l5SE9YeTNVbEhvOXZtb3YwaUZtelREWHNOWWhqcXBkS3BZZEhSa2J1MGx0dmJFeEppS0hjd2kydDFlbDBpd2o5V2xoWW9GWlhWNkhMSXpiYURjNnlGWEVqRmMxbTg2REQ0WGhCcy84Q2lKK2kwZWlSNmVucFhVdExTOUxtNXVZcUxnYzhWcVZKR3Z3RXh4bDQ1WEw1cThGZ21PenI2L3RHM1BGWGdBRUF3N3daSmVLQUs3c0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2hlbHAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1ETXlPRVF3TnpRNFJrTTVNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURNeU9FUXdOek00UmtNNU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2poR04wSTJSVEV6T0VWQk56RXhSVFk1UTBVNFF6WkJRemt6TVVJeE9EQkNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamhHTjBJMlJURTBPRVZCTnpFeFJUWTVRMFU0UXpaQlF6a3pNVUl4T0RCQ0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCt1QWFUd1FBQUF5UkpSRUZVZU5wOGxXMUlVMkVVeCsrdTA0M05VVzFJTHlhK2ZqQlQ1aWFvWVNFb0pNeUZJZWpBK1VFRWkrR0VpVjhHeXpKUzJDZVZTTzlnV0g0UVNTVW94WUhCTGtoSnNOam1LMzBJRkJHcGlCR1J5VFpUK3o5eTcrM3U2anJ3WTV6bnVlZC96ejNQT2M5a3g4ZkgxRmtXalVZcHY5OS9UaTZYMzRSN21WditBdDZEbjhRNVBEeWtLaXNyS2ExV0s4VEpwVUlIQndlVXorZTc2UFY2N1d0cmF6ZFVLbFdNcHVrOWJqc2RkSU1QNE5uKy92NjM2ZW5wQkVGYUt0YloyV20yV3Ewc010UXdETk9qMSt2clk3R1lCZHVFZXRBRE5JQUZacVZTbVpBUUxmNUVpRFV1TEN3TTJ1MzJMbVRwTUpsTUs4anc1Tk5FdGdJY29Dc2xKV1hRNC9FMGt0aFRnaEM2Tmo0KzdtNkZ1ZDF1TmkwdDdXVDk2T2lJU21Lc1FxRm9uWnFhY3BQWUJNR3RyUzNLNFhEMHQ3VzFNYjI5dlFGeEZMSWdQMVhjNTE2VmlBYUtpNHNacDlQWnY3bTUrVTl3ZVhsWmo4Sm51bHd1Umx3VGxtVzFvVkRvTmRaZXduMENQb0w3L0Q3SkhtVmlVbE5UTTRQQm9FRVF4RW5kTmhnTWk5bloyVkh4NjBkSFJ4OUhJcEVHdk93dVhDUHdnNmZnQ2wvM2twS1NhR2xwNmVMazVLUkpFTVFiREZsWldlK2tSU29vS0pEaDV3VUlpcFpKY2MvekRqa3dFZ3NOby9oUTFFMU5UUkdwWUY5Zm45MW9OTGFqYllqckFsYndISHdXUDhmRnBwL3FRNm1SZXVwME9wTEZIYmo5WExZMjByTEpZbmpCM3pNek03cXpIdUI2c0IxOEIvZEFYUG9NRjdzbkNHSkN3anM3TzdmK2srd3I4QWo4a1c2UXRpS3gwQWdKZ3MzTnpXL0Q0WEQxOXZhMk1va2d1UnpLZ1VKYUVzeTdFbTFYM2RMUzRoTUVjZXdyNktuZGdZRUJtM2lNUkVabVYzV3FYalJOall5TTJKRGRibGxaV1ZpNGJYSnpjNm5oNGVFSE9LMDNHUmtaU3hBT1NHSWZKc204ZkgxOTNUWTJOdGFRbDVlWE9NdDFkWFdmTUhyT0NSaEdxU1lland0WkpMRWF0Tk9FeFdKeGtsaGhsVnl3UEVTa282UERyRmFyTjJwcmE0Zm01K2YxQ0tEeTgvT3BvcUlpSGowWUFoczVPVG5tMWRYVkJBMlo5TVltZCtMYzNOd2xqRjAzaWwwRjhUaE84aGYzbklhYmxDVXdoQXYyNit6c0xGVlJVU0hFeTVMOUJSQmhuTHdhWXRmaFh1Q1dmNEFOMHJmODVWQllXRWhwTkJvaDdxOEFBd0RYVjFiYytxVXl4QUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9oaXN0b3J5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLcVNVUkJWSGphWXZ6Ly96OEROUUZBQURFeFVCa0FCQkRWRFFRSUlCWmNFaTlmdnZ4LysvWnRodS9mdjRQNWYvLytaZmp6NXc4REp5Y25nNDZPRG9PNHVEZ2pObjBBQWNTSUxRelBuei8vLy8zNzl3d3lNaklNdkx5OEROemMzQXdnZFI4K2ZHQjQ4dVFKdy8zNzl4blUxTlFZek16TU1Bd0ZDQ0FXYkliOSsvZVBRVTlQaitITGx5OE1WNjllWlFBWkRuSWh5SEJsWldVR0VSRVJobVBIam9FcytXOXVibzVpS0VBQW9SajQ2dFdyLzgrZlAyY3dOalptZVBqd0lkaEZJSmZ3OGZHQjVUOSsvTWh3N2RvMUJnNE9EZ1lEQXdPR2ZmdjJNU2dvS1B4SDlqNUFBS0ZFeXBVclZ4aWtwS1FZdm4zN3h2RDI3VnNHWjJkbnNHR2ZQMzhHMDdLeXNneXVycTRNbno1OUFxc0hxVDF5NUFpS0R3RUNDTVZBa0F1RWhJUVlybCsvenFDaG9jSHcrL2R2QmpZMk5vYWRPM2VDNVg3Ky9NbXdlL2R1c0t0QlFRSHlQaWhNa1FGQUFLRjRHYVNCaTRzTDdEcVF3YkJZZmZ6NE1jT2VQWHNZTGwyNnhPRG01Z1lPUTVBYUVQMzE2MWNVQXdFQ0NNV0Z2Mzc5WWdCRkNNaGdVQ1NBMktBSUFjVXl5REIvZjM5UXpJSXRBbUZRektPbkVvQUFRbkVoU0JLWS9zQUdQSHYyREJ4bVRFeE1EQ1ltSnVDMEJ3ckhIejkrTUx4NDhRS3VocFdWRmNWQWdBQkNjU0hJQ3pkdjNnU0hIekQ1TUxDenM0TmoxTmJXbGtGWVdCaHNPQ2dJTGx5NHdLQ3RyUTBPUjJscGFSUURBUUlJeFVDUVMwQ0pGdVJka0d0V3IxNE5EblNROTBEQkFBckxsU3RYZ3NNWkZHRWdPUWNIQnhRREFRSUlJNmNjUFhyMC8vSGp4eGxzYkd6Z1NRbVV3RUhoQ1hLZGxwWVcySUlEQnc2QURRTW1MWlNFRFJCQVdMUGV3WU1IL3g4K2ZKaEJURXdNbkRRa0pDVEE0UXNLTTFEQ2Z2ZnVIVGdZZ0drU0krc0JCQkFqcnZJUTZCMndvWThlUFlJWEVLRHdCRVdVblowZGlNWmFPQUFFRUNPMUMxaUFBS0o2ZVFnUVFGUTNFQ0RBQU9NOFBHeGR0M0lCQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9pbXBvcnQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUxwSlJFRlVlTnBpWUJnV1FGTkwwd0dFaVZITFFxU1o5VkQ2QUNHRnpFUzRMZ0ZJRlFDeGdxaW82TU0zcjk5Y3dLZWVrWUJoQWtEcVBNZ3dxTkFESURhOGZ1MzZCMXg2bUFnNHNBREpNQVlvdTRBc0Z3SmRwd0IxblFBV2FVV2dLeCtRNnNKK0hJYkI1SWgzSVRTSjdDY1FISTVBVng0Z050bUFYTmFJbG1SZ1lBRVFQOFRsZWtZaWtzMS9ZbHhHYkN5VERBYS9nY1RrWmZUdytrRFhrb2tSUjJFUVQ2VCtoY0FZWDBESXl3ZWdoUUF4NEFITnZRd1FZQURIV1N3WU9GKytud0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9pbXBvcnRwcm9qZWN0cy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TjBFd01UbENPRGc0UlVGQk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOMEV3TVRsQ09EYzRSVUZCTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakV4UWpZek5UazBPRFpCUVRFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rVTJORFJFUXpCRk9EWkJSREV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K1hJOGVqQUFBQWlkSlJFRlVlTnJNbEQ5b0UxRWN4KzlmYUJvOGxkS3JpaFdDZzRSRU9adlF4U21MSUVnVzBjbkZTVGxFSERJb0FaZmlWRGNIQ2FXZEhEcGtpTUVocm9LTGlSYWxReUV1SWdaRmJPRmFjOFplei9QN2crL0Y0MUFvbU1FSEgzanZjZmY5L1g3djkzMVBEY05RR2VmUWxER1BzUXNhM1c0M21sdmcxRisrK3duV3diZjRaaEFFU3FGUVVFelRITzJwMld3Mm1qOEVwOEVIRUpKb25BU1B3UW9EeXpyMFBHK2ozVzd2Rkl2RjN4bG1NcGxvTG1IdWdnN1hFOHhNdUVLUkhGZ0VMdERsbTM2LzcwRHd5MGd3WG9Ga0RLNkNpL3hKNWY0MHozc09QQUxQNUlkME9uMjlXcTJ1b3VTRmNybjhQQ240QTV3RjU4RXRzRVVSRWZXakl3SzdvNDVxMmxLbFVsbDNIT2QyczlsOGtjdmxBaTF4OEZOZ0UzeGlnTy9BbzZBZkY0c0dtckkyR0F5MlhkZWRTR1lZTDN1L0k5UHI5V3hkMXpYMHdrdjZjSTlaN08xVHpBR3ZHbzFHRzRLWDYvWDZndS83aG1SNENad0Q4eUFQRG9JSGlVd253Uko0eS9VTk5rZEpwVkl2cGZ1dFZ1dWVZUmlhbXMvbm4vTDgzc1NzTWhrVDIyV3dEWEFUSEFDdmVRaytTclBwaU94d09OeVNrdS9URm1MSUZFV0RHRkxGR2tXUGdSbHdnc1lYd1VOczRIdllhRnEzTEt2UFVpK0FiWENZWlVlWXpGZ2NjQlE4QWRlNERta3ZDVHlMcXpnUVFTbnJNemdqVWNBT2hlTzQzTGZwVlJFN3p2SWxTd3UybWJKdGV6bCtsMDJXKzZjSE1qSzN5bXdETmtZeVBZTE1OdUhIVnExV3U2TjJPcDEvZWExbTVUd2grTFZVS3IxRHh4WDF2Myt4Zndrd0FONlBxdXRIUUR5NkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvaW1wb3J0dXNlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TjBFd01UbENPRU00UlVGQk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOMEV3TVRsQ09FSTRSVUZCTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa1JFTTBFeVJVTTJPREkxUXpFeFJUWkJSVE13T1VNMlFqTXdOakU0UTBJMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rUkVNMEV5UlVNM09ESTFRekV4UlRaQlJUTXdPVU0yUWpNd05qRTRRMEkwSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4KzZmMjllQUFBQXlWSlJFRlVlTnFVbFYxSWsxRWN4cy9tQnBzb2xoUHRZbXN5b2liaWNMQktDVzFYaGtZMzRvVWZFTGJLaEJMS1lCZFJLS2xrcWZSQktpU09FU1VwWklrWEJrWExITzFpaUlFWGlkTGEyQ1JtemEvVk5qZTM5Unc1cjcxTysvREFqN0h6bmozdjgvODQvd25pOFRqWmFZWERZVEkyTm5aY0pCSWRGSXZGTXpnM2tYZ21HbzJTZ29JQ2twNmV2cmtuMmtuTWFyV210TFMwdEh1OVhubHljckozYVducGxGQW9MTWVqYXlESW5Rc0VBbVJvYUdpTG9EQlJ6T0Z3Q0dwcWF1NW1aV1V0RHc4UFYrVG01bDRJaFVJVjFCQzRRLzZ4dGdsT1RrNXFFYVlDRHErclZLcjFTQ1N5a1FGZ0JBZEIzcTRFeldhenVyQ3cwS0ZVS2hNZnhZQWJLSGNsaUJDLzJHdzJ1Y3ZsMnVuOFB2QjFWNEwxOWZYMnBLUWtmMXRiMjFsYVJWU1llM1FSTElLcHZ3bHVxekxObTlGb2JHOXNiSHpuOFhoT29NSnVpVVNpd3FQRFFNZEMvMytINCtQaisrSHVmbTF0N1EyTlJ0TVREQWFwb3dmQUJHNG1tdUJGc04waHhGSXFLeXROWldWbDVxNnVyc2YwOE1MQ0FyRllMQVQ5YU1HUnArQWxXQU0vd1lUYjdYNmVuNSsveUdrSXVKdUNYaU1sSlNVZDJkblpnZjcrL2lidXpYQktYeVNDWUR1K0dzQmU0QUh5V0N4R0hjN0F3UG5tNW1ZclV2TTc1TkhSMFVQejgvTkgwSDhkaVdGZ2RZQ3JUTXdQaWtFcmJnOUJuNnBOSnRNTC9DNXZTdzRIQmdiS3RWcnRLL1RmRDc0U0tuNE1INWQ1V3oyZ0Nud0VNMVJVSnBObGpJeU0zSnFkblJVS2VjblZLQlFLRzEvTTcvY1RuODlYRGxGdWl6YjJCMWFjTTZCend4VmtWbGRYaTFkV1ZwVDhLa3VxcTZ0OWZNSHA2V2xpdDl0Vk5EZHNOWUVEZ0NiK0tQZ0VuckZJVWlFczR3dEdNUmhTK1lKMGltUm1aZ1pvZzdNbEIyL0JhM0NiNm9EdnZLc1oyUlJFY3FlNnU3dFBzbUd3c2RScU5kSHBkRy9RaTl3V0RmVUtFNlJYY0JCY1lyUFJoYXE3TnZ1d29hR2hyNjZ1N2tscGFXa25uRkVYSWJydmREclhwRklwVlpTQ2I2eVE3OW1RK0F3eU1CZkZtQUdQWUdCWndKL1ljM056YVhCWmhjR2dScEdvUUJ5Q1lSUW5pUHljdy9kbDhKQmRDUHFTTklpMUlzZUR2YjI5cC9WNmZWandwNzhBYmhrTUJ1Nm1hRmhSOUdBUFdFZVl6cHljbkQ3YyszdEZSVVhyOVB3dkFRWUFJd3cvRFlyK011a0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2luc2VydGFmdGVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLeEpSRUZVZU5waVlCZ0ZsQUpHRUtHcHBibWZETDBMcjErN3ZnQmRrQVZLTzVCaDRFRnNna3pVOWpMTWhZMWs2RDFBMTBqNVQ0YmVSbUNrTk5BOERKbG81V1Z5a3MwRElCWUFZZ1dnMXplZ3g3SUNGT09OVmFER0ExQUhnQXdxQU9KNklGNEE1SDhBaVlQa1lRYkdFNW00RDBCOU14L0pBUWxRRFBZeFNXRUlORXdCNmlvRnFrUUswRXNQZ05nUnlDd0U0ZzlJWVhrQWx0QVp5WTFOYURqMkEvRkRiT2x4OEFLQUFBTUE0S2N3TUNaQUFrNEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL2luc2VydGJlZm9yZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBS1pKUkVGVWVOcGlZQmdGVkFXYVdwb0dRQnhBaVJtTVVJTWNvSHdESU80SDRnMUFYSGo5MnZVSFNQSU9oQXdEcW0rQUdmZ2ZpL3dISUo0SVVnU1Vid0N5NjRrd2tKRUpqN3dBRU5zRERWTWd4Y3NzVVBvQWtpRUdVTmMxQW0yY0FQWEJBeVExSkVXS0F4Q3ZCMklCaWlJRmk4RUpRQ3FlVk1PQVBuSmt3U0duUUV5c1lnTk0xRTdMdUZ4NGdOb0dQaURYVUZ3R0poQ1RrTEZGTXRYRGtJbGh4QUdBQUFNQXlPMG9Od1VUWXlRQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvaW5zdHJ1bWVudC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUVZKUkVGVWVOclVsT0VKZ2xBVWhTMEVmK1lJYnBCdFlCT0VFMVFiMUFadUlFMWdUaEJPOE53Z044Z050SjlDWU9mQ0VSNkc4aFQvOU9EalhaOTR2UGZjcTViMTE4dDJIQThFUzRuNW9BVXY4REI5YmoxeXp3TTFzWllRUEdoeElCbWJDSzZHeXNXbXdKV1pibVQvTkUwNDE3K0EzbFhpSCtPVzE0azBhMDdKM2ZJMUx3WHArblBJZ2lIQnJoRjdjQVlwS0xpN2pCVkUzU2xsSnl4VnNkUkFHNmVLNTlGVUw3czVUSHJuTVpDeTFWUVA3NkFFV2UvOFBYVStKWXVJR1hiRTJqM0ZESCsrSUh0RWM4dnNTamJDbzlpRm5aZDFNeDFzTVRzSFIzQmluUEhhNDBzc0RQck9WTEJpVnZvcTZadkxPSVJnYlZweU1YQXVRaW1FOHYvOUtYOEZHQUR5MUV2UHg4b1F3QUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9pc3N1ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeXBwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UWpjME1ERkNOekU0TmtRd01URkZOamcwTWpkQk1UWXlRVGhFTWpjNU5UVWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRamMwTURGQ056QTROa1F3TVRGRk5qZzBNamRCTVRZeVFUaEVNamM1TlRVaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalUzTTBFNU9UQXhOek00UmpFeFJUWkJOamd3T1RrME1EZEROamszTkRjM0lpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qVTNNMEU1T1RBeU56TTRSakV4UlRaQk5qZ3dPVGswTURkRE5qazNORGMzSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K0tUdm1iQUFBQXY1SlJFRlVlTnFFbEY5SVUxRWN4OC91L3BwcFRaMkRJYVFpeTVjUkt2Z3lXQVk5WkNIMTB0amprdEpCNHN2bzBxdXVIcHlORXFFeU53M0JKMW1FWWNRMDhjRmdEY3dZcGo3TUVhdTFOV2crcUF2M1IvdWVjV2EzeTlWKzhJRjd6dStlNy9tZDN6bS9uK3p3OEpBSWJXWm1oamlkVGxKUlVYRUZ3OXVnSFZReGR4cUVnQmU4b3hQWmJKWTBORFNRdWJrNW9sUXFpWUtJTEoxT044dGtzbUY4NmtFQXZBQS9tTnNBTEdBUTNBWDN3S1p3L1QrQ0l5TWpYYU9qbzgvTHk4dWZZZWdCdjBYN3JiRk5IZ0luZUE4YzRFM3BCNjcwNGZQNU9qd2V6MFJMUzR2OTRPRGdnVWhNeGlnWjlkRi83R0NDNDdnT2hVTHhWM0JyYTB2cmNya20zVzYzdzI2M3oyY3lHV0ZVZlN4dkg4RVRVY1R6RU9wTkpCS1RrVWlrNmtnUXgrUmJXMXVETnB2TnY3ZTNKMDVyTXhON0NVeGlKNko3dGIyOUhSd2ZINzlmSE1kaXNhcWxwYVdyUE0vVFJKTkNvU0JlUTQvM0ZheURESkd3c3JLeXdVQWcwSlZNSnM5d2ZyLy9tbGFyL2RuVzFyWkJwRzBmbkFLblFWN3NwQUhvOWZvTmxVcVZYRmhZdUtnSWhVS1hUQ2JUWi9xR1RoQlVNN0pTZ3RYVjFVU24wMzBLaDhQdFNBRjNycTZ1N2hzNTNxaUlDbWlrQktuSjVYSkNOYUJsb0pjaXh6TXAvRWRReVpBVXBOWEdOT1FjUWs3dDd1N3FUaERjWi9rN0MzTEhDZTdzN09nZytvdXJyNjhQcnE2dW1zUTFMYkFFNkFCM0JDVW9mRFlFQVpHVmxaVUxCb01oek9IdHpjYmpjV00wR3EwNVJ2QXRlRW9yQWp3V08ybUZZSDFOS3BVeWRuWjJMbks0NFVoVFU5T1hzYkd4dm1LTnlXVGlOVGVCRFZqQmRha2RVVmw5S0l3MTZNUTRla1A5L2YydTZlbnBYbHk3c2JLeWtvaU9id1FweG5tSi9CbHArZlgwOUF4UXJXTHBXU3lXZGF2Vk9vdzZubDFlWHE3VmFEVENOYlRyZkFkeDlpMjAybHd1TjR0N2VHUTJtOWVLSnl4RlEydlk0WEM0OGRwdjRLSGV3dndIY3JLWndTUWE3T3ZHeGthZU5saWF6NlAyaFI1SXZGNHYzOTNkUFFSeDJnaW13R1dnRmJRdkxadWJZczFpQ1BBMHFGSmduSEJMdFZwTlVOTytmRDVQdTNJVURJQkZFR1Fzc3JrbzY5dytjZGgvQkJnQWk1UXFSWkQ1ZDMwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwva2V5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFRTkpSRUZVZU5waVlCanNnSkZZaFpwYW1nSkFxaCtJRTZCQ0Q0QzQ4UHExNnh1UTFUR1JZUGwrSk1OQVFBR0kxd010Q2lEWlFLZ21BeUQrQU1TR1FGZUJmTFlBS2wxUGpnc05vUFFDb0dFWG9PeENORG1TREh3QXBaRzk1d0NsUHlBclpDSFN3QTNRQ0ZFQWV2OCsxQUtZZ1JQSk1SQVVBUUpJYkFXWVJjQWdhQ0FwMlVDVHkzMm9nUnVnTGdJWmVBRXBQRWx5NFhxb1lTRE5pVUJEUHVCVHpFVEFkZjNRc1BwQWpHRjREWVNtdlFKWUVzSG1QYUlOQkJvR1NsdnprWkxGQTdMek1qUVM5aVBsREZqc0tnSmRTZEJnYkpGU2o1VDZIMEFOdlVDTVlTREFqQzRnS2lyNkVraFpBREVIVXZKSXBMaGNBM2tkaUVHbGlRTERzQUlBQVFZQWlhNU5KOTl5OFRRQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbGFiLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFWTkpSRUZVZU5xc1ZERnV3a0FRQkdJSnlzc1A3Z25rQjZhaXhEOElkT2xJcXBRNEx3REtWQ0V2UUx3Z1NVbUZmd0I1Z1VrWFN4QXlFMjJ4V0Q2ZkladzB1dFhlZW5admQ4NjEyb1ZYdmV3d2FEYmIyS0tjZTd2THNzbFoyVUFZQTRjOC9sUGhDeXNDRnNvOUIyNVE1ZWFjQ3QrQTBPZlRxMUZDWnJGWng3RTl0Ykkra1BMS2dIR2RWU1dMNUlPd0pNWUFLeStwQkpJc3FwQ1lzV3RXclAxWFJ3ME5nanRzdkdJTDl2Sm52LzkyRWZJTU1WOHdoN0NmeTZZNkZyMmxZbHRQcFFmZDU2SXBNK3M3MEpGcTF6SWNWMDhaMi9iS1JxUmhoZmlUZ3BZYjlITnhwb29PUXduOHk0eFhFUVBYTUYrQmtRd2psbll3Sm5FTmhSOTFnWTBRZGVBTDBmUkVCcEVBVS9qNFpCK0JqSWtSTi9YSkpsWkRjUW43dmtoaTlTSmhZNk5nbjRDZXV0SldOWjhWM2RLUDZnYmV2NDBpNVFRL3BBVkdZUWpNUVBad3luczJjdldWK2hlbUhnbGRmdjBLTUFEczlIaTFsN3VHWEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvbGFiZnVuY3Rpb25zLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZSVFl5UkRrMU5EVTRSVUZDTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlJUWXlSRGsxTkRRNFJVRkNNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qUXhZbUl5WkdZMkxUQTRaalF0TkRkbFppMWhaV1EzTFRKak5UQXdaREUwWW1NNE15SWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzVSVEJGTjBVM05EZEdOakl4TVVVMlFUY3lNVGd6UWtWQ056SkNORUZDUkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BtOWdzSTRBQUFSc1NVUkJWSGphZkpSN1RGdDFGTWR2TCtVeDZJTVZLOWhXb0tVWUVJSUtVdGlBakpVWU5OQ1Z4OUFROGZHSEpScVRJUW00RU4wQ0JFMEVsSVE0c2l4QU1DNkJRQ0FSV0lDQVZRdFprRXFMaUlKUzNFcHhDQzFwS1FVSzVlSDNSeTRFelBRbW4vUjNlODg5OXp5KzU3QU9EdytwLzdzbUppWUVOcHZ0c3BlWDF6M2NIb0FYZ0FGNDl2ZjNxZVRrWkVvZ0VKellzeC9uWkhoNG1OL2EycW9wTFMyOTA5YldGanN3TUZEcTcrLy9CeDRGZ3hyd0JqQnRiVzF4T3pzN25mL3AwTzEyVXpSTlV6czdPN0xlM3Q1TXA5UEpEd3dNWkNHNkpqeCtEMndETFhnT3FJRUN6OTdIci9YWUIzMThjRGdjVkhGeDhUVzFXbDAvT1RrcHpjM05IWStOalIzVDZYU0hmbjUreE00TlZzQThVSkwwNGN5eXVibTVOajQrTGlEQm5IRVlFQkJBSVMwZnNWanNQVDA5cmNEWlliZmJMK0hlaVZxSllUSkNTZ3FlQWs1Zzg4VlZWVlYxSXpzNysyNUZSVVhzaWNPUmtSRkpaV1hsMWJTMHRFV2owYmpwNCtNenRyQ3dJQ29xS3JxalVDaFd0cmUzRlRCN0VYd1BQZ1czQVhGZ0VRcUZjMkZoWVgvbTVlVXRFVjhzMHVYQ3drSk5YMS9mbGF5c0xDT2Z6MStkbloyTjBHcTExOWxzOWk1U0w1dVptYm1LWUg2QnZlWlV5VW45YnlCVmQwSkNBaTg2T2xyTDVYSVhqNXBTVjFmWEZvekxZckVZRUZrYTB2amMyOXQ3dDZlbko4WmdNTWhnZUF0bU12QXU2Q0FsQjN2Z1M5VDM1c2JHaHFHbHBhVVlkaXRzdlY0ZjJkemNuT3R5dWM3alk4K0doSVRZbFVybFVmZ2RIUjFQb3ZCQ3Bnays0RldRQ2RyQU42UzdIbzluSGxseVJTTFJRblYxOVdmMDh2S3l2THU3V3gwYUdub2Z1ckxtNU9STUhlY2trOG04MEpBSE9CSU4vZ3lNNEJFb0I1ZUpUVUZCd1UvejgvTlNaSFFPVW51RlRrOVBIOERoZGNoRE9UYzNKNCtKaVhFZU85Um9OTDhIQlFWeERnNE95RWRJcEYrQU12QVhlSTNZaEllSDcwZEZSZG5oNTBka1ZFMmJUQ1pwWTJQam0zandHeVR5QUEzaEhUdU1pSWl3eE1mSC80cFNGT0wySEROeVJOd3pJQXo0bXMzbS9hbXBxV0M4bHpJNk9wcEZMeTB0aWRIUkpCYUxKY0xMN3E2dXJvUi9UYUtSMGQ3aXFmOUV3QTUyMnR2Ykw1U1hsOS9mMjl2YmJXaG9FTkdwcWFsamc0T0RiOG5sY2hzV2djUnF0WExRYWVLQXdpK0ZMcitOVHA1blJpMGR2QU9pbVJIa0FEbHNBcUdRTUpSTlRaUEJScDE0aU94U1VsTFNNdEtjckttcCtSQjFvN0VnbEt1cnF5cDBPaEF2U3NBblRPMStBSGRKUGFIaFdYdzRwcjYrL2lNc2tZK1BkSWp1T2prY3prTTRpWVNJeWZUb1MwcEtxdVBpNG5RU2llVDIrdnE2QzA2OUdPMlI4WHNJYmtJeUcxREpBWDVGUTBORHZOcmFXdGVSUTZqYzF0L2Yvd0ZtK0ptbXBxWnJtR00zeFBvSTAvTVNwc1hNMUpGTVAzRjZBZVNBSVh6am9sUXFwUkdRS1NNajQrOHp5d0V6U2NIcEUyalEwNGdvWW0xdExSTDEvUm9qeDRkd240ZUpDcnhNU2d0YzRDSVpCR3luWVRTbUxETXowM3d5eTZmM0lWYVhrTWZqV2ZQejgyK2hHWDQ0ZStCY2p6M3BDNU00cHRzQnBDbUlUSVVGVzVtWW1PaDQ3SUxGKzFSS1Nvb1Y2VklxbGFvUDJtUkRYMW9VK3p1VVFRZVQ2OHdzZndXK1pUaHovU1BBQUVCYS9Sd0FzUHE5QUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9sYW5ndWFnZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBV05KUkVGVWVOck1VekZPdzBBUXZBUjZRdUhlZElTRzVBV0Vqbzc0QlNRdkNMekFTVWtGUDRDOEFGRlMyYndBdXlGdDZKQ0loSGtCekVwejBlcUl6d2NTRWllTnZMN2RIYzN1M2hyejMwK3J6dEU5Nkk3d09RVUdRRWU1Y21DK2VGN2NCaEdDU0pMdmdCaVlDUUdTbDhvM0JNN29UK0FyYWdtWmtBRVNkSUhneWxQQk9UNHBjS3hKWFVKUlpoQ1F3TTRhMmpWbkt5YUkzN09YYlVVV3MxOWpYZzFZOGowVFp3clNnaGhFMTh3ZGZpTmtiM0pkSnV5YzVWZGlXK0QveFZIYXN6L2J5aUVxU3FjRm4ycXlRVWNUaXJKRDdZU2FWZ0RIRHZDeGlWQlVwRkMxbmk3c2FRM0pFZkNvV3BWWXg1WTFWbStyMXlpS1RtRHV3MzZBN1ZNblBjd1JrN0tTeTAwS0RTZjhCR1VsZ3FhZU55ajl2cUs2ZnRPbXlNUXlFTzQ2ZHgxQ3loMXgrbU83UmQ1ZEJzRzczUURZTjN5VE5ySGdMaGROVXpiT2dIb2dtL0NOOVgxckdFSllza2RMS3ExQzMySGJvL0RIWkQ3QzRqZGtmM0srQkJnQVdIdVRiUUtaM0gwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbGVmdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTGhKUkVGVWVOcGlZQmdGZ3c0d0U2dFFVMHV6UUZSVTlNZWIxMjllNEZQSFFvUkJEa0JxUGhBckFMRWpJZlVzZUF4U2dCcmtRSXFYR2JFWUpBQ2s2b0c0QUl2NkMwRDhBWXY0d3V2WHJpL0FjQ0hRc0FRZzFRL0VBamdjWUlCRC9DQ0tsNEVHR1VDOVowQnBMRE5CNlFkQXZCR0hkMGczRU9qL0QwRGNBR1FhQXZFR1NneGt4Sk5VK3JFRUFTamdIMkxSY2dEb29BTTREY1FUU1k0d2pZVENFQ3VBSmdWRklKNUE5VHdLU3VqUU5Eb0tVQUZBZ0FFQW5yc3U0Tkh2bkpFQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbGlzdGFkZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBUTNTVVJCVkhqYVl2ei8vejhEUHBDUWtDQnk4T0RCdFZ4Y1hBSkE3aVFnbmd1VCsvYnRHOE9xVmFzWVRFMU40ZW9CQW9pSmdRQmdZbUxLQjFLTGdkZ2Jpb1dSNVRrNE9GRFVBd1FRSTh5Rk4yL2VWS2l0cmEwRE1rRUNqTXpNelA5WldWbi9YNzkrWGVMTGx5OXBRSU9mQWNVYmdGZ1RpRUZzL245QUlDY254K0hvNkhpOG9xSmlLc2djZ0FDQ3UvREZpeGZxUUt5Vm5aMDlGNGhubTVtWm5YNzkrcldxbXBwYXdPL2Z2NTlCbFlFTTNBWEVHa0E4SDJqSlFpVWxwVE1YTDE0TWhKa0RFRUFzU0s3OUx5VWw5Y0RlM3Y0WWlDTXZMMzk5eTVZdGxuZnYzdTBBdXZRM3lOVkEvQStJbGFEaGVCaWtUa05ENC92NTgrZWRZSVlBQkJDeWdReEFIekREMkVCWC9aS1FrTmowOCtmUEwyL2V2UG5MenM0Tzg5RkdJRDZKcEE0bEVBRUNpQVV0Z0gvZnZuMWJmTzdjdVhadjM3NTExTkxTMmdYMDlzNHpaODR3UUEwa0NBQUNpQW5OaFl6YzNOeGYxNjlmWDMvcTFLbWZkbloyNXg4OWVxVE93c0tpRHBSR3hxQXdWSVhxUjBsM0FBR0U0a0pHUmthR1AzLysvTFcwdE53RlNtTVpHUmsxdkx5OGY0RmhpTzRRVU5COEJlSmFJUDZMTEFFUVFDZ0dBZzFqRWhBUVlHcHVicTZhTVdPR2o2cXFxdkNuVDU5bUFpT0hBWml3Y2ZrU3hReUFBRUxoQUYzeUJ4aG1mREV4TVV1QVNlTCt4bzBiYyt2cTZsQjBYN3QyRGVTNlVDQzJCbW1aTjIvZUsyTmpZM2pRQVFRUWlvSEFSTTdNeHNiMkh1Z3FSbEFPS0NrcHFiNTY5U29YTERjQVk1d2JLTzhENUV1R2g0ZGZCNGIzTTZDQjZVK2ZQdjBJREM0Rm9QNEhBQUhFaEdZZ1VKenhmM0Z4Y1UxSVNNaVJRNGNPR1FFalpBMVFhdlhmdjMvWFBYand3UHpYcjE5U3dQQjlmZlRvMFVSZ0xna0FodkVYb0FQNGdXbzJBL1d5QXdRUUUzcWtBTlBWNzZWTGwvcnYyYlBIYSszYXRhVW1KaWJIdm4vL2Z2eldyVnRDd093SWl0MUh3TEMrQzZSUEFiTWNCOUR3RjBBWGY0ZktSUUVFRUhvc2c4QS9vRXY0Z043aG56bHpwdk9GQ3hkQ09UazVHWUI4TDA5UHoxdkFJRmdIelRXdDBkSFIwNnFxcW1LdVhMbFNEVlRIZmVuU0pYdUFBRUl4RU9nNFJsRlJVUWFneS9xQWhZVTBNTm40QVBrN2dPSDJEeWlucjZLaUl2dmp4NDl6d01oanZuSGp4bWVnbGk4aUlpSkN3QlRBcXFlbnh3WE0wMzhCQWdnMXlsbFkvZ0VMQ0xiTm16ZWJ2SC8vWGlNbEplVW1rTC9uMkxGam9Bamhteng1OG5vZUhwNDV3QXp3SEdpUVB0Qmk0WWlJaUZuQVhDWDI3dDA3TnFBUjh3QUNDQ05TZ043N3RXVEpFbzlkdTNaWkE3MTRCbWlRRVRBWWpJQnA4amt3dks0Q0xSQUZKaTF4b0hLVHJxNnV2MEEyLzVNblQ5aUFjamVBWXNzQUFnalpoWXhBRi80QllnWWJHNXREd0lCV0Job2NCc3g2VEtDY0FreVhESXFLaWdjZVAzNHNBR1JMQThOMFBUQ3NYMzcrL0ptWGo0L3ZJekNtZllBTytnb1FRQ3hJQmNPZnMyZlBLcFNWbGZrQzJXK0FNZmtLYUJBanlDQllJUXdxSUlDRzdnVzYwZ1lZQWRvZ01XRmg0WFZPVGs0Y2l4Y3ZCc1U4QTBDQUFRQ0JjOFl1aVJDY0J3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL2xpc3RhbGwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlFrSkRNemd3TnpjNFJrTTNNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UWtKRE16Z3dOelk0UmtNM01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2poak9UazBNV1ZpTFRCa1l6SXRORFZoWXkxaE1HTXhMV00zTmpNellXUm1ZVEE0T0NJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQ05EQTBPVFUxUmpkRk4wRXhNVVUyT0RaQk9EazFRalV4UVRVMU4wRXpRaUl2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGpiMUlIQUFBQUxxU1VSQlZIamFsRlZSU0ZOUkdENzNiczQ1VVFjbUd4UFVGcHRyOUJRcGpHUmo5U0prVkEvdDJRY0p3WWNRcDBpNUNoVHFxWWRCNFJnektuMFJocFFHSlQxb3dTS2JUQi9XR0NJTUgwUnpZekRtWXU3ZTNiNERkN0xkN21iOThMRno3am4zMi9kLzUvL1BaUVJCSUxWaWNIRHczUHI2ZWxDajBXZ3g5UUtCMGxvdWx5T0xpNHVrcDZmbmREOUx6Z2lXWmUvajV5MXdRMFJyK2JwYXJhN1l6NVFVeHVQeExvL0g4d2hEK29CUktCUkNYVjJkRUl2RjlObHM5aDZJOS9IOENYQVJvT09XSXFLam8wUHRkRHEvVFU1T3ZxaFFlSEJ3MEExWVIwWkdBb0MvdDdmM3g5SFJrY2xzTnQ4dUZBcjc0alpLdUFwWWdGZjRrOWRHb3pHOHZiMTlwOFNqTEZNckdBeUdoTVBoQ05GSloyZG5iR1ZseGJhN3Uvc01TZ3RVTlZBRWpLS1BYK2sraThYeU94S0pYSk1qSk1oQVVScEQxWWxlcjMrZnorZXp5V1NTcjYrdkwyWDBEdmhldHEvQ1JLWEU0TUxPem80dUVBallVNm1VMDJxMXJpTHRUK0Z3bUlpRVp3WXJVY2cwTmpZZUx5MHRQZDdZMk1qYjdmYkkzdDVldDFLcDdNWnlPYWlISnZGOW9hcENobUVJeDNHOHpXWmJwVFUyUER3ODFkVFV4TU5EcVJCcXpUSGdBZmlxaENCanRWb3RPejA5L1dCMmRuYkFaREsxWmpJWkh3NkhvTENyWmFtc21qS1VjUENzMmVWeWZWaGJXK3NmSFIxOXcvTTgrWitvWUVlUksxUXFWUnFxR05vQmJyZjdZVFFhMVVpN1FSU1NBMlpxcGd4QzJNZ0lZMk5qVTRlSGgyYS8zKy9TNlhRelV1UEZtdVNBRTJtV2Z4MEs2cXF3c0xCd0M5UHp3V0J3Zkc1dUxycTh2RXh3K3Y5VUtWSkNHc1ZFSXRFTWdoYWZ6M2Q5YTJ2cmJrTkRBNUZSU045OUthcVVKNFE0cHEydGpVRFpjMXdXN1NpYkFjdy93dGVpekRWSGxXVnJLa1FCRjNGQnFKRGlsWFE2YlJrYUdvcGovamtVQ2hHWmc1SG5rQjRLMGp1Wm41L3ZSd20xZTczZWNkVGpaZXF0VE1vVVAydWRNZ09GSEVENit2cStRTkVGRUx2UWVxeE1wNVE4ZklxMWpDd2hDTGpOemMydWlZbUpteGduMFRXL3NKbkJuVWVxZkNib3c2djRCRnhDUjUzNitFZUFBUUJJMEM3RzNTK051d0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9saXN0YW5ub3RhdGlvbnBhdHRlcm5zLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRa0pETXpnd056TTRSa00zTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFrSkRNemd3TnpJNFJrTTNNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qTkZPVFl4UWtKRU9EWkJPREV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pORk9UWXhRa0pGT0RaQk9ERXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrQjdnZmVBQUFBY1ZKUkVGVWVOcnMxTUdMRWxFY3dQR1p4c2xSOFJBNmdkTldFb2lrZ1FjN2RDaVlTMTA2dGF6VXJkdENVQkV0NUdFNzlnZDRxSXZIaFVYWTIyS0hJaWdTb3RLb2c4V0dsQlBFa2tFUkJEbVNPODUrWDd5QnVRN3VZUTg5K0tEdk44UFAzM3Z2OTFSOTMxZjJjaHhROW5qOFR6ai9pUFY2dmVCN0NuOUN6M1NvK0J1S0pURU9KcDdueFRPWmpGY29GSGFDbUpyUDU4WG5NVHpDZFR5VnorNGppeXR5ZmhwcnFPR0RDRXdtazFhbFV2bmFicmZ2NkxyKzd5WE5zaXlGeVZVVWtNVkRITVV5VEhUeEhiZVFnNEZudUp4SUpGWkhvMUZwTUJpOEt4YUxRNnBWMUZLcEZDZnhZN3pCUlp6RElwYms4dDdqSGw3aENjNWpDeGZRRjlzd0hvOVBHSWJSYWphYks1cHBtcmNKbnNKYkhNWVJtWFNJYlp5VlN6OHVmOVNHaFExOGhrTzFYMXpYdmVRNFRsSlVlSlBnUzRqVFdaRFYvY1M2M0x1YVRMQ0pYekxKSjNtQXJ0ZzJjYmppSFE3SkVBbWpkSVdvdklQWGNpdG1NajZUejNLeGlHMG1LdlJsLy9xaGhBZEZqQW9uVVJOK3hBc2N3dTlRUW1NNm5hYlM2ZlR6cURkRk5QQU5mSk85ZTFMZ2xDMU4wL3FOUnVOdTBOaFJoMGgyRFdkWTVxeGNMbmZxOWZvRDI3Wi9xTjF1ZDY2N1MwS2xXcTBxd1UxUjkvMC85cTRBQXdCZ1M0VzRFVEJtVFFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvbGlzdG1vbGVjdWxlc2J5ZGF0ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UlRVeU1FSTNPREE0UmtNM01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRa0pETXpnd04wRTRSa00zTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalV5TmpKbVpEZ3pMV05qTm1JdE5HUTFaUzA0TnpneExXUmhOekUxTURBd00ySmxOQ0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUXpZMVFUUXlOVGRGTnpneE1VVTJPRFpCT0RrMVFqVXhRVFUxTjBFelFpSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QbFVmZXY0QUFBTkhTVVJCVkhqYWpKVmZTRk5SSE1mdm5Sdjc1MndPdHRaU1oyNVE5QkR6d1o0V1JRUWI2Tnlpb25yd3dUMWtScE1vZkxBOXBjbUs3S1U1Q1lxQkx5WEtvTWx3K3BLSkVGcE5DQXpLelpaTUZrd2t0M1E2NSs3NkhybFh6RGJ0QjUvdG5uUHV2dWQzZnIvZitZM081L05VTVJzYUdqclgzdDdlSVpWS056RzhBK1ozcjZmVGFXcHdjSkNxcTZ2Ym1lTnpEL1B6ODlUeThqSy9CSVpoWHF2VjV2cjcrNi9STkgwYll5MjRCZTVSQjlpMjROemMzSEdMeGZJQWdtR2lCMHIxZXYyUnlzckthUkJPSkJMZk1YY0dyM3BCQW1TQkNLeUJMcERqQkhua0F6K29nRWZxWURENEtCQUlkSGQyZGdaWFZsYldIQTZIVzZQUmxHV3pXUWxlZXd6S2dCODhCVStBQ3BUKzR5SFpRYUZRSkJFTHNpT2xWQ3JmKzN5KzA0Mk5qVjF5dVR3bkZvc3B4RnFJcFhmZ0k5Z0NORmd0ZUdSaURNUFEzSE4xZGZYcThQRHd3OW5aV2NybGNsR2hVSWdTaVVSa2ZYY0dTMWpSdjR4WExMZ0NnWURLWkRJNkpLc0Z6OEk5WWtXTnQ5K2kyKzIyTHkwdEdaR1FOeGhlQURadytNQXNGeklrZ2txbFVzY2dsc0V3QUZ6Z0Z5QkY1MlRqeVB5WGh6aW11TDYrdmdQZUtWRTJMYmxjem9OcEsvaEE2aDBjQmFkSWhoSGI5SUdDdmIyOVRmQk1LUlFLdjJDNHlVN0hXYkg3NEJPWWhsaVQwK2w4aFlvd2tCTVZGVFNiemRPUlNJUVVlRlFpa1p4RkJaRHA2eUFFcmdBMUtXeXN5MlptWmk2M3RyWk90YlcxV1RZMk5nb0xta3ltejZPam8zZkx5OHVGNFhDNEdWbCtpV21DRDlRQ0EvbGVYMTgzOVBYMTFjS0JrWUdCZ2RkalkyTTFSWk9pMCtrb3hPNGtJTFZtQXVTMlZJR2JiQTB5MklpSEJwSmRXRmhReTJReXFkL3ZieTRvQ05kcHI5ZDdLUmFMVmNIc3VKbzFPRjRGbGs2QTMrQVFTSkk3RHk5VFdOZVRIb0FOREFVRkVlaXJrNU9UWmdUOUt6eGNSTWVSYzFlVWJReGNNMkFnbUlFWU55N1ppU0dQeDl1NUNVaEVEQy9SYUJoUnNJVU1obmZ0eDdDM2htSEpjYmNJN3kxeUh2TGk4YmhpWW1KQ1E1Nk5SbU9FeitlL1FBMytSSExJM0FpNHVFZU1mT2VSdER5T1NwTU1XNjFXNzdhZ1NxV0txZFhxSHg2UHgwRUVTVHh3M0UyVURqOGFqZEw0QVRubVczQWVXTmhqYzNkZWtFd21LWnZOMW8zcW1LTDMrd3NnWnJmYnFmSHhjUklHbXUzWU40Q2U3VFFNUFB2VzBORHdyS2VuNXpscEtIOEVHQUMvZjBvaHd1bnFhd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9sb2NhdGlvbnMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk0wRkZSa0kxTlVNNFJrSkNNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TTBGRlJrSTFOVUk0UmtKQ01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tVeE9UY3lNVGN6T0RaQ09ERXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1V4T1RjeU1UYzBPRFpDT0RFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtQVGRkNFFBQUF4WkpSRUZVZU5xRWxWdElrMkVZeDcrZDNMUnM1U1FKTDV4aU9rMlRKRUdEU05hb2hNb3dWTWpzQUM2NnNFR09qcWczVWxkbFFsQ0syS1FhVHUxaWpXZ1FOdGlWSTJVaE95QU1oN1ZBYW5sWXk4MWwyL3EvOFRvK3h2YjV3SS94bnY3Zis1emU4ZUx4T01ObGRydWRXVnBhMmltRVlSZ0FpUVBSYUpTcHJhMWxjbkp5RXZ1RjZZUVdGaFpFUTBORDZxbXBxWFBoY1Bnbm44Ly9oV2s1K0FxZWc4K2hVSWlabUpqWVh0QnF0VXJiMjl2ZmxKV1ZSY1JpOFJNSXVqQzlCaFRnS0hnRnhzQ0Q1TFA4NUltTmpRMUJUMC9QYUgxOXZkdHNOcCt1cUtnd1k0N2NpdHp3RTNnTWpvTnpvRk1rRW5FTDl2YjJubHBjWE16djYrdTdDVGYveHdtMkEreG5iZnNPTGhCQjdKVnpDaUoybDVxYm0wY0xDZ3Bpd1dDUVdWbFpVUWtFQWd1V25nSVR5S05iUFdCNmNuS3lKYTNnL1B3OHorbDBGcmExdFRuSTJPMTI1eUhMRHhGSEVxdno1SHZVNVMxN0Q1ZVBwUlVNQkFLWnk4dkxFYmdab0ZNSFFJamViSjFtTjU5MXhBOUVYQzcvQVJrd0NSbElwVks3VENiTGlNVmlWekVzQVhmcExiZE1ESGhwQmN2THkvOVdWbForMGV2MWg4bFlvVkNzVlZkWGE1SGw2eGdhYUhLNldFZE9ibTV1enFZVnpNN09KcFd2TXhnTWw3MWVyNUIyd3pSK2pvQ3pvSldXRHpGU3pRMUlvSjR6eTJxMStnT0oxL0R3c0pvMVRXcm5XOUxXZTJCV0xwYzdPUVdMaW9xaUF3TUR0K0YybDgxbUs4ekt5a3JWVEhXZ2tZakNaZTdDSnRiVTFEUmJWVlUxMHRIUk1UWTNOeWVVU0NUc1plTHFTM0NIM0hyYlR2RjRQTHUxV3UwamRNQ0oxZFZWbWQvdkgwRmg4MWxaZlUycjRRYTQ1ZlA1QkdrRkxSYkxYcFZLOVE0aUdZaGhwOUZvUElpc1M1SGxGMWpPcFpuMmdrUGdQajZrSEJ3Y0hFRkhpVk1LOXZmM255a3RMWFhvZERvTnN1MnVxYWtKb3haYmtPbE04bHdCSCtsZmVrTWJPcWpCNFhDVW9LUHFVZ29XRnhldkk4ajdrb3FWSEw1SVhkUWtSV2dQOXBNQS8wNHBxTkZvM3NLTmlGS3B0STZQanpmT3pNemtvaDBaekpGVUdsbGJDOEcxU0NReWpRUWEwUkNKNHVZbC93V1FNdWp1N3I0Q1YxcGRMbGNjWmNQRE0vWURTMEVnQTdzQVNjUTZYdXhuSnBQcEkrS2NPUDlQZ0FFQVFMYzZyWDJFNFhnQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbG9jay5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUE1K0dsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRLUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE16SWdOemt1TVRVNU1qZzBMQ0F5TURFMkx6QTBMekU1TFRFek9qRXpPalF3SUNBZ0lDQWdJQ0FpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBEY21WaGRHOXlWRzl2YkQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncFBDOTRiWEE2UTNKbFlYUnZjbFJ2YjJ3K0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUmxSR0YwWlQ0eU1ERTJMVEV3TFRJNFZERTFPalF6T2pVeUxUQTBPakF3UEM5NGJYQTZRM0psWVhSbFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5iMlJwWm5sRVlYUmxQakl3TVRZdE1URXRNRE5VTVRZNk5EZzZNalF0TURRNk1EQThMM2h0Y0RwTmIyUnBabmxFWVhSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNHlNREUyTFRFeExUQXpWREUyT2pRNE9qSTBMVEEwT2pBd1BDOTRiWEE2VFdWMFlXUmhkR0ZFWVhSbFBnb2dJQ0FnSUNBZ0lDQThaR002Wm05eWJXRjBQbWx0WVdkbEwzQnVaend2WkdNNlptOXliV0YwUGdvZ0lDQWdJQ0FnSUNBOGNHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUNHpQQzl3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U1c1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT2pJeE5XRmhabVpqTFRkak5UWXRORGswTnkwNU1USXlMVFEwTWpVM1lUSTNNekF5Wmp3dmVHMXdUVTA2U1c1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tSdlkzVnRaVzUwU1VRK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPalU0TXpJMk1HVTRMV1V5TURNdE1URTNPUzFpTWpnNExXWmxObUV6T1RRMU5XVTJZand2ZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDRLSUNBZ0lDQWdJQ0FnUEhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDU0YlhBdVpHbGtPbUZrWkRJeFl6TmtMVGc0TkRjdE5HRTVPUzA0TW1WaExUTTVaV0ZrWWpjeFpqVTROand2ZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcFRaWEUrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNllXTjBhVzl1UG1OeVpXRjBaV1E4TDNOMFJYWjBPbUZqZEdsdmJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tbHVjM1JoYm1ObFNVUStlRzF3TG1scFpEcGhaR1F5TVdNelpDMDRPRFEzTFRSaE9Ua3RPREpsWVMwek9XVmhaR0kzTVdZMU9EWThMM04wUlhaME9tbHVjM1JoYm1ObFNVUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcDNhR1Z1UGpJd01UWXRNVEF0TWpoVU1UVTZORE02TlRJdE1EUTZNREE4TDNOMFJYWjBPbmRvWlc0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMUxqVWdLRTFoWTJsdWRHOXphQ2s4TDNOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1ellYWmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09qSXhOV0ZoWm1aakxUZGpOVFl0TkRrME55MDVNVEl5TFRRME1qVTNZVEkzTXpBeVpqd3ZjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uZG9aVzQrTWpBeE5pMHhNUzB3TTFReE5qbzBPRG95TkMwd05Eb3dNRHd2YzNSRmRuUTZkMmhsYmo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21Ob1lXNW5aV1ErTHp3dmMzUkZkblE2WTJoaGJtZGxaRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWVVtVnpiMngxZEdsdmJqNDNNakF3TURBdk1UQXdNREE4TDNScFptWTZXRkpsYzI5c2RYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1PbGxTWlhOdmJIVjBhVzl1UGpjeU1EQXdNQzh4TURBd01Ed3ZkR2xtWmpwWlVtVnpiMngxZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlVtVnpiMngxZEdsdmJsVnVhWFErTWp3dmRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNDJOVFV6TlR3dlpYaHBaanBEYjJ4dmNsTndZV05sUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNakE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTWpBOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS1BEOTRjR0ZqYTJWMElHVnVaRDBpZHlJL1BuekhwWUlBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQVFwSlJFRlVlTnFzbE1GeHdqQVFSWjhaQ3FDRCtMNEg2QURTUVRvSVZKQ2hBa01GS1NGT0JTWWRtQXJ3NWQ5SkIzUmdMcXNaVFNZb2R1Ui9rMmIxOUNWOWJkSDNQVk5xUHFUSXpGYkFBdWdrM1ZLMVJjcWhneG9mM29BUzJFdXFSd1BOckFRdXdER0NkY0FIc0pOMCttM2RMT0crQWs3QUVuZ0RuZ0lNZUgrMEtBWGNBRi9BQy9Bc2FlY2JsTkYxcEk5c1poc0hCWWUxano5OWJna0VVQXQ4QTBnNlBBSWVnRFZ3SHBHVVNsS1JpczA1M2pGNm9CWFEvb3lObVZWRDd6Q0dOZTY4K2F0K051QklKWEQxK0N5eWdaSmFoMTZpeDhseUdMU2Z4R0drem1PVEI0d2F3emJLWUZhM3VmcDNDMkhPQTNydTJweCsrR3BtNjZrYWJEM0dqZXM0dU1IK1IvY0JBTG0wV2RvY2hlS0xBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL2xvZy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUXBKUkVGVWVOck1sTUVOZ2xBTWhwRncxdzNraWhkeEE1eEFtRUNZUUpsQU5oQW5FQ2RBSjJBRlRuSVVKeEFuMEw5SlNScEN5SU5nNGt0Kyt0TDBmYlN2QlUwYmVVMkdITElXMWd3bWcyd29MdTVGMkFwRVlLVElYRUlFSmRBWnFpQVA0RXB2QkI0VVlCdkk1WDBKclhtL3A0ZlJqTVpib281U0haZ2RRN2JRQXdvZ0U3cTBIZmgwM1J2MGduemg4K2tNbE5ZK3ZVY3ZxQWxYVkpBSW44bjIxQXVJREk1OEhZSHd1VngrS1dOMUJSaU5CcFhwQ1ovSjNRMTdBN21qQ2JJcnhReW03RXVhd1NyQUtmUVdNQ3Eva3NNc2w2RUFwSklkd09hY2JTN0xId0s4c1gxQ3E3cjB3VUFBWXZwZVZXZExIL3R2OC85QW8yV1FzNTRNdXd1NEhwaFlydjFxZlFVWUFGT2xTY3BXak4yMEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbG90aGlzdG9yeS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TTBGRlJrSTFOakE0UmtKQ01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNMEZGUmtJMU5VWTRSa0pDTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamd4TURrMVkyVTFMVEEwTmpjdE5ESTBNaTFoTkRrNExUYzRPR1ZsWVRFMFlUazFNeUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGTUVSQk16QXdOemRGUlVReE1VVTJRa1V5T1VJM1JEUkROemMzTWtNeU1DSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9Qa2M5T3lJQUFBTStTVVJCVkhqYWZOUnJTSk5SR0Fmd3VibFUyR29KSzNLQnVnalRvTXRzTVVKb0VQbHBoa3kvZGFFR1JqVXFDUVRGQ0xPMjFzV3lRYzZ0MG9JSXQ1Wnp5NVdYc0RMUUNYMVlrSkpkUm9LSk50SmtZWnViVy84anoyUXU2WVVmZTluMlB1ODV6L21mazlMVjFjWDV6NldBTGNDSEdFekFLL2pEZmx4WVdPQW9GQXBPWm1ibTBnTXBCUVVGeVVXNGNCaU9nQUJtcUVBcXJLWFBiakROemMxTjJtdzJqbHd1WDNvNE5hbFlIclRDS3JnQ1EzUy9Ca0x3Q3phQ0ZqeFFuWjZlM3BZOG12aFZDSDMwZGlWc2dLZlFEaFo0Qkoxd0VHcmdHSS9IYTJ4dWJqNGREQWIvR2FFWTdIQUJYUENhUmxNTkl4QmhMYVBSSFlWQk9KT1dscmJIYXJVT2lrUWluMDZuY3lmMjBFS05Qd2tmNEFFMHdIRWF1Wi82eHhibEZpMVVCeHR0VmxaV2RIeDgzT0oydXd1bFV1a01tL0p1S0lKS0t2UWNya01iOVU1UGJUREFONXJKYjFDSFFxRVdyVlk3bEoyZFBkTFUxRlFSNzJFVjlNTjZrTk0wemRTemV2Z0lHcHIyUFhyeERiWmdrVWlrcjdlM3QxS3BWRGJZN2ZieXNiR3h4WUtsOEF6S2dZVXluN1VDbmlRc0dJc05qKzdmd3d2MmtveU1ES1BYNnkzSnljbjVFZzZIVi9mMzkrL2swc0pNZ294R1drUXZTTHdFMU9QNDlSSU9jTG5jUzM2L1g0Qmk4N201dWNPMXRiV2Q4ZGhFS1c4c2F5S1lwZTlaZEJycCs0bUVndlBzT3hTU1lGRzYxR3IxbEVhamFSRUtoVEdlV0N5dXc0OFBRVXAvSG9XdFZFd0hBMUFiMzI1MDdZSjF5T0c1NmVscGZTd1dteldielZWbFpXVjZGaHNmZnJ4Sks4Z1dSRVVCWnF0OUg2WlcyT00yYUdKNXhWU0xQQjVQaDB3bWM3aGNyZ28yNWR1MElEMFU4QjF3alVhWnNrSXYyZjgvdzF0TVdhOVNxWDQ0SEk3TkpwUHBCTGJoWXJBRnREUE9VeTliS1p0c2tVN0JWL0JTUzdiQkd3cjlZOWdlQ0FUQzZPRWRnOEZnWmdXNUZOTExjSmU5RmE3Q084cm9JWXJQVHlxa29iM2RRenNuSDBYOFRxZHp2OC9uVzdhWE8raEFHS0RQVVFwdmtFYi9pUXFjcFpGYTRXSTBHalh5K1h5aHhXSXBqUitEaWNkWEpVVmttTzRWdEhQMjBuMkEwdEJIeGJ0eHlnaU1SbU1KZGtwZzZiVEJJY2xKS3NyQ1hVZEhsSlBhRUtRVzVORiszOFNPTmp4Ykw1RklRb2tGVW91TGk1TWowVTZ4MlVjUnFrazROOW1wNDZDdDl4MkhBMGNnRUN4NytLOEFBd0RuR2h4V3cveDRMUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9tYXBwaW5nLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFFQlNVUkJWSGphWXZ6Ly96OEROUUZBQUxIQUdJMk5qWENUNit2ckdRbHB4S1VlSUlDWXNDaytldlFvMmM0R0NDQ3NCbHBiV3pPU2F5aEFBREdBd2hBYlBuTGt5SDljY3Znd1FBRGhsU1RIVUlBQXdoc3BqSXlNSkVjS1FBQXg0UXNPS3lzcnhtUEhqbUdFSlRZeEdBQUlJQ1ppd2hnNTlrRVlaQkV1OVFBQnhFaE13Z1laQXZJK1BvTmdBQ0NBbUlneERPWjlZbElOUUFEaGpCU1lxMEJwRW1Zd2pJMHZVZ0FDaUFXWHE1QTFrNUtUQUFJSVowN0JsWHNJV1FZUVFJekVsamFncEFKU2k4OHdFQUFJSUlJcEg1UmJRSzRpTnZjQUJCRFJrUUwzRWpUMzRJb1VnQUFpT1ZKdzVSNFlBQWdnb2lNRjNWQmNjZ0FCeEVqdEtnQWd3QURmS1M1VUdXVitIUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9tYXJrY2xvc2VkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVGt3TlVRNFFrSTRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFUa3dOVVE0UWtFNFJrTTFNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qY3lRVFF6TURORk9EWkNPVEV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjeVFUUXpNRE5HT0RaQ09URXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrTnhMWWtRQUFBaWxKUkVGVWVOcXNsVDJJRTBFWWhtZXptMlFUallXRmlJb0cxQkNpa0NKb1ZLN3lVTTVHVVJBVmxFVFVRcTA4bTNRaGpSQ0VnRmRvSjZKWStOY0VGQVd0d3pWYXFOeUNDRW9RMFVJTE5UK2V1L0daOEYwdXQ5d2xkNUNCaDh4a3YzbG41bnUvMlRVNm5ZNGFaUXVvRVRjamw4c3RKMDRIYllRcCtEMzNaN3ZkVnNWaVVTV1R5WG5CZUR3K1RPd0lYQWNIdnNHRnVRZU5Sa05WcTFXVnpXWjd3VlkwR2gwa05nYTM0U3Y4Z1RQd0RtNzBjaFpZbURWcmdOaGh1QW1YWURWc2cvMXdDN2JBNUdLVGxoSThDOWZnTkx6eVBUc0F6K0NPamdzR2c1MWhMbCtFS3pDK2lKaHUzMkVYcklHNzlYbzl0TURsVkNwMWp0OWpFSVNJNUcwR1BrSjRpUk80T3Q3enZISFROR2ZRcURNMmJkditvUVdmaW52UEpRVU5FUThOY1I4OXIwSEpSRGkyeVhqV2NaeXJXa0RuNENVOFhHa1JONXROVlM2WFZTS1I2STd6K2Z4RVFBUnRYK3dxeWRIQVpsbVdxdFZxRVhZV2t5MWJmbE4wYWV5RjQzQWU5Tks3eGJ3OXNGbnl2RThIaDhQaFpLRlFtQ3FWU2lmOFpmTVhOc0U5S2R6UHNCTW1kTExoTlZ5R1IvQlBuMDc2NnpCaUE4SnYvSUtlRksrZVhJTWRzc0F2K0NJN2MyU1JrQ3l3Vmh2UmFyWGVjNmR0djZBdEU4cXdIUjZMU2ZxaXI1ZmRuSVJQOEFFT3dYMXlOcGJKWkxhbTAra1gvWUtHbElwdVQzdzVuZTdyVi9yNmI4WGxCNVZLcGVjeTkzcFd2MjJxSWpvdFIxNTJZNGVLT2xheFdOZGtGN2RQNmZmaFVRWUhwWmhYOWpJMURFVU9sZXU2M1NFRy9UUkcvUW40TDhBQXFDR1pNREpscWR3QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbWFya2ZpeGVkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFhZEpSRUZVZU5yVVU3dE9BbEVRblYxcmttMUlUR2dvRjZ1MWtGWW9yY1Eva0M5UXZnQ29MRFZTYU1kU0dTdXhVaXUzRXlvV0NsazdHb3hHaWsxb0RKVm5rbG16VGxnZXhzYWJuTXg5ekQxMzVzeGNvajhlRyt0ZXlHM2xuSFE2ZlFIa0poOFRUNStiYTVJZHd2U0FFWENFOWZHdkNYRzVCbk1LRklmUHd3cGJvQ3FQckpjeUxqVmhTc0FleURxOGgzVGZrUFlMcHB6K0E2K1hFb0xJZ3ZNVHBwdkFQWENMaTUvUk9lWUJ6dDh4dllLOXhqbzBGNGtQOHloNjhXQzliclFmSW5aaDJrQXpVVU5GbGdXY2JxZkxSd1ZKWDQ4Kys4eE5XVVMrQXk1WnQxUXFsWjNOWmpUb0QyajhPbVlYYmhzamFobnhQd0VxMlBQTnBFcktsaVdSa2V1NlpOczJOYzRiSk5VdFNiUlI1VGwxTWxRbE9ld3lEbjNaNjBXcDhFQzBsTWxrS0FpQ2tjaGhBUWZ3SC8zb1EybFFSMTd5WTBGenBINStKMDh0dDBYVDZaVEp1QUJoZEI0bis0NVFkS2dDMjNBSUV3ckUwWGp5Y0J0KzVYa0ZOV09sOStTaWJndGZJbTBMV1QySlRMZE5KYWFsSGt4VVlCK1FuUzM2REliK0dmTDVXN2hZVTk5TzY3dWNVR2xXQjNhbHNZdGEyMVZTMXBydFN6VlhKdnNmNDB1QUFRQWJTTGtUQU1nYTFRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL21hcmtub3RmaXhlZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UXprME4wUkRRMEU0UmtNMU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRVGt3TlVRNFF6STRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPbU5qTURrNU9EQm1MV1JpTjJNdE5HTmlZaTA1Wldaa0xXUm1ZVGczTkRjeE4yWTRZaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95TUVVd09UYzROemRFUXpVeE1VVTJRVVZDTmpoRlJEVXdRelF5UlVJMk5DSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QczFnblhNQUFBSnhTVVJCVkhqYXJKVmRhRkpoR01mZmM0NU9jVGpXUkNvcDJFVVhZbmlSZlZ4RmRHVzFyT0RRN3JxUVF1K2lRWFN4aTY0RzA4SDZNSUsrc1k4UkNVSGtLS1JrRkpHWUxRaUtRSmhCMUpBSml0RDhudHIva1dkMG9FVXBlK0NIdnB6ei90LzNlZDcvOHg0cEZvc2RGMElNQUZsMEdaSWtpVktwSkpyTlptZHNNcGtxa3NQaCtJbi9MMENSM3VsR3NOVnFDYnZkTHN4bWMyZVlUcWYza09CM0RQYUNiOTN1c0Z3dWkyZzBLcHhPWjJmczlYcURNcWZhTDNxTWFyV3EzYkZCRnVzYzNRaFNYbjMvSzlqaTM2UEFzc1o3UjhCTGNJOE9VL3RBVVpRL0JGZEFEWndESWZBUURHbmVPUVNDNERBZkhEbGl5Nm9ZYktNa2swbDd2VjRYc2l3THhXcTFuc0d6WFdBcjcyUVFUSUluWUNlNFJnY0kzb000SUk5Y0JCLzBldjFpS3BXYUNBYUROekdlaCtoR0hhLzJoaWRSNmxQc3liZUFIT3NENzhBNGVNeFpmQVhYWWVnditYeCtJQkFJcUpGSVpLSldxMGtrdUJ0ODVJSmZCVFBnQnFpRFJmQWFUSFBLeDhCcE1BdVdLcFhLV0NnVThycmQ3Z0s4V1BENWZNL0kyRlNPVGVBQldBYkQ0Q3lZNHhwT2NrbEd3QUZ3aWV2OWxEb0ZadDZReStWT1hrQmtNcG5OSkVncm53ZVB3R1d3bjlJQlk0QldVOEZCWGt5d2VCamNRaS9mTGhhTE14YUxaWWZMNVpvTGg4T25aQzcrRlJhamVBVk84R0dNY3ByTG1sT2Y1NTJPb0VzK3E2cTZFSS9IdHpjYURUMVN2a003L0lHSCs3alEydGdHNk9KWStvdUgrOUhMbytqbCs2aGZDNEtTeCtONXJ1TWJ4cmpHaElWL05FVUozRjN0WlZpb2JiUFpQcTFyTDhOR2VoSnNjNmYwRkViajcrVFFLU3M2MUdHUVQyNm8yd3NXUmhhSlJFSVVDb1hPZlpETlpvY2x2OTgveXladTkvSUpvQnFTSDJtK3dXRG8reVhBQVBNdzNrUktsSG9nQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9tYXJrdm9pZGVkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNRGN6T1RjNE56UTRSVUZETVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlJUWXlSRGsxTkRnNFJVRkNNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qY3habU5pTVRjeUxUTmlZV0l0TkRWak5pMDVPREZrTFRFMk9XVm1OemM0WkRFNVppSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEdOVGMyUkRWQk1EZEVRekV4TVVVMlFVVkNOamhGUkRVd1F6UXlSVUkyTkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BxMzkwOGdBQUFKeVNVUkJWSGphakpSTmlGSmhGSWJ2MVN3ekhJVXdnaWhSYXhpRUFodkVSVVZHdFNoS2MwcVFuTVZzRFBxbFlvUTJMb0lDS2FVYTZNZWN3Smlvc09iR2JBU1Rvc1hzeG8zUVlrZ0N3eURIMG9XSzQrRFA5SDV3SEVUOHVRY2VMdmVlYzkvdnUvZTgzK0dOUmlQWEowNkNxOERlOWZ3M2VBRm1xOVhxU2pRYTVjeG04MFp5VXcraHZlQWUyQWVXd0FWUUFFMndHUndBcCtuNXJGd3VmOXI1TXQrMVExYjBDTXpSOVMvWFAwNjBXcTI3ZXIzK2o5ZnJuYkphclpWdVFRY0lBemVJY3lLQzUvbnBRcUZ3WDZsVWZra2tFZzZ0VnJzbW9kd28vUmVYV0RIRVpLMVd1ell6TTJNeUdBd05uOC8zQlBjYk8vd0Fmb0k3SXNXT3NYZlFsSFB4ZUh5eFdDenVkRGdjUzZGUTZMeFVvOUVjWjZzQkQxZ1ZJY1oyc0FBdTErdjF1TTFtNHl3V1N5V2Z6NC9FWXJHejdKTnZna1ZRRkNHMkhRalVNS0V6NFhLNTNxZFNxVkVKV1NBaFFrd0dQb0Z2NEdGM1VxRlEvTURYbHBrZzQ1OEl3VGVnQks3MFNvNk5qYTJiVEtZU00vWTZhQTBSZTBDR1B6eWt0c0VFZWJCbFFORWw0QVJIQmpXdFhDNXo2UFkyQ1ozTi9YM3FUdEV4ZEZKZDMwaW4wNnBrTXFsaWdzL0JtUjQxQjhGck1BV1N3MzV3TnBzOXBGYXJtMHp3RmRoQlptM0hMdkFSK0VCc2tKQlVLdVhnUnk0WURONjIyKzN6VEhBRlBDTnY4V1NQQmZKWmFOak9WQ29WNS9mN0p6T1p6RzZQeC9PeVBiN0M1TWM1NnZveW1CNG1odEhGQ1lKd05CS0pQRVk0ZFRwZHBYUGFiS1hCd0t5aEE3OUVUSnVwWEM3bm41aVl1SVVoOFk0dDBEbGdWMmxLczY1K0JtL0JQUGplcGFPbVJXOWd1dXdKQkFJWDNXNzNWNWxNMW5OaXJ3RXZOZVE2TmF4R0o2VEJUaGdZSVhNTHpXWXpQRDQrWG1xTHNmZ3Z3QUIyUjhhcDQ1RG5wQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9tZWV0aW5nLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFSSkpSRUZVZU5xc1ZOME5na0FNQnNNQXQ0Rzg0Z3M2Z1RpQnVBRWo2QVNFRWR6QURjQUp2QkY0Z2tjWmdSRnNreU5wbXZiSVJab1E3cWYzOGZYcmQ4U1JFdGtoSzVTdGZoekdPUW9KRDVoM0R5TlpBVTdobGJKbEErdEdZNW1za0UzaG9GVllXdW5BTHRvNFJFQmtCU3p1V0Y0b29LL2tualVCZGV0Z1hzSjQwZzdGVEJ0a1ZEbG1IUUQwZ25iR0FTSXdOdVpGRzhRQlAvQmFHR0hTQ1pJbm9mTmZzb1Fmdm1rYVVvOFp4NEpIeGVhbHJ5bGNHOGthVnRKYUEyd1krS1EwaTVyNjZRT3NxYW5oYVFYQWx0bXBGcnZzN05BcUpiN2QrTXAwWHVLeTNDanF3Nk5pcllLVVdIaHlMQzg1VjVJYnRJV3pScVBrNUpLRzVvOHJiRUorRG5zeVBvZmM1WWZDY2c3TTJUWitBZ3dBYWRCUnN6bm9OZ1lBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9tZW1iZXJ1c2Vycy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8wTmpBeU1URTVNamN6T0RVeE1VVTJRVFk0TURrNU5EQTNRelk1TnpRM055SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dOek01TnpnM09EaEZRVU14TVVVMk9VTkZPRU0yUVVNNU16RkNNVGd3UWlJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvd056TTVOemczTnpoRlFVTXhNVVUyT1VORk9FTTJRVU01TXpGQ01UZ3dRaUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nTWpBeE5TNDFJQ2hOWVdOcGJuUnZjMmdwSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlpHVm1PRGcwTURrdE5XVTBOeTAwT0dNd0xUbGlaV1F0TldNek1tRmlZVGhqTldNeklpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qUTJNREl4TVRreU56TTROVEV4UlRaQk5qZ3dPVGswTURkRE5qazNORGMzSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3VhUlY4UUFBQXFWSlJFRlVlTnFzbEYxb2ttRVV4OS9YajJrMmFRVUdsUmREcFliTUN5SFFpNklSbHJESWt0RlZYa2tiMFNCaVZ0aTZDQ1R5UnFxTktCWkVVWTJhMG8xQm9UUHdMcVJWMEFkQllReGJCYTJrY29sb2F2OGo1eFhuZk91bUIzN284ejduL0RrZnozbkVlcjB1L004bGpveU1TUDlWWUJMMGd6dmd5ajk4MWFJb1RoUUtoWDZqMFRnZENvV21OQnFOSVBiMjlqWU93WGsyVElBakxIcExUZ3hjcU5WcVZiL2ZQNXRPcDBlZFR1ZDBPQnkrTFZxdFZqSndnaE5naUIwMmNJUStzTlJCY0RzNFdpd1dENlJTS2FGYXJXNTB1OTJYRW9tRVQ4RUcramJIYjZBTU5ESVJkb01melZxcFZJdFk1WHcrMzZVMEdBejA3UXZZRDdTZ0JvNkJ6K0NoakNEWkR5Rmx0ZGxzcmtlajBURzczZjdKNS9NbHBBaXJZQlU0QkU0QkwxaG9FYkNBWFJ5WlpLOVZxOVhEc1Zoc1BKbE03bE1vRkF2WU56cmJ4ZDJkQlpmWllUV1lBZStBa1d0WkJLTmdISXhSOUtWU2FTb1NpUWhJdGR2cjljNjRYSzU1U2puQUFxR1dpQ3JnQ2JqT2dnZkJUYkFJN29GbjRGeWxVaEU4SG8vZ2NEaktKcFBwUlRBWVBFNHBIMmJIOWtYUnZRWnZXeHJ3aUV1eDRqb05EZzYrc2xnc1gwbndBM2d2VTN4cXlrN1F3L3U5M0xTWDdZWmFyVlpBdGsrcGh1dUFRa2FRR3JVWjNBY2Z3VGJ3aysycmtwQzBjQjk3U0hBZW5BUVArTzQxUmhMb3VQaDN3VVZ1M2pWTzl6UklLWlhLMzVsTWhwb2k1bks1OWRsc2RvQW1oYUlZQmpzNEhlbTEyTVNkM2QzeVRVcjdLZ25pSG1ycEh1cDBPaFU2L2owUUNFeEtvOWRwVFhDcXFmWUhoYU04ZzlITHh1Tnh3V2F6TlEvbGFrZWpTQ1Awdk1OWm5adTRsVGFJYk5taG5HQVgvLzZTT1YvaWhxMVljb0o1VG0xUGg3TTFZQUM4NmVTb1FoMEVtYlRPOG5RRWVYS2tBTmFDR3lCRHZtak04Z0xQemMzOTdWV20xM2RMUzVjcDZnSjRUTjlJcksrdlQ5RHI5VTJIUHdJTUFNbXEzZWxqVGRPSUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbWVyZ2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9SSlJFRlVlTnBpWUJnSW9LbWxLUURDeEtobElkTE1maWlkU0VnaEl4R3Vjd0JTKzZGY3crdlhybC9BcDU2SkNOZlZZM0VwVHNCTXdIVUpRS29BU1VoQlZGVDA0WnZYYnk2UTdHVm9KSndIR1lJbTlRRHE5UStrZXRrQnF2a0JtbUVQb0hKa0o1a0dJUDRQeFEyRTFETlJPODBPRHdQMWtkajJGT1VVYU5LNUQ4VEkrVmdSbUdRZWtPdkNBcWhoSUFNT1FNWHl5WEloTkpmTVJ5b1VIaURsNlVTZ0t4Y1FaU0RRSUFWby9rMkFDbTBBYWc2RXlzMUhFajhBTmZnQklTOHJJR2xhZ0Z4a0FUV0QyQk9RY3BJQ3NTNE1BTGtBVjFHRnBHWUR2Z2lpQ2dBSU1BQU1qMGFVVGQ3dEtnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL21peHR1cmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRkRRVFF5TlRNNFJrSkVNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpGRFFUUXlOVEk0UmtKRU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pobVpUUmtNek5tTFRSallUUXROR1UwT1MwNE1HSmhMVGszTmpJMFpEWTBORE5tTnlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM016YzVPREpFTmpkR05ETXhNVVUyUVRjeU1UZ3pRa1ZDTnpKQ05FRkNSQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUG5aeDNENEFBQUcvU1VSQlZIamF0SlEvUzhOQUdNWnorZGVZb25SUWNCQXN1SlJJb1NDS2c2NE9iaDBVS1RqcFVuRHlHM1FNTGk1VmNCSy9nNnRicVNBdG5icW9nNGdnS0ZoQmF0S1l4T2ZxRzRtaHBLM1ZGMzVjN25JODk3NTN6eDN6ZlYvNHk1QnJ0ZG9LMmcrZzBaZ1h3U1VjbXVkR3hydGpIaUtWU3IyeWREcDlnNEU1Y0FrNkpNeElYT0tMVXArTC9DaUhNU1pZbHVXN3J1dWoxZkw1L0lXczYvb3kvcGxnQW13RGkrYUxRQUVxdFZJVTI3WWwwelNsVENZajF1djFwV3ExdXNsWGZ3YTc0QXljZ3ExUTZUYlJNNUNaa012bGhHdzJLNkRpWktWUzZZajBqNWR5QW1hSFBRU1VHclJxVUZZUUdtMzhTQ0VLZnh6L0xzaUdGZEMwTC90S2t1UUo1TEZ3Y0pPT0E0Tk9PVmlFUlJaa0pNSWFqWWFJQSttMFdxMmtLSXBlVkxBTlZzSDVJTmtsRWdtaFZDcHgrMWpGWW5FZmZWdU8yWVlyOEFUVys0bHlkeUM3YnVhOUJJUHJkUUN1d1F5WmV6Rkc5L3RLeWpHVGpzQWJtQTd0NTBpMm1TVEJRNkQvVnRDUFpNMWZvWjBCZEJUUzh1V0lCM24vbHV6RHY4ZUlmbkduS01vRHJ5UXMyS1FENEEvRUFwZ24wYmdublRtTzB5NFVDazA4WFh2dzVTTXpEQ004WVEwY2czdndQdURONFEvc2xLcXFMK1Z5ZWVOVGdBRUFwSk9SWnVqbGsxRUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL21vZGlmaWVkYW50aWJvZHkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWM5SlJFRlVlTnFzbExGU3drQVFRQy8wekdDYk5OZ2xOdElZN0F3Rys4UmVTQTkrQURaV2doOEF0aEQ4QUhxQndab21OSkpZb1RNa05RTWZjTzZlU1NhR0tKa3hPN096ZDhudHkrN3RaZ2xKSVpUU0lxaEdzaEtBOVVGWFdjRksyKzJXcnRkcldGSWpDK0NzMit2UzFsMkwvanRLQUNnWW5WeVdxWFFpcFlveWQ0QjVQM3dla3QxdXh6YTlweDZhK2w4T1hQU3V3QlJBQTNzQklLVjZWUTJCS09PWE1SRUVZUURMVDlCWDBBM0hjWXNRaUJVRWE3aXVTenpQSTJoZHp5V080N0ExMnFpSW9ramtNNW53QWs4a1VTSTh6K01IOEJWQ1B4Q0kwY3pBc1ZRMzZtRTBxcXFTNlhTYW1GYjhYZnVoVFRSTjI4Q3lrb053MlFLK3ZEQUhKc25uODk5T2x5b2Uyb1BWYm1vc3loZ01venZHMUZsUjRsQjB3RFRpVUhUR1ZESGxHS3ppTS9iYXBBQnEyYlpOOVd1ZFRpWVRpajNZdkcxU2MyZ3luYy9uckkxR294RzJrT1ZmMlg2Vm85V0dlN1RLNTJXV2ZxUFJDTzlWNEFYU2VleXcvZkp0aVkrTzRwRWw5V0VocUN3NlJsc0dxeC9zL1RPbE5JMnQySTc5NHdGR0ZoUXJoRU5MZ1JUVEFFK0RDS09GMFRXZEZTTUFPKzlPSWpDcE1GWlFCRi82L2p4VWNGRGd2NDJEQXMvZ1BnMlFvbE1BU2hvWStGSC96T3JnZFBrTmxIRFd5R3pvL2lWZkFnd0F1L1pOYkp4dENaY0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL21vZGlmaWVkcHJvdGVpbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBYlZKUkVGVWVOcThWTDFTd2tBUVhvaUZGbVMwWU1ZWkdzcGdSU090UDNtQjhBQkJmQUlmd2ZFSmhBSmJrVHdBc2JSZ2hob0tVd2tkTk16b1NNR1FGM0RYMlF0N2wxaUV3cDNaUzdLWCsrNjdiL2ZXQW1HMXMxcTdYQzdEK252OUNYdmFnZkZkUlg5RTRGc1ZtSDNNd3IwQUVlUVlIeGZvOUJ4eStDb3Z3Nkk2S2o0VzZKZGlMa0oyNDd5QUZnMm9XWVRhZlRIZ0ljK2RZdXcxcjU2V2VtSFFJd2J0b0wraE94alB4YkpnWmxrazUxNU1rWlliOUhjakZnbTl5Ym9GY3dkT3pvS1RBNDN6Qmt5bUUxcDhnOTQyQUdualp4RTdLV2F3OWhRWW1lLzd3TjhKbU9kNTZsV2VvbzlKM0dRQjNzbUZ0bTFyc1ZLcEJPNjFDNngxVlI0M0tSdHhYUHFwcnI1YmZrdTlKdVhVOUpxcFRkREd5QzVLQWJKT29MUnpIQWRXcTVYMkEwc0FVaGEwRjYyd21WMDFTNmN3M04wODEzV2hVcW5BYURTU2V5eVJYVDhGYUdUd2QrRjhQcWNNSnpGaUhNY3hERU5aS1R0MkpxQ21DUTJEWUtBeG9ZSFlFYWl3emw5M1dkTmt1OTFxeDBWN29LSDMxQU96VkxJWVNuYWt4eklJQXZrZkxRcW5rNm1acEc2cWZTRzd1aXdWcFluVUxvdUpMQld6SDI1azM2T1d4ZGRQOXNJb296OHU0VC9zUjRBQkFKS0ZsVmhlejdQVEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbW9sZWN1bGFybGlzdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUnRKUkVGVWVOck1WTXNOZ2tBUVJVTUJkQUJYUEVFRlNnWFNnVktCVW9GYWdWb0JVQUlWaUJXSUY3bXVIVkNDYjVJaElSdGtGNGlKbTd6c1pHZDQrNWpQR3NhL3I1a3F3RjI0SWJZZFVGYXZLbGJGenpVdVRZQWNDSmxjWHlFK1dHRzdTVEdreklmdkRIc3YrUXI0QXBWQ0NxS0xmS0FHWXI2SVZCYkFpZjFCbDBMem0zUjhWSUxvQ3ZQUU9xWUwwcjVmTnZ1Y0lEMkNkQXZUZ24zUnFiS3BFYlBtL0M1WjRSM2s2U2hDa0RqWUNCR1RKYndQVjhndHNnRXl5aWVmUmJERjJENjBBQ0hsVkl4dWJNNFRWZG1Hc2tSMzlGUlZGaUR6K0hjZmZKeFQ5VWVOSHVleHBtbWdhYUdwbVZJVUdqT2IycVNsT0pyeU9KVGNNbUxJODlXbDBJRzZKa2RQd0d2eUtDMWJoNURVWkpwaTN1MTAvR3g5QkJnQUh6NWtEMFdwY2dJQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvbW9uZXkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVVoSlJFRlVlTnJNVk5FUndVQVVES09BNjBCKytUb1ZvQUxwQUJXZ0FqcEFCYUVDVkVBSDhzV25kQ0Fkc005c1pwNUk1SXdaSXpNN2wrVGU3YjE5Yis4ODc5K2ZTbGxBbzltNFlaZ0FLMkFPQkVEcmZEckhlZkZWeDQybndBVXdRQUw0UllFMUJ6TEpaQTFzU2JnQm9tOEorMEFic0NJZGNwT2k0R3BKL1RxVUorZ3dRNHYvL3NlRVdEU252RFdiSUEzc011TWo1Z1BuMWlONEJsd0JXekEva081VFFTbVp6MkNycFFPaEpzRDdHTGk0U0JhTExDQXhTamZBTU9MY0tLMGY1aGRpSWNtMnJNc1A0NnB2d3pFQnlUQVR1d1I2TlAxcmhwU1o2RlBBVEdXaHlONERSaTA1c1B1RmtnMjcrRlJUR25sSDRySGFMRllLbkkzdDA5ankxRW5zdWZvdzVtbndWQllIZWxHSWQvamVxdXlEcktJODIwaWR3anc3WlU4UnZScTh2YjdZbURCVHovUXlzS29NTWo5QnhpdW4rNURFUnAzbHRDUXhuUkQ5NU1hK0N6QUFPQnh2VVZzUHBsZ0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL21vcmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvek9UUkRPVFl3Umpjek9FWXhNVVUyUVRZNE1EazVOREEzUXpZNU56UTNOeUlnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBET1RRM1JFTkRSVGhHUXpVeE1VVTJRakZGTlRnd1FVWTJNVEEzUWpneVJpSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcERPVFEzUkVORFJEaEdRelV4TVVVMlFqRkZOVGd3UVVZMk1UQTNRamd5UmlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZZemRqWTJVd1ltWXRZVE0zT0MwME9UVm1MV0kwTnprdFlqWXpPVGhrTjJGalpHSTJJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPak01TkVNNU5qQkdOek00UmpFeFJUWkJOamd3T1RrME1EZEROamszTkRjM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtMTG00MXdBQUFvZEpSRUZVZU5xYzFHMW8wa0VjQi9EVHZ4TXp0a3F4b0dWbEVwVm9RU0hFQ0RNTWdsNFZ2UWtzb2cyQ0JoVUdVZGdJZTlHb1pGUldGRDFJTFh3eFFTRmp0SVJpTWloTUNLRzk2RWtIbFJTRTRRTE5oN1MrTjM2cnkyWk1EejR2RHUrKy96dnZkeWN6bVV5c1FUUERBZGdPUzBFT1grQXgrT0ZKb1ZCZ3dXQ1FXYTNXMzVNVU13VE5nNU93R1Y3RFdYZ1BWVmdFRytFTXBPQ1VTcVZLaTVNbG5VNG45bGZEQ0JUaEVOeUdGelI1QWw3Q1E0akFtbHF0TnBETDVWSU9oK09OUXFINEozQUZEYjREUitFcmE5d0tmTXNJZVJ1UHg2L2s4L2x4aEU2dFZDNXMvU1lFNFJ5YmZSczJtODFIUXFIUTlWZ3MxaWtHN29hNTBOZEVHQ3VWU3N6cjlkNDNHbzJqSG8rbnIxZ3NUZ1ZLc0EvT1E2Mlp3R3ExeXRyYjI1bkw1ZXBQSnBPMmFEVGF5UU4zZ1FvZXNSWWFMeDJielpaRzZhU0dob2EyOHNEOThBSHl3cmhWc0Zib0x3R3IwTmRBRi8vditTcVZTaVhUYXJWamtpU3RsOVBFQ1dGd0Z4M09QZGdHbmRUbkpkUUxjMkFRcmtHL3NQMlAvTU55Mm01UkNOeEFKZk9PVnJVTU91QXAyR0UrR0tqRWVGOUc4OHI4UEhqZ0oxZ29CQTdTaXZrQjNZTG5WTWpMNFRTTnYwRTM1Z1Q4cEhrTDRKdUNEa084MEpQUVhmZmZ1K3Y2bDhpZkt5ZEo1a3FsOG9xdjhDcHRZMlVycDR5N3pES1pqREtSU0d4Q1BZN3h3RFRkMTRPdEJLclZhdWIzKzNlVXkrVlNUMC9QcyttYmNoRjJ3cnBtVnhjT2h6c0NnWURINlhSZU1CZ01QMlRDZTNpWVZya0ZQczhtVUNhVFNkbHNObWl4V0NZamtVZzMvNEJjK04xSHB6bGFWOFNOMm1MVTNyQkdvMmx6dTkyOVBHeW1CL1k0OEFJTlFCVHV3amg4bno1TXVrWDh1dTdCWXpEaTgvbU8yZTMyOHY5ZTdNdndnTFkvQUJVSzVDKzJHdHJvSVBmeUd0WHI5WDlOL2lYQUFPbGh4aWY3dHRYdEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbW92ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TTBJM09FVTBNelU0UlVGRE1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNMEkzT0VVME16UTRSVUZETVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPbVk0TVdNM056a3hMVGhrTldZdE5EYzBOUzA0WXpaaUxUQmhZVGRsTmpJeVlXWmtZU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8wTmpSQk9VVXdSRGRHTlVJeE1VVTJRVGN5TVRnelFrVkNOekpDTkVGQ1JDSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QcDQ5Z1F3QUFBSUlTVVJCVkhqYXpKUS9hRnBSRk1hdlBwK281QkVJSllWU3FSREVmeFJLUUJ4MUNhVVVyVUtGZHJMZGFtaW1EQ2FseEppOGR1dGloaTd0NEZpN0ZLRkRpM1NvUTBFVUNoMUVBaG5hUUNqVnBYOUVlYjVudnBzZW02ZEpGWU5ETHZ4UU9mZCs3OTN2TzBkRHI5ZGowMXhHTnVVMWRVRkRJcEVZVlErQVIrQVorRGhjN0hRNkxKMU9NN2ZiZlN6b2NEaEdDZDRBTDBFZDdJTXRzTnN2dGxvdFZpZ1VXQ0FRK0hmQVpMUFpSZ2wyUVJYRXdTcDRCZDdSR3plT1BETWFKL0t3UVo5dDhBVGNBaEo0RHg0Q3dXS3hEQnd3QVJGY0IzTmdsZzdNQUw1ekFjenI5bjhqb1VXUUVRVGhiclZhZmVweXVkNmF6ZWEvSG5xOTNpSnRMb0ZmUUtIZkdzRTlLNTZhcU1FUWFUYWI2eDZQNTNzeW1keU1ScU9mdWVBQnBmbDEwaGJoS2N1eUxOWnF0UWY1ZlA2MjArbjhaQ0tmMUxQMFhMZmJaWDYvWHdtRlFqdVZTdVZLcVZSSzhsRGM1SlYrQ2VRdGI0SEwvSGFuQ1ZxdFZwWktwZUxCWUxDaUtNcUZYQzduNVZkK2pGb0UvQ1loZ2ZieklUZlQ5eVh3YzBqdm1xWnBzcXFxRXE2OUhZdkZpcUlvSHFVc2c5ZmdFZ1dpa1FVcUpiNUJxZmNGTDRJMUVHeTMyeSt5MmV6emNEamMwN2NObzBtby84ZXFaWjNISytBKytFQ3Q5c051dDUvb3c3SHpEdTZBbTlUZ2ZQaS85SXZ3YmxDUXorT1l4YStZQWZmQUczMkJuNFdQZzA4dmw4dmpCSytDUDJCdnVJQkFtTS9uWTVJa0hRdWUrMy9zUXdFR0FMU3BtT293N2p3ekFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbXkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJUVXlNRUkzT0RnNFJrTTNNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UlRVeU1FSTNPRGM0UmtNM01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21Fd05qZzNNbUpoTFROaFkyWXRORE15T1MxaE1tVXlMVFZrWVRCaFpqSTFOVEZqWlNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQ01qQTVRalF4TnpjMlFrUXhNVVUyUWpZMU5VRXdNakpFTnpsQlFqVkVOQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGx1OXUwY0FBQU5TU1VSQlZIamFySlJkU0pOUkdNZmZmVG1kV0VzamhyVWxVYnFrd0kvcEpFWFdoWkNYd3lGSjFsMmJORVpvRXpacnJDNldpYUF3WXJFMENMeEkzTnhDZ3lMUzNMeFp1TVNrelB4QUpvS2dicTZVT1YyNi9tZHNNbVdtUkMvODJON3pudk4vbnZNOC8zTm80WENZK3A4UDg2QVBvVkNJY3JsYytXdzJPOFJrTXI5R0F5ZURVdUFBdjNkMmRpaWhVRWlscGFYOVhYQnljaks5dGJWVlBUYzNsNys2dW5yUzUvTjEwZW4wZFh5NkJzNkJLV0FNQkFLdXZyNCtTaXdXNzY2bEp4S3NyNjkvUGpVMXhSZ2NIS3pFWkRtTlJndHdPQndtc0FFUmFBRXZ3V1VFMnJNMm9XQkRROE9MalkyTjg0Mk5qWFZlcjFlT0xRc3hMQUJTb0FJS1lBR2VJOVd3b3FMaUxaL1BkNXRNSnMzTXpNdzhpOFZxeGpBRFhBUTY4QlFNUjRxYW5KdzRRMnd2V3lxVjNzSHZjZktPWWk4YmpjWjdJcEhJaG15N01QUU0xSUZiTVRFR2cwR05qWTJ4aG9lSFMxRDNFMlNNRnJOTmJXMXR4K3pzcklUSDQ3WFk3ZlpPTW9iM016S1pyRE1ZRExhaFZwK2pXeTZOQ20rU09adWJtM2RSUzJWdWJ1NWdkM2QzWFNSRFJNZ1lIeC9QNTNLNUxwVksxUmZMR2xzV280YWZJUFllcjE1QUFoR1BGRWFubk4zZTNyNmgwV2l1THl3c3BGdXQxcXZNa1pFUmtWS3AxTU5MeXowOVBUZmpQVlZjWEJ5d1dDenArMHJNQW42eVkyVDNTSy9YTjFkVlZZMW1abWJxNVhLNWliNjR1TWozKy8wOGVDNTFhR2lJSGIreXVycjZRMUZSRVJkYjFwSmVnUTR3Q2liQUtXUVhLaWtwc2NQOGxFUWkrVjVlWHU2amw1V1Z2ZW50N1ZXaElkKzBXcTJ6cHFiR1BEQXd3Q09DRG9makF1cVltcFNVeEkvV2o3U1VmRXNCSzRBelBUMWRHVzFxbHRQcHpOaHRpdHZ0VGxFb0ZEWnNnM1M0bzcyOS9SMkMyR0hxeCt2cjY0NDRBOStQMWxHRG8zY0puWDZRazVQRHhnNnBwcVltMDY3ZzJ0b2FaVEFZS3VHN0sycTEybUN6MlhRUW1jZnhNdmYzOTFQb1pFeVErTkVLSGlMNEY1MU94NEJuQzFIREgwamtKMFVFOXdOUmJsNWUzaXVQeDNNTVdWTlpXVmtVYkJHUERCaklPTnl4WjIzQ293ZWhiRVNqQ1FTQ1h6QjFvaWtMSUlmOFFjTU9QOHVveTliUzBoSkZyaWMwSk5FVUdnZ2YrVDRzS0NpWXdIMFlOSnZOdDFkV1ZseW8xVmFjQ0RkNk9ieEdmU05COTBRNjZNYUdaVTZqMDA5ZzlCVGNOZ0hNaXdrU28zOEViUWdVaHJFamwreWhndi82L0JGZ0FMeWlqUllycndzcEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvbXltb2xlY3VsZXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1UZzRRVVpET1RrNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TVRnNFFVWkRPVGc0UmtNNE1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2prd1JqRkJPRGxFT0RaQ1JURXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamt3UmpGQk9EbEZPRFpDUlRFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtEZTBFb2dBQUFyVkpSRUZVZU5xc2xWOUkybEVVeCs5UGk1cUcrRENpQlk0ZXJJWTRoSW13RVZJWUVjbkVObUdKTkFmYncxb2llN0JnTm5wclpMQlppMENJS1dOemt4azBsZGhMR2JFbllTT1VpV3ZrZzRPeGFDd1hJN1hJUC90ZVowMWo1UVplK0lDL2N5L25udk05NTF5WlhDNUhLcmxZcE1LcjRnNnJ5aDJ3V0N3a0ZBcVJtcHFhbzF2TisvdjdGelVhemJwU3FRelUxdGIrdGxJTlU2a1VHUjRlN3NWYVVLbFVici9mTDZOMmlsYXJKZlgxOWFTcHFha1lLWGdMeHZsOHZuOWtaRVIzY0Q2Zjh0alltTUxwZEJwME90MUQ4SEpvYU1pNnVMallUUGRvWkJ3TzV5Z21NQW5NUnFQeHp2ejh2RDRTaVRDSEtVZWowUnMybTIxQ3JWYXYwRytQeDlOcXRWb1ZYVjFkNjhjb0VRTU45RWNtazJrQnFaS2lNQXdUOC9sOEY3TFpMRDFBNHZINFdZbEVFanRCMnAvZ0VjNi9ucHViTTg3T3pvNkxSS0xjWVlRREF3T1A5WHI5ODU2ZUhnbWJ6VDYxdXJxcU5wbE1yNDV4ZGc0OEFQZDJkM2RYcHFlbm94MGRIVDlLcXR6ZTNoNWZXbHJTVGsxTktlUnllVUlvRktad2ljZmxjclZCcDQ5RnpxaE9OdkNPUmdpeUFvR2c1RGJtYjVNU2k4V3FPanM3MzNDNTNGWWVqOWUydGJYMWhjWEtxM01MUEFIblFUaVpUQkszMjAxa010bkpqWTEyU0RzY2ppdElhWE5qWThNTEdSUXdYd2VUWUpRNisrOUpnUXdKdTkxK0dYMTJPcDFPVzJCcUExU3JwOFhuRGh2NlgwYXZzYkh4R3lyNUhsM1FUMnNIcklXQ3ROQjlSRTZDd1dCZElCQm93TlNVZDdpM3Q4ZGthQjhSY2dud2dSaGNCUi9BQXFLN2F6YWJuZDNkM1E2RHdYQjdaMmZuWkllMHR5RDRLTFRzeGVjejhMM2c5Q2E5QUNOcm1abVptZkI2dmYzTHk4dlh3dUd3cU96amdBQS9GYUk2QTc0V3pKL0JDK0FESFBva0hHUmIxaUhTSm1pUFhKR3pQejNITUpiQndjSDdpVVFpMTlmWDV4YUx4UkdtM0l1OXRyWkd0cmUzOHdVNFp0VWhDNjVVS3Qyc3JxNG1US1gvQW40Sk1BQ3MyUjVBc1NnSEtRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL215cGFja2FnZXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9kSlJFRlVlTnBpWUJnRmxBSkdFS0dwcFprQXBPSkoxUHNCaUJ1dlg3dCtBVm1RQ1VxRERET0FZbXhBQVlxUkFVanRlYUJqR3JDNWNEMlFPZ2pFK1VBc0FNUVRzUmpxRDhRUGdQZ2lrcGcrRUFjQU1jaVZnVURYUG1DQlNseUVHclFRNnBWOEtCc1piQVJpZTZnaEFramlCNUI4QURjUUdZQnNld0MwclFGZEF1bzllNmlCSDZEQ0RsQkR3WUNGek1oY0NMVVlaaUFESlFaZWdJYW5QNUtYeVRjUUdCU0ZXSUppUDNxeW9ScWdxWUg4MURSd0F4QW5ZRWxqSkFNV2FFQmZBQWFzSXBBSnlqSHpRZWtReUhmQW9sNGVoN2dBU3RiRGtYaEpCWVhvQmNYZ0JBQUJCZ0FyT0RmVDEzTCtBQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9teXJlYWdlbnRzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFZQkpSRUZVZU5xc1ZFdE93ekFRVFFON3VzbWFzQ3lyY0FMQ0RjSU5raE8wbkNEMEJNME5VazVBZXdKeUJMT2hTOEthU29RVHdCdnBXUnBaenFkU1J4bzVzV2VlbjkrTWZSRk1zTVh0SW8yaUtJY0h4KzlqT3hRN0d3R2FZM2lEeTlqQUUzNC9IajRPeHBkek9VTHVGVzZRWEtoTm5qbC9FNXhpd2c3K1I1YnUycWZJNE1zTEJ6RGxlQTNZZFo2MVhoMkhBRVdqMU1jUUZzTzdrd0RKckpLaWFGQjgxd0kydVNqVXhnSzh3MWZ3SDh6cktqK010ZzBTTWd3YlI2T0VZOEVqaXN1R3BZRDZXTTRJbGhPc29IYXgwbEVZTGpVQTR1M2NuVnUwRUl1U1hETmh4OTB0dXhYbXBPL1c3RDJyYjhWVGxMNml5RTViUlY4RWI2aFZwUUE2bmlSUU11UnVGNFJrOHFMbWZoR1VxRXBiMnlzcFpLMGx5M1JLMnlROTg5Zk8vOTZOdFlCelQxTzdkZ1gvR3J1eUlYZFpPazF0UEs5T3hoZEgyNzE3RFFWd0s3U1Y0QWJmR3daYmsvK1d4YklQUjAxTmQ3NCtUUGp1eWVLYWd0dGJVMUo0bys1dnl0Z25HK3U3S1RHVE02VnB5dzV3ajJwNlhxSHoyNzhBQXdEUGtKZkRvRFBmcHdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvbXlyZWNlbnRzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFlWkpSRUZVZU5xMFZEMVB3a0FZdmhvWk1jaktBcFBnVkVuQXRRWWNZTkUvWUFzemc3QWloakF4cWdtdXFJaXpqSFFnWUVnd29RbXRpelFCUWhOWmlTVDhnUHBlYzJncExSOUdMM255OXQ2N2UvcThIM2NJL2ZHZ1ZtM3c3ZnV1d01RQURvQUN1T20rZDYrdDltK3RJTHNEd3dBT2dBVC9QQTdJZ2orNXNYUTQ1QVo4QWh3R1A0UDl2MUhvQmtpZ2JLSjN3cnhCd3Q4OFpMT0RSc1ZyRTg2VUFFSE1zSVNMVkxFNnQ3MUNZUXJ3REtRYzJCY0FSMVI3MW1vYlZWV1RnaUNjZE9VdTQ5eDFLamFielZIbHF4TFA4dyt6bk9JcWs5ekdMV1VBa2FQVDZZZ2N4Nm1nUmcwZmh6V0xVYmd0d0xJYTArY1FJSkwrTkIrOWZxOGVQQXpPa2N5K01mTDVQQ1k5TldrcGVxRW9zSkVwRm92TWREcTEvR0hwc1lSRVVjenFDcWJkR01DNVdaV1pTcVd5c3RGYnJ5MGFwMGJudWlkWGNubmJ1Rnd1NU4zekxoQUtiUUViMnFCU01ZYXR0WTNkYnRjbUxNdHEzK21MOUFKaElCaEFwTXI2b1JpYkh4TTJRcUZRZHNlK2cycTFHcEpsMlRUa2FDUXFVUlExTWJocFF2cERDSnNhNC9HNEVZbEdMQXZEbnJISTQvR2tERmNRNTI5Q1FwOXZiSnpzNFhCWXorVnlkRnRvZnkvaThCT0pCQnA5akpUeVUxa2lhbWdTSm03MEl5Q1VsdDJVV0gvUTV3YjlnVGIzKy8xSzVqTHoxbXcyWjQrcm0xakY3Q1g2bC9FbHdBQmQvOVRQaEFOTldRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL25lZWRtb3JlZGV0YWlscy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UXprME4wUkRSREk0UmtNMU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRemswTjBSRFJERTRSa00xTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamN5UVRRek1ETTJPRFpDT1RFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qY3lRVFF6TURNM09EWkNPVEV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K1g2M05Kd0FBQW9KSlJFRlVlTnFjbFY5b1VsRWN4OCs5ZXAxUnRsVklLOEhDb0VDRW9OSW9JaHowQjBMTG9rallvRGZieXlqZmVobENFREdTdGxvWitkYXI5VkJCRDVGUGhURWl5eFZrR0NsaEkyckxKWUZKTjEzZm4venVPTWkyWEQvNGdPZmNlNzczOXp1Lzd6a3FicmRiTEJMN3dUa1FBak5BQld2QlhUQUdKbXExbWtpbFVzTHI5YzR2TWk4Z3RBRU1nODNnTVMvK0FSVFFBM2J6OHcvZ2txWnAwL0ppZFlHczdvUDNuTmsxOEF5OEJXL0FVM0FGbkFKZndNTnl1ZXlWQlJTcDVGM2dOaGdDejBVSDBXdzJEelFhalpGa01qbmc5L3Z6Y29ZcitNc1hPaFdqTUpsTTZXQXdlREVTaVl3V2k4VXVXZkFzbUFSUHhES2lYcStMY0RqOHdPVnlmVTRrRW1jTXdWV2dEMXdYeXd5VUsydzJtNGhHbytQbzlyRlNxYVNSNEJId0N4VEZmNFN1NjhMajhVeGFMQllsbDh0dEo4R0RJTmYybmgvNHBMR1A1NHh3Y3lJS2xlMXdPTWlMSDVHbGkzem9ZS3NZY1FLY0IxMjh0NEs5cUlQTGdMcDVpeW9HTHF2VmVvUExmNDNmSzQybXpFbUN2ZUFyYjBNM1dFMzd6M1ByMkJIMDdBVzZ2Q1diemJiMkVnYlhXNTIzMisySCtPc1RMSmpqaFJud0NId0N2d0dkaUR2Z0c1Yy9aRGFiZTlQcDlFQW1rOWxVS0JTMk9wM09QQm1iMmsyaS9SMzJZWXpOcjhyMm9lYkVZakVmWlRpRnVaTjhySDcrUSt3NEdPVnpMZmlzbTVEcEdwUXM4dm04U2VXYjVCV0lkSkRkWU52NEhualhNclNxaWtxbGN0UklleHdjQmp1WEVLTjMxN2ZOOWZEQk1JNWl0eUU0eTFmU1RiTENJb0p6YkJVNTl2STFOLzhPN2FFeG9KUHluWS9nREY5aDdiRU43SkhHWktHTmxCdzNweUFMQ2haNUNhTGdOSmRKQnYvRHBXbmNRQ09tdUd5dFdxMktVQ2cwckN6eEY5REhGeWxsVU9QT0ttendmV0NIWkp2cFFDQndOUjZQai93VllBQlRhTCtZWWUwalpRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL25ldy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUMwa2xFUVZSNDJtTDgvLzgvQXpVQlFBQXhNVkFaQUFRUUM0ZzRjT0FBOTZkUG4wb0ZCUVdiM3J4NXMwNUlTQ2ppNjlldm5teHNiRmQ1ZVhudi92djM3eS9JSjB4TVRBd2dHb1FaR1JuQkJzQjhDT0piV2xveUFBUVEyRUNneHE5Ly8vNDFlUFhxMWFHZlAzOXF2WDM3ZHZQdjM3OFZSVVJFYklFR2l3RTFzYU5yQm9LZklIRXVMcTRISUQ1TURpQ0F3QVlDTlhPd3NMQWMvdjc5ZTVLMHRMVHMrL2Z2WndFdGVmWHg0OGRGejU4L2QwSFdnQkZtUUZmcjZ1b3lBK2wvSUQ1QUFJRU4vUFBuanlEUVpWSE16TXp2Z1FaL0JkSzN2M3o1a2lrc0xPenI3T3k4SGFoWUdtamdaM1REV0ZsWkxiWnQyK2IrK2ZObk53RUJnUjBnTVlBQUFodkl5Y241L01lUEg3T0FFaldQZ1FEb29wL3M3T3pIZ1ZJL3JsMjc1Z24xTGllUStnNWlBOE5VQ0NpL1dWMWQvUVRRQWU1QUM3L0JMQUVJSUppWHVZRUdoa2hLU3FvQ3cvRXNNSEs4Z1lhM0FsMnU5K3ZYTHhBV0Jua0o1bTJnZ1N4QXpBOWtMa0h5T2loZy93TUVFRGpaY0hCdy9BQWFxZ2YwNmkrZ29Ub2ZQbnhZQWdvM29DWHhvT0FBc3Y4aHh5eFN4TUJqSFdZWlFBQ0JYUWcwaUJNWUVXTEFNRk9Sa3BMU0JQSnRvRFppVGF0QXpmK0E4aXhBUXp1UURBZWJDQkJBTERBQm9DRVFHMWhZRElFQkxJNHY4WUxVQTczOEJjYUd1aDdzWllBQVlrR3lGV1RvWjJCU2FRVW1ja1VnbndNWTArVkFkVitCK0F2TWkwQ0RlSUFVTnpCWnJWRlJVWUVuY3FBNDJJVUFBY1NDbkdCQkNSV1lGTVNCc1g0THlHWUVlcXNFaUg4anAwR29abGFnVDk0RHVUYm9ZUW9RUUN4b3Z2a0pWUHdER0JFY1FFT1lnUkdsRDFUNERtb1pCNXJhUjhnR3dRQkFBTUVOQkJvRXdxTEFmRHlabjUvL01WUXhGNEd3NUFKYURyS01DK1lMZ0FBQ0d3ak14OThsSkNTV1hRU0NXN2R1SVFjMFBIeVJ4V0NhUVlhQklwT2JtM3NYekJLQUFJSmx2YjlBQTZPQnNac0ZORndRMlJ2SUJRSTJnNEhoL1FCa0tFd2RRQUF4VXJ1QUJRZ2dxaGV3QUFGRWRRTUJBZ3dBQ0YxdFBBQXNGdVVBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9uZXdtb2xlY3VsZXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVZaSlJFRlVlTnJVVTdGeEFqRVFmR1J5N09CajVCQW54aFhZZEFBZG1BcWVEakFWWUNyQTdnQlh3RHZ5RUFHSkNSR3hDZWdBOWp3clJ2UG81OCtoYjJaSG1qdmRhdTlPU2hLRnRlNWFUNG5TcmhSazExaSswalJkN0gvMnJ1cThVVnc2NERyVUtEUUtkUm5RQTZ5bWRLTlF0OXA4YjNLc0U0MUtvMUEzb3VzTmFGZXByREd4RGNqQkJ2ZVd5S0d1Z3pNV3E4UDZRcFVIVVE3SWtIYmNTeVhPRTA2Qkx2QUtmRWdDZ2lzcXRZdzcrUHFCei9KeTM0YU81TlNDRXFjOElJRkRrRFNtQXFtZzV5OEtjcnFlN0xma1F0L09wQ1Rhc1pRWll1S2ZBek5SR2lPN0lDeVF2Z05OR1lvb0RtTGV6dFZvdnRxUmlzcml5N0pwbTVMbmtvUmxSTXl4dnhkV2ovaEVXUjVjSUluUGZFTGV2d2J1LzBMb3FIVEF4eTFFR1h5aXVzK3BaOXFmMGlUcEZuZ0VIcUJNL3ZJdDhBa3NTUmJ0Y1d6S2MyNUhRWW5GSG8vWmhwdktLYk5ubXBkZy9RRC9sNTBFR0FCM3JvdW1NaURVZlFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvbmV3cHJvZHVjdHMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJFSTVNek5DTVVJNFJrSkZNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UkVJNU16TkNNVUU0UmtKRk1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tGRlJUbEZRamMxT0RaQ1F6RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa0ZGUlRsRlFqYzJPRFpDUXpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtOMktTM0FBQUFpaEpSRUZVZU5xYzFUOW9FMUVjQi9CTHJ4Y1NiRWhQQ2EwRm8wWlVpTjNhbE5LaFF5bTBDQW9PS2dRVUJBVXRCU1VPQm5Fd29GazZ0YmpZUXB1bEJHNEk3ZEtsRFVXRGsvSHZVS3BUTk9pZ0VDeG9Mc2FMNS9mQjk4SnhYREROd1FmdTNyMzNlKy85M3U4U1R6UWFsWGpGUVFORGF2T3FWcXVTcG1sU0xCWnJ0blhaM2wrQmVSaUdtOUF2ZFhCWkFRZmhETXpBUzdnTWU1MEdmQVRQNFlpdGZSWDBUZ011d1hYNHdqWVQ3c0FoUHA5aktxNkJwNTJBbnlBSHIyQWJSaUFGQ3B5Q1cvQUN6c0xVL3dKMjIrNmZ3anV1dE1pMncvQ05weThta3ZjVGNNUGwvVTg0eVBzQitOM3VLYmVhN0M0VStDeFdtWURlVGdOT2dBcHpmRjZESGJqRWNhTXc1SXpSN1FneUR0UHdIWTY3cEVHVTF4Z2NnMFdtNENLVVdxMVFsTXRYQ01OVitPRjRiN0IwQXZDTWg5alRhc3VuSVFSUHVMMmdTeHFzT3F5enJMb1VSZm5qRnZBa3kyYUZ6MjloRXc2NEJLeHpCeUpkZ1hLNXJEb0RDdmVZazJXMjczRkxYa2RBc1pxakxQWUZuOCszbWt3bTc1ZEtKY1VlOEFSWG9qa0dlL2taMmkrZHA3d083MlZaWHF0VUtydnBkUHBoclZackJoUUQvN3I4RHJwOXQyTGlMU3MxalVaRFNpUVNEL0w1L0ZBcWxUcHZCZnpJenBNdXEzRk9JaWIrME95ZzYxSThIcTluTXBuWmJEWjd1MUFvaE9WUUtDUTZmWWJIOEl2NUU1L1pCUmJ2YTVaSkg4eXlyNmk3WHRNMGc1RklKS2lxcWw0c0ZuMjVYTzZHeC9ZWE1NZ0JmcGJFR3g3Q0tGZnFaZEN5MksyVkV1Yk85UHY5cG1FWXlqOEJCZ0QrL3BPQm5kajlyUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9uZXh0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNMEkzT0VVME16VTRSVUZETVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk0wSTNPRVUwTXpRNFJVRkRNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09tWTRNV00zTnpreExUaGtOV1l0TkRjME5TMDRZelppTFRCaFlUZGxOakl5WVdaa1lTSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBOalJCT1VVd1JEZEdOVUl4TVVVMlFUY3lNVGd6UWtWQ056SkNORUZDUkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BwNDlnUXdBQUFJSVNVUkJWSGphekpRL2FGcFJGTWF2UHArbzVCRUlKWVZTcVJERWZ4UktRQngxQ2FVVXJVS0ZkckxkYW1pbURDYWx4Smk4ZHV0aWhpN3Q0Rmk3RktGRGkzU29RMEVVQ2gxRUFobmFRQ2pWcFg5RWViNW52cHNlbTZkSkZZTkRMdnhRT2ZkKzc5M3ZPMGREcjlkajAxeEdOdVUxZFVGRElwRVlWUStBUitBWitEaGM3SFE2TEoxT003ZmJmU3pvY0RoR0NkNEFMMEVkN0lNdHNOc3Z0bG90VmlnVVdDQVErSGZBWkxQWlJnbDJRUlhFd1NwNEJkN1JHemVPUERNYUovS3dRWjl0OEFUY0FoSjREeDRDd1dLeERCd3dBUkZjQjNOZ2xnN01BTDV6QWN6cjluOGpvVVdRRVFUaGJyVmFmZXB5dWQ2YXplYS9IbnE5M2lKdExvRmZRS0hmR3NFOUs1NmFxTUVRYVRhYjZ4NlA1M3N5bWR5TVJxT2Z1ZUFCcGZsMTBoYmhLY3V5TE5acXRRZjVmUDYyMCtuOFpDS2YxTFAwWExmYlpYNi9Yd21GUWp1VlN1VktxVlJLOGxEYzVKVitDZVF0YjRITC9IYW5DVnF0VnBaS3BlTEJZTENpS01xRlhDN241VmQrakZvRS9DWWhnZmJ6SVRmVDl5WHdjMGp2bXFacHNxcXFFcTY5SFl2RmlxSW9IcVVzZzlmZ0VnV2lrUVVxSmI1QnFmY0ZMNEkxRUd5MzJ5K3kyZXp6Y0RqYzA3Y05vMG1vLzhlcVpaM0hLK0ErK0VDdDlzTnV0NS9vdzdIekR1NkFtOVRnZlBpLzlJdndibENReitPWXhhK1lBZmZBRzMyQm40V1BnMDh2bDh2akJLK0NQMkJ2dUlCQW1NL25ZNUlrSFF1ZSszL3NRd0VHQUxTcG1Pb3c3and6QUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9ub3NlcXVlbmNlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFhMUpSRUZVZU5yTVZERlN3ekFRTkFrOXBraHZPa0tsSCtDOHdLR0RpdVFGNEIrRUZ5UjBkRTRIVkU1ZUVQOGdwaUVsb1lNaE01aVNDdmFZRlhQUnlJR0NBczNzV05iZDdaMVdKd1hCSDQrdFRjYjJRVHZHSjFaTFM2QlkzQytXZFRITkdxSmVxOVhLTWUyUzVKMm1RK0FLdGdpNFc3MnNLamUyNFJDRmdCQmxRSXBLOW9BVTh3bVFZSDZFN3k0Z1JIUDRkamNTa2lnQ3hzQ1pZNHRBTU1mWE1Ja2d4NXJ4RXNvMnhSbm8wRm1xSFlvTkJDV3JrbVF6N2lLd3BONURnZE1EUGhjSUh2TmZ5R2RBWDhoWnNSQVd3RlQ1cmNVMVZmQXhGdnMyQVFSL2d2RFBtRjZ6OG4zZ0JqNG5zSlhXRHo1dm9pL1didldXWTJaMng2blZqNmR0UEQ2RmJpMUxLRnQ2OURqSEpLb1U4ZHBnVDRhK1U5N3hFRm95ZXlDbHAyZEQzeW1Yem8zUTJ6RWsvUEp4MjRSeDM0bTJWYUQwVk1SZ2FaZWVxbEpPY1FMN09kdEdHdDdLa0dqOUc5U2hZak1QbWJFaVVhbGFSZnhHdkRXNTZnNUpmT25UTUNWWnlKdlFVUm9heDg4MmZjYnFsM1d2aXdGZWdZRmF5MXpkNUZZQkgyTDc4ZmxpY01aV2tLMlVxS0Nndm9hYTlWalo0TmZ2SVYrU2hESkU2dkNtb3VPbU4vRi9qMDhCQmdDRlhyQklYbGd6UEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvbm90ZWJvb2sucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk0wSTNPRVUwTXprNFJVRkRNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TTBJM09FVTBNemc0UlVGRE1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT21WaU1qRmtOMlEzTFRjMFl6Z3ROR1V3WXkwNVpXWXdMVFV6T0RVMU9UWXhOVFkyWlNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM04wTkZOVFJFUmpkR05FUXhNVVUyUVRjeU1UZ3pRa1ZDTnpKQ05FRkNSQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHR6NXNJQUFBQUZkU1VSQlZIamFySlM5U3NSQUZJVW5KbXN3MkFscEFoSi9RSkV0SkREWSt4Q3hzclhSWGdSQkxDMjA4d25zWXVValdBZnlBTXBDTEdLUnhjVkNBOWxOTnA0Skc3Z01yaVRySFBqSXpkK1pNNW1iMGFxcVlrSmhHTzc1dnY5a1dkWVlweVZyTHozTHNxOGdDSTQ0NTdGQmJrekFFQnlBSmRaTk9WaGwwb3NmNEJsTVdYZFZUVUVUYm9Gem9EVVh5ckxNY1BqV2RaME9MQVpjYVJMSm9nKytnQXN3cnVlUTU4enp2SHZBVVhOY290ek1pMG9UYm9NcnNDeE9pcUpndG0yUFVMNkoyalJOK3Q1d25pRk4rQTRlaEZjOWttR3dORTJub0s0bGxXMFNpdSt5MFF3aUVrVlJkSXh5SDNWUDZvYWROb1ppVHV0MFViQVlmUno2WFpaYm52Smp4NmIrMDNBVG5FbXBGemQwSEdmZ3V1NzFCRkppbUNUSmJoekhkejFJMVpRSDRIYTJpa29NMThDaFdGeFZob3kyakFyRDBUOTJtMThOWFhDcXJHMmdWM0M1WUVLOStWdzBqZmp0VHNBbjNUQmJTSnZ0MkhWMy9BZ3dBRFkyWHJHVmdCWmhBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL29saWdub251Y2xlb3RpZGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1kSlJFRlVlTnBpWUJoU1FGTkxNNEJTTTVqUStPc3BOWkFSellYL2daUWpFTWNEOGNIcjE2NHZvTlNGSDRCNFBoQXJRQTJseklWSUx1MEhVaCtCR094Q29Fc2ZrT3RDR0FBWlZnL0U1NEg0UGpWalBRR0k3MVBzWlNRRDl3TXBrSGNQQXZFRm9OY3ZFREtRaFlEOFJDRE9CMklESUJZQVlrVnFlWDArQ0ZQc1piVDBlUUdhckVEcHM0RmNMOE5BSURSdGdyeHRUN0VMa1Z3S2NwazhsQXV5SUJEbzJnL0VwRU5jQUtRWlZvQUlRQ09MYW1sMFB4QTdFSnRUaUFFSG9SRTF4QUJBZ0FFQTc4a3hWZm1uVnBrQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvb25nb2luZ3Byb2plY3RzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRa0U1TURrNU5qZzRSVUZETVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFrRTVNRGs1TmpjNFJVRkRNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qUmlOemMyTXpJeUxXRTJOemd0TkRGbU15MWlaalEyTFdJNU0yUTBaVFV5Tmpkak9DSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBOalJCT1VVd09UZEdOVUl4TVVVMlFUY3lNVGd6UWtWQ056SkNORUZDUkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BrZjVjdllBQUFIRVNVUkJWSGphN05SQktFTnhIQWZ3OTJ3eG8xbld4R0ZyVVd1TjFZakphV3M1U0RuSmdXSlRLK1UwYVNXbDNkd2NLSExpNE9DeU9Ubm9sVFM1SUZsT2FrWXBtcFJSSnZONDgvM1ZiOE03T1Rnby92WHB2NzMvKzMvL2IvLy83MDBzRkFyQ1Q3WXk0WWZiSHd3VUE0RUE5ZjNRRFpmd3ltTUt0TUVVM0VJN3ZNQkJjWEkrbnhlaTBhamdjRGhLZ2RwRUlrRzlDelpoRDdvNGpJS0hZSURIVFZBT0Z6QUpUMmhDT0J6KzhvUmF2VjVQZlE3TXNBaFY4TXpqcCtDRGJaam5hOVF2d3pnODh2eFMwNWpObENOMFFBdmRBS01RWnh1d0R2dWY1bXpCTUMybTBXaXVrOG1rVHhURlpydmRuc0wzVXFBSGFqaHc1eHQ3M3dkM0NESmxNcGx4aExiR1lqR1AwV2c4THdiNm9ZNXYzZ1VkZStQOVZMZGVPa2habGhXcjFYb2NqOGVuREFiRFF5Z1VXaEdkVHFkRXB3MFZQUG1LdG9JbjBpSmprRklGcnZLK3YrSmdtb0xCb0pST3B4c3RGa3RLaTR1ZFhBcjNYSmZGSjVYQkRpTXdvd3FreFpjVVJUbDB1VndEMld6V0g0bEU1dkQ1VExUWmJMTVlIT1FhL0Z6bzlMU1ZVQXM5Y01PL2hMWmlEYVp6dWR5UkpFbUMyKzMrS0J1djE3dUF2cDdEMVB0RnRkZ0FFM3hnMUtxQml2ZUVDbHVuMDMxOVUvNy92bjVmNExzQUF3RFEwNFVCS0d0dklnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL29uaG9sZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TURNM00wTTVORUk0UmtNMk1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNRE0zTTBNNU5FRTRSa00yTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalF3Tm1ZMU56RTNMVFZpWmpZdE5EYzFNQzA0WWprNExXUXhZVFJoWm1Oak5qWTJNQ0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBHTlRjMlJEVTVRemRFUXpFeE1VVTJRVVZDTmpoRlJEVXdRelF5UlVJMk5DSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0ltVmZzQUFBS3BTVVJCVkhqYXBOUmJhTkpSSEFmdzgvZEN6cHdVVFNoRXlhQ0hiSkZCc3FJZ1NlMmhGdlNpTUNycW9RZVJLS0lJTjVEb1FqY3dLN3BBUVNPaUN6S2tMSElSV1JBNWduTFJRMEZTK2RKbFZDcmVzcHphOTR5ZmNUS3R3UTU4MlA3bnYvOXY1L3pPNy93a3M5bk0yZ3duN0lCZUtFTVZwc056T0FWWFNxVVNDNFZDekdxMS92NUkwU0tRSGc3RGZIZ0VweUVITmVpRUpiQU5Ob05mcFZJOUZUK1c2M1E2OFhrVjNJUW40SVc3OEE0K3dFZDREeU53R1ZTMVd1MWtOcHN0MmUzMmhFS2grQ3NnWC9jTjJBbm40UWY3OTBnb2xjcjc4WGo4VEtGUXlEb2NqcGQ4VWtZdjFYQVJmQkJoa3h6VmF2V1Z6K2R6eDJLeEE5QXRCdHdPYitFYVBVczA5d0MyQ0RINEx1N1FvWFNXeTJYbWNybEduVTduQmIvZmY0Zy84NEF6WUFNY0VUN2NCRnRwNjN0aE5mRGNYSUpiTUpPQ3NtS3h5THhlNzlteHNiRjUwV2kwbTJkeU41K25jaEJMWmhDRzZGUlhVazR6bEpwRUl5QmZsVjZ2ejFrc2xqaEthSzJNU3VBRjFJV0E0MDIvMTBtVjVxYkJUekdmQm9QaEhnNXBPUTg0Rzk2MHlMa2svS3ovNzRDUVM3NzZqc2FoVk5qVXg4UU9aTFNOV1ZPTmxrcWxsTHl1ZWNESHNMVHB2VUxJRVYrOW5FcXNMc3hKNGdmaGNIaGhwVkpKOFQvYUQzT3BGQnFEWDdObFZQQTk4Qm0rVWI2N1lFR2podVZ5T1VNZ2xzbGsxaHVOeG1FWk5RQWVvRThJeUV2Q0FBK3BLVnlIMTFTRHc3QUxEazVjTWJXYTRaYjBKSk5KbmNmamlUVzZ6VEc0Q2lINENwK29iUzJDVWFGYyt1azJmZUdyNXF2TDUvTlNNQmc4Nm5hN0IwMG1VMDRTK3VGeFdBenJtdXF3N1pBa2lXazBtaE5hcmRZY2lVUjYwY3JHWmNMN2ZzcFRGT1pNSXA0S3plRmNPcDFlTVRBdzBNZURpYzJCMGJZMndqTnFDbnZBMUNKUUZ6WFhPSzZkTGhBSXJMSFpiSmwySGJ0T0t4Mml2c2p6K0IzUzlBOTVzQTY2Ky92Z05xN2NId0YrQ1RBQUgzSGI0UUd5K2FzQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvb3Blbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG96WXpJM01UUXhZUzFqWW1NNUxUUTFPVGt0T0RreFl5MHlaV1U0TmpjMk9XSTBOV1FpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TkRORU56VXpRVU00UlVGRU1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZORE5FTnpVelFVSTRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamsxTURFMU16TXhPRFpEUmpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qazFNREUxTXpNeU9EWkRSakV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K0xKYy84UUFBQWJCSlJFRlVlTnBpL1AvL1B3TTFBUk1EbFFFTElRVTNidHhnK1BEaEF3TXpNek5NU0JXSTFhSHMvMy8vL3IxbVlHQnduNE9EQXl6QVNNakwwZEhSREx0MzcyYmc1dVlHY1kyQmVETVFQd01aQnZMaDE2OWZSVk5UVXoxYlcxdXZ3ZzM4OGVNSFExMWRuZi90MjdjOVdZRUFxaGdNSGp4NHdQRDU4MmNHSmlhbWYwQ3VCeEN2QnVKaW1QeTNiOTltQTExdkdSUVVWTm5VMUxRWjdPV1dscGFZbFN0WGRwdWJteThGcWNFVHRvdUJlRGFNOCsvZlB3WWpJNk1xb090VGdmcG5zN0d4bFlCZEdCa1p1VjlLU21wdWIyL3ZFblFUa3BLU0dQYnYzOC9BeGNXRllUclFkUXliTm0xaTBOWFZaU2d1TG81NTl1eFpNdGdsSUY4R0J3Yy94K1lra0N2d0FWQndnUUJJUDhnY21OZisvLzc5bTRXUzVBTFYvNS9xNlhEVVFDb2FDTWtnNUFPWWZwaUJMSThmUC81RmlZRlEvU3hnQTRFbHh0c1pNMmE0QXZNeXBoZVk4SWNLS0FmZHZYdVhBYVFmWkE0NE1hdW9xTFJ1MjdadHBZK1BqNWUrdnY1djlPSUxsRnRBMlF4Ykxpb3ZMMmU0ZCs4ZTYvUG56M250N096QzRhWE54WXNYSllGc281OC9meklpYTJKblowY3VDN0ZtUFdENC9XZGtaRHdIZE14elJtcFhBUUFCQmdCV29MczBISE5oOUFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvb3JnYW5pc20ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVU5SlJFRlVlTnBpWUJoeGdKbFNBOXc4N0F1VVZSUTQ3dDU1K0FERVo2S0Nvd1NBMkFIR1lhSEFaU0JEOWdQeEJ5QU9wTmhBSURBQTRnVzdkaHhNUkJZa2FLQ21saWJJSmZsQUhJQWtmT0hUeDY4YitmaTVGZERWTXhFd3JCOUlyUWZpaTBDc2VQM2FkVVlRQnJJWGZ2ejR0ZjdMNSs4YmlmWVAwTEQ1UUh3ZWlCVnd5QmNBOFg2aVhBaFNEQTJqaVVCOEgyUXdGbVVMa0dPWGtKZEJZVllJVFJLT1VNTlJBTkRySDdCcFpNRVJDU0FOQjREVUFhaVlJNVJPQUZMeFVNc2VFSlZUUkVWRlFiSEpBYVExZ2ZqQm05ZHZQZ0R4QTZoY1BaQjZBY1FlUUF5S0hBV2czRXhDWGhhQTB2VkliSmczQTZGaUc2RXVuVWhzR0Y2RUpwRUxXTUlPWnFnQ2tMMkFHQU5CaHRnamhha0JFUDhIMFVncG9CNDV1eEVLd3g5QWFnS1FOZ0RpbDZEd0JMa0dpRG1CL0g1b1V2SEU1bm9HYU1EaVNvZitNSzlCWFExS0podXhlWk9tQUNEQUFHWCtiZFh3dkp0RkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvb3JnYW5pc20yLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORGt5UmtReE56WTRSa000TVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5Ea3lSa1F4TnpVNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qVmpZamN6WkdVNExURTVZelV0TkRBeE5TMDVZMlE1TFRrM09XWmhabVl3WVRGa09DSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3lSVU0yTWtaRk1UYzJRekl4TVVVMlFqWTFOVUV3TWpKRU56bEJRalZFTkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BsUTkxeWNBQUFNQlNVUkJWSGphak5SclNKTmhGQWZ3ZDg3VndKcUdMYU15YTBtSXVBOGhGclNpTkNLN042SVBCUzBOb2hWRmRKT2d5S2lFbXRDRkpyVnVtbExDb2pCaXNnOFdSVVVGSTZaU0gxelRMaXRHdHJhMXRySFdXUDlIL3BPcEkzcmd4L2JxM3ZPZTV6bm52TExTMGxKcDFKb0ZIOUt1bFdDQTNiQVVBdnk3T1JLSnRGaXRWa2RGUmNYd2o3T2tzZXNnZE1KTVhrK0IwM0ErTFpoWUdocXhNZ1dzaHpmUURuTDRCRmJZbHZiN01wZ0JqdjhKK0FPT1FRaXV3QjNlUEIvT3dGUTREcmVoLzE4QnhXSE80WGVSbVF3bXdVbllBTE81WmZHQVpkeUJwRlFxUndTVXE5VnE4YW1BbXp5L0Z0Z0hTVzV6SFp6Z21kNkNWc2dXUlpMTDVUMU9wM09ldytIUWFUU2FML241K1pGVVFIR3pIZWJDSVc2eEJxN0NkRDVFN0dZL0MzRUtQc3Rrc3N0ZXI3Y21FQWdVbU0zbUhkRm8xQ2NiMVRZVDRRVUxJeklxZ1YzODN4SllBRG9ZRDF0aFdpZ1VzcGxNcHNyQ3drS2xTcVdLamk2S0tNUTdWbllGQTB2Y3NzamNENzhoREJlaEI0RWE3WFo3clU2bjY5VnF0ZTlUQVNmREt0Z09FY2lCbi9DTng3QVE5SEFOanNBdkh0TmlnOEhRMGQzZFhlSjJ1NGVyTERKNUFJZmhLSU9KRmVUbk9FakFIMTVIdWVVQjBmU0pSR0xRNS9ObDlmYjJGcVFDZHJMQ2xiQ2FONHFuRnpEQVcraURObGpETEIrSjg0UHZDb1VpRjYxVFhsZFgxMVZmWDE4dHF2eVZQUlVISDJ5QngzeUFPRTh2ZEhFRXExbng1enllc3k2WGEyVnhjWEhZYURTZWEyaG9hSlJsZURtME02dG5MTVpHVGsvNk1OajR1OVpnTUhpL3ViblpWRlZWOVVxdjE5L0xOSHBxbnFlSGpmd1Fkbkk2UkZaUDRRa2JYUFNxRHVjNGdDYVhjbkp5WXFNejNNdzV2Z1NiT0NtaUtFYStFRVFoTEtKZE9JNTdjR1N2UFI3UElwdk50amFaVE9hbUprVmlFN2N3U0FjblJHVHhFVzV3YWtRQlZYQkFaQjJMeFdvc0ZzdGR2OTlmWGxSVTFJLzNvaXM3TGJzNGUrd2xyN1Z3Z1JQVHhpbnk4Z3lYdzNwc3RROVZscHFhbXZhR3crR2htOUlEdWtsaWxtWGNxbWp3Q2VCa2UxMW4yOFNHc29qSEpSRTBMeTl2VE1EVXltVy8xVEtZeEZmWElBZEE0b01HTTl3ci9SVmdBSWM4OGhpWFJHZTZBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL292ZXJkdWUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd00wSkNOMEl6TlRjek9UVXhNVVUyUVRZNE1EazVOREEzUXpZNU56UTNOeUlnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBDUVRrd09UazNNRGhGUVVNeE1VVTJPVU5GT0VNMlFVTTVNekZDTVRnd1FpSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcENRVGt3T1RrMlJqaEZRVU14TVVVMk9VTkZPRU0yUVVNNU16RkNNVGd3UWlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOVFk1TlROallqVXROV1ZtTnkwME5XVmxMV0ZqTTJZdE5EQXpZall3T0daaU5tSTVJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakF6UWtJM1FqTTFOek01TlRFeFJUWkJOamd3T1RrME1EZEROamszTkRjM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCs0WnVPUFFBQUFwcEpSRUZVZU5xRTFGdUlVa0VZQi9Dangwd3N1eWdXdEJtWWRGblJnc3JvSWN4d3FZZ2VpbDZDM1lvU2doWXFEQ0t3SlNRb0t0a0tLd2dpcVFjZk5KUXlvazBxVnZaaE1hR0VsdWlDQnBVVWxHR0ZycGRWK285OHh1bDBqanZ3WTNGbjVqOXp6dmxtRkZhcmxaTnBOamdFMjJFSktPRWJQSVVRUEt0VUtsdzBHdVVjRHNmZlNTcUpvTGx3Q2piQld6Z1BINkVKQzJFRG5JVWNuTlpvTkhuaFpONW9OQXAvcjRRUnFNSVJ1QVV2YVBJSGVBV1BJQUc5clZacnVGUXE1ZHh1OXp1VlN2VmY0RklhZkJ1T3d3OU92bFhZSXlQa2ZUcWR2bFl1bHljUTJ0NnBVdkRvTnlFS0YwU1RkOEFURmdDWDJDWUVmUTl0TnR1eFdDeDJJNVZLOVFnRDk4QXNHSkxZVFMvVTRSNzBDZVp3dFZxTkN3UUM5eTBXeTZqZjd4K3FWcXZ0VHJiaWZyZ0lMWWxBRnZhYTN1MXYramp0MW13Mk9aMU94M205M25QWmJOYVpUQ1o3V09CdTBNQmptZmZWZ05uMDladmlSVm5wT0ozT1BFb25GNGxFK2xqZ0FmZ0U1UzZCTTBFTlUrSk90a3UxV3MwWkRJWXhudWZYc01CVlZCSnlyVVpoR2dxWGJBaitqRCtMbFRTdzJpV1F2Y01adE12R05PTjRGdmdGRmt3M2tCYnUxdWJETHhWOURHdVhnZDloUFN5SGwzS0Q4UDVzalViakRkdmhkWmdIeTJUR2pzTVp1QXMrY1NmT01sY29GTlNaVEdZajZuR01CZWJwdkI2V0NWeExsYkFOdG9nN3RWb3RGd3FGZHRicjlackg0eG52VlAwVjJBV3JKUUxYVVVteFJiZUtkeGVQeCtlRXcyRi9mMy8vWmJQWlBLVVEzSWRIYVplYjRhdGdIbnNkUVdCbmRaQ3V0SFpUS0JSOHNWaU0ydTMybjRsRTRpQmJRSGdmZGlhTndsN0kwUDlMc0U5aTU0dFFleUc5WGwvMytYeURMRXpxZ2owSnJFRERrSVE3TUFHVG5ZOEpLK2k0RHVBeUdBa0dneWRjTGxlOTI0MTlGUjdRNHc5VE1VL1NPZFpTa2VmcEtaNmJUS1ovSnY4UllBQnhvTTllaGk1WXNRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3BhY2sucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlsU1VSQlZIamFZdnovL3o4RE5RRkFBREZTMjBDQUFNSXdjTU9HRFNnQ25KeWNEQklTRWd4ZnZud0I0Ky9mdjZPb0R3Z0lZRVRtQXdTZ1lvNU5BQVpBS0loK0xGVHMzTTAxblUwcnNVdkFJcER1ZU1YOWhwbjVpQWpNRE81K1JrUmdablQzK2N4QVZWRlYxN3VMaVBpbXJ3Q0NHN2h5NWNyL3pNek1ZSU1ZR1NIeUlOY0lDUW5CTFFRWjlQVHBVN0RCTVBEcTFTdXcrdkR3Y0xBbWdBQmlRZmFhdkx3ODJEVXNMQ3hnUmI5Ly93WnJCbGtLc3dobUFVZ09oSVdGaFJudTNyMEx0d0FnZ09BRy92djNENHhCWGdBQmtKZEFBS1FCWk9qcjE2L0IvTStmUDRNTkJsa0NvdCs5ZXdmV0J3TUFBUVEzOE8vZnY1QXdBQ3A2Ky9ZdDNOc3c3OEVNZ0xGQkZtSkxJUUFCQkRjUXBnaG1LRHlRZ2V5dlg3OHljSE56ZzJtUWk5RGxrUUZBQU1FTi9QUG5EOXdWeVBURGh3L2hya2FYaHhrRzh4MElBQVFRQzdMcE5qWTJERDkvL2dTN0JoVGo2QUFVVmdjT0hHQkE5aFhNQWhnQUNDQW1HQU5rRUVnU0ZKc2d3MkMydzJpUUdNaTdNREdZSVNBYXBCY0dBQUlJeFlXc3JLd29NWWJzTWo0K1BoUTU5TENEQVlBQWdydncxNjlmV0JXQmNnck1aU0EyeUVYSXJvUHBoUUdBQUdKQ2poUmtrSmFXQm5aUlFrSUNQTkJoaVJyWllwQ2hvQVFPQXdBQmhKSnNrT25wMDZlRFhkYlcxZ2JPT2FCWUJya1FsdkNSQWJLQkFBR0VrbXcyYnR3SXRoM0VSbll4S0VKQTRZdWVrRUV1Ui9jWlFBREJEUVJscmV2WHI1TlZCdkx6ODhQWkFBRkU5UUlXSUlDb2JpQkFnQUVBSjhNZkpkcXNQWWNBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9wYWNrYWdlaGlzdG9yeS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBZGRKUkVGVWVOcnNsRDlQd2tBVXdLK0dsUVJKbUlWSVlzR0ZSVHJTaElHUWtGZzNEQW1FbVVIWUJER3R3YUdPRHN6Z0p4QkhKbXFZb0VNTGd6Q1IrZzBRUGdDKzExd1JTZ1hVMVplOFhLLzM3bmZ2M3gwaC8vSlhZYXlQVURqRS8yQmZoSTdOMGR0b3VnR2tzQTc5cDJ5QjZQVGJBUFdBNHI0OFFGdVdrV3RsQXhwTnFSRWFER3hBbmE2OTBQazd0V21BUXpFWTc5QmJPL0NWYmhCQmhSM2hya29SOUFOVWN0bFg0QlFKVGhSaFpPeHJORFVJUExjdCtaMUNKcElrSFFYOGdVNWY3WlBnY2JDVFNDUXd6RWVHWVl3Vk13L1ZFcDNuYUNxK2dOR3pLQkVFZ1crMVdnUmhicmViek9kekhrYStmRjB1TGhhTFBFQ2JObzlFdTNkTFlQVzJLbVl5R1lTWVA3UFpMS25YNithOGNsTWhzL21zQVZBamZCcTJpbk5oQ3ptM0JJS2hBSnQ0QytZa3Npd1RMc3BkWWZqWUNaQmZ4U0czcGh5QXhqRFVYZExyOTRSOU92NmczVzZ2dFFIbWp6MWhOd3kzUmJDV1ExcEowK1ZDb1dBQzVRZjUxM2NaaXpLSXgrT0VaVm1pOWxXenlrNENCeXRZcUwwZWg4bGtvcVV2MDVIdndrTFBoOE9oMGUxMnJZZGc2dERZVDNncFRDQlUycTlwMm5QdHZoWVpqOGRyK2NRV1NxVlNwV1F5cWU5d3pnQ2dzYnhlQU1YdUw2cXFHaHVOUjd6MzBHdHdIS2Y0ZkQ2OEtmcStPZndVWUFDY1ZMWFBoQjEyZUFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcGFja2ZvcnNoaXBwaW5nLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOVFZETlRrNVJUZzRSa0pHTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5UVkROVGs1UlRjNFJrSkdNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09tSmhaR015TVRjeExXVmtNakl0TkdFNFppMDVZekpsTFdNMVpEbGlOemhoT1RWak1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcENSakJET0RNeFJUZEZSVUl4TVVVMlFrVXlPVUkzUkRSRE56YzNNa015TUNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1B2SUdrUkFBQUFHVFNVUkJWSGphN05PL1N3SmhHTUJ4ZjF3ZW5GSFc5V01KRE9tSFFZU1FEVFdJRFEwdFVuK0JnMFJVME5RZ1lSUzBDQzFHVTFDdGdVdE4wV0JhbTlEVVlqL0lJYWlHTEdpd1VxNnk3OG16RkkwTlFiM3c0YjA3bnZlNTUzbnZQV3VsVXJIODVMRCtKL3lGQ2NQaGNDT3pIZldZZ25tZnhSWU1pVlBRajFwOHFxQllMRnI4ZnY5Sk5CcDlxQVllTVpoVkNleVN1REdFc0lSajlHQU9wMThLZW5lNVhHMnFxdlp4bmFnbTFEU3QraUtjNDFBV3Q2SURxNWlCQy92WS9OcGlKQkxwem1ReVU5bHN0dFBuODEzYWVGYkdKWll4aVRXODRneE5XTUVFR3I3Yk01dk45cGJMNWNaRG9kQlJLcFh5S3RKcWpiUnRrYjFjeENCZXNJMUh6R01QRitiZVM3elptZXJ4ZUE3Y2JyY1JpOFdXRktuaVdoWmJwRHB6cjNheGpsbmM0QW9MOG9HczhvRVc4L204aGdGRlVlN0w1YkptZHpxZHJZWmhET0FPR2dMUVlZVVhxOWpCS0ViZ1FUdGFTcVZTczhQaDBFblVXeWdVdkxxdTM1akh4cXdxZ0dFNUpoV3B3S3prRmh0U3VkbGlITS9TUlIwSlk0bEU0aW1aVEE2bDArbnBZREFZLy8rWC8wTENEd0VHQUYyQXZkZ2JCaWtOQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9wYXJ0aWFsdXNlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOVFZETlRrNVJVTTRSa0pHTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5UVkROVGs1UlVJNFJrSkdNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09rVTNNRE0wUVVaQ09EWkNRVEV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2tVM01ETTBRVVpET0RaQ1FURXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgraDRubHRBQUFBZUpKUkVGVWVOcXMxTDlyRTJFWXdQSEwzY2xoMEtEU1c4eFNCek9rMENsUVJKQU1OVVpvRjRzNkNCRkpTYzFRT3BTaVpxdUMxTWxCb3c2aUtiVlFFQkVoSkNTS2hsSlFNVnZCUDhDQXBMUU9GaG91NWxlL0w3d25TU25rcnZyQWgrU2VJMC91ZmU5OUhrK24wMUgrWjNnU2lVVDM5U2lHOEJ3Ny9YNWNyOWVWVkNxbEJBS0J2em05V0N6YTM4ZHdDUVA0Z2JmOUN0WnFOU1daVFBia2RLL1hLejdQWWhJeFhNQVZmTVR2ZmtWVlZlMjl4Z2ppdUlsdHZFWldMdHZ2ZGc5RndYTTRJcDlPay9sbHZNQVRCTjBXZkNRTEhNY3pISlgzOHJpUEJaeHhVOURDTzl6Qm1senFTWG4vSzJaeFc3NDBSd1c3WXhGTGVJclRNdmRMN3EvWWt1djlDdXI3NUxLeXlEMXgxUEFLNzNFRGozRUNENTArb1IyZmNSZW54T0dYdVVPWXdpRG0zUllVOFIyWGNRMHZjUlYvTUNQT05CNklQeUVjRnhTeGdXa2NnMDhlcTJHWW1FT21VcWtjN3VubFlORFJNZFBsRVlwQ05LNGhrdTEyVzNSS1BwMU94OExoOEphVEo3U2ppVnZJMmNYc3RtczBHaGZwNTF5cFZCTDdyV2ltYWJwcGhBL1l4SG03cXpSTlU1ck5wcjlRS0VTcjFlb25wMHZlR3hPeU5YMTJRaXpmc3F4djZnSG42QnVNNDJmMzhnM0RDT2hpcGgwd1Z1VkxXaEVEcE5WcUtXemZGejBTaWZ6THhGOFBoVUtqNVhJNXp2UnVNUDB6dXdJTUFMaWhldlRkUTAwOEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvcGFzdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNStHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhNeklnTnprdU1UVTVNamcwTENBeU1ERTJMekEwTHpFNUxURXpPakV6T2pRd0lDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUyTFRFeExUQXlWREV6T2pJM09qTTNMVEEwT2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UWXRNVEV0TUROVU1UVTZORFk2TWpJdE1EUTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMkxURXhMVEF6VkRFMU9qUTJPakl5TFRBME9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09qVmlZVEl5T1dJeUxUZzJOVGt0TkdVek55MWhNbUU1TFRRNE1qUXhNemd4TVdZd1l6d3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T21Gak5qTTJaV1UyTFdVeFptRXRNVEUzT1MxaU1qZzRMV1psTm1Fek9UUTFOV1UyWWp3dmVHMXdUVTA2Ukc5amRXMWxiblJKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQ1NGJYQXVaR2xrT2pNeFpqQTFZakJsTFdKbVpUY3RORFZpTkMwNFlqZ3hMVFU0T1RjM01qTTBaV1U1WlR3dmVHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBUWlhFK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZZV04wYVc5dVBtTnlaV0YwWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRG96TVdZd05XSXdaUzFpWm1VM0xUUTFZalF0T0dJNE1TMDFPRGszTnpJek5HVmxPV1U4TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVFl0TVRFdE1ESlVNVE02TWpjNk16Y3RNRFE2TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTFMalVnS0UxaFkybHVkRzl6YUNrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFpsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPalZpWVRJeU9XSXlMVGcyTlRrdE5HVXpOeTFoTW1FNUxUUTRNalF4TXpneE1XWXdZend2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbmRvWlc0K01qQXhOaTB4TVMwd00xUXhOVG8wTmpveU1pMHdORG93TUR3dmMzUkZkblE2ZDJobGJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblErUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1R3dmMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tTm9ZVzVuWldRK0x6d3ZjM1JGZG5RNlkyaGhibWRsWkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xsU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZRMjlzYjNKVGNHRmpaVDQyTlRVek5Ud3ZaWGhwWmpwRGIyeHZjbE53WVdObFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTWpBOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qQThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtQRDk0Y0dGamEyVjBJR1Z1WkQwaWR5SS9QaElIWlRZQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUFPWkpSRUZVZU5yY2xMRnR3MEFNUlo4Q0Q2QVIxUDlHM2tBYkpKcEF5UVNCSi9BSVdTR1p3TTRFMWdhNTV0ZlJDTjVBYVZnRUJzNCtCU29Dc3prY1ArK0RSL0t6bXVlWk5lMkJsVzExd3MwMVVGSU5uSUFXU0xhM3R3aXJ5eHBLYW9FNnJvOUFaM3NyNlJzNEFwK0JKZHZua2d6ZmdyQUd6c0JMK0hmQUhuZ0tyQWZHMGkvdjR0RUIrSkwwRyt1QjE4VTF0SDBFcWt4dGx4Tkthb0RuRE53QWc2VEo5bFE2Tmcwd1pMQVBvSXVZUlhNNEFTbmpuLzZOVXVyVmxCTGRmczgwYmJpdjVYQ0tjMXhLV09VV3JLUXVwSmN5YjF1Z3R6MldOaVdGYnJrUlU1YmhYKzFuQUlLOVFKbndyeTBDQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9wZGYucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVRGSlJFRlVlTnBpWUJqc2dCR1pvNm1sK1I1SUNSQ3A5d0lRTzE2L2R2MERzaUFMbWlJQm9BSkdRaVlCTGU0SFVnVkFES0lUa2VXWXlQU1pBNVJPQUJxZVFBMEREWkRZODRHR0t1RHlNbEVBT1ZpQWh1MEhVaUFESDFEaVFwd0E3c0t0YXFvTzAvLy9aK2dCMHFRWU1QLy9md0hWLy84TmdQb3VlTis2L1lFUnljRC9GRHJPRVdqZ0FaUXdGRFl6WjVBT0NtVDQvdlFwbVAvOXlWTUdUaGxwdUR3ckx4L0QvWVVMR0dTQ2dsQk11ajE1TXM1MHlQQjAzWHFHdDZkT2d0bXF1YmtZR3JDSjRVdllZQmNLbVp1QjJaK3VYMmZnMDlURXFoRm04THVUcCtBT0lPaENFTUJsSU5FdXhPY2FFSGl5YmgxR0dHSXRIR2dSeTQ3VG1abjNaLzc5NjBoU09tUm03Z2VtdzRVMi8vNWR3Rlo4Z1Z4NWdJeDhIUWpNamdld2hhRWhDZVVoY3Q0K3dFQXJBQkJnQUY4amJFU0VHbFBYQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9wZW5kaW5ncmVxdWVzdHMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJqa3lPRGd4UVRVNFJVRkRNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UmpreU9EZ3hRVFE0UlVGRE1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tFM016QkZRa1k1T0RSQ1JqRXhSVFpCUXpSQ09EUXlRakZFTlRWRFF6RXhJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa0UzTXpCRlFrWkJPRFJDUmpFeFJUWkJRelJDT0RReVFqRkVOVFZEUXpFeElpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtyeXh2TEFBQUFrWkpSRUZVZU5xVTFFMW9FMEVVd1BIZFRYR3pJZHRETmZHcmdvSWZHTVVhTUlJWUVaSGU0a2NROU9CQnZFVlE4S0FtMG9NR1FUeW9vQjQ4S0FGQkJHTVZvWjVFYVBHeW9nYng0RUVEV2xIOE9LU2d3UmpiSnZVLzVRWEdKVkh6NEVleW01azNPKzlOMW96RllrYWI2TUY1YkVJZE0zQndEZGRiZzJxMW1sRXNGbzFFSXZISHhIYlJoN2s0am9iY1V5dHYxQk4yZXBJNU1ya1hKaVlSd1E4ODFzWit3emFzeGpoK2RrcDREbnN4Sm9PV1l4V2UrTWJXc0I0NXVEaUoxKzBTcnNFTHFaVktQZzgzc0FEN1lNbTIrNlVVRC9CZWFxeVN2L0luRE9JMGJGekdKN3pEVXB6VnhqWXhnUk40aWlqdVNCbSsrcHVpdHZCUUpsM0VNVXhKVGZXWWtUbTJKRHVEWmUwUzZrL3hWdXI1UC9HbFhRMzFNTFY3YXVYNUtFdWpLdEtZUlhndVl3TC9TcWpISlN5UjQ3SVFONldCcG53ZndYUXdHS3pyazZ5L0pBeGpNWDdKd24yU2VGd2EwUjhJQktLbFVpbGVMcGNkUGFFbERmQ0hLdm9ST1d0ajB0bGIySXlrMnJadDIxdnorWHdoblU1N3VWeHVzRjZ2ejY0OGpaVVlsYWEwNHFwODN2WXROSUJEOHYxektCUnlHNDNHUUtGUUdFa21rNE9CU0NUaThjTUIrYTkrUUJ4M081UmhGeTVvMTd2Vlg5WTB6YldPNC9SNG5yZENQZUViSE1RUXJ1QTd0blE0ZzRkOTl5WmFMdy9Mc294cXRicWgxV1gxUWpnbHRWTGJPU29KL0djMDdydG42UXZUSk50L2JFWkZweGpHSHUxNnA1elgyYUNXazViUlhRejdybnZsZUJuTlp0TndYZmRsdHdudjRiNTJ2VTY5UzFXeVNxVXlsVXFsaHJwTnFHcTlYMTVkSDdHZGJVYkQ0ZkN6VENhekk1dk5Qdm90d0FEc3NKam5wY09wblFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcGVwdGlkZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTWhKUkVGVWVOcGlZQmpzZ0JGZFFGTkw4ejZRZWdERUY0RDQ0dlZyMXhlUVlpQUxtbUVPUUVvQmlrSHNBMEJNa29GTUJPUXZrT3BsZEFNZDBQZ2ZLUTVESks4YkFIRS8xTnNmZ0hnak1lR0oxY3RBalFlUXZBc3lQQUNJN1NrTlEzVHZQNlRVd0Eva1JCQWpJUVhBOEJRQVVnblE4UHdBTlhnaHJ2QWtsR3hBNFluc1VnRm9VQ2lRbXc2UkRVSUdEeWcxa0IvTkVBRmdVQ2lRRllaWXdoUVVsZ1ZJUW9YQVlKbEFxZ3Z4NVo0UDVIZ1pHZGpqQzA4V01neGNDSFVWTE1Zdk1Bd3BBQkJnQU1wek1xSnNvcXVqQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9waXZvdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTVZTVVJCVkhqYVl2ei8vejhETlFGQUFERlMyMENBQUlJYnlNL1BEMmF3c0xBdy9QMzdsd0VtenNqSXlNREd4Z2FtZi96NEFkZkl3OFBEOE9YTEZ6RDc2TkdqRERvNk9vd2dOa0FBR3NiWUJJQW9oS0ViMkxyL0hNN2lBSlpXSWdxNWkvQ0xSeEpDY2tNaUl1aHU3QzVtQmxXRi8vaklUTGo3ZWZiTTFJaUFxc0xNOEg0K0FjUUNzeEZvSU1Pdlg3OFllbnA2d0h5ZzRRdzJOallNQnc4ZVpPRGc0R0RnNWVWbGVQLytQUmpMeXNxQzFkYlcxaklBTFdZUUZoYUd1eHdnZ0poZ2pFK2ZQakZ3Y1hFeGZQNzhtY0hCd1lGaDRjS0ZZQm9FZ29PREdSUVZGUm5jM2QwWmtwS1NHSXlOalJuNisvdkJ3UUFDMzc1OWd4c0lFRUJ3RnpJeE1ZR2REUFF1UTNSME5NUFhyMThaV0ZsWndXRnFiMjhQbGdNWkFBeHJoZzhmUHFCRUJORGJjRFpBQU1IREVCUXBvREFDZXZFL01MRC9BMTBNNWdOZERBODdvQ1gvWDd4NDhWOUpTUWxNZzhSQVlYLzQ4R0Y0R0FJRUVOeUZ6TXpNNFBEWnRtMGJ3NTQ5ZThBeG01Q1F3Q0FsSmNYdzl1MWJzTXRBNGFhbHBjVUFOSWhCVFUwTnJCNEVoSVNFNEE0RUNDQjRHSUtTaXFDZ0lBTW5KeWVEaTRzTFEzZDNONE9rcENRRE1FYkJnUTd5dW9xS0N0Z3drT1VnNzRQVWd3QnlFQUFFRU54QWtJWTNiOTZBd3hJVWN5QU5zREFER1FMeXpwVXJWOEN1QWhrSVV2dmd3UU1HZG5aMkJ1VE1BUkJBY0FOQmtTRWlJZ0oyS2NpVnNEQUJBVkZSVWJBQklCb1djZERNQUU1ZXlKRUNFRUJ3QTBHR2dGd0d5ZzN2M3IwRHUvang0OGNNWW1KaVlKZUNMSU9GRnloTVFXS2dsQUNpNzl5NUF6Y1FJSURna1FJeURKUVdaV1Jrd09rUjVGSlFPb1I1Rnhid1Q1OCtoYWM5a0RxUUhDamlZQUFnZ09BdUJOa0VjanBJUTJob0tEaVdqeHc1QWc5TFVOZzlmUGdRcnBhYm14dnNFMUJhaGVWcEVBQUlJSlIwK09yVnEvOUFBK0hwRHBZV1FXa05KZ1lNRWpBTlNxdXdkSGp1M0RsNE9nUUlJQlprZ3kwc0xNQ0JEd28va0ZkQkxvRkZETWpMSURZb1Q0TmNCRk1EQ2x0UW1NSUFRQURCRFR4dzRBRFlXNkEwQnpJVVZGaUFrZ1FvUnYvOSt3ZE8xS0IwQjlJTUNnNVE4Z0xKZy9JK3FQQ0FBWUFBb25vQkN4QkFWRGNRSU1BQVBQdm0wRU9NbFk0QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcGxhc21pZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBWEZKUkVGVWVOcXNWTUZSd3pBUU5LbkFxUUR6REM5VEFhWUM0Z3BpS2tnNklGU0FYWUZJQlRZVnlCM2dWL0pNU25BSHlSNnNaZzVIWU1GRU16ZXhjNmYxcm01UFVYVGhkVFZXTUx1ZHhmaEorWHJZYlhlSFB3TVNwRUFzRVFtaVpTb1RVTVFHVVFLOEh3VUVtTENwdWJIQ3BtYVFGOUJuc3M2UmIzOEVKSmhGdktDd3hIdENwdmNzNllRZGNoMXk4cjlCUEdqUXlZQ2dJU3NCVytONWo3aW14SW8xRmptcEUrWlBvb1pIZENhMVFGZytyeEVmWkh4MnZzelZmSy81OGUrU3BVaWtVcFl3dXhOcHZ6Uk4xMXZVVG9kRlI4WE9CTmlwVUN6M1RzMUVkYzZ4a1FhOEIzaTRwWTBpT2lMMk5jV3RQZ0N3ZHlCNmZRS3k3YW15eG1NQVlLWU1uemdTdnFiME5QYU5ieEpVdmVYUnRMb3BXcko0YlVtMnd0SjQvZlVGWnNqcWpWUFQrR3pqckZDeHNPWW1ZZDBJVzlUTTFYem5QS1pYcldaczlHUzhGcXFiSFdXV2lEa25LOWZ6L3AvTElhWE1iUFJ5R01oZmtWMnNQT3FjVUFWZlh4N3doR2NXZE1GZWZKMEVHQUQxTDZmWFN5d0dYd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9wbGF0ZXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVZKSlJFRlVlTnJzVXpGV3drQVFEV2hoUjVxOHA5MWFRa000Z1hJRE9BSG1CRHhPQURsQjRBVEV5dEo0QWtKbGFXaWtoUnVrcGNJL3ZqKzhJZEtad3NKOTcrZHZkdjdPN016c2V0Ny8rTzFveUtmZGFjOXE4cGMyT1puVzRHd0V1R3V6MEFLZWdDR3dBbnJrR0hpZ1pzM2dmZUREYUJiQVRnVFc0UnRaRENrNUF3cWpLYmhXVXFPY2E5Q21FWXVENSszblZybGtaSFdpemhkRzg4MDI2SlY4Z2lDUXBqaGdqdmtlL0FyZU1KMERNQVlHd0Izd0FwdWt2aUsvQXpmQXJaVEVwand4SnlvUlBVUDNJNTRzTjFuc3FJbklRL0t5bXJJUGhKeUhjT1p6elpGOTFiRWNhdlBNdnJPbUROakJvc0pkYm41a3h4TUVFNGNKc3hyYkdwNU9pS2hTeDN0d1RzNTRMU1pNcjRlMU9UazEvMzNhejE3S2tiVVkwY0dTb29SZERIbFAxenhSUkUzTVBYdGVtL2hTRFczZEhORXk5WEtWdXFyOXh3bmpHcDVlcFBld1VjTmIzcGpyOVlmSGx3QURBT3o1ZDFSRTltWUNBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3BsYXl0dXRvcmlhbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UmpreU9EZ3hRVGs0UlVGRE1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSamt5T0RneFFUZzRSVUZETVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamhrWlRBNVpXSm1MVFV6TldFdE5ESmxOaTA0WlRNd0xUQTBZekUwWkRnME56STVZeUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBFT1RSQk9EVXhORGRHTkVZeE1VVTJRVGN5TVRnelFrVkNOekpDTkVGQ1JDSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QdmVld3ZBQUFBRXVTVVJCVkhqYVl2ei8vejhETlFITDJiTm5UWUUwSHhBems2cVprWkdSNGNlUEh3ei8vdjBEYzluWjJiOHdLaWdvZ0p4NEJvaGZnQVJKTVJCa2tKYVdGZ012THkrSSsvL0dqUnMyakVBQmtJRjJRSHlZVkJkKysvYU5ZZE9tVFF5NnVycGdma0pDd2s0bXFCd251V0VHOGpLU2k1bVpHS2dNQ0Jub0I4VHBRTXhLTFFPMWdIZ0dFQjhCNGxBaTFCTlU4Qk5LbXdIeEtpQStDTVQrK0pJWXFXRm9BOFFiZ0hnVE5PMWlKbXdTRGZ3RnhLdWh3ZkNWSEFOaFB2Z0x4R3VCdUFlSVQrUE5la1NFNFM0Z2JnVGlZMFRsWlFMeUM0RjRDalhUNFdkeUUvWWZjbk1HQndjSHdqQW1wdjhzb0F3T0JISkFMRTlxTXZyNTh5ZkRzV1BIR042OWV3Zk95cytmUHhkaWpJK1Azd25rdkFjVkhxUWFDQ3NQLy83OUN6WVE2Rm94Um1xWDJGUXZiUUFDREFBemdWaFhNSktqQUFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcG9seW1lci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBUEZKUkVGVWVOcGlZQmdGbEFKR1pJNm1sbVlBa0RMQW9tN0Q5V3ZYTHhDU0J6R1kwQ1RXWTFHc0Q4VDFSTW9qWEFpMEhXVHplYUJONks1MkFGTHpnWGdoU0NNQitRdklMZ3lnUWhBS0lMdXdBZXIwQTJpS0ZFQmlRSmNsQXRXOEI3a0NsenlJdzRJbXVRRHFkSFFBTThRUWFnQXVlUXdEY1FFRG9Pdnd5c044eG9KbWl6MXlqSkVBSE5DVElFVUE2UHIvR0Y0R0NvTENKZ0diQm1DQU4rQ1RSd2JJeVNZQjZtVjBFQTlOYXpqbGtUa3NRTVVGUU5vZkduc0xRYTVCOHc3SWtINVFHc01qTDREczVRWFFDSW5INDVPRjBDeUdDeVJpeTNvSjBDeUVEajVBMDU4RFBubWd5eDhNamZJUUlNQUFkT1pLbjZIbzcvSUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3ByZXZpb3VzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORE5FTnpVelFUUTRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlJqa3lPRGd4UVVNNFJVRkRNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qUmhZalF4TkRrd0xUUXdNamN0TkRZMllTMDVZVFkyTFRFMlltVTRaR1ZtWkdReU1TSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEZNVUk0TURORE9UZEdOVUl4TVVVMlFUY3lNVGd6UWtWQ056SkNORUZDUkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BwbmdvK0FBQUFIcFNVUkJWSGphekpSTFNFSkJGSVpuN3JVU1Mzb2hCTGtJaEJKRmNCTkVteUNJSHVzZW0xQU1nb0lXZ2hWSUQ0TWdvb2dnYUI5RVJMU1RvRzF1aW9SSUtJaldQWGJLTGRJMDlkNytpYmwyRFRNakZ4MzRFR2VPdjNQK2MyYW9vaWlrbkNHUU1rZlpCYW5iN1M0MXR3NzRRRDJZWWd1cFZJb0VBZ0ZpdFZwelNicFFLRlNLMkRnWUE4endyTHFZU0NTSTErdk5TOVFaRElaaVFqMWdEcnlDQ1ZBREZ2SThFL0pkMDMwalpBTkxvQVdzZzBPKzNnZGkya1M5WGw5VXNBbk1nRzZ3RDF3Z3FkbXZCbDFnaTFrSXNiamY3MzlCbFUvSlpETHU4L2t1cU0zR0RrT3F1TkdqNElTZjZySEF5ZGtmOWdQbUU1VmxtVm9zRmdwQlF6YWJiWTVHb3gxTTBJUE5RVjdLR3JncXRlMnNLY0Zna0RnY2pvL3ZMcGRybFpVOHkwc1pBTmQvR21wQmtIUzhBU05nRjV5QkZYRC96VzlxV1I5NE5Zb29pbklrRXBIaDM4ZG1MQlpyVnoxazBjQWIwZ3NPd0NaNCt5STRDYWJCSFdzb3BaUklrcVNrMCtrTVBLd3ltODBQV2tFMTJzQXlNUFBUSG1uMkZrRWoyQUVWdUNrQ2JvcUlteUpDa0pwTXB2TkNjM2dMaG5rMzU0R0hmOTZBU203TEpVdUVDSEU2bmJtbS9QUTRIUE9aT3dWN2ZOQmJnYVJOVXYzTERUWnJmWkhJZ0EwKzVNeUdJYkN0SFJ2TVl2NXJFdzZIZnpNWm5YeTBudFdTN1hZN01ScU5uNEwvL3NWK0YyQUFXdUtZWjhra0daY0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3ByaW50YmFyY29kZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRlpTVVJCVkhqYVl2ei8vejhETXREUzFsSUFVZ29NeElFUDE2NWV1NEFzQUJCQUxGZ1VKY2pJeUNTcktLdTh4bWZTbTdkdk9LOWN1ZklDeUhSRUZnY0lJQWFRQzVHeHBwWm13NWF0Vy9iOUp3RGV2WHQzRHFoMlA3cCtnQUJpWXFBeUFBZ2dxaHNJRUVCVU54QWdnRmlBc1NvQXBBMlF4T1R2M3IzTDh2NzkrL1A0Tk42OGVmTWprQklBNm5kQUVyNEFFRUNNd0lBRkNld24xMFc4dkx3TWZIeDhERStmUGdWeEhRRUNDTzVsWUhwQ29Za1ZhMnR0WTFpM2RoMWNIaUNBV0NnTnM2blRwakpzMkxnQnpnY0lJSW9OdkhIakJoakRBRUFBVVQyV0FRS0k2Z1lDQkJERnNZd0dIQUVDQ0JTR0Y5QXllSHhuUnllL21abVpDRDZkcDA2ZGVsTmVVYTRJWkJZaXAwT0FBTUphT0x4NDhlSVFvY0lCcEFaYjRRQVFRRlFQUTRBQXdwcHM2aHZxUHhvWkdxM0RwL0hjK1hOc1FJb0hYUndnZ0xBWmVPRFFvVU1NSUV3RWVJQXVBQkJBak9oVkFLVUFJTUFBSjduWjAyVW5tTGtBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9wcmludGVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNcEpSRUZVZU5waVpFQURtbHFhQ2tCS2dZRTQ4T0g2dGVzWGtBVllzQ2hLQU9KNElINUF3REFCa0lGQTdFaklRQkJZQ0xTNUFaOXBRSjg0QUtsNmRIRW1CaXFEd1c4Z0l6QXNRSUZyZ0NRV0R3dEhBbm9Ob0dvTGtjUXVzRUFsOXVPSWJZS0FsNWQzUHg4Zkg4UFRwMDlCWEVlS3Zkelcyc2F3YnUwNmdzbUdhREIxMmxTR0RSczNVTS9BR3pkdWdQRUlUb2VnTUx5QWxzRkJhZXNpVkp6a2RJZ3QwemRBTXo0RG9jSUJpUGZUeGN2WVFEd1JycFFuTmxJT0FQRkRJaHp6a0lqOFRqa0FDREFBd3lVdk5Fdm03NzBBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9wcm9kdWN0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNVGhHUTBZNU9EZzRSa015TVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1UaEdRMFk1T0RjNFJrTXlNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWXlRalV5TlRORE9EWkNSREV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pZeVFqVXlOVE5FT0RaQ1JERXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgraTh1NFVBQUFBaHRKUkVGVWVOcWsxRDlJRzFFY0IvQjNTYzZMbHBoQlJDdUlRVHJJQ2FWVXM0aUREdElpQ2lJRXNnVHNZdWtvQ2c0NnRBU0NpSUpFaElDekVpSXVva2dIaHd3Qmt5R2dEaTBkcWhKb2JSM1VWbVB1akhmOVB2aWxuT0hsRC9xREQ5eDc3KzdIZSsvMzNrbXFxakpCMUVNT2RGWW1zdGtzaThWaXpPdjEvdTl6Z0FSbTBidC9CWDFWaGEzRWg5YSs1ekFBTDZwSjZDalJMNUVHV0laYmVwNkdvMG96WkNWbWFFQTdYRU1BRGtDdFpzbmw0aGNWaUVjckhEODE0U0JjMFBNWDhGZjZwdHhnSi9oZ2x0b0xOTXUzMUZhZ3BsSkN2dkc5OEJLR1lBdCswcGdHbTlBRFRiQU5HOUJZcnNwejRLYitEcGdwR3I4Q0dacmhqR2JJazUrTEV2SVgyMkFZK21HWEtpMWEwVDM4NGN1V1pmbGU5QUxmanhVNG9ldjJIWDVRZjNFWU5CRVhQd0daVE1ZUUpaemtWeFBlMHhuOEJxdFFLemlmZGhpSHozYTcvVEFTaVl6bGNya0hDZmtldklaUFZkemZHM2hIQlZwVEZHVStuVTYvQ2dhREk5YUVMWFMxTGdUWHJ6aHFxQUFmcWEwSEFvR0phRFE2R1kvSDJ3dEY0YWUvRGp5MGg5YmwzUW1Lc2tmVlpwcW1NWi9QOXhWTFh2SDcvVXZKWkhLVUo3eUVIVmlFRC9EYmNnSzZZZDJTa04vbDAwSWpuODh6bDh2Rnd1RndWTmQxTlJRS1RVa2VqNmN3UGdGdjZQNDZxTUlLYllkR3ozMndUOHVXRE1OZy9BZnRkcnROelBaWklwSG9sRktwbEhWSkxYU2dlY1hUZE42NkxEL2lXOXBIdWZBQnJ6QlBiTFBaVEtmVGVTNlo1cU4rekNYam53QURBUGRNbUhOazVta0FBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3Byb2dyZXNzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFYbEpSRUZVZU5xMFZEdFN3ekFRZFV3YUtrTGhHcVVNRGJsQndnMXlCSEtDa0JNa1BvR1RpakxjSU9sUzJqNEJvaUVscGlhRlN6cDRPL004czZPeFpBclF6STQ4OHRQYmo5NXVGUDN4Nm5VQlJyZWpxWE5VbmQ1T1ZRdk95SG0vZyt3UlcrWVN3b1lLTThDMmg1V3dkYjhqUUFFWEJNdTZnczBVMlJqYkRpWjdMV2RkaEVKUUlwVzFFM1ZEbHROcFJOSW9EcVFyUUttZmJhc1hJOW8ya1dFWnVSTjd5TVRiQzhFdTRZSC9wb3hjTUV2WVJraDdIdTl5SWNXRlRlRGw5NHh3QWR4MTZHVnpXUFlMT2MxZzM3Q2RQbzlib3BOMDB5NUNSSFZndXEvNjNIMWxTYVVBdUhhY3JHQWZyR2VOL3dYckxBOTNGeUkwMnFNU2JVWENCVi9US0pHYkVLR3NHMFVtT3JPSWFPNVJnbVEwOGRhUWttaDZOMmZmemowMXRFeTNEQTRIZUg1WFlyM1g5ZlJvZGFpSFJWdktsdjBhSWh1d2gxTjM4bHc0d0l3cGkyeWVraVM1aE5uejUvbExZUjZ3SGFtR3BYY2VpbERwVlNLejdJYVY2dWVhM3hVamV3NE8yRVlLYmdwTWJ4d2Fydis2ZmdRWUFIbmFtRlJEOVg1Y0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvcHJvamVjdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TjBFM1FrTTBOVGs0UlVGRU1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOMEUzUWtNME5UZzRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalk0T1dSbFpUYzFMVEJtWXpNdE5HUXlaaTFpWlRRNExUQTJObVUxWlRjMU9XWTBNeUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG96TWprNU1rVkJNemRHTkRreE1VVTJRVGN5TVRnelFrVkNOekpDTkVGQ1JDSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9Qb0NDU1prQUFBSHNTVVJCVkhqYXpOUXhTQnRSR0Fmdzk1Skx6UkZEb1NBRUhaTFMya0lrSUExS0NrNXVSVkFMTlVNbGdVTDM0bUFYNnlBMlFUSkoxa0NXMHExVFFDV0RXeGNUeUtCVFRDbDBzR0lnZ1p4Nlh0RmMvTC95dlhBRUx3azJReC84eUYyNCs5OTczMzMzZUt2VllvTWNEamJnb1JTTFJYbjhESjRBdDdsV0xLVUNQK1FmeldhVGhjTmg1bks1MmhmeFFDQWdqM2RoSE01c0FuMXdCSy9wM0drWWhpZVJTTFJpc2RpNURPWEJZTkFhdUFFSE5vR1Q4QW5ld0N5c2NjNzFXcTNHUTZHUWxzbGszdnY5ZmwzcFdOSURxdXN5bGFBcFZ3ZlA0UVdzdzF0WXhRd1AwK2swejJheks5Rm85RXNxbGZwb25lRU9iTUlDM1p3WHk3STg4SnA0NFJTKzZick84dms4cTlmcmFqS1ovS0JwMml2ckRHOWdqTUxlUWFPZnQ5cG9ORmdrRXJuSzVYSmI4WGpjMDlrMm9ySVgvOUExbXVPTzF1QmRXcWRuWDFzRFJlSC9VSjB1NzkzWU1BTWVlQXd2cWJubmJVS1A0V2V2d0QzcXdRS01RSmtDZVVjcG5zSnZXT3IxTGRkaENFeGFycmpaZ0NzTGc4SWkxQVZkQTdkaEFtcTBURHRsQ3A3cjZNLzJjRHFkMXlMd0t6MTlpbWJxdHZFSTlpRU9EMldJMiszKysxdXBWRmkxV2czTHplRXpMTUpKSDl2ZE5Qd1NzelpOazRrdnpldjE4bEtwTkt5cWFva1hDdUpkc0ZFSTlkRi9zcjZxM0V2eFBUTVJyQ2lLNmZQNXZ2UC9mc2UrRldBQTJTYWNmQVQ2ZWtrQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcHJvamVjdGRldGFpbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TURNM00wTTVORVk0UmtNMk1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNRE0zTTBNNU5FVTRSa00yTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0ZGUlRsRlFqY3hPRFpDUXpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rRkZSVGxGUWpjeU9EWkNRekV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4KzVmeFZ4QUFBQTNOSlJFRlVlTnFNbEYxSWsxRVl4MStuK3hSdFppMEpGU1VVa2tSeWlyQ3h5QXRuU1RnU0RSS2phVHF4SldSaUdXTmRCS0pnZ2twMFVSZk9oSUpWSTdkUVF5b2xRa01odHFaSWFuTmd1QXRkMFp6c28ybi9NODZXNmJRTy9IWjR6ODc1bitjNXowZlUxdFlXczk5UUtwWE0rUGc0SXhBSXlHY2NVSUJUd09OMnUwYzdPenRORlJVVjRmMHh6UDhQT2JnTFRnSU9XZUR4ZURYdDdlM3ZrcEtTTkRLWnpFTFdXUDlTWWJHQ1c4NERFeWdJaVpFUkhSMGR1NzYrZms2bFVyMFpHeHZMSTJ0UmtWenU2T2hJTnB2TjEyTmlZZzdQemMzNWNhZ013Z2w3WGVyMys0bjQ5TkRRa0N5aXl4Q1RtVXlteTJscGFWYWhVSmdEd1lUOXZHQ3oyWXpMNWNycjYrc3IzTXZsMDFWVlZWZDZlbm9LZlQ3ZkJQVWlBT3gwZGxJQ3NPNGI1aTFZeUN3dkx4ZEhGSVJBbkZxdGRxV2twREFPaCtNbzJZenhHZVNDV2RBSTdvQlBsWldWRXN3T2Fta1NhK2RidExTMEtDWW1Kc1NibTV0T3I5ZExsdDMwNzB6d0ZLU0QyNkFCSEorYW10SmhUcVRuZjRUZjBPUHhNTEJLT3p3OExJV3JsUmtaR1diaWFtNXU3clRWYXBWeXVWd0JUUjB5VG9UT3pjL1BGNUkzREFRQ1RISnk4dHV3b0VhalVTNHVMbVpOVGs2V3BxYW0ra0xyaVltSkQ3RzVucVRkWGdHQk4weDhmTHl0dXJwNk5PaXl6V1lURFE0T3F1UnkrUk44K3JZZmdOZ3NkVEhpSUdKcmEycytoVUxSa0o2ZS9qMG9pSEJMNFA5Qm5VNTNvNlNrcEsrNXVma0NYR0Z2Uyt4dUdvalZuV0t3Y0ttbXBxWmNxOVcrRGxjS3dpM0JRWjVVS3RYREloZmNMaTh1TGphMXRyYldiV3hzeE5JbzN3ZWtHdFRnR2ZpQ2QxZTJ0Ylhsb3hCTUtNTS90WXhiaEpoK0libzNrYUNjc3JLeVN4S0paTFdycTZ2UmJyZGY1UFA1UmdTb24rYmhBekJBNThkSXJiOUtqVVhEdlFyTEFpS1I2SVZZTEI3Q2QzUlJVWkZsWkdTa0xqczcreG9zT1ladEJuQUxrS281QkE2UWNpYXB0a3NRNFg2UFEyemM1dTN0N2ExRC9lWXNMQ3l3T1J3T2lmSXM3aUx2cHdMeDREbW9KUzlGdk5yVlRNZ1B3ajBKNjViUU1jNWFMSll6UnFQeFhsWldscDlHT1p4eTRCRnBLS0FVOUVmc1R1U0hoQnRoNzRiNVhFUUxLYW1wUjJDRVJJemtHVzFaQ3ZwdWZQQVNmSXdrR0c1ZnBGS2FtcHBxRFFiRFZVUVZPdXl2K2ZuNXpwV1ZGY2JwZE1ZaUM5SkltWU1QTkMrOXlBQkdyOWN6MkxkYk1GVEw2R2tGQXdNRHlwbVptVXgwbWlNUTNzUUZQL0gzSW5oRlV5WTRJZ24rRm1BQXduZVE2MGE4RkNBQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcHJvamVjdGRldGFpbDIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk9USTJRVEEyUXprNE5rTkZNVEZGTmpnME1qZEJNVFl5UVRoRU1qYzVOVFVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2T1RJMlFUQTJRemc0TmtORk1URkZOamcwTWpkQk1UWXlRVGhFTWpjNU5UVWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tRd1JrRkRRemsyTjBZME9URXhSVFpCTnpJeE9ETkNSVUkzTWtJMFFVSkVJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa1F3UmtGRFF6azNOMFkwT1RFeFJUWkJOekl4T0ROQ1JVSTNNa0kwUVVKRUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtnKytLNlFBQUFxRkpSRUZVZU5ya2xGMUlVMkVZeDkvek1jL2NtV3VyaTBHNEQrbXFsT2FVQ3FHYmVTZEVYZ1RpWlVoQmRKWFNYYmZMZFp1cmJ2clFEQlRzemxWRFJsRFFsdEFrUkFPOXNDRFk1eEdtV3p0bloxK24vMnRuT2xQc3hydGUrRzJIOXp6UGY4LzdQUDkzaktacDVEZ1hTNDU1SGJzZ1R6OGtTZUpmejgzZExKVktKb1BCb0xXMHRCQ3kxd29EV0FWdkR4T28xZXZraE5WS2hvZUhDY2R4ZndRVGlZUXRORC9mT1RvMkZseUt4NVdweWNtNnNiV1Z2cUtxVGpDZ0M0NkFYbjAvQ21ZcmxRcHh1ZDFrYUdob1Q1QSttTTFteWRmZnYvNDVGcnZTWnJHNGpVYWpwaWZhd0huZ3A2RWdxQmQzQzV5RzRFTlJGS3Y3amt3WEJKUlgwOU9ENFhENEVwN2Y2Y2wwMWNGN0dnTGk0SmUrZnhmY0J0ZkJzd09DTkxGWUxKN3plcjN6eTh2TGl5eDc1THc0L2VneTZHTVlaaHE5TCsrYk12VWpSQ3I0RnY0eHlMUGdBMWdFVDNtZUgwa21rN0habVpuZVhVSDBvQ0FJZ29ycHFoQ1ZqeEE3QlVMZ2NtTUQxWkZhdGRyN2FHSWl0TDYyNXVTNlBaNkJTQ1J5ZFN1WHU3Z3BTYTVVS3RVdXkvSVpCRjVBUEtWUHowMkFlMkR3Z0puUm5wS2l0S1hTYVpFN2FiTTlnQWhyRnNVZkRNdHVsaXVWR3NSdENMSWcxZ3pjZWtXMHNnQ2RMUGdFYUd0V0FQWFhFbWdYakVZejYzUTRQa3JaYkFjR3djV2lVZUg3eGdhSHZqUXN3NEFzRFFiZFRaTi9BcjdTSG9KdjRERlFZVDhEczdxeVl2WDcvUzk1amt0aVVybnQ3VzBHRlpPbUtUZk1uUUV1Y08ydzVsS0R1enM2WW14blY5ZVd3K0Y0azVXa1lyNVFVQlZGVWRFL2xmNWlFeitCWGZma29VdVJaZUx4ZUo0ejFDNlpUSWJrODNrZVFreGtZWUVFZzBGaU1wbWE0eHN0d0NVbjQrQk84OHR5dVV4OFB0L1UvVURneG82eDdYWTdaZWY2cEhGY2IwL1AzNEs3aFlCUjhFVy9JZFphclZhd1dDd3o0NEhBQytSb3pQLzNCL3RiZ0FFQWdFNzdNdXFlWCswQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcHJvamVjdGRldGFpbHMyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORE5FTnpVelFUZzRSVUZFTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5ETkVOelV6UVRjNFJVRkVNVEZGTmpsRFJUaEROa0ZET1RNeFFqRTRNRUlpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qTTJPRFJoTm1JM0xUazJOelV0TkRrME9DMDRabVppTFRrME1USm1NR1JoWlRJNE1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEVNRVpCUTBNNU16ZEdORGt4TVVVMlFUY3lNVGd6UWtWQ056SkNORUZDUkNJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1B0VzZidk1BQUFJeVNVUkJWSGphek5RL2FCTnhGQWZ3MzExeU1mOVE2cldsV0FVSEEybWdEcEhFT0dTdFZFdWhnNnVCbm1Da1l3bnRGanQwc0tCMktRa1pwQ3AwYVFtQ21Da3E2VklJbEFweFZXa3hnbkE2UkpzL1RYUHgrK1NsbnVHUVVqTDRndzkzNU83MzN2dTlYKzRudGR0dDBjc2hpeDZQbmdlVVlyRlk1LzRCWElGNjF6c3VlQU9MM1pNYmpZWklKcFBDNy9jZi9XWXZGQXAwZGNNNWVBVGZvV1dhTnd3VGZIOFRidkg5WnJWYWZaSklKUDVLWW5lNzNaMmw2NUNEeTNBTkRBN2NEejVZZ0ZGWTRXZlRWRVM1WEY0S0JvTUhWajJrcFY2SGVhakFUNmpCTGl6REI1aUYxL0FXTkp2TjVraW4wL1AxK3A4dTJVMEJLVXNFTmlCN2pQNWZsR1Y1cTFLcDNDbVZTbzVRS0hSZ3RjdUhYVW1zeGxsNENqdUtvdVIwWFovU05LMlF6V2F2VXFXZGdQdTg1SnJGTHB2SEtWaUgyN3lSQWxWS3pXWXpFby9IWCtYeitSRXBFQWhNY3VQSHVkbGZZWXNybGZqNkhvcHdGOUpXbVF6REVGNnZOMGNCMjV6MUl5amNCZ2UvUjdzOHlNdWt2OHdMdU1FYlJFVjhnd0V1NGtLcjFaSnA4aXBjZ2pPZ1FoOTQyR240UVM5RGlCUFNXSUp0ZUV6WGNEajhFTmN2MkhXRktxVHNhNXlOTXRrc05vb1M3dkZYbzNHZktYaVRWOU1BSnlxc3l2eGx2T1FITXZmTmpDWitoaEU0ejBtY25OakpjMXpZR01uajhUeWpDZ1UvSFBySFlXRndwUlJnRHU2Wkh5S1l3SEozTXBuTW1CM2ZZNmY1NVdNZUtEUHdDZTdUWHdmTEZLanNlU3FWbW8xR283cFVMQlpQZWxMUjBsUUVyS21xK3M3bjh4MytQcjcrK3hQN2x3QURBSDJpcWpld3ZYT2JBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3Byb2plY3Rwcm9ncmVzczIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVRsSlJFRlVlTnJzVk1GTncwQVFQRWN1SUhUZ1BNTXI2UUFxSUZRUXFBRG9BQ3FJcUNCSkJhU0RtQTZjRC9sZUI1Z0tZQWJOU2V2VkpRamlKeXVOMXI3enp1N2U3RG1FZi91TGpjL0hqOENDejZWWjNCNkpXZS9mOXFzRFpFdTRHNkR1RU1JdWdNdE16QnlvRURpQmYrRXowQUszd0ozaWFOd1BoY24wQ1hjR01PUFFFRmF1VXJiSGl0Z2lxLzRRTVdOR3Bhdm1YdjdwUU91Ti9BYUlTcDYrWC9tV2srMVFSWDFNQk95ejVScVZSclc4MFZvWTlDQnlBN0tZWHZvZ1hOdVhRZ2M4VitrcFU4d0V2bW85OGtnUVJ4SGVPUm4yaUVxcE9FeHpsTEZLSU9HVkdhR3NEVGdHYmpSeVpOOGk0TnRyWUFwdzNLWkc5V0FycEQwcmUydjJVaFcxT2xoS1ZaK3dzMVpvcUN0WDVVTCs0UWRCb2xXNGMxUGMzWnpvc052ZlNsNzBTZWIvTmpPNDJTbGtmckJia1RXblRQbVhBQU1BdDVKdDgwTFVRMW9BQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9wcm9qZWN0cy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG94T0VWRlFqTkdNamN6T0RNeE1VVTJRVFk0TURrNU5EQTNRelk1TnpRM055SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3hPRVpEUmprNFF6aEdRekl4TVVVMlFqRkZOVGd3UVVZMk1UQTNRamd5UmlJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveE9FWkRSams0UWpoR1F6SXhNVVUyUWpGRk5UZ3dRVVkyTVRBM1FqZ3lSaUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nTWpBeE5TNDFJQ2hOWVdOcGJuUnZjMmdwSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5tUXdNR05oWVRZdE1EUXhaQzAwWWpsaExXRmxaVEl0T0dSbE0yWXlNRFE1WmpjeUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRTRSVVZDTTBZeU56TTRNekV4UlRaQk5qZ3dPVGswTURkRE5qazNORGMzSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K1lkOHVjUUFBQXpSSlJFRlVlTnFNVkYxSVUyRVlQc2RObUJOLzJveElvYTJFTnB1N1VKSEEzU2xMQ0tGd0VLSnRvRmtnT2h4YStMTXhORVN6YVl4QWtpSkJhUTduTG1vWDNjekVrT2hLaUhKemJFUUxtelJqZ2VtY09yZjFmR090dVR6U0J3K0hjOTd2ZTg3enZ1L3p2WFFzRnFPWVZtdHI2L1RDd29JcU96czdQWFFOc08zdTdsSVdpNFdxckt4TUJ0aE1aTnZiMjFRZ0VNaGlzVmd6ZVBVQkxPQVF1QXljWmpySFNPaDBPdk5YVmxhQ09UazV0L0FhVFFuSmdOdkE4K1BPWlRBUmNqZ2NQaDUwSkJLSnBvWENRQmJUT1ViQ3RiVzFZb2xFd3F1b3FLRDI5L2RUUXlSdC9uOFRoc05oU3ExV2R3d05EZlhVMXRiTzVlWGxVVkNadXNXVndCeHdJVE16azVsd2IyK1BWcWxVQnIvZlgyNjFXbTlvTkJvVDZXVGFJaDg2QURPcDQvcjZlamtqb1U2bmEyZXoyZmttazZsRkxCWUhxSlBYUzlSWjE5M2QvZERyOWZMK0lWeGFXaEpBMWRXbXBxYWU5RFNZRml6MWpzZmp2Um9lSHI2TDdQNFN1dDN1akxhMk5pWFVlVG83TzJlN3Vyb0dYQzVYY1h4REJtUGY0cldGd3FubDVXV0pYcTh2U1JKdWJXMkpnOEVnY2Y5Wi9HMEs3KzdtNXVaUmhVTHhhSFYxOVJKU081YVFxSkpLcGNHcXFpcWZ4K081bHlTRWlpTElQNFRDbnloeXdjYkdSazFwYWFsVktCUitRTmRIc09VSlVNNmtFbmlQTW9sU2EwaVQyd0RDWDJOalk0M1ljQVpFMThmSHgyZkt5c29VVVBJR2NTMHdsYmdwNlN1VUZKZjRFQ1R1QjFFUjZ2ZU16K2QvaGFITnFPTXBtcWFKa2EyQUl2RlVBN1BBbGNTTklzMjVTSzUva2pBYWpUcWh3Z3ZzaEVLaFUyYXp1ZDF1dHhmMzlmWFZwTlh2TmRBQVBBVWFRZlJpY25KU3VybTVXWUtNNXVLcGt2RkZKc3Y4L0x4OGNIRHdKcGZMWlU5TVRPZ0ZBc0VYYkdJWkRJYnc0dUlpaGUvSGxkQ0tCbjVHdlhsR28vRU92QnVMSzhSRW9aUks1VnVSU0hRZ2s4bCthTFhhK3o2ZnJ3QWJ3aWZNU3czZ1I1bk93WElXUW5iRTJPalNRVzl2NzZqRDRSQldWMWY3K3Z2N0h3TU5VTTlEYXFsRVpKb2FBUkdHQnFlK3Z0NkJPMi8vRTZUVEZhQjJVcGgwQUVUZllLZXMzTnpjQXd4YWRzTGdaSFNSOGYwZE9JOTcvdEZtc3oyQUYyT00wMFl1bDMrYW5wNXVxYXVyOHhVV0ZrYlFNQzUrU3ViWERrbUVXSTlVS2VITkVUVHlpS0xmQWd3QS9SSm1tQjRPUlp3QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcHJvcGVydGllcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSnRTVVJCVkhqYVl2ei8vejhETlFGQUFERlMyMENBQUtLNmdRQUJCRGVRa1pFUkxnZ1UrNzlzMlRJR05qWTJCalUxTlliYnQyOHp2SDc5R2l6My9mdDNNUDM4K1hNR0t5c3JNUHY5Ky9jTWlZbUpZQU1BQW9nRnF5MUFzRzNidHYvS3lzb01QVDA5REsydHJYQzVuejkvTXZ6NDhZUGh5Wk1uREVBMURKS1NrZ3c2T2pwd2VZQUFZc0xsZEQwOVBZYmUzbDZHdHJZMmhvMGJONklZQnNKY1hGd01mbjUrREx5OHZHRERZUUFnZ09BdW5EMTdOand3Yld4c0dQYnYzODlRVTFQRE1HZk9ISWFVbEJTR3NMQXdobG16Wm9FTi9mYnRHOFB2Mzc4WlBuMzZ4UEQyN1ZzVWh3QUVFQk5TdURHb3E2c3pKQ1VsTVp3NWM0YkIzdDZlb2FXbGhjSE56WTJocUtpSVlkV3FWUXlabVprTTkrL2ZaN2g2OVNyRHJWdTN3QzUvOE9BQmlvRUFBWVFTaGhvYUdneWd5REF3TUdCb2JtNEcwek5tekdCSVMwdGpTRTFOWlpnMGFSS0RsNWNYWEwydHJTMEROemMzdzhlUEgrRmlBQUVFZGhrSW56cDFDaFM1L3g4L2Z2eS90TFQwUHpCY3dQeVRKMC8rQnhyMmYvUG16ZjhWRkJUK3g4YkcvcDgyYlJvOGVLWk1tZkkvS2lycVA4d2NnQURDTVBEdjM3OWdEQU1nOXVyVnEvOERYZm4vK3ZYci80R3UrUStNREl6RUN6TUhJSUJZOENWU29HRmdSZDdlM3VDd2hLVlpmSmtCSUlBd0RBU2xMWkFHWDE5Zk1Cc3BiWUxGSFIwZFVUSUJPZ0FJSUF3RFlZRU9jcDJucHljNHpmMzc5dzhzeHNyS0NqY1lGd0FJSUF3RHQyN2RDamQ0eDQ0ZEdKcEI0dmhjQ0JCQThNQzhjT0VDT0JLQXJnRkh4SjgvZitBWW1IL0JrUUhEK0NJRklJRGdoUU1vcWR5NWN3ZEZBY3g3NkM0Q0JjR21UWnNZMFEwRUFZQUFvbnJ4QlJCQVZEY1FJSUNvYmlCQWdBRUF6MmgrWjNleVF4Z0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3Byb3RlaW4ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWlwSlJFRlVlTnJzVkQxVEdsRVV2Y21FaG5GM3FMTnh4aGtvTUpVTmRoaVNMZERHZ0tNbGZyVVdhbUZtVEtQNUNSYW1qWkZtWTVoaFUxQWlOalJza1lVaVN5Y0ZiTU9nek80UHdIdGVlSnNGMmxTWjNPcnVtWHZQUGZlODk1Ym9mL3o3OFd6eDllSnVOcHZkd1VlejJiUnJ0N1ZqeHM2WFU4dG53SnkyUTc3dnYrVjBtTXZsZm1xYVJsYkRvb2JWQUdZbkVvbHlQQjZueDRkSFlGOEp6YU54SEIwZjFVQnk4dUhrSHQvZGJuZVUzOGlQdUNhejhtYmxpK2Q1b2s1aUVPTTRqc0JPUDU0Q08zOCtMUmxGVzV0YkM4ak5IeVp0RjdhUnh0WlcxM1lWUlNITHNpaVpUSXJhZERwOWhwdzNJRlZSQlRaRHlDdnNwRklwa2ZkNlBjS0tISWVGUWtGZzFXcVY5SGM2MGd3UEVZUExacG5ZamxsQ1htbHBmMjgvSTlTWkp1VnplWUhydXA0Qk1RWWdWRldsK1Zmemg1S2szVzRIcWljSW85Rm9qSnQvSzdtdEVwU0NaTHkyc0VBcVhYKy9IcE9LK1FBRGpvQVFQbWd2TlpJK2pkZkN5ZEcwQlNDUlF6QllLcDBndkM1ZUI5UGhDUnF4aXB3T0M0QmhNQUtETWNEdHVSTm44RWVoNTVQMGladHRTU0l0TUw0WkhibWlWSFQ1K1pMbWxEbDdoakRjQ0o4NEx2aUFBaVd3b05WcWZaSVd5S3RTcjlldklwSEljSVl3N0pOaEdHRHNGSXZGd0lKS3BZSW1FeTlFV2dCYit2Myt4ZlMxZXlHdUFWOUtxQUR4WURBUVJaN3ZrZXU2d3NlYjd6ZFh6aTluQ0xVSDJvR29MWlZLZDR6WkdJRHY4RnZHNVZ5UUFCZmRNWVlyc1JRYWJJTVF6eTJFZFJqck1JYTZtTVQrK3QvbVNZQUJBTWpwSTRremlHbG5BQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3Byb3RvY29sLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFPSkpSRUZVZU5waVlCanNnQkdabzZtbGFRQ2tCQWpvZVhEOTJ2VUhCQTBFR3RZUHBBSkFHbkNvTllEU0lBc0RnWVp1d0thSUJZbWRBTVFnUlE5eEdPZ0F4SVpRZy9PaGFqRUFFeEw3QXhBcjRQRnFJMVROQTN6aGdlekNoU0FDNkpVR2ZCcUFRYU5BcklISUdoSndxRDlBS0phWnFKMXNXTENJZmNEaUVuaFNBZnJBZ1ZRRFFWNnVSeE1EaGU4Q3Nsd0lkTWtGSU9WSU5TOUR2YlFmbGxRSXhUb3hManlBbmlWSkFYU0paV0tBQWpCb1lFRnhBT29yaWx3SUs1SDhvWGtjcHd2amdUYmJFMm1nUHpTSmJjQlZmQ2tRS0J5d2dRdEE3MzZnYVlrTkVHQUF6YkU1dGRiZ0F3WUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3F1ZXJ5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFWeEpSRUZVZU5yTVZNdE53MEFRTlpidk1SV1FhemdsRlFRcXdLbUF1QUtnZ29nS29BTTdGY1JVa0hUQStrS3U3Z0NYd0h2b3JUU3N2Q1lnSVRIU2srMmRtVGZmZFpMOGR6bUxLV2FYc3pVZU44QVZrQnZWQWRnZTM0NzFTWVFnb3ZNT21BS1BKSUJ6WjNRRmNDdjlDam9YSlpUREhxRFJBNHg3bk0xRjBnT05JYi9IWXdOY1c5STBTTEFDT2hpVUlpUFJLekFCbG56SEdUTkxvSDlXQlR0TGtKcnNwdXBYYWZTNU1pVlcrbDU3cFVnVEJmNlV6RGdYNmxkdkhHb1RzREpEc2JJRjJKWW1MSm5SMjhqRUt3WGtFQTVqYTJNSm1kbEZ4STVsMWlCckJuU1RHQ0VqRjVwMEtHeitTeVJZNGN2OVFxalJPNjFDS0JzTmJLZ1ZuVjJiTExBcHRScXRIUWplaC9iMVNka3R2cnNwbk5nZUpPZkJXUzRzMVZObVZmcEZINzNMSUhqM04wQmxzVnp2NkhTWDNaQnZGbWswQnpRSDJaMTJiR0gzYzB4aWhLMTYxQ25UL3RUZlZ6cVM0WS9KeGdqZGI4aitSRDRFR0FCZy9KZGxxYkY2RXdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcmVjZWl2ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTTFKUkVGVWVOcGlZQmdGbzJBVUVBYU1JRUpUU3pNQlNOVUQ4UU1rT1FNZy9nREVDa0RjZVAzYTlRWmlER1NDMGlCTkM0RllBRW51QXhRM0FyRSswTkwxeUJxQmZBVWd4ckNFQlVwZkFPSjhJTjZJN0JLZ2h2MUFTaDdKcFNBeEFhaHZDa0ErQXZKaHloOEE5UzVnUVhJTk5nQUtnb2RJRmdRQXFmbElQbEdBR2c0Q0I0QjRBUk9CSUhrSWNqSFUxUStobWliaWNRRGN5MFFCb01FZ2d4cUFMbDBBcFB0QkxnV0tPZUlLUTVBMzlJazBHQlFVZ2FDSXdacHNrTUtvQUMybVVjSVRGT2hEUDZjQUJCZ0E2dFErZmpGMElYWUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3JlZG8ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNStHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhNeklnTnprdU1UVTVNamcwTENBeU1ERTJMekEwTHpFNUxURXpPakV6T2pRd0lDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREUyTFRFd0xUSTRWREUwT2pRNU9qQXhMVEEwT2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOYjJScFpubEVZWFJsUGpJd01UWXRNVEV0TUROVU1UWTZORGs2TVRrdE1EUTZNREE4TDNodGNEcE5iMlJwWm5sRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDR5TURFMkxURXhMVEF6VkRFMk9qUTVPakU1TFRBME9qQXdQQzk0YlhBNlRXVjBZV1JoZEdGRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4WkdNNlptOXliV0YwUG1sdFlXZGxMM0J1Wnp3dlpHTTZabTl5YldGMFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tUTNObUV5TUdFM0xXSTFOVFV0TkRZeE55MDRNREZqTFRGbE9XVmxNalUwWXpneE16d3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2pkaE1ETTRNVEZtTFdVeU1ETXRNVEUzT1MxaU1qZzRMV1psTm1Fek9UUTFOV1UyWWp3dmVHMXdUVTA2Ukc5amRXMWxiblJKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQ1NGJYQXVaR2xrT2prMVpXTXpNREl3TFdSak5UQXRORFptT1MxaU1EYzBMV0prTjJJeE16QmxNak5pTmp3dmVHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBUWlhFK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZZV04wYVc5dVBtTnlaV0YwWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRG81TldWak16QXlNQzFrWXpVd0xUUTJaamt0WWpBM05DMWlaRGRpTVRNd1pUSXpZalk4TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVFl0TVRBdE1qaFVNVFE2TkRrNk1ERXRNRFE2TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTFMalVnS0UxaFkybHVkRzl6YUNrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFpsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbVEzTm1FeU1HRTNMV0kxTlRVdE5EWXhOeTA0TURGakxURmxPV1ZsTWpVMFl6Z3hNend2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbmRvWlc0K01qQXhOaTB4TVMwd00xUXhOam8wT1RveE9TMHdORG93TUR3dmMzUkZkblE2ZDJobGJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblErUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1R3dmMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tTm9ZVzVuWldRK0x6d3ZjM1JGZG5RNlkyaGhibWRsWkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xsU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZRMjlzYjNKVGNHRmpaVDQyTlRVek5Ud3ZaWGhwWmpwRGIyeHZjbE53WVdObFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTWpBOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qQThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtQRDk0Y0dGamEyVjBJR1Z1WkQwaWR5SS9QblJLNkY4QUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUFUZEpSRUZVZU5yRWxNRlJ3bUFVaEQ4Yzc2YUUzUGRDQjBvRmFBVkNCWkFLTUJVSUZhQVZpQldBSGVTeVp5bUJEdkR5d3Z4R0lLTE1zRE81L0huWnZOMTkvK3RzdDF2T2lTdk9qSk1JSlEwa2pZL1ZkRTZSTEdrSmRJRUtHTnBlLzVwUVVnYU1nWDZRMUNpQkcyQUFsTGFucllTUzdvRTVzQUplZ1pYdFRhUG1MbW9XdG92Ni9Qb0kyZEQySXM1eVNYV1g2NUJheFEvVDdyOFRoc3c1VU5oZUJNbHo0bHNYS0NXdEV3WERnNFRoUzJYN1JWSU9MSUdaN1Y0U3lpaHFkd3FPRWZiRE00QkorUE9VdlArSVRzdW1wd2M5Qk9wUnlDUFJIUnJrbDdrcG0raXNsamY2TCtGN2VBY3dCWEpKYjhuSXRPTEhZRXY2akdTbk1VYVRTRC9iODMzUDlxb3RsQWRnS1NtTEVJcDQ5dDNyOXBSdFY1SjZ3RnpTSXpDTFVXa2lPM25iU0JvQXQwbFFUUlMycXordnI0dHM3SzhCQUdna2hrTGJobXNBQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9yZWZyZXNoLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ1NVbEVRVlI0Mm1MOC8vOC9BelVCUUFBeE1WQVpBQVFRMVEwRUNDQVdaTTduejU4WkdCa1pHVURCOFBYclY2YURCdyttblQ5L3Z1VFJvMGZ5SUhsNWVmbUhhbXBxcXowOVBhdDVlSGorZ2RRdFdyUm9jWFoyZGl6TURJQUFZa1FPd3k5ZnZvQU5PM255cE5YS2xTdDNBUTFsQjFrQUFpQnhHSnVMaSt0bldGaVkyODJiTnpPUEh6OGVzWFRwVWxhWUdRQUJoR0lneUlVblRweXdXckJnd1VHUXVKV1YxUW9YRjVjY2FXbnBqeUQ1SjArZThPL2R1M2ZLc1dQSEltQStBZEhJQmdJRUVJcVhRZDVjdFdyVkxoQTdLU25KM3NMQzRoak1RcEJHR1JtWmovSHg4YkZ2Mzc3VkJycE9GMXNZQWdRUVNxUWNPSEFnN2R1M2Ird2dsNEVNZ3hrRTh6SUlMRnk0Y0RISU1KQTRUQTRaQUFRUWlvRVhMbHdvQmRIT3pzNDVJQVBRMHlnb0FrQmhobXdRdWhxQUFFSUp3NmlvcU44Z3hUTm16R0JGZHgwMjE4REVnVEVPRndNSUlCUVh3alFoR3dTekVObGlYT0lnQUJCQUtBYkt5c28rQWlsNC9QZ3hQelpMa0RVRHc1b0o2Sk9kVzdkdXpVQTJBeUNBVUF3ME5EVHNCdEdncElIdVJYU1hyRm16WmlFdzBUdTllZlBHR2xrY0lJQlFESFJ3Y0pnRlRMUy9RQUVQU28vWURBSUJrQndzTGZyNCtLUWd5d0VFRUlxQlFNUCtSVVJFdUlMWTgrZlBQd2lNMVFXZ3hBeVR2MzM3dGpSSURDUUg0aWNtSnRvTEN3di9SRFlESUlBd2Nnb0lYTHg0VVJPWVc4NEF3NGtOM1hVZ1YzRnljdjRLRHc5M3RiUzBCQ2Q4WGw1ZXVEeEFBR0UxRUpacm9JVkRLVENTNUVDR0FDUHRwb2FHeGl4bzBQeURSUlN5Z1FBQnhFanRBaFlnZ0toZUhnSUVFTlVOQkFnd0FDVkhLOFRyS05TakFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvcmVnaXN0ZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVh0SlJFRlVlTnJVVkRGeWd6QVFWRHg1UUo0QUhTWU5MdUkyeVFzU3Z5RHdBOXpSTVhSMDlnOXdYcEF2a05ZcDRpYVl6anlCSitTV1dXazBjakNUTHRITWpZU2syOXZiTzZUVVh4OVhQMjNPdzdrbmt6ZmgyeDJiWStkdVhvOWNmdVBjajV6ZmNGNU1BZ3E3RkE0UzNlZDNaQUVZVnJKL0VvdmxlemVhc2x5QTQwbHNSWFlic1FjblppMldVQkprNGd1b3lXVG1YTTdwZ1BFSnNPWGRValZmeldCWU13RE93UFFnbHRvQU00dGR4TVBDMGxCZDBMQWkwNXhGUE5Od1E3QkJNN0pSUVJDWUMvWjYvN0hYVW16cHV6SWFTb1JuYmk3SU1rZUtsMFo0R3lxQzFGcDMwYkxXS1Vlc1lQL0xQdmJvMHhIRHBBemFMMlE2Z01aeGJOTE1zbXhZbDJXcDJyYTFBUS8wZ2FZN0E0Z29jbEF3N1VmTW90RVpIWUJaKzdyS3FIaWhzek5WWm9QaVVrekdVMk5OdlR1N3VkMC9SYmVNeis4VWpGZ0FaZjJPYTdLcm1OSDQ0eUNwVjJTY3NML0ErSjVBNzlDS0VpRndqM3RUZ0I1MVNTNDhEaDcxOXQzT0dIdStvTTNUaElhdjdzUHdQOGEzQUFNQWJYcVdmWm9pQ0kwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvcmVsYXRpb25zaGlwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFTWkpSRUZVZU5ya2xORU5na0FNaHBINHpvM0FDR3dnRzhnSWJDQk80RzJnVHVBSTZBVGlCT2dFNkFUZ0JOaVMvNUt6SG5oUHZ0amtqMXEvYTN2OUNVSHdkekVUdnpWcFFlcEllM3htcElpa1NBL1NFZXdHdVF0cEIvWXR0cVNhbEpJS1VrOHFVVENGTXVSNk1Dbk9IRnpUTWhTTEJ0ckJhVkZBNGV3UW9ZQTd6MVY1Y2R6MVRFcElPYW5GbFdURW1DZ0hXK0xjRUhNSHpIL2VKeVpSeUsvd1hWbEdmUmlpckJ3dnZSRzVHSlBub2tFRC9nMktIZE9Vd3BnRG1zdElVRU9aNmJZamV6V2c3YVlhWWJsNUVlTFFhUVM2V2dXWXF5WWN2akViV3QxOXdvdlRHTmNGRzJOTXNhbEhxVFptS1N5N2Q2akdWVTFrYUNDNWRzS0hvVUZ0UHdhT3lGRTQrZmEyc1l0eXdTV01lQ0lmNGNwczF0cGwwTXhqeDNKbjFVOWZzQzhCQmdDQXdWQzVoY2pMd0FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcmVtaW5kZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVV4SlJFRlVlTnJFbERGT3cwQVFSZVBBQVp6Q05hWWpWT1lFOFJIZ0JQZ0lvVXRIVFlXb0tKT1NqdHpBVHBrS2FBaGRTSW1JRkpkMDhBYU5KYlBZcTkyQWxKRyt4cHJkK1R2ZW1iK2R6aTZzZjl4UHdkQmw3NTREV1l4N0FFZFJGSzNXNyt1WHJRa2h1OGJkZ1FLVVlBUnBDT1lRZnpUbDdGdkl4cmdFOUJiUGkxSmpJUzdYTFJkTmVVRUxXYUtKaHhWWmJVMUlsK0NFdFZjenQ5dFM0RG1ZbUdSaUdwdUNyQ214alZBcW5GbXVWOVlHUG9RcGVMUVF5cStHUG5QM3VlMmVydGtNa0hzY25PdWMvaVprSWRQT3pyajR3SUd2cDNlNTFOd2ZKMlZnbytQaUs4dEVjN042VUFMcEg3VytzWFhaMThxcTY5OWFScHR2dUh0OERKN1FhZWxZbWVoNnhPY3R1Q0t2Q0l4WDVSS2M2b255SUt6VTF5MVdESFJlUlRVM05MS3dhVGxWdFJ5QW9RNTVOY2pWUVJJclRIa0dEcjgxMWtxa3FqTUlwdi94WWlmbUFMZlpsd0FEQU5yV2JmTG9Zb0ZHQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9yZW1pbmRlcnMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVN4SlJFRlVlTnJFVk1zUmdqQVVGTVlDb0FMeHFDZXNRRXJRQ3FRRXJVQ3BRSzBBUzdBRHNBTlBjbFFyMEE1MDM4d3lBeEZDb2djenM1T1psN3pOeTc1UHIvZVBOUnFQSW1CcGN0Y3hJQXV3WFlFYnNDb3V4ZkZyUXBCdHNVbGtPVTBSc0FNU0VEK2JmUG9hc2hSYkNQaWxNMndldG94WFZzWVJ3akdrNDFDTmhLUWl3UVJuTjlYWGJRbHdBUnlhdmtXYjZCZzNPYllSU29RbmpieHlOclVoRlBIUEdrTDVxbWRUZDY5djc3aHFNb0RNNHVHTWRmcEppSU9ZbVQxQmVNZUF6NmVXVi9yV1hvcUJCOHZGdGkxRCtzWlZveGlpSDN2OW9jdXk3WHFXV1hjcmJTUUNwNnJJSFpGNXdJYmFKN1hXSTlFYW1QRkZHUWozeW1Bb1YwQk1XYS9TTlhza010ZjFjc1J1R1hEYW5DdUZYRDRrdGx4dFQ1TjVtRElTaVdyZU5ROXRTc05JMjdjQUF3QUhWV1NDNTl4R3JnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3JlbW92ZWFubm90YXRpb24ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWJ4SlJFRlVlTnJNVktGU3cwQVFEUlJSRkRHZHFReXltQVpYUi9pQ0ZJZE1QcUZmUU90d0FZZHJVUXlxNEtqTEp3UkRCMFhRZElaSWNMelhlVmV1bVNZZ0VOek1tMDMyOW5adjk3M0VjZjU0YmRWdGRnNDZBVXhndVhJZ25UL044Nm96allwRVVhdlZtdUt4cnlTZjJqb0NyckRuQVkrTHQwVlJlME1rY21IR1NuU0NtOXh0S01hWU15QUM0bkpNT1NGdjVRRVpMWUtQYThZUnFmZ2g0akxqM3k0RitBQ1REQUFYdnFRcUlaSk1GRGV0cXZpaXBPYmRCOTZCL2cvRXJaMXJtTU13cDZnYWsxa012Q0NUc0NRamdaMEJIMEFQUk9UbURONmJlSHdGUXZodjdaWXBqUlJCbmtVS1Z4Y281RnZPVERGY2ljaEpiV21aaEs0cU1SRlpDK1gzRFVFNnpMMitPbUloWDVwMDExckcxVmxoVDVXZWdaN2FiVXVIaFpJM2xid3RIOC91c2doYUh0azN6SlJzZ0lwRGFsQSs2b3hNWHNySHBOZUUvTEZ1dDVMTmptd3ErZ3RKSWk5SkpCVVJBODF1WC80Q3ZxN09mOCtRR3pBVEJUczEycnZRSEtlV09pSjFzQzVzaVRTd05WV3hiTkdUL1pIZDBlcm5nS0ZTWnpNODNuRFFlRTgzWlZNY0NUc0hIalRMNnQrWDJoaHIyR3dsNHd5bFAxK1NpblN6NGEvL2gvcmtRckh2V2VUZGM0NTEvOFQvdmI0RUdBQWdRN3RGaGRDUkhRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3JlbW92ZWNoYWluLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFXVkpSRUZVZU5yTWxNdHR3a0FRaHRjb0JWQ0NPWklUZE9CMFFDb3dxU0NoQWtnRmhBcGlLaUNwQUovdGczMktjd3RVZ0VVS2NQNngva1hMaGpXeXBVZ1phVFRhMTdmejJsWHF2NHZYOWVEd2RqaUZDYUU3NktyNEtIS1o3M1dFdmNJOFF0ZlFQWFNMdVpHczNYU0V5ZUU3ZUZWeVR1d0dPdkJhZ1ByaUNZY25tTEZlWWM1ckUvSlN3NkMrQlF0Z3lyWTVsQ0xjUXlmUURKQW5BeWJoemxwVkdRY1BNQkZVUURrOUZiams5QUhoUmxlTG9rTmhTK1NFU1dncjZKeGVuMkJPRDlrQ0d3NzdoUGlPZTJOSmhTNVN6d0hic2xrSHNHOE5NSkhBcVA0NTBJRE5BSHRoejAyWnV5WVpZZS9rbDJlU2VENHBQYTRJcmZzc0RNUEtsaVJKS3U1YjJFV1JKRC9yQkVzaHNHbE1XME9QMzBlVnB1bVpJOFZuY2ZsendLR01vY2FPcDFZeVh5NnBMemM5M1BIM2lJMm50dFR2bG9YSkhMQkkvemFlOVZhL0NGd3pCY3I2QkFMakVxVjdFdXVMaTMxSTZKd0gzcVhTRFIrRnI3MzZVL2tSWUFDVGpLajFYZDZ0dWdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvcmVuYW1lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNNUpSRUZVZU5waVlCZ0ZsQUpHVWpWb2FtazZBQ2wvSUc0RTRnSWdmbkQ5MnZVRkZMa0NhS2dBRUo4SDRnU3FlUTFvMkg1czRpeEFDUVVnclVDaWVSK2doaG9BS1FFazhRY3NRQUxrN0hnUWh3UURMMEJwa0Q0REtCdmtxSVVzVU01Q3FJR0VYSG9BR0FFSFlGNEdzZ3VSZ3FBQjdHVWt4U0RiSElodzNRRjhra3pVVG9kVU41QUZTMERqQXdRampoRWFtUFpBZkpBRWh6eUFobmtqVXJpRHpXQWhGTWdrZ0lNVW1RWE5lZ0xVS0J3VW9KbmhBN1NRS0FTbXh3dVV4dklDb0NFVGdIUWd6Y3REZ0FBREFLV0hNaEJNbHo5ZkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvcmVxdWVzdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeXBwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UWpjME1ERkNOa1E0TmtRd01URkZOamcwTWpkQk1UWXlRVGhFTWpjNU5UVWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRamMwTURGQ05rTTROa1F3TVRGRk5qZzBNamRCTVRZeVFUaEVNamM1TlRVaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakUyUWpJMk1URkZPREkyTURFeFJUWkJSVE13T1VNMlFqTXdOakU0UTBJMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRTJRakkyTVRGR09ESTJNREV4UlRaQlJUTXdPVU0yUWpNd05qRTRRMEkwSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K2hIR3FId0FBQWxaSlJFRlVlTnFNbGN0ckUxRVV4dStkaDJTa0dHdElvVmdGSDRraEplMHNERUZRZ3NXRklraFhnY1oxVm02eU1HNjZrU0FCLzRGQ2QrUENvSEdoS0JWMUowSHBNdEtDaWdzZnBhRXJTVUlURXVjUnZ4dk90T25RWm5MZ1IrWng3emZmUGZlY0d4NlB4OW1JdUFIdUFjWHozQUV2TzUyT1VhbFVXREtaM0h1aHNOR3hBSnJnMDlCWUd5VEFJakM4RS93RUpiQUdYbmllWHdQM3hVVWdFRGp3UWc2SHc5ZnhleFpjSWk3Uy9ReTRCWDZBRFkvZ0JlSFFjWnl0UnFNUmlVYWpmMEtoa0hET09ITFlwMEhmd1JZSWcxbGdDUVBnTm5qckVkVEJPdWQ4dmRWcXpjaXkvTXN3ak1WME9yMHIwWUJOMEFHUGFQQUR5cDM0MkJ5NDZ1R0tlR2RaMWxvbWs1bExwVkxidVZ6dVE3VmFuWElkM2dUVG9FVDVFc20rQzVZb3o3TEhvVmpldjI2M3EyR0hsL1A1L0VhaFVGaHROcHVXSzNnSHZBSG53Rk13RDc2UVEzN0Vodld4Wk41dXR5Y2d6RFJOMjFVVVJYZDMyWjMwazl3dDBZYklvMHBBQ0JXTFJSYUx4UWF1UzZYU2s4UEs1amd3eFhpZmttSzJiVE5kMTFraWtSamNCNE5CV3pwaUxHZGpobW1hKyszak9Gd1pjOTVwY3I1RGVSYmxwYUpjVkpUTnRsaTZXK0RqQ2hiQkJOWGxYL0JlZEF0RW5ISzV2RnF2MXplejJleGVhL21GV1A0cGNBYWNwTnhPQWczT2pxbXFldDdONGJERHZvL29NOUNqdzJLSFN1b0VObVVCTGZmN01FRnpoSmo0MkhPNmZqWDAvRE40RERIWmU1cDhwUTZaSDlQdGdZaEVJclpYVUp5T3I4RTdrQk10UlFmRFdJR2QzaGVUSkZzc3VRMGVnbzlnQlV5QmIvUWhYN0ZhclRib0dCSG81V251K1F1WXBPVmZKcWUrQmQ3cjlRWWRJMUtGTWxML0N6QUFMbEM2TDlXek5Bc0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3Jlc2V0c2VhcmNoLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFZdEpSRUZVZU5yRVZNMUt3MEFRamtIdzRHVTllRStQOVJUdlFwTW5NSG1DNmhPRW5BVkpmWUhXSjdDNUMzb1NQSm1DVjJtRFlxOVJSRHlWVktpQ1ArQTNNZ3RMM0UyeEIxMFlKc25PZnQ5OE01TzFyTDlZKzVkdEFlc3VjblpKQTViQVJUQUI4OCtUYStmNThYVWJ6NEVTVnNCU1dHOThPeTZOZ0FBYndybFZrcWViYVpFZjMzY0FYUEFuSXZDWU5BVG95QVRvd0IxUjhQdkxwL1UyK3loWDExY0ViOU1oLzJBci9jNm91ZEVrNGpac0I5YVFtZG9xSUlJTG1QOXdOZWxON21ibDJWNitTeUFza1FCT1pDeG5kY2hFWFdNTm1aME9FbU5Nekp6NVVOWVZwSmtTR3pEUkdzWGFobVpSZlFaU0JtVU8xMWYyMUVVeG1heTlDVkN3VEhYbDdGdDFZN05jc3ljcTc2ZE1VaTRDU0JKYXFFK215SmJTZE1TdVZHU1NuUElndTNYWmdORGhtUnlCMkF5SVRkbUFDSWU4R3JDSTV6Q2VOemFVMlFYTElabURpbHpCbVFVOFd2MTVnTHBmc0ZBNjczR1RPdXB2cDIwS3dCSU4yR2FsODJIMVVxanJjblhPZm1SUnQzUk5pWlZabzdGSmZuTWYycG9PVXpZTnZoUkM2Ny9YbHdBREFOUlBvQzZuSHJ5T0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvcmV0dXJuLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVGN5UkVKQ1EwVTRSa000TVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFUY3lSRUpDUTBRNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09tVmxORFkyTnpWbExUTTFZelV0TkdFeFppMWhNalpoTFRrMFpHVmlaamd4TjJZeU9DSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzFORGxDTmpjME5EZEZPVGt4TVVVMk9EWkJPRGsxUWpVeFFUVTFOMEV6UWlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BpYWpLTGNBQUFIYlNVUkJWSGphekpTL1MwSlJGTWV2dnlBc3AwU1FCQWNkSHI2a3FTR0Nsb1orTExuVUZsSkUwQ0E0UmRJZ0xmMkNoaUtNV3ZvTGdwQUlpaUpzYUhqVUhCUkJVK1RMeEFyVWgranJlK1JxejRlV2drTUhQang0Nzc3dlBlZDh6NzBHVlZWWk84UEkyaHh0RnpRRWc4Rm0xZ2xna3ljd0E5N29wYUlvTEJxTk1rRVFxZ3ZOaVVUaUw3RkZNQWNPd0NRWUJNZjBJWnZOc25BNFhMUFliTFZhR3duMWdqMVFBaFBnSG5pQlU3dEkvNys1WGh2QUVpOXRIMnhwdm4yQklTN2VnVEJGSWhHVHhXSnh1dDF1WXlnVU9qTDRmRDZ0V0IvUEtnY1d3SU51czNHd1F1MmpqVXNJajhlaklNdVBkRHJkbVV3bVN4VkJhdll5bUFhN1lLY1pwNmlIOFhpYytmMStWaWdVV0NBUXVLYVMrOEVxS0lJeDhOVEttT1R6K2ZJVFpUT0h3eUZUWmhJNEI2T3RpdFdKZHhLOEJTTTh1NVlEeHBTZlZMSXN5M2JxSVpVOXhlY3RBOWJBV1lQL2FlMEFjSUV1ZU9LQ0tUMHdwUnVtMkdHS3FuWFp3Z2VZM0pYQk9yalFDWXJnRXR5QkZBUmZJSmhDL3o0eE5obU16WTErYk1wVmdGa3dEMTdCQnJqU0NOSUVET3RkL3UxeUlOdGl2TFFUc0ExTytaRjc1cFY0OVM1WGUwSzdOSWdjbjhsRG5tMk1qeFlwcENvWm91emFZeVpKVXJPRzJ2aXhlNnljb0dLeHlFUlJaRGFiN1VmdzM5L1kzd0lNQUhRUG1naUFwaGMvQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9yaWdodC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSzFKUkVGVWVOcGlZQmdGUXc5b2Fta2FBSEVDc2VxWmlGQWpBTVR6Z1lhZUIySUhhaGdJQXdaQXZCOW82SG9nVnNDbGlCSEphLzFRVGRoY2lDNytBWWduQXZHRTY5ZXVmOEJsNEg0ZzVVQmlFRDhBNGthZ29Rdkk4VEkyb0FBTjMvMndZR0NpUWtJQWVma2cwSlVnMXpLd1VHZ1l5S3VGeU9HSWJPQkNrRTFZTk1rRE1YbzZQQUFOdXdNNFl4bFB3Z1pGMUg1Y2tZQU9XRWdJSjZ6SmhCd0RMd0N4SVN6UVJ3RUdBQWd3QUs4SE5wQlVudkphQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9ybmEucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVRSSlJFRlVlTnJNVkRGT3cwQVFOSVFpcnVMR0VsM2NoaXA1Z2UwdUhVOXdYRklSWG9EeWdpaGx5dndnTHFsd1hoQlh1RFVkRXBGaU9rcG1wUUZ0Y1JIZUZJaVJ4bmM2MjNOek8zZm5lZjhkRjY3QjBjMG9RRE1INC9xbFRpMkNsdzZ4Qk0wek9BQTNWb2RYeXRFZXJNQ0FRdmZnemlyWWs4ZmgvZkFaaHVFcnVqTndERTdCTGVoajNBTmIrZWFzR3NLdENFWVVqc0dFcjJTQ0I5UzBNWWRDNFJtWHZRQXpUaUpNSVZwMURrVkJuQlRnSTJ2NkhkRFNsTEpDeHFSek9oMkNLMVdDMDZHNGdCQUtoT0hUMFpwQnlRNjR4dmdUM3IrWkJBWDRVWkwxNlZEYzljVWhhbmgzenBJOUpxcVhIWEd2MmxOMkhNV0FBYlhnQnlkYWNPTFdKS2lFait5dVZIQTVCTXRPUzNhYzhWYnRTOEZFaS8yYzVZNUlXTU5iYnU3bTVPWFFFU0pRL25hZFdRUzNGUDFiZkFrd0FCakpXZTNWWFhNVEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvc2F2ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBT2RKUkVGVWVOcGlZQmh4Z0JIRzBOVFNGQUJTQldTYU0rSDZ0ZXNmUUF3bUpNRUVJUFlud3pCOUlKNFA0N0FnU1lCY3VCRm9Vd1BVdGVlQldBR1BRWUZBdFJ1QWFoMkE3SHFZSUJNT3hRWkEvQUdvZ1JHR1FYd2dMZ1RpQjBDOEFJanpzV2xrSXNGcklGZHZnQnFNRTdEZ0VMOEE4aTdRTy8vUnhPOGorU0NRRkFNWmNHbEFBZzlJTVhBK05FSSs0UEUrQ0NzU2F5QkljU0V3TWc3Z2NoNlc0Q0E1VW9nQ293WlNEcEJqR1pSRS9LRjVFeFRML1VBMnZtVHpBYW8ySGpsNU1jTVlvcUtpTjRDVUJSQUhBUEVQS01ZRlFISXZnTmdCeW05ODgvck5DNW9Vc0FBQkJnRDlmenR4UFovWVJRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3NjYW4ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUtKSlJFRlVlTnBpWUJqc2dCSEcwTlRTZEVDVCszRDkydlVMNkJxQTZoU0FsQUthOEFXZzJnOGdCZ3VTNEg0Z1BvQ3NDSXJSQWNqaWVDUytBUkFIb3VrRjIveWZIQzhDOWUxSDloMFR0Y09RcGdZZUlOTU1VRGgvb0V1eUFjV1dBRG1HQUpNTTNIZkl5U1llbWdUSUFRZG9uMld3NUJSaTlSa0FzUUMyV041UHBsdjZrWU5xOENkc0ZqemhTR3hwSTRETFFGRFUxNU5SMm55Z2FVNmhPZ0FJTUFDTm15ajdXRzUvd1FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvc2NhdHRlcnBsb3QucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1wSlJFRlVlTnBpWUJpNVFGTkxVd0dFS1RXSENZbWRBTVZVTTVBWUh4Z2c4UU9BZUQ3WkJrSmQzMDlJRVF1eHBsMi9kcjBCNmpLUUt3MkEvQVZBZWdNbExvUUJrSUh4RkxzUXlhVWdseTJneUVCUUJBQ3BCMUFNQ3NkQ29NRWZTSXBsb0NFT1NMRmFEOFFPUUN3QXhBcFFtbVFYNWdNeHlCV0pRTmNZSW9rN2toWExRRU1Da1Z4YkFLUU9BTVV1a0pXd29ZbjJQcEtRUGRTckRPU21RMURnVDhUbVdySU1oSHJ0QWpsNUdkM0FlS0JYN2Nrd3B4QVd2c2dHZ2hMckFUSUxtUWMwSzFjQkFnd0FkZ1E2VDJqWGZsa0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3NlYXJjaC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBU0JKUkVGVWVOck1WTkVOZ2pBUUZjSUFIVUUrOFFzblFDY0FKbEFuSUd5QUcrZ0U2Z1N5Z1RDQmZNa3ZJemlDNzVKcjB0UzJhRFRSUzE0YXJ1WDFYdSsxazhtL2h6ZTJJSnBGR1lZVmtDbnBBVGdCdS83VzMxOG1CTmtCd3dLb2dSYVFQNmVjRjBBTzBtNlVVQ0VyZ1VhdkJQTXhWNzRHUWpudldjaUk2QXhzc0xCMmJEckZRQnNQV0xlaG5HOVpXN0RNeG5Va0lLR3ozRk9WSUJjdVFxcXcxV1ZhNHM0Ynh5NUN3WjE4TzN6SG5QZ21JVWxJNUxtTWhHQzVnNHZ3eEVhT1IzdzZaVTkyM0NBeklTYVBzdHRzSVJ0WndUNHNuY1ptMDE1WVRzTzNwTkZrcHF5aVZBcXdFbDROY2dlbDgvSTZidFZyUnhFWXlDb0QyVnpyZkc3emFHRElKZHIzVXhYdjJxWlVYaFY2RktxUGZNalZoTUNTcFAzOHhYNElNQURJUTJPK2ZkS2t0d0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9zZWFyY2hzdHJ1Y3R1cmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVZKSlJFRlVlTnJNVk1GdEFqRVFOSWdDbkE2T0ozbmRWUUNwQUtnQXFDQzVEcUFEVWtGQ0JVY3F5RkZCOGdyUFhBbVVrQmxwTEZuRzlwRlhzdExJOHQ1NmR2YThhMlArdXczNkFpYjNrd1dXRmJEdzNCMXdBUGJuci9QbFprS1F2V0NaQVVmZ0JMakRjL2t0c0FUcFp5K2hSMVlEUEZCd2RZcnd2WlR5TlRCMi9rR0NqRVFOc0VIZ0Vmc21LSm4yb05LWnVFUGNKa2ZZcUR5cW81TDNTQmpWVnZySGpMK2p5bUdpNHBuK21aR0NtSlVnV3l0eHE4UW1SV2hWVGlHa2JCVTZocGxncTl0ck16RnZ0eEtTWklxU3FIU1hpa0hDdmFvcFZWR1M4S0JiTFhHb1RhaXNrYkJRVC9LQ3VyNCsvRmIvUFl2VStRdXA0bVU4QWs5QTVabzcxVGF1VmF6VW5RS1ZWc3BZUlEyeTEreWtnUEREdFVFd3Y1M1hWaHpIblQ5MnRGR0ViQnNocXp4bFJ2TjdpWWtaUlh6VFlIK2xJbWV4VzY2OVY0V3RzZjNOZTNoRktEVmpEZi95ejEvc0h3RUdBSVhGZmpaU2FnYjFBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3NldHNpZ25hbHNlcXVlbmNlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVGN5UkVKQ1JESTRSa000TVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFUY3lSRUpDUkRFNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkVNa1U1Umpjd09EWkNRekV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2tGRlJUbEZRalpGT0RaQ1F6RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrbWFqL05RQUFBYk5KUkVGVWVOcXMxVUZJd21BWUJ1Qi8wNEVJSGdxQ0RoWjJFM2JzSUVIaFJTaFlGQmdFSFVvSXUwZzNneVJpSHJwR2RCcVV0cHNkSWdZdEF2SFNvVU93VTdBT3NWSkdweUNFdkN3VjFON0pxS2gwVy9qRHczRC9mSEhiOTMxU25VNkhESExSWk1DTFNpUVNkdGRFd2J4b0ZEVEl3NzI1MFdnMFNEYWJKZUZ3K0Nzd0ZBcjFDOXVDZFRpR1I1aUVGZGdHMlRBTUlzc3lpVVFpbjEvdyt2MytYbUd6c0dFZGRldmNGVnpERWR6Qk0wM1RqcDRoQTd6MVMvUWZlemRRaExTYmx6SVBkYmpvc1MvQURJdzREVnlEQXZTcXFTZnpkbUhPU2VBRWpNT2x6ZHVYSU00d2pHMGdCdy93YWhOWWdxQ3U2MlA5QWlsWWdITUhOZndDRlVtUzV2c0ZzakJrbFlidDh2bDhwNnFxTHBYTFphcFg0Q3Jjd3B1anZxWHBVclZhRFlpaU9QMVg0TEJWeERrWHJmdnU4WGdLdU8xMHBWTDVGYmhwOWFqcU5LM2RicE5VS3BYSHhBcm1jam11MjNyZm5wM1pvNHR1Smt1OVhpZnhlTnpBY1ZjUWhBT080eFF6Y0FvT1lkK2FKcTVXclZZam1VeW1pUEtKSnBOSjBZdUpzWXp6WjNEaU5zeWNOczFtazVqRnpmUDhUaXdXMjZNVVJmbjNNRzIxV29SbFdSSUlCTHFmTlUwajFLRC9BajRFR0FDdUpZZmd2cU1uRWdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvc2hhcmVkcmVjaXBlcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBV05KUkVGVWVOcThsTUZOdzBBUVJiM0lCZEJCekRHY1hJSjlnU054QjA0RnhLSUFrZ0lRb29La2czQkNTaTY0QTN3aVJ3d1ZwQVQrbC81S0s4c2U0d3NqalNhNzhiNzlNenU3VVdUWTdmRWhpU2JhaFFGYklYd2hQbHVBK2ZVOGc2OFpUU0RzVHZIU2dKVUllL2lNa2RCNFFOMFdvWVhuOE1hQVVYMSsrancxR0hQajFBVVFUaERFdXRXSG02ZHFSRmtJOCtNaVZKakNGL3BkR0xBMXduMEFJNGpBQXVPNnE1Qi9udUdaVXVWYzY5Vmk4VmFiNWlySlh0OFF4bkhrakZNdVZZSUlRQ2RZS3ZXRXZNTmY0UlZnWjcvT2pmUWhJZDgvcTdlWllMa1VjbjRKMEs2N3hvMDFha2ZabzArWjlldjdQalpBUGkzYVV2VmlhbGRoaWlZUWtJVU9KdEZpRm5vajhBNmdhaXdqMTlOYmhOUkt6ZCtTcXE5ZWd3b0JTOE5HRFZJdU5WZFBmUndJZStrVTJ0ZXBuZkxheEZLU0RkeU8xamZzbjRFNmdOYWZIRFpJd3ZhWStoNDZRVDQ2ZDVvSHNKbXFMbXliWENCYVkvWFp2OXV2QUFNQW9UdVJlT3JzQ1kwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvc2hhcmVkdGVtcGxhdGVzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFPMUpSRUZVZU5waVlCZ1J3SDFYc1FLTXpVUUZ3d3FBMUgwZzNVOFZBNEhBSDBvTGdBZ1dFS0dwcGJtZlJFTVVybCs3cmdoMDFYd2crd0VRT3dMeEJiaUJVQUFTTUNCa0VqTVBHNE5ZbnVVSE9UR3Y4MER1Z1oxdXZZWEk4c2dHR2dCdGRTUmtvSEdVMDM1V01XNll4WUhvOG94SVhpYmVoVGtXREt3U1BDRDFEbEI5b1BCN0FISXRDd0g5SU8vMEl3djgvZkxyd3ZPT1F4K0J2bW1BeG5JQ2tKb1BVNC9UeTBCWE44QmlEazBjNUp1RE1EN1FWUXVBaHRvRG1RL1J3NUJzQURRMGtXb0pHeDJNUUFOUklnVXRDNEpLa0FPZzJDY2xhK0p6SVNpUDFzUHlLQnFJSDdxRkxVQ0FBUUFEKzBZbk5yY0xjQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9zaGlwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFQOUpSRUZVZU5yc2xERU9na0FRUlJFc0tEa0NkcGFVZHVvSjlBWndCVStnTnpDZUFDMnRQSUxZYWFXbG5kaHBCWFowK2lmNUpKdFZpWUkyeGtsZWRvR1p2OFBmQmNQNHgrOUhEUVRBTDFFN0ExUDlaaDI0SUdiQ3ErR3p6bmdrS0hFRTBSdUNuV2NQekU5N1dFVndDSzRrMEYrNVRPUyt0MVUvellxQ0k3QUNhZDZsM3FFSEhDYkhOTi9saHNVRndwTFRBenRWTUtSQVRPR0lvMXlQUVZjS2xIeUg5eDEyT0pEalpGRkVmT2p6b05wS2QydVFzYUFKTHV4R3ptRUx6RG1lUUVOcUxlV0x5YnZKS0Nvcjd6bTNtYmRSOGxQT00zSUdFOVdMSlRod1REamYwb3FFQytwK2g5eVlCUnU0aTRBSm5uYnRGdXkyOTlXL3pVMkFBUUJMZkRoNmNNeHM2Z0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC9zaG9wcGluZ2NhcnQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVFaSlJFRlVlTnBpWUJnRmd3NHdnZ2hOTFUwSElPVkFvdDREUU93UFpYOEU0Z2ZYcjExZndBUVZFQURpZWhJTWl3ZGlCU0F1Z0JxR0NZQ3V2QS9FQnNTWUJsUzNIK1FySVA2UExzZUV4TjRBeFBsRXV0QUE2c0lIK0F5Y0NNUUJSQm9vQURVTXQ0SEFBQVVyQUhvamdZQjNGYUJNRVAwQm53dEJZQ0ZTek9FQ0N0QVlCdEVYQ1JtNEFPUnRvQ3NFaVBBMlA4NTBpT2FsOVVTRTVRUm94RFFDZytvQXNnUUxtbUVPME1pWlNJUUxzV1lFRmpSK1BUUUdZZWtSRk9nWHNJU2hBbEx5T1VESXl5Q2IrNEc0RUlqM0E3M0VpQ2JmQUtUa2dmZ2dLTWNBNVIzeFJRb0RORzJCWERBZjNYYWtQQndBbFQvSVFHVFdVb0M2RkplOEFGSjZwQzBBQ0RBQTVDWThOdTdBZHVrQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvc2hvcnRjdXRzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEdSakJCTVVGRFJqY3pPVFV4TVVVMlFUWTRNRGs1TkRBM1F6WTVOelEzTnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvNE9VTkJSRUU1TkRoR1F6WXhNVVUyUWpGRk5UZ3dRVVkyTVRBM1FqZ3lSaUlnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG80T1VOQlJFRTVNemhHUXpZeE1VVTJRakZGTlRnd1FVWTJNVEEzUWpneVJpSWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpCa016STRNV010TnpnNE15MDBaR0psTFRoaE56RXRaREl4WVdFNFlqWm1PVEkwSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2taR01FRXhRVU5HTnpNNU5URXhSVFpCTmpnd09UazBNRGRETmprM05EYzNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrSXZVM3RRQUFBZVJKUkVGVWVOcmsxTDFMUWxFWUJ2Qno4Nk1VUlF1eUtBeHBhRkFFYzZqQm9NRkE2R3N3Z2lacEt2b0hXcVFpV29Kd01UQ0NVa29rbWd4cXlacWlKRFEwUWtJYUtxZWd3U2hRTkw5NlRweEtRK29HYmgzNG9aeDc3c005NzMzUDVVcWxFcW5scUNNMUhqVVBGSWJEWWI1cjIwQUVpWStKUXFGQWREb2RrY3ZsbjRzNGpVYkROOUFHSzdBS0ozQ2VTcVZlQTRFQU1SZ01YMDhvbFVyNUJvYmdFVnBoa1paTElCRGNSU0tSdlV3bUV6VWFqUW14V0V3NHJWYjdseEpkd2hRTDcrWTRybGVwVkE3SDQzR1p5V1I2VmlnVUIzd0Q2VFpjN09sczdFbEpOcHNsYnJlYklMVEo3L2ZQZWIzZU1UNXZ1UXVPNlAwdzhoRkdSejZmSnlxVml2NlZlenllZm9mRE1mRmI0Q2pzd3paTVE2Nzhva1FpSWJGWXJNRnF0ZTZZemVZMWk4VVMvR25MQ3pET2FoWXNtMitIZXJoRkRZbE1KdlBwOWZvWGw4czFJeEtKaUxCS1VDTnMwSmFDSGtoREIvU0JGVG9oQ1FQb3c5bGtNdGxzdDlzbmFkaDcyM3dMMDdNK080WmRGakJCYXdSUGJDN0MxaXlpWFlhY1R1Y2dldm16Rk9XQjlPWk5vRWVIMW1HZHZZQXRPSVdIc3JWUm1LYzdVS3ZWanhWSEQ4UXdDMHR3RFRkd0NHZHNhOVdHai9WaU9KZkxWWjdsZERxOWpOOFdWcU1MMWg2L2pTc0s5NUppc1ZoeGdRdUZRblI3OTZ6NGZ4cFZQdzcvN3dQN0pzQUF3c1NVNjFvbUYra0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3Nob3doaWRlYW5ub3RhdGlvbnMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJEWXhSalkzT1VZNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UkRZeFJqWTNPVVU0UmtNNE1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pOQk1rSkNNVGRHT0RaQ016RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPak5CTWtKQ01UZ3dPRFpDTXpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtINlg1bGdBQUFaNUpSRUZVZU5yczFEOUlBbEVjQi9CM2xpVm54aFVZTFpFMGhIZ2RIUmtJQlMwdE5oWVoxQkJFRUYyTlVRY1JicmNFRlkxQlF6bElCZjNoSUJ5S29FYWRnZ0p4U1JwYWdoc2FMaFAxK2w0ODlZZ29LN2Q2OE9Id2VmNSs3LzErNzhrWWhrR3FPV3lreXVNUEJxeE5KQkkvK1IwRFJqNmZKenpQRTVmTFZmN0M0L0Y4SnhBTEc2REF2YTdyUkZWVkVnZ0V5aXRrV2RhYWRSU0dvUUhPWVFlZUxBSDdRWUNIVXMxc3RnOXIyQUZuTUFOUldBY2VMcURYOHY0azdFTHVzNllNUUFUMklBZ2l6TU1LM1pxNXloNW9oRTQ0L2FyTFliaUZiYnFxYVdpaFFZOUJoVVdhK0E3cVlMVVl3T0Z3dkQyejJTeVJaVm1xY2J2ZGwvZzhBVzF3Q005UUQ4c3dSaFBNd2hMZHlRMXN3a2loVUhnVUJJRkxwVktpSkVsYjZYUzZqL0g1ZkdhQ1pycTFKbG8vc3hGejBFcnJxc0VKREVJNzNkVVJUS0hUM1Y2djk1cmp1R2d5bVF3V0F4YkhFSXpUQkFld0R5K3dBRjFtQUhEU3BwanpSTk0wT1JhTHJZbWltTU5LblpXZXd3aXQ4WlYxTXBQSkVFVlJTQ2dVS2gxdUpoNlBWM3FnOWZlVDVrM3grLzNFYnJlWGI4ci8vK0d2eDZzQUF3REpCWEhWcUtXN3J3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3Nob3dwcm9wZXJ0aWVzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3dPRGd5WWpRMll5MHpOalE1TFRRME5Ua3RPV05rWXkxak1qbGlNV0UxTjJaaU9EWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZSRFl4UmpZM1FUTTRSa000TVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlJEWXhSalkzUVRJNFJrTTRNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVXVOU0FvVFdGamFXNTBiM05vS1NJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkVNa1U1UmpaRE9EWkNRekV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRU1rVTVSalpFT0RaQ1F6RXhSVFk0TkRJM1FURTJNa0U0UkRJM09UVTFJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgreU5BK09BQUFBbVZKUkVGVWVOcXNsRTJJVWxFVXgrLzdNRXlZQnB0cVVZVFNwS0Y5RUZGcU8yRkFXbG03bHJySlJTQWlic0xGMUNBTUxleGpXVlJRR3hkQlFTcTBxaFl0U29oV2dXMEdqTXF5YjRkd25qYSsxLzhNNTliVEZCUzY4T00rM24zMy84NDkvM091WWxtVytKOURTYVZTZnN6ellOTVUrL3FnMGUxMlgrWHplZUgzKy84S2VyM2VlNWpwelV1Z1RpQm1najJnMStsMEZzcmxzZ2lIdzM4V2RaZkw1Y0I4RzF5YUlzTGpZSkVlc0g5Z1FRZVVSQVhzQkhlQXh1OW85QmlMby84Qnp2SzNIcWZUZVRLWHkyMUxKQktOVUNqMHlPZnpDU1VZREQ3QTRuTndCUnpoalZJd0FBNENKOWdGOW9IUDhpZW1hWDZDU0J1NUROVHI5VytsVWlraEJaK0NFcmhzeTVQR2tid0ZIOEU3WVBDcEtPL3ZrVU5SclZaRklCQVF5V1R5YXF2Vm1sVnRSMitEVytBbXVBNGVnaG13eXNJTDRBUTRESDdLbkpHb3FxcWlVQ2ljYXphYm5tRlh0NEx0TExBR25vQTVjSUNkdlE4K0FQZXdTeDZQeDREYmJkMTJSSEw3MEpBcDM4RVhMaWx5OWp5NEMzNUpJVTNUTnVaR282SFVhclZaS2Fqd1J5L0dsQW10YlFISDJCZ2Y1WkRFZXIyZXFGUXF3V0t4U0Q5YnNVZElHMDV4ZEtQNmtaeGQ0UlJRSXh4RjJlek5aclB6TUdNbUhvOC9UcWZUUzdyTkZLcXhHeHp0eURZRk85aVkweFNsWVJqTG1VeW1HbzFHbjZGOHZrb2hHdXNjWVpwemFZNFExRGluWnlnNmNLSGY3MStMUkNLQ0N0cmVLWEplNWVJV1k0NnNjaDFhWEU0YmJpREtmMXBQNW9lT2M1R2pHeVhvNEFKUDhtMHpja2pCemVBTmlFNTRPZWpqRmxSTzl0cVU5K2pZNzNXMHpqcTd0bHZtWllMTGxjckdRVzJIQzJKUU1CYUxMV0hlUCtXTlRaM3pHcmVNY0xzSHUvQzNBQU1BbGR5L0wvOVpjMXdBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9zaXRlcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TVVZd01rWkZOMEk0UlVGRk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNVVl3TWtaRk4wRTRSVUZGTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalUxWXpoall6ZGtMV1V3WVdZdE5ERXlOeTFpWlRoaExUUXhOV000WTJWaFl6TmxOaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8xT1RjMU56UkVRVGMwTTBNeE1VVTJRVFZGUkVNNE0wRXdNMEZDTlRNMlJTSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QcXUxUlZrQUFBTWhTVVJCVkhqYWZKVmZTRk5SSE1ldm14TmhMYW1SZ2hRekhDVWpvYlptd1Z6Q1VqRXpsWkZLK1JDTnBnTkJUQW15V2doVG9ueHFnMW10WHRZQzIxaWs3RUdTRk5Gd1pZN1FoelpoUTVuRnNqYTNDY05obTMwdjNJM3J2T3ZDaDdQZnViL3pQZWYzNTU3bDdPN3VFa3pQd3NMQ3lkN2UzdUgxOWZVclhDN1hBejgycG9WZ0ZEd0EzbGdzUmxpdFZrSXFsYWJYc1pqRXBxYW1halVhamFXeXN0SUY1NnJ0N2UxTG1LNERDdUFEcjhGbHByVzVER0xTcnE0dW8xNnZ2MUZUVS9OSnBWSVJpVVFpOWRvTHBzRnBZQVk1d0VGZnYrZUVXMXRiYksxV3F3TVBTVEZ5THBsTU1oM2tHK2dFT2c2SHc4OHF1THk4TE1uUHorY3BsVXByYW83Tlpzc3hmQVJ6b0pubVBrOEsyMnkyMXF5Q1NMQ29zTERRQzlHL1ZQaGlsOHYxQXJZSjVoQlZqRHJhRXR2cTZtcFQxaHl1cmEyZFFRaUxLZHRvTk40TUJvTW1IbzgzU2szbGdUdGdncklqOE9ka1BTRzFRVHhsQ0lYQzN4aU8wZDRMd0MrYW5hQmdGaFFJQkorUk0xbktWcXZWei9oOHZoU0ZlUVZUbnlvRWJjbmhuWjJkWkZiQjl2WjJKeHI2aE0vbk8wamFwYVdsRzJLeHVCbDlTRmJWRCtyQmQ5cVNheVVsSmZhc2dtVmxaU3RGUlVVckJvTkJuWTRwa2ZpRHdRQ0d5VFRUM0VYZ1ZFdExTM1pCSkovUTZYU0RrNU9USGFqd1VTTDdRemIwRS9BY0lZZitWeFJDb1ZCNEdob2FqQU1EQTA5eE9uWkdFVk1QbVVzeWQ2Yk1GNHpmTW5MNUpod09uK3Z1N2g0aUx3QVVpdjc2SW5nTUhwRVp5ZHh3anlDT3orcnA2ZEUyTmphK1EwRyt6TXpNMUR1ZHpsdG83SlNMaEtyMkpCZ2tRL2I3L1ljWUJUMGVEN2U2dXRvY0NvWE9XaXlXRHJ2ZHJod1pHYWxGWGpzUituWHE2cktBKytBcVdXRnNGT3p2NzMvcmRyc0w5Z2tHQW9FTExCYnJ2TmxzYnBMSlpHNzhKdVJ5ZVVBaWtaQnRvNEhMQjNBWHZLZVdiTURuWGpRYWpVVWlrYXA5Z3NoRkdOOWwzdXpzYkRFOUJKenVCNFpXaXJHTWRPY2hUVWN3UnZjSmxwZVh6NlBDdXJhMnRvbSt2ajRWY2xkTTNvTlUwZ1BnSzAzb0FHaUt4K1BUdUprV1JTTFJYTHFmNkg4QjJJMXdPQnhTazhsMGUybHBxYUNpb2lJWHFmaTV1Ym5wUlhnSjZycytUclZNRWgzd2NueDhmQXlIU1d2OEUyQUFjcE03RDlXMERGb0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3NtYWxsbW9sZWN1bGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd09EZ3lZalEyWXkwek5qUTVMVFEwTlRrdE9XTmtZeTFqTWpsaU1XRTFOMlppT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVVkJNMEpHTmpRNFJrTXlNVEZGTmtJeFJUVTRNRUZHTmpFd04wSTRNa1lpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UlVWQk0wSkdOak00UmtNeU1URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LU0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pNd016bGhaVEl6TFdJM09UZ3RORGt3WkMwNVlqZzFMVGt5WWpZek0yTTNZemsyTUNJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveVJVTTJNa1pFUkRjMlF6SXhNVVUyUWpZMU5VRXdNakpFTnpsQlFqVkVOQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGxyenVOZ0FBQUcyU1VSQlZIamF6TlJOS0FSaEdBZndkK3pza01PdzJZdHNLT1d3N2x1ekIyVkpMcE1iQnprNGlPUkN3b0dMSXlrSGJPT2lPQ2k3bkpTeWN2TVZlM0ZaVVpLYkl1MHlUVHY3NWYvcTJWbzF3OXIyNEtsZnpjemIvbWYyZVo4WklaZkxzWEpXQlN0emlhRlF5RzZ0RHZxZ0NnN2cvcWVnVkNyRkZFVmhnc2Zqc1ZybkY1ZmdCdDZoQXhiaDBpNHdrVWd3VGRPWUtNdXkxZm9JN0VHWXpvOWg1cWRBUVJDWTArbTA3YUdMbmk1ZnQ5QUd1NkRTZXI0cXdROHRraVF4MFNhUUIzVEJIWjMzZ0E3MW9NRXo5VFZLTjlBZERvY2NpOFZPQmEvWGF4WFlETmR3Q0M5UUM3TVFoM2JvaFc3cWRTZWM4UTNPWnJOQnV5Y2NCZ08yNEFPdUlFMXJSNlFWRmlpTVZ4cDlqRnIxc0FsR1lSVWljRjRRVmxpOEhROHdRSnZpd3VqNHJRSW5hVlEyaXBqalpWQmcyekNNZFZWVnc0Vi91UkY0UXdkaER0NktDSHlGY2Y1YjB6VGpnVUFnemdOcllKcEdnYjhkSnV6LzhZMTc0bk9ZVENhLzVqQUlqekFHL1RCRnh5Vi9IUGhzYlJaYzI0RUdxQzQxVUNMNTRzZWl6YzcrL3JYQjdwelFKcXpSdFFtNG9GNFdYY2hobVV5R2lUNmZieDduUTdCQ2E1RWlSK1piNmJyTzNHNDNFLzc5Ri90VGdBRUExUU4yRjlDRkJZVUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3NvbHZlbnQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVJaSlJFRlVlTnBpWUJnb29LbWxxVUNNT2lZaURTc0FVdk9KVWN0TWhHRUNRR285RUV1SWlvcStmUFA2elFWS1hkZ1B4QnVBT0JHSTZ5bnlNdEIxRGtBcUFJZ0xyMSs3RGpMMEFWQXNnUklYZ2x3MEVXallCeWkva1pBcm1RaTR6Z0NJSjhERWdBWWZBRklmOExrU253dnowVndIQXhPaGNzUWJDRTF6QWNpdVF3S2dzRlRBbFM2eEpodGc4Z0I1NlFVUVd3RFpsc0NrY2dBbUIyVC9BSXBaQUptY1FQWUpZcjFzRDNJRkVJTVN0RHdXK1lOQXJFOUtHQXBBRFFTQmgxamtMeURKRXgwcEN1VEk0VFB3QVFFREQ1Smk0RWFvZ1IrZzRZa080cUhlSnRyQUJkQkV2UUNhaDVHVEZLalUrUUROaWhpQUVVOU9NWUNXTXNqZVY0QzYyaEZMZ3NkdklKckJBbEF1eUdVWDZGcXlBd1FZQUE5clQ2OUhrOHRKQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9zcGxpdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSHBTVVJCVkhqYVl2ei8vejhETlFGQUFERXhVQmtBQkJEWVFDMXRMVllvelFURWpNUnFCdWtENlVFV0F3Z2dScENYZ1lLR1FMWXBFTDhENGhkQS9PYmExV3Mzb0pvWWdlei9TSWF3QVNsRklCWUFZaEVnL2dmRXY0RDRKeERmQUFnZ0ZxZzZiaUJPQm1KaklINE14TmVCR2k4QzZYMVEvQmRxbUJDUThnYmlVQ0NXQm1KaEtQNEF4RXVCK0FGQUFNRU1mQXJFTDRHWUdZZ1ZvTmdUaURXQStEUFFvTFBRNEFHNWhnZUliYUV1aEFHUTY1NEI4VnVBQUlMNS96MFFuMFVMSXBEWWFTQitBc1FjMTY5ZEIybjZBblh4Q2FqaE1IQU1pSThEZytZN1FBREJEUHdLOWVwSEpFV0MwTEI2QVRUc00xUU01THBLSVBaQVNpRS9vUmJmQW5FQUFnZ3NDRFQ1TjVDNkNYWE5ONmp6UVNBRmlHY2pXVElmaU9PaDdDdFFGNFBDZWk4UWZ3SUpBZ1FRSXl4aEE4T0pFMGhWQUxFTUVIY0NzUlhVQUJCd2hJWXJqSjhJRGFJY0lENEh4QXVBamdLNWxBRWdnQmlSY3dyUVVFa2dCUko0QS9UbUgwMHR6WDRndXdDSUR5QkZWaU5RcmdFb0I0cFFmcWdQMzhMTUFBZ2dGclNJQUlVWGNsNmNDRFhRQWNvSEpZOEpJQWJJUWxDc0FnMUd5UWdBQWNTSW5wY1pHVkV6Q2xERGZpUUROd0FOQ2tTV1I5Y1BFRURFNU9XRFNPeUxoQlFEQkJEVkN3ZUFBS0s2Z1FBQlJIVURBUUtJa2RvRkxFQUFVZDJGQUFGRWRRTUJBZ3dBbzZDUFNuVGxKOHNBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC9zdGF0aXN0aWNzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFIdEpSRUZVZU5waVlCaHhnQkZFYUdwcEpnQXBCU1R4QjlldlhWOUFqb0VzVURvZWlCMlF4QThBTVZrR01sSGJ5MVEza0FXZkpEQnNCWUNVQVpyd0JXRDRmaURMUUtoaCs5SEVIS0ZoUEVURGtMNlJRaURDc0dZR0Znb2NnelV6ak1CSW9Wa3NGd0t4QUpJNExHdGRnT1lNbEt4SFFBOTFBVUNBQVFETXNobmRvY09DREFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvc3RhdHVzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFTQkpSRUZVZU5yVVUwc093VkFVZlQ1ek5XakNqQ0VqWFlIYUFVdXdFcm9DN0lBVmlCWFVEdFJFaHd3bEpBd05uU3ZuSlZkVFFsTEJTMDdldWQ5MzcxSEdmT28wbWcwSFdBRzFOK3UyUU12YWVSV2JBMUc4aVhmSnBtTHJJdnFzUFdIdDdlUnNBYTR0VUFhRWgyaGNabXlJYThEOEhkRGhvNUlmZ0UvSmUrQ1JuVkNhTE9FNDQrNENVelhGUUEwbWVTUHlHVzM3a0pOYzJVbmhUb3BzMWxkSzB6U25ORG5oOG1qS0NuWHlWYUx4V0ZabFRrOTBCNlMyTGxMb0NiVzRuZ1FGNEgwV0dVb1JVQnFQL2xBZVlhNHAyRzdIdzNIcHVtNVY5QkJ4clIrK1BhNDFOVnNndG1mK0diRUtxQ0NBZmJsYitjbDM1bk1LdyttR3ovTHpXZjlCWG1tb2Y1QlNGZzFiRC9qdnJKeDV3N2JpL3YrdlhId2hKekxmUEZjQkJnQnE5V2dTRjJvWGxRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3N0b2Nrc2FtcGxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEzSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE15SURjNUxqRTFPVEk0TkN3Z01qQXhOaTh3TkM4eE9TMHhNem94TXpvME1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEdSakJCTVVGRU16Y3pPVFV4TVVVMlFUWTRNRGs1TkRBM1F6WTVOelEzTnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQlFUazVPRVUxTURoR1F6UXhNVVUyUWpGRk5UZ3dRVVkyTVRBM1FqZ3lSaUlnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG93UlRZMFJqRkRPRGhHUXpReE1VVTJRakZGTlRnd1FVWTJNVEEzUWpneVJpSWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TlM0MUlDaE5ZV05wYm5SdmMyZ3BJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WVdNNU1qaGhZVGd0TUdOak9TMDBaak15TFRrNE5XRXRaVGswWkdKbU1HSmpNalJtSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2taR01FRXhRVVF6TnpNNU5URXhSVFpCTmpnd09UazBNRGRETmprM05EYzNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrUkkvRTd3QUFBZjlKUkVGVWVOcWsxRTJJRW1FWUIvRFJWcGM1WklsNEVTKzU3UlNDTFIzYXpJTWxzaHBMUVlLbm9FT0JrQ0RESnNWR2VWdUVWbGdIT29RRVZoQVVaQkRCZ3JjUUl1ampFTldoOFdNdUhZSzV1Q2RuZGZDai94dVBrUkhxNk1BUDVjWG43L3Z4dkdQeWVyM2NISThwblU0UDh2bDhzZFZxSFpVa2FjMDBZK0FLYk1OQnQ5djlvOUZvK0sxV2E4L2hjTHc2NEhRNmpZWWRnako4NmZWNmNydmREc1hqOFRCbXFOUnF0UjN6RExNN0FpNlF1dDN1blV3bUUwQnd0RnF0M3ZQNy9ZWURUOElUNE9HQnhXSmg5VnE1WEJaZExsZTlVQ2pjTkJKNEhTcndGczdCS1YzWHN4NlBwNE56cUtpcU9tZzJtOXpDRkVFMnVBK1hZQU1lZ3hVVW51ZHZpNko0VnBabElabE1YaFVFWVdMZ0toUkJoelB3bmNhZXdVL3NYY3htc3gxTEpCSnZzSmVmV01HNHdCUnNza0o0UjJFaWJNRlR1SVVUM3MvbGNwelA1L3RUOUw5QU95MHhESi9oQkZqZ0VjUm9MNThQZjR6UWtlSi9Bd1B3RUxvZ3czRTZpQ2pzMFhMcjQvYm83MU8rQVM5QVpWY0tEc043Q01FdUJDZUZEV2ZJbHBPREsvQVIyRjM4UnVOQitxUFN0TDNGWm5nQjF1RWxDTlJueTdCSS9WWXkwdmtzVUtHMllIZjBBNFc4cG4xVGpONUx0dVN2Y0JleWRCZ3BDcHpwWVlGT210VkY2amw5bmhla21kNXJiT1BQenh2MmU0YWFwcDJtNzB0R2kxSEw5ZnY5MGNCSUpISU5uNWZwMGh0Nk9wME9aN2ZiUjhaK0NUQUFFVjZkZnhKam9kTUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3N1Ym1pdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TmpVNE9VUkJSalk0UlVGRk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOalU0T1VSQlJqVTRSVUZGTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamxETkRRMFJqTXlPRFpDTXpFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qbERORFEwUmpNek9EWkNNekV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K0FaclRoUUFBQWh0SlJFRlVlTnFzMVUySUVtRWN4L0daWlNYTGFvZzZiV0o2NlNCVVdGMmtXc0hMSHJZTWhDSVFnZ0szWXFqRHNvZjJ0TElSYkVOemtONUkyVTRoZHJEZDloQUlkWWlVS0pDUUVHcUpESUx1RmJtK2JMcmZCeDVoRkpWd2QrQ0Q0OHd6djNubStUL3pqTnBxdFpTdDNFWUxoY0ttQWx3dWw2TmNMaC8wK1h3ZmJUYWJvcnJkN3FIRFZGVlZuRTdudldLeGVDa2NEdDlLSkJLRzZ2VjZodzVzTnBzWCtKazJUVE9heVdSTWV2aDdNNEhISzVYS20zZzhQaEVLaFhMczcvYjcvYXNqUTRidHdFTkVQUjVQcnRGb0tMcXVwd2hjSGgweWNCbWZrWEk0SEVvc0Zwc3FsVXBhUHA4L1p3M1U4T3Mvd3E3TEhsNngyKzFLT3AyZXpHYXp0dzNET01vWXJyWEhjQmZlNHgydW9kNG43RFNlNEJoK1VKUTk5WHE5a0V3bVo0TEI0SFBSUUl6aFRqeERHdnZ3Q21NOXd2YmlnZWlaQ01PMmFyVzZFb2xFRnR0aDdjQ1grSXQ1bkpYLzh6aGpDYlBMY1V0Z1NSNHo4SS81ZDZmalRjRisvTUYyckdFQnEzaUVBN2lQdTFoSCsrTHpHTWNKS3J4dURSUTlQSVF2eU1sR1loT1BjRkwyK0pOc015bERqOGh4dklGSzk3aU15SVBUTUpIQlJYbnV1d3dSaFpxVjdjUlRQTVpWdk8yNU9GajJVL2dxSC9FVWRGbnRLY3ZOWCtBYm52YWJVOTF2eWdjRXhDS0MxMTNWMXVYOHV6eHcrZXB4VEJSbUFqZGx0YU9pbXBqRFlWUUhCdkpTOXp1M0lJdTFhT25aVDJzRGNTMlR1ek13RUFnTXV1R1NMRVlZSzkwbmE3V2FvbWxhNXhxNTFaK0FEUUVHQUl0T3A5NFRhTVd2QUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC9zdWJzY3JpcHQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVE1SlJFRlVlTnJzVkwwT3dXQVVyWi9CYU9uT3lNSWJZTFB4Q0x5QlRtS2lUNEFucURmQUU5RE5wcFBhR0lrT1gwZWJjNU1qK2RJSUxRdUptNXg4dC9sNno3M24zS2FHOFkrdmkxVFNnbEs1bE1mUkJnckF6Ti81Ui8wKys4WVFQYUFGQ05FS0tINUt1QUFtekEvUnkzUlNOa2owbUk2QjZVc1A0ZEVJUjQyUE5pQUVjejRyd0FLR2tvUGNpa01vWm04Qk1YOE51Q1NRNkFJVm9NTkdNbkZEcjg5RUNZTkxvRXpUdkNKdGNwTlZJQ2Zlb1hpQXV6UHlKUnU1ZVA4WTY3UEJwTExCdWlhMUNFTDF5dU5uUzNHMTNJdEQ5bEN5NXFORHFSSUZTQTBoYi9QdWhBNlhvcmdZaVNFYkpTTkVVVS96enVabURUWndFa3VHdEQ2T0UzMnp1UFh3THAvUzk3LzcrN29KTUFERmpsWFp0TEgrcndBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvc3VwZXJzY3JpcHQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVBoSlJFRlVlTnBpWUJnRmd3NHdvZ3RvYW1rMkFDbDdLTGNSaUM4QThYb28vd01RSjE2L2R2MERMZ05ac0lndEFPSjhJQmFBOGc4Q3NRT1VqZGN3RUdCR0YzanorczBIVVZIUm4wQ21CeEFyQUxFQkVITUE4UWFnWVpXRXZNeUVUUkNvY1FLUU9nRGxDc0M4U2t3WU11R1JPNGpFdmtESXF6aTlESTBZa0ZmblE3MEtBZ3JBWVBnSURJNFQ1THB3UHBKWFlWNnZoMXBFbW9GQVRRVklzZHFJRkhZQ1VJdEFhaEtBK0QwVUZ4QktOdlpRVjMyQVJnN0lnRUlnNVE5bEJ3QXBmU0FPaEtvSHBkRUpWTWtWSU5jQjhYcENMaVRXc0FRZ0ZRL0Vqc1FtRzBLRzlVUEQySUFhTHRTSDV2RjhLUC9BMENtK0FBSU1BRXd5UXlQaHV3LzJBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3NtYWxsL3N3YXAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVJCSlJFRlVlTnBpWUJpU1FGTkxVd0dJSGNqUnk0Um1rQUFROXdPWjk0RTRuaHdER1pFTUN3QlM4NEZZQUUzTkJpQnV2SDd0K2dWaURHU0dNZDY4Zm5ORFZGU1VFOGlFZWZVREVITUFzUVlRWndEbEhnTFZYQ0RhaFVndU5ZQzZkQ0hVZGFBZ0NJQktHeExyVW13Ukk0REVYZy9FLzBFMHlTN0VGZXZRaUdJQXVwQ1I2Rmdta0h3dVFNVWN5RFlRQ0JLQWVEK1VUZ1RpUWlCK2dFOERDd0VEUDBCcGZhQlhHMkN1cE1TRkc2QjBBRFQyR1NneUVPaXFCMGlHN29lRkh6VFdDOGlLWldqeUFZVWp6SVVQb0xrSmhBK0F3aFpxTVdwT3dRV0F1ZU1ITUplc0JESi9RZzJWZ09ZZ0VBQWxKd2VRUEVnZDBla1F6Y1VPU0hsK0loQlBBTHJ3QTZYRjIzeG9ZaCtDQUNEQUFEUXhVZ0t0TjNycUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvc3luYy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVnhKUkVGVWVOcmtWTkZSQWpFUXpWMEZkT0R4aVY5SEJSNFZjRlFBVmlCVTRGR0JXTUZoQlVBRlFBWHlKWitYRHFBRGZhc3Z6cm9Udk5Fdlo5eVp4NGJzNW1YenNqbm4vcm9sUDBudVhmZHl1QTV3T0w0Y3o3OG1CRkVKOThDL0hpaUFCVWhucllSWUxCVk1RaVdBVkxJRmJrR3daRTRHdHdKMmxqUkd1T1Z3RDl4eFBNZkNSV1RqQnVnajVzTjhHdEZJTUVKU0paNmhwZDJZR3E2Qk1sb2h5Q2FzcUlQazdnVTVjMHJndVVZMnZRSm00WkpTQm1xNGUrQlJWZVVvL2pQd1NvaHV0WXJ2dUVuRGdqNHFBeHBxb2syT2N1SUZPZnBBWEJxcEN1RDBMaGwrVnAvc1g2MHhDN09XMXFya3BDbmJ3NXQ0eHZtMW10TTUwOGdHY3Z3c3BjZzJHSHJ3a3QzWVkrdTIyY2lGR0EyRmJQQU5ZYzZLdEkzbEZJbTZaVW1hcy90RDFiVnE4b3JqbXJHQjBtL0tMdWtuWm5JSVBJVW54allwcVo4bmtXZHJuZVZDV1lqall6aTBmUmZDbXkySTNMNHN2cTcvYkc4Q0RBQVN0SGVJem92dG1BQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3RhYmxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNOUpSRUZVZU5waVlCanNnQkhHME5UU1ZBQlNDbVNhOCtENnRlc1BRQXdXSk1FRUlLNG4wOEJHSUc0QU1aaW83ZVhCYnlBTGxyRFlBTVFDb0lDR2lvRWk2Z01VdzlnZ09RT292QU1oRi9ZRDhYNW9KQ1ZBMmYxb2JBTW9lei9kdlF3Q2hXaGVQb0RrNVFOSVhuWWNQbDVlQ01RSG9kNkRaeTJrSUlDeEc0azFVQi9xSlpnQjlrRE1qOGErQUdVelFDM0hhNkFCTktBUG9nWDZSeVQyUmlRMlFRTXZJSGtORnNzWG9Id1krd05ha09BME1CN0pvSGcwVnh0Z1ljUFVMY1JtNEFKY3RoSlRIdEtzeEFZSU1BQzlCejAzTVhaNFZBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3Rhc2sucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU54SlJFRlVlTnBpWUJqc2dKR1FBazB0elFRZ0ZRL0VGNjVmdTE1SWtZRkF3eFNBMUg0Z1ZvQUtCUUlOM1VDMGdVQURIS0FHRUFzT0FDMXdSQlpnd3FFSVpORUNISVo4Z01vN1lwTmt3V003S0x3ZVloRy9nTS9KT0EwRXV1SURrR29nTlphWlNGRU1ER01ESUY1UHRvRkF6UUlnakJiakd5bHhJY2lRKzFERFFDN2JBQXlLQldRYkNOUU1pZ0JRdXJzUFRkaUpoSUtGaFlpZ0E4WDJSYUJoRTRnSlp4WWNZUWNLS3djMHNYNDBaY1NuUS9UVWo4TlNCNHFURGRYVElibGhxQUQwRGpFNVJKNFlBeDhBOFVJaUhRUEs1d2RwWG1JREJCZ0F3Q1UvakFsTGpRUUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3Rhc2tkZXRhaWwucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVhSSlJFRlVlTnBpWUJqc2dKR1FBazB0VFFVZ0ZRREVDNjVmdS82QmtIb1dBb1lKQUtuelFDd2dKQ1RrdjJQSGpvVjM3dDRCV2NDUW5aVzlnWkdSOFFKZUZ3SU5TQUJTOFVoQ0lNMEt2THk4RE5MUzBndzNidHlBUzRERTR1TGlHbk95Y3hxUXpXQkNzd0Jrd0FNZzNnakVEbEErZzZhR0pvcGhJUEQ1ODJlR1JZc1cxWjg2ZGNvQm40RWc4QkFZVmhPQTlBRVFCK1N5cDgrZVlnMFNrS0ZidDI2Tkp5b01nWVk2Z3VoclY2ODVhR2xyN1E4SUNHRGc0K1ZqME5EUVlGaTBlQkZEVzJzYlExQndFTVBIVHg4VmlJNFVLSGdBY3VXR0RSdkE0UVp6V1h3Q3hHSHNiT3dmQ0hrWk5kWVlHUi9vNk9nY2dCa0V3akEyQ0RnNk9tNGt5VUFROEhEM0tKU1ZrY1ZJZzJHaFlRczhQRHdXa09wbEJxQ21DLy8vL3pmczdPck1mL0hpaFFISW0rOC92RGRZdFhyVlFwSVNOcnJYZ1ZRaFVwcmRUM1JPZ1NwMndHTitJMGxaRDVaa0NHUkxyQzVrb25acFEzVURzWG5aSHVpZEJpTDBLaEJqNEFFU0hMTVFXcERRRmdBRUdBRHRGM2ZhcDJ1Y2RRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3Rhc2tsb2cucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVN4SlJFRlVlTnBpWUJqc2dKR1FBazB0VFFVZ0ZRREVDNjVmdS80QnlBZXg3WUY0STVCL0FGMDlNd0hEQklEVWRhaUJGcUtpb2grQjlId2d2Z0RFSFVEK3l6ZXYzMXpBNlVLZ0FRbEFLaDVKU0FHS2tjRUhJSGFFc3M4RFhZbGlCZ3VhWXBEbUIwQjhFWWo3c1RoNkFoQS9CQmtFQ2dLbzRRejREQVNCaDBCYkp3QmQ2dzlrT3lDSkh3Q0tGMEo5OGdIcTlVQjB6VXk0d2crbzJSSHFuVVNvU3dLUndqVWZ5ZnNFWFlnZXd5Q1hHSUppR0NvOEh4b3NIN0RwWVNLUWFoS2d5ZVVDMUlJR0lHVUFkVFVET1FZeVFDTUJaRmdCMUt1QlNLNWxJTW5MUUtBUGloaWdZZmxRYnliQ1hFdXVnWTNRSkxTQmtFRjREUVM2YUQ5YWtxa0hpcUZiUkx5Qm9DUkRSQjdmVDI2a2tBU29iaUEyTDl0RDB4c2hvRUNNZ1FkSWNNeENhRktpTFFBSU1BRFQ2bDBpa2M4cE1BQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3NtYWxsL3Rhc2twcm9ncmVzcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TURORk1USkVSRFk0UmtNM01URkZOa0l4UlRVNE1FRkdOakV3TjBJNE1rWWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRMFpFT0VNek16STRSa00yTVRGRk5rSXhSVFU0TUVGR05qRXdOMEk0TWtZaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa1U0UXpZeE1ERkJPRFpDTVRFeFJUWTROREkzUVRFMk1rRTRSREkzT1RVMUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rVTRRell4TURGQ09EWkNNVEV4UlRZNE5ESTNRVEUyTWtFNFJESTNPVFUxSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K2pXaVcxd0FBQXJsSlJFRlVlTnFrbEYxb2tsRVl4NC9mWnZoUkl6S2JIOVZGREhHR05ZaHVLb2hXTVJHNkNLRVd5N29TZ2xpTUd0RUhHcU9pRzcwWUs3Y3I2VzRLRGlKMjRaYUIyMkFUSWgwSlRyWkpkcWViMCtiTXFmMWZlUzN6cTQwTy9DNThuc2YvT2M5ei91OWhsRW9sMG1yMTlmVVJuODlIQkFKQm96Um5jM056Mk9QeFBPanM3RXhTQVNiNXYvVUtYRjllWGxaVUFqc1ZaSUZ1SUsrS1djQTlzTWZsY25YdldKREpaRlpPOGdnNHdYNXdGenltRW53K253U0R3WjV3T0Z3dVpOY0tSQ0tSam5nOHJtSXdHTkJpNWxPcGxJTEZZcDFENmlSNENWNkE5K0FkdUlUY1B0U2ZTU2FUSGZpOStKY2dkaUVHZzhHbVZDbzNKQkpKTkoxT3E2UFI2SEVlajNlVkxua0dSc0FwY0NPZnp5OFlqY2I3aVVUaXUxQW9UTldkRUtjaFNHYkh4OGVmYWpTYVJZZkRjY0pxdGI3aGNEam5rZTRCV2NBQUluQU04YUxUNmRST1RFek1vdjViM1F5cGVhRUZzclcxVmZZSWR2K3MwK21lNUhJNXF1NEhYZllSUEFSYWtBWUhVWCtrb3NGdWRTRm9nN1MxdFUwV0NvWEpCbW5xMUVFZ0JvWGQycWJSMG9EWjJtRExFNjZzclBBQ2djQk5XSU5EdDV3QkcvVC9qbEszQ2k3L1U1Q2FJMjZRREEwTlBZY2Rla1VpMFJkOG9udVI0dEVtcHpwYkFGL3BXRXRCaGxnc1RrOU5UWjMxZXIyMzVITDVhWWd1MFFiL1hRTktWVjhSYVRwRHRKZHp1OTNLL3Y3K1liUFpmS2VycTJzcG04M1dsalY5VWRnTjJzM2JiRGE3VENiN3FkVnFzek16TTFmWTdJYVRvVVEvVmQ5d25hQktwU0x0N2UySDF0ZlgyV3ExZW1SMGRQUmlMQllqTUhEZFdNQTJmY3ZGcG9KemMzTWFmSDY2c2JHeGEzcTl2dXc5azhsRXBxZW5tNzJINVRleDRReFhWMWU1QXdNRGI3bGNMbCtoVUVRcThXS3h1Q3R6bGdVem1RelRZckhZTUwrTVZDcjlBSXZ3YTU2dlZtdWJIc0dmbGtPaDBBRy8zeThmSEJ5OGJiZmJYOC9QejEvQUpvZXAzTnJhV3RtWFRSWWxSTlhsSzRGZkFnd0E0L0R5TXcwS3hGd0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3RpbWVzaGVldC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVHRKUkVGVWVOcXNWTHNSd2pBTURaOEIwcVJQQzFWR1lBUW9xUWdUQUJNQUc4QUVrQWxnQTBKSG1RcEswc01kbEZEQjA5MHpaMHhDVEE3ZDZlekk5b3VrSjhseC9peVZvZ3VOWnNQRkV2QXpQZXdQNmMrQUJBbWhBNmdQalhuVUVsQm9CSjBCL0ZvSUNERHhac1dIY3p4YUcrY0NPcWJYSFp6SDM4SUxvQmZvMExCdkNLVGJRdWpEdEZjTnpBVzltaFhsRm5lV1dQb1NEVlAwRGloL3hITEZ4WWt0b3dTVmtJZFpIZ29COHhLVk11WGJEOERBSk1EU3kwUWlJNWxPWFdNdXlTSEtKNk1EN0xPdXBGVDNCV2dwQWN2RmxDaXZaQjVsMncxdmp5cGtQWWNKak8wU1lBTGtNcGR2Z0pITzFnOGlhVmhuc1N3MTVadGRVdUJkeVA0ZUtWdE5iYzZuODgzenZLMTBDOVk3dm5jV1lOSlpYUlZ1MmVHZzJHNWxEWWR2NDB0Qzc3RytFcTEwSEhhVTNmaktLV3pmZHNEK1haNENEQUJIUkhmbkhkNGhGZ0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC90b3VjaG1vbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBUEdTVVJCVkhqYVl2ei8vejhETlFGQUFERVJVdkQrN3crRzJlL1BHVlMrMnFmeTZQZEhnZ1lDQkJBakxoZSsrL3VkWWZPWDIwSUxQMXhzdi8vN1E5cVhmNysrcTdJS3RTWUtHSFFIODJuOEVtVG1aR0RFb2c4Z2dEQU0vUDcvRDhQbXo3Y1lnQWFsM2ZuOXZ2M1AvMzlDLzhGZVlXVDQ5Zjh2Q0Y4ejVwQk1yeGExT1dMSktRMFVSVFVXSUlEZ0JuNzc5NXZoMlBmSERMUGVuek83K09QbHpOOE0vd3lBbU9IM3YzOE1ySXdnVFJDTjdJek1ERi8vL3diU0xBczh1WldMTXdWTjNtbXhpekN3TUVKQ0R5Q0E0QWEydmpraXRQampwYTdQLzM0bGN6Q3lNSHdEYXBKazVtRklFelJpQUdrQWdhcy9YelBNL1hDQjRkV2ZyMkFEdnY3Ny9WcUNoYWM0VzlCa01VZ2RDQUFFRU54QWczc3pEM3o0OTlPZWhRSGtnbDhNL2p6cURPVWlWZ3pQZjM5aHVQWHJMVmlOQnBzSWd6Z3JOMFBIbTZNTVc3N2NadUFFV2d3S0lsa1d2b0lUaWtrVFFXb0FBZ2dleTN4TUhGOWc0U1RQd3MvUUxPckFvTUFxQUF5R0p3eFpMN2FEOFZGZ2tJREVRSEpBUXhoKy9nY0ZCek1ERnhNYko4d2NnQUJpZ1RIK2cwT0pFUmhxL3hpS2hDMFlSRm00R043Ky9jYVFEdlRLcDM4L2dUTC93ZDRIeGI0WUN6ZFlUZDZMWFF6TVFBUC9JVVVzUUFDeElNY1F5UHM4akt3TXlxeUNETUJrd2lEQXhNSHdGMmhRdFlnTmtQd1BqbWt1b0RkQmNpcHNnZ3c4VEN3TXY0R3VaR1pFSkdlQUFHSkNNS0JNWUdReUFtTjEycnN6REtzLzNXQmdBN29BaElHeENxWkJZaUE1c0g4WUlZbm03LysvOEJRUEVFRElPZVVqVUFYUTl0OE1EMzU5WU5EbUVHVklmN0dGWVFNd1RjTEFKaUFiSktiTEtjWndINmpteTkvZllFUC9NaUM4REJCQUNCY3lRa0tTR1dobno3dmpESXBBYitjSW1qS3MrbmdWSEJRZ3ZBTElCb25KTVBPQjFZQ1NEbnB1QVFnZ3BERDh6L0FIcUlrTnFBaVkxUmltdkR2TmtDQ2d6eUFPakFBbVJuREtabWdYZC9yL0FwZ0dwNzAvdy9Eazl5Y0diaVpXWUZyOEF3clRYekJUQUFJSWJxQUNtOENtUjc4L2VmejgvMWVJQ3hneEc3N2NZRGp6NHhsRFBOQlFPUmIrL3lBTEgvMzV4REQvdzBXRzUzOCtNM0FEMVh6KysrdVhHQ3RYbnorditrcVlPUUFCQkUvWWI0QkpaTmZYZXp6elBsekl1ZnZyWGNYLy80ejhvQ1QwRzVyV2tMMEcwc0hLeUxUUGdsTTZ0MUxFK3BvS214QURLSGVCQUVBQVlSUU93T3pFc1A3ekRYNmdTNG9lL1A1UTlJL2hQdzhqdEFpQXFueWh5eTVla0Nsa3ROS0JTeDV1RUF3QUJCRE80dXN0TUFGditYeGJhTW1ueXhYWGZyN0pBYnFXRFZqS1RJem4xNnQzNVZiNklzRE1nVlVmUUFBeEVpcXhRUzZlL082VUJOQ05RcmxDcHRlNGdCR0JEd0FFRUNPMXF3Q0FBQU1BR1JtUEFaSGY2bzRBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC90cmFuc2xhdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVIxSlJFRlVlTnJNazgwTmdrQVFoZFZ3Rnl1UUs1NmdBclVDc1FLaEFyVUNZd1hhZ1ZJQmRnQWRDQmM1U2dkU2dtK1NJZGtzTEM0WUV6ZDUyV1JuOXN2OERnYi9mb1lxZ3oyemZWd3JhQUdaZ2ltQnd2eVJYN1dBQU5IbkNMS2dJd0h3dVJCc0hyUmgreHEyVkFua0R6RkVUbnM0bHkwWjdIQWRvS1VNRlowaWttNjlDQW85eGJlUllMUzRYb0V1RUpHZCthOVhBM0p0a3JZMEZTZUVuQ1lnMVMvN2RteEVJRVUyN2NFWXE0QTBYeDUzdXN1aFV0MXFRRzU5eXFPZzIrVUxya0ljRzBQeW9RN2Y0WmlwTmtHWTF4Tkg1MzdhRk9wWURPQkVlak5aYzhqbmJJSnFpMXAzR1lCWHRRR2NGczFuOVRIbFhXN2NEa09SRlRYSUFXekxNK2JxenFjS21IR05DbzYwN0RPSGNvU2RZVzNBdEEvc0orY3R3QUJsM1d4NnRDUTdwQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidzbWFsbC90cmlwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFVcEpSRUZVZU5yTVZNRnR3a0FRdEJFRjBBSGtDUjlNQlRFVm1GU1FVQUYwQUZSQUNaZ0tzQ3V3VTRHZFQzZ0dPcmdTbUVGekVsZ1duSjFIY3RMb3JOMWpkbTcyRnMvN2l6VWNEUWRBNEhLMjQwQzJ3MVlBbWI3YkUwclZESGdSUXNRK0h2Mm0rNlFneVpMajk5R293QjdiNERkWExwOFJOUGF3c2w2QlUrTXI0Mm85YkV0Z1ZVa3h2bVBYWWNQYVNTRU9oK29xMVV4dUNuQUZpa1dJRlhWUHFWTjVhd2Q4RWhzb21BTDBNQ2NSOHp6SEdFRFNsSVVSdjFQcWk0ekJCUkNUVERrcWpkVHBPV0JVakdkU2tPWlNhTi9tRzJJblg1Vi9kTkNJS0pDeVQ2QVBuTldNZDNWK0pqOFRLYVU5Zko4VHEzQXJvaXNKS2lVM1ZyQTVZNUY2dGhsU0Y2b0l2MlBrNXI3RDZJWHF0dEZWNDdwWlo1NEQwSFY4ZjdhYis3b2t2YnRyeWdOMTlDbVRiMTlTYXJ2ZmFsSXltWC9XWHVwZkoyaE1hSDJwakpwcE05Ly9hMTBFR0FCRXpuVjVHSVRMbmdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvdW5kby5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUE1K0dsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRLUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE16SWdOemt1TVRVNU1qZzBMQ0F5TURFMkx6QTBMekU1TFRFek9qRXpPalF3SUNBZ0lDQWdJQ0FpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBEY21WaGRHOXlWRzl2YkQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncFBDOTRiWEE2UTNKbFlYUnZjbFJ2YjJ3K0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUmxSR0YwWlQ0eU1ERTJMVEV3TFRJNFZERTBPak00T2pBMkxUQTBPakF3UEM5NGJYQTZRM0psWVhSbFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5iMlJwWm5sRVlYUmxQakl3TVRZdE1URXRNRE5VTVRZNk5EazZORFV0TURRNk1EQThMM2h0Y0RwTmIyUnBabmxFWVhSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNHlNREUyTFRFeExUQXpWREUyT2pRNU9qUTFMVEEwT2pBd1BDOTRiWEE2VFdWMFlXUmhkR0ZFWVhSbFBnb2dJQ0FnSUNBZ0lDQThaR002Wm05eWJXRjBQbWx0WVdkbEwzQnVaend2WkdNNlptOXliV0YwUGdvZ0lDQWdJQ0FnSUNBOGNHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUNHpQQzl3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2U1c1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21JM09USm1PR00yTFRoaE1qQXROR1UwTWkxaVpUWm1MVEUxWXpVM1ptWXpPVEl4TXp3dmVHMXdUVTA2U1c1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tSdlkzVnRaVzUwU1VRK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPamhqWkdNMU1ERXpMV1V5TURNdE1URTNPUzFpTWpnNExXWmxObUV6T1RRMU5XVTJZand2ZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDRLSUNBZ0lDQWdJQ0FnUEhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDU0YlhBdVpHbGtPamRrWmpsbVlURmtMV1E1WlRNdE5HRTVPQzA0TURNMExXVmtaVGhpWmpJME16STFZend2ZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcFRaWEUrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNllXTjBhVzl1UG1OeVpXRjBaV1E4TDNOMFJYWjBPbUZqZEdsdmJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tbHVjM1JoYm1ObFNVUStlRzF3TG1scFpEbzNaR1k1Wm1FeFpDMWtPV1V6TFRSaE9UZ3RPREF6TkMxbFpHVTRZbVl5TkRNeU5XTThMM04wUlhaME9tbHVjM1JoYm1ObFNVUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcDNhR1Z1UGpJd01UWXRNVEF0TWpoVU1UUTZNemc2TURZdE1EUTZNREE4TDNOMFJYWjBPbmRvWlc0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMUxqVWdLRTFoWTJsdWRHOXphQ2s4TDNOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1ellYWmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tSTNPVEptT0dNMkxUaGhNakF0TkdVME1pMWlaVFptTFRFMVl6VTNabVl6T1RJeE16d3ZjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uZG9aVzQrTWpBeE5pMHhNUzB3TTFReE5qbzBPVG8wTlMwd05Eb3dNRHd2YzNSRmRuUTZkMmhsYmo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVdU5TQW9UV0ZqYVc1MGIzTm9LVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21Ob1lXNW5aV1ErTHp3dmMzUkZkblE2WTJoaGJtZGxaRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWVVtVnpiMngxZEdsdmJqNDNNakF3TURBdk1UQXdNREE4TDNScFptWTZXRkpsYzI5c2RYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1PbGxTWlhOdmJIVjBhVzl1UGpjeU1EQXdNQzh4TURBd01Ed3ZkR2xtWmpwWlVtVnpiMngxZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlVtVnpiMngxZEdsdmJsVnVhWFErTWp3dmRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNDJOVFV6TlR3dlpYaHBaanBEYjJ4dmNsTndZV05sUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNakE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTWpBOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS1BEOTRjR0ZqYTJWMElHVnVaRDBpZHlJL1BwOGFFbFFBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQVV0SlJFRlVlTnJNbE1GTncwQVFSUjhvQmJnRWM1MS9jVG9JRlFRNkNCV1FWRUNvSUtJQ1VnSlVFRk1CdWZ4elVvSTdNSmV4Rkt3NEJDa1NqTFN5TkROK3V6UDdaNi9hdHVXU2RzMkY3U1JRVWlWcGRSR2dwRG53Q2N4L0E3enE5MUJTQ2J3Q0pYQ2YwTTRhb0FaZWJOYy9BaFAyQ2F5Qlo5dE52d1hBQkhoSzhFTS9aOVRib016dmU1Y29hZElGODFSYlNldXNZZ09NZnlwNUJxeTZFd0E3WUgrdzRZdnRwYVFpZ2UrMmw0T1hZbnNOM0dTL2R1bGUyQjVuVDZlU1ZsbkJBbmo4Qm1qYmRuQkZ4Q1FpTmhGUkh2aktpR2c3WDBUc0lxTHE0cU5URXNpZTFUM2ZYbEtkNWU5ekZYOHpLUU9DbndBVnNFMVhsZjArS3B0VG9BSzRTd1VzYkRlcGlNYjI5aVJRMGlZRjNMY2F1TGRkNXdhcmxCYm5uUEIyYUx4eVlsNkJOOXR2NXdJclNYMWZBVXlCV1k3bXNwOHdCTnptajlNanNRL2d4dmIrck5mbTM3M1lYd01Bb1ppcnVWM21CdjhBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC91cC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBS3hKUkVGVWVOcGlZQmdXUUZOTDB3Q0lGWWhSeTBLa21mMVEycEdRUWtZaVhKY0FwT2JEREx4Kzdmb0JzZzBFR2lZQXBNNERNY3k3RDRBR0t1TFR3MFRBZ1FWSWhvR0FBdENTQXJKY0NJMEVrT3NFMEtRK0FMRWkwS1VmU0hWaFB4YkRHS0JpOVNTNUVPZzZCeUMxbjBCd0dBSmRlWUZZRi9hVGtKVHd1eEF0bVJBQ2dVQlhiaUFsMllDODdZQW0zQWcwcElIY1pFTXlHRFdRY2tDbytGb0l4QWZSeEE3UXRUQUdDREFBVUc4blFVVVdZa1lBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidzbWFsbC91cGxvYWQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUs5SlJFRlVlTnBpWUJqc2dKa1lSWnBhbWcyaW9xSUtiMTYvdVVCSUxTTVJoaWtBcWZOQS9BR0lEYTlmdS80Qm4zb21JaHhZRDhRQ1FBd3l1SUFpRndKZDV3Q2s5aU1Kd1Z6NWdGd1gxcVB4QmJDSUVXY2cwSFVKUU1vQmkxUUMxT1hFR3dqVUFISkpQeDZIOUpQcVFwQUxMa0F4T2pnQUNrdGNyaVExVWhpQUVjSklhYkloQ1F4K0Exa0l5SCtBUnNMQUFVYTBXRFVna1A2d2dVSmd6Ri9BNVdVQkhMa0RIeEJnR0ZJQUlNQUF2aThtZWJqNy85Y0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3VwbG9hZDIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVhGSlJFRlVlTnJNVkRGT3cwQVF0QjAzZEc0c3BjT1VvU0l2aUZQUmhoZVFkSFJKWG1EOGdwaVNDdjhnOElLWWpnNVhwTXhSazhKUFlGYWFrMDZudXlSUUlGWWEzZmwyZDNadmQzMUI4TjhsL0lueDRISndoU1VCMnUzSHR2czFJWWdtV0ZiOFZFQU9WQ0JkSGlXRXMyUXcxWmtBa3NrR21JR2dwazJHWlEwME5xbUxjTVB0S3pEbnZvUmo1UWk4QTRiUUtYMGVPV29rdUlIUnZheFUxWFpnMXZBWm1EZ3pCTm1VR1NVd3ZqaXh0aEwwSEZqcUprVlVQR0VwZ0Fjaks5TXhGemc0Rzk1b3g0U0NrSnVDdGVnOG1ienpta09QUG1lVHhyMDBUWVhzRWNadkhtTUplQWYwWWZ1NS85cTN0ZzNPRkhSbjJGNUhIQS9sSVV1TStSTlo4U3p3WEQrTE9HZVp4MmpCZ0ZvU25ubEZDRitraG5aa2ZvK3M3T1c2STArV3QySWJHbDJXYnBXYy9zNGFqWUtmWStnYVIya1d1ckV4dXpmajRaelhxaytjd3pVVDBjRlViRXkrL0ZxVncwK3g0QUhyYlVwSjMvYm9hMlA4MHk1cFhTK05TSHpBcVR5ZzYvN3N4ZjRXWUFCdjNvaEVGQ2M0S2dBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4nc21hbGwvdXBsb2FkaW1hZ2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVZwSlJFRlVlTnBpWUtBeVlDUldvYWFXcGdDUU9nL0VodGV2WGYrQVN4MFRDWmF2QjJJRklONlBUeEV6a2E1ckFGSUpVSzZFcUtpb3dKdlhiM1pTNnNJRFNQUkhpZ01iNUVvZy9nOTFMZjBBSTVHdWN3QlM5VkF1S0lZTGdUSDlBSnRhRml5YVFVbkRBTW9GYVp3QXBPZERZNWdCeWRCRWdpNEVHZ1pLR2dFaytuSUQwTkpBWExFTVNyd01jYkZ4RE92V3JzUFFhV1pxeGlBdExjMkFUUS9lWkhQanhnMkdSWXNYd2ZrQkFRRU1KMCtjWkNnb0tHRFl2V3MzUTBWRkJRTkpPZVhVNlZNTUd6WnNBTE5CTGlvckxXUHc4L05qTURRMFpCQVVGR1RRMDlVRCs0S3NoQTF5SGNqd0F3Y2c2ZnJEaHc4TWpZMk5ETTdPenVRWitQblRad3d4QVFFQkJySUxoNzM3OWpJRUJ3Y3pKQ1JBc3JLQmdRRkRmWDA5dy9vTjY4a3o4T25UcHd4VjFWVU1MUzB0RFAvLy8yYzRkT2dRdzladFcrRmhUREJoWTNYbDNyMWdUQXhBTnpBUkxVY1FBeDdRdEhBQUNEQUFxNjFvNmlUaXh2VUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3NtYWxsL3VzZXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UTXlJRGM1TGpFMU9USTROQ3dnTWpBeE5pOHdOQzh4T1MweE16b3hNem8wTUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveFFrSTVNRUUyTVRjelFUQXhNVVUyUVRZNE1EazVOREEzUXpZNU56UTNOeUlnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCT0VFeVJrSkVSamhGUVVVeE1VVTJPVU5GT0VNMlFVTTVNekZDTVRnd1FpSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEJPRUV5UmtKRVJUaEZRVVV4TVVVMk9VTkZPRU0yUVVNNU16RkNNVGd3UWlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOUzQxSUNoTllXTnBiblJ2YzJncElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOVEU1TVdNd09XRXROalJoWmkwMFl6STJMV0kyTmpZdE1UazRPREZoWkRVek9EYzFJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakZDUWprd1FUWXhOek5CTURFeFJUWkJOamd3T1RrME1EZEROamszTkRjM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCswYlVEYWdBQUFtbEpSRUZVZU5xVWxVdUlVbEVZeDYrYWp6RVNINHNtV2xnTGFSQUdCc1RlcXdoa0tBaUVScEhBUmFzR3hFeDdnSXV4Y0dBQ29ZVUpObTNUUWxEU3lnamFTQlE2Z29xUWlVTVVOSkFvYWlHYWNsUDduOEVaVEs3T25ROSttL1A0M2Z1ZDd6c2N6bUF3b0NaRk5wdmxPNTFPZDZsVXVpNFVDbWN3OUFYWVFZTE10OXR0S2hRS1VWcXRkbmZQZ1VteVJDSWhzRnF0NjYxV2F3WXlFNForZ1ZQQUF4NkFWMHo3SmdxOVh1K3QyZG5aZ3dxRjRtb3FsYUlnSmNNYklBWFdTUUpnYTN3ZmwwbFdMQmFGK1h4KzBXNjNyOG5sY3FyWDY0MU9FMmtHWEdMYXl5aXMxK3VIcXRYcUg1Vkt0VFVtMjRuUDRBaHJJZjdxdDFRcUZXMXViaDdqOFhoTVN4YkFEOWJDdWJrNTJtZzBSaTBXeTcxTUpzTVRpVVNqMCtlQkdyeGhMU1NCQ2orQ2lLNVVLZ2t1bDJ2QTBBV3dBcDZEbTZETXVzcWRUb2RVK1d5LzN6ODZyT29pa0lIdncxVFBnUStzaFc2Mys3VEg0M202dkx4OEczOFlIMmtiRWdyd0VwRERYZDB6WlRUMDRVQWc4TVJzTnQrRk5DNFdpOGZicGdhV2dCRmNuQ29rcWJwY3JoV2xVdm5PNS9POUpoV21hWm9waVovZ0RyZ3ZHcXZZZjhKNFBLN0s1WEluYlRiYkdwL1BwL2FJdC9oZ3plLzNYMmsybTh6Q1lEQjRHUmY5azA2bnExTXNBdWY2SWhLSm1BdUZnb0JSaVBiUVNDU1NqMk5aVElzTnJEMkJmY2NuRlVWbU1CaktGUHNnbVpDS3lTY0ovNmJUYWRFK2hJSmgrOUNNUWxUMEsySmhIMElWT3FPRkMvQ05VV2d5bVo3aDdsNkxScU5ua3Nua2R2OU5xYmF5MisydTZ2WDZ4MnExdXJZenlCbDlBckNBY2pnY1MrRncrQVpFRFkxRzB5eVh5LzFHbzRGejMvNDJXY3dCNURtUTRRbDRINHZGSHM3UHorODYvZ2t3QUZCTTZKTmtOT1ZHQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC91c2VyMi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTzlKUkVGVWVOcGlZS0F5WUNTa1FGTkxzeDlJSlFDeEFCQS9BT0tKMTY5ZG40QkxQVE1CdytZRHFRd2c1b0FLZ1F6MUVCVVYvZmptOVpzVEpMa1FhSmdDa0xxUFEvb0QwSldDMkNTWThEaFFBWStjQUM0SkptcEhDazREZ1Y0NkFJMEViR0FEdVM0c3hCWitRSnhJc29IQVNERUFVdk54aEY4L1Nja0dhQmhJMDNrOGdXOEFURG9Dd0tTemsxZ1g5dU9MU1Nnb2dQb0N2NEhROUpkQVpLVG1FK1BDQUJKU1NRSXhCdHFUa3U3UXZjMUVTaTRnSnRkZ00vQUJpUVkrSUdUZ1FWSU1BK1lvL0FZQ0ZTd0FVZ3VJTUF5VVl3SkpLYjRNb09GamdGUzRLa0JwRUw0QXRQd0RBNjBCUUlBQkFPamNPSU1tS3hKdkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvdmlldy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBV05KUkVGVWVOcnNWTUZSdzBBTVBMc0N1d0w4VFQ1QUJZUUtTQ3FJWFFHNGdnd1ZrRlJnVTRIVGdVMEg1a09lcEFSM0FMdVpQVVljeEFNUFpuaEVNNXF6SlhtMTBrbDI3aVQvVHFJeDUyUTZ5WERNb0psTUEzUzdlOW50ZndVSUlJS3NvQmZRRHZvczF4bDBEdTJoOXdEdVJnRUJsT0NveEtyRUIvVTN5UmlUSzJFdDRPRUxJQUxKcG1WSkFodGtXNG1WTTh5MmFrY2orN1VIalFNd0JoY0dyRlc1S1d4TXZtRUY4T1hzSS9SU1NWb3hkN0VlR29HdFRYVVB0S21IcjRoN3cza09YY2gzRUJMd29JZVNFY2llSlhBc2dsNFJJRld5bVhHbCtyajBseUpTdEhYeHlOU3dKNG5PRDV0NmxRWDJUUG9VR2ZSZTlEM0RTb0NGU2t6VVE3SzlVZjgrc1lPdGpBSWpCOVpmaXJmeGZGU2VLODBtYjdYWHhWV1dUQlRNVnlQcWhlbFBIbXhLcllSemdmRzlQTG9wQ0x6VDdQSG1OcHk1d0UrZ1d6RXRRdit4MWZQYnNEVHI1L1E4cUFWcnV5RS8ramtFdTAzWmovMFkva1RlQlJnQVdpaXVWczlWUXlFQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4nc21hbGwvdm9pZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBVmhKUkVGVWVOcXNWTXR4d2pBVUpLN0FKWmdqT1pFT29BT29JS0VDb0FKSUJkZ1ZHQ29JSGNTcEFKL2dDQ1c0ZzJRM3M1b1JzbVFCdzV2WjhWaDZXcjNQNnZWNlQ3YVhtTVBnZFpEaU05VHY1WFE4WGU0bUZNa0hNQWN5b05MV2lLVEFEc2hCM2tRSlFjWm92blN3d0tHOXMwL1NsYUtlWXI4S0VvcnNHNmlCRk01dkhhVmdCaVV3dGtrVHg2OVVWR01kS2tPRThObmlNMk0yS3RFMW9XNXM0TGpXRWtrbld1OGlaWFFMWDRSc1FHRTVzK0JUWUtOU2hPeFRaMXMxK1EzVWFnR2M3YlE4UG1kemFXSjFyZzZrbFd1djdJaVNpa2g5VFFrWmk1L2g0blhNTVZFVWxmVWFmRkUySXAwckc5Y28vc2FOc0lienBJT1VhUzhsazh6UmJxcjlLOEtkdDF0dG1XejFrb3p4MWV4YkwwVmRQRWpZZVdSZ0hOU29IOG9LNkp0M25YaDB0NkpVSXJYL0Y3MDZQN09IeENQRFlhZzBSOUhoNEtUUEtOK2xMNk5SbzRUaTV2SGxJYzhraTVzRzdOUHRUNEFCQUVDaWxHU1czS0UzQUFBQUFFbEZUa1N1UW1DQycsXHJcbidzbWFsbC93ZWlnaHN0YXRpb24ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVdGSlJFRlVlTnJFa3pGT3cwQVFSUk5EVHhyWHVDUTB1S1FqbkFCemdqZ25DQ25wYUNsOUErY0VoQlBFbklCTlErZ0lkU0poYnNBTSttdStWcnZHU0pFWWFiUTczdWZabVoyWlh1OC9aSGc2SEhSbG80NWNKazZ6ZlRvY1EvL3VVQ0laaWVaa0o3S01FR1ZDMzFQbXJQVHBKM3Q0SWFwdjlnajdUSjFodnhCZEVhZi96ZTNaK21WdERtSFVXSThRamRySG91OXdzSElDOFhFL0VWSWFON2had1ZwdW5BV3FudU5OaldZajNDVDBobE9rVU5BVCtJUzV6TnRXS01ZYjJjKytSMGN4UGtKYzVMVEduR3pkWHdXaUs4a3V1S1VpbW9UY0FVdFBxd3hROFlJNHJYeHFPUnRoanJKdkxDWDdHazQ1YlhWbVBOd0NrVGNPcDA2Nm5QYllVd3hYbWlMMnRSaXlMa1V2Y1dPRjhHMnFlbmFOVm1vNDJ6TEVQWWpPMU9FU1Rkb21sZWptbDFiNjVxSkFDcTQ4MFNpMmlUblliWGNtanVOUE1VNlFBb3VtZVMvUGNDZmNxM0E2Z3VjdDNLMDdlaW5CT25vbU1IcWR1TDNJbHdBREFFOUxmbEovWEVCZEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4nc21hbGwvd2l0bmVzc2luZy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM1pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNeUlEYzVMakUxT1RJNE5Dd2dNakF4Tmk4d05DOHhPUzB4TXpveE16bzBNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG93T0RneVlqUTJZeTB6TmpRNUxUUTBOVGt0T1dOa1l5MWpNamxpTVdFMU4yWmlPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UVRoQk1rWkNSVE00UlVGRk1URkZOamxEUlRoRE5rRkRPVE14UWpFNE1FSWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRVGhCTWtaQ1JUSTRSVUZGTVRGRk5qbERSVGhETmtGRE9UTXhRakU0TUVJaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFV1TlNBb1RXRmphVzUwYjNOb0tTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakUzT0RRM09HWTJMV1EzWXpndE5EZ3haUzA0TjJNNExXRTFaVEV6WW1VMU5XTXpaQ0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95TTBFeVFUTkdOemRHTlRVeE1VVTJRVGN5TVRnelFrVkNOekpDTkVGQ1JDSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QdklpRWFJQUFBSy9TVVJCVkhqYWxOUjdxSXRoSEFmdzU3eXZNYmVWc1hEc2FQTUhtdFlXT25hUTVSSnl5Q1c1L0xIRFVyU1M1TkxXb2poWUxpV1JXLzRRSVRxeVl4MXovTU1TdVIrWGtPT1VzelhLVW5PbWRtRTJ2ai85M3ZXZU5ZN3oxS2QzNzd2bitiM1A4L3grNzFQVjJ0b3EvdEg2d2dRWXd2Y1plQWRkZEZNb0ZJVEQ0UkI2dmI0MG9NcGlzVlFLTkFyV1FEMllZQkEvL3c1eGlNQzVUQ2J6S2hnTUNydmRYaG9vVlFqbWdXZXdENlpDTmVpWUFTYkNGbmdBaCtMeGVILzE0UEtBQitFRURCYzl0d0ZhclhhYnorZHJpa1FpdWtvQnZiQmQ5S0pKa2lUeStYeTl4K001RlkxR1pYb21Hd3kwQ21HRGk5Q253cmgydUFRaGVFb3pnNUhLbjdJc2kydzJhMDBrRXAxT3AvT0ZrcFN6c0xZczBBZllBWmVoSDIvRFYvZ0dLMm4vb0VicG5Fd20zNGJENFZwYThtU1lVeGFzR1NiQkRUak1tWTFDREk1QkM5VENRMlVBOXRNU0NvWHFLT0FHOVJMUXJzSlNzTUpyV0E5SFlSVXZlU05maDhFODdHR2JNakFXaTAyWHVBeGtmdllTMXNGOHVBbEdXTUV6cEJMYUJMZGdQRjlIbUV5bUJsdy8wMkNOUmxNanFZSlJ1OE43dEJjR3dpZjRDRWM0MkN5NHpYMnJNYnNEZnIvL0RZSmV3ZTgvT2FLQU9WWEF4ZlJXMk15QmFZWjF0RFJvNEJldTVyNWZNS09kZ1VCZ0xFcG1HWDdUczd6RWIvekJuY3ljMVVld2lKZHlFcmFDaFpORTMxa25MSVFPQkR1dlpCdXpiS2VBcHptRFNuTkNHSjV6Zlo3aEdmcGdLTjlUWlhUUVBtTm1VL2lnS0JxTnhyc1NsOEsxc3JLaE1ub0NEczd5YUU3RUdMNm5CRDJHbWRTNVdDd0tuVTUzeisxMnR5bGZ4bkUrWGRUbE13NnVjNG1FZWZsMGpDMkFhZXEzcDlQcFh5NlhxOUZzTnY5VUgxOUx1QWJsM256UHFWUktXSzNXWFRqR2RxTzR1eDBPelZ5RG1mOE5Sa3UxMld6N3ZWNXZJd1g3MndGTHl3bkFqQjdpdmNjQnV3ZWYyd1hNc1BTdzB1bHlIMmJEWEZqT1dSOU1MK2VhcGNPM2lVdW9LNWZMZFJ2OFc0QUJBSE1kMHFYVjV0TkxBQUFBQUVsRlRrU3VRbUNDJ1xyXG4sXHJcbidpbWcvYWRkLmdpZic6J1IwbEdPRGxoRUFBUUFOVS9BSXE3ZUxYY3FrU05PVlNaU0x2aXRPMzE2M081WEx6VnVaYlRpbjNFYk16aXhaWEdnMzI2Yk5mcjBZck1mb2JLZW8zQmUzMjhabXVyV3JyZHI0M01nNlRPbExUWnBXZWpXbmV0YU1YZHVlUHU0cWZKb2NyZXhXKzFXS3ZVbldTZ1ZrbVBRSmpNaUsvZnBxRFpscHZCbUlTMmIzYTlZSk8vZjZiUWxuWEJaTXJweGQ3eTJybldzR0dlV0hpMFpIK3lhbDZjVm83U2c0SE1kWmZNaFpQTmlKM1lrcFhBZ21XclZUMkdOV2lyVTZYYm0rZnc1ZWp4NW5DNFdmLy8vLy8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFhdHdKOXdTQ3dXQ3hsYnFRUmdGWXkveHFtaWFxZ21ESXlpMkFCTVZnVGRTS1NDWERqRHdpbXdxdEVvQ0VRTWUrRUpNNHZHQ09IdytSNEpDUUVERzBJMkFTSVVEd3grRWlZR0NBc3RRaVVFQ0E5K21UNDlDUjRnUWk4QkRqS2FmajBSSGdKQ0FDRUlDU2szcGowR014QURRaXc1QVNrbUpxWWRCaFlDSkVJRkdBd0JqejBkd0JZU0lCcERDaDh1QVNFUkVUUE9PQWRGSEI4REVDZ29BQUlnM1VZN0d6QWdBZ01rMFZEeVJFRUFPdz09JyxcclxuJ2ltZy9hZGRjb2RpbmdyZWdpb24uZ2lmJzonUjBsR09EbGhGQUFVQVBlUEFDT2hlRTdQZ21QbWh6MitmbG5iaGVyeTZGN2dobm45akZQVmcvYjY5UDMrL2Z6OS9HcnRpR1d6VFpEU2hKQzhnNVBLZisvMTdtbnJpR2F5VHBMSWZ2RDI3R20wVWNEWnVJL0RmMkN2VG9HNWNxTExrWVc3ZGFUVGxhck5tVmFjVHFiU2xWS1pTdTcyNnM3aXhHbXhUM2pJYXJyZHJseWJVc0xidTdqZnIzYXlaTlh2MEpMR2dYdTdaYWJTazRxK2VybmNyYVhMbFpYTWgxT1hTRmlaVG42L2VLYldtYVhSbExuYnJzM3J5SS9QaEd1a1piL211MHVoUnZMMzhldjA2VzI1VldXaFhUT3llMFhHZ1BUNDgzekNhWVBMZG95L2ZLbmFuWWZKZTB5ZFRtcTJVbXUzVTRQTWRtV3hUWVRKZW1Ta1ZyYmlycFRQaFBEMTczKzNiOGJsd1pMU2hhdmJvTFRnclZTYVNZeTVnWGErYXFQYm1lVHU0NWpDaWF6Y283TFVvMjd4aXZUNDlHaXhWckxRcmZmNTlvak5lNmJJcExUY3FvYTFlOHZxeG1YRmVaUExnS0hQai9QNDhyamlzR3FpWktiVGxwYkFoS3pmb3l5c2UrejA2cXJQbTNtemFPNzM3ZkwzOFBmNzl2ajg5bWlvV1ZhK2FHdkFXMlNrVmFmSnBFUERmM0c0YW5Db2FNem54S0hOanRQdHpjUGt2bW16VUtuTW1MbmNyc2Jvd0lhMmZJaTdlSksrZ2YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFJOEFMQUFBQUFBVUFCUUFBQWpZQUI4SkhFaXdvTUdEQ0JNcVhNaXdvY09CQ1ViRWtPUElDd28zQ3l0NHNFTW94eUkwSEI0VVNKZ2dFWmdWV0hRNG1CT0ZDaU1mQXlVSW9jTWcwSm9OaHJna3FhS21pUmtrZlBvQUVCZ0FBWUloQTJxaytQSmtpeDR4WTRCSVlhRms2S01BQmdnRUVORG9qWkZEZUJRc3FBTmpTWWNQVmdVTUdHQkFnSVlySlhqOFdLQkFoQ0lMTjBKWVBVQ0F3SUV3Z21SWThaT2h6SjRHRXlBYzZSSGc0QVVWTm9vd01ZSERTUXNRV2M0Z0pLTGxUaHcyaUVoUWNBRUZ6cFNFQmRMOHdkQ20wSXNaTzdvc3pFTm0wQWthUVFCRmVNaTdOKytBQURzPScsXHJcbidpbWcvYWxpZ25ib3R0b20uZ2lmJzonUjBsR09EbGhFQUFRQUxNSUFOem03OTduOE5iaDdkamk3ZlAyK1VwOXNYSnljdi8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFBQVE3RU1sSnE3MFltVzN5Tk1mUmVWbzRFZ1h4YmFVb29hb0VkcUNMd0o5YmQya3Y2eVpFWVRqODBZSURva0RHNG93Q0JRQUo0NnhXcDlpc0p3SUFPdz09JyxcclxuJ2ltZy9hbGlnbmNlbnRlci5naWYnOidSMGxHT0RsaEVBQVFBSkVDQUhKeWN2Ly8vLy8vL3dBQUFDSDVCQUVBQUFJQUxBQUFBQUFRQUJBQUFBSW1sSStwQnV2dERwZ1VMaEJ5dGdycndDVVZGVW5saUlyZkducnJwcjR3Z281bktlSzZVQUFBT3c9PScsXHJcbidpbWcvYWxpZ25oZWlnaHQuZ2lmJzonUjBsR09EbGhFQUFRQUtJSEFOem03OTduOE5iaDdkamk3VXA5c1hKeWN2Ly8vLy8vL3lINUJBRUFBQWNBTEFBQUFBQVFBQkFBQUFNMGVMcmMvcTdJU1F1OGpTcEF3aXVHWVFsRU9VU2hWYTZvdUJBUTZDcndsNzd4dlphdE5heUN5RVFSSUFBd3lFTmxtWHdrQUFBNycsXHJcbidpbWcvYWxpZ25sZWZ0LmdpZic6J1IwbEdPRGxoRUFBUUFLSUdBTjduOE5qaTdmejgvVXA5c1hKeWN2Ly8vLy8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQUFBTTFhTHJjUzRiSTZSUWtKUmRZNzVSVkZIYlI5eldYcG5KUHBHcXNWWm9nRTQreUVRd0REZ0U4WEVUQUt3WWR2K09JcytzSm53a0FPdz09JyxcclxuJ2ltZy9hbGlnbm1pZGRsZS5naWYnOidSMGxHT0RsaEVBQVFBSkVDQUhKeWN2Ly8vLy8vL3dBQUFDSDVCQUVBQUFJQUxBQUFBQUFRQUJBQUFBSXJsSStweXdqL21nR2hBZ1V2dFpqdmNDV2JWb0hPWTZGcE9Ia2xlNHpDQjAvUS9FbzRKMlcxRGd4S0NnQTcnLFxyXG4naW1nL2FsaWducmlnaHQuZ2lmJzonUjBsR09EbGhFQUFRQUtJR0FON244TmppN2Z6OC9VcDlzWEp5Y3YvLy8vLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBQUFNemFMcmNUakFhNGhRcHVGQmFvK1RWMDNqa05HYm9kcUtZeXBDZUdZclZNQVR2YkFNTHFOaEFtOENpRy9DSXRWdHVOa3NBQURzPScsXHJcbidpbWcvYWxpZ250b3AuZ2lmJzonUjBsR09EbGhFQUFRQUxNSUFOcms3dURwOGQ3bjhOamk3ZlAyK1VwOXNYSnljdi8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFBQVErRU1sSnE3M1Y2TTA1L3NnV2lvaFFCSk54R09HeElrTWhBNUxLcXErczF5L09GZ1JnZ1hkenNSQkJRa3JUZWlHQkY1OGtHVFdDYXFTcmRzdWRSQUFBT3c9PScsXHJcbidpbWcvYWxpZ253aWR0aC5naWYnOidSMGxHT0RsaEVBQVFBS0lIQU56bTc5N244TmJoN2RqaTdVcDlzWEp5Y3YvLy8vLy8veUg1QkFFQUFBY0FMQUFBQUFBUUFCQUFBQU04ZUxyYy9xM0FKWlVzT09kVE9UZGdhRnpVSjRLa3hXbWFwMDZ1T3hBTElieGVRTkRLRHNTU25YQUlQQUIyTlVLZ2VCRHdEb1FCRGthdFdnOEpBRHM9JyxcclxuJ2ltZy9hbmltYXRvci5naWYnOidSMGxHT0RsaEh3QWZBUFVBQVAvLy81bVptZlgxOWV6czdPUGo0OTdlM3RuWjJmRHc4T0xpNHRiVzF2UHo4Kzd1N3R6YzNOalkyTjdlM3VycTZ2cjYrdHZiMiszdDdmVDA5SzZ1cnFpb3FMaTR1T2JtNXNYRnhkUFQwN3U3dS96OC9NTEN3clMwdE9mbjUvdjcrN1cxdGF5c3JBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgvaHBEY21WaGRHVmtJSGRwZEdnZ1lXcGhlR3h2WVdRdWFXNW1id0FoK1FRSkNnQUFBQ3dBQUFBQUh3QWZBQUFHLzBDQWNFZ1VEQWdGQTRCaXdTUWV4S2gwZUVBa3JsZEFaYnZsT0Q1VHFZS0FMV3U1WEl3blBGd3d5bVkwR3NSZ0F4cnd1SndiQ2k4YUFIbFlaM3NWZHd0UkNtOEpnVmdPRHdvUUFBSVhHUnBvalF3S1JHU0RDUkVTWVJzR0hZWmxCRlI1QUp0MmEza0hRbFpsRVJOMlF4TVJjQWlUZWFHMlF4SjVSbkFPdjFFT2NFZHdVTVpERDNCSWNLek5xM0JKY0pMVUFCQndTdHJOQnRqZjNHVUdCZExmQ3RhZFdNelV6NmNEeE4vSVpRTUN2ZFRCY0FJQXNsaTBqT0hTSmVTQXFtbGhOcjBhd283UkoxOVRKT1JxZEFYVkVFVlp5anlLdEUzQmczb1pFMmlLOG9laUtrRlpHaUNhZ2dlbFNUaUEyTGh4aVpMQlNqWmpCTDJzaU5CT0ZRODRMeEhBK21ZRWlSSnpCTzdaQ1FJQUlma0VDUW9BQUFBc0FBQUFBQjhBSHdBQUJ2OUFnSEJJRkF3SUJRUEFVQ0FNQk1Tb2RIaEFKSzVYQVBhS09FeW5Dc0lXcXgwbkNJcnZjTUV3WjkwSnhrSU5hTUFUWlhmanU5amY4MllBSVF4UkNtMTRXdzRQQ2hBQUVBb1BEbHNBRlJVZ0hrUmlaQWtSRW1vU0VYaVZsUmdmUWdlQmFYUnBvNk1PUWxaYkVSTjBReDRkclJVY0FBSm1uclZEQnJrVkR3TmpyOEJER3hxNVoyTVB5VVFadVJnRlk2clJBQmU1RmdaampkbTh1UlRoMmQ1YjROa1FZMHpYNVFwalRjL2xEMk5PeCtXU1cwKysyUkptVUdKaG1aVnNRcWd0Q0U2bHFwWEdqQmNobXQ1MCtoUUtFQUVpaHQ1Z1VjVElFU1I5R2hsZ0U5SUgwQmlUa3hyTW1XSUhEa29zZTlTd2NRbEhEc09Jazl5Z2lWYmw1SmdNTHVWNEhVbXlwTWtUT2tFQUFDSDVCQWtLQUFBQUxBQUFBQUFmQUI4QUFBYi9RSUJ3U0JRTUNBVUR3RkFnREFURXFIUjRRQ1N1VndEMmlqaE1wd3JDRnFzZEp3aUs3M0RCTUdmZENjWkNEV2pBRTJWMzQ3dlkzL05tZFhORUNtMTRXdzRQQ2hBQUVBb1BEbHRsREdsRFltUUpFUkpxRWhHSFdBUlVnWlZxYVdaZUFGWmJFUk4wUXhPZVd3Z0FBbWFicmtNU1prWmpEcmhSa1Z0SFl3Ky9SQTlqU0dPa3hncGpTV09NeGtJUVkwclQwd2JSMkxRVjN0NFVCY3ZjRjkvZUZwZFl4ZGdaNWhVWUE3M1lHeHJ1Q2JWanQ3OEc3aFhGcWxoWS9mTFF3UjBISVFkR3VVclR6NWVRZEljMGNmSUV3QnlHRDBNS3ZjR1NhRkdqUjhHeWVBUGhJVW9mUUdOUVNnckI0SXNkT0NxeDdGSERCaVljT1FzaFlqS0R4bGlWRHBSanVuQ2pkU1RKa2laUDZBUUJBQ0g1QkFrS0FBQUFMQUFBQUFBZkFCOEFBQWIvUUlCd1NCUU1DQVVEd0ZBZ0RBVEVxSFI0UUNTdVZ3RDJpamhNcHdyQ0Zxc2RKd2lLNzNEQk1HZmRDY1pDRFdqQUUyVjM0N3ZZMy9ObWRYTkVDbTE0V3c0UENoQUFFQW9QRGx0bERHbERZbVFKRVJKcUVoR0hXQVJVZ1pWcWFXWmVBRlpiRVJOMFF4T2VXd2dBQW1hYnJrTVNaa1pqRHJoUmtWdEhZdysvUkE5alNHT2t4Z3BqU1dPTXhrSVFZMHJUMHdiUjJJM1dCY3Zjemx0TnhOeklXMDY5M01GWVQ3YlR1bU5RcWxpc3Y3Qmpzd0FIbzY0ZWdGZFFBYmowUnRPWERRWTZWQUFVYWtpaE4xZ1NMYUoxSVlPR0NoZ1hYcUVVcFE5QVNSbERZaFQweFE0Y0FDSkRocURENW1SS2pDQVl1QXJqQm1WS0RQOStWUmxqTXlNSER3Y2Z1QmxCb29TQ0JRd0ppcWtKQWdBaCtRUUpDZ0FBQUN3QUFBQUFId0FmQUFBRy8wQ0FjRWdVREFnRkE4QlFJQXdFeEtoMGVFQWtybGNBOW9vNFRLY0t3aGFySFNjSWl1OXd3VEJuM1FuR1FnMW93Qk5sZCtPNzJOL3pablZ6UkFwdGVGc09Ed29RQUJBS0R3NWJaUXhwUTJKa0NSRVNhaElSaDFnRVZJR1ZhbWxtWGdCV1d4RVRkRU1UbmxzSUFBSm1tNjVERW1aR1l3NjRVWkZiUjJNUHYwUVBZMGhqcE1ZS1kwbGpqTVpDRUdOSzA5TUcwZGlOMWdYTDNNNWJUY1RjeUZ0T3ZkekJXRSsyMDdwalVLcFlyTCt3WTdNQUI0RWVycVpqVUFHNGxLVkNCd01idm5UNmRDWFVrRUlGSzBqVWtPRUNGRWVRSkYyaEZLVVBBSWtnUXdJYUkraExpSkFvUjI3Wm80WUJDSlFnVlc0Y3BNWURCcGdWWktMNTljRUJodytVK1FST1E0YkJBb1VsVFo3UUNRSUFJZmtFQ1FvQUFBQXNBQUFBQUI4QUh3QUFCdjlBZ0hCSUZBd0lCUVBBVUNBTUJNU29kSGhBSks1WEFQYUtPRXluQ3NJV3F4MG5DSXJ2Y01Fd1o5MEp4a0lOYU1BVFpYZmp1OWpmODJaMWMwUUtiWGhiRGc4S0VBQVFDZzhPVzJVTWFVTmlaQWtSRW1vU0VZZFlCRlNCbFdwcFpsNEFWbHNSRTNSREU1NWJDQUFDWnB1dVF4Sm1SbU1PdUZHUlcwZGpENzlFRDJOSVk2VEdDbU5KWTR6R1FoQmpTdFBURkJYYjIxRFkxVnNHRnR6YkY5Z0F6bHNGR09RVkdlZklXMkx0R2h2WXdWZ0REKzBWMTcrNlk2QndhTmZCd3k5WVkyWUJjTUFQblN0VFkxQjlZTWROaXlaT25nQ0ZHdUlCeERaQWlSWTFlb1R2RTZVb0RFSUFHck5TVW9OQlV1ekFhWWxsanhvMk0rSEllWGlKcFJzUk5NYXErSlNGQ3BzUkpFcVlPUEgySlFnQUlma0VDUW9BQUFBc0FBQUFBQjhBSHdBQUJ2OUFnSEJJRkF3SUJRUEFVQ0FNQk1Tb2RIaEFKSzVYQVBhS09FeW5Dc0lXcXgwbkNJcnZjTUV3WjkwSnhrSU5hTUFUWlhmanl3amx6WDlqZFhORUhpQVZGWDhPRHdvUUFCQUtEdzViWlF4cFFoOFlpSWhhRVJKcUVoRjRXd1JERHB1YkFKZHFhV1plQUJ5b0ZSMGVkRU1Ub2xzSUFBK3lGVXEyUXhKbUFnbXlHaHZCUkpOYkE1cW9HY3BFRDJNRUZySVgwa01LWXdVVXNsRGFqMlBBNHNvR1k0N2lFT1FGWTZ2UzNGdE5Zdy9tMUtRRFl3N216RmhQWmo1Skd6WUdpcFV0RVNZb3d6Vm1GNEFEZ09DQkNaVGdGUUF4WkJKNEFpWHFUNmx0YlVaaFdkVG9VU1IvSWkxRldiRG5Ea1V5RFFoSnNRUG41WlU5YXRqVWhDUEhWaGdUTnkvUlNLc2lxS0ZGYlVhUUtHSGlKTnlYSUFBaCtRUUpDZ0FBQUN3QUFBQUFId0FmQUFBRy8wQ0FjRWg4SkRBV0NzQlFJQXdFeEtoVStIRndLbGdzSU1IbElnN1RxUWVUTFcrN1hZSWlQR1NBeW1ZMG1yRmdBMEx3dUx6YkNDLzZlVmxuZXdrQURYVkVDZ3hjQUdVYUdSZFFFQW9QRG1obkRHdERCSmNWSFFZYllSSVJoV2dFUXdkN0FCNTJBR3Q3WUFBSWNoRVRyVUlUcEdnSUFBSjdFcmRERW5zQ0EzSU93VVNXYUFPY2FBL0pRMGFtQlhLYTBRcHlCUVp5RU5GQ0VISUczOUhjYU43ZjRXaE0xdVRaYUUxeTBOL1RhY1pveU4vTFhVKy8wY055b014Q1V5dFlMam04QUtTUzQ2clZLem14QURoamxDQUNNRkdrQmlVNE5VUVJ4UzRPSGlqd05xblNKUzZab3Z6UnlKQVFvME5oR3JnczViSVBtd1dMQ0xIc1FzZmh4QldUZTlRa096Q3dDOHN2NUhvMTI3YWt5Uk03UVFBQU93QUFBQUFBQUFBQUFBPT0nLFxyXG4naW1nL2FuaW1hdG9yc21hbGwuZ2lmJzonUjBsR09EbGhFQUFRQVBRQUFQLy8vLzRGQmY3dzhQNk1qUDdnNFA1SlNmNThmUDRGQmY1YlcvNG9LUDZ0cmY2L3YvNFlHUDZkbmY0SUNQNDVPZjVxYWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaC9ocERjbVZoZEdWa0lIZHBkR2dnWVdwaGVHeHZZV1F1YVc1bWJ3QWgrUVFKQ2dBQUFDd0FBQUFBRUFBUUFBQUZkeUFnQWdJSkllV29Ba1JDQ01kQmtLdElISW5neU1Lc0VyUEJZYkFEcGtTQ3doRG1RQ0JldGhSQjZWajRrRkNrUVBHNElsV0Rnck5SSXduTzRVS0JYRHVmelF2RE1hb1NEQmdGYjg4Nk1pUWFkZ05BQkFva2ZDd3pCQThMQ2cwRWdsOGpBZ2dHQUExa0JJQTFCQVl6bHlJTGN6VUxDMlVoQUNINUJBa0tBQUFBTEFBQUFBQVFBQkFBQUFWMklDQUNBbWxBWlRtT1JFRUl5VUVRakxLS3hQSEFEaEV2cXhsZ2NHZ2tHSTFEWVNWQUlBV014K2x3U0trSUNKMFFzSGk5UmdLQnduVlRpUlFRZ3dGNEk0VUZEUVFFd2k2LzNZU0dXUlJtamhFRVRBSmZJZ01GQ25BS00wS0RWNEVFRUFRTGlGMThUQVlOWERhU2UzeDZtamlkTjFzM0lRQWgrUVFKQ2dBQUFDd0FBQUFBRUFBUUFBQUZlQ0FnQWdMWkRHVTVqZ1JFQ0VVaUNJK3lpb1NEd0RKeUxLc1hvSEZReEJTSEFvQUFGQmhxdE1KZzhEZ1FCZ2ZyRXNKQUVBZzRZaFpJRWl3Z0t0SGlNQmd0cGczd2JVWlhHTzdrT2IxTVVLUkZNeXNDQ2hBb2dnSkNJZzBHQzJhTmU0Z3FRbGRmTDRsL0FnMUFYeVNKZ241TGNvRTNRWEkzSVFBaCtRUUpDZ0FBQUN3QUFBQUFFQUFRQUFBRmRpQWdBZ0xaTkdVNWpvUWhDRWp4SXNzcUVvOGJDOUJSank5QWc3R0lMUTRRRW9FMGdCQUVCY09wY0JBMERveFNLL2U4TFJJSG4raTFjSzBJeUtkZzBWQW9sallJZytHZ25ScndWUy84SUFrSUN5b3NCSVFwQkFNb0t5OWRJbXhQaFMrR0trRnJrWCtUaWd0TGxJeUtYVUYrTmphZ05pRUFJZmtFQ1FvQUFBQXNBQUFBQUJBQUVBQUFCV3dnSUFJQ2FSaGxPWTRFSWdqSDhSN0xLaEtIR3dzTXZiNEFBeTNXT0RCSUJCS0NzWUE5VGp1aEROREtFVlNFUmV6UUVMMFdyaFh1Y1JVUUd1aWs3YkZsbmd6cVZXOUxNbDlYV3ZMZGpGYUp0REZxWjFjRVpVQjBkVWd2TDNkZ1A0V0pabjRqa29tV05wU1RJeUVBSWZrRUNRb0FBQUFzQUFBQUFCQUFFQUFBQlg0Z0lBSUN1U3hsT1k2Q0lnaUQ4UnJFS2dxR093eHdVck1sQW9Td0l6QUdwSnBnb1NEQUdpZkRZNWtvcEJZRGxFcEFRQndldnhmQnRSSVVHaTh4d1drRE5CQ0l3bUM5VnEwYWlRUURRdUsrVmdRUERYVjloQ0pqQndjRllVNXBMd3dIWFFjTUtTbU5MUWNJQUV4bGJIOEpCd3R0YVgwQUJBY05iV1ZiS3lFQUlma0VDUW9BQUFBc0FBQUFBQkFBRUFBQUJYa2dJQUlDU1JCbE9ZN0NJZ2hOOHpiRUtzS29JamRGelphRWdVQkhLQ2hNSnRSd2NXcEFXb1duaWZtNkVTQU1oTzhsUUswRUVBVjNyRm9wSUJDRWNHd0RLQXFQaDRIVXJZNElDSEgxZFNvVEZnY0hVaVpqQmhBSkIyQUhEeWtwS0F3SEF3ZHpmMTlLa0FTSVBsOWNEZ2NuRGtkdE53aU1KQ3NoQUNINUJBa0tBQUFBTEFBQUFBQVFBQkFBQUFWM0lDQUNBa2tRWlRtT0Fpb3NpeUFveENxK0tQeENOVnNTTVJnQnNpQ2xXckxUU1dGb0lRWkhsNnBsZUJoNnN1eEtNSWhsdnpiQXdrQldmRldyQlFUeE5McTJSRzJ5aFNVa0RzMmI2M0FZREFvSlhBY0ZSd0FEZUFrSkRYMEFRQ3NFZkFRTURBSVBCejByQ2djeGt5MEpSV0UxQW13cEt5RUFJZmtFQ1FvQUFBQXNBQUFBQUJBQUVBQUFCWGtnSUFJQ0taemtxSjRuUVp4THFaS3Y0TnFOTEtLMi9RNEVrNGxGWENoc2c1eXBKanMxSUkzZ0VEVVNSSW5FR1lBdzZCNnpNNEpockRBdEVvc1ZrTFV0SEE3UkhhSEFHSlFFanNPRGNFZzBGQkFGVmdrUUpRMXBBd2NERHc4S2NGdFNJbndKQW93Q0NBNlJJd3FaQWdrUE5nVnBXbmRqZHlvaEFDSDVCQWtLQUFBQUxBQUFBQUFRQUJBQUFBVjVJQ0FDQWltYzVLaWVMRXVVS3ZtMnhBS0xxRENmQzJHYU85ZUwwTEFCV1RpQlltQTA2VzZrSGd2Q3FFSmlBSUppdTNnY3ZnVXNzY0hVRVJtK2thQ3h5eGErelJQazBTZ0pFZ2ZJdmJBZElBUUxDQVlsQ2o0REJ3MElCUXNNQ2pJcUJBY1BBb29DQmc5cEtnc0pMd1VGT2hDWkt5UURBM1lxSVFBaCtRUUpDZ0FBQUN3QUFBQUFFQUFRQUFBRmRTQWdBZ0lwbk9Tb25teGJxaVRoQ3JKS0VIRmJvOEp4RERPWllGRmIrQTQxRTRINE9oa09pcFh3QkVsWUlUREFja0ZFT0JnTVEzYXJrTWtVQmR4SVVHWnBFYjdrYVFCUmxBU1BnMEZRUUhBYkVFTUdEU1ZFQUExUUJoQUVEMUUwTmd3RkFvb0NEV2xqYVFJUUNFNXFNSGNOaENraklRQWgrUVFKQ2dBQUFDd0FBQUFBRUFBUUFBQUZlU0FnQWdJcG5PU29MZ3h4dnFnS0xFY0NDNjVLRUFCeUtLOGNTcEE0REFpSFEvRGtLaEdLaDRaQ3RDeVpHbzZGNmlZWVBBcUZnWXkwMnhrU2FMRU1WMzR0RUx5UllORXNDUXlIbHZXa0dDenNQZ01DRUFZN0NnMDRVazQ4TEFzRGhSQThNVlFQRUYwR0FncVlZd1NSbHljTmNXc2tDa0FwSXlFQU93QUFBQUFBQUFBQUFBPT0nLFxyXG4naW1nL2FubmFkZC5naWYnOidSMGxHT0RsaEZBQVVBTlU0QVAvM1hxMjJOTnpjVGJtL09xaXpNdi8vLzcvRlBiTzhOK2ZrVXZQdFdNck5ROWJYU3ZueVc3TFNsWTI2WkpTd2hNWEtRRUZ6SmFLdUwrM3BWVk9NS01ETjMrTGdUNCs4WnpkckdjM1FSZERTUjkvbTc3SFdrcy9hNTdUVWxkTFRTSVNnTVkrN2F0RG11bUdKUXJiVW5JZTZZRDF3SEl1NllvZTVZRmVQTFQ5eElvR3JZVDF3SUtlNVI0eThaYkhUa0dhT1Q1R3VnWEtYVjdQRFdFeDdNWnl3VFpleWlHS0tSZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURnQUxBQUFBQUFVQUJRQUFBYWdRSnh3U0N3YWo4aWtjc2xzT3A4NGdIUktyVTZGQU0xaU9waElFWWFwRmlCa0JBaFNRUUFpTlJBUUFBWUJMUlFvREFMQXdCSmdKQUlDWVFJUWVFSUhCd0VEQ1JJREJBSUxCQU1TQ1llSk9CMEJVZ0VLQ2dBSUFRRmVOVEl3SXkwQkd4VndBQllaQ1ZJWkh3QXpLeDRpSVNrZ0ZWRldWRGN2SEFVdUZ5Wll2Vk0wSkFYTERSaE5LaWNsQlNnWExFMDJGQTRORGhReFRnOFJHQkVQVU9WSlFRQTcnLFxyXG4naW1nL2FubmF1dG8uZ2lmJzonUjBsR09EbGhGQUFVQU9ZQUFQUHo4NXFhbXNqSXlMaTR1UER3OExPenM2T2pvNDJOamJXMXRjZkh4OHZMeTl6YzNKT1RrN0t5c3FxcXF1WGw1YjYrdnZ2Nys3bTV1YXVycTdlM3QvWDE5ZVBqNDRhR2hyMjl2YlMwdGVmbjUyNXVicG1abVplWG1ON2UzcVNrcE5IUjBmajQrSitmbjVLU2tuUjBkSWlIaU1URXhNZkd4NHFLaW9tSmljUER3OVhWMWM3T3p1TGk0c0xDd3JTenRLaW9xS0tpb3VycTZyR3hzN0N3c0x1NnUzNStmdjM5L2FDZ29PenM3S21wcWN6TXpQbjUrY1hGeFppWW1NREF3SmlZbWRiVzFveU1qS2FtcHB5Ym5OM2QzWHg4ZkhwNmVxZW5wLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRWtBTEFBQUFBQVVBQlFBQUFlSGdFbUNnNFNGaG9lSWlZcUxnaFk3QWd1TWhBb1BGaENTZ3drYUR4S1lnaTREQlFpWUxCZ0RDU2N3QmpTTUhnSXFGQzhVRFFxZVF6aWVneUlCakMwUVJZTWNESU1DS0NhR0JUVVpCZ0JKSXdkSkJFWStSQnVIRGpNZ0JCVkNGd0E1UDBBa2lFRklFd3dJSHpFVFJ4MDJQWW9OQVRvU0F3WWxBVEtNQ3dVSEtRNHJjZ2tjbUNzUUFEcz0nLFxyXG4naW1nL2FubmF1dG9hZGQuZ2lmJzonUjBsR09EbGhGQUFVQVBjQUFMT3pzL0R3OEtPam84akl5T1hsNWR6YzNPUGo0OGZIeDdpNHVMNit2cUhabDhQRHc0SEJiTm5wMHN2THk2dXJxK0h4M2NMQ3dxaW9xR3VsWVZXWlNsaXNQdUxpNHBMQWdZVEljN3pWdVgrOWE1Yk9oSFdUYmN6TXpNYmN3WUhKY1piTGdyM1d1NlBMa3BuT2lyZmpzUG44K1p2Qm1HNnJYNTdRajZiWW5LcXFxcHU5amR2dDJNM294cG5ZajVuQ2lsbXZSWURBYkpmTGlaU25qNy9tdUhUQWFOYlcxbiszY043czJjN096dVR4NHJDd3NKVEhoWlBKZjdIUXFuR25hYWVucDgvaXlxck9tNVBJZnJXMXRiUzB0WDZ4ZFgreWRQbjUrYURZbHQ3ZTNyMjl2V3VtV3BxYW1ybTV1WkhEZ3B6VGszNi9aOS92MllIRGE3ZTN0N0t5c24vQWFlZm41L244K0p2RmkrSHYzWFN2WS8zOS9ZelFnZnY3KzdHeHM2REhrMk8wVU5IUjBXZWlYS2JNbHZqNCtKN0Rqc2ZHeDIyblk4amR4S3Zkb3QzZDNhYTFucnU2dTZMWW1mZjY5L1B6ODNLb2E1SEVnK0x3NElIQWJWZWFTcDNNaTVYUmlwdldrTDdodGVMeDRNL3N5SmV2aTJpa1g1T1RrNE91ZGZmNjlyUGRxZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFJSUFMQUFBQUFBVUFCUUFBQWpCQUFVSkhFaXdvTUdEQ0JNcVhDalFRSWNCQlJnU2RFREFRQUtKQXc5Y0llQUVvOEFJQ0FBUXdaaGpDWUlEWnlRSTJNRlF5WUFGVk5pc01QTUNUQkNKZk1pMG9FRWkwQTBmQ3h1STJPTUdpZ0lYS1U2a0tXZ2h3UnFCUXZJa3FhRmpUaGdNTW80VUJOQ21pQUE0V2RUYzBWUGlEUTRHRzlBWVZQRkZUSUFMZUxxd0FJUkZTZ3dRZlF6YUFQTEF6NThSSDJCb2dWREJpcHdmQ0tzMG1iRUZ4UlE2R3FMWW9SQWlZUUVBSEpqdzZESGtTUjBURWowWW1UQW1UZ2FQcUNVR0JBQTcnLFxyXG4naW1nL2FubmRlbC5naWYnOidSMGxHT0RsaEZBQVVBTlUrQVAvM1hxMjJOTnpjVGFpek1ybS9Pci9GUGJPOE4vUHRXT2ZrVXNyTlE5YlhTdm55Vy8vLy85RFNSK0xnVDhETjMrM3BWY1hLUUx4REJNM1FSY0ZaSDkybWhxS3VMOHR0THNGY0ZPNTJBTkYyT2NKY0VOTFRTUDdOcnMvYTU5MWtBYnhEQmVGb0E5L203OEJaSHZTZFk5R2RMcnhDQk1GWkRzSmJENzVQQi9lMWplR3JqTVdVTWYrR0lmaDJBTzkvR01KY0krdUtRT1NzUVA3V3VQK1NUZDZqTk1wbUtQV29jdXA1QmVPd2xlWjNJZjkzRWY5L0dQYTFqZi8vL3dBQUFDSDVCQUVBQUQ0QUxBQUFBQUFVQUJRQUFBYWdRSjl3U0N3YWo4aWtjc2xzT3A4K2dIUktyVTZGZ0laaVNvQklFWVdwRmlCY0JBWlNRU0FpTFF3UWdNVUFMUlFrQ2dJQXdSRllIQUlDWVFJUmVFSUdCZ0VFQnhZRUF3SUtBd1FXQjRlSlBoNEJVZ0VKQ1FBSUFRRmVMQmdtSnpVQklnOXdBQTRUQjFJVEhBQXlHaW96TnhjbEQxRldWQnM5TkRzdE1TaFl2Vk1TSFF6TEx4Sk5GQ1E4TGhraEkwMHJOam80SHlrVlRqa3dJQlRlVU9WSVFRQTcnLFxyXG4naW1nL2FubmVkaXQuZ2lmJzonUjBsR09EbGhGQUFVQU9ab0FQLzNYcTIyTkxtL090emNUZlB0V01yTlErTGdUK2ZrVXIvRlBmbnlXN084Ti83MVhjRE4zOWJYU3Fpek12am5kY1NuTlB2dFYvL3QyUHZ2by9iZHJQVGVVZjd6WGNYS1FLS3VML2J3NTl1dFV0NlpUT2k2WnFtS1JkK2tRcjJKUytlNFlZaGlMYzJ3aU9LM2hkaTdPZmJoZjl5bFFOaTRPOUNkUVBqZFVmWFpUSzYwTVBqbmRPSzVXODNRUmREU1IrS2xRN1IxTS92cGN0dWZUYy9hNS83MVh2N3pxZm53d3Z2dW5QanR2T1BHUlBYWVMrYkJsL2pydHZUWFNQRFJyc2lUVmNhb1BMcUVPZmJ0NC9qbGxmRGJaT2ZKUy8vMlhyNmZQZEdnWjgycWN1VE5vMzFmS09pelJWMUdITlNoYWZ2ejY5L203L3p1VnRTNVUvL3c0ZEMxTXZ2dm9lTytiUC9xMDhtSlIvak1tZGEyUU9DeWZ1WENrZkxqcjYrMk5PUzNaT3JCYkw5eUYvcmd3ODZiUU52RGp2UEFpKzNwVmYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBR2dBTEFBQUFBQVVBQlFBQUFlL2dHaUNnNFNGaG9lSWlZcUxqSTJPajJnQWtwT1VreEVhU1NnVmdnQXZEWk1DWjVJSENGSXRQRlJkWklJSkFRNlNBd0VYa2dnclJoUS9ZMWhQZ2dNRkNBTUFBZ1lCQ1FSZk9qZEVZRndqVTRJS0NnRUNCQmdDRGdNTkpEazRPeVV6U0FKb05BR1NBUVVGQUFjQlZUMVdQZzhnVFFzQlVRd0hrZ1l1QkFBTEVGNFRWTERnWU9JSUFBTU1JbFdxY2FLTWpSUXl3c0NneEtsU2tDVWl0aFM1NHNFQ3hVTWRKR3dRSXdRSWxFWk16R2pKRW1PSUl5Y2hQaWpKQUtubW8wQUFPdz09JyxcclxuJ2ltZy9hbm5ydWxlcy5naWYnOidSMGxHT0RsaEZBQVVBT1lBQUxXMXRjUER3N096cy9EdzhNdkx5OGZIeCtUazVMNit2cW5CNmIyOXZhT2pvN2k0dUpxYW1zN096cXVycTl6YzNKbVptWk9UazhqSXlQUHo4OHpNek9QajQ3S3lzcmUzdCtYbDVjYkd4ckd4czZLODZPRHArUFgxOWNySnhuYWUzdjM5L2ErdnI1VzA1NTI0NW9DazM2aW9xSCtqMzh6T3p0RFYzSjY2NStqbzZMVEs3TjNkM2RiVzF0N2UzcXFxcXRqWTJNTEN3cUtpb3Z2Nys5TFMwcDJkbmVIcDk5SFIwWitmbjVTVWxLZW5wK2ZuNTlMWDM1cXN4N1N6dE1mR3g3dk83NkNnb08zdDdZZWR2cnU2dTdTMHRidTd1L241K1orNzU4dkt4NnlzckxDd3NQSHg4WE9jM0l5TWpLbkE1NmFtcHFLOTZKS1NrcTJ0cmVMaTR1RGc0UGo0K0YrTjJMbTV1WldWbGYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGb0FMQUFBQUFBVUFCUUFBQWVmZ0ZxQ2c0U0Zob2VJaVlxTGdoVVVFZytNaEFRWUZRZVNnd1U3R0ZpWWdqRUxBZ0NZRFFrTEJUOGxDa3VNTGhJQkZ6NFhGZ1NlVUVHQ05GTWhBNHc0REZvVEFnWUFNRUtGVkFjc2d4QVJXaXBHQkRsS01vVUNSRVVLRTFwU0VGcEpBYVVVV1lZdkdqY0RIVTQ4VHowbkFBNDFHWVl0T2c0UkFDaFJDQ0pESGxWTUVsbGdFR0FFRWlBYlRFaDZZT0REaWhRa09IaENjS1dKRFU4WU1RWUNBRHM9JyxcclxuJ2ltZy9hbnRpYm9keS5naWYnOidSMGxHT0RsaEZBQVVBUGRkQUFBQUFGSlNVazlQVDNoNGVQbjUrZlQwOVB6OC9PL3Y3MDVPVG5wNmVuQndjRU5EUTV1Ym0xTlRVekF3TUxPenMxRlJVVDgvUC9iMjl2Ly8vNFdGaFcxdGJYTnpjM1oyZG5kM2Q3dTd1L1gxOVNrcEtUYzNOM1IwZEJzYkc4REF3T0RnNE9ucDZVUkVSQzh2THlVbEpYeDhmR0ppWWtCQVFJaUlpSFYxZFZkWFY3R3hzUzR1THBXVmxaR1JrUUlDQWdNREExUlVWRmhZV0xhMnRyUzB0SWFHaGlnb0tDd3NMTHE2dXZ2NysrenM3QndjSFBEdzhKS1NrcU9qbzFWVlZTUWtKR3hzYkxtNXVlN3U3bTV1Ymt4TVRIMTlmVVZGUlp5Y25GbFpXZkh4OFh0N2UzOS9mMmhvYUVsSlNhNnVyb3VMaTBKQ1FrZEhSM0p5Y2toSVNBUUVCRXRMUy9mMzk3aTR1SEZ4Y1FZR0J2MzkvUllXRmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUYwQUxBQUFBQUFVQUJRQUFBamZBTHNJSEVpd29NR0RDQk4yV2RFaFFvQUFFU284VU5oRlJSRVVCRkVnU0pMUWdRMkVHeHdjbERIaUh4R0RDdjQ1Q0ZEd2c0b3VHUDRwSUhqaDM1UXVBWVFRZE1HRlE1Y0UvN0lJVFBFdlJSY09PeWdRRk5CRkM0c3VKZjRKL0RlZ0M0c1hPQWxDNklMajM0WXVDd1NLNkZLU1JwZXRBMWwybVFHalN3U0JSN3BVbWRpbEFjR3hBak4wa2JxM2k5NHVCcVFRWE5LRDRBbUJod2N5cUVEd1F3eUNkdXNTUklDRm9BRUJKZ1JlRnNoVVlBY3FFZ3BPV05CRUlBTE9BaFU0S1hCUWdnQXJMWDRJRE5BQ0FRVFdDVmVVSUJGbEFaQUxkQ2tLSDQ0d0lBQTcnLFxyXG4naW1nL2Fycm93LWRlZmF1bHQuZ2lmJzonUjBsR09EbGhRUUFVQU9aWUFPVGs1T0RnNEkrUGovcjYrc2pJeVAvLy93VUZCWEZ4Y1lPRGc5dmIyeHNiR3c0T0R2bjUrZmo0K0JFUkVlbnA2ZWZuNS92Nys3T3pzNEtDZ2pVMU5iS3lzdmIyOWtwS1NpZ29LTUhCd2ZYMTlTd3NMUHo4L01mSHh5OHZMOWZYMTJOalkweE1URHc4UEppWW1KU1VsQW9LQ2prNU9UNCtQc3pNek0vUHp3RUJBUTBORGUvdjd4WVdGaDBkSFRJeU1oOGZIK0hoNFRNek0vSHg4U29xS2toSVNJcUtpdjM5L2RQVDA1ZVhsekF3TUZGUlVYaDRlQUlDQWlNakkwQkFRT3pzN0Nzcks5alkyQmtaR1VWRlJRc0xDMEZCUVl1TGkvNysvajgvUDkvZjM2Q2dvTGk0dUh4OGZBa0pDUlFVRktXbHBlYm01cXVycStMaTR0bloyU2NuSnhJU0VnQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRmdBTEFBQUFBQkJBQlFBQUFmbWdGaUNnNFNGaG9lSWlZcUxqSTJPajVDUmtvY01FWk9YbUlJYUV6d1ZNWm1nandNeVZ3b25Fak9ocW9vY05nNGxCaHNrUUFXcnRvVUFBaTRHVnhRRVViZkJnaEFkSVZkWElrd0Jod1VKVk0vUTBkTFQxTlhXejBvQkFEZ0NOY2N2QnhLRklGYmw1dWZvNmVycjdPZ09UME1MS3NkWEMwdUVDRlg2Ky96OS92OEFBL0xEb0lPR0J3VTk2TUdRZ211S3c0Y1FJMHFjU0pHaXRnQVBBS0Q0Z09ESE1TSkhNZ2hUSlVTQWlXTVhVa0FZQ1FwSmd3TXJpbHhKa29BRnkwd0ZHalJ4Y3FXRkVTZ01ib0lhNE9OS2tCMEVCZ2dOWldGRURnSVBscTZLY0VPcTFhdENBd0VBT3c9PScsXHJcbidpbWcvYXJyb3ctZG91YmxlLmdpZic6J1IwbEdPRGxoUVFBVUFPWi9BUDcrL3ZqNCtQbjUrZmIyOXZYMTlRSUNBdlB6OCtMaTR1Zm41OTNkM1VORFE1U1VsSkNRa1ByNitna0pDZW5wNmZ6OC9QTHk4c2pJeURVMU5VQkFRRlJVVk92cjY5L2YzMlptWnBxYW10UFQwMmRuWjVLU2t1enM3UER3OFBIeDhWeGNYREF3TUJnWUdGcGFXanM3TzBsSlNRY0hCdzRPRHJ1N3UvMzkvUVlHQnMvUHp4SVNFb1NFaEtXbHBZeU1qSEp5Y3B1Ym0yNXViaTB0TFFzTEMyUmtaSHA2ZW0xdGJSd2NISFoyZHNyS3lwMmRuVjlmWDBSRVJPM3Q3UWdJQ0JzYkd4MGRIVTVPVGw1ZVhvR0JnWW1KaWVUazVOdmIyOW5aMlpPVGt4WVdGb09EZzcyOXZXSmlZc0xDd3FhbXB1WGw1Ykt5c2hvYUd1cnE2aTh2TDVpWW1Pam82RG82T25OemM2K3ZyLy8vLzF0Ylc0dUxpMUZSVVZsWldlN3U3bEpTVWdFQkFkSFIwU1FrSklhR2hzSEJ3VmRYVjhmSHg5VFUxR3RyYTRXRmhlYm01Z01EQTc2K3Z0N2Uzamc0T0UxTlRRUUVCQ3dzTEQwOVBkRFEwTmpZMktlbnAyVmxaVTlQVDVhV2x2ZjM5L3Y3KzVHUmtZS0NnZ0FBQVAvLy95SDVCQUVBQUg4QUxBQUFBQUJCQUJRQUFBZi9nSCtDZzRTRmhvZUlpWXFMakkyT2o1Q0hBQllhQTVHTkFHc0lCQkNYaGdZSFRrRitUSjZMRFZ0K0pCa0lBS1lER2pJaGZpcDNCNmFLQUhVS2ZuNWRhbWlYS0VOdnZWaDBCTGlNQ0ZWZ3ZSTjlCbzRXSUNKK0JSc1B5Y3FPVmpGQ2ZpWXpSQUdJZXc4UGVDWU9RRHdKZWdJQjhucjA5ZmIzK1BuMzhnSjZBeEp3V01SUllnTkpCMElDb3N6cDVVZEtHaTU5SWtxY1NMR2l4WXNYVzVDcGNLSVhteEZuWFAzNU1vR2h5Wk1vVTZwY3lUTGxoajJDR3JSUkVLWVhEaGg1Rm5CZ3dLZW56NTlBZ3dvVnlwTW5oeVFMK0l6bzZNZEJEVEVpLzZRZ0VBR0RDQWMvek5pWm9pWEZucTlndzRvZFMzWXNoRDBRQUFndzh1UktBUlVoWGw1QXNZVG93NDB4dlVBazhNRE5VWUlpdkdoUVdBQ3prWTRjSlhwNVFSR2hiNklMV1NqMDZwR0I3cU1HYnBhUXVGYmlpT05DQUNSUTZZVmh4d1ZjQVRxc2tPT256R2VFVFFwVWNNSFhNU2dCcnduNStKQzd0Ky9md0lPL0RnUUFPdz09JyxcclxuJ2ltZy9hcnJvdy1kdWFsLmdpZic6J1IwbEdPRGxoUVFBVUFPWnBBUDM5L1d0cmErTGk0dmYzOS83Ky9oQVFFRUZCUWZQejgvLy8vK2JtNXVucDZTOHZML3o4L0JnWUdHMXRiV3hzYkxPenM3ZTN0OFRFeEJFUkVmbjUrYlMwdFBiMjlzbkp5Uk1URTc2K3ZpSWlJdTd1N2lzckt4WVdGdURnNE9ycTZpQWdJSFIwZE1mSHgybHBhWGQzZHlvcUt0SFIwVzl2YnpRME5ON2UzdGpZMk1iR3hxeXNyQnNiRy9IeDhZdUxpN3k4dkZKU1VqWTJOaDhmSHd3TURBY0hCN0d4c1dabVptSmlZaUVoSVJ3Y0hEdzhQRGMzTjQrUGp4NGVIZ29LQ3ArZm41MmRuVmhZV0l5TWpDWW1KcEdSa1Y5Zlg1YVdsbVJrWkEwTkRjdkx5elUxTmNQRHc2K3Zyd2dJQ05yYTJseGNYSk9Ua3c0T0R2THk4ak16TXlrcEtUOC9QNWlZbUdkblo1bVptZmo0K05QVDA5emMzSEp5Y2owOVBjWEZ4YkN3c01qSXlDTWpJMmhvYVB2Nyt6czdPdzhQRDdLeXNnQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUdrQUxBQUFBQUJCQUJRQUFBZi9nR21DZzRTRmhvZUlpWU1iUXgrS2o1Q1JrbWtVV1U0VEpBSURrNXlkanhzUFJHaG9BUkFLbnFpcGFRQXFRQ1ZvUDBKZ0FxcTFuRjhoQzJnZFhrRUFpR1RCd3NQRXhjYkh5TUsvQXdwRk9XZ0ZCaFVNaEFncFdHUFoydHZjM2Q3ZjROazNJd0VPRDBoVW8yZ1RGd1NDQkRCbVVtYjA5ZmIzK1BuNisva1lEUTBZMERnNE1NaENoVE1JRXlwY3lMQ2h3NGNRSWJBNGtzQ1dSVlVBTWhSWVlNQ0FsUjFsUW9vY1NiS2t5Wk1vVFM0eGdVQ1FoUmZxb0ZVQm9jUEhEREU0YytyY3liT256NTg0TldpNFFtR1Fpd2c0YUtCcEVTTkNnaWRiSklSWmNTR00xYXRZczJyZHlwV3JDQzJHcHB5Qk1vcEhGSUlYMHg0NjBDUkFEVFJKTEl4NDJLUzI3aUFtSnppTTZxS0VtbDI3QW5ySUdHV0R6Ris3QUxoSVFKSGgxMkc3Q0JLNGUweTVjcVJBQURzPScsXHJcbidpbWcvYXJyb3ctbm9uZS5naWYnOidSMGxHT0RsaFFRQVVBTVFZQUF3TURPbnA2U2dvS1BYMTlmYjI5bloyZHRMUzB2cjYrdUxpNHZqNCtDWW1KdjM5L2ZUMDlQZjM5K1RrNUQ4L1B4TVRFOXpjM1B6OC9GTlRVK1hsNVEwTkRkWFYxU2NuSi8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFCZ0FMQUFBQUFCQkFCUUFBQVZpSUNhT1pHbWVhS3F1Yk91K2NDelBkRzNmZUs3dmZPLy9PZ21DUWl3YWo4aWtjc2wwQkJha3hrTnhxVnF2Mkt4MnkrMWVCQVhDaUFFQlZNN290SHJOYnJ2ZjVzbUFsREJZN3ZpOGZzL3YrLzhXRVFkQWhJV0doNGlKaW91TWpZNlBQU0VBT3c9PScsXHJcbidpbWcvYXJyb3ctcmV2ZXJzaWJsZS5naWYnOidSMGxHT0RsaFFRQVVBT1p2QU4vZjN6bzZPdGZYMS83Ky90YlcxdVBqNCt6czdQMzkvZlQwOVBMeTh0N2UzcENRa0RNek05emMzREV4TVcxdGJTQWdJSEJ3Y0NFaElUZzRPUG41K1FjSEIrM3Q3YzdPemt4TVRJeU1qRGMzTjdHeHNiZTN0Nm1wcVdkblp4MGRIY3JLeW1WbFplRGc0Q2twS2Z2NyswUkVSQllXRnVibTVuNStmZ0VCQWNuSnlTb3FLdnI2K3NQRHd4c2JHNXFhbXJ5OHZQYjI5aWNuSjFGUlVlWGw1Ykt5c2hBUUVBWUdCZzBORFc1dWJrNU9UaWdvS0U5UFR4b2FHa3BLU3ZQejg0dUxpeXdzTERZMk5xYW1wa0ZCUWVycTZ0RFEwSjJkblM0dUxpWW1KdGpZMkYxZFhhZW5wN2k0dUFVRkJjWEZ4UkVSRVFNREF5VWxKWEZ4Y2RMUzB1L3Y3OVBUMDVHUmtYTnpjK25wNlZsWldRc0xDd0lDQXN6TXpQWDE5VUJBUU9mbjUvSHg4Zmo0K0w2K3ZoZ1lHUER3OERVMU5TMHRMU0lpSXU3dTd0bloyVTFOVGV2cjZ4a1pHUUFBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFHOEFMQUFBQUFCQkFCUUFBQWYvZ0crQ2c0U0Zob2VJaVlxTGpJMk9od2RQRVNJVWo1YVhqRDlUYm00b0YyeVlvYUtDSnhrYW5Fc2REYU9zandjS1l5dHVVQTVIQUsyNGpBVkFEbTQyUVM4a2gySnN4Y2JIeU1uS3k4ekdCbWxzTkFzN1cxd2ZNR0NFQTB3WWE5N2Y0T0hpNCtUbDRqbzhFcHh1T0YwRGdnTlhaRzMwOWZiMytQbjYrL2s5RUZKSjJxUVk4azRRQWlWcUVpcGN5TENoUTRjRUlncVlTTEdpUllwVVFMQWdSQ0dMaFRRZ1E0b2NTYkxrU0FTNUJNWEFVZ0VOa2pNeTBNaWNTYk9telp0b0lQZ29rakxCZzNWdUpCQmhZSWJCaEFCSWt5cGR5alRwaEJtZ1VocG84T0NHR3hNWWpGZ29Vd0NBMTY5Z3c0cjlxaUJxU2tGZU9JU29FTVdGaHpBRkxNL0tGZFFpd2doT1dsUWttTXZYeW9Jdm5ISnNpTXMzWllFYVF0dzRhVko0N29FcUYwb1lhRXk1c3FOQUFEcz0nLFxyXG4naW1nL2Fycm93LXNvbGlkLmdpZic6J1IwbEdPRGxoUVFBVUFOVTdBQUlDQWhVVkZRd01EUFB6OC9mMzkvLy8vOXJhMnVMaTRoQVFFSFYxZFE0T0RtVmxaZW5wNlFvS0NwV1ZsZkR3OE5YVjFjSEJ3UVVGQlh4OGZHWm1adWZuNTJKaVlwMmRuUWtKQ2ErdnI3Ky92K0RnNEFzTEM2Q2dvQU1EQXg0ZUh2VDA5R3BxYXZ6OC9KYVdsbTV1Ymh3Y0hGNWVYdHpjM0xxNnVsUlVWQm9hR3ZMeTh2bjUrWHA2ZW10cmErM3Q3UklTRWhrWkdWaFlXT3pzN0I4Zkh5a3BLZUhoNGR2YjJ4Y1hGeUlpSWdBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUNINUJBRUFBRHNBTEFBQUFBQkJBQlFBQUFhZ3dKMXdTQ3dhajhpa2NzbHNPcC9RcUhSS3JWcXZXR1Vya3UweUJiREZTdVF0RndNNm5TVEVHSmpOcFhRYWtOQ3drb1dEYmMvdisvK0FnWUFiTHlweWNnSVVIUVpIRXptUGtKR1NrNVNWbGprZWg0Y0lOUmNnUlM0NG9xT2twYWFucUtrNEFKcHlIRFFqYmtRRkp6ZTJ0N2k1dXJ1OHV3WVZNYTBZTWc0UWIxZ2ZtaFlaQk1kWmFHa21Cdy9PWFFvTktUUE4xVjBrS056ZzRlTGo1T1ZPUVFBNycsXHJcbidpbWcvYXJyb3cuZ2lmJzonUjBsR09EbGhGQUFVQU9NT0FBQUFBQWNIQndrSkNSQVFFQ0VoSVN3c0xEZzRPRUJBUUVaR1JtaG9hSGg0ZUllSGg4Zkh4OWZYMS8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBQThBTEFBQUFBQVVBQlFBQUFRcDhNbEpxNzA0NjgyNy8yQW9KWXhJRk1wMEFHenJ2Z01pclcvdEJpQ2dHQTBvTEtLZ2NFZ3NDaU1BT3c9PScsXHJcbidpbWcvYXNzYXljdXJ2ZS5naWYnOidSMGxHT0RsaEZBQVVBTVFjQUsydHJZeU1qS0dob1k2T2pybTV1ZnY3KzdpNHVKbVptYlMwdE1qSXlNVEV4SFYxZGFpb3FQRHc4TzN0N2RiVzFzZkh4MzkvZjRTRWhHMXRiYisvdit6czdHbHBhZkh4OFplWGw0S0Nnck96cy8vLy8vLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFCd0FMQUFBQUFBVUFCUUFBQVZiSUNlT1pHbWVhS3F1YkNsb2NDekRna2xzZUs3amlEa0VsTUpPcHpFZEFBTUw1akhjRkVzR25JTXhTUXlmSkkzdUlvSHNzQ090cnBKUkNIRUdrMWpYV0VRQThJTzZ1VWtFN2dNVGdxNGptRjR6Z1RVdGhJV0doNGdwSVFBNycsXHJcbidpbWcvYXNzYXlwbGF0ZS5naWYnOidSMGxHT0RsaEZBQVVBT1lBQUtHYW10RFEwS2Vob2MvT3p0UFQwOHpMeTYrcnE1cVNrcy9QejhyS3lyZTB0SnlVbEtta3BLeW5wNGQ4Zk1UQ3dwV01qTVhEdzZ5b3FLMm9xSjZXbHArWW1KMlZsY2pJeUxTd3NJTjRlTHk2dW9OMmRyV3lzcVNlbnNiRnhhU2RuWWg5ZloyV2xxdW1wb0YxZFphT2pzckp5YzNNemJPd3NJbCtmck91cm9WNmVvK0VoS0tibTR1QWdORFIwYjY3dTh2THk1dVVsTDY4dkpDSGg4L1AwTEt1cnNUQndibTJ0cTJwcWNYRXhLaWpvOEcvdjdxMnRycTN0NHlDZ3FpaW90RFF6Mzl6YzcyN3U5SFIwcis5dmNmR3hzbkp5YXltcHBLSWlINXljcld4c1plT2pvRjBkS3FrcEl1QmdZVjVlY2JFeE0zTXpJWjZlcUdibTZPZG5jek15ODNOemNQQ3dwcVRrNitzcktXZm43bTN0NXVUazg3Tnpjakh4NStYbDYrcXFwU0tpcDZYbDVPS2lxR1ptWVI0ZU5MUjBkSFEwYzdPenIyNnVvMkRncG1Ta3NQQndjSEF3TEt0cmFxbHBhS2NuTENycTVpUWtNek16S3VscGNMQndmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFIWUFMQUFBQUFBVUFCUUFBQWZZZ0hhQ2c0U0Zob2VJaVlxTGpJVUpKalF3QVZGZENBVUJCUU1EVlFTRUF5c1FkQmtHUGpFZFVnWWdBQlVPSG9RQkZsTVlZd3BZQW1BUUNrc05EQ1JlaEM1dkV6SUFiUUlwVzNCMUh3b2NIWE9FWmlneldrbE5EaVFWVEF3WkMyc2pWNjhuSERrTUYxazlPeUpHRWtRYU9BaUVRR3BoT2hzTlRnY3NUdzBPWHhZcUloQkM4T0VIandOQ0FFeFFzdUNGbUJweEtDUWdOSVNLZ0JzSE5BQ1FnR0ZCR2dwdURJUW9RZWhNQ3lRQ2dod0JJWWZNQ0JGbFFuRFpJSEFRQVE5RnJMQVpBT1ZDQVJ0b0hpUW84YUJUbzZOSWt5cGRpaWdRQURzPScsXHJcbidpbWcvYmFyY29kZS5naWYnOidSMGxHT0RsaEVBQVFBSUFCQUFBQUFQLy8veUg1QkFFQUFBRUFMQUFBQUFBUUFCQUFBQUlkakkrcHkrMFBEd2hnV25wenhyVGJYWGtlQ0hLYStLRmJ4TGJ1aXhRQU93PT0nLFxyXG4naW1nL2JlbnplbmUuZ2lmJzonUjBsR09EbGhGQUFVQU9abkFBNE9EbGxaV2Y3Ky9nY0hCd0lDQWdFQkFRVUZCZnI2K29XRmhlUGo0ODNOemZqNCtHMXRiVk5UVTl6YzNKZVhsM0p5Y3U3dTdpTWpJN2k0dUJrWkdRUUVCQWtKQ1FNREE3ZTN0L3Y3KzFSVVZQejgvS21wcVdob2FPVGs1TFMwdEo2ZW5uZDNkMjl2Ynd3TUREUTBOSldWbGNMQ3dscGFXc1hGeFhWMWRXVmxaUW9LQ2hZV0ZwT1RrL0x5OHBLU2t0L2YzeUFnSUJnWUdEbzZPcWVucDdHeHNXWm1abXBxYXRIUjBWdGJXMkZoWVJNVEU3dTd1MFZGUllPRGczOS9md1lHQmg4Zkh3OFBEeVVsSmV2cjZ6TXpNNnFxcXZUMDlLT2pvMEJBUUFnSUNFcEtTbnQ3ZTlmWDEydHJhMTFkWFVSRVJCd2NIREV4TVRBd01KaVltRjVlWHNmSHg4REF3QTBORFRjM04zQndjRDgvUDF4Y1hGWldWaTh2TDFkWFY1U1VsSnFhbXFLaW9vZUhoeFVWRldCZ1lBQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBR2NBTEFBQUFBQVVBQlFBQUFmbWdHZUNnNEk0R2wxTmhJcUtCd3hBRmhZREVCbUxpaTFrWmhvSkNRMW1NZytWWnhoVFpsSVRadzRmb2w1bVJUeUVFWjBzWUdjYktRTmtneTlrQlY5SGdqWVhJcFJVRkdaSktJUUhUZ1FNZ2dHNURpUm1FalNLU3lWbkFHWFB1UTg3Q0FLTEE5emIzYUdEQnVYY1o5RG9naFhyNSs4WDh1MjVFd2dibFFYMjdtTm1LSVFaMTBFYk8zZG5rTVF3aytVS29Sb0xEQXE2UWFDTWl6TUNmb3dnb0FVV2x3SVFCQzNRUVVCSXVETkVucHdRSk1BSGxnb3FEaEF5TWNQTUVDT0VPRWd3czhWS0tCQlJ6UFJRb0FDS21TQmkzbUVNb2NTQWdSVk14Q2tWQkNOSEZRK2hBZ0VBT3c9PScsXHJcbidpbWcvYmxhbmsuZ2lmJzonUjBsR09EbGhBUUFCQUlBQUFQLy8vd0FBQUNINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQ1JBRUFPdz09JyxcclxuJ2ltZy9ib2xkLmdpZic6J1IwbEdPRGxoRkFBVUFNUWNBQUFBQU5uWjJUOC9QMEpDUWpzN08xaFlXTmpZMkQwOVBTd3NMRHc4UE5mWDEwQkFRRDQrUHQzZDNkdmIyMVpXVmpZMk50cmEyakF3TURRME5Db3FLaTR1TGpJeU10WFYxZFRVMUMwdExWVlZWVkJRVVAvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUJ3QUxBQUFBQUFVQUJRQUFBVlNJQ2VPWkdtZWFLcXVyRmxzUVRzV0IzREVjZ0lSZ0dESUY4SWtBVmpnV0ppRWhjYzRyaFFFaWFEM2F5a0VtYWxSZHEwd2JFNVZnSUVZVUdXUlFia1lUam5VNW9HTTB4aFFOSVU1L1pIWCsvOHRJUUE3JyxcclxuJ2ltZy9ib2xkaGFzaC5naWYnOidSMGxHT0RsaEZBQVVBSUFCQUlDQWdQLy8veUg1QkFFQUFBRUFMQUFBQUFBVUFCUUFBQUlqakkrcHkrME8zZ0pSSW1xcVBYam5xbm1kQ0hwY2FIVm91ajZxK2NFalROYzJVd0FBT3c9PScsXHJcbidpbWcvYnJhY2tldC5naWYnOidSMGxHT0RsaEZBQVVBSkVDQUNrcEtZZUhoLy8vL3dBQUFDSDVCQUVBQUFJQUxBQUFBQUFVQUJRQUFBSXVsSStweSswUEVaaHFBblpicm00bnp5M2doM1dsZG1MQkdramRLclRIS01teVFjKzJSSDNUSGdrS2gwUkZBUUE3JyxcclxuJ2ltZy9idXRhbmUuZ2lmJzonUjBsR09EbGhGQUFVQU1RWEFQMzkvZlgxOVMwdExiNit2bE5UVTI1dWJwV1ZsWTZPamdrSkNTd3NMRkZSVWNURXhBd01ER3BxYW41K2Zzdkx5OXJhMm8yTmpaU1VsRUpDUXZqNCtETXpNd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQmNBTEFBQUFBQVVBQlFBQUFWYzRDV09aR2xlaTZTdUxHdFFJc0JZZEczZmhFaFp6ZVAvd0Y5aW9yTTRUcVlLOGJJN0lrbktvdk1waWpLTjFKRzFtYTB1dWQwdE52d2RaOFZUS3JwN1daT2xiSEVCUXEvYjY0SWxBSEhyMnhRakF4R0RoSVdGQndGc1NDRUFPdz09JyxcclxuJ2ltZy9jYWxjLmdpZic6J1IwbEdPRGxoRUFBUUFPWldBUC8vLzAxeXA3dTh2S09qbzFaN3NPZm41NkNnb09QajQ5emMzUHY3KzVHUmthMnRyWWFHaDZpb3FLU2twT2pvNkpXVmxjSEN3czdPem9pSWlLbXBxWWVJaUlpSWllYm01dXZyNjU2ZW5yeTh2TlBUMDlmWDE2dXJxMnVTeU9MaTRtbVF4cXlzckd5VXlyUzB0SXFLaXBHUmt0dFlVdVhsNVpPVGs0K1BqNnFxcW1TTHdZMk5qZURnNElXR2grbnA2Y25KeVorZ29jTEN3cG1hbXRIUjBabVptcFNVbEllSGg3S3lzckN3c0pHU2tyT3pzN0d4c1c2VnlwMmRuclcxdFdlTncrSGg0V2lQeGNYRnhmejgvTmpZMk5MUzB1aDBjNHFMaTQ2T2pweWRudHZiMjJhTnc2V2xwWmVYbDkvZjM3Ky92OXJhMm95TmptZVB4WXVNaklpSmlmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUZZQUxBQUFBQUFRQUJBQUFBZXlnRmFDZzRTRmd6c1VEUjBoQ3lFZERRNERQNFFxQUphWG1BT0VBd0FCbnArZUFCbUVEZ0FFSzB4VElCNGlCQUFHbTZaQVFxc2lQYTR4bTBSUkhFWVNNRU15VUsrRUJnQUxTVVZOSkJKSEpnbWpnejRBQjBFSVN4d2JHelFBU29RekFEd0tId3NwQ0JRc0NUV0VFQUFQQlNjSEh5MVBDQUFRaENVQUl6WUZPQ2dIY2loSW9JTVFGUUFZTUx4NFYrRENCUUJTQ0UySW9FR0RnSXNZSXlBaHBNQUNneHNWcWxpWVVJR0JDeWVHVWhZS0JBQTcnLFxyXG4naW1nL2NhbmNlbC5naWYnOidSMGxHT0RsaEVBQVFBTlUvQVAvczdQN0x5LzB3TVAwdExmY1NFdkliRmZjME12b2tIdjVtV2ZkRE0vazZPdjVpVmY3cTZ2WU9EdmdXRnZsTlB2NVJVZnBTUS85cVhlOEFBUGhKT2Z4TFMvL3g4ZlVLQ3ZvK1B2NFRFL3dwS2YxZFQvMUhRL2dURS84VUZQOHJKdThYRi8zRnhmL3o4L2hGTmYvUHovOW9XL3hJU1BNQUFPNFNFdnNBQVBzb0kvWVVGUDFmVXZZZEdQNDBOUDliV1Bvdkt2dzhPUGhIT1BzM012c05EZnRNU1B0WVN2VWdHdklURS9oTFBQL3Q3ZjBBQVBFQUFQL3k4djhBQVAvLy95SDVCQUVBQUQ4QUxBQUFBQUFRQUJBQUFBYWt3Sjl3U0N3V003N2ticGt4L2p3ZlNRbUJXQ3hVdENKVXduRzVCSVBZNXRBWmJsOGtDTGdTcU5rT0s2R3Z4Q0dKZEpVS29CZUFSVTV5Q0M0UU9uYzZQUUFZRGc4OFFqc0lhNGVJaWgwNWpUODdDd01hSnBJQUNnUU5NcGM3TEp4N0FBQVdEQVlYSXhOQ0tSc3pBVDBNQ2dvTUZpRXRDYkEvSFFjMkhBRUtIUTBHSVFZSkJTQkR3UkVxb1JjWEJjek9SQ3MzT1JReUl3blhUamc4NUJQbUtFN3BSVUVBT3c9PScsXHJcbidpbWcvY2RzLmdpZic6J1IwbEdPRGxoRkFBVUFKRUFBS05KcERObXpQLy8vLy8vL3lINUJBRUFBQU1BTEFBQUFBQVVBQlFBQUFKT25JK3B5eHNQWTB4QjJJdHhRRFY3dXgwZEFBaGthWkZDYUZTb21jSWdKOHZseXc3dWhkNVh2b3ZCY0xSWFR3aXNIV05Kb3hEVzVEMUxVYUV6YWJxcHNqUFI1NVBUU2NhUGh2bU1IaFFBQURzPScsXHJcbidpbWcvY2VudGVyLmdpZic6J1IwbEdPRGxoRkFBVUFLVTlBRTlQVHdVRkJUNCtQb1NFaEVsSlNSc2JHMXRiVzIxdGJUWTJOaUlpSW5kM2Q1aVltQklTRWxkWFZ3a0pDWWlJaUY1ZVhtVmxaU1ltSmd3TURCWVdGanc4UEFJQ0FybTV1Ymk0dVBQejg5RFEwUHY3KzluWjJjakl5UHo4L09YbDVhaW9xTEd4c2NuSnlUTXpNNm1wcVl5TWpLR2hvVHM3TzhIQndjREF3S0Nnb0ZOVFU5SFIwZkx5OG5GeGNTOHZMNUNRa0pPVGs1eWNuSHQ3ZTdDd3NMS3lzbng4Zkt1cnE0Q0FnS0tpb2sxTlRhMnRyV0ZoWWYvLy93QUFBUC8vL3lIK0drTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUlHOXVJR0VnVFdGakFDSDVCQUVBQUQ4QUxBQUFBQUFVQUJRQUFBWnV3Sjl3U0N3YWo4aWtFdWtiS0hzV1N6SGc4d1V5UlVUVjF5dlN0cjZYc0FEMkhhc0JJNk1xT1ZKL21DTEdZVDcyUXNMTE1QNlRMdUdBZVg5Q01JTnlQeHAvR1dtQmlFSitSbTk4UXhvM2RVWmJYVVFaVlFSR0pXQ01QVlJiUmhab0hFVW5wVVUrQ2s4QmpJYXpTMEVBT3c9PScsXHJcbidpbWcvY2hhaW4uZ2lmJzonUjBsR09EbGhGQUFVQU9ZQUFQLy8vL3Y3Ky9yNit2ZjM5K3pzN09IaDRkalkySVdGaGQvZjM5M2QzZFhWMWZiMjlrbEpTY1BEdzdtNXVaeWNuSjZlbnNMQ3d2UHo4K3ZyNjhqSXlNN096dWZuNTlUVTFFMU5UZVRrNUg1K2ZtRmhZY2JHeG1KaVlsUlVWRWRIUjN0N2UxcGFXclMwdE8vdjc1U1VsTmJXMW9tSmlaMmRuWGQzZDNoNGVQVDA5TXpNekdob2FNdkx5K25wNmRuWjJiZTN0NXVibThmSHgrUGo0MDlQVDd5OHZMMjl2VlZWVlpHUmtaT1RrNkdob2NuSnlabVptZXJxNmlzcksxQlFVRzl2YnpNek0xWldWakF3TUt5c3JGOWZYekV4TWFlbnA3Ky92NE9EZzNGeGNWNWVYdFBUMDgvUHo3dTd1NWVYbDhyS3lvdUxpMGhJU0xHeHNaaVltSitmbnp3OFBJU0VoTTNOelRjM04yVmxaVjFkWFVaR1JsTlRVNGlJaURrNU9jVEV4RHM3TzY2dXJ0SFIwYU9qby8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBR1VBTEFBQUFBQVVBQlFBQUFkMGdHV0NnNFNGaG9lSWlZcUxqSTJPajRJZ2hrQTNoa2trZ3lFYWhGVkJQaW1FWkJnUGd3YzBoQjBiSUQrRVdrdUZYU2lDSkZKSFpTRktnZzhmVDRWWERJSkZIWUpSSDRJc1c0Y2VCeEFZUElNZUdqZ01PWWNIWVZZYmhGNWZRMEtKWEVZUWhReFpNWWtuSm9ZNlZKRHU3L0R4ajRFQU93PT0nLFxyXG4naW1nL2NoYWluYWRkLmdpZic6J1IwbEdPRGxoRkFBVUFPWlVBUC8vLzU2ZW5uRnhjZDNkM1pHUmtZMk5qZFBUMDBWRlJjSEJ3Yy9Qei9mMzk0KzhaOERBd1ByNitwU3doUGo0K0UxTlRVWkdScnU3dXoxd0lJaUlpSkNRa0h0N2UxRlJVVUZ6SlRkckdZYUdob0dCZ2FtcHFZMjZaSmVYbDdMU2xaR3VnVWhJU0dWbFpWT01LTkRtdW5Cd2NIbDVlWXU2WXM3T3pveThaV0tMU21hT1Q3Q3dzSktTa29lNVlEOXhJckt5c2xtRFFwV3NpR3RyYTQrN2FtbHBhWUdyWVhLVlhiVFVsY1RFeEl1TGkyMkFZcjI5dmJIV2tvK2hoWGg0ZUdGaFlkalkyRXg3TVp1Ym0ram82TnZiMi9IeDhWZVBMZno4L0xiVW5OL2YzNVNVbEpleWlOcmEyckhUa0sydHJjTEN3b2U2WUs2dXJtNXVidi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUZRQUxBQUFBQUFVQUJRQUFBZWpnRlNDZzRTRmhvZUlpWXFMakkyT2o0UUtFZ1VCT2twR2xBVVNDb2NOQVFSRUF3Z0VRMDBET1FRQkRZWU1Ga0VVRUNJdEppSVFGREFXRElZVkdnWVBJVHdvVUU4aER3WWFGWVljQWdrYkJ4RVhGeEVIR3drQ0hJWUROVXNzVWg0Q1B4NCtOeXN4TW9aSVJVQXpKVk1JQmpzMk9DUTBSeUNOS2s0OUFDa0xFNDFDa2dBWStDRkRveGNub2dCdzRhOFJreEVkUG5RWWNhK1JBd3daTURpQXhGRlJJQUE3JyxcclxuJ2ltZy9jaGFpbmRlbC5naWYnOidSMGxHT0RsaEZBQVVBT1piQUo2ZW5yeERCZi8vLzVHUmtkUFQwM0Z4Y2QzZDNZMk5qY0ZaSDBaR1JudDdlMFZGUllpSWlKZVhsL2o0K1ByNitvYUdocy9QejhEQXdHVmxaYnU3dS9mMzk5Mm1ocENRa0lHQmdVaElTTUhCd1UxTlRhbXBxVkZSVWEydHJiMjl2Y3BtS1A3V3VNeHRMLzdOcm5sNWVieENCZVozSWVqbzZQYTFqZmgyQVBlMWpmV29jcEtTa3Y5M0VjSmNKTEZLRDh1VmRtdHJhODl6T2YrR0llR3JqTUpjSStwNUJkMWtBY0JaSHR2YjI4N096c0pkSldscGFjVEV4UCtTVFp1Ym0vOS9HT0t2bE91S1FKbGxTL1NkWStPd2xaU1VsTzkvR0hCd2NJdUxpOS9mMzY2dXJ1Rm9BN2lHYXZIeDhXNXVidTUyQUw1UEI4TEN3dHJhMnRqWTJQejgvTEt5c3JDd3NMOVlJV0ZoWVhoNGVQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGc0FMQUFBQUFBVUFCUUFBQWVrZ0Z1Q2c0U0Zob2VJaVlxTGpJMk9qNFFWRkFjQVNVcE9sQWNVRlljUEFBTW5CaG9EUDFNR1BRTUFENFlTQ2xRTUd4TXNKQk1iREZZS0VvWVhFQVFPR1I4NlVoNFpEZ1FRRjRZY0JSRVlDd2tkSFFrTEdCRUZISVlHUEVaWFN3MEZXZzFOV0NVdk1JWlZPVmt4U0U4YUJFTXlLaUVySWtHTk95ZytMVE5DTG8wQlJnZ1llQ1JBSXdSRWdLU0F3Z1JISXhvZ1ROaTRFY1dDb3lJMUFpQ3dDS2xqb2tBQU93PT0nLFxyXG4naW1nL2NoYXJnZW4uZ2lmJzonUjBsR09EbGhGQUFVQU5VN0FQWDE5VDA5UFFvS0NoSVNFZ3dNRE9UazVNL1B6N096czYydHJaT1RrOS9mMzNGeGNkemMzS2lvcUhwNmVuNStmdUhoNFVORFF6OC9QNHFLaWdRRUJMR3hzWVdGaFVaR1J2ejgvRDQrUG4xOWZZU0VoQWtKQ2FxcXF1UGo0N0t5c2tGQlFYOS9mOHZMeTNKeWNtOXZiNit2ci9qNCtBNE9Eams1T1RzN08wSkNRbWxwYVhsNWVheXNyRGMzTndVRkJRRUJBZlQwOU5YVjFlN3U3djcrL2pVMU5ZK1BqK2JtNWp3OFBETXpNd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEc0FMQUFBQUFBVUFCUUFBQWExd0oxd1NDd2FqWURENUZIQkhJdU1pMjQ2cFFRTXo1MUZRSEFnSUlER1lpQklIQk82aU1KWUNPZ3NSWU1na04xRkJBeGlZRkNvS3dnWFF4Z1VJM1ZDRGpvQVFoVTZIWVk3Q0RvSFFpRXdKanNhTlM0b0tUZ1pFaUFrT3hBNkUwSWJPak9ZT2F5dHJDczdBRG9QUWlVNkxZOE5PaFZDTVRvc2p3c1VUa0lTSng1MUJRTjBRekljS25VQkFsaEVxQkkzUmdvUk9tWkdOaHdEQ3cwQUVBZ09CQUp3VHlJWkwxUlRGM21HTkI4UEV3ZUtqL283UVFBNycsXHJcbidpbWcvY2hhcmdlcC5naWYnOidSMGxHT0RsaEZBQVVBTlU4QVBYMTlUMDlQUW9LQ24xOWZUOC9QeElTRW9xS2l1SGg0WDUrZnQvZjM3T3pzejQrUHR6YzNLMnRyYWlvcU9UazVJV0ZoWHA2ZW5GeGNiR3hzUXdNREVORFF3UUVCTS9QejVPVGswWkdSdno4L0RjM04wRkJRVzl2YndrSkNXbHBhVGs1T1RVMU5RME5EWVNFaEFVRkJRc0xDNCtQai9qNCtBNE9EZ0VCQWVQajR3OFBEK2JtNXRYVjFmVDA5S3FxcXErdnIzbDVlZjcrL245L2YzSnljckt5c3U3dTdzdkx5NnlzckVKQ1FqTXpNd0FBQVAvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUR3QUxBQUFBQUFVQUJRQUFBYk5RSjV3U0N3YWpRQ0ZBVEhSSEl1TXpHNDZ0UVF1VHg1RVFJazBEZ0NIcENEQUhERzdTc0w0Q093Z3hZc2dRT3g4aUJVQmd4Z29QSWdjT2tRSkZCbERHaFkwUlFTQ1JCRTdBRUlUT3k5RkM0MUREVHNLUWpNcEp6d0RJUnNnS3lJTEJCd2RQQWM3QmtJak96YWhPclVpSmJVNmR3QTdDRUl3T3poRklKaENEanNUUWk0N01VVWJ4VHdTRms1Q0JDZ3FSQ0hGRHdWMFF5MGVPVVFEQTN3Q1dFU3hCQ3hHQ1JVN1prWW1IZ1VTRGdBSERSRVVBbkJQTnd0SVVKbVNZVThXSVRKcUlEQ2dJTkxCaDBXQ0FBQTcnLFxyXG4naW1nL2NoYXJ0LmdpZic6J1IwbEdPRGxoRkFBVUFOVS9BUDZZbHBXNTdVV0UzUlpOelBsWFZ4RXl3NVRDbDFhTzMvNnRxaHhtMUtqRzhTRktlckxYdC82MHNYU2s2R3lkNUZtbFVHU3pXbWFaNUl1eTZsMlQ0WVN0NlRCeUszd3pmUDUxY2Z4c2FuU2k1ZjFtWTN5NGduaW02SnpJb0dLVzRUcDgybkt4ZUtIQzc2clJyLzU0ZEtUTnFDdDAyUDV3YlZHTTMzeW81LzZnbnY2a292NStlZjZGZ1UyV1JmTTlRWU85aXY2QmZJQkVoenlBTlg0L2c2N1RzMitnNkVTTFBXcXJjR3k4WVBWSFN2NWdYQnBCZFA2NHRmNjd1UC8vL3lINUJBRUFBRDhBTEFBQUFBQVVBQlFBQUFhendKOXdTQ3dhajhpa2N2bnJPR3dQQ1lVcHRDbXVvZ1AxSjFFRUpnSEJsaUthVkFLZ0pJbUVPV1ZRZ1VwcVlsTDdlbzJHSU5EUlZCSkpHRDB0TVFnZ0V3OFBLWUJJR1Ewc0pBZ21GUklmRGdNNUVSRVFFRVFiQ0cwckNTa1VCdzhEREF3MUl5NUVCQWduR3lvSkdpZ29FcWd3SENVM3Jpc2JPd0FERHdJQ0ZBVWpIQ0VlTTBRNktqc0V3aDhDSUFjRkpTRTRCaFpFTHdEZ3dxVUhLQVVlSGdiY1JESTBGKzRGOFBFTDh6dzhXL2Y0K1VFQU93PT0nLFxyXG4naW1nL2NoZW1ibC5naWYnOidSMGxHT0RsaEZBQVVBTlUvQUlUTmRXbTNXYnJjczViV2liN290VnVxUzNPN1pMYmhyc0hpdXFiWW5LdllvYkxicXZUNTgzWENaZi8rLzJPdlZOajEwOW5yMU0yUGxQbHBkbmpGYWRIc3k4cmx4ZTBwTzVETmhQcjkrcHpYa1AzKy9PMzI2OGEwdHN2d3czekpiVktqUWVFVUtJalBldUh4M29ESWNlUHg0YzNteVhyQWJPbjU1WWpCZkZlb1JzYml3Zm4vLzErc1Q1RFNnLy85Ly9INjdwM01rN3J4cjYvcm9tKy9YLy83LzlEd3h2R2dxVm1vU2Q4Q0Z1VUVHZm1kcCtyMDUrdUZqdi8vLy8vLy95SDVCQUVBQUQ4QUxBQUFBQUFVQUJRQUFBYi93Si9RdC9INUJxMld4cmdSYWdvUGtwQ2hBU3grZ29hbzRxZ21mSllUUVBCekVIQ1B4dWlYMlRnUXFrZUFYSFNVUFkrQ2lPR3JySHdtQVMwVUt6OFFDRUkvUGdjcGZ3YzBId3MrQ0NrQ2l3MFVNWWwyTHhzdVNRTStRejRhYUZJL0d3a25sZ2NOWXo0VEZ4S1RIeDhKaWg1UUpCeUdFU3c3T2lFWEhUNG9KcUptQlhvOFB5ZzhMRGM1d3NRd0k2S29DZ05YanhRSVBqMFRFaHNyRFEwS2lVWkVueTJoUGl4R1QxRkRCQ2tXUGdrQjVqNDJsVDRMTkFFMFRhTHhZTStHQ3ZZcUVLU1EwSnVpQTNFb2xHQ1Q0UVVjT1hSODJQbkJZTVlKU1FndzJaTmg0SXVKRDNOR2NWRFg0Z0VHSXd5Y29EbVJDSjBNRlFVVStJaHdJSUlQTUFJcVZHaW9PU1JEakFNN1A2Z3dVQ0tEZ2dNWmlLTHo4UUlDaUFBQnJoaXBJYldtand3YVdtRFlVRUxFaVJWQkFBQTcnLFxyXG4naW1nL2NoZW1kcmF3LmdpZic6J1IwbEdPRGxoRkFBVUFJQUJBQVY2TlAvLy95SDVCQUVBQUFFQUxBQUFBQUFVQUJRQUFBSXBqSStweSswUG81eDBnWHN1TUR0MG5vRWU5NGxJaDVaamdwSnN1RzZhcW1WWVhPWDZ6dmUrVVFBQU93PT0nLFxyXG4naW1nL2NoZW1lbmUuZ2lmJzonUjBsR09EbGhGQUFVQU9aQkFQejgvQURNek15WkFBQUF6QURNQURPWk04eVptWmxtTTVuTXpETXptY3dBQVBEWXlQLy8vNW5NbVptWk0vL01BUC9NbVFBQS84eVpNd0NaQU16TW1hYks4SmxtQUtVQUlZQUFBSzJwa09IaDRRQ1p6R1ptbWN6TU0vK1pBSm1aekptWkFBRC8vOHZMeXpQTU0yWm1BTXlaWm1iL1p2OEFBTXd6TTJiTXpETXovd0NBZ0prek0yYk1aalBNek5qWTJQLzk5d0QvQVBiMjl2L016R1l6WnV2cjYvOVFVQUNabWN6L3pQOHpNd0NBQUFBQW1abi8vOHpNQU1EQXdHYi8vNWtBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRUVBTEFBQUFBQVVBQlFBQUFlVmdFR0NnNFNGaG9lSWlZUUdDamt6aW9VQUZ3b25OcENFQUJoQUNpaVhpeGdYQzU2RUxBYWpoQWNRcDRNU3FxY3dKUUlkb3FNVUlBSVBENElWUEF5RUdpMG1PQXdMQnhZQ1BSNFVLUUVoUDRRRkJERWpCUTRPSk1jU0dSc0IzZEFUQkFRYWdoa0hOQ0pCQ0NzM0xvUU5PaE1OaEM4REtoWHBDQUNGTWpXRkhBTVJJdWdibFdESGdBRURQZmxJa09ERHFvZWVBZ0VBT3c9PScsXHJcbidpbWcvY2hlbXNwaWRlci5naWYnOidSMGxHT0RsaEZBQVVBSUFCQUFBQS8vLy8veUg1QkFFQUFBRUFMQUFBQUFBVUFCUUFBQUkxakkrcHl3MzhXb2lJU29Dek85YlEva1NaT0MxZGNub2x1aXFoMjdMbmE4WnFhck93cUpVZ0IxTkJSamhkUlpJVElwZk1SUUVBT3c9PScsXHJcbidpbWcvY2xlYW51cC5naWYnOidSMGxHT0RsaEZBQVVBT1pYQUpHUmtXRmhZV2xwYVYxZFhaS1NrcWlvcVBIeDhYVjFkWUdCZ1ZwYVdubDVlWDUrZmk0dUxtNXVia3RMUzJkblozWjJkbVptWmw1ZVhvK1BqMzkvZjJCZ1lGbFpXWnljbkU5UFQ0aUlpSjJkbmZyNitwU1VsSnFhbXZEdzhPM3Q3U2NuSjdLeXNwQ1FrS2FtcG9xS2lwdWJtMU5UVTFoWVdLcXFxdlgxOVlTRWhQajQrTi9mMzBKQ1F2UHo4OC9QejlUVTFJNk9qc0xDd3ErdnI4SEJ3WXlNaklLQ2dwK2ZuMnhzYkkyTmpZV0ZoWXVMaTN0N2U5RFEwSEp5Y210cmE0ZUhoNE9EZzhqSXlEdzhQTFMwdEhOemM4VEV4R3BxYW0xdGJVeE1USGQzZDZPam8yUmtaRTVPVGpvNk9rbEpTVlJVVk9mbjU1bVptWjZlbmo0K1BzWEZ4WmFXbHYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGY0FMQUFBQUFBVUFCUUFBQWVyZ0ZlQ2c0U0Zob2VJaVlvN0RrS0toZ0FuSUFTUGhGVUpERWNmbFI4cExKZzFHNDhHQUVVQ0VoZ3RNeXVLTWhrUUI2ZEpUZzgyaUI1TENRMElDdzBEVkFFVVRJYzBFd3NCT0FJUkNnZ0lFVU12aFFZWEdocEFNUUE4T2tvL0NnTkVoaE5TSFZaVEJUY1hCRGtjUGlpSFJncElCeEFVQUFVRkl5SUxpUjRaRmdNVktnZ0l3dUVBSlVVOUhwakFBS1dKaFFBaEttMkFVU0xBRXdjcVhGUWFaS0FEaVNnYlE0b2NtU2dRQURzPScsXHJcbidpbWcvY29sbGFwc2UuZ2lmJzonUjBsR09EbGhFQUFRQU5VQUFOTGg4Ny9VN3JyUjdhUEE1N0hLNnFYQzU5N3A5cUMvNXRIbS9PUHMrTmpyLy8vLy84N2Q4c3ZpOXJ6WDlwTzQ1OVhwLzhyaCtxbko2dERsL01UZCtOdnUrNUMyNWVEeS84RGE5djMrLyszOC81dTg1WjdCNnEvSTZyUE02K2o0LzgvaysrLzkvK0h6LzFwNnp1cjUvOW5zLzlicS8rYjIvOVRvL2pKVnN2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDb0FMQUFBQUFBUUFCQUFBQVp1UUpWd1NDd2FCWWRCSVdBa0hoS0xSY2F3YWFvQ29heFdJekVXU09BdytETWdDaXFuOUdta1BqVVlRNEpvTGhxbFJ2U0xKdzdxMjFOM2ZTQUVReDBJQ0grQWR3Z1RoRUlDRVNpU2s1TU9jRU1GSnBxYm1oQVBSZ0Vsb3FNS0hGWURGS0lLR0JaV2owbExyckt6VmtFQU93PT0nLFxyXG4naW1nL2NvcHkuZ2lmJzonUjBsR09EbGhGQUFXQU5VL0FMak04SUtzNTVtcnhmdjgvaWhTcUNSS21OTGQ4cXZDNzZPNzdpRkVpMnVhMkwzSzRwcXV5L2Y1L05mZjY2Ni8xS201ejZLeHgvRHorU3RYc3BlbXUxR0QwVFZKWTVPaXQ3TEMySE9oM2x5TTJxN0U3OGZPMUpHejdvcXUvSE9TMFp5MTUyNlg1OHpYNmZYMis1Q3E0SUtmMk52azk4WFQ4czdVM2FPeXlEVmx4YnJhLzV5d3psVjV3V1NGeVdhQ3BiL0wzYnJGMUplcHhKL0YrdURtOGVicTgzK244K3Z2K2E3US8xdHlqMGR1dW1DTzUzS2E2c2ZTNGYvLy8vLy8veUg1QkFFQUFEOEFMQUFBQUFBVUFCWUFBQWFld0o5d1NDd2FqOGlrY3Nsc01qR1l4d09TUWpVeHZxd3Y4dUl3SDlvQkpaYnpLaUcrRmM1dzJSd09pRTVIZEV4bEc1TGFSdXNMcUJaR0FqNHpIUUVaQ0h3OEFCT0FSQlFESXpjMERpQStIaDRHT3hNRUJFVVhEWVlLQ2lSYUVpWW5EQVdlRWc0aVBUQWxQalloR2hVVnFaNFd1cm9mUGdNM0JnQWJBcXBLTGo2MXRoVUNDVXN0RFN3TURBSUNNczFLT3B3RUJRVUozazdnNGVMalFrRUFPdz09JyxcclxuJ2ltZy9jb3B5Y2hlbWRyYXcuZ2lmJzonUjBsR09EbGhGQUFVQVBjQUFQLy8vL2o3Ly92NysvLy8va3BwcTVtMTdJVzRuMUp4clZKeXJYV3podG5yNkZGeHJQVDU5eW1RWWl1VFlreWdncE81M3lpVFU4VFc5RnlWNlNTS1Y4RFYvU2FRVVlHWXYyYVgxNk85N2Z2NytYT3hrb25BKzRXNjk2WEM3UHo3K1lXNDgwaWZkM0N3aEovSHNZaTdwL3Y5L2Rmby9iZk04bENrZVlHVHVFU2VjV0Nxa0NtT2EvRDQ5Sy9UL0pTOC83Zk45NFMrKzVlOStWTjNzcHE1cVVTSTMxdWQ4SVM2K0pHeDY1akU5NEN6bU4vdS9xL0c0NWkwNjg3bC9XeW84ZFhsK2VEcyt2eisvNWZCcmltUFlMSEYrTWpYOVgraDRmano4b0N1bVRPYWI5UGgzWDI0c29mRXFXeXZzbUNVNENDTFZacTQ4bnFQdHNuZSszNjM5L3Y5LzhIVitZMjQ3clhRK2xCNXQ1WEMvcjNaenJQWndxQzg3MVNnZmpHU2RLelA4cXZEOHFqTnRqS1VmSG1xNHBLeTdQejc5NHVzN29DdTdJYW41bnU3bDNDaW5UMmRjaCtRVnA2NjcvcjgvM1d4aFUyaWhJS1p2c1BXOXYzKy9WQ081NEc2K0dhYTJvVytvNDNBK3J6UithUEE3eENGUmpKMjE1N050WHVnNXFyUHc0R1h2R2Vya3pXRDVSMlBWNnEvNjhIVi9uTzFtRDUvMzhyaS9wN0I4ZERnLytYbHpaUEhwRittZFlHMjlEK2RieitaWktuQTdwZTE3YjdnenNEVi83M1M5Y2JZODBwNHZyZk8rUzJOY0l1MjhSK1FXWHUybnNmaC9Nemc5enlkYzVySHNwKzU3VWVONHZ6Ky9LYlV2RmlmY0hlMGthZS84QnFJVzFSN3VJR1V1V3FyaWlpR2lmLysvOHplMWFYQzQ5em80cmJPN3FiUnR2MzkvN2pjeG9pbTRzVFQrQldKVE0vaS9iUEwrTDdTL0pUQnk3UEsrTWZkL01yazFNVFM1enlZZ25HM2hHeW03bUdzallPN3ZLdkIrWkt6N1pXMDlhU3Z4WksxNzNXMHdhM1RzV2V1K2t1a2NvUzA4enlMNnBPeDZsR2Zkdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFOTUFMQUFBQUFBVUFCUUFBQWovQUtjSkhFaXdvTUdEQ0E5eWFHYUh5cU1mME1na0hCaGpCNENMUUJSdHdqQngyZzBUQU40RXlHRkR5NkE3bjRJZzdKQnJ6b2s5ZVh4NFN1UnIyQ2hZQjBGTTBXVU1tUXNBcm1nQnVJS2xCZytEenhiSll1SUVESUFxQVFDZ2tmR2lEN0NDRUpZUmVlQ0ZUVEVQUlFvOXFUTUJFYWFDcGh4c1FhSWpBWXRVdkc0WmtYREpVaGFDZkRwcHVNZ3NqZ0U0bXM2a09XTExpaXFDaEpRME1jTkZ3YXhRcFlLRlFaVkJrcDRaQk50RVVDTkNFQW9LWWloOWlUSXBXZzhZQ0FoeWFuQnFCUTFpMGw3Vkd0UEZUUUZSdlE0UXhDWHNGNmtXSHdBbEdRR3FrcUZkRlRJdElPZ3MwcElCUWtnNHdoT2lsYkpqT01yOElWRFFEeFJXc1lac0YxQ3hSczZGUUNsV1NVbDI4SkFGU0kwNnlwOVBmMXBBQURzPScsXHJcbidpbWcvY29weXByb2QuZ2lmJzonUjBsR09EbGhGQUFVQU1JRkFBQUFBRUJBd0lDQWdJQ2d3S0NncFAvLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUFjQUxBQUFBQUFVQUJRQUFBTTBlTHJjL2pES1NhdTl1SWxOWlBpRHNtM2VGNGlqQXl6bWVZekNBY3owZXJRbzJkaTNtY2NSM0NzVkdZQXl5S1J5eVdRa0FBQTcnLFxyXG4naW1nL2N1cnZlLmdpZic6J1IwbEdPRGxoRUFBUUFOVS9BRkZSVWJ1N3UrN3U3bWRuWi9qNCtQUHo4MWRYVjFaV1Z2NysvazFOVGVmbjUrUGo0N2UzdDRpSWlFWkdSbEpTVXBPVGsvSHg4VUJBUVBYMTljWEZ4YzdPenYzOS9hcXFxbzZPanIrL3Y5N2Uzb0tDZ3ZmMzkwSkNRalEwTk9ucDZlenM3SEZ4Y1cxdGJhS2lva2hJU05MUzByR3hzVTlQVDFOVFU5RFEwRVZGUlphV2xzVEV4TDYrdm9lSGg1bVptVlZWVlhOemM1S1NrazVPVGtkSFIybHBhWFYxZGNMQ3d0YlcxcmEydG9tSmlmcjYrdG5aMlQwOVBmbjUrZi8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFabHdKOXdTQ3dhajhkSXFnRTQxUzY4NDJSdzJPUUNLd09nWWlINkRpSUZzUkRvTUlZN1c0eHpYRWhBUWsxQ2dQeTVNSWlmREZJbmpBd3ZDZzh0ZFN3ekpCNDRPblJJQlNncURobDFReVk5Q1RlVFFnczBBQ1daUHdRRE1CK2ZQeFFoZWFXcVJFRUFPdz09JyxcclxuJ2ltZy9jdXJ2ZW1hcC5naWYnOidSMGxHT0RsaEZBQVVBT1pvQUlxcUFOM2QzZERRMEZ1bDQvcDdWUHg3VWs2cDhNWHAvMTJrNVkrcUFLT0svLzk0Ui83TnNVNm84RjJrNFZ5bDQvMTdVOTNrdCtqcnlQL2J4TlB4LzVyYS8vOTRScy9Qeis2VWMvcDhWZlhGbWZ4N1VkemMzRmlsNWVyai80eXFBSmV1RDR1cUFLeVYvOXpqcDAycDhmMm1pcVNJLzl6a282R0svL0xHbTFxbTVXZW81UEt6ZkU2cDhhZStPcEd1RFp1TS83MnovLzkzUnU2VGIvaUVYcG1NLzQ2ckFIcTI1cEhFN3JMSFVsNmw0YStnN3BIRDdlK1VjNVBDN3REYmdmeW1pOWJ3LzVMRTcvNm5pclBqLy9DMGZ2OTdVUHA4Vmx1dDdvakc5ZmVFWVAyY2ZIUzI2VnVsNTZtUCs2ekFQSkt5RWJYSVU5WFAvK0xjLzRpdEFKamIvOUhhaEhpMjVlVGEvLy9hd3YrbGcvOTZUN0hrLzNxMjVZbkc5aytwOFA1N1VKQ3hENldILy8rbmk3SGwvL1N6ZW9tdEFNek16UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFHZ0FMQUFBQUFBVUFCUUFBQWZnZ0dpQ2c0U0Zob2VJaVlxSUxnQWhUMmcrRGdOSmFDVUVCRUNHQUJFU0NXZ0lCeFFOYUFVTUV3U2JKejgyYUUxY1ZTUm9SaG9zRUlaaFZHWlFhRGNHTFV4b0dBc0xQWVlDWjJjQ2FBSEpBY3pKSElZaUNpZ3hhRU1GVzFwb09BTURQSVlLV0I0MWFCc01XVEpvQXdkQkR1SlRVakJvWUJwbEZtZ3FaQlVQaGs1aVRPd1F0c0RDRERSWERIenBjc3dadERQUG1wMlJWaWdIQUFCUjBBZ1owTUVMbWpFRk5peloxT2xUcUZHbFRxVXFCR0NFRlpORUtoaEFBeUZGa1F5R1hnRDRBQUxOQ2gwUGtLQ2hrZUdJRWtNWGtpMURwZ3dOMHd1TG9rbzlGQWdBT3c9PScsXHJcbidpbWcvY3V0LmdpZic6J1IwbEdPRGxoRkFBV0FOVS9BS3k4MTUrdHg5TFYyRmVHNDZTc3Q3Vzl5VmhoY0lPbTY4M1o3SXlWb3pWU2pEUkRZVmVFM2s5NHpWTisxZDdpNTh6WDZVeG1uRmhlYVRsV2tUOWlxM2lCam14M2h5VW9NV0NRN3NuVDQ3Qy8ycG1tdkgyQmhzN1AwVUZtc0RWUWhteVAxOURhN3VuczdsMXNnMDk3MVNrOFkycUx6NGFid242YzFybkgzK0RqNk9icDZ5NURiSzYxdjBKaG9aU2RxOWZjNExLNXc0ZWkyYm0reEt5MHdLZTMxVDFLWjlyaDdKMmxzR3AvcW5XQWpsSjR3c2JNMURaSGFVVnJ1Zi8vL3lINUJBRUFBRDhBTEFBQUFBQVVBQllBQUFaM3dKOXdTQ3dhajhpa2NzbE04Z2hERmE0SlN6eUVyVm56OTRvSkxaMHRMU0UwQ0xhRkJLRWkyZjRFdXBHRTQvNVpES1BDTm5RWW9Cb09NaWxMQ0JnTUxoRTdKRDRuUzMwZUV6a05Od0FUU3dNSUdRb1BEaEFCTEVzTUVEVWZJaVlVSlJkTElCUUtOaXNBUFFzQlN4b1JQUnQxdXJ1OHZVRUFPdz09JyxcclxuJ2ltZy9kZWwuZ2lmJzonUjBsR09EbGhFQUFRQU5VcEFOVmRUTjV0WGVITnkvRzhzK2l1cHVmVDBjVllTK2F1cHRXVWpOOVVRT0tjaytZc0VPT2tudTdFdnZPT2YrelB6ZDF5WThoYlM5UjdidHEvdk9hNHNkSWhCY2t6SGVQVjArWFkxdkM3cytqWTF0MTdiZWlCYzkvQnZ0Z0xBTnVSaDlJcUZOUzFzOTVWUVBIVTBlSEh4T0tnbWVqS3h1QjJaOXlEZC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDa0FMQUFBQUFBUUFCQUFBQVpId0pSd1NDd2FqOGlrY2RBd1BpWkdRY1p4RUk1S2dxUmlzV0VBbE1LUEIxUUFweUFHQUFXY2lBZ0R5b0JscUpFZ0NSVUVzVU02Y2tRbVJTRkhLQ2RtUWhjWWg0dU1LVUVBT3c9PScsXHJcbidpbWcvZGVsMi5naWYnOidSMGxHT0RsaEVBQVFBSUFCQU8wY0pQLy8veUg1QkFFQUFBRUFMQUFBQUFBUUFCQUFBQUlZakkrcHkrMXZRSktOQmxzdmpGdGpabjNUMkpYbWlTSUZBRHM9JyxcclxuJ2ltZy9kZWxvY2FsaXplZC5naWYnOidSMGxHT0RsaEZBQVVBTUlFQUVCQVFGQlFVSEJ3Y00vUHovLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBQVFBTEFBQUFBQVVBQlFBQUFNc1NMcmMvdkNKU0FlZ2JoS0xHZCtkZDRYTlI0emhaM1lxeW80RHFheXk2V0p0RGQvVnJzdWVBSERZU1FBQU93PT0nLFxyXG4naW1nL2RlbW8uZ2lmJzonUjBsR09EbGhMQUVZQWZmL0FQSEt6dWltcSt5NnZlcTB0L3Z2OFBUWjNQUFYyUDM1K2ZydDd1L0J4T2VpcC9YYTNPcXZzL0RIeXVXZW8vZmc0dkxPMFBqbTUvVFQxdVdkb3Vpb3JQenk4K3UwdU8yN3YrL0V4K2FocHZIS3plbXRzZTdCeE9xeHRleTV2T2FncGZ6Mjl1cXd0UFhiM2VhaXArYWZwT2VrcWV1MXVlZWxxdXF5dHVtdXN1aW5yT3F1c3U2K3dldTJ1ZmpuNk8yN3Z1eTV2ZnJ3OFBiZTRPeTJ1dlBUMWV1enQvdno4K2VscWZucTYvZms1ZXUxdU9tc3NPaXFydWlycittcnIrZW1xdWVtcStlanFPMjh2L0hNeitlbnEvYmQzK2lwcmZMUTB1V2ZwTzYvd3VXZ3BmVFkydWVrcU9hZ3BPN0J4ZTI5d09hanFQSE16dlRXMk83QXcrbXJzUFBSMVBESXkrL0Z5T2FpcHVtdnMreTZ2dWlvcmZUWjJ1YWhwZTI5d2V5M3UrNit3dWlxci9YWjIreTR2UExSMC9ydTcvejQrUGJmNFBMTjBQZmo1UERIeWZqbzZmUFUxdkRKek8vQ3hlaXNzUERLelBmaDQrMjh3UGZpNU95NHUraXBydTIrd3ZucjdPL0h5dkxTMWZMTzBlcXp0K2FrcVByczdmejE5ZlBSMC9UWDJlYWpwKzdDeHUvRHh2Zmo1ZmpsNXZES3pmSEx6dm5zN2UvRHgvTFEwL2JmNGUyK3dmYmc0ZkxQMGZiaDR2Zms1dlhjM3V1M3V1Njl3UGpuNmZYYjNQamw1L1RYMlBER3lQVFYxK3UydXZ2MDlQZmw1dnp6OU9xenR2WFkyL1hkM2V5MXVmVFYyUHJ3OGZ6MzkvSE56K1docHUvQ3h1N0V4K2FscXZydTd2am82UFBVMS9ISnpPMi93dTdDeGV5N3Z2VFUxdWlyc09lb3JPZXByZkxOeisvR3lQVFcxKy9IeWVlbnJQSE8wZWl0c2Vtc3NlcXRzdmJlMyszQXcvWGQzK21xcitteXRldXl0dXF4dHZETHplYWxxZlRZMmZIUTBlV2ZvK214dFBUWjIvYmc0dS9CeGZ2eDhlYW1xdm5vNmZQVDF1dTN2UFRVMS92ejlQYmU0ZW12c3ZubjZQdnc4ZmptNlBmaDR1bXVzZm5tNlBERnlQUFMxUFBTMWV5M3V1V2hwZXF5dGZqajVlNi93KzdEeHZER3l1Mi93K212dFBUVzJlL0R4ZXF1cy9IUDBmcnk4dnZ5OC9iaDQvSE4wUERHeWVxMXVQcnY3L1BWMS9ISXpQams1dTI2dnVXZ3BQREp5L0xSMU8vRnlmcnI3UEhPME9XY29mLy8veUg1QkFFQUFQOEFMQUFBQUFBc0FSZ0JBQWovQVA4SkhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dMR0ROcTNNaXhvOGVQSUVPS0hFbXlwTW1US0ZPcVhNbXlwY3VYTUdQS25FbXpwczJiT0hQcTNNbXpwOCtmUUlNS0hVcTBxTkdqU0pNcVhjcTBxZE9uVUtOS25VcTFxdFdyV0xOcTNjcTFxOWV2WU1PS0hVdTJyTm16YU5PcVhjdTJyZHUzY09QS25VdTNydDI3ZVBQcTNjdTNyOSsvZ0FNTEhreTRzT0hEaUJNclhzeTRzZVBIa0NOTG5reTVzdVhMbUROcjNzeTVzK2ZQb0VPTEhrMjZ0RWhBQ1ZLblRuTGhRaEpGRVNLWXR0dmpCeElmazFRbm1PSmxuNkozc1lQUGh1dXZ1SEVrSFpLa1h1RlAwNkhnMEdVUFgydThldkVkTTNaVTV4RDhFUjRUSTRwUC96OXJ2ZndFRmVWVGtJa3dvUHg0c3VYais1dFEza0VLK1FYZWc1VmZuc2g5L3VYSmM0QitYUUZvblFsWG1OQ0VnZFhKTUNDQldSMVJId2JtWGRGQUE0SnNRQitESGh6d0lJUlZIU0NEZFNGSWdjQVF4aUZrQVFVTEF1aEFBK1I0QUNKVkhycVFnWEVZSUtCakdaVXdOSWdyTFREb3o0eFNIUUNDRGF1RTRBOEtTK2lvSTBRSVRDRWtrVkQ1NDBBR0pXemdDZzVPSWpCUkQxTlN5VlI1SG5SWmtaQkRpcWxVZkRROGFSR2FhaUlsWHhkRlpOU0JnVHJFZVJSL1BXaTBTQVBNbGFjREJCRG9XUlIvSEZWUVFTUU56R0Rjb0lRYU9oUjY4bldrYUFWRkdERUJwSVFXS2lsUVd0d1luNldYeHRKQ0ZKMTIrdWxQRi9Bd3FrZVhWdjl3U0txcXJ0cFRxSy9DV2dFMHV0QWFxYTA4blZEcFJ4VXNJRTBQbmpEaUs3QTdJUXFTQlIzSXdvUURXT2pRQUtGc01LdVRzeDlaWU1FT1VGU0hnaFRTYVhzVHQ5MXVFSjV4STV4UnJyazE4WWRIU0JaazhVRjFEcVFSRzd3MjhiZUVTQjA0WUoxdy9OSWszd1FMaUdSQmVRUVhMSk44Snl5UU1FZ0JEN3l2d3cvSDU0UEVJZG1Mcjc3dll2eFNmRmxJUExGSEd5aGgzUk1YaXd5VGNRNEFzVUVOSkhRUUQ4Y2VoUk5mS3k3TFJFWW1SVHdnTkF2R0JhSFBSL0xsMlhOR0RRanhSQkFwUWlUMDFFUWJGOEtIRzhsSHdkSVdUZkVLQmxlZ0FxWjdEVTA5dEhWSFlJMlJEUUtYRndMWEV5bWdRQkE3b0dDQ0Irdm1xcERaVlJ2L2w0RU5hbHQwZ0h4bndCMlIzSWdyc01VR0JqTEVkM2tPQmo2UmtXMVhKNHpoRUNXZWVBcDVEN3YzMmRacDRLSGtFUjFnZzZqVjZZRzVRNXJMelVNV1liUUlvT01QOUcyY0ZhT1Q3cENITVpSZzNRaXJONFNHNWlYTTBBQU1SZ2lKd1VLZ3I4eEZEQjVTTkxvTGpGZVhUL0FMZWZnRTRpaGdjS0VXRkFqNXdza0lQVkM5ZkNWY29JRkVsVkRqNFNPU1pMQ2hKTmdyTkxvcURLd0R4b1VYMnNHRWtEWHdBUWtXZ2lZSFFDUTFoOGdCTURDZ21pUUlJV1QxRzBqdURsQU0vdkZQRUxLRGswTFFKSjZGNk9hRHVva2dRbktIZ0RaWWtIOEQ0V0NhRXFMQ0RoWUVoREJNZ0FnUE1ybzRhTUFERmpqaFFUaEl3QllhWndJekFHRVMvOFlBd2hrZUpBY2FVSkp4dEhDaGhhemdpU3U0Z2VkWTZNUGlmRUFJcVptRUJWWlFCeFZnVVRWRzNHRjVLTkNBaHFnbVVIcERTQldMRTRndElPRkFZQXlqUWFib3dRU2dNWTFpaE5rYWkvT0MxTWh4am5qMDRCMnQwd0xkRGFRMUY5RENHRkRBaXpVcTU0K0FKTnREN01nZk5lUUFFUTFCWkd2dUJTRFUvUkNTZWF6T1JCWW1IeUZnQWhPSHlDUWlLV1dkQ1FEQkZMbllnUStJRUFRa09HQUNvQXhsMUNSQ0QwZVZoeGdoZE1nRkdHQWRCMUNnQTk0S0FRT1d5WUFVNUZLTjFtRkVSUm9RSHhWOEVDTEZtUUFXanVrdGIzVmdtYy84aHdXVmxNSml2c2s4UVl4ak9ERnl3Z2Fnb0hFWGljOE5ycm5PaW5qdmhEQUkwem10cy8rQ0JuYWduaFB4eHczb1lFRTdWRzUyOFl5UENXYmdndzBCRkp2R0NZTVhHb0NCLytsem45WDV3WVoyK2RDRUhDQkkxWEdsN3pTSUVaSjIxQ0FpMnFNb015SWtHWjNVSUNESWdrbzVtbEFBOWVtbEJGbUFKMVg2Z3F3eENLY0NRY0Q1WmpvKzhsMUVCSmVRS2JvNmlvaWYva044SnR1SUg4cFFpQVRSc1o3Wk1BQkNDd0tnb2hyVklqYlFFUTRFc05SMUN1MnFCT0dQVjBXd0VTZFJxS3pQRkZyblhFaEZRZmxpRVhIZ2hKYzBvaU15QUdoOTlSU2FCaVRad3g5dVlBclZnSVFMRU9HbWpDQ2dFSDhGcU5EdXRGS0hHSWNQNlZURUd1NWdKcjZHU3o2QS9hTUdSUENBZ1R4QURJUnRpRC82cVJ0QU9Fa0VHTmpBUnI0QVZ4SC9Gc2NCREdDQlFCNGdwY29lRUlSd3dJQVM2VnJUNnFnQWxHVHJnQkZDc0FFVkNJd2lJSlNpZFRaeTBBeTQ5SThIVFpFL252QUlGeUFBQklhc1kycUlHVWlLV09rRU84aGxCQURVQUJHQU43d01TYzBNTnBwYWk0QVRsQkZZZ3hQNFU0SVdwQTIrSGhRQ0orWERWcUJHaExOcXlDNitPQUM5aTFBVFFEa0FzSUVINGlRcC9BQkFKYUFCUmtZYW54SzRJSG9UZG9pVDV2RE9yV0xVT2lsb3hBSE00SWNRaTFpcys2MnRSUENsakF0UVNnVjUyS3VMR2VJa0Z6akJDektPaUFQOG00TVlJSUNWL2xDRGpuZXNrRHNRUWdZaVdJQUgwQ3E5MGZVT1h5WmlNa05NSmpGaGxYZHlIZ0pCZG44d2h5VnIrU0JjZnV1WFN6ZTYrS0NBLzB0blZvakVJa0VJUEZBWnpJT0xqeE1hRytlQ0xJQVFPSWdCaXU0c0VROVZFZ0ZsNlBOQlNPRWhEcGo0SW1LV1R3L2tFQU5GMC9BQVU1WVBFRHlWRVQzd3h3Ujh0clJBRGpCVTZ3eUtJd3IyQnhPY3NJWlFpenJWeFZISHJ6UlNudzVjQVJLdUZyWFdVdVhUNm5RQUEvMndoSm5sT0dENWZHREc1YkdHOTFBVmhWNzdvd01YT3NRYVFPbXQ4QWtwR1JDMVRpcHVnQVg2YU5PbjBMNlFGU0RaelQwVW0wRUd0T3hGTDJJQ0ZQNnhtOTV5VlFzUnBtNERoWmFkWmZ6akNaRFpUU3hVMFJBNFc4Z1JRTEdLRXBkSGRLSitxcFY0c0FjTC9NZUhHeGdDQkx6UkVBK0pRR1hsd1oybHl5TXpMMWR4RmlvSUFpNFpZaVNRV3NjQ0lQOCtzM3crTzFQaWpwQUc4ZG5BNk9JY253bVFvT1crSFdHa3l5T0ZtVE81SENFbHdRZmtKcW9OOGpCN2ppN1BBSERnOHhEUGd3M3pFWHJyNnUxVWhjZ0ExaXE0UU5wQ2ZBY0orVU1KclZNQVJPakxuK3NtSk5QODBiaUJCMkVjRWt3OUlyUmdFQWZneTJINW9NREFaS2h1NHN4cm9Id3paS2RyZnFaMDI0NDRpa1NCN1BWVkNLeHpYcy9oVm1jV0FhQUlvUnlmK0lVc25xYnJsSThNcGkyUlRpVUI4UzQzNDdyRHFkQmhOeVJWR3ZBQkVrWndndGEzdmlLT3NDaC91dkJRTnBsZUlRZ29BcTFRc0F0bTNyY2lPQURENHRPZCtmSkFJZGNKMFpFMkNCVUZERERpbTh5MDN3RnUwWkFLRERyd1lZeVBGMjZQRUNmaDRnWWJyVVAvOUQzcW9VWTRwQStwN3FpYnVXK1FDM2loRFFZL0Rqam9rSkN3dW9BR0hOaUcyUld5MDVmS1ozbVpCQU5VZ0hIRnBGc0lnUXdZMEFJSDlSQ01WMDlCZGtnWFFBV2dOeC9kaHdBeE5sM3ExZ0pBOVlDSVJBV1BSaEE2b21ZWVdEL0dzUWNpb0FIT3hCRWZDSUVSaUM5dmhIa2dpQUR3UUdnWUV4OE93QUVlUUFFNnFJTzFVRksxOVFRWElJRFdBUU4vVUFNcmhIdHdRSVB3Y2dENUpCLzRzQU03eUlPWGNpWndsUUFzWUFJU1dCMWJFRFNsMVJBSVlJVFl4eXlqNEE2YlFGc0hFNFVVY0FNdFFBQ0tzZ0IrbDIxME5BYjNVQU1uNEVrT1FBTkM4eEJpd0hJamlERkNZd2s0MEFkUEFDQ0JFQWdaVURrT3NBUEdKQVJORkJFbS8zWmI4ZUVHZWZnUWYyQUtTcmdxWnZNQWVUQlRzbkJQY1BncUJtSUlYZmdRSXJBRmwyZ29tZmdBZjNCNVVDTWtNU01PRDZFSk04VUFFMEZlbFdjck1EQUVYSGhhYzJVZEdhQmNFMWdlWFVBSkQzRUFZT2hERlBFQVRXZ2RBQWd2TU1NQWJ1QUlZU0FmUkFBTHgzQUpndkFDT3BBODZNWWw3Q2RCa1ZCRkZmRUFibEFlT2NJdk5zZ2YzQkVCbkpBSEVLQUJHUEFDU0NZZm5hVVFackFNMnFGQ0Z2RUExMWNjT2ZLTmNkSkNJUUF5RWRBSVhMWUFFUEFDRDFkTTNvaDhCTkVKRDJaU0UvRUFOREJnLzJndTV0QkNjbVl5UTFBSDhUR01UbElFTjVVUUZkQUhnL1NBdENNRzArZ1Avd2lRVkNJQnpTQ1JDeUV4SW1nY1VGQUlDUCtBQTIzUU5ndFJBYkV3ZWhJaE5HSmdBZzdRa2k0NUl4SWdBY3U0Z2d5eEJHOVFIajFRQkNKd2dhRkhFQld3bEdISVBBK1FDUnhRQXpLZ0NrN0NMQkpRQllrUURQd1JDb2xnRVRCd2M5V3hBU2xnaG4xb0VCV3dDSUFYbDQ2NEJVQlFIQ0VnQWl3MkNrY0pJWEl3REQvUWk5bGtCeEtRRWVmR2xBSlJBVlpRZFk1WVREMlhjcDhTak1ZQkJvZXBFVUl3ajZDbEVKQXdXSTZwV3ZFaE9wS3BKK3JJQWFiSkFRMXdtYk1sSkxDd0VHWXdCa0NwUzlaeEFhTVpKNE5YSGxFQUhTQWhld0RDRHZiakNXamlkblhGWHhLbUh6b0FJTzdTTWtnakpEbWdFUExHSUc2M2R4cjVLUVl5QWcwVEVrS3lCSVlVbkluemdrY25LUXhpQXNyL0tSSU1Jbk9GQlNBa2tBRnlrNWp3Qko1eUIwSGthU0FmZHA0MUozWHlvNCtTd29mODRRQndvQkwrOEFhOUFGb0FaaDdaSkhUMytaMTZJZ2N5ZVJKamVRK0kxeUVEeWk1OGtBbzdhQXoraGlZKzhDazdHWnNta1pRU1VBOFhWaDJpS1dIUldRSS9FSVZFSUNTeTlTbVJFSDhvU1JJZVdnVVdzRkVJMEhRTUlUZEJjQUpvU0lDblNDQVZnQUMwOEFHVUtSTWVxcFRoQTZFMjJoQTNnSWJQOEtKRWtnN005QVk4Mm9Bc1VhUlRFQUpjTUVFVUVZVjJ5U3krbDZJOU9oSkZXZ1duMEE1YStsRE10SkRXd1FFeThRbWlJQXJUVUFYTWtBTXVFQU0yQUY1b3lreXRXQjV4VUp3aWdRMzh3QTNqY0FnMXdGd2xjSWhIdUU3TXhJM1cvMUVEU2NvU2wwSld0d2hLeTVReTVVRUR1UU1UaW1JUFlEcXBrTFJNZkVCZkcvQmV0YmtTRlNBRVRocEdKa0FFR2VRUEhnQTRqNm9TMzZDWXp6UVBBRkFlRy9CaHNZb1N2T21wdVFRS0NwWUJJcENwTGtHcjRZUjIxbEVLeE1vUzdYbFNJeUlmRExhckpkR3NKMlZ5NVdFSDdsV3FKVUZLOFFFOEJ0WkpMVUFEZUtvUzE1Q1g4Y0dtRTRadTZLb1NZcUJnN2VKaXJxZ1NpdElLNWNFZE95WWtiMWdTbDBJaEttQUVESEFGUndDZk9JVXY4ZEVoS0tFb2NUQURRZkFLWEtabHR5VUFaS0NtL25BMWZub1JuUkFOYmVOVlh6VmhEUUF5U2RlVzBGT3gwaU1DMWJFeFVYVm13Zkd4MVRFR3BCQldKR0dNMWpFRUo0dXlFYUN5MWY5eERnNjVFYlpRSGw2bGFEWExIMlgybDdYSUFLMXFCQUhYWnpaYkhTMEpFc3prY2NhaEFSdnJzUEx4QS9YSUVjeTBrdFhSVXdtbmNMWVhsbGJyZStkR2kxdnJtZVh4QlU1U0JzNndFUlN3QWI1bnJqQ29hR1JiSFYxZ0NEU2dCeERBQm9EQVV0bkVlanl3VENsQUI3L1FuMXM3RUhGcnJBd1JIMzNMQUIwd0NQOHl1QVNoQVpkWGxRNVJ1UDdRQk16VUFhWGd1QWJCQnMrWnFnVnhBRXRRSGlQQVRDYWd1UWZoQW1Ed21TUm5jYUxMVExaZ3VnZEJzaTVpQThXWU93cVdBcjhIdXdRaEJRWlNTQUEyUVNBUUgwVHdUN29ybTZFanJhTTJRUzRRSHhsUXZNTUpPY3RxRUNHYk8wc1FvbFRxdkFJaEh4bEFxcVRqRHlVUVlhUC9Fd0ZqS1FjZUtibllLeEFYVUhldVNxZmZaU1NSNUFCWnVna3lVS1FTMEExdWNMNGtGd05jb0FFWE1HWE01VnhXY2dybFpCMk84QW4wcTVyNG16MWhsZ1B5b1FSY2F4MmhjTUFKdkR1NTQwUG9RTDhUWEx1RzFrSVVVS1FaREJHajg1UXRsQWhKK2NGc2hnbys1QU1JYk1LN3d3V2R5NkVzck1BekVMbHZHOE1WaHdZZlFNTTJiQkhEa3dGc0dhWTdiQkREczU0YjljTkJmQkdKa3dGMEFBWldBQUVzTUhKSGJCR0lvd0tzWURKekVNVVpJVGNzTUxOWWpCRlVmTFJkakJGZ0hNWmtYTVptZk1ab25NWnF2TVpzM01adS9NWndITWR5UE1kMFhNZDJmTWQ0bk1kNnZNZDgzTWQrL01lQUhNaUNQTWlFWE1pR2ZNaUluTWdyQWhFUUFEcz0nLFxyXG4naW1nL2Rldi5naWYnOidSMGxHT0RsaExBRVlBZmYvQU9lb3JQdjA5Zm5xN1BmazV1eTZ2ZXUwdVB6eTgvTE8wUDM1K2ZYYTNPL0J4UHJ0N3ZmZzR2am01L0RIeXZUVDF1V2VvK1dkb3VtdHNlYWhwdWVpcCtpb3JPcXZzK3kzdStXZnBQVFcyTy9FeCt1enQrMjd2dkhLemZucTYrNi93dXUxdWVlbXEvUFQxZWVrcWVtc3NPZW1xdXF4dGVhZ3BlcXVzdWlxcnZUWDJlNit3ZWluck9xd3RQREl5L0xPMGZESnpPYWlwL1RZMnZ2djhPaXByZmZqNVBYYjNmZmg0KzdCeE8vRnlPbXJyK2VrcVBiZjRleTV2ZWFqcU9xeXR1aXJyKzI5d2VhaHBlMjh3UHJ3OE91MnVmbnA2dkhMenZyczdmTFIwL0hNenVlanFQYmg0dXk1dlB6Mjl2UFMxTzdBeFB2ejgvWGMzdWVscWZubjZPeTJ1dkxRMHZITnorL0R4dW11c3ZER3llZW5xL0hNei9maTVPMjh2K2lwcnVpb3JmWFoyL2JkMy96MTl1N0F3L2ZrNWVhZ3BPN0J4ZTYrd3VpbnEraXNzTzIrd3UyN3YrdTF1T212cy9QVTF2VFoyL1BSMU95N3YrYWlwdXk0dk9tdHN2cnU3L1BXMlBudDdlcXVzL1BQMHVpcXIrMjZ2dkRLemZESnkvam42UHozOS9ISXpQcnY4UGJjM3ZiZTMvSEx6ZkhPMFBqbzZlL0N4ZTIvd3U3Q3h2ejQrUGJlNFBmaTQvamw1dmpsNSt1MnV1eTZ2dkhOME95N3Z1cXh0dkxQMGVxenQvZmg0dlRaMnZQUjArcXh0UERLek9lbHF2UFMxZm5wNis2OXdPeTR1K2lyc083RHh1L0N4dmpuNmZucTZ2YmY0UHZ5OHZQVjEvVFYxK2FmcE9XaHB1bXd0UGJnNGUvR3lmWGUzL3YyOXV1eHRlL0R4L0RIeWVxMHQvbm82Zm5zN09pcHJPbXh0ZTIrd09tcXJ2TE4wZWVuclBUWTJmUFMwL1RYMlBIUTBlL0J4ZWFqcCt5MXVmREh5L1haMnZ6MTllYW1xdm5zN3Z2eDhmSEt6UExTMWZ6ejgreTN1dTI1dlBMUTAvUFEwK3EwdVBuczdmUFgydkRHeXZiZzR1bXZzdmZnNGZyczd1eTh3UG5yN08yOXdQWGU0UGpqNWZ2ejlQam02UGJqNVB6Mjkveno5UEhQMGZydzhmdnc4ZkxVMWZyeTh2WFgydW11cy92eDh2anA2dm5vNnZERnlQVFUxK210c1BETHp1V2dwZkhLenVtc3Nmams1dlhjM2U3Q3hlL0h5dTdEeGUvRHhlL0V5UFhjMy9MUDB2Ymk0K1djb2YvLy95SDVCQUVBQVA4QUxBQUFBQUFzQVJnQkFBai9BUDhKSEVpd29NR0RDQk1xWE1pd29jT0hFQ05LbkVpeG9zV0xHRE5xM01peG84ZVBJRU9LSEVteXBNbVRLRk9xWE1teXBjdVhNR1BLbkVtenBzMmJPSFBxM01tenA4K2ZRSU1LSFVxMHFOR2pTSk1xWGNxMHFkT25VS05LblVxMXF0V3JXTE5xM2NxMXE5ZXZZTU9LSFV1MnJObXphTk9xWGN1MnJkdTNjT1BLblV1M3J0MjdlUFBxM2N1M3I5Ky9nQU1MSGt5NHNPSERpQk1yWHN5NHNlUEhrQ05Mbmt5NXN1WExtRE5yM3N5NXMrZlBvRU9MSGsyNnRPblRxRk9yWHMyNnRldlhzR1BMbmsyN3R1M2J1SFByM3MyN3NRRWp2ZGthK00wZ2VOcmg1WXpjTUg1MnVBRTdScm94Sit1Y2h3cCtTUXdkbVI3VytZd0ovc0tILytjTzFya0Q4ZWpKZnpXQUJBSjY4ZXE5R2pqL2ZueDhydUZZMVlkL2YrdW8vZmIxbDVVSEFQb2pvRllJdUxlZkJBZG1sUUtBRlRTSWxSeG03RmVDaEZpdHNVTjlNWFNDb1ZVd1pQQkVEeHVHaDBFUUgxWVZ4eVBPaFdFQ2Z5bE81ZHh3QmFRWG8xUXo4bENGalRkQzVaMEc3L1dJb3dGYzdDZWtqemNvR09TUlRzMUFBb0JNeXJRQVJ3V3lFYVZMNFVsd3hnc2FBVGhCR1ZleVZKOFFSV1MwM3dZSUlCQm1TbDdxZ0pFTGU5VFhnWnBybWxRZ2p4TXhZTU1HY3RaWjBwMzFWY1FBR2Z0eDZXZElJQUFhYUo0ZDFGZUJIb2VHUkFjTnFpaTZKRVRZREZJZkdROUVLdElCTHFEUmpBUXNUQUFlb0JITmgxNGVEN1RxcVVnSnhQK2FBUmRrUkFCb0NBVThOTnlML21CQVRhdWR2Z3ByckFud2VXY01CWURnMEhCaHVIY0JzTUVLRzFLc3ozZ0I2QWs3Nk1DQkFnME41NEFFZ1VBYnJiUWdmUkRKTFpaaWdNSW4zQ3BreERYRkpDTHV1T1NDQklDU2dLcDdnVUlIOUhzQU5PTFcrNmVsNFpXQWdySUkrYXNCSW1lUTBjTXdlUWhNRXNIaG5RQkdIVU1jNUsreGVFb2NFbnFyNFB1ZWdpR1VXZEFCUlJqcGNVbEttTkpBTDE4b0dvRUpCWDFncThvckU5VEF6anp2ak5IT05YaHg4NTFUYUREUUhBWG0vSThDVEV2UmM4OHFGQ0MxUlR0alVZSE1vQXlVdE1kTWQxMUlHVTlYTGZYWUZlMjh5VHhUS01yblAzY0szUFhiQ3JpZ25SL204TkRBR3lDTVBiWUtGZFgvUUV3V2FPVFFRd2dVTHlvdDNGMnZvTGZVV05pemVBSE5PTjFBUlVtd1I0OEtEdkJhK0FoRUNCc2VKK3krL1VIZWo4c3h5ZUpyTU1HelJUTWF3SU1ES0JBY3dSMTBSdnBlR2lBd0xVbzJqeGRBUnc0SGFIRzYxSzZvRHZSRnJSc3dpQU5WMEhDbkdoMUU0U21BUHVUd2dBYTk0K0J2OEY0VWNFUVhEVWlCd3drR3NwNDhGVEFFOFlYSTRrMHc1NkVGbHFCSHEyY3Mzb01TMi9lYmd5Rll1TEZGeHhOcDNTV3NJSU5HZU1BRHJ2REJmanJncHp2cEFGZ2VPbG4rK25VQktHRmtPTi9vbHdwcXNJQUYyRUNCT0xzU0FrNjFud0xRUzJQYjA4SFdNR0tGZm1XZ0RCMGtCUkFzR0NZRWNLdytmSERJOXBaUUlCSm9wRjhpK0VNSC94ZndBeHBHS1Uxb01LSU9EM0NuRUlSaEkxYnd3QkEvRUVJbXBRa0JqVEpjUkZ4eHB3bjB3UUFjR1dLaUxpWENOSW5BSHlPUVFBRmV3RUNLd0FCUVJ2TklCeW93QlFVZENnbkdRSUFWVXRHRlJ3aEFIWXVnQ0JOY3dFTUFoVUFrRlRpR0VBN0ZBRWJ3Z0JRTWlPUU4vbUFIaW5nZ0ExbWdRQWdxQUlBNmltY0RTc3RJQWpJZ0FobEU4cFFla01nQ1BDQUNPWnlBQWhSQWdUT1l0b0lMNURDVUdLbEV2OTV3eWtpcWNnRXcrRUVNSmdCTE1GVGhiYmpFeVBhUzBNdmlRR1FCamhpQ2dvZ0p5MWd3TFprWnlWOHpJZUlCSllBd1BOU2tBQXZhaFJBWVlUTWgrUnZFS1NHaUFpcStCNWJ3Vk1qUXpybVEvSVZobmQweXdBdllGLy9PaE1pQUJXU2twd1Q5bFFGOExtUTRNM2hRZmFpWkVBN01NS0FDSFVqK1VGRUxKQ1NESVhGZ0J4VnVpQjVpbG5PRktScGlCNHNJd0lyazd4S0F1S0k4TVVBSjV5bXhJSGV5QkliUTh3TVJTREVEKzRuQUI4aEpFVjlzN3hSWHJKMUJMTFdRTzJtaVFRQzZnRHcwOXg1a1VrUUtoUGpGQVFnUlZLRnE3VDBWMG1KQ0NzUUNBUlVPUFRxRjIwUktjWWhxd0tFVVRxZ3FUT3ZEQ3hvTXJYd01hVnQ4Z1BSVjhad2dDenQ5MndvaUVvQlRDQUlQNEdCQ0RSeGhCRnQwYmlBdDJJOGlOQkFKQ2RqcUlYSWxUd0prOE5hNlJrQUhWVmdCMDNwZ0FRdEFCQUd3UUVZOWpnQURCNGdDQ2tPQWhFQ0dFSS82ME1BQnNIVkFSQ0k3SFdML1dhQ3U5WWxBR2l4UWhUWjAxck1PY1FJZUd2QUtIRHp1SDFJckVYcFNFRnVKMERZNHhJb1ZGQ0lRQVFoRUFBTzROVkVhc3ZCYjRESmtIVHRyeERoNko3V3J2Y2NFc0ozSWMza1QzVmo1UVJOcUtFRUpkaUNFN0lhSEJwM2RBQTdlNEpDZE1RRU84Q0N2ZWRHakNDNVFaTDI2YVc4QzdsQUlEWERBR2hXb3dCYUVVVm13U3FCQUowaEJFWEp4RHlha2lTRTdhMFVHSkJHRTNnMDRQS3BBUlVVS0ZBSGpLUGdESCtpWEZqaVFnZ2hYb0FUa0swZ2JvSENBSnpTaFB1UUxqeGs0a1VaYTRDTWFJQ2FFQ0dCYjRzV2RHSzRIZmlsdS9MRUJHY1NxRDZUeVJ3cjgwSzlDY0NEQ0RVa0FCOEt6QnpZUTRMYjdXWUlFdkl1UUJ0aEEveEt4YmZMWVRud1JCTnRHUEN3QXdIc2lrSS90UmVRSnA4eEVuQUNFWHpZZkpBT3haYkxla0JhZ0ZZTjB5b0FDaGI4b0Vra1JnS0ZBRStoc0FoVENoVVE3QUFZNThFSW9zTnRvaWp6cDBYZFdWQW9PY0JFR3FHQUVMTjRDSzdTeGtFUnZBbjhISUp3NUorSUo1V3JWTnV6THFVYUNMWjRsSkVJUVZpMUliRHR3Qlg4cGROY1JRUUlKZnowYkExQkIxNmphU0JmN0VJQVBKOFFGdVBiWGhhbDlVQVBNZ05pNUdjNE5UaDJlWUh1a1FHYllSajlzY0FYWm9uTjdWK2lCbEJNeW8zM0h4am43MElWNDFBQUREVndBaEIvYkR3WmdYVktKK3NzQkNrZ0RxZy9pSFJYZ0N3SS8rQUJ1WUxzR0V3d05BbkFRcVNOR0loNEpYR0FGSnY5Z1h6MFBBSEVGckNBR2RwNEJFcWh3ZzBxZ2dRUWhtRUFKZ0RBRUpZaWhDNUFHRUF4RStxY0w5SktqcFRaSXk1bkdod29EaWc4S0tBQytWcEVLS1hid05vcjZ3UkJQMHN4TStGc2djSHV5b3RpTm5ndmNZT3UyR2VPZElDREZsRFJUMytRbXlOdGlaOS93UE9zQmg1aVNiUmJ3QXFLcXBKazJDREpFRGRJMXV0djM3ZzlBeDIyRytOQ0ptNlNYTm1CREZSSENOTVBYRlFPSXg0MGdoamdMTzNNOWtpc2dkZHpsYnZuQ2xlQUM4enVoYktKZ2h5RjZBTjB3WWNBS3VBclpyMkxnQ3hjSWwyNmlJTklGbk9Icko1bDlnVGl3NmRvVGpBWVhhRWR2ZWkrRy9kZ2JKbmZpUXZFaHd2QTdZZUFkekJGcEZ3QjBCNWtBU0FmRXFqUC90TFBmd1dVQUNBSTRpRW1CSkJDcmVubkRDY0RJOWtzNDBBYUF2b2NFL0swWEFvaWdLSmdrNEFtRjlCNFRnQWo2aHdBL0puOHRRVmtBRWdNQ2d3QTIwSDh2a1FBRkFnRVNnd0RWZDM0dm9ZREE1eWM0ZFNjU2tHd3BFWUQxTVRrU293WjMwZ1RleGhMMnR4OGtLREhFNWc4NG9GSXNJUUU3VUdFUVVBTXI4eDhBRW9NeXVCSUY0QWFDRng0eFlBbzVBd2tha0dnZDl5UnNjQU1wcUJKUzh3UGY1QTlUSUFWS3d3d3pRZ1VPZ0cwYmdBa2dXQko2OHovaGdRczhFRW96TWdNT0lESkFJQUkrcURjK2dBRXRVQU9IZ0VzelFoL3ZnWUpPS0RXV1VBSFlkUUZYSjRmZXNoOFFRQVJkR0JKU2t3VXdGeDVnMElkaytJZjcwUVFaL3pDSUhsRmU5ZEVGZXVlSGRMZ2dKeUVCalBZZUlsQ0pjcGdERURneEFCSkg1NlIybnFkdEJZSXc5R1FwRENJU2QySW9BcVVvUlFDSkYzRURiZ0FnYlJSUmlxSUJUY2dSQ2VBQ0k5TUNOZ0FJRVhWVkJXSUZQYmdSeENJQk1VQUNYcEFFTmRBQTJ1QUV4V2lNKzhFSXlTaEtzUUtLbE5BS1QxT05CT0VsZnhCVXloZ3JXaUFlTC9DTjRHaU40dEVDZ2tpT0dCRmR0eGdlTGRBejY3aFc2RUVIN3dpUEZSRmR3SWdlU2VBejl4aU83K0VBVVZCVnZRZ1I3VFZ1N2RpQ0F6a1FSU0FCSXpBQ0UxQUhlSUNRWTBDTkV0RmUvL2dlU2ZDUUJoRUZaWkFCVjNBRVI0QUpJbEJ2YitBY0VURU5Db1ptZ3dlU1Z5UU4wK1lQY2NDU0R2OHhBTXJBQVR6Sms0azFlZytaSnR4UUh5VGdDVGk1RU9UUWQ2RUlrZ2lCQVBxd0h4b3dJd3V4QUdLUURrdkpsQWlCZE9IQkE4NHhCZ2toQmhyUUFpL29EeGVDbFF2eGJPK0JBZ1lnRG1Pd0NDQW9UWDVubGtVRklESXdCaWxsVlQrSkh2VTFlWEw1VWZ1UkFlZlFnd0NTQnhLZ0F5VlFYNHZVbDhaWEh4RFFBV21sSnNSV0I4RWdDNEd3QzZxbm1BclJSUjNnQVFkWVF0Q0NtYzUxSjJBSUlGZ0FMS0FabW5VbEFWcWdBdTV3bWFjNWx4UWpBUzRRZnE4WlpaWVNDazlBbTdWcG00QVNBUWZRZnJ0cEVRUURCZE1Ybkk0R0tHMWduQmdSbDhwcEVTL1luQnR4Z2VNSG5SWEJWQmhBblIyUkFUUDBCZGpwRVFzQUJkMFpudUpxT1o3a1daN21lWjdvbVo3cXVaN3MyWjd1K1o3d0daL3lPWi8wV1ovMmVaLzRtWi82dVovODJaLysrWjhBR3FBQ09xQUVXcUFHZXFBSW1xQUt1cUFNMnFBTytxQVFHcUVTT3FFVVdxRVdlcUVZbXFFYXVxRWMycUVlK3FFZ0dxSWlPcUlrV3FJbVdwNEJBUUE3JyxcclxuJ2ltZy9kaWFtb25kLmdpZic6J1IwbEdPRGxoRkFBVUFOVTJBUER3OFB2NyszbDVlZTN0N2E2dXJuOS9mK2pvNkxxNnV1SGg0ZHZiMjhmSHgycHFhbk56Yzk3ZTN1TGk0bVptWnFlbnA0cUtpdTd1N3Fpb3FIRnhjZmIyOXZMeThzbkp5ZC9mMzNWMWRkZlgxNDJOamRiVzFxcXFxc3pNeklpSWlIcDZlckd4c2JLeXNxS2lvdFRVMUpPVGsvbjUrZXZyNjRXRmhYdDdlNTZlbnBxYW1wS1NrdjM5L1hKeWNuaDRlR1ZsWmNMQ3dvR0JnWmlZbUc1dWJuNStmdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRFlBTEFBQUFBQVVBQlFBQUFaa1FKdHdTQ3dhajhpa2NzbHNPb2VHd2tMakRJUVdqVUdCQlZpU0tCM1RVUEVRdFk2QTBRdGhITXhxYk9KQkZsTnlVQVRpQ3BaUVNqNHBSUTRDRUYxRkFRY1pIa2NCQkRRWFJCZ01KUlpLSnhFYkJnQXFMbjFOQ2dJZ0V4VlBwYWFucUtsQ1FRQTcnLFxyXG4naW1nL2RpbHV0ZS5naWYnOidSMGxHT0RsaEZBQVVBTlVuQUUxYWZETkNhQ282WW5lQm03ekF6ZGphNG9xU3FQWDIrSFYvbVM4K1pkN2c1bXQya3JhN3llN3c4M3lGbmxOZmdHZHlqdkR4OU5IVTNVcFhlWlNjc0VaVGRrZFZkeW81WVN3N1k1cWl0YWV0dnRiWjRYYUFtWXlWcXRuYzQ5bmI0N3EvekNRMFhYK0lvWjJrdHo1TWNMM0N6aUF3V3YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUNjQUxBQUFBQUFVQUJRQUFBWld3Sk53U0N3YWo4aWtjam1rREpoRlQ4SlVnZzRYSnBNbFlnVmxzd2JvQWZBMVlUYk1VVG1MV0RaSWE5UGxvOVRFc3gzbDVHNTZLQU44RlVvY2ZCQktDb0J4QkVzTUFtVWhHVkFGSWdBQURoSldtWnFiUlVFQU93PT0nLFxyXG4naW1nL2RpdC5naWYnOidSMGxHT0RsaEFRQUJBSUFBQVAvLy93QUFBQ0g1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlDUkFFQU93PT0nLFxyXG4naW1nL2RsZ2Nsb3NlLmdpZic6J1IwbEdPRGxoQ3dBTEFJQUJBUC8vLy8vLy95SDVCQUVBQUFFQUxBQUFBQUFMQUFzQUFBSVhEQkNaWjRmcklwSk5Na2hWdmNxK1RZWGVGeldhV1FBQU93PT0nLFxyXG4naW1nL2RsZ2Nsb3NlLmpwZyc6Jy85ai80QUFRU2taSlJnQUJBUUVBWUFCZ0FBRC80UU5TUlhocFpnQUFUVTBBS2dBQUFBZ0FCVkVBQUFRQUFBQUJBQUFBQUZFQkFBTUFBQUFCQUFFQUFGRUNBQUVBQUFNQUFBQUFTbEVEQUFFQUFBQUJBQUFBQUZFRUFBRUFBQUFCL0FBQUFBQUFBQUFBQUFBQUFETUFBR1lBQUprQUFNd0FBUDhBS3dBQUt6TUFLMllBSzVrQUs4d0FLLzhBVlFBQVZUTUFWV1lBVlprQVZjd0FWZjhBZ0FBQWdETUFnR1lBZ0prQWdNd0FnUDhBcWdBQXFqTUFxbVlBcXBrQXFzd0FxdjhBMVFBQTFUTUExV1lBMVprQTFjd0ExZjhBL3dBQS96TUEvMllBLzVrQS84d0EvLzh6QUFBekFETXpBR1l6QUprekFNd3pBUDh6S3dBekt6TXpLMll6SzVreks4d3pLLzh6VlFBelZUTXpWV1l6VlprelZjd3pWZjh6Z0FBemdETXpnR1l6Z0premdNd3pnUDh6cWdBenFqTXpxbVl6cXBrenFzd3pxdjh6MVFBejFUTXoxV1l6MVprejFjd3oxZjh6L3dBei96TXovMll6LzVrei84d3ovLzltQUFCbUFETm1BR1ptQUpsbUFNeG1BUDltS3dCbUt6Tm1LMlptSzVsbUs4eG1LLzltVlFCbVZUTm1WV1ptVlpsbVZjeG1WZjltZ0FCbWdETm1nR1ptZ0psbWdNeG1nUDltcWdCbXFqTm1xbVptcXBsbXFzeG1xdjltMVFCbTFUTm0xV1ptMVpsbTFjeG0xZjltL3dCbS96Tm0vMlptLzVsbS84eG0vLytaQUFDWkFET1pBR2FaQUptWkFNeVpBUCtaS3dDWkt6T1pLMmFaSzVtWks4eVpLLytaVlFDWlZUT1pWV2FaVlptWlZjeVpWZitaZ0FDWmdET1pnR2FaZ0ptWmdNeVpnUCtacWdDWnFqT1pxbWFacXBtWnFzeVpxditaMVFDWjFUT1oxV2FaMVptWjFjeVoxZitaL3dDWi96T1ovMmFaLzVtWi84eVovLy9NQUFETUFEUE1BR2JNQUpuTUFNek1BUC9NS3dETUt6UE1LMmJNSzVuTUs4ek1LLy9NVlFETVZUUE1WV2JNVlpuTVZjek1WZi9NZ0FETWdEUE1nR2JNZ0puTWdNek1nUC9NcWdETXFqUE1xbWJNcXBuTXFzek1xdi9NMVFETTFUUE0xV2JNMVpuTTFjek0xZi9NL3dETS96UE0vMmJNLzVuTS84ek0vLy8vQUFEL0FEUC9BR2IvQUpuL0FNei9BUC8vS3dEL0t6UC9LMmIvSzVuL0s4ei9LLy8vVlFEL1ZUUC9WV2IvVlpuL1Zjei9WZi8vZ0FEL2dEUC9nR2IvZ0puL2dNei9nUC8vcWdEL3FqUC9xbWIvcXBuL3Fzei9xdi8vMVFELzFUUC8xV2IvMVpuLzFjei8xZi8vL3dELy96UC8vMmIvLzVuLy84ei8vLzhBQUFBQUFBQUFBQUFBQUFELzJ3QkRBQUlCQVFJQkFRSUNBZ0lDQWdJQ0F3VURBd01EQXdZRUJBTUZCd1lIQndjR0J3Y0lDUXNKQ0FnS0NBY0hDZzBLQ2dzTURBd01Cd2tPRHcwTURnc01EQXovMndCREFRSUNBZ01EQXdZREF3WU1DQWNJREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBei93QUFSQ0FBVUFDMERBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdERG9vb3IrZnorekRSLzRSSFZ2K0VUL3Q3K3k5Ui9zUDdYOWcvdEg3TS8yVDdUczh6eWZOeHM4elo4MnpPN2J6akZIaUh3anEzaEg3RC9BR3RwZW82WC9hbHBIZjJmMnUyZUg3WGJTWjJUUjdnTjhiWU9IWEtuQndhOWwvWkErTjNobjlualFQRXV1ZUladitFcWkxVHlkT1BnQnJjTlo2NEZZU2k3dlpKb1pJVmpnSUppRVlhWXluK0NQZVg0ejlxWHhIcC9qajQxYXI0aDAzeGZxUGpTMzhSYmRSKzJhbGJOYjZoYWx4L3g2WEM3Vmo4eUVBUjVnekNWVk5tMGZJbmJVdzlKWWRWVkwzbjAwMDMxK2R0dDExMHRmeTZXTXhFc1pLaEtuYUN2YVZucnRwdHBhKzk3UDdOMnBLUG5sRkZGY1I2Z1VVVVVBRkZGRkFCUlJSUUIvOWs9JyxcclxuJ2ltZy9kbGdoZWFkZXItYmx1ZS5naWYnOidSMGxHT0RsaEFRQWtBS0lBQUl1MnpJNjR6cGE4ejQrNXpveTN6Wkc0enBTN3o5dmIzQ0g1QkFBQUFBQUFMQUFBQUFBQkFDUUFBQU1PZUxKclZuRElFYW9OSkJQQXUwOEFPdz09JyxcclxuJ2ltZy9kbGdoZWFkZXItZ3JlZW4uZ2lmJzonUjBsR09EbGhBUUFrQUtJQUFKWFFuSmpTbjZEVXBwYlJuWm5TbjV2U29wN1RwT1RsNUNINUJBQUFBQUFBTEFBQUFBQUJBQ1FBQUFNT2VMSnJWcEJJRXFvTkl3L0F1MDhBT3c9PScsXHJcbidpbWcvZGxnaGVhZGVyLXJlZC5naWYnOidSMGxHT0RsaEFRQWtBS0lBQU9lbTMrbXE0ZXV5NU9pbjRPbXI0dW10NGVxdzQvNzkvaUg1QkFBQUFBQUFMQUFBQUFBQkFDUUFBQU1PZUxKclZwQklFcW9OSXcvQXUwOEFPdz09JyxcclxuJ2ltZy9kbGdoZWFkZXIteWVsbG93LmdpZic6J1IwbEdPRGxoQVFBa0FLSUFBTWk2ajhxOGtzeS9tc3E4azhtN2tNcStsY3UrbU56YzJ5SDVCQUFBQUFBQUxBQUFBQUFCQUNRQUFBTU9lTEpyVm5ESUVhb05KQlBBdTA4QU93PT0nLFxyXG4naW1nL2RsZ2hlYWRlci5naWYnOidSMGxHT0RsaEFRQWtBTVFBQUxUWDhiTFg3N0hXN3JEWDdjTFo4TFBYOGJmVjZyL1c3ckhZN2JuUjZielM2ckxXN3JUUzdMZlE2TFRRNmRQazhiVFY4TFRWNzdYVzY3SFk3TFBYOEw3VTdMVFE2clBYN0xMWTdNSFk3N1RVN2JUWThmMysvcmJWNnJiUDZBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBQkFDUUFBQVVkSVBjWW5YUmhFeklNZ3JBRUFWVnNRQTFGR21NNVhwTW9sVU9HRUFJQU93PT0nLFxyXG4naW1nL2RvdWJsZS5naWYnOidSMGxHT0RsaEZBQVVBTVFaQUVKQ1F0bloyVUJBUUR3OFBEczdPejQrUGxoWVdEMDlQZGZYMTlqWTJNUER3OERBd01IQndkM2QzVlpXVmxCUVVOWFYxZFRVMUwrL3Y4TEN3dHJhMnR2YjI4WEZ4VDgvUHdBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFCa0FMQUFBQUFBVUFCUUFBQVZhWUNhT1pHbWVhS3FxeGhPczVvQWRMNXkxQzRGZGlTMGZFcG1ncG9Mb0xqbE1nWmlLQ0JtWFhXK0YwQldnbUNFTUViMU1Dak1taXB0VkFLU3dBUGhnem9wUGxQT2xEYkJWemdLTHcyRExOTTUxZlNJTmU0S0doNGNoQURzPScsXHJcbidpbWcvZG91YmxlYXJvbWF0aWMuZ2lmJzonUjBsR09EbGhGQUFVQUlRWkFFSkNRdG5aMlVCQVFEdzhQRHM3T3o0K1BsaFlXRDA5UGRmWDE5alkyTVBEdzhEQXdNSEJ3ZDNkM1ZaV1ZsQlFVTlhWMWRUVTFMKy92OExDd3RyYTJ0dmIyOFhGeFQ4L1B3QUFBUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lINUJBRUFBQjhBTEFBQUFBQVVBQlFBQUFWVDRDZU9aR21lYUtxdXJCcTBuL0VzNHBXMEEzWkl1ZkN1RUFMbXNoQVdmcXBJajNIQndCQkd4Z2laUWpRdms0K09pckppQkFyQThMWUtGSFJoWjRzaXZpaGdvb3BZWUlGL0dtS0EvZTR3N1ArQUt5RUFPdz09JyxcclxuJ2ltZy9kb3VibGVhcnJvdy5naWYnOidSMGxHT0RsaEZBQVVBT1pMQU5iVzFnWUdCbFJVVkFBQUFBRUJBZFhWMVdOalkxNWVYbFZWVmY3Ky9wMmRuV0ZoWVFVRkJRY0hCK2pvNk5IUjBkUFQwOXJhMnFxcXFnTURBOUxTMGdJQ0FrbEpTV1JrWk5uWjJlN3U3dTN0N1hwNmVxdXJxL3o4L0xxNnVpMHRMYzNOemI2K3ZsTlRVOEhCd1Q4L1B5SWlJdmIyOXErdnJ3UUVCR0ppWWdrSkNjZkh4N2EydGtoSVNGaFlXS2VucHhVVkZmVDA5SWFHaG1WbFpSY1hGL0x5OGlBZ0lQLy8veElTRW05dmI2Q2dvRXBLU2wxZFhYMTlmY0RBd0RFeE1ZcUtpakl5TW1ob2FDd3NMRUJBUUp5Y25QbjUrVFEwTkhkM2QzeDhmTkRRMFAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFc0FMQUFBQUFBVUFCUUFBQWVtZ0V1Q2c0U0Zob2VJaVlxSUNSQUFqNDhRRkpBQVNrYUZIQk1OQVp3QkRKeWZEUk1YaFFvV0dJOEZCUThQcWdBUlJDS2xDNHN1QW9WRkI0c0l0NFFLdW9vQ0NJSWVLVXM2dWl4Q2hTWVVTd0szSFNzREVpY0dTekE3aFM4Vk5UekQxejAwU0RrYk9CbUZDVDh6Q3dzK0ZZSXRCQ1VFSTRjeFFVY2tLa21DRVNnRHJpR1NNWUNBalFTRERCRFFrQWpFQUdxRVFnQlJkT1BEa0VXSEhEakF5TEdqUjBTQkFBQTcnLFxyXG4naW1nL2Rvd24uZ2lmJzonUjBsR09EbGhGQUFVQU5VNUFQNysvdVBqNHdRRUJQajQrUGYzOTZDZ29NL1B6eEFRRUFNREF6QXdNSHQ3ZTlIUjBiUzB0QmtaR2FhbXBscGFXdC9mMzVtWm1mLy8vOFBEdzFGUlVadWJtMnBxYWcwTkRhK3ZyNnVycTFaV1ZtTmpZNDJOalVwS1NyVzF0WnFhbWxWVlZVQkFRTWZIeDIxdGJiT3pzNzI5dmNEQXdPSGg0VWxKU2IrL3YrVGs1SVdGaFQ4L1B4WVdGaUlpSWw1ZVhqMDlQVzl2Yi9UMDlKeWNuRXhNVE1URXhHVmxaYkN3c0FBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEa0FMQUFBQUFBVUFCUUFBQVp6d054a2tDc2FqMGdqN3BGc0lqa2xwOVJJWW9tbXpSZ09nMDBTQXJtRmd0ZzFRbHE0VzltWXdiMktoTFdFS0V0Y0FPc2lEQmZLRnlrZ0FBQWJObjRBS0RnSmZnbzRMbUFPQm1VVkdtQWpPRFIrRmpnSEpua0dteWs1SHcwTVhRUXJOVGtSQ0FJZWVUT3NCWDRkQXJKK0tpZEdRUUE3JyxcclxuJ2ltZy9kcmV2ZXJzZWQuZ2lmJzonUjBsR09EbGhGQUFVQU5VakFPam82RzF0Yld4c2JHOXZiLy8vLzJwcWF2ZjM5OXpjM1BMeTh1cnE2dWJtNW5GeGNibTV1WTZPam5OemM0ZUhoOXJhMm8yTmpmUHo4MmxwYVl5TWpHNXVic1hGeGZYMTljdkx5OHJLeXVmbjU4bkp5ZVRrNVBUMDlIUjBkTkxTMG1ob2FNYkd4bWRuWi8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDTUFMQUFBQUFBVUFCUUFBQVpYd0pGd1NDd2FqOGlrY3Nsc09rY0VDR1V3Q0FSRUF5VWhNMkYwRUJMRFFhRFVERGhGUUVEWjJCZ0I1S1JEOFY0blBZbDNIQm5CMUpVS0N3QnBka2dFSVFVV0NSY0lZbnVHSHc4RkFnSVZJRmxQbVpxYm5KeEJBRHM9JyxcclxuJ2ltZy9kcm9wZG93bi5naWYnOidSMGxHT0RsaEVBQUtBTE1NQUNFaElmLy92SFVoSVNGMXZDRk5tZXIvLy8vLzNwbE5JWFZObVhWMXZOMy92Sm1adlAvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUF3QUxBQUFBQUFRQUFvQUFBUXFrTWxKNnd5b1dCWVNEUUtoZmNKQUF1SWxBT2FaZ3V3R0U4cmFic1lCN1BmRzVERWZ4YkFRR2lrUkFEcz0nLFxyXG4naW1nL2RzaGFwZS5naWYnOidSMGxHT0RsaEZBQVVBTlVqQU9qbzZHMXRiV3hzYkc5dmIvLy8vMnBxYXZmMzk5emMzUEx5OHVycTZ1Ym01bkZ4Y2JtNXVZNk9qbk56YzRlSGg5cmEybzJOamZQejgybHBhWXlNakc1dWJzWEZ4ZlgxOWN2THk4ckt5dWZuNThuSnllVGs1UFQwOUhSMGROTFMwbWhvYU1iR3htZG5aLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUNNQUxBQUFBQUFVQUJRQUFBWlh3SkZ3U0N3YWo4aWtjc2xzT2dlaVFHQXdvRUFJUzhIQklFRjBHSk1NTmhrQUZEa0RqVkpnTG00YXlySlI0VmkzaVFsUC9EN0VSUFpGQUFzS2Exc0lGd2tXQlNGalNBTWdGUUlDQlE4ZmpVNlltWnFibkVSQkFEcz0nLFxyXG4naW1nL2R1bW15LmdpZic6J1IwbEdPRGxoRkFBVUFLSUhBUC8vLys3dTd1SGg0ZWJtNXVycTZ2UHo4L2YzOS8vLy95SDVCQUVBQUFjQUxBQUFBQUFVQUJRQUFBTTJlTHJjL3RDQkdTRVFBVlE1c040TTBHVmdPSDdsQVJCZXFxeXRDNU55RUtlQVRlTTZXZ0tGMnkrNCt4bUVJTURSOTZPNG5wVUVBRHM9JyxcclxuJ2ltZy9laXRoZXIuZ2lmJzonUjBsR09EbGhGQUFVQUlRY0FCTVRFeGdZR0I0ZUhpZ29LQzB0TFM4dkx6WTJOamc0T0VoSVNFOVBUMUJRVUZGUlVWUlVWRmhZV0dWbFpXaG9hSEJ3Y0hoNGVJZUhoNWVYbDZlbnA2eXNyTGUzdDhmSHg4L1B6OWZYMTkvZjMrZm41Ly8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUI4QUxBQUFBQUFVQUJRQUFBVlI0Q2VPWkdtZTZBbWxMTld3NW9OOURRV1QyVEY5dzNhVGowWUY4U05SRG94ZFVaUXhCRFRMMFFJUUhTVUVzMnFCb0Z4aURJNVhWQkk1Wm91SFM2NTcwd3hFd2VYa0lhSW9sZ2hMOWJNNTdFOGhBRHM9JyxcclxuJ2ltZy9lbGVjdHJvcGhvcmVzaXMuZ2lmJzonUjBsR09EbGhFQUFRQU5VcEFQLy8vK0hoNGNQRHcrTGk0dDdlM3Y3Ky91N3U3dmIyOXVEZzRQMzkvZC9mMzgzTnpjSEJ3ZlQwOUxpNHVNTEN3dkx5OHZEdzhOemMzTVhGeGNURXhNN096cXlzckxtNXVlZm41N3E2dXUzdDdkRFEwT1BqNC9mMzk5M2QzY0RBd01mSHg4akl5T25wNmFxcXF2cjYrc2JHeHVUazVOalkyTHk4dlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDa0FMQUFBQUFBUUFCQUFBQVoxd0pSd1NDd2FqOGdrY1NUNGtDeUNVTXJ4V0N3ZUZ5RUlzTkZRQUtqT0FNQmdBRVJDQVFDUlFRQktBa05oTWlrTTBvQzhmcDhQNEJzWURRa21Bd2NBQkFRQWR5bHFFQUVRQ1FnZUJ3V0lpbmdSRWhFSkNoS1VDZ3FYakFBR0p3WjhlbjRwWDZoOEhFSU9BYkt6dExJVlNyaTV1a05CQURzPScsXHJcbidpbWcvZWxsaXBzZS5naWYnOidSMGxHT0RsaEVBQVFBT1lBQVAzKy91eng5YW0rMHZ2OC9mLy8vL3I3L0p5MXk3aksyNkc1enZqNi9JS2l2bXlSc3F6QjFIK2d2SnUweTc3UDNmTDErUFgzK3FtLzBtNlNzL0QwOTdERDFwR3N4ZTd5OXVqdTgxK0hxNHFudy83Ly8rZnQ4bWlOc0Z1RXFwS3V4K0xxOEpPdXlNRFEzcGV4eVgyZHUvbjcvRzJSczRDaHZkWGY2YnpOM2ZqNis2TzcwUDcrLyszeTlseUdxbUdKcmFTNno1R3R4bktXdHFHNXo3aksycTdDMWZiNCtzTFMzODdiNXRIZDUyNlN0TnZrN0llbHdNalc0cUs2ejVDc3hmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFQUFMQUFBQUFBUUFCQUFBQWRUZ0VDQ2c0U0Zob2VJZ2lNeUN5RTRpU3M2RW9JSENnMkhEQ1NHRHkrR0pvZ0NOSVFDRllrZmhCT0pRQWFFSGFvSWhERTlpUmFFS0R5SU9UQ0ZKeUtISG9jWlBvUTNMaW1JTlJvT0JqOHpxcy9RaElFQU93PT0nLFxyXG4naW1nL2VyYXNlci5naWYnOidSMGxHT0RsaEZBQVVBT1pnQUFFQkFmNysvdnI2K205dmIrYm01Z2NIQnp3OFBMeTh2Q1ltSmhNVEU1T1RreEFRRUFNREF5Y25KNGFHaHBlWGx4VVZGUWdJQ0Q4L1B3VUZCUVlHQnF1cnEvLy8vd0lDQXZqNCtOL2YzOEhCd2MvUHp3UUVCTHE2dXI2K3ZpUWtKRTFOVGZMeThxNnVyc1RFeEZ4Y1hPbnA2Vk5UVTNOemM4UER3NGlJaVBmMzk2K3ZyM1YxZGMzTnpRb0tDam82T2lBZ0lJbUppV2xwYVV4TVRBNE9EaTB0TGJXMXRXWm1aaDRlSGhvYUduUjBkQmtaR2JDd3NEWTJOaFFVRklDQWdKcWFtbzZPanIrL3Y2ZW5wM0J3Y05yYTJyMjl2UTBORFpDUWtMdTd1MVJVVkY1ZVhwV1ZsWnVibXgwZEhaU1VsQWtKQ2RIUjBhR2hvYVdscFoyZG5TNHVMa2hJU0dob2FDb3FLcHljbkZoWVdIWjJkaXNySzVtWm1Rc0xDd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFHQUFMQUFBQUFBVUFCUUFBQWZZZ0dDQ2d3RkpBb09JaVlsS1gxd2xpcENDTWw4U0V6Z2JrWWsvWHlCZ0ZTNCtScG1DVEFBR0FZSUhDVjRpbVJvWERZZURHMDRUVFpGSVh4RXJpUVJZQUE2UVFGOFFGRlNKR0M5ZlJJcGRYMU1ORnpHSkFRWmZXNGtQWHgwcVBWODZpQ00wWHplSlFWOVpZQUZXWDBzV1lCazdDMThEaVZFRkNSNWdGaVJmTXdRSW9QQ2dwK2pBZ2lNMkJKMzRVb0RERUFFRUZhR0FFS0dDb0NzTVVzQXJVQTlTaXh3VXBJQlI4RVdEZ0JvY2hHUXFBb1BCRTVJSERBQjRNQW9NUUFBbUtIMEpWaE5NaUNwZmdyTG9PUWpEaHk5YWlDYnFFQ2tRQURzPScsXHJcbidpbWcvZXhwYW5kLmdpZic6J1IwbEdPRGxoRUFBUUFNUUFBTEhLNnFQQTUrSHovNy9VN3FYQzU5TGg4N3JSN2VQcytLQy81dG5zLy8vLy85N3A5czdkOHBPNDU1QzI1WnU4NVo3QjZyUE02Nm5KNnEvSTZzcmgrdS85LzlicS9scDZ6dExtL09yNi96SlZzdWIyLzlUby9jL2srLy8vL3dBQUFDSDVCQUVBQUI0QUxBQUFBQUFRQUJBQUFBVmZvQ2VPWkdrYVNFQU1KaGtjU253NHJUZFVlRjVCSnBIOVFHQ0RaS0Jzamtna2hUR2FDQVNYcVBUeUJJd0FuYXhtdTgxMnJDS3NsK3Z0UkVaRmpCcWpXV09XSkFKblRxY0hUQU9MZm0rUjFCQVVDWUlVRHpVaUtDb3Nob3VNTFNFQU93PT0nLFxyXG4naW1nL2ZpbGVsaW5rLmdpZic6J1IwbEdPRGxoRUFBUUFPWUFBSTZPam5GeGNVUkVSRkJRVUdWbFpmajQrS2VucDkzZDNkemMzR3RyYTNCd2NFTkRRNit2ci96OC9KT1RrMFpHUnREUTBHQmdZTnJhMm9lSGg0R0JnZFRVMUdDZE5jUER3NWpJbHI2K3ZuTnpjNGUzWTVTOWQ0YS9XTnZtMTlQVDA0eThXWHA2ZXJHeHNYNmxqTHU3dTJkblovdjcvSWlJaUtmUm1aU2NWcGlZbU4vcno1bVptWjdSZ3FDZ29LRE1mNTZlbm1Tbk5ucW5aTS9Qejk3cTFKM2JpS2ZLbkdXb1RYV2plRzV1Ym54OGZIdXNaLzM5L2E2dXJwS1NrcFdWbGJmUHNaWENoNTdTaUdob2FON2Z4WnVibTJ5ZlVyS3lzcisvdjJDUUUydC9aM0dwVXZIeDhXKzlOYWE2bm51ZFJvbkFXbG1CUWNYVnM0N0hldG5aMmR2YjI1TzJqTTNkeFgyWWNZeU1qTUxDd295OVlmcjYrbldnVWZyNys1K2ZuMUNETjZIQms2N1lqTUhCd1phV2xsRlJUZC9mMy9mMzkxeWROS3JEa2VqbzZLN0pmSXkzcEhsNWVVdExTLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUc4QUxBQUFBQUFRQUJBQUFBZWFnRytDZzRRZU96U0VpWU5YTjFNV1lZcUVVa3MxSFd3eFhaRnZSRTB0VmpJYkhFWm9taXRwVGlBdlQxZzJtb0pBVzBGSmhDUUFYMW1DQUM0b1VCaGdnekFPYWdkYVBrVlZCMEppYTFHQ1NEcFVKMjRFRGlFRVpTazRJMHE1RXhVRkR4a3pGejBQQlJVVEFJSUdBUkFVQ3dJREF3SUxGQkFCQm9NbFB5SU1MQUZ0VkRBNFFtWklvZ2dKRk9RWTgwR0RnZ1FSWEVtY1NGRmlJQUE3JyxcclxuJ2ltZy9maW5kLmdpZic6J1IwbEdPRGxoRkFBVUFOVUFBTjdFa0tsaE9lTEtsdC9FcGZUcjI5dTloT0xMdWVqeCtjR09WL3IyOC9mNi9mSDIrK1RPcThPU1dPejArdGUyZnIrS1UrLzErL0htMk1tYlllbldwTkt0aE5Lc2Qvank3dWZTdXI2R1RmYnY1Tm02alBuNy9jK29aTHlGVXMybVl0eS9wZEt1YmViUnIvVHI0dXp6K3RTd2NQUDQvUHI4L3N1cGxKZGhSc3lpY09mVG9NdWdac1dWYS96NitmZng3ZmZ3NWV6Y3Y3bUFTTHVCVEx5RVQvejU5N0Z5UmJOelM3NXpRT0RIdHMrb2FkS3JiOWEwZWVyeSt1dnordi8vL3lINUJBRUFBRDhBTEFBQUFBQVVBQlFBQUFhdndKOXdTQ3dhajBna0FSRHFkSFFiU1ZJWUt6MUVNQTNEd3NJa0NTV0dJdEx6TFRpRGlmUUllQ2g4aDU0OHdsRlZrQ0hSSWk3MytVd0REVWdkR2o1eVpUNGtFU01RU0I4YUpIMkpEb3NaU0RvTUMzNCtEcDBtSUkxSEd4WWNFWjJkQ3ljMExVZ1NMQU1jSmhFUkppY05PemdHU0JnVEtnTWpJeUFJUEFJQU5DK3RGUWdaR1I0ekJSUVVCUUhJVTBJR0NBQXJBQk1wTmRiWEhnOFBEVFlKNEVJNUFUSTNGK2hEQ1NndTcvVDBRUUE3JyxcclxuJ2ltZy9mbGlwaC5naWYnOidSMGxHT0RsaEZBQVVBTlU5QUVCUVlMQ3d3SkNvd01EQXdJQmd3TkRRMEpCNDBKQ1lvSjZTejVDZ3NHQkFvSEJJb0dCd2dKQ0F3S0NRMElDSWtKQjR3RkJnY0tDSTBOTFMwbEJZWUdBd29QZjMrNEJ3c0tDWXdIQmdzSjZNejRCb3dKQnd3S0Nvc0w2NjNyQzR3RkJZY0xDbzBNQ3cwT2JvOWU3dStIQjRnRkFvZ0tDWTBIQlFzSUJnc0xDd3NLQ2dvTWk1NEhCQXNLQ0l3TURJMEp5TzFWQW9rSkNBMEtDUXdFQWdjUER2K0xDZzBFQW9nR0JvY0dCQXNKQ1FvSEJZc0dBNGtQLy8vd0FBQUFBQUFDSDVCQUVBQUQwQUxBQUFBQUFVQUJRQUFBWjJ3SjV3U0N3YWo4aWtjc2xVSm9RblZyTVhlQWdkTUV0VFVMcEtQTXhBZ1NHVWhBaWpwZUNGRThwRUVJUlNQSWdJRGJZWnFwWVVERG9VZHhnTk8zSkhZaW9IQUVJY0xoY3BMU1JIZmlzNml6MGJEUmtMQ2hwR0FSTWZCdytYQkJDY1BCVkdDUXdSSUFDbE9URW1OelJUdDdpNXVydEVRUUE3JyxcclxuJ2ltZy9mbGlwdi5naWYnOidSMGxHT0RsaEZBQVVBTlUrQUVCUVlLQ293S0NRd0dCSWtMNit5NkNRMEdCQWtKQ1lvTENvME1EQXdKQ0F3SEI0Z1BEdjlvQ0lrSEJZb0ZBNGdIQmdvUG41K3JDZzBORFEwSUJnd09iazh2VDE5bUJvZ0ZCWVlMKzQxSUJZd0ZCZ2NQcjcrNysxMU8veDhtQm9jSkI0MEpDSXdGQlljTy92OG9Cb29KQjRzR0JRa05ESTBOdlc2cUNJME1mSDA3Q3dzTG01eDNCUXNKQncwS0Nvc0dCSW9JQm9zSkNRb0pCd3dKQ2dzTkxTMHF1eXViQzR3SkNBME1ESXdLQ2dvTGF1MXV6cjlhNmt6UC8vL3dBQUFDSDVCQUVBQUQ0QUxBQUFBQUFVQUJRQUFBWnpRSjl3U0N3YWo4aWtjbG5rakFnMDV0Q2pDdFFXVWdzck1FbmNQc3NJZ1p0WTZRNmlwRGh3eWlWZUIxa0RrTFFkR292TEJnUG8wNldBZ1VZRmhDazRJQzR6RkJRYVNTZ2hBZ2lTRWhJQ0NpMUtGVDBPSkFxV0pURXdURHdaQXlZUUVBNEdnQXdkQXdNR0Q0SU1PN0dDdDdpQVFRQTcnLFxyXG4naW1nL2Z1bGxzY3JlZW4uZ2lmJzonUjBsR09EbGhFQUFRQUlBQkFIOS9mLy8vL3lINUJBRUFBQUVBTEFBQUFBQVFBQkFBQUFJYWpJK3B5NDBBR1FTR3VtQ3QwN2Y3eTBsVmwwWEw5S1hxZWhRQU93PT0nLFxyXG4naW1nL2Z1bGxzY3JlZW4yLmdpZic6J1IwbEdPRGxoRUFBUUFJQUJBSDkvZi8vLy95SDVCQUVBQUFFQUxBQUFBQUFRQUJBQUFBSWFqSStweTYydzRJc0oySGlkM2h4WldXVUg2RkZUaDZacVVnQUFPdz09JyxcclxuJ2ltZy9nZW5lLmdpZic6J1IwbEdPRGxoRUFBUUFPWk9BQUFBLy83Ky84YkcvL1gxLy9mMy8ydHIvNysvLzlEUS8vTHkveWdvLzRlSC93OFAvOGZILzRTRS8zRngvd0VCLy9uNS8zVjEveXdzLytIaC80Nk8vMzUrLzk3ZS80Mk4vOHpNLzgvUC95WW0veElTLy9Edy8yTmovL1B6LzlQVC8vMzkvK2JtLzd5OC8vLy8vOUhSLzUrZi80aUkvNEdCLzNOei8weE0vd0lDLzMxOS93TUQvNCtQLzJoby8wWkcvNHlNLzVXVi85blovNHVMLytQai8zeDgvK0RnLzRtSi85L2YvOVhWLzNaMi93d00vNmFtL3dzTC85VFUvL1QwLzlqWS80T0QvNVNVLzVxYS82ZW4vdzRPLzNSMC8rTGkvM3A2LzVtWi81YVcvM2g0LzNsNS81T1QvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUU0QUxBQUFBQUFRQUJBQUFBZTZnRTZDVGlJVUNnVUZKazBHZzRNSUowd3JBNElJU0RvWEJJTUREZ0lrT3cwZ0FSRUxPUVlvRUU0QkNobE9BZ3NQSHhZQUd3ZE9EREVCSkRDQ1B3a0FLUzhBQ1J5Q1FUSVVJWU11QU13QUhZTVRKUldaZ2dJcXpDd1lneDRyUkkwMkdzd1NOSU1qUXp5Tk9PRUFFa2ZsU2RPREROY0EyZHMxTGNtQ3k4M1BndEVIZGprWjRBdVlNR0pPR2dCUnhZckJxMWl6YWdsUUVtQWdwd005UUlrcTRzTVVLa29ubHN5WTVBVEJEU09ZR2drUzBlSlFJaUdNQmdVQ0FEcz0nLFxyXG4naW1nL2dyYXkuZ2lmJzonUjBsR09EbGhJQUFnQU9ZQUFINStmbmQzZDhqSXlNZkh4OFhGeFhoNGVNVEV4SDE5ZlhsNWVYWjJkbng4ZkhwNmVvQ0FnTW5KeVh0N2U3Nit2cUdob1hGeGNYVjFkWUdCZ1lXRmhjREF3THE2dXF5c3JMUzB0THU3dTZxcXFtOXZiNEtDZ25OemM0bUppWmVYbDYrdnI0cUtpcEtTa3BHUmtZaUlpTGEydHFhbXBuSnljcDZlbnB5Y25JK1BqNFNFaEllSGg1aVltS0tpb3FXbHBaK2ZuNWFXbHJlM3Q1MmRuYU9qbzVXVmxhZW5wN2k0dUk2T2pyQ3dzSEJ3Y0pPVGs0YUdoclcxdGIrL3Y1dWJtN201dVpTVWxMMjl2Wm1abVl5TWpJMk5qYTZ1cnJ5OHZLaW9xTEd4c2NiR3hzSEJ3Y0xDd3NQRHczOS9md0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQWdBQ0FBQUFmL2dFMkNnNFJMVEljR0JBUUdoNFpNaEpDUmdvZEtTZ0pOUWhrV0ZRTURTZ2FHa3BHSFRFb0RQallpSkNzVEhEeEVQeVdXVFllaWcwdE5EUTh3Q2dFSkFRZ0xDQVcvQVNFWW5xR2lUQVJLSUU0UkNnY0FUdFhXQUFjSkhSOFBBN1dqaXhBRkJkYmw1azRISnlFeUE3U1Fqd1FRQ0E3bjlkVUFBUjQzQW8rRVRBMUdBdEN6WncvZmlDV01iZ2w0Y0FBQndZY0FJcmpnTjRpSmdCUW5IbXBjc09DSUFGek1IaXdZcU5FZUF4MFFsTkJhTW9CR0FXb2xDUzVnWUtCbUV3RTRFc1I4MkFzREFZUVZLSkRiYWEvaEN5VkxDRmhnc0lCb3dRSXp2Q25wQVlDazAzTDRQbHhTVXFMcTFYUDRXbHdpa0lGRDA2OVlBNkR3Sm9oRkFMVGxwaG9pUVhwelJ3S1ljSHRaK0xsRXlZVUFlTkVXSU5HRXdLRkZEQnpDZGJMaFFvTitGalZzV0N5QlFsL0loajFJUUtzZ2dlTitncFlJQUpJNGNNa0RhZ2NrOURmZzJjdWRuV05jSHRWa1FBNEtFUTVvWkZCQVFvclpraDRKeUJDa2d3UnBBR0FtYnhoaGdvWmt0bWd4OFlSQlJJQUN2b3FObTJDaVFvTW15bXdoRXFEa2dZa2hJNHFvcUFFaENZRk9qcUw3dzFWSmdQMU81QTEvaysrUGlTTlNqZXduU1NBQU93PT0nLFxyXG4naW1nL2dyZWVuLmdpZic6J1IwbEdPRGxoSUFBZ0FQY0FBTUxDd3NIRHdTT3hUTUxEd3lPeFRjUEN3eUd3U3hDdVBzSEN3YzdEeThYRHhjbkR4eEN1UDgvRHpNdkR5TXpEeXN2RHljYkR4Q0N3U3RERXpOSEV6Y0RDd01MRHdjSER3aFN1UWNyRHlDU3hUUjZ2U2NIQ3doZXZReUt3VEJLdVB4ZXZSTWpEeHMzQ3lzYkN4YzNEeThmRHhjWER4TVhDeEgrNmtCU3ZRc2JDeHNiRHhoS3VRYy9Fek1QQ3d0SEV6cy9EeThURHc4VEN3eEd1UHhPdVFCS3VRQkN0UDh6RHljM0N5Y0REd1Npd1VkTEV6aEN0UGh1dlJyTEF0czdFeXhtdlJSR3VRQ0d4U3hxdlJSeXdTS3pBc2h1d1JzTEJ3Z2lzTlEydU96NnlZUVdzTmcrdFBpQ3dTY1RCd3hPdlFZbThtTVBCd3RMRXpaRzluczNEeVN5eFVpcXhVN2pBdklpN2xtdTNnaCt2U2FpL3I0cTdtSTY5bXhXdVEwZTBaMlczZlJHdFAySzJmQld2UXNMQndjZkR4cnJBdWcrdVBwQzdtMTIzZDdpL3VzVEJ3aSt5VnJ2QnZDQ3dTeE92UURleVhNM0V5ek95V0Iyd1NpR3dTZ0N0TXMzRHl0RER5NzNCdlpXN29kRER6a0N6WW5lNWl4K3dTVmUxY2p1elg2cS9zRU96WXdlc05ScXVSYWUrclNDdlNzM0V5bDYyZHdDck5OUER6cHU5cGlHdVM4akR4eUN2UzFtMmRiTEF0eDZ2U0tLK3FuRzRoaCt2U25XNWlTaXhVRHl6WUtPL3FoZXVSRkMxYnN2RHlpaXdUOUREek5ERHpUaXlXNFM3bEtlK3JueTVqdEhEekNteFVGTzFiOFhCd3dDc013U3ROU092VFcrNWhFeTBhOEhCd1E2dVBwTzlueUd3VEJLdVBndXRPd0t0Tk16RHlCK3dTdEhFek12Q3lXbTNnY0hCd2lPeFRzYkR4WGE1aWpHeFY5REV6UWV0TmlLeFN6U3hXRSswYnBtOW8xdTJkY3ZFeVJ5dlJ4YXVRNisvczhqRHhhL0F0TS9FeThYQ3c3YkF1cUcrcWNuQ3g4N0N5MEN6WVh1NGlrTzBaUUtyTkErdVBNckN5RSsxYmlld1VNL0N5eE90UVpXOW9TS3dTNzdDd2MvRHpRZXNOaVN3VERTeVdCMndTTVBCd3hpdlJBdXVQQ2F3VDd2QnZjZkR4eE91UWM3RHpNN0R5ckcvdGJYQnVHQzNlc0RCd1ErdlBxeS9zci9DdjBtMGFNSEF3V3E0Z0dpM2dIQzVoNEs2azhqRHlCS3RRQTZ1UFNheFRzTER3c1BEd3lLeFRBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQWdBQ0FBQUFqL0FQa0pIRGdRUUlBakJTS1VXR0F1bHpJWEFRRHNJMGl4SXI5OUZXUlFpOVBneERKalB2QTg0QVpCUlVTTEZmZnRDNUJnd3JaUHdEeXhxV1RsV3lBd2hCNjhLTUVCQU1xQkFVd2thbE52dzR3ekJ6cUk2NUNDeHdjV3o1aVJNSVRBSjhwOUN4ems4UmJMaUFRUEJQcUo3VWZBd0J4MzNRNlZhMUZnWWtVTEMxVG9xdkVHMTlpN2R3bHNRTElIVUlzWWJnZnVpeUNMa2hjZ2VCUGZOY0RnVHhFWWdRWGUydEdLQVdMRm1QdTVPYUJLM29JQUEzTWtNRE1MUStiVEVnUkIweE5PNElCU25HeWRDbnNhczRBT2c5WTF5TUV2UUlZclBZalZQcTFCR3A4ZmF3YnNjeGJxUTZQaHB6RlpPeFppbjVNSlh3NElnSjVaQzc1SUVBSW8vNmp3NjhsMjdvb0xZVUFoWXQ4OVpLTkFvTWRzZ01hOEJQc2NnRm8wWkw1aUlUT2tjY2NBR1d5QlNuLys0U1hFQit6QU1BQWpQbFFoWDRLTDFaREtOUU1vb0FBY05weEhZVCtUaklGRmV6RjBRc29Cdm53b0ZpUmhxSk5CQUJiYzBBVURFcWdvQUF1V2xMR0NTaUdNc0VreEh2cW5BU0pvOERMUkFGRlF3RVVkSHdyQWloeGszT0JXQUE3SW9NUTRyaVRZUXo1VFNIRUJRZTI4OEE0NUtSZ3dIemdIWkpHT0FwSHhVMEFEMmVoRGd3ZlFFVUNFRGNLczRzQ1hGTzFqUWdMQjdOTExCclJocGtFUXNOQlRnUjF0RG5UQkNhSTg0c2NTU1JEUmhBRmdDYUFOSFgyQVlJb09VT0F3REFjRC9GVFZENXBja2drRzV3VEJ3elJNTUV5QXpTczZvQURQRGhFZzBDaEIrd0NBd0FvVTFLS0dQV0pVRTAwOGpraWlTQWpKVUtIcnJoWVpOQUlFT0tBekFTMFVORURDQTgwQXdBRzBQL1Vhd0Q0dUZHQnVBUUJZQUlCVktBVUVBRHM9JyxcclxuJ2ltZy9oYmctYmx1ZS5naWYnOidSMGxHT0RsaEFRQW9BTE1BQU5IVTd0Ylk4TkxXNzlEUzdkbmM4ZFhYOE52ZDhjM1E3TmZiOGM3UjdmVDIvTi9pOU4zZThnQUFBQUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFCQUNnQUFBUVpVSm13Q0dIRkdJdFErRUZSQ0FJQWtDVXdyT2FhSk1jUkFRQTcnLFxyXG4naW1nL2hiZy1ncmVlbi5naWYnOidSMGxHT0RsaEFRQW9BTE1BQU16dzRzN3g0OUh5NWNydzRkWHo1OC94NU5iejZNZnUzOGp2NE5QeTV0ajA2ZHoxNi9UOCtRQUFBQUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFCQUNnQUFBUVprQm14Q0ZIRkdKdVMrRUpSQkFFQWtDVXdyT2FLSU1jUkFRQTcnLFxyXG4naW1nL2hiZy1yZWQuZ2lmJzonUjBsR09EbGhBUUFvQUxNQUFPN1IzL0RXNHUvVDRPM1EzdkhaNWUvVjRmTGI1dkhZNU8zTzNlek4zUFRnNmZ2MStQTGM1d0FBQUFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBQkFDZ0FBQVFaY0ptZ0NHSEZHSHRPK0VGUkNBSUFrQ1V3ck9hS0lFa1NBUUE3JyxcclxuJ2ltZy9oYmcteWVsbG93LmdpZic6J1IwbEdPRGxoQVFBb0FMTUFBTzd1MHUvdjFQRHcxKzN0MGZIeDJ1L3YxZkh4M096c3plenN6L0h4MmZ6ODl2UHo0Zkx5M1FBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQUJBQ2dBQUFRWlVCbXhDR0hGR0p1UytFSlJCQUVBa0NVd3JPYUtJTWNSQVFBNycsXHJcbidpbWcvaGJnLmdpZic6J1IwbEdPRGxoQVFBb0FMTUFBT3pzN1BuNStlcnE2dUhoNGVEZzRPZm41K1hsNWVucDZlam82T1RrNU9MaTR1Ym01dVBqNHdBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQUJBQ2dBQUFRWk1Kd0ZFQkxtSEZ2SytvdGhKQW5Ea0NXanJPWTZEQVFSQVFBNycsXHJcbidpbWcvaGJnLmpwZyc6Jy85ai80QUFRU2taSlJnQUJBZ0VBU0FCSUFBRC80UU51UlhocFpnQUFUVTBBS2dBQUFBZ0FCd0VTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVlnRWJBQVVBQUFBQkFBQUFhZ0VvQUFNQUFBQUJBQUlBQUFFeEFBSUFBQUFVQUFBQWNnRXlBQUlBQUFBVUFBQUFob2RwQUFRQUFBQUJBQUFBbkFBQUFNZ0FBQUJJQUFBQUFRQUFBRWdBQUFBQlFXUnZZbVVnVUdodmRHOXphRzl3SURjdU1BQXlNREV4T2pBek9qRTRJREl3T2pVMU9qVXpBQUFBQUFPZ0FRQURBQUFBQWYvL0FBQ2dBZ0FFQUFBQUFRQUFBQUdnQXdBRUFBQUFBUUFBQUNnQUFBQUFBQUFBQmdFREFBTUFBQUFCQUFZQUFBRWFBQVVBQUFBQkFBQUJGZ0ViQUFVQUFBQUJBQUFCSGdFb0FBTUFBQUFCQUFJQUFBSUJBQVFBQUFBQkFBQUJKZ0lDQUFRQUFBQUJBQUFDUUFBQUFBQUFBQUJJQUFBQUFRQUFBRWdBQUFBQi85ai80QUFRU2taSlJnQUJBZ0VBU0FCSUFBRC83UUFNUVdSdlltVmZRMDBBQXYvdUFBNUJaRzlpWlFCa2dBQUFBQUgvMndDRUFBd0lDQWdKQ0F3SkNRd1JDd29MRVJVUERBd1BGUmdURXhVVEV4Z1JEQXdNREF3TUVRd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd0JEUXNMRFE0TkVBNE9FQlFPRGc0VUZBNE9EZzRVRVF3TURBd01FUkVNREF3TURBd1JEQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EUC9BQUJFSUFDZ0FBUU1CSWdBQ0VRRURFUUgvM1FBRUFBSC94QUUvQUFBQkJRRUJBUUVCQVFBQUFBQUFBQUFEQUFFQ0JBVUdCd2dKQ2dzQkFBRUZBUUVCQVFFQkFBQUFBQUFBQUFFQUFnTUVCUVlIQ0FrS0N4QUFBUVFCQXdJRUFnVUhCZ2dGQXd3ekFRQUNFUU1FSVJJeEJVRlJZUk1pY1lFeUJoU1JvYkZDSXlRVlVzRmlNelJ5Z3RGREJ5V1NVL0RoOFdOek5SYWlzb01tUkpOVVpFWENvM1EyRjlKVjRtWHlzNFREMDNYajgwWW5sS1NGdEpYRTFPVDBwYlhGMWVYMVZtWjJocGFtdHNiVzV2WTNSMWRuZDRlWHA3ZkgxK2YzRVFBQ0FnRUNCQVFEQkFVR0J3Y0dCVFVCQUFJUkF5RXhFZ1JCVVdGeEloTUZNb0dSRktHeFFpUEJVdEh3TXlSaTRYS0Nra05URldOek5QRWxCaGFpc29NSEpqWEMwa1NUVktNWFpFVlZOblJsNHZLemhNUFRkZVB6UnBTa2hiU1Z4TlRrOUtXMXhkWGw5VlptZG9hV3ByYkcxdWIySnpkSFYyZDNoNWVudDhmLzJnQU1Bd0VBQWhFREVRQS9BUFI5Ny8zajk2U2lra3AvLzlEME9VazBwSktmLzlIMEdVbDgwcEpLZi8vWi8rMElHbEJvYjNSdmMyaHZjQ0F6TGpBQU9FSkpUUVFsQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEaENTVTBEN1FBQUFBQUFFQUJJQUFBQUFRQUJBRWdBQUFBQkFBRTRRa2xOQkNZQUFBQUFBQTRBQUFBQUFBQUFBQUFBUDRBQUFEaENTVTBFRFFBQUFBQUFCQUFBQUI0NFFrbE5CQmtBQUFBQUFBUUFBQUFlT0VKSlRRUHpBQUFBQUFBSkFBQUFBQUFBQUFBQkFEaENTVTBFQ2dBQUFBQUFBUUFBT0VKSlRTY1FBQUFBQUFBS0FBRUFBQUFBQUFBQUFUaENTVTBEOVFBQUFBQUFTQUF2Wm1ZQUFRQnNabVlBQmdBQUFBQUFBUUF2Wm1ZQUFRQ2htWm9BQmdBQUFBQUFBUUF5QUFBQUFRQmFBQUFBQmdBQUFBQUFBUUExQUFBQUFRQXRBQUFBQmdBQUFBQUFBVGhDU1UwRCtBQUFBQUFBY0FBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd1BvQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhENkFBQUFBRC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQStnQUFBQUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dQb0FBQTRRa2xOQkFBQUFBQUFBQUlBQVRoQ1NVMEVBZ0FBQUFBQUJBQUFBQUE0UWtsTkJBZ0FBQUFBQUJBQUFBQUJBQUFDUUFBQUFrQUFBQUFBT0VKSlRRUWVBQUFBQUFBRUFBQUFBRGhDU1UwRUdnQUFBQUFET3dBQUFBWUFBQUFBQUFBQUFBQUFBQ2dBQUFBQkFBQUFBd0JvQUdJQVp3QUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFRQUFBQUFBQUc1MWJHd0FBQUFDQUFBQUJtSnZkVzVrYzA5aWFtTUFBQUFCQUFBQUFBQUFVbU4wTVFBQUFBUUFBQUFBVkc5d0lHeHZibWNBQUFBQUFBQUFBRXhsWm5Sc2IyNW5BQUFBQUFBQUFBQkNkRzl0Ykc5dVp3QUFBQ2dBQUFBQVVtZG9kR3h2Ym1jQUFBQUJBQUFBQm5Oc2FXTmxjMVpzVEhNQUFBQUJUMkpxWXdBQUFBRUFBQUFBQUFWemJHbGpaUUFBQUJJQUFBQUhjMnhwWTJWSlJHeHZibWNBQUFBQUFBQUFCMmR5YjNWd1NVUnNiMjVuQUFBQUFBQUFBQVp2Y21sbmFXNWxiblZ0QUFBQURFVlRiR2xqWlU5eWFXZHBiZ0FBQUExaGRYUnZSMlZ1WlhKaGRHVmtBQUFBQUZSNWNHVmxiblZ0QUFBQUNrVlRiR2xqWlZSNWNHVUFBQUFBU1cxbklBQUFBQVppYjNWdVpITlBZbXBqQUFBQUFRQUFBQUFBQUZKamRERUFBQUFFQUFBQUFGUnZjQ0JzYjI1bkFBQUFBQUFBQUFCTVpXWjBiRzl1WndBQUFBQUFBQUFBUW5SdmJXeHZibWNBQUFBb0FBQUFBRkpuYUhSc2IyNW5BQUFBQVFBQUFBTjFjbXhVUlZoVUFBQUFBUUFBQUFBQUFHNTFiR3hVUlZoVUFBQUFBUUFBQUFBQUFFMXpaMlZVUlZoVUFBQUFBUUFBQUFBQUJtRnNkRlJoWjFSRldGUUFBQUFCQUFBQUFBQU9ZMlZzYkZSbGVIUkpjMGhVVFV4aWIyOXNBUUFBQUFoalpXeHNWR1Y0ZEZSRldGUUFBQUFCQUFBQUFBQUphRzl5ZWtGc2FXZHVaVzUxYlFBQUFBOUZVMnhwWTJWSWIzSjZRV3hwWjI0QUFBQUhaR1ZtWVhWc2RBQUFBQWwyWlhKMFFXeHBaMjVsYm5WdEFBQUFEMFZUYkdsalpWWmxjblJCYkdsbmJnQUFBQWRrWldaaGRXeDBBQUFBQzJKblEyOXNiM0pVZVhCbFpXNTFiUUFBQUJGRlUyeHBZMlZDUjBOdmJHOXlWSGx3WlFBQUFBQk9iMjVsQUFBQUNYUnZjRTkxZEhObGRHeHZibWNBQUFBQUFBQUFDbXhsWm5SUGRYUnpaWFJzYjI1bkFBQUFBQUFBQUF4aWIzUjBiMjFQZFhSelpYUnNiMjVuQUFBQUFBQUFBQXR5YVdkb2RFOTFkSE5sZEd4dmJtY0FBQUFBQURoQ1NVMEVFUUFBQUFBQUFRRUFPRUpKVFFRVUFBQUFBQUFFQUFBQUFqaENTVTBFREFBQUFBQUNYQUFBQUFFQUFBQUJBQUFBS0FBQUFBUUFBQUNnQUFBQ1FBQVlBQUgvMlAvZ0FCQktSa2xHQUFFQ0FRQklBRWdBQVAvdEFBeEJaRzlpWlY5RFRRQUMvKzRBRGtGa2IySmxBR1NBQUFBQUFmL2JBSVFBREFnSUNBa0lEQWtKREJFTENnc1JGUThNREE4VkdCTVRGUk1UR0JFTURBd01EQXdSREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREFFTkN3c05EZzBRRGc0UUZBNE9EaFFVRGc0T0RoUVJEQXdNREF3UkVRd01EQXdNREJFTURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TS84QUFFUWdBS0FBQkF3RWlBQUlSQVFNUkFmL2RBQVFBQWYvRUFUOEFBQUVGQVFFQkFRRUJBQUFBQUFBQUFBTUFBUUlFQlFZSENBa0tDd0VBQVFVQkFRRUJBUUVBQUFBQUFBQUFBUUFDQXdRRkJnY0lDUW9MRUFBQkJBRURBZ1FDQlFjR0NBVURERE1CQUFJUkF3UWhFakVGUVZGaEV5SnhnVElHRkpHaHNVSWpKQlZTd1dJek5IS0MwVU1ISlpKVDhPSHhZM00xRnFLeWd5WkVrMVJrUmNLamREWVgwbFhpWmZLemhNUFRkZVB6UmllVXBJVzBsY1RVNVBTbHRjWFY1ZlZXWm5hR2xxYTJ4dGJtOWpkSFYyZDNoNWVudDhmWDUvY1JBQUlDQVFJRUJBTUVCUVlIQndZRk5RRUFBaEVESVRFU0JFRlJZWEVpRXdVeWdaRVVvYkZDSThGUzBmQXpKR0xoY29LU1ExTVZZM00wOFNVR0ZxS3lnd2NtTmNMU1JKTlVveGRrUlZVMmRHWGk4ck9FdzlOMTQvTkdsS1NGdEpYRTFPVDBwYlhGMWVYMVZtWjJocGFtdHNiVzV2WW5OMGRYWjNlSGw2ZTN4Ly9hQUF3REFRQUNFUU1SQUQ4QTlIM3YvZVAzcEtLU1NuLy8wUFE1U1RTa2twLy8wZlFaU1h6U2trcC8vOWs0UWtsTkJDRUFBQUFBQUZVQUFBQUJBUUFBQUE4QVFRQmtBRzhBWWdCbEFDQUFVQUJvQUc4QWRBQnZBSE1BYUFCdkFIQUFBQUFUQUVFQVpBQnZBR0lBWlFBZ0FGQUFhQUJ2QUhRQWJ3QnpBR2dBYndCd0FDQUFOd0F1QURBQUFBQUJBRGhDU1UwRUJnQUFBQUFBQndBQkFBQUFBUUVBLytFU1NHaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOEFQRDk0Y0dGamEyVjBJR0psWjJsdVBTZnZ1NzhuSUdsa1BTZFhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRblB6NEtQRDloWkc5aVpTMTRZWEF0Wm1sc2RHVnljeUJsYzJNOUlrTlNJajgrQ2p4NE9uaGhjRzFsZEdFZ2VHMXNibk02ZUQwbllXUnZZbVU2Ym5NNmJXVjBZUzhuSUhnNmVHRndkR3M5SjFoTlVDQjBiMjlzYTJsMElESXVPQzR5TFRNekxDQm1jbUZ0WlhkdmNtc2dNUzQxSno0S1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTZG9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5Nakp5QjRiV3h1Y3pwcFdEMG5hSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlwV0M4eExqQXZKejRLQ2lBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUdGaWIzVjBQU2QxZFdsa09qSTVNV1ZoTURRNUxUVXhZek10TVRGbE1DMDVPV1EzTFdZM1lUQXhaak5tTkRoa01DY0tJQ0I0Yld4dWN6cDRZWEJOVFQwbmFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeWMrQ2lBZ1BIaGhjRTFOT2tSdlkzVnRaVzUwU1VRK1lXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPakk1TVdWaE1EUTJMVFV4WXpNdE1URmxNQzA1T1dRM0xXWTNZVEF4WmpObU5EaGtNRHd2ZUdGd1RVMDZSRzlqZFcxbGJuUkpSRDRLSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvS1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUdGd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2p3L2VIQmhZMnRsZENCbGJtUTlKM2NuUHo3LzdnQU9RV1J2WW1VQVpJQUFBQUFCLzlzQWhBQU1DQWdJQ1FnTUNRa01FUXNLQ3hFVkR3d01EeFVZRXhNVkV4TVlFUXdNREF3TURCRU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01BUTBMQ3cwT0RSQU9EaEFVRGc0T0ZCUU9EZzRPRkJFTURBd01EQkVSREF3TURBd01FUXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXovd0FBUkNBQW9BQUVEQVNJQUFoRUJBeEVCLzkwQUJBQUIvOFFCUHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQXdBQkFnUUZCZ2NJQ1FvTEFRQUJCUUVCQVFFQkFRQUFBQUFBQUFBQkFBSURCQVVHQndnSkNnc1FBQUVFQVFNQ0JBSUZCd1lJQlFNTU13RUFBaEVEQkNFU01RVkJVV0VUSW5HQk1nWVVrYUd4UWlNa0ZWTEJZak0wY29MUlF3Y2xrbFB3NGZGamN6VVdvcktESmtTVFZHUkZ3cU4wTmhmU1ZlSmw4ck9FdzlOMTQvTkdKNVNraGJTVnhOVGs5S1cxeGRYbDlWWm1kb2FXcHJiRzF1YjJOMGRYWjNlSGw2ZTN4OWZuOXhFQUFnSUJBZ1FFQXdRRkJnY0hCZ1UxQVFBQ0VRTWhNUklFUVZGaGNTSVRCVEtCa1JTaHNVSWp3VkxSOERNa1l1RnlncEpEVXhWamN6VHhKUVlXb3JLREJ5WTF3dEpFazFTakYyUkZWVFowWmVMeXM0VEQwM1hqODBhVXBJVzBsY1RVNVBTbHRjWFY1ZlZXWm5hR2xxYTJ4dGJtOWljM1IxZG5kNGVYcDdmSC85b0FEQU1CQUFJUkF4RUFQd0QwZmU3OTQvZWtveWtrcC8vUTlEbEpOS1NTbi8vUjlCbEpmTktTU24vLzJRPT0nLFxyXG4naW1nL2hiay5naWYnOidSMGxHT0RsaEdnQUNBTE1BQU03ZDc4L2U3OURlOE5IZjhOTGc4TkxnOGRQaDhkVGg4dFhpOHRiajh0Ymo4OWZrODlqazg5bmw4OW5sOU5ybTlDSDVCQUFBQUFBQUxBQUFBQUFhQUFJQUFBUWNFSUFneEJpa0ZHTU9Ra21pTEF2VE9FOHFVUmFtY1I0b2tpYWFSZ0E3JyxcclxuJ2ltZy9oZWFkZXItYmcuZ2lmJzonUjBsR09EbGhBZ0FYQU9NSUFPdnM3dXp0NyszdThPN3Y4ZS93OHZEeDgvSHk5UG41K2YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBQWdBTEFBQUFBQUNBQmNBQUFRVDhNaEphelhZbE0ySko4TWdqRUlRQUNnUUFRQTcnLFxyXG4naW1nL2hlYWRlci1iZ2JsdWUuZ2lmJzonUjBsR09EbGhBZ0FYQUtJQUFQWDEvT1huK09EaDl1Zm8rZHpmOXVQbCtPSGo5OS9nOWlINUJBQUFBQUFBTEFBQUFBQUNBQmNBQUFNUkNMcmNQWENFU1lzdHhvZ3R6aUVna1FBQU93PT0nLFxyXG4naW1nL2hlYWRlci1iZ2dyZWVuLmdpZic6J1IwbEdPRGxoQWdBWEFLSUFBTy85OTlqNjc4ejQ2TmI1N3RENDY5djY4TTc0NnRQNTdDSDVCQUFBQUFBQUxBQUFBQUFDQUJjQUFBTVJDTHJjWGJDRVNZY2Q1NUJOakJHZ2tBQUFPdz09JyxcclxuJ2ltZy9oZWFkZXItYmdyZWQuZ2lmJzonUjBsR09EbGhBZ0FYQUtJQUFQM3Y5L25iNy9yZDhQak82UGpUNi9uWTdmalE2ZmpXN0NINUJBQUFBQUFBTEFBQUFBQUNBQmNBQUFNUkNMcmNMVkNFU1lzdDU1Qk5qQm5na0FBQU93PT0nLFxyXG4naW1nL2hlYWRlci1iZ3llbGxvdy5naWYnOidSMGxHT0RsaEFnQVhBS0lBQVB6ODlmYjM2dlgyNWZUMDRmYjI2UGY0N1BUMTQvYjI1eUg1QkFBQUFBQUFMQUFBQUFBQ0FCY0FBQU1SQ0xyY1hiQ0VTWWtsNTRndGpCbmdrQUFBT3c9PScsXHJcbidpbWcvaGVhdG1hcC5naWYnOidSMGxHT0RsaEZBQVVBT1owQUVQTC92cjgvSWp1LzRiUzdPWHBaL1g1K2Vtc1VLaTV1Y2ZZMlBmOC9QYjI5dW5wNlVMSy9mSDM5NHFibStUMDlQeisvalM4NzdyS3lyakp5VDNGK09uMjl1djM5K2IxOVpMV1ZjelkyRGpBOC9UNys2VzJ0dm45L2NuYTJwNndzSzYvdituNStmNy8vNnU4dkZPa1BjUFUxTUxUMCs3NCtQSDUrYlBFeE1YVzFyREJ3YUt6czdYR3h1NzE5WnFrcEptcXFyKzRWTGZHV0lQUTZjR1dSbjNqOUlPM1hjRnhOa0hKL0w2M1UyVE85Y1crVm5ySDRMaXlVWG5HMzlEZTNwdkZWTHB0TmJ5VFJMeHVOVm10UU1EUjBUekQ5c2kvVjV2RVU0SE81OFM4Vm43TDVEYSs4WHpKNHBhL1VibHROSU52UElYUzYzSzBSOE55TnovSCtvVHErN3EwVWpXOThMaVFRMU9qUGNPOFZhREpWWGpGM3Joc05JWHIvTHpLV25yZzhUckM5YnpOelpmQVVxUE5WN216VVlETTVZT1VUYlBDVm4vbDlzVnpOM0N3Um5qZTc1YStVVVRNLytYbDVlTHo4N3ZNekg2UGovLy8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFIUUFMQUFBQUFBVUFCUUFBQWZ2Z0hTQ2c0U0Zob2VJaGhseGpJMk9qaG1FRW5PVWxaYVdFb1FUSW00QUREaFVGRVpoR2t4WEVTSVRoQzBRYmdJTVhsVVVhVFVhWUd3UkVDMkVLUjJkT2xFelNXWkxUVHcrWEIwcGhDc0pyZ01CQVNyUlJkRmlDU3VFSUJ1ZEF4NElQeVVtUkNRa1dSc2doQ01vendVRkt1NVNHQmhyS0NPRUJ5ZmQzMlJBU0Z0am5MUTVjWUFRQnd2UEdqVDRRb0NBaklab0xIQWd4S0pDSnhzN3RCeUprVU9KbFRJOUtyQWc5T0dDcXpNR0ROQnc0VUpJU2l3WFBoQ0M4YUFURkRWVGJvZ2JFdVJKbHdjd0NEa0lBYWVvMGFORlF6Z2c5RUtPMDZkUW9iNGdwR0RCbTZ0WXMxNWRvQ0NSMTY5Z0F3RUFPdz09JyxcclxuJ2ltZy9oZWxpeC5naWYnOidSMGxHT0RsaEZBQVVBUGNBQU9UbTdHUitsRXhtaEN4T2JIU0tuSnl1dklTV3BEeGFkTlRhNU1UTzNGeHlqTFMreUpTaXRQVHk5Q1JDWkFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUE4QUxBQUFBQUFVQUJRQUFBaUVBQjhJSEVpd29NR0RDQk1PWE1CZ2dVS0NDUlE0bUtqZ29VQUdGQmt3UVBBZ3dVTUZCdzRXWUpCd1FjaURDQTRBUUFnZ2dFZURCd2hZN0ppQVFZQUJEaHdpWEVBQTU4U0pBblFhVFBsVGdRSURDMVltRE9CZzQ4eUJEQVFjYkNuVUlBT1pCd2RVTFFpZ3dNdUJCWnJPWktCQXdNUURIQzFLZEtCZ3EwSUVYNS9LblJzUUFEcz0nLFxyXG4naW1nL2hlbG0ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWFrQUFBQ1JDQUlBQUFEMkVOQjRBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBSGN4U1VSQlZIamFZdnovL3ovREtCZ0ZvMkFVakRBQUVFQ01vMlhmS0JnRm8yQUVBb0FBR2kzN1JzRW9HQVVqRVFBRTBHalpOd3BHd1NnWWlRQWdnRWJMdmxFd0NrYkJTQVFBQVRSYTlvMkNVVEFLUmlJQUNLRFJzbThVaklKUk1CSUJRQUNObG4yallCU01ncEVJQUFKb3RPd2JCYU5nRkl4RUFCQkFvMlhmS0JnRm8yQWtBb0FBR2kzN1JzRW9HQVVqRVFBRTBHalpSeWZ3bitFL0l3UGphRGlNZ2xFd1NBQkFBSTMwc3UvNWoxY1hQdDJuZGFuSHdzaWl4NmNnd1M0eW11Qkd3U2dZSkFBZ2dGaEdzdWQvLy91MTU5V0ZTNS92c1RBeTBiakZ4L1R6NzA5WFVWNE9admJSTkRjS1JzRmdBQUFCTktMTHZudmZudDMrOW9TRmdZbUpnWW1tRnYzNy8vL2dtMHZTbkVKRy9KcWphVzRVaklMQkFBQUNhT1NXZmQvK2ZqLzg5dXFYUHovWW1Wai9NZEM0NDg4SWF2NmQvblJIaVZ0YWdJVnZOTm1OZ2xFdzRBQWdnSmhHck04dmZiaDkvK3NMRmdibS8zUUJMSXpNdHo4OXVmMzFDY1AvZjZQSmJoU01nZ0VIQUFFMFF0dDliMys5dS9UbDRlZS8zOWdZV2Y3UmE3TG56LysvKzE1ZlZPU1VGR0VUSEUxNW8yQVVEQ3dBQ0tDUk9NLzc1Ly92MVU4T0hIbC9qWjJSbFo3Mi92di9uNVdaMlVaWTIxdmNnb1crVm8rQ1VUQUswQUJBQUkzRVB1L2RyMCt1Zlg3SXhNRDRuK0UvUFJFakk4UFB2Ny8zdkQ1Mzg4dkQwWlEzQ2tiQndBS0FBQnB4ZmQ0ZmY3OGZlWGY5MWU5UEhLQXBEbm9QdlFHTHZ6Ly8vaC81Y0YyT1U0S1hoV2MwL1kyQ1VUQlFBQ0NBUmx6WmQrTDlqYXVmSHJBd012MkZ6VG44K2Y4ZjJBWmtvdVdlQzdBVkRFeU1FRHYrWC9udzRBYmZReE0rRFVaRzV0RWtPQXBHd1lBQWdBQWFXV1hmdTEvdmQ3dzY5ZW5QVnpaRzF2L2dkUzMvLy84WFlHWDkvdmZ2ajM5L21XbXd3aG5VMi8zSHdNL0c4dXZ2LzY5Ly83Q0FpbGpHNzM5KzdIdDlVWVZMUnBDVmZ6UUpqb0pSTUNBQUlJQkdVdG4zLzkvZVYyZmYvdnJDek1EMEQ5em9BemJIQWlRVlRBWEVQdjc1dWV6SjdjZmZ2N0pTdGZnREZxNS9HUm1zaE1UY3hlWCsvZnUvNWRuRDgxL2VNREdBbXBsUHY3ODkrTzZTdjVnMUl5UFRhQ29jQmFPQS9nQWdnRVpReHJ2MTllSDVqL2QrLy9zRExKTCtNZnoveGZoZlIxRFlWVVJXbklOUGpVY3NWVUZMZ29QangvKy8vMEFMOEtpQS9nSVIwMzlIWVlrWVdYVnBEbjVaTG1FTlBnRUdzQlFESStPWFA5OTN2angxKzl1ajBTUTRDa2JCZ0FDQUFCb3BaZCt2Zno5UGZiajk2TWNiVnRCSTM5L3Z2Ly84K3YzbitiZlA3Ly84QUxmUGZnT0xwMHdGUFdsMnp1OS8vd0JiaFJTaVAvLysvdjcvejBGUUlseEtsWTJKR2RqRUJKYTNYLy85L3ZiNzE4OC9mMzc5KzhNSTZ2bisyZmYyNHZlLzMwZFQ0U2dZQmZRSEFBRTBVc3ErYys5dkhuOTdqWVdCK1Erb3BHTU1sbFJzMFRUbFptU2UvZURhNXo4L0dSaUF4ZE5mR1U3K2JFVjlHUTdPSDhDeTYvOS9zdEVmWU5uSDlOOUJTQ0pVV28yRmlRVmN0aktmZXZkbzc4ZEhrWElxRFpwbW1qejhmeG4rQW92SVN4OGUzUG82MnZRYkJhTmdBQUJBQUkySXN1L3puOC9iWHA5Kzgrc2pBK1AvYjM5L0dRb0pCY2lvS0hBTEY2c1pjYkl3VGJ4ejl0TWZZT01MR0JSL3BEajVjcFgxNVRpNXdjWGZ2MzhNSkNKZ3FRZnM3REl6ZUlySXhzaHFzb05hZlArQUJkK1o5OCtXUExubUk2VGdMYTZxeUMwVUw2OGx5TTd4bjVIeDA2OHZ5NThkZlBQcjNXaENIQVdqZ000QUlJQkdSTmwzNE0yNUIxOWZzVEd4QU11bXY4QVM3ZTkvOE9rQ2Y3bVoyYk1VOVRsWm1JSEYzNGZmUDhDdHZ6OVNITURXbndHdytQdisvODlmRXJ1NnZ4aisvdnIzMzFsUU9sUUsyT0pqQnJmNFdNNTllTHJnMGRWZ0tUVm5VUVdncFVCQlRpWldZSjhYcUo2SmtmSGUxK2VIMzEwZVRZaWpZQlRRR1FBRTBQQXYrMjUrdVgvMHpmWHYvMzc5QXhVOC8xa1ptUzU5ZXJQdjlRTndRKzgvRnpOYnJwS1JBQnQ3MysxVEgvOUFpcisvMHB6OGhTcUdTbHg4UC8vLy9RdVp0U0FDQWJ1NkRFeU1YaEt5RVRJYUxMQVczOUUzRDZjL3VCSW1yV0V2b2dBUitmcm41OXlIbDU5OSs4d0Exc1g0ajNIbml6TVB2ajBkVFl1allCVFFFd0FFRUhORFE4TXc5dDd2Lzc4T3ZyMTA2TjBWVmtabXlNWXlvT0NQZjM4dmYzMG53TUtpeUNVRUxJQ1lHWm4xK0VVdnZIOTk4TTFqQXdFUlRtWTJZUEhIdzhLaHlTTjQ2L1BiVjcrK0FWdG5CUGVyL1dINHg4ak01Q3NxSHlXanljTEVCQm5qTy9IdTBhS0gxeUtrMVIxRTVjRXRQdWJQZjc1UHYzL3grUHNYektCMXptRDNNREo4Ly9lYmtZbEJoMWVSbWRwTG5mOEJTMWVnMnhsUTBmLy85RnBZOHgrMHVCR0xBLzZSNUlEL29EcmpIN29oQTRKQVFjZklRTVRkQS8reGhUeGs3endqNHdCZVhmRC9QK0dRWktUNzVRckV1QXAwQURCMWJRVUlvR0YrbHNHWkQ5ZG1QdGo2L3RjWHRIWExmeGorc3pFeFJVbHArRXFxZ2ZNVjA4Ky92NmJkdi9EbTE3Y2lGVE5oTmk1d1VjWHk0c2ZIdmp0bmJuMzd3STYzVlBvSFdpcklFQ1NwRkFrcytCaWhYZDJqN3gvTWYzZ3BUa2JiVGtRUlV2QUJXM3lUNzUwOThmNGxHeE16STlLSmdhRHBFYVovaFVxQmRrS0dWUFQ3dzAvZjF0NzR5dkR2TDRySC96Rkk4ck1IcWZGd3M5TDZNSVgvVjE5LzNmdmcyNjgvLzVEM3pQejk5MTlabU10ZGtZdWJqU2dIL1A3N2Q4dWRqM2ZlL1dabUhPQ0UrdTgvQXpjN3M2Y1NwNElBd2MySS80NDgrM0g4NFNkbVJ1UVNuSUdKaWNsWGxWZEZrSE9ndlBEc3k2OE5OejU4L2YyWEdVZjUrK2ZmZndrZTFpQU5BUjQyK3EzOHZmNzYyL2E3bi83anJsS0FhVVpSZ0RWSVU1aUpxdFVHUUFBTjU3WE4zLzUrM2ZMaTVMTWY3N2lZMmRGT0oyWDZ6L0R6ejk5Rmo2K3hNak41aUtrQWc1ZWRtVFZQMmFqdjlybStPNmNyMU14NFdZQUo5SThFaDBDK3NzbUV1NmR2ZmYzSUJpdzlHYkZtaWYvQUZwKy9xSHlrdENiNDdIdHdWL2Z0ZzJrUEx5UXI2TmtKeVVORVB2LzVNZVh1dWFQdm4zRXdBVnVncU9kbUFRdkN2LzgzUHp1cHg2TWt3RWExblI2Ly8vNS84KzB2dzcvZnlJbnE3MytHUDB5TWI3Nzk0dWFuZGRuSGVQZjlqM3Z2ZjNLeE1LSTFCYisvK2VVZ3o4Rk5uQ25mLy95OStQTGJyNzlNZytIY3d4ZGYvOXdYWWlLaTdHTzQ4ZTd2eTY5LzJKaFEyalpNekN6QW1tQUEzZi84OCs4NzczOXg0SzdIZ2Nuang5Ly9MNzcrVUdHajAyWnpZTmZrK3RzZkw3LzhZY2JkcWdPV3lDSWMxQytwQUFKb09JLzNIWGg3L3NybkIremdLUTUwQk95aU12Ny96ZkIzM3VPcjIxL2Vob3o5QWJ1Y2VTb0dnbXhzTFRkUHZQNzVCVHoyOTF1YWs2OVl4VXlWbXcvWU04VTBCOWdxK2NmMFAwQmNLVlpXRnphNXdYcm96Y01GRHkrbHkrazVDVUhHK0pnKy92NDI0YzdwWSsrZkFSdWJvQzRmaGpuQWx0SE5iNDhQZjZEeXBBZW85OElJckN3UmdKbUpDVmlRdlAvK2l3N2h6NGdMTURDU2RFNDJFK09nQWNRM1BCaXhlcDloZ0svcVkyVEE3ejhXSnNhUFAvNWRmL09UYmk1NjllWHZ0ZGMvQ1RxTUZsWURCTkN3TGZ2dWZYMTg0UFdWNzM5L2djWVNjQ3pFQS9haXZ2LzVQZlBCeGRWUHJrTE9sV2RuWXMxUk1wWmk0KzYrZmZMdDc2K1FxUThKRHI0eUZRczFib0Z2d0xJT2RSM2ZYOGIvZm1LS3dCWWZ1Qk1CTE9aWTk3KzZNK2Z4eFFRRlhUdlE1QWFvcS92eDkvZit1NmVQZlhnR1ZQTWZoMHYrZzB2RVZjOE8zL3p5Z0dwOVRuQTNEVzFnOHMvZi95SmNiSW9DM0hTS0JteURvNlFlRnZ1UHptZU40VUhFWDI2QTI1QUJCTVQ0RVZqOFBmcjQ5L092WC9SeDB0Yy9meG54QnRkLytEZzl0UUZBQUEzUHN1LzMvMThYUHR5OS92a1JNM2dwQ1I3RUJDekMvdjFiL09UR3BoZTNJSzAvRGliV1BGVmpNWGF1amxzblB2eit4c0FBYkd6L0VlUGdLVkl4MCtRVyt2a1B1dXZqTjJnZEgyT1lsR3E4ckM1NE1CRTB1WEhvelQxZ1Nab2lyMnN0aEpqY21IRDMxUEgzejFpQi9XejhMbUZnZlA3OTNaYVhKNmlWUC83aEtQVHBsdjJBSWZRWGx4dElLOEgvRHhaRWROejh3MTNKRFdUWlIwUmdBdHZrOTk3L2ZQU1JIazIvbjMvK25YejY5ZXZ2Znd3RUhVYUQwZzhnZ0labjJYZnQwNzJOTDQvLy9mOFBzblVYUHdLMjJINy8velBuMGFWTkwyNUNpajlHQnFac0pXTVJOczdHRzBkZS8vd0UyL1VoVUtwaXBzRXQrUE1mYU9ITEg4Yi93ZUlxVVRJNlROREpEYlo5Yis3TmYzZ3hWOW5JVGtnSlV2QUJpMDVnKy9Id3UyZVFXV2FDTHVGZ1lEbnc3dEtwajFlcE9EeVBob0RkaDlmZmZqMzY5STF1OHdOWUVWVU1HUUFFaWllaVhQOFBoN01IZUw0RzdBV0MzZ1FXZ0k4Ky9tYWd2V04vL3YzNzlQUGY3My8rL1djZzZDVHEydzRRUU1PdzdQdis5OXVtRnljZWZuOEZIcnY5Und3Q3RycC8vZjB6N2Q2NUZVOHVRenEvbk13c0pjcG1LbHo4cmJlT3ZmMEZHZnY3SThrcEZDeWx5YzdFOVAzL2IxTitzVkFwRFZoWGwyWDM2NXV6SGw1TVV6U3dGb1owZFZrKy9QN2VjK2ZFa1hkUFdCa1oveEhuREdETyt2N3IxK3FuaHovOStVeDVPUHo5Qit5Vi8vK0xnWDc5Ky9mckx6MUczUDh6L1FmN0M5TU5KTFg4UUMwQ2JJYjgvLzN2MzgrL0lQU0xYZ2lZVi84U1ZTTDh4K1htZ1MzOS9vUFBMdnBMR1AwNzl2anI4ODgwYi9xZGZmNFYyTUJrWW1RZzZLUi9OQ2o4QUFKb0dNN3pIbmw3NWVUN1creWdTNGhJeStIQVpESC84V1ZXSnVaZ0tTM1ExQWNUYzdxU2FmK2RFNzEzVHRhcTIzQXlzd0tWeUhIeGlMSnp2dm4rWFpOWEdMd1NFRlR3bmYvNFpQYkRjN2xLcHBhZ3lZMC93SUx5L2ErdkhUZVBuZno0akoyWjVmOS9FaG82d0xybzBxZjd4OTlkY3hjenA4TGdEa1luRGJ5SWdWMldqNHRPNDBzWU5UWlloSkdVUHU5LzhOSTQ5RllJMENNcVF1eUtBdXpQdi94Kyt1a1hNeE05SmhGVWhUbmsrRmdoaStDSUhLTkU5dmkvUVRQZVIzQk81TzkveGkrLy90TFlPWDlmZnYwSFdlWksyTmswc0I0Z2dJWmIyZmZrKzR1ZHI4NTgvZk9kbFltRjFCQmpBaDBvLzNmbXcvTy8vditKbE5ZQmhRNGpjNUNVUnV2Tkl3Ky9mOVRnRVFXS3NBSzd1TUIySExEUEMxbzNCMXF6OVkvaDk4YW50ejFFVkd4QlhWMVF3ZmZtNTlmT1cwZE9mSGpPd2N4SzhnZ1BJK092Zjc4WFB0Mmx4U2NueXlGSllVTC9pekZNOHVjL2FOcVVuWmtlN1gxZ3lmdjNQd2loRlFwL1NRb1NzQy8rb3BkOWpNQ0ExaGRqc1ZjUUdKenA4Qi9FMll3bzBjRkllbitmeXE1aXdCSWpXTUc3Ny84T1AvcXNMTWpKeEVTcnBQTDA4NitMTDcvOUE1V3poTXBJb0pzWnFMKzhFeUNBaGxtZjkvK201OGRPdnIvQnhNaEkzdGxUaktBR3hkOVo5ODR2Zlh3RjNBaGovdjN2ejdlL3Z4NS8vd2p2TllBNnAvOGdMVXBRMHY3OTcrLzczOTgvLy80Skx2all2dno5MFhYbktMRGdZMk5pL2srV0c1Z1ptQjU4ZmJYKytWSEtPemovR2JEY0ZQeVBYZ1B1LzdGYS8vOC9xVDAvN0NZQXU5U01nemdoNHZUNVlIVFdQd3dSUnNiLzczLzgvL2FIaGsyL2w1Ly8vUGlObmtUKy9hTmZ5QUVFMExCcTkxMzdmSGZQNi9Pd1JqTDVnZldYQWRqNXZmajIxMWQxSHVHTnoyNi8rZjhUZVlYUlA5UzhDMlJ4c3JDc2VYbjlQOU4vRFI2UmpjOXZYZm9FT2plQmt1aGkrOCs4NWRVcEswRXRFd0V0U29xZWZ4aGR4ZitnWlQxL3YvMytJOERCUnV2b2dEUXgvbUcwKzBnZDh2OEhHVFZBTXdmVUVHQWN4R1VmK3F3T3BOMDNzS1VmZkVvQnZSUUFWdkgvV2Y4aERSRUJPemUzMy8yNi9PcUxwUXhON3BJR3BzQkRqMEV6dkd6TWpIRDNBR2tPNXIvQTd2WnZsSzFBNU15UEVRTUFBbWhZbFgydmZyei8rdmNuZVA4blJXUDVUS0JORVgrV1Bia0diT0t4TURMeWNISENkamd5Z29leC80Rm5rSkZpREp5a1Y0RFUvd2MyOTFnWm1VZ2E0OE5hUFgvNy9lUGx6M2VVSlhUdzREcGFabU5rZlBQOTE1TlAzNlY0YVQ3azk1OFJNbENOWHBDUk91VC9GOUpOL285UzMveGwrRC9nczZZRTNmd1h2ZXdiNEhiZi8vK1E2Uy8wY1JZSnJyK3Z2Z0RMUDVRYnUvNzhaM2o4NmE4bGVIRSsxVjN5NDgvL0R6OUFRekova2JJUk05Ti9VZTZmcjcreGYvL0R3SVRVeDZYUlhBZEFBQTJyUHErNWtJNHVyL3pQLzcvL1FsWWpVSUJBaTFhWW1EaVpXWmdabWY2aGpyUmpUaUZBOW1FRFN6Mndla2JLejd2L3dmREhWRmpOU2NTUTRyU09CVEV5TURMUmFUczlJNWFWdmFTUDkvOW5HSFNMaElsczl3MjZ0YzNZUXZMbjMzOEc0dnpKaGtJU1BPeS8vLzVIU2ljTTU1NS9lLzdsQnkxY2N1anhwMmVmLzRCWCs4TlgzVE5ZeTNCSGFFdHlzTEQrL2ZjZmZUMDhEZHdBRUVERHF0M0h5Y3daSWUxdy8vdkxaei9lVXV2U05YQmg5QThwOVREK3d5ajdRQzBzaG4vVU92MENHTy9Nekl4QkVsYWN6TnlVWmo5c3FaK1JnVTd0SlhBbGdlNEdUQkdDcHZ6RDhBaDQxSFZRRjMvL01YeEt6NUFuM2xXUTloMFhLNnVPS08rbTI5LytJclh4Z0lyZi8vei82dHMvU2VwdjdmMy8rUE8vWC8rQUhWNm0vd2huL0pQall4WGc0UHpIOFBrditENHY1RFR6NXgrNEJVTFZLaHNnZ0Zob2wrNlI0L2svZExrWkF6Tm80eDRESzJ6eUNOd3ovTTlJYmhuQmhOR0NNUkJVZHhMVlcvaG9EN1ZDQ1R6WWhHaHhnNGRzSU90RGtWcUMveUI3aEtsajU2ZS8zMzBsTEcwRTlDbVBnMzhZcXlyK2dkWXZNRERTcS9DRGhBdDZlSkl5Mi9JZnBnV3R6L3VQdEtVeTlPL3p3dWJPa1B1OGpBTy9zUU0wWG9QYUtnQzY4OWZmZjhCU1NJYVg2ZFliQm1ha2hQM2o5LzhERHo2ckNuSndzVkt6b0xqLzRkdjlkeitad0ZaRGcrdmZmMWsrTmoxeDdoOS8vdjRCM2VhQXNqd05yT3cvMWZzcUFBRkVxN0x2d290UEYxNThoNnk2K3ZNUFdFZ3hpbkl4aVhHeC9QNzMvOE5QQmxjbFFWYXcxTWVmUDNmZWZRL3Mzak9UNkROZ0V1SmtaWEpSRkJEaVJEbVBoSVdSeFVQTTdNUzdHNWMvUFdSbllxVlMyZmNmS2RNeGdHZmwwYWM3d0RlZFUySGk4Yy8vdi9LYzRwSGlEbFM1dHZ3Zk5oRzZaYjcvLzdBMDJVaHU5MEh5Qm1xVi8zL3d6M1VNblhZZlpKYzNNUFZheXZDZGZQcmoreC9FQ1ZkQTRlZGYvbno3L1plNlpkL050NzlmZi8zTndzd0lkOG12Znd5Q25FeDg3S3hBMjhGbkRLTU1NZjZETC9Da2FvUURCQkJOeXI3UFAzK2RlUHJ6M250UWYvN1AvLy9TUEN3YUlxd20wbHlpbkJ3dnYvN2FkdmZMMjI4L0pYZzRnQ29GT1ZqNU9kalBQL2hHNm9JellLYmlZMmVXNFAxaEo4dUNGaVRLM0hJZTRzYTN2ejcvOWZjMzVUMWZhTHNQbW1qQjI2NmhpMUdRNHdaYXgxTWVOYjhaL2dSSldlbnhxMUtuOE1IVzdnT0owYVhRQUc4QW8wSzc3eS9HVmxoSUhoN01uVjdFbWluVWR0Ky9nWjNuaGFaZDlDYnFIN0NycEhpWStEaVlQMy84QTg4MFFQck4xNytYWG41MVVtU25saHUrLy9sOTQrMlBmK0RETy83RDhqSW5LNk9GRENla0FmZ1BrdVdRWFVpYmlWNkFBS0orMlFkMDVxWFgzeDk4K0FWczJmR3dNWmxJY0dpSmNjandjVUJLQmlGT3BtKy9mdDE0eXdJcCs0REJLOFhOQ2puaWthVDhDTlR5NGNlZmd3Kyt5dkN3S1FtaVI0eXJpT21PRjJmT2Zickx3Y2hHZVFiK3k0QzBSSmdSVk5MOVJXM1FnSThucGtMWjkrdi9IM1UrbVFBSmF5cFc4Z3pZbWwxMHkzOVVHTytEenVxaXQvditNd3pKOGI3QjVpcElqUHdGbHl4ODdHeDZvcHlQUC81RUtHQmsrUFRyMzZWWHZ4d1YvbFBySUttWFgvN2VmUE1UUEdnT05SRFlGK1JoWmdRWEVhQ3pkZi84UTNja2pUWmdBZ1FROWN1K1YxOS9IMzMwL2NlZi80N3luRHJpWFBMOGJLeE04TzdiLzA4Ly80TEhhUkFkT21DZjlSLzA4SGJTQXBmcFArUFhYMzh2di9rbXc4ZkN4b3pTUXhUakVJbVVkWHA0KzgwSGpCT2JLZXZ6TWtDM2lpRlhTNHpRQmc0alpjMHBVQUhLK0Q5YzJrNllUWWg2clErTVpYSEFNcHRlODF2Ly8wUHZyME4zd0Q5U293Q2toZkUvV2g0ZTFCTzkwSXY3ME50OUE3eXZBN0xWQnoxRy9nRkxINmhEMVlWWnR0MWwvb2VrQXRoMWUvVHAxN012MzZXcHN5anEvNVZYWDc3K0FxWjBScmdsUUZkcGlYQ0ljN05DR3FIZ29WTEdmeGlCU1hVQUVFQlV6Z2RBZCs5LzhKbWJsVEZXajk5QW5JY0ZhVVBNNjIrL3pqNy9jdXJaankrLy91a2liZGFTRjJCWEYyRy84dW9uQ3hPSjZRS1VrdjRmZVBoTmhwZlZXQUo5THNwWjFPVG9tNHZyWDV4a1pHQ2h1T3hEbnRrQXovUCsrNGNvRU1FTFZ2OVMzT2Y5OHUrSHJhaDJnS2d0TllzZWpIMndrRDR2ZlpwTTBNTUtNVHZDREtRZFNRVHFwb0hxRmJUMWZRTmNqaER1NzZPZU5QMGZNZ294OE8wK2JERUNHMDdURmVPUzVQM3k2UDEzVnRoeCs4RHkrdEhIMzlkZS9hUksyUWRzRXAxODl2M3JuMy9zc01FKzhBMG0vNHdrT2RuQnpSZlF1ZUwvMFlPTzFBUkRKQUFJSUNxWGZaZGZmcGJqWTNWVDRoUGlaSU9YREY5Ky9ybjU5dnYydTE5ZWZ3V05BSUxLckQ4SUxlek1yTnlzVEVBL001SGpPMFpnT1hUNDhUZFZRWFkrZHBTWkRYWW05a0FwKzJNZmJqMzcvcGFOZ2trUFdMai9SODdTZjlBaWd4RzY2SS9zc2c5WWRBcXg4eVZLZTdBeXMxTXpvZi9IM29haVQ2SHhqeEZXMUtJNjRDK3BaMWlCZFdGcjl3M2k4VDVzK3pvWUJucGREdVFJTHZRWUFYVXpvVUxBL3BPR0lQUHp6OHgvLy81RDZ1TXlYbjM3M1ZxT200dVYwaEdrUng5L3ZQNE9taE9FdXdHWUdDUzRXWlVFb0NhRCtyeC9JUnRTR1ZFQ2t3YWhBUkJBMUN6N2dPVzFEQytIRUJjcmZPSEpyNzkvcjcvNWR2elIxOGRmL243NkFiNmRDOVNrWmVKZytZT3M3eGZrSGx5eUxBVTJMTysvKzNuNTFROXJqRWtQSTBFTkx6R1QyUTkzL3ZuM2wrelZ2TENCMS8vd2dnL1N5dnVIVXNUOHAzQ3U0L3YvWHlIaTF2WWlSbFN0NVA5amFmZlJjVE1FZUNuUWY0eXlqOVN6U3lGSC9JTlh3YUtXZllPNTB3c0pmSXl5YjhCMzlESml4c2hmcEVRQ3pDWU9DdnpIbm56LytQc2ZDeE44dHZmLzVaYy9nQTBYZVFGS3k3NkRqNzQ5Ly9TVG5ZVVIzbTBDNW4wVlFVN1k2RC8wcUFzMFIvNmp6YjRPZ0FDaVd0bjM5OS8vMy84WVJMaWhvZlA3Nzc4Nzc3NmZlUGJ0MHNzZndGcmw1MjhHTGpaR00rbHYvLy85dmZoYVVGVVkwYnA1OStQblZXQmR3RUJ5Y3dEWjZqMzN2eW9LY0VqeHNxSVdpOHhCVW5hN1g1Ky84L1U1T3lPWlRiKy9HR3VFWWF1ZC84UGFmSkMxemVTUDkvMzgvMXVHVXpoZXlwVVdUUStzZ25SYUhjS0l4UTMvc08weXhsK0tRRTlkUlczM0RmTGJCWEcyK3dhMlJQNlBwZDBIR1FTRUEzNTJSakVlNXZjLy9zS1ZBWHRxWDM4elhuNzFYVjZBazVKeG5kOS9mMTk1OHdPNU8vSWZ0T0NYMFZDQ0hXN3N2Ny8vL29KV2tER2lsbjJnQmRoVUR6cUFBS0xhbnJZSEg3OGZmL0xwRDNnZDhPTlAzM2ZlZVQvM3d0c1RUNzc5L1BQL3h5OEdIZEVmS1lidm8zUStNVE14eVBDekNuRWd5cjdISDM5OStmWHZQd1U3d0JqQWM3Nm5ubi9HckJ5VXVlV0NKYTA1bWRsKy8vdEQ1RG1tV0JCU0U0TVJkaDRxdk9NSVB3ZWNQTVAvL1AvNzY5K2ZFQ2xyWlI0Rkd2UnhzSitDeTBpbm5JYjdHRjdTekdFY2pHY2dFeXI3L3RMci9HR1NZZ1NycTVDYkhXTGNiR1l5UE9BbUJhTDQvdnpyNzk3N29Ea0tTbXkvOFBMbjgwKy9HQmtSc1FuTTkwSWNUR3JDaU1GNm9BMi93V1BFYUlIMm13WUROUUFCUkwxMjMvKy9Uei8vMlhIN1BiQzVkZkVsNk5LNWI2RExFWm5rK1g4N3luOHprdnJKenZ6djQwK21SeCs1N1JSWWtYdWdYMzRCOVlKdnNLTEFjei8vL04xMTk2dUtFTHVPQ1BvK3NEQnBsNlB2cmg1OGU0V1ZyRWtQMkZ3SFV1RUg3cUFqZDE3QXd5aC9HY2xhMi96ajMyOFZmcWtFR1UrYWREb3hkcEJDRWpwOXlnM29hakpzZlY0R0V1NzhnVjQ4d29oeGxzRmdMdnorL2NmVzUwV2VJaHVZbmpqMlVZaS9LRUtNaW56TXpNeU12LzhnYndBQjdmMzQ4T01uTnh2Wk14Ny9IbjM2OWVQUGYrUUpuOStnRGkrcktCZGlrY2FmLzR5Z05TNy9VWGFJSXFVWmF0YmFBQUZFdGJKUFRZaUgrVC9qOG1zZmJyejl6Y0hNQkV5cEVqei9iT1YvV012OTRHR0ZldmJrRTdiMzM1bFVCRGlSRXNUZlJ4OS9Bb09BaGVJRzZPL2Z3S3JwbXlJL096ZnFHblJCTnI1b0dlY3pIKzU4L3ZNRGFiVU5LY1BEcUgwczZJby9SdVE4VG1hZkY2aVJsWWtsWHlHQW41V2YrdGtQbEdqK1lhNXhvZWVPZXB4OVhsTEh6djR4RHJIMWZWajd2QU8rcndQYmZTbVFIWnJJUUZ1VVU0eUg3ZUhiN3l5dzJWNWd6L1RPK3ovN0hueUoxU096N1B2dzQrL2hoNTkvL2dYUDhQNkhwZ1IySmdZTEdWNW1wRnlKdFd2eWx6YlZIRUFBVWZFY0YwWmxZZTRVSXhFSGVTNUJEcVp2Zi84YVNmNXdWLzRLS2ZnKy8yUmFmbzFuOHcxT1MxbHVFVzVFMmZUaTY1L3pMNzVETDJta0RERXhNZDU0L2YzbVd5ekhUdGlMR0xxSkd2NzYvNXU4QTAzUnBtSCtRZGIzSVRVRnNWNjVTd3o2K3UrSHZZaU9qNWcxVGNvZDhBRkJtRmRlZ1laZndXZFMwdTVPbi8vUWxzSi82TllPTElqVUFoVGRoTC8vL3pNUDRrT0kva0dUQktxekIveWlOcXl1QW85V0l5dGlaMlkxRkdQN2pScnN3TkxvM0l2dmY1Q1hhSkFDbm4zKzlmb2JzRFdIbkE3L2NiSXhTdk96b0hZZkdjR0h1R0RlYjBmOXRlRUFBY1JDY1UwQ2FneXpzMEJLYmtZSmJvNWtBN2FiYjc5ZWVQWGo1Tk52MTk5eUtBajhZR1ArZitJcHg0dlBMREw4ckdiU3lNT2wvMisrL2ZiMU4ranlNQ3JNWVRNeS9QcjNiOG5WajVLOHJKTGNLQ3RGT0pnNTQrWGREN3k5L1BMblIxWVM5OGxDc2htU0xZelFqZ1BhcVZiL1NWN2o4dnYvWDBGMjNoeEZQMVpxN0R2RzFWdkVHRW40Lyt2WC80VVh2MjY3OCtRdkxmTWhzTVh3NHN0dllNVk9lYnNQdXNZRnRTVUlkUHV6ejMrZmZvWjBvMmdOR01XNG1IblptVW5KRjlqbk9nYTROWXE5Slk3VzV3VUJXem51OWJlKy92MzdHM2s3eC8zM3Y2Ni8vcVlyemtlRzFidnVmWHoxOVE4cjBrbWxmLzh4V01seXF3cHlZeDJSUkVzenRKaWVBd2dnU3N1K0o1OS9YSHY5M1VhV241dU5HVlk0TUdtSThLb0ljZHJKOHIzOCt1dkF3NjlmZnYxblp3YU5iQnBLc0Vud0lFb2xZS0Y1OHNuMzE5Ly9zSU0zVHpPQmxzQXdVTGh6NXVYbjM0ZWVmQTFYUjE4bFo4aXY2UzFoTXYvaHZqLy8vektSRW96LzBOZm53a2F4a0E0NCtBZmJKVW1TMjcvLyt4a3NhbTBpb0VQTERnN0tNQmtjUFAzeSsvRm5tbDgrRFlwUVJvWi82QU9POEdxYzZLWUtlTkNRRWUzQ2p2OE02MjU4MlhMbks2MGJVcURjeU1nWXE4MGRyQ2xPZWxzVnJlejcvM2VnNXpwd3JEcENWeW5HeFM3RncvVGcvWDlXSm9UZW4zOFo3NzMvcVN0T2NoUHM3Lysvejc3K1E3TUlXUFdxQ2JIaUdDZkZTRE0wQ0EyQUFLSzA3THZ3OHNldU81Ky8vUHpucmlMQXc0WXdqWVdKUllvWGlOajF4SG1BVFlETnQ5NTkrdm5QVnBZSE9kVDJQL3g0NDkwdmVYNVdOaWJHSDMvK2ZmbjE3L3NmaHI5Ly83TXhrMS8rc1REKzMzLy9tNGs0aDdJQStzQkVobnpBc1RmWEwzMG03WHdYekhYd2tQT1EvMEdhbXJCVG0vK1J1TGI1TDhOZllRN2VFcVVRV3FkMXJFVURJd1BKQitlUTdRQ3NEU0lTN3liSDdvdHZ2LzkrK1VWN0w0QmE2QXdmZnY0aE9lVC9nVTZoRzJ6dFBzd2s4US9ieG05aFRtWWZWYjVwcDRIdGszK1FtVWxHMEs2TWZ3Y2ZmWFZRNE9jbjhjS0QvUSsrWEhuNUExZ1J3cTMrQXpxMGl0VkVraGRYZFAvSFNNWlVEenlBQUtLbzdIdnc0ZHVGNTkvZS9QaTc3K0hYQjU5L2gyZ0t5UEZ4b0czTEJlYXhuMy8vUFA3NHgwU0tRd3FwMGZmbDErL1R6NzRCeThjcUt6RnVOdGJQdjM0OWZQL3J5dXZ2WjE5OGYvSVpkSW9PbWFNNWpBeWZmdnplZGU5cm9oNGJCd3VLNzJTNUpPUGxYTXF1enYzOTd3L3htM3ovUVZ0NWlNajVCem5CN3kvaVpCZm80QTRwdGVIM2Y3K3FGQ0lVdUdScE9PVDBIMnVmZDZBSHdranM4LzdIMXVlRlJ6WWRyaXY2RDdtemlzU3FBdXY2dnYvL2FiSXZsYVFScXIvL3NJMUNZQXRiR1I0V1ZtQ2o1RGNqL0R3cG9MNW5YLzY5K1BLTDFMTHYycHRmSDMvODVXSkZkSGgvL1Btdkxzd3F6SW5aN2dOZkxvaTVGK2dmOWVkNUFRS0kvTElQV0hKdnVmM3A4dXVmd0Q3OHV4OS8zeno1ZnZQTkx3dEpEa2NsWGtYVU50ZjU1MThlZlBxVmFTU0NQSFp3NGVXM0s2OS9KK2dMY3JPQndwR1hqVjFIbkYxYmpNZFo2ZGZXbXgvUEEwdkFyOEMrTUJNWmlSdFlWcDE3OXQxR2hrdFhETjEzSWRLT0cxNGUyL1BxRWljVHNaSDNGKzEyRHNqMlV0QWMvSDlZZW9Bc0dmMzNsK2lZK2ZiM3A0V1Flb3kwRzYxTG1iK0Q3M0IzNkgwZEpLMXQvZ3ZxS2pJT1VLc0pmRGdqSThsamxQLy9ZOTdYOGYvLy8zOERmRGM1STdZYlZMQWZES0VyeHFFdnpuSDQwUmMyUnNUZTNwZGZmbSs4L2I0TXRKS00ySno1NXR2UDh5OCtNekFpN0FYYXlNTE1hQ25EeTRqUkJJRmZNdk1mSlE4Q2kyeEdxcCs4QmhCQTVKZDlsMTkrdXZMcUorU2FIbEFmaW9uaHcvYy91KzUvdmZ2eER3LzdCeTFoVmlOSlBsRXU1aCsvL3h4KzlNMVlpbE5SRUxHMDVmdnYzOXR2ZitUallBV1dVQ2gxRGVpSVUvWUVRMUd6VjErWFhINzMrUFBmMzdBbU55bkRUQXlmZnY2WmYrRmRnejBySHp0S0djZkR3cHNxNzNQODNjMWYvLzR3RVhjREMvb2FsLy9RTlM3SUovcjlJMlZmQjdBVHdjN0dscThVSU13dVNQdUNocnhkMGdQUURjY2JCUU5aZ1A4bnE3djZIOXZkNUFQZTdjVjZad2l1R09GZ1lWVVJaRDM0RUVYMjUxK0dWMS8vL2Y3M2w1V0oyS0xqNnV1ZmQ5NzlZVUhxOEFJYmNVcUNyTEw4YkhoYytKK3lORU1NQUFnZ01zdStkOTkvSFhuOC9kVzNQOGhYekVFYWFUZkJCeE9lZWZaais1MXZZdHlnclBmeEoyTzROa29aZCtiNWwxdnYva2p6c2ZLd1lSMTZZOVFTNHltMFpOMTA0LzJlKzk5Ky8vOVBhbzhEcVB6QngxOTdIMzBKVkVVL0Q4cFYxTXhMM0hqMTAyTXNqUCtKT1RVTDJ1ZEY3T0tBTEhENWg1cXNTZWp6ZnYvL3kxdll4RS9TbGc1SkhkZEd5Ti8vL3RQaEVCUVcwRDN1V0JwRUpNNTFRS0tBQ2JQZDk1Y3VWMzJEeC92Ky95Rnh0QjNyMnVaQjBPNzdoM1d1QTVkNlczbnVEYmUvZnZqMkU5NytBRWJvOWRjL2p6LzViQ2RIWk0zOS84enp6ei8rL09OaVFWajA2OTkvVTJrZUZVRXVJanNyTk5yUEN4QkFaSlo5bDE1OU8vbnNHK1lzSHFUWkJVNm4vMTkrKy8zMEM4Z1hnZXE4Y3Z5SVJ0K3Z2MzlQUC8zeDZkYy8zaDgveXZjKzRXWmhWUkprY1ZYbTVXZG40UUF0Y1lhR01yQUJHS2dwQ0RSbjkvMXZmMGh2L1FFMTdyanp4VXljUzVxUEExbWNqWW10UUNuNDJMdHJqNzYrWlNPaTd2cUh1amNCdkJ6bkh3UHFtZlhFai9jQmc0dVRsYVZhTllxQmdaa2VLUjNqMEJRSXowU1NRMFdJNnpjdFN3NVdKb1lMTDc5Y2VmMmJEWFhZZ3J4elhQNWlqUGVCNzNKbDVHS2plVXNLTXRmQnc4Wk1xcHYvb1BvVU12dnhieERzYWZ1TGZwWUIvRGdEOVBRcnk4Y2x3c1g0NmdzaksxSWY2Y1hYditkZS9MQ1RJOHJHTHovL25uLytpeG5VNFdXRXU0R0RoVkdjaXduM1dBSDZ4bWNhVlhJQUFVUk8yZmY4eTQ4OTk3NzgrUFAvUDE0M01ZTVgvZkp3c05qSzhTRUg2NUdId0ViZnp5VDlIK2JTZjU1OS92cmdJOVB6TDJ5ZHh6N3pzckU2Sy9KcWluQUFTejJJU2lGTzlsQnRZV0JYZjkvRGI3Ly8vaWRwN0krSmdmSFY1eitiYm4xS01XSkYyODZoejYrWktPdFdkMlBwMy8rRUwxZUQzSllIWHhZRFZRL3M0MExQRXY2UGFHRVI2dk1DbFg3OTk3MUNQc3lZWDV0T25UV01rZ0dZQkRuWUdjSzBlV3hrUldudGdPbG5uNTU1OFp1VmliQ3JDRlJpR0hOOC84RWxTNndXajcrNjRIZmFyKzhET2tDY200MDBIZi9SdmZsL0VCemQvQi9icWQxNGRzaHdzakE1S2ZDY2ZmNEwrV3hOWUJZNCtmakxhKzBmb3R3Y0JHMDgrdVREaTI5L0dCa1JVMjdBR2xkYmxNTkZrUituQy8ralgyd0NpbTRhMUhFQUFVUk8yYmY5OXNjTEw3OHpNeEtZWlFPZlNzaGdMTWtoaXJTUjQ5UFAzNWRlLzlDWCtCcXVEZHFBb1NEQVlDREp1T29xMC83N3pGOSsvVDN4K0tlUkpKdWRQSSs3Q2g4VHVHWEV6ODdtcmM1LzVlMlBPMjkvQTZzTGt0ejUrOSsvazgrKzJ5djgwTUxZNUpzazc3MzY2ZUdMbng0UVhPL3lEN1EvNGZmblB6OGhMYldmLy83Ky9QOGJXUGFCSTVNSlBIYkI4dVB2bjc4TS81Z0lwZXdmLzM2cDg4dWt5L3ZRTGEzL3hWZ2VBcXJrL3pIK3A4dUZIWC9BUjVQOXhiaXY0KzgvMHM2d0Fyc1o3ZXhTeHI4TS8yWDVXQ1I1dUJnR0pRQVB6NlA0SGJJa0h0aUZHZUIySDBhTS9QbUh2cThER1NnSmNyRXh2L3Y5RjlIeFlnU3Q2djE3OCsxUFlzcStNODkrdmY3eW01T1ZFZDdZL1Bubm55d2ZreUFuRzI0WGd1WTFrRk1vNkNhNWY1QnhKMnFtVzRBQUlua2h5WlZYbjRFRnluL3dtTnAvQnJ3SUhOREtndXlDSElqeTVjbm5YeWVmZjNkUy9BMGErZnJOdE9zdWE4NDJuaVdYT1ptWkdSMFVmampJLzdqMTl0dmtNeCtXWEhyMzQ4OXZpQllaWHM1Z0RYNFJicGEvL3duWmlJcFltQmhmZi8wMSsrSjd1RkZ3SU1ZdW1xN29Bd3pKUDRSdU1RZDY4L09QNzdNZkhmLzQ1d3V3eDd6dTZhWHJIMTh4TUxIdWVIUDcxcGRud0tyeDFJZjdaejQ4Z2RUMCtJd0NsZ05NLzNMbC9XaTZyZ1V0R2VHNEh2cy92YzV0eG9rb05RZDhRK1h2Znd5REZtQzlsQjNZZDduNTV0dGdjeGorR1Jnak1UWnphYzRmZjVBMmo0S09UZnE3Njk1N2dpZUtQdnJ3N2ZyYm44eE1TRmVNLzJOZ1pXWXlsK1hGTTFid24xNTN1Z01FRUdudHZzKy8vaHg2OVBYUlIyQWJtUEVmb1M0NGVDYWJRWmdUWmRQLy9nZWZWUVMveS9QOU9mR0VkZlVOMXJOUFdSbVovaG1LL3c3Vy9HMGwrNHNSZEhjbjg4eXpmMVpjK1Exa3grb0pReTZyTTVmbVBmZjgrNDY3WHpoSVhQWU0xSHpyNWZlREQ3KzZLd3VnU1lWS09XNTRmbmo3eTdPc1RHejREUVU2OGRDYis1N0hab3F4Y3gxKzgvakh2ejlzakV6N1h0MEtQcmxBaTBmaTJJY0h6MzkrWWdGNkErOXcrSzkvdjZ6RnRKUGx2ZWlZeXJFTVN0RHo5S2YvdU04eUlDa3BnNmVTME04eUdQeG5XR0gxKzRBWGZGaGRoU2M2T0ZsWkRTVTREei84QW13dHd1TUEyQWE4OStIM2w1Ly9lTm54Tlo3T3ZQaDE4ZVYzTmliRWRPalBQLzlWaFZsMFJibnhqMGd5b1RlaWFUS3FDeEJBcEpWOVJ4NTkyblgzTS9qMFYySTZYQXdjckV4S2dvaEczN3NmdjQ0OSttWW0rYnYvT09lZWU4eGYvakFiUy8zelZ2M2hwZ1FaRldLRWROUFltUm0rL2Y2Myt2b25iVkZPSS9DbDhKd3NMQ2FTSFBzZWZBVlc5YVN1K1B2NTcvL2FtNThNSkRuRnVWQTJ1Z215Q1pTcWhCOTdkLzNqYjJEL25abGdvam4rNWg2dzJtSUVyZmRrQm0ya1oyUzY4dkhwbGZjUEdaalptSmlZLytJdCtFQ3lUSXhWeWhFY1ROeDB6WUhnS2hQbFNBd3dvcHZ0ZjBGMzJqRmhDSkxVNXdYMzB6SHY2eGo0TTVBSit2MC9XbEQvb2RtVll5UUVKb2FyZ0NKLzhCNFZZQ25Gdm9TTDVmMjMzNGpsRmt3TVR6NzkzWDN2WFpDbUdKNHd1UGdLV0R3Q0czb0lHMy85QjEzTkljbkRocWVlQXg5ZGlycStEelRJUWYxaEdvQUFJcUhzKy9EejU3b2Juejc5K3NmR3pFak1WTjN2Ly84bGVUa2xlQkF6dkpkZmZYbjU5ZGY2bSt3Ly96SEw4dnlKVi8vdW8vNWJpQU1hN0U4L01hMjd5Ykw5THN2WG55ekFkdkxIWC84MzN2NmtJUUs5RTk1SWtrOVY4TlA1bHo5SkhmVmpadnovOENQUTBnOFpobUpvOGVzb2FoWXQ3VGp0N3ZxL1JCNXd3TVQ0LzkrZnZ3eEkyNXVZZ0EzNlAvLytFdHJ3OVBkSHVLS1hsN2dOZlJNNmFINmFHY3RTS1RyZDZnMjFDOXRxc3Yra3pYYUFGeXFpR1RKNDd5V0h1aG5yU3JvQm51Y0ZuMWlGNlNyOHNhRXR5cXNwOVA3Z2w5OU1pS0tQNGVYWHYrZGYvQXpTeEtucjZhZmZSeDk5WldQNkR4KzZBeDFheGNLb0tjcUZaOWdPZm9EVmYxSmNTQjRBQ0NBU3lyN050ejQrL0FEcTdSSlozUUpEbVE5VVVERWg5Zi8vL3ZuUEtNREY1Q1QvSTFEemx5d2ZkRm5JMis4TTIyK3picjdOOXV3ek0xQ0lpL21mbGN4dk5kRy9hMi84Zi9YdGp3TDRsQnNlTm1ZTk1iYXpMMytTZnV3dzQrOC9mNDgvL09ZbyswMGRmZEtEc1VzbkowOGxuTll0Q0dBdUVHTVhZbUJnb25kQ3h5aDcvbUc3dkkyV1hUOXNPK2Yva1Zyd2dkYjNvUnloQ0NrOUIzRzc3ei9tK2o1d1YxRUZhWVgvUUpSOS83SEhDS0VjWktmQXNmL1JOK1JSSFViRy8yZGZmSDM4OFpzc1AvYnBwb3V2UGovNThoZDhrQS9pYWc1TGFVNW5CUjc4Ym9SYzk0cVJpcWdmMXdBQlJHelpkK1BOMS8zM2dTM1kvNnhFOXpsQnAreWp0Zy9mLy9qMy9UZGpnZW4zQUUzSTVBUGp0OThNZSs2enJibkdjdWNkTXpNVDQ0OWZmNDJrL2tYby9IWlVBSzFjdVA3eXg2VVhYeFQ0SWROSmpIb2kzT3VCamNLLy8wazk2d0NZNXU2Ky96WDMwc2RPUnc1RzFDWWVOd3VYT284OHczQUVrSlYwakZnSGQraFNhUHpGY1I3UlB4THZHY0k4WFBNLzdFVDFJVFRlQjJtcmNyQU01S0dEdU1iN0NFNmlHb2p4QW51OVAvNGdkaGt3TWpEZWUvLzN4Qk9jWmQvdSsxLy8va1U1Yy9iM3YvOENITXo4N093RTB3d2paa3Ftd1dBQlFBQVJWZlo5Ly8xMys1MVA5ejZBNWgrSUw0QkJ4eE5pTExBQWhyTUlGM1NwMDVGSHpHdXZzWjErd1FJWnhSUG4vQjF1K3NkRjZUZTRhZ1JOSTZzSS83bjIrcGVmT2xRN0t3dG9aVEhvbW1yUzB3OHo4Lzl6ejc3dWUvalpXVUdBWWNRQUhGTU5qSFFhZGZyUGdIMnloVVJEc0Y1MENkN2Z5VGlFeWo1SXcrZmUrKzhEM09mRk90ZEJTS09TQUp1RkRNZjJPMSs1V0JCRy9mcjMvOEtyTDZIYWdwZ0w5Wjk5L25ibi9SL2t1OWlCRENFT0ZqY1ZIcUpjeUlCbFBUelZhenFBQUNLcTdIdjMvYy81Rjk4WWNGejVpc2NiOTk3OStQVHpKeCtzcEFjZjFncTZleGpZeXB0N2dlM1lBNmFmLzVuL2dFNjMvKytyK2l0WTg3Y0lGd05rd2ZDTHI0eHJyN052dk01b0k0c1ltUlhuWnVaaFpmejA4eDhaNDU3QWFncW84ZEtyNzg0S2ZIVHVldzVjOXNONkZCbzkrN3pndzc2dzNsSDVuMlNQRFBVK0w2VHUvL2p6ejRDNkNzY29CS0gwd003Q1lpREJ1L0htWjNZbXhJRWt3TnJueU9OdkR6NzhWTUE0TDI3NzNTL1hYMzlqWVVUY1JRbnNycW55TUZ0SThST002Ny8vL2pNeG9RdlNZbFlmSUlDSUt2dWsrZGpkbFBsbW5Ydjc3ejlwMDZ3ZmYvNis4dnE3bFF5MDdPTmtabVQ2LzNmSkJjYm4zOWhmZmdOdC8yVmgvQmVxQ1N6MS9xb0kvb01uNnlXWFdiZmNacm54aG9XVmhVR1VCK0ZDYmxabThOb2FZSjFQY2tBQXExeGhibFpQSmQ0UlV2QXg0RjVtUWJldTRuOEdodjg0NzZnay9xNmkvLzhvYnp3T21zQm5ITkNkSGJnQ2s1allNSlpnVXhaa2YvcnBKL3plWG1ELzk5bm5mNmVlZmNJbysvNDkvdkR6OTE4R0poYm9rQXZFZkdzWkxtQ2ZsNHhlK1gvUWpXN1VyK2tBQW9qWThUNVhKZDZUVDc2ZWVQcWRuZWhwVnFCYnYvMzY5K2pqWHlzWnFJaUdHQ3NuRy9QNTE4ekFiaGNuSzRPUjVLOFVnOSs2WXYrWndUdG0vdjVqUFBTWWVjRWx0dlBQbUlGOEk2ay92Lzc4VTBDNkR2ay9qaVJGVENZRVZsZk9pcndhSXR3TUl3YjhBUzhYWU1Kczk5R3IxUWZhUWdDZHBzQm85NUZXam9EdUprZHI5OUdvTFVDMXNvK0JBVnViZDRBdmw4TjFUeHR4WlIrdml0QzcrKzkvSUxkK3Z2LzVmK0RCdHpBdEZKVW5ubjViZmZNakN4TUQzT0MvNEpVdXBsS0VXeDY0WFBpTEJqVTJRQUFSVy9hSmMzTjRxL0plZnYzaisrLy9SQjRyOEI5OEI5MmxWMS85MWZnNXdldFV6S1I0bFFRL1hIejUyMERpVDZ6ZUh3ZjVQN0JaQzhheno1a1dYV0k3L0pqcDIwOUdSYUYva1RwL0FqVit6VG5ES3M2RjJEZno1dHVmVHovLy9vTWM1a1ZTbysvZmZ3MWg5aVJkQWN6aDNQL2Z2Lzk3OU96ZmkxY016RFE3WE9EL2YwWm1abVlkZFVZK1hqcW45SDlZRDZvRWpUL1RxZlVCY2dENm5qYnc0WlFVR3dJK1FIRVFqL2Y5dytic0FaK2ZBUWMrRmxjUjV5d1RDZGFkZHhpUnRRTjd0ZWRmL3JqeDlyT0dNQ0p0UC8vNjgrMTNCaTZtLy9DSkRtQ3Z5MWlTdzBDQzhCdzNlTXZkZjJCNzhSL0tuamFhTEl3RUNDQVMxcmc0S0Fpc3UvbnAxTk52eE05VkFmMSs0UDYzRVBYdlJxQWluNEdYalMxVWsrLzZtL2ZpUEgrY0ZYNURTcUpubnhsNmo3RWVmOEw4K2dlTEtPZmZDSU5mOGZwL3hIbitQL3JJK080SHB6eFN1Ky8xMTc5ZmZrTU9zU1FoQllFV1M3T3doR3J6QzNGaFRERDkrZjNud3RVL3U0LzkrL2FkZ1haSEFQOERuUi9BenNYQnJLM093TXBLeCt6M0h6dytnTjRlK1VldlZjSFFJNWN4R2tRa05UenhHREtZeC9zZzdXdE1adzkwMFVlUnEzelZoS2FlKy9qbHgyOG1wREcvQng5K2JiL3pFVjcyL2ZyN2I4WFZkNkNWTGFqbkY2Z0tjd2h4Y2hEandyL2dvRU5ia0UrTHNnOGdnRWdvK3poWW1OT05SQjU5ZlA3NjIxOGlDd3BHUnNiUHYvK3R1dm5lVUlvSDB0WndVQkE4L2V6bnZvZi90OS81WXlMMWIra1Y1clZYbVo5OVplSmpad2pTK0oxczhFdE5HQnBpTjk0eUdVaUtDSE1oQ291WFgzNS8rZldmMU1Pc3Z2OWxNSlJtZDFQRWNyblV2N2Z2L3g0KzkvL1hiMFlpWW9XeTd0L2ZQL3RQTXdud015ckkwaStoLzhjeWpQMlhqbjFlblBmT2tGajQvc2VZbjRFY05UeVk5N1RoV2trM3NIdFJjTTExL0NYdWpCbEpIbFpyYWJiMU4zOXpzYURFeGIxM1AwRVhPb0ZuZTU5Ly9YN3hKYkEvOXg5NWhsZVFuZEZOa1pza0Z6S2l1cENSQnVFR0VFQ2s3V2t6a3VCeFYrS1pmL0U5QzlFbEVDc2p3ODY3WDcyVVAwQU9PK1JoWTBrM0ZuMzM0KytFVTMrWUdQNC8rTWpJeWNib3FQZ25VZStQbFF5a3FnQVp2UGNlMCs2NzNCa215QzIxZitkZmZ2NzIrejhQS3drZEIyQ2pqNDJKSVZxSG53dWp3ZlgveisrL1p5NzkrL3dGMU9LajlUVUtqSXgvbjcvOGUva21pNHdFQXd1ZG1uNy93VGQvRHVoY0IrTS9qTlBleWJtakVzZGN4NkRlei9zUHE3TVovdy93K1gza3ozV0FDZ3NtWm1zNXZqVTN2dno5aHpUYnk4aTQ4OEczazArL1draURtaGU3NzN6NjhQMDNLOUllM3QvL0dFUzVtQ3hrK0ltc0wvOWkzRTBPTW9yeEw5VXZMUUFJSUNZU3N6QmpnQWEvc2lEYlQvRCtWV0xRZjBhR1gzLyt6VC8vOXVrbjZNb21LVjcyR2h0SlMybitKNStaZ1dWWmdPclBUcWMvMXJLZ3dZRy8veG52dkdQSzJzNld0WjFWbUl0WEdlbGsxeGRmZmw5NjlRZlkyeWJTWGhoaWRGTG1zNWZGRXU3L0hqNzlkK3Nodys5ZjBQTWxhSTNZV1A2Y3UvcnZ6a042ZG5EK005RHBTQXc4eFJhbERvQnRqQnRZajVBVCtJUFB6WlM3eWxTU1U0R2Y1ZWZmLzRoalhSZ1lQM3ovZi9zdDVIeWEvM3NmZlAvOTV4K3l5Y0MwcnlYS3lVN2NlRHF1QkVPTG95c0FBb2prOC9zVUJiZ0QxZmw2VHJ6NVEvUmhvc3lNREVlZi9HZzUvTExYVFphTEZSUUU0anhzRGZhU2RuSmNjeSs4MjNhTCtjYmJQNzVxZnpTRS8yMjZ4Yno1TnV2SDc0ekMzRXpSdWlnRjFyRW5INTU4QWpZVkdZamZFUVdzY0NSNFdIS05oYkZNY1h6KzlHZm40Yi9QWGpHd3NvRFhqRE5pSDRobVpnSWZYa0dkWVAvMzdjZmZjMWNaSkVTQm5WLzZKUFEvb1BzNk1NN3ZvMVByNHo5a2pkdGZ6QjdXZjlKT3pJZGNyL04vU1BWNVFYZFhZZmo5NzcvL0EzNld3UjlNVjVHeVkweExoRnRMblBmVzIzZklZLzYvLy81ZmZlTkRySjdFcWFlZlRqLy95c2pFQUwvMkhsZ01jckV3SmhpZzNGTkd3SVgvMEsvUWhvVWtsVWZrQVFLSW5MTkx2VlNGTnQ3K2RQN0ZEeTZpSnozWW1CbDMzUHZNdFB0eHQ2c001R3dDWUxuaXBDaGtKY3QvOHVtbk5kYy9iNzMxZC83WGI3ZmVnUTV4K2ZIdlg2aTJnQ3dmRjFMZy90dDk5OXV6ejcrNTJKZzRtRUhOVDBiQ09ROVU5Z1ZxOE12elk4d3UvZnZ6NStxdFAvY2ZNekF4UTRzOFlOTlVtSU5abEpkRmhJTlJnT00vc0Z4LzgvM2YyNS8vWG56Ky8rTVBJeHNMdGRMZTcxTVhHUVY0bWJ5YzZOUG0rdmNQZmJ3UDJzRmhwRS8rQitkMjdHdWJpZDRkaEJnNFF5LzdCbk92OXkvV3RjME1BN3pHQmJLWm1ySlJTRVp0WVpadHpPRFRaQmtSTFlUcnIzKy9BdWJmOTM5ZWZ2bk55Y0tFdklkWFg0eFZVWUQ0YXhHaFZTUGFlTjlmR3R5MUNoQkE1T1JxRVM3V0JBUGhCd2RlZlAyRnZnSWJEK0JnWWR4ODU5TmZob2VOZGxMaXNNTmRPRmlZN2VVRmdlanYvNy9YWG4rOTlPTDdqTFB2V05sWWZGVlE3aGphY1BQTnhWYy9mZFY0ZnZ6NWUrSEZMOUF4NVl3TUxLQ2IxbkN1MWdBMnk1VkZPS08wc2F4citmZnUvZDhqNTRBRktnTWJFNUJrNUdKak5wSmdkVkZrRWtHZkQvbDkrZW52UXcvKzMvc0VPcStGR3VVRk1MeitYcm5OcEtQR0pDZERuMDd2ZjR3cWdWN2JPaGloQjNBUWR5c1k0WjRhMnJnVmVFUnpNSGQ2LzJPZW1ETGdqVldzOTdUOUkyMFNOZHRZZU5uVkQwOC9JQlk1QTh1QTk5Ly9sdTk5OVBFWEV3dTRSSUJZQWQ1Mi9kOWNsaGY1TUNjaXhuYi9vNTByL3A4MjEwd0RCQkNaTFJwUEpZRUQ5eit1dS9HRm5aUWlBVmdoN0xyejdkV1hKN2xtd280S2dzaWxFak1qczY0WUh5c3o4Njh6YndOVmVOU0VFQk92WDMvL1B2TDRxeGd2NndSMzZmLy9nUjNrSDVkZmZkcCs1L1B0dDMvZS9makx4c1RJak5IM2hpd3RUTmJuRStiQ21NRDk5eGRZOFAxNytRNVlXekgrL01QQXg4NFdvc21pTHcxdFpLQUNWbDFaRmxXeDN6dHUvam44bURxTmJpYW1QNCtmczF5OXd5QXJ5Y0RJVE91aUQzUC9BejFYQmVQYU9VL3ExVE5ZSnczK01RejJ0YzA0WmhVR2ZHMHpocXNnQjFzUmJRZ1BHNXVxSU5PRDk0eG8xNSt1dXY0VjJCTGhZR2FDbXcrTWFENTJSbHRaTGpMU0ROcGN4ODkvMUc4eUF3UVFtV1Vmc0hTUDF4Yys5UEQ3Mis5L1dVaFpHY2ZNekhqMnhZK01yYytjRmQ1RjZZcHFpM0hCVDdULysrL3Y0a3V2T1ZoWndqUlJoc01PUFBpdzgvNzNDaXNSYmxiUXRLK0pKQThRSmVqOU8vSHM0NFliSDlmZStQenJMd05hNS92dlB3WXJPVzQvakFzcVFRTVExMjcrMm5jTTJOc0ZYU2ZIemNvV3BjMnNLUTN0am1BQmZ4ZzUyTmo4dGY3OSt2M242R05HWUIrWjh1S1BtZm4zL2hNTXdnTE1aZ1kwVGVqTURGZ3VSWVNjWlVDLy9QOFArNzRPRXJNclpwOFgxTzRiMkROUkNJNTFZdDNYTWJESEwyRGRaZnp2SCtiRlNuaXJiMGJHYUczaHJiZWVzcktpYUdFSHQvaVFJeGZZL3RBUzVYQldKR0YwRzdLZjl4OXF3dy9vN04vL3FGOXJBQVFRK1NOWmVtSzh2dW84czg5OVlHUWdMVVpabVVBRHJwdHVmZDE2NTV1ZEhLZUhDcitHQ0x1Qk9OZXp6eiszM1A0SzdOaktJSTMwL2Z6N2UvR2xkOEpjektHYXdpZ2RLa1ltUzJsQll3a0JSNFYzY3krOE9mcjRCN0RDZ1JUQ29PRlZWdVlpY3hGT0Z2U0cxZjl2WC80Y09RdTVZWTN4M3o4V0J3Vm1UU2tHQnZ6YnkvOHlNREp4ZUdsL2YvYjEvKzIzLzFtcGtOLytmdnJDZVBnMGs3WWFJemNOcjlxQnBITDBkdDgvT3A3MkRqa3pCdnVoK2Y5Sk1RVExHVlpBdk9MeTU5dXYvLy82UzcrV0ZMQ1dGZU5oU2pJVTVtVm5JNmF0aXVac1lQbzg4L3hYKytIbnYyaDJZOUh2Znd5NmtteWhtaUk0RjZGUlk0dTN0aWkzTEQvVHM4L0FYaGMrWlVCZkdvaXpzekt4a3BKb29aMFY1RTR1S01IUTRMUnhnQUNpWkJTZk1VSkw1UGpqNzVkZS9XUmpKcms2WXdVUGlPNTk4TzNBbysvQWhqRS9Pek13RWYvNSt6OVNHNldNMjNEajdZNzczeWE2U1hLell1a2hBdTMxVUJZMmsrSXUzdjEwMTcydlFDNHd4SDc4WllqUTVqR1R3and0NS8vZks3Zi8zWGdBTGxQL01DcnlzOWpKRTFmZC9XUGc0V0N4a1AzOTZBUGpiMm8wbTFoWi90MTk4dS9ZR1daWE81cDN1ekRURnYxYUdReVVYeGp5SDBmbVpHUUFWcDlmMXQ3NFJOK0dFNk1RTjRPWEdnOTVaUjh3QlY5OC92UGs0NmMwZE9Idi8ySDZQQ0dhd2xnSGFNQ25TSkMvdmc4T05FUTQ3QlI0NTU5NXg4TEJoQ2NFT0puL0ordUxrRmhoUTI4eFJwM25CUWxTdmNVTUVFQVV6V0NxQ1hONXEvSGNlQXZhWkV2R2xqQkdjT0VGOU9mSEgvL2ZmZi85NVRkRHBvbVF0aWlpS2ZUOHk0OGxseit3TURCdHUvWHgrNi8vSWx3Y3dISkhYNHhOVFpnVGVWTzBFQ2RIdjV0OHpmNUh3UDR2MEJsQVpaa21JcGk3cHYrOWVmdm44Sm4vWDc4eHNMT0IxbVlyQ3dIN3MwUnZsdm5Mb2lQMmV4Y2I0L092LzVtcEVBdi8vdjc1Yy9ZcWc3WUtzNVFVN1RvNGYvLy9ZOExTNTZYUFhBZjQ1a09LejIyRzlkUVlNQjNOeXNMQVN0OVRlZjR5TUxHeUVGVlVZTzFkTW9DblJMbllhT2ptNzB6L09WaHhGaFBnVU1TMnIrTS9xUmRBTWxsSmN5NjlCT3BqNGNyNHdLYU1wQUN6Q0RjN3FYRU5kdUYvdEhsZVdpUlpnQUNpZFBWR3ZLN1l3ZnRmRGo3K3dVNUJpUURlVzg4b3hNbG9LYzJOWEdidHZmdisxTlB2SEt6TWV4LytXSHZ6dXdqSFAyMngvNXdzYkNKYzNLYlNuQkZhUXNLd0xib0NIQ3kxZGhKUHYvemVjZjlucFMyL1BEL21CcHIvZjQ2ZC9Ydi84WDhXNXY5Ly96S3pzakxwU3BCVzQvTndNSWx5L1gzMkNWU2VVR0UwanVuM2pidXNHL2N4Wk1iUXN0dUxyZDMzano1OVhrYkkvVUk0enJBaXFlTThXSTVveGxZQzR3eDVob0Z3TnY1cDlQKzQrN3lrdWpSQ1M2RDkyTHNINzc1anpmaWdGV1ovR1dKMGhPWDRTZHN0Q3A2K1I1L0dvbEVDQUFnZ1NzcytYbmJXTkdQaFV5K2Vmdi85bjVLaDV4OS8vcHRKY3dlcUl3NVZmdlB0MTRMTDcvLzhaL3ozK3o4d0hQM1ZHRktOR2R3VUdWNTgrWG5nNGMrdHQ1aVhYbmxmWkNFU29nRnQ0b2x6YytXYWlIejcvU3BBVlJCTGpYM3Z3ZTlkUi8vLy9BV2FiUUgyREg3L1poZUUzSmxDUXFBeWlvSDcwWCtwMVA1bVpmMTU3UTc3NVd0TXVsbzBLdmhBWjFneFlLNXRwbDgyWk1DMnRwbnBQMm5GTC9nc0xJYkJNS3Y3RjN3YUt6RU5wTC9nQVBoTGZ5Zi8vLzhiOTZ3QXBGWDFGMlBkMDEvUzV4RjQyRGhrZUZudXZmbjNGOXN5TjJCN2tJK053VUthNU9GczhKRXQ2Tzc1QzU3YW92cXhQUUFCUklWVnU0NEtnaDdLbjFaYytjaE13VHdBMEs5UzNDeklqYjVUeno2Y2ZmSDcxMThtUGRGL3VTYi9BelgvY1lMSFRLVjRHVTBsR2ZmYyszdmo1ZmVzN2MrdnZmNVpaQzdKQTE1K2JDTEZQOTJMUTRZUHZabjkvOGVQUC90T01IejdBYm93R0p6dlNGaVhpTlpMaDJSYnFzUUNJOE8vajUvL0hqck5wS1ZPaXhPME1KZkZRUW9rOFBrdWRPbjAvbU5nd0haWEdZbk52djlZUFRJdzdUNmlIUS9wcFEzQWdwYi8rSlk5L21mQTVpcHkzVmxtSVh6b3dWZXNOeDM5Kzh1Z0tjbHVJODlEdXZQL1kwMHp0S2hGQUFLSUNtVWZDeE56aHBISXljZGZIMzc2dzBadXo1ZUppY2xQSGZsNHUvK0xMbi9rWWYxYllNdVlvUHRQR0ZaL1BQN0VNUFUwMCtycmpDKy9NckV5L2YveCsrK0NTKy8vL2Z2WFlDOExOSU9QblFXSXNGVEMxMi8rdlh3YjJOV0ZIRlFGclAxWUdCbi9mL3pHSU1aSFdxWDA0dlAvUDJCRHFCUVQvOW1ZLzV5N3puVGlITE8xS2ZVYktlRDl6TC8vL1VPWmhnY3R4MmRoWjZYSE1Oa2ZvUFYvUVFzZE1CTXlTVGNmL1B6RDhQY3ZlUFJ3RUpSK1AvOFFWVkQ4QVIvRzlKditpM0QrTU9DWlF3WWZFUXpxUmFFbWxQOS95S29MOWNWNUJEbi92LytLclVIMjk1K2xERGRrVVJwcHp2OEhjU0Y2WndFYzdGUk9BQUFCUkozZFdvWVNmRjdLM05QT2YvcERWbmNRMkEvaVpHZlNFVU9VZlRmZWZIbjAvdnVxb1ArV3NsQVBmLzdGTU9NTTAveUxqUGMvZ3E3Y1pRUWRqTU5VWWlYaXBNaFhzZXRwLzRrWGhSYllKdzMrdlgzNys4aTVmNi9mTW5Dd1E0WU5HRUZUNW4vL1huek9yQ3BPZkNQdC83ZWZETTgvTS82bGNsMys5OCt2UDRkUE02b3FNSW1KVWpkcU9Wa1loRGovY2FEV1JqLysvSmZoWjFRVTRLSkROaFRtWk9iaCs4L0x5b2k2Vm92eE44TmY0c3RlTm1ZbUJRSEdsMS8rc2c2Q3hYeS8vdjJUNG1QbUpIeDBPU01uNDA5KzN2L2NyUFJlenZmOTczOWhUcHlXc2pFeHNISC9GK1ZDTENBQnJZdjRBMHduNUxoVGhvOHRXcGQzL3ZuM0F1eE1hTU56Ykt4TVNZWkNaSmpKd2Z5UG5lZS9NQ2Q2Z1NqT1RmMTVYb0FBWXFUV2tzSG5YNzRIckx4ejVmVnZNaVk5L29MdWNHSStucVFwd1FOZENyVG80cXRGbHg3dWlZV3NsbVJZY29seDZobkdpeTlCL3Yvei81OGtENHVMQWsrVG81UVVMeWV3RVhiNzdaZndkUS9hSEdVOVZMQ3Nvdnk1ZGUrZmRidi8vL21OM1B4aC9QbjN2NFlZZDdVTEkyZ05JREVod1BybnpQMmZzNCtEQ2c5R3JIM0wvNUNqOFJsSVhlNzRuNEhwNnpkMmYyZW0yR0RxeHU3blgzOWVmLzJOdHVrRnREMkk4YjhVTDdEbFIvT3k1T1BQMysrKy84RmNhUGJuNzM5cFBqWU9GbWJpMHNhL0YxOSsvMFkrTlduZ0FPaDJiV1lHQ1I1MlFrZTQvWC8wRVpqQ2FIZ2VMdTYrOW44ZVZtWVJidXhMY0Q3KytQUG0rMiswelFqQWxnY1BHN01JRnhzak9WSDg1ODAzZEFNaCtVQ0dsNTJKOUNqNzhPUFB1KzhZaVJhOEtGaUtoNTI2YVFBZ2dLaTFTNTlCa29jenowdzBhL3V6My84WlNDMzlnS21Fa3cwMC9ROEg5ei8rRnVjQm1iTG4vditlWTB4SEhqUCsrZ2RzQW9EbURnUFUrTW90eFEwa0VOMVZEbFptSlg0bWZuWXN0djU5OHVUM3RnUC92MzRGMWtUSW93ai9tUm1ZN3I3NWMrQTJxNHNXWkdBYWY0LzgvNDl2di9mZSt2L3hCK2c0d1ArSUl1Ly9iOURlS2taZ0U0dVRGUlRod01iNmw1L0FmakVUMERvbUppSVhZUHhsWS8xNTlEeTdtVDZ6dWdvVm81YVhqWVdYYXFjd2tBUDQyVm1CaUVKRG1CbVpwSG5aR1lZWVlDUjFmcE5PTWNMQkFrUlVqV0lXZm5acUdpakF3U0xBUWFkRUN4QkExTFFtUkV0NDZjVjN1eDU4NHlLMWZ3SmE0dmNQZWREaDU1OS9qejR3eEt4ajJIcVg4Zk5QWUZyNkIrem42b215VjFoTGU2cndzOEptQm43Ly9UdnZ3b3RKcDkrRmEvRmJ5dkpoOWlmLzdEbjYvLzBuMEV3Q3hvakcvMTkvZm0yNHpLZ293cUlzQ2V6TjRFbkhJQVFzbUFVNS92Lzl3L0NIQlZURy9mb0RPbTZRajRQVlRKTFZYSjVKZ0lNQldNb0FSWUJObWg5Ly90NTcrK2ZvdlQvUFBqQisvOGZJeWt5NDltZGkrdmZtM2IvRHA2bGI5bzJDVVRBSzhBQ0FBS0ptMmNmT3pGcGlMWDdxK2FNdmYwaGIvd3Rza0gzOHpmZ2JhWXdXZkg0QkE3QzVCeXh6L3Y3N2F5REptV0lnbkdVaXpnaTdsdnpuM3o4Nzc3enJQdnI2eE5OdjZtSmNaZFpZQnZ2K1hMenk1OHhWaGwrL3NONlNBZXE2UHZ2MGErSitobng3Y1BHSDlVSVVsdjgvZmpPeUFJc3dOczQwNngvLy8vM2VkUk5ZakRKSjhMRjdhYkU0cUREeGNESXdzc0RhZ2RDeWtrVkhsdDFYKysvZE43L1dYdng3NGVuL242QmJxdkRQcGYxbllmNjk5emlqdkJTTHEvMW9vaHdGbzRBT0FDQ0FxTnk4ZEZJVThsZDdOLy9TSitLdnNvUTE5UDQvK3ZoVmpvOE4zbDBDRnlQL0pYZ1pNb3pGVWd6RWtJL0JPZmI0US8rcEYxdHVmZjM1bCtIL1A2WW1PekVPWm5TUC9Idi8vdmZKUy8rZVBHZGdaOGQxSlAxL1ZzYS9UejkrYjkzRjVxL0Q1cWpPeUllK0l2cnZvMWUvMWx4Z0V1RmhpekpsWkdIbFNMSUd1ZW5UTi9ZWU15WkpZVmh4K1J0Ylk1R0pXVVdDczB3VTJLMyt2dXowL3pkZkNSNEMrUGY3anovYkR6R1o2ak1KQ0l5bXkxRXdDbWdOQUFLSTZsMXJ4bUpyeWQwUHZqeisrSmVObE9Mdno5OC9LNis4czVHRkxrdm1adnNQN0tkR2FQTFdPMGlyQ3NHTHBQLzNQdnhvT1BCNDA2M1BINy85WTJaaCt2L3JYN0NlUUpBbWxobWx2NmN2L1QxNm5nRllKdUtmdjJkaS9QL3UrNitGcC85c3U4NmtLYzVxbzh6QXp3RmErMzczOWE4ajkvOC8rdkQvQStnUzlYOC9mbkVrV2pHeXNyTW5XSUtPbmdMZHVmR0hRRGNlZkFnQ2k2TTJweGozdDBrSEdWNStZV0RGTjdyL240MzE3NTNILzNjZllRajFHVTJYbzJBVTBCb0FCQkQxaHhXMVJIaXlUSVFyZDcvODg1ZVVhWm0vLzg4K1J3eTZLUXF3Uy9Bd0ZWcUt3d3UrRjErK1R6M3plc3FwMXgrK2dkWVRNYkV3L2YzM241T2RPY1ZBQkx4SkhMWFI5K0xGNzAxNy83Ly9DRjdYUW1ESExpUDRzS2QvTHo3OWUvN3g1NzViL3hsQVo0OHdNWUlucVlBK1lHUDYvKy8vN3kxWGdRSWM4UmFNb0FicGZ5S21SNkFPWVdENHhhSXR6NTNyOEdQaWZtRHJEOCsyWjZERVgwYUdYN3VPc3B2ck1zbkpENVVFOVBmdkwyWm1GZ2F5OXRYKysvZUhFUlRPeE9qOS8vZnZiMlptdGhHU0xUOStmUC9wMHdkWldRV0dRWHdITWRiRXdNakl6TVRFVEo1ZUptQXJnNUYrczNNQUFjVGMwTkJBZFVQMXhEblczM3ovNXZOdjhGbU5SQUdnd3RjL2ZodEtzS3VCMXpHTGN6TlBPUEZLZ0ozTlFZSHYyKy9mazA0K3k5ejZhT09WanovK1FvNXdCV3Y1K3ovVlZDamZITXRJMzY4MTIvNmN2Z0tkWk1CMU93dmFUUzJNb0RZZ0V3UXhNNFB5STJUQkNuZ1JFT3Z2Zjh3OEhJd1dDdUN1SzZtcmd2NHhpUW4vWjJmOGQrNHhzSDJMeDBtZ3V1TDlKeVl1RG1ZRGJRb1QvWk9uRDIvZHVpSWxKUWZoM3J4MTdlMmI1eUlpNHBjdW5mbisvWXVBZ0RDMTRuclduR21jSEd4aVlwSndrWWVQN3QyOWN3MXVOUjZ3ZHQweVppWkdvS3NnM0V1WHpzNmFNK3ZhdGNzSER1ejcrL2Vudkx3U1hPWFRwdy9iMmxwY1hWMGZQcngzKy9aMWFXbGt3LzhmT2JxWGg0ZUhrNU9iSkpkZnUzYis4NWN2Z29MQ2c2MEVlZmpnYm0xOU5UOC9sN3FhRGpIcU4yeGNlK255UlcxdFhWaU44cmU3cDB0SVNFQlVWSXpPTGwrNGFPSFhyNS9sNVJUSTBMdGt5WUtYTDUrcXFHalF6YlVBQVVTVFVwYVBuWDF4b095Wlo5K0luL0VBS3Z6eTZ4LzhvQ29STHM2WlByTGNySXgvLy84OStQQTlHL1AvZkRNUmRxUlZzb3pnczZwaTlMQXNUdjU5OGZMdkV4Zi8vL3dKbXVJZ2MvVWkraDB6ZndYWVdRTjFtVURIN1pGM2tOZ2ZObWVOMzVlZk1PeTU5Ui92bW9DL3pFeS8xdTlqVXBSbnRyZWdKQW9lM0w5Lzh0UlJFeE1iQ1BmS2xjdS8vM3hUVjlmNzhnWFloYWZteXI1alI0OXBhMnFpdEZrK2ZIeno5ajB4ZXA4K2ZTb25pOGduRnk2ZVkyZGpEUWtPK3ZMMWl3QS95ampHejE4L0wxKzVDanFBOGZ1UHQrOUFocjk2OWVMcjEwK0tpbXBBOXN1WGIxV1VmNUxxOG5QblRndUxTQ3NwcWc2MnNtL1B2aDIrUHY2K1BnRkVxbCszZHYzVmE1ZThQTjE1ZUVDQmR2MzY1YW5USmt0SVNHaHE2dERaNVk4ZVBSSGc1eU5YNzJOQzQwaFVCZ0FCYUx1Mm5qU0NNS3F5QzdzVmhIcXBLUlpzSWsxZFJMemdBa3RiUUt1MldtT3J0RTEvUmRPKzI5K2tKTVVyUzRvUkVGRXVLaUNORWFnQ0RSSzhvN0N3ZEZaRis5UTAxVTdtWlRLWmIyZm1TODQ1dXp1VDg3OFVKaTZzQnZVbUVRellKYTROU082Vi9mWFpEM3IvZ0ZyMDBwRWRCdmh1eVhXM0lrdEIwa2FvVFhRRGQzaTZIR0lqeng2ZHVhSmw1LzdxZjRLL2t4UEtaS2xReXNwUjdqL1BtWGxaWjEvLzNZWllFRTB6dkNLUlNCRGs0dWhaMGVGWThQcFdkVHF0RkdzOVBjMGM3S2NBMDhUalAvRXV3bW8xQjBNYjdlM3RhdVhUWXBFR2hNem44MWRXbG5GY3plSGNjYmtjUzY1bFdVdUxUdGNEb3UwZnBFbHllamVWR2gxNXkyWWpZbkZqYmUzbGQ5dDQ0Z2RKa25rcWJ6QVl1RnplckhrbUVvbnF0RnFzbVJFcE1BU3pmcnZJaktKSVo0ZWlycTZocm5URHBWZ3NURTZhQUJSeXVRam9CUks4UVNnVUNQaEZPdmZwODhlanc4T3hMMk1xcFFaWGRBa0UxUlNWVFNialZENVBXaXd5YVl0S2RZbjdhMnRlbTkxT3FGWDE5YlVJeXJ0QzFZcnpjazEzeFlMRHVlRHpyclhKV3pVYUxkaENzR3FRdUVBZ3NCMkx2UjUrdzY5aUJtYXptWEhqQk5oYmpWcWR5K1hFNHFidG5TMFdDeGJlWjF6bk56ZUJKbjJJb3FoMTNod01odVJ5bVliUWxWU3QyMlozNlBWYUZFRnFhdXA1dktxenM4eUVjYnhRS0F5OUd1S1haclh1OXhtTkpvSlFZOUxIa2lac0krVC9acldLUmFLKzNoY3d6TTVrRHRPZzdPMXhPUENWS3F6a1ZsWnl5MmZueU5HUmQ2QkpXdVkrdk5jZkhUR21rZWwweWt6T0hCK2Y5UFgyaTBvMDQzRE1lN3crckJucjd1N2RDSzdmcmFuMisxZWZhUFFRQkUzUG1HS3hSRStQWHRMRTZLOXcrRHVDY0Jac05pQ3JCMTRPcjdpZGJvOW5jR0N3NFZ6VTUvTVVTYzZHbzFFTlFjaGJPNWlFd2pBSWN2R1VPZlAwVmpqeXZGdC9JZVZBZHV4MnF6OFFVaXJ4emc1ODBXbkRGVXFZamFSU3llUnVRb3ExZ2RWZGpYVXUyZDF1ajBMUnFjUUowRXdrWWxOVFh4K0lSUDE5ZzdlSVViOEUwS0E5OVp0TThQdjhwVDk3VDRDVzJvRk9hNmNHK3Z1WGladU54VXVIQWRRTnBtUVB6QjhXTTNrR0RRbFF0eGV2amY4NTJQNmV2LzUvM3pGS3dvR2RnKzNjK1VzN2QyMDdmUGpBcVZQSERoNDY5QWU4ejNQbnp1M25MNXdCZDVSV1hiMTZRRUgrOTdUcFhkZXZYd0ltMnRMeWtwa3pwM0Z6Y2Z6OCtWVklXTURYeCtmZ2diM256cDFrWkdTYXYyQnVSbmI2OXg5ZjJkazVaOHljTW5scU93Zm42MCtmTDcxNGNlRGQyMmZyMTI4VkV1YS9mT1ZTLzhRZW9Nbjc5dStlUFdjNmtISGk1SkgyampZNU9XazlmVzFtSnFZZlA3N0x5OHA0ZVhvc1dyVGcxS2tqV09MdTErLzlCL2FmT25YaThPR0RiOSsrQm9wTW1OaXpmdjM4Zi84ZVRwc3g4ZlBucjR5TXJJY083Wjh5WlRJakV4cy92OENqeHcrZVB6dDE1KzcyL09Lc3gwOGVBVXVsbUppWWZmdDJhMmxxTEY2eWNNK2U3VUFUOWgvWVhWdGZ5c254YXRIaWlZSEJJZS9BeG1JRnYzNytGQlRnRHc0S1BIbnk2TWFOcTRBaU0yZE96Y3pJQUpZeXYzNStiMnFxLy9uajI1Ky92NHRLQ3MrZjNmbmwwNDJRME1EVmExYUR5cHE5dTQ0ZVBRTHI5QzE0OGZJRk1KMklDQXY1Ky9rQWE1ZHQyemVBbW5KN2RqUTBWdkx4dlY4d2YwSkNVdEszYjZDQ3FidTc1ZC9mKy8vL1AyaHZiL2o4K1FPMElPTUNsbzNzd3NJQ010SlNCdy91YjJnb0ZSTDRlUERnMnJ5QzNILy8vcjE1OHpvb09PVEk0ZjE4dklnTm9QejhQTjVlTGxldlhBU3kzN3g5L2ZidGN4MWQzZTgvUUZaOC8vNWRSMXZMMXRaNndzVGV1M2Z2Z0N6dDZWcXpkajRuNTV0WHI4KytlM2NrdnlpcnRhMzF6NTlmek15TWpZMjF4NDV0NHVkL1gxRlp0QnNjZXZNWHpPdnA3VktRbDkyL2YzOUdac3Jueis5RlJRUUxDZ3MrZndZZEdWdFZYWEh1M0M0aHdZODF0VVVyVmk2SDljZEFvTCsvNS9LbG5hb3EvN3A3bXUvZXZRa1VxYTZwdkhyMWlxMk5KVEJrUG4zNjNOelMrZ25zNWN1WEx5NWNOSThCYVRQVW9pWHpUcHpZcXF2RHRudlAydDE3ZG4vOCtMRzVwZDdFMUZoRFE1MjZaUVZBQUxFTXA0THYzN3UzdjlmdFpuajlqb0dUZzFvbmZqSCsvZmVmbjVOWldaVGkweFAvTXpBeXM2aUkvRG56RUhRb0R5Tys3ait3NmY5Ny9UNVdReDBtY2s4MkJUYjBYcjk2Yyt6b0NYWjJEbUJ0Zk9mT1BYTXpJL0NJOGw5R0JrWmdJbDY1Y3JtbHBSSXJxOUR6WjQ4MmI5NVVXS2pPeHk4UUVoeWxwUVdxd0ZWVnRBOGRPblRuenNPMzcxWWFHWm4vL2ZQUFVOL0UxY1gzMXUzcmh3L3ZhbXROazVjSE5pTCtBeXZ0UDMvL0pDYkVHeHBZU2trcXpwOC9IZGlXZ1Z4SC9mZnZ6N1ZyVjhYRkpwaWFJRHJ2Y25KS2UvZnVmL2YrRTdpQXdBaWcvLyt2WGJ2SnkzUGcxKytmRXBKaTM3NS91M0x0WEVORGhxeU1DakJNWnMvWkNhcEEvdjc5L3YwSGtHRnRiZlg1MCtPQUFKY25UNTRBc3dkb2k4MnYzOEFtWVVod0JCK2YwSlBIVDRCZGZoY1h6L1ViMW9TRzJrZEhodCs4ZWZudXZlYy9mdjdDWFZ0d3FhbHFIVHgwK095NUs4Q1dwcjkvK0xjZjMzMzlmYTJzbkl5TnJhWk43M3YyL05uako0OGZQYnkyZkZrWEQ0L0E5Kzlmbno3L0NtNysvUG4zRjlvaCtQTDFLNUFMakVOMWRkMDllL2E4ZS9mNXpObHpYcDRCdlgyOTJkayt3UGFkc2ZINVczZWVBTnVKdTNmdlBIQm90NzUrK0xmdlA4K2RQd2tzN3IyOC9JRW1BSHZ4TnJiQWhwUU5Cd2YvL0lWejR1TTlQRDI4dmJ4ZUJJZVdybHE5d3NIZVZrbFJNVFVsQzloaWdydWNsNGZIMXlkMCs0NE45KzdkdmYvZ3JvbUpqYmlZOUsxYm9ESlhXbG9XNko2elo4L2Z2Ly8wN2J1WFg3NTgzcmR2MjVKRmRjSWlZcUFCaEs4ZlBuejRhR05sNCticWQrSENoY3RYVGk1ZDBzYkZKUWdzQitjdldPanE0Z2xzbFZ1WVc1dWEydjc2eFZSZVVXeG8wQU9zY2xhczJQRDh4Wk5uei81ZnYzWisvZm9PRmhaQlhtNnV5VlBtUllSSEF0VnpjWE5mdVhKcHc0YTFHWm5ldjM3OWVmN2k0ZndGaTJOaklsKytlTlhWMlFkeDhOdDM3NENSQlRtYjRPKy9mNzkvLzRIMVZVQk5zUlhMVjNtNGF3Smo2dFBINStzM3JETTJObnowK0JuUUtEbFpaZW9XRndBQnVMdVczaVNpS013OG1JRmhwdTNBek1BVUJCMEt4S1N0Tm9XbzBZVWJGL3lCTGpWeFkyeTcwMTlnOERjWUYzMXNkS00yZG1OYVdSa2pPNHd1dWlGQks1QW9UWVR5bUFjTWREejNVaU1MYll6cHlsbk5uVWxPY3U4NTl6dm5PK2MrL2l2c0d4WS9PdVVxdm03OGRJNzNCK1ZRQTRlYW5qeDVlY3JmQXlrMUl3OXB3akhza3pkN29CMGk1WDNpL1I3enI5aW42MFkyZTJObCtkNm9tVXJGKzdhT0paTWtSWUhmYmpRT0ZXWGU2Z2xMUzdmVGk1ZmFuVTRxcVVXamlNdVVTbnZyRzQ4MWJhTFRyaENZNWdNU1hieVFocGRtNDFDV3AxUlZ3VHRoS0FJL2JyeDBIR2lSckVpV1paRUVTVk1VK1BaNFBCYlhmdGxyb2ZCMlovZmwyUmpYYk80UEJyOVJFTU82VjVidkFHQ05tdThLYi9SdWEwTGd3QkY0T1VCd1pLdW9Lb3lKS2t4cG5NczlJbEJwaWtLQnZzdUJjSW5qT0N5S1lWbkdOTHM5eTV5ZlM0QUVDSTdVb0RRYy9ORXdBRFdlUE4yUS9BN25NOTM0QUJLdmg1M0N0OGpUYmxvUWVIQWJCL1Y2U0Ezd3ZBOU1JeEpSNndmZmYzTG5ZL09RWlpuMzhlVnlhVzM5VWZTTXQ5K3ZFUVRpd2o0Zm0wckdYQzRyRUpqMGl5Z2pWcTFXSXRPYXg1dDBYT2JxNnYxME9qTlc4VVFIWmhpR3FldHRSUW5DVUFQbG45SENsUzgxNE5xSlZHSWMrSEFPMUF4SXNsOVU4L2xYL29CdzVmTDFXdTByUUFyODI5N2UydGw5ZHUzcWVkUDg1cWFaWXZGRHoyb0hKR21rUHZERzBCZWdsaWhMMjJxSm9zQnhQTkQ2dUJZeERFUTdQSWllby9RRnk3THB4UVVmdmw0R1JyN2ZzejU5cm5RTmc2YTkwS21RS2tFUTErdjFTWkpnR0FZY0dBV0lLTTdhdG4zcjV0MjUyWVY4L25Vb0ZCeWZWMGVPTTBwM1VDUkZIK2M5MEJmRGJOdURRVGljQWRtWlRGWTdGL2VMMHNOY2JuTno3Zm1McmR5REhFMmZXcTMvaHdBYVZuMWVabU45Sm5rSmh1OC9FZGNsVUl5WS92NWprdVpub002bVJTWW1DWDd3VmhWQzl2Nyt3eXdyeFdLcVMxSDMvL2R2MU93RU9iSDhQN0RyeE0zREk2OGdGK0FmNHVNZEhCNFdyNnlzOFFlWTR2NUExZXpjdFJOWThLV2xwaXNxeTBBYVNxQVQvOENEcDJMaW9uZnZQcmw2N1I2d3B3WGE5QUtxczJGblpZSk5CaDFLK1AvZnJ6Ky9CUVVGYjl5NGMvYnNHY1NNOE95WlBOeS9rNUxpMWRYbGZ2MzZ4WUJ4ZXpEa2JFRTRWMVlHV0dxd1BuejRERmdLUFh2MjR0T25yMUQzZysrdEFaYTUzMy84QkxyaDM3OC9rS1lXMk10L0lJNEIrdmZYNzErY25EejgvTUs3ZHAwRW1uRDl4cjJyMSs4QnU1T0lDZ1k4cHcvbjd0dTc5L0hqcXhrWmlRWjZhai9CdmdZR0NNVFhRR2YrL1F1NnpreEJRZW5XclNkdjM3NERDdTNhZFJ5eXNrZElVUEREcDQ5QXh0MTd0MjljdjhIUHo3dDkrelp1N2w4WkdTbUtDcExBWGlkUWlvdExZTysrRThBSzRzYjFSL2Z1UDJObVpsSlhWek15TVFZMnVQejl3djE4UThYRXBKRGJ2OENnNU9MaUZCRVNQWC8rTWxEM3MyZHZyOTk4YkdGaDl1UEg5MytvbzlqQTV1ZTNiMTkrLy9vVEVPQTdkZnIwVzdjZXlNZ29BSVAzLzk5L256OS9MS3NvaTRuMmpvNk9GeGNUL1BEaGs3V1YrWmN2ZjI3ZEFrWWZzUHhsL3ZmdjE5Ky9meUROTGlFaDRmdjNuNzk5Qy9RSTcvbUxkeVRFUWFlYWc2UDlIeXc1L1lIZWlneHNZdi8rYldob0FLeEl3Sk5hQXRldTNaT1hWd0pXTnNCZy8vbmpoNzYranFLQ2dwV2xJN0ExR2h3VXJhYW1aV2xwZWVQR0xiaWJnVVVxME5wTGw2NkM1cnVldjN6MTVoMGs5b0dPNGVMa0V4UVFzTE4zOHZNTkN3bU9NVElDamZmcDZ4bjE5MDI5Zi8vT25MbnpxRmhjQUFUUXNHcjNNUWtKcy9nNC9ibnpCRmgyb0J5TlFFRzdEOWdvWitSbEJ4VllWRGcrREhUTXd6K20vLytCSlJIdVJXMmdKVFUvZjdNRU9qT0pTNUJ0RTZSRmhzWUhsNzZNLy83OTVlY1REZ3dNTGkwckV4TVZBellsb3FLaWVYajQ0QVAvcWlxcWs2ZjBQSHY2L3QyYnY4QWVGcmkxQlpWU1ZGRHg4UWt1THA2b3BpcGxZV0VlSDUra3Fxb04xUWZzU3pPQjFrTHk4Zkh4Y0FOYlJzd1I0ZEVUSmswOGNQQVFVQ1luSjlQTHkydlowbmw5ZmZNdVhYeGlZc3lCYkN4MFFQVFAzMG1UcHg0OWR1TGQrdytPOXRaQlFlR2VuZ0hGcFpQMGRiZi9aK1J3Y2JVRDVsVmdBMFFJdkNyRjFzWnU2ZExGMDZkdlNFb0N1a0VMa2kwbEpDUWc1YkNRb0pBQVA2akJrcGFXVVZGUm1wZGZLeWdvSmdpYUpFRVVIRDkvL2dGYWQrVG84VThmUDRVRSsydHJhNjVidDd5cmE5YkRoNjhVRlVGRFM5SXlzckI1SVZDNC9mengwOFRFTERRNEtpVzFXVnhjNk5temwzSnlvRnRHMVRWMFpwV1VQSDN5UkVaR2dvK1BGMWcwYUdwcGRYZXZyNjN0K3ZlUFEwZ0k1SXpTa3BLNitxb1RKL0tBeFQwM055ZXdkV3h0YlgvczJKSGMzR3hwYVVsUlVaSEl5R2d1TGw3NEpBemtwc2VDd3VLQ2dyeExGKzkrL2ZZM0xEVGF6czdoL3YwYlRLZzloaytmUGdGTkE4WXQwSU55Y3NvYUdxQTVkMTVlWGk1dUxsNWVQbDl2dis3dU9jZU9YMzczL2c4Yk81TzZobFptWmw1cVdxdTJ0cnlCdm1GYVdvNklzUFIvY0YyaXE2dmpZTzlSVk53TmJOZC8rdlN2c0tBY1hEMHdRWklOT0c2WklCVU1zSXo3OC9lUHJJeENkRlI4WEZ5MXFvcjA1eThNVlpWVmtHTHgrNDhmNnVxYXRuYjJCWVg1R3VxcWJLeHNNWEd4UmtibWxsYm0wYkZSR21ycSt2cTZmbjVCS1NtcGRmVk4zcDRuUG54OEx3S09VTGkvVWxOVGlvcUw5SFQwZ2NXNmg0ZVhucDVoZTNzenNOWFB6eWZvNDAzTnVRNkFBTnhjdTQ3VFFCVEY4ZnVSYkxMazZVbElObWliYmFtUStCY3FSTHRVS3dFU0FrSEZ0bEJRSTFGdHd3ZndIVWhKbk5sc3ZNWkt5T1psZTJLYkRjZjJnbWhvVUNxaVZPTzVkKzZjdWI1enptZ1NicnZkL2svbGI3dGNzUGNmdzg5ZmJzblNUbXFmSEYwTEQrOExqeDV3TzdobEtzYlVZY2Vmcm1mQjl1K2xtZk9aZk85SWV2dVUwL1YvSGltS1FueFRDWk44MkNiZ2txeFZnd0E2aFllbXczNStNUjZ0bHQ5VlZXODJEeUJWa0dxcXFrRkNJaVd3eDZJU0VkSVN4WndrcVFIekVpUHhCbEpLNmRWc1VxK1RobWw2M2hxMmVBUXJzQkpaVnJCN3gzR1UzYmFiVENhdU80WmxwM09Jc21WWlBaNFhpOFY5UllFbVZhQkpFWWtnaUw4b2pIOTVPUWJNOEZBcTdsY3FTZW0zckQ3ZTdYYjdBQ2E1bkFDOUJkS1J6Y3QxSGJBcWNESFBXeW1LaXBjVEhqUk5UdzVwZnlROEZ2TkZOejlnb0R5R0xoMC9lZno4MmF0dTkrYklISFRKY1d6c0NtQXJsUW9xNDIzYnZvRFNiSmhFNERsRjBjS1F3WlVreVJtOWd0cksxTDN6elMza0MyZG5IeHhuZm5MeUloV3c1NHZGREhNRXRrQURFcGhTQytTeDI3MGJ4YUdXUWdIUDYzVXdtWTVPVDErK2VmM09OTTNOaGxIYVI2aWxVcmxXSTcvM0hnU0dRVE5ZcHRPcGJZL1FnWkFtMkNLUThYMHZuOS83ZzlISG1MNWg3TUY4dFZvYWhvRVZSQ09jQXlXc3lHRFF5eGVLSUZPYXF2S3BUem9jenViVGVnMGhrUGw4aGhLWjNrNVBoQUtsUThiOFZxdFRUSDlZQ2M5WVdRU0RYQUsyaFFMRzVXQ2k2d2JhZ1p0bERkQ0hrRGJLZDNMY3VWNGliS3hGdG5CQnNOTDFmTFBaUmlPb0tEQUpRNzlhYTFRckRmQm9TbnVia0JFVHVjY2pXK0FIbWhld0k1RkdvM1BQdTBKdW1PWWRMR2gvOERVS045VXFLWmQzK1IrWFB3WFFjQ3Y3UU0ySGMrZS90OHo0OS9JdEF3c3o1V1VmNisvL3pCN2E3T1Vlc0IwZEZMV3kvMXg1K0t0MDdaL1AzM0VlOXZEdkh4TURJMWQ5RHJPTEhjTW9vQmpjdkhudHlwWEx3QTdtOHVYTEpTVEVjM09MS0ZrMC92L2YzelZyVjh2SVNyOSs5V3JiOXUzNWVRVkVycUY3K09qK3ZuMzdyQ3pOSms2Y29xZ2tWMXBTUFJvMUF3NEFBbWdZbG4zQUpQcTliK2F2WmRzWk9OZ1lLRDdza09uUFAwWk5TZTRKRVl4OG5CU1hmY3cvMXAvK1BXbmYvMTkvY0MzeFkvenhreTNZbGFNaVp6UnBVZ1Y4L1BqKzNMa1R3SGFyZ0lDNG1Za0ZDeXVsNXdsZXVYTCs0Y003d0thTmlvbzJzRFZLcEM1Z2crakkwWDNBb3BPUFg5VEkwSXlUazJNMGFnWWNBQVRRc0N6N0dQN2R2Lys5YWVxZmEzY3BiL294L3ZuSExNVEZPVCtKU1VLUWdkSjd2Wm0rdFc3K3Mra0N6aHZ0L3Y1akZlRGxtRnJIcEt3OG1qUkh3U2lnS1FBSUlKWmg2U3NtUlVWbUwvdS9OKzVCcnhhaXBBMEpyQjNlZlBtMTlTSkhzaE1EQXlWM0pEUC9lL251LzlVbm9QVTMySXUrLzB4ZnZySEUrbzRXZkRUc0Vmei8vL3ZQbi84TWpLek1USGoyOXYyR1RYa3pndllxNE13anY4QXpwT0F6TmNocFR2NEd6U1AvWjJabVpLSDRsajZnYTRHT0lmN3NFR1ptSm1iaXRqYitCYzJqZzA0bFlXRmhocDlCLy9mdnY3L2dXU05XRnViQmNKY0FlUUFnZ0ZpR2F5cG5zemY3ZStqVW40Tm5HRGdvUGZIODc4L2ZUSHV1L2dzMFloTGlKM2MvTDZoQS9ySGwwcC9yejBGTEJmOWlhei8rL00xaXJNMFNObnFBRlUzQjM5Q1NLWmR2UDdYUVUxalVrc21DdlZ2d0w2NTYrcG1yRDRFbG43V0I2b0xtTkt3R2ZmNzYxU1c5KzkzSHJ3R09CdDFGMFdRNEpiMTU3dFpEbDR2am5jc1NBaWowMVlObmI3eHorcGlaaWFyblAzNzVYcGZ1a3h6b1JJekp1NDVkU1d1YUx5c2hNS1VxeGtnRFdpc3YzM0d3YXRKbVpWbmhaUjFwa3FqekQvLysvL24xNnk4SCt4QzRaZ0FnZ0ladDJjY2tKczdxWS8vN3dnMkdMOThvdmYyV2xlbmZqWmQvMXA1bFMzVWs5VHB6R0dEL2UrZnhYMkJ2OTk5LzdMdU0vLzluQXRiLzRWNU1vcUtqNVJNTmgzZ1lXY1NGZWJjZGVjdCtnK1g3cngrOExGaG0wbTgvZW5icDl1TW5yOTcvKy85ZjZ0bkxyeisrY0hOZzJWajk2TVZMWUluejhmTjNleE15YnhwNC9mN1RxMmR2UG4vN1RoV3Z2UU1XYWI5K0F4UFNuNzhFUm1hK2ZmcjY0Y3RYWW9lUC92OS84ZllqQ3dzRDh1RFlwNi9mSDROV0tZS3Vla1pXZk9icXJiVjdUaWNHMktqSkQ0RkQyQUFDaUdVWUozUldKMXZXUGNkL2J6N0F3TTFKYVd2aC8vOGY4dzR5NnN1eW1ta0NXMmlrQnZML0gxOS9UTi83Nzk1TDBIMUwyTzV5WnZyK2s4WFJqTVY5ZEc2WDVzRFhYbmZsempNZnYzeTkrL2laZ1RxV1ExeU9YM3p3OE5sN0R2RE5XTGNmdlRwOSthR0RxVGFtc29ObmJ2LzQrVnRNaU5kQWc4d3hDbEN2RTZralNXbGx6OFFJN0p6NjJ1bm5SVHQ4Ky80TGYxOWJVMG1HMk5vQzFFRm1aRUZ0VVVxTENqblk2Z01iZzZ4STU2VmZ1L2N3cUdqcWoxKy9FL3h0aGtSS0FBaWc0VnoyZ1k1WmpnMzRkL1BCMy90UEdGZ284aWxvKyszSEh6OGFOekMyczdMb0taRFM4MlZoK1BuclcvK09YN3V2TVRFellkOWwvUGNmTXk4UFIzd2c0NGc1bTNNQWdZNktQQThuKzhldjM3WWV1b0sxN0x2NThERXdBNGU1bTN6NzhYdmx0blBuYmp6QVd2WmR1UG4wMDljZmptYXF3dnk4ZzZVLy8vZXZwS2lnbFQ3Tmo2N3lkN1FBSWpSQllHUHc2YXVQTXVJQ1RFeERZd1FRSUlDWWhuZENaOUhUWlhXMlpBUjJNeWxHLzFpWi9sNTc5cjF0ODc5WEg4Q2JtUmlKQ0Z2Ty94OCtmV2xmLzJ2cFVhWi9mMEY3RDdDWnpQajVDNHU3QmFPWnlXakJSQWNnTGlSZ29DSDk5ZnV2bXc5ZlljcStldmR4OS9GckFueWMrVkh1ZXFyQUJ0My8wMWZ2L1ByOUN5T2ZmMzc0L0NYRGZ3WlhDeDNPUVRPMkJia3BlcUFBTndjN0N3dm82R1UyMXFIUm9nSUlJSlpobjlaWi9aMS9IanJOY09rV2FMa2ZHWDNkWDM5QUpSUW9UaG4raS9PeVIxc3lpZkdCQ3I3L29JWWxlTlhMWDR3UlFHQ3B4OGJ3ODhmdk14ZCs5Tzc4ZStrUkl6c0xhRUVmMXBHK1gzK1lWZVZaa3lNWVI0c2x1Z0F1VGc1SFU3VnRoNjQ4ZXY3cTA5ZFBmTndvWjIwK2ZmWDIrcjFYcW5KaXVxb0t3TDdoNU9YOFJ5L2NmL3JxZzZJMHlobkk1Mjg4dm56N0tTODN1NElrbG4ySHdMTHkvdFBYRDUrQnRxbktTd2twU291eXNSSk9lMjgrZkx4NjU5bVBuMy9rcEFTVXBNWFoyUWFnRS9ENi9mdHJkMThBM2FBb0k2UXNJODdNakwxOGVQanMxZFc3ejdrNTJjeDBGVG5aT1Y2Ly8zemg1c05iRDU2eU1EUC8rZlB2NEpsYmtpTHZnWUZqb2FlTTFrVDQvdlA3elFjdlg3eitCT3hFUzRqeWFTcEpNak5obVNLLysvajU5WHN2UlFSNUxQUlVmdno2QVF6cXR4Kys2cXBLU291SlVQRVFmNEFBR3Y1bEg3T0NJbnVRNjg4YkQvNzkva3ZDSnQrL29CM2J6REpDYkdiS0RFTGMvMTk5K24vL05YdU9LNnVMQVdpMXlzT24zeWZ2WkJUalozUFNZdGFSWVFSTkpjT2o1TisvNSsvK25MNzNZOGVWZndldi9mL3hoNEVESEx2WWVydmdmU04vMkNPOG1PVGxSMHNsdWdGVmVSa2VibzZIejk0Qzg3bUZIa3JaZCtySzdXOC9mcXJLaVRJeHNXaXJ5RXFJQ054NjhQTGUwMmRvWmQvRFoyOWV2djFpb2kxcm9vTnlOUCsvZjM4V2JqcTg2OFNWQ3pjZTMzc0NPdVZGU1ViWVFFUFd6VUluM3M4V2FDWkdDdmpQRGpwaTl1K3N0ZnRYN0RoNStzcWpuNy8rS01rSUdXbktSWGhhK05tYjBpMU0zbjc0TUgzVjN2Mm5yNSs1OWhqWTJWZVVGbkl3VVcvTEN3R3RZZ0ZkRTRHU2VyY2RQWlBWdUV4VlNYei9uRkpwTVlsTHR4NjVKYmV6YzNQd2NYUDgrUFVubzJYcDk4OWZUUXhVVGk5cmdPZUxiOSsvTDlwOGVOdlJTNWR1UFgzeThpTXJDNU9NT0wrdXFuU3dzMm0wdHpYYWZTK3I5eHlyN0Z3VDRHbXh2RE85dUhmcGloMW4zbjM4cHE4bVZaUG1FK0ppVFMwdkF3UVF5MGhJNit3K0xyKzJIMlE0ZEpZQmZBZ1BNUU1ud1BobWpiSGl5bkpoRWhjQXhkL2ZQLzkvL21FRUxjZG4rdnZvK2RleTVYK08zR0pnWXdGMlpobjR1WmxWeFpubGhCbFltUDYvLy9ybjFzdS9MejR3ZnZyKy85c3ZSbUNweDhhTTUvaG94dTgvR1kzVVdjSzhSOHNqZWdJRGRSazFCZEh6MTUvZWZBQXMrOVNRcGRidXVRQnM0UWVCYWpnR1RuWXVZMDFaWUtOajNaNXp6bVlHeU1wdVAzcjY3ODgvVFVWcGNTSEU0ZVJmdjM4djdWcytmOU94SDk5K0N3dHhheWlCcEo2Ly9ySmk2NWtOK3krZXZucS91eWlTbXhOMTJvMkYrZUh6ZHlWOXkrYXNQZmI3eng4RmFkQkczY2ZQUDkyOGYvYnd1VHZucnoyc3l3aGtaR1NtZFlEY2UvSThxWDdlOFV2My92eitKeXZKcHlURC8vYmo5OW1yRHQ5KzlOcmRTZ3U4ZElZUjFkWE1vQk1pUVRNZzRKTnMrSG5zekRVK2YvM3g4UGw3b0dJZFpRbWdsSm1PRXJ6Z2UvNzZiV0w5bk1QbmJuLzcrbHRjbEVkYldmamYvLzlQWG41WnYvUENrZk4zVDE2KzA1UVRKc0REaldJK0I5djNuei9MK3BjdjJYSktRMUdDVFluNTZhdDMvLzVTczNjRUVFQWpvdXhqNUJkZ1R3bi9jZThKYUpNdndmVXUvLzh6L2ZuUG51M0NYdVROQ0RxWERkeWxaV1ptNUFMZFJ2YjMzdU92aFV2K25uL0l5QTNxa3Z6LytwUGh5NDgvajkvOC9nZGU5c3dJdm5jTW1DQ1lHQmc1V0NDSEgrRXBZWm5aV0lBT1krVGhIeTJQNkFua0pTWFU1Q1RPWFh4dysvRlRaUEVYYjE4L2UvMmVuNWRMVXhIYURQZHowRnU2L2ZTRkcwOS8vL25GQ2pzNTd2Mm5MN3VPMytEaVlqUFdra2RLTmYvek9oY3QyWHFLZzQwdFBWWTMyRVZaV1phZmtSSFlRdnk4WXNmdCtSdHZ6RmwvbEltSllVcGxJbkt2allPVGJmbjJNOEIybHBPSmJGNjBucjZheU45Ly84OWRmOTA1Ly95Rm02OG1MZDlycENYdlMzVHJqNUdCbkQyY0h6NS95ZTFZY3ZUQ1hXNU85cFJJclRnZkRRa1J6dGZ2djIvY2YzL2lzb3ZBQXBHRGpRVmpBVFA0ZWoyWW9LR0cvTUY1dGNjdlhYTk03aFVYNWwzWWtxU3BwQWp1MVlBVXZINzNJYmxoenY1VE56bloyVkxETk9OOU5SU2tlSUZsMzQxNzcyZXN1YnJsNElQRlcwOXhjckIxRmtUQ1czL0FvaGJZSEQ1eS9nNndjcHJYbEJqa2JBb1VlZkQwaFFBZk5hZVZBQUtJWllRa2QzWUg2NzhXZTMrdTJjVkE2RVpFeGovL0dLVUVXYU9zR0VFTDMvK2c5bENaUUt2NFAzOEhKb1gvOEQ0c01BVXdZOVROUkF3N00vNzh6Ujdrd09KdVAxb1lEVVMzVjVLRmsrM01sWWVmdjM3amhmVUdqcDIvYy8vSkd4c2paWGtwNk9WdGF2THlYT3hzejkrOHUzcm5vWUdHS3F4NytPbkJzM2ZBWHJPTEJlS1NwcDNIejYzYWVaYWRsYlU2MWFnMHdZeVJBWnA0SkVVRXpQV2twVVM1R21lZTNuVGdVb1RuTlJzRGJlUjA4djgvbzZPcDdKSjJOekhRbWFhZ21sSkJTa1JUU1RDOGRPZWR4eDhuTGR2dFlxN0x5VUhVL2w4dVR2WmpGKytFbGt6NWk3dXI4ZjNITHlzRDFkbzBmN2pJbmhNWGdXMU1EbmJXbkVqZDVteHJjQlB2cjVnUXI3YXl1S0lNWDA3YklZSUxCbUdOTlpiLzRNUFNZRHRob0NYajVvTm5EcHk1QSt6djUwWHJOMlZaZ2dzNGtEZGx4WVV0OUNVem12ZXYyWE4zN3ZxakRxWmFudGFHaUlBQmxvNU0vNU1EYllLZG9SUEtDdEpTMUUwREFBSEVNbUpTT3lOYlN1aXY0K2YvUDNxQjUzZ3IwQURjcno5c0VlYk1Vb0xZRnJMOFlWYVZZelpUK1gzckpRTXpaYzF2WU9yazRXSk9EQnBkMXpJZ3dOOUJaOGJxL1pkdVBYdjc4UXU4N0FPMmZiNTkvR2FocThMUEExM01MQzB1WUtZakIyemxIVHg3QjE3MlhieDkvL1BYNzdvcTBrcEl1WEhXNnNQQTVwdXJwWHgydUJFak5IdERVZ2l3bjhhY0ZtS3dhdGZkeTdkZkw5bDhBcm5zQTdZVzJWaVk2dFBOeEFSNXdXY3BRM3NFbW9yaVNZRmF0Vk5PWEwzNzR0eU5POVlHaEpldE1JTGJZdGZ1UGoxMThRNis1dCszSDN3OGlKR2ZQMy8remwxLzVPZXZ2L3Jxb3NXeFJ1Qmp1aUVsSFpCa0NuVlYyM2I0NGFxZHQ0a0pVdGppNS8vL2tZYTJ2Mzcvc1hEVDhiOS8vMXZxU3hUR1FNWU40RWZxL3VUbDRxcE9OUVcyYzI4OGVMZG0xMGwzS3owbVdDTUNXT0JLaXZMYUc2dlRMZzBBQk5ESUtmc1lXTFMwMkFPY2YweFl3b0I3a3k5STlNOXZKalVKWUJtSWxCWlJvcGhaaVBNUEU4UC92Ly9Jbm5FQ0pnMldyei9ZWS8xWURBMUdpNkVCQVdvS3NrTDhQTTlmZjNqeTRvV0NGR2dlNDlPWHo1ZnZQR0xsWWRkUVJKUm93TXhwcWEreTQ4RGx5N2Nmd1FVM0hiank2L2NmTzJNbCtGVHNxM2R2bnI1K0MwdytVcUxjMSsrOSt2Y2ZaUmNFZU5YeFB4bHhIbUEzOXNIejE3Ly8vR0JsZ2JiamZ2LzVwNlVzcEtNaWpGSFIvdkcxVTJpWmRmclRsKy9iajF3bHB1ejdEOW9WK2RmYVVEbklTZi9ITDV5WFBmNys4MGRERWJHdytjdjNidytlZ1FicFRMV0I3VTR1cElJSlZQeXhNTE81V2NrdTJYeUQ3SEIrK2ZiZHRmc3ZXRm1aYlF3bEJmbDRNUExVTHkwbEVRTjFrWHRQUHgyNWNPL2R4MjhpQXJ5d3RzRS9VVUVlVFNWSjJxVUJnQUJpR1ZFcG5qMHUrTmUyUS8rdTM4ZTF5UmZVYVAvUCtQL2VLOXhYaFRML2UvZmozKzgvak1DR1BibHJxUmkvLzJSU2ttSk5pUmd0Z3dZS0FBczFFeTNaRlR0ZWJUbDh4Y1pJRHloeTllN3pNMWNmNjZwSU9acWh0RFcwbEdSNEJiaVBYN3A3NitFek5YbXB2LzkrUFhqNm1wbVoyZGxjRDY3bTN0TzNiejU4NWVGaTIzTG93ZGJERHpCSE84QjMzRE93c2pCOS92cmorODlmOExMdjM5OS9xckw4d0E0QTVrWkpZUUZPYVRHZUd3L2UzbjM4bHNncTlmZnZQNXFLTW1raEhzU0h3OVBYcno5KytRb3NuZVVrZWJBZVV5UW53U2NreVBIM0w1a25HRDE3L2ZiUDM3OHN6RXdhaXJpT1FXSlVreGNBaHN5WGJ6OC9mLzBDTC91QTRjWEp6aWJJeDAyN05BQVFRRXdqS3NVelNVcXhwNGNCRS83L1AzLytnellqb2lOZ2RmT0xtZkhYMGlQL1huNEFGbk9ZVmNXL2w2Ly9uYi9IQ0Zxbi9JOU05T2N2c05ISmxoTENKQzgzV2dZTjRCaUlsNjB1RXhNVHNMeUQ4Tzg4ZnZyaDgzY3BNV0VKWVJGa2RWWUdTdkpTUW5jZXZiMy9GSFMvNWZWN1R4KytlQ01xd0MwbGlwamh2ZlB3ellzM256ZzVXTG5ZMlZtWVdWaFowQkVMK05CbmJrNTJEblpXbEpMeDMzOGhBUTZzNTdnd00vM241R0FHMWNYL2lkMUVoTnJjSkFyOCt2WG5IL2pTUUVrUnJLWE1meWJHL3hUdXVnTjJ4cG1aR0lITlhod2I0Zi9MU2ZBQ3k3NnYzMzc4UVo0WS9QK2ZCVFNSVE1NUklZQUFZaGxwU1o3ZDMvUDNxaDIvajV4bllNTis3aEN3MmZmNzVndVdsY2ZZODN6QVBWOTRMd0RJWnZteDdPQ2ZjL2RCSjg2VGZmSDV6MThjTmthczBZR2p4Yy9BQWxVNVdVNTIxdGZ2UDN6KytvbVhtMi9yb2N2QUxPcG9pcjdMVFVwVVRFbGEvTXJ0NTNkQms4TDZwNjgrZXZ6OFE1aWJvYll5b2pzR1dlM3gvY2V2cm9Kd1B3Y2pZT01PMTRnWUd5c3pMeGR5S2NNSXVUY1pYMkZHeXpVdWpPQlpCVkRuOTl0djNFcklQN2dOZE84U3VEZjE4eGZPRXZ6VDExL0FKZ0VyeHBrNnRENWFGQ0NBbUVaYWltZms1bUVyU0dUZzVRYVdRZGp2U0FNU0RQOS85Vzc5MGJQaC81Y3ZEQXljVVBUMTY0K081VCs2dDBDamhOeUwzeGgvLzJYS2pHVGs0aDB0ZlFZV0tFb0pHV2hJUFhyeDd2eU54NzkrL3pwLzR3ay9MNmVuTlphNzhhd05GRmxZbUk1ZXVBdGszMy82OHQvdlB6b3Fjc3hJazFRYWltSlNZbnhmdnYzaVlHY1M0T1dTbFJEQ2l1UWtoU1ZFQk9BWFdvTHpIK09iRHo5K1k3czU4OWNmaHRmdmY3QXdNL0p4MDNEUG5BQWZEeWNuTzdEcDkrYjlkMnhiSmhoLy8vbi8rODgvc2x0K25PREJKV0NYK2RiRER3ell6NjFrdXZmMEU5QUtidENkN0hROXpob2dnRmhHWUtKbnQ3UDQ0K2Z3Yy80R25LYzZNelArL3Zyalo4ZkdiMXZPc1NwTE1Fc0ovSG42K3ZmOU53d1hINE11YkdObXhIb1dDMUZWelpkdkhHRWVMQzZqNjFvR0hvZ0lDaGhyS2g0NmRmdkcvVmVTb3J6QTVwK2tLTCs0aUFpbVNnOXIzZDVGZXk3ZGZ2SGl6YXVMTngveThYR1o2aWlndGczNStYazQvLzM3ZC9qczlUQTNTNno3cnY3Kys4Y0ludmNBZGpIaFJRa3pDOVB0Ung4K2Yvc2p4TWVDMnJwaVBudnQxWnVQUDREdFJDY3pGZG9GZ3BpUU1EODM1NHMzbjgvZmZJM1YyYmNmdlFlMnk4U0V5Qngza3hFVDQrSGllUHZoMi9WNzc3R1p6L1RqMTQvcjk5Ly8rZnRQUXBpYmo0dVRuZ2tBSUlDWVJtS3FaMkxoeUlwaGxCQUNOLzF3SEY0QTJzanovLytadTcrV0gvaytZZHZ2NVNjWlR0MWxoRFQveVQ0UTRmdFBKbEVCbHR4NFJoYlcwYUpuTUFBMWVTa21WcFpITDU0djNuTGsvYWZ2L2c2NlFueFlqdXFURmhjWEZlUjUrK0hUNU9WckRwKzdxeUF0YW0yZ2lsYUNtT3NxYzdDenJ0dDM4Y3kxdTVnbS9QajVLNnRsdGs5ZWQ4K2l6Y2h0S0ZZV3BtdjMzdTg0OGdnOG9vSm9iZjM3OTJmdStxdS9mdjJSRkJHd01kU2tYUWh3Y2JCSGVob0RTKzBUbDE3dFBIWVB0QThkcWZ6OStPWEwydDEzMlZtWmlkbEZDNW5kQnAvd3pJUVVNbnhlTmxyQUx1MzJvdzlQWEhxQ2FqNm83Ylhwd0wyTE4xLy8rL2ZYeTFhSG41ZWJuckVQRUVCTUl6UFJNNnVyczZlSE0vNEh6Zm1EVGxIR2hrQVZOQnNMSXpzckl3c1RJeWNyNko0MjBQM0ovOGhHekQ5L3NTWDRzeGpwanhZNmd3UTRtNnNxU0FtdTJIbHkzb1pqTEN6TWVtcEtXSlVCbTBhdWx1cWZ2djdZZHVUQmoxOS90SlFrdURuUmk4aVVJRHVnc25jZnY5Vk1YblByd1ZPMGthdHBxM1l0M25ybThObTdyTXhZUnJYYTU1NCtEWnB5WVFZakZtQWgwano3MUk2amo0QlNFUjdHTXVKaVJBL2VrWE9BZktDVHVhSzA0S3QzWDV0bm5yNTA2em5vMURXd003NzkrRlU5NWNUeFN5L1pXSWthY09SZ1plVmlad1BxdW9WMFFBNndneC9wWWNuTHpmcjAxWmZxeWNldjMzOEpNeCtJV1BlZnZ0ODg4d3l3WGFtbEpPN25ZRXJuMkFjSUlKWVJtKzQ1d3Z6L3J0N3grOUp0b203eXBYalk5Zi92Myt4YXloelo4YU1senVBQnFuTFNpbEtpSnk3ZFoyUmlsSk1RVUZmQWRSazhvNVcrNXV5MXh4ODkvOExHeXVKcGcrVTRQMzAxcFpZY3Y3TCtkZnZQM1BiSzZVOFBzUUcyRGRuWjJaNjhmTE42MTdrdGh5Ny8vZmMzeU1rb0o5SWR0U1A4WDA2UzY4N2o5MEdGMjN3ZGxDejFKTjU5L0w3djFOUDlwNS8rK3YwbndzTW9GMVU5Z2N6TXd2em8rZXNkUjA4REN5QkNwU1NEbTVVeE4vaTZPSFVGNllvazc0S3U1YWV1dnZEUDN4cm1ycXFsSlBUcHk2K05CKzhkT1AyVWxZV0JuWW1vYmdvUE54Y25CK3ZYNzc5NkZ1NTY4ZWE5bktTUXZiRXVFeE9MZzZsdVpiSlg3ZFFOaDg4OTg4blo2dStncUtzSzJzOTc3T0p6WVBuKyt2MDNZTWpYcGZzYmFpalJPZllCQW1qa2xuMU1zdEpzeFVtL0U2disvL3pOd0VMejlpL2oxMjhNdWRFTW9oS2pKYzZnNmdBWWFNZ2NQbi9uMysvL3VxclN1aXJTdU5RcHlZcUtDWE0vZS9XSmo1dlRYRmNOcTVvNFh3ZHVUdmJtV1Z0dVAzcFRNV2tETXhNVFpGcnN6OTkvSWdJOCtWSHV1WkdlekVoSHVRREZmMy82RnAvaExNZ3YyRDEvejZ3MWwrZXN2Y29JMmpiNWo0bVJNU1hRcWprbldJaWZxTDNlUUh1QXBqRXhNZTQ4Zm5YVHdVdjRXMy9BSGlnM0o5dWxOZXJjc0tzeUUvMGRHUm1adXVadnZmUDRiZi9pQzBEdC8vNEQzY0JrcVMvdmFLcTJhUE9KN3o5K0ljKzZBdnZJLy83OEJkM29oQnhFMHFJaHJrWXpWaDg2Y3Y3T251UFhsT1NFOTgwdWxaY0VMUlF2aXZWaFpXR1p0R3ozL1dmdko2KzRDRDRQRHVSTlRuWldHd1BGNGpnUGJ6c1RWQmYrQS9ybno5OS9OSTE3Z0FCaUdja0pueTNBODhlS3JiL1hiVUVkYmFGQndjZndqYzNWaFQzQ2Y3U3dHV3dnd05IdzBKbTdmLzcrMVZLV1o4TGR3REZRay9XeTBRTjJXdFVVUkVVRXNKZEh3UDVkcUp1TmxZSG02YXMzOTUrNmVmYmFFMkJ4SVNuSzYyQ3FhbStpbzYwa2d6TER5OENnS0MycW9pYWpwcUFVNG1MaFlxNjNhdGVKYllldUFZc1lCek1WTnl0ZEt6ME5OcUp2RTJabVlsU1dGbU1odWdvSHRqZVpVUjJUNEdmdmJLNjE2OWo1TFFldlBIL3pXVWFjUDlCSjM5UFc1TnVQbjVkdlAvdjQrUWNMMHNubmdyemN1dXB5aXRKQ3lKZTlBWDNYbGhkaHJDVzNZZC9GWjY4L0NmSnl2UDM0WFI2MkVDZzd3dDNQM3VqSWhXdTdqMSsvZHZjbEx6ZTdzYWFNbzdtbWhhNkdJTVlZcTdBQXI2YUd2SXFzT0UyakhpQ0FodWY5dk1TRFB4Y3UvSnkzQVRST1M3dXI5djcvWi9yM2p5WFVnOVhSZXJTc0dRVWpCL3luNGtHak5BQUFBVFRTeTc1Uk1BcEd3Y2dFQUFFMFd2YU5nbEV3Q2tZaUFBaWcwYkp2Rkl5Q1VUQVNBVUFBalpaOW8yQVVqSUtSQ0FBQ2FMVHNHd1dqWUJTTVJBQVFRS05sM3lnWUJhTmdKQUtBQUFNQUJEQW84dkd6YmZVQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4naW1nL2hlbG1fYWEuZ2lmJzonUjBsR09EbGhGQUFVQU9aTkFNL1B6OGJHeHN2THk5RFEwSEJ3Y00zTnpjakl5SXlNak03T3pzckt5dGJXMW91TGk5SFIwWDkvZjI5dmI2NnVycjYrdnFLaW92ZjM5NFNFaFByNityS3lzb1dGaGJTMHRKS1NrcmUzdDRtSmllam82TlhWMVY5ZlgwNU9UdjM5L2FHaG9idTd1NDJOalh0N2U5emMzSk9UazRlSGg2U2twRU5EUTZhbXBycTZ1bmQzZDNaMmRyaTR1SUdCZ1k2T2p2WDE5WEp5Y25wNmV0dmIyM0Z4Y2NuSnlYaDRlR0ZoWVgxOWZZQ0FnRVJFUkZkWFY1aVltRmhZV0t1cnE2eXNyS2lvcU9IaDRacWFtb0tDZ241K2Z2YjI5cXFxcWsxTlRYVjFkWmVYbDYydHJjZkh4OHpNelAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRTBBTEFBQUFBQVVBQlFBQUFmUmdFMkNnNFNGaG9lSWlZcUtIQjBFRGdTUEJCMGNpUklqRndvTW13d0tGeU1TaUJBVEEwdExCZ2FtQXhNUWgwVTBJUWtCUzB3RnBna2hNVENHRVJnQXN3TXJOZ0NtQUJnZ2hVRklBVFcwTFI0b0tnS25BU3d6aEM0Z3BVc0RRd3N5R3FVQkNDZEFoRDh2dndZQ1J6YzdIZ0twQUFldGd4OUVHUUlJU1QwcEVUcENBQWpJZ09ORG9RQU5BREJad0VPQkFnMG1FQUJvRU1BUWhSeEdDaVNZUmlzQkV4OE5LQndpUVFCQkFTWW9heFZ3UUNKUkNSRVZIaWg1OEtDQ2lCS0tObGhZY0tEbmdRVVdOaXdhU3JTbzBVQUFPdz09JyxcclxuJ2ltZy9oZWxtX2Jhc2UuZ2lmJzonUjBsR09EbGhGQUFVQU9aQ0FOVFUxR0JnWVBqNCtLaW9xS2VucDZxcXFubDVlZExTMHZuNStaR1JrYWFtcG5wNmVwQ1FrSyt2cjUyZG5hNnVycXlzcko2ZW5xR2hvWStQajlYVjFhMnRyVjlmWDdHeHNaK2ZuMk5qWTBKQ1FsMWRYWHQ3ZS9yNitvMk5qWEp5Y21abVpqbzZPck96czBGQlFacWFtcHVibTliVzFuVjFkWW1KaVZGUlVZeU1qSktTa29DQWdMQ3dzS0tpb201dWJuNStmbWRuWjNoNGVIZDNkM056Y3pnNE9HaG9hS1NrcEhaMmRwT1RrMGxKU1lHQmdhQ2dvRXBLU25SMGRMS3lzcXVycS8vLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRUlBTEFBQUFBQVVBQlFBQUFlOGdFS0NnNFNGaG9lSWlZTUNKUTRDaW9VQ0V6SXpESStRUXBJR0VCQUxDWmVKQ0JNTFFBUURRQVlNQ0tFTXBLY1Zwd1lKcTRZZENSd1FBdzhnTWJCQW5oMlJLeHlsQlNRYU5RNEZzVG1nUWg0ZkRRUUtEeThuTmpRUENnUU5IeDZFQnhrWXhTTXBPaG9GQkVBWUdRZUZBQUVSRnpBOUtpZ2hMQmNSQVJTSEZCWXVET3o0SWNJSGpoc0JBQ0FLQXNDQ2hBWUtGTFNRa0RCSUlvWUJsQUhaQjhDaUlvdzhLSGJFSkNTSWlRMGJLSGdrR2VUQWdaVWtZOG9jRkFnQU93PT0nLFxyXG4naW1nL2hlbG1fYmxvYi5naWYnOidSMGxHT0RsaEZBQVVBT1pRQU12THk4bkp5ZS92Ny9uNStTa3BLWFIwZEQwOVBVVkZSVWRIUnpzN081YVdsaTB0TGRUVTFJdUxpNk9qb3pFeE1UYzNONktpb3VEZzRQSHg4UER3Ny9uNCtPL3U3c3pRMGVydDhldnQ3dmo2Kys3dTdhU3J0Tzd2N3RqYzNPenI2N3k1dmFhcnFycTJzUGo2L2JXNnZQUHM0Nit2bzd5eXE5WFQwK2pyN3JPdG92RHg4WnFscXZEdzhmRHY3L0h3OFBIeDhiR3hydmo1L08zdDc3dkF4Kzd2Ny9UcDNyKzZ0Ykt6dGNTL3V1dng4dWpvNS9EdzhPdnM3ZWZuNktHdXR1eng4dWJvNkxpMnJlcnA2YnEreHUzdTdzckZ5T2JkMmZUdTUrM3Q3Zmo0K1BYMTlTd3NMTzd1N3YvLy84ek16UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGQUFMQUFBQUFBVUFCUUFBQWZoZ0ZDQ2c0U0Zob2VJaUJJTkJnUUxURXdMQkFZTkVvY01Ed2dSQVU4QUFFOEJFUWdQRElVQ0NRVkxUZ05LclVvRFRrc0ZDUUtFQ2dkTFMwbE52TDFKdVFjS2hCQU9Ua2s4RkwyK1RnNFFoQVFCQTAwZlBTOENFeFF3RkVrREFRU0VURThhU0NvL0tCNHBSeGNZRmtwUFRPQUFJelltTENBaUpDY2hSRG9WQVBDRG1BQ1FVVUlJQnlNNWNOeUlRUU9JUDRDQ3dpbnBNQ1JJalEwK1p1ekkwTzdkczJoRldrd1FjRTNBQ2hmY3ZBMHJ0a3Zac21hMmNPbHkyZVRYa21DRVRxVmE1ZXBWckZtMUNHSFN4TWtUS0ZHa0RpMXE5Q2pTcEVxSm9rcWRLaWdRQURzPScsXHJcbidpbWcvaGVsbV9jaGVtLmdpZic6J1IwbEdPRGxoRkFBVUFOVW9BUGYzOTZTa3BQbjUrZnY3KzZHaG9kVFUxSjZlbnZ6OC9QTHk4djcrL3ArZm41cWFtbDlmWC9yNit1M3Q3WmlZbU9EZzRKeWNuSWlJaU43ZTNwZVhsOXpjM0ptWm1lL3Y3NmFtcHBHUmtkWFYxWk9Uay9QejgvajQrSW1KaWU3dTd1am82TE96cy9IeDhmVDA5S09qbzZLaW92YjI5dlgxOWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ2dBTEFBQUFBQVVBQlFBQUFhRlFKUndTQ3dhajhpa2NzazBTZ2dCa25SS0luaVFnY1JoTUdod0I0ZEVBRWt5alVZbmdKbHpNcEdRSmRQcDVKaEF6aU0zWEM2SVlBSWhBbTBsZXljZER4b0ZGSUltaEVkeEp3SWJDd3dWQW5sdmozSUFBUjhGR1doNm1pY2pGd2dBSUFoNWprWWtBS1J5YVhNQW1VWVdJcmk1dWd0SUNnWWx3QVRBd0FZS1RjZkl5Y3BKUVFBNycsXHJcbidpbWcvaGVsbV9jdGVybS5naWYnOidSMGxHT0RsaEZBQVVBT1pOQU03T3pzL1B6NHlNak5IUjBkRFEwRzl2YjhuSnlhdXJxNUtTa25Cd2NMNit2c2pJeU1yS3lyKy92NFdGaFg5L2Y0Q0FnSE56YzMxOWZYWjJkdmYzOS9yNit0WFYxWXVMaStqbzZNdkx5NDJOamRiVzFyZTN0NjZ1cnYzOS9iUzB0TnpjM0xLeXNxS2lvcTJ0clhKeWNxT2pvMTlmWCtIaDRXWm1acjI5dllHQmdmWDE5WTZPanBhV2xxbXBxV2xwYVlpSWlINStmcUdob1lhR2hzTEN3cXlzckhWMWRhcXFxbDVlWHFXbHBaT1RrN3U3dS9iMjlyVzF0Ynk4dkh0N2U5dmIyNFNFaEh4OGZLYW1wbkZ4Y1dKaVlxU2twTE96czJ0cmE4M056Y2JHeHNmSHg4ek16UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFMEFMQUFBQUFBVUFCUUFBQWZNZ0UyQ2c0U0Zob2VJaVlxS0ZqZ0pCWkFKQ1NZV2lSUS9IeHNEbXdNYkgwSVVpQXBCQkV1bXB3UU9Db2M4SkQ0TVMwcEtERWtHQmp0RUs0WWlDQUd5U2hrTlF3MExBUWd5aFNjMlNnRE5CQ2xJTHhPelNoTkFoQ29pQXpBa0VUTXRFUVFITkFzQVJpNkVOU3dFSVFjSFBUbEZKUkxFQVFLcmd4NHhIQUZNU2JVQ1VDQXdrSUdEQkErRmxEendkUXJBdnlVQkhpZ3hWQUhDalNTblRpVTVBS0hDSVJBRkhESVo2UTlBQVJDSmRHZ0lNV0pFaHc1SE5DQlFoTUhCQlFFNEJWeHdnR0dSejU5QWd3WUNBRHM9JyxcclxuJ2ltZy9oZWxtX2ZpbmQuZ2lmJzonUjBsR09EbGhGQUFVQU9aQ0FObloyZno4L05qWTJKaVltSnFhbXZQejg5ZlgxNFNFaEptWm1mNysvcVdscGNEQXdQRHc4UFgxOVp1Ym0vbjUrWlNVbElLQ2d1WGw1WW1KaWJTMHRMYTJ0djM5L1p5Y25QZjM5N3U3dTUrZm43VzF0YXlzcks2dXJ0M2QzY0hCd2MvUHozNStmdTd1N3UzdDdmYjI5dHpjM05yYTJxYW1wczNOemN6TXpKT1RrOXZiMjlEUTBNakl5TVBEdzZLaW9vZUhoM1oyZHFHaG9hK3ZyK2pvNk9ucDZZNk9qc25KeVgxOWZhQ2dvSktTa3VycTZ1dnI2NHFLaXBDUWtKV1ZsWmFXbHYvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRUlBTEFBQUFBQVVBQlFBQUFlTmdFS0NnNFNGaG9lSWlZcUtOQlFFRXprZklvdEJBQ296RWdVZUx4QWppZ1ZBQUFHRER3c3lvNGdaRlFtRkFSb0FpVDg4aHl3bmlUMEZoeVlEaVFnU2hrRXRIWWszQ3FpREdBZzdpUThYQ3cyQ0NRd0tCQ1JCaVRVRURpa3JMZ01PTmpvRzE0Z05JQndER3lVTUVERVJBdVNMUWhZQUVUZ0hCdktEUVFJSElURDY5Z253Z1NLZ3dZTUloUVFDQURzPScsXHJcbidpbWcvaGVsbV9pbXBvcnQuZ2lmJzonUjBsR09EbGhGQUFVQU9aQUFJU0VoSXVMaTRXRmhlN3U3c3JLeW95TWpQTHk4c2pJeUhwNmV2ejgvUEh4OGJpNHVNZkh4OS9mMytUazVNdkx5NEtDZ3UvdjcrdnI2N2EydHREUTBKbVptY0hCd2NiR3hvYUdocEtTa3F5c3JQZjM5NStmbjQrUGorenM3SHQ3ZTJwcWF0Ylcxc1hGeFdscGFmUHo4N0N3c0kyTmphdXJxMjV1YnZiMjlxR2hvYUtpb3FxcXFwT1RrOW5aMllpSWlNL1B6OTdlM3JlM3QvRHc4R3hzYkhsNWVXRmhZZVhsNWN6TXpLQ2dvT2JtNXQzZDNaaVltS09qbzRxS2l2Ly8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRUFBTEFBQUFBQVVBQlFBQUFlT2dFQ0NnNFNGaG9lSWlZcUxqSTJPajRJUUNBSUFsWlNWbGdJSUVJUUZFaitnb2FFSkNUOFNCWVFCTnhRVU1EMGxMVElzRmdvREpBMEJuUTRmSUJrVkhCVXZPUXNERVFZeHVZTWRCQ2dqTkRZOEV5c0NLc1VHdUlRbU83VWhGam9lTXd3dUtRWWJEcWlETlFzNEJ3UVBCd2NNRHdRaUZ3UVRDSVFuQWdFQlB2OEFBMkxRQUttZ3dZTUlFeTRLQkFBNycsXHJcbidpbWcvaGVsbV9sYXlvdXQuZ2lmJzonUjBsR09EbGhGQUFVQU9aTEFPZm41LzcrL3QzZDNlenM3SnFhbXBTVWxNL1B6MzE5ZmJLeXNxU2twTHU3dTcyOXZZV0ZoZS92Ny9UMDlNSEJ3YUdob2FtcHFkUFQwNmlvcVByNit1RGc0UGIyOXZQejgvMzkvWitmbjhiR3hzVEV4TmpZMkxPenMrYm01b0NBZ09MaTR0TFMwdEhSMGNyS3lwMmRuZkR3OElhR2h1am82T1RrNU1qSXlJS0Nncmk0dVBIeDhmbjUrZno4L0s2dXJ2ZjM5OGZIeDVXVmxjREF3S1dscGVYbDVabVptZTN0N2VycTZyQ3dzSU9EZzRTRWhJcUtpb3VMaThYRnhlSGg0Zkx5OHRyYTJ0N2UzbytQajdhMnRxeXNyTW5KeWJxNnV0L2YzK25wNmRYVjFmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRXNBTEFBQUFBQVVBQlFBQUFlZ2dFdUNnNFNGaG9lSWlZcUxod01NSjR5RkdCTUVBNUdGSHh1WGhEOFpRSVZHQmhvTmcwa0tMb0lCQ1FLRUpRc3FNaG1rQVVFTEZJTVBCWVFQUnl3T0NEeUNFQ09FSVIyRU1TQ0NMU3NiSGlrQWhEY21oQVFWZ3hZa05ocUZRalNFQ2dhREFBUVFTb1FXRWtXRUtEb2NOUUpFQlJJN09LbElQYXlFRjBNSUJ6TU9BZ0JnRUtHQ2lCY0hMQlc2UUFFQWhrRStja3hJRUFIR3Bvc1lNMklNQkFBNycsXHJcbidpbWcvaGVsbV9saW5rZXIuZ2lmJzonUjBsR09EbGhGQUFVQU9aVEFLcXFxcWVucDVhV2xwT1RrNEdCZ1plWGw2U2twSU9EZzZDZ29LR2hvWDE5ZldscGFZcUtpbnA2ZXQvZjMyaG9hR3RyYTYydHJZeU1qRjVlWHJxNnV2ejgvTTdPem9LQ2dvU0VoSEZ4Y1ltSmlkVFUxSktTa3ZmMzkyeHNiUGIyOXNEQXdQcjYrdmo0K0tPam8ycHFhbU5qWTFoWVdLS2lvbmw1ZVV0TFMwcEtTbzJOalhCd2NIWjJkbDlmWHo0K1B0Ylcxc3JLeXJDd3NKdWJtN1cxdFpTVWxIZDNkMDVPVHBtWm1kWFYxWUNBZ0p5Y25JK1BqN2EydHBDUWtGWldWbFJVVkg1K2ZvdUxpMGxKU1Z0Ylc4bkp5VTFOVGJ5OHZHOXZiNzI5dlYxZFhXNXVibE5UVTZ1cnE2bXBxYWlvcUt5c3JLV2xwYWFtcHYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRk1BTEFBQUFBQVVBQlFBQUFmeGdGT0NnNFNGaG9lSWlWTWJUZzBlRUNnQUc0b2ZGQ1VLQXdZR05Rb2xGQitISVF3UEFSRk9BUUZPVUZJUEdpR0dQU1JOVDFLMXRrOU5DelNGSFJBSlQxRlNzN2dCVVU4SkpCMkVJRFpReGdnbVRFQWVUd0ZTVUMwZ2hCd01BRkpPQlNvQ0JqY0t6Z0FNQTRSQkFzQk9PQ2thSEVNSHprNENPb1FFQTA1UlRqTXZmaEJwNEMwS2dBRUVDQ1hBc09xZWtSRXlWdFdDZ2dFQm9SZ1pWajNac1FRQnJWcFJJbVFvUWtnRUN4NU5vZ1FvS0NWS0ZDZytrSWdvQk1QRmlaUzJnalVaTVNISG9TUVRoS2hxMGdRS0FBbEtqaVN5UUdEQkFRa3JEaXdnWUVIUmxBb09DbHk0VU1CQkJhdGd3eW9LQkFBNycsXHJcbidpbWcvaGVsbV9tZXguZ2lmJzonUjBsR09EbGhGQUFVQUxNTEFBTXViY0RMMnFDd3lPL3k5bUY4bzkvbDdkRFk1RkZ2bWhJNmRvR1d0aUpIZi8vLy93QUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBc0FMQUFBQUFBVUFCUUFBQVEzY01sSnE3MDQ2ODI3LzJBb2psMlFGSk1nVEVVU1dBaHdTQUlBck1zQklKWUNFSktBN2JVZ0FCU1dBVkZpTUZBQ0E1SjBTcTEySWdBNycsXHJcbidpbWcvaGVsbV9udGVybS5naWYnOidSMGxHT0RsaEZBQVVBT1pLQU1iR3hzM056WXlNak0vUHozQndjTW5KeWN2THk2dXJxOURRME5IUjBiNit2b1dGaGJ1N3U3UzB0Rzl2YjQyTmpjN096c2pJeU5YVjFjckt5cE9UazM5L2YzNStmbkp5Y3FHaG9hMnRyWFoyZHZyNitueDhmTnpjM0s2dXJ2ZjM5N0t5c2w5Zlg1S1NrdWpvNlAzOS9YcDZlb0NBZ0ZGUlVmWDE5YU9qbzhURXhOYlcxbzZPanJHeHNiaTR1S2lvcUlHQmdhZW5wNEtDZ3R2YjI0U0VoTkxTMGpBd01GWldWbGRYVjdPenM0dUxpNmFtcHIrL3YzMTlmYXlzcktDZ29MZTN0NW1abWFTa3BIRnhjZUhoNFhOemMvYjI5c0xDd3NmSHg4ek16UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFb0FMQUFBQUFBVUFCUUFBQWZSZ0VxQ2c0U0Zob2VJaVlxS0VpRUVEZ1NSQkNFU2lSOGNEUklKbXdrckRSd2ZpQW8wQXdCSXA2Y0lDd3FIUmhjTUFVZ1RFYWdUREVNb2hpa1VFQXdGQ2tkSXBnQURJaGlGUkJwSVNUZEJEekUxQVJBR0VRQWFNNFF3R0FnRkp6Z09QekpGRndJRkEwSXZoRDRQQXlvRUpqWTdEUWNIT1JFREFxeURKQll1RXhROFNyUkFrQ1NBQVFOQWVwQW9CTURDQUFNRnVKMENRS3dDQUVNYktoeElnZ3BWZ0FNVk5oenFRQUJDZ0NSSkRCUU00S0JESWdvc1FIandrQ0VEaUFjaUZJMVlJS0JuVHgwTFJpd2FTclNvMFVBQU93PT0nLFxyXG4naW1nL2hlbG1fbnVjbGVvdGlkZS5naWYnOidSMGxHT0RsaEZBQVVBT1lBQVA3Ky9wMmRuWVdGaFo2ZW5xNnVycU9qby8vLy82U2twSU9EZzRtSmlZQ0FnSnljbkttcHFZR0JnYUdob1l1TGk1cWFtcWFtcG9LQ2dzckt5b2FHaG9xS2lzek16UGo0K08vdjcrYm01cG1abWFpb3FIaDRlSktTa3RYVjFhQ2dvSmVYbC9iMjl2cjYrcmUzdDlqWTJKdWJtK0xpNG8yTmpXSmlZbXhzYkg5L2YzeDhmR3RyYThuSnlYdDdlM1oyZHVUazVMbTV1ZFBUMDNSMGRNREF3UFB6ODRpSWlLV2xwWGw1ZVlTRWhQejgvTTdPem1Oalk4Zkh4NHlNakhkM2Q2eXNyRlJVVkkrUGo4L1B6NVdWbGZmMzk0ZUhoK1BqNDdDd3NQRHc4T3pzN1AzOS9aK2ZuMXRiVy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFNEFMQUFBQUFBVUFCUUFBQWVnZ0U2Q2c0U0Zob2VJaVlxTGpJY0NBaFFJSFlNOVNER0lDQUpHQWhVNEJFNEVFQVVmR29jTkZTa29Ld29NTWhBSEVrSU9uNFVJRHp4QlB3SUtIUWNhTEEwYkFZWU5DUnd6TGdvRk5BTUJDVGNIQllZVUtqazJDQzhqVGdzT0d4RWdIb1lrSnc4U1BpV0NHUkVCQVMyS1RJWktpMEFERTQyRERBNUVBZmFOREFjZ21pd1lFSTdSamdMR0huekljRzlJQUFJRGp0d1RaR0VCaklrWU13NEtCQUE3JyxcclxuJ2ltZy9oZWxtX3N1Z2FyLmdpZic6J1IwbEdPRGxoRkFBVUFOVXpBSXFLaW5aMmRuZDNkM0p5Y21ob2FLQ2dvSWVIaDIxdGJZeU1qUFB6ODJ0cmEvRHc4TFcxdFkyTmpVcEtTbjUrZm01dWJtTmpZMDlQVDdPenMvSHg4WStQajNWMWRVZEhSL1QwOURzN080S0NnbDFkWFM0dUxsbFpXYlMwdEhSMGRGQlFVRVpHUm5Cd2NFVkZSVk5UVTNoNGVHOXZiKy92NzBoSVNJQ0FnR2RuWjR1TGkzRnhjWHQ3ZTNOemM0bUppWHA2ZW9pSWlJYUdodi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRE1BTEFBQUFBQVVBQlFBQUFiR3dKbHdTQ3dhajhqanFRQmp1WjVRRnF5d0tDWmlrQUJzeTIzQkJJZFlnamdoSUY2eEdEcWRmaUVJREdKQThKTFo3L2lYUUVCa3Rlb3lCZ0JwQUhjdkxTeEVBekF4TWpFUEtDTWhFUVoyaHdORUlqQjFBQzRrR2lrT0xJVXhNQ1pFS3BzeUFCOGdjeElXZFM4d0NrUUtxZ0FsR1E0Y0VRaVdNQWVLaktzdUhSVVFGdytOcFpoRGk0MnpCREVyR3dwMXpYMHRqWUhjQUpVeWg0bERjNEI0ZVhORUhnUU5hMnh0THcxd1JGY0hBVjVjV3kwQllSaEZDd1VRUVlreWhVS1Nnd2dUemdnQ0FEcz0nLFxyXG4naW1nL2hlbHBib3R0b20uZ2lmJzonUjBsR09EbGhBUUIyQU9ZQUFMUzAvNjZ1LzdDdy8rRGcvK1hsLzgzTi82MnQvL3I2Ly8zOS8vajQvL2YzLysvdi8vdjcvOGJHLzg3Ty8vVHovOVRVLzluWi85dmIvOS9mLytMaS8rYm0vNnVxLzhqSC85WFYvN0d4LzdlMy83NjkvN2UyLzhIQi84REIvOERBLys3dS8rZm4vOHJKLzhQRC8vMzgvL3o4LzdxNi8rM3UvN201Ly9uNS8rdnIvOHJMLytUai83MjkvOUxULzl6ZC8vSHgvLzMrLy9MeS8rbm8vOFhGLzgvUC85cmEvOWpZLytQai82dXIvOWJXLzdXMS83eTgvN2k0Ly8vKy83S3kvK3pyLzdxNS84ekwvL1B5LytucS83Ky8vN3U4LzlQVC84TEMvOXpjLzk3ZS85ZlgvOGZILzhURS82K3YvN0t4LzlIUi8ram8vLzcrLzZxcS83YTIvOG5KLzlIUS8renMvL0R4LzdPei8vWDEvNnlzLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQUJBSFlBQUFkeGdGTVdPVnVGQmdZQkFVNENBaGxQUDFrQUFEdFVIQm85S0VFbVJqd3RHMFVmSGgxSUkwMDBEVXdYVlNJclFnVUZEalZXVUM1SEVCZzZTemNSTmhKSkwwb1RBd01VT0N3RUJCVWhVVE5FS2tCWEp5QUxDMWd3TWtNUFd0c0tDZ2tKS1FjSERBd2xKQWdJTVZJK1hPM3U3b0VBT3c9PScsXHJcbidpbWcvaGVwdGFuZS5naWYnOidSMGxHT0RsaEZBQVVBT1pXQUp5Y25McTZ1Z0VCQWZMeThnTURBd0lDQWdZR0Jzbkp5UXdNRFBqNCtQLy8vMmxwYVIwZEhWNWVYc2ZIeCs3dTdxS2lvaE1URStucDZRVUZCV3BxYWdrSkNiNit2dFBUMHcwTkRmNysvcG1abWMvUHorUGo0M3A2ZXAyZG5mcjYrclcxdFdCZ1lFdExTd29LQ3Fpb3FKK2Zud2dJQ0hSMGRNWEZ4YTZ1cm9XRmhiR3hzZC9mMzJob2FERXhNYkt5c2prNU9WVlZWU0VoSVNNakl4SVNFZzRPRG14c2JLeXNySmFXbGxkWFZ5b3FLbjE5ZlV4TVRHUmtaTVRFeExTMHRGMWRYVlpXVm5KeWNzREF3RHM3TzFSVVZFZEhSeTh2TDQ2T2pvaUlpRUpDUWo4L1A2YW1wbkZ4Y1VaR1JpY25KL3Y3KzlIUjBVMU5UUlVWRlQ0K1BnQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGWUFMQUFBQUFBVUFCUUFBQWZCZ0ZhQ2c0SWNGQTBPaElxS0YwQUdBbzg4Rm91RURrVUVCREVIRWhRalZVb2dpeWdpa0EwWGhBTkNHRlV3TDRSVEZTMGNsRllKSFRRVEVvSStWVW0waENsVkpZSklWWk8vZ2g4RkM0STVGUXJJZ3pvdWdqSkUwWU1oRXhrUFZVM1lnamhWUHhCVlRPQldHMVU3TmxVRDZGWVJSajBGSytnYkdFc0REQkVzMkZCUEVCeXdNc1RFa1F6UnBBaUFNRWhEbFNESU9sUTVvV2hCRlJXMFNCUndza2dCRlFJYUFvZ2NlYVBHakFTVTlsVlp5WEtsd0Y4UFBBQ1lTUk5BRkVXQkFBQTcnLFxyXG4naW1nL2hleGFuZS5naWYnOidSMGxHT0RsaEZBQVVBT1pNQUE0T0RsbFpXZjcrL2dJQ0F2cjYrZ1VGQlFrSkNRRUJBWEp5Y2xSVVZPN3U3cmUzdDFOVFUvdjcrMjF0YmVQajQ4M056VlpXVnBPVGs2cXFxcEtTa2w1ZVhpOHZMek16TStUazVCZ1lHRDgvUDBWRlJSWVdGbTl2Yi9MeThnY0hCMXRiVzhmSHgvVDA5QThQRDd1N3V3TURBMlptWmdvS0NuZDNkMkZoWVFRRUJDTWpJMnRyYXg4ZkgycHFhdC9mM3h3Y0hGZFhWem82T3JpNHVLS2lvdmo0K0o2ZW5wU1VsQWdJQ05IUjBUQXdNTUxDd29XRmhWeGNYQ1VsSlRFeE1aZVhsd1lHQnRmWDEwUkVSSU9EZ3cwTkRhbXBxV1ZsWlh0N2UyQmdZQlVWRlFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFd0FMQUFBQUFBVUFCUUFBQWVvZ0V5Q2c0STVDUkZDaElxS0JBNUJCZ1lmQ0EyTGloSktTd2tQRHd4TEdVQ1ZUQXM2U3o4emhBc1dTeGNraEFxZEhEZWhGRW9ITVNLQ0ppVWRsS0ZNQkN3RERvSUJTcjZLQUVuRXhzZUR5Y3ZOenNwTXhkR0N6OVRNMGRqVjF0emF6ZC9XVE5ndUEwa2V4d285QndpQ05Ta0RJendDaXdKRVJTcEhCSVE3TWtzK0poQXlzbUtKaGhDaGJNQllzZ0VDaENGTFd0Qm9KZ0FGamdJRlRpQ3BaKzBGaUFvWVFnVUNBRHM9JyxcclxuJ2ltZy9oaWRlY29scy5naWYnOidSMGxHT0RsaEZBQVVBUGNQQUkrYXNJS1JuNkd2dzJCd2hhSy85TUxhL25CNmpiRzcwVk9JOG9LbDhlUHMrLzc5L3ZINS9qUkxZd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUE4QUxBQUFBQUFVQUJRQUFBaGhBQjhJSEVpd29NR0RDQk1xWE1pd29VT0Ivd2hHWFBpdjRrU0xFeFZtZkxEeG9jZUhBQUlZR05DQVlBQ1JKQTBDWUtCQVFjbUJLMXUrSkNpQUFjdVpEMnJlTkNoZ3djNkJQWC9TWE9BVDV3R2lESEFLUEZxVUlOT2tINk5Lblpvd0lBQTcnLFxyXG4naW1nL2ltcG9ydC5naWYnOidSMGxHT0RsaEVBQVFBUGVSQUZWK3NQdjgvL0QyL2s2YlF1LzEvdmo3Ly9UNC8rcnkvK3p6L2x5TndQSDMvMTZRdy9QNC8vWDQvN3J6ckZhQXNtU2QwZmI2Ly9iNS8vajgvMDZaUCtqeC91MzEvMUNiUVV1U1JZS3RpbWU1VVc2bzVGdUx2bHVMdmZuNy82cmxtMWVEdGZmNy8vRDEvMnV5WCtQdS9sQ2NRSUt2anZQMy9ubklaZlAzLzYzcW4yT2F6clBTOHJMUjhPbjAvMk9tVi8vLy8vcjgvMi9CV3Y3Ly8rRHQvNGpWZCszei9vSFJjTi9zLy9UNi85dnAvMjIvVjRqY2U0eTBrMkttVjhuYzNQWDUvL0gyLzQ3ZGdHMnlZVkNkUW96YWZNTGQ5ZWp5L24vT2JKck83YjNhOUZtSHViSFA4SFhHWW1PYnorZnYvcS9ROEdDVXlPNzIvMUdiUS9QNC9ueXo1WlhqaUt6bG5WcUl1MUdRVm1HV3lxTGNqV1czVGxpRXQvTDMvMXlEczdIUThLZmJsOHJsOTRmWmVWQ2JSRnFmVGVidi9vclplbk9zNWZUNC9tNnA1TGZWOGFmYmx2disvKzczLzZQVTc0dXprMStTeFZpZVRaUGlpR0NWeUZTVFYyNm80L2Y2LzdIdW8vTDMvcUhiakdpaDFKREY2K0h2Lyt6NC8yS1p6RytwNUYrU3h2bjgvK254LzFpRnVFeVhQY2ZqOW1LWXkrdnkvdnI3Lyt6MC8xZUN0T3YyLzRXNzZlNzAvbHFKdk0vZjNQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUpFQUxBQUFBQUFRQUJBQUFBandBUGRBV0hHSVRxQUZDVHBnSVFUaXdaZElrU0FFbUVpeDRrUUFFSjBFZUpPRVQ2TXFhT3hzVUFNb0FNWklmd0tJTVdSRXlSb1dZRm93Z1dJU29wWUFlVTVRU1dPZ0FSQURLVVI0T0JtbEFBRUJTSkVTY0lTZ2dwZVRjWXdtRlJDQkFZSWpadHljWENCVlFCQVlHUVlvZUVKQzBja0VVbnZXQ1RNZ2tZVURPVTV5bUVBZ0JpUU1WL0FNSVRObEFBVWljZ1k4bW5Dbmh3OEhWbmdJT1hNRGhRd05Xd1lzRVNRQnpnc0hjOFlVcVlHa3lRNHVlZ1owQ1dGRHdnOE1IMVNNdUhDQlFxRVNaUVlzaW9Db3dvRkJXZGdNT0lCRGg0dVREMll3VUNERlFoc1RBeGoxb2VIbkpJRG4wS05IaHhnUUFEcz0nLFxyXG4naW1nL2luZm9ybWF0aW9uLmdpZic6J1IwbEdPRGxoTWdBeUFOVS9BTWZYK3BPNi9rTjQrRHBxOGVucDZ1UHMvYkhWLzNXby9sT0wvRnFTL1ByNy9MUEsrMk9hL1hpYjVvbTQvdkR4OHRmWTJVdUQrNGlzOTVuQi91dngvb2FtN2NiSzA5UGkvR2loL3E3Uy82aTMxNnJOLzZHNzk2REcvN25hLzdYWS8zU2I4VEpkNnFYSy8vUDErdEhlKzZ2QytiM1MvTm5jNDdUQzRkamsvTHJDMWNyZi90N28vWHl3Ly9iNCs4UE81WWVqNEg2aTc4N1ExdURtOUpXejlOZnAvM0NYNm42ZTRXZUc3NEtnNE5EVzVPSGg0ci9OOUk2czdQLy8vLy8vL3lINUJBRUFBRDhBTEFBQUFBQXlBRElBQUFiL3dKOXdTQ3dhajhpa2NzbHNPcC9RcU5RMUdqMnVJNWQwKzFNVWVMUllyRUt1aUdtODJZakxkQUY2b0JodFlRTFlBYVpGR0ZSNVBYeHNSZ29BTVNBY0ppUVhpb3VLS1NrWEFCeHhmb0NCUHhRMGhnQ0tLeXNlbjZDZm5ZNGtrajB6Q29Fek1SS2JGNTRlSDZHem9oY3BBQkl4T2xwYkpJYUpuaC9DdzdLMG9DdU9IRFl2YTFHK0hDVEJ4TlBVeEI2Mkpjdk5Uak9Hcng4RzFlTFYyRFk2MjBzRk1SemZCdTd1MUI0MUZCUTFzZUFHR2ZvWnlCd051MHdVMEpEUTdwMUJnelY4S1BTeElsK0dEUkJGU0Z6QmdnYU1IYW1VQUFDeENkL0JneDhvTFBSUkErSUdpU0k2cUJTUndoZUtCMHBHckV2aDRhTk5Bd1ZHcmtDcHNzT0UvNThUTXJBbzBlQUVyeU1ib3puTWNIT2ZCeGNLUjJUb0NiVHFCR1FnWGlKeDBZTUR6WDFndzVvVVllRFZWS3MvQTZnTnNLQkFpUndZajNRRHNDS3MzWWdwVmFKZHkxZXRBd0FrYk1nNFNvUkhqQXNiSm9pNGV6S3ZUNkI5SXdkd2NJREJoQUlWTk1BMFFvTmRCd2NPRkl2QVMzVkNoOUViTXBqb0lObUJoTW9KRWh4Z3dRRUdnVXBEWkM0Z01RRzA3OUJXUmJDZzRFS0JBaDhLUlB4MjBPSUFodGpRR1pBQVVEVGprQWN4QUhqdzNhSjc4d1BlV3dUSWtITmhBZGNIbkRPQURoMEJnZ1FtTGpTQWdPN0hnd29rVEREM250NDVodi8vTWREQlNBc3dzQjU3N2JubjNnSXB4Q0JEZlFUMGNFRUczZlhuSDRBWUdNaUFDUXNwSVA4QmdyRXBLR0lFSmJCUWdReWJEVUZBQlJQMmgyR0FHaktBUVhrK3NIQmdnaUlpRU1HT0pXQ0dZaEVyNW5jaGdERWFtSUFEeHltMEFJNDU3dWprQWl3NG1LSVEySzFnd290RmFwakFBaDFLa0tPQ1RvWVpnUWtwTlBBakVkaVpzRUpsV1JvWkd3TXNMR1RqbDJLR2ljQjA4OVhIRlFjc3RKQWxpQWRBcGVTSWRZWXBBQU51WFVTWUVDaFVVTUFFTVlLWUFBSUJkSGhBQkRvV3VxTUFuQXBBQXdVU2FFQ0FkVU9jQU1KME40TG9Ib2NLc1pDQXBwdDJ5aWtBTE5oZ0FRRkhQQUJEaVI4aUtDS2lDeTBRUVFJTWlDbHJwd09BUU1FQ04wQXc1UkF1b0JBREN5YXcxNlFFU1hwSVlnQk9Ic3ZwQUFNSXNBQUZNV2l3dzZKQ0tMRC9Rd050ZWZtbGpsd3FSQUVETkFDQWdMZmZncHNzQlNhWWlTc1NJNkFBUWdvck1FQW9waVFzNUVZS0RIaXJyNzRDa0ZBQUNCbzRtNFFDQk1EdzZaS0ZzaXB2RE1jK0RHNElBNVF3QWdjNXlEQ3FFaTdvMEVDUEpXUWFKZ01NcnNCQncvaytITUxPQTNBd0FsRVc3RkJmcmkvWU1HN01obklhQWJJaUQ3RHoweHk0WUlJTktsZ2NFQUVxR0wxc0F2Z0swUFRUVDVjOHd0UlZyOXdFeGxtWFFBRUpNU3pOdE01Zzc0d0RDUzRzUURVRVpqdmhBZ0VXTkVCREFjdUM0RFhjY1llQXd3SWpVT0JQMmFRNmdiRU1PWUJnQWowQTBJQ0QxNFhqVUFFQUZJd05RZzRXNE4zNEV4aERvRUVETVVDWk9BazhsTUFCQnlYd1FFTG5CU3dRWjBNREdzaXd3d09qUStIREF3VElvTUVOTmtoUWdzVDAwRk1BQ1F0SUFNSU5Hb1F1dENWREtBQThCQlpvQUVNRERaUlJBZmN3YUtDQ0RCRHMzbnNnQ2xoQndBNFF5R0RCKysrVHZ3TUJENHlBRy9WSEtPRENGUVQwMy84VnhjR2ZGTzRud0FKR0lRZ0FPdz09JyxcclxuJ2ltZy9pbnNlcnRhZnRlci5naWYnOidSMGxHT0RsaEZBQVVBTE1QQUkrYXNJS1JuNkd2dzJCd2hhSy85TUxhL25CNmpiRzcwVk9JOG9LbDhlUHMrLzc5L3ZINS9qUkxZd0FBQVAvLy95SDVCQUVBQUE4QUxBQUFBQUFVQUJRQUFBUlA4TWxKcTcwNDYzdUVCOEEyTFNUREJLSlVNb3FSUHFZaUQyOWozKy9SQ1FDYWtndVRUN1JxdldLejJzMzIwb0FDZ1FGTjQ1QUFGSVVDZ1VCMWVBTlpRZ0t4cVQ0TTJ6RTVOVmcybXZCTkJBQTcnLFxyXG4naW1nL2luc2VydGFmdGVydi5naWYnOidSMGxHT0RsaEZBQVVBTE1QQUkrYXNJS1JuNkd2dzJCd2hhSy85TUxhL25CNmpiRzcwVk9JOG9LbDhlUHMrLzc5L3ZINS9qUkxZd0FBQVAvLy95SDVCQUVBQUE4QUxBQUFBQUFVQUJRQUFBUlM4TWxKcTcwNDQwRVFhbHJGSlY5SUJRV1JnS2FFcG13TEtIQXJBVUJnRFBiazlKUWY4T0VvRG9tWDNLNFIwQTFpU1laQzBRQklxUm9CUTlyUWNyTUxyaUNNell6RGpjTUNyVkdqM1F6b2NXNkpBQUE3JyxcclxuJ2ltZy9pbnNlcnRiZWZvcmUuZ2lmJzonUjBsR09EbGhGQUFVQUxNUEFJK2FzSUtSbjZHdncyQndoYUsvOU1MYS9uQjZqYkc3MFZPSThvS2w4ZVBzKy83OS92SDUvalJMWXdBQUFQLy8veUg1QkFFQUFBOEFMQUFBQUFBVUFCUUFBQVJNOE1sSnE3MDQ2MjBCQ01Fd2JJNEVLRVZCRUpyak9rRktKQWdwR1N0ZGM4L1EvRC9LUVVEMDhCNkxKSU1ST0NvWkNzTnhxYWlPZUVEZzhUQVVmSnpQSnU4Wm5VS3R4Mnp3eUc1YklnQTcnLFxyXG4naW1nL2pzZHJhdy10by1kcmF3LWhlbG0ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQS84QUFBSFJDQUlBQUFDeldaNXVBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBZ0FFbEVRVlI0bk95ZGVWeFR4L2JBSndrSmtJUk5BcEVsckdyWUZ4RVhncWdWVUxHMXRiaTMybGFyMWVycmEvdTB5N092UExxOFo1VmFxMDlGL0ZYNzNOZlNxZ1ZGTEVJTlVoRkJjRU5GaENEN25vV0ViTDgvcHQ1M3ZWa0lTVmlkNzhjUDN0ek12WFBPM0xtVE16Tm56cERVYWpWQUlCQUlCQUtCUUNBUXp3SGtnUllBZ1VBZ0VBZ0VBb0ZBOUJNVzhMOEZDd1pXREFRQ2dVQWdFQWdFQXRGWG5Eang1NEdGNWlrRUFvRkFJQkFJQkFJeGJNQVA5Q1BQSHdRQ2dVQWdFQWdFNG5rQldmOElCQUtCUUNBUUNNVHpna1hQU1JCRGx1Ym01cGFXRnV3am5VN25jRGdES0k5eERCNHRrQ1JJRWlUSlVKZkVGSWFIRnVYbDVRQUFpVVFpRUFnNEhBNmRUZ2NBY0xuYy9wZGtlSlFuMGdJeEZFSFcvM0JESUJEazUrZFhWMWZESmw0VERvZmo0ZUVSRmhZV0hoN2V6N0laenVEUkFrbUNKRUdTREhWSlRHRTRhWEh2M2oyQlFLQXJEWWZEOGZQemk0cUs2bE96YnppVko5SUNNWFFod1hqL0N4YWdWYjlESGo2ZmYvYnMyZWJtWnV3TW9mdmUwdEpDK0piSDQwMmZQcDNGWXZXcm9Ib1pQRm9nU1pBa1NKS2hMb2twREFNdEpCSkpjWEV4UVFzSWwxNEhEOG9sTG9TdldDeldTeSs5RkI0ZURxY0Z6TVV3S0UrQXRCaE1XaUI2Qzk3VVI5Yi9jQUQvSnRQcDlQRHc4TEN3TUM2WHE3WHRMaTh2THlrcEtTNHV4dExIeHNiR3hzYWF0NkUzZ3NHakJaSUVTWUlrR2VxU21NTHcwd0lBd0xGc0NXZFdjK2wxSE1zV09ya2JuMUtpb2dsa2p1VVNsMktSaDBEbUNFL0NQZ0NQeHpPdkpNT2pQSkVXL1MwM3dod2c2My80SUpGSWR1N2NDYWZ0ZWp0Z1UxeGNuSjJkalYyN2R1M2FnZkx6R3p4YUlFbVFKRWlTb1M2SktRdy9MUUFBUE5zSHNRNjNPWll0K3ErQ0NHU08yVzJCL003UjhDT1h5MTI3ZHEzUjF0N3dLMCtreGNCcWdUQUZaUDBQRXdRQ3daWXRXeVFTQ1FCZ3pwdzVjK2JNTWVJbXhjWEYrL2Z2aHpkNTY2MjN6RExTMHlzR2p4WklFaVFKa21Tb1MySUt3MDhMTHIxdU9UdlBrU3JxN1UxYTVNeDlEVEhRS1loT3AyL1lzTUVJYTIvNGxTZlNZbUMxUUpnSTN0U24vUE9mL3dRQW5Ed0o1czhmUUpFUXZRWjdtVGtjemdjZmZEQisvSGpqN3VQaTRqSmx5cFQ2K3ZyNit2cVNraEpIUjBjUER3L3ppcXFId2FNRmtnUkpnaVFaNnBLWXdqRFRnazd1VG1RVkxtWG4weW5kUFYrbUFaM1N6Yk45UUNkMzM1SzR5K1h5d3NMQ29LQWdPenM3SXlRWkh1V0p0QUFEclFYQ2RQQ21QckwraHlUNGwzbkRoZzBtTHNTaFVxbmp4NDl2YVdrUkNBVDkrVW9QSGkxNkpjbkZpeGNGQW9HWGw5ZUFTOUlqZlNwSmQzZjNvVU9IZnY3NTUzMzc5bTNkdW5YZnZuMi8vZlpiYVdscFZWVlZRRUFBaFVMcE4wbDZCWkprdUVwaUNzTk1DenE1ZXdNbkk1eFpaZUlOZmF5YndwblZoVUlmU2JlcVZ4MkFZVmFlU0F1TWdkSUNZUmFROVQrMGtVZ2tYM3p4QmZZeW0ydjlUWGg0T1BaS2M3bmN2bDdhUDNpMDZKVWtuM3p5U1dwcWFtWm1wa0FnbUQ1OWVsOUxvbEtwQ2dzTEt5b3FEaDgrbkpXVmxadWJlN2tuZnZ2dHQ2dFhyd0lBR2hvYVhGeGNTQ1NTMmN1a29LQWdPVG41dGRkZXUzYnRtcFdWbGEydGJXQmdvTGUzdDBLaGVQejQ4ZUhEaDVPU2txcXFxbGdzRnNGYm9LK2ZqdUVnU1lhWkpLWXd6TFNBcHIrQlh2NDlZbWZSRmNSNGduVUFwa3laUXFWU0RaUmtlSlNuaVZvb2xVb3krWC9icWc1UkxRajBzeFlJYzRFMzlaSGYvOUJqeTVZdDVlWGw1bjJaTWZidjM4L244K2wwK3FaTm0vcDBYZi9nMGNKd1NUNzU1Sk1MRnk2OCsrNjdKQkpwKy9idEw3NzQ0ci8rOWErK2s2UzF0ZlhZc1dNN2R1eWdVQ2dqUjQ2a1VxbndiZFVGaVVSU3E5VWtFa2t1bHpjME5DZ1VpdmZmZjMvQmdnVU9EZzRtU29LZFZ5Z1VTNWN1dlhidDJzU0pFM2s4bnIyOVBaWXAvQXVUdGJXMTVlWGxYYjkrUFNJaTR2RGh3eFlXeit3cllxNm5zMzc5K2dNSERzQmpXREtZQUFUVWF2VmJiNzIxZWZObXd2aytxaWRHWUVaSm1wcWFpb3VMQlFKQmZYMDlBR0RreUpFY0RpY3NMTXpaMmJtZkpUR1I1N0F0TWdXb0JUVDkzV2t0T2w0Rkl4SElITGNJRWlRcUdwZkwzYkJoZ3lHU0dGS2Vjcm44d1lNSHhjWEZ3Y0hCZ1lHQmhBbERyUXlHV3FGV3E1VktKYUZaMDBWWFY1ZTF0VFhoNUdEUXduVDZUUXVFdWNDYittaTNyeUVHbjgrSDYrNlhMMS9lRisvYndvVUxxNnVyQlFMQjhlUEgzM3JyTGJQZkgwTFFRcVZTM2JsejUrelpzNTJkblppQmkxbHlaREo1eXBRcE1URXhWbFpXK0p2SVpMSzJ0amFSU05UUjBlSGs1RVNuMDBlTUdBRkhXUXpYd3ZEeS9QampqN095c3RhdVhjdGdNRWdrMGwvKzhwY2RPM1lBQVBSM0FJeVdwTDI5ZmRldVhXZlBubDIzYnAxY0xsZXBWQUFBek03R3JzSSt3dUxDVEhBeW1VeWxVdFBTMGxwYVd0YXVYV3RuWjJkNm1mRDUvSGZlZVdmMDZORmZmZlVWbGlrOHdKditBQUI3ZS9zNWMrYTgvUExMeDQ0ZEN3ME5UVXRMdzY4UE04dlRLU3NyMjdkdlgycHFxcU9qSTZGQTRBRytXRnBiVzk5NTU1MmxTNWNHQndmamIyS0tKRjkvL1hWR1JvYXRyUzE4TkJpYWZTRUM4Q3N5bWR6WjJabVFrTEJ4NDBaemxZbFFLRHh3NEVCN2V6ditKSFRTTFN3c3RMZTNYN1pzbVkyTmpaNmJtMHNTc3pBZ2JWR1A2YUhscDFLcDhBTzZLcFdLUXFGb05WNzdSNHVMRnk5Q0xSWTVGNWhyMUI4UHg3SmxrWFBCdnZxWTh2THlpeGN2eHNYRjZVcHBlSG5LNWZLS2lvcHo1ODQ5ZVBCQUlCQllXRmlNR1RPbVI1TjZ3R3VGVXFuczd1NG0vQmpwd2NyS1NxMVd0N1MwNEFmSUIxd0xzOUEvV2lENkNPVDVNNVNRU0NSNzkrNlZTQ1J6NXN3eGV1R09mcWhVcW91TFMzNSt2a0FnNktNWlBVMHRIajU4dUdmUEhncUZRcVBSYURTYWhZVUYvQXNoa1VobFpXVVdGaGErdnI2WVJkWFkySmlWbFhYczJMSGJ0MjgvZnZ3NE56ZTNxS2lJeVdRNk96dFRLQlFEdFRDOFBELysrT01MRnk2c1c3ZU93V0RBTXpRYWJlellzWWNPSGRMdkFtUzBKSHYzN2oxNTh1U0tGU3ZhMnRvVUNvWHlLU3FWQ3Z1cmlVcWxVaWdVS3BWS0xwZExwZEtZbUpoRGh3NVJxZFRJeUVnVHkrVFFvVU1MRml4NDlkVlhaOHlZUVhvS1p1UGlad0RnUjNnY0ZCUkVKcFAvOXJlL2VYcDZob1NFbUZnbWVOYXNXY1BqOGFLam8yazBHcFZLdGJTMGhBZXdDbUZuNExHdHJTMkpSRHA3OXV6Q2hRdk44blFBQU9mT25acytmZnFubjM2YWtKQXdCOGZMTDcrTS9kVUsvR3IrL1BuVzF0YTF0YlhRa0RLOVRMS3lzdExUMDZWU3FaV1YxZVRKaytmTW1UTjU4dVNvcUtoeDQ4YlI2ZlQ2K25xUlNQVEhIMzlJcFZKZlgxK3ROemZqMHpFTEE5SVc2VWVwVkhaMGRGUldWbFpXVmpZMU5kWFgxemMwTkRRME5OVFcxcmExdGRuWTJHaDZ4ZlNQRnJ0MjdaTEw1ZUhNcWtUV2RiUGZIOEt4YkJYSUhPdTc3U3NySzNYNS94aGVudDNkM1k4ZVBUcC8vdnk5ZS9jQUFHMXRiUjBkSFNOR2pMQzN0OWMvQXpDd3RhSzd1MXNzRmpNWURIemZUeE44NXg5T3h1Ym01bloxZFkwY09YSXdhS0dKVkNydDdPd1VpOFZkWFYxZFhWMVNxVlFxbGNwa01ocU5wbXNVQS9TTEZnanpndnoraHlxWEwxOHVMQ3lFMFhiN0xoY1dpd1ZkK2xwYVd2b2lwSmVtRnYvOTczOFZDb1dEZ3dPWlRMYXdzS0JTcVZRcUZiUCthVFFhZzhHNGZ2MzZ4SWtUNFFER3c0Y1B2Ly8rZXpxZDd1L3Y3K2JteG1LeHZMeThXQ3hXU1VuSnRXdlh4bzRkUzZWU0RkSEN3UEw4NUpOUDRLZy9rOGtFVDAxYkVvbEVwVkxEdzhONzdBQVlJVWxyYSt2eTVjdlhyRm5UM3Q2T2Izd0pJLzFBaDY4TFpwRjNkWFZObkRneEpTVmwyYkpsMXRiV1JwZEpXVm5aZ2dVTFB2end3N0N3TU0zY0NVWS9RV0JQVDA4dWw1dVVsSlNRa01CbXM0MHVFenpwNmVrblQ1NkVvK2FFN2dmUW1JaUFJb1dFaE96ZnY5L0Z4Y1hmM3g5L0s2TWx1WFRwVW1CZ1lGaFltS1dsSllQQllEQVlkRHFkOFJRNm5RNC80Zy93SDIxdGJXdHJhd1VDQVRhTWFrcVpaR1ZsRlJZV0FnQWlJeU9YTGwzSzRYQXNMUzNoNjJOcGFjbmhjS0tpb3FSU2FXMXRiVzF0Ylk4ZEFETytPeWJTLzIyUkh0UnFkVnRiVzJGaDRhMWJ0eW9yS3dVQ1FmVlRhbXBxYW1wcTZ1cnFiR3hzWUZlelA3WEl6TXk4ZGVzV0FPQUR0d3VFQ0Q5djMxOXhwbVdzY2YvS0pTNDh1d2Y0dS9sYU5XYTNCOG5sY2lxVnl1VnlOU1V4c0R5N3U3c2ZQMzU4OGVMRjB0SlNDb1dpVnF2SlpISlRVNU5RS0hSMGRMU3pzOVBmQVJpb1duSHo1czB2di95eXU3dmJ5Y25KeHNaR3oveGVSVVVGZzhHQTh4Z3FsZXJhdFd1Ly9QTExIMy84RVI4Zmo2azJlT3EyWEM0L2VQRGc1czJiTXpNeno1MDdkKzdjdWJObno1NDVjK2I4K2ZPQmdZRk9UazU2cnUxckxSRG1CVy9xNit1L0lnWWJseTVkQWdDODlOSkx2YnJxNHNXTFc3U3hjK2RPemUzZklUQ0w4dkp5WFFud3BDV25uZjN2MmRySHRRYktvNm5Ga3lkUExDMHRvWCtMV3ExV3E5Vnl1UndhbEhDUW0wd21xOVhxMnRwYUFFQlhWMWRtWnFhL3Y3K3pzM04zZHpjQWdFcWxRdThMTHBlclZDb0xDZ3JndFQxcVlVaDVRbDkvYVBwanhpV0VSQ0l4bWN4MTY5YWRPM2Z1NzMvL3U1NmI5RllTUHAvUFpESVZDZ1VobWFiZmY0OHJBZVJ5T1lQQmdPdUFqWkFFc25MbHlzVEVSRDgvUDRCek1jSUxnRGY2Q2I1YmFyV2F5K1crOHNvcjc3enpEdjZlcGp5ZEw3Lzg4dlhYWDhjeXhmOEZUM3NDRUV3a3RWcTlaTW1Tcjc3NlN2TnV4a2tDYXlrMjY0TE56eWdVQ25pTXpjUEFBeXdOTm0raitYeU5rMFFvRkVMVGYrWEtsZkh4OFZvdkJBREV4OGV2WExrU0FGQllXQ2dVQ25VbE0wV1N2cUNmMnlKZEw1UktwWHI4K1BHRkN4ZHUzNzdkMGRGQklwRWNIQndZRElhVmxaVzF0VFdGUXVucTZucjgrSEZtWnVidDI3Y0p6bUI5clVWMmRqWUFnR2Y3d0lpNC9yM0NrU3JpMlQ3QWN0VEVrRnFoVnF0Ylcxdno4dkp1Mzc3TlpyTmRYVjBCQUM0dUxpNHVMbmZ1M01uSnlXbHVidFlzUUFMOVhDc0FBTTNOelFLQmdFYWo1ZWJtNXVmbk56VTFrVWdrbVV5MmZmdDJtQjdQRHovOHNIMzdkZ0JBZDNmM3BVdVhkdTNhSlpQSlltSmlKQktKVXFrY1FDMjBRcVZTSjArZVRDYVRuK0NvcmEwTkN3c2JOV3BVajVmM1NndkU0QUZaLzBNR2dVRFEzTndNdCtidTFZWEhqeDluc1ZoY0RRUUNRWDUrdnRaTFdDd1d6RVZYQWp4Q0lPd0NYVXFnN0RHbExpMnc0UkFMQ3d1UlNIVDkrdldpb3FLYk4yOUtKQkk0d1FwTmJScU5wbGFyTDEyNkpKZkxSNHdZSVpWS2xVcmwvZnYzcjEyN1ZsRlJvVlFxWlRMWnFGR2orSHorL2Z2M2U5VENrUEw4K09PUHo1OC9EMzM5OGVjeHp4YTFXczFrTXQ5Nzd6MzlIWURlU2xKV1ZzWm1zL0cvRTRSQkprMGJoV0Q3WXBhM1VxbGtzOWtsSlNYR1NRSUFXTE5tellnUkkrRGtCbjV3SFRPdkNjTGd1d0V3SllsRWlvK1B0N0d4V2JObWpkRmxnckYxNjFaSFI4ZHAwNlpoV1FCY2x3d3ZCbDVhRW9uMHdnc3YyTnZiZi92dHQ0UWJHaTBKdmplSUwzK3RIU1JDNFdqRk9FbmcwdWZJeU1nZTEvVTZPenRIUmtaaWw1aGRrcjZnUDlzaWhVSlJXMXQ3OCtiTmpvNE9mRXFWU3BXZm4vL0xMNy9VMXRhcTFXcHJhMnQvZi8rcFU2Zk9uajE3N3R5NWMrYk1pWTZPNW5BNEZBcWxvNk1qTHk4UHRqLzlvMFZ4Y2ZHZld6ZzUzdENWWmdNbjQvL0cvTkR6UCs2UDhHQ09ZN0d1VzhGY0pCSkpjVEV4amVHMVFpZ1VWbFZWT1RzN1Q1czJiY3lZTVFBQUh4K2Y2ZE9uanh3NXNxcXFTaWdVNmgvVUFQMytDd1VBY0hSMGpJK1BYN1Jva1Znc3pzek01UFA1RlJVVlQ1NDhlZno0OGZYclJHK3Jzckl5dFZvdGs4bnk4L09QSGoxcVpXVVZIeDgvYmRvMFcxdmI3dTV1VEx2KzEwSVhIaDRlbXZPQmtaR1JOQnF0eDJ0N3BRVmk4SUJXL1E0WjRLdWxkV3Z1OHZKeWJGTjNyY1RHeG1ydTFOalMwbEplWG43bXpCbEhSMGZOT2J1d3NMRGk0dUxpNHVJZU53V3NBM1YwUU84R0J1MHBvMVVMekc2alVDaENvWkJHbzNHNTNPcnE2dnYzNzQ4Yk4wNHVsOE94ZnlxVjJ0M2RmZlBtVFE4UEQ1bE1abUZoMGRyYWV1Zk9IWGQzZDRGQUlKVksvZno4U0NTU3RiVjFSVVVGbkpqV280V2U4b1RBWmI3cjFxMkREaitFSHlTOG16dUR3WGp2dmZmZ1lJK3VSY0M5a2tRaWtjQUpjYndkcWNlNWhTQVBCUHRJcFZMRllyRnhraWlWeW1QSGpuMzU1WmVhV1dzVkFIK0dzQ1o0enB3NW4zMzIyWTRkTzdDRmZVWThuWTZPamsyYk51R2o5Mmg2UStrNVhycDA2Y2NmZjd4OCtYSVlCOG00TWlIY0Z1c0lFWXgrd3JQRGp2RUZxTmtaNkswa1RVMU43ZTN0MEx3QUJoQWZIMTlXVnRiZTN0N1UxS1IvVHQ5d1NYYnYzcDJhbW1wSTdoZzlyb29HQUt4ZXZScDJGL3V0TFlMNWxwZVhGeGNYejVvMUN6cXF5ZVh5dTNmdmxwYVd3cmthQndlSHdNQkFMcGRyYjIrUDNXckVpQkZXVmxaS3BiSyt2bDRpa1pTV2x2cjQrQkFzcHo3U0FuYnNPWll0cGc3OGs4aEEzYk5sNlVnVmNTeGJCRExIa3BJU2dtWFpZNHY2Wno0azBvZ1JJNktpb2l3dExTZE5tblQyN0ZuNElreWFORW1sVW9uRllyaDJxMGRKK3ExV1lNdDhhVFRheElrVHhXTHgwYU5IOC9MeUtCU0tXQ3dta1VodGJXMkVtN2k0dUNpVnl1enM3TXpNVEh0Nys1aVlHQjZQQjE4M1dFOE1hUVBOcTRWK3lHU3lacG5ySDZyQVk3Z1dpTUVEc3Y2SERIQjFGSFM4SnJCejUwNUhSMGRkN3ptWHk5VzZTZnVZTVdPYW01dGh6OEhEdzBNek5QdisvZnNGQW9GRUlqRmp1QUE5V2tBb0ZFcG5aK2Y5Ky9lbFVxbXJxNnRhclZhcFZGUXF0Yk96YzgrZVBSd09wN1cxMWMvUEQxci9Db1dDVHFkN2VubytmdnhZSkJLUnlXU2xVbWxqWTFOZFhkMmpGdm9sSWZqNkF3MGZkL0JzZEJmWUFkQVRCYWhYa21CTHlqUnRiclZhYldscGFXbHBpVFhOOE1jSkcxTEMvOFV1SVFTY05seVNIVHQyUkVSRXdMZzZtb3FEWi9za21zV0NMelJIUjhld3NMQ2RPM2YrOWE5L05VSVN5TWFORytQaTR2ejgvSFFOcU9PTmI4M1M0M0s1Y1hGeEd6ZHUzTFZybDlGUEI4dUlZTTBUQ2dRdklXRWVRT3VjaVhHU3dDSFlTWk1tYWQ1S0Y1TW1UY3JKeVNrdUx0YmZZVEJja3NiR3hsbXpabjMwMFVlYUhSNmc4U0JnYlZTcFZQZ2lndDE3Zk1wTm16WTFOamIyS0lrcGFKWW4xcEZyYm03KzlkZGY1ODZkUzZQUnJseTVVbEZSQWUwOER3K1A2T2hvVzF0YnJGbUFXRnBhamhvMWlzRmdGQlFVMU5UVU5EUTAzTDE3TnpnNDJNRDN6aFRndUU4NHM5cWt1NURJUU4yRHN3MUdPTE5hSUhQVUhHL1MzNktxVkNxUlNOVGQzVzFyYSt2bzZEaHIxaXdBZ0VRaXdiOExjRUlQQU5EZDNkM1IwV0ZsWlVXbjAzWDFCUHF0VmxBb0ZDeGtKd3hBUjZWU1Q1MDZWVnhjckZLcGhFSWh0cFlYUTYxV1YxWld0clcxT1RzN2g0ZUhCd1FFT0RrNVlVMGlQcTdSUVAzT0drS1BNekFZZmFRRm9rOUIxditRUVNBUUFBQzBycldTU0NScjE2N1YrcFVlZUR3ZUhQSi8rKzIzNGR3eEhqcWR6dUZ3QkFJQlhNNnY1ejR1d01VUk9OSkF6MU9FUUljV3BLY0FBRlFxRll6VzB0all5T1Z5WVdROWxVcGxZV0hCNVhJZEhCd0VBZ0gyZzJGaFlkSFEwSER0MmpVSEI0ZUFnQURNa1JxdUI5Q3ZoWjd5eFB2NkE0MUdjTW1TSlI0ZUh0OTg4dzNCL21Nd0dILzV5MTkwelFEMFZoSk52eEY0UUtQUnlzcktmdi85ZCt5SDA5blpPU0lpSWlnb1NDYVRFVXBWNndocnJ5VDU4Y2NmWjgrZURYUVl0Yi8rK3V1UkkwZndkL0R3OE5pMGFSUFFzTWpoUng2UHQyL2ZQc3o2NzIyWkZCUVVuRDU5R25xdEVDWVdzTDlSVVZIZTN0NkhEeDhHR2dZb1BIanp6VGVYTFZ2MnhodHZUSmd3d2JneTBRV1dDM1R1aDhka01obDZyQkdzVzZ4a0NEZnByU1R3SkNHU3FYNkNnNE56Y25MZ2hYb3d1a3l3TGgvMDNpWk16c0NQbUxsUGVJNEFBT3dxUXlRaFlHSmJCR1Z3ZEhSODh1UkpTMHZMRHovOGdKMkVnUVRpNCtOdGJXMjF4bnVoVXFrT0RnNGhJU0V0TFMwU2llVFdyVnV3UDlDbldrZ2tFdWhzemFYWEdhS3lka2drdzAzL1AvTnFDZGQwOHRaVEsxUXFWWE56ODQwYk45cmEyaVpPbk9qdDdZM0xYTXNBYzIxdExaL1BoeTRsTEJaTGE0SDM1eThVSGhxTk5tblNKTEZZbkp1YjI5cmFxbFFxM2QzZENXbGdyVzV0YmFYVDZiRGZLSlBKTEMwdEI0OFc1c1Z3TFJDREIrVDNQelNBTHpNTUdOSnZtY0lkdkxGeGROUFJwWVg2S1RCc05wdk5EZzRPSGoxNmRGVlZGV1lRMk5qWXhNYkd6cHc1YzhTSUVUS1pERm9QY3JuYzI5dDc1c3laRXlaTW9OUHBDb1dDUXFGSXBkTFJvMGZyMTBKUGVYNzY2YWZROUdjd0dKalJoaGt1QlFVRlk4ZU9yYTZ1aHV0bzhmMFdiQVpBMXhxQTNrcWlGUktKSkJBSW9OYXpaODkrOGNVWFEwSkNTa3RMNzkrL1Q2VlNOUzFMcmVNM0Jrb0NZeG9HQmdaaVdSTktBd0F3ZHV6WUl6ajgvUHhTVWxJSVBSWnMzRGNvS0tpaG9hR3BxY200TW9HTGZUVm5ZekRac3JPemVUeGVaV1ZsZG5ZMmZySUNMd09Ed1ZpeVpFbHljckp4WllLSE1CMEV1Nk8xdGJVQkFRRXpac3hJVEV5Y04yOWVWRlJVZW5xNkllNnp4a2tDdC9UcTFmMWhZbmloR1NVaE9EN2hqWHY4d0QvMnJmcnBzbjc4WDBMUFFiOGtwcURueWNMT0c3NmpTeUtSdkx5OFhuenhSWHQ3ZXoyaEhtRk1KenM3T3dDQVJDSWg5TWI3VGdzQUFOZmFhT3VmQkF3ZTR0V1RsNTd5Vkt2VmJXMXQrZm41V1ZsWjVlWGxkWFU5aTFwWFYzZi8vdjNNek15clY2KzJ0YlhwR29UdXoxb0JrY2xrVzdacytmNzc3MHRMUzJGQXRxNnVyczdPVGtJeWhVSWhGQXFWU21WdGJXMWhZZUYvL3ZPZlBYdjI2TXEwLzdYUVJHc2ZUSDlVVXdKbTF3TFIxNkN4LzZFQkhKdlg2c0RUZHpnNk9nSUF1cnE2OUNjejNCOVJseGJZbUwxY0xvZVpTcVZTVDA5UG1Vd0d2NEsveEVLaDBOWFYxY3ZMcTdHeDBkM2RYU2FUMmRqWWVIdDdZeVA5WkRJWlJvNkxpb3JTcjRVdVNiQlJmemhvaDNrQ1lPWUxuOC8zOS9kM2NuTGk4L2tUSjA2RVYyRTJMdFlCMkw1OU80bEUrdnJyci9FMzc1VWsyQTJCTnY4ZlYxZFhMcGNMaitWeWVWZFgxNDBiTjdoY3Jsd3VKOXhCODdhR1MvTHc0VU1uSnllOEFVZHcrTkc4ODZ4WnN6NzQ0SVBHeGtZc3VDZStjQUFBYkRhN29xSUM4emczdkV5T0hEbFNWMWYzMldlZjRaVWlLSGorL1BudzhQQ1JJMGVlUDM4ZWk2U3A2WWlTbUpoNDZkS2xJMGVPTEZteXBMZGxvZ2VZaFV3bUd6Tm16T25UcDBlTUdBRUFLQ3NyVzd4NGNXUmtwSWVIaDBLaDBEVWhnOGQwU2N4RnJ5VEJCdlZUVTFNWExWcGtaMmZYM3Q2ZW1aa3BFQWdXTFZvRWc0SURBTlJxOVlZTkd6SXlNZ1FDUVVKQ0FqUWFBTTdVd0hmcTlFdWlpZWx0RVI2NHU3WlNxYlMwdEF3TURJUm12UjdJWlBLSUVTTnNiR3hxYTJ0aDZDZENBck5yWVE1NlovcnJRbGQ1cXRYcXpzN09LMWV1NU9ibXF0WHEwYU5IQndRRUVKemlzTTR6ZGo0d01MQ2lvdUw2OWVzNU9Ua2tFaWttSnNiT3prN3pyZW5uV3FGV3F3VUNRV3RyYTFsWm1ZdUxDM3lSNFRJelFrb3JLNnZBd0VCYlc5dWFtcHJ1N202NFZrUlhwZ05TdHdtb1ZDcllXY1UzN0NKUkwxYVNHS2dGWXZDQXJIL0V3R05qWXdQRGVzSy9zQUdDTGtCS3BSSWFqZ3FGd3Q3ZW5rcWx4c2JHSGpod1FDd1dXMXRiazBna09wME9UVjR5bVd4bFpWVmZYKy9sNVlWdExOVXJQdm5ray9QbnorTzM5TUtBRGYyOWUvZUtpb3IrOXJlL2xaZVhKeWNuRTlaTllvMG1maEV3b1FQUUt3aS9rZmdER0RLUzlIUmJYeXNySzlqaUUveHpESGZjMUVwbFpTWDArTWYzUFFpT0hKaFVoTEZTN0N1Q01BNE9EbzhmUDhZNlRvYno5ZGRmcjFpeFFsZDNDQUJ3OCtiTi9QejhsSlNVMHRMUzFhdFhQM255eE5YVkZldDFnR2M3QUV1WEx2M3FxNi93MXIvUkVBb1oxbFdSU01SZ01GUXFsWmVYRndBQXhwQWg5S0RNd3NpUkkrdnI2N3U3dTdYNkZXZ0Y5cFkxblpWTkFWT3FyS3hzeDQ0ZHRyYTJpeGN2bmo5Ly9yeDU4NEtEZ3hjc1dKQ1dsdGJSMFhINzl1MkZDeGR1MmJMbHpwMDc4K2ZQWDdCZ3dZVUxGMkNBZkh3bDBkODc2Z2ZnNUFQZWZVc3ppcjlXNEk0bHNOYjF1RzJ0NlVEM203N1kzRmMvY09HdklTa2xFa2xlWGw1ZVhwNUVJZ2tLQ3Bvd1lRS1pURzV1Ym9hVHR3QUFxVlFLQUpESlpIQVFIZnA1V2xsWlJVVkZ0YlMwM0wxN056YzNGM3JiOTdoTmRWOURJcEZHalJyMTczLy91OGVVdTNmdjdnZDVUQWQ3M2NyS3l1QlNnWWtUSndvRWdwcWFHZ0JBWm1abWRIUTBmblU3WWppQnJIK0VxZlRLSDFFcnMyZlBQbno0TUoxT3gwdzZDd3NMek1DbFVDaU5qWTFZUUVNV2l6Vmp4b3k5ZS9lR2hZWFoyZG5CTmNFV0ZoWnF0YnFtcHFhcnErdU5OOTdvbFNNRVpPUEdqWWNQSDA1S1NtSXdHQVFiR3VQcTFhc3pac3dBQVBqNStYRTRuRC8rK09QRkYxL0V2c1Y3UHNBd29IQXJQVk02QUFCblhPS05Ed3FGZ2tWcGFHMXRMUzh2RHcwTnhZd1Z2SEdzZWEzaFBIcjBDQnY3QjlxaTZ4QU9TQ1RTd1lNSHg0NGQ2K3pzVE9ncVlHbFlMTmJqeDQ5N0t3bU0wNDlONlJCOGtHQVcyZG5aaVltSkFJRFEwRkJ2YisrY25KelhYbnROL2V5cUFPenlTWk1tbVJpZmpsQTk4R1d1VXFuZ09td2FqWmFYbDBlbFV0bHNOdlowTUxITll1TnlPSno2K3ZxeXNqTDhmSmQreXNyS2dMbW5FYkNpT0hiczJCdHZ2UEg5OTkvUG5qM2IxdFoyMWFwVmZENy9yMy85YTBoSWlGQW83T3pzakk2TzNycDE2dzgvL0FDOTVPR0FPdjQ1bXRJN01yMHRBazhERU9Qcm1Gd3VMeWtwbVR4NXNuNVhDclZhTFpQSnhHSXhITWJXSFBzM2tGNzUvUU1BQ0R0OG1ZNUFOa0ovQXNOenpNM056Y25KRVFxRlpETDUvdjM3ang0OVVpZ1VlSmNTR0s2Z3FLZ0libGdHZ1F1OUZBcUZXcTN1Nk9qSXpzNjJzTENZT1hPbUVib0FNOVdLQWFlUHRDQ1JTQ0tSYU1lT0hSMGRIV3cyMjk3ZS91V1hYOTZ4WThlVEowOXUzTGh4NHNTSlZhdFdtVGRIeENBQldmK0lnU2M4UEx5cHFTa2pJd01PL01DdGMrQWU0eVFTU1NxVmhvV0Z6WnMzRDdQcEF3TUQvL0tYdjJSblp4Y1ZGVEVZREV0THk2NnVMckZZN09ycXVuejVjamdGMlZ2Ky92ZS81K1RrWkdabXpwczNEMmdNMDhLRHJLeXNwS1FrZUJ3VEU1T1hsNGRaLzRTVWFyWDZ3b1VMYm01dStuY0I2eEhDUGFGVURBYmorUEhqbUZleHE2dHJiR3hzU0VnSTN1MUgzZFBxVWtOd2RuYnU3T3pFVEdlQ1N6Yzh2bkhqQm40RWZlellzWC83MjkrQXRuaVg4S05RS0NSRTJ6U0V4TVRFYjc3NXByR3hFZllBQ2RyQjQ5T25UKy9ldlJzZUp5UWtaR1JrdlBiYWF3UTdHenRvYkd5OGNPRkNWVldWcDZkbmI0WEJkQ0hjRTU2eHRMU3NxS2hZdkhneGc4RzRmZnMyaThYNjVaZGZSbzRjS1pmTENTbk5NZ01RRmhaV1dGaDQ5ZXBWdzYxL3VHVEY3S0g2c1Q0WVhBUlpWbGIyNU1rVEVvbDA5ZXJWMDZkUEwxNjhHSzkxZFhXMXZiMzkwYU5IRnk1Y0NCOEJ2cXIzeXVIWXZDaVZTcWxVU3ZCRlVhbFVwYVdsZCsvZVhicDBxWjdtcGF1cnE2R2hvYlcxbFVRaVdWbFpVYW5VdnBZVytrMlZTMXpNZUU5K3graGlVUTh2aGVFNWlzVmlPTHF2VXFuZ2dkWnFyK2tvaFgvQlpUSVp2QlpoWG1BaHA2V2xOVGMzZnpLOG0rWUFBQ0FBU1VSQlZQVFJSNUdSa2IvOTlsdFpXZG55NWN0MzdkclYwdEp5OU9qUnlNaklmdGpXQTlIL0lPdC9LTkhTMHE4enZBYjY4UFhXUzFWVEN4cU5ObXZXck1qSVNMaDhTcVZTSFQ1OE9ENCszc1hGUmFGUVdGdGJPenM3VzFsWjRTL3g5ZlZsc1ZpVmxaVkNvYkMxdGRYVjFaWEpaSHA3ZXhPUzZkY0NMd21Ed2JoNDhXSmNYTnlwVTZmbXo1OFBualV4MVdwMVFVRUJBSUN3V2hSYVhYaERFQjcvOU5OUEFvSGcwcVZMZUNjaUF5WFJCRzkvdzZHYXhZc1hCd1VGa2Nua2twS1NrcElTRG9kanlNYkF2WlhFeThzTG1qTDRFWFJDZW1qdWF6cmtBRzN4N0Vra1VrdExpNCtQVDI4bDhmZjNYN3QyN1k4Ly92alJSeDhST2lHWTBRa0F3TzhtQms5aTN2L2dXWHZpeHg5L1hMdDJMZDcwTi9ycFlKS1FudnI5Ky92Ny8vVFRUdzRPRHZ2MzcvLysrKy9wZExwbVJFdE5rWXlUeE5uWjJkN2V2cjI5UFNzcnk1Q1EvMWxaV1ZLcDFON2VYbit3ZnlNa0FRQ2NQMzkrL1BqeDI3ZHZQM0xreUlrVEo4YVBIeDhYRitmbTVnYWVmWnMrK09DRFZhdFdqUjgvL3NtVEp6Qk9LTGJLRnR2ZHozQko4SmpZRnFsVUtybGNqbC9FaVlrTkhib09IRGdRRnhjWEZCU2s5VzR5bWF5cHFVa2lrWkJJSkRhYnJUa0QyVWRhbUpmOHp0RTlKOUtCWnEyQUc5eGV1M1pOcVZRR0JnWk9uanpaMnRvYWE2eElKRkp1YnU2Tkd6ZUNnb0ptekppQjdXOW9ZV0VobFVvdlg3NTg3OTQ5RW9rMGNlSkVyVEZ0KyswWHFrOFpXQzF5YzNOUG56NjlZc1VLSHgrZmZmdjJKU1FrRkJZVzF0WFZ4Y2ZISHoxNlZDcVZidDI2OWV1dnY4Ylc1K2dDZWZ3UE9aRDFQelNBVWJUNmVTZHR1SDdmakFHODlHZ0JRLzFnUzBXYm01dWRuWjAxZHgvRVkyZG5aMGc4WTYxYWFKV0V3V0JBRStya3laUHo1czBqT0xwY3VYSmx5WklsK01IK0xWdTI1T2ZudzU4bHZNdk5Uei85VkYxZC9kdHZ2eEhXRHhndUNaWUZkb3kzaDZBcmdsUXFKWlBKUVVGQlFxSHcxS2xUaXhjdnRyYTJ4dHhMekZJbXZyNitUVTFOQkxOVmF4K0FJTEJtWndEN3FybTVHVy85RzE0bW16WnQ4dmIydm5Ianh0aXhZelVka09CYTdkZGZmeDBycS9YcjExKzRjQ0UyTmxaVG51TGk0cEtTa3ZUMGRDUEtSRk5aVGJjaUdQR0RUcWUvOGNZYjkrL2ZYN1ZxMWFsVHArQzhsdFk3RU9pdEpNdVdMZHUrZlh0aFlXRllXSmorN1g0Ykd4c0xDd3ZoSlhxU0dTY0ptVXhPU0VpQWNkd1hMMTY4Wk1rU0VvblUzdDVlVlZVVkdocXFWcXVqbzZONVBCNkpSSXFPamk0b0tDZ3JLd3NKQ1lGbG9ya0RBS0Z3K3FjdG9sS3BQajQrbnA2ZVdwMTIxR3AxZDNlM3JoRjlxVlRhM3Q3KzRNRURwVkpwYTJzYkdSbXA2U1prZGkyd2lRaUJ6TkVzM3YvTmNtWjVWdy9qK2xvOS9uWFZDaWNucDdpNE9MVmEvY2NmZnp4NThxU3VyaTQyTmhaN3VGS3BGTTRFT2pnNGVIcDY0c3MyS3lzTDdxdzhhZEtrMk5oWXJaM1YvdnlGd3JoMDZkTDE2OWZiMnRwb05KcTd1M3RuWjJkRlJRWEIwWC9ObWpWU3FSVDZvNUpJcExxNnV1RGc0QlVyVnZqNittcSs5UU9pQmVUQmd3ZmJ0bTJqVXFtalJvMzYvZmZmTXpNek9SeU9yNi92bFN0WFhGMWRZWnFIRHgrbXBhVWxKeWZyMzRMTjdGb2craG9VOFhQSXdHS3h3Tk85WGZvSG1GZVBqalM5OGtmc1VRdVZTcFdXbHViaTRuTG8wQ0d6OUhaMGFhRlZFaWFUbVpXVlZWOWZmK3JVS1hnR050YjM3dDI3Y2VQRytQSGpzWlJxdFpySDR4VVZGZUhqVjVKSXBOT25UMWRYVnhORy9ZMlFCT2dldk1kR3lBQUFDb1VpSWlMQzJ0cjYxMTkvaFNGbHROcVVoSk1HU3VMcjZ5c1NpYUNDZUZNYjg0akFXK0Y0MXlCOHBuamp1TEd4VVNnVTRqdDF2U3FUalJzM0hqcDBDT0RtV09CeFNVa0puOCtmT25VcWRvWkVJczJjT1pQUDU5ZlcxbXE2L1J3OGVQRFRUejhsNUdqSzA4R1AvWk53eXowVkNzV0hIMzdZMk5qNHhodHZhRHExYTVhWWNaTFkyTmhFUmtZQ0FQYnUzWnVWbGFWNVEwaFdWdGJldlh2aGNWTlQwNk5IajNyc0tCb3VDZUdKUU5ScXRaMmRYWEJ3c0tZZm1scXREZzRPeGl4K3JGK0VMeHhESkNGZ2Vsc0VINStWTnF5dHJlM3M3TFM2L2d1Rnd2YjI5b0tDZ3ZiMmRncUY0dW5weVdLeE5OOUVzMnZCWXJHZ1BPVVM4NnpodnRTdWZWb0REOHhMc3h5MGxpZVpUR2F6MlMrODhNTDQ4ZU5GSWxGUlVWRnhjYkdGaFFXRlFvR0xsN0RhUW5tS2hZWEZqUnMzaW9xS2hFTGh4SWtUcDA2ZHltYXp0VHFERGNndjFPM2J0eHNhR3VSeWVYMTkvZFdyVjY5ZnY2N3BsZVRyNnd2SHdzbGtzbytQVDB4TXpJZ1JJemdjanRiR2VVQzBBQUFJaGNLdFc3Zks1ZkpYWDMzMXhvMGJVNmRPM2JCaFEweE1URUZCZ2JPemMyVmxKWmJ5MHFWTEJ3OGUxSitqZ1ZvZ0JnL0kraDh5d0Y0MTNOZTlINEI3aUxKWUxOaU9tQXY5V3FoVXFqMTc5a2lsMGdrVEp2ajcrKy9hdGF1aG9jR1U3UFJvb1VzUzJBR29xNnM3Y2VJRWVHcXB3REQvYkRZYmIwcENUK3VNakF6c1dzejBKMndGYXB3a0JPQnZwRXFsY25aMnRyR3h3WDQxeVdSeVhGd2NoVUpwYW1yQ0lta1F3Si9zbFNTTEZ5L095OHNqM0FTejdmVDcrZUJ6aDEveCtmeUZDeGNhWFNadnYvMDJsVW85ZCs0Y2VIYm9QVHM3T3lvcXlzM05EYThtOVBrNWV2UW9RZmh6NTg1UnFWVENVallUbnc0bWpGS3A5UER3T0hQbWpLT2pvMXd1Nys3dVpqQVlseTlmM3J0M0w5NEN4dm9KbWlWbW5DVHg4Zkd3QTFCWVdQanR0OS9tNStjTGhVS1pUQ2FUeVlSQ1lYNSsvcmZmZmd0SC9TRkhqeDQ5ZXZUbzFxMWI4VDFKVXlUQnozMUJVNTdnRHFlNUpCMVdYZkEwMWlkbUNHcDJpZ2FrTFRJY29WRFkwdEp5NWNxVnhzWkdsVXJsNU9RVUhoN2VxeWRyQ2xDTEhnZnNEYVJIajM4c0w4MVJYbDNsU2FGUVhGMWRwMDJiTm1IQ0JCc2JHeXlZTXZ4V2F4dkNaRElaREVaVVZOVFVxVk5kWFYyMWpqb1BWSzE0NTUxMzFxMWJGeGtaQ1FXenNiSFJETzVrYTJ0cmJXMnRWcXZ0N2UxRFFrTCsrdGUvYnRpd1FXdFVyb0hTUXFsVXBxV2xsWlNVU0NRU2UzdDdXMXZiM054Y2Uzdjdnd2NQTmpRMFJFWkdFang1amgwN2R1WEtGVjEzNnlNdEVIMEs4dndaTW9TRmhmSDUvT0xpWXJ6OTFIZkFoc09RaWJ4ZStTUHEwVUtsVXFXbXBxcFVLaDhmSDZGUWFHdHI2K3ZydTJ2WHJuZmZmUmZ6Q09vdGVyVFFJd25lQlFpdUFYanp6VGUxcnZMRWRycUZvLzZhdnY0bVNvSUhDaUNUeVNaTW1BQWRsTEdUVGs1T1M1WXM2ZXJxd2k4dEJUcnN5MTVKc21MRmlwZGVlaWt4TVpGd0syakR6WjQ5Rys0RXJGVlV6VUgzL1B4OGFMc2JYU2FmZi83NXlwVXJaODJhQlkxRmVQUDE2OWNEbkZtSkFaZTM0cjlTS3BXSER4Lyt2Ly83UDFQS2hJRFdqaEQrZ0VRaXdjanhtcVdrZWRKb1NlTGo0eWRObW5UZ3dJSDI5dmFjbkp5Y25CeENBbnQ3KzJYTGxqVTFOV0U5SXFsVXVtM2J0dmZmZjErcmRkVXJTZmJ0MjNmMjdGbXNnMHFZOWlIVUhId2ZGVHZBUEtOZzRxYW1wbmZmZmJkSFNRaVlxeTB5SExGWTNOcmFldjM2OWFxcUtqalhNVzNhTkswMlVOOXBVVnhjWEN6eWxLaG9kTEwyUzZxbFBjVHd3WkkxeTRuREZnUWtLaHJzSVdoNlhlb3BUd3NMQ3pjM3QxbXpac2xrTW16UlAvNlZJZUR0N2IxZ3dRSXJLeXM3T3p0ZGdWTUhwRmFvMVdwTFMwdTFXczFnTU9EMkR1M3Q3UVNQUGdCQVRVME5sVXAxZFhVbGs4bVptWm13SjZNMUV0MUExZTN6NTgrZk9YTUdBTkRWMWZYamp6KysrZWFiTmpZMmx5NWRzclcxZmZQTk55TWpJeWtVU20xdDdaTW5UMkQ2am82T0hUdDJlSGg0YUYwQVlMZ1dpTUVEc3Y2SERPSGg0WFE2dmJtNXViaTR1Sy9YNEVza0V0aWJOenlRaUlIbzBrS2hVT3pkdTFlaFVQajQrSFIxZGQyOWU5Zkt5aW9nSU1EUHoyL1hybDNyMXEwelpKRWlBZjFhNkM5UE9BTVFIeDhQRndFVDNEdzA3d2FYK1dabloydU8raHNoQ2JTZk1PdVc0RUF2azhrSVA1d0toUUxHR1NTWS90QytKT0YyVHUydEpHRmhZUUVCQVpjdlg4YjcxZUNsSWl4SXdJL3NZdjR3OENBbko0Zkw1V0pHZzNGUFovcjA2VEV4TVQvODhNUEtsU3Z4eHFXbWlZa3ZNZXhnLy83OWt5ZFBuajU5dWlsUEI2K3ZWc1VCenZERko4T0xwNW1SS1pKQWJHeHMxcTVkMjlqWVdGSlNJaEFJNEc2K0kwZU81SEE0MkpJQXZLTWEwTjBCNkpVa3ExZXZuanQzcm1iSjRLMTV2TzZrcHd0OE5Tc1AvaU1VdVAvYklzUHA2dXBxYW1yaTgva05EUTNRTHB3d1lZS0xpNHZtRSs5VExmYnYzdzhBeUc0TG11TjRRMnVhNDAyOTNsNERBRkRlNVNKUjBnakJQYlBiZ3JCOE5TWFJVNTVVS2hYckZMVzJ0aFlWRlZsYVdrWkdSdUxmbXQ5Ly8xMHNGaytjT05IZTNoNUdqdEpGLzljS3JEVnJhbW9xS3l2THk4dnI3dTZlTld0V2FXbnBvMGVQQ0RmcDd1NjJzYkh4OC9Oak1CZzVPVGtIRGh5UXkrWFRwMC9IVnY4UGxCYVFzckt5M2J0M1k3dGt3ZzdBakJrejNOM2Q3OTY5dTIvZlBncUZNbTdjdUsrKyt1ckxMNy9FdEt1dXJ2N3V1KysrL3Zwcmd0TlgzMm1CNkZPUTU4OVFnc2ZqZ2FmaFRmcVU3T3hzaVVUQ1lyRU02YzMzTmc2eHBoWUtoU0l0TFUwbWszbDdlOE1JY1hmdjNyMTM3NTVJSktMVDZWd3VkK2ZPblFTcnhTeGE2QzlQZ2dzUWVEcFlpN2ZMNGZtZmZ2cXBxcXBLbCtsdmhDUjBPaDNHdWdZYTBTRUpkajhtak9ad081WkdMcGRqMHhGR2xNbFhYMzIxZCsvZVI0OGVZYVk4ZU5aL0F5OEdQZ0YyQnhLSlZGRlJzWGZ2M2syYk5obGRKaGovL09jL2p4dzVVbDFkVFJDQVVDell3OEllV1ZWVjFhRkRoNzc0NGd2Q0RZMlRoTkRaSUJ3VHZpVjBCZ2oxeC9ReXdlUHM3QndmSDc5aXhZcU5HemR1M0xoeHhZb1Y4Zkh4MkdwZ3piaFlzQU5BY0FIcWxTUnNOanZrV1lLRGc0T0RnME5EUTBORFF3bGZ3VE9ob2FIQndjR0VTd2dmNFl4ZlA3ZEZodFBkM1YxZlgzLzkrdlg2K25xbFVrbW4wNE9EZzRPQ2dqUWZLK2hMTGVoMCtwOWF0QVZLVkdZT0JzOS9OdjZQUkVYTGJnc0VBUEI0UEszckh3d3BUNVZLMWRMUzh2dnZ2MSsrZkxtZ29BQWJtTGgyN2RwdnYvMldsNWZYMU5Ta3h5RU4wcCsxQWk0QmwwcWxLcFdxcnE0dUx5L3YzTGx6N2UzdDgrYk5pNDJOcFZBb2RYVjFoRHM0T0RpbzFlcng0OGNIQkFURXhNU1F5ZVQvL3ZlL0JRVUZjQnNRVEx2K3I5dHF0YnF4c2ZHNzc3NGpSQVRxNnVyNitlZWZEeHc0VUZoWVdGSlM4c1VYWHhRVkZmbjUrWDM2NmFmNDNiNEtDZ3BnVnhPL0RYQ3Z0RUFNSHBEMVA1U0FZNWJsNWVXd3E5MUhORGMzd3lianBaZGU2b3Y3YTJweDVNZ1JwVkk1ZXZSb29WQm9ZV0ZSVlZYbDR1SUNaeDVoeE0vZzRPRHZ2LzhlYm0xalJpMTZMRS9DSW1ETXhNUWJjekRDajFaZmY2TWxDUWtKYVdob3dIWWRnbWwwT2ZUanpVMkN3d2tBd01MQ29xNnVMalEwMU9neWlZeU1URXRMTzN6NE1PeVFhTXFEUDRNM2NMSHpDb1hpMEtGRHUzYnRncjdwUmtzQzhmTHkycmh4bzlaVmFJU3BEOElFQlZ6czYrWGxoYi9FYUVrSWo0UFFDZEVzQ3MyaUk5ekJMRFcyUjBnazB2dnZ2NisvQTlBL2toaEMvN2RGQnFKUUtGcGJXNjlkdTFaVlZRVUFZREtaTVRFeDBNN1RUTnpYV3NEYlNsUTBiR0FlNC8vRy9HRGd2em1PeFFBQWptVkxrdWZQMjMwUHhqbmNCaHFMZ0xQYmdtQUhRNWNpaHBRbmlVUmlNQml1cnE2MXRiVTVPVGtQSGp4UXE5V1ZsWldYTGwycXJhMTFjM09EK3kzcTBiZWZhd1ZzaDJrMFdtZG5aMDVPRG95WnUzang0cWlvS0V0TFN4S0pGQndjVExqRHVISGp2THk4M056Y2ZIMTllVHplckZtekdBekdzV1BIc3JLeWhFSWh2T0dBMUcwU2lYVHQyclc3ZCsvcXY3YWhvZUhMTDc4c0t5dURlK25ndjhySXlHaHBhY0YrN1BwYUMwVGZnVHgvaGhJc0Ztdk9uRGxuenB6WnYzOC9sOHZGajc3azUrZWJLeHpROGVQSEpSSUpsOHVGZ3djOTB0czR4SnBhK1BqNFhMeDQwZFBUazBhanllWHllL2Z1cWRWcU9BUGc1ZVZGcFZJZlBIamc0ZUdoZGRXVUtWcm9LVThNSnBPSjdRTUFOd0lET1BNYTgvWFhaZm9iSndtUHh4T0x4VlFxMWZBZ3lwcTJPSVJDb1Vna0VqZ25hM1NackZ5NThzYU5HM3YyN0ZtNmRLbXRyUzArVTRMQlRmaEtyVlozZG5ZZVBIaHcyclJwK0dEOEpqNmRmL3pqSC83Ky9nVUZCUk1tVE5DVk5YWWVmaXdvS0hqNDhDRisxWUdKa3BESlpDYVRhV0Zob2NzdnVVZHNiR3p3eHFLNWFteVBVQ2lVOTk5L2Y5dTJiZmhZSlZLcE5EVTFkZTNhdGYwcFNZLzBmMXRreUZWcXRWb2tFdVhsNWNHUWxGWldWdjcrL3Y3Ky9ybzJLZXNITGVMaTRpNWV2SGltSlR5Y1dXVmM2TS84enRGekhJc3gzNkdGVGdWaHpLcjk5VEhsWFM1YzZ6b0FnRURtZUtZbEhBQVFGeGVuYTNHbkllVkpJcEZZTE5hVUtWT2tVdW50MjdkaG9kWFcxaXFWU245L2Y3aHFRdjkyYndOU0t5Z1VDcDFPejh2THM3UzBmT09OTnlaT25BaUZmTys5OXdRQ0FlRU8wNmRQaDhhM1dxMTJjbktLaW9xU3lXUjVlWGtjRGdjcnVvR3EyekV4TVdLeFdQOWNPcGxNbHNsazlmWDFKQkpwd1lJRitMR01jZVBHNFdjRGVxc0ZZdkNBclA4aFJteHNiSDUrZm5OejgvNzkrK0ZQTlFCZzRjS0ZKU1VsUnNmSDVQRjQySnpkeFlzWDRWREJva1dMekNLd1ZnaGFSRWRIVzFwYS92TExMOUhSMFpXVmxRNE9EdVBIajVmSlpJV0ZoVXFsOHVIRGh5TkdqRmkyYkpuK0FTRThobXVodFR3SllJdUFzUTZBZ2FQK3BraXlmdjM2L2Z2M3IxeTVzcVdsQmUvR28rbHRUd0NmMHRIUmNmZnUzWjkrK3FtRGc0T0paYko3OSs1Ly9PTWYvL3JYdjE1NzdUWE12WUVnRmREd0NMcDE2OWFoUTRkZWYvMzFmLzNyWDZhWENmNnJqUnMzZnZmZGR4TW5UaVI0M2VESDEvRUZkZWpRb2M4Kys0eHdmMU1rNmVqbzJMWnRHNXpOMTNxSjVwd013UFZHYURSYVFVRUJ0b1RPdkRXMlI3UjJBTnJiMi90ZkVqME1TRnRreUNVZEhSMVpXVmsxTlRVcWxjclcxalk4UER3aUlrS1h3ZG8vV3J6MDBrdkZ4Y1hOemMwN2EyTS85MHpYdGZ4WEY4MXk1bHJYYkVLM2dXdGQ5N2xIdWtBMkFnQWdVZEYyMXNZQ0FGZ3NsdjVSWGtQS2swYWorZnI2eHNYRnFWUXFPQTZ0VkNySGpCa1RIeDgvYXRRb3JhdGpNUWF3VnRCb3REVnIxZ2dFZ25IanhtR1AyOUxTVXMrK05QRDFaN1BaQ1FrSitPM3FCMUFMVzF2YlhpMXpoMXVtWUNnVUNteU5VUDlvZ2Vnai92eDFYTEFBUFBWdFJneDJCQUlCM0hHV3grTzk5ZFpiWnJ3em44K0hYbjBMRnk3RWI1S3FuMitUditWNGNTWk5tY1R4NGhpZWw2WVdoWVdGWjgrZURRc0xnL3RZUVNvckt4MGRIWmN2WDk1M1doaFluaUtSQ0c0L0RLTUFRVjkvL2FhL0taSzgrdXFydTNidE9uWHExUExseStWeXVWS3AxRFQ2OVhRRFlOanNIMzc0WWVIQ2hlKysrMjVaV1psWnl1VGt5Wk5yMTY3bDhYaVRKMDkyY2ZrenlDREIweDErcksrdjUvUDVWNjVjMmJsekp6Wm5ZbUtaRUo3T3JGbXpxcXVyUjQ3VUV1a2M3MlN2VnF2cjYrdmQzTndJc2ZCTmxPVFdyVnUzYnQzUzlPZlJ0ZGhYNjdya29LQ2dvS0NnUHFxeFBhSlVLdkVkZ0duVHBxblY2Z0dSUkpPQmJZdjBJSmZMZi9ubEZ4amhoMDZuUjBSRWhJYUdhbTR4M3Y5YWxKZVhiOW15QlFEQXNXelp3TW5vYlFkQUR4SVZiWXNnQVc3eXRXSERoaDdkdXcwc3orN3U3dnYzNzU4N2Q2Nmlvc0xMeTJ2T25EbCtmbjY2TmxPRERJWmEwZHpjREtQYUd6NGFSV0F3YUdFY0NvVUNtK28wVGd2RXdJSTM5ZEhZLzlDRHcrRzg5ZFpiKy9mdjUvUDVBQUJ6L2VoaUx6T1B4K3VIbDFsVGk4aklTREtaL1BQUFAwK2NPRkVzRmx0YlcxZFdWckpZckY0cGFJUVdCcFluNWdKMDh1UkpNcG1zZFRkZjgwcXlldlZxRm91MWRldFdNcG5zNHVLaTlYZVJZRk1DQUVna1VuZDNkMTFkblVxbCt2REREK2ZQbjQrWi9xYVh5Zno1ODhQQ3d2YnMyYk41ODJaZlgxOFhGNWRKa3lZNU96dkQwU0M1WE43VTFGUlFVRkJiVzF0UlViRm8wYUlyVjY2TUh2Mi9oWVBtZlRvYk4yNXNhV2toeFB6UkhHV0hKN0craWhrbENRcnFlV3VrSHVtN0d0c2pjQVlnTlRXMXZiMGRiL3IzdnlRRUJyd3QwcE5ZSnBQQkVPODJOamFCZ1lHQmdZRTltdjc5b3dXWHk0VmFDR1NPV3dRSjV1b0E0RTMvdDk1Nnk1Q1ZuUWFXSjQxRzQzSzVLcFdxdExRME1EQXdJQ0JBLzI2eWc2UldRTmVkcnE0dWEydnJIbThDWFZocE5CcW0yaURSd2pnMFRmLyswUUxSRnlEcmYwZ0NmZXl3VjNyaHdvVW0rdDFldkhqeCtQSGp3S2dSZ3Q3NkkySm9haEVSRWFGU3FkTFQweWRQbm56bnpoMW5aK2VsUzVjYWZrT2p0VEN3UERFWElLVlNxU3V1djNrbFdieDRjV2hvcUZ3dXo4M05sVWdrK3QxaElTcVZpazZueDhURTBHaTBjZVBHWGJwMHlieGxNbnIwNkpTVWxKU1VsTDE3OXg0NWNtVFBuajBDZ1FER1kyMXFhdUp3T0o2ZW5xKy8vanJleXg5aTlxY1RIUjF0K0UzNlZCS2pHWEJKS0JRS2RBa1ljRWt3QmtsYnBFc0xCb01SSHg4Zkd4c0wrNW02Vm4wTXJCYXdBN0I4NU8vR3JRSEFFTWdjOTlWUHhreC93MzI3RFN4UEtwVUtRenoxZU1QQlZpdjB1eWRoS0pWS0t5c3JiSUJtc0dsaEhLWm9nUmc4SU90L3FJSi9wY3ZMeXcwY2xkR2t1Ym41K1BIajBIdlB5SmVaRG9BVkFQcEdiWFNpcVFXY0FUaDY5R2hBUUlEaHByL3BXaGhZbmt3bTg4S0ZDL0NnUHlVeFlrMVZjM1B6N3QyNys2NU1WcTVjdVhMbFNuajgrUEZqQUFBaG5BNWVrdjU1T2oyQ0pCbmVrcGkzTGRLcUJiVGs5SXhTRHhJdEJETEg1S3BYOEF0NWU4dVpsckZ3bVMvb3BlbFBrR1JZMWdyOTB4UVlXT2R3Y0dyUlc4eWdCV0xRUVBublAvOEpBRGg1RXN5ZlA5Q3lJSHFKaDRjSGw4c3RLU25wNk9qSXo4OXZhV25oY0RpR2Qrc2xFa2xtWnViKy9mdGh5SUtGQ3hjbUppWWFJVWJaZzdLUnJKRmVibDUyVERzakx0ZlVZdno0OGErODhvcUIrKytZU3d1dGttZ3RUMHRMUzYzUmgvcGZFbDMwdnlUMjl2YjRRQkFES0lrdWtDVFBneVJtYjR1R3RCWnl1Ynk4eXlXL2N3eWQwczJ4YkRYOER2bWRvM2ZXeHNFOWZlbDArdnZ2djIvY2JtakRyRHlSRm1acEt4QURDTjdVUjZ0K2h6d1NpZVQ0OGVOd1VnOEF3T1Z5bzZLaTRGWi91aTRwTGk0dUtTa3BMaTZHRWZTNVhPNmlSWXM0bkY2c0pjS1RkakxOeGNrbElqREMxY25WdUR1QVFhQUZrZ1JKZ2lRWjZwSU1qN2FvTDdTZ2s3dWo3QjZFTTZ0ZytFNnRsSGU1RklzODh6dEdZN3VHOFhnODB4MUZobVY1SWkyTWxnRXhnT0JOZldUOUR4TUVBc0daTTJmdyszckEwTUw0dDdTbHBhVzV1Um0vTFFDSHc0bU5qUjA4a1hvSGp4WklFaVFKa21Tb1MySUt3ME9MOHZMeTdPeHN3dDViWEhvZEFJQnJYZjlubXE2UkFJQnl5VFBMNHNQRHcrZk1tV05HSTI5NGxDZlNZdkJvZ1RBQ1pQMFBXNXFibTR1TGkvUHo4elgzSDhIRFlySEN3OE9qb3FJR1p3OSs4R2lCSkVHU0lFbUd1aVNtOEZ4cEFRRGdjRGh3TUZqWGZsNzlJOG53S0Ura0JXS3dnYXovNTRMeTh2THE2bXJDWnJGY0x0ZlIwYkdQV3ZhK1lQQm9nU1JCa2lCSmhyb2twakFNdEpCSUpBS0JBQTdvd3NGZEZvc0ZvOWR6dWR4ZU9ZS2J6akFvVDRDMFFBd3BrUFdQUUNBUUNBUUNnVUE4TCtCTi9aN0RoeU1RQ0FRQ2dVQWdFSWpoQVlyM1B4eElUVTF0YUdoWXRteVp0N2QzZG5ZMlhOR2ZsSlEwMEhJOVEzSnlNb1BCV0w5K1BRRGc0TUdEang0OVlyUFpxMWV2MXBvWWFtR0lDb1dGaFRVMU5YUG56b1hIR1JrWnNCeE1FUldXSnp6V0kyUmZrNTZlWGxwYXl1UHhoRUloVkxEL2didkUrL2o0WUhzdnBLZW51N3U3UjBaR1lta01mMWpHQWNzQkh2TjR2TmpZV0VNdXdZUk1UMCt2cUtpQUZjOElLaXNyRHh3NEFMT3VxNnNEQUlqRllzT3JCTDUrOWgydzVtTWZRMEpDM04zZGRlV2JtcHJLWURCNnRZK2VmdkJGWk1qVEdlVGc2M3hLU29wWUxBNEpDZEVzU1JQclZmK0FmM2ZBUVB3b1FBSHdyU2hzTHJRVzZhQUYrMVdGYTE2SGRDVlBUMDl2YUdpQWorUGd3WU85YXMwUXd3a1U3Mzg0TUc3Y3VMYTJOajZmSHhVVjVlUGowOWJXTm1QR0RBY0hoNEdXNnhtbVRwMWFXbHA2OSs3ZDBORFEwTkJRZ1VDd1lzVUtYWWw5Zkh5dVg3OGVGUldsNTRhcHFhbmp4bzF6YzNQejkvZUhaOXpjM0FRQ2dZZUhoNG02anhzMzd2cjE2My8vKzkrblRwMTY5KzdkcHFZbUh4OGZVMjVvSExtNXVldlhyK2Z6K2QzZDNhR2hvZjB2QUFEQTA5T3p2cjRlLzZUOC9mM2QzTnp3YVF4NVdLYmc3Kzh2RUFnbVRabzBhZEtrYytmT1RaMDZWVmZLd3NMQ2E5ZXUrZnY3NDRYMDkvY3ZMUzBkTjI2Y2NibHYzNzQ5S1NscDZ0U3BmRDVmTEJhLzhNSUxGUlVWaHQ4Tlh6OGg2ZW5wSXBHSVVJWW00dWJtcGxBb0hCd2NWcTllUFhYcTFIdjM3azJmUHAyUUw0YWpvMk4xZGJVWmE1U0Rnd09Ed2JDMnRwNDllN2JSTittTFlqRU9mSjJQaW9vU0NBUUxGeTdVVEdaaXZlb2ZzSGRueVpJbENvV0N6K2YzYzBzQ0JXaHJhM054Y1lITk1wL1BkM0J3MEZxa2c1UEN3c0xidDIrdlg3OSs2dFNwUC8zMEU0UEIwUFZtZ2FlL1N2MHBYbSs1ZnYxNlRVME5iRVZ0YlcwTmJNMEd6K3VKTUFXOHFZL0cvb2NQWVdGaEJ3OGV4QS9wd1VHc1pjdVd3Wkc1a0pDUTB0TFNoSVNFZS9mdUFRRE1PUGhuSUd3Mld5UVNaV2RudzdFVE9HQ1prSkJRVkZRRUJ5UGhvRHQrb0FpbWdaTUcyQkFqdktTaG9lSGd3WU1ORFEyK3ZyNXo1ODZGOHduUVRNZGZaYnJZZG5aMjJOZ3FITEpLVGs0T0NRa0pDd3RyYm00MlkwYWFGQllXd3NjRWg5Q1NrcEtTazVONVBKNnZyeThzQ2dCQVFrSUNsSTNOWm84YU5ZclA1N1BaYkRhYjNSZERhL0FSSkNRazVPYm0rdnI2bHBhVzRxY0ZVbEpTQUFEcjE2L0hLdDdwMDZlWlRHWkRRNE5aQmgyOXZiMFpEQVljVFlkWnU3aTQ4UGw4SHgrZlI0OGVZZVdnVXFsdTNicVZrSkFRR1JtWmtwS0M3Y29NeXhBdmNJOWtaMmVIaElUQVkzaFZaV1VsQUNBMU5WVWtFcTFmdng2cmFZbUppUWNPSE1CZXNkemNYQ2FUdVhyMTZwU1VGRmcvWVoyeHRyWXVMUzB0TFMwdEtpb0NBR0JUVE11V0xidHc0WUxwUS9LVmxaVWxKU1Z6NTg2RitZcEVJckZZREFDQTBzTEgxM2RkV1hoL1FpSE1tREVEWnZybzBTUDQrbUJUZi9Bck5wc055NkcwdEpURllwazRjZGNYWU1QVnBhV2xjR29SWDY4RzdYU3JKbEJtdk1EWVJBZDhnL0J6ZW1iRTE5ZTNwS1RFMjlzYnZqNFFUQXpzRnlvcEtRbldXd0JBYjEvVnZ1UGV2WHNSRVJId0dHdm44VTBjMWhMQ3RpNGxKYVh2MmtBVHFheXNkSEZ4RVl2RmhZV0YyTE9HRTF4SlNVbUVYMWdBUUVSRVJFWkdCby9IZzYzVzRIdzlFY2FCL1A2SEQ3R3hzZkN0aGgvVDA5TVRFaElTRWhLdVhMbXliTmt5Qm9NeGQrNWNOcHRkVTFQajR1SXlVSzNxMHFWTHNhMUdJaU1qb1NFeVk4WU1BRUJoWVNHYnpVNUtTc0pQUkJZVkZTVWxKZm42K21abloxKzRjR0hac21VOEhxK29xR2pHakJsc05udnAwcVZoWVdId1dpYVRtWlNVOU9qUkk4SlZSb3Vhbkp5Y25Kek1aRElqSXlNakl5TmgyeTBTaVFvTEN4TVNFZ0FBM3Q3ZVpzbElGNnRYcjg3TnpVMU9UcTZzckp3N2R5NkR3UUJQcDU0cktpcDRQRjVTVWhLYnpZYXl3WjVWYkd3c2c4R0lpSWpvbzFsMWIyOXYrTWpDd3NKZ2J3U3pTS0VzWndBQUlBQkpSRUZVWDFOVFV4TVRFOWV2WDQrdmVQRHBtT3RucjdLeVVpd1dSMFpHd3A5U3NWanM2K3ZMWURCY1hGeGduNWJINDRXRWhDUW1Ka0loMDlQVHAweVpFaEVSSVJLSkFBRFlWWGdUcEVkc2JHd0laeG9hR2lJaUl0aHNkbVZsSlZZQktpb3FmSHg4R2hvYVlDY0Uyd2dUcTUrd3pzeWNPZFBIeHljaElXSEdqQmxRSHZodWVudDdqeG8xeXNTM3NyUzBGT3NUd255am82T2h0RXdtczdLeThzS0ZDMGxKU1pqWmFuWmc5U0FVQWxabmtwS1NLaW9xWUFPVmxKUWtFb21hbTV0OWZIemdXdytMWlhEYUZ2QzFBZ0NFaElSVVZGUVE2bFZKU1FtVVB6MDlmYUFsMVU1R1JrWnljdkxEaHc5aHM0QVhHRmEvcFV1WDlwM3BEd0FJQ3d1cnFLZ0FBRlJVVlBqNStjR1RtQmdsSlNVaElTR3dteDBXRmpaMzdsempYdFcrZ3hEM2h0REVZUzBoYktYN3RBMDBrWXFLaXRqWVdHZ0d3RE1ORFEySmlZa2hJU0dhdjdEZzZXKzByNi92WUg0OUVjYUJyUDloeGVyVnF6SDNYNUZJbEpHUmtaR1JJUmFMdmIyOVlVdktZREF3YzIyZ1NFaElTRTFOMVR4ZlUxT2phV21KUktMazVPVFMwbEtoVUFoL2ErR0lKaUZaUjBjSHZCYmFHZmlyakpZektTa0pOdG5wNmVtVmxaWEp5Y25MbGkwREFMQllySXlNRFBoalpwYU05TEIrL2Zxa3BLVFRwMDhUenNmR3hwYVVsQ1FuSjdQWmJBQkFTa29LdFBEZ3QzMzNLNDRIL2xwam1VSmpEanhiOFFBQVVFTFR5Y2pJZ09QS2xaV1ZEUTBOeWNuSkRRME5NTWZZMk5qSXlFaVlIUjZSU01SaXNTSWpJNkh0UzdqS2FHQ1BDOHNDWHdIZ0dLR1BqNCszdHplK2x1THJEUDQrQUFCdmIyODJtMjJXM21OSVNBaXNvcHJTUXVNVkFzMlJ2a05ySVVDYmo4bGtkblIwWUlMQlkzZDM5ejZWcDdjUVRCeXNocytkT3hjMk1vUjZCYjkxY1hIUmJKY0dDUWtKQ1VsSlNSRVJFYW1wcVFTQnZiMjl3OExDa3BPVCt6U3dvN2UzTjVQSnhFYW13Tk01TkV5TXNMQXc3SWZKaks5cUgwRm80Z2d0b1dZQ2M3V0JwbE5YVndmYksvekNObTl2YjNkM2QvMi9zSWpoQi9MOEdXN0FVVGY0QTQ4ZnptR3oyVmV1WEltT2p0WTBKZnVaeU1qSW1wb2FhQW5CRmhNMjhUWTJObkJWSlFGczFDUTFOYldpb3NMWDExZnI0Q1cySXBOd2xlbUlSQ0k0MWc0L2VudDdKeVVsRlJZV1FvdXQ3d1oxVWxOVDhkTWdVR3VoVUdoalk1T2RuVDFseWhUNGNDc3JLNkdGQitkcSt3NkNYeG1CeE1URTA2ZFBRNUd3aW1mR0tSSHNubEJmckdSeWMzTUJBSVdGaFhnREY2T2lvZ0t6UVkxWXdCMGJHNXVjbkF3ZDFTb3JLMCtmUG8wTjZtTmdGZURnd1lPNjdrT29Nd1Q4L1B6Z2F2VmV5YVlySXozamN5S1JxTEt5Y2dBdEtwRklaR2RuVjFKU0FqL2EyZGxwZmVVSEhNejZ5YzdPMWh5U0FMaDZoUTJzZ0dmdHY4R0pMb0Y5Zkh5Z1JuMlhkVVJFUkc1dUx0YnpKSWdCQzdPd3NORE96ZzRNYUt3RlRmejgvQzVjdUFEbHljN09oalcyeHlhdUw5cEEwNEV6NU9DcDV4SkdUVTJOdTd0N1EwTUQ5Z3VMVlFiTlVSWEU4QURGK3g4T1FBZEtmRVNkNk9ob2IyOXZmUEFLYktWL1NrcEtXRmhZLzBjdHdQenlvUVVKVFZ0TWNyRllqSG56TXhnTXpKTVNHa1lBQUI2UFoyZG5CNCtoNjIxeWNqSjBWd1ZQM1N2RllqR0R3V0F5bWRCYkVSZ2JoQVFmOHdmZUhQcjN3NC80VExIemZSSHRCSllZZUxyWUFIN0V5Z3FUQi9PYXhUQ2p2eXorUjRMTlpzT0NoVExBTTFoQlFaY1A2RCtLZHlZR1Q1K1gwVEpnY1V1dysrRFB3T2NPQUlEbWRVWkdCdlREd1h6eEFRQ3dSZ0VBQ1BjeEJNd1hGcjVmc0c1QUYzQ3NRQUFBV0tZQUFMRllERXNHSzRHZ29LQmJ0MjdCckV0S1NrcExTMkVaWXRWR2Y4K3FSN0IxS2RnTjRTTndjSEJvYTJ1RHdtRExRckFxWks0NUlxeUlkQlVDQUFDV0E4d1VsaUgyZG1QT0VwaFh2Vm1rTWdYTUpSMmFvVmpnR2xqYnNUY09YNi82YnZHUEtSQmkvc0RxQVU5Q2dWTlNVdGhzTnBQSkxDMHQ3WXM0UElTOHNGY1NqcGZqeXcwZlEwbnpsUjlZc1BxQU5hMkVKZzdXalpDUWtJYUdCcmpHeHJ4dG9GbkF3dTVoelFYV0hFRzk4T2ZoNGhic0o1WE5aZytlMXhOaE5HaTNMd1JpYUlOZk9RMzZ5OVZuY0FMWDJBMjBGS2FTbnA0K2hBSWc5cGFEQncvNitmazl6N1YwMEFLdC84R3d1QmFCUVBRMWVGTWZlZjRnRUVNUDZMNEpCdGtVZWYrVG5wNHVGb3ROSERnZldMQm9UZ010U0Y5UldGajQ2TkdqaG9ZR1pQMFBRb1pCenhtQlFCZ0JHdnRISUJBSUJBS0JRQ0NHTTNoVEg4WDhRU0FRQ0FRQ2dVQWduaGVROVk5QUlCQUlCQUtCUUR3dklMLy80VVpOVFkxU3FhVFQ2ZGJXMXBvUjZFUWlVVmRYbDBRaW9WQW9neTNNTmdLQlFBdzJoa2VMT25pMEdEeVNtTUx3MEFMeFBJT3MvK0dHdTd0N1UxT1RSQ0tSU0NSZFhWMVkyNFMxUndBQU9wM3U1T1EwMEpJaUVBakVZR2Q0dEtpRFI0dkJJNGtwREE4dEVNOHp5UG9maGpnNU9XRnRFR3liQUFCWWU2UjFyQUtCUUNBUVdoa2VMZXJnMFdMd1NHSUt3ME1MeEhNTHN2NkhKMHdtazhsa0VzWWhVSHVFUUNBUVJqQThXdFRCbzhYZ2tjUVVob2NXaU9jVFpQMFBaMkRiMU5UVUJBQkFVNUFJQkFKaENzT2pSUjA4V2d3ZVNVeGhlR2lCZU41QTF2L3dCN1ZIQ0FRQ1lTNkdSNHM2ZUxRWVBKS1l3dkRRQXZIOGdDSitJaEFJQkFLQlFDQVF6d3ZJK2tjZ0VBZ0VBb0ZBSUo0WC91ZjVVMVJVTklCeUlCQUlCQUtCUUNBUWlMNGhBanY2bi9VZkVSR2hMU2tDZ1VBZ0VBZ0VBb0VZSmlEUEh3UUNnVUFnRUFnRTRua0JXZjhJQkFLQlFDQVFDTVR6QXJMK0VRZ0VBb0ZBSUJDSTV3VmsvU01RQ0FRQ2dVQWdFTThMeVBwSElCQUlCQUtCUUNDZUY1RDFqMEFnRU9iaDlOM1RwR1FTS1prVXZTOTZvR1ZCSUJBSUJFSTd5UHBISUJBSTh6RHZ4THhUQzA2cGs5UUFnRzBGMndaYUhBUUNnVUFndEdEUmN4SUVBb0ZBOU1UcHU2ZDVIRjZpZnlJQTRNcnlLd010RGdLQlFDQVEya0hXUHdLQlFKZ0JRWWZBM2RhZGxFd0NBUEE0dlA3cEFOeW91eEdSOXVkR2pmMldLUUtCUUNDR05NanpCNEZBSU16RDhkdkhpMVlWcVpQVTFSM1Y2N1BXOTBPT2VWVjVIRnVPT2ttdFRsSWoweCtCUUNBUWhvQ3Nmd1FDZ1RBUFBBNXZyTXRZQUVBVUo2cW1zNllmY2l5b0tZamlSUFZEUmdnRUFvRVlOaURySDRGQUlNeEFqR2NNWDhDL1VYY0RBSkF2eUovb1ByRWZNcTNwckRsKyt6Z01OSFQ2N3VsK3lCR0JRQ0FRUXgzazk0OUFJQkJtWUt6TDJGTUxUa0V2ZkI2SDkvN0U5L0hmbHBlWE56YzM5M2dUSG8vWHEwd3hiNTl0QmR2bW5aZ0h3dzBoRUFnRUFxRUhaUDBqRUFpRWVVajBUOVJsZjZkdVQ4M1B5dmRrZWVxNVhDQVRaUDZXYVc5dmIwVFdNWjR4QUlBYmRUZWc2eEVDZ1VBZ0VMcEExajhDZ1VEMExaY3ZYNzU3N2U3bjR6L1huK3hNeFptZFczZHUvR0tqNFhmMitNN2p1NW5mSmZvbkhpazd3ckhsSU5NZmdVQWdFRDJDckg4RUFqRThpZDRYelJmd3NZL2Z6ZmlPNEkzVGIrellzbU9LM1pRZWs4Vjd4bTgrdWZubEJTOEhCUVVaZU9lZkYvMk1SZndzV2xWRStMYXhzYkhIT3pnN094dVlGd0tCUUNDR0I4ajZSeUFRd3hQTUovNzAzZE1mblA5Z29Fei9RNGNPV1hWWWhYaUc5SmpTeXNKcUdtdmFmNzc5VCtyK1ZBTnZQdFpsckM1Zm84TEN3dW54czUwOUl2UmMzaVM0K2ZQcHc5T21UVE13T3dRQ2dVQU1BNUQxajBBZ2hqa2ZuUC9ndTVuZkRValdiVzF0MjcvWi9yYjMyd2Ftbit3eGVXZkp6Z3NYTHN5WU1jUEVyTC9jbk1ZWS8wTUg2eVU5YVVoT09jbWIwcEQxajBBZ0VNOFZLT0luQW9FWXptd3IyQmJGaVVyMFR4eVEzSGZ2M0QyV09kYk54czN3UzZZNVRkdnh6UTRUOC8zNTU1L0xxaWdLdmFZL0FJREtubmF6enYzZ3dZTW1ab2RBSUJDSUlRU3kvaEVJeEhCbTY5V3Q4d1BuRDBqV3QyN2RPbmZ5WEp4SEhQeVlWNVczOHN4SzdOc1hqN3o0ZWM3bjJGZlljWUJUZ0UyYnpiNTkrNHpPdDd1Nysrc3RhZTJzVllZa0pubXQrdUtidE5iV1ZxT3pReUFRQ01UUUFsbi9DQVJpMkFMMzNocW9nZjlkMys5NmdmV0NsWVVWL0RqR2NVeWRxQTRlMzJtNmt6QTZBWW9IQUxqVmVDdVVIWXBkR084WnYzM1Q5dnI2ZXVQeTNiNHpyY1VpeXNMQm9QZy9GSnZSN1RhSlc3NUxNeTR2QkFLQlFBdzVrUFdQUUNDR0xYbFZlVkdjcUFISit2ejU4NEtiZ2trakoyRm5SakpIam5VWmU2ZnBEZ0RnOHVQTFFjNUIyTWZpdW1LZXgvLzIrWEptT0U5Mm1yeHIyeTRqOHEyc3JOeVJlcmpEc0lGL2lOcGoxZUhUbDhyS3lveklEb0ZBSUJCRERyVHFGNEZBREZ0cU9tdmNiZDIxZnJYZ3RkWDFqVDI0dTZ4OU8zSGh3b1hHWmIxajg0NXA5c1RWdEtIczBMdE5kd09jQW9ycmlsLzFmN1ZKM0hTMzZlNEk2eEVBZ0pITWtmaVVjWjV4bTg5cy9tTFRGNzNOTjJWYm1uVGtLckxWTTNFODI4Nk1vb2QrWmVtNUNBRFFkV2V6dU9Sakc5NVIrQkVBUUxLZ3R6dXUrdmUzYVVkK05IVzlBUUtCUUNBR1A4ajZSeUFRdzVhVStCU3Q1OCtlUFh2dHZyTFRkWk9lYTFYQysxOXUzako3OW13bWsybEUxa3dicGxRb0paejBkL0kvZHVzWUhPWWZ5UndKUHpveG5NSmR3Z2twcFhKcFc3M2dsN2c0U3djSHF4RWpzTCtXSTBaWU9MclVXVTV5Y2dKT1RzRFc5cG1ycmx5NWN1SEtRNVhmdjNWSjFYVm5zL1JoR21zSk1VaW9wY2Y4bkJzWm1abVpzMmJOTWtKWkJBS0JRQXdoa1BXUFFDQ2VMNVJLNVZlYjB6b2NQN2RnK3VoSlJtSDYxSXRMdi85UDJzWlBQalFpbHpmZStjdlhIeVFSelBvQXA0QWJkVGY0MWZ5Wm8yWmlIMFBab1VIT3hPMjl6ai9LbUI0NjJzYkxTOWJhMm43L3ZyUzFWU1dYdzYrczNMd1RMNTc3ODlnS3dHNEEvTWN2VEd0MVcwWFZJUkkwL1IzbVBOVDZyZFJsMVplYk4vZG8vVWZ2aTNhM2RUODI3NWorWkFnRUFvRVl0Q0RySDRGQVBGOXMvMDlhSTJtY2hXTmt6MGs5MzltMWIwN2lLd2wrZm42RzNMbTlIZVRsZ2R4Y2tKc0xpb3FpcVpSeEYwZGNqUE9KdzZjWjZ6TDJac1BOUlVHTDhCL2ZqWHdYbjZhcW8rcWUvSDdXMlN6OHRFTzNVQ2hyYlpXMXRUVzFXZTVkQUpxYW52bDM1dzZvcno5R0hqbkNadVF6MldGSWJuNm1GRlhZeGYydVMzZ0wxcVI3ZHdKUG5UbzFiOTQ4WFdtMkZXempDL2dMQTQzMGhrSWdFQWpFWUFCWi93Z0U0am1pdXJyNnUvL3NGd2YvWWtqRUF4TFZUdWowenJmZnArM2R2VlZYR3FsWWZ1a3lOVGNYNU9XQlAvNzQ4MlJBQUZpOUdnUUVyTm43L1N1UnJwSDJWdlpZK2xpZjJNMzh6VjlNKzlPaFA1UWRlclBoSnNIcFA3c21lOTJHZFFTUEk1cU5EYzNHeHNiVGt3V0F2N2J0dWY2OXVmNjdvMlR0Ry84Q0FBQ3dpL3U5NCtKa1RiY2ZEQXJkcFVuRTBQWHRqYm9iVzY5dVJhWS9Bb0ZBREhXUTlZOUFJSjRqVXJhbFNWMVdrYTFkREV4djZiWGtmUDZ2bHk1ZG1qNTlPblpTS1pVMlhyL2VlUDE2UTJGaHg2UEtCUVg1QUlBeFk4REtsV0RLRkJBVEF6Z2NtTkJMclZpZWZUSjdudmYvUnROalBHTmlQR093ajRrQmlZa0J6d1FrdlZGM2crcE9YYkowU1c5VisrdTZWVWRPdkZ6VFhtWmhINno1TFQzMEs2cFR0TlhvTlowNU0yMm5uZGRNb0JRL3RtazYrT3FzWDNUZC83M005NzZiK2QzSjJ5ZDdLeGdDZ1VBZ0JoVW80aWNDZ1hoZXVIcjFhbGJlYlRYbmJmekpyanViTzNObXdtT2w2Rkh6RVJMMkVTSjBYcFg4VFpwS0xxKy9lclYwKy9ic1pjdU9SMFRrdlBQTzdiMTdwUzB0SHJIVEw1eHFyS3dFNWVVZ0xRMjg5aHBtK2dNQXdKcDFhd1FrUVVWcmhlRkM1clRrdlBmcGUwWm9SNmZUUC85NEZhTkJYK1IrWnVRdXBmQmgxNTNObWwvUmF0TSsrbkFWbTgzV2V1RzJnbTN1dHU0RHRYTUNBb0ZBSU13SUd2dEhJQkRQQzE5dVRxdXpXVVhUOGExUzlLanRqSzlkM085VXAyajhlYXJ6bEp2RlA2L3o5bzYyc3dNQU1OemN2RjkrbVQxdW5ITmtKQk52Nld1RFNxV3UyN0J1L3hmN2ZVZjRHaUxoSmNHbHNaUEg4bmk4bnBOcVkvNzgrZnVQL01xdk8wOXptYWtyamUwTFdXMW5mQUVBMWdFZllTZmxUWHgyKytVbFU1YnF1dXJVblZOOEFmLzQ3ZVB3bzd1dHU2NTRTZ2dFQW9FWTVDRHJINEZBUEJlY1BIbnlYaDJUNXFzOXBvMHUweDlDR2JYMmJPR0Y1ZXZYajVrMnpkYkxxMWY1dnZMS0t6OGYvL21QSjM5TWNKdWdQMldidEMyN052dk1nVE85dWorQnp6YXNXcnc2UmZLczlZK1A4ME5oK21pNi9sdFZwTHlrZUpJNWI1N3JsQ21qNTg5M20wWmNXSEJsK1JWNHNPalVJcUE3bENvQ2dVQWdCai9JK2tjZ0VNTWZpVVR5NzVTME50WldyVTJlVXZpdzdZeXYxZWcxV2sxL0FBREZacFRVKzUyVEZmWGZ2T1ZsUk81clAxeTdmc1g2U05kSU1rbWZzK1hGcW9zcjE2MzA2bVh2Z2tCVVZOVDhXUUY3Y24rdzhsMWg0Q1d5cXVNem96dysvc2MzRDArY2VIRGlSRzF1cmoyWE8zcisvRkVMRnBBb0ZFUHU4SStQUHdaUzR1WUdCRjU0NVpWcEdwMEtCQUtCUVBRL0pMVmFEUUJZc0FDY09ESFFzaUFRQ0VUZmNPalFvWFYvMzBPZHJDWGVKZHo3MWk3dWQ5SFZON0VOY1RWUlNRUmMwVC95TC81b25BQ2ZmL2I1MVhOWDlhZFJXYXN1L0g3QndzTFVRWm1xcXFySnNRdkV3VDhic3JoWnJSRFozSHI1M0ludGdZR0JBSUR1enM2SEowNDhQSEZDOU9RSnpkWjIxSUlGb3hjc1lMaTU2YmtEbjgvL1p1blMrYlcxZXRMY1Zha2VUcHg0SWkrdnQ3b2dFQWdFd2l6Z1RYMWsvU01RaU9lQytCZVhYSk8rVFdXL1FEamZkV2V6dk9FMzIybm41VTFYT2k1T2RwaFRRZEcyQzVqRnc4OCtYZWI1M3RxVnh1WCs1TWtUYVUrajR3QUFYMStEbGdmMHlOYnZkNmNjYTVUN0pQV1lVbDJ4OVowWmlxK1RQeUtjZjN6dTNNTVRKeHFMaXF5OEFuNXlPUG5PTzJEeVpPMTNXRHB6WnNMbHkxTjdtaVg0MHRvNmF0dTIxMTkvM1RBTkVBZ0VBbUZPa1BXUFFDQ2VPeTVmdnZ6V0I2bWlBT0ltdFpqMUQzVHZocXRvdnZyLzdOMTNXRlBuMndmd08wd0JCVVRSSXN0dEZTY29nbEtyclJ2cllvcTFRekFvVlFSRisyb3JpTFpxRlFyaUpDSzFQeFVSb1hVUFhLMkM0TUtKdUJXQ29qSmtLQWdDZWYrSWpSQkNFakVuQ2VUN3VYTDFTcDd6bkp6N1lKcDhjL0tjNTFpV3JMNTY3bTg1MWZyUnFxcXFCZzJkY0xmNVVnMmovdUs2RmQ5cCtkRDdjdkplUTBORGtSMWVYTHIwMXo3TldiLzBJYUxQUHljMm16eHF6MFFhRnhkM1lzR0M0THc4aVNVOTVQRit0TERZZis2Y2taSFJCK3dKQUFESVFzMm9qM0gvQUtBU2hnNGRPbjdvNFQvTy8wKzd3emYxOWRIcHNmRHQ4MU12OTNjVytnS2duOHRaK1N1YitScGxSbDFkL2FjRjdHOW1zalhNeG9ycFZ2SGt4S0pmZk91TC9rVFVwbi8vbWYxcDFIU0tqSHczbittU0pjUm1rN2MzR1JyUzY5ZXZOd1VHQnIxNFFXcVNKNC91eUdLTnlzbUpYTDE2MGFwVkRka2xBQUNRRVJ6N0J3Q0ZZUVd6K0hjdXN5OWJtMWd6dmJuNzkrOS80ZmhkYWE5OUxPMVcwcTlWbmhVL3d1S2ZoSjNybVN1TUlVZVBpcmlxbDVEUm8rdWRHMVRJMjdmRTRWQmtKTjI0UVZwYXhHYVRqdHFLWnJGclo3MTZKZVV6bEJGNXRtd1pjZVJJcjE0aXJrY0dBQURNd2NnZkFGQTgvdHlSc2M2eEFZa0JxZG1wZ2prbG1YUHhJcmxQWFp1alVhclhiNUdVcS9DcXlyU3VqRCs2SjdSMzc5Nk0xdGFJN045UGtaRjArUEFkTTlib0U4MmU2N05ZZ2tXRHlzb2U4OTVQSjVxaW8yTlpZeWtSSGFpcXVqWjU4b2FZR1BtVkN3QUF0YU0rcnZVTEFDb2hPSmhzYmVuaFBiWmgyZW5Ld3V0U3JzWEtqUHpHOVV0RS81ckdqNmREaDJqYXBKRDVPb1g2dGNNOUVXM1MxbjZxcS90VVYzZVR0clo5V1ZrbXI5YTFCYjVTVnk4NGNVS2FIeVVBQUlBaFNQOEFvQml4enJGMlpuYjh3VCtNSHZnL2U1WUdEcVNsUzJua1NMcCtYU2RpRFZ2dk9VZWFGYXRLN2pVdlRGam8zNWhHL012SHFWT255bTc4NDBZVll2cE1VRmNmcXE1K3FMSlNxTjJqcEdSVGNEQ1QxUUVBZ0RoSS93Q2dHQTdSRHFuWnFid2dIaEZaaEZrd3RKVkZpMmpJRUxweWhjTEQ2ZGd4NnRXTG5KMmRCM1FzclhoNldPSzZtazg0L3hmQXhodzFkVzBLQ3BxU25TMnhteVdMeGVVSlgxZTR2NXBheDVzM282S2ltQ2tOQUFBa3dKdy9BS0FZeWR6a2VOZDRJdkxvNVJHYUVwcVdreWJiRTM4VEUybkJBcnArblNaTW9EVnJxRXVYOTR0K25NZStQR05WRWE5S3pPcVZoVGY2dE9KNmU2NlJZVWxOdzU5Ly92bjB6aDE3S2ViNXFjL1VxcXExVzdkNmVYbkpzQ29BQUpBUzBqOEFLSWE1dm5rS044V3B1OU9aekRORUpNUG96NnVxdXJoMnk5Z0ZiRjA5dGNoSVl0Y1p1V05uWnpmZHFXOXg2V1h4enpOdU5NYjhpT0RpNHZMbm1qVzNIeno0Vk5JWGdFd2V6MDNVcFlzUGEycGFEUjNLU0hFQUFDQUowajhBS0VhV2Z4WXJtQldhRWtwRWw5bTFndmpyMTYrbno1bnpxcnBhek9wYUxOYnF4WXU3MUR5a1QwUkUyYWRQWDFtenBpUXo4NitsYmF5L24yeG1KbnIxcFV1WGZrenhxa3hYVjNkV1VGQ01yKyt5NG1JeDNmWlZWZjFUVlJXanJTM1UvcUM2T3RISTZNQkM0YXNMQXdDQWZDRDlBNERDOEFmOTF4VytlZk5SRnF2WTJWbmN5cWRQRzIvZXpBa05GVFJVdm42ZEZoSnlQeTZ1bVpHUi9jcVZIY2FQbDIyMUlPRGk0bklnT3ZyMDZkUEQxTldGRnMwcUw1LzEzLzBVSFoyNjY4Ym82bm92WHR5eVpVdUdhd1FBQU5HUS9nRkF1ZHk1YzJkTFFrTHhoZzJrcnkrdVgvZnUrK2JOOC9qbm42RkRoeEpSNXRHalY5YXNLWDMyck9QRWlmMFdMTkN1Ly9xMUlCTXpseXhaZWZQbXNJS0NtbzNuUk1YOW1wS3Jxdks3ZFpzMll3YVRwUUVBZ0RpWTh3Y0FsRXZJNXMyNXJxNFNvajhSRWIxd2NRbmN1UEZOUVVISzRzWEo4K2V6V0N5SDMzKzMrL1ZYUkg4NUdEUm9VQzgzdDExMUp2UVVMNlp0MjFrclZqQlVFZ0FBU0FQcEh3Q1V5S2xUcDA1bFpaVis5WlZVdmUzdHIrcnAvV2h2LzJqZnZpNXVibzRIRGxpTUdzVndnZkNlOTV3NU1XM2F2S2d6cDJkOTRpc3J6VzFzaHVKOFh3QUFoVUw2QndBbEVyaHg0ME1uSituN2wweWRtbEJlM25mVnFnR0JnUnFTaHAyQWJGbGFXbjd2NzcremVYTnBPci9rOGJZUzlTd3FLbjcwaU9uQ0FBQkFES1IvQUZBV20vLzhNNnROR3hvNHNGYnI5OTlUNTg2MWJqVjE2RkF3YmRyL2J0NlVaNTBnTUhQdTNCdVdsdGZFenM3RXQxTkRZOEtVS1hyUG5wM3k5TXkvZmwwT3RRRUFnRWhJL3dDZ0ZQTHo4MWR2MnNRVk9jL1B3b1YwLy83N1cyMWxycTcvTzNMa0pyNEFLSUs2dXZxc0pVdGk5UFVmOFhoaWJzZXJxbExidHYyL1RacyszN0RoVFVIQlNVL1BuSFBuaU1nOTNwMFZ6R0lGc3dJU0F4UzlLd0FBcWdKei9nQ0FVbGdiR2ZsczVFaXl0UHpnTlhWMWMxeGNmdDIwYWRlR0RRelVCUktNSHovK1lHeHMyTU9INHJ2TjlQSFIwZEV4SFRyMGk2MWJ6L3I1blo0eG8rVG55ZGxsMmJ3Z1hscE9tZzNIeHFPWGgyd3Y5Z3dBQUNJaC9RT0E0bDIvZmozbStQR3k5ZXRGTDE2OW1sYXZmbmQvNmxRS0RoYnVNSGJzUDJmUEhqMTZkUFRvMFF4V0NmWGd4TVJJMzdtTmpjMFhVVkZKZm42UE44VDg2YjlhMEk3b0R3QWdIMGovQUtCNDI3WnR5MjdmbnBvMUU3MTQ0VUppczhVL3c3TXZ2N3lXbDRmczN5aTA3TmJ0aTZnb1RUKy84NEdCY3g2dVBsSjZZYjc5ZkVVWEJRQ2dLakR1SHdBVXo5dmIyL0QyYlNvcWF2QXptQjQ1TXRETVRJWWxBYVAwVEUyLzJMcTE3Y0NCenBjbUJGYno0dExqTVBRZkFFQStrUDRCUVBHNmRldm02K3pjY3MrZUJxNi9kNjlEaHc2WVNMNXgwZExYL3lKcTY0R0t4Y3VXa1U3ZW9PemliRVZYQkFDZ0VwRCtBVUFwekowNTg1T1VGTHA3VjhTeTFhdHJ6ZmpKNWRaYVdsallicytlNVQ0Kzhxa1RaQ1U4TmZ5emJaLzkvVGQ5K3kzZDFkcjk2S3lkb2lzQ0FGQUpHUGNQQUVwQlQwOXZxWS9QRDN2MjVQMzBVNjBGZi93aGZzVm11M2ZQY1hQcjBxVUxnOFVCQS96cy9GS3pVMW5CTE9wQVhTdmNMa1Q0VGVaU1FnS3hXRVJFcDArZnZuYnRtdVFuOGZOanZGQUFnS1lGNlI4QWxJV3JxK3ZXL2ZzVHo1eWhJVU9rWGVmMmJkT0xGK2NlUHN4a1hjQ1VXT2ZZV09kWS92MUFkVnErbklZUHA0UUVNalNreU44RDIxY21mZnBKdmV1V1ZkRHVXNStNR2pXcWUvZnVjaW9YQUtCSlFQb0hBQ1VTT0d2V3pSVXJua3FkL2x2RXhTM3g4ZEhSMFdHMEtwQ0RaY3ZJd0lBQ0FtajRjSm82ZGJ1cFJ1YnlzUkpXYWRIc1dlVDZrUEFOVytWU0lBQkFFNEZ4L3dDZ1JBWVBIdXplcHc5SmVmcnZ2LzhPNXZHK2RYRmh1Q2lRay9uemFjc1d1bnk1WU8yS3BWNTl1Ukw3dS9XbjNQUkRKMDZja0VOdEFBQk5CdEkvQUNnWG01N2VGTDZIOHZJazlqVFpzeWR3MWl3NWxBUnk0K1ZGWDA5Wk8yTndUdWMyMHZXM2VSNFpGc1J3VVFBQVRRcEcvZ0NBRW5ueGdoWXZ0dFNwbUs0V0V2cDY4aVF4UGJWUG4zYnMyOWZlM2w1dXRZRWMzTGh4NDluREhSdW1sRW5aMzZFekhjNjR2RzNidHUrKys0N0p1Z0FBbWc2a2Z3QlFJcDZlbEpsSmNYSGVpZWZ1RjZXbWl1dXFveE9JV1Q2Ym5NajFJWjdXejNXMGFqWEdYYUt2bzkvZFh6R0pBa2JVV3VwbFgvNTllTENqbzZPeHNiR2NxZ1FBYU15US9nRkFXU3hhUkFjUDB0S2w1T0tpNGVJU3B1aHlRTjZPSERsU2NqL1J5ZmwxemNia0IvUjFOTjFaUmgxYTA2TTg2aFpJRmkzSnRmLzdEaDFiazZ2VmM4NjYxVDh0V3lQdmlnRUFHaUdNK3djQXBSQVRRNnRXa1pNVEJXRVV0NnFLREEvMnNuNG1jbEdIMXUvK1c3R3hWdlRuODdJck8zdDAxOVdyVnhrdUVBQ2dLVUQ2QjRBUDVoRHR3QXBtc1lKWjRhbmhNbm5DR3pmSTA1TzZkYU90bUx4UlZVVnRqdWpSL0xGZFIrSDJ3WjNJZXdocCtaQ1dEOFZkRXIydXRnWjU5bnNTR2JHQzZTSUJBSm9BcEg4QStEQUJpUUhKM0dSZUVJOFh4UE0vNXArV2svYnh6K25wU1cvZVVGUVVHUmg4L0pOQjQvUGt5WlBJamVGZTFzOUZMbDNuVGhVYjZjNHkranFhdEh3bytZR0lQaFA3VW92Qzg4eFdDUURRSkNEOUE4Q0h5UzdPZHJOeTQ5OGZiRDc0VE9hWmozekNjNy84YmtyWE4yMGlCNGVQTGc0YUoxTlQweTlHanYvbnJyZysvR0UvM2tNbzlxS0lwVGVmVXRvVG5Na0dBQ0FaMGo4QWZCZ3pmYk56M0hQOCs4bmM1T3ppN0k5NXR0di8rOS9qWFZzWGo5OC9jNllzaW9OR3k5dkhOeXJOSk8rVmNIdkljZEtxTWJmVG96eXliQ1ZpOWFqeit0NXpsekJZSHdCQVU0SDBEd0FmSm1Sa2lJV0JCWC9jditCSGdJWjVscEtTOXR0dmJXeHNCdno4czZ6S2cwYXFZOGVPVTZiUGpicllVcWc5WU1UN2NmOWFQdFNodGZDTW4wUjBMSjFldDdSMzhmaE9QcVVDQURScStKMFVBRDVZMHZRay9oMkxNSXQ1OXZNYTlpUnY4dkxPTDFtaXBhOC9jUGx5MlpVR2pSamJ4Mi84WHp1dVpiL3NZMWFyZlowN3JYTVh0K0xXS3lZTDFnUXlXaHNBUUpPQlkvOEE4R0hDVThQZDQ5MkpLQ0VqZ1Z2TTliUHphOWp6cEFZR3ZzN0pHYmg4ZVF0TFM1a1dDSTJWdHJhMnQzOXcxS1hXSDdSVzlBWGRIZ01kQncwYXhGQlZBQUJOREk3OUE4Q0g4YlB6NDgvNFNVVHhydkZDU3c4Y09DRHhHWXlNalBRdVhIajY3Nys5Wjg4Mkh6NmNrU3FoY1pvOGVmS2h2N1lmdnJsM2JFK3ArdWNVMGRiekxlS1BZc1EvQUlDMGtQNEI0SU1KUnY0SWVmWHExWUlsWWVXOXUwTTRBQUFnQUVsRVFWUXRob2hadCt6bC9SNkdMNzFlUHJZWU5hcm5yRm5NRkFpTm1MZnZvbC9tcG83dEtmcXlYMEtpVXB0OVAydWhoWVVGMDFVQkFEUVpTUDhBSUROcjEwZVd0QmhUWWJGQVhDY0x1bkpoK2czOVp5N0xsc21yTG1oTWJHMXQrMzN4elphazFUTWt6UUI3T1pQU1huYmM1ek5YTG5VQkFEUVJHUGNQQUxKeCsvYnQ2TzBIeWszWWtydDI5ZDlYb2Z0V0RlOC9JQnJieDNkcldydWJUeW4vdGJoYlpJcVI5OXlmMWRYVkZWMHZBRUJqZ21QL0FDQWJvV3M1cjl1eVdacVNyOWFyWWRqclJhNGpoOFB4ODJ2Z0djUFF0Sm1hbW5yUFdmampqazMxZGVEeGVLKzQzRGE2emI2YVBFV2VoUUVBTkFGSS93QWdBeWRQbmp5VDlyeXFzNGUwSzFpeTEyeVk2T2pvMktWTEZ5YnJnc2FLN1RPWExYWkl6OTJZbUV1Ly9ubzNKcWFyaDlTdk9nQUF3TWdmQUpDSjRGV1J6L1c5YTdhVTNWcGRmSG8wLzM3VnE0ZDVNU3pCUXlKaWFSbVZHTE5Ed2pseXJSS2FrSzRlSG9aZHVxUnYyVkpkV2Fub1dnQUFHaE9rZndENFdKdTMvUG1zdklObUc5RlQvVlM5ZXZoeWZ5ZURFV2YxaHgydDJhN2Q0ZXREWjdOUG56NHRseHFoQ2VveFkwYlppeGUzdG14UmRDRUFBSTBKMGo4QWZKUzh2THlRY0U1ZVM5RW4rd3FpdjZheGlBbGNYclZoQjYvQzRYOW9vUGFPam0zNjkwL25jTjdrNXl1NkZnQ0FSZ1BwSHdBK1NzUUdUcEdCbTNyelRuVVhWWlhjZjdtL1U3TXVzMFJHZnlMU2JEc3NJODkweDQ0ZEROY0lUWllWbTExVlVaSE93WGRJQUFCcElmMERRTU5kdlhwMTk5NS9lUmIxSGZoL1lERGk3TnVjeFBMTTJQcWU0YTBwZThQVy9Zd1ZDRTJjeWVEQjVzT0gzOW14bytqQkEwWFhBZ0RRT0NEOUEwRERXVmhZc0twS3EwdTVJcGRxbVl6U05IWm9icit0SkhsSzFhdUhJdnRVdithcWEyZ3lXU00wTmVHcDRheGdGditXbHBQV1k4WU03UzYyNnpkcEtib3VBSURHQWVrZkFCck95TWpvcHdWc3pTZml4bDFvR2p2bzlmMnQrTlJJa1VzTkN6aS8vaXpGQmNJQWlJZ29MU2ZOLzVnL0w0akhDK0s1V2JsTmpKM1lxbWZQbzhaLy9CeHFucFNrNk9JQUFCb0RwSDhBK0NqVHBrM3IxWmI3OXJtNHFYdDBlaXhVYjlINTVmN09RdTFxVC80MzJLYjk1NTkvem1TQjBLUlltMWp6Z25qOCt5NVdMdnc3aXhZUkVhMVlvYWlpQUFBYUU2Ui9BUGhZUHkzd2Jsa2dmUGhmcDhmQ21sTjg2Zzg3Mm5MOC9ab2Rxc3Z6dEo1eWxpM0NnWDlvb0QzcGUxeXRYSW1vWTBkYXVKQ09IS0Y5K3hSZEV3Q0Ewa1A2QjRDUE5XellzSkYycHVXUFAzRHFua3pPYkxacnAwNGlKZ3NDa0NnZ01TQzdPRHRrWkFqLzRhSkZaR0JBSzFjcXRpZ0FnRVlBNlI4QVpHQytIN3ZGQ3c2djRxV1UvU3RmWG12OTl0KzVzM0hnSHhyQ1BkNDl1emc3YWZyN2tmNkdoclJvRVowL1QzLzhvY0M2QUFBYUFhUi9BSkNCcmwyN3pwNHhTVHRIMm1uWE5aNXdmbDdJYnRhc0dhTlZRWlBrSHU5dVoyWVg2eXc4amV5UFAxS0hEamo4RHdBZ0FZdkg0eEdScXl2RnhTbTZGZ0JvekVwTFN3Y09HZitrYmJpNllVL3hQU3VlSHY3TUtPRmd3bGI1RkFaTlNVSkdnbk9jcytDaHViNTVsbitXNEdGNGVGNmcvODkyZHRTblQvMVBvYTBkdkhLbHJxNHVrMlVDQUNpWG1sRmZRNkdWQUVEVG9hdXJHL2lqdC85cVRybGhoUGllQm5tY0phc1d5YWNxYUdLY3Vqc0o1dnlwNjNWQnhBU3RIZU92Vk5LVmVwOWhuN282cDBNSFB6OC9SdW9EQUZCNlNQOEFJRE11TGk1LzdEeDBNMjFFZmdHOWZVdWZ0QlhkYmV4SSs0RURCOHEzTkdqNnJsMjdkbnJYcmlnTm5qYXBpK25Xazhmei9PMjNzV1BIZHUzYVZXNjFBUUFvRDZSL0FKQ2xIZEcvUDMxS3ZYclJOOTlRV0ppaXF3RlZFaGthNnBHZnJ5MnBteUdMNVZGUUVCa1NFc3FSOWpRVkFJQ21CT2tmQUdUSnlNaG8rM1lpSWc4UE1qSlNkRFdnTWc0ZlBseDA2dFNZOG5KcE9qdHBhTXcrZVBEMDZkUERoZzFqdWpBQUFHV0RPWDhBUU1iKytvdmF0YU5Sb3hSZEI2aVNUY3VXZWVUblM5L2ZvNkJnVTFBUWMvVUFBQ2d0cEg4QWtLVUhEK2pNR1pvOFdkRjFnQ3FKWEx1MlczYTJ0ZHI3VDdRTDFkWHRTa3NGTjQ4NnZ3a01VbGMzdm5Wck8vK0hLZ0FBVllMMER3Q3lsSkJBUk9Ua3BPZzZRR1U4ZWZKazgrclZIZ1VGZFJjOTFkWGwzNGlvN2hjQWo5TFN6Y0hCQmFKV0JBQm93cEQrQVVDV0VoS29Rd2NhT2xUUmRZREtpSXlJbVByNnRRbUxKYWJQU2kydGY2cXFNbm0xcGdydHlHS056czNkdkhvMXd3VUNBQ2dYcEg4QWtKbGJ0K2pDQlF6N0FmbTVjT0hDcGIvK212cjJyZmh1bGl3V0VUM25DVjhvWUdwbDVmRWRPMjdjdU1GVWZRQUF5Z2ZwSHdCa0p1bFlQbUhZRDhqUjVuWHIrbVptTm5oMUhTS1gzRnoxTjI5a1dCSUFnSkpEK2dlQWQ5emozUU1TQXdRUFdjRXNWakRMSWRwQittY3dUMklmbXVadGI4OUFjUUNpVEpzKy9ZNkppY1J1L0RFL3Rtb2lQdklPR1JzWFYxWEp2aklBQUdXRjlBOEFSRVFPMFE2NzAzY0xIcnJIdTd0WnVmR0NlRVJVOHl1QkdDOHpNbDdldm0zYTM0cXBFZ0hxR0Rac1dQdFJveElxSzhWM1cxUlI4YTJHaU92YnhHaHE5blYwdExPelk2WTZBQUJsaFBRUEFPUWU3KzdjdzNtdytXQkJ5em51T1JjckZ5S3lNN05MelU2VjVrbXlqaDhuSW9zUkl4Z3FFa0FrNzRDQUdDT2pvanBqK29sSU1PTW5FYTNVMGhKYStvekgyOW04K2F3bFMrUlJKUUNBMGtENkJ3Q0tkWTcxcy9PcjJjSXQ1dkx2bU9tYlNma2szTVRFbHA5KzJySjdkeGtYQnlCVzE2NWRuWDE5ZDdab1ViUFJWazFOTU4zblUxM2RHRzN0dWl2dVZGZG5Cd1NZbVVuN0NnY0FhQnFRL2dGQUJ2S3VYU3QrOU1nY0IvNUJFV2JPblp0c2JIeTd1bHI2VmE1VVYyZDA2T0E5ZHk1elZRRUFLQ2VrZndBUXdWemZuSDhudXpoYm12N2M0OGVKQ09rZkZFSlhWM2RXVUZDTW9hSDBxK3hxM1hyV2loVXNzVmNKQUFCb2twRCtBVUNFUWVhRDlxVHZJYUs0OURnN004bm5SSElURTF2MTZtWFFxUlB6cFFHSTRPTGlVdDYzNzJucFp1ODVVbFdsMjcvL3VISGptSzRLQUVBSklmMERnQWl4enJHNzAzZXpnbGtXQmhZaEkwUEVkMzUrOGVLckowL01SNDZVVDIwQUlzMWNzaVRHMkZoaXR3cWltSll0WndVRnlhRWtBQUFsSkdJR05BQlFUVW5UazJvKzVFLzNLWkNjbkx6SXo1TjRJcVpXTEgvNTh1MnJWM29SeTlTMnJJMkpQMnhxYXNwc29RQ2lEQm8wcUxlYlcyaEVoS082dXBodWV6VTBoamc3OSszYlYyNkZBUUFvRmFSL0FKQUtaKzN5dVRaM3Z2aFVUSmZNYlJkMU9ldFhCNjljSzdlcUFHcnluak1uOE42OTZOZXZhelpXbHBibTM3alJ3c0pDMThTRWlOVDA5SDRPREZSUWdRQUFpb2YwRHdDU3hjWEZ0U2k5T1g2WWhHNC9EQzUxK2wvY2hRdFRiVzF0NVZJWFFDMldscFovN3RzbjFGaGRXUm5icDA4bko2ZUJ5NVlwcENvQUFLV0NjZjhBSU1IcjE2ODU0Y0ZlL1o1STdNbGlrWmZOTTA3RVNqbFVCU0FsTlEwTi9ZNGRpKzdmVjNRaEFBQktBZWtmQUNUZ2JGejdwVVdPVlR1cE9vL3RTUnJQVHY3OTk5OE1Gd1h3QVF3NmRTcDY4RURSVlFBQUtBV2tmd0FRNSs3ZHUzL3Y0bmdOZUNuOUtsNERTeUxEZ3NyTHk1bXJDdUNER0hUcTlQYlZxOWM1T1lvdUJBQkE4WkQrQVVDY3lQVnJ2UHJuR3VyV2FueVVSMW8rNzI3ajFndXYwc2VNQnJXK3grRnc1RllrZ0hqOEsxRVU0L0EvQUFEU1B3Q0ljZXJVcWFmcHA2YjBLeFZxN3haSU82WlR4VWFxMkVqM2MybE9yUENLWHZadllqZ3JIejU4S0tkQ0FjVGlwMzhNL2dFQUlLUi9BQkNERXhiazJWdDBnamR0K2U3TzdXQmE1eTY4MUxnNWVWbm5SSzVmdzJSMUFOTFM1NmQvblBnTEFJRDBEd0QxMmI1OXU1bEc1dWRkUlN6YU1aMkdoWktXajRpai9nTGYyTkdEaS9zM2JOakFYSVVBVW5vMzdRK08vUU1BSVAwRFFIM09uVDF0Mll3cmNwRnIvM2ZEZm81bmtKWVBoUndYL1F4MnBpL2RKNDloc0VRQXFUV3pjYnlyTmx6UlZRQUFLQjdTUHdDSXhwNDE1L0JEMDRvcWNYMXVCOU9PNlJTVkpHTFJ2UmUwNzA0YmxyWWhRK1VCZkpBejFUUG43SnllbWFub09nQUFGQTNwSHdCRTY5ZXYzK0N4MzlWTjlza1BTTXVIa3Y4YlE1SDFram9iaTFnOTZyeSt0KzlpSXlNalpxc0UrRTlhVGhvcm1GWGYwaDQ5aUlodTNaSmZQUUFBeWducEh3RHF4WjdsRzV2Ui9sRmVyY2JCbmQ2UCs5ZnlvYWdrT2poYmVNVi83bEtPV3ZldnYyZkxyVlJRY1FrWkNUWWNHekVka1A0QkFQaVEvZ0dnWG0zYXRQSDJEOXA2MFVDb1hURHV2MklqM1E0V3NXTFVGVlAyL0pYeUtCR0FLQzBuemYrb2Y3eHJ2SmcrU1A4QUFIeEkvd0Fnem5mZmZmZWcwaXI1UTJaSzNIbWV6THM3REJzMmpMR2lBR3F4TnJITzhzOFMzMGREZzdwM1Ivb0hBRUQ2QndCSnZQMlhSbDAxbDdKendXdmFlcVdkOTd6bGpKWUUwQUE5ZWxCR2hxS0xBQUJRTktSL0FKQmd4SWdSclQ4ZEhuZEpxczVScWMyY3BzM3UwcVVMdzBVQmZMQWVQYWlvaUREdER3Q29PS1IvQUpDTS9VTkFWTm9uSlc4a2RMdjVoUDdodG1QN3pKVkxVUUFmQmtQL0FRQ0lTRVBSQlFCQUk5Q2pSdzlITng5MnpQSVIzZDZLNmJiN1NyTlpQd2ZxNnVyS3JUQUFpWDRNOEtzc0t5Q2l3cGRrM0lJaVZ0T0pnOEo5Um56bE1YcjBhQVVVQndBZ2Qwai9BQ0NWR2JOODlReGFWMWVXQ2xxV0xhZDJKdVRsOWI2UHkwQnltZkt0QW9vRElITHE3c1FMNGdrMS92dnZ2NDh1NzJmM2ZVUkUxSmFtZUlwWThWWU9jY0x2SWYwRGdJcGc4WGc4SW5KMXBiZzRSZGNDQUkyS21SbjE2VU9IRGltNkRvRDZUWjA4L0Z1TGs4TzZTZWdXZUtoWjUwbnJQVDFGZlRrQUFHajhha1o5alBzSEFJQ21LU1ltcGszVkhZblJuNGk4N045RWhnVTllL2FNK2FJQUFCUU02UjhBQUpxZ3dzTEN5TjhEUGZ0bFM5UFp3b2krNlZjUXVXNDEwMVVCQUNnYzBqOEFBRFJCbkkwUjR6by83ZFpXMnY1ZWRtVVhUc1JjdWlUZDFMWUFBSTBXMGo4QUFEUTE2ZW5wUi8vZTVtVlhKdFErSjVhMGZON2RraC9VV3FTdVJwN1d6em5yVnNxdlNnQUFSVUQ2QndDQXBvYXpQc1RMNWtWejdWcU5JY2ZwZUFaVmJLU0tqYlJqT2cwTHBVZDV0VHA4MVp1SWUzemZ2bjN5TEJVQVFNNlEvZ0VBb0VsSlRFd3N1SGZTcGMvcnVvczZHNys3NDlxZktqWlNoOWJDSFR3SGxuRENBaXNyS3htdUVRQkFZWkQrQVFDZ1NZa01XK3JWbDF1M1BXQUUzYzk5Tit4SDZLaS9nTFVGRFdoNWw4UGhNRnNpQUlEaUlQMERRQU10K0RMT3FlZEpSVmNCVU12V3JWdGZaTjBhMUVuMDB0dkI3NGI5ZEFza0xSL1JmZHo2dnJsd0lvYTVDZ0VBRkF2cEh3QWF5Q0pyVThmaWVFVlhBVkRMdDk5KzI2Sk41N1FzY1gzNHczNDZHbE9jcUFsKzlxWHI5QnFJNi80Q1FKT0Y5QThBNzdqSHV3Y2tCdFJzQ1VnTWNJOTNWMVE5QUEyZ29hSGg3YmNrNmxLcnVvdkdyYWR4Njk4L2ZKaExwaTJGKzl6S29jUkhuN0I5NWpKWkl3Q0FJaUg5QXdBUmtVTzB3KzcwM1RWYjNPUGRRMU5DRlZVUFFJTk5tRENCWmZMNWdldkM3UWRudngvM3IrVkRPNmJUNERvRGhMWmUwR2ZQL2JsRml4YnlLUlVBUVA0MEZGMEFBQ2llZTd5N2N3L25taTBCaVFGbSttWnVWbTZLS2duZ1k3QjlGd1hOdmpDMlo3WjY3V05jdDRQRnJYVWlnMTdxV3J0L1BaM1IyZ0FBRkF2SC9nR0FZcDFqL2V6OGFyYUVqQXdKR1JtaXFIb0FQbEwvL3YwSGpwd1dsZlJoYTBWZGFlYzliemt6RlFFQUtBdWtmd0FBYUlMWVByNy91MkdhVlNCdC96OHY2bmExR2UzZzRNQmtVUUFBaW9mMER3QUFUZEFubjN6aTdSOGNkY0ZBbXM0dlNpanFnZ0Y3N3M5TVZ3VUFvSEJJL3dBQTBEUjVlbnJlS2UrZThsQnl6NmlVWnRObStIZm8wSUg1b2dBQUZBeG4vUUtBVk1yTHkvLysrKythTFJkZnZORFQwSGdXRzF1ejBkMGRNNFNDRW1IN0JVV3QvbDVQNjVtWVByZWZVV3BlaC8wK2ZtTDZBQUEwR1VqL0FQQk8wblRoY3lSam5kOG5lMDVFeE43VnF6OVRlLytEb1haSlNWVlcxdTNyN3lkV1BGaFoyYng1ODNIanhqRmRLb0NVUm84ZWZYamY2QTMzdUVSVVdWYVdmKzFhY3dzTHZYYnRoTHA1KzM2dnFhbXBpQUlCQU9RTjZSOEFKSHYwNk5HT2RldWlYcjl1eldLOWIyV3hxTHFhWHIwU05BeXNybDRmR0RoMjdGZzFOWXdxQkdVUnNla1AvcDJzWThlUzVzMzcvSmNOcGtPSEtyUWlBQUJGd2ljMEFFaTJlYzBhajVLU1d0RmZsTDVxYXQzdjNlTndPUEtwQ3VDREZEMTRRRVFHbmVwYzRnc0FRSlVnL1FPQUJHZlBucjF6N0poclJZVTBuYWRXVlhGKytZWEw1VEpkRmNDSEtucndRRU5IcDdtNXVhSUxBUUJRSktSL0FKQmc4eSsvVEhueVJNck9uN0JZSHJtNWtXdldNRm9TUUFNVVAzaUFBLzhBQUVqL0FDQk9iR3hzaXp0M2hxaXJDMW91VkZlM0t5MFYzRHpLeTRWV21hcWhjZVd2djFKVFUrVmJLWUJZUEY3Umd3ZjZTUDhBb1BLUS9nR2dYaVVsSlp1Q2dxWThmMTUzMFZOZFhmNk5pT3ArQWZESXk5dThhcFU4U2dTUVR0R0RCN3pxYWh6N0J3QkErZ2VBZW0xZXUzWm9ZV0ZYc1JQNHJOVFMrcWVxS3BQSHE5bjRoYnE2MnBrekNRa0pEQmNJSUMyYzhnc0F3SWYwRHdDaVpXUmtISWlPbmxwU0lyNmJKWXRGUk05cnAzOGltbHBXdG1ucDByS3lNcWJxQS9nUVNQOEFBSHhJL3dBZ1dtUm82Smo4L0JhU1p2bXNUdzgxdFlHWm1ZV0ZoYkt0Q3FCaEx1UllWL1diaWdsL0FBQ1EvZ0ZBdE82OWV1VnBhVW5zeGgvell5dHFkTkQ5RmkwdzlTY29pZkM5ZHV2dUxsWjBGUUFBaW9mMER3Q2llYytkZTdkVHA3VHFhdkhkRmxWVWZLc2g0cXJoKzZxcTJnd2FaR3RyeTB4MW9LTGM0OTBERWdQNDk5TnkwbGpCTFA1Ti9GbzhIdDI2UlQxNk1GOGZBSURTUS9vSGdIck5DZ3lNYWRGQzVDTEJqSjlFdExMT1R3U3ZlYnhkYmR2T1hMcVU2UXBCcFRoRU8reE8zeTE0T0RGMm9wdVZHeStJRnpZcXpDSGFRY3lLdDI1UmRUWFNQd0FBRWRJL0FJZ3hkdXhZZzlHakQxVlYxV3kwVlZNVFRQZjVWRmMzUmx1NzdvbzdORFhIVHAxcVpXVWxyMHFoNlhPUGQzZnU0VHpZZkxDZ2hWdk1kYkZ5SWFJaGxrT1N1Y2xpMXIxMWk0aVEvZ0VBaUpEK0FVQTg3L256ZHhrYkM4L25MOWI5NnVxVHJWck4vUEZIcG1vQ2xSVHJIT3RuNTFlenhWemZQSVdiUWtSbk1zOFFVVnBPV24zckl2MERBQWdnL1FPQU9IMzY5UG5pKys5M1ZGWkt2OHBPWGQyWml4Y2JHQmd3VnhVQUVlMTEzeHVhRXNvS1pxVm1TN2l3OUsxYnBLZEhIVHZLcHk0QUFLV0c5QThBRW5qNytoNHlNM3RjWjBaL2tjNVdWUlYrK3VsVUx5K21xd0t3TnJIbUJmRjRRVHorK0I5ckUrdjZldUtVWHdBQUFhUi9BSkNnZGV2V3M0S0NkdXJxU3RONVY1czJzMWFzWUxva0FDSnlpSFpJeUVnZ29qM3BlOXlzM09yclZsMk45QThBOEo2SWVmb0FBSVI4ODgwMys3ZHNTYmwweVY3VXZQNEM4VnBhblQ3NzdQUFBQNWRiWWFES0lzWkUySEJzaU1oYzN6ekxQNHVJWHJ4NE1YL0pmS0Z1UlVYRTA2RWJEMmlhTnhHUnZyYitxbDlYdGFobk1pc0FnQ1lQNlI4QXBESnI2ZExGTTJid3lrV2NBRnhVUkdXbDFLWU4zU2txdUxwc21meHJBOVdSTkQxSmNKOC84cWZtMG9pTkVmdHU3YXZ1V3ZzaUZYcWs2MFozaU81VUVoR3hyclBhYld6MzA0OC95YU5jQUFEbGcvUVBBRkw1OHNzdno5NitMWExSOGVNMGJoejVMYVRaczBsTGlzc0RBekFoTFMxdDE2RmRhbzVxYXVyaWZxSGlmY0xidUdPajB3U25Uei85Vkc2MUFRQW9ENHo3QndCcGFkWEQwVkdyWFR1dHZYdTFFUDFCZ1ZhdFhWWFNvNFRVSlhSak5XTVZmbG9ZdWk1VUxrVUJBQ2dkcEg4QWtBRW5KenA3bGg0OFVIUWRvS29PSERpUW1wbGEwYmxDbXM2YXZUV1BYRGx5OHVSSnBxc0NBRkJDU1A4QUlBT1RKeE1SSlNRb3VnNVFTZFhWMWIvOC9zdkxUMTlLdjBwaDk4S2xvVXNacXdnQVFIa2gvUU9BREF3ZFNoMDZJUDJEWXF6ZHNQWlo4MmZxcHJVRy9WUm1WaFlGRnRXM2lrWjdqZXRsMS8vODgwL21xd01BVUM1SS93QWdHMDVPZE9FQzNicWw2RHBBeFhDNTNOODMvUDZ5K3djYytPZmo5ZVV0KzMxWlhsNGVFMVVCQUNndHBIOEFrQTBuSnlJTS9nRzVXeE94cHJSWHFWcUxELzQ0VXpOU2U5bmg1ZXFJMVV4VUJRQ2d0SkQrQVVBMjdPem8wMC9wN0lrU1JSY0NLaVExTmZYb3VhTlZ2YXNhdG5wMW4rcllnN0hYcmwyVGJWVUFBTW9NNlI4QVBrQmFUaG9ybUNWNGFCRm13UXBtc1lKWjd2SHVSTFROTCtHN1BMc0NqUDRCZVZtM2NSMVhqOXZ3OVRVb3YxTitCVStxbVlJQUFKb0dwSDhBa0ZaQ1JvSU54MGJ3MEQzZTNkWEtsUmZFdTh5K3ZEdDlkM2hxZU5jaFBZaUllL3k0NG1vRTFjTDJaTGQ1MWFiaDYvT281YU9XdkFxZTVKNEFBRTBGMGo4QVNDVXRKODMvcUgrOGE3eWdKZFk1Tm1Sa0NCRlptMWdQTmg5TVJDMjdkMi81NmFkSS95QTNuMy8rK1VTN2lSVlhHM2p3WHYyYStsZER2N0sxdFpWdFZRQUF5Z3pwSHdDa1ltMWluZVdmSlhKUldrNWFNamZaejg2UGlNeEhqQ2grOUNqdjZsWDVWZ2VxYTQ3UG5GYTNXL0ZLUlIrL0x3b3M0dC9LRHBZSkxhb3VxdFpOMTEweWJ3bnpOUUlBS0JHa2Z3RDRXRFljRzhGdkF1WWpSaEFHLzRBY2RlN2NlZmIwMmJvM2RZWGFOU3cxREpZWkNHNDY0M1NFT3VqYzFGbmd1NkJkdTNieXFoUUFRQ2tnL1FOQXcvRlBBcjdNdnV6VTNZbmZZdENwVTZ2ZXZiT1Eva0dPNXY0dzF6amZ1T3JaQjh6OFU4V3RNaWt6OGZYeFphNHFBQURsaFBRUEFBMlVscE0yTVhZaUw0aG5iV0pkczkxaXhJalhUNTQ4djNCQlVZV0JxbW5XckZuUS9LQVd0MXBJdjRyaGJjTVZQNjVncmlRQUFLV0Y5QThBRGVSN3hKZGJ6T1hQK01rS1pvV25oaE1Sajhjekd6NmNSNVIxL0RpdmZvcXVIWm9hSnllbmdaOE1yTHhiS1UzbnQrbHZiVHZZamgwN2x1bXFBQUNVRUl2L01lenFTbkZ4aXE0RkFCcS9tZCs1WER4L3JyendKYStxcWxtcjFpTDdPTGxOWGJ3VUYxZ0ZHVXROVFhXWjQxSXlYc0wxNW5odmVicjdkSTl0UDlhN2QyLzVGQVlBb0hBMW83NkdRaXNCZ0NibHdJRURiNThtcC9ybS9OZnd0RzZmTjIvSmFmdE94MGxUKy9UcEk4L2FvTW16czdPYk1ueEt4TWtJelI2YVlycXAzVkw3WnVJM2lQNEFvTEtRL2dGQU5xcXJxeVBEbC8wMElFZDh0MmFhNU5YdktTZGl4WWF0dStWVEdLaU9TWjlhL2ZPSHRsYTVtWjZaV1gxOW1wczJYK2k3VUo1VkFRQW9GYVIvQUpBTnpzWnc2MWJaL1MwbDk1elVqNDdzT1hINDhHRU12QWJaS3ZqcnIwWGRyU2NjUDY2bWdVODNBQURSY05ZdkFNZ0FsOHZkdWluVXkvcVpsUDI5K2hkRWhnY3pXaEtvbXJzN2R4YmR2Mi9GWmlQNkF3Q0lnZlFQQURJUXVXNjExNEJDRXdOcCs5dDJvSjdOcm5NNEhDYUxBaFZTWFZtWnZtV0xZZGV1WGFkTVVYUXRBQUJLRGVrZkFENVdTa3JLemRRajB3ZVdDclhQaVNVdG4zZTM1QWZDYTNuWnZlR0VCejk1OGtST1ZVS1RsczdobE9YbVdzMllvZWhDQUFDVUhkSS9BSHdzVHZneXo5N0M2VDdrT0IzUG9JcU5WTEdSZGt5bllhSDBLSzlXQjdPV05IMUFJV2M5cHY2RWovVW1MeTk5eTVZMkF3Wlk0a3dTQUFCSmtQNEI0S1BFeDhmcnZyb3gya3JFb3M3RzcrNjQ5cWVLamRTaHp1ei9YbmFsVi82SnU0Q3JBc1BIU2QreXBicWlBZ2YrQVFDa2dmUVBBQTFYVmxZV3VmWVh6MzRpUnU4RWpLRDd1ZStHL1FnZDlSZGdFWGxhUDR1TVdNbHNsYUNVV01Hc3RKdzAvdjN3MUhEK0ZhTWRvaDArOUhsdTNhSS9UL2MzblRERlpQQmdXZGNJQU5BRUlmMERRTU5kdlhwVnQvcGxMMVBSUzI4SHZ4djIweTJRdEh4RTkrbGxTaVhQN3pGWElTaWh0SncwVmpDclpvdi9NZjk0MTNoZUVDK3JLQ3M4TmZ5RG5tM0ZDbHAzZklUZTVKOWxXaU1BUUpPRjlBOEFEV2R2YjkvN2M3ZW9KSEY5K01OK09ocFQzQ1VSUzdkZU1Cd3htYzFRZWFDY2JEZzJsOW1YWmZKVVo4L1N6cDAwWXdiMTd5K1Q1d01BYVBxUS9nSGdvM2o3K0c2OTB1NXBvWEQ3dVBVMGJ2Mzdodzl6eWJTbGNKL3pqeWk5Mkh6R0xGOW1Td1Fsd3d2aTFXMEpTd2xqQmJQMnV1LzFzL09UL3FsV3JpUWlXclJJaHRVQkFEUnhTUDhBOEZITXpNeG0vQkFRZGRGUXFQM2c3UGZqL3JWOGFNZDBHdHhKZU4yb3RFKzhGL3dtcDBKQldmRUhBdm5iKy9PQ2VCTmpKd1lrQmtpNTRyNTlkT1FJL2ZnamRlakFhSUVBQUUwS0xvZ0lBQitMN2VNMy91OWRGeDlmSE5DK1Z2dHRzUmZ6L2VzS05UZTNHek5tREpPbFFTTndKdk9NdWI2NVUzY25JbksxY2szTlRwVnl4UlVyeU5BUUIvNEJBRDRNanYwRHdNZGlzVmplZm9GUmwxcEp2MHJaVzRxNjNJYnRML2I3QWFnR2N3TnpiakdYUC85UGFuYXFtYjZaTkd0RlI5T0ZDN1JvRVJsSWZZVnBBQUFnSFBzSEFKa1lOMjdjb2IyajkxN2RPYkd2VlAyalVuVytHUDl0Nzk2OUdhNExHZ0duN2s1aG84SnNPRFpFTk5oOGNLeHpMQkZ0Mzc1OS81WXRZdGE2ZklsYTYvZGN1SENqbktvRUFHZ3FXRHdlajRoY1hTa3VUdEcxQUVCamR2WHExZjlqajB1WTlrUkwwbEdGKzduMDNXNkx3MmZTV3JYNmdKOExRSFhrNStkL1pXdnIvL1NwR1lzbHB0dUtaaTE5ZDI4Yk1XS0UzQW9EQUdpa2FrWjlqUHdCQU5ubzI3ZnZaNDdmaVovOWsrLzM0d1lsYnhjYkdTSDZnMmlSRVJGajgvSWMxTlRhczFoaWJwNWxCWnVXTGxWMHNRQUFqUXhHL2dDQXpMQjk1bzRmdnZORnllTldldlgyZVpCTDk5OTB5N2puN2VsSjBkRnlMQTRhaWV2WHI1K01pWW1xckpUWWM2Q2EycW5yMTdkdDIvYmRkOTh4WHhjQVFCT0I5QThBTW1Oc2JPd1RzRXhDSDZMSjdkcjErSXMyYnFSZXZjamZYejZsUWFPeE9UVFVJeisvbVhTZHAxWlYrUzViNXVqb2FHeHN6R3haQUFCTkJkSS9BTWpTdEduVHBPbjI1WmQwOHliTm0wZTlldEh3NFV3WEJZM0drU05IQ2srZUhGdGVMbVYvQ3haclFuNys1dFdybDZ4WncyaGhBQUJOQnNiOUE0QmliTjFLTFZ1U3B5YzllNmJvVWtCcGJBb085c2pQcjlteThlM2JkcVdsZ3R2R3QyK0ZWcGxhV1hsbTkrNHJWNjdJc1V3QWdFWU02UjhBRkNBZ01lRG5xKzVidDFKV0ZubDVFU3VZeGIveEozMEgxY1NKaU9pU25XMmpKdnpCTkZSZC9hbXVMdi8yeTl1M1FsOEF0SWltdkhpeGVlVktPVllLQU5DSUlmMERnTHk1eDd1SHBvUVMwYVJKRkJ4TWgzVGN2M3dieGd2aXpiZWY3M3ZFVjlIVmdXSThmZnAwYzJpb1IwR0IrRzZidExWMzFEa2hlSXk2ZXVtLy94NDhlSkN4NmdBQW1nNmtmd0NRcTRERUFETjlNemNyTi83RHdFQ2ExSEtPZDBiRzQ0TUhpVWpLNjd4QzB4TVpFZUZlVk5STzdBVC9SR1RDWWozbThlcTJleFFYYndvTVpLWTBBSUFtQldmOUFvQmNoWXdNSVNMM2VIZEJ5ODdRQVNlbnJPeHcrU3NpdXN5K3JMREtRSEh1M2J0M0xDR0JVMUZCa3RKL2ZmcXFxWFhQelpWdFZRQUFUUktPL1FPQWd1bTAwQnE0ZlBuT3VCNC9jZTF0T0RZWStxK0N1blRwNHNGbTcycmVYR0xQSEI1dnFMcDYzZlpUVlZXNXZYb3hVQm9BUUZPRDlBOEFpbWZjcjU5dFVGQ1BsQ0lpZWxUNFNOSGxnQUxNbkR2M3Nvbkp6ZXBxOGQxbWxaZTdhWWo0MVhwWDY5WXpseXhocGpRQWdDWUY2UjhBRk13aDJpRThOYnl6cSt0bDkvWkVaSFhobGFJckFnWFEwdEthdFhScGpJRkIzVVgvVkZVSlp2ejhXUjIySzQ4QUFDQUFTVVJCVkZOelFwMWovN3MwTlh1UEhXdHZieStYU2dFQUdqZU0rd2NBQlV1YW5zUUtadmtmOHllaXdPZWZwOFd0TnV6U1pjdmh3K0xYWWpWcjV1M3RqU3U4TmlXVEprMDZzSDM3OGNPSFI5VEk5ejZhbWo2YW1tTFdlczdqN2RUUjJZc0Qvd0FBMGtINkJ3QUZpSFdPcmZtUUYvUnVGcGVTckt4alY5MVhmdi85Zzl6Y3lhV2xZcDdobExyNjVxSWlYT0cxaVpuNWYvOFhsSlkyUERkWCtwTi9kNnFyZXkxY2FHNXV6bUJaQUFCTkNOSS9BQ2lSRmhZV25lZk5DNW82OVE5MWRYTlJKM2NLZkVIa0ZSdjcxZFNwZmZ2MmxWdDV3RFJiVzlzZW4zMjJJeTV1bXFqQi9YVmRyYTVPNzlqeHQ3bHptUzRNQUtESndMaC9BRkF1KzY5Y21hcXBhUzVwNWtkdG9pbTV1YmpDYXhPVGRleFl4d3NYL21DeG5vcWExTCt1bU5hdFovNzhzMXFkeXdNREFFQjk4STRKQUVva0xTMHRhZGV1YWRJbHY3SHE2cS8rK2VmUW9VTk1Wd1h5OFNBaElXbmVQUE9PSFdmKzlGT01ucDdFL2tlcXFuUnNiTWE3dWNtaE5nQ0FKZ01qZndCQWlXeGV1WEpxWWFIMGIwd2V4Y1VibHkwYk8zWXNxNkZYaVFLSkVqSVMvSS82Wi9sbkVaRjd2UHZ1OU4yQ1JmUHQ1L012My9ieGJ2LzVaOXJxMVVZOWVueTJkcTFldTNaZkhUb1VlZVZLcC9yL1dTdUpkaGtaclE0S2tzbldBUUJVQjlJL0FDaUxBd2NPdkVsTkhWbGVMbWpKNVBIc3k4b0VEOXV6V09kMGRHcXUwazlON2ROYnR6Z2NqcmUzdC93S1ZTWGhxZUgreC96TjlkK2RVeHZySE1zL1l6c3RKODJHWXlPcjZIOTkvZnFibXphMXRiWDliTzFhTFgxOUlwb1ZHSGh1Ly80N1l0Y2EwcUpGdjM3OVpGSUFBSURxUVBvSEFLVlFWVlcxYWZseTM3dzhxak9HTzBWSHg1TEZJcUpGRlJXRHlzcUV2Z0JNcmFyeVhMN2MwZEhSek14TWZ1V3Fob1NNaFBoYjhXR2p3bjVQK1Yxb2tlOFIzN0JSWVRMWnl1VlZxKzVzMzI3MjVaZWZoWWV6L3Z2WEh6dDI3Tml4WTJYeS9BQUFVQlBHL1FPQVVvaGN1N1pYVGs0ZnNhZHZydFRTZXN6alhhaDlPZGhQV0N5UFY2ODJZK3BQQmpoMWQwcWFubFMzUFNFamdZajg3UHcrZmhPcFAvMTBaL3YyamhNbURJbUlZT0hrWFFBQTV1R3RGZ0FVTHlzcksvcjMzNmZrNTB2czJaN0Z5cWx6VHZEVXQyL1RFaExPbnovUFRIVWdMQ3dsekxtSDgwYytDWTlIa3lkVDZsMkxibDkvYmJkaWhVd0tBd0FBaVpEK0FVRHhPQnhPMzhMQ3RoOXg1cTV6WHQ2RGl4ZGxXQktJa2N4Ti9zZ0QvNFdGTkh3NC9mMDNGWFQzdGxtMFNGYUZBUUNBUkVqL0FLQjRYMzMxMVZORFEybDZQdWJ4K29vYUgzTEcwRkRIeUVqV2RZRUlDUmtKZzgwSGY4d3paR2JTOE9GMDZoU0ZoTkN5WmJLcUN3QUFwSUt6ZmdGQThRWU9IR2d6ZGVyMjhIRHhWM2hkVkZFeFZGM2RzczVQQk1lcnF0UUhESmprNGNGa2pmQU90NGhycGwvckJPdTVzMmRWdkpZd2FtdWM4N2VPam81RWRQMDZPVHZUdlh1MFpRdDVlVEZZSndBQWlNVGk4WGhFNU9wS2NYR0tyZ1VBVk5pVEowL0cyZHB1ZmZuU3BFYTRsempqSnhGVkUza2FHaTdmdTNmQWdBRnlxaFZxT0g3OCtKK3JQSDhZd0JYVDU5WlQycGN6WUYvaSthUWtsck16dlhoQmNYSGs0aUszR2dFQVZGM05xSTlqL3dDZ0ZFeE5UV2N1WExqemwxOENTa3NGalpZczFsTmRYZkVyN3RUVXRCMC9YaWo2MTd4QWxZQjd2SHQyY2JiSVNXeWd3U0xEZ21iMzQvYTNGTmVudnlVOU9ucGp6aHhPVkpTM3BpWWRPMFlqUjhxclBnQUFxQTNqL2dGQVdYalBuWHVuWThlMDJoTjZpdmVFeDF2L3Bybk42Q1UxRzhOVHc1M2poR2VrU2NoSXFIbVJXcENKUDdaczZLVDljSEFueVQyOTdONzh0V05aeTViWkowNGcrZ01BS0JMU1B3QW9rVm1CZ1RFdFdramYvdzhOdmZ5S2hSTW50dnZwcDNjdGdndFVDZlYwam5PZWJ6OWZWblVDRWIxNDhTSnkvUm92bStmU2REWTFwQVdqQ3AyK1dqMXdJTk4xQVFDQU9Fai9BS0JFSEIwZDlVZU5PbHhWSlUzblM5WFZXUjNhcFdYNGpodEhLMVpRdjM1MDRvVG9DMVM1eDd2TDZzSzBJTURaR0RHbDE0djJyYVR0UDN0b0tmZEdmR3BxS3BORkFRQ0FCRWovQUtCY1pnWUV4QmdibDB2UmMxZXJWajZyVm5YclJnY08wS1pOZE84ZWpSaEI4K2VUME5DaGhJeUU3T0pzbVZ5WUZnU3VYTG1TZEd6bkRMc3lvZlk1c2FUbDgrNlcvRUI0TFUvckhNNjZWWElxRVFBQVJFSDZCd0RsMHFkUG55KysvMzc5MjdmWlBKNlkyNStWbFFhMnRtUEdqT0d2TlhNbTNicEZMaTcwKys5a1pVWHA2ZStmY0UvNm5tUnVNaXVZRlpvU21zeE5kbzkzVjh5T05TMlJhMWQ0OWMvVlZLL1ZHSEtjam1kUXhVYXEyRWc3cHRPd1VIcVVWNnZEbUo2ay9lSlVRa0tDUEVzRkFJQ2FNT2NQQUNnZGIxOWZyMy8vL2FYRzVEOTFzVFExbHkxZFdyUEZ3b0xpNG1qYk5scXdnS0tpeUdqMDI4cXlNZzBkblZqbjJGam5XQ0lLU0F4SXpVN2wzMjhDQWhJRHNvdXpCYnZqRU8yUXpFMG1vbmpYZUtmdVRveHUrc0NCQTIrZkprK1k5THJ1b3M3RzcrNjQ5aWZYL2lMVzliSXRXUlMyMU5IUnNWbXpaa3pXQ0FBQW9pSDlBNERTYWQyNjlkNS8vMjNZdXQ5OVIyUEhrc3R2NWVsbEJZZkdqKyszWUlHRnFDbG0xcTVkSy9HcGJHMXQ3ZTN0RzFZRzA5emozWGVuNzNhemN1TS9ERWdNSUNKZUVJOC8xU21qNmIrNnVqb3lmTmxQQTNMcUxnb1lRVkZKcE9WRFJIUm5HWFZvTFdMMTNtWTBwTzE5RG9majYrdkxYSkVBQUZBZlhPMExBSnFtekNOSHJxeFpVL3I4ZWNkSmsvb0ZCR2diR2dvV1hiMTY5VWNmRjZkTzk0VUdydFIwNHdrVkdJM2V0dnVJUEdyOVFQeXNuMTJjVFVUOFkvOE8wUTcrOXN5R2ZvSE5temZIckY5MDhvZENNWDNpTHRIWDBVUkVGUnRGTEwzempOWmNHZkRuL2d2TUZBZ0FBTUpxUm4yTSt3ZUFwc2x5ekJqSC9mczd1N2c4L1B2dlErUEhQenB3UUxDSXN5SFVxMS9POTRQbzY0SDEzbjZiVEhvdnorM1pzMGZLelZtRVdTUmt2QnZPSHBBWXdBcG04Vy9ocWVFeTM3V1FrU0VoSTBOcXRtUVZaZTFKMzhQZm9xQU1oc3ljT2RQUXBNdUZ4K0w2dVBhbmlvM1UwWmppTG9sWSt0ZU5aZ08rd0pWK0FRQVVBK2tmQUpvc3plYk5iWmN1SGJKdW5hYWVYc3IvL1YveWdnV2x6NThmT25Ub3plT1RFM3VLR0xNdXhNdTJtQk1lWENyMjlBTStWakNMVzh3VlBFek5UcDF2UDU4WHhPTUY4ZVE1MXhBdmlCYzJLcXp1bGM1a3p0c3ZLT3FpVWQzMmNldHAzUHIzRHgvbWttbEw0VDVYdVpUeW9nUGJaeTZUQlFJQVFMMlEvZ0dnaVRQNzRndkgvZnU3ZmYxMTV1SERoOGFQandqMDg3UVdNV2E5cnA2bU5OVGtBWWZERWQvTklzemlNdnR5elpaa2JySzl1YnhQR0hDeGNpR2lJWlpEaUNndEo0M1JiVGs2T21xYURQdjdxbkQ3d2RsMFAvZjlqSjg3cGxQZHl3QkhYV3JObnJ0WVMwdUwwUW9CQUtBK09Pc1hBSm8rTlUxTm0wV0wyZzBaOHB2dnpGNzZqMjNiUzd2aURQczNrNk5YT1RvNmR1blNwYjQrV2Y1Wk5SL3lremYvQUx5NXZyblFVb1lNTWgrMEozMlBVM2VuTTVsbnpQWE5yVTJzbWR0V2JscmEvVDE3T3FSZVdWZXBNYlpucFhidGo1SGJ3ZUxXUFhTRHFvd0hUbkw1bXJueUFBQkFQS1IvQUZBVlZaYVdaOHNLRXB3cmhkcm54RkxrbVhmM1Q4K3ZkYmk2cFM1NTJUeVBYTDhtWksyRVh3QUVyRTJzZVVFOC9uMkhhQWYzZUhjNXpERWE2eHpyRU8zQUNtWVJVYnhyUEwveC9QbnpFbGNjT0hDZzlGdkpQSHo0L3A0OXp5OWNJS0loa3llWGxCUnNPUnM5ZTVpMHExZnphR3ZhSjRIcmdxVGZJZ0FBeUJ6U1B3Q29DczZtZFY0RENrME5helVLTGxCRlJIR1hhRmlvOEZTVlUyM3A2NWg5cDA5UEdUWk02cHo3SHpzenU5VHMxSThzdXo1Q1h5cVNwaWZWZkppWW1QaURxK3RuK3ZwaW5pR2x1UGpYNk9qSmt5ZUwzOURiVjYvdXg4WGQzN09uSkN0THMzbno3dE9uZDNaeGFXRmgwUzB2Yi96d1UyTjdQdTVvTFA0SjNvbEsxYkVaTW1IQWdBRlM5UVlBQUdZZy9RT0FTamgvL3Z6Vk0vRkxQRVNjd2l2NUFsWDlYM0RDZ3FSTS8vd1o5L2tEZnVMUzQxeXRYQnRjODhmWUhCeThwcng4WUg2K21EN3AxZFdybHk1MWRIVFUxdFlXM1NHZDhrNzhsYk50ZVhWRmhVSG56amFMRjNkMmNWSC9iOGgrNjlhdHZmMlhSdTJadThLeFNHSTkyUzlwMitXVys0NEhObUJmQUFCQWhuRFdMd0NvQkU1NHNGZnZoM1hiQTBhOFAxSDFVWjdvZFlkMkpaUEthenQyN0pCbVEwN2RuVnl0WFBtVGIxb1lXUENuNWl5UXprZnNYeTNSR3plYVAzNDhVRTNDTzd5Vm1wck40OGNpVDJzK2Rvd21UNmFlUFduOXJ2WnRiVzAvVzd2V2NkKytibE9ucXRjK1cvZmJiNy9ONVBVOGUwOXlTVkVYRE5temYyelhydDJIN0FjQUFNZ2VydllGQUUxZlFrSkMyQkxQMDNQRUhhSVdmNEdxZXk4by9OWlF6dTdURFN0ZzJTK3J0OFVlRjkvSHNwM0I2Y1Q0aGoxL1RTOWV2UGpLemk3aTJUTUxGa3RpNTN3ZXo3Tmx5NWd6WnpwMWVuZTZRMVFVUlViU3BVdEVSRE5tRUp0Ti9VWDlIaUp3OHVUSnJiOStOOHNtVzB5ZjlLZDBOS2ZYM2xQWHBkOExBQUNRb1pwUkh5Ti9BS0RwR3pac1dKaHVtL3N2aWpxM3FiY1BmOWpQcDBFVWQwbkUrSjkvSCtxMk5hOTMyaC94YnQ2OHVUMHVzZGhxSDB0RFQweTNhK21MbzZPanAwK2YzckN0Q0VSR1JFek16NWNtK2hOUkt4YkxJeTh2TWlURWI4bW15RWppY09qWk16STFwZUJnOHZhbXRtMGxQOE9YWDM1NWNPOVhjZm5QeEhYU0p1OEZNNlFySHdBQW1JWDBEd0JObjVHUmtmZmNKVnRqNTZ3Y0ozejRuMzkxcW9PejN6MFVlWUdxcDRYMCt3bkRINE1EQ3dySVNNUkZyaVQ0ZlMybnhKZ3RQdm9URWJWbkI2OXlkM1IwYkN0TjZLN0hsU3RYenNiRVJGVUt6MnNraHF1R3hwUWRoMHczbnlFYU1uQWdyVmhCMzMvL1lSc05XeWZxNXhJQUFGQktHUGNQQUNwaDJyUnAyUnJXLzk0VmJwZm1BbFViL20zMk5IZkJqQmxtclZxUnJTMEZCTkNCQTFRaytVeFhJcUpqeDQ3OWU2Mm82aFBKNS82cTY3VXZOWjYySmt6YXFVVkYycnh5cFVkaG9XYU5sa3dlcjExcHFlQTJxS3lzN2xvK2IxLzBiaE4wL0RpbHBuNXc5QWNBZ01ZRjZSOEFWQVY3N3M5YnI1clZiYjhkVEJVYjM5M3Fqdm01K0podWwzZTYrOGh2NTA3eTlxYVNFZ29OcGZIanlkQ1E3TzNwLy82UGJwKzVXMWtxWWlvaHZtVy9jZklOMmRLV2FNR08zWitTbHRiQUsvVWVPSENnTkNWbFZIbDUzVVVwT2pwUGRYV2Y2dXArcnE1ZTl3dkFaK3JxOXBYWGMzTjNOV3k3QUFEUWlDRDlBNENxK09LTEw5cjFHaDF6NGNQV2lrb3o4UTc0emRTVVBEeG84MmJLeUtETVRQcmYvOGpUay9MektYclQ2N1JaaytJR0REais5ZGZYMXE3TlNVNnVxaEcrMTIvYStxVDhVMDNqd2RKdVRFMnp4Smk5S3JRaGgvK3JxNnMzTDEvdWtWZlB2RVgvV2FtbDlaakh1MUJkTGRUdVVWcTZlZm55SWlsLzBRQUFnRVlMNlI4QVZJajM3QVZiMDlvVzFudWtYdGplcTlTc25hMmpvMlBOUmdzTG1qYU5vcUxvN2wyNmVhUEs3dGRmTzA2YVZKYWJtODdobkdhemQxdGJuL2oyMit2cjFsMC9kQ2gwTGFmRXVOYUIvN2U1U1hreDc4L0hmYm0vYzgySFJLUmxOakhwVnZYKy9mcy9kTmNpMTY2MXlzbnBLMm1XVHlKcXoyTGw4SGhDalYzVTFJWTllWks4YjkrSGJoY0FBQm9YblBVTEFDcWthOWV1azc3Mmpib1lFdkQ1UzRtZHl5c3A2bktiMzZLV2l1blR4a0svamNYRWpoTW5FbEZKWnVhTFM1ZjR0NXViTjhmbEZ4ZVp6VlBYczZ4djNaZjdPemZyek5icHNWQ292ZXdUOXRKVlN4MGRIZFhWMVd1MkZ4WlNiaTZ4U3A0MUs3eFZYbER3NXVYTDkvOHRLTWk0ZGV0dGJpN1ZYdVdEbFBONEZacWFrdnNCQUVCamh2UVBBS3FGN1ROM3dvaWRZNTYrdEpKMDRhbW9WSjBobzF6Njl1MHI1VE8zc0xSc1lXblp5Y21KaU03czMzODE0SGYxcm5QcTYxeGY5Q2NpRGFQK0QzSUdqQnpKTVRHWmxadExnaHQvU05GbjNVdG5zdDQvcmJxV2xyYVJVVE1qbzBrT0RpdEtTczduNVVtOHlOZGpIcS91VHdRM3E2c3Z0MisvZFBKa0tYY1dBQUFhS2FSL0FGQXRlbnA2YkwrZ3FHMC9CQnFLR3lLZm1VOXhOMXZ2Q3c5cTJGWkNkeHdxYnorUFdLTGZZMS91NzB4RUlxTS9uMFpIOWo5SEoyalRMR05qTWphbW5qM0oySmphdENGalk3SnMxKzR6cy9YOHhLL2RzcVZtOCthQ3RTcVBINCthTVdOZ2JxNll3aFpWVkF4VlY3ZXNjeldBR0FNRDc4V0x0YlcxUDJBbkFRQ2dFVUw2QndDVjQrcnFldWl2SFI1NzdvanY1ajNIejlqWXVBSFBYMUZSOGZRSjk0MitXWDN2c00wNnM2dGVQMzUxMGFmNUFORXo1YXZwbUpoMk1zKzZJWHB0b21FaUY0d1lNZUxnbDEvdTNibHpZcDN4UC9iL3pmUFRuc1U2cDZNanRQUjRWUldyZjMrbnFWUHJxUmNBQUpvT3BIOEFVRVYveG43d2FiWFMwOUxTK21rQis0ZGxuQXFqelNJNzhJLzY1OFd3Tk5zTTBiWjByOXRCTFR0NjFKQnVEZGoweklBQTc2TkhoNzk4MmZ5L28vdVdMTlpUWFYweHEvQ0lkclZxRlJ3WTJJRE5BUUJBbzRNNWZ3QUFaRy9peEluMjNhb3FuaHdRMDhkZ3hObVM1Q2xWcng0S3RWZS9lYTd4aFBQVEFxbXZFbEJEOSs3ZHY1bzFhK2VIbkx5N1UxT3ovL2p4dHJhMkRkZ2NBQUEwT2tqL0FBQ00rSEVlMjZpQVF6emhtZlVGTkkwZDlQcis5bkovSitFdkFKbVI4MlpQYTkrK2ZjTzI2KzNyZTlyVTlGNmRHZjFGZXNyajdXcmVmT2JQUHpkc1d3QUEwT2dnL1FNQU1HTEFnQUh1NC91L3VWL3IwbDJheGc2dFBkN1B0YS9UWTJGckQ1NTY4NDZDbHNxQ3krM1V6dnYrMEpBRC8zejYrdm96bHl6WktYYTBqMENNbnQ3TWhRdE5UVTBidkRrQUFHaGNrUDRCQUpqaSt3UGI4R1YwZFdtVzlLc1k1bk1XQmJBMVAyN2UvU2xUcHBUMDczK21xa3A4dDh2VjFYZmJ0V1A3K243TXRnQUFvSEhCV2I4QUFFd3hNVEVKK3BHOVpBdW5zdk12MHZTdnlON2Z1ejNQdzNYQ3gyOTY1azgvVFUxTnRkWFRFOU1uN2ZYckRTdFhmdnkyQUFDZ0VVSDZCd0Jna0plWFYvVE9TUmw1S1JxdDdTVjA1VlcxeU9Nc0NWMHFrKzBPR1RMa3hJVUxFcnQxNjlhUW1ZVUFBS0R4UXZvSEFHRFdrb1hzbVQ5eFNpV2xmMVlXWjhLb0FmMzc5NWZWZHBIc0FRQ2dMcVIvQUFCbWpSa3pabGpDNFgzL3VqUnIxVU5NTjgzOG96OHYyQ3UzcWdBQVFEVWgvUU1BTU01dnRxZnp4R3hKdlFhWW1KaklveG9BQUZCaFNQOEFBSXpyMjdkdjM3NTlGVjBGQUFBQVp2d0VBQUFBQUZBWlNQOEFBQUFBQUtvQzZSOEFBQUFBUUZVZy9RTUFBQUFBcUFxa2Z3QUFBQUFBVllIMER3QUFBQUNnS3BEK0FRQUFBQUJVQmRJL0FBQUFBSUNxUVBvSEFBQUFBRkFWU1A4QUFBQUFBS29DNlI4QUFBQUFRRlVnL1FNQUFBQUFxQXFrZndBQUFBQUFWWUgwRHdBQUFBQ2dLcEQrQVFBQUFBQlVCZEkvQUFBQUFJQ3FRUG9IQUFBQUFGQVZTUDhBQUFBQUFLb0M2UjhBQUFBQVFGVWcvUU1BQUFBQXFBcWtmd0FBQUFBQVZZSDBEd0FBQUFDZ0twRCtBUUFBQUFCVUJkSS9BQUFBQUlDcVFQb0hBQUFBQUZBVlNQOEFBQUFBQUtvQzZSOEFBQUFBUUZVZy9RTUFBQUFBcUFxa2Z3QUFBQUFBVllIMER3QUFBQUNnS3BEK0FRQUFBQUJVQmRJL0FBQUFBSUNxUVBvSEFBQUFBRkFWU1A4QUFBQUFBS29DNlI4QUFBQUFRRlVnL1FNQUFBQUFxQXFrZndBQUFBQUFWWUgwRHdBQUFBQ2dLcEQrQVFBQUFBQlVCZEkvQUFBQUFJQ3FhQVRwUHp3MTNDSGFRVzZiYzRoMllBV3pXTUVzdVcwMExTZU52MFZXTUVzK1d4UUlTQXl3Q0xPUXo3WnE3cWJjL3JZSkdRbHkzcUpGbUlWZ04xbkJySVNNQkRsc05EdzFYTTY3U1VTQ2ZVekxTWlBENWl6Q0xBUi9UTUZyeVQzZW5ia3QxbjNuNFcrWHVTMVM3ZDBNU0F5UXd6dUQwRzRLWHNDTXZuUnI3aVlmLzM5VjVsNUxDUmtKTmQvcmF2NS95dEFXaWNnaDJpRThOYnp1UnVXem0rN3g3alhmaXdJU0F4amFhTTNkbE0vSG1kQy9wdUJUdStaZlc0WUVmOG1hRzJYMExiZm1uMUZvcDVoNy9kVGRUY0VuQzNNYnJmdjZaUHBmVTh6N0tuTWJWVUxLbnY0REVnUDhqL25MYzNObSttYThJQjR2aUpmTVRXYnU3YkltM3lPKzhhN3h2Q0NlbTVVYm8ybEdTRnBPV21oS3FOdzJkeWJ6akxtK09mOXZtelE5U1Q0YmRZNXo1djl0aVVnKy8xZG4rV2Z4OXpGc1ZOaGc4OEZPM1oza3NGSC9ZLzc4M2N3cXlwTFBianBFT3d3Mkg4d0w0c1c3eGsrTW5jajA1bGpCTEc0eFYvRFE5NGp2ZlB2NXZDRGVPZTQ1NWo0aGhONTVFaklTYkRnMlRHeExvT1p1Sm1Ra3hLWEg4VjlMZzgwSE14UXloSFl6SURIQTFjcVYvK3IxUDhyVUc2L1F2eVlmYzVzam92RFVjT2M0WjhIRHRKdzBiakgzTXZzeS84L0wwRVl0d2l5U3VjbUNoKzd4N29QTUIvSC90cjVIZkpuWW90QnV4anJIOG5md012c3lFWVdNREdGaW8wSzdLZmgvazdtUE02SGRERWdNU09ZbTgvZlUvNWkvekVOcWVHcDRkbkcyNEtYQzN5bjNlSGMzS3pkK0N4TTVZV0xzUlA1YmV0aW9NTUZPTVhyMG9lNXVwdVdrK1IvejU3ZTRXYmt4OFQ3dkVPMFFOaXFNL3prU21oS2FrSkVRbmhyT3oyRHhydkZNWkQ4eDc2dnlURi9LUUtuVFAvL2xPTjkrdnR5MkdESXlKTlk1bG4vZnpjcE5QaHVOR0JNaHlJaG0rbWJ5MlNnUlRZeWRLTSsvYldwMjZpRHpRWExiSEJFbFpDUUk4bmZTOUNRL096OTVidDMvbUgvRW1BaDVibEdlc29xeW5IczRFNUZUZHlkdU1aZlJ3LzhXWVJiOCtDS1F6RTMyNk9WQlJJUE1CNlZtcDhwOGkzWGZlZEp5MHZ5UCtzZTd4c3Q4V3dKQ3UrblUzU25MUDR0L24vK25scm02dStuUnkwT1FFUzBNR1BsVnNPNi9KaEc1eDd1N1dya3lzVGtpU3NoSWlMOFZIellxVE5EQ1B4SmhiV0xOMEJhSkgydEdoNW5ybXd0YXpuSFBMUnk4a0lqODdQeVlPUHhSZHpjRmZJLzRpbXovZUhWM2sybDFkek83T0Z2d1lUM1lmUENaekRPeTNXTE5meS9CcS9RYzk1eUxsUXNSMlpuWk1mRVdsT1dmeGYva3F2bXhaY094cWZ2L2pxelUzVTFyRTJ2QmQyUCt6c3FjNEhQWnFic1QvMVUweEhLSUlJTXg4YnFxNzMyVmZ4UkpucTlraFZQcTlPOW41eWQ0SGNqZjd2VGQvSVRCTkdzVGEvNTMrdDNwdXhrNlBGTVgveUNmUEw5c1pCZG43MDdmTGMveE1Od2lycG0rbWZ5SHhCQlJRR0xBZlB2NWpNYUxtbmhCdkxDVU1GWXdhNi83WHZsOHliRXdzT0IvNXZIL0tSOFZQbUp1VzFuK1dUWC9ralcvYVREMEFxNzd6bU50WWkzNHpHQ0kwRzdXRkg4cm5va3ZBQ0ozazRnc3dpejhqL243MnpOeU1MN3ViaVprSkdRWFp6UDNadXZVM1Vrb2JXY1haM09MdVl5T2gwbWFuaVQwdXgrM21MczZlVFZ6Z3lqcTdpWWYvLzlRaHQ0VzZ1NG12d1pXTU12T3pJNkpqKys2dTJtbWIzYU9lNDUvUDVtYm5GMmNMZk9OQ3NTbHgvRnpzT0RISzZZL1E4TlR3d2ViRCtiL0w4UGM3MVJDQkxzcHNDZDlEM1BmeittL1Y2bFRkeWYrbmpwRU96akhPYyt6bjhmY0ZxbjIrNnIvTVg4RnBrMkZVT3IwcjBBV1lSWmhvOExrbHQ3NFg3TERSb1hKWitoL1drNWFYSHFjM0w1cDhDVk5UeElNaWFuNXV5MmpkcWZ2NXYrK24xV1VKWjl4WEh5aEthSHkrZXBJLy8wYzdHL3Z6d3ZpVFl5ZEtKL2RUSnFleFA4dUY1WWkxeU4vS3NnOTN0MU0zMHlldjF4bCtXZGRabDkyam5PV3o3ZDAvNlB5L3BVc1pHU0lZRWdNZjd5QmZMYkxIOUl3MzM2K0hBYkxDWVNsaERIMDI1RkkvQ0hqdkNCZWFuYXFmSTY1aEl3TXNUQjRkMElGbzcvWU8wUTd1RnE1eW1jd0oxOUNSb0wvTVgrNURaVGxxN3ViQVlrQjJjWFp6QVdHdEp3MDV6am52ZTU3QlMzOHRPQi96Sis1Z2F3MTMxZmQ0OTBaK25GTW1TSDlpOEFLWm9XTkRwUHpRQkVpR21JNWhHb2YybVJJekkwWS9xRXYvMlArM0dLdW5JK0x5MjAzaVVodzFHU1ErU0JHanduVnhCOXhKTGV2anZ4aERQdzNhMWNyVnlaK2hoYUpuNThpeGtSd2k3a2RERHZJWjZQMDMvRnBQcm45bXlxS1E3U0RtYjZaL0E5S1dadFltK3ViYzR1RVIrZkxYRUpHQXJlWWE4T3g0WjlUd2ZTWkZVTGt0cHQ4L0NNQzl1YjJkVTk3WUU0eU4xbHVuMlg4RXlyNHUrbGk1Vkx6ZkFCR0NRNHRuZU9lWStoZ3ZFV1loWE1QWjBFQ0ZoenlZTzR0S0R3MTNQK292OXlPOS9NSjdTWVJ1Y2U3Wnhkbk0vY05oSDgrRlMrSVYvY1RjN0Q1WUliK3ZFTHZxN3ZUZC9zZjgrZWZqK1IvekY5dWh3TVVDK2xmR0N1WXhRdml5ZlA3dldENmk1Z2JNVXlQUnVVVEhQb0tHeFZtcm04dW4wTUw4dC9OSVpaRGtybkovSzhaNTdqbjdNenNtTjRpWHdvM1JXN2JJaUp6QTNQQnlQdlU3RlQ1ak9aeWozZm5INVdKdVJFano2ODZmSVBOLzcrOTh3Nkw0dnI2K0tFWFJhUkpFU3lJSW5heG9XZ2lLS0tpV0ZCc2FLTGlVaXhvTERFV0JIdEJSVVNRRFdxTVFnQWJGdENJVW93SWlncEV3UUpHUUhwSE9zdXk3eDlyRUhabloyZG5OL3J6NVh3ZUhoOTI1czRlenN3NDh6MzNubnV1ZWZDTFlBQUlUUXY5a3FmNkN6UCs3UGdOWXpkOHlURzZoWmNYY3NlT3VLS2NHNmovcDlpWjJMV2RtZnJmcFRXMzVjdTdDVzF1Mm9RUENlWUc1bC9BSXZ6YkUvRmxiTUcva1RrMzh6N2hROEtYR1JYMFR2VG16dGZrWHMzL0l0VHBjYndIVDFMbE9JTnhsOUl1QVVCWVd0aC84UWp5VHZST3pFMzhyN01OZWVCM2MrSGxoZjlSQmhlWEs2K3VIRTg0M2piQzJYUjNFL2RxUGk5NEh2OGhmcXpCV0lrYjVYK3VjaDlCbkYwY2d5NEd4NjJQZjBuNTl4V1IvZHAvQUgxQ1FvVGZrZlBtelpPVkZjRkg3bTNYbW42emNlekd0cmRJWEZ4Y1FVR0I4QzlaS05yTThmQ0Y0YTA5WHZ3dlB5cHV6cG8xUzBsSlNTU2pKQ1FrSkdSblp3dHQ5dVhkbkRadG1xcXFLbldMcHJxbWwrMHZjNDJhRzVqenZCV2VQbjJhbVprcDlFdEVkUk1BY2ovbUNub2ZVSEZ6OHVUSm1wcWExTTNabWRnZHR6N2U2aWJQa3pvbEplWDE2OWRDdjBSVU4wUG1oWERIam9Bb0c1V0ttOTk5OTUyZW5wNUlSbHZ4bWVZemdqbmlhTUxSQlFNWGNDOXJlbnI2MzMvL0xmUkFHbGVUQkNwdW1wbVo5ZXJWaThhWGV5ZDZ4MytJYiswOU5UY3dmN2ppWVVaR3hyTm53dlV4YlRkRDVvWDBPTjZEV3dxc05mV1JpcHNqUm96bzI3Y3ZQYVA4NU9Ua1BIcjBTR2l6TCsvbXNHSEQrdmZ2VDgvb3d4VVBXNDF5SDRBRkJRVnhjWEZDRHhUbnB1WE9mV3E3aFlxYkF3WU1HREprQ0QyTHp4alBSakJIdEgweWxKV1ZSVVZGQ1QyUXRwdnJ6ZFp6YTBRQ1FPdThmQ3B1OXUzYmQ4UUk0V05ObSs1dTRnNVBjVDh1R0xnZ1pGNEk5d0VZbWhacWJtRE9GUWtmUDM2TWpJd1UrbTBVM2VTZXdOQzBVTzdIWjR4bmhEMHNWTnpzMWF1WG1abncrSVRmemZrRDU0ZW1oWEw3eFFIQW9JdEJ6b2FjK3ZyNjY5ZXZDLzAycW03ZTJjQk5RK0Irdkd4LzJXdUtWK3ZWM0RoMkkxZUlVM0ZUVDAvdnUrK0VoL0dFejFYK1pzM056WmN2QzYveElOa1h5aGRHaXNQaEFJQzlQWVNGZmUyL1JSUnUzTGpoN3U1dVlXRkIwdWJKa3lkTGxpeHhkWFdWbEZFSE95dWxpa1FqSFRsQkRjcHJXaDdtYWwyL215Q1NlaVBoOXUzYlM1M2NGWHVTNVRMV0YwUzdyN1YyYzNPVGlFVUFzSmx2azVDYm9LQ3RJS2hCUzMyTDBnZWxoUHNKdXJxNkVyRjQ3OTY5Y3dlZGhuU3JJR256NEMxNzRwelZtN2Z2bDRoRkFIQzB0YTE5OE1CWVFhQ2JBQkNocEhRNUxxNW56NTRTc2ZqZytEL0FPd0FBSUFCSlJFRlV3WU45UCszcnJVU1dKSk5XbEdZMTM4cDluN3RFTEFMQUQ2NnVWNHFLNUVrbGk5SzllM0ZCUVVaR1JoS3htSkNRc0h6dDRSb2xzaDdIcHBKSERyWkRqeDNlSlJHTEFMRFdlZTJyMkZkR1dtUXVKSmNsLzNibE54TVRFNGxZZlByMDZTSkhqM3FWaVNSdGFvc2VMNTFoN0hOc3IwUXNBb0R6NXMwWDM3eVJIenlZcEUyWFI0K3VlM3NQSFRwVUloWlRVMVBuLzdDbFRzV0twRTFkOGRNRlUzcjRuendzRVlzQXNIM0xtamR4NTBiMUlmdS8rZUNmVHA2KzEwYU9IQ2tSaTY5ZXZYS3lzYkdzclNWcDg3S3hVZC9PenZ2TUdZbFlCQURQbmIrazNQRXg2MHZtWmtLT3lzOUhRc2FPbFV3UGFHWm01dEpKazZ3YkdramFwRGMyYWs2YjV2ZkhIeEt4Q0FENzk3Z25YajlxM28vTXpXZjVxbXQybjZlaTNxaVFuWjA5WWJKOWl3NVptWnI2OGpUTG9mS1hnZ01rWWhFQWp1emRHM1hvMERobFpaSTI2VXBLak1EQXlaTW5TOFJpUVVHQnJkV1l5VVlmdXlvTFRPSjRrOC9pYUk4L0YzcGJJaFlCd1B2Z3dWdUhEbzJYbHlkcGM2TzVlZC9GaTlPbVRaT0l4ZExTMGpHVHhsUjNxNWJwSkNPb1RWTkoweENOSVRFM1lpUmlFUUI4ZlgxRFFrSkdqUnBGMGlZNk9uclBuajIydHJhU012b0ZhQ3YxdjBuMTM5emNiR05qczNqeFl2SnVtTEt5c3UzYnQ0ZUhoMHRFdmYzeHh4K1BRN1ljbVNva0M4MzNMNlc2dnF1M2V4NFIzeUlBakxPWTgwcCtpNndtMmFPZjAxZ3VuMkw3NE01dkVsRnZseTlmM2h5d3VlSTdNaUVPQURMSk1qOFkvM0Rzd0RIeExRTEFmQnR6bC82UEpwRCsrZFVOWVBlN3pxbWcrd01HREJEZjR2WHIxNit1V1hPd3ZKeTgyUi9OemFXclZ1MzM5UlhmSWdETW56bC9XTjJ3WVRyRFNObzBzWnVPdkRqaUgrd3ZFZlYyKy9idEZlZlBGKzdiSjZUZHRXdU13c0lBTDhsa21FeWZzenkrMGw1ZWovVFJ6MkVycE00S1ArOGhFZlYyNzk2OTQ5dVB1eG9KaWZQanN1UHFCOWFmRERncHZrVUFtR1hQZUZJNW8xbEx5S05mNmNYYzBJRE5FbEZ2Y1hGeFB4NC9ublZVMkJvZGQrN1l2M3daNnU4dnZrVUErR0hsNnJ2WmxzM2FRb2JDTzZVdk9PL3QrdjMzMzR0dk1TRWg0ZkRXcFdFTDM1RTN1L1UzM0s2ZHkveGRNaG02Yml0WG1seTlPcXVwaWJ6Wk9sVlZwOTkvbDRoNmUvcjA2UzQzKzZ0TDNrdVRGbnI0TXcwdWwwejlUVUxxYmJPemM4L1FVRHRoYm03czFHbnArZk1TVVcrcHFhbWJuZTJ1TEhxbktMRFREQUFnK2pYOG52MWRVTGp3a1JBcXJOMndQZlNaSWNkZ3BaQjJmenNGN3AwK2E5WXM4UzJtcDZlN3pKd1pXRkRRV1lyc2NpYTJ0RndjTWVMS1E4bWsybnJzM0txWjdlTTB0cDY4bWR0VkZVdW5zL1BtU1dEbWQyWm01ckxKa3dPTGk5VkkzWHpXMHZMcnNHSFhFeExFdHdnQTdydmRmWi83dG94b0lXOG1GeTNudy9CWnRHaVIrQmF6czdQbnpKbXpkKzllRFEwTmttYXZYNzhPQ2dxS2pJd1VLY0hrNjlKVzZuK1RlZjhCQVFGR1JrWkNSMkExTkRSc2JHejgvUHpFdDFoVlZSVnd6SDNsTU9FVFVGYU5yWStMREU1SlNSSGY2RW0vd0h6V1FITHBEd0JTQ3VvMTNSaGUzaExvdzZpdnI5OTNmRitwY2FuUWx1eGg3TEM3WVVsSlNlSWJQUi9vMzBzeGwxejZBNENLSWppYUZqSlBTVUNoTmpjM245NjdkM0dwY0RjWHljcSt1SDZkU2hLQ1VJS0RnMlhMWmNtbFB3REl5OGhiYUZqNEhwVk12T0hwNTFkSTVhRS9aMDVFUmtac2JLejRGaTlkdXZTNm9MTVE2UThBVWpMVldveURSeVhUOGVaejBPZjdMc0oxNS9jOXY4OTRuSEh2M2ozeExWNi9mdjN2OTFKQ3BUOEFWR2t3OWh5V2pKdDcvUDJ6N0Nna3BFNmRlcSs4bkVvU2dsQWlJeU5qVStxRlNuOEFxRlJuZUJ4a2ltOFJBQUs4ZDY4Y0xFVDZBOENNSVFDNVVWU1NFSVFTRlJWVmVQKytVT2tQQUlzckt2dzlQTVMzQ0FBQnh6MGNSeFNUUzM4QXNCNEluU3JpcVNRaENDVXVMdTdkdlh0Q3BUOEFMSzZ1OXQrOVczeUxBQkRnZTlUUnRKQmMrZ09BWlgvUWFrd0pEZzRXMytLalI0OGlZMThKbC80QXpmb016NFBNNXVabThZMEdIRDI2dUx5Y1hQb0RnSm0wdEc1cTZ2bno1OFczbUpTVTlEUTZ6SEdNRU9rUEFJNWpxZ09PZTlUWEMyOHBsTk5Iaml5dXFpS1gvZ0F3UWxyYThPWEx3TUJBOFMybXBLU0UzQXBwR1NwRStnTkE0K0RHUGNmMlZGVlZpVy9Vejg5dnhvd1o1TklmQVByMzcyOW9hTWhrU3VhNTkrWDU5dFIvZG5aMllHQ2dqWTBObGNZelo4NU1TVW1KanhlMzhnRFQzMmU2WVY1L0hlRXRGV1RCMFRTZjZTTnVna3ArZnY3UkU4eHFMUWFWeGdxOWw5MksreUMrZWp0eDZrU2hScUdNdHNEeHRjOUlRWVZKeGNFVEI4VzBXRnBhR3VCNzJIRVlwYmxOOWlPaE5EMlNTZ29wT1FFblRnd3RMQndpVGVubVgxUlNjbnJQSGpFdFZsVlYrUnowbWFnK2tVcmpjUWJqOGxQekl5SWl4RFRxdzJSbUdSckM4T0ZVR3VmTm4rOHVkbTl4WFYzZEFTOW1oUWFsbTFhK3UyMWNtblI0ZUxqd3BxU2NZWjdwMnRSMVlMZUJWQnBiYWxuNkhCUzN1Q1NMeGRwM2hGbXA2VVNsc2J6ZTFLZnZWUzVkdWlTbTBlRGc0RGVxcWpDTzBucDU1ZmIybnBMbys5OXptUGxSazlMVmxOT1psRjZrTGI1NnUzVHBVcWZhRjlhVUxpYXNIRk1kY015ZHhXS0phZlMwcCtlaW9pSXFMYzJrcGZWU1UzLzc3VGN4TFlhSGgwdVZKYzh3SVVzMGFtWGw2T3FBNHg1MWRYVmlHdlhmdTNkUkxxVUtLaU9rcFkxZXZ2ejExMS9GdEJnUkVWSC9QbXJPSUVwdU9vNyt5RHl4VzN6MXR2Y0lzMVNOMGswcnF6NGltelZHZlBYR2pSNXRLWVJWQU9EQVp2dDdlcFpTNkhzaWgrbnR1WEpFc1F5Rmw5amc3akJSOTUzNGJzYkd4djV6L3o2VjZCRUFsckRaL2g0ZStmbjVZaG85NW51c29uOEZsUW1xMGxyU0JUb0ZoMzNFelQrTWo0OVBUVTJscURCdGJXMS8vZlZYS3ZNay93ZjU5dFMvdjc4L2xiQ3NsZW5UcDU4NmRVb2NpK25wNlpGWHpqbWFVUTJkNXd5RCtxejdZcXEzazZlWWRWb3JwSldwTHJkWm95MXUzMXRHUmtiQTd3RjFnNmkrWStTTTVXS3pZc1ZVYjB5L0UvWURpd3dwejVKWWFWb1VjTnhESEl0WldWbS9lWHN2TGl1ajJONUNSa2IrOFdNeDFadS9yLzlRNWFIVXEvRk0wcGwwOHJCWUNTcjUrZmxlcDA4WHphZThRT1BZc2FsZHVnUUZCWWxqMU1lWFdTUTNTYllyV1ZaNlc1cTdPM2tlWklxajNrcEtTdnk4L2I1WG81cHdNckRiUUtWU0pUSFZtODhwWnFtTW1hdzYxVEpIck82TVBZZVo0cWkzeXNwS2R6Ky9YT3BqOThPRy9kMnJsNWpxemVmVXJ3WE5RMlExcWRZellYVjMybnVZV1ZsWlNkdGlYVjBkMDl2RGNYZ2V4ZmFtUFdDMCtsc3haYzA1ZjMvOTkrL0hVT3NMQUlBbGJQYnAzYnRMU2twb1cyU3hXQUVuOWppYVVoVkdFbEZ2UVVGQjZwbVo0MlVvOU93QUFOZE5UMDh4MVJ2VGU3ZWphU0hGeHNZNllOTXJKK0NrV0QxS2x5NWRlbFBZUlY1M0t0VURlaklPZXAvUHlzb1N4NmcvNWVnUkFIcEtTYzBzS3p0OTZKQTRGc1BEdzZVcFI0OEE0R2pXY0Nsd2YwWkdoamhHVCsvYnQ1aGE5QWdBM2FXa0Z0VFVCQndSS3dVNklpSWlOaU9XMVpmcUM2SmxhTXY1UytmVDA5UEZNWHJxMUNucU9XOGFHaHJUcDAvM2wxQ2E1UmZtRzFQL2p4NDlTa2xKbVRGakJ2K3U5ZXZYcjE5UFVPcUxPOXM5VEl4cERVeGZMOGNSUlNxSzdUYUdQUVY1MTA4L1hueWQwWTZqeWdPOFBibHpLbWlRbEpSMEpmSVpwMGU3RG95UE1WUHIwei9GdFkzWklhWEJVcTBmQVVCTzIvSlZpYTQ0NnMzcnBGZjF3R29wcFhhRGV2VzM2dXR2Q1F4N21vWTBlWGg1MEZadktTa3BjUkVYK01PcS9ycytuMXNleGh1Qm9kUXpjZFJiZ0pmWDR1cHFyVFpqbDM0c2xsNWRYZXVQSDU4N1MrcnIvVDA5YTBsbkJKS1FscFoyUGVTNlZjOVA4eVpYM1ZqVnVoYjlsZlFyTTRKbnBKZWt0KzdpL202c2FheFpyU25PKzk0bklLRFV6ZzdhVHN2KzhBR01qTnI5N0dvMzZmYWp2ZjBlZjMvYTZpMGpJeVBndHl1TnV1MXUycG9rMTVxa1QxZVJWZkt3TkZpcTlTTUF5S3FiNWpTUEZjZE4vMVArWmwzTmREcnJBTUNEN0FlcmJxeHEzVFVqZUlaN3pLZkowdyt5SDdUK1BxWG5sSk9IVDlKV2IxbFpXU2Y4TGxScGl1Sm0xOEg1VXBQRXZKcjUzMzhQaG9hZk53bTdtZzBMRm5qNCtlWGxVVlhTUE9UbDVSMDV6anYyU082bVRCZmpZa1hiSThmcHU4bjBPMkZoVURDb2ZTR28rSGVmbndacitTcC9PSm8xL081L2dMWjZLeWtwT1gza3lLS0tkdE9jeHRYWHQzMGdaTGQvalBlVWtySXRLenQ5bUg0WEk5UHZoSmwyd2ZEMnhURGZsMzUyY3daZjNwK2pXY1Bsc3dkcHE3Zkt5a3AvRDQvRmhlMkVPTG1iZWxKU0MydHF4SFJ6c0dyMjZQWTFEb1M0T2JiK3p0WHphV2xwOUN6VzF0YnVQc1NzVUc5MzA5YW5ILzRZOHlrWVlOZjhVeG9zMWZvUkFLUVZkU3JVblk1NjA3OXB6L3I1R2JTUEhwKzB0TFE5c1lzYkcza09XZExjSEJNU1FqczltTVZpQlhqdldja1hQYTROK1h4dTQ5dW56cWwzZ3BVamlwbSs5TFY0VUZDUVJtYW1lWnZvVWJpYkxOYmpNTEhTZy9jYzIxUFJuM2NLWXJWM05lc0ZzZVNRVXBDcTZGK3gzNXQrNWtWWVdKaU1qQXhoaVNRek03TUxGeTd3YjdlMXRYMysvTGxFMG9PL01OK1krdmYxOVNVTXkvTHk4ajU4K1BEaHd3ZkN0OTNNbVROOWZYM3BxYmVvcUtpeU4vZnNoN2JydDR0L0J3NW40YzF1YVBLRE43dGgyelVJZTlydXFORzlZSWpTQzlydit6MkhtZFhkR0NCRmZIVWFzME9xNHhkcEx1WW9EZGpTZGp0TGo3SDNjQUE5OVJZYkd4dWRFdDA4UUxRTVNCbGRtYXpPV2JUZFpKNDY2amlxVktIOW9ONE1YN0F5Z1NZL2FQSURwKytnUDE5VkdFZXp4b0JqTzR1TGkybFlqSStQVDR1TVhNaW43eWZLeU9RckszTi85ckpZUEFGQWYybHA4NXljQUIrYUdTUCtKL3d0dTFrcXlYNHF5VHBjZDNoSjdTZnBtVnFVT3IzdjlGY2xyd0Nnc0thd29LWmdnTmFuT2MxV1BhMThEdm5RVTI5SlNVbVhIait1WDBCVUtpb21Cakl6UC8xNGVyYmJaV2lZTTNIaW9kT25hVmdFZ0tQZXpEcHRocFM4T3VGZVZzbkRxcWdKYXJidk9vOXFQdytuSitQd2lRdjAxRnRLU2tyVTFhaldzS3FmUnIrQ21rOEZlZE5MMHFmM25kNjZvdHpMNHBkRHRUL05vdGJwckdQVzFlelVjWnJqZ1Y3ZXpFWmRoclNpTnVGZUVqZVBuTHI2OXUxYkdoYlQwdEoraTRpb0p5d3RSM0kxZFhVcjU4MDdUUGRxbmp6RmJOUjFsRlltSHEwaWNmUDMwRC9wcWJlM2I5OWVDUXB3SE5YdVpmKytGQ3lPUXN6R1R3K0VnQWU4WFMzYVhjQnhlRjRBWFZrVDRPTXpxNnlzSjE4ZXM3K0NBdmRwNEsrZ01MYStua2NaTDJsdWpxT3Izckt5c2k0RW5uQTA1YTBjYmV3T0YxZDhjak96aERmT1VlOEVqcVpGNHJocFZWemNoMjk4Zzl6TnhTeldrMHVYbmp4NVFzTmlYbDVlZ085aHh4RzhQZUxrYm5aV2dKV21CYlR6Wm4xT01jc1ZKOHQwSFVTNGwxM3pUOFdOUHFwV2YzV3h1Tk4ydTJLZkZUZWkzOUJMRHk0dUxnN3c4bHBjUVZBa28vV0ZBZ0E4eWxnQllIRkp5ZWtEQjJoWUJJQ0FVOTVqZFhpalI2OG9pSHIxNmNSZVhBRVdSK0Y5Kzl3aWh6R1E4L3c2dmZSZ2J2UzRxSkJnR0lmRVRXbUF4V1ZscHcvU0hNdzVjZXBFdmxLK2pEN1YwU291Y29QbFl0Tmk2YVVIMTliVyt2cjZUcDgrblg5WFZGU1VtWm1ab0V3SEd4c2JYd21WQnZtU2ZFdnFueVFzaTQ2T25qMTc5dXpaczZPam8vbjNHaG9hRGhzMjdEU3RGMkhBOFYwcmh4R3Z5OWhiODlPL1RYNWd6MWU1eEhGc0E5TjdkeTdsa2JKV3dzUERYMlRMTm12T0pOemJLdjM1ZDhsME1TNVJtbjM0R0owcGh2dU83eXN3RXI2VUFUK2NvWno5dnZ2ZnYzOHY2b0VSRVJFTldmZG5EeVFJeVhyK205VjFjaUc4OXVUZDIxc1RGZzR1WS9yUzZaUTZ2WGZ2SW1GajJmNEtDaGY1NW9FdGFXNis3T05EUTczZHZYdjNmZkw3Y1RxZjA3VW45cHFZV3BRS1hMbGZYZEQ2OFczWjIrbDlQejkzTkpVMUorbE5vaWRTUGYzOGl1YlBCMkZ6cy9pcFg3RGdmRVFFRGZVV0V4TVQvU1MzUlc4cDRkNVdzU2pUMlpCbmw3U2lkcms2dytzNG5adlc3NFNmcGJhbG5QU25HWVU2blhWTWRVMjVneWV4V2JHRHVnMXEvWmhja0d6ZTQzTUZVcXVlVmxFM29wS1RrMFcxR0I4ZmYrZkJteGI5RllSN1NkeVVrbGV2MW1JY1BVRW5Udlk2ZmJwNC9ud2dyU1JJU04yQ0JXRlBudEJRYjArZVBMbDZKNWxuN0xFVk1qZGxPMWRwTWc1NDBYR1Q2ZXZsT0xKRWpjaEx2WDhYK1dqeWcwMThwVWQvSEFkdkVzTnBxTGZrNU9TNG9LQWxwSk0rWjhuSVRKU1JpV2pmUmg1Z1VVbUpQeTMxRm5EeThNcFI1ZDFVQ0haMVYvdjB5MnRQT01rWDZ5MFpBeDlvcWJlMHRMVGI1ODg3aU83bUovVkdLMGVGNmVlemNsUmw5NjRFdThqZHRCOEJaVy92MzcxN1YxU0xiOSsrL2ZXM2F6eGpqNjIwU244NUxZS0Y3U3MxR1h1UDBMbHBBMDZlbkYxVzFvUDBTWHRBWGo2V3plYUpyS2JMeUZUSHh0SklEMzcvL3YzRnN6NHIrYUpIQUREUyt2U0wvVWhvOHZ1a1Q5cXlja1J4d0RFNnRhUlBuemd4aFNoNmJBdWhtMVl5TXMweE1UVFNnL1B5OG83NEhLazBvZE9WV1dsUzZYbVVUemRRNFBUcDA2YW1wb2FHdkk4MUFJaUlpRmkrZkxtQmdVRnFhaXIvWGpNek13NkhJMDZDeVZmaG0xSC90YlcxcDA2ZElnekxBQ0E4UE56UzB0TFMwbExRZldacmF4c2FHdmI2OVJzT0IvaC9BSUJnSzRkejd0ZFRmUlQrTWVjclIyUGVCNXkrK3pURXh0UHIzMHIzcnJCeVZDWHo1R0dSTERZMU51NDdFbEFwWUtaZFF5YXpPbjZSaXJuZ1NzdzlHUmZDb2w2OGVDbVMwWXNYTC83VDlJOXNienBWcTZRNlMxWDByL0E2NlNXU1JlQndBcnc5K1R2QUFPRGtRdGgyRGVSZENYcjlXM0UwcTM5NEorVDU4MlNSaklhRmhpcWxwMDhVbHZtcUt5V1Z4WmV5cFNvbHRiaTgvTFNYeUc2ZVBPUXpVVzFpMjY4YW9EV0EyeWY5dHV6dGNOM2hyUjlmRnI4YzFLMWRyNVZWRDZ1SGR4NG1KajRXeWVpMXExZVQyZXphaWUyTWZzYkM0bk91eUZPK2UxZFp1V0QrL0wxK2ZxSzY2WG1RV2F3cVFDd1czSzJLbXRCcDJDRitzY2hGc2MrS203RnYvL3Jyb1VoR2I5MjZWZmlpY0hTMzBXMi9hcWoyVU81QVNuSkJjaitOZnR5UGhUV0ZBTURORHVJaUp5MDNVWDJpNzlGVG9ycTU5M0JBU1ZmaXliNUMzVlRvN1JEeFYxNTBkSXhJUnYvODg4LzdoWVcxQXA1N1FxNm1sRlRodkhrSC9QMEZlQ1BRelQySG1VVmRHQUFFbWthNG16MFhQRWlwK1BQUFAwVnlNeVk2T3ZmbHZjV212Rk1qZW12Qy9qbGc3RTZjWU5tSzQvRDhBTy9kQXQwVVlQVDBnUU9MS3l2SjZwWURBRUJQS2FrUGZBK0U2VEl5TmJHeHQyN2RFc25pdzRjUDN5WkYvamlLWUFZSXQ3K1dNTHZwczVzamlnT091WXZzcHBmWDRvb0tvYkVqb1p0V01qSXRNVEZYcjE0VHllTGp4NCtmeDExZVpVYmJ6YUtBNHg2aXVublVPNkJXbXlFbHI4Yi9oZXpxeklvYmZSVDd1aEJLZndDUTE3VitscVVhR2hvbWtzWGs1ODhmQ0lzZXVTY1dBSXI0enUyU2p4LzlkNHQ4MHpKOWp6aU9KSWdlTjFsQlpza25UZkpld0l4aUMyUFFhVTY5ZVBHaVNCWmZ2bmp4NTRVTDlOMnNyL2ZmdGF1eHNVa2tvejZuZk9vSDEwdDNvU05RWlh2S3ZtaDZjZTdjT1pFc3ZubjkrdEtsUzRSWjVkelVrcUZEaDlyWTJQejU1NStFUm1mT25IbnExQ25hNmNGZmhXK21UQ21UeWRUUjBTRU15L0x5OGd3TURMcDM3dzRBM09DTXYxYTZpb3FLamMzMHNXTVRLeXVOK2I4aGVQNUdUdG9kbm8wZm01dDlTN091YlNDZTRYNXlJWnhjQ085THdkZ2RITTVDekVZdzc4UGJadFhZdXUrUFJ1NDVUSkF4TXRZNGE0ME13YVR5dStYbC95aWF5L1lpcnRQQ3JubW5adnV1NGtZZldZM1JoRzlmYnQvYjBGSHhuRWFDMGMrTDlyOUl2YnpCczdHV3pmWW95YTUya0pPbUd3ckttOG9IbkluMk8wNndhMml2L0MzS0JPc0VSVmRVS0hRckh0V0w0QkR1V0FyOG04VTRaUURjV3NOblVSWWNoK2RaZlhlanZKYmdSSjIzM3lYN2tyZEFYa05MaTI5VzFqRUFvRHk5andjN1dka0ZaKzlMRTAya05OSXQ4MVFqV0tjbXJyS3lVa3B2d1BlOEN4UncrNlJiNVQ3M1kzSkI4bHlUdVcyYlNZR1VwYWJsbE85anE1dkc4SC81R2Z2OWlpOTVwM213T0J5UDZ1cDhraXEzTVRGZ1lDQndMd0RZMklTRVBRa2hPa2s2YWpWSGRRbitrdmlxcXIvWlJuS1d4RXZ2ZmI1cHRjWUpldnRXYWpBc3BqOWsxeERzRGJEMzZ2enlITS9HRmdEdmdzb2xvemZ4YkRmUk1nbDVHY0x0NXRmcHJNUDlxTlZKYTdndTczMHl6bURjN3RoQXdudEJSYW54ZEcrQ0diMFhDZ3RUdWxySm0wMmg3V1pOTjhhVXVRL1pWUVFuNnRSOG42NXBCQU1nSG5WMUgwZzZYNFZlVFV2TDhJZ0hnbTc1b0FFRVQ0bWs2dW9rbWRIeTR3amVna0ROelk5YURCdjcyK3lQMXZ5N3ZPY0ZhS1VUUEEvUFZHWnRtVWM4SzNxVDFhZitmbmxYMkhZTkxxNGdHR2kxR2dDaFR4TUZ1Umt5ekpUZHhKdVVuRnhkWFZaY1BKWHlMRmgrbG56OHVNYjI3RXdPd1lrNlluZE83eFZCYmVKekZkbXVzNG4xZ2YzSVQzNXhaejN0bjBNd3lqSFJHRUtmcGdweU0zVDBtT2FhR3A2TmY5ZlVaQmNWYlJQSHpmcjYxZk5QMjdYTTRkKzFiM1pRcjdjRVdUb1hxbktXVGVQOVM3aFFjZE84RDF4TFRwYVdaZ01RL05tWHpMOXJxdUN0MlpCV1czdXJxVWVMQmZGU0dPeWFkNnBXZjlVay9OaVlIYUxRazNoeDFtWjl4cEpWSnhjdXRPZmY1VzU3MlRpVG9DL3FmRjZlVFVPREhOMXpPMXhhdXVmemRHbnBHb0RPL0hzdlQ3UnFMT1lkcG41VFY1Y3NtN2Y3SitLc2QrNDRlZGhUTUhZSGdFK3ZVUjRjUjMrYzlkUHBwVXNkK0hkdHRia3grUDB2L051RDh2T3Q2K3VWNmJvNVdGcmE1TlY3UmNXUEFBVEZQYTVNdG1uSXorTFptRmxmZjRGVndHYVFMUTlIRG1jWVo5WFdFeXRXTE9mZnRjSDZ6c2dQRy9tMy8vSHg0OWhaczFSVUNFYmwwdFBUWjgrZURRQldWbFk3ZCs3Y3NtVUxmNXMrZmZvTUdUS2t0TFMwVTZkT3RQL3NMOHczby81TlRFd2VQSGhBdUNzNk9qb3hNYkUxSTBoUFQ0OXdwYVMzYjNOTlRmVUlWOFRTTXhxdU5JRGdxdmU5R2ZLcTRFMHZ3ZVdGdUZKMWJRaUVKQkdvLzFlRlVNTm1NNGk2Ukx1cGREWHFURkNQcGZMOSszdVB5bmpmVlAvQzdYTHJOT3pReCtncGFyYVp4STJxWDVtTjZqYVlhRVVzdmI1RE9wa1EvSThhY3V2cWc1SjMwcG8wWlhGTFdVdW41b2FGUkc2cUs2c1lxUks0V1pPVEUvSDhNa0ExeWRlZVhBZy9UUVpqZDNoZlNqQ0krYUpBY2ZCd1JXTWlOL1g3RHV4c1F0QnQyUzg4L08zcjF3VEJYM3NLT0J6QzhZRmNEaWRmcVlteG1PQVFGVVVsSXpVQ054dHljMS9lSjBnTzV2WkpSMlpFdW81eWhUWTkxbTM3cDdsa2Zjd2JNcnp2UUtLRnYvVDdEdWhxUW1CMFNFeE1WbVltMEY0VHJiaFlxU0J0S2RIVlZKS1ROOUlrc05oY1VIRHRUanFyaFFYU0JHVzlGZnU2eUhRMlZESC9veXBxQW1IR0dnREF4MWREVERpamlHSmVmYU9CbWtSdURvaTZuMU9WMDAralg3dU5XZ09lRnp5UHo0bWZhalMxOWVOUTdhRThneW9BOExIeFl3a3JpOEhnOFBkd3k4bklHblVqc0xpc3VEamw1bk1PdTA1S2hxQWpsYUtiSmthY2NTT0kzZFFaUUdCMDlJTUhHWm1aTUlMb0dDcFVWM2ZLK0dmQmluclpmNmVkdE1WSWw4Q2liR2xwOExWRURxdEtTazZWZnk5Rk40MzdTSThuV2lXenUrR0FIZ01KalBaN2NQOXQ4VU5MMGhWY212ekFLd3ArVHlSUS8vVk44S1pVNFljZnloVVVDS2FkOU80K0IxcllQQnVWS2lydS8vWmJHWXVsSVN4QkxwdkRXVUMwbWsrNnRLS2VjVmNyb3RWcHUvY2UwR2NRZ1p2OTQyUGZsd2haME9xMUo0UTlCZmViQkxLWXhZYlhwVW9PRHZuS3lucjhCL2JTbndWczNyNHFsWThmSTg2Y0tXS3h0T202bWRIU290MjdxOFVrZ2tPNjl4aG9OSlRJellRSC81UW1BcEJWeVNOeEV3QlNDOVVXTHN6dTBvV2doOHVnaDQwVWkvZWIxV3Bxemw2TWJLbk5sdTVFc0xLbnZLNjFuTmI0em1OL3E0cWFJS2pqckxucVZTOEQrVWxFOGF5Qi9nQ2o0VVJQMnZqNGdzZVBnYzE3YS9IQVRZWVpUUlMwcFNtcHpaK2FyYVpHVU9DMmU4K3AwazI4NzBldCt2cUlzTURNa3ZMV0pCOSt1UEZWLzEwUTlwVGdmOHJyUXREU1ZaOUVFTXBCeis3R1JpT0ozRXhNTEk2UGh4WWhGZmRKM0h5bDBIbnV6R3hOVFFMMXI5ZkxTcnFSTjcxSHI3SHh0NUN6TlNYMTBscDBOVWxKaTc2bXZ2VnNnbDE5ZEkyTXpBamNISnFjbkNlZzJteEVSRVJpWW1KcjZjaW9xQ2dySzRLN05qYzNOemMzVnlKcnkzNFp2aG4xUDNYcTFKczNiOTYvZjMvU0pON25VSGg0K0pVclY3aDkvM2w1ZVhaMmR2ekIyWXNYTHlvcTh1N2ZYd1hFRUlUQ0FMQjEyclQ5NitkTUc4U2JvT0lWQmR1dWZZNnQzNWZDUkNKUmVlWnhsMTkyNzFoRW5BdmRGY0NEZit0b2dCVFhqU0dwUVFxOWxnajRVMEZwd0JaV1VYUk5raXZ2bER1QTVyS2tYb3BKRCtOdUNPZ2ZJbDRHYjUrdDdSekduS3ArVlVSZExjSlJmS200Wi9kV0orSmNhQlZCYnY2eldmWDNSTzlsZkpNNDJuWUk1VmNCQUlIMC96c1hFa3U2MzRseFUxVGszUVVBQUFUOU53Q3czYzV1M2JScGt5c3FDSFJRRzF3YUcvMFZDR0trNEU2ZHR1NzYyWkZ2SUFJQUFKUUZ1Zm51bCsxL1J2OXBiZFN1SDVUYkoyMnFhOXIySTMvL2RFNVZ6bXZXaTZpNFkwVDlFUUF3RzREZzhYWjQwYUlueTVjWFdsaUFnTVBJVVF3TjNidUo4Wk1MNFU1NVFXNitjZC9qYzV1cDJHKzFvSzlWNkxtUVZmemdZOHhVbmlsM0FNQ3V6bEN2dlhJdi9ybzY4WVRoYVFBRUUvMDlsaTJ6czdZYjFYMlVxa0k3a1dxcWE1cGFsTHB3ME1LMkg3bFJWbHZ1WnQ5ZHQrV0g5UnNKSlpHTVFEZDFEM3BkWnlvWkU5UVc0MExpWmt0dGRwZkszNk1laE9zUUx4c3lDWUJBWVIzNDhDSEcxamJmd2dLNmRSTmtsQVNsME5DdHkrZnMyQ1RvbHZmZzN6UWFJRVAvcUg4RXM3SEhaa0ZmUytabWZiNXlNZk5PM0ZVQll4SVRBQ2J3YisxUjZEekxhdVMwZ1hrOTIzZTFoRDM5VkYrQit4RElMaU40R2dEQXI0bEtzeHlXLzdLTCtBWUMyRW00OVVQMzdzRmVYbXRKQit1dnM5bXhiSFl3M3dPaGpNTzVwS2I4UjhRT290Rm9BQmdEUURCS1psUmVibXRsTm0xUWhsSDdpeG4vN3RQa1ptNFhVazRGRU1xN3dFU2xLWFBtdWg4Z2tQNEFBTENOY0d1dWdVSFEvdjAva1JhY0ZlVG1SdzRuV0ZzNzhKYW5nS1UxaHdFUUxGOW9VbDA5eTJyTXpJSlhKcnJ0dGxOMDg4eGo1UW5UWnV6eElqNnpBRDhUYnQxcllySTlnTW51SzNCZGN6bXQ4WUk2empqTmRaMkxtZGN1SHh0TVhLeDRBT0gvbENFTkRUTkhqMDdMeUJoSU9wNzhTMVBURDBSaDFTVjUrZEZ6clE2ZkViUzJCVUgvTkFBVURocDBKblR0QVJ0ZW5jb3RvTlE2VHY1UHllZjVGYTJ3MkJENFhQdlVPUTlUNG1MRnhvUnVqbXhwbVdGbWx2TGl4VEJhYmw1dGJqYVo4NTEzaUtEK0MrSm42ZjZoUTljR3JHVlowaXducVBaYUxmVHN6akVFL3dVQndFalFjMi9tekprdlhyd1kzUDRtNEtiOUpDWW1jajlHUlVWRlJFVHdxLy83OSs5cmEydWJtNXZEdDhNM2svY1BBQzR1THBHUmtRME5EVzAzY2lkM2M2VS85eGZDd2t3UkVSSHIxcTBUMWVLWU1XT0dXam9FOGkzTHZjbnFjOTYvdkN2MDFpVG93TGovR3NxVWhpOWFLbnpGUVI0MnVqRlVTcGlNeXVtWkFBQVVJa2xFUVZTY0pyTDVMbDBzN2pSaytMY3R0OGRGdFl5NWJiT1R0SWpKTGFhbXBnNDJEazFQaVhPY21wNDBWYmxYY1grYXMzbVQvNXF6bXZ2STluRmFRV25sbzdZd1hOWUdQdGN0NFJzZjV0WlE0cDVZaTZQd2htakZ5Y0FuS2s3cmR5a0swUDZDR0R4NDhCUkhSLzRadlFBUXkyYTNWaTdiSVNjM2k2L3YvMmxMeS90ZXZSelhFR3QvRXB4ZG5XUEtZc3JxMncxVkQ5QWFVRkJkMEZxRmh0dEZQYkhYUko1ajcrWGRXN3RwTGVGWUpBbkd4c1pyN096VUJNMUFhcHNwdnB4dllQVHZ2L3U4ZWJQZVNlU3J1VzQxUTczcUFyczJpNlJONTFGKzdPck10dVgydU1qbE03ZHVZcWdMMFA2Q01EUTAvTUg1aC92NTkzbTJUemFjL0x6Z2VXdnBKTzVKNWhsVSthZmluOHptVEpjMXhDRU9DZXRXTS9TYnJyQ3J5UW92a3JpNTVTZUdqZ0R0THdnREE0Tk5ERWJYMEZEaTNlUlhNeU5ESno3ZWpkYlY3RnAzaDExRlZqWmJrSnVjYk9ibTlTc055UE9SK05EUjBYSGFzUHRNRXU5b2cvM0l6M24vM0lSbS9ubWltY1Z3N2JXVzAxcGlVVWlDazV2YlV4MmROS0pPVFpmR1J1N1R3S1d4TVVHSklIWUtrcFZkNHVaR21JbEtncnE2dXRQNm5ZRlBlTjAwNy9NNUlWN2VGUUlmRXFRN1pwZEJVS3FHMDNyQjA2RUU0T1RtbHQ2N2R3cGROK2M0Ty9jWG9QMEZvYUtpd2xqdkh2aWtDODkyS203bVYwTGdrNjRNTitLQWpZU1ZLMWYyNmZ5YVZVSldlRkZwd0JZWkZhT0tHN3dKQUZJNXpCL3NKdzBXb1AwRm9haW82T0xoRWF4S01FUUdBSzB2RkFBNElNODd1NlNNd3dsU1ZuYmV2bDBraXdDd2RPblNYQm5UT0w3eUU3ZldmTTc3bDNlRml5c0lraEVDRTVYR1RiSXpGYUQ5QlNFdExlMnljMmR3Rjk2cnlZWGN6U29PNXc5dGJSZFBrZWZnTGx5NDBGVE50UGtkOFdTRHVrdDFyWnFFZjY5TXFvek5kelpqQkdoL0VsYXZYczAvRHpzb0tLanRWMWxaV1NVbUp2TE0vVzFvYUlpTWpGd2p1ano0dWtoeGE5TGIyOE0zTVYvNXdJRURKU1VsQ3doTEdRcm0vdjM3MmRuWkFRRjA2b3JrNXViT25qTG15dEo4UGFMeUJTUXNDdFp6Mng4eVlRSkJSNWRROWg4NmR1cFdjMU1QZ3ZReUVwcHl3eTEwN29TSDBpbHRWRlJVWkRiSnJNeTZUTHFyYUpGRHA4aE9GL1pkc0xTMHBHSDA1UEhEbFk4T2JyVWtLSmRHd3UyWEVGNCs3ZXdma1RRc2xwZVgyNDRiZHlnbngxREVlamcvZGUzNnc1a3pVNmRTWGtTbURYNG4vUjRIUGJidlF6d2lJWWprd3VSVXhkUkxFWFJXR2F1cHFSazlZOGFyclZ1aGIxK1JEdFIxZHorMllNRkNXMXNhUnMrZVBidnRkQ2E3cjJqVitsaEZzUU00cHgvZEZ6d0hVRENOalkzVzMxbmJhZGdacW9rbXdwZ3ZtVXUyTHJGZkpOb1Y0WExod29WTjNuKzM5QmV0OWlLckpONjQ4ZGpqdUNzMExMYTB0SmpObUpHMGFoVU1HU0xTZ1YzMjdUdHVaYlZpRWZHSUh6bWhvYUdiamlZMDlQVVc2YWptc3FRZWxidVRIMTBYdFFPQ3k5eXBZOTBHSlk3alV5M2tiTDJsT216ZW9hWExSUTV5QU9EcTFhdTNYRjMzVlpPbElQS1QxdEp5cUhmdlc4bkpDa1NEaEVKWk9NdlMwVERtKzM3Q1c3Wmw1MjNWZmpQMnJtRFFVUmczYjk0TWMzUTh6RGNyZ0p3M0xTMGVlbnEzVWxNN2R5WklUQmZLMG5sVEZ1dEZUVFlSN2FqZGR4VDFwK3gzV3IyQmhzVTdkKzR3dG9YVW0vd20wbEhzNm95dW1TdWZQZ3dYdFFPQ3kvSTVjeWJkdmoxSnhMUjRIeGtaM1owNzEyMFdPTHhHUW5SMDlLOTdmdmpkWHJSeWdsbGw0QkNxZitQZVUyMXQ0bXJGNURndFdXSjI1WXFvODJUOFpXUlV0MjdkdUkxNFZJcWN2Lzc2eTJHTFE5VjAwZForYnZuWTB1Vm1sOFI3aWZyNlZOZldiSXVycTZ1K3ZqNS9nZ2s1b2FHaEdob2EyMFdQNWI0OGJhWCt0OVQzRHdET3pzNEpDUWs1T1RuVUR4RXpMTlBYMTErMWVuTmdrbWphLy9lbnlrYW0xdlNrUDNCN1V1dnVzcXRFS2J6WXdsSXBZYnIvVEdtRmMzNjB0YlYzL3JSVDhZVm92ZW1zdjFrVEJrMmdKLzBCd0duMSt2Z2kvVlFSYTZJR1B0ZWwwUUhHUlYxZDNYbkhqbUFSaXlmZVpMUFZ4NDZsSi8wQndHV05TNkY4NGRzeTBhcUZ4cGJGcnRzcThtZ1ZsODZkTys5eWNkRVNkWDNpcUtpUnlzcjBwRDhBckZpeHdramxEYXRFdE1LTEtpWE12ZHRwM3JRS0NncnJmbDRYWFVSUTVKZUVwTHdrRlNNVmV0SWZBSll1WFRwWSt3T3JLRmFrbzdxVU1IZHZvK21tdExTMHU2dXJocWhYOCtGRDA0WUdldElmQUJZc1dEQlF0NXhWSUZyaFJkWFNnRzJiR1BTa1B3QTRiZkE0ODF5MHNaRzR0NUFIL2VsSmZ3Q1lPM2N1Wjl5NGU4SlN0M2tJVmxWMTNyYU5udlFIQUliYmpqTXBva21UUis4Z285R0ludlFIZ0prelp5cGJXZDBSMVUxbFplY2RPK2hKZndCZ3VPMDhreXdvU1ltWXBDeElxZXJEY0JXWVdVZk8xS2xUSjQzbzBwZ2pXa2VtWEY3QTFvMGlqejIyNHJ4MWF6QlJSanNKTDF0YW5ob1lPTHU1MGJOb2FXbXBOMmpxSHlJVzhqM3pSTlZwN1ZaNjBoOEFuRFp1RE83V1RhUkVuRGN0TFg5MTYrWWtlczRGbHdrVEpzdzFuOXVVVEp5U0lBanBGT2xOYXpiUmsvNGdJTUdFbkp5Y25QajRlRmRYdnFWSi8rZjV4dFMvbXByYTZ0V3JiOTY4U2YyUUd6ZHVUSnMyVGRSQnZiWXdYTjFTcS9zbVpWRnRYMUlOZ1k5VkdXNDdhRnZzM0xuenpwOFpuWXBFcVVDY3c1d3piYXlvZzNwdFdiRmlSVitwdnMwNVZCZjg0alJ3Tk41b2VHNmlVMWlYaTd5OHZOTUd6OEFrRVI2ZGdZbkt3OHhuMGhqVWE4WEJ3YUYwMkxCSGxGK0VkUURCbXBvdUhoNjBMVXBKU2EzZHNqYTZVQVNSR3BNYk0yVGNFTnJSSXdBc1dMQmdlRU1EL1BVWDFRTllMTzFMbHp6RmU0UzUvK3pVcFVTRW03WXhLMmk4cVM3dDZCRUE1czZkcTlKWEpTbFBoT1VrWTBwajFtNVpTOXNpQUd6YnhGQXJGMkVnc1RFbmJNd2dWV3RyZ2hvNEZKa3hZOFpVRlJVUVpRa2J2Y3VYOTRoM05YZHNacWlXaVhBMW16NWNHMjRrdDJBZThVSWxWTEMydHU1cVBQWHlNeEVPQ1h6V3pXa1R6VldUdURqLy9QTWZvcWkzZTJ3MlorUklPd2ZpcVdKVXNMUzAxQnM4TlZnVTlSYjRYSWZ4azhDTWRpbzQvZlNUU09vdGpzMnVHenAwSVg4NkdXVW1USmpRMTh6K2ZJSUloNXhKMW5WeTJ5a2wra0lscld4MFkzUXRaWEthcVJaZVpCWEZHS25sTVZiU3Y1cGp4b3dac1dRSllVS3BJTGpSb3p4Zm5neDFHR3MyQlQ3WHJpU2J5dEdPZjZOSGdmT3loR0pxYWpwaDJUS1IzQXhTVm5ZU0kzb0VnTFd1YTlWZnEzTnFCVlFYNElPZHkrN1oyTk50TmMyd0NnQUdEeDVzWTJNajBnSUZOMi9lWEwxNnRab2FRYW5aLzNHK01mVVBBQTRPRHZYMTljK2VVWHBGZlBqdzRlSERoMktHWlZKU1VrN3Jkd1UrRlZ6NnB6MkJpWXFMVjY0WE5TV1VCM3Q3KzBIZEs1c0tpSXZMOHNDdXpWSXV1YkR6WjVvZFlLM3MycmlyMjF1cWt3dWxVNlNkSFp5TmpZVVcwU0ZqenB3NXJHN2pJMTlRYXB4WENZRkpYUm5yUlU0SjVjRjUrL1pneWwwZ1FiS3kxa3VYRGhwRXZINGtSV2JNbUtFN1hEZmhBNlUzWVZWRDFiMzhlMnMzaTZWUUFXQ25pNHZlWmQ3S3A0SlFDZzIxbXpCaCtIRGlVck1VbVRKbHl1UlJYUnV6QlNTcHQ0ZlRWS2xXRnVENWk3ZzM3WnFmMXNTVXhsQnNISlVUWlRiSlRKem9FUUFzTFMybm1IVnZ6THBJcFRHbnVWYWpncm1MN3FCY0t4dWRuYnRmdWdSOHkxUVRvbnoxNmxRVGsvSGppU3R5VW1UOCtQRjJVL28yL01OYmJwV1lscWJPWW93OXRzSll2VEV3V2JkV1VOV3o5Z1EvZ2U0REpscFlFSmVhcGNpWU1XTkdpcUxlZ2pVMFhOenBMSm5VRnFjMW04OVFWbStYbm9GYTczSGlSSThBWUdwcStwMG82aTFZUzh0NU45R2tLMUZndUs0N2s2SmZRaTJ2Nm5vS3lPdU9takZIdExSZUhnWU5HclJ5aVpWVUR0V29WYTJjL3RoakswNXIxLzZocVZuQVYrcWVrSHRzdHRUSWtYWkxCRmIxb0lLeHNmRnNoM1Zua3FncXpzQm4yazRiYWE2ZzNJcnp1blhoZW5yOGkwSVFFc3RtMXc4YnR2REhIOFd4YUdobzZMYktUZWtsZVoyT3o2aTlWdHYvODM1eG9rY0FjSFoyVGt4TS9QQ0JlSTFYSHA0OWUxWlRVN05zMlRKeExINHR2ajMxRHdDdXJxNlJrWlRTdmlVVmx0blkyQ2dZVGd1bnNMSjd5Z2Q0Vk55TDRVby8rbXhseDJaR1YycDliL0o1QVZzMk9uV2pWUldrTFZPbVRKbG9NcEgxVXJqQ1lCZXpOUW8xeEFteVczRmE5MHZnY3gwcWo1VEFCRVduMVp0cEQrcTFZbUZoMGN2YStncUZGK0UvTFMxMzFkV2RpZXI3aW9yTE9wZlk4bGhXaS9CemV6Zjc3bktYNWIxNzl4YlQ0dmp4NHhjTUhneFVBb0RjWEkxYnQzWkpZdXh5b3h0RHRZekphYWFRWVp3ZDRMUjhUcjkrSXFZLzh6RjY5T2dKdGhOdVo5NFcyckswcnZSZS9yMTFXMmlPUkxkbDQzcUdTakdUMDBSaHlrb09jOUhjS1dKR2p3QXdmUGp3SHlkT2hCQUtFeVRLeWxURHduYTRpRHlubVorMXJnejFjbVpMUTdId3Bqbk11VGJtWWthUEFEQm8wQ0JyTzZmQVJPSHYrOG82Q0V6dTd2VFRIakV0QW9EVHVuWEIxTlJia0p6Y2lKa3pSNDhlTGJRbE9mMzY5WnZqc0M2UWducXJhWVF6S1FaT1A0a3J4QUhBYWQyNmNEMjlIQXB1aHNySm1WaGJpeGs5QWtEdjNyMlhyRmhISlcrMnFSa0NuMnN6MW51SWFSRUExcTFtYU5aZFkxY0x6N1JzZkg5eDdMRHVZa2FQQUtDdnI4L1lzaVdZUXFGM0RrQ3dob2F6Mk5FakFEaTV1a1ZsNjZRSldia2VnQnM5OWpHZk1vVjRvUkxxZE92V3pjWGRQWWhhM3V3Zldsb3VZa2VQQU9DMjJrMjdVcHRkSUh5c25wWE9HdEZqaEkwTndUSktJaUZTZ2tsa1pPVGF0ZUwyMDMwdHZrbjFiMkZoMGE5ZnY5dTNoYnp2bnoxN1ZsMWRMYW13ekduMXhqUEozUnVGS2NiQXA1cE82N2JUVGdsdGk3bTUrVHhyNDRaM1o4bWJzVW9lOXV5VXNkcUovaEJ0V3phdTNhajJXbzNUSk9RTm9mQkNZY2VHSFJKWjJHTDA2TkdtazVmeEYxYmlJU2tML3E0MldpV0pzQW9BbkRadENsWlhyeFQySWd4U1ZuYmF0azBpZzNyRGh3K2ZNbS9LblV6ZUNvazh2S3Q0bHlXVlJhTWNEU0hybkp6MEwxK0dVZ0ZyUC82TGFtam9WaGNYOGFOSEFCZzRjT0FxQjJ2SUZoSzFzcXRlcWpWRXVhMFJ0OWVOaTh0cWw5alMyTkk2SVc1R1pVZXQzckM2dFQ2WU9QVHIxMitONHh5RkFtRnVmbnpUNVdQNGxwOGs0K1k2SjZkZWtaRWdyRk5LTVRSMHc3Smw0a2VQQU5DN2QrKzF6ZzdDM2F4NXIxd2F0SE9MWk54a3VMcmRlTmZqYlpHUVpyOG1LczFkNGlwKzlBZ0EzYnQzZDk2eUpValkwNnlBd3dudTFNbGxwN2hqajF3WXJtNzNjblNGcXJmQVJLVXBzNVlNSENpb0xxUUljTldiMEZsUEpSeE9rTEt5eXc3Nm1hdHRZYmk2SlJRWnBBanJTQTFNVkJwdk5VLzg2QkVBMU5UVXRtOW15T1VKdVdrNVRSVmR5NWtlV3lWejB6cTd1YjAyTkV3V1ZoUS9TRTV1cENTaVJ3RG8xS21UMHdhUE04OEVWLzRIQUlDYVJnaE1NWERhSUFFaERnRExseS9QTVRaK0lzek5VRG01QWRiV0VpbC9LUzh2NzdIUm8zT2FzUFNoWmxCOXBicHJJODBKZ1R3NE9EalUxdFlLVFRDNWZmdTJvYUdoK05IajErSWJxL25UU2taR2hxbXBLZm1qWDBwSzZzaVJJeEs4TnZ0Mjc3d1Zkb2E4emNBaHd3T0RlWXRHMFNZcksydkF3TUhxZW1RZGh6TFM4T3RKVC9FaisxWjI3OS9OdkNqazBXbmN6L2grT0creFJkcms1ZVhObXZhOVhBdnBRTGkwekk0RHA4V1A3RnM1ZHVCQXFMOC9oM1FDUUc4am85QTRJYXZ6VUtla3BHVDZwT21zZWlIZC96djI3SmkzY0o2a2pIcjUrcDQ0ZjU2ODU2U1h2djZqYTlja1piR3lzdExDYWxaSnBaRFpXbnQzYmZqUmdlYlVXMzZZVEtiL1VYOU9DMWs0MTAyNzI5MkhvazFqSmFHMnRuYWkxYXlDRWlFWnhydTJyVm0xWEt4Ui9yYWNPM2ZPM2MrUC9HcHFxcWs5aTRpUWt5TlllWTBHTEJicnUwbXpQaFFJR2VYWXRvbmhLcUVPQ0FBSUNncnlQYlNWZjRtdXRuVHFvblk5Nm9rRVY5YWNPWDU4MGZ2MzVHMVdidG5pUkhleUpqOWhZV0hIOTI0a2QxTk9xY3VOcU1TdVhVVXNPU2VZdVJNbjVtYVFsYXdGZ0dVYk5xelp4THVRTm0ydVhidDJlTmM2Y2plbDVEcGR2L3RJUzB1SWxxV09sYzNpVjIrRlhNM1ZxeGI4c29YbURHTitJaUlpZHJ1NGtMOVEyQW9LTi83NlN5SWRFRnlXemJmT2VDVWtjWGJPZ2grMjdCUnJia3hiN3Q2OXU5UFJrZHpOVjJWbEwxNi83dFdybDZTTTJpMnhlNXo4bUx6TjNGbHpmUTRRckNOT2o1aVltTTJiTjNOSSt3ZmZ2bjM3L1BuenZpSVcxdnU2dEpYNjM2cjZCNENtSnVHVHdjV1pXRVBQNGxjeGltNytSeGEvaWxGMGt3Yk56YzB0d25xa0pHNzB5N3Y1Vll5aW0vK1J4YTlpbElwRmFXbHBXYUtWbS81VG8vamMrNDhzZmhXajZPYi9KbTJsL2plejFpOC9YLzY4ZjVVcmpXNyt2N0g0Vll4MkVEY2xLMVlvMGtIT0xicjUvOGtvdXZuL3lTaTYrZi9NNkpma204ejdSeEFFUVJBRVFSQ0VCcWorRVFSQkVBUkJFS1NqZ09vZlFSQUVRUkFFUVRvS3FQNFJCRUVRQkVFUXBLT0E2aDlCRUFSQkVBUkJPZ3FvL2hFRVFSQUVRUkNrbzREcUgwRVFCRUVRQkVFNkNxaitFUVJCRUFSQkVLU2pnT29mUVJBRVFSQUVRVG9LcVA0UkJFRVFCRUVRcEtPQTZoOUJFQVJCRUFSQk9ncW8vaEVFUVJBRVFSQ2tvNERxSDBFUUJFRVFCRUU2Q3FqK0VRUkJFQVJCRUtTamdPb2ZRUkFFUVJBRVFUb0txUDRSQkVFUUJFRVFwS09BNmg5QkVBUkJFQVJCT2dxby9oRUVRUkFFUVJDa280RHFIMEVRQkVFUUJFRTZDcWorRVFSQkVBUkJFS1NqZ09vZlFSQUVRUkFFUVRvS3FQNFJCRUVRQkVFUXBLT0E2aDlCRUFSQkVBUkJPZ3FvL2hFRVFSQUVRUkNrbzREcUgwRVFCRUVRQkVFNkNxaitFUVJCRUFSQkVLU2pnT29mUVJBRVFSQUVRVG9LcVA0UkJFRVFCRUVRcEtPQTZoOUJFQVJCRUFSQk9ncW8vaEVFUVJBRVFSQ2tvNERxSDBFUUJFRVFCRUU2Q3FqK0VRUkJFQVJCRUtTamdPb2ZRUkFFUVJBRVFUb0txUDRSQkVFUUJFRVFwS09BNmg5QkVBUkJFQVJCT2dxby9oRUVRUkFFUVJDa280RHFIMEVRQkVFUUJFRTZDcWorRVFSQkVBUkJFS1NqZ09vZlFSQUVRUkFFUVRvS3FQNFJCRUVRQkVFUXBLT0E2aDlCRUFSQkVBUkJPZ3FvL2hFRVFSQUVRUkNrbzREcUgwRVFCRUVRQkVFNkNxaitFUVJCRUFSQkVLU2pnT29mUVJBRVFSQUVRVG9LcVA0UkJFRVFCRUVRcEtPQTZoOUJFQVJCRUFSQk9ncW8vaEVFUVJBRVFSQ2tvNERxSDBFUUJFRVFCRUU2Q3FqK0VRUkJFQVJCRUtTamdPb2ZRUkFFUVJBRVFUb0txUDRSQkVFUUJFRVFwS01nMi9xYnZmMVgvRE1RQkVFUUJFRVFCUG5Qa2VKd09GLzdiMEFRQkVFUUJFRVE1RXVBbVQ4SWdpQUlnaUFJMGxINFA3RThCeC9kYWhLNEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4naW1nL2pzZHJhdy5naWYnOidSMGxHT0RsaEZBQVVBT1pCQVB6OC9BRE16TXlaQUFBQXpBRE1BRE9aTTh5Wm1abG1NNW5NekRNem1jd0FBUERZeVAvLy81bk1tWm1aTS8vTUFQL01tUUFBLzh5Wk13Q1pBTXpNbWFiSzhKbG1BS1VBSVlBQUFLMnBrT0hoNFFDWnpHWm1tY3pNTS8rWkFKbVp6Sm1aQUFELy84dkx5elBNTTJabUFNeVpabWIvWnY4QUFNd3pNMmJNekRNei93Q0FnSmt6TTJiTVpqUE16TmpZMlAvOTl3RC9BUGIyOXYvTXpHWXpadXZyNi85UVVBQ1ptY3ovelA4ek13Q0FBQUFBbVpuLy84ek1BTURBd0diLy81a0FBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFRUFMQUFBQUFBVUFCUUFBQWVWZ0VHQ2c0U0Zob2VJaVlRR0Nqa3ppb1VBRndvbk5wQ0VBQmhBQ2lpWGl4Z1hDNTZFTEFhamhBY1FwNE1TcXFjd0pRSWRvcU1VSUFJUEQ0SVZQQXlFR2kwbU9Bd0xCeFlDUFI0VUtRRWhQNFFGQkRFakJRNE9KTWNTR1JzQjNkQVRCQVFhZ2hrSE5DSkJDQ3MzTG9RTk9oTU5oQzhES2hYcENBQ0ZNaldGSEFNUkl1Z2JsV0RIZ0FFRFBmbElrT0REcW9lZUFnRUFPdz09JyxcclxuJ2ltZy9qc2RyYXcyLmpwZyc6Jy85ai80QUFRU2taSlJnQUJBZ0FBWkFCa0FBRC83QUFSUkhWamEza0FBUUFFQUFBQVBBQUEvKzRBRGtGa2IySmxBR1RBQUFBQUFmL2JBSVFBQmdRRUJBVUVCZ1VGQmdrR0JRWUpDd2dHQmdnTERBb0tDd29LREJBTURBd01EQXdRREE0UEVBOE9EQk1URkJRVEV4d2JHeHNjSHg4Zkh4OGZIeDhmSHdFSEJ3Y05EQTBZRUJBWUdoVVJGUm9mSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zi84QUFFUWdBbGdHakF3RVJBQUlSQVFNUkFmL0VBTWNBQVFBQkJRRUJBQUFBQUFBQUFBQUFBQUFDQXdRR0J3Z0ZBUUVCQUFJREFRRUFBQUFBQUFBQUFBQUFBQVFGQVFJREJnY1FBQUlCQXdJREF3WUdEQWtKQ0FNQUFBRUNBd0FSQkJJRklURUdRUk1IVVdGeElqSVVnWkZ5TXhVSW9iSFJRbUtDa2xPRHN4WTJ3Vkt5STBOek5IUVg0ZEpqazZNMVZYVTM4S0xESklTVXhFYkNKVVVSQVFBQ0FRSURCUVFGQ2dVRUF3QUFBQUFCQWhFREJDRXhFa0ZSY1RJRlljRWlFNEdSTXhRRzhLR3gwVUpTY2lOVEZlR0NraFlIOGNKRE5XTFNKZi9hQUF3REFRQUNFUU1SQUQ4QTZwb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0ZBUEtncHc2aWlzekZ0UXZiaFFWS0JRS0JRS0JRS0JRS0JRS0JRS0JRS0JRS0JRS0JRS0JRS0NMcXhIQml0dkpRVU85azh2OEFSYXZoOHRCYzBDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ1VDZ0hsUVFnK1pUNUlvSjBDZ1VDNG9GQW9GQXZ4b0ZBb0ZBb0ZBb0ZBb0ZBb0ZBb0lOTWlrZy9lMkorR2duUUtBZVJvTFBzL1FVRjVRS0JRS0JRS0JRS0JRS0JRUmFRQnROaVRhL0FVRXFCUUtCUUtCUUtCUUtCUVFlVUtiRUczRGlCdzQwRTZCUUtBZVZCQ0Q1bFBraWduUUtCUVVaTWE3R1NOakhJZVpIRUg1UTdhQ0l5U2hDNUM2RHlFZzRvZmg3UGhvS3NrMGNhNm5ZQWRubjlGQlN2a1RleU81ai9qSDJ6NkIyVUZXS0ZJbHNndGZpVHpKUGxKTkJPZ1VDZ1VDZ1VDZ1VDZ1VFVmxScmFUZTR1UGdvSlVGdktzUmQ5UkFiU096a0w4NkM0RkFvQjVHZ3MrejlCUVhsQW9GQW9GQW9GQW9GQW9GQlRIejdmSlg3Wm9LbEFvRkFvRkFvRkFvRkFvSVQvTm4wajdZb0owQ2dVQThxQ0VIektmSkZCT2dVQ2dVQXFDQ0NMZzh3YUMxeFlJbG1tSVhpajZVdnhzTklOaGZsem9McWdVQ2dVQ2dVQ2dVQ2dVQ2dIbFFXbU1JeTRLTmNhQmNXdHpQUDRiVUZUM0hGL05qNHpRUnlJZ0ZlUXRwVlFMSHlBYzZDNUJ1TDBDZ0hrYUN6N1AwRkJlVUNnVUNnakpJc2FsbTVDZ2lES2VJMDJQSWNUOWtVSDJPWlh2Ym1wc2FDZEFvRkFvSUQ1OXZrcjlzMEU2Q0x5S2c0OFNlUUhPZ2tyQmdDRGNIa2FBU0FMbmdCUVJTVlh2Ym1PdzhEYnkwRXFDQm1RUHA3ZVYreS9rdlFUb0l2SUVISGlUeUE1bWcrcXdZQWczQm9Jei9ObjBqN1lvSjBDZ1VBOHFDRUh6S2ZKRkJPZ1VDZ1VDZ29ZL3p1Ui9XRCtRdEJYb0ZBb0ZBb0ZBb0ZBb0ZBb0tlUUpEQzZ4KzJSWWZEd29JWXNKakRsaFlzM0FmZ3FMTDlnVUZlZytNb1pTcDVFV05CVHhnNndxaiswdnEra0RnRDhWQlZvQjVHZ3MrejlCUVhsQW9GQW9LTXlNemdCdEpBSlUrZmh6b0xiVklvYU94VVhVRlI1NzMwK1kyb0tvU1pOQlVEV2VBanZaUXRxQ2V2Ti9OeC9sSDdsQTE1djV1UDhvL2NvR3ZOL054L2xIN2xBMTV2NXVQOG8vY29JQnN2dlQ2aWF0SXVOUnRhNTgxQlBYbS9tNC95ajl5Z3B5TSttd3YzN0d4QTVxQng0ZWFnK3BKS1FERUFYUHppdHdBTkJNR1JtQ3pnS0Q3SVUzQlBuTkJCUmJXMnBpNFlxbCtQTHNvSkY4eTNySXFyMmxUYy9GWVVGUFVoSkJjZ2FnRlVjUXludFAzYUNvR3lmNk5WZFB2V1lrSDdSb0lPMGdLc0JlZlZZcWVWckhsNXFEN0d6MnZGNnpuaklyY0FEL0JRZlpXeTlIcklnRnh4REh5K2lnbHJ6ZnphZmxIN2xBMTV2NXVQOG8vY29Hdk4vTngvbEg3bEExWnY1dVA4by9jb0l4Tmw5MnVtTkN0aFlsankrS2dtcjVQRXVpZ0FFalN4UEg0aFFGa0lZYW5ES1ZMTnlGclVGWUVFQWczQjVHZ1VGT1dlT0lEVWVKNUtPSlBvRkJSaWRvdThrbFVvc2phL0xwQVVEamJ0TnFDNVYxYmtiMjRIMDBIMmdoTE5IRUx1Ylg1RG1TZk1LQ2w3MUl2clNSTWtSNU56SStVQnlvSzZ1cktHVWhnZVJIR2crMEVKWm80MTFPMWgyZVUrZ1VHUGI1NGdkTDdEa1J3N3puUllUeXJxampkdFV1bTl0VFJxR1lBbmxYSFUzRktjTFRoWTdMMGpkYnFKdG8wdGFJN2V4WmY0dytHdi9Ib1B5WmY4eXVmMzNSL2VUZjlzZW9mMHJmbS9XZjR3K0d2L0hvUHlaZjh5bjMzUi9lUDlzZW9mMHJmbS9XZjR3K0duL0hvUHlaZjh5bjMzUi9lUDlyK29mMHJmbS9XcHcrS2ZRR1htcGo0Mjl3UExrT2tjYUhXb0xFMkhGbEFISHkxbU41cFRPSXMwMVB3NXY2Vm0xdEsySTQ5bjYyWnJMR1haQWZYWG12YnhxU3BFaVFCY213SE0wRnNNc1BNaXBiUXg5by9mVy9paitHZ0lzZ2xYbVZMTWZSem9MbWdIa2FDejdQMEZCZVVDZ1VDZ2k2M0E3Q09JTkJRZUtacGRkaHdLOXY4Vy8zYUN1cW01WnVMSDRnS0NWQW9GQW9JRDU5dmtyOXMwRTZDRHg2aUNEcFljbUZCSkVWUllVQmxWaFlpNFBaUVJTTUtia2xtNUFueVVFNkNtWVZMZHVrOFN2WVRRVktDTHhockVHekRrd29DSXFpdzlKOU5COG4rYlBwSDJ4UVRvRkFvQjVVRUlQbVUrU0tDZEI4MEx4NERqem9LQnhtak9ySGJSNVl6eFEvYytDZ2lKOGlZbEZVUkZUWjJZaGpmOEVVRmFMSGpqSllYWno3VHR4WS9EUVZDQmFnb0xqaEpReWV6YTF2SmZpU1BPVFFJOGd1d1cxaWIzOUE1R2dsRmpSeG5YeGFRODVHNG4vSlFWYUNnMk5wWXZBM2R1ZUpIM3A5SSs1UVVteXNqMWs3c0s2QWEyOW9jZVdrRGlhRDVGaXl5TnJrSlcvYVRlUS9DT0MvQlFjeGVQYXFuaVJtSW9zcXdZNFVmb3dmdG12T2VvL2F6OUQ3UCtDNC8vUHIvQUJXL1N3dmFlbmQrM2p2Zm9uYnNuUDdqVDMzdTBUeTZOZDlPclFEYStrMjlGUkthVnJlV0psNkhjNzdRME1mTnZXbWVYVk1SbjYzb0R3OTY3SjBqcC9jU2JYdDd0THkvSnJwOTIxZjNaK3BFL3ZteS9yYWYrdXY2MHg0Y2RmSC9BT3U3ai83YVgvTnA5MTFmM1orcGorKzdIK3RwL3dDcUYxdHZoaDRnVDdoalFqWTgyRHZKVVh2NUlYUkV1dzlabVlBQURuVzFOcHF6TWZETGpyL2lEWTEwN1Q4Mms0aWVFVEU1OWpyMmJIU1N4NHE2K3k0NWl2VVBoSzFsR1JJNjQ3Z0ZnTldxL3FFY3Jzdmw4MUJjdzQ2Uit0eFp6N1RubWY4QUpRVmFCUUR5TkJaOW42Q2d2S0JRS0NJa1E4aUR4dDhQa29QaG5pQkM2aGM4aFFmZStpTEJRd0xIa0tCMzBYSDFoNnZQanlvQ3l4dGJTd04rQW9KQmdSY0c0OHRBb0ZCVEh6N2ZKWDdab0tseFFMankwQ2dVQ2dVQ2dVQ2dVRUovbXo2UjlzVUU2QlFLQWVWQkNENWxQa2lnblFLQWFDeGovdDM0Ny95Rm9MNmdVQ2dvUWdHZVFXK2FObFBtWUFuN0pvSzlBb0Z4UVVJdjdYUDZFL2hvSzlCeXQ0L2Y5Uzg3K3B4LzFRcnpucVAyMC9RK3ovZ3ovd0JmWCtLMzZXWmZWZC8remY4QW9mOEE1RlN2U2Yydm85Nmgvd0NRdi9CL24vN0c2Y0Q1MC9JLzhSNnVYelpmVUNnVUZBLzI0ZjFSL2xDZ3IwQ2dVQThqUVdmWitnb0x5Z1VIeDlXazZmYTdLQ2d1TTZrRFZkYjZyOGpleEZCTkkzR2pWYTY2cjI4OUJUR1BKY0E4Qnc0M051QXQ3TkJJeFNsUXRnTkFzRGZud3Q1T0ZCaDNpNXVHNWJiMEx1R2RoVFBpWlN0amlPV0ppSFc4eXFiTUxjdzFxazdTc1RxUkV1RzR0TVVtWWFONlo2NzZ5bjZrMnFDYmVjdVNHWE14MGtqYVZpckswcWdxUjVDS3M5VFFwRlo0UnlRS2F0dXFPTHBMcGpjSjgzQTcyWTNiVVI4UnFqV3lmVkhVMjE5TjdOTnV1NVNhWVloWkVIRjVKRDdNYUR0WnY4cDRWMDA5T2J6aUdsN3hXTXk1NDZtOGJPczkzbmtHRlA4QVJPRTNxckJqVzd5d1BEVk1ScnY4blNQTlZ0cDdPbGVmR1ZkZmMybmx3WWpQMVAxTGtHOCs3WnNwQkpCZklsYmllZk5xN3hwMWpzaHhtOXU5ZmJmNGhkYjRFb2t4OTd5eVFiNlpaV21UOGlYV3YySzF0b1VubkVObzFyeDJ0djhBaHg0MU52R1ZIdFc5eHBEbnZ3Z25qdUk1U0I3TmpmUzl2UFp1eXhzRFhialo5TWRWZVNib2JucW5FODIyNHBVa1FPaHVyQzROUVV0cmp4MzNuZGRwNld3c2piTXVYRG5mT1NOcFlXS01VTU1wS2tqc3VvcVpzcVJhOHhNZGlOdXJURmVIZTBaL2lEMXgvd0FjelA4QVhOOTJyUDVGTzZFRDUxKzhIaUYxd0RmNmN6UDlhMzNhZklwM1FmT3YzcnlIeFc4UTRYRHB2YzVJN0hFYmo4bDFZVnJPMTArNXRHdmZ2Wm4wbjlZSGRZWm84ZnFPRmNqSFkyYk5oR2lSYi9mUEdQVllmSjAvRHlxTnE3R09kWGJUM2MvdE40YlZ1K0R1bUpGbFljcXl3eXFIamRUY0ZUMmlxeTFaaWNTbnhNVEdZWE1xeU42b3RwNGVuZ2IxaGxVb0ZBb0I1VUVJUG1VK1NLQ2RBb0JvTFpJb2pQM2l2YzNaclc4b0EvZ29MbWdVQ2dvUWYyakorVXY4Z1VGZWdVR3V0LzZMNlZuOFE5b1diYklIWGNJTTZmTkJYNTJWVEVRN2VlN0dwTmRTM3k1NHp6ajN1RnFWNjQ0ZDd3TnIzMStsZDc2aHo3RnNMY01yTng0a0o5VVoyT3hiR1VrM3QzcU15L2kxMG12WEVSM1krcHBGdW1abnZ6OWJJZkNYRXljT2ZmOEFGeUhaNVJQQkxMcTRYa21oRHV4QTRhaVR4cmpyMnppZlo3NWRkS01aajJ0TStQMy9BRkx6djZuSC9WQ3ZLK28vYlQ5RDdaK0RQL1gxL2l0K2xtWDFYZjhBN04vNkgvNUZTdlNmMnZvOTZoLzVDLzhBQi9uL0FPeHVyQ1ZsbklZRUh1K1IvckhxNWZObDdRS0JRVUQvQUc0ZjFSL2xDZ3IwQ2dVQThqUVdmWitnb0x5Z1VDZ1VDZ1VDZ3dMeHgvNmM3ajh2SC9YcFVyWi9hUWo3cnlTNTE2VC9BSHEyYisvWTM2NWF0OVh5VDRLN1Q4MGVMcWJvbi9kWitXMzI2ODh1V3Fmckhick8yNDdWdElZaUNPSjhsMTdHZDIwS2Z4UXArT3JUMCt2Q1pRTjViakVNSDhQT25zSGRjckxueTQxeVJoaU1SWWpGZ3J2S3hVTytrcVNxYWVWK1pGK0hBOWQ1cldwWGgydWUyMDR0UEZ2YmF1aHAxeDF2Skhqb3crWmdpaWlTM2tLb3FnaXFtZFMwODVXTVVpT3hqZmlKNFQ0MlRzbVZuWXNVYTdqaXh0T2tzTVlqYVVSZ3MwYnJHQXJsaDdKdHF2YmphcFcyM05vdEVUUENVZlgwSW1NeHphT3hOdTN0WlV5TVRGeWU4aGNOSExIRzVLdXB1Q0NCekZXczJyeWxYeEV1cWVqdHpueWNjSlBHWVpYaWh5REN3S21NenhMS1VzZUkwbDdWNSs4WXRNTGlzNWlKWVg5WWUvN0lZZ0lJL3dEMlVaSG83aWFwbXc4OCtDTnZQTEhpMDEwTGk0MlYxWGdRNU1TVHdzWkMwVWloa1lyRTdEVXA0RVhGV0c0dE1VbVlROUdJbThSTGRPMTlBdzUySXVRTnUyOVE0dXErNVFlVHk2YXB2bjM3NVdmeWFkMEttNCtEMjA1TVRMSnQyT0NmNlhHMVk4aWs5cTZUM2Y1U0VWMHJ1OVNPMXBiYjBuc2FWNjI2Tnp1bHQxR0pQZVRIbUd2RXlDTk90UndZRVhObVU4Q1BoNUdyWFExbzFLNVYrcnBUU2NNejhFK3NNakV5NWRsbWtMUmFXeU1OVDJhZldtUWVZcGVUemFUNWFpNzdTNGRVSkcwMU9QUzZGaGxXV0paRk53d3VLcTA5RnNyR1VrTktnSTVnc0t6aVdNcENlRXFXRHJwQXVXdUxXOU5Zd3k4N0c2cTZaeXNnWTJMdTJIUGtFMjdtS2VKM3Y1TktzVFc4NmRvNHpFdEl2V2UxNllaV0YxTnhXamRidm1ZbUppTE5sVEpCRXFqVkpJd1JSdzhwdFdZaVo1TVRNUTgzOXVlaWdiSGY5dXZ5dDczQmY0dGRiL0p2KzdQMU5mbTE3NGVqaDdwdHViSDNtSGxSWkVkN2E0blZ4ZjBxVFdrMW1PYmFMUlBKY2tCbEk3RFdHVnYzc1ViaFpaVVV4aXdHcXg0anRCck9HTXF5VFF2N0RxM29ONnd5a1dXeE4rWE9nc0o5eEJPbFdFWTVjU05aK0FteS9EV2NTeGxPQ0ZTZ2VPVFJLYmtzcmF3M3lyODZ3eXJMa01oQ1pDNkNlQWNjVVB3OW53MEV2Zk1XOWpNbjVRck9KWXlwUGhZR1JtWStjMGF2bFl5dXNFMzN5ckxiVUFmSTJrVXpQSXdzTXpwSFlNcUtTT1RFUWlUSTk4YmhjR2U5OWR2S2UyblZKMHcrNCtCRnQyVmtaTU1LeFNaUlU1REMraHlnc3BKNXFiSHRwTXM0YzErUE1uZWVJK2ExaXQ0Y2ZnZjZvZVN2TitvL2JUOUQ3UDhBZ3ovMTlmNHJmcGVSMEw0azc5MFd1ZXUweFkwaDNIdXUrYkpSM0s5enIwNk5Mb1A2UTN2ZXVXMzNWdExQVGppc1BXUFFkRDFEbytiTm82TTQ2Wmp0eHp6RTl6SVYrc0YxMkpCSUk4THZPMXU2a3VmVC9PMUkvdW1yN0ZQL0FMRjJQZnFmNm8vK3IzOW8rczN1Nk1GM2pab0owSjlaOFIzaFlEeTZaTzlCK01WMXA2cmI5cXYxSUc1L0FHbE1meXRTMFQvOG9pZjBkTGJmUjNpUjBwMVpBejdabGFNaU1hcHNLZTBjNkR5NmJrTVBPcElxejBOMVRWOHM4WGgvVmZRdHpzWi9tMStHZVZvNDEvdytuRElPL2xtNFFDeS9uVzVmaWp0cVFwMU9YRVpRSFRVOG85cDlWbitENzM0S0JGbWtjSlJjRDJtQXNSOHBlWTlJb0x0V1ZsREtRVlBJaWcrMEE4alFXZlorZ29MeWdVQ2dVQ2dVQ2d3THh4LzZjN2o4dkgvWHBVclovYVFqN3J5UzUxNlQvZXJadjc5amZybHEzMWZKUGdydFB6UjR1cHVpZjkxbjViZmJyenk1YTkrc0wwemtaV0ZoYjdqSVg5eTFSWllGeWU2Y2dxL29SZ2IvQUNxc05ocVJFeldlMUQzZE14bHBUWnQ2M0xaczlNN2I1ZTZuVUZUY0JsWlR6VjFOd3dOdjRlZFdWOU9MUmlVR2w1ck9ZYmI2ZitzVTBTSkZ2VzEzQTlxZkRiczgwVXAvOFNvRi9ULzNaVEs3enZobm0wZUwzUVc4S0lodUs0a3pqakZsZ3dFZmp0L04zOURWRnZ0TlN2WTcxM0ZKN1hwL3N2aDVUbVpjeVYxZml0cEdJc2VJdHg1VkdkM283UnNPSnRoWXczTFA3Ukp1VFFhOStzWCs1MkIvekdQOVJOVTdZZWVmQkUzbmxqeGFiOE8vM3gyLzlOK29lcCs2K3psRTIvbmgxRDBuL3VYSCtUVkV0bnNVR3JQckI3VkZQMGpCbmhCM3VIbElkZHVJU1ZTakQ0VzAvRlUzWVd4ZkhmQ0x1Ni9EbHBEb3JMT0oxYnRFMzNweW9vNUxkc2NyZDNJUGhSalZucjF6U1k5aURwVGkwT3FlbGNocGRwUldOMmp1aFB5ZUZlZlhEbUR4SS9mdmZQNzA5WDIzK3pqd1ZHdDU1WE81ZFo1MjRkTTdUMHZ0aVRMSEZHSTh4RjR0UEtISlJGVmJrb0wzdDJuMEN0YTZNUmVieXpiVm1heFdIbTRmU0cvTnUrQnQrZGc1TzMrK3lyR3NtUkRKRUF0N3U0MWdYQ0xkalhTMnRYcG1Zbk9Hc2Fkc3hFeHpiNHkrdEpPbStqc3plM1VOZHhCdGVLNU5pemNJMXYyNlVYVWZNS3B0SFRuVXZoWjZ0K2l1V2djN2N1b2VwOTJWc21XYmNNK2RpSW83bHJYNDZVWGtxanlEZ0t1b3JXa2QwS3VadGVlK1hxZjRhOVZGTHFtS3oyK2JHWGphcitUNXpUZjRhNC9mTlB2ZFB1MSs1NGNjdThiSHVaTWJ6WUc0NHJGVzBreHlLdzVnL3dEYmpYZkVXanZoeTQxbnVsMGY0WGRkNUhVR3g0MG1jUWN2VytOTXdBQWFTSUsyb0FjdFN5S2ZUZTFVdTUwb3BmRWNscG9hblhYTXRmOEExaU5pN2plOERlWTFzbVpFWUppQi9TUW02c1Q1V1Y3ZmkxTjJGODFtdmNpN3luR0pVL0JIZnBZWXN6YnRaQWhtankxVDhDVzBNcCtCdTZyVDFDbkt6YloyNXczcGs1VU9KZ1Nac3c3dUhHaGVXYVQ4RkZKSit4ZXE2c1puQ2JNNGpManJjTTJiUHo4bk9uTjU4cVY1NVQrSEl4WnZzbXZSVmpFWVVzem1jdDBlQjIreUhhRXd5NTA0ZVU4YkwyQk1oZThqL3dDK2t0VlcvcGkwVDNyRGFXelhIYzJuMW52WTJUcFRjOTAxQlh4OGQyaEo1ZDZ3MHhENFhZQ291alRxdEVKR3BicHJNdVNOcDIrYmM5MXhOdmlQODdtVEpDckhrQzdBYWo1aGU1cSt2YnBpWjdsUFdNemgxTDBLR2VHU1NPNjRTV2l3NHV4WVl4cGpId0tCWG5yVG1jcnFJeEdHV1Zoa0l1TFVHQTlZZUMzU1hWTzdqZE15VEx4Y2tvc2NneFhqVlhDOGlSSWtsajJjS2g2K3hwcTI2cHpsNlQwcjhVN25aYVh5cVJTMWM1anFpZUgxVER6NGZxN2VIa1lzd3paZk84NEg4bEZybkhwbWw3VXkzNDQzODh1aVA4djY1VTh2NnVYUU15RVF5WjJNL1l5VEkzMkhScXhQcG1sUGUzMC94enZxenhpbHZvbjNTMXgxMzRCYjdzR0hMdVcwNUgwdGdRZ3ZQR0UwWkVhRDc3UUN3Y0R0STQrYW9HNDlPdFNNMStLSHEvUi94bm83bThhZXJIeTd6eTQ1clAwOW41Y1dzc0RQek52elljM0NsYURLeDNFa01xYzFZY3FnVnROWnpITjYvWDBLYXRKcGVPcXR1RXc2KzhOZXNvK3J1bE1iZENGWE1XOEdmR3ZBTFBHQnFzT3dNQ0dIbU5lbjJ1djgya1c3ZTE4TDllOUtuWTdtMmwrenpyL0RQNnVYME1vcVFwbE9XQ09XeFlXWWV5NDRNUGhvS01jUWh5bFJTZldqWXYyQWtFY2JEaGZqUVhWQVBJMEZuMmZvS0M4b0ZBb0ZBb0ZBb01DOGNmOEFwenVQeThmOWVsU3RuOXBDUHV2SkxuWHBQOTZ0bS92Mk4rdVdyZlY4aytDdTAvTkhpNm02Si8zV2ZsdDl1dlBMbDdlWmlSWlVEd3lxR1J3UVFRQ0NEdzRnMGlScHJxL3dRMjZTYVRJMjB2Z014TGFFWHZjY241Rnc4ZjRwWWVSUlUvUzMxbzRXNG9tcHRJbmx3YTYzSHd3NnJ4R2J1SW9zOUIyNHNnTG4wUXlkM01meUttVTNtbmJ0d2kyMjE0N0dNNW1GbTRVNWd6TWVUR25YMm9wa2FOeDZWWUExSWkwVHljWmlZNXNpNko4UXQ4Nld5MDdpVnB0dExBejRMRzZFSG1ZNyt3L25IUHR2WEhXMjlkU1BhNmFXdE5KOWpxRHAvZmNYZDhHTEpoWU1zc2FTb2ZLa2lobE52UWVJN0twTFZtczRsYlZ0bU13MTk5WXY5enNEL21NZjZpYXBtdzg4K0NMdlBMSGkwMzRkL3ZqdC93Q20vVVBVL2RmWnlpYmZ6dzZoNlQvM0xqL0pxaVd6MktEWC9qb3lEdzZ6UTNOcGNjTDZlOVUvYUZTdGw5cENQdXZJNXYyVlhiZWNCVTlzNUVRWDBseGFyaS9LVmJYbkRxL281OVdMa1c5bnZwTlBvMUd2T3JwelI0a2Z2M3ZuOTZlcjdiL1p4NEtqVzg4c3A4S2RpRXVHMmFucTVlZGtOaXh5amd5UXdvclM2VDJkNFpWQitUYmtUVUxmNms1aXFWczZSaWJOMlFkRjRVT0lZb3BIak1pbFpkTEVCZ3dzUVI1NzFYSnFlNTlJN2ZtYlJIdDhtUEJrUnhjVVhJaVNVQnJXdUE0Tmo1eFcxYnpYbE9HdHF4UE5pT1A0WjRlQzdaR0poWTJHODZhSjhtTnBRZTZ1R1lCWGtaRXZwRnlvSERoMm11bDllOTR4TXRLNlZhem1JZWxrOVErR094NG9qek55eEdrVDFYamlZVHlYODZSYTJIeFVydDcyNVFXMXFSemxvanhLMy9ZOTk2bmZQMmFPUk1UdVk0aTBxaFM3UjNYVUFDZUdqU0JmeVZiN2JUbWxNU3J0ZThXdG1HYWVDc3JKZ0d4Ly9vQzN3d2kvMnFoZW9lYUVyWjhwYkU4WnRpK2x1Zzh4a1hWUGdhY3lMOURmdlA4QVpNOWNOcGZwMUk5cnJ1YVpwUHNhRThPTndPSDFkaG9XdEhuYXNOK3dYbkdtTy9tV1hRM3dWYWJxblZweWdiZTJMdzNiNGw5U0RGOExjbGxjclBuQk1KUE9aRC9PS2YwU3ZWWHRLZFdwSHNUOXpiRkphQTJmcDdOM1hEM1RLeHlCSHRXUDd6TURlN0RXQVZYejZkVCtoVFZ4ZlVpc3hFOXF0clNaaVo3bVRlRVc1SEgzN0p3eWVHVkFaSTEvMHVNZTl2OEE2b1NENGFqYjZtYVo3bmZhV3hiSGUyRjQrZFFoT2t0dDIyTmlIM0tYdlpBT1JpZ0FKQi9IZEQ4RlJ0aFROcG51ZDk1YkZZanZhMThNZHVhWGRNcmNMY01LRXh3bi9UNVY0bEh3Ujk0dzlGU2Q5ZkZNZDdodEtadG51ZEw5TzRJdzlxaGlBc2RJSnFuV1QwNkJRS0JRS0JRY2QrS1d4WSt4OWZieHQyTWdqeGtsRXNDTDdLcE9pekJSNWwxMnJ5KzcwNHBxekVQdkg0ZTNsdHhzZFBVdHh0akUvd0NXWnI3bXkvcXc1OG5lYjl0NWE4VnNmSVJmSTNybzUrSDFhbitrMjgwUEkvOEFJR2pHTkxVN2ZpajlFeDcyK2F1WHpVb0tEZjIyUCtyZitVdEJYb0I1R2dzK3o5QlFYbEFvRkFvTGJkTnhnMjNiY3ZjY2pWN3Zod3laRTJrWGJSRXBkckR5MkZiVnJtWWp2WXRPSXkxbGsvV0w2U1FFWStCblN0NVdXSkYrUHZHUDJLbVJzTDk4SXM3eXZkTFplRHVNT1kweXg4NFhhTnZTcHRVRkxZWDQ1eUluaDFuS3hzWkpjZFVIbFBmSzMybE5TdGw5cENQdXZKTG5ubzFESjFmc2NZNXZ1R0t2eHpLS3R0YnlUNFNydFB6UjR1bytoemZady9ZekUvR2E4K3VXSGRYK09jWFR1L1plem5abnlKc1JsVm5NNGpWdFNoMUk5UitCVmdlVlR0TFpkZFluS0pxYnJwbkdIcjlCZUo4SFZtTEpKTGlERGxqbjdob1EvZTJESUdqYlZwVDJyTU9YM3RjZHhvZkxtTzExMGRicmhsK1RzKzNaUS9uWVZhL2JhbzdzOFRlT2hOcjNIRGJFblR2OFUzLzh2TDZ5aS9haFBHTnZ3a3NhM3BxVFdjeExXMUl0R0pjdGRRYmRIdG0rN2p0c1VobGp3c21iSFNRODJXS1FvQ2JkcHRWL3AyNnF4UGVwN3hpWmh1L3dYM0NYNkUydU5pYkFaRVF2MnFzeGNmckNLcU43SDh4WmJXZmdYUDFpL3dCenNEL21FZjZpYXQ5aDU1OEdtODhzZUxUZmgzKytPMy9wdjFEMVAzWDJjb20zODhPb2VrLzl5NC95YW9sczlpZzFIOVlyZVlvZW45djJsVy9uOHZJNzVsSDVxRlNEZjB1NjI5RlQ5aFQ0cGxEM2x1RVEwNzBIaWU4OVc3YmNYanhwZmU1Yjh0R0tETXdQeXRHbjRhbjdpM1RTWlJOR3VidzZlNktoZVBaVVovYWs5WW4wOGFvVnU1bjhTUDM3M3orOVBWOXQvczQ4RlJyZWVXenZCcUVIYXRxUCtreW1QcDFxUC94cXQzMzJpZHRQSTNWVU5KWUo0cytJVW5TT3p4SmhLcjd0bmxseHRmRlkxUzJ1UWp0dGNBRHkraXBXMTBQbVR4NVE0YmpXNkk0YzNQM3ZYVnZXTzVkMWs1c3VXOWpJN3p5RVFRcGZpeEE5UkZ1ZVNqbndBdlZwUFJwVnp5VjhkV3BPT2JLTnM4SjhhVFNjak5ueTI3VXc0ZENIMFN6RU4vc3FoMzlRN29TYTdQdmxqL2lIMDNnOVA3empZV0drc1N5WWtjMHNjemlSdzdPNjhXQ3hqMlZCOW1wVzIxWnZYTW8rdnB4UzJJWm40TGkrQTMvTUYvVTFEOVE4MEpXejVTMzNrWThlUmlQQktvZU9SQ3JvZVJVaXhCOU5RSW5DWk1PTzk4MjNJMkxxRE0yL1V5eTRHUTZSeWNpUWplbzQ5SXN3cjBGTGRWWW52VXRxOU5zTTU4V09vUm5iUHNHUEV3N3ZOamJkWGlVOEY3OEJVWDhSaEt0Uk5ucGRNMjhjSk81MU9xSSt0NkhoUHN5dnN5SklwMDd2UEtKeDVjYU9JNDQrTXpUQ3VPOTFQampIWTY3V253ejdXdjhBWlpwT251c2NZNWZxSGI4enVzd2N2VVYrN21YNFYxQ3A5NDY2VDdZUTZUMDI4SmU3NHY3bEpQMVN1M00ycGRweDQ4VWtHNm1RanZKRDZidnBQb3Jqc3FZcG52ZE4xYk4vQmxuaFp0SWgyN2JsbFFnNXNqNTA3MjVJcDdxRU4rUTdENVZRdDlmTjhkeVh0YVlybnZiMmowQ05RcEJXM0FqbFVOSlNvRkFvRkFvRkJ5TjR6YmxEdUhpVnZVc0xhbzRwRXh3ZndvSWtpY2ZscTFlWjMxdXJWcys0L2hYUW5TOVAwb25uTVRiL0FGVE14K2JEWVgxWWNDUWZUKzRNdG9qN3ZqeHY1V0d0M0h3QXJVMzBtdm1ud2VYL0FPUU5hUDVXbjIvRlA2SWozdDcxY3ZteTNtekVXNFQxMlgyamV5cjhwcUNNTFNTekxLVnNxb1YxY2dTU0R3QjQyNFVGMVFEeU5CWjluNkNndktCUUtCUVd1NjRVV2R0dVZoVGNZY21KNFpBT2VtUlNwK3dhelcySnl4YU14aHh0dW0yNWUyYmprN2Zscm95Y1dSb3BWN0xxYlhCN1FlWU5laXJhTFJtRkxhc3hPSmJiNkE4YWRwMjNCWEgzeU9jWktJc2Zmd29IU1JZMUNxelhZTXJrQUE4RGM4ZUZWMnRzcG0yYXB1bHVvaU1XZUo0cmVLOFBWc0VHMmJianZCdGtFZ21lU2F3a2trQ2xSNnFsZ3FqVWUzajVyVjIydTErWHhubTVhK3YxOEk1UEE4T051a202Z1hjQ3Y4eHRpbWNueXpFRllGSG43d2h2UXA4bGJielU2YWVMRzJwbS9nNmE2VHcyeGRtZ2pZV0pGeUtwVm8wNzlZSHBLYVBjSWVwTWFPOEVxckJuRlI3THFiUnlONW1IcVg1Q3c4dFdteDFlSFRLQnU5UGoxTmJkS2RVNTNUZTZMbTR3RXNiRFRrWXpFaFpFdmZtT1RBOFZiczlGd1pldG94cVZ4S05wNmswbk1ONWJUNC85R3k0eWUrcms0c3dYMTFhUHZCcUE1QmtKdjZTQjhGVnR0amVPWEZPamQxN1hrZFdmV0V3amd5WTNUZU5LY3VWU296TWdLcXgzNGFsUzdGemIrTlllbmxYVFMyRTV6WnBxYnVNZkMwZ0JsWm1WWWE4akt5SDg3dThqbjRTek1UVm53aUVIbTZKOE10bGJEWER4QVF5N2RCM2NrZzRnelNNWlpiRWNDRmR5b1BhQlZEcjZuWGVaVytqVHByRUtIMWkvM093UCtZUi9xSnFrYkR6ejRPRzg4c2VMUjNTbTc0MjBkUVltNDVLTzhFQmZ2RmpzWHM4Yko2dW9nZmZlV3JMV3AxVm1JUWRLM1RhSmJpMnJ4ODZUd01PUEdHRG55QkJiVVVoRi93RGExWGYyKy9mQ2Q5OHIzU2JsOVkvYWxnUDBidE04azVIcW5KZEkwQjh2cUdRbjdGWnI2ZlBiTFcyOGpzaHB2cVhxWGR1bzkybDNUZEplOHlaTEtxcUxJaUQyVVJlTmxIL2JqVmpwNmNVakVJZDd6YWN5MkY0YWRKNU1NV3FWQ003Y2dtcExjWXNVRVNBTitGS3dWcmRpZ2VYaFc3M1g2cDZZN0U3YTZXSTZwN1cvOExHWEd4WTRWRmdpZ1ZBUzNKM2lSKy9lK2YzcDZ2dHY5bkhncU5ienkycjROQURhTm90MmpKSjlQZk1QNEtyTjc5cEtmdGZJM0hVUklhQytzZGpaSTN2YWNwdjdNK084U0hzRG80WnZzT0t0ZlQ1anBtRmZ2STR3eEh3MjN2YThIUHljTGNwRmdnemhGcHlYNEtyeE1TRmMvZXF3WThlVjdYNGNSMDNtbE42OE94cHR0U0t6eDdXLzV1dE9oTmwydGNpYmNzUlZWYnJIRklrc2o5bnFKR1dadmdxcnJvWG1jUkNmYldyRVp5NXU2NjZwYnFqcWJMM2Z1ekRETHBUSGhKdVZpUWFWdjV6elBuTlhXanBkRlloVjZ1cDFXeXp2d1ZrWDNPVmUxTStNdCtQRTJuK1FhZ2VvUnhoTDJmS1hRSyt5UFJWZW11ZFByQWJEN2wxVkJ1aUxhTGM0Yk9mTExCWkcvd0JtVXEzMk44MHgzSzNkMHhiUGUxZ3p1d1VNeElVV1VFM3NMM3NQanFhaXVsUERuWnZkV3g4Vmx0OUhZMFdPNDhrdHRjMysyZDZvTmEvVmVaWEdsWHByRU5SK00remZSblgyYXlyb2l6MVRMakEvREdsejhNaU1hdHRuZnEwNDlpdTNOY1hZZGhZdVZ1TzR3WWtWNU1yTWxTS081dVdlUmdvdWZTYWtUTVJHWEdJek9IVHZRVzI0NnlTelFpK05BcVkyS1QrYWdVUm9maFZibXZQV3RtWmxkVmpFWVpnMk1VWXZqdDNiSG12TkQ2Ujl5dFdVb1ptY3Nqcm9rUzJvY3h4NUVHZ3NlcHQ3VFkrbnR4M2hvKytHREE4NGl2cDFsUmRWdnh0YzhMMXoxZFRvck51NU05UDJrN2pYcHBST091MFJsZ0hTZjFnK2tOMVZJZDREYk5tbmdUSmVUSFkrYVZSZGZ4MUhwcUZvK3BVdDV2aGw2YjFMOEZiclJtWjB2NXRQWnd0OVg2cG53Ykh3TjQybmNJeEpnWnNHWEd3dUhnbFNRRWVsU2FuMXZXM0tjdkthMjExZEtjWHJhcysySmo5S3JsWnVIaVJtWEtuang0aHplVjFSUjhMRUNzemFJNXROUFN2ZWNWaWJUN09MVm5pTjQ3N0h0V0hOZ2ROenB1TzdTS1VHVkg2MlBCZmhxMThwRy9paGVIbFBZYTdkZW9WckdLY2JQWitoL2cvVzFyeGZjUjh2U2pzbnpXK2pzanZ6eGM0d3c1bWZtSkRDajVPWmt5QlVRWGVTU1J6OFpKSnFoaUptZmErcjN2VFRwTXppdGF4OUVSRHJqdzQ2SS9aWHBQRTIvWHAzQnY1L09jSFVwbmtBMUw1Q0ZBQ2crYXZUN1hRK1hTSzl2YStGZXY4QXFuMzNkVzFJOG5LdjhNZnI1L1N5T1U1VWdFVFJrSHRaVFpHSG5QdGZCVWxUS2tPRWlXTCt1eSt5TFdWZlF0QmNVQ2dIa2FDejdQMEZCZVVDZ1VDZ1VHdHZFbndyMjdxR1Q2UWpMWTJlRjBuSWlVUHFBNUNSTHJxdDJFRzQ4L0FWSzBOMU9udzV3ajYyM2kvSHRhanl2Q1hxQ0dRcW1YaHlLTzB2SkdSNlJKR24yTDFPamZVOXFKTzB1cllQaFRQM3FuTzNHSjQrMkxDam1sbEo4bDVVaGpBUGwxSDBWcGZmMXh3aHZYWnoyeTJwMFowREZqSkVveHpqWU1KMXBFeDFPNy94NVdzdXBqNkFCMkFWWGF1cmE4NWxOMDlPS3hpR3lrUlVRS29zQUxBVnpicmJjOXV4dHd4Sk1iSWpXU0tSU3JvNERLUVJZZ2c4Q0RXWW1Zbk1NVEdXa2VxdkE3SFNkNXRybmZEUmlTSVpGYWFFZkpkU1pGSG1LdDZhc05QZnpIbWhEdnM0L1psaDgzaFR2OGJXWEx3cEIvR0VraWZZa2pRL1lydkcrMC9hNHp0THA0L2hWdVJZSEozTEZqVDc0UWllYVQwQlJHcUg4c0NzVzM5T3lKWmphVzdXY2RKZUdrV0pLRGhReVBPUVErNVpLaEpBckN6Q0tOU3l4M0hBblV6ZWUzQ29XdHVyWDRjb1N0TGIxcHg1eTI3c216NCsxNGl3eERpQjZ4OHBxS2tNWDhYT2xaZXBPbm9NU1BJR01ZTWxjaG5LTkpjTEc2V0FYNWRTTnRyUnAyekxqcjZYWEdHbmY4SVp2K0tEL3dCdEw5MnB2OXdyM0l2M09lOC93aG0vNG9QL0FHMHYzYWYzQ3ZjZmM1NzBvL0NFNmgzbTV2bzdlNnhIWnZnRHZHUCs5V0o5UWp1WmpaejNzcTZiOExjYkdtU1RHdzNteVZOMXpjMngwSHl4d3I2aW56dHI4b3RVYlYzbDdjT1VPK250cTE0ODIxT24rbTROc1F1eE1tVEp4a2xiaVNUekpKcUlrUGFvTkI5YitGV1JtZFQ3aG5uY1ZqR1hNMHF4aUNSOUlic0pCdFZqcGIySzFpTWNrSysxbTFwbkxMZkRuWTVOcFhBd0E3VGpGV1hYTjNiUmdtU1F1QUEzSGdEVVRYMWV1MlVqUjAraXVHejY0dXJIZXVPa2R2Nm4yWnNITVF0cE91SjBOblJ3TEJsSkI0OGJjYTY2V3JOSnpEbnFhY1hqRXRDYm40Tzd6alNrWTJianl4SDJCTUpJSkxmaERTOGZ4U0dyS3UvcFBQTUlWdHBic051OEtaVE12MGhuTEl0LzdQZ3E3dTNtTWtxUm9ucEdyMFZyZmYxL1pobXV6bnRsbFcvZUU2NXV5WVhjSkh0Uncya0EweE5JenhTQmJDUmg2ek1yS1RjL3h1d1dGY05MZXpFek51T1hYVTJzVEVZNFB2UTNTV1IwM2taSk9ZY21MSUViTEVzRWlFU3hONmpYYmg3RHVQaHJYYzdtdXBFY09UYlEwSnBQTnU3R2N2QWpFV0pBNFZEU1dHK0szUmk5VDdESEFzb3g1OGFZVFJ6RkMvRFNWWmJEallodnNDcEczMS9sMnk0NjJsMXhocVRiZkNoY2JjY1dmS3p1L3dBYUdaSko0RnhwQVpFUmdXUUVtdzFBV3FYYmZ4TVRpRWF1em5QR1c3dWk4T2FMQmZJeUFSUGtPMGtsK2QyTnpWWW5zVjhZZWdQMmpmQnpZc2hjV1hGRWlTTVkya0xxNVVxUFYvaWtINDZsN2JjL0x6bEgxOURyeGhnM1RuaHcrejdySHVKeXpseXdLL3U4S3dPbjg2NkZGWXN4c05HclY2UlhYVzNzV3JNUkRucGJXYTJ6TXQ0ZE03ZjdsdE1NUkZtdGR2VFZlbVBXb0tFWDlybjlDZncwRnQxRHMwTzk3Rm43Uk01amp6b0pJR2tVWEs2MUlEQWR1azhhMDFhZGRacjNwV3kzVTdmV3BxeEdacGFKK3B6RjFINEc5ZjdQSTVnd3ZwWEZXK21mQ090aU95OFJ0SmYwS2ZUWG50WDAvVnJ5ak1leDlnMlA0djJPdkVadDh1M2RiaCtmbCtkaFdWc3U4WWpGY3ZBeU1kbDVpV0owSS9LQXFKT25hT2NTOUJwN3JTdjViMXQ0VEVxRVdObDVEV2hpa2xZOExJcFkvWXJFUk11bHRTdGVjeERMZW52Q0xyL2ZKVUVHMVM0a0RjVGs1b09QR0I1ZlhHdHZ4Vk5TZFBaYXQrekhpcE43K0p0anQ0NDZrV251cjhVL200ZlhNTjgrRy9nNXN2U0JYUHlIRzRiNVlqM29pMGNRWVdJaFEvRnFQSDBjcXVkcnNhNlhHZU5uelgxNzhVYTIrK0N2d2FQZDJ6L0ZQdTVlTFlkVG5saWdVQ2dVQThqUVdmWitnb0x5Z1VDZ1VDZ1d2UVc4dTM0Y3Z0eEtUNktCSHQyRkg3RUtpM21vTGdBQVdBc0tCUUtENHlxd3N3Qkhub0xlVGJNR1Qyb1ZQd0NnK0p0ZUFuc3dxUGdvTGxVUkJaVkFIbW9QdEI4WkZZV1lYSGtOQkQzWEgvTnI4VkE5MXgvemEvRlFQZHNmODJ2eFVFd3Fqa0FLRDdRS0NEUVFzYnNnSjg0b0NReElicWdCOHdvSjBBOHFDMkdKanl3cDNrYXQ2bzVpZyt4YmZoeEc2UktENktDdTBhTU5KVUVlU2doN3RqL20xK0tncUFBQ3c0Q2dGUXdzUmNlU2dwKzY0LzV0ZmlvSnFxcUxLTER5VUJrUnhaZ0NQUFFROTJ4L3phL0ZRVkFBT0FvRkJRaS90Yy9vVCtHZ3IwQ2dVQ2dVQ2dVQ2dVQ2dVQThqUVdmWitnb0x5Z1VDZ1VDZzhUTDYxNlp4TTFzUEl5eWtrWjB5eWlHWm9JeVBhRW1RcUdGTlAzMnB4cDdhNlJwV244dmMwblVoN1RTSXFHUm1DeHFOUmNtd0FIRzkvSlhOdXROdTNyWjl6aWVYYmMvSHpZb2pwa2t4NVVsVlRhOW1LRmdPRmJXcE5lY1lheGFKNVMrWUcrYkx1RVVzMkJ1R05sd3djSnBJSm81VlN3djZ4UWtEaDVhV3BNYzRJdEU4cFZzYmNNREt4Qm1ZMlRGUGlNQ3k1RWJxOFpVY3lIVWxiVmlZbUp3ekV4UEZTMjNlZG8zU041TnN6c2ZPampPbDN4cFVtVld0ZXhLRnJHczJwTmVjWUl0RThueVBlOW1rM0Y5c2p6OGQ5eWpGNU1KWlVNNmdBRzVqQjFqZ1IyVTZKeG5IQmpxak9NOFZ4bFplTGlZNzVHVk1tUGp4aThrMHJCRVVYdHhaaUFLeEVUUEptWndzWitwdGpnelh3cGNvTGxKTEJqdEhwYzJseXdUQXR3TGV2cFA4TmJScHpNWlltOFp3dm9NdkZ5REtNZVpKakE1aW1FYkJ0RWlnRW8xandZWEhBMXJNVERNU3ExaGtvRkFvS0dkbjRPQmpQbFoyUkZpWXlXMXp6dXNjYTNOaGRtSUF1VFdZck16aUdKbUk1dnVGbllXZGpKbFlXUkhsWTBsKzduaGRaSTJzYkd6S1NEeEZKaVluRWtURThsYXNNbEFvRkJDYklnaENHYVJZZzdMR2hkZ3VwMk5sVVg1a25rS3pFWk1vcGw0c21STGpSekkrUkFGTThLc0M2QndTaGRRYnJxdHd2VEVzWlNpV1JWQ3Rhd0ZoYTlZWlRvRkFvRkFvRkFvRkFvRkFvUGdSUXhZRDFtdGMrVzNLZyswQ2dVQ2dVQ2dVQ2dVQ2dVRVgxMnNsdlBlZ3ArN255LzBlaWdyVUNnVUNnaklIYU5namFYSUlWclhzYmNEYWcxTGg1a09MdWtPSm1acGc3cUxHUTdlbWJrWStTczBWeGtJbUJESE1tV1pYRndXOW9HeW5od21ZekU0ajZjZS9zUnM0bi9IM2RyUE5xT0hoZEp1ZDFWSXR0Z2lrTXNjb0RvbU9BU1VZRFVHVlI2b3RjVzVWSG5NMjRjM2FNUlhpd0NLYkIzN0U2czNYWTJnajc3Ykd4Y1hhc1Y0ek8wTWR5WkpJb3pxRE5xSUhwdHpxUkZacE5ZbmxFODNITVdpMHgyd3VjR2JwS2ZlOFNkSmNNN0lOcGloM1BJTEl1UDNnWXVxeVNHeWlSSEtIaTJwU1Y1RzFhVFcwUkVjZXJNdG9tc3puc3dzc1BLU2Z3YnpJOXV5RWZ1TWhQZkJDeXUwY0h2Q3RJV0ExV0hkM0p1T1YreXVrMW1OWGpIaDlUU0p6cDhHVmVIZTVPK2J1TzJyUER1T0hqYURoYnJDa1NpUk5LNjQ5Y0tSeHlCSEpBWURuZnRGY05Xc1JqaGllNTEwN1p6eHpEeU1mTTI3WnVxTzQyeWJCM2lMY2MrYVQzTmtIMGxnWlVnYlU3ZmZDSVBkZlhWVDYzdGVYcGFzelhNeGpoejdKYVJPSnhISDNQTFhjNUg2RTNEY2YyZ3ljbmZKY2JWdU8zdE16aUNUM2hGTjRpVzkyYTl3RkdrRVhzQ0J3MzZmanhNUjA1NGZsMnRlcjRjNTQvbDlTL3dDb1AzNHpQK2I5UC95WmExcDVQb3N6YnpmVER5ZW9lcE16R3pzNkhKek15SEJPNmJtdXJGeWx3Mzd5T1BIRUM5ODhrSTBxWGE2WFBEalk4SzNwVE1SakdjUjJaNy9aTFcxK1BIMjl1RlhlTS9xSEdUWjhESjNNcGpIYTQ1MHpKTjNiQUUyVEk1N3h2ZWlINy9TTk5rTGNBZUZZckVUbVlqam45MkovTjJNMm1ZeEV6d3gzNFhFcy9VMlRoYjl1T1Z2VTZaZXlZZUhsUXJoenQ3czh6WXl5TTFveXFTUnlGTGtFRmVQQzF6ZkhETVJFY0p6NDh6amlaenllempiaTJiMXBtZlNXOXo3ZGtZOHVKOUZiWkhLeXBOREpFck1mZHdkTXlsaSt0dEpLOXBBWGh6bUo2SXhIRHQvNjlqcEV4MVRtZUx4VTNucWVmckdVTnVFV05teGJvWUk4U2ZjKzRWc1VTQkFnMjFsMHlkNUY3TGc4U2JqalhUcGpwNVRNWTd2ZTU1bnE1OGM5L3VaVDFzMkZEMVQwM2s3eXlSN0RINzBKSlp6YUJNb292Y21VdDZpM1VPRko4NDdhNWFjVE5aaU9mdWRiemkwVFBKNSsvYmxzTW1kdGNHQnVrZTBkTTVzbVUyYnVXRkw3cEcrVkVpZDJ2dkNhRjRycXNkVm10MjJyYWxMUkU4TTIrdmg0TmJXak1jZmhlWmlaZTlidm05UDdTZDN6RXc1WnQxZ1hNaWxlS1hKeHNZeHRqeU82RldadFBKNzNQYmU3WDJuRVJNNGpQRC9GckdabUl6dzRxTXU5NVVlWnVFNjcva1B2bUR2UHV1QnM1bllMTmorOEtIQmd2cGtUUXordHA5VzNQZ0FNOVBEbDhQVHorZzZ1UFBqbFd5ZDd6RXlzN1BmZTVrNmx4ZDE5M3g5Z1dkaEcrS0oxUUE0aE9sa2FCdFhlYWZQZlZXT25oeStESFA4QXg4VHE5dnhaL0xoNEtnejl3ZzJ2cWJmY3JjODUxZzNMSjI2R0JjaDQ0b29teVZVRXQ2NGlWZFZ1OFZkYXJleDVBTVp0RVJqbG5sN1B5NE01eEV6UGY3M2pKbVQ3bDA3T054M0RJanhOcjN2REVlWDlJU3poSUp6R1dac3NkMTNpcVRxUnlQVjdEVytNVzRSeG12ZEg2R21jeHg1UmJ2OEFlOWZlOTF6c2Zmcy9FRzZTUWJPOCswd1ptNUNVcVk4ZVRIbU92dmxJS0NTUlZ1NFljK2ZHdEsxK0dPSHhjVzFyY2VmRGcrTnVXNHlRL1JXM2IxazVHMkhlc1hGd3QyRXpTU3lRWkVER2FQdndkVWlySmV6YXIrUWl3c3hqak1SbnA5L2N6ejVUd3l6RG9oOHVHVGV0cW55cHN5UGJjN3VzYWZKZHBaZTdraGpsMHM3RXMybG5Ocm11T3IyVDN3NmFmYkh0WlJYSjBLQlFLQlFLQlFLQmVnVUNnVUNnVUNnVUNnVUNnVUNnVUNnVUNnVUNnVUNnc2NyNkc3NXZlZTU3Mnc3elZhOXV6WDV2VFFYYmQxM1IxYWU1MDhiMjA2YmZGYWc4emJmMlQ5NUgwWjdqN3pZMjkyN3JYcDdmWTQyb0pZMzdOV3l2ZHZkTk9sdmZOSGQyMGNkV3UzM3ZPOStIT2diZCt5Lzg5OUcrNWV6L0FPWTkzN3IyUHc5SFo2YUNwdEgwRjNjbjBUN3ZvdU85OTMwOC92ZFduemNxQ25GK3pmMHEzZGU2L1NkenEwNk85MVc5Yno2cmM2Q0ovWmIzakt2N3A3eHBiM3o1dlZiNzdYL0RRWFUzMFQzN2Q3M1BmNm9kV3JUcTFhajNOL1BlK21neFhxZmJlbTgzZm9CSHV5N1Z2S1J5Nm1FVU1xT2hLYTlZeUk1SWc0T255TmJ6VjFyYVlyeXpHWE8wUk04OFN2TmhpNk5pNlgyNk9PZUxJMjFlOEdKUGtqU3pOcmJ2Q29rQ3NQV3YyVnJxWjZ1UE50VEdPRDNFK2h1NW0wZHgzUGNKMytuVHA3alNkR3EzRFJwdmJ6Vm8yVTh2OW5mZXNiM3IzWDNtdzkxN3pScXRmMWROK3kvS2crWkg3Ty9TU2U4ZTdmU04xMGE5SGVhdnZPZkcvd0RGK3hRWGU0ZlIvdWovQUVoM1h1bkR2Ty8wNlBOZlZ3b0xCZjJWK2l4cDkwK2pkZkMzZDkzM24rZjltZ3VzZjZIMFludS9jZDNkdmN1NzAydnBPcnU3ZmczdmFnOExZWU9qNHMvTzduSmh5TTZUY1ozUGZxRmxqeUNScmpUVUZKQ3Q3SkZiM3p3ejNOYVk3SHNUL3M5OUpyMy9BTHI5SlhYVHIwZDdmNzNueHY1SzBiSzhuMFQzR1gzbmM5eHFQdnVyVG8xYVJmdkw4TDZiYzZDMGkvWmYzREk3cjNYM0xTUGV0T2pSYnMxLzVhQ3FmMmY5Mmx2N3Q3dDNVZmZYMGFPNjQ5MXF2dzA4OU42QmkvUUh1aWU3ZTcrNjk2dWpSbzA5OWNhZVgzOTdlZWd2SWZkTytuN3JSMzJwZmVOTnRXclNOT3UzNE5yWG9LdEFvRkFvRkFvRkFvTFM2NnJJQUpkVFhJdGUzR2dsL1BXc3VybUxFK2czNStlZ3FZK3IxNzZyWEduVno1Y2FDclFLQlFLQlFLQlFLQlFLQlFLQlFmL1onLFxyXG4naW1nL2tleS5naWYnOidSMGxHT0RsaEVBQVFBTlUvQU5HM2hmVFpWL0xUUE56RWsvTFdSZVMwVHZqcHZOeVVNZnZ4dlBqbmpPN0hLZnoxclBiaGY4MmpYZnJzclBIT091L0xNOGFiVmRlREsvZmxnZi8vL3MrVFFQYmhnOVo5S2ZiZml2Nzg4Zno0M3Z2dmhkYXdhL3oxenZqcGxPdk1pOWFoU3ZiZmFlWFFvdU9yUVBYYlRQbnJudENaUTkraE9jdVBQY3lSUC9mcnhQNzg3dlRZUXZEU0tPckViK3JGZHYzNHdmZmtaY0tVVC92MHh2Zm1uL3J1c1B6em9QejMxZm5zb2ZUVk9QZmloZWU4Wi9ma2Z1L1JrZU93UlAvLy95SDVCQUVBQUQ4QUxBQUFBQUFRQUJBQUFBYVN3Sjl3S096NWZEMmlzdWpUYUpETG9iRlRRbEI4bitnMGdUdFNUcHhsTThIekdIeWoxU0ZNOUNGNHZJa0hnU0hCRGtyZmpReWZFQjRMRjBRVVBTNFRBZ0VoQVJBYkZ4Rk1QaThPT1NReEQ0d1NqMEkrR1c4dE9SWWpOZ3NTRFpBT0pBb0NHQlV5RjZWRG5EVXNDaXc2RlFCUkJRZ0NDaVMzdVZFK013UWtGaWpCVVRzcUREUXBBMUZESWlBbUZkRFJRa0VBT3c9PScsXHJcbidpbWcvbGFzc28uZ2lmJzonUjBsR09EbGhGQUFVQU9aTUFHZG5aNWVYbDR1TGkzZDNkNU9UazVpWW1NN096b0tDZ2xwYVdsdGJXMnBxYWw1ZVhvV0ZoWm1abVZWVlZiS3lzb2VIaDR5TWpJT0RnM3A2ZW9hR2hwYVdsdGZYMTZxcXF0M2QzWldWbGMzTnpYMTlmY2ZIeDhIQndYWjJkcVNrcE5iVzF1N3U3bWxwYVd4c2JFNU9UdERRMElDQWdMT3pzNktpb250N2UyTmpZMTFkWFpTVWxHVmxaWWlJaUh4OGZJK1BqNG1KaVdKaVlweWNuTFcxdGFHaG9adWJtNzYrdmxCUVVMdTd1MmhvYUZOVFU0U0VoSEp5Y29xS2lwNmVublYxZFhSMGRHUmtaTXJLeW5OemM5SFIwZG5aMlhoNGVOWFYxZXZyNjZpb3FEYzNOLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRXdBTEFBQUFBQVVBQlFBQUFlZ2dFeUNnNFNGaG9lSWlVeEdMQUFUSkFRR2lvSVVCQzREU2hJSERBY2RpUTBSTWtNWWdrVUNLUVFhaHhZS0ZVbUdFQkpFaHpjcklJZ2lIcEtGTXdDSkZ3Z0ZoalFJRDRnbkk4YUdDRUNJQ3draGh4VUNBb1lHRXdPSkVDckNneVVBQ1VpSkNrSS9NWUlCQVF3QmloUTlEajROSmtjTE9aTXdHUzhER3drUkZwTUhlT0RRc1NSSWpVbE1BamdvSUFCQWl4MGZFRExoTUFpRkRZa1lNeUlLQkFBNycsXHJcbidpbWcvbWF0cml4LmdpZic6J1IwbEdPRGxoRkFBVUFLSUVBTDYrdnIrL3YzOS9mLy8vLy8vLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFVQUJRQUFBTkNTTHJjL2pES1NaMjRPR2VyKzIxQkNJZ2t1VnpBb0s3c0NweEMwTTVxQUtkMGF5dVhuTE03UXU4SGhQbUlnK0FRT1hqeEJJQ1JkQm9LakNyWXJIYkxqU1FBQURzPScsXHJcbidpbWcvbWVyZ2VwbGF0ZS5naWYnOidSMGxHT0RsaEZBQVVBT1pyQUs3Q3dKVzFzb3l2cktuQXZvcXRxcVMrdkpLeXI1dTR0cHEzdGEzTmxLckxrZGpWMWJqSnlMbkt5Ym14c2NiQXdFYVBKcnJMeW1LZE44Uyt2cGEyczlmVDA2cWZuOHJFeEk2NmI5clgxMmFsU0Y2Zk9vbTRhMmVoTTJ1ak4yR2RMLzM5L255dlZZaTFYK0hmMzRXMlpvQ3pZWVcyYXJXcnE0SzFaNEd6V3MzSXlLNmpvMWVXTDF1YktaQzhkTUM0dU03SXlMaXZyN0NtcFpiSmtrMlNRSkt6cmFIR2l0YlQwNkhIaXNTOXZhakxrTWZBd0t5aG9hYWJtNWJCZ0xLbnAxK2hRM1NyVDh2RnhXZWhPSGVxU0Z5Z1BKN0ZpT1RqNHp5TEVLbktrTkRMeTFLWEluaWxUUjU3QTNHbFBiTEd4TGV0clpmQ2dqcU1IeTJDQlRlSkcyT2ZNYk9xcWp1TEk5RFJ5NSs2dU4zaTJyYXRyWmpDZ3lxQ0NtaWxSa1NQRnJET2xtS2pScVBBdWNmQndjckd4cVhJalVxUkhKUzBzYUc3dVpDd3JZbXNxZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFHc0FMQUFBQUFBVUFCUUFBQWZYZ0d1Q2c0U0Zob2RMTFZVZVJJZU9aa2tKWUU2T2gxOWxHQWtkbFlaSU5od0tIek1nbkd0ZFV4dEdKRG9oUXlLSFB6RXdQVTFBUGlZbExnb3BUQmFHTHhNVlcxcFVZVkVvT0VFU1pBNkdLa29qT1VkWVVocGNYaXdaQzJPR1BGWnFhZ0ZxWWxkRkVHa1U0QVJxaERjTDRHaHFhRFUwV2ZMaEJ1eURNbEFCQ0FCcUdLUXBNQ0NnZ0FFRkJCRGFJUVFjdURRTzFVQjBTT2pCaFFNSEdoQm9nS0RBRXdFUjBnQUFrSWJRaWhQZzhrMWNsNDlpSVlueEFDS0lWeENOT0VOcHpoUUVRT0JBVEhueEREMVVJeURpUkhDbGtpbzFGQWdBT3c9PScsXHJcbidpbWcvbWludXMuZ2lmJzonUjBsR09EbGhFQUFRQUtFQ0FBQUFBSUNBZ1AvLy8vLy8veUgrR2tOeVpXRjBaV1FnZDJsMGFDQkhTVTFRSUc5dUlHRWdUV0ZqQUNINUJBRUtBQU1BTEFBQUFBQVFBQkFBQUFJam5JK3B5NzBCWTN5aVdoSG9yVm1GelZIQU9HTGExaVVmbUNJcitraVNROWYydlJRQU93PT0nLFxyXG4naW1nL21vdmVkb3duLmdpZic6J1IwbEdPRGxoRUFBUUFNUVhBTm43QUc3Z0FDekdBYTd4QU96L0FCKy9BUlRRQUpic0FEck5BVS9kQUV2VEFGelpBSGJtQUR2WkFDalZBR1BoQUlMbUFGM0tUYkx5QU1YM0FKM3VBSXJxQUJpekFmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJjQUxBQUFBQUFRQUJBQUFBVlo0Q1dPWkdsYWFHcVNsbEVVaHJXT2xpTUlqanhmVm9NZ0RkM01rbEFvRXNLVjViRllQSktpU01yQ0NBUVkwNGpJVXVsMklSQnZWMmlobUNtSHc1a0N0VWplZzhGYkF0MU83dmc2RGNBSDZGa0VCSDhsS0R1R0pDRUFPdz09JyxcclxuJ2ltZy9tb3ZldXAuZ2lmJzonUjBsR09EbGhFQUFRQU1RWEFObjdBRzdnQUN6R0FhN3hBT3ovQUIrL0FSVFFBSmJzQURyTkFVL2RBRXZUQUZ6WkFIYm1BRHZaQUNqVkFHUGhBSUxtQUYzS1RiTHlBTVgzQUozdUFJcnFBQml6QWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQmNBTEFBQUFBQVFBQkFBQUFWWTRDV09aR21LbG5XYUZrR29Ld3JNQUh4YVU2N2JwQ1g5ZzhGUHdydFlLRWpLNFpDazJDeVZhQlFDa1VaaGtWU0tFUWd3dEpZSTY3RllQSW9sUzBLaFNLQjdEUVNpOFI1WkhBS0JvNDR5RkFvR2ZFWmdnakVpSVFBNycsXHJcbidpbWcvbW92ZXZpZXcuZ2lmJzonUjBsR09EbGhFQUFRQU5Vc0FCMGRIVUJBUUNjbkp6czdPeDRlSGdrSkNRd01EQW9LQ2lNakl5UWtKQzR1TGdVRkJVWkdSamc0T0Nnb0tGVlZWUmdZR0NVbEpWbFpXUXNMQ3prNU9XQmdZR05qWXdZR0JwT1Rrd0VCQVJvYUdnSUNBZ2dJQ0UxTlRaYVdsbHRiVzBoSVNCd2NIS0dob1I4Zkh4c2JHMHhNVEo2ZW5nNE9EZzhQRHo4L1B5SWlJZ0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDd0FMQUFBQUFBUUFCQUFBQVpzUUpad3lNb1FqOGZUcW9CRUZpQVR6YUk1TkRWWUsxWUFReVZtdXduSjhNdXFqSWdCanBkb0dBaFRxOGlEVVJxc0doM0dRN0Npc1Bna0Nna0NCQ3NBRGdnS0lTc3FRZzRRYTBNQUNFUW9IMk5ERmdkZFdKeENJZ0dkSUI2Y0N3QUdCQnVlTEFjckY2dENaRWRCQURzPScsXHJcbidpbWcvbjJzLmdpZic6J1IwbEdPRGxoRkFBVUFOVS9BQ0xHRy92OCsybmZFaHZJSExybHJGWE1GdXI2NVV6SkZMVGpyTm4weW5YcVRtVFdGVWpTR1dqZUNsWFJGbDdVRm1YYUZtTFVHeW05R1NMU0hpTzFHTDd0bTNPc2RNRHdteVMyRTBIQ0VXamNURi9PVEVuR0VEcStFUzY1RWorYVF1am82REsvR0RuQ0dFSEdHS2kvcUwvb3EwR3pQaEsvRXh5OEdkM3AzUER3OEw3SXZycm90clRxbHp2SkdJN2ZZekxBR0czUUtvamtRUEg3Nm9uZ1RzZnJzdG56MWQ3MDBaUGhZeGU1R05qNDEydmZGMVBXR0NTNEdmLy8vd0FBQUNINUJBRUFBRDhBTEFBQUFBQVVBQlFBQUFhdXdKOXdTQ3dhajBqa1JkWm9PcHV5eTdHeUVPeXUyS3RnVVRIR0lJc3diVGFqaFJlUW1MSHdhRDl3UGg4dUVta1hqQWVISTlGNnhWOHRCbm9IUmh3RkRuRUppWEU4QlJ4R0dRY01DZ1p4Y1FZS0RBY1pSaDBqSTVPV1BwbWZIVVllSXFrdUdnWUdHaTZwSWg2bkliVWhNQnNiTUxZaHMwVVlFaEkyb25FMndSaEdGRDBTT3NRK09nQTlGRVltT1NnQUU5bmFBQ2c1SmtjNUp3UGo1T01uT1VrV0grdnM2eFpKOFBIeTgvQkJBRHM9JyxcclxuJ2ltZy9uYW1lMnMuZ2lmJzonUjBsR09EbGhQQUE4QUxNSkFDaDVBRmVzSjE2dkxuTENPWUxPUTZib1o2SHdZTVR2b2Q3NHRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBa0FMQUFBQUFBOEFEd0FBQVQvTU1sSnE3MDQ2ODI3LzJBb2ptUnBubWlxcm14YkVVQXN6N1JNdUJrczdIenY4NEFiemdMNEdZMkFJVkZBUURpZkIwUjBhaWdVZGtrbHBkZzBlTDlnOEZXUTFVcTRpTEQ2T3k2YnVldDQyendwQmdiNHZINC93TkxQUjRGQWZ3bHdjV3B6ZjRhSFluNktUSXhoaVhTTGtWNk9sQUozZkp4NG1HK0NnbTVhbFpHVG9BU1diSitra0twVnJFcWxqS2V0cWErMXNxNnF1VU96aDcwNHYzS3hLREExdzJ0dE5VSWtPa2UzdklGQkpYWUIxOWpYMFpZRjJkNWsxWnBQVGxNSHIxNEZWZXJwQk9Ba1JRSURDT25ucXUzdUk4L3k5UFdIOTlRbDlLWHBGK2RmczREdzVCRlVZMUNGd0lWZkdxNFF5SytlUkJZVSsxMXNvYy9jdVkwdVJoN2F3M0p3U0VkTElKV2M5RWVTa0FSOUZjR2twQU9UWVV1WEZHcEd2SWt6WjBKNk0zdkNETm96d1RNZ0pZdStnRWNtcWRLbE1adytmVUZBNnRTcldMTnEzY3AxYWdRQU93PT0nLFxyXG4naW1nL25ldy5naWYnOidSMGxHT0RsaEZBQVVBTVFBQVBiMjl2WDE5ZC9mMy9mMzkvMzkvZkx5OHZQejgrcnE2dkh4OGUvdjcrTGk0c3ZMeS9UMDlNUER3K25wNmV2cjYrenM3T1BqNCtmbjU4WEZ4ZWJtNXZEdzhPM3Q3Y0xDd3ZqNCtQcjYrdm41K2Z2Nys4bkp5Y3pNelB6OC9QLy8veUg1QkFFQUFCOEFMQUFBQUFBVUFCUUFBQVdMNENlT1pHbWU2QmwxWE91MkFvRjIyT2JkT0hiRko3Y3hnU0FpNGZCSUdyd1N4elBRREFhR3lzRURZRXdFcHFWbU93QVVIamdQSit1eGxURUJCT1JBRVpQREczUWhZWEVydzdjNHdGQ3drNVo0SGhrYUFBQitJNEI0RzFzWWh5S0paUnNiR1JrWWpXTjNPSktVbkk0ZmtKR1NrcDZnZ1o0TEdxWTRHaDBtQ2dzdnNSd2RDaW0ydDdnZklRQTcnLFxyXG4naW1nL29jdGFuZS5naWYnOidSMGxHT0RsaEZBQVVBT1pFQUJVVkZmajQrTGEydG9XRmhmLy8veVVsSlFzTEN3Y0hCMHRMU3dZR0JoRVJFVEV4TVRJeU1oTVRFMXBhV2wxZFhZZUhoNG1KaVkyTmpZK1BqNU9UazZlbnA2YW1wcXFxcXNEQXdJcUtpbUJnWUt1cnExTlRVeW9xS3BTVWxLbXBxY1BEdy9mMzkxVlZWU0FnSUpLU2tsQlFVSXlNakE0T0RsbFpXVnhjWElpSWlJNk9qbDVlWGxGUlVUQXdNTVRFeEZaV1ZzSEJ3U2dvS0JJU0VnSUNBaUVoSWY3Ky9qWTJOcEdSa1ZSVVZGaFlXRnRiV3dNREE0YUdobEpTVXZMeTh1dnI2eDBkSGRyYTJnQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFUUFMQUFBQUFBVUFCUUFBQWVnZ0VTQ2dqWkFob2NCZzRxS0FpZERqNUE4UFl1TUJnVVNKaGtSS2hBSVF3T1VSQUtXUUpRRUhKK0xvd1dsb1FRdHFZS3JyYUZFQkNXeEhTTzB0YllJTkQ5RVFUNjlpeDVEUXNJNXhZb1V5TUlpeklNa3owRXcwb0k0MVRyWVJCUFZLTjByenpjS0dOSUJEQWVKUWtFS01jVUJDd2tXZysweklMWHlDUldMN1EwdktJVndjZUJEcUg4T2RxUjR3RUtEakFNWGVnbGhBS0NpeFJvYnVra0xCQUE3JyxcclxuJ2ltZy9vcGVuLmdpZic6J1IwbEdPRGxoRkFBVUFPZVFBQllTRGhnVERoNFpGQ2tpR3pVdUpVTTZMbEpJT1Z0S0lWdExJbUZXUkdKZldXOWlUa3huazA5b2tYSmxVRTlwa0lCbkkxTnFqbFJyallGcEpYdHVWMTkwbEdCMGxaWnlINTkzRzRkNVlLbDhGWStBWnJTQ0Q0K0VkWGlKb1pLSGQ1T0lkNzZJQ0pTS2RaV0tlcFdMZWMyRkVKZU1lc2VNQkptT2VwaU9mWUdScG9LUnBwcVFmczJQQUoyUmZKeVJnTlNNRTRlVnFwdVVqSitVZ3ArVmc2R1ZmNk9aaHFPYWhxYWFnYVdjaUtlZWlhcWZnNmlnaTZ1aGlhcWhqYXVpanEramhxMmtpNnlrajY2a2l1V2dKTnVpTHJDbWpMT21pTENuanJHb2phbXFzTGVxaXRHcFZybXNpK21vS2V1cUx1eXNNZFN5YXU2d05QQ3pOOGU2alBLMk8vVzVQOU8rZnZlN1FmVzhRYmZBMDdqQno4N0NpZmUrUnZyQlNkN0VnT0RGZmNUR3p2ckVUUHpGUzgzSnZzL0p1L3pIVHY3SlVjYk4zY2ZOM1AvTFZmL05WUC9OV05yU29QL09YT3pTZWYvUFgvL1FYOUhTMnYvUll2L1RaZi9UYVB2VWNmL1VaKy9YZ2RqVzF2L1dhLy9ZY2YvWWROWGE1UEhjaWYvYWV2L2Nmdi9kZS83ZGdQM2VnZkxoa3YvZmdmL2doUC9palBQbW12M29tUDdvbVBicW9QdnJuL2J1cC9udXB2ZndxLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQVA4QUxBQUFBQUFVQUJRQUFBampBUDhKSEVpd29NR0RDQk1xWEZpd2p3b1BNYll3SEdoQmk4QVZhU29RekNPa1k4Y3lCdEZJZUVCUVNKdEhqeHd4OGtHbVlJUUdEQWorYUpTU1VTSTdPbXpNWUdFQ3hFRWVpMVFxK25PbnFGR2ZCbk1nWXFTb1NaTWxSNERzd0ZIREJRb1NTQVhlSUpUb0M1SkJoc0lhS2hTSWp4NG1NZ2pTOEhNb0NSVStSdU9zR1lPbGlBTTVCRi9nQVdORVVKMDdjOWlZNlZJRnlnUVJCVk84Q2NKbER4MDNaN3hZa2VLa0JJSXdCVWRjR1FJSWpob3hXYVk4SVFJRGdnS0RIM3BFYWNINlJBZ09HakJjT0tERVlJY05HU2dzU0dDZ0FJRUJBZ0FFbUVpOHVQR0RBUUVBT3c9PScsXHJcbidpbWcvcGFzdGUuZ2lmJzonUjBsR09EbGhGQUFXQU5VL0FPNjRKT2VuQmRyR2JYU0dudjM5L3BLSGRvU1dyV2xhU0ptb3ZlblhpSXQrWjFwdGhYTmtTNXQySVBqd3FhbWJka2hWWnVyVGQ1dUtYTmlhQUt5a2ovQzJFdlhzb2MyVUNydkcxL1BMVFBYWGFmYmlobE5HTzZTY2lQYnBuS3E0enZMamtucHJVZS94OTlQYzZOU2hFK0htNzJkNWtjMlBBSjZ1dzhiUTRFMWdlcksvMVBDekRuaGhOTS9HakVRNU1MS2FUMEpJVUp5UmdPbXZGVDQ5UDM5eldPcklhT3JSYmUvb3BmTEJNTU96aHIydGd1akRYNU9pdHpndkp2Ly8veUg1QkFFQUFEOEFMQUFBQUFBVUFCWUFBQWF2d0o5d1NDd2FqOGlrY3Nsc09vVzYzYU5KcVVwd25nU2p3RVZTSE9DSFJTRUl0WGlBdy9IcmtMaEFFUUhzMERpcGpXeEZMUlJpTU9nbkhFY2REaDRiTnlTSkZ4Y25KeStEaGhvWkxEMEdCZ01ESmd0SE1pQ1NPVE1HQktNaUpRc3FSaklKR1RrVkFhSW9LQWdqS2hnUVJRVVJBSzRUQXdTbEl5a1FFREUwUkFVMnJnRzlJckVJUFNzOVBUNUVDZ0NOalNZbHdSZ3JIeC9UUlFwL0x6NExJOUxwMHRSSkN6N3Y4UEJQOC9ST1FRQTcnLFxyXG4naW1nL3Bhc3RlY2hlbWRyYXcuZ2lmJzonUjBsR09EbGhGQUFVQVBjQUFQajE4UC8vLy83Ky90R21ZSkNOZ3NlZFd0NnhaK1NxWWFUVHVwR09nNDZOaDJHTlJvMk1oRitNU2lhV2JGK01SQ2lUVyt6eDdVZWJjUG44K2Z2OSt4MkhTU2FYV3Flam1PQ3haaXVLUnNHaWI0K1BpTXFnVzlTbVlYKzFvUG4yOFNhVFdjcXNkQ3VNVk5ycjZIU3hraUdMVXR2cDR5Q1FZdnY3L05HWlVkdkJvY0hnMVpDUGlYeVpWZWF2WTg3THc5YkRwZUNzWTdUVHpOdXdZSzdUeUpTVGpGbW1qaTZWVmpDVGFOL1V3ODJnVnc2RFZWV3FnNUhFb2t5cGMrejE4bzIvcmx5dGZQUDM4cUxJdmZYMTl2cjQ5TW1lV3BTSGI3M2UzTVNYVHVYWHdjTGUwZGZYMThtb2EwdWhibzYrb01XZVlEZVdjQ2FUVTlxdFk2T2dXcm5VeGVueTdtU1JUcDdBc1o3TnNvT2ZYY3lsYWR1dVo3eTZzWFN5aTNhMmxTeVVXM0d4aDh5aFcyR1BTOUdtWWR1dFp2QzBhZUdvWCs3dzh6YUlTZFdvWWRDbFh0cWhXZG5CbS9UNDk0MjhuU0dDUnNIZ3p0MnZaNkRPdWllVVpsZW9pRUNnZUt1c3FET2FaMWFFT3NmSHc4S1lWZWUzYnNDK3RieWViaXliZE9HMGFyaVNWVWllZGYzOCs0TzRtREtWWlA3OS9tNnFrcytwZE1XaWJKckh1N3E1c2RPbVgrV3labWFxZnMycmM5MmtYY1RCdWhxTFZzdkt4NTJkbHVIcjRIaXlrMitiYmZYNjhwRi9ZWHkxbS9UeThNL2QyTXJIdjg2aFd5cVRYZjc5L0NhVFpQUERlQmVDUkdxdmlGaWlkK3IxOE4ycFl0aXFZNi9WeHplVVlSK1FUOSt3WnVDd2FGNmxmS3JSeFBTOWRZYUZmZjc4L3YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFMTUFMQUFBQUFBVUFCUUFBQWpvQUdjSkhFaXdvTUdEQ0JNS3ZLT2d4Z1ltQ2dtaVlmR2lVeVE5RVdlMVNYU0VVcDh1aXk1bzJLSWtJU011bVJnUUlKQWdsaDlSanhKNjRpT0h6SUFCSFU2MWdvVW9vUmhBckRBME1qT2pSUm90SVJKeU1EREZSWk1yY0hnb2lsSmhDVUlqWldKUUdRVkJoaXhMcFlEc0NIS3dBS29ERCt3SUNSQ2dFaWtiVHlTVlZYTm16Qjg4UCtLTVdORWpsWlNEZTlaQVdtRGgweHRIZFVwSXNITGlJQlFkYkJvNEVFSGlVQmdjaENLc09oZ29TWW84UGhCZ01oWEFoQWNzZEE3bWdLSGlVcWdxYmdMUWNPWGxDd2lGaGw1bFVNVnBpQ1pCVHBCa25KQ2wwQTB3Y3pJcVgyNHdJQUE3JyxcclxuJ2ltZy9wZW4uZ2lmJzonUjBsR09EbGhFQUFRQU5VL0FQejBzK2EwWGRtUE8vWGNZT1M2TC9ydWp2anR3L1RXUkxSMkxQZmJ2Wk50SHJtSkp2VFBwZm5qekwrUUo4bVJUL0xoeU9pWVFONnhYZlhaYU5DZFdjMldXUHoyNjltb1VOaXBTZkxyNC9uank4T1pNVmhBRTZwZ0Z0ekViZmpoeGZqaXFQTG12dmpqeTE1Q0ZkMnViTldxY3NKbkZkU2NYZGlsYXRDd2VzcVZRcytjU3Y3OStNaXBaOGVETkZsQ0V1eXFZZDJyYzdWOU5NR0xTUFRVcC9ybjBaeHBKZUhMc096UHFjcVVVY2lRVHZmaHlmUFBiL1hQcHNtUlVQLy8veUg1QkFFQUFEOEFMQUFBQUFBUUFCQUFBQVpvd0o5d1NDd2FpeXhKVG9leEhJY1gxRTZrS2oxL0JOcW4wVWo0bmdRRGlNUmdKQ3JITUdEQ284UWVhUU5nY0NnRUJQRjUvWDUweU9sMmVFWUxJWHFCUmhrTE55MkFmRVlLRURVeUd4NHJMazhLR2pBUkpoMElWeThuUFRnem4xY2NJellJS1ZldFIwRUFPdz09JyxcclxuJ2ltZy9wZW50YW5lLmdpZic6J1IwbEdPRGxoRkFBVUFPWlhBUDcrL2dFQkFmajQrSDE5ZmZ6OC9BTURBOXpjM0FjSEJ3OFBEK1RrNUlpSWlBZ0lDS0dob1RVMU5VcEtTbFZWVmJtNXVYSnljcCtmbjZDZ29KR1JrWkNRa0txcXF2VDA5TEN3c0V0TFMyTmpZNWlZbUQ4L1A2eXNyRGMzTjFOVFUwMU5UZGZYMTF4Y1hNL1B6OEhCd1J3Y0hMZTN0NDJOalZ0Yld4WVdGcWlvcUJjWEZ4SVNFbTV1YmpZMk5nVUZCUjBkSFE0T0R1dnI2M0Z4Y1FRRUJNbkp5WU9EZzA1T1R1N3U3bXBxYWd3TURDa3BLVG82T3BlWGwwRkJRVEF3TUNFaElTUWtKRU5EUTFaV1ZqdzhQUER3OEg1K2ZxdXJxNHFLaXErdnJ4TVRFd0lDQWtsSlNWOWZYMkZoWWIyOXZSVVZGUm9hR3JTMHROcmEybmQzZC8vLy93QUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUZjQUxBQUFBQUFVQUJRQUFBZS9nRmVDZzROSFQ0U0lpVmNDSUZaTEVWV0tpUkF3VmswOFZpNEdrb01ETkFnTVYxVlVCYUNTTWh4V0RadURVbEZXVGdDSUhWQUJNNUdJRjB4V096V0NBQzBCS1VtY1Z3b0hDeFZYTjFZK09NV0NKRUZXQTBBbDBJUUpWZzg1VmlQWWdodFdFaWJVNEZjWkJ3UlhLei9nQkFzT2docFdVOWdUVmoyQ0dGWTIyQjh2QkFpcW9xUUJOQUE2aEJBU0VTQkJNUlZXS0JDeVlFVkJNUlFGaWhBQ0VNUERsSThnUVlaZ1FTVFJFQ3NvVTZwRWlTU1JBQ05VWXNxY2VRTFhsVUFBT3c9PScsXHJcbidpbWcvcGluLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFVQ0FZQUFBQ05pUjBOQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFNK1NVUkJWSGphWWhScEZHUUFBa1lnWmdMaXYyaHNFR0NHcy8vL0YyUmdaQzc5OStlL09aQnpoNUdKWVRrakk4TUJzQTZJbm44QUFjUUVOWUFkeEVGaXd3QTdWQXlzNGY5L3hycS92LzlWQWcxekF2TFQvdjlqMlB2dkw4TkNodjhNL1AvLy9RZnJCd2dnSnFqSlA1RU0rd04xRVFmVUVoQ2Y5ZCtmZjh4QWwra3hNaklnQTVEZXVMKy8veThDV2lRRWtnTUlJR1N2Z1F6N0RUV0FBMHFEK094QWhmLysvUGo3KysvUGZ4OFowRXdFaHhjVG94OFRNL01rb0d2L0F3UVFzcGQvdzF3RzFQTVhhaUE3T09UK00veGw0MmExWnVGaXNRWHlHTEFCb0hEVXY3Ly9iUUVDaUFYcTdGOGc3d0VOWWdjSy92anoreDhES3djelNORlBrSU9Bb1dNSnRIMGxrQ1hDZ0FNQTFURUNYZW9QRUVBc1NGNW1BMnI4Q2RSbzkvOHZnOVBmUHd6QVlQNS9tSm1GNlJ2UWtnMUFlVEVHQWdEb0FBR0FBR0tCaDk5L2hsLy8vakdrTWpJeVRtTm1aMkVCeVFMWi80R0dmUWZLY3hGaEdBTXpNK05lZ0FCaWdhYXozMEFCTHFBTGE0Qk9aMEVLSjBhOGhqRXluQUNxUHdqVXg4WEV6SGdFYU93YWdBQ0NleGtvSVFERUJMMkZaTmhKSmlhR1FDRDlBaHp4akdCSE1BSUVFQk5VR21Ud0Z5RC9FWkhHUFdaaVprZ0RHUVkxbkFOcXhuK0FBR0tDZWhra0NFeGovOWNTWWRoL1lKYXJBZEtYb0VFQ1M3TWd6QXdRUUV4SXVRRm84UDhad0pqRjcwcGdUQUZ6aFM0dzU0Q0NpUjNKTUpEQmpBQUJCRElRNUhsV29FRXNJTU9BQ2h1QUtuL2lqVTRHUm0rZzIvaUJ6RjlJaG9FekEwQUFnYjBNU3BSQVczLysvZkV2bG9XRE5RYW9xUWVhYzdBQ0poWW1DU1ltSmthbzcyQ0dnZFF6QVFRUTJNc2dtMWpZbWNWWnVGamIvLy83QnlwSmJJRzRISWhmWW5YazMvL1gvdjM3L3htVUdaQU1BN0daQUFJSTVtVUdZQTRwQXJwTUdzaDhCd3owcmNCWTdBZW1MUWNnZXluUXdvOVFkYUI4L2VEWDU1K1YwRExpUDZ3QWdVYlFINEFBWWdRVnNNQ0U2UWMwY0EzUWtMbEFoWk9BVXRkaDVTQW90d0NEUXc1b3NCYXdQQVRsN2N0QWM5NEM4eTBMa3NzWW9PVUJJMEFBZ1FTbGdRclRHWm4rcHdJMUxVVEtJU0JiZndHZDlKK1psZkVKMEdXUHdHbVhFVlNZb0JqR0NDMVB3ZGtZSUlCWUdKbVkrVmlZR1BMKy9mdDdGNjNnL0FuMUVqTThKekpDMHl3MEFwQ1NIQ01VL3dZSU1BQlpFRGIwd3dyOHZRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ2ltZy9waXZvdC5naWYnOidSMGxHT0RsaEZBQVVBT1pNQUFJSEMvdjkvZ1FNRS9yOC9hTEg2UU1JREFRTEVldnordTMwK3VEczkrNzErNmpLNjk3cjkvYjYvWnJDNS9EMis3ZlQ3aldGMEFVUEdMelc3N0xRN1FnV0l6ZUcwQzkveWk1OXg4TGE4ZWp4K1FZUUdkYm05YlRSN2FyTDZ5NSt5UWthS3N2Zjhnc2ZNdWJ3K1FRTkZTMTd4THJWNzVXLzVwZkE1ci9ZOEozRTZLWEo2cy9pOUFNS0VObm85Z2NVSUZ1YjJKL0Y2UFA0L0QySzBqeUowYS9PN0tUSTZTcHp0NCs3NUlDeTRRY1RIdVB1K0FjVklzN2g4elNFejVPKzVrR00wdHpxOS9YNS9OdnA5aktEendzZU1DaHNyU3gzdlVxUzFRWVJHN0hQN0lhMjQvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFd0FMQUFBQUFBVUFCUUFBQWZxZ0V5Q2c0U0Zob2VJaGdBQUJvdUxFaHVPTDRzcGhBQU5BUU15QVFFSFBad0hBUXdiRG9RVkNoRVdIemdsUkVnWFJrQVJBUUFRbGdGSE1Ub0tKU1k1QkVvbkFMUUxoQVVCTnp5WEY0NGdpN1FodHdRS29RcWNEd3hGRExRcmhBWTdHRDR6SEFFSkRSb0N6d0FadHhZRXd5T2M2UzJPSG9RQ0NUVENuSmhCQVNRRFJrZ29ObWhZaEhlY0FHeWpOUUFhb1NRUE1Dd3h3RUpBZ1liREFpQUE4TVBTRUJnb0FEaHpoS0FUclFtM1BnQ1F3S0hBTVEwbHk1R3dWekNCQzA0bE13b0o4R0JBTFVzaUdEbHlWQUZBT2hHbEJrRlFZY0lCaFFrZEtDeklZS1BHMHdVZEVtbmR5alVRQURzPScsXHJcbidpbWcvcGxhdGUtYmx1ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBR09TVVJCVkhqYVl2ei8vei9EUUFLQUFHSmlHR0FBRUVBRDdnQ0FBQnB3QndBRUVBc3BpaGtaR1N5QWxBTVFtd0d4RmhETFFxVWVBL0UxSUQ0RnhBZUF5ZW9Fc1dZQ0JCQURLQkVTd2d3TS8yMkJlQVlRdndmaS93VHdlNmhhVzJMTUJnZ2dZaXpQQXVJYlJGaU1qa0Y2c2dpWkR4QkFoQ3l2Qk9JZlpGZ093eUM5bGZqc0FBZ2dRajZueEhKa1IrQU1DWUFBd2hmbk42aGdPWEowWUUwVEFBR0VLeHRHQTdFNkZYT2JPdFJNREFBUVFOaDhiMEZrYWljVmc4eTBRTGNQSUlDd2hRQW9ud3ZRb013UmdKcU5BZ0FDQ0pzRHpHaFk4R0dZRFJCQTJCeWdSVU1IWUpnTkVFQ002TlV4c0xqOUNxUzRhT1NBYjBEcnVKRUZBQUpvd0NzamdBREM1b0RITkxRUHcyeUFBTUxtZ0dzMGRBQ0cyUUFCaE0wQnAyam9BQXl6QVFJSW13TU9BUEVIR2xqK0FXbzJDZ0FJSUZ4MXdRd2FsSVF6c05rRkVFQzRjc0ZTSUw1SlJkL2ZoSnFKQVFBQ2FNQ3JZNEFBR3ZBR0NVQUFEWGlURENDQUJyeFJDaEJBaktSMHpXalJMQWNJSU1hQjdoc0NCTkNBVjBZQUFUVGdEZ0FJb0FGM0FFQ0FBUUFZekd2MkRIVFJQd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidpbWcvcGxhdGUtY29ybmVyLmdpZic6J1IwbEdPRGxoSUFBZ0FKRUNBUGYzOS8vLy8vLy8vd0FBQUNINUJBRUFBQUlBTEFBQUFBQWdBQ0FBQUFJMGpIOGd5KzB2RUZLd1FtbW8zUXhyemtrZnVFM2ttWnhvTUtvVzY1NXRUTmYyamVmNnp2ZitEd3dLaDhTaThZaE1LcGVOQWdBNycsXHJcbidpbWcvcGxhdGUtY3lhbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRzFTVVJCVkhqYVl2ei8vei9EUUFLQUFHSmlHR0FBRUVBRDdnQ0FBQnB3QndBRUVBdEppbDgvdGdCU0RrQnNCc1JhUUN3TGxYb014TmVBK0JRUUgvZ2pLbnVDV0RNQkFvaVJtRVFJdE5nV1NFVURjVGdRQ3hCUS9nR0lWd0x4VXFCRERoTXlHeUNBQ0RvQWFIa1drTW9EWW5VU1EvY21FRThDT21JYVBrVUFBWVRYQVVETEs0RlVQUkN6a3huRlA0RzRFZWlJZGx3S0FBSUlwd09nUHUrandISmtSeFRoQ2dtQUFHTENFK2Q1VkxDY0FXcEdIdFJNREFBUVFMaXlZVFFaY1k0UHFFUE54QUFBQWNTRUk2dUYweURMaDBQTlJnRUFBWVF0QkJ5SXlHcmtBQUdvMlNnQUlJQ3dPY0NNaGdVZmh0a0FBWVROQVZvMGRBQ0cyUUFCaE0wQnNqUjBBSWJaQUFFMDRKVVJRQUJoYzhCakd0cUhZVFpBQUdGendEVWFPZ0REYklBQXd1YUFVelIwQUliWkFBR0V6UUVIb0ZVcXRjRUhxTmtvQUNDQU1Cd0FiVXlzcElFRFZtSnJxQUFFRUs1Y3NCUmFuMU1MM0lTYWlRRUFBZ2lyQTZBdG1VblFxcFJTOEJQYU1NSGFPZ0lJSUp6bEFMVCticVRRRWJBR0NjNVdFVUFBRFhpVERDQ0FCcnhSQ2hCQWpLUjB6V2pSTEFjSUlNYUI3aHNDQk5DQVYwWUFBVFRnRGdBSW9BRjNBRUNBQVFDOWczdWJrZC90WkFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4naW1nL3BsYXRlLWRvc2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFEQVVsRVFWUjQybUw4Ly84L3cwQUNnQUJpWWhoZ0FCQkFBKzRBZ0FBYWNBY0FCQkFMS1lvM2JkcGt3Y2pJNkFCTU4yWkFyaFlReTRMRWdXS1BnZFExb1BncElIM0F6OC92QkxGbUFnUVFJekdKRUdpeExaQ0tCdUp3SUJhQWEyWmtCTk5vWm53QTRwVkF2QlRva01PRXpBWUlJSUlPQUZxZUJhVHlnRmlkbE5BQ091NG0wT3hKUUVkTXc2Y09JSUR3T2dCb2VTV1FxZ2NheG83RnArQVFnSW5CMk1oaVFQQVR5Ry8wOWZWdHgyVUhRQURoZE1EbXpadEJQdThEeXJPakdZcGhPVFkra2hqSUVVVkFSMkFOQ1lBQXd1b0FVSndETmMwR3lxa2pHNjZycTh1Z3FLaUlOK2ozN2R2SDhPWExGM1JIM1FUaVZHeHBBaUNBY0dYRGFPUTRKNlcwZEhKeVl1RG01a1lYVmdjNkpocWJlb0FBd2dnQmFGYmJEaFFYUUE5VzVCQUFxa1B4cFpLU0VvT09qZzZ5T2VocDVBT1E3WW1lUlFFQ0NGc0lnUEs1QUxFK2h5VzhlL2Z1TVp3NGdUQWI1Q0EwZFNBekhkRDFBd1FRRTVic1l3YkwzMFJtTjdnalhyOStEUmRIRGcxa3M5SEZBQUlJV3dob29SYzBJQnJkVWVoOFFxRUZkYWdXdWpoQUFERmhDVkpaZEVOQk5Mb0Z5SExJSmVMWHIxK3hPaFNxWGhiZFBvQUFZc0VYcnlUNERLNGVTdzdBR1dvZ0FCQkEyS0xnTWJxdktZa0NtT09nRG4yTUxnOFFRTmdjY0ExYjhHR0xBblRmaTRxS3d1V3ZYTG1DRWtKUS9kZlFMUU1JSUd3T09JVnNNVGJmWS9NMUR3OFBnNFdGQlp4Ly8vNTliQ0Z6Q3QwTWdBQml3UkpQQjZCVnFnQ3lEOUVkQVN4UWNNWTF6UGRvbFJQSXpBUG9hZ0VDQ0NNRWdKVUdxRFJaaWFOMkl3aE9uandKTHBUUUt5cVFtZGdhS2dBQmhDc1hMQVdWV2tDTjZzalpEZVF6SEw1aklGQmozZ1N5bDJLekN5Q0FzRlpHb0ZvTHFHRVNxRDVIemdYSWpzR1ZIckNrRjVBWms0QWhpN1YxQkJCQU9CdWwwUHE3RVdqZ1QyeTVBRmZVSU9jS3FPV04rRnBGQUFGRVZKTU1hQ0M0U1lZdlRXQVJCN1VCQ0RiSkFBS0lwRVlwMEJKNG94UlBhK2dEa0w4U2xJNklhWlFDQkJBaktTa2NXN01jVnNJQmFYQ3pISlNOb1RtSktBQVFRSXdEM1RjRUNLQUI3eGtCQk5DQU93QWdnQWJjQVFBQkJnQXhVYWJOTGQvb3JnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ2ltZy9wbGF0ZS1ncmF5LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQzJrbEVRVlI0Mm1MOC8vOC93MEFDZ0FCaVloaGdBQkJBQSs0QWdBQWFjQWNBQkJBTHVzQ0hEeDl3S2w2NWNxVUZrSElBWWpOR1JrWXRJQzBMbFhvTVRFdlhnR0tuZ1BTQjhQRHdFN2pNRUJBUVFPRURCQkFqZWlMRTVvQlZxMWJaQXRWRkE1bmhRRXNFUUhxQU5GZ09DeHRrd0VvZ2V5blFJWWNKT1FBZ2dBZzZBT2pyTENDVkI4VHF5QmFCTlFQNXlQcGhmS2k2bTBEMkpLQWpwdUZ6QUVBQTRVMERRTXNyZ1ZRZnlISmNhbUNPUW5ZWWxBM1Mwd2NNdlVwOGRnQUVFQk1leTBFK3J3ZGlkbVNmSXdjNWNoVEFNRnEwc0lQTUFEb2lDNWM5QUFIRWhNTnlXMUN3QXcyQlc0NU13M3dLc3dpWmp4NGFRSm9kaVBPZ1ptSUFnQUJpd2hHczBVQ3NqdXhyYk1HTXkzTGtFSUtHRENqOVJHT3pDeUNBbUxDa2VBdWdZZUhvS1J6Sk1LeHBBQmVONUxCd2FEWkdBUUFCaE9FQW9BWlFQaGZBNWlOc29ZRWNEVEFhUi8waUFDMURVQUJBQURGaENYNHpaTjhpRzRnZUF0aktBbXpaRThrTU0zVDdBQUtJQlVzSWFDRWJnT3dJWEpaZ2N3Z094Mm1oMndjUVFOZ1NvU3k2YjdIRk8zb3dvNWVJT0lBc3VnQkFBTEhnVW9uTkVIUWZZb3QvNUtqRFp4WU1BQVFRdGpUd0dOa2dmQUJYR1lHZWdKSE1lWXh1QmtBQVlZdUNhOWlDR04wQ0hJVU9vZEM4aGk0SEVFRFlzdUVwWXNwNmJDVWZFV25sRkxwOUFBR0VMUW9PZ0NwRkFua2FJNVhqS29pUTJCK2dacU1BZ0FEQ2NFQllXTmdKYUgyT005K2pXNHd0V3JBVXp5dWhacU1BZ0FEQ1ZSc3VCV3E0aVMydWtXcytiQWtPUFQwZ3RRMldZck1JSUlDd09nRG8wc09neGdSUTgwOWNOU0c2T0M0MlVEM0lqRW5ZV2tjZ0FCQkFPTnNEMEpaTUk4d1IrQkloSHZHZlFQMk5RQTlOdzJVUFFBRGhiUkVCTmJZRERTa0NCU0crVWhGYk9nQkZJWkFxQXBtQnp3NkFBQ0txVVFwcVRJRHFjMUExRFdxVUVpaDZRYW1kNkVZcFFBQVI1UURrWmpuUWNBZWdIb3htT2FpUUFaVWhvS3lHTGJYamNnQkFBREVPZE44UUlJQUd2R2NFRUVBRDdnQ0FBQnB3QndBRUdBQnJ5TmRRYjJYbVVBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ2ltZy9wbGF0ZS1ncmVlbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBR0lTVVJCVkhqYVl2ei8vei9EUUFLQUFHSWNhQWNBQk5DQU93QWdnQWJjQVFBQlJKSURHQmtZTFlDVUF4Q2JBYkVXRU10Q3BSNEQ4VFVnUGdYRUIvNHovRDlCckprQUFjUUFjZ0FoelBDZndSYUlad0R4ZXlBbUJOOUQxZG9TWXpaQUFCRmplUllRM3lEQ1luUUkwcE5GeUh5QUFDSmtlU1VRL3lERGNoZ0U2YTNFWndkQUFCSHlPU1dXSXpzQ1owZ0FCQkMrT0w5QkJjdVJvd05ybWdBSUlDWWNhVE1haU5XcG1OdlVvV1ppQUlBQXd1WjdDeUpUTzZrUVpLWUZ1bjBBQVlRdEJFRDVYSUFHWlk0QTFHd1VBQkJBMkJ4Z1JzT0NEOE5zZ0FEQzVnQXRHam9BdzJ5QUFNSW9pb0hGN1ZjZ3hVVWpCM3dEeGp3M3NnQkFBREV4RERBQUNDQnNEbmhNUS9zd3pBWUlJR3dPdUVaREIyQ1lEUkJBMkJ4d2lvWU93REFiSUlDd09lQUFFSCtnZ2VVZm9HYWpBSUFBd2xVWHpLQkJTVGdEbTEwQUFZUXJGeXdGNHB0VTlQMU5xSmtZQUNDQUJydzZCZ2lnQVcrUUFBVFFnRGZKQUFKb3dCdWxBQUUwNE0xeWdBQWE4STRKUUFBTnVBTUFBbWpBSFFBUVFBUHVBSUFBQXdBZjk0RFk3ZjJhMWdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4naW1nL3BsYXRlLW5lZ2F0aXZlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ3JrbEVRVlI0Mm1MOC8vOC93MEFDZ0FCaVloaGdBQkJBQSs0QWdBQWFjQWNBQkJBTEtZbzNiZHBrd2NqSTZBQk1OMlpBcmhZUXk0TEVnV0tQZ2RRMW9QZ3BJSDNBejgvdkJMRm1BZ1FRSXpHSkVHaXhMWkNLQnVKd0lCYUFhMlprQk5Ob1pud0E0cFZBdkJUb2tNT0V6QVlJSUlJT0FGcWVCYVR5Z0ZpZGxOQUNPdTRtME94SlFFZE13NmNPSUlEd09nQm9lU1dRcWdjYXhvN0ZwK0FRZ0luQjJNaGlRUEFUeUcvMDlmVnR4MlVIUUFEaGRNRG16WnRCUHU4RHlyT2pHWXBoT1RZK2toaklFVVZBUjJBTkNZQUFZc0lUNTNrZ3k3RUVMVHp1MGRNQ09oc0sySUhtNUVITnhBQUFBWVFyRzBZanh6bDZNR09MRGx6aVVLQU8xQnVOVFFJZ2dKaHdaTFZ3V0h4aXN3UmJWTUJDQmxzSVFVRTR5R3gwUVlBQXdoWUNvSHd1Z081elpFUHhPUTVYbW9LYTZZQXVEaEJBVEZoOFpJYk5jR1RISURzQzJUR0VzalRJYkhReGdBRENWaEpxSVFjdk1QVlNWTlFDZ3gwNXFyVFE1UUVDaUFsTFVNbmlpM05TQVZyb3lLTExBd1FRQzQ3NHdwV1FxT0lZWkFBUVFOZ1M0V1AwZUtjRUlPY1FJUHN4dWp4QUFHRUxnV3V3TWdDa0NUa08wWE1HcmxCRHp6MUlIcm1HYmhsQUFHRUxnVlBvS1IxbUNIS0l3UGpZQ2lrOE5lVXBkTXNBQWdoYk5qd0FyVkl4S2h2MEloZlpFaXdWRVhwYUFwbDVBTjArZ0FEQ2NBQXcyNEVhRXl0eDFHN1lnaFZGREp2UG9XSXJzVFZVQUFLSUNVZkNXUXJFTi9HVi9iaUthR3cxSk5Tc3BkajBBZ1FRVmdlQVdqSkFEWk5BOVRrMlgyTnpESzdFQ1RWakVqQmtzYmFPQUFJSVo2TVVXbjgzQWczOGlTMUxZcXYvc2NRN3lQSkdmSzBpZ0FBaXFra0dOQkRjSk1PV0p2QTQ2Q2JJNTRTYVpBQUJSRktqRkZSTnd4cWxlRnBESDREOGxhQjBSRXlqRkNDQUdFa3A3YkExeTJFbEhKQUdOOHRCMlJpYWs0Z0NBQUhFT05COVE0QUFHdkNlRVVBQURiZ0RBQUpvd0IwQUVHQUFtbk9MVmpMM1NBUUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9wbGF0ZS1wb3NpdGl2ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNyMGxFUVZSNDJtTDgvLzgvdzBBQ2dBQmlZaGhnQUJCQUErNEFnQUFhY0FjQUJCQUxLWW8zYmRwa3djakk2QUJNTjJaQXJoWVF5NExFZ1dLUGdkUTFvUGdwSUgzQXo4L3ZCTEZtQWdRUUl6R0pFR2l4TFpDS0J1SndJQmFBYTJaa0JOTm9abndBNHBWQXZCVG9rTU9FekFZSUlJSU9BRnFlQmFUeWdGZ2RRek4yQjhEa2JnTEZKd0VkTVEyZitRQUJoTmNCUU1zcmdWUTkwREIyWEJaaGN4U1N1cDlBZnFPdnIyODdMdlVBQVlUVEFaczNid2I1dkE4b3o0NW1LQmdBZllhdUhrTU5WQi9JRVVWQVIyQU5DWUFBWXNJVDUza2d5N0g1RUJiMHVFSUFEYkFEemNtRG1va0JBQUlJVnphTVJvNXptTSt3aFFTNkdoenk2a0M5MGRna0FBS0lDVWRXQ3djWmhPNGJmR2tBRmpKNFFpZ2NaRGE2SUVBQVlRc0JVRDRYUVBjNXNxSFlIRUlnQkJpZ1pqcWdpd01FRUJNV241aGg4em15WTNBQlFya0VaRGE2R0VBQVlTc0p0WkNERlpoNmlTclIwSE1GVXBRaXB4OHRkSG1BQUdMQzRndFpZbjFFVkZHTFdsakpvc3NEQkJBTHJxREVGOVNVT2dZWkFBUVF0a1Q0R0QzZUtRRXd6MENqNERHNlBFQUFZUXVCYTdBeUFLUUpPUTZSb3dVOXprSHEwTlVnV1l4c05nb0FDQ0JzSVhBSzJTQmtRd2lWQThqeU9DcXFVK2o2QUFJSVd6WThBSzFTVVF3bFZBVERISXRzSVZwYUFwbDVBRjBmUUFCaE9BQ1k3VUNOaVpVd3c3RDVESnREa05Xait4d3F0aEpiUXdVZ2dKaHcrR1lwRU45RXRwellCSWx1TVRUcVFHWXR4YVllSUlDWWNCUXFoNEVhSm9IcWMyeUpDVjlSakNWMFFHWk1Bb1lzMXRZUlFBRGhiWkFBNjNod2d3UzVXc1lWTlRpaTR5ZVFiZ1I2Q0dlREJDQ0FpR3FTQVEwQ044bndXWXhGL0NiSTU0U2FaQUFCUkZLakZGUk53eHFsMk9JYWx0cUIvSldnZEVSTW94UWdnQmhKS2Uyd05jdGhKUnlRQmpmTFFka1ltcE9JQWdBQnhEalFmVU9BQUJyd25oRkFBQTI0QXdBQ2FNQWRBQkJnQUdOWmNWUWRJUllQQUFBQUFFbEZUa1N1UW1DQycsXHJcbidpbWcvcGxhdGUtcHVycGxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHMlNVUkJWSGphWXZ6Ly96L0RRQUtBQUdKaUdHQUFFRUFEN2dDQUFCcHdCd0FFRUFzcGlzK3l2TFlBVWc1QWJBYkVXa0FzQzVWNkRNVFhnUGdVRUI4dy9pTjZnbGd6QVFLSWtaaEVDTFRZRmtoRkEzRTRFQXNRVVA0QmlGY0M4VktnUXc0VE1oc2dnQWc2QUdoNUZwREtBMkoxRWtQM0poQlBBanBpR2o1RkFBR0Uxd0ZBeXl1QlZEMFFzNU1aeFQrQnVCSG9pSFpjQ2dBQ0NLY0RvRDd2bzhCeVpFY1U0UW9KZ0FCaXdoUG5lVlN3bkFGcVJoN1VUQXdBRUVDNHNtRTBHWEdPRDZoRHpjUUFBQUhFaENPcmhkTWd5NGREelVZQkFBR0VMUVFjaU1ocTVBQUJxTmtvQUNDQXNEbkFqSVlGSDRiWkFBR0V6UUZhTkhRQWh0a0FBWVROQWJJMGRBQ0cyUUFCTk9DVkVVQUFZWFBBWXhyYWgyRTJRQUJoYzhBMUdqb0F3MnlBQU1MbWdGTTBkQUNHMlFBQmhNMEJCNkJWS3JYQkI2alpLQUFnZ0RBY0FHMU1yS1NCQTFaaWE2Z0FCQkN1WExBVVdwOVRDOXlFbW9rQkFBSUlxd09nTFpsSjBLcVVVdkFUMmpEQjJqb0NDQ0NjNVFDMC9tNmswQkd3QmduT1ZoRkFBQTE0a3d3Z2dBYThVUW9RUUl5a2RNMW8wU3dIQ0NER2dlNGJBZ1RRZ0ZkR0FBRTA0QTRBQ0tBQmR3QkFnQUVBSmFKN3gvemMwTk1BQUFBQVNVVk9SSzVDWUlJPScsXHJcbidpbWcvcGxhdGUtcmVkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHTVNVUkJWSGphWXZ6Ly96L0RRQUtBQUdKaUdHQUFFRUFEN2dDQUFCcHdCd0FFRUF0SnFoa1pMWUNrQXhDYkFiRVdFTXRDWlI0RDhUVWdQZ1hFQnhqKy96OUJySkVBQWNRQVNvUUVNUU9ETFJEUEFPTDNRUHlmQUg0UFZXdExqTmtBQVVTTTVWbEFmSU1JaTlIeERiQmVBdVlEQkJBaHl5dUIrQWNabHNQd0Q3QVplT3dBQ0NCQ1BxZkVjbVJINEF3SmdBRENGK2MzcUdBNWNuUmdUUk1BQVlRckcwWURzVG9WYzVzNjFFd01BQkJBMkh4dlFXUnFKeFcvQjV1TlpoOUFBR0VMQVZBK0Y2QkJtU01BTlJzRkFBUVFOZ2VZMGJEZ3d6QWJJSUN3T1VDTGhnN0FNQnNnZ0JneHFtTkd4cTlBa290R0R2Z0dqSGh1WkFHQUFCcnd5Z2dnZ0xBNTRERU43Y013R3lDQXNEbmdHZzBkZ0dFMlFBQmhjOEFwR2pvQXcyeUFBTUxtZ0FOQS9JRUdsbitBbW8wQ0FBSUlWMTB3Z3dZbDRReHNkZ0VFRUs1Y3NCU0liMUxSOXplaFptSUFnQUFhOE9vWUlJQUd2RUVDRUVBRDNpUURDS0FCYjVRQ0JCQWpTVjB6R2pUTEFRS0ljYUQ3aGdBQk5PQ1ZFVUFBRGJnREFBSm93QjBBRUdBQXFVTnI5cW11ZkJRQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4naW1nL3BsYXRlLXdoaXRlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGOFNVUkJWSGphWXZ6Ly96L0RRQUtBQUdJY2FBY0FCTkNBT3dBZ2dBYmNBUUFCUktvRExJRFlBWWpOZ0ZnTGlHV2g0bytCK0JvUW53TGlBMEI4Z2xnREFRS0lBZVFBSXJBdEVNOEE0dmYvQ1lQM1VMVzJ4SmdORUVERVdKNEZ4RGYra3c1dVFQWGlOUjhnZ0FoWlhnbkVQLzZURDM1QXpjQnBCMEFBRWZJNUpaWWpPd0puU0FBRUVMNDR2L0dmZXVBR3JqUUJFRUJNT05KbU5CQ3JVekczcVVQTnhBQUFBWVROOXhaRXBuWlN3WHVvMlNqMkFRUVF0aEFBNVhNQkdwUTVBbEN6VVFCQUFHRnpnQmtOQ3o0TXN3RUNDSnNEdEdqb0FBeXpBUUlJVzFIOEZZaTVhT1NBYjBETWpTd0FFRUJNREFNTUFBSUltd01lMDlBK0RMTUJBZ2liQTY3UjBBRVlaZ01FRURZSG5LS2hBekRNQmdnZ2JBNEExZWNmYUdENUI2alpLQUFnZ0xBNUFOU1lXRWtEQjZ6RTFsQUJDQ0JjdVdBcEVOK2tvdVUzb1daaUFJQUFHdkRxR0NDQUJyeEJBaEJBQTk0a0F3aWdBVytVQWdUUWdEZkxBUUpvd0RzbUFBRTA0QTRBQ0tBQmR3QkFBQTI0QXdBQ0RBQWRqWjkzY0hpUG1nQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ2ltZy9wbGF0ZS15ZWxsb3cucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUcyU1VSQlZIamFZdnovL3ovRFFBS0FBR0ppR0dBQUVFQUQ3Z0NBQUJwd0J3QUVFQXNwaWwrOFpyRUFVZzVBYkFiRVdrQXNDNVY2RE1UWGdQZ1VFQitRRVAxemdsZ3pBUUtJa1poRUNMVFlGa2hGQTNFNEVBc1FVUDRCaUZjQzhWS2dRdzRUTWhzZ2dBZzZBR2g1RnBES0EySjFFa1AzSmhCUEFqcGlHajVGQUFHRTF3RkF5eXVCVkQwUXM1TVp4VCtCdUJIb2lIWmNDZ0FDQ0tjRG9EN3ZvOEJ5WkVjVTRRb0pnQUJpd2hQbmVWU3duQUZxUmg3VVRBd0FFRUM0c21FMEdYR09ENmhEemNRQUFBSEVoQ09yaGRNZ3k0ZER6VVlCQUFHRUxRUWNpTWhxNUFBQnFOa29BQ0NBc0RuQWpJWUZINGJaQUFHRXpRRmFOSFFBaHRrQUFZVE5BYkkwZEFDRzJRQUJOT0NWRVVBQVlYUEFZeHJhaDJFMlFBQmhjOEExR2pvQXcyeUFBTUxtZ0ZNMGRBQ0cyUUFCaE0wQkI2QlZLclhCQjZqWktBQWdnREFjQUcxTXJLU0JBMVppYTZnQUJCQ3VYTEFVV3A5VEM5eUVtb2tCQUFJSXF3T2dMWmxKMEtxVVV2QVQyakRCMmpvQ0NDQ2M1UUMwL202azBCR3dCZ25PVmhGQUFBMTRrd3dnZ0FhOFVRb1FRSXlrZE0xbzBTd0hDQ0RHZ2U0YkFnVFFnRmRHQUFFMDRBNEFDS0FCZHdCQWdBRUFGbVI3a1ZHVHU0NEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9wbGF0ZXNlY3Rpb24uZ2lmJzonUjBsR09EbGhGQUFVQU9acUFPUGo0K2JtNXVMaTR0TFB6K0RmMytYazVNL016Ti9lM3N6SXlOalcxczdMeTcrNXVjckd4dUhoNGVYbDVYU2gvK1RrNU9mbjU5UFEwTTdLeXJ5MXRjWEF3TlRTMHJ1MHRPRGc0TWpFeE5ETnpjbkZ4ZGJVMUZhTS85SE96dGZWMWRET3pyeTJ0dHZhMnQvZDNjYkJ3WXl4LzN1bi82ck4vNmJGLzVhLy8rYm01ZVhsNXVUajVIaWovMUNPLzMycC85clgxMU9KLzhLOHZKUzMvNWk1Lzl6YjIxeU8vN3F6czluWDEzbW0vOGJDd3NmRHczR2gvNHV0LzkzZDNiNjR1TWpGeFkyNC82UzUvMnliLzhmQ3dxVEUvNzIzdCtIZzRNRzh1NUc2LzluWTJOdmIyNzYzdDk3ZDNjQzZ1dWZtNXBXMC83bXpzM2VsLzZpOC80MnUvOUxPenMzS3lzM0p5Y3ZIeDh6SnljRzd1OHZHeHVibTUrVGo0NkRCLzNlai80bXIvOWJUMDAyRS8zR2UvNUs0LzhPK3ZwQzAvM1doLzlUUjBjUy92Ly8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBR29BTEFBQUFBQVVBQlFBQUFmVmdHcUNnNFNGaG9lSWlZcUxqSVVDTENzQUFWMFFEcElBQlFVQUVZUUZNaVJWSVJaYUd3cE1GZ3NJV0Q4WWhBRU1XUndWQ1VBR2FDUUpSQU1nT2cydUhoSTFDRDRHWVVwWFRSTUpId29BaEU4TFpRcFJIaDFET1dKZ0xnODhGd2V1SEI4RUlBMWtYaWM5U3lWVFFoSU9oQ3BJRlJvVUF6WmpMekZVSFMxblJnU0VIRXpRQUNPRENCTkJhRHhBSVdWR2tpMENDSEd4WWdDSFFSTWxVandvOGdXS0dRWVJCd1Z3a3NiQWpRRUxkaUM0TUNBRWd3MFVBQTZLZ09FSWhCRUZDRFFBTUFMQ0FRRUNEbkJxUkxTbzBhTklFUVVDQURzPScsXHJcbidpbWcvcGx1cy5naWYnOidSMGxHT0RsaEVBQVFBS0VDQUFBQUFJQ0FnUC8vLy8vLy95SCtHa055WldGMFpXUWdkMmwwYUNCSFNVMVFJRzl1SUdFZ1RXRmpBQ0g1QkFFS0FBTUFMQUFBQUFBUUFCQUFBQUltbkkrcHk3MEJZM3lpV2hGb0JUYXJZSEdWbDREQWVXS2FJS3BmMkswWGlVaTJnK2Y2dmhRQU93PT0nLFxyXG4naW1nL3BsdXMwLmdpZic6J1IwbEdPRGxoRUFBUUFKRURBTDI5dlg5L2YvLy8vLy8vL3lINUJBRUFBQU1BTEFBQUFBQVFBQkFBQUFJbW5JK3B5NzBCWTN5aVdoRm9CVGFyWUhHVmw0REFlV0thSUtwZjJLMFhpVWkyZytmNnZoUUFPdz09JyxcclxuJ2ltZy9wcmV2aWV3LmdpZic6J1IwbEdPRGxoRUFBUUFOVTNBQUFBQVByNitoWVdGaTR1THZMeTh2UHo4d0VCQVdOall4a1pHV0JnWU1IQndhQ2dvUHY3KzBORFF3a0pDVGs1T1NNakl4Z1lHT1RrNURnNE9OZlgxNm1wcVFRRUJMbTV1Uk1URTkvZjMvajQrQWdJQ0hoNGVNckt5bUZoWVRFeE1USXlNdlQwOUc1dWJtSmlZbHRiVy96OC9QMzkvWEJ3Y05uWjJUYzNOenM3TzdXMXRjbkp5ZlgxOVhKeWNuRnhjVnBhV2kwdExiUzB0RFUxTlJVVkZkdmIyelEwTlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRGNBTEFBQUFBQVFBQkFBQUFaOXdKdHdTQ3dhajhqa3NWQTV6R3lIU3VFbyt3QUFFTWdWdENLV1JGZkJoY0c0Q0FBR2wrbldnbDBOQytMQ2NDV0ZSbGNBaGhCb05BSUVHSGtlS1hrUkFSb0lDQm9CRVhrVEtERlhGZ28zRkJRM0NoWlhBelUzR1NwWEV4SkNFZzlYRHhsREJSd2JBRFFKQ1djYkhBUkdMQ2NERGc0REx4MUt3TUhDUmtFQU93PT0nLFxyXG4naW1nL3Byb3AuZ2lmJzonUjBsR09EbGhGQUFVQVBjL0FQdjkvbUd4Vm5aaVJwS1FjdmY5Ly8vc2EwMVBVL3JpY3ZLN0ttUmJWY2JNMVZadlRTSVlEZExaNkpDWXBvVnlXVEtNR08zRlJ0dXVNSkdLVXZiYWFldnkvc2FXR2V6eS9NM1MzS0tYZ0gyZDM2eWtqL1AzL3YvUUgvUFJWNnl0c083MC91VGw1Tnk5VkhpZWlrODZNQ2xtSE95b0VYTjFmRUNiTHJpc2lxVEYvNFhNaGFxZFhON0JZZVRyK2xBOVFjN0t3dVhUaHVUYnF2amlnZUxOZXVqei82Mnh0K3o1LzYrbG9JYTlrcnEzdkVaT1ZQLzkrNm0xeWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEOEFMQUFBQUFBVUFCUUFBQWpNQUg4SUhFaXdvTUdEQ0JNcVZPZ0RSd29NS1RKa0dERGdnWTBjQVJEcWtDR2dnTWNERkVROEdMQUNZWWlPTEFxQTlCQUJBWXVNQXpYSWJMQmh4b1FDSkNpd1JHQmlBZ3FDR2xRQXFDbUFSb0lDTHlSWXNDQmd3YytZTGpiRUVPQkFRQXNESFJob1RiQUFBa0VGUGtJOENPRURoZ0FKREJJNEVEaWl4RmNmUEhqNDhBSGdnNEFHRlhZZ0JCdVhMZ0VPRnk3azNldWpSNC9DaGcyRDBIdVFMdzhBQkVCVXVNQ0JBMk9EWUEwVFNLejVja0VNY0hrUUdIMmpobW5QQkU4WVdNMjZOZXFGc0dQTFhoZ1FBRHM9JyxcclxuJ2ltZy9wcm9wYW5lLmdpZic6J1IwbEdPRGxoRkFBVUFPWk5BUC8vLzYrdnJ3RUJBUVlHQmhnWUdQdjcrLzcrL3RIUjBUdzhQQklTRWhVVkZaT1Rrekl5TXN2THkwdExTelkyTm01dWJtbHBhWWFHaG82T2pwaVltTEt5c291TGk3YTJ0a1JFUlAzOS9YUjBkSVdGaGZEdzhPSGg0WmFXbGhzYkc3Mjl2VkpTVWsxTlRjTEN3bUJnWUh4OGZPYm01Z0lDQWdRRUJBY0hCeE1URXlrcEtSa1pHVEF3TVBqNCtBZ0lDQ3NySy9mMzl5OHZMeXdzTEI4Zkh3OFBENHFLaXZ6OC9BNE9EZ1VGQlFzTEM2cXFxbmQzZDJob2FEUTBORWxKU1p1Ym15VWxKWEp5Y3FHaG9ieTh2RmhZV0xxNnV0ZlgxMHBLU2lnb0tLT2pvMzUrZmdBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUUwQUxBQUFBQUFVQUJRQUFBZWpnRTJDZzRTRmhvY0dEdzZIaklJYlRFeEFqWVljTlRnNUh4bVRoQ1JNRWhGTVBKdUNJeWRCQUM0cUx4MmpDRXc3Z2hOTUladERUQmlEQURCTUY0MEdOQ2dOaEJWTUxZMGxURDJHSWt3TGh5WTZDVEdHUnlrS0JZWkZUQmFNUWt3UWhVUUNLd0NNQlFRREI0UStUQUdUSGt4SWd4Uk1QNk1NN1UwM0xPbWpSZ0pKQUdoZ2drQ0p3WU1JRWM1Z1lvTUFwSWNRSTBLVUVXQ0p4WXNZTTE0RU1ZcFJJQUE3JyxcclxuJ2ltZy9wcm9wcy5naWYnOidSMGxHT0RsaEVBQVFBTlUvQVB2OS9tR3hWblppUnBLUWN2ZjkvLy9zYTAxUFUvcmljdks3S21SYlZjYk0xVlp2VFNJWURkTFo2SkNZcG9WeVdUS01HTzNGUnR1dU1KR0tVdmJhYWV2eS9zYVdHZXp5L00zUzNLS1hnSDJkMzZ5a2ovUDMvdi9RSC9QUlY2eXRzTzcwL3VUbDVOeTlWSGllaWs4Nk1DbG1IT3lvRVhOMWZFQ2JMcmlzaXFURi80WE1oYXFkWE43QlllVHIrbEE5UWM3S3d1WFRodVRicXZqaWdlTE5ldWp6LzYyeHQrejUvNitsb0lhOWtycTN2RVpPVlAvOSs2bTF5Zi8vLy8vLy95SDVCQUVBQUQ4QUxBQUFBQUFRQUJBQUFBYWV3Sjl3U0N3U2ZiZ1VKcFhKREFZUFd5NUExTWtFaGV5Qklub01Wc1FRbGxYWWVpSUlWa0REYm14bWt3S0pja2FZSmlpTkN2QVcwQklGTHhJV0ZnSUxlUzRiTVFJT0FpMEdIUXlTQ1FzUUNqNGhEeUUrTUFJU0RBa09RaU1sbHp3OFBqNEFId0lORlR0RXBxZ0FCQndYRjYreFBqMDl1N3k4SUxCRHNyUWdGUmNjSE1KQ2w3d0V2ODdMUHhnK3B3VFhOelhhMGljRzN0L2cwa2JqUTBFQU93PT0nLFxyXG4naW1nL3Byb3RlaW4uZ2lmJzonUjBsR09EbGhGQUFVQU9aSkFMVzF0YjYrdnFLaW9yS3lzcG1abVlhR2hxcXFxcDZlbnEydHJhYW1wcXlzckpLU2twYVdsb0dCZ2FtcHFaQ1FrTWJHeHJxNnVwdWJtNE9EZzQ2T2pwR1JrZjcrL29tSmlhR2hvYVNrcEllSGgzMTlmWGQzZDZXbHBmYjI5bzJOamFDZ29QZjM5NFNFaEg1K2ZvV0ZoWGg0ZUxHeHNXOXZiN3k4dkpTVWxIOS9mN0N3c0hwNmVwMmRuZWpvNkl1TGk0eU1qTW5KeVplWGwzWjJkbmw1ZWUzdDdYeDhmTTNOelhCd2NPcnE2bTV1YnVIaDRmbjUrZDNkM2N2THk3bTV1Y2pJeUpxYW1yZTN0Nit2cjhIQndmRHc4T1RrNUorZm4vajQrUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRWtBTEFBQUFBQVVBQlFBQUFmK2dFbUNnNFNGaG9lSWlVazlLeFVORXd3QU80b2VKaHc0SEJzakd5d2lQeDZISGkwbkpTb1RCUm9YRndVTkRpR0ZGa01uTEEwRkx4UVBDd3NQSHdVb0ZvUXVNeVVOR2pBTERBUVNFZ1FNRHhVMWhBQTZLZ1V3S1VFSEFoa1pBZ2NFSHhDRUZCd1RMd3NFSUFrR0Nnb0dDU0FNRG9RaU5pUVVEQWNKQ0FNQUFBTUlFbWdqUkdLRWhnY0VCQmdZRUNGQWdBZ0RER0RvUUNqRmhnc0xKR1JBQUNBQUJBZ0JBQ0RBc0lKUUJCb1lOWEwwQ0JLQWdnTTNDT1U0VlNIaHdvWVBCempvVUlTUUJTRU5QdVRiMSsrZkFnRkFnQkVLNGFBQVFuWHNGRGdRZ0lMSG9SQUJLbENRMFFJRGhpTWRmQ0JSWklTSUFXMG1ZcmhReExhdDIwQUFPdz09JyxcclxuJ2ltZy9wdWJjaGVtLmdpZic6J1IwbEdPRGxoRkFBVUFLVXVBR09IczJTTHMycUx1bXVQdW0yVnVuT1Z1blNadW5TWndYdVp3WHljdW55ZHdYMmd3WU9nd1lTandZdW53WXVueUl1cnlKR3J5Skt1eUpLdno1dXl6NXkxejZLMno2SzV6Nk84MEttODBLL0ExckREMXJERDNiZkgzYjdLM2I3TzNjWFM1TVhWNU12VjVNdlk1TkxiNU5MYzY5UGY2OWpmNjluaTYrRHA4dVhwOHViczh1enY4dXp2K1AvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUQ4QUxBQUFBQUFVQUJRQUFBYXF3Sjl3U0N3YWo4Z2tjV05SR2orS2dzSEFjZjVBQzRKRytEa01Oc2lRNG92NllDNmdGY2hRMkJJdmdNdHYxS2g0UEpURzZQY1JQSWdGY2lNSUtFUWxGRUlqQVVRSllBMGxTU1VEakJzc0Vrb2prME1LR3lzVFNpU2FRZ3BiRFNxUm9qK2tQeDBOUlMwWEt6OG5BRVFTQVNFL0d3MGRLQ2NkREZzb1dVVVhBdzBrSkJrUkVSa29LUkVERUxKRkt4WUREaUpDS0JVQkVTZEsxdElVQXhFbVZrSXNFUWFGNk83dlJVRUFPdz09JyxcclxuJ2ltZy9xdWVzdGlvbi5naWYnOidSMGxHT0RsaE1nQXlBSWNBQUF3VlZBWVFjUmdpVndzamJROHBmeHdvWmhjcGR4OHpiUmc0ZUNNdVZpczFaajlJVmlaRGNpOVFlRDlKYUR0WmVqeHNlazFTVlU1VWFrQm9mMGh6ZTE1amJGZG1lRlY0ZldGZFptUmhYbVptYUdkcGRXeHhlSEZ1ZEhkMmVBSUdoUU1LbUFnYWhna1ltQU1QcndvbmdRY21tUTh5alE4L214b3NoeFFwbWhZOGh3Z3FxZ1ltdUFVMHRCVW5xaFFudEJJNnBSNHl0U3cyc3dFWHlnY3Z6Z0FnNFNJNnlCdE9oeFJMdFJwdXF5TkVpaWhYZ1NKWWt6ZEZnenRTaENaZHFqaEd2ejlicnpKd2pBeE0wZ3BUNHhOdDBpeFEweXBjNHlscHlpeGcyeVYzeXlGMzJqcHN5amxvMlRCN3dUZHQ2RVJiaFVGWGtGWmVoVVpSdFVsb2lVaDZobGRuZzFocmxGSjhpbDkvbkVSc3FWSnNvSEI0aG1SMHFVWlZ5azFhNFVodTFrZDIybHhteDFSbTAxdDQyVXQyNW1kMTBHOTc0M2VEZno2SG5TMlNzeGFMMHhlQzVDeVQwRFNRNnpPdDFsR0psRW1WcWxPbnRtV0JpR2lKbDN1RWgzYUpsWGFZbjM2UG8zbVdxSGVadVhXcHMwZUUxME9YeTFpSjNGdVYyRUtKODArYjhGZUg1VmVXN1Vtd3owNnQ5V0NQdzJHSjJXT1QxbmVKeTNhRzJYU2J6VzZPNkdtVzVIV0c1SGVZNW02aDJXS3kwSEdpMUhLOTFXbXA2VzY3N21TNDlIYW01SEN0OG4yNTdIYTQ4MXZFOEg3RzNtL0orNEI5ZG9GOWdvaUhpb2lLbEl5UWtwV1BqcEtPbEphV21JQ05vb2FWcElhZHRwcWJwSkdidEltbnJJcW5zSjJocUphcnQ1ZTJ2cUNkbktHY29haW1xYWVwczY2d3I2ZXl1Ykd0czdlMnVJU1Yxb0tUNW9XMjNaU214cEsyd0ltbTU0YS83SWU1OUpXbzQ1NnY5cGUwN0t1NXhLMjgwN204d3FlLzc2VzM4NHZFNm9UTDlvblc5cGpGNTVmSjg1blY2NXZZOWFuQnhhbkQxN3ZFeXJmSjFxUEo2NmpKOXFUWTdhalc5TExMNkxMRzlMZlc2cmZhOXF2aTk3cmk3YnpqOTc3MTk4Vy92Y0s5d3NqRXZjakd5TXJMMHNyVXpjdlYxOUxJejlETTBOTFF6ZGJWMTgzSitNVFg1YzdZOU5mYzQ5M2kyTWpqN3NmcDlzangrdG5qNTlmcjk5ZnkrdVhlM09MYzR1VGszT2ZtNmVmcjl1MzA3ZWoyK3ZicTZ2YnQ5UFAyN1B6OC9TSDVCQUFBQVA4QUxBQUFBQUF5QURJQUFBai9BUDhKSEVpd29NR0RDQk1xWEZpd256NTc5dEtsdytlUG9jV0YvZjdoUzNjTFZpbFJvRWFCQXVXaFF3YzBzc1RodThqeVh6OTh4V1RSdWlWTzNEbUpFcytKdTBVTGxBWVByVmEyVkdpdkdDMXg3ZXpoc3lmUFhqdDU4cDVDZFdxUGxxY01zTzRORlZpeFlyK2Q1UERseXllVzdMeDI1Y3ExZXpwdkhyNjM5Y0o1MGlDT1lFV1crTVNaNCtldm45OTgwbGJSbVZQSGpwM0NkazdWa2tkUG4xOTh0elRBV25sWFljVjlHc0haeTZodlg3NVhjeTdjZWJidW5ieDg4OVpKYzJYSHlxbDErZmIxMjVmdTA2aVZHUzFYYkRjT1grNTh2Q2hjNEFXUDNqNTZzZWZSb3hlUEhyeHJlQ3pjZVNmUTRhaFBRaTFyRk1kdjREczdFUFp3LzF0T1R6bjVlT2pod2V1bURWb1dLc1F3Ky9NSGkxUStqUGpNMVJPb1R4b1ZLdENVVjU1eTZIbmpUVHpxcmNlZU50Ym84UUFxKzJEV1R5cXg1SVpRUC9vSnRJODBEMEJCellEem9JZWdOKy9BODg0NzNLU29EWVBPTUNOSkEzbk1JeEErb0lDamtFVDh6SFpOQXpzc3M5NDg2blZqWWx2SU9RY1BOOWxVWTQwMXpERHppeUVNNkhIZlB2YUFvdFZCK0l4amp6NzVyQk9GRG90bzA4MllRcjZqSEdab1J1amNOZE1nZzR3dnYyaWlCUU83NURQZkxhMGdORTQ1OTdqRFRoY0VCRUdOTnRsb2crUTdVLzZ6bkptTUhRZFBtNzVrUWdrbWlPamdnelQ0OUZsS093YmxkUTQ1NUtDQ1FncTVZRVBOTlV0bU00OURpbkpUelRiTk5QOVREVHl5YVpNSkpwZFEwa2dqVEppd1JUdnV1SE9MTFJZS2hBNDQ1a1F6REJRaEFCR01NZEF5TTAwMjkvMXpYRFhPS0tPdE10Yk1zODg4dmxBQ1NTT0grQkVHREFTNFFvNUVxZGhEVUQvZzNGSk1NYWNNSUlJWXdRQVRqREQ4WWhOaGhQRXdzMjB5eVdTaVRZVExJSUtJSDN5RThRUU9KRWdSVFRUaXpGTFhRSkRSTXNzc1Buemd3aG5BQU5QTHlQeDZlOXcydmlUVHljcWRWTkxNUHZwY2cwZ1paWURSeEJNMnBGQ0FLc01NU3d0QjZjZ1NTeXFoRkFEQ0M0N2dna3N1dVR4eVNTL0FVTU5rSml0dllyVWxsamlqano3WUNQTEVFMDBZY1lRTkx4aHd4Y2F5dE5LZFFNVjhSTW9HQVJ6dFNDS0pPT0lJSTR3ODBzZ2x1VnIvVW9qZmhRVCtoemF6Q1hQekVVWU1ZWVFOTTRUUWd5cXB3Q0tMdXdMSkFzb25kVGdRd0Fndm5HSEc1MlNFTHNqb2d3UVNTT0J1Rk9LR0c1ZmswMDgranlTaHVBMjAwOENDQ0FiWUVZb29wYVJUWFNzZWVNQ0JBaCtNTUlJWllpUS94aGhnMEZ3R0lOQ3ZIajBmMVBURER6dElFR0VFRGR6VE1NTU1JZ3h3eFNlZmtISU9mNlZvb0VFRkNYd0F3Z2hlVENHL0YvUTNjZlBYWDdzQjlpSFRSSmlQR1VQbzN2ZU1Od01RQk1BQ0hPakFKeTZHRDFGa0lBTVNFSUQ3UUNDRCtFMEJDRUR3Z2hIRWRvUU9IaUVKWU9pRnllamhpQmpVb0FZcytONE1qR2U4QURoQWZSNHd4NHhFRVlFSVJEQnVJSENCREhiSVE5b1pnUWlLRTRTLy85QjBEQyt3Z0FZMVVPRUtXV2hBQjBnQUF4MWdJQ2hxR0FFSmdnQUVJdUJoRExaWXV5Rm96empXd29ZWnVLZkVBYkp3QkFaY3dCTTNJTU4vNUdPS0VWaEFBUUlnQWpTNndBVXZlQUVOOUZpRDduMUJJUDl6d2ZkT3VNSkNubkVFSHdEQUFoWVFBUStjVHlCMW9PSWN6NWpIRjdDZ0JVZjBJMmJVWVFNa0VuS0FTMFNqOFJMSnlBVjRnbE1DU1FVVk5WZUNFYkRBbFN5NFpBdTYxOGN2N01NZjJCaENIOGs0ZzFlZThYMGcrSUFBR0JrQlVWenBIN2JRUUEwZE1JQVN4UEtJbWV3ZURRSm9oT1lJSTREUzlGNEtsd2pNQUNTQWlyS3drRGc4RUFFSUhvQUVLNWdsOXdJSVJDQjZjUWhORU1UMnBwbk5Ybjd2ZldnRWdBTnEyUDhCR3cya0hhRElRQVVxOElBQndBQUhRMGlvUW9sUUJDOFNnUWdJWFdoQzZkbTlXS0l4QUFWNElnWSs0YnVCNktNVkhlQUFCNnpBQUJYZ0FBZEZTS2xLVlpvRUp2eEJFb2RvUWtJZjZrNXNZbklFSVJpQUJDeXdnUTNZNHBoc1F3TWFQc0VGS3lEZ0IwZ293aEtVc0FRMk9KVU5TK0NETWVBaGoza3dnd2xKb09rUUlqckxGcXdnQkFvUUtSYytnWTVpYVFRVWRSQkZLT3dBQlI0NFlRMXRpR3NiMkFEWE52eGlIdm1vQno3b29ZdWtyalNpT0doQkNReGdCVFRVQVJTejJJOUJib0dHVXBRaUZYaDRnQmI2OElZMnZNRU5sMzFESDVBUmozYlVvNnE2Y0lJUzFrQmFsUTZoQ0NkQWdCUjJGNHBVbktNeUJNRkhXbVZoaTFiLzRHRUNhZWdESWQ3QVc5NFNJaExiTU5FN3RrR0l1SksydENuRkFRS29RS0ZVdEtJWWxEc0lPVG9naTF2Y1loaDVxRUljNUVDSTd2cjJEWkhnUkRNbVFRZzF0R0VOYjREcmNYTndnN1BKUWlhM2FJZFozd1VMVDN3REhPS0lCaXV3QUFmdWV2ZTd1K1V0ZWtrYlZ6WGtZQWRaNk5rMzVEV08rUmFFSHlJSlIxcktNUXc3d0dHN2tmaHZnSHZiV3pXb1lRZENRQVhGd2tIaTNsZ0VIeDRBUlRyV3NoWld6RUc3Y3Nqd2JyMjdXdytyUVFnUW9BTTAyb0VUZElUbEltUWhYenJJOHBaMjFJSU8vTDJ3SE9MQTVEaWtRUWhDcUVJZXBDR1BwYnpsSE9mQUIyYndFb29Oak1NeGZubWRORjZSQnpwVTRjeFZnQU1kVmpHTWRvekZlWHF2UzRlSi93RmJqUFRERmhoSUJhZHlreEhQSUFjZXl0bGFSZ2I5RUhPVWxTVjE3a2M2cmlJTGZTemtMbDdCQnpyQzRZNDZiOFVsNktpREJrb2hqbnM0bU03K3dFYzdpZ0dPZEh6NjBwaU9SZkJFSVl0djRNUWVPZ0hIVEtKaEQwdWoraUF2Mllrc1NoR0w5OTRDSE9qd3phMkhqZXVoQkFRQU93PT0nLFxyXG4naW1nL3JlYXh5cy5naWYnOidSMGxHT0RsaEVBQVFBTlUzQU1ab2FMQXNMTWRwYWMxNWVjVmxaYmMrUHN0MGRMNVFVTVptWnRTTmphNG1Kdi8vLzdJd01NeDNkNjBrSk1SaFljeDJkdUN1cnI1UlVjNThmTEV1THJNeU1ycEZSYlk3TzhweWN2djE5ZFdQajd0SlNidElTTWx1YnRxZG5jMTdlODE2ZXE4bko3VTRPT0d3c01OZVhyWThQTnlpb3RxZW5ybEVSTGhBUUxwR1JyUTFOY2x0YmRHRmhhOG9LTUJYVjg5L2Y3NVNVdCtucDlDQmdjK0FnTVZrWks0a0pQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURjQUxBQUFBQUFRQUJBQUFBWjZ3SnR3U0N3S0F4eEV5c1pzZ2dveGpaQVpzZ3hvQWdUcDBIS29GTUxQd0NBQUFBd3lDQ0N4Qmt5YmNNWEx0S25ZaEM2NHZ0YW9IWVFsZW5BQ0tFeENIWUpORTAxQ0k0bE1NSXczQ3lLSkVnU1NOeEdKRHpXWk54aDZCUUdlaGtNTExIQ1lwWGRGSnd3MkZCYzJyRVkzR1I0eks3Uk1BYmEvUWtFQU93PT0nLFxyXG4naW1nL3JlY3RhbmdsZS5naWYnOidSMGxHT0RsaEVBQVFBTVFBQVAzOS92RDA5NEtodmxpQ3FGZUJwMktKclZ1RXFtQ0lyTnpsN2VqdTgvYjQrdkgxK0ZlQ3FJT2l2L243L05MZTZJaW13RytVdGVydjlJQ2d2SWVsd0grZnZIT1d0dmo2KzhEUTMrdnc5SFNZdDlyajdJeXB3NWV5eWYvLy93QUFBQ0g1QkFFQUFCNEFMQUFBQUFBUUFCQUFBQVV4b0NlT1pHbWVhR3BHQXpPOEwzR1VsZ3FSaHRxUmhGcVJBNVVBS09TcEdxU0NpbFBTQ0o1UXdZU0NVVm12Mkt3cEJBQTcnLFxyXG4naW1nL3JlZG8uZ2lmJzonUjBsR09EbGhGQUFVQU1aR0FDQklrREJRa0RCUW9EQllvREJZc0RsYm1rWmJtVEJnc0R0Z296dG9zMEJvc0VCb3dEQnc0Rkp2cEVCdzBFcDN3a0I0NEdwNXFWVit0a3ArNEZoOTBGNSt3MUNBOEYrQ3ZWQ0k4Rm1HNzFpTTdXbUozR0NROEdPVDdtaVY3M0NZOEhDZzhIR2k3bmVrNzRhazc1cXR6STJ3NzZPejBLSzEwcEM0OEpxMzdKdTQ3S0c3NjYyNjA2cTcxYVM3NzdXOHg2bSs3NnErNzdqQTBLbkY3clBDNzdURTRMM0YxSzdIN2JmRjdyVEw3ci9PNmRIUXlNZlI2OC9TMU1qVTZjM1U3YzNYN05yYzNON2MyZHJlNCtIbTZPdnE2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUg4QUxBQUFBQUFVQUJRQUFBZUNnSCtDZzRTRmhvZUlpWXFMUHpreFFFV0xnelF3SlpZalBKSTRMaE1KQ2c4ZUlqNS9SQTZJTXhnREVoY0pCeHdoT2pjTGlDb1RCVUYvSkFnQ0hTQWZCNGdwRXcyRE5oRWdIQllEaUNzWkJvTkRLQjhXREFHSU5SZ0VRb0lPQ3djREFRQ0pIQkF2a29VbkdCWG5oUlFZSmozc2dqc2JHakx5Z3l3dCtQejkvditCQUFBNycsXHJcbidpbWcvcmVmcmVzaC5naWYnOidSMGxHT0RsaEVBQVFBS1U5QUNOaUlDUmpJQ1ZrSVNkbUl5bHBKU3BxSlN0ckppNXZLUzl4S2pOMUxUWjZNVGg3TWp1QU5UNkRPRWVQUUVxU1FrdVVRMHlWUlU2WFJsQ2FTRmlYVVZxWlUxNmRWbU9oVzFtbVVHV2tYVnlwVW1pbllGK3RWbXFwWW1HdlYyU3pXbWUzWFhTemEyaTRYWFMwYkd1OFlIaTNiMnk5WVcyK1ltL0FZM0RDWlhIRFpYNitkWExFWm9MQ2VZUERlb3pJZ1kzSWdvN0poSkhLaDVUTGlwZk5qWmZQanB6U2xLZlZuNnJXb3EzWXBhL1pxTEhacXJMYXEvLy8vLy8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FEOEFMQUFBQUFBUUFCQUFBQVpjd0o5d1NDd2FoNmVqVXZSUkNsa29FcWkxd2loVk5wNHVoN3VOSk1aVWJlZnlhRXFoeU5IRTVBZ25FR2Z4SVIrQzY4S0lRN2hJSEFwSEVCMFpEQW9VTUJjQ1JnOGJORE15TVM4YkFVb05GaFVJQmdNQWNuNTRRd1NmZUVFQU93PT0nLFxyXG4naW1nL3Jlc2V0LmdpZic6J1IwbEdPRGxoRUFBUUFPWnJBSnZQazR6SWhhZldub0xDZkZ1UVZ6cCtOSWZGZ1pqT2tGU2ZTNFRBZldpcVlLdllvYVhLb2FyWW9GU1dUbHFlVlZhT1VsV2dUS2pFcGw2clZIbTRjWjNSbEtuUHBGeXBVMzY4ZGFuWG9KN1JsdkQ1NzJxdFk0VEJmTExWclcrdlo0akZnb1hIZTdMUXI0SEFkMmExVzVESmlXQ3VWb1hEZmthTlA1Zk1qbnEyYzBhTlFPcnc2WGk2Y0tiVm5XR2pXbjdCZDQvSmlHYXBYNExDZTZUVW0xT2RTbnU5Y29MR2VIU3ViYUxVbVRkN01UWjVNRnVkVlZXTlVNTGt2YURSbDE2aFY0ZkVmNFhFZm8vSmgzeS9kV2EyWEtyU3BvZklmTHpkdUp2UWtvdkhoWW5HZ21tcllZdkdnM1MxYll6S2dtQ2JXbmUzY1lySGc2YlZuSUhGZDJtNVhsS1ZUVWlRUUdxclk2bkZwMDZZUm15dVkxQ2FTS0xIbjRtM2cxT2RTNW5Pa0Q2RU9LSFRsbU95V1l6TWdvdk1nanQvTmNMbHZ1NzE3Vk9lU3o2RE4vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUdzQUxBQUFBQUFRQUJBQUFBZVNnR3VDZzRTRmhvZUlhMmMzVlNRMlNJZ2JaRWRpRFFKZ0xTcG9obVZQQ3psVE5Fa2FGRGlGUGlFWkFqOGpHQ2tBQjB3aWhGUVZMZ0FUUmhaZkpRRUpVSVJGWXlZWEhvSU1IekVCWVlnUmdsMVlVaUFGaHdoY2ExNHJIVEJSUFlacFd3cFhMd1pDQXc1WmhUVWNRMHBMUVVRelBBU0dXakpOQmljRFRsWUVMSWNvZ0R3d293T0NoRVJyMUZCRFNHaEhva0FBT3c9PScsXHJcbidpbWcvcmluZzMuZ2lmJzonUjBsR09EbGhGQUFVQU9aTkFQLy8vNit2cndFQkFRWUdCaGdZR1B2NysvNysvdEhSMFR3OFBCSVNFaFVWRlpPVGt6SXlNc3ZMeTB0TFN6WTJObTV1Ym1scGFZYUdobzZPanBpWW1MS3lzb3VMaTdhMnRrUkVSUDM5L1hSMGRJV0ZoZkR3OE9IaDRaYVdsaHNiRzcyOXZWSlNVazFOVGNMQ3dtQmdZSHg4Zk9ibTVnSUNBZ1FFQkFjSEJ4TVRFeWtwS1JrWkdUQXdNUGo0K0FnSUNDc3JLL2YzOXk4dkx5d3NMQjhmSHc4UEQ0cUtpdno4L0E0T0RnVUZCUXNMQzZxcXFuZDNkMmhvYURRME5FbEpTWnVibXlVbEpYSnljcUdob2J5OHZGaFlXTHE2dXRmWDEwcEtTaWdvS0tPam8zNStmZ0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRTBBTEFBQUFBQVVBQlFBQUFlamdFMkNnNFNGaG9jR0R3NkhqSUliVEV4QWpZWWNOVGc1SHhtVGhDUk1FaEZNUEp1Q0l5ZEJBQzRxTHgyakNFdzdnaE5NSVp0RFRCaURBREJNRjQwR05DZ05oQlZNTFkwbFREMkdJa3dMaHlZNkNUR0dSeWtLQllaRlRCYU1Ra3dRaFVRQ0t3Q01CUVFEQjRRK1RBR1RIa3hJZ3hSTVA2TU03VTAzTE9talJnSkpBR2hnZ2tDSndZTUlFYzVnWW9NQXBJY1FJMEtVRVdDSnhZc1lNMTRFTVlwUklBQTcnLFxyXG4naW1nL3Jpbmc0LmdpZic6J1IwbEdPRGxoRkFBVUFNUVhBUDM5L2ZYMTlTMHRMYjYrdmxOVFUyNXVicFdWbFk2T2pna0pDU3dzTEZGUlVjVEV4QXdNREdwcWFuNStmc3ZMeTlyYTJvMk5qWlNVbEVKQ1F2ajQrRE16TXdBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJjQUxBQUFBQUFVQUJRQUFBVmM0Q1dPWkdsZWk2U3VMR3RRSXNCWWRHM2ZoRWhaemVQL3dGOWlvck00VHFZSzhiSTdJa25Lb3ZNcGlqS04xSkcxbWEwdXVkMHROdndkWjhWVEtycDdXWk9sYkhFQlFxL2I2NElsQUhIcjJ4UWpBeEdEaElXRkJ3RnNTQ0VBT3c9PScsXHJcbidpbWcvcmluZzUuZ2lmJzonUjBsR09EbGhGQUFVQU9aWEFQNysvZ0VCQWZqNCtIMTlmZno4L0FNREE5emMzQWNIQnc4UEQrVGs1SWlJaUFnSUNLR2hvVFUxTlVwS1NsVlZWYm01dVhKeWNwK2ZuNkNnb0pHUmtaQ1FrS3FxcXZUMDlMQ3dzRXRMUzJOalk1aVltRDgvUDZ5c3JEYzNOMU5UVTAxTlRkZlgxMXhjWE0vUHo4SEJ3UndjSExlM3Q0Mk5qVnRiV3hZV0ZxaW9xQmNYRnhJU0VtNXVialkyTmdVRkJSMGRIUTRPRHV2cjYzRnhjUVFFQk1uSnlZT0RnMDVPVHU3dTdtcHFhZ3dNRENrcEtUbzZPcGVYbDBGQlFUQXdNQ0VoSVNRa0pFTkRRMVpXVmp3OFBQRHc4SDUrZnF1cnE0cUtpcSt2cnhNVEV3SUNBa2xKU1Y5ZlgyRmhZYjI5dlJVVkZSb2FHclMwdE5yYTJuZDNkLy8vL3dBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRmNBTEFBQUFBQVVBQlFBQUFlL2dGZUNnNE5IVDRTSWlWY0NJRlpMRVZXS2lSQXdWazA4Vmk0R2tvTUROQWdNVjFWVUJhQ1NNaHhXRFp1RFVsRldUZ0NJSFZBQk01R0lGMHhXT3pXQ0FDMEJLVW1jVndvSEN4VlhOMVkrT01XQ0pFRldBMEFsMElRSlZnODVWaVBZZ2h0V0VpYlU0RmNaQndSWEt6L2dCQXNPZ2hwV1U5Z1RWajJDR0ZZMjJCOHZCQWlxb3FRQk5BQTZoQkFTRVNCQk1SVldLQkN5WUVWQk1SUUZpaEFDRU1QRGxJOGdRWVpnUVNUUkVDc29VNnBFaVNTUkFDTlVZc3FjZVFMWGxVQUFPdz09JyxcclxuJ2ltZy9yaW5nNi5naWYnOidSMGxHT0RsaEZBQVVBT1pNQUE0T0RsbFpXZjcrL2dJQ0F2cjYrZ1VGQlFrSkNRRUJBWEp5Y2xSVVZPN3U3cmUzdDFOVFUvdjcrMjF0YmVQajQ4M056VlpXVnBPVGs2cXFxcEtTa2w1ZVhpOHZMek16TStUazVCZ1lHRDgvUDBWRlJSWVdGbTl2Yi9MeThnY0hCMXRiVzhmSHgvVDA5QThQRDd1N3V3TURBMlptWmdvS0NuZDNkMkZoWVFRRUJDTWpJMnRyYXg4ZkgycHFhdC9mM3h3Y0hGZFhWem82T3JpNHVLS2lvdmo0K0o2ZW5wU1VsQWdJQ05IUjBUQXdNTUxDd29XRmhWeGNYQ1VsSlRFeE1aZVhsd1lHQnRmWDEwUkVSSU9EZ3cwTkRhbXBxV1ZsWlh0N2UyQmdZQlVWRlFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFd0FMQUFBQUFBVUFCUUFBQWVvZ0V5Q2c0STVDUkZDaElxS0JBNUJCZ1lmQ0EyTGloSktTd2tQRHd4TEdVQ1ZUQXM2U3o4emhBc1dTeGNraEFxZEhEZWhGRW9ITVNLQ0ppVWRsS0ZNQkN3RERvSUJTcjZLQUVuRXhzZUR5Y3ZOenNwTXhkR0N6OVRNMGRqVjF0emF6ZC9XVE5ndUEwa2V4d285QndpQ05Ta0RJendDaXdKRVJTcEhCSVE3TWtzK0poQXlzbUtKaGhDaGJNQllzZ0VDaENGTFd0Qm9KZ0FGamdJRlRpQ3BaKzBGaUFvWVFnVUNBRHM9JyxcclxuJ2ltZy9yaW5nNy5naWYnOidSMGxHT0RsaEZBQVVBT1pXQUp5Y25McTZ1Z0VCQWZMeThnTURBd0lDQWdZR0Jzbkp5UXdNRFBqNCtQLy8vMmxwYVIwZEhWNWVYc2ZIeCs3dTdxS2lvaE1URStucDZRVUZCV3BxYWdrSkNiNit2dFBUMHcwTkRmNysvcG1abWMvUHorUGo0M3A2ZXAyZG5mcjYrclcxdFdCZ1lFdExTd29LQ3Fpb3FKK2Zud2dJQ0hSMGRNWEZ4YTZ1cm9XRmhiR3hzZC9mMzJob2FERXhNYkt5c2prNU9WVlZWU0VoSVNNakl4SVNFZzRPRG14c2JLeXNySmFXbGxkWFZ5b3FLbjE5ZlV4TVRHUmtaTVRFeExTMHRGMWRYVlpXVm5KeWNzREF3RHM3TzFSVVZFZEhSeTh2TDQ2T2pvaUlpRUpDUWo4L1A2YW1wbkZ4Y1VaR1JpY25KL3Y3KzlIUjBVMU5UUlVWRlQ0K1BnQUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGWUFMQUFBQUFBVUFCUUFBQWZCZ0ZhQ2c0SWNGQTBPaElxS0YwQUdBbzg4Rm91RURrVUVCREVIRWhRalZVb2dpeWdpa0EwWGhBTkNHRlV3TDRSVEZTMGNsRllKSFRRVEVvSStWVW0waENsVkpZSklWWk8vZ2g4RkM0STVGUXJJZ3pvdWdqSkUwWU1oRXhrUFZVM1lnamhWUHhCVlRPQldHMVU3TmxVRDZGWVJSajBGSytnYkdFc0REQkVzMkZCUEVCeXdNc1RFa1F6UnBBaUFNRWhEbFNESU9sUTVvV2hCRlJXMFNCUndza2dCRlFJYUFvZ2NlYVBHakFTVTlsVlp5WEtsd0Y4UFBBQ1lTUk5BRkVXQkFBQTcnLFxyXG4naW1nL3Jpbmc4LmdpZic6J1IwbEdPRGxoRkFBVUFPWkVBQlVWRmZqNCtMYTJ0b1dGaGYvLy95VWxKUXNMQ3djSEIwdExTd1lHQmhFUkVURXhNVEl5TWhNVEUxcGFXbDFkWFllSGg0bUppWTJOalkrUGo1T1RrNmVucDZhbXBxcXFxc0RBd0lxS2ltQmdZS3VycTFOVFV5b3FLcFNVbEttcHFjUER3L2YzOTFWVlZTQWdJSktTa2xCUVVJeU1qQTRPRGxsWldWeGNYSWlJaUk2T2psNWVYbEZSVVRBd01NVEV4RlpXVnNIQndTZ29LQklTRWdJQ0FpRWhJZjcrL2pZMk5wR1JrVlJVVkZoWVdGdGJXd01EQTRhR2hsSlNVdkx5OHV2cjZ4MGRIZHJhMmdBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUVRQUxBQUFBQUFVQUJRQUFBZWdnRVNDZ2paQWhvY0JnNHFLQWlkRGo1QThQWXVNQmdVU0poa1JLaEFJUXdPVVJBS1dRSlFFSEorTG93V2xvUVF0cVlLcnJhRkVCQ1d4SFNPMHRiWUlORDlFUVQ2OWl4NURRc0k1eFlvVXlNSWl6SU1rejBFdzBvSTQxVHJZUkJQVktOMHJ6emNLR05JQkRBZUpRa0VLTWNVQkN3a1dnKzB6SUxYeUNSV0w3UTB2S0lWd2NlQkRxSDhPZHFSNHdFS0RqQU1YZWdsaEFLQ2l4Um9idWtrTEJBQTcnLFxyXG4naW1nL3JuYS5naWYnOidSMGxHT0RsaEZBQVVBUGNQQU9UbTdHUitsRXhtaEN4T2JIU0tuSnl1dklTV3BEeGFkTlRhNU1UTzNGeHlqTFMreUpTaXRQVHk5Q1JDWkFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUE4QUxBQUFBQUFVQUJRQUFBaFhBQjhJSEVpd29NR0RDQk1xWE1pdzRZTUVEZzBXWUJDUklJSURBQ29LUEVDZ1lZSUVEQUlNY0xBZzRRSUNJeDJvZENDZzVNR0xLeFVvTUxBZ1k4SUFEaGdncU1oQWdFYUJERHIrQkZBQTRzK2pTSk1xVlJnUUFEcz0nLFxyXG4naW1nL3JvdGF0ZS5naWYnOidSMGxHT0RsaEZBQVVBT1pvQUhsNWVWNWVYbjkvZjRtSmlYUjBkSFYxZFllSGgzcDZlbmQzZDFkWFY0R0JnVnRiVzF4Y1hJcUtpbDlmWDl2YjIvMzkvY0hCd1c1dWJuTnpjOFRFeEwyOXZaS1Nrc1hGeGQvZjMzNStmc0RBd0xLeXNyT3pzM1oyZHNQRHczRnhjWU9EZzhiR3h1WGw1Y3JLeW9LQ2dzN096b0NBZ08vdjc2T2pvOWZYMTMxOWZhK3ZyMjl2YjJGaFlWbFpXWHQ3ZTJWbFpXaG9hR05qWStycTZscGFXbDFkWGFTa3BQZjM5OTNkM1hKeWN1am82UEh4OGZEdzhQdjcrK1BqNDlyYTJ2YjI5czNOellpSWlMYTJ0bmg0ZVBMeThwV1ZsVmhZV01uSnlkYlcxcnU3dTQrUGo4Zkh4MnRyYS9qNCtLS2lvb1NFaEtxcXFtbHBhV1ptWnJXMXRlSGg0ZW5wNldCZ1lIQndjSXVMaTc2K3Z2VDA5TlBUMDdHeHNacWFtcDJkbmVUazVKT1RrOXpjM0tHaG9lN3U3cGVYbDVDUWtHMXRiZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFHZ0FMQUFBQUFBVUFCUUFBQWY3Z0dpQ2c0U0Zob1ZrRVdNb0lTZUhoVGdOTWdrTUFRdFNHV0tQYUJ3dE5Rd0pMaTRMVTAwc1E0Y2FsUWxRRlVrcEVXWXdIeEliaFE4dEFUQWFobHhFSFI4amhBMldIbzhsTEFvR2d6c3lDMHViYUNnSVpZTVZSd2tYMFdoV2hCWUJORlhiRDA4cmdnTUJEanFiWUdFSUlBZ1lhRjVYRFBLR0VDc0FCd0F2QWxGb1JqaHdvTTJRanh3dkpnQlFNV0FBR2ljU1ltUTVkTU9DQWdJbWxBbVlnZWJMbVJoS0hsRVJRS0tBRUJJUjBQQW9RRUJDbHg2RUlGQXcwYUNBQndNSFNnaDZnQVhBQkFVYktGRGdZRURBZ0FKYTBCUVJBV0ZRa0FNZEJBRFlaeFFFZ0JDYnR0aklRR0FDQVFRcWpJalloZ2JJRHlSTVVqZzZGQWdBT3c9PScsXHJcbidpbWcvcnhuLmdpZic6J1IwbEdPRGxoRkFBVUFNSUVBQUFBQUg5L2Y0ZUhoNWVYbC8vLy8vLy8vLy8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FBUUFMQUFBQUFBVUFCUUFBQU0xU0xyYy9qREtTYXU5dUlVOUZ0ZmZ0bmtqSXdiRVNhS21tTHJBaXdLMGpLcUsyNDY0REk2Q2pZQTBaQVFEeFl4eXlXdzZDUWtBT3c9PScsXHJcbidpbWcvcnhubWFwLmdpZic6J1IwbEdPRGxoRkFBVUFNSUdBQUFBQUVCQVFFQkF3SUNBZ0lDZ3dLQ2dwUC8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FBY0FMQUFBQUFBVUFCUUFBQU5DZUxyYy9qREtHS2FxSzJDcDIrYWVkWHlqK0dta2c0clE0QmFTSUJPSzY4YXlVTnNPc09TNmcyMXdBQmlQdmdOd2Qyc2tsVGttTWJJVThpS0VHV3ZMNVNZQUFEcz0nLFxyXG4naW1nL3J4bm1hcDIuZ2lmJzonUjBsR09EbGhGQUFVQU1JSEFBQUFBRUJBUU8wY0pFQkF3SUNBZ0lDZ3dLQ2dwUC8vL3lINUJBRUtBQWNBTEFBQUFBQVVBQlFBQUFOT2VMcmMvakRLR0thcUsyQ3AyK2FlZFh5aitHbWtnenFDMExRT0lSc0tYTHREWGlpeXZNQzJYSTdYWTdSY0N1R0E2QU00ajRDa2tFbjR1WUxUUTY5NnNIVngyZTMzSlNqb1JPaTBlcEVBQURzPScsXHJcbidpbWcvc2F2ZS5naWYnOidSMGxHT0RsaEZBQVVBTVp2QUFBQUFDRXlSek16WnhFN29UYzJialE4UnprNWNqRTVtRHc3ZUJ4QnB6VTluRFk5bkQ0K2ZUTStuaVJFcWpWQm8wRkJnenhDb2p4Q295aEhyVVJFaVVkSGowaE5Wa1JKcWpSTnMwcEtsRU5McmsxTm1sQlBuejlTdUV4UHNreFFzbE5TcEV0YmNWWlZxa3RZdmxSV3VsbFlzRkppZGxaZXhGeGR3Vnhkd2x0cWZXQmp5V1ZrdzJkbXpHZG56R3hyejJkMGhXeHIwVzV0MDJoNGpYQnYwWEp4MTNWMDAzWjExSGQyM0hOL2ozcDUzM3Q2MW54NzE0R0Eyb0dBNW9TRDI0aUgzWWVHN0l1SzM0cUo3NCtPNEkrTzg0K085SktSNHBHUTlaU1Q1Sk9TK0pTVDlaaVg1WnVhNTVxWi81K2U2YUNmKzZDZi82S2g2cVNqL0tlbTdhaW43cXFwLzYyczhLNnQ4YTZ0LzZ1MHc3T3k4N0sxNExTei83Tzd4cmUyOWJlMi83eTcvN3pCeXI2OS84VEl6cjNLNGNiUjVjN1o2ZExiNnRUZDdOamc3ZDdsOE9EbjhlcnU5dmI0Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBSDhBTEFBQUFBQVVBQlFBQUFmUmdIK0NnNFNGaG9lSWlZcUlYMTliV0ZWU1RVbEVRRDA3TmpTR1cyTktiNStnYjI0akpTV0dWMk5Eb1o5dWJSMENJb1pVWXo2cnJXc1lPaUNHVDJNNG9iZG9FelVjaGt4ak1xREJaZ2t1RzRaSFl5MnNiV3RvWm1VREtSbUdRbUZnS3ljakhSZ1RDUU1vSkJXR1AxMVpVMFpCUGpvMU1la2ZGSVk4VmxCTElmOGhUS2dnNGVFQ0JFTTNvaUFKRWdKQWdUTnBZR2k0SUlHQklScE81SVVvTUVNTm14d1BJaWhBWU9oRkVSOE9BbWp4SW9hTWhRWUxEaGd3eElXRkNCQWNObVNvUUFFQ0FnUUdDQ3dhU3JRbzBVQUFPdz09JyxcclxuJ2ltZy9zY2lsbGlnZW5jZS1xci5qcGcnOicvOWovNEFBUVNrWkpSZ0FCQWdBQVpBQmtBQUQvN0FBUlJIVmphM2tBQVFBRUFBQUFQQUFBLys0QURrRmtiMkpsQUdUQUFBQUFBZi9iQUlRQUJnUUVCQVVFQmdVRkJna0dCUVlKQ3dnR0JnZ0xEQW9LQ3dvS0RCQU1EQXdNREF3UURBNFBFQThPREJNVEZCUVRFeHdiR3hzY0h4OGZIeDhmSHg4Zkh3RUhCd2NOREEwWUVCQVlHaFVSRlJvZkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGYvOEFBRVFnQVBBQThBd0VSQUFJUkFRTVJBZi9FQUswQUFBSURBUUVBQUFBQUFBQUFBQUFBQUFZSEFBUUZDQU1CQUFFRkFRRUFBQUFBQUFBQUFBQUFBQUFDQXdRRkJnRUhFQUFBQlFJRkF3SUNCZ1lMQUFBQUFBQUJBZ01FQlJJR0FCRWhFeFVVRmdjeElrRWpjWUV5Z2lRWFVXRkNKU1pHTTVQRDR6UmtOWlZtZGljUkFBSUJBd0lDQmdjRkFnOEJBQUFBQUFFQ0VRQVNBeUVFTVJOQlVTSXlGQVZoY1lIQlFsSUc4S0ZpSXpPUjhiSFJjcUxDNGtOamt5UkVaSFFWSlJiLzJnQU1Bd0VBQWhFREVRQS9BT2hMOXYyTnN1Tlp2bnpONi82OTZsSE5Xc2NrUlpjNjZ4RG1JVXBESFR6ejJ4RFFjODh0TVdYbGZsYjd4MlJHVmJWTEVzWUVDSjFnOWRJZHdvb1ovTy8vQUlCZVgrMGYzdUxML3dDYi93Qnp0ZjhBRi9xMGpuZWh2MlZlamZORm91N1JsYm5kSnVZaHJFT1hEQmRsSmdpMmRxTzJ5SUxtYnBKbVZFREttQWFTa0V3R3FBUXl3em0rbmR3bTRUQXBYSTJSVllGSlpRckdMaWJlNzFtSWl1aktJbXRoSHlUWkhHeGo1OU1zb25sbVNFaTFheUxsdTJYMkhKS2lHTVF5bjBob0lobUE2NGh0NVJ1cjNSTWJaT1d4VWxWWmhLOGRZcFhNV09OVVpMekI0K2FPWXBxMWwyMHU2bDVCdkdJSVJqaHM1VVRVY2lKU3FxbEtxQWxTS0laR01HZnFHbUg4UGtHN2RYWmtiR3VOR2NsMVpRUXZRTk85MUN1SEt2WFdPdDUxamVTazJMRzA3bWx1SmVyeHpwMUhSNUhLRysyUFNjcFRsVytnZFFBY2hEVEV0ZnBsN0VkODJESHpGREFNOXBodUdsdEo1d25nYWlQbldONUtNWXZyVHVhSjVaNmhITlhVakhrYkliN2s5SkNtT1piNlIwQVJ5QWRNRGZUTDJPNlpzR1RscVdJVjdqQzhkTGFPY0o0R21Yak4wOVMwODMveUIvM0tJL3RjYVQ2Yi93QlQvd0FYTC9ScG5OMGZ5aFNoL3dEYi93QTcvd0NadTJPNXY4LzBIUWRmL1U3R3o5Mm45V05kL3dDWi93QlovWWM3a2ZndnZzL2JkUHRtbU8zZjB4TkVLTU81bXJSdnVHYW1neU9wTy9KVm1nZTRSRUV3VVhSMnlpeUVvR0VIZ0NiNVdRRCsxaXZiY0xoM0czeU56clUyZU5qeXVNQXoyLzd2NXZaU29rRWFkNDhheDdRc3Jaa2xYM1FyWGh4eUpySjZXWVM1TkJuUElIS2JxQ2tvK1RESStnSHpCVW9HSDJhNGw3L3pHVUNYRGIzbnhFb2JDMkl6MlpudFoyNnU2WUhhMHBLcHIxOUh0L2lyWThjV05hTnNYY3ZKeklSOXhYZzhsanRpUWR1Ykw1cEVKcXJKbkIyZHNvUWk3UXJSY2dwaXBuOHNvbEQxSEVUemZ6TGNibmJoTWQrTGJyam0vTEt0bElCRm9ZRXE5Nm1iZmlJSjRVckdnQms2bWVqb3JIbis5K3lMeDdPNVBrL3pGa3Q3aCtvMzlqcHpWVmRONzl1dWpQUFRQTEV2YStGOFZnOFR5N1BCWSsvYkUzZmkwbUorK2t0ZGFZK2FwQWQ3OWtXZDNqeWZKL21MRzdQTWRSdjdIVGxwcDZuMzdkZGVXV21lZURkZUY4Vm44Tnk3UEJaTzViRTNmaDBtSSs2aGJyUlB6VjFCanpLcHRMVHoxMjEyMURjN3pQOEFyTGJpKzN0cnIrdjJsdGlqZCs5bFI3cXFjc2FUNlk1M095Y3JsZnBOZHpac3NsWm1QZnBFMHptaUJNOGVpbE5EM0hhTXBPR2hrN2o4bk4zVGM0bGtUdUhxSkUyS1pGQVRXWGVDQmpDZ2tnSnZtbk1IdCtPTlp1TnB1TVdMbUhGc0NwN3NJWmN4SUNmTXpmQ0J4cGdNQ1lscXZQcHp4cmFNYTNidm8rOG5jWTB1WWx3dGJqWFJhcUlQMzZaQkFoMDNoaFRJdWd1Uk1WU2lIdU9IdXF3eGoyMjkzYmtvMjFWMndjbzR3V0JSRHhCVFVxeWsyOVE0UlhTVlVmRnhtdE45T2RCWkRlOGJVajdtYVJqdThpWERQb3JvN2E2ckJSdUxsMGRNcUFnUXpFeEFLQlJVUFNJL2FOaU5qMjNNM1IyMjRiQXpydGVVa0dRSERXcURkcU1nTThCUFVLVVRDeUo3MC9iMFVNd2ZjcmJrUEkzNEsycllXdVphYzZoOXVzSjZSWUh5ZWNlM1BvaTRRY0lobVJIY3BPcVVkY2d6eFpibmt0YnMrMW16REFNY0xENGtmdVh0MHF5bmkwU3FuaFNCUGU0Q2ZiUlVuYjlvdTV4NnBEVHQ2c1hVN0VxMzJlT2lYYUtLYWlieFRNVVUwVXlpSm5KaEVDbExyOEFySEZVZDF1RXhLTW1QYXN1TElOdGM2a2tGUnhKUHdkTS96YVhhSjBMYWlhdlExa1cwL3ZlQmkzMC9lVHVUYU1tbDN0V00yN1NVUVMyM0FKa1NYU01RVGxYS2NSS2NvQm9HWVZZWjNIbVdiSHRjbVJNZTFWR1pzQmJHcEJNckpLbVlLa2NENnRLNkVCWUNXNjZlT01SVW1sejU4allOMzQrWGRTY3FlSWRSQnp5Y0d1azRUYktLU1Rac3Nac2tReHdFVEdNSWlJRlR5UHBvT05GOUw1c3Fic0tpY3hjblljRlN3Q015M0hUK0U2ZGRNNXdMZGFSUGh2OEFqSzkyc3BjZjdsakUyU2NXbythZmhFSnArVndrb0xTUlZXM0NQVjNwRkRHWFR6cVZBTTh0TWJuNmcveWUxT1BEK1k1WXZhM2FPSkxTTHNZRUhHdU1qc053V28yTHROSjA5OVdmSzNKUzBsSmVPWXZlWVJqQlphY1l0N2dyUlhYWFJPb3pTajRJaWRSRHREa01BTTBTcDVpTldRL0REZmtkbUpGM21TR2RnTWJIRnFBRERsODA2aHdmMUducTBydVdTYlI5L3U5MVZuRXBjdjdraTd4ZHpQYkhETllKRmpaaWl2OEFqLzZNc2RKSk9SMmV1MmF5cm9BRlgyQXB5dzRtSEQrWmsyeTR1ZHpXeVhad081eDVtTXJyeTVpeHVISFd1U2RBWmlJMCszR3R6c0s1WDhic3hieFpwYkR0SGdHTU41TFZWVFhTZnFFeVNXaTI2WkJSS29WRVFJM01YM0FPNEFGeXhCLzdURGplY2loc3lubU0rMEFJS0RpTWpFeVFUcTQ0ZDB6U3JDUnB3NGRyM1ZoeGNIeFBrcHBCU2toZVREb0laTmkrbEdxMnpzYkxvRWxYQ0s2Z0ZvZ3lVaWNwekYwOVJERTdOdWVic215NDEyclhaU3lxUk15c2hTQngzQjRFVWtDR2czY1B0N0tLcHFZYlNQbE96MDdZTGRKNTJNUEhSNzJSVkFCYVNGdklPeEJSK2RaQVJVY0pPRkJLWVZqWkpITHFJWjRxOXZ0Mng3SE9jL2grVTk3QlIza3pGTkVnNkt5aVJiM3dhY0psaEV6N3E2U3g1eFV1bHo1cmduTTAyczVxbkhIazJwTHBqVlpGQXFJcnBnMEFGU3JIWEtBR0FFZ0EyUnhON2RkY2FMNmQzSzRXenNXc2J3K1FLWmczZG1JL0YxUnJUT1paajEwSUdzNmN0NXRjRnNOWU1qaHE0bG5sMUlQV2pWUTZiU05PR3dWQ0pVS1VnSlRTUUVxYkVBdEJmV3JGdVBNTVc0YkZuYkpEREd1RWhtRXMvRzdLSjEyNStNeko2cVJZUklqcG45M3BvVWc0dU43M2tKU2RhWFp4bkFMTll0OWRTWk9XNWJxQVVRUmlGVlFvNnVpb3pZcEJycnFFTVdtNXpQNFZjZUp0dGZ6Z1dYQ2Z5K1hiQk9VRFd5ZStUMmJZcHNBWFNaNGRQdXF0NDZ2ZTJrWTI1N09mUUZ6VFVtcE12cFJxc2cwU2R5ek9vaEd4SGFoakhyUmZJbnpFeWdFOXB4OWRjTytiZVc1aStIY3Brd1kwR0pFTXNWeHR4WXFOSWJHdytHZFZveHVJSWduWDdlMnFzNUtTVXRKUjdpK25jK3dqR0N5TWJhMXVNVkRvM0t1dWljUll5cmhtNkV4RHFISVk2UjNDV29yWkZLSHJoM2JZVXhJdzJxNFdkZ1h5WkdFNEFEMzhTdXVvQU1NRWI0TlRYQ1NUMnA5SFg2NmwrdnVXdVZtcytiM1piVVl0QUpXdTFtWlluUWI3ODZweElNcTRNSmlIYUhJWVR1TXZjTklqVHBnOHJ4OHJDd1E3Yk00ekhNVVR0d2tDZVd2RU9Eb25SckUwT1pQU05JL2ZSemFWcTkxOXJYSGFrdXMyazdMV1lXdlBxRWM3YkI4d2lxVm5RdGhRS29kZE5jNmhkdmNNVXB5L2FLR0tQZmIzd3ZPdzdoQVUzQWZNblo3YVBrMFc2NkFwVUF6RWtIZ1RUaXJkQkI0YVUrc1lTcFZMVHpxdEpjYmFiRmpKdllubHJtajQ1MDZqbHp0bDloeVJZcHlsT1g2aDFBUXpBTk1hVDZaVkw4enVpNU9YZ2RnR0Z3bGJZMHBuTk1EMTBxdWZzanZmczd2SHlMeWZKOFB2Y2szMk4vcU9tcXFxcjI2OWM2TTh2aGpVK0YzWGhmRThqWldjdS84QVRhWXR1OVV4NmZiVEZ5M1JMVnBzVnY0YWNNWmVUazVhVGlmSXA0NjBuVDFmcWZ4N1pJQ3NDdnpxZS9wSzh4VzJRQTJ2dERFYkl2NXdmR21QR21UWlhaUW90N0RIdDJBYVh4M2J0T3VsRGhyODJsZXNiNVBjMmY1QmxVNSszWU9UZEVqM0R5V2tiSFppdTdSVUJ5QUxnL1dWVVRFaFNDbVl5MWZvWVNDT0U1dkpsM2UwUTRzdVpGdlZWWGNOQ2tXOW13QUdabUZqb3VvR1MxdFFQWlE5ZTg1eFBBWFRPeDcxL3dCZmN6UzZvdWQyZDdZZ1ZxMTBJanFsUkxRdVNreW5URU50QjlvRFlzUExkdHplWmd4TXEyNEd3c2t4T1VRcHkyamlwNFhrWGRFVWx6RUU5Yyt6cXJEOG8rVWJhdlMyZ3R5M0FuMzhtL24rVlRUbGRwYWplU1VSQm16QkZSUTRKZ2RRdTBsVCtuWEU3eVh5WE5zODNPemNsVVhEWjJKSEFnM3ZJQW1CMm1wR1RJR0VDZU5HZmhHRjhmSk5tQlU3d25MZG5XY2dpbEkycThrV3pGTnpKSkFsdkVCaUFiaWlTaW55Y2plODJWSTZoaW0rcE54dXl6VGd3NWNUSVN1VlVaaXFHNk8zd0RBZHJUUVROTzRRdldRZXF1a3NlY1ZMcGFlZFVaTGpiVGZNWXg3TGNUYzBmSXVtc2NnZHl2c05pTEdPWXBDL1VHb2dHWWhyalNmVExKZm1SM1hIek1EcUN4dEV0Ykd0TTVwZ2V1bFZ3RmtkNzk0OW5lUmVUNVBtTm5qVyt4djlSMU5OTk5lM1hwbFhubDhjYW54VzY4TDRibjdLemwyZnFOTVcyK3FZOUhzcGkxYnBocXRjTmU3KzJ1dWk0RjYwazNma3ZtMkxXVWFPRTlwQlJLcEpkMlJNQk9WQXB4QUZEbEhJTmNodzM0amE0ODFtVElySXV3NWJGR1V5UWRWVW5Rc1IzUjkxZGhpTkI4VkZYa2VLdTZGYklPbVZxUkx4cmNUWWtaZWk4QkhyS3pRcVBnVU5JcXRURkFvQ2tJRkFVekw1L01wckFjVlhsR2ZiNW1LdG15SzJKcjhJeXVCaWhZNVliOFhXRmpzemJTOGdJNkJyeGpqUXF4OGVYSy9qWERoaWpNdTdGYU1qc1hWdVhnVlZTV1MyeUFKM0VJektRV3hWeXRoQkpvY2ZROVJjcWNXdVR6YkRqY0J6aVhkTTF3eVlJR016d1hNODNGUzNheUQ1WVBHa0RHU09tMzArNmg2U2hQSU5uM2RGVE1CWUxhVGFraVc1WWtneERsZFJGTUZoVVFYa0FTQk1DUzVBVEx2SElPbWVtTEREdWRwdTl1K1BMdVdSdVkxMzVxZ0V4RERITXpnTTlrR2trTXBrRG82dnRyV3UwanV2a3JaV2IyTlB0TG5kM1l4bjdqbVgwVnRvSmJod0Y0aTNjQUFyRmFGV0dzaFZmUU14TWJQRVBKbTVhWlFkeGhiQ3UyZkhqUmNra3gzQ3k4QzVHaEsrb0N1Z1NSb1ptZUZkUVk4eXFiVXdVVk1GRlRCUlV3VVZNRkZUQlJVd1VWTUZGZi9aJyxcclxuJ2ltZy9zZWFyY2guZ2lmJzonUjBsR09EbGhFQUFRQU5VOUFLWFcvNXlseHEzZS8rZm43NVNjdlFCU2U0UzExcjN2LysvLy84Ny8vN1c5MWdCQ2E3M0czdi8zNTJ0cmU5YjMvK2YvLzhiMy82M0czcVhlLzYzVzl6RjdwYTN2LzczMy85Ylc1N1hPNTV5OTNxWGU3M3RyY3ptRXBkYi8vN1huLzRTVXRaekczcHl0enNidjk2WGU5Ly8vLzVTTWxGSnpqUC9lclh0cmUvZi8vNXk5NTR5Y3ZlLzMvNXlNbEwzVzU1UzEzbEpyaEd1RW5Kekc5N1hXNTliZTUzTnJjODduOTlidjk1U2x0WXlsdFh1RXJaekc3Ly8vL3dBQUFBQUFBQ0g1QkFFQUFEMEFMQUFBQUFBUUFCQUFBQWFVd0Y1dm9DRHNDSXFCY0xuRUVEUWJ5MFpEd0RDRkF3SVBBSmc4VkRpQ2txbUFDYzdjMWlPa3VBWW9oOHZoTXdFOFNJRXJLSkx3SkNJZlhSWWdiaU1RQ0JBSkJ3SUFlRmNNR1FnbENCNFhqQ0VNVndNQk40aUtBak1uT2xjOU5RRTBJeEVVS3pFeUxpZ05tZ3dpTENJTU9Sd0ZGUWF4cEV3Y0N3VWR2TDVMTHc3QnU3M0ZFamJCdzhWTEVzZ0ZKdEhTRGlrWlFRQTcnLFxyXG4naW1nL3NlYXJjaHJlc2V0LmdpZic6J1IwbEdPRGxoRkFBVUFQZVJBT3J5K3V2eit0N0VrTmUyZnMrb1pQSG0yUGJ2NU96MCt1LzErK1RPcS9UcjI5U3djTW1iWWNHT1YrYlJyOUt1YmMrb2FlangrZG02ak96eit2cjI4L1RyNHZuNy9hbGhPYnlGVXZmNi9lTEx1YjZHVGQvRXBmSDIrNjNhcFk3R2hHcXJZNFRGZmIzWHVrK1JTR3FzWkxxQlRNdXBsSkt6ZEpYUGp2ejkrOXU5aE0ybVlyU3ljY2ZFanRibjRhYlhvMkNmVmFQVW02blhvTU9TV05DN25XZWFWZEtzZDVkaFJ1cng2ZUx1N1l5eWlKWE9qbVNMUkwzZnhJN0JqTEhicDVta1o0U2FVdno1OTFhZlQ0QzllSW5KZnVuV3BKWitSZXJtMk9mVG9GdWFVNG5KZ3A3UmxuVythck56UysvczVZakhnZGZjeG9qR2dJdkZnK3pjdi9qeTdtcWtaSCs5ZCtESHRwclBrb0hCZXJGeVJjdWdacDNIbDcyS1UvZnc1WXlpWS96NitmZng3ZlA0L0crdmFaaUlSNUhKaDZUVW1vSEVlVyt3YVlyR2cwK05TVmFQVXRibzRLellvcC9TbDRDL2VtMnBhRytmYTJDa1dZakZndHpuMjM2K2VFV0tRR3V0Wk0vbHpPZlN1cC9SbG8yOGlGbUlRb08rZ0hhNWJtcWxaTkt0aEhhNGJvaTVhTW5nMHBES2libUFTR0tvWE9ueTkyYXBYWWpHaFhPOGFXK3ZaM0N3YU15aWNJTEJmb2pJZlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSkVBTEFBQUFBQVVBQlFBQUFqL0FDTUpIRWl3b01HRENCRXFFUENBQUFFSUVnb2tGRWhsd1FBSFh3d2tZREdveWFJcGVRd3FXSkFnQXdJQWlGNUFPdlBEUXhaQlhWSVFGREFnUTRBSUFIb1VjU1BEekljM1RCcUpJUGpBUVFlY0FORHNpZkhuUkJBOE85UllJVWpBUUFBQVdCVTk4dU1EaVJjK1JGQ01JTGpDd0FTc0FRSk1hRE1uU2hsQVdxQ3NJUWdoUVllMEFRNFFPcFNvQmd3N1Mwam9JQ2pCaGdVRUJ3NjRHSEtsRUIwcElkS3d3VUd3QUJjT0ZzWWd5QkdIRVJ3eUlKVElxV05RRHdOSEhDcFVvTUhqRGhnZ1I1NGdMQkNvd1lZTkdFcjBhV0ZFeFFVeEV3ZHFhQ0FnaVFBR040UUVGNmdCdzRBQk03WlFXQzRReXdWRFRxcFFIMGpCUkpqdDRNRUhBUVFBT3c9PScsXHJcbidpbWcvc2VsZWN0LmdpZic6J1IwbEdPRGxoRkFBVUFPTUlBQUFBQUJBUUVEQXdNRzl2YjM5L2Y0K1BqNStmbjYrdnIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUFnQUxBQUFBQUFVQUJRQUFBUXpFTWxKcTcwNDY4MjcvNU1BakdRNUNoYkFxUldydVJPTXlRaWQzcUJrVndldUVaYUFxWVFZRUk2R0hEQ0hLRENmVUVzRUFEcz0nLFxyXG4naW1nL3NlbGVjdGFsbC5naWYnOidSMGxHT0RsaEZBQVVBTE1NQUg5L2Y0Q2d3REF3TUsrdnI0K1BqMjl2YnhBUUVLQ2dwSitmbjBCQXdJQ0FnQUFBQVAvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUF3QUxBQUFBQUFVQUJRQUFBUkhrTWxKcTcwNDY4MjcvNU93akdRNUN0YkNxWldxdkllVXpBSERVdTZyeUhOaXB3emRqdEh6M1NhNUYyK0dTUTRETk1ZQXVBRllES1lTb3dEb0lrQU1LNWhCR0p2UGxnZ0FPdz09JyxcclxuJ2ltZy9zZWxmcmFnLmdpZic6J1IwbEdPRGxoRkFBVUFOVUFBQ1FrSkFBQUFDVWxKY2pIeDNaMmRnc0xDOG5KeVVsSlNUczdPMjV1YmdZR0JwV1ZsYy9QejFkWFZ5TWpJMmRuWjIxdGJWUlVWTTdPem10cmEzNStmZ0VCQVFVRkJTRWhJU0lpSWkwdExaU1VsSFYxZGJLeXNtTmpZNDZPamw5Zlh5QWdJQmNYRngwZEhicTZ1aTh2THljbkp6YzNONHFLaXYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ2dBTEFBQUFBQVVBQlFBQUFaeVFKUndTQ3dhajhpa01na1FBSjVQSnlBcFVFNlBWMlMyV0tWcWpRNkpjRXNrb3hBQUJzb3M3QklqSDlMQVcreFFEcGs1MWpnNUlTNEZla1ZtQ1I0bEJRRUJna1JPVWlnRUN5QVdpUUVHU3lnYkVDSVZsQUdYQkEwWUFRb2pBNVpMQkFjY0pnRUpsMElQUWhvQklhKzJ0MEpCQURzPScsXHJcbidpbWcvc2VwLmdpZic6J1IwbEdPRGxoQWdBTkFIQUFBQ0g1QkFFQUFQd0FMQUFBQUFBQ0FBMEFod0FBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0FyQUFBck13QXJaZ0FybVFBcnpBQXIvd0JWQUFCVk13QlZaZ0JWbVFCVnpBQlYvd0NBQUFDQU13Q0FaZ0NBbVFDQXpBQ0Evd0NxQUFDcU13Q3FaZ0NxbVFDcXpBQ3Evd0RWQUFEVk13RFZaZ0RWbVFEVnpBRFYvd0QvQUFEL013RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek1yQURNck16TXJaak1ybVRNcnpETXIvek5WQUROVk16TlZaak5WbVROVnpETlYvek9BQURPQU16T0Faak9BbVRPQXpET0Evek9xQURPcU16T3Faak9xbVRPcXpET3EvelBWQURQVk16UFZaalBWbVRQVnpEUFYvelAvQURQL016UC9aalAvbVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMllyQUdZck0yWXJabVlybVdZcnpHWXIvMlpWQUdaVk0yWlZabVpWbVdaVnpHWlYvMmFBQUdhQU0yYUFabWFBbVdhQXpHYUEvMmFxQUdhcU0yYXFabWFxbVdhcXpHYXEvMmJWQUdiVk0yYlZabWJWbVdiVnpHYlYvMmIvQUdiL00yYi9abWIvbVdiL3pHYi8vNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWtyQUprck01a3JacGtybVprcnpKa3IvNWxWQUpsVk01bFZacGxWbVpsVnpKbFYvNW1BQUptQU01bUFacG1BbVptQXpKbUEvNW1xQUptcU01bXFacG1xbVptcXpKbXEvNW5WQUpuVk01blZacG5WbVpuVnpKblYvNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QU04d0Fac3dBbWN3QXpNd0EvOHdyQU13ck04d3Jac3dybWN3cnpNd3IvOHhWQU14Vk04eFZac3hWbWN4VnpNeFYvOHlBQU15QU04eUFac3lBbWN5QXpNeUEvOHlxQU15cU04eXFac3lxbWN5cXpNeXEvOHpWQU16Vk04elZac3pWbWN6VnpNelYvOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBbWY4QXpQOEEvLzhyQVA4ck0vOHJadjhybWY4cnpQOHIvLzlWQVA5Vk0vOVZadjlWbWY5VnpQOVYvLytBQVArQU0vK0FaditBbWYrQXpQK0EvLytxQVArcU0vK3FaditxbWYrcXpQK3EvLy9WQVAvVk0vL1Zadi9WbWYvVnpQL1YvLy8vQVAvL00vLy9adi8vbWYvL3pQLy8vd0FBQUFBQUFBQUFBQUFBQUFnU0FDZnRRN05QSUVHREJRY21QS2d3MDc2QUFEcz0nLFxyXG4naW1nL3NlcS5naWYnOidSMGxHT0RsaEZBQVVBTVFBQU1YUDJBQkZpVk44cFN0Zmt3QS9mK1hvNjB0M28wcDFvZGplNHg5WWtVTndudHZnNWYzOS9SZFRqaGRUang5WWtPdnU4QUJBZ1FCSGppOWlsU1pka3g5WGp4OWFsZTd3OGdCR2kvTDA5Zi8vLy83Ky92Ly8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFCd0FMQUFBQUFBVUFCUUFBQVUrSUNlT1pHbWVhS3F1Yk91K2NMd3VqbEhTOWdra0FTYU11OTZ2UkJsSUNCR01vakl4SXBXV0V1QWhCRko5S0VUalVOSnlVNFZUV0VZdW04OW9VUWdBT3c9PScsXHJcbidpbWcvc2dyb3VwLmdpZic6J1IwbEdPRGxoRkFBVUFMTU9BSTJOalFBQUFOdVFPbVlBQUcyNS93Qm10di8veGN6dS96MlMzUC9lbVArMlp1T3FpZ0FBT2pvQUFQLy8vd0FBQUNINUJBRUFBQTRBTEFBQUFBQVVBQlFBQUFRODBNbEpxNzA0YXd3NjJGVUhXdDgzVHFaNVV1b3F0YTRwQkVHeEtnSGhMTWM1Nnk3RElNRG91V1lCaE1zaHRJMEV1a1JET1JMU25NdXNGaE1CQURzPScsXHJcbidpbWcvc2hpZnQuZ2lmJzonUjBsR09EbGhGQUFVQU9aTEFEOUl6T0xpNHVQajQ4N0x5M1NoLzhiQndlWGs1TmpXMW51bi84dkh4K0RnNE9EZjM3KzV1ZFRTMHI2NHVJeXgvOEs4dk0zSnliNjN0OHpJeUZhTS8rWGw1ZWZuNTluWTJPYm01dGZWMWM3S3l0N2QzZEhPenRQUTBOL2QzWkMwLytibTVaVzAvNWEvLzhiQ3dxREIvOUxQejNlai82YkYvMUNPLzNXaC81RzYvM21tLzhmQ3duMnAvOHpKeWVIZzRFMkUvNlM1LzVpNS85VFIwVnlPLzVTMy81SzQvNDI0LzR1dC8rYm01OXZiMjhyR3hxVEUvNG1yLzQydS85RE96dVRrNU9UajVIR2UvM2VsLzNpai82ck4vMnliLzkvZTNsT0ovM0doLzZpOC8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRXNBTEFBQUFBQVVBQlFBQUFlU2dFdUNnNFNGaG9lSWlZcUxqSVVCUVJVQ0dBSUdCZ0lXaVFZUUJRTVNEUXdUQ1E0S2lTQWNIUmNSR3hvSEdRTUxpUldibloraERnR0pPVHN1TXdVSExDVS9JN2lJR0tlcHE2MnZpUllLTHdJZVFFY0JGRVlyTUQwb0JFbUhBSVEySkVVNE9nOUtNZDJDM2pSQ0xVZytGRVFwaUFEMEFBZzNNZ1FuUXpVcWl0NElIb2dnd01ORWlBK05FaXBjeUxCaG9rQUFPdz09JyxcclxuJ2ltZy9zaWduYWwuZ2lmJzonUjBsR09EbGhGQUFVQU5VQUFHNXVidjcrL3IyOXZVcEtTc1BEdzh6TXpHeHNiR0ppWWwxZFhWeGNYSWlJaU1iR3hsNWVYa2hJU0hKeWNwbVptVVZGUlltSmlZT0RnOExDd3R2YjI5alkySE56Y3pBd01IZDNkelEwTkZaV1ZwcWFtcnE2dXR6YzNQZjM5NVdWbFd0cmE4SEJ3WGg0ZUg1K2ZuRnhjZjM5L1Y5ZlgybHBhWUNBZ09IaDRjbkp5Y0RBd0RvNk9sTlRVL0h4OGNURXhMVzF0V1ptWm05dmIzbDVlWnVibTBsSlNYcDZlcVNrcE1mSHgvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEa0FMQUFBQUFBVUFCUUFBQVpjd0p4d1NDd2FqOGlrVXZsUkxJK0R4Tk00cUUyTHRzWjEyQkd4UXR0Y0FXQ2FoQVVId3kzTWFWMHc0WUtCUVF2REhBOU41VW9aelhJQUVWY1pFRGc1S1RFSEd3SUVDeThDS2tZU0swTUVDQUFvSUNja01oWmhuNkNoVTBFQU93PT0nLFxyXG4naW1nL3NpbmdsZS5naWYnOidSMGxHT0RsaEZBQVVBTVFiQUFJQ0FnRUJBUVVGQlFRRUJKMmRuWk9UazZDZ29KeWNuSmFXbHBTVWxCd2NISkdSa1o2ZW5pZ29LQ0VoSVNBZ0lIZDNkM2g0ZUkrUGo2ZW5wNk9qbzVxYW1waVltS0dob1FNREE1bVptUUFBQVAvLy93QUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFCc0FMQUFBQUFBVUFCUUFBQVZKNENhT1pHbWVxQms1UklvcUdwYTVaaEhFTTAxS3Q2eVRpMTd1dHlrQWNFUlI0dWhMSXBqRG53V0RURmFvVGVJQkc5VXhCbFdpQVp6OVhRU3hWcEtDZmlSRmt3YmtUVStGQUFBNycsXHJcbidpbWcvc2luZ2xlYXJvbWF0aWMuZ2lmJzonUjBsR09EbGhGQUFVQUlRY0FObloyVDA5UFR3OFBENCtQbGhZV0RzN084REF3TVBEdzFaV1ZyKy92OEhCd2RmWDE5alkyRkJRVU4zZDNjWEZ4Y1RFeE1MQ3d0dmIyNzYrdnRUVTFOcmEydFhWMWNiR3hrQkFRRUpDUWo4L1B3QUFBUC8vLy8vLy8vLy8vLy8vL3lINUJBRUFBQjhBTEFBQUFBQVVBQlFBQUFWVjRDZU9aR21lYUtxdXJFazBSa3NLVzVDTUFKc1VteFp2Zzl4cVFzTW9OQnZaVHFUQXJUQXhVazFvV3ZBR3BFTW1tVm9nTlJGUjRNRHliakNRcllhOEFneHE2Zk9EVmRtS3RwbVdoSVFneVA2QWdZSWtJUUE3JyxcclxuJ2ltZy9zaW5nbGVkb3VibGUuZ2lmJzonUjBsR09EbGhGQUFVQUlRY0FObloyVDA5UFR3OFBENCtQbGhZV0RzN084REF3TVBEdzFaV1ZyKy92OEhCd2RmWDE5alkyRkJRVU4zZDNjWEZ4Y1RFeE1MQ3d0dmIyNzYrdnRUVTFOcmEydFhWMWNiR3hrQkFRRUpDUWo4L1B3QUFBUC8vLy8vLy8vLy8vLy8vL3lINUJBRUFBQjhBTEFBQUFBQVVBQlFBQUFWWjRDZU9aR21lYUtxdXJFazBSa3NLVzVDTUFKc1VteFp2Zzl4cVFzTW9ORDJHcmlBNmJqRENGQ1ltaWd4cTBkS0NOeUFkTWh2VkFxbUppQUlIMXZnSkFXdlNLOEExMEg0K1dCV3dDSnhwU1VnSUJES0RoSVdHSkNFQU93PT0nLFxyXG4naW1nL3NvcnRhc2MuZ2lmJzonUjBsR09EbGhCd0FGQU1RUUFKSEw3RU5mYjJHV3RsYWJ3TVRqOUxyaTlJYkk2NGV4eGNybTlUeGVja0JpZEpxMnhiWGQ4c1BrOVR4WmJGNklvZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQkFBTEFBQUFBQUhBQVVBQUFVVUlDU09wRUpDeWZDTWptQUFDeFFjQlVNZ1RRZ0FPdz09JyxcclxuJ2ltZy9zb3J0ZHNjLmdpZic6J1IwbEdPRGxoQndBRkFNUVFBSkhMN0VOZmIyR1d0bGFid01UajlMcmk5SWJJNjRleHhjcm05VHhlY2tCaWRKcTJ4YlhkOHNQazlUeFpiRjZJb2YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJBQUxBQUFBQUFIQUFVQUFBVVZJQ1NPVUlNUVRIRUUwQUlZZ2pNK1EwSkN5aGdDQURzPScsXHJcbidpbWcvc3BlY3RydW0uZ2lmJzonUjBsR09EbGhGQUFVQUtJRUFLQ2dwRUJBd01EQXdQLy8vLy8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVVBQlFBQUFOQlNMcmMvakRLU1JzUU9Hc01uQmhnS0lLQ041NUQyWHhpY0tvTUc3b2p2TWdnTGRvS1Mrc0RGNC9neTdWU3BxRHhoMXdabGN6aFpVUHRWSzdZckhZYlNRQUFPdz09JyxcclxuJ2ltZy9zcG90LWJsb3dpbmdkb3duLmdpZic6J1IwbEdPRGxoSEFBY0FOVUFBQUFBQVA3Ky9nVUZCUUlDQWdjSEIvLy8vd29LQ3ArZm4vdjcrNm1wcVNBZ0lBWUdCbmg0ZUFNREF3a0pDWmVYbHdRRUJCQVFFUGYzOTYrdnI0Q0FnTHU3dTQrUGp4NGVIaU1qSTliVzF2MzkvWU9EZzVHUmthQ2dvSW1KaVV4TVRDMHRMUXNMQ3dFQkFiZTN0OHJLeWhjWEY2dXJxMmRuWjVxYW1uNStmdC9mMzJ4c2JPM3Q3Yk96czZpb3FMYTJ0a2RIUjNCd2NDd3NMQklTRW9lSGh4OGZILy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRFlBTEFBQUFBQWNBQndBQUFha1FKdHdTQ3dhajhpa2NzbHNEaEdVajZJR1kwaWN4TUlqSkFCNEFRS0RwWUMxcFNEZk5IaUZyUXpVNnNIRXFYakQwN01tcTN0WFo1Z3ZEWDFwQkFsTUJ3U0RYeEFiVEE4TGlsNEVIa3dkZklvRUhFd3VncEVMS0V3amtWNENoa3NxbzE0a1RaZUtaRXd5b3hkT0ZBYUtEaWRPRlpFaWMwNGxpaEd2VFRTdGFRSU1aUm9SRG5CaFYyVW1kbWtEQjJWREZnTjIyakhYUkMwZ1hoalcza1VJQ09YcFFrRUFPdz09JyxcclxuJ2ltZy9zcG90LWJsb3dpbmd1cC5naWYnOidSMGxHT0RsaEhBQWNBTlVBQUFBQUFQNysvZ1VGQlFZR0J2Ly8vd2tKQ1FNREE2ZW5wd1FFQlBmMzl4Z1lHQmNYRi92Nyt5WW1KZ2dJQ0Njbkp3d01EQ1VsSlFFQkFUSXlNZ0lDQWlJaUl2MzkvVnhjWFBQejgzSnljbmg0ZUJBUUVEYzNOM0Z4Y1lhR2hqTXpNOUxTMHBPVGsxZFhWK2JtNXZYMTlSa1pHVFUxTlZCUVVJV0ZoU3NySzBGQlFhK3ZyMjF0YmJlM3QySmlZdG5aMlFjSEIxMWRYUXNMQ3owOVBRNE9EbVptWnBlWGw2T2pvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURnQUxBQUFBQUFjQUJ3QUFBYWpRSnh3U0N3YWo4aWtjamxNTUptV1RBSGdxREdleDBSbEFPZ09Lazdza0pEaWRyME5nbGlJRXB6ZmdzNmFJWHZiQlNUeHpXQ0hoOFFxRkgxdkgxZ0Vib05uRkJaUExZbHZFZ2RQSGxPUEFBVWFUeTR3bGdBR0owOFRuVjBSVHlXakFBdFBDcWdiVHd1b0FLdW9CazhjcUtWTUxKV1BBeGRQQndpZEFqWlBCQk1RanhBUGFrOFlOTUo5Q0E0amF5OHpFbllHSmlCclF5c3hEd0lOSXBMZTUraE1RUUE3JyxcclxuJ2ltZy9zcG90LWNpcmNsZS5naWYnOidSMGxHT0RsaEhBQWNBTlV2QUFBQUFBUUVCUC8vL3dzTEN5Y25Kd0lDQWdNREE2ZW5wejA5UFFnSUNBVUZCVFUxTlF3TURKZVhsK2JtNWk4dkx3RUJBV2hvYUFrSkNSRVJFYXVycS9QejgvZjM5OS9mM3lZbUp0TFMwZ1lHQm1CZ1lIRnhjYSt2cndjSEIxeGNYREV4TVE0T0R0bloyZTN0N1cxdGJTVWxKYk96c3hnWUdESXlNbGRYVjExZFhUYzNOMTlmWDBKQ1Fnb0tDdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUM4QUxBQUFBQUFjQUJ3QUFBYUN3SmR3U0N3YWo4aWtjc2xzT3AvUXFIUUtOVVZBcDhlR01uVzBDZ2FBdUFCQlhLQ1dTVURNRmdjR0k2ZGdNV2piQndSQjh4QzIyd01OVFJ3dWZuWWVMRTBJaFg0UFRRbUxkZ1ZOSzVCdEpVMGtFcFVBR2g5N2E1VUtnVXdDS0F5UURIbE9GU0dnZndrT1VDSUlFSFlHQ3hsVEhTb0VDaGdwQjFUQ3c4VEZ4c2RTUVFBNycsXHJcbidpbWcvc3BvdC1jcmVzY2VudGRvd24uZ2lmJzonUjBsR09EbGhIQUFjQU5VQUFBQUFBUDcrL2dJQ0FwK2ZuOFBEd3dvS0N2Ly8vd1lHQnRuWjJRY0hCOUxTMG91TGkvMzkvUXNMQzd1N3UrM3Q3ZlB6OHdVRkJRTURBd2dJQ0FrSkNYZDNkM3g4ZkxlM3Q3T3pzMVZWVlllSGgrYm01bzJOalRFeE1SUVVGS09qbzhmSHg2dXJxMTlmWC9mMzkzWjJkb21KaVVORFExMWRYVFUxTlZGUlVZQ0FnQTBORGIrL3YwUkVSSyt2cndRRUJDQWdJR1JrWkc1dWJtcHFhbkJ3Y0Nzckt5WW1Kdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEY0FMQUFBQUFBY0FCd0FBQWFud0p0d1NDd2FqOGlrY3Nsc09wL1FxSFNvV0RBNUxPWUFZRmdXVkZvQVFna0JXSmZia05JQkdEQS9BSnJTMG1ZU0FKRUhjdFFBWUpobEFpZElNd0ppVFFBQUVqRmRRd1l5aGdBTVRUQ0pFVFlhQkFRTE5RZUpEVTRwa1FDZUFBbUppU1pPSmFlb3Jva1VKRTUzcjdVWFR4NjFyaXVOVFJVVHVnQUZJbEFibzdVS1VSa1V0UVV0VWc4RndLZ0hDV05TRGdJdmlSSUNMbE5DQ2lpSkhTRGdSQXlUNSt2c1FrRUFPdz09JyxcclxuJ2ltZy9zcG90LWNyZXNjZW50dXAuZ2lmJzonUjBsR09EbGhIQUFjQU5VQUFBQUFBUDcrL2dVRkJRSUNBZ1lHQnYvLy94Z1lHTkxTMGdRRUJJK1BqNmVucHdzTEN3TURBM2g0ZUFrSkNkL2YzNENBZ0F3TURIUjBkRlJVVkdSa1pEYzNOd2NIQnljbkovUHo4Mjl2YitycTZsNWVYdjM5L1VkSFI0dUxpMkJnWUM4dkwvbjUrVGc0T0d4c2JNZkh4elkyTnUzdDdlYm01aGtaR1VORFEvZjM5OHpNekE4UEQzNStmbDlmWDBGQlFUMDlQUjhmSDd1N3V4TVRFMUZSVWNQRHc1K2ZueDBkSGYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFEZ0FMQUFBQUFBY0FCd0FBQWFsUUp4d1NDd2FqOGlrY3Nsc09wOUZFeFJaZ0VRQWtVWmhPaXk4QklDd29MTGxac0RoTU1IRlBRM1NjTUJoT2xuRXc0dlVGSDBIRERSUE5naDlhZ2xQSFF5RVlTVlBkb29BQW1WTEQzQUlCQUFXZkFBa1RRcHZBd01mQ2djS0l3T0pESVpNRUFRRUxESkZOVE1FQ0JKTkZINFBSeGhnTkUwd0FCdEpFZ0FnVFRFQ0tra2NEZ1pOQmhkTElzNU1LQk5MRkE1Tk53MUxIZ0JOQ1N0TEJ5MWM1K2pwNnVkQkFEcz0nLFxyXG4naW1nL3Nwb3QtaGFsZmVsbGlwc2Vkb3duLmdpZic6J1IwbEdPRGxoSEFBY0FOVUFBQUFBQU8zdDdmNysvZ29LQ2dJQ0FnY0hCd1lHQmdVRkJRa0pDUVFFQk5MUzBnZ0lDT2JtNXZQejg1K2ZuLzM5L1oyZG5ZNk9qdUhoNGErdnIvajQrQTBORFQ0K1BqVTFOY1BEdzdlM3QxOWZYLy8vLzVXVmxYZDNkOGZIeDcyOXZidTd1NENBZ0VSRVJERXhNU0FnSUh4OGZBc0xDMHhNVEJRVUZMKy92NjZ1cmdNREE2T2pvOW5aMmFXbHBjdkx5MVZWVlkrUGovLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRElBTEFBQUFBQWNBQndBQUFhVFFKbHdTQ3dhajhpa2NzbHNPcC9RWlNOQXJWcXBqYVppQU9oNnYxMUVpdWt3Z00rQVE0Z0pPYURCaFFqVGxYaC9EUndteS80OU9KZ2ZmRjRFS2t3U2dsNHZUUWlJQUF4TkpJZ21UaWNGZkFrV1RqR1dkZ01sVGhpSUdVOG9mQlViVHgwTGJ3TWFVQXdFZGdwUk1JeGdBeUpSTWdFRHExNEdCUzI2TWlBRWRRQXJCQlBEUWdvWFhTTWV6RVFQRDlQWDJFTkJBRHM9JyxcclxuJ2ltZy9zcG90LWhhbGZlbGxpcHNldXAuZ2lmJzonUjBsR09EbGhIQUFjQU5VQUFBQUFBUDcrL3Q3ZTNnVUZCUUlDQXYvLy8vbjUrUVlHQmhrWkdWUlVWQmdZR0VGQlFRTURBNCtQandzTEN3d01EQWdJQ0JjWEZ3UUVCT2JtNWdrSkNSOGZIOGZIeDUrZm42ZW5wN3U3dS9mMzl3OFBEMUZSVVVORFF6YzNONENBZ0RJeU1uaDRlSUdCZ1c5dmIzTnpjKzN0N2RMUzBqWTJOa2RIUjE5ZlgyUmtaRUpDUXYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDd0FMQUFBQUFBY0FCd0FBQWFMUUpad1NDd2FqOGlrY3Nsc09wL0dFaFJaK0R3QWoxQmhPaXdzQm9Ed3dMUGxqc0RoOENIRm5SRFNjSUJwbW5ERXc0NE9OSUMrQXdnYVR4Y1NmbW9OVHlnTWhXRW5UZ0VJaTJFYkJrMFdrV2taVFJodmtReUhUQ0lVbHhBa1RTb0hsd1FjVFN1WFlTQk5GYTRBQ2syUXJoRk5Dck1RVFJHekFFMEpzd3ROQmdMSXljckpsRnpPejlCTFFRQTcnLFxyXG4naW1nL3Nwb3QtaGVsbGlwc2UuZ2lmJzonUjBsR09EbGhIQUFjQU5VQUFBQUFBUDcrL2dNREF3WUdCdi8vL3drSkNRSUNBZ1VGQmF1cnF4Z1lHRUpDUW1Sa1pFTkRRL2YzOXdRRUJHNXVidTN0N1Y1ZVh2UHo4NStmbjN4OGZMT3pzOFBEd3pNek0xWldWbE5UVXlNakkzUjBkSStQanhjWEZ5UWtKRWRIUnd3TURISnljbVptWmtCQVFLK3ZyMGxKU1pPVGsvMzkvVUZCUVV4TVRJQ0FnRlZWVmYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDd0FMQUFBQUFBY0FCd0FBQWFTUUpad1NDd2FqOGlrY3Nsc09wL1FxSFRxYkpnV0NrOUNnMXB3SkU5U3lqQXdBTTVuUVptQllENEVBclJjRGhjUmtJVE1ZYzZYRno1M1Jpb0RmWVZuQXlGR0FTQ0dqUWNOUlJhTmt4VkZFNU9HQlJPUm1JYVZSQ2VFblhNQ1lFVWJvcU1BQXhGSEJDVjdvd1VqQVVsdmNZMXdFWUZKQ0F3QURuM0JDbTFPRUJRWUZ3a0FIUmNyRkJCVTB0UFUxZGJYVUVFQU93PT0nLFxyXG4naW1nL3Nwb3QtdmVsbGlwc2UuZ2lmJzonUjBsR09EbGhIQUFjQU5VQUFBQUFBUDcrL2dvS0NnZ0lDQVVGQmNQRHc3Ky92d1FFQlAvLy93RUJBUUlDQWhBUUVBa0pDY3pNekVGQlFRY0hCOW5aMlFzTEM5TFMwanc4UERJeU10L2YzejgvUCszdDdRTURBL241K1EwTkRjdkx5NENBZ0x5OHZFSkNRcU9qby9mMzk1NmVuZ3dNRERrNU9UVTFOVkJRVU9ibTVzYkd4cCtmbjd1N3U2K3ZyNnlzckE4UEQvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDMEFMQUFBQUFBY0FCd0FBQWFid0pad1NDd2FqOGlrY3Nsc09wOUVoTUdBZ0JvdkZnSUFRSmhVck1MR0lyTGRpZ1FGNittUktKY1RpaFRVd1hDN0I1UW54TTRIcEpzbEFuMWxEQlpPQzROdUQwMFpCNGx1Smt3YmoyNGRUQ3VPbEFNaFRDZ0RsQUFISEV3cW9LRWZUSHVtZjBvQnBnQWdUWWlVQkU0ZWdva0NKRTRTb0FaUGRJTjRVQklEYlhZS0NxeE9EU3dhYmhGb1lDMFhFd1FZR0FRalg5TkNVbFRkM1VFQU93PT0nLFxyXG4naW1nL3N0YXIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUF3QUFBQU1DQVlBQUFCV2RWem5BQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUQrU1VSQlZIamFZbURBQW41ZVU4Z0Y0aHhzY2dBQnhJUk5rT0VIUXh3WVl3RUFBY1NJb2Zhb2doYVF1Z3JsYW5KWVA3aUJMQThRUUpnMi9Qd2ZCOFFNVUl4aEMwQUFNWDdmTHY4U1NJc3hFQWRlQWdRUUU4TlBCaHNndmdMRURBVHdaWkJhZ0FBQysrSGJTbmx1SURVTGlLTndtTHdFaU5PNXdoOStBd2dnRkU5L1d5Sy9EMGc1b2luZXhSWHowQjNHQVFnZ3VJWnY4K1RZZ2RRcklPWkQwL0FlaU1XNWtoNzlCbkVBQWdnUlNuOFkzSUNZRDRoQjdPMUF2QlBLRmdUTFFRRkFBTUUxL1AvREVBYkV2NEM0R0lpOWdkZ1RpRXVCK0RjUVI4RFVBUVFRQzl5R3Z3enFRTktLTy9mUldTVG45SHlkTEhjQVNFK0RDUUFFR0FBM2FWeVNJa1FURVFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4naW1nL3N0YXIwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBd0FBQUFNQ0FZQUFBQldkVnpuQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFFUlNVUkJWSGphWW1EQUFtN2N1RkVEd3Rqa0FBS0lDWnZnNzkrL0hYLzkrdVdJVFE0Z2dEQTBuRGx6eHZ6bno1OFNRQTBTUUxZSnVqeEFBREZoTVQwR2lCbWdPQlpkSGlDQUdBOGRPblFhU0hNeEVBZStBUVFRQzlDVVZDQmpJaU1qb3doSTVQLy8veGlxZ0hJZzhUZEFaajVBQURHQ0JIYnUzQ2tBRkpnQmxOREZvZUVpa01weWQzZi9BQkJBak1nU1c3ZHUzUTZVbEVPejZiNjN0N2NQakFNUVFIQlBiOXEwaWVmUG56OFNJTThDYVlhL2YvL0NzQlJRamdPbURpQ0E0QnFBRXNGQVU5bisvZnNIWXQrRlloQ2JIU2dXQWxNSEVFRElHdHlCSmdPcHY2dUIyQStveUE5SXIvc0xBVjR3ZFFBQnhBSmpBRTBYQitMOHNMQ3cvVWplcWwyMWF0VkJvTDhxWVFJQUFRWUE1UXVnTlBHL2pGRUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9zdG9wLmdpZic6J1IwbEdPRGxoTWdBeUFOVS9BT2ZvNWVZeE1kdEtTTXdFQU9wSEpNakp4N2EzdGFpb3FPdFdRS29WQnRDd3JLOVVUOTg4UEpTUmxNNlRrT0kyRHZ2Nys5b2hBZlJrVTlQVTB2UDA4dHZiM01GMWNQZHphN0c0dzdxU2s2YXFzOTdqNTdtbXFjalExOFhMMXQzZzI2dXh2THpDeXRuYzFLNmNvdERRejgraW9NT0RlOTYydE9UcjdkWGM0WjJjbi9QOC9hR2pyTXpPeXV6dDYreno5Y1BFd2VQajROZlkyTDI5dk5YWTBmajQrTkRXMmUvcjY3T3hzL0R4Ny9YMjliVTZLOXBkVjY2dXJ2Ly8vLy8vL3lINUJBRUFBRDhBTEFBQUFBQXlBRElBQUFiL3dKOXdTQ3dPWFFYYzRhQnFxbGdIdzZSbXJGcXZ4OWtCNS9GMHZoMVBLSVFCYVZRSEVnVExyc1o2aHRRbVZWQ1VTbzY4NDQ3RGxGa3FNR3R0YkJBR01DZ29KQW9XQWd3TUFaR1JEQUlDUENVY1pvQWtoRmN5UFNndkpBNENrcWFua3dJbUhCcG5QVlNkUkRNRkt4dWtxTGlUQVkrcUhDeUFBTEZDb0JBd1BMbTVqOHFQUEJrYW03RTlPaXNsa01pbXk5bThKczhxbkcwOU9Tc08xOWlRMnRtcXp3MHliQVViNCtXVGo3dm82ZHdzRFRsWEFETXJDdGF1bmJPWHpwR3FYeXl1SE5CUm9KUzhYZlVJVnBwSUtRT2dBbFZneU5od0RGVWxIaDh0OFJoSnNpUkpneE10amNqbm9raU5IaTlLNExxZ0kwZU9Hemh4QXRnSklJYlAvNTgvSFZCS0tjRENyeDVGWUZUbzBQSFVpUlU1WExoQXdkUG5oZzhmS2xTUXdYWENoQlFLRmhCVnlaTElnUTB5Y1oxNFVkVW5WcTFjdTNvbFFjSkcyTEVIV2N3WVVpR0VEUXVuenAxQThmUHRWcmtUNk5KdDBXS1JXSkFtUjJob0FDdk9qSUFSR1F6T0NoZXhZaEtNQ3hTQTBTSXNEd1FqVWFOMjF1Q0RrQU1weUVuS2RtSkRYQmxlRXk4V0RXT0diOTkxRnBoTWJlTFgzaHdhUEFDR1NEdEY3cytqWitEb3NXUkpqeDQ0Wm1SSUVDSENMdFFTZUVoZ2NRYUNqQmtoSEtJN0lRUDZEQVBVcXgrNGpnT0hnVVBiQnd5SXNOODdhc21Vd1pCRUtmWW9ZRU5vOE1sSG4zMzMrVVphQ1FsdzExMTMvWmtBZ2o3b2NUQ1FOaWQwQVArREV0VXRlSjhCRGdyWUFnMGpTRGpoaEFNc2NHRU1PSVF3Z2tRS0dCQWlkZ3lTT0FNTUpqWTJ3UWNRcmlpa2l3MVVFT09NMmpnU2dBUFQ0ZGlnZzZJeFJzSUVOTkFnQWxvcUNobkJBaGl3YzJSQkRQQ1hnWFJQOGxpQWxGNVpLWUlJV0tFUTVBTVJ3QWxuZDF3V2lSNlNsT1NwM3dBT2hGRGltVDVXdVNhYldQbmtnZ0xjUGFEb29uUjJHVU1CR0xEZ3lGQUI3TWxuQ3oxT0tlaWFXSDNnRTA4dklMcm9xSEJhMEtVTEh4d0F3Z0tVV3NvbkRZR3EyZWxQUEFFZzFUOEprRHBxQXlFMFFJRU9LbUJnQVNXVnVsckNCNXZPK2lsUFVybGdFd1FLN1BBQUFkUVNNS29LSWFoQUJRc2daRkNLcS9xVnNBR2huaTY3VTdNMlVmRC9xdy9SVnV2dUExejJNTU1hTTJDZ3dnN2dob3RDdVRFd0sxVzY2dXBRUXcwUStIRENEdTVXKzRBSkhoUXBCQUFxckpydkFDVzRVQ3U2T1FRc01BUWMrK0J4dXdpRWpBQzFBckRRZ1Q1RHNORGx4Q1c4MEt5ekdmKzZjY2NlMTN5d0FDS0hUSUFGSG1ndzd4QWtIS0FCdnVDV3NBTE1BUS9NY2NFMU4yM3dEZ2hJSUhYSUFwelZRREJEUUJCeEEvazY0UFRYWU5jY3JkUmtJMkNCRFFiZ0FNc1FFNUMzQUxnSldDQzNCU2JVYmZmZEp1aWhoM0JrUzgyREFRQmNQWWhaSU53TGQ0U0lKNDU0QkRzMDdyZ2xFbHdnK1FVOGpJQkNJR3NUQWV5RkNVeThYMy9kalZwdDFHUlBmb0VFR2FCUXdBRVVYUEhCMXAyN1N1R0tvbE1iNEhMcHBtZXdRUXdOeERCNEZUTncyMERzZS9LbjVhS2preDc1NUtubndNN3ZWaGpBcmVINkdTOWs3UVRjTHZYa0hMemdmQXM2ZERKRHhCcThYVHpvb1N1YXZQSVd6T0JENENTRUh3c0pFVjlJdFBVVEltKzd5TTFVVUV5Um1ldUVDMzVSaGhFc2dEdm9pNVArekZZQ0c3Q2xBVGh3QWZTRVVZQUdhTUFQUGNpQUJhU2xRUFVWeFFFelNJRUxOZ0NJQ2NoUEdFYWd3UGlDaFFFeWdJQURJK0NBREExUUFEbHNBQVpOS0lBRVVZZ0ZIUVN0QVJaRVR3Z0swQVVQSFFDSVBaQkJEaWJJUXl0UW9BSXc2SUVUbklBRHBlU0FZRTFzSWdRR3hrV09aVEVJQURzPScsXHJcbidpbWcvc3RyaXAuZ2lmJzonUjBsR09EbGhBZ0FnQUpFQUFNclQvNjMvMThXbi85VHMveUg1QkFBQUFBQUFMQUFBQUFBQ0FDQUFBQUlQaEcraHE0ak1ocHhTMkdzcHhiZ0FBRHM9JyxcclxuJ2ltZy9zdHJ1c2VhcmNoLmdpZic6J1IwbEdPRGxoRUFBUUFJUWJBSmRoUnFsaE9iRnlSYk56UzcxMlFybUFTTHVCVEx1RVVMeUVUN3lGVXNHT1Y4T1NXTWVhYnNtYlljeWlhTXVwbE5Dc2lOZTJmdHU5aE43RWtPTEtsdWZUb09UU3dPbldwT3ppMlBYeThQcjgvdi8vLy8vLy8vLy8vLy8vLy8vLy95SDVCQUVBQUI4QUxBQUFBQUFRQUJBQUFBVmM0Q2VPeFdpZVg4Rm9USW1LcXFZVkdOYWloVFVYbWF4Wkx0SU00NXZOVG9XaUx4bUVLV1ZNNUxBWU5lVjJQUm1rQ1ZzTmJRWENLN1ZxT1NnVHhEaDFNRWd1RjBsZ0xWSk1LcE1HZ1A1SlJDSUxBbndmQVFVRGd5SVBJeUVBT3c9PScsXHJcbidpbWcvc3ltYm9sLmdpZic6J1IwbEdPRGxoRUFBUUFPWUFBRStFdWZ2OC9XU1N3VDU0c3BPejFOUGc3VXlCdUVkK3R0em04ZnI3L2YzKy9tK2F4dno5L2tGNnRQNysvdmo2L0pHeTA3WEs0YzdkNjRtczBKQ3cwdTN5OTFHRnVVeUJ0NWUxMVlhcXoxaUp2Ty8wK09EcDh0TGc3WFNkeDlIZjdJbXN6MGwvdHRiaTd0VGc3VkdGdW1DUXdHS1J3WlN6MUdPU3dWS0d1dm43L1BuNi9GcUt2WTZ2MEZhSnU4dmE2cFMwMU5uazhHR1B3STJ2MGZYNCswdUJ0NnZFM25lZ3lkVGg3bVdUd251aXkzR2J4cDI2MklXcHpsT0Z1dXp4OStydzl1N3orTjduOFZDRnV0RGU3RUo2dE1mWDZGQ0V1c1BWNS9iNCs0dXQwVkdFdVZPR3V0dm04SmUyMWEvSDNwYTExZUhxOG0yWnhXMll4S1MvMmF6RTNmbjcvVU43dElHbHpIeWt5ejk0czkvbzhxakMzT3Z3OTdQSjRFZCt0VVY5dFUyQ3VHdVh4RUo3dEtLOTJkSGY3YzNjNi8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUdjQUxBQUFBQUFRQUJBQUFBZDJnR2VDZzRTRmhtZFZPMG96RkVhSFp4SXlQWU1SUXllSFh5bUZYZ010aFJnREVJWUhCb1VhQjA2R0FBMWNnMGdYQmlDcVZ6eURaaTQxRTZwRlpJUVpEUVNHSVdDR1kxT0ZMMXBZaHdKVWhDekJoRStETUVTQ1VEYUdIaVVtVW1LRFdRczVBZ3VET2tjK0pHR0ROMHRNRmlpUDh2T0dnUUE3JyxcclxuJ2ltZy90YWJsZS5naWYnOidSMGxHT0RsaEVBQVFBT1pOQVAvLy8zdW4zSks1NlBmNi9yS3lzbWFMd0hXZTFGcDhzbmFnMWFXbHBjYkd4bm1pMkxiRDI4REF3THE2dW95aHhyQ3dzSENaemxSMXJMMjl2Ym01dWJXMXRiZTN0N0d4c1hPZDBzakl5R0dGdTFGeHFWRnlxVzZVeXJ1N3U1aVltRlIxcTFOenFucWsyNUswM2x4K3RXU0l2bkthejdPenM2S2lvcTJ0clYrRHVYQ1J3Y0xDd2xoNnNHQ0Z1bHgrdEZaMnJZQ2V4NnVycTdpNHVHT0h2YWVucDc2K3ZwR1JrWHFrMm1pT3c4ek16SWF0M1pXVmxjckt5bStYekZOenFYT2MwVytXeTV1Ym01NmVubDZCdDZtcHFXeVN5SzZ1cm5tajJWZDVybGg3c1d5VXlYcW0zUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFMEFMQUFBQUFBUUFCQUFBQWVhZ0UyQ2c0U0ZUUXdqQVV3NEN3Z0dHQ1lSUVVzeERFMDdBcG1hbTVvclRRR2dvYUtpQlUwaUFLaXBxcWswVFVnQU9qMEtBeE1lRmdNWEVDa0FMazBMcThDb1JFMElBQmtLRFFNT013UURSVFVKQUNSTkJzSEFCMDFBQUN3TkZBTVZKeklES0VOQ0FDMU5QdGFyRWswZEFEWU96UVJIQ1FNZlBEY0FJVTFHNjZvY21qeklVYUNFQmhVdkRpaEpBZ1BFancwUERFbWNTSEZRSUFBNycsXHJcbidpbWcvdGVtcGxhdGUuZ2lmJzonUjBsR09EbGhFQUFRQU9aRkFOVFUxT0RnNE5mWDErUGo0OVBUMCtUazVNM056V3hzYkt5c3JNZkh4OS9mMzdDd3NHSmlZczdPem1GaFlXVmxaVnhjWEdOalk5WFYxV3RyYTFsWldmejgvS2VucDI1dWJtMXRiZlB6ODhqSXlHaG9hR2xwYWN2THkrWGw1VkJRVU5EUTBHQmdZSE56YzZPam8vSHg4ZjM5L2FtcHFjSEJ3V3BxYXEydHJkYlcxc3JLeWwxZFhiVzF0ZEhSMFhCd2NQcjYrc2JHeG1kbloyOXZiMlptWmxwYVduSnljcjI5dmVMaTRxdXJxMHhNVEthbXB2RHc4TVRFeE1YRnhjL1B6OFBEdzNGeGNjek16RWxKU1dSa1pQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRVVBTEFBQUFBQVFBQkFBQUFleWdFV0NnNFNGaGdRdk9RWVFHNGFER1RwQURpRXJGeWVPUlJVUEZnTUtCUXNPaGpGRUdpMFRBeElCSVFrbEdZTW9Cd2dRRXgwQ0FBRUhDeklmSUlJVUhSNEtBUUlFQUFKQ0dDTUpISUl1REFvU0FOSUFCQUk0QlJ3N2dpa01Bd1BFMHdDcEVRMkNCejBJUVFhMkJDb0JBUVVHRklJZ0h3NExCd0hHRFRNUUN6WVBCcEdBOFlPRkFnQURSQ0JJd09DR29RZ0lDZ1R3WUlGR0JVdytNRFI0RUVIREVCNllpbXlva2NERUJRTWhVd29LQkFBNycsXHJcbidpbWcvdGVtcGxhdGVzLmdpZic6J1IwbEdPRGxoRkFBVUFMTUxBQU11YmNETDJxQ3d5Ty95OW1GOG85L2w3ZERZNUZGdm1oSTZkb0dXdGlKSGYvLy8vd0FBQUFBQUFBQUFBQUFBQUNINUJBRUFBQXNBTEFBQUFBQVVBQlFBQUFRM2NNbEpxNzA0NjgyNy8yQW9qbDJRRkpNZ1RFVVNXQWh3U0FJQXJNc0JJSllDRUpLQTdiVWdBQlNXQVZGaU1GQUNBNUowU3ExMklnQTcnLFxyXG4naW1nL3Rlc3QuZ2lmJzonUjBsR09EbGhMQUVZQWZmakFQMzUrZnJ0N3VlaXAvenk4L2ZnNHZUVDF1cXZzL2ptNStXZW8rL0J4UFhhM09XZG92REh5dkhLemZMTzBPYWhwdW10c2V1MHVPZWtxZS9FeCtxd3RPcXh0ZWFncGZqbjZPaW9yUHJ3OE91enQvejI5dWlvcmZUWDJleTV2UGJlNE95M3UrYWlwL1hiM2V1MXVlMjd2K2FocGZQVDFlV2ZwT3UydWV1MXVQSE56L2ZoNC9ITXp2dno4L0xSMCttc3NQVFcyT2VscXZmazVlZWxxZmJkMysvRnlQTE8wZm5xNitXZm8vVFkydXk1dmVpbnJPZW5xKzYrd2Z6NCtPZW1xK3F5dHVpcHJlZWtxT2lycitpcXIreTJ1dWFqcC9maTVQbnA2dlBSMU8yOXdmUFIwK3k2dnZITXovejM5K3k0dlBiZjRlMjh3T2lxcnVtdnMrZWpxT211c3U3Q3hmUFUxdTYvd3U3QXhQcnU3KzdCeFBqbDV2dnc4ZkxQMGZMUTB2dng4ZXk3dnZyczdmZmo1Ty9DeGVlbXF2YmMzdWFmcFBMUjFQREp6UERKeS9UVjErN0F3K21yc09pcHJ2ejE5ZTI4di9MUTAvSE4wUHYwOU95NnZmTE4wZTI3dnZiaDR2WGEzZWFncE9hanFQWGMzdkRJeS9ITHp2REd5dTIrd2VtcnIvUFAwdkhLenV1MnV1MjZ2ZlBTMWZYWjIvcnY4UHZ4OHZUWDJQbnI3TzYrd3ZMUDB2dnk4dlBRMCtXaHB2cnc4ZXEwdC9uczdmUFcyUEhMemVxenR1L0R4ZnZ5OC9ESHkvWFkyL1BWMSt1M3V2REd5ZnZ6OVBYZDMrV2dwZTI2dnZqajVmVFcyZlRaMittdHNQTFQxZXU0dlBETHpmWGIzdmJmNE8yL3d2VFkyZmZsNSs2OXdPeTJ1ZTdCeGZ6ejlQYmIzdmZqNWZYYzNmYmc0ZnZ2OE91eXR1ZW9yZm5vNnZiZTRmYmc0dkhJek9tcXJ2am82dTNBdysvRnlmREh5ZXkxdWZERngvZms1dkRLemUvRHh2VFoydnoxOXVxdXN2REl5dkhPMFBqbzZlaXJzT2VwcnVtdHN2WGIzUG5tNlBES3pQZmw1dmpsNSthbHFmcng4ZnJ2Ny9ISnpPdTN1K3kzdXZQVTEvam42ZS9GeC9mZzRlcXp0K3EwdU8vR3llN0V4dVdjb2YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFPTUFMQUFBQUFBc0FSZ0JBQWovQU1jSkhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dMR0ROcTNNaXhvOGVQSUVPS0hFbXlwTW1US0ZPcVhNbXlwY3VYTUdQS25FbXpwczJiT0hQcTNNbXpwOCtmUUlNS0hVcTBxTkdqU0pNcVhjcTBxZE9uVUtOS25VcTFxdFdyV0xOcTNjcTFxOWV2WU1PS0hVdTJyTm16YU5PcVhjdTJyZHUzY09QS25VdTNydDI3ZVBQcTNjdTNyOSsvZ0FNTEhreTRzT0hEaUJNclhzeTRzZVBIa0NOTG5reTVzdVhMbUROcjNzeTVzK2ZQb0VPTEhrMjZ0T25UcUZPclhzMjZ0ZXZYc0dQTG5rMjd0dTNidUhQcjNzMjd0Ky9md0lNTEgwNjh1UEhqeUpNclh4NTdBQ3ptWGdjTWdONVZPZ0RxV2dkMHVRSGdPdmFyWmpySS8ranUvVHRWQmd6UWtDOXZIaXA2OU92WnQyLzZuc0dzOWZQZG82OGdia0lMOHZuUnQ1ODRCRDd3QllBSUJRQ0dmQUhxTkNDQkVGSmdUSGNIQlJDQUZndzJpQk1EL0VIb29Rb0lDbVRoaU5MY29XRlBIcWJJQUg3aklESmlBTm9rb01ZVkovS1VZb1Q0K1RBSEpBRWd3VUlVQ1NSQWhnczE3blFqZ1EyczU4TWJoeVJDZ1FFUllCRmtBa1VhZVdTUzVCMWdpZ0ZjR2tCQ2tGWHlwTUdWM2FWU1FaZGN1a0psbURzMUlNR1ZhMmp3SkpvR3NObFRBMGVLUXdJaEhoUUJSSmQyK29UbmpWTVdHdWhQYnFZNEFpYTc5QkZJQVlmMjFGMEdEV2p3Z0lkS0pGSEFwcEJHbXRONksyeUJnSWNMK01IcHBwN2V0RjRMeVFod1Jvb2wxUDl4YWlDcDB2UUdlWVhzSUlBQUZ0dzRnNmtGZ0hLQ09MWE9OTWN6S2V5NjZ3TUxIRW5OREJBV094TVZ5aW83YXA0ZVNoc1RCekZVSzRCQTJHYXI3VXR0Y0VEdHR3T0ZHKzI0TGhrQUFRY0ZxVXZnQit6YXBDNEtGTlpMVTRvUVhDdU9DQ0hxR3hPQkdwaXd3UVlxUUVEQ0JnRUxETk1LOFFFQVEzd096eFR4eFJWVDVLRy9CRklVOFg4VVoreVF2T0krRko4MUI1ekNRZ01zMDNLRHlBdVJmR05FM1RtQkJCUUtaSEhqRGpBakpQT05iVVNraFM0S0ZHM0hrVDNIKy9PTkkwd1FVZEZGajRsMDB1TXNmZVF2TkQ1ZE5DRFlKbTMxa1dsUVZQU3JYWXY4dFRnUVJGR0JNeVdVVUpFQ01NaXJFQk8xZmozRUJDN2tRSU1uOUZyL1JFbXo2aUpVUXNlUllvdkR0ZkFTOUtLQ0dmR1JBdUI1SHFSb29MMGVXUUVURVVTUWtJV1hiS1JBRGxsQVFQYk1CRVVlNXJLUTN6MUpIR0V3MUVsSFJlY3d3UTVuRTE2a3NnOU1NUUVORmlvU0IwdFFXMUc3N1JwNmU4M2lMVUd0d1BERW51aXRBSHU4K0ZMUkRneC91N2ZTdzZRQUdiVlg2YTB0STJxa0xDL1pRQUE0UkhMODhQTVBSRlRndmJjMWhHL1JBdzhJUVA4bkhLL2JFQ01keWp1Q0VxZnpsZ2NzVkpFTUVHRnBEK2tCeVY1UUF6YlZqMzRQc01BZ0NDZ1JBR3dBQlY5cndzalVSWUVrMkNrRXBCTEhFSUFSRVhGUXdBb2dPQnNaSG5JakEwU2hCejBReEtFcVI3cUdNQTlDT2lBQVJEemtCUUxvTUZMNTA1OUMvMjdvSVFQNGtHcWxLNXZraUpnaURvamdoMGdjUnhCTGxpNG0zdWdSU3lBQUY2STREaHAyellyWUNrRVRrSUFJTGxZTmpFck1rd1VLSVozcFJCR05VMU9haDRMUVJqY2lFWTVDWENLRVJsQkhNOExSaGg1YWd4aTAwQVU3dnBHSkVLR0FCa2JGaEQwY1FSYWhNT01aclJZQ0hseExJZzNvRUFkNmVFUkpUcEprR0RBQUNHeEFrU1lZQUVJOThDRVVKU2t6SXRUSklrczRJSUU0UUlOT3N1bFVLVHpTRDBxSXJUeEFJQ01tNElDSEptRExHb25nVkFYSXBScmJRTGNkVWhFakJPakFteUEwaFEvMHJVWkprQldubEJrdUNiQWhheTRoQUEwNHRvQlI5Q1pmR1FHQUNrSlFCZ3hBSUJoUytCa0MwT0NFY1Byd1Jncmd6UVFZbHYraENyYmdVc1Bid1JFWXRoSlZqcE5VdTRFUUJDN1FUNU4xSjI0MzNNR29FSkFTVlVaem1nUUNnbTVTaElBdnRLQWk2MG5ESDAxaUJvc0dFMEpPeXcyMktGckI5ZHpCQXlNZGlScE1ZTkZZaWdNSU9RaUFTZ01Ia2Zoa0FBQVhhQUJBcVdnMUZVaUVTeVJ3U0pBaVVJRWUyT0FEckJDQkNHNmdVOXhBRGx0dU0xa0dMdkFCcVpKSEJpUWdua0ZrQnJDSWNNa1IwbEhJbElvQU9BcU1Cd0ErZ0VSdVlpQ3poN3hKQWhCQWdRY1l5aUtHeUl1dkQrR1NFdkRReDRJVUtnSFFJdEJDeWJPQjJ4Z2dDRjVVb2w5dnhFOTBBakpQRXVCclF3bkNwUW8wWUFWMWxJNE5EaHNrWkhob0J3Rm9tR3hJOElJWVhEV09HOXhZWDFtWUowSC9oQ3doQXhDRkFaVGdpR2xJcHhZcjZJQVhza0NJVnZSQVNsZ1lBVWY1ZVpzQUdBSURRelhkUXdiSEw5WEdkbU1mdU8xQjJyZ0NFT2lnQ0MvSVh3aE9nSUJtTFNDSW0zV05oWTVnaFdGSjFpRjZ1QkcrMHB1UUc1VWdBb2xZeGdIMmV3Q0ZoTFovWDJPcGJXd3dnU2lBWUFvcFdrQUlNQ0FCQ2tna0I5KzRVV1kxeGpTcXlxQURuVnBJSFlOZ1BkdmM2QUVkV01NU2txQ3BUWmxnSWdTUUdyOG00dDRVMldCRXE5U3dkRzdSUFEvZnlBUFZVTVFSTXNHcGloQUFBckIxQ0plb2NLTWhaQThpQXlnQ3RoNkFBZ2pjTmE4ZXdFMmVKdGFGQXlnQVZSVHhvVEJyS0dRdThlQkdWcENmUkJpd1VsUmM0S2RiM2VtTklGQXpKSmdoLzhNVCtZQXlqdlFBaUtBSkF4eTlBQVVSVW9CY1RQWkdzN1h4a1VEVW5TN0VXQ0lkMEVHUUZ4S0RMbFdoeFJDcUtwODNOWXp2aEFzQmxhVXZRN3p3aHhzSmdiYU5Ob0FRRmsyUVUwSERrTW9KSzdaV1pGMkpPQ0FGQ2E3Q2RXTlFCbEtMaUFDY01nRWV1Z0VkQUdEMFNJRFZ5S3ZYL0djUDVZSExCYkVRTG1KUkFFWTQ0Tm5NYVFBRjFHVlpqQXc3UlRpSTJZMFE4QWhJYjg1Q05oQm1DcDRON2VTUUROTWR1UUtIYjZRNW54M0pBa0xnZ1JHYXR6a3UrQUpDVkdBQXVaSHpzd2Y4aHlPU3dNYVJVb0NRQ0J4cEFVYmdBUVl3MEJCdXVNRkRwTmkzY1pZbWdaOXEyaUVCd0NDeERlS0FNQnpwQkF0bmVFTVlVQVVQNFNBU0RmOXd3TVN0bHQxcVZ5UUFNTDJSRkZRK0VISnY0VWhDV1BoRE5LSGNGUDBBRHNVNTI4UmFMUkVsNUFub0FtbUFHaVpnaVNmY3lBTHRoTWdCYm01cjN1RGdiSVFtT2tTNGFmSUZqR01CT0xEQURIN3daUStkd0FnU09jQXFwUHNiQjRTamRxejJnUThhaTVFYTFPNjhXWTNJZmgrT2JONDRnQVd3UGhzSU10Q0lERWpDeWhrQnN0WE9hd0dLN0pmcUtRTE9zeC9IMDBrK2dBS0xvRUFZYWlDREkwQU5JeGY0dGJ6T2U0S0s3SmNGTCtoN2J2NnUrSlVXNUFzZk9ETVVwZ21CSmlqdklqNUFRZ2NZVUFUMXFRc0JJYkRJZmswQVlMSG14Z01VbUhlNEhGeVE5Y2dnUlhhNHZVWHEySUhmMTluMHA4OWZiNlR3MmlOUmdFZ0hJWS8vQ0dUdURRODhkdnAxSlBON0p5S09GL3loNUpGUDZPOHI0WUwrSnFRN0txZzhSVUtyNHZoYkpGd3ZJSC9xRWduMnR4QUFvSDdZb2dFWGtYNXNSMkVFc2dDRFVBRTZ3QUFyc0JzQXNBank4anNPRVhOTGRuRUlVVWRBa0NjQ3huNGVVZ2xqMEFkUWtGYTZBUUFaSUhxVDQwemg4bThWMFVhcDkyN29JaEUzVW44SElBYW9oaHNTRXk0a2lDMFE0NEhidFFKTHBpeTg1Q0VVd0Y4RnlCdkhVQXA4d0FaUG9BRVk1WUJUcG5VTU1YNEhWeTB6NEJEZ2NDUTZ1RisvSVFZVzVVTU5jQkVHOEFSWVVBR0pCU0VhTUFsZmdBSVdZWGRicUN3em9ITUpRUUFtZ0dBcHNvVDhGUnhsZUdnVFVTZ2d3RFZWZDFrSlpnSEtZZ1FoWUFIbC95VU9iaENJbkRCRk52Q0h3bUZSRzFFb0xBQUhEWmlFTjdJQUp4QlpCT0lCQmhXQ1IxSURZeUNHeEZGTUdSRWt3dEFCeGJCK01QZ3pJVUFISk5BTTJNSURsbGdyQ2RBQnZlQUNRRmdSNHVDQ3pJTUFxYWd0SFdBaFhCQXVlVWNSR3NkRUR3QUY3RElpOFpVbllYTVJpVUpFQW1NaFhLZFFlMVpBMlZoajJ6Z0JlZUlDWW1ZUmxHSXBWZ016aGxBREUvQ09FL0FFSTBBSFZIV09GOUYvRUFKQy90Y3ppMk1oSnJBNGg5QVJGVUFDYk5BQVN5QUhXMlpHL2ZnaVhDQUN4S0FLbStCSkpMR1FMUEFLUU9BdkVqbVJpME1KaDVpUkdURWlXZ0FHT2RDSkhza1JHZEFDYitBRU55Q0xKYWtSNjhHQkhrSUNSTmlTRHRVZHozY2pFL2pnY2pTSkVldUJnQkNDQUF5MWt4NUJIaDl3SkJCQVVFTEpFZVJCakRrNWswbHBnQUJnY0o4WUFTenpsQnNCQUlxbWYxWUpVdE1tTjF0NUVUL3psV0JKTW1JNWxsNVpsaFRCTWcwd0FYUkZrbWpwRUVRNVJjYjNsZzJ4SHZtWEp5TkFseTNWSFZtWklrT3dEWHE1bDJoZ1g3d1RtQzExQWZvSUlmOW9tQlBSQ0ZuQVZNd2dCQWdRRFl4WkVabHptZTFXbVJTQm1acHBFWmZabWFBWm1xSTVtcVJabXFaNW1xaVptcXE1bXF6Wm1xNzVtckFabTdJNW03UlptN1o1bTdpWm03cTVtN3pabTc3NW04QVpuTUk1bk1SWm5NWjVuTWlabk1xNW5NelpuTTc1bk5BWm5kSTVuZFJabmRaNW5kaVpuZHE1bmJFUkVBQTcnLFxyXG4naW1nL3RleHQuZ2lmJzonUjBsR09EbGhGQUFVQUlRVkFBb0tDaEVSRVJnWUdDQWdJQ2twS1RJeU1qdzhQRVZGUlU1T1RrOVBUMVpXVmxkWFYxNWVYbDlmWDJSa1pHWm1abXBxYW0xdGJYQndjSE56YzNkM2QvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUI4QUxBQUFBQUFVQUJRQUFBVkY0Q2VPWkdtZWFLcXViT3UrSXlWVFUvUTBDM0lZeFVtSmtzZ0g5OWw5Q0lNVTVFSGlzUndOVW9IQVlpeElTSllDUVJvSVdJa0RTUkJZNlF5a0FBREdicnZmOEZjSUFEcz0nLFxyXG4naW1nL3RpY2suZ2lmJzonUjBsR09EbGhFQUFRQU5VL0FGcWhVbmE5YkR0L05XcXhZR3l5WW92UGY0Yk1mSTNQZ1o3Sm1UNkNPSVhKZWp5QU5tMjBZNG5PZm1tdlg1L0ttdmo3K0dDbVYvbjcrRjJrVkdpdVh0enYyVnFtVVdldFhFZU9RRUNGT1dHbldJbk5mY1Bpdm8vUmdvSEtkb1BKZVByOCtUcDlORnlqVkZ5blU5YnMwOWp0MWZmNjkvajY5MzdJZElmTmZIbkFiWjNIbUxYV3NybmJ0VkdhU1ZlZlQ1M0ltYUxFbjZESm5HT3dXYW5PcFpEU2hJWExlYW5McFdTc1d6MkRONEhKZG9MS2QxK2xWb0xMZVBuNytmLy8veUg1QkFFQUFEOEFMQUFBQUFBUUFCQUFBQVp3d0o5d1NDd2FqMGprZzVZa1BoaU9XL09ISUhRVWtWZ1NOamdVTkJtZnNNUWh3aHlOUmlRaC9sVUNxcFp3UmRta2VHd2hLYUE0akZneUZ3WTJFM2xDSURNQk5Rb0REQjg5SWd0dFF5QVdEQTBHSGpvQUFwTkVFQzQ0T3lnQUlSSkpFQmdpTDZaVEp6a2hua2ttc2xOSlFRQTcnLFxyXG4naW1nL3RsYy5naWYnOidSMGxHT0RsaEVBQVFBTlU3QVAvLy80ZWx3Skt1eDVleXlQNy8vL245Lys3MSsvMysvL3IrLytudzk0V2t3SWFsd0phd3g1bXl5VzJTc3ZYNi8zS2wxSUtqd05ybjhwT3V4ODdmN3Z6Ky92ejkvdmo2L1BEMStwR3R4Ky8yKy9INC9aR3Z5UHY5L3UzeStQYjUvUC8rLzRXbXdidlQ2SmV4eUhPV3RtNlNzNWl5eVBMMit2NysvL3orLysvMCtaeS80Ty8yL1BiNCsvMysvbkdsMU43cDg1YTgzcFd3eDQyc3gvUDIrV21Qc0hLbDA0aW13Wkt0eHZYNSsvei8vLy8vL3dBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURzQUxBQUFBQUFRQUJBQUFBWnd3SjF3U0N3U2E0cUFVcmx3R0hjTEFPRkFKUUFFejhpR1plaHFIck5uQUVBdUEzQmlnRVJseGhwdkFKdUlETHFtS1FuQUtmYVJwY3NlRUJnTWZ3a3JGeTBBRTM4d0x6bGtia1ZqQUM0MFpaRkVDZ1FwRmlnZEZRQVpUeUU2Q0FXbkNBQWNUeVVqSmdPd0F3MGtUN1ZGUVFBNycsXHJcbidpbWcvdGxjbnVtYmVyLmdpZic6J1IwbEdPRGxoRUFBUUFNUVpBUC8vLzYvQzFiek0zTGZKMnJqSzJyYkoyc0hTM3dnRHc2N0MxcS9EMXBPdnhzZlc0ckREMXBleHlaMjJ6TDI4NzhiVzRaYXh5YTNCMUxuSzJyYkkyYnpPM0ZwWDE3TEYxM3Q1My8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJrQUxBQUFBQUFRQUJBQUFBVldZQ2FPWkdtZUtLa0lCQ0ZFYVlZQU5GQ29yQnNGOUFOUXBGbXR3QUJZRG9BQmlRZFlYU1FQREhKQ0tnS0VUS1J5eE96U2tEY3V6WnFvSlpjMFptTlJNVUFjcERLQVNkdVcxZ2FKT1l5UzEyTjRibkF4TVNFQU93PT0nLFxyXG4naW1nL3RsY3RlbXBsYXRlLmdpZic6J1IwbEdPRGxoRUFBUUFOVXJBUC8vLzVleHliL1IzN3pNM0xmSzJxL0MxYmJKMnZ2OS84WFY0dmY2L2I3VzdLL0QxdnovLy8zLy8vTDQvZGJrOGNyZDd0bm04cE92eHE3QzF2WDQrOC9nOExIRTF2NysvN2JJMkxERDFhM0IxTzd6K2VIczliZkoyckRONk1YVjRiWEkyYkhGMTdqSjJxN0MxSjYyekw3TjI3ZkkyTGJJMmZUNS9iREUxcm5KMnYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ3NBTEFBQUFBQVFBQkFBQUFaMHdKVndTQ3dLSlFNQ1lSQXdFaWVBQmdOZ2NBNHpod1F5dEd3YVRZb0hWRXAxV2h3VWJPSWlPU21ad3dJQWdna0R4dE9xVUI1Sm9UY2pXUmNBSUVNTEFBQnlFQlYxRHdBSElrTUJDQUlhQUJFY1p4UWJIaVZHaDRpS0ZTZ3FScE1DbFpjY1pWWXJvSWdkclN1bkFoOGtzcmk1SzBFQU93PT0nLFxyXG4naW1nL3Rvb2xiYXItYmcuZ2lmJzonUjBsR09EbGhBZ0FhQUlRUkFNN2Q3OC9lNzlEZThOSGY4TkxnOE5MZzhkUGg4ZFRoOHRYaTh0Ymo4dGJqODlmazg5ams4OW5sODlubDlOcm05UEQxK3YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUI4QUxBQUFBQUFDQUJvQUFBVWtJQVE5NU9NNFRjTXdTN3NvU2lJblNJMGNoNkViUlY4UWhJRndJQ2dLQWdHQUVoQUNBRHM9JyxcclxuJ2ltZy90b29sYmFyYmstYmx1ZS5qcGcnOicvOWovNEFBUVNrWkpSZ0FCQWdBQVpBQmtBQUQvN0FBUlJIVmphM2tBQVFBRUFBQUFQQUFBLys0QURrRmtiMkpsQUdUQUFBQUFBZi9iQUlRQUJnUUVCQVVFQmdVRkJna0dCUVlKQ3dnR0JnZ0xEQW9LQ3dvS0RCQU1EQXdNREF3UURBNFBFQThPREJNVEZCUVRFeHdiR3hzY0h4OGZIeDhmSHg4Zkh3RUhCd2NOREEwWUVCQVlHaFVSRlJvZkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGYvOEFBRVFnQVB3QUNBd0VSQUFJUkFRTVJBZi9FQUdvQUFRQURBQUFBQUFBQUFBQUFBQUFBQUFZREJBVUJBUUVCQVFBQUFBQUFBQUFBQUFBQUFBUURBUVlRQUFFQkJRa0JBQUFBQUFBQUFBQUFBQUFVWVFKaUJCVUJVcExTVTVRRkJoWldFUUFDQVFNRkFBQUFBQUFBQUFBQUFBQUFFZ0VSVWdPUkFwSVRGUC9hQUF3REFRQUNFUU1SQUQ4QU8rMzczOUh5dTltYzUzM2p3MmJlTUhOK2pKZE9wWFJzTE1STjlCQ0hjMmdpcHpBemxGRkZPaEJkZ2hCSWlzdWczRUtTTFlqRU5Zd1ZFenB2NFhoU3dRckovOWs9JyxcclxuJ2ltZy90b29sYmFyYmstZ3JlZW4uanBnJzonLzlqLzRBQVFTa1pKUmdBQkFnQUFaQUJrQUFELzdBQVJSSFZqYTNrQUFRQUVBQUFBUEFBQS8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0tEQkFNREF3TURBd1FEQTRQRUE4T0RCTVRGQlFURXh3Ykd4c2NIeDhmSHg4Zkh4OGZId0VIQndjTkRBMFlFQkFZR2hVUkZSb2ZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmLzhBQUVRZ0FQd0FDQXdFUkFBSVJBUU1SQWYvRUFHNEFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBVUJBZ0VBQWdNQkFBQUFBQUFBQUFBQUFBQUFCQVVCQWdZSEVBQUJBZ01KQVFBQUFBQUFBQUFBQUFBQVlSUUJVUU9SQWxMU0V3U1VWUVlXRVFBQ0FRTUNCd0FBQUFBQUFBQUFBQUFBRXdGUkFoS1IwVktTQTFNRUZCWC8yZ0FNQXdFQUFoRURFUUEvQUcvcHZVOXh2dVRXekdHOTdxOGQyc25JUHErVDNiK2FkeU5VRmpCTm1LdGtKd0NVaXpSQXRZMVFOTTBEMURoQXkyaElQV05sR25NWmxtRjJoZXJYd1g3SWdlVjFKRnVkMUpQLzJRPT0nLFxyXG4naW1nL3Rvb2xiYXJiay1yZWQuanBnJzonLzlqLzRBQVFTa1pKUmdBQkFnQUFaQUJrQUFELzdBQVJSSFZqYTNrQUFRQUVBQUFBUEFBQS8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0tEQkFNREF3TURBd1FEQTRQRUE4T0RCTVRGQlFURXh3Ykd4c2NIeDhmSHg4Zkh4OGZId0VIQndjTkRBMFlFQkFZR2hVUkZSb2ZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmLzhBQUVRZ0FQd0FDQXdFUkFBSVJBUU1SQWYvRUFIRUFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBWUZBd0VBQXdBREFBQUFBQUFBQUFBQUFBQUFBZ01GQUFRSEVBQUJBQVlLQXdBQUFBQUFBQUFBQUFBQUFXRlNCQlFWVVFKaWt0SURFMU9VQlFZV1ZoRUFBUUlFQndBQUFBQUFBQUFBQUFBQUFCRVRBVkVDRk5FU2tnTlRCQlgvMmdBTUF3RUFBaEVERVFBL0FDSHZ2bnYwbmE4NTV4a3R5cWNUdG5qOVhpMjlGT0JNMEUwQW9XMnk5TDFEc3ByUGllV0tISVI3Z1dTdXlNUWlYQXBnRU1ob1JYaldPUzBZb0xJZGlYdmF6THRZRlNvM1RPQi8vOWs9JyxcclxuJ2ltZy90b29sYmFyYmsteWVsbG93LmpwZyc6Jy85ai80QUFRU2taSlJnQUJBZ0FBWkFCa0FBRC83QUFSUkhWamEza0FBUUFFQUFBQVBBQUEvKzRBRGtGa2IySmxBR1RBQUFBQUFmL2JBSVFBQmdRRUJBVUVCZ1VGQmdrR0JRWUpDd2dHQmdnTERBb0tDd29LREJBTURBd01EQXdRREE0UEVBOE9EQk1URkJRVEV4d2JHeHNjSHg4Zkh4OGZIeDhmSHdFSEJ3Y05EQTBZRUJBWUdoVVJGUm9mSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zi84QUFFUWdBUHdBQ0F3RVJBQUlSQVFNUkFmL0VBSEFBQVFFQkFRQUFBQUFBQUFBQUFBQUFBQVVDQkFZQkFBSURBUUFBQUFBQUFBQUFBQUFBQUFRRkFRSUdCeEFBQVFJRENBTUFBQUFBQUFBQUFBQUFBQUVVVVFNVFlaR2hBbExTQkpSVkJoWVJBQUlCQWdVRkFBQUFBQUFBQUFBQUFBQVRBUUlTVVpIUlVwSURVd1FVRmYvYUFBd0RBUUFDRVFNUkFEOEE2WDZUMmJ5M043RTdjY3YrajVIY3I1VHFibjB1bHNweWdpZ290dUdTemZRQ1ZGYnhOb3NCa2tFWU1NN01Cb2tBYU1Oa2dNbGdEQzNLeExNSVdGMVoralBjb0RmVmhJWmJCLy9aJyxcclxuJ2ltZy90b29sYmFyYmsuanBnJzonLzlqLzRBQVFTa1pKUmdBQkFnQUFaQUJrQUFELzdBQVJSSFZqYTNrQUFRQUVBQUFBUEFBQS8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0tEQkFNREF3TURBd1FEQTRQRUE4T0RCTVRGQlFURXh3Ykd4c2NIeDhmSHg4Zkh4OGZId0VIQndjTkRBMFlFQkFZR2hVUkZSb2ZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmLzhBQUVRZ0FQd0FDQXdFUkFBSVJBUU1SQWYvRUFGc0FBUUVCQUFBQUFBQUFBQUFBQUFBQUFBVUNCZ0VCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQVFJRENRRUFBQUFBQUFBQUFBQUFBR0VVQVFNVFVaRUNVdElFbEZVR0ZoRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL2FBQXdEQVFBQ0VRTVJBRDhBMG4wWHFPMzMzSm5hZ0thSUEyelFCcG1nRExWQUZLRUxBS3JLQWZWbTVjVjBRUC9aJyxcclxuJ2ltZy90cmlwbGUuZ2lmJzonUjBsR09EbGhGQUFVQU1RY0FObloyVDA5UFR3OFBENCtQbGhZV0RzN084REF3TVBEdzFaV1ZyKy92OEhCd2RmWDE5alkyRkJRVU4zZDNjWEZ4Y1RFeE1MQ3d0dmIyNzYrdnRUVTFOcmEydFhWMWNiR3hrQkFRRUpDUWo4L1B3QUFBUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQndBTEFBQUFBQVVBQlFBQUFWeElDZU9aR21lYU1vUkRhQ2V3aGE0cjhnYXhhWXhOUmNIaVJpR2htSWxjaHJjWmtBMC9TWkNoVWJITzFtUXg2VjBNMFJSaElhcEpqS1FOVW1MM0dDTE9XU29xSVdZTEhOenp5TTVGL0xXMkRNcEFHVUJmRndQQ0FRcUZYMFBiNEExRW04WUY0ZzlIQTZPbGlNT2xacWVsaUVBT3c9PScsXHJcbidpbWcvdW5kby5naWYnOidSMGxHT0RsaEZBQVVBT1lBQVAvLy8wQm93RkNJOEVwKzRHQ1E0SkN3OEkydzcwQmdzRUJ3MEtpLzdsQ0E4R2lWNzJDUThIQ1k4RUI0NEhDZzhMakEwRlYrdGxCNDBLYXd3dFBXMmFxNzFhRzc2NHVteTdUTDdvQ284R3A1cVYrQ3ZUQllzRUJ3d0RCUWtEdGdvNXUzNzBCZ29NL1MxRkNBNEttKzc2T3owRm1HNER0b3M4M2E3S25GN3JXOHg1Q284TFBDNzczRjFNM1U3WENZNE9IbTZLcSs3OXJjM0xURTRLUzc3NksxMHREVjVFQm9zSnEzN0pxdHpNM054RjUrdzdmRjdwdTQ3REJnc0ZoOTBMVEc3SzdIN2JmSjZqQnc0UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFFUUFMQUFBQUFBVUFCUUFBQWVEZ0VTQ2c0U0Zob2VJaVlxTGd5Z0pNUmd1aklJSkJTQUdCaVFzaVNzd1JFQUZDd2czSndNMFBJZ1pRVUlGQkIwQkd4RWhBaW1JTHcwUEN3Y0hPVVF5SHdNOWlBUUtEQThhTFlNQkF6aUlJME1LRFFRMnlpWVdpQTRJQVQ0Y0hvSVVBUUl6azRNcURnemtnenNDTmVraUpRSS82VVFRQWhJVDh4VVhPdlA5L3YvOUFnRUFPdz09JyxcclxuJ2ltZy91bmtub3duLmdpZic6J1IwbEdPRGxoRkFBVUFPTU5BQUFBQUFnSUNDQWdJRUJBUUVoSVNGaFlXR0JnWUhCd2NIOS9mNGVIaDVlWGw3ZTN0K2ZuNS8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUE4QUxBQUFBQUFVQUJRQUFBUTc4TWxKcTExRDJVMEZBQWpISGQ4bmJvUjVic0FVcnRiM3dsSXEwNVBkNHZYT1d6UGVqYWNMd25TL1J5cFpBVEUvaVo4dGtDd0FERXlHSkFJQU93PT0nLFxyXG4naW1nL3VubG9jay5naWYnOidSMGxHT0RsaEVBQVFBTlUvQU9IaDRzYkd4ODNOenZ6OC9QcjYrL2IyOXNqSXlOSFMwdVhtNTkzZTN1N3U3OWJXMXJXMXRkbloyZlQxOWI2K3ZsbFpXL1QyOXZIeTgvSHg4ZXpzN1BMeTgrM3U3KzN0N3V2cTY4TEN3NzIrdi9qNCtOcmEydjcrL3RqYTIvbjUrZXJyN08vdzhQZjMrUFAwOVdOaFl1SGk0K25xNnN2Tnp0dmMzZS92NzlmWDEvNzkvZGZaMjZtcXE3aTZ1c2ZJeU1YR3h2MysvdDNmNE1URXhMYTN1T3Z0N2ZyNStieTh2TCsvdjcyOXZ2ajUrY2ZIeC9uNCtjckt5di8vLy8vLy95SDVCQUVBQUQ4QUxBQUFBQUFRQUJBQUFBYW53Sjl3U0N3YWZ5UE9ZVEU1Q2p1TkVzaUNPQmdJeDRZRW9IbG9QQW1jMFFSQ1pRWkNnZWZFS2FvaUdkR3dJNUNKaVFmVXJTZ291WW9PQ0UxRUFna01SQU1FaVJ1TUh3TUNMSWRESEJVVUlDWVVDaGdJRkNrWEFrTU5QcU0rSlMwQUt3VU9QajJoUGdRMlBqUVFEQU1TRXpvR1F5bytQQnN4THhBQklpa0tCYnBDdkNJRkF6Z2tPU0lXTlNNN3U2OGZHeFVYSVJJaEtRVUJRd2s3QmdiazVnRUJNRE1xUDBFQU93PT0nLFxyXG4naW1nL3VwLmdpZic6J1IwbEdPRGxoRkFBVUFPWkFBUDcrL2c4UEQzVjFkUWNIQndnSUNCRVJFUkFRRUE0T0R2ajQrQU1EQXdFQkFSVVZGUVlHQmpRME5EMDlQZkx5OHEydHJSWVdGcisvdjF0YlczUjBkT1BqNDc2K3ZveU1qSTZPamlrcEtmdjcrMUJRVUhwNmVvQ0FnS0dob2MvUHo4VEV4Q1VsSlNJaUlwbVptUjRlSGhJU0Vnd01EQTBORFJrWkdRSUNBakl5TXVUazVOemMzS2lvcUVORFEvLy8vM0Z4Y1JNVEV4MGRIUlFVRkxhMnRpMHRMYzNOemU3dTdrdExTN3k4dlAzOS9mejgvRjFkWFJnWUdHbHBhUUFBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUVBQUxBQUFBQUFVQUJRQUFBZUVnRUE2RlVDRmhvZUloaFlMTkltT2lCZ0pGNCtVUUR3L0V5K1ZqZzBNS2dpYmlBZ2tDVEkyb1ljZkN6OHpMYWlHRUFVL0JSeXZoUjBIUHdjNEFMWWJCRDhER1RldkFEVXBQd285RXE4UEtEL1FKU092SURIUVB3WStyeDRHMXlZT082Z3dKOWNNSWl5b0xnUFhQd0dvQUNFSzBBRUNyeXNSN2ZXMk9RUVV0b1lhREFVQ0FEcz0nLFxyXG4naW1nL3VwbG9hZC5naWYnOidSMGxHT0RsaEVBQVFBUGV0QVAvLzQwU09MZlRIanZiRE1zZVVPZFdYVGttTEo0YS9XT3pjUWUvWm4vYlZhdjcvNFBiV1pmWHFzdnZZZkY2VlVtdVhWczZLUHptSUNJZTNZMlNuTm1hc09QL2JobENKSVAvMy85cVBOUC83OGE3SmZGV0NMYURNZitXVGJ2bnFqWFdVSGE3WWpPak5pbzdIZXFuVm1tQ1NELy81NVAvLzZPM0FoZW5ycWYveThPdktiZWpqcWZiZXd0T2JQb25BV2t5TEZ2RGJpT3pVaXRmTGVmSFpYMkdtU2ZmcXBQamJUL3pxb3N5elRzcXNQdC9HWXRXRkp2enR6UEx0eituS1ZkNk1RL2ZweEd1c09PYlh1UC9Ra05iQlFxYTZub3kzcFBDNlpPN2lsbnVkUnBTOWQwZHZNWWlzWnV6YWtIcUxSZi8xdmRLWFBlSEtZR0NkTmZ2U2R2Ly8zcFhDaC9yeDMvLzA3cytxWlAvLzd1M1pRdWk4ai92ZG9lL1NNUC81N1BmYm5GcWZUOGlQT1ByZVY0eThXZi96NFkrc1dIZWxUdkRXSzlKL00vUGpoT3pOTitQc3JhN0pxUHpnbitYYmxuR3BVdGJJaWYrNGVvK3ljbXlmVXZibm9ucW5aUGY0OG1HY1N2SGZmZi8rKytHa1I1TzJqUExmbXZuT1pjZWRKOHFZTi9ucHRVK0hNUFAvMDR5OVlkbWFTOWpCV2YvbWtmLy85di95Kys3Y2VQM0lMTy81MTRLbFdwN1JndTZTUC8vdHJXKzlOWjNiaUZtSU4vL2JmL0t1Y2VtNVBaaklsdUhsaC9YUk0vLzg3TjdMVmVmeDF2SDF3di9yeHRTeUxKcWNTUC80MFZLWklkK1RNKzNkbi8vejdwRzBQTzNiYjl5dVA1N1NpUGphaFBmbGY5S0ZNLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUswQUxBQUFBQUFRQUJBQUFBamdBRnNKSEVpdzFZT0NDQWRDd0FNalljRXpOVVpNTWVCUVlDTTRrZzRjb1hDaGxTVVVoamJ0a0RJRFZDUkhmT3hNV0VKSFFoRVZXdlJnME1ScFRvVW1Sc2gwVU1Ja1FJNUVLVENSd2dHQTBTQVFiUWhaS1NId0U1WWtlWWdnRVNERHlSTVNMeTRKRW9pcXpCQVJjWUtVcXFMQlRLb1FHeVlKMUlIb0RvQUZKNjZ3ZVdOS2lLZ3dIQVM2K05JRGtvMDZYZFJRVXZCakRKUTlBZ3VaQ0hUb3d5b0hOQkRjR0xESTB5T0JnRUkxY05OSEVZTXRYdFprUXROcGxNQXNQbGlBU1JCRDFTa0xLNmo0YVZGQW9Cd3VCSGl3eWdBa2dwZy9VZEo0cUZTeFlrQUFPdz09JyxcclxuJ2ltZy91cGxvYWRpbWcuZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFGaGhjdjcrLy9uOC84Ykp6bU5zZTRxUW5LWFIvZisxV3VQRWdwT0NyTkhvL2JTM3Y1R3diNDdIZXZqNCtKZkg5di9tZ01IZy81UEU5cURMOW55b2FQUHo5R0dtU2JiYS82blE5bnluMnRIYjVuMlZ5R0NRRTR5OVliZURjTEhGOGZPTU4vcm5odXlETldXZVRvcUJ0cWkvNzdIWS82YXBQR21ZUWVDUlh2ZHROZTNLZk9UQWZ2K2ZlSXkzcEo3U2lKYWN4cDJ0MlZ5ZE5PbnM4SnFvMXFUTjl0dVFWNTJNcUplazBvOTlwWmVleVpPV3dhYUdsR1J0Zkh5dlBtKzlOY2c3SEs3WWpMWFBuNW1oektyVS85SG8vN2xnTVllM1k5WGY2Tzd3OHNLY2xacGJNcXlYckc5OHJ0bXVYM1dsM3JDemRlVHA3bjZ2a05laGYvK0hWb3VSdG9hL1dJR2N6NFNqMXFXOTdubW1aSkNCcjVXWnhQYjI5cHpKOXF2QjhOL203Rlp3VW95OFdmK1dTWHFQd25xblpIYUl1MnhwdUpHOWc1M2JpTEkxRTVPMmpPYVpWTVhpLzRpcjNvT2kxWmltMDI4MEtQYlVldXBaS3FxUW0zdWRScGVpU0xXWGsxbUJRYmM2TXFCaUxHeWZVck9nVFByNitxYTZub2lzWnBTOWQ2RE1mMWhCUktYUy81WENoK1hHZ3EvRDhIR3BVdHZpNnE3SnFGMStUWXVPdUhPQ3RZbkFXcDdSZ3RtNmhzem0vNWlTd3J2ZC8yU25OdmUrWldhZmFmOTNPWmpJbHYvZG1hN1M5dFZDSDY3SmZNL01aYmQ5VTNTbzVzR1FmYW5WbXJHMXZXQ2ROZE9mZEdORExsQ0ROLytQUnY5MU43cUllcU43UEgrbGNLK3p1MWRnY1llcDNQLy8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFLOEFMQUFBQUFBUUFCQUFBQWp4QUYrMUdralFEWlpXcWtZSWVjVlFvS3VIRHdNSTBHS2hnU2dLRFZ0QmRDV1J3YUUwVmx4TVFzR3dWWitJQXFEOGNMU216QkZBZTJRSWROQkN4U2xUVG56ODhTTW1VQjFGYUFSMm9XTEUwcGdEbUU0azZrQ0lROFlLZWVLb0FhSnBUaXBRalM2VnlwZ2t4Ukk5SWtCUTR2TWl5Q1k4RGQvTW1OS0psQTAyY2pqWnFTUWxUTU1yVVpTZ0V1UmhWS0VWbnpKOFlOVndBeGdtT2M3d1FCQUN3cDBuaGdnekpJTW9Fb2t0Q2VnOFluSEQweGZKcjh3Z1VaQUpRNDBKWGg1SU1GQUNOQ01OUlNDMWlTRHBnZ2tpZzdJQWFOZ2tCZzA0T0lib2dNRmxSNVZGUFJxK0trQUFBS3ZuMEFFUUtNQXdJQUE3JyxcclxuJ2ltZy92YmsuZ2lmJzonUjBsR09EbGhBZ0FhQUxNQUFNN2Q3OC9lNzlEZThOSGY4TkxnOE5MZzhkUGg4ZFRoOHRYaTh0Ymo4dGJqODlmazg5ams4OW5sODlubDlOcm05Q0g1QkFBQUFBQUFMQUFBQUFBQ0FCb0FBQVFmOE1ucFhHdU1yYjJVU21DQ2pNaHhHS2hSckFWQkRQQWd6RUlRQURnUUFRQTcnLFxyXG4naW1nL3dhcm5pbmcuZ2lmJzonUjBsR09EbGhNZ0F5QU5VL0FQMzU5LzJ6YzlEUTBQeWpWUDY2Zy92azFQMnJaUGVUUE1xNHJmMjFlZjdDay8ydWFmNjlpZnFaUS83Rm1mdWRTcmF6c09UazVMZU1iODZPWk95bmRzK0tXUDdYdC8ybVdmdmN4UDdLb2FxVmlNdkJ2UFdaU3Yyd2J2V3VkL2Z6OFAyb1h2U2tZKzY5bS83QWp2SE50ZlNVUXEyaW12T3loT3lQUS9XaVhPS0pSUDY0ZnUyamJ2ZWRVZnlnVC9xL2xPV2JhT3liWE95c2dPL0RwZjdRcWUyMGpmN0hudmU1aS8zdDRQYTJpSlNVbE9DUlYvYWdWLy9Kb2YvLy8vLy8veUg1QkFFQUFEOEFMQUFBQUFBeUFESUFBQWIvd0o5d1NDd2FqOGlrY3Nsc09wL1FxSFJLZFg0KzFTeVJkTXFKdE5uUHFkZTdtUURncVl4TWhtM1MwY0tMM1h0cHNIQW5oVTVtUWZKTkpBNThQVFlTRVlCS0FHdUVQVEltUG9sSUlqYU5OallUQXBKR09EbUVsellPT1Jwb20wT01kSmNPcXdwdXBrSVljMnlxckFvS054SjRrajU3czZHMUNpTWpNSCtiTTVXRm9Sa1lHQm5Cd2d3RWg1SmlaS285QUQ0K0FCa2pETjhFTEpDSk5jbXJEaGJhMmdYZjBRUXJtWUFGTjdRT0N1bnE3QVQ3S3lzZXBIa28vTEpuaTRZNkh4ajQ5VXVRWU1lYk5DUmVuTE1Wek1GQkd1OFdKZ2pnSVJjWUFCU0FRV09RVGRzSWpSc0RkSWhSTElzSWlzKzhmU3VnRFlER0FEZzdkRmd3QVZHVi93OGVLSTRFaDY4QXc1UTZkeTZJY2FhS0RGdkNaTG9qWU5HSGhaUXFkUzVZWU1CQUJVMVRDdVI0MXM1ZHZ4WFpSdVRVdXJXcmdSUjNwUGhnRWJYZHZvd01jUUJZcTlRdENCQVhIRW9od1VEcTNiTU1BMkRBa1hRcjE2NS9BUStZOWdTa1lZVkhjZElvd05idjN3dWdCNkJvMmFTR1hZVXJFdWRFNTlnejZBc0RZcnVvNEpNSkRnL2dNS3ZPcXRVejROQ3hCN2pnb0NFU0V3cFRFV050M0JieWI5akJoYnVZRFZZSmhnU0hVKzl1dkFKREFRV1JYMGVmVHA2NHJpTUFXS0RlenJaRFNSOEV4SThuLzZDK0N0SkdacXpBeTc3dmlJTVdBQ2NiZVM3VVYxOERsQm54QVF2SzRjUmJjd1lrY0ZGMDBrMW40SUVOb0dBQ0VqS2d4TFJYWDg3aGd3TUl3UkZZNElVTnBOakFWMFlVNElGMkRqTG5sZ0dmWGRCQkF0QlZlS0tCS3FxSVFuRkZzSkRaZ3hDR2wrT0E5S0hZbzRvcVBDUUVDUUVzMTVsckF1cTRJNFpMTm5EQWxuRUpJU1JmclRuM0c0VW1YdmhBbGxwdXVlVjlROFFBNW1NMDFuaGttVXBtcWFhYUt1aUFod2doOU9sbkNDa0V5c09nUExSZzZLRXRjS0Rvb291VzRPaWpKZHlwcGdSNkRnRkFBUnRrcXVtbUd5RGc2YWVnaGlycXFKNW1XdHNycUthcTZxcGFCQUVBT3c9PScsXHJcbidpbWcvd2lnZ2x5LmdpZic6J1IwbEdPRGxoRkFBVUFNWktBQUFBQUFJQ0FnUUVCQVVGQlFnSUNBb0tDZ3NMQ3d3TURBOFBEeEFRRUJFUkVSVVZGUjBkSFN3c0xDOHZMekl5TWpNek16UTBORFkyTmpnNE9EazVPVG82T2pzN096dzhQRVJFUkVoSVNFeE1URkJRVUZGUlVWWldWbGxaV1Z0YlcyRmhZV1JrWkdkbloyOXZiM1YxZFhkM2QzbDVlWHA2ZW4xOWZZR0JnWU9EZzQ2T2pwYVdscHljbko2ZW5wK2ZuNkNnb0tHaG9hS2lvcWFtcHFxcXFxMnRyYkN3c0xTMHRMYTJ0cjI5dmI2K3ZyKy92OFRFeE1iR3hzbkp5YzNOemMvUHo5WFcxdGZYMTl2YjI5L2YzK0RnNE9IaDRlYm01dW5wNmVycTZ2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FIOEFMQUFBQUFBVUFCUUFBQWVKZ0grQ2c0U0Zob2VJaFVFcExZbUhTQkVHQUMrT2hqNDlCek9WaGtJSFFIOUZSMFNiZnpRRU5pY1BBQXc4bXk0QUNBNG1Ld0U0cERJeFFuOHpBajZraENVS1Jqc2pIU2lrSWdRWUNSVU5BRCtiTUFzWExrY3NBTCtFSUJCL1NUazNSYVFaRmpNVUJBY05wQjREQlJvMUh3NmtRekU2Z2lFYjJZTU9KUG1DRUJJVCtxbmdJS0xmb0VBQU93PT0nLFxyXG4naW1nL3pvb21ib3guZ2lmJzonUjBsR09EbGhGQUFVQU9aVEFJQ0FnT3Z6K3VyeSt2bjcvZW55K3VqeCtmZjYvYjZIVGNHUFd2VHMzUGJ2NU9ueStkU3djTDJGVE9ISnVNMm1ZdkgyKzlHcWR1NzErK0xMdWVmVHV2SGwyTm03ak9mVG9NT1NXNnhsUC9MMy9PYlJyOS9Gai9MbjJlWFBxZEt1aE1xZlplUE51OWUxZmZyMjlOS3RkOE9SVnJtQVNMZDVVczJrY2RxN2dQZnc1ZEdyZytiUnJ2RDIrOTNDa2RLdWJjR09XTW1iWTlLdGJQSG0yTi9FcCtUTXJQZnY1ZS8xKzlpNWk4eWhaK1RPclBmeDdieUVVWmRoUnM2blk5ZTJmYlo3VWMybmFPYlJ1ZC9Gby9QbzJ0YTFmK3pjditESGs5ZTNmZDNEa2NtYlllalZvOCtwWmE1dFNQang3ZENvYXMrb1l3QUFBUC8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRk1BTEFBQUFBQVVBQlFBQUFlYmdGT0NnNFNGaG9lSWlZcUtDVWt2VEQ1UEZrU0xSZ3hJR3lvS09pUTVGSWtKREI0R053SUJFQU5ETVRPSUxqOEdBUVVMQkFJU0F5Z2ZpRElzTGJLMEFRRWFOQmlJVURaUnlNbktpQThLVVZMUTBkQlJpRUUxejlMUjFJYzRFZGpaMElnZElOL1pBQ0dJUXNySlVnRHVUb2dWS3dnSERmUU5Td0FwR1R1TGdoTXdPRnc0b3FTSFAwRU9lSWdvVWdMSVFZUk5USndZOGJEaXdVQUFPdz09JyxcclxuJ2ltZy96b29taW4uZ2lmJzonUjBsR09EbGhGQUFVQU9ZQUFQVHI0dW55K3ZuNy9UNkROK2p4K2RTd2NQZjYvZmJ2NUw2SFRlSEp1Rk9lUzF5b1V1LzErelY1TVBUczNPbnkrWXZHZytuWHBkS3VoUG43L3QzQ2tkN0VqZWJScnlwckp1VE9yTmk1aTcyRlRNcWZaVEowTE5LdWJUQnhLK2pWbzk3RW84T1NXOUt0YlBIbDJOL0ZqL0QyKzJPeVdmTG4yZVBNbWIrTFVPWFBxZGUxZmZmdzVkM0RrZENvYXRtN2pNR09XSGEzYmQ3RHB1enorb3ZIaGVQTnUvUDQvT0RIa3k1dktjeWhaMlduWG1Hd1Y4K29ZMnVzWTlHcmc4R1BXczJtWXNpYVlNbWJZYzZuWS9IMy9KN1JsWi9TbDkvRm8rYlJyak4yTHViUnVkR3Fkc09SVnZIMisrTEx1WWJGZmJ5RVVmZng3ZVRNclBIbTJMbUFTTXFnYi9yMjlKZGhScHJQa2wrdFZvTENmZlBvMnJaN1VmZnY1ZGUyZmV6Y3YrNzErL0wzL0VTTFBlZlR1cXhsUDgybmFOL0VwOWExZjhtYlk4MmtjZHE3Z0s1dFNLYlZuWkRLaU0rcFpkS3RkK3owK2syV1JWNnJWT2ZUb0xkNVV0ZTNmVnFiVTJlMlhQang3YnlEVCtyeSt1dnordi8vL3dBQUFBQUFBQUFBQUNINUJBRUFBSHdBTEFBQUFBQVVBQlFBQUFlL2dIeUNnNFNGaG9lSWlZcUpEaTBkYmtNdUwxdUxYd1YxRml3SEdHODVZNHdGS2dZTWVudE5Ba2RvVTRnVVhnWjdCQThCZW1BQ2FSS0lJa2dsc2JON2UyRm1JWWc4WFh1enBYYzdDd0FwaUVBSE0zcWxlMWxzQ2dBSWlHVlNSTDhtY2pGRlBXSURpQmxMQWd4d0MwWllUMjBRRFlnbkd5QVROZ3B4T2pSMlNUZzFFQ2tKVWtVR0FBQUR0SEJBVVNFUEhrUWpmUHhBb0tHQmh3c2ZJcWdoRTJXUklDY3dTTXk1SWVTS1IwRUpvS3c0dzRUTFNaUnJxTkN4OHJMbXkwQUFPdz09JyxcclxuJ2ltZy96b29tb3V0LmdpZic6J1IwbEdPRGxoRkFBVUFPWUFBUFRyNHUvMSsvbjcvZW55K3V6eit0U3djUGJ2NU9qeCtmUkZTTzcxKyt3YUkvVHMzTzRtTHZkVVZ2cGpZdnh2YmZmNi9mRTFPcjZIVGVueStlejArc0dQV3ZqeDdjMm1ZdVBNbWRLdGQ5R3JnL0QyKy9IbDJQSG0yTU9SVnVuWHBieUVVYzZuWTkvRmo5YTFmOG1iWS9IMy9PZlR1dW9SSEwrTFVPYlJydlBvMnZmdzVkM0RrZDdEcHRDb2F2bjcvdmEycnZqeTc4MmtjZURIaytMTHVlSEp1TkdxZHZmdjVlREh0dmpJdi81NGROdS9oOWk1aThxZlpkbTdqUEgyKzd1R1V0S3ViZGUyZmQ3RWpmU3JwTjdFbzlLdWhNK29ZN0Z5UmZmeDdlYlJ1ZWpWbzhtYlllWFBxYnlEVDhHTlU5cTdnTi9FcDgybmFQTDMvUGZBdCt6Y3Y3dUJUTjNDa2VUTXJNK3BaZVBOdThHT1dMMkZUTU9TVzVkaFJyTnpTL0xuMmJtQVNNcWdiL1A0L0t4bFArYlJyOXkrcE5hMGVlZlRvTmUxZmFWY004aWFZTmUzZmRLdGJOL0ZvOHloWitUT3JQT2dtK3J5K3V2eit2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUhRQUxBQUFBQUFVQUJRQUFBZTlnSFNDZzRTRmhvZUlpWXFKQ3l4QldTRXVQaXFMVlFWc1pTc0djQmx2Sm93RlRSQUJjbk0vQW00a0hZaFhRaEJ6QnhNRGNna0NNa2FJYlNrYnNiTnpjMU5SWFloSE4zT3pwWE1FQ1FBb2lCY0dCSExKQkJRQkFCS0lVbGdsdnpvUERnMElFUXlJUERZQ0FSUVBPVlF3UkhFS2lHQTlSUzlqNGVNTUNpZGFpRXByeExRQUFNRE1rek1ZaGppeGdJaURoZ29TdUFDeHNtUEpCeWhra2l3U1JHT0xDRFF6bUhqWktLZ0dpRFFqUENBaEtRaUhtakJmWXJDY3lUSVFBRHM9J1xyXG4sXHJcbidpbWcvY29udHJvbHMvY2hlY2tib3guZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rN3U3dExTMHN6TXpNek16TXpNek16TXpNek16TXpNek5MUzB1N3U3di8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOURRME8zdDdmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rM3Q3ZERRMFAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhiR3h2MzkvZnY3Ky92NysvdjcrL3Y3Ky92NysrUGo0LzM5L2NiR3h2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy84TEN3dm41K2ZmMzkvZjM5L2YzOS9mMzkrdnI2NWVYbC9uNStjTEN3di8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vNysvdi9iMjlveU1qT1hsNWZMeTh1WGw1WXlNakl5TWpQYjI5cisvdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzdxNnV2SHg4WHg4Zkh4OGZORFEwSHg4Zkh4OGZOL2YzL0h4OGJxNnV2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy83VzF0ZTd1N3RuWjJXdHJhMnRyYTJ0cmE5bloyZWpvNk83dTdyVzF0Zi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vN0N3c092cjYrUGo0OVBUMDF4Y1hOUFQwK1BqNCtQajQrdnI2N0N3c1AvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzdPenM5VFUxT25wNmVqbzZPam82T2pvNk9qbzZPbnA2ZFRVMUxPenMvLy8vLy8vLy8vLy8vLy8vLy8vLytycTZyKy92NTJkblpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEoyZG5iMjl2ZWZuNS8vLy8vLy8vLy8vLy8vLy8vVDA5T2JtNXVYbDVlWGw1ZVhsNWVYbDVlWGw1ZVhsNWVYbDVlWGw1ZVhsNWZQejgvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUg1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQWorQUFFRUVEQ0FRQUVEQnhBa1VMQ0FRUU1IRHlCRWtEQ0JRZ1VMRnpCazBMQ0JRd2NQSDBDRUVER0NSQWtUSjFDa1VMR0NSUXNYTDJERWtER0RSZzBiTjNEazBMR0RSdzhmUDRBRUVUS0VTQkVqUjVBa1ViS0VTUk1uVDZCRWtUS0ZTaFVyVjdCazBiS0ZTeGN2WDhDRUVUT0dUQmt6WjlDa1ViT0dUUnMzYitERWtUT0hUaDA3ZC9EazBiT0hUeDgvZndBRkVqU0lVQ0ZEaHhBbFVyU0lVU05IanlCRmtqU0pVaVZMbHpCbDByU0pVeWRQbjBDRkVqV0tWQ2xUcDFDbFVyV0tWU3RYcjJERmtqV0xWaTFidDNEbDByV0xWeTlmdjRBRkV6YU1XREZqeDVBbFU3YU1XVE5uejZCRmt6YU5XalZyMTdCbDA3YU5XemR2MzhBbGhSTTNqbHc1YytmUXBWTzNqbDA3ZCsvZ3haTTNqMTQ5ZS9mdzVkTzNqMTgvZi84RUJBQTcnLFxyXG4naW1nL2NvbnRyb2xzL2NoZWNrYm94LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUNYQklXWE1BQUJKMEFBQVNkQUhlWmg5NEFBQUtUV2xEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOM1dKUDNGajdmOTJVUFZrTFk4TEdYYklFQUlpT3NDTWdRV2FJUWtnQmhoQkFTUU1XRmlBcFdGQlVSbkVoVnhJTFZDa2lkaU9LZ0tMaG5RWXFJV290VlhEanVIOXludFgxNjcrM3QrOWY3dk9lYzUvek9lYzhQZ0JFU0pwSG1vbW9BT1ZLRlBEcllINDlQU01USnZZQUNGVWpnQkNBUTVzdkNad1hGQUFEd0EzbDRmblN3UC93QnIyOEFBZ0J3MVM0a0VzZmgvNE82VUNaWEFDQ1JBT0FpRXVjTEFaQlNBTWd1Vk1nVUFNZ1lBTEJUczJRS0FKUUFBR3g1ZkVJaUFLb05BT3owU1Q0RkFOaXBrOXdYQU5paUhLa0lBSTBCQUprb1J5UUNRTHNBWUZXQlVpd0N3TUlBb0t4QUlpNEV3SzRCZ0ZtMk1rY0NnTDBGQUhhT1dKQVBRR0FBZ0psQ0xNd0FJRGdDQUVNZUU4MERJRXdEb0REU3YrQ3BYM0NGdUVnQkFNRExsYzJYUzlJekZMaVYwQnAzOHZEZzRpSGl3bXl4UW1FWEtSQm1DZVFpbkplYkl4Tkk1d05Nemd3QUFCcjUwY0grT0QrUTUrYms0ZVptNTJ6djlNV2kvbXZ3YnlJK0lmSGYvcnlNQWdRQUVFN1A3OXBmNWVYV0EzREhBYkIxdjJ1cFd3RGFWZ0JvMy9sZE05c0pvRm9LMEhyNWkzazQvRUFlbnFGUXlEd2RIQW9MQyswbFlxRzlNT09MUHY4ejRXL2dpMzcyL0VBZS90dDY4QUJ4bWtDWnJjQ2pnLzF4WVc1MnJsS081OHNFUWpGdTkrY2ovc2VGZi8yT0tkSGlOTEZjTEJXSzhWaUp1RkFpVGNkNXVWS1JSQ0hKbGVJUzZYOHk4UitXL1FtVGR3MEFySVpQd0U2MkI3WExiTUIrN2dFQ2l3NVkwbllBUUg3ekxZd2FDNUVBRUdjME1ubjNBQUNUdi9tUFFDc0JBTTJYcE9NQUFMem9HRnlvbEJkTXhnZ0FBRVNnZ1Nxd1FRY013UlNzd0E2Y3dSMjh3QmNDWVFaRVFBd2t3RHdRUWdia2dCd0tvUmlXUVJsVXdEcllCTFd3QXhxZ0VacmhFTFRCTVRnTjUrQVNYSUhyY0JjR1lCaWV3aGk4aGdrRVFjZ0lFMkVoT29nUllvN1lJczRJRjVtT0JDSmhTRFNTZ0tRZzZZZ1VVU0xGeUhLa0FxbENhcEZkU0NQeUxYSVVPWTFjUVBxUTI4Z2dNb3I4aXJ4SE1aU0JzbEVEMUFKMVFMbW9IeHFLeHFCejBYUTBEMTJBbHFKcjBScTBIajJBdHFLbjBVdm9kWFFBZllxT1k0RFJNUTVtak5saFhJeUhSV0NKV0JvbXh4Wmo1VmcxVm84MVl4MVlOM1lWRzhDZVllOElKQUtMZ0JQc0NGNkVFTUpzZ3BDUVIxaE1XRU9vSmV3anRCSzZDRmNKZzRReHdpY2lrNmhQdENWNkV2bkVlR0k2c1pCWVJxd203aUVlSVo0bFhpY09FMStUU0NRT3laTGtUZ29oSlpBeVNRdEphMGpiU0Mya1U2USswaEJwbkV3bTY1QnR5ZDdrQ0xLQXJDQ1hrYmVRRDVCUGt2dkp3K1MzRkRyRmlPSk1DYUlrVXFTVUVrbzFaVC9sQktXZk1rS1pvS3BSemFtZTFBaXFpRHFmV2tsdG9IWlFMMU9IcVJNMGRab2x6WnNXUTh1a0xhUFYwSnBwWjJuM2FDL3BkTG9KM1lNZVJaZlFsOUpyNkFmcDUrbUQ5SGNNRFlZTmc4ZElZaWdaYXhsN0dhY1l0eGt2bVV5bUJkT1htY2hVTU5jeUc1bG5tQStZYjFWWUt2WXFmQldSeWhLVk9wVldsWDZWNTZwVVZYTlZQOVY1cWd0VXExVVBxMTVXZmFaR1ZiTlE0NmtKMUJhcjFha2RWYnVwTnE3T1VuZFNqMURQVVYranZsLzlndnBqRGJLR2hVYWdoa2lqVkdPM3hobU5JUmJHTW1YeFdFTFdjbFlENnl4cm1FMWlXN0w1N0V4MkJmc2JkaTk3VEZORGM2cG1yR2FSWnAzbWNjMEJEc2F4NFBBNTJaeEt6aUhPRGM1N0xRTXRQeTJ4MW1xdFpxMStyVGZhZXRxKzJtTHRjdTBXN2V2YTczVnduVUNkTEozMU9tMDY5M1VKdWphNlVicUZ1dHQxeitvKzAyUHJlZWtKOWNyMUR1bmQwVWYxYmZTajlSZnE3OWJ2MFI4M01EUUlOcEFaYkRFNFkvRE1rR1BvYTVocHVOSHdoT0dvRWN0b3VwSEVhS1BSU2FNbnVDYnVoMmZqTlhnWFBtYXNieHhpckRUZVpkeHJQR0ZpYVRMYnBNU2t4ZVMrS2MyVWE1cG11dEcwMDNUTXpNZ3MzS3pZck1uc2pqblZuR3VlWWI3WnZOdjhqWVdsUlp6RlNvczJpOGVXMnBaOHl3V1dUWmIzckpoV1BsWjVWdlZXMTZ4SjFsenJMT3R0MWxkc1VCdFhtd3liT3B2THRxaXRtNjNFZHB0dDN4VGlGSThwMGluMVUyN2FNZXo4N0Fyc211d0c3VG4yWWZZbDltMzJ6eDNNSEJJZDFqdDBPM3h5ZEhYTWRteHd2T3VrNFRURHFjU3B3K2xYWnh0bm9YT2Q4elVYcGt1UXl4S1hkcGNYVTIybmlxZHVuM3JMbGVVYTdyclN0ZFAxbzV1N205eXQyVzNVM2N3OXhYMnIrMDB1bXh2SlhjTTk3MEgwOFBkWTRuSE00NTJubTZmQzg1RG5MMTUyWGxsZSs3MGVUN09jSnA3V01HM0kyOFJiNEwzTGUyQTZQajFsK3M3cEF6N0dQZ0tmZXArSHZxYStJdDg5dmlOKzFuNlpmZ2Y4bnZzNytzdjlqL2kvNFhueUZ2Rk9CV0FCd1FIbEFiMkJHb0d6QTJzREh3U1pCS1VITlFXTkJic0dMd3crRlVJTUNRMVpIM0tUYjhBWDhodjVZelBjWnl5YTBSWEtDSjBWV2h2Nk1Nd21UQjdXRVk2R3p3amZFSDV2cHZsTTZjeTJDSWpnUjJ5SXVCOXBHWmtYK1gwVUtTb3lxaTdxVWJSVGRIRjA5eXpXck9SWisyZTlqdkdQcVl5NU85dHF0bkoyWjZ4cWJGSnNZK3lidUlDNHFyaUJlSWY0UmZHWEVuUVRKQW50aWVURTJNUTlpZU56QXVkc21qT2M1SnBVbG5SanJ1WGNvcmtYNXVuT3k1NTNQRmsxV1pCOE9JV1lFcGV5UCtXRElFSlFMeGhQNWFkdVRSMFQ4b1NiaFU5RnZxS05vbEd4dDdoS1BKTG1uVmFWOWpqZE8zMUQrbWlHVDBaMXhqTUpUMUlyZVpFWmtya2o4MDFXUk5iZXJNL1pjZGt0T1pTY2xKeWpVZzFwbHJRcjF6QzNLTGRQWmlzcmt3M2tlZVp0eWh1VGg4cjM1Q1A1Yy9QYkZXeUZUTkdqdEZLdVVBNFdUQytvSzNoYkdGdDR1RWk5U0ZyVU05OW0vdXI1SXd1Q0ZueTlrTEJRdUxDejJMaDRXZkhnSXI5RnV4WWppMU1YZHk0eFhWSzZaSGhwOE5KOXkyakxzcGI5VU9KWVVsWHlhbm5jOG81U2c5S2xwVU1yZ2xjMGxhbVV5Y3R1cnZSYXVXTVZZWlZrVmU5cWw5VmJWbjhxRjVWZnJIQ3NxSzc0c0VhNDV1SlhUbC9WZlBWNWJkcmEza3EzeXUzclNPdWs2MjZzOTFtL3IwcTlha0hWMElid0RhMGI4WTNsRzE5dFN0NTBvWHBxOVk3TnRNM0t6UU0xWVRYdFc4eTJyTnZ5b1RhajlucWRmMTNMVnYydHE3ZSsyU2JhMXIvZGQzdnpEb01kRlR2ZTc1VHN2TFVyZUZkcnZVVjk5VzdTN29MZGp4cGlHN3EvNW43ZHVFZDNUOFdlajN1bGV3ZjJSZS9yYW5SdmJOeXZ2Nyt5Q1cxU05vMGVTRHB3NVp1QWI5cWI3WnAzdFhCYUtnN0NRZVhCSjkrbWZIdmpVT2loenNQY3c4M2ZtWCszOVFqclNIa3IwanEvZGF3dG8yMmdQYUc5NytpTW81MGRYaDFIdnJmL2Z1OHg0Mk4xeHpXUFY1NmduU2c5OGZua2dwUGpwMlNubnAxT1B6M1VtZHg1OTB6OG1XdGRVVjI5WjBQUG5qOFhkTzVNdDEvM3lmUGU1NDlkOEx4dzlDTDNZdHNsdDB1dFBhNDlSMzV3L2VGSXIxdHY2MlgzeSsxWFBLNTA5RTNyTzlIdjAzLzZhc0RWYzlmNDF5NWRuM205Nzhic0c3ZHVKdDBjdUNXNjlmaDI5dTBYZHdydVROeGRlbzk0ci95KzJ2M3FCL29QNm4rMC9yRmx3RzNnK0dEQVlNL0RXUS92RGdtSG52NlUvOU9INGRKSHpFZlZJMFlqalkrZEh4OGJEUnE5OG1UT2srR25zcWNUejhwK1Z2OTU2M09yNTkvOTR2dEx6MWo4MlBBTCtZdlB2NjU1cWZOeTc2dXByenJISThjZnZNNTVQZkdtL0szTzIzM3Z1Tys2MzhlOUg1a28vRUQrVVBQUittUEhwOUJQOXo3bmZQNzhML2VFOC9zbDBwOHpBQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUZkU1VSQlZIamF4Sk0vVGtKQkVJZS8yZDA4T2sxb0NBVVUrQ2RVajBJU0plRVkybEZweHdGSUtDbTVnQjRBVGtHQ2RBUTVBQzNCRjdTaG9ST1VOeFlLOHVScFRDajhOYnM3bVozOXpiZTdvcXJzSThPZWN1dEp2OS9YOFhpTXRaYTFLMVZGUkFBSXczQXpGZ29GZk4rWFNJRldxMFduMHlHZFRyTmFyU0tuV0d0eHp2SDYra1lRUEZLdFZ2RjlQK3JBOHp4S3BSTHRkbHQrczF3dWw5WHp2RjBHMWxxTWlVZFNyOWYxNXVaNlEzc2J2TnRPWFBmNVhkMXVsK0Z3S0I4NUswQjJIWHp2ZTYxR282SEY0bGtrSmhKempjWVlFb2tFQUZkWGx4dVA5NzBldDdkM0VTNC90ckJZTEFESTVZNm9WQ3FhVENZNVBUN1pjU1ZiRmx4Y3NObHN5c1hGdVU2blR3UkJJSDk2U0FET2ZTMEhnNGZZamRhNitBSWl3bWcwb2xhcjZYTDV3c0hCSVNLRytYd09oSWdZVklYWmJCWmZJSlBKa00xbW1Vd21xQ3JUNlROaEdHS3QvUVFIMWhyeStUeXBWT3FMeDcvL3h2Y0JBTTA3ZmpsamZ6aDJBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ2ltZy9jb250cm9scy9jbG9zZS5naWYnOidSMGxHT0RsaEVBQVFBTlVBQU1jek5mUnhkUFJ6ZFBOeWRQTnpkZGdxTCtBc05OOHNNOGNwTU9ZMlB1VTJQc1VnSytVd09mSlZZUFJqYS9OamF2TmphL05rYThVWUo4WVpLTVVaSjhZZ0xQSlVZTVVUSmZFL1V2QS9VZkpJV1BGSVdOUmxkTitjcU1wZFNjNXVYc3BYUnNwWVJzbFlSdFdJZk1sUVE5eW1vTWxIUHNsSFA4aEhQOGM5T2VCaFcvV0JmY2M5T3VOU1QvV0FmdlNBZnVQRXhQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURFQUxBQUFBQUFRQUJBQUFBWjh3Smh3U0N3YWowZVlaMVFjZVdCRVdLZ1ZZZ3BIb2hZSUtpeVJYQ3ZTcC9RaHZjSWw0Z2hGRUtoTXFrSGdaQ1Z5V0JISXcvRkljWkFBQ2cwTkZna0FTREVJREJzYUdnd0lTQndWR0pTVUMzOUZIQk9VQlJJRkdCa1VtRUlkRjZBWEhCMGNwaGtYSFVNd0Z3YW9RNnNIRjF4Q3NhTkNxN21Jd01FeFFRQTcnLFxyXG4naW1nL2NvbnRyb2xzL2Nsb3NlMi5naWYnOidSMGxHT0RsaEVBQVFBUGNBQVAvLy8vLy8vLy8vLy8vLy8rREF2NzF4Y0t0R1JhdEZSYXRIUnNCNWVlYkx5Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9McjY3ZG1aYnBaV2Q5OWYvU1FsUE9Qa3ZPUmxOeDRlN1ZUVTd4eGNmbjM5Ly8vLy8vLy8vLy8vLy8vLy9MczdLNVJVTTVvYWZhS2p1dDJldVpvYStSa1orWnBiTzE1ZlBlTWtNZGlZN1JpWXZqNCtQLy8vLy8vLy9yNityUnBhY3RoWXUxemRkdE5UZEkxTmM0cks4MHBKODRyS3RJMk45MVNVdkI1ZThGY1hMeCtmdjcrL3YvLy85bkp5YXRFUk85dGJkSThPOGNnSEdvTUNuZ01Dc0lVRUhnTUNtb01Dc2doSU5aQ1FQSnpjNlU0TiszdDdmLy8vNjV4Y2N0V1ZkVkFQY01kR01BVkVmLy8vOVhFdzNZTkN0WEV3Ly8vLzhBV0VjUWdITnRKUjd0UVVMdVZsUC8vLzZKVlZkdE9UTVVtSWIwWUViMFhFT1BHeGYvLy85WEV3Ly8vLytQR3hMMFhFYjBaRWNndEo4OU5TNk5yYXY3Ky9wNU9UZHBCUEx3ZEZMb1pFTG9ZRUhNUEN0VEV3Ly8vLzlYRXczTVBDcm9aRWJvWkViMGdHTlJFUUoxZlh2MzkvWlJVVk00N05ya2NFYllhRUxjYUVOVEV3Ly8vLytMR3hmLy8vOVRFdzdjYUVMWWFFTDhkRThZL1BKVm5aL3o4L0k1eWNyUStPc0lkRUxNY0ViTWRFZi8vLytIR3hMTWNFT0hIeFAvLy83TWNFYk1jRU1rZkVhZzdPWnFOamY3Ky9xbXBxYUUvUGRZbkc3VWVFTEFlRUxBZUVMQWVFTEFlRUxBZUVMQWVFTEFlRUxjZUVNb3dLWkpEUXJxNnV2Ly8vOWJXMW1waFlhWTVPTkVtRjdZZkVLNGZFSzBnRWEwZ0VLMGdFYTRmRUxnZkVOVW5HYWM4TzNoeWNlVGs1UC8vLy9iMjlxNnVybDlXVnFsQlFNbzBMTWdtRkw0akVib2lFTDRqRU1nbEZzYzRNS2hGUkdOYVdzREF3UHI2K3YvLy8vLy8vKzd1N3F5c3JGOWNYSmRRVUtnK1BhczlPN28rT2FrOE82bEFQNUJRVDJOalk3ZTN0L0x5OHYvLy8vLy8vLy8vLy8vLy8vVDA5TWpJeUlXRmhWNWVYbU5ZV0hKVlZWOVhWMkJnWUkyTmpjL1B6L2YzOS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy96OC9PM3Q3ZEhSMGJpNHVLNnVycnU3dTlYVjFmSHg4ZjcrL3YvLy8vLy8vLy8vLy8vLy95SDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBaitBQUVFRURDQVFBRURCeEFrVUxDQVFRTUhEeUJFa0RDQlFnVUxGekJrMExDQlF3Y1BIMENFRURHQ1JBa1RKMUNrVUxHQ1JRc1hMMkRFa0RHRFJnMGJOM0RrMExHRFJ3OGZQNEFFRVRLRVNCRWpSNUFrVWJLRVNSTW5UNkJFa1RLRlNoVXJWN0JrMGJLRlN4Y3ZYOENFRVRPR1RCa3paOUNrVWJPR1RSczNiK0RFa1RPSFRoMDdkL0RrMGJPSFR4OC9md0FGRWpTSVVDRkRoeEFsVXJTSVVTTkhqeUJGa2pTSlVpVkxsekJsMHJTSlV5ZFBuMENGRWpXS1ZDbFRwMUNsVXJXS1ZTdFhyMkRGa2pXTFZpMWJ0M0RsMHJXTFZ5OWZ2NEFGRXphTVdERmp4NUFsVTdhTVdUTm56NkJGa3phTldqVnIxN0JsMDdhTld6ZHYzOEFsaFJNM2psdzVjK2ZRcFZPM2psMDdkKy9neFpNM2oxNDllL2Z3NWRPM2oxOC9mLzhFQkFBNycsXHJcbidpbWcvY29udHJvbHMvY29sb3IuZ2lmJzonUjBsR09EbGhFQUFRQU9aYUFQcjYrdmo0K08vdjcrSGg0YjI5dlppWW1PUGo0K1c2WXZQejgybksrdXZyNi8zOS9mejgvTUxDd3ZIeDhjREF3S1dscFdURTlkZlgxNmVucC9Wa3hPWGw1Y2ZIeDdPenMybHArdTN0N2ZwcGFicmxZdnBweW1SazlheXNyR0xXWXZYRVpNcHArc3I2YWNUMVpQckthY2pJeVB2NysvVmtaUDcrL3VWaXVtSzY1YkN3c0dKaTViZTN0K1ZpWXJwaTVicTZ1bVRsWk9ycTZtbnFhZWJtNXNSazlmYjI5dXpzN01URXhQTHk4dGpZMk5oZHNGKzI0ZDFhc2VHMlg5MWFXbC9UWDdiaFgxcGEzYlpmNFYydzJOaGRYVjFkMk5pd1hiRmEzYkJkMk4yeFdySGRXdUZmdGxxeDNiRFlYVjlmNFZyT1d0M2QzVjNMWGVGZlgrZm41L1gxOWVucDZZeU1qTXJLeXYvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRm9BTEFBQUFBQVFBQkFBQUFmV2dCSllnNFNGaEJKYUpWbUxqSTJNSlZvV0tFY0hCd3RGTGk0TE95a3BLQlphT0F3K0pDUW1VeG9hSmt3Y0hBdzRXZzBBU2lBZ0FUOG5Kd0U5RkJRQURWb1BBVlhFeGNaVkFROWFCRFpPR3hzNU9oVVZPVWt2THpZRVdqQUlRU0lpQWdNQUFBSkRJU0VJTUZvdERrc2pJemRSeERkSU5UVU9MVm9YQWxiOS92OVdCRnpRc2lLRGxBOGZhQkJSb1lLR0VSWXNNcXpRNGtFR2tCa3pEUEJJa01EQUV3d1laSGpRTXNFS2xCZ3hCalNKRUdHQWtBNGRyRXpRVWtBQmxaczRjMUpSVUVBTGhDdEFnd29OQ2tHTDBhTklreG9OQkFBNycsXHJcbidpbWcvY29udHJvbHMvZGF0ZS5naWYnOidSMGxHT0RsaEVBQVFBTlU5QU8zdDdjWEZ4Wk9UazVHUmtkbloyVTFOVGVucDZVZUV2MTlmWHpaam42dXJxNmVucDR5TWpKaVltSnljbkVLQ3g3dTd1K0xpNGpSeXJCZE9pakZvcTY2dXJsQlFVT1RrNVBMeThyS3lza0tKMllxS2lucDZlc0RBd01IQndVbEpTVmhZV0x5OHZQcjYrcmEydHNuSnlZS0NnbXhzYktLaW9yQ3dzTkxTMHRiVzFtRmhZZHZiMjlqWTJITnpjK3ZyNjZXbHBVZEhSNW1abVVoMnVQVDA5RnFXMCtmbjUrSGg0U0pTa2FDZ29QSHg4VStXMytYbDVmLy8vd0FBQUFBQUFDSDVCQUVBQUQwQUxBQUFBQUFRQUJBQUFBYWJ3SjV3U0N3S05idWtjcG5VQ0IrMWcrUlFxMGFudFllUU1rdGdFck53OXp1akNDYzQzQ0xOVnFjblFnaU5ZQ0hRN3ZNNkRTSU02ZjZBZ1g4b1FnbzhoNGlKaHlOQ0dRQUFBUVVGQVpHVGp4bENGUVlHQVNRT0RRME9uNXNWaFRhbkhpWWRBNndEcHdwQ0N4Y1hEQWdJRExVSUd5MHFPVUl3RVJFMkFnS254Q3dpQUJ4Q0p6Zk96ODhwTHlzZlFpVTUyTm5aTWk0eElFYmdSRUVBT3c9PScsXHJcbidpbWcvY29udHJvbHMvZHJvcGRvd24yLmdpZic6J1IwbEdPRGxoRUFBUUFMTVBBT2JtNXZMeTh1cnE2dVBqNC9IeDhlM3Q3UUJncHdCanV1WGw1ZWpvNk92cjY2Q2dvQUJtekptWm1mejgvUC8vL3lINUJBRUFBQThBTEFBQUFBQVFBQkFBQUFSTDhNbEpxNzEwNmIyYy85OFNqR01IZ2d1aHF1YnBMVTBjdCs1UzNIZkg3UHRoT0F1RlRHSGkrVjZDWkxMRk9MNFNzZ1R0RndKWXJiVFRBaUZEWkZHRGNQZ2I0bWhjSDR4NlhZa0FBRHM9JyxcclxuJ2ltZy9jb250cm9scy9lZGl0LmdpZic6J1IwbEdPRGxoRFFBUUFQY01BTEt5c3IyOXZiMjl2YjI5dmIyOXZiMjl2YnU3dTdpNHVMVzF0YzdPenZuNStmMzkvZi8vLzcyOXZmcjYrdnI2K3ZyNit2cjYrdnI2K3ZUMDlPcnE2di8vLzdhMnRzbkp5Zm41K2YvLy83Mjl2ZnI2K3ZyNit2cjYrdnI2K3ZyNit2THk4dWJtNXYvLy8vLy8vN2EydHM3T3p2Ly8vNzI5dmZyNit2cjYrdnI2K3ZyNit2cjYrdlQwOU9qbzZQLy8vLy8vLy8vLy83VzF0Zi8vLzcyOXZmcjYrdnI2K3ZyNit2cjYrdnI2K3ZmMzkvRHc4T2pvNk9ibTV1cnE2cmk0dVAvLy83Mjl2ZnI2K3ZyNit2cjYrdnI2K3ZyNit2bjUrZmYzOS9UMDlQTHk4dlQwOUx1N3UvLy8vNzI5dmZyNit1ZmkxK2ZpMStmaTErZmgxK2ZoMStmaTErZmkxLy8vLy8vLy8vLy8vLy8vLzZDZ29QajQrTjNWeHQzVnh0dlV4ZHJTdzlyU3c5dlV4Zi8vLytxYWRPQmZRT0JmUVAvLy82Q2dvUFgxOWZYMTlmWDE5ZkR3OE96czdPenM3UC8vLytmZ3UrQmZRT0JmUVBjb0RQLy8vNkNnb1BEdzhOM1h6TjNYek5mUnh0UE53di8vLy92d25QL21BSm1abWZjb0RQY29EUC8vLzZDZ29PdnI2OW5UeU0vS3Y4L0t2Ly8vLy92eG5QL3NBUC9wQVArWkFNSm1LZi8vLy8vLy82Q2dvT2JtNXRUUHhNbkR1UC8vLy92eW5QL3hBUC91QVArY0FQK2FBUC8vLzZDZ29QLy8vNkNnb09EZzRNL0t2Ly8vLzg2L2F2LzJBUC96QVArZUFQK2NBUC8vLytEZzRLQ2dvUC8vLzZDZ29OdmIyOEM2ci8vLy82R01FS0dNRVArZ0FQK2VBUC8vLzhDNnI5dmIyNkNnb1AvLy82Q2dvTmJXMXNuSnlmLy8vMXBJRGFHTUVObDFCdi8vLzhuSnljbkp5ZGJXMXFDZ29QLy8vN0t5c3FDZ29LQ2dvUC8vLy8vLy8vLy8vLy8vLzZDZ29LQ2dvS0Nnb0tDZ29MS3lzdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQU5BQkFBQUFqdEFBRUVFRENBUUFFREJ4QWtVTENBUVFNSER5QkVrRENCUWdVTEZ6QmswTENCUXdjUEgwQ0VFREdDUkFrVEoxQ2tVTEdDUlFzWEwyREVrREdEUmcwYk4zRGswTEdEUnc4ZlA0QUVFVEtFU0JFalI1QWtVYktFU1JNblQ2QkVrVEtGU2hVclY3QmswYktGU3hjdlg4Q0VFVE9HVEJrelo5Q2tVYk9HVFJzM2IrREVrVE9IVGgwN2QvRGswYk9IVHg4L2Z3QUZFalNJVUNGRGh4QWxVclNJVVNOSGp5QkZralNKVWlWTGx6QmwwclNKVXlkUG4wQ0ZFaldLVkNsVHAxQ2xVcldLVlN0WHIyREZraldMVmkxYnQzRGwwcldMVnk5ZnY0QUZFemFNV0RGang1QWxVN2FNV1RObnp3SUNBRHM9JyxcclxuJ2ltZy9jb250cm9scy9maWxlLmdpZic6J1IwbEdPRGxoRUFBUUFQZXRBUC8vNDBTT0xmVEhqdmJETXNlVU9kV1hUa21MSjRhL1dPemNRZS9abi9iVmF2Ny80UGJXWmZYcXN2dllmRjZWVW11WFZzNktQem1JQ0llM1kyU25ObWFzT1AvYmhsQ0pJUC8zLzlxUE5QLzc4YTdKZkZXQ0xhRE1mK1dUYnZucWpYV1VIYTdZak9qTmlvN0hlcW5WbW1DU0QvLzU1UC8vNk8zQWhlbnJxZi95OE92S2JlampxZmJld3RPYlBvbkFXa3lMRnZEYmlPelVpdGZMZWZIWlgyR21TZmZxcFBqYlQvenFvc3l6VHNxc1B0L0dZdFdGSnZ6dHpQTHR6K25LVmQ2TVEvZnB4R3VzT09iWHVQL1FrTmJCUXFhNm5veTNwUEM2Wk83aWxudWRScFM5ZDBkdk1ZaXNadXpha0hxTFJmLzF2ZEtYUGVIS1lHQ2ROZnZTZHYvLzNwWENoL3J4My8vMDdzK3FaUC8vN3UzWlF1aThqL3Zkb2UvU01QLzU3UGZibkZxZlQ4aVBPUHJlVjR5OFdmL3o0WStzV0hlbFR2RFdLOUovTS9QamhPek5OK1BzcmE3SnFQemduK1hibG5HcFV0YklpZis0ZW8reWNteWZVdmJub25xblpQZjQ4bUdjU3ZIZmZmLysrK0drUjVPMmpQTGZtdm5PWmNlZEo4cVlOL25wdFUrSE1QUC8wNHk5WWRtYVM5akJXZi9ta2YvLzl2L3krKzdjZVAzSUxPLzUxNEtsV3A3Umd1NlNQLy90clcrOU5aM2JpRm1JTi8vYmYvS3VjZW01UFpqSWx1SGxoL1hSTS8vODdON0xWZWZ4MXZIMXd2L3J4dFN5TEpxY1NQLzQwVktaSWQrVE0rM2RuLy96N3BHMFBPM2JiOXl1UDU3U2lQamFoUGZsZjlLRk0vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSzBBTEFBQUFBQVFBQkFBQUFqZ0FGc0pIRWl3MVlPQ0NBZEN3QU1qWWNFek5VWk1NZUJRWUNNNGtnNGNvWENobFNVVWhqYnRrRElEVkNSSGZPeE1XRUpIUWhFVld2UmcwTVJwVG9VbVJzaDBVTUlrUUk1RUtUQ1J3Z0dBMFNBUWJRaFpLU0h3RTVZa2VZZ2dFU0REeVJNU0x5NEpFb2lxekJBUmNZS1VxcUxCVEtvUUd5WUoxSUhvRG9BRko2NndlV05LaUtnd0hBUzYrTklEa28wNlhkUlFVdkJqREpROUFndVpDSFRvd3lvSE5CRGNHTERJMHlPQmdFSTFjTk5IRVlNdFh0WmtRdE5wbE1Bc1BsaUFTUkJEMVNrTEs2ajRhVkZBb0J3dUJIaXd5Z0FrZ3BnL1VkSjRxRlN4WWtBQU93PT0nLFxyXG4naW1nL2NvbnRyb2xzL2ZpbGVsaW5rLmdpZic6J1IwbEdPRGxoRUFBUUFPWnZBSTZPam5GeGNVUkVSRkJRVUdWbFpmajQrS2VucDkzZDNkemMzR3RyYTNCd2NFTkRRNit2ci96OC9KT1RrMFpHUnREUTBHQmdZTnJhMm9lSGg0R0JnZFRVMUdDZE5jUER3NWpJbHI2K3ZuTnpjNGUzWTVTOWQ0YS9XTnZtMTlQVDA0eThXWHA2ZXJHeHNYNmxqTHU3dTJkblovdjcvSWlJaUtmUm1aU2NWcGlZbU4vcno1bVptWjdSZ3FDZ29LRE1mNTZlbm1Tbk5ucW5aTS9Qejk3cTFKM2JpS2ZLbkdXb1RYV2plRzV1Ym54OGZIdXNaLzM5L2E2dXJwS1NrcFdWbGJmUHNaWENoNTdTaUdob2FON2Z4WnVibTJ5ZlVyS3lzcisvdjJDUUUydC9aM0dwVXZIeDhXKzlOYWE2bm51ZFJvbkFXbG1CUWNYVnM0N0hldG5aMmR2YjI1TzJqTTNkeFgyWWNZeU1qTUxDd295OVlmcjYrbldnVWZyNys1K2ZuMUNETjZIQms2N1lqTUhCd1phV2xsRlJUZC9mMy9mMzkxeWROS3JEa2VqbzZLN0pmSXkzcEhsNWVVdExTLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUc4QUxBQUFBQUFRQUJBQUFBZXBnRytDZzRRZU96U0VpWU5YTjFNV1lZcUVVa3MxSFd3eFhaRnZSRTB0VmpJYkhFWm9taXRwVGlBdlQxZzJtb0pBVzBGSmcyY2tBRjlaWmt3QUxpaFFHR0E4YjF3d0Rtb0hXajVGVlFkQ1ltdFJYbTlJT2xRbmJnUU9JUVJsS1RnalNpWnZBQk1WQlE4Wk14YzlEd1VWRXdDQ0JnRVFGQXNDQXdNQ0N4UVFBUWFDRUpUNElZSUJpd0J0VkRBNFFtWUlBa0VOSkVSSW9DREhtQThhRkNTSUlLR0JxNDhnUTJvS0JBQTcnLFxyXG4naW1nL2NvbnRyb2xzL2dyb3VwLmdpZic6J1IwbEdPRGxoRUFBUUFOVW1BSE9qNDF4Y1hDVWxKVkpTVXJqUjhqQXdNRHc4UEhkM2QwZEhSMjV1YnB1KzY0eXo1NS9BN1dabVpwYTc2aHNiRzNSMGRKRzI2b1d2NXhFUkVVRkJRWmU2NnFYRTczZWw0NmZGN1lDcjVaNi82Ni9MNzN1cDViUE44S0xDN1pxOTY0U3U1cmJQOFJRVUZLdkg3d2tKQ2FMRDd2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ1lBTEFBQUFBQVFBQkFBQUFaTlFKTndTQ3dhajhna3NjUlFPQ0lMU1laekFWZ0J3aEpoRytwc1JoaVA1bFBCbWl5bHRMcjVqSUtVOExnUWttZ0VCZ2hEUWZDWWtPUkhCNEowZG5oNkFvQkdkM2w3RHlJVWlaR1NSVUVBT3c9PScsXHJcbidpbWcvY29udHJvbHMvaGlkZGVuLmdpZic6J1IwbEdPRGxoRUFBUUFNUVJBT3ZyNi9MeThzVEV4THU3dTdTMHRPam82T0xpNHV6czdLQ2dvSXFLaXNqSXlON2Uzdno4L09ucDZlUGo0L0R3OFBmMzkvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJFQUxBQUFBQUFRQUJBQUFBVkNZQ1NPWkdtZWFLcW1RZ0lrTHZ6R3JvQXNlSzdyU09IOHdHQ3dRR2dZajBna1lmQm9PcC9Qd1FGQ3JWcXRCd0ZqeSsxMkJZYUFRaUVtajh0aXcyck5icmREQURzPScsXHJcbidpbWcvY29udHJvbHMvaHRtbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSFVTVVJCVkRqTHhaTTdhMVJoRUlhZmMzSjJ6NnFKa0l1Q0tDaEl0Qk5TQlEwaUlsWmlLNGdXSXRqNkh3UmJDN0ZSZjRDVm5TQ0lrSDlnSlZqWWlDRHhpbUN5WjcvemZYT3oyQTBJMnFWd21tRmczcm04NzB3VkVlekZhdlpvZXk3UTNIdisvWjg3cURzaVRsWkZCSklHS1N0WmxGU0NUcHlVbEFaZ2ZYWGZIOUJBUFRDYmVyVkFOQkIzUkFKUlI4d3A2anpkL0RvdEFMQTlVY3laZ1p4aXMyUU5panBaalNKQlZxZUlzelRma01ZNjVjQWp1SHhtZ1N6R2xiVUZycDFkNU9iR0VyY3VMTE54ZXA1aFUzSDkzQXFqWWNYdGk0Y1paMk9TRFU5Q25WVVJkZHFtSW92VERtb2V2LzVHVmNHREY1ODV0anpnMUpHV28wdEREZ3hyVGh4cTZYb2ppZU9kMG5SWjZkVnBCeFUzemkvVDFCVmRWaUtDY1RiY1lYMTFuZ0I2Y2NhOU1TbEdscHJvakhxY2dseWNWSnlITDc5UTFKbjBUZ0JkYjFnRWJ6OU9lTDgxSVlzUkFha1l2UVNlQy9XdlZPaUxFOEdzTTR4bnZzdUdlL0RvMVJZL2RwUmVuSVA3NTNoeVp4VVJKM0pRWGJyL0xxNnVMZkxwWjZhSWs5WEpzc3Y4Vks1ZE5jUWNtY2w3ZktWbDg5a0htdTBkSlJWallUUkhHVlNNcEVMYVFMVkN0RVk4RUF2TUhIVXduMDY3KzBMVnlidHZvazlLU09EWmlhS0VPSkVOaWhQbTAxZ0QzUCs2Mk9xL2YrTnYyZDl5MkQ4akxVRUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9jb250cm9scy9odG1sZWRpdG9yLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLYlNVUkJWQmdaQmNGTmlGVmxHQURnNS92T3VmZk9kY2I1Y2JLY2pVbjVWN3BvRkpFaUtNS3liRFlGZ2RTbUtBaWlva1cxYU5IU1hXUVF1R3dSMktKRnEyaFRrRnFVRWJaUk16UUlKUzFuYlB4am5IdnZPZC9iODZTSThPU0h4MS91VC9aZXlzbHVqQ0dCaEVoRTBaVHk1L1ZyOFYyNnVmemVpU01MUTRBVUVRNGMrdkhFNTIvdGZpRG5OQjFVQW9BSUNJdTNSNDcrZXQwL0Z3Y3JaMCtmVy9mRGtZVUIxSkNydEsxYlY5Tm5ycXB5U2lTaTBFYlJOT0hPcVBYNGxyWDJicTJkTEl0cm9teGZmdXpOcjJlT2ZmcnNJRU5LYVNJaXFtNlZkVEoxb3NwVWlaVElFb3E1eWE2RlBYTTJiZTcxNjhueHo2RGUrYzd2aHgrYTM5aC80OHRGOHpOOW5ZcWZydHl4OTU2KzRhajQ5c3dWTXhQVHRzeXVjKzlFcGRlcGJYcDQxckdmLzNvQkwrWm1FS2Z1bnFpTkJmdjNURGwrYWNYcU1EeXhhOHJseGFFVXZINWd2UXZYa3BNWEc5K2ZYOUhyVkZLZEc4aUtYMjZzRk0vdkdGZW43UGJTc3EyOVdwV1QwMWVXN05zMlowMnYwdXRXeHJxVnNXNUh5S1FNNm1odDdsWDhkdUdPajcrNVpQdjk2eTM5MTNyL2k4c1U5ajg2WTlRR0tVdHRFamtVUkFCMWpNcTRZQ2xsdVdWNk5VbFR0ZXJTb29ON044b3BxYXNnRWtGSTJrSmJnQnhEdldpVHMrZXZPdlRLZy9xZFpEZ3FicTBVait5YUJFbVNJcWx6VXVWa3JKTzBUWUM2akdLdVNuU2EwTzltZjF3ZXVOSGU5UFRXRFVxRUVyU0ZRQWtpMGFteVp0aUFPclZwNnR6NXF3Ni9lcDhtaXFsT2RuRzU5Y3krV1NXQUtsT2hreE1vRVVhREF2S0ZyM1orTUJoZFg1MWVXNFBYRG03d3lkczdBQUFBUUpRd1dtMUFobVpRU2xOS0FBQUFBQURVZFM1Tld4cW9ZYlRhL2p2ZXJlNlNSdU1Sa1FVRk1OV3ZRUVQ5VHBhUzBxblNyYllwZjBNTktjVkhUNzE3L0xtVTBueUlOUUNDUUFnZ3dHb3A1VlNkSFlYL0FZbjRKd21FeWtydUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4naW1nL2NvbnRyb2xzL2ltZy5naWYnOidSMGxHT0RsaEVBQVFBUGV2QUZoaGN2NysvL244LzhiSnptTnNlNHFRbktYUi9mKzFXdVBFZ3BPQ3JOSG8vYlMzdjVHd2I0N0hldmo0K0pmSDl2L21nTUhnLzVQRTlxREw5bnlvYVBQejlHR21TYmJhLzZuUTlueW4ydEhiNW4yVnlHQ1FFNHk5WWJlRGNMSEY4Zk9NTi9ybmh1eUROV1dlVG9xQnRxaS83N0hZLzZhcFBHbVlRZUNSWHZkdE5lM0tmT1RBZnYrZmVJeTNwSjdTaUphY3hwMnQyVnlkTk9uczhKcW8xcVROOXR1UVY1Mk1xSmVrMG85OXBaZWV5Wk9Xd2FhR2xHUnRmSHl2UG0rOU5jZzdISzdZakxYUG41bWh6S3JVLzlIby83bGdNWWUzWTlYZjZPN3c4c0tjbFpwYk1xeVhyRzk4cnRtdVgzV2wzckN6ZGVUcDduNnZrTmVoZi8rSFZvdVJ0b2EvV0lHY3o0U2oxcVc5N25tbVpKQ0JyNVdaeFBiMjlweko5cXZCOE4vbTdGWndVb3k4V2YrV1NYcVB3bnFuWkhhSXUyeHB1Skc5ZzUzYmlMSTFFNU8yak9hWlZNWGkvNGlyM29PaTFaaW0wMjgwS1BiVWV1cFpLcXFRbTN1ZFJwZWlTTFdYazFtQlFiYzZNcUJpTEd5ZlVyT2dUUHI2K3FhNm5vaXNacFM5ZDZETWYxaEJSS1hTLzVYQ2grWEdncS9EOEhHcFV0dmk2cTdKcUYxK1RZdU91SE9DdFluQVdwN1JndG02aHN6bS81aVN3cnZkLzJTbk52ZStaV2FmYWY5M09aaklsdi9kbWE3Uzl0VkNINjdKZk0vTVpiZDlVM1NvNXNHUWZhblZtckcxdldDZE5kT2ZkR05ETGxDRE4vK1BSdjkxTjdxSWVxTjdQSCtsY0srenUxZGdjWWVwM1AvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUs4QUxBQUFBQUFRQUJBQUFBajNBRisxR2tqUURaWldxa1lJZWNWUW9LdUhEd01JMEdLaGdTZ0tEVnRCZENXUndhRTBWbHhNUXNHd1ZaK0lBcUQ4Y0xTbXpCRkFlMlFJZE5CQ3hTbFRUbno4OFNNbVVCMUZhQVIyb1dMRTBwZ0RtRTRrNmtDSVE2aVNGZkxFVVFORTA1eFVvQnBkS3JXcVpKSVVTL1NJQUVHSno0c2dtL0IwZmZWbXhwUk9wR3l3a2NQSlRpVXBZZFplaWFJRWxTQVBvd3F0K0pUaEE2dTFHOEF3eVhHR0I0SVFFTzQ4TVhTWUlSbEVrVWhzU1VEbkVZc2JucjVVZm1VR2lZSk1HR3BNOFBKQWdvRVNveGxwS0FLcFRRUkpGMHdRR1pRRndOb21NV2pBd1RGRUJ3d3VPNm9zNnJHQTRZQUNCQUN3bWs0ZEFJRUNBMTRGQkFBNycsXHJcbidpbWcvY29udHJvbHMvaW5wdXQuZ2lmJzonUjBsR09EbGhFQUFRQU1RU0FMNit2cHljbkhOemM0S0Nnc1BEdzkzZDNVeE1USmlZbUxHeHNjSEJ3YmEydHM3T3pzWEZ4Y25KeWFtcHFkdmIyK3pzN0FBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQklBTEFBQUFBQVFBQkFBQUFVL29DU09aR21lYUtxcXpPRzhjSXc4SWdNWWdnRHRQUFRRRXBzaVF1anhmalVBSkdJOEFtMkRTS0RwZXhJR2dXa1RLVmtrR3VDd21GRlltYy9vdERvRUFEcz0nLFxyXG4naW1nL2NvbnRyb2xzL2pzZHJhdy5naWYnOidSMGxHT0RsaEVBQVFBUGViQUFBcit1L3kvdFRjL2laTis0eWgvUUFoK3ZmNS8rcnUvK2pyLzRTYi9PN3kvZ0FvK2o1aSs2T3ovUUFmK2lkTCszNlcvUUFzK2dBcCtvdWcvZDNqL29lYy9BdzMrcE9tL2I3Sy92UDIvemxjK3lOSytvU2IvUVF5K2c4Nit0cmgvb2llL2FHeS9hQ3kvTXJVL3Bpci9aaXEvWmlxL0t1Ni9aeXQvU3RSKzE1Ni9GZHorMTE2L0lHWS9lcnUvcXE1L1lhYi9jblUvbnlUL1IxQytpNVYraUZKK3dBZytqQlcrd2syK2hRKytuaVEvRTl1L0lhYy9OVGIvcWEzL2I3Sy9ZYWIvTDNKL2JYRC9acXMvY1RQL3F5Ny9TNVIrNkN3L1NCSStnY3YrZ2d4KzRLWS9RRXQrbFp6L0E4NytpZE8rOXZoL282aS9RbzEraTVQKzFsMys1U24vVHBkK3dBbCtxR3ovWVdhL0wvSy9wMnYvU05MKy9UMi81ZXAvVEJVKzh2Vi84dlYvdVhwL3FtNC9RUXcralJaK3hkQitnSXcrdWp0L3QvbC80eWgvQ1JMK2kxUyswdHErMVJ6KzdMQS9aeXUvSW1mL1FVeStyM0svZmo1L3hsQis4elYvcmpGL1FvMCtoMUUreGxFK2loUCt5TkkrNENZL0RaYSs1YXAvUzVUK3l4Uit5RkgrK1hxLzZlNC9XdUYvREpXK3dFbytvT2EvRlYxKzJOKy9EbGQrMTk2L0RGVis0ZWMvYUt6L1FJditzL1kvbFIwL1BiNC93QXUrZ0l4K2k1Uys2VzEvUXcyK3R6ai9nQXErdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUpzQUxBQUFBQUFRQUJBQUFBanZBRGNKSEtobEJSVkNrd1lxRkdpSGtSdzlSZDVraWJSd0V3VWRPU29CdUlKSlJoZ1JKdWdNOUNMb0RLVUZBeVR0bU1FSEJaZ0xHQVF5c0FLQVRLRUdFeVk4VW5Tb1Rad2JBbmtRS0pBb0F3RUhEZ2gwY1ZNZ3doT0JpR0FvaVpIcEFBUUlCeWlNOEFCZ2dNQUVTOWpNRVlCR2dRSVhBbjc0a2VCMUU1QVdnVXA4NldIQWdJQkdROHBvV2lPd2dxTWtJWXc4Q0JEZ2dTVXNGZ0JzNk12QkJvTVhMQWlyR0tPaGdCTWtBZ0hsWVFKZ2tROEVDQnFra05KbkN3MkJSNlpBaWlBQlI0MDZlSm9FRWZKSHdFQXhWZlowQUxEQTBBa2lDZTVVM0pRbUNoY3pjRWhjR2pSOElCUVFhajVVREFnQU93PT0nLFxyXG4naW1nL2NvbnRyb2xzL21vdmVib3R0b20zLmdpZic6J1IwbEdPRGxoRUFBUUFQY0RBQUFBQVAvLy94OEV0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQU1BTEFBQUFBQVFBQkFBQUFnNEFBY0lIRWl3NEVBQkNCTXFGR0J3b1VLREF4d21oQmpSSWNXS0N5OWlSS2h4SThPT0V6dGlGQ253STBtUUVrTWVUTW54cE11Q0FRRUFPdz09JyxcclxuJ2ltZy9jb250cm9scy9tb3ZlZG93bjMuZ2lmJzonUjBsR09EbGhFQUFRQUpFQUFBQUFBUC8vL3hVRnAvLy8veUg1QkFFQUFBTUFMQUFBQUFBUUFCQUFBQUljbkkrcHk1MENveFJxeW1Vank0MzM2MHlPb1kxRGFWTG15clpEQVFBNycsXHJcbidpbWcvY29udHJvbHMvbW92ZXRvcDMuZ2lmJzonUjBsR09EbGhFQUFRQVBjREFBQUFBUC8vL3g4RXRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBTUFMQUFBQUFBUUFCQUFBQWc0QUFjSUhFaXc0RUFCQ0JNcUZGQndvVU9ERUNOS25DaVFJY1dLQ0M4T1NIaHhJVVdQRWgxYWhDZ3lvc2lNQmsrT1BLaHlwVWFCQVFFQU93PT0nLFxyXG4naW1nL2NvbnRyb2xzL21vdmV1cDMuZ2lmJzonUjBsR09EbGhFQUFRQUpFQUFBQUFBUC8vL3lZSXNmLy8veUg1QkFFQUFBTUFMQUFBQUFBUUFCQUFBQUlkbkkrcHkrMGozaEZVd3Zxb3pqcTJ2akVncG94aFlwSlRxbHJ1aXhRQU93PT0nLFxyXG4naW1nL2NvbnRyb2xzL211bHRpbGluZS5naWYnOidSMGxHT0RsaEVBQVFBTE1QQUhkM2QxSlNVbHhjWEVkSFJ6QXdNQ1VsSlR3OFBHWm1ablIwZEJzYkcyNXViaFFVRkJFUkVRa0pDVUZCUWYvLy95SDVCQUVBQUE4QUxBQUFBQUFRQUJBQUFBUWs4TWxKcTcwNDY4MHArSWh5Q01GZ0VFVjNoV041RmduVHFCWnBvc25pMEh6di83d0lBRHM9JyxcclxuJ2ltZy9jb250cm9scy9ub3RlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHR1NVUkJWRGpMeFpPL2FsUkJGTVovYzZNbW9tS2hCTHY0QUlKaVlla2pDRm9wS1N6eUNua0dXOTlCYk1UT1Foc3JCY0ZLc0xDSmhSWUJOWVlzV1hObjVzNlo4MW5NR3UrNjI2WHdGRE9IZ2UvUG1ma21TT0lrMVhIQ092V24wWmRYc3VsUHBBRlpRYlVnRzVCbFZET1VSTFdFTEVKSlhMejNKTXdUVk9QMHRmc0xDaElFbUMyQTRPRDVnMFVIZWJMTFdRbDViQWNCSkFjQzRpOUQ2RlpSaVV0R01NT0hiOWowUFhoR0d0cnVBM2hDbnBCSHpseStpNWQrQ1VITmdDRlBvRElEamNFSmVROHlOQ3h4WUwvMm0rVTU1WWg3bXBGRThOaEU3R2lSd0dzaTdiekY4bWVvQThpbzZaQzFqZldtN0FuVkNQTGxkMURqUG5hNHkva2JtNERqdzFlbUg1Nmgyb042VkZOeklLT09DSTZERkNUS2o0OGN2TjZtOWp0UUM2NHlBamNYcmpybm9CdS85NFZiRHltVFBTWnZIcy9BNlJnc1QwZ1pxQzFNLzQ2QUpjSkt4N21iVzhSUEw1bStlOEhLcGV1c1hibU5JMUFGREhCa21aSHpGcE85cDNma0pTTkxxRVFzZmdjNnVoQ1FKUmd5N3FsRjJ5cFhIeW5NRWZ5MzMvZ2J1YmM2WEtzVDIrTUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9jb250cm9scy9udW1iZXIuZ2lmJzonUjBsR09EbGhFQUFRQU5VZ0FPRGc0TGk0dVBYMTlYdDdlOTdlM29PRGc1T1RrNHVMaS9mMzkrL3Y3K3pzN01MQ3duOS9mK0hoNFphV2xvZUhoNjZ1cnVqbzZQSHg4WStQai9EdzhQejgvT25wNmRmWDEvTHk4dHpjM1B2NysrWGw1ZFBUMDNkM2Q4ek16Sm1abWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDQUFMQUFBQUFBUUFCQUFBQVp4UUpCd1NDd2FqOGprY1BGcE9wL1BoVU9ERUNBMDJHeTI0akFJSkJRSlprd21Dd3lUaE1YVDhWamU2N1lsTVRrb05oMzhacS9QS3c0UEVRQWRnNE9FYklRUkR3VWJHUjJPR1pHU2p4c0ZEQTBYQVIwQkY1MlpteGNOREFNRUhLYW5xS1lFQXhBZHJxK3dzQkJLdExXMlFrRUFPdz09JyxcclxuJ2ltZy9jb250cm9scy9wbGFpbnRleHQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVFBQUFDMStqZnFBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUJqU1VSQlZDalBZL3pQZ0I4d01WQ3FnQVZFbFAvL3gvQUhESCtENFM4dy9zV3dsNUdCZ2ZFL01TWVUvSWZwaGVqOHhiQ0xFYWFBT0JOUy95UGJqSUMzaUhaRDVQOWZhSHF2aytnR2J6UVRZRDc2VExRYmJQLy9oT3FFNmY1QXZCc0lSaFlBeXNSTUh5NVZmNmtBQUFBQVNVVk9SSzVDWUlJPScsXHJcbidpbWcvY29udHJvbHMvcGxhdGUuZ2lmJzonUjBsR09EbGhFQUFRQU9aMkFLR2FtdERRMEtlaG9jL096dFBUMDh6THk2K3JxNXFTa3MvUHo4ckt5cmUwdEp5VWxLbWtwS3lucDRkOGZNVEN3cFdNak1YRHc2eW9xSzJvcUo2V2xwK1ltSjJWbGNqSXlMU3dzSU40ZUx5NnVvTjJkcld5c3FTZW5zYkZ4YVNkblloOWZaMldscXVtcG9GMWRaYU9qc3JKeWMzTXpiT3dzSWwrZnJPdXJvVjZlbytFaEtLYm00dUFnTkRSMGI2N3U4dkx5NXVVbEw2OHZKQ0hoOC9QMExLdXJzVEJ3Ym0ydHEycHFjWEV4S2lqbzhHL3Y3cTJ0cnEzdDR5Q2dxaWlvdERRejM5emM3Mjd1OUhSMHIrOXZjZkd4c25KeWF5bXBwS0lpSDV5Y3JXeHNaZU9qb0YwZEtxa3BJdUJnWVY1ZWNiRXhNM016SVo2ZXFHYm02T2RuY3pNeTgzTnpjUEN3cHFUazYrc3JLV2ZuN20zdDV1VGs4N056Y2pIeDUrWGw2K3FxcFNLaXA2WGw1T0tpcUdabVlSNGVOTFIwZEhRMGM3T3pyMjZ1bzJEZ3BtU2tzUEJ3Y0hBd0xLdHJhcWxwYUtjbkxDcnE1aVFrTXpNekt1bHBjTEJ3Zi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSFlBTEFBQUFBQVFBQkFBQUFmR2dIYUNnNFNGaG9lRkNTWTBNQUZSWFFnRkFRVURBMVVFQXlzUWRCa0dQakVkVWdZZ0FCVU9IZ0VXVXhoakNsZ0NZQkFLU3cwTUpGNHVieE15QUcwQ0tWdHdkUjhLSEIxelppZ3pXa2xORGlRVlRBd1pDMnNqVndFbkhEa01GMWs5T3lKR0VrUWFPQWhBYW1FNkd3MU9CeXhQRFE1ZkZpb1JDQjgvUEFkQ0FCTktGcndRVXlNT2hRUkRxQWk0Y1VBREFBa1lGcVNoNE1aQWlCSm5XaUFSRU9RSUNEbGtSb2dvRTRMTGhnZ0VQQlN4d21ZQWxBc0ZiS0I1a0tERUF3S0ljdXJjcVRNUUFEcz0nLFxyXG4naW1nL2NvbnRyb2xzL3BsYXRlcy5naWYnOidSMGxHT0RsaEVBQVFBTlUwQUp5VWxJRjFkWWQ4ZklOMmRuOXpjNStZbUlGMGRINXljcGFPam9ONGVLcWtwSm1Ta3A2V2xxeW9xTHk2dXFHYW1wMldscXlucDZ1bXBycTN0NGg5ZmI2N3U1dVRrN0t0clo2WGw4Ry92NWlRa0wyNnVzbkp5Y2pJeUl1QmdiKzl2YUdabWJTd3NLeW1wckNycTRWNWVhK3NySzJvcUsrcnE2S2JtNTJWbGJXeHNhMnBxWVY2ZXJLdXJwK1hsNFI0ZUwyN3U2bWtwSnFTa3YvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQURRQUxBQUFBQUFRQUJBQUFBWnhRSnB3U0N3YWo4aWtVbmxRQ0JBRlF5d0JXQVNLc1psMnl5ME9aczFuZEZxOUNtV3pMSGM5UkgvRFVDblZTaVBNMExGT2FaS1JjQm9mRGl0dE13TVJIaklvSkJFQ0xpa3NRM1l5TUE4bUtnQVZHQzBqREVVeURnOE5JUUFiREJjbkVFVUVJaFFhSUFFU0x4QVdBMHUyU1VFQU93PT0nLFxyXG4naW1nL2NvbnRyb2xzL3JhZGlvLmdpZic6J1IwbEdPRGxoRUFBUUFOVWpBTmZYMS9MeThuSnljdVRrNU1uSnllbnA2ZURnNE9MaTRyKy92OWJXMXMvUHovYjI5cUtpb3JLeXNvYUdodXZyNjd1N3UrN3U3dmo0K09qbzZMbTV1Ynk4dkp5Y25NVEV4S09qbzVTVWxJS0NndTN0N1krUGo4dkx5OVRVMU5yYTJ2djcrK1BqNDh6TXpQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ01BTEFBQUFBQVFBQkFBQUFabXdKRndTQ3dhajhnazhwRVFpUktQcEVGVUFJRUtJc094UUZoWXJRdEN3YWdJU1FBWURFQVNVaGdSZ1VERzRjakVFVVpJWktNUkNEUWJFUkJHRndBVEZYNFZFd0FYUmdjTkF3TWhJWkVOQjBjRURCMlRIUXdFU0I4VUZod2NGaFFlU3FtcXEwWkJBRHM9JyxcclxuJ2ltZy9jb250cm9scy9yYWRpb2J1dHRvbi5naWYnOidSMGxHT0RsaEVBQVFBUGNBQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKzd1N3RqWTJNN096czdPenRqWTJPN3U3di8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK0xpNHMzTnplcnE2dnY3Ky92NysrcnE2czNOemVMaTR2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vK3pzN01yS3l2YjI5dnY3Ky92NysvdjcrL3Y3Ky9iMjlzckt5dXpzN1AvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzlIUjBlVGs1UGo0K05mWDE2T2pvNk9qbzlmWDEvajQrT1RrNU5IUjBmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84SEJ3Zkx5OHZMeThwU1VsSWFHaG9hR2hwU1VsUEx5OHZMeThzSEJ3Zi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vNzI5dmU3dTd1M3Q3WUtDZ25KeWNuSnljb0tDZ3UzdDdlN3U3cjI5dmYvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhiR3h0alkyT2pvNkx5OHZISnljbkp5Y3J5OHZPam82TmpZMk1iR3h2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rWGw1Yk96cytUazVPVGs1T1BqNCtQajQrVGs1T1RrNUxPenMrWGw1Zi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzh2THk2T2pvOHZMeStQajQrUGo0OHZMeTZPam84dkx5Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9yNit0M2QzYnU3dTU2ZW5wR1JrWkdSa1o2ZW5ydTd1OWZYMS9YMTlmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vejgvTzd1N3VYbDVlWGw1ZVhsNWVYbDVlWGw1ZVhsNWV2cjYvcjYrdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95SDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBaitBQUVFRURDQVFBRURCeEFrVUxDQVFRTUhEeUJFa0RDQlFnVUxGekJrMExDQlF3Y1BIMENFRURHQ1JBa1RKMUNrVUxHQ1JRc1hMMkRFa0RHRFJnMGJOM0RrMExHRFJ3OGZQNEFFRVRLRVNCRWpSNUFrVWJLRVNSTW5UNkJFa1RLRlNoVXJWN0JrMGJLRlN4Y3ZYOENFRVRPR1RCa3paOUNrVWJPR1RSczNiK0RFa1RPSFRoMDdkL0RrMGJPSFR4OC9md0FGRWpTSVVDRkRoeEFsVXJTSVVTTkhqeUJGa2pTSlVpVkxsekJsMHJTSlV5ZFBuMENGRWpXS1ZDbFRwMUNsVXJXS1ZTdFhyMkRGa2pXTFZpMWJ0M0RsMHJXTFZ5OWZ2NEFGRXphTVdERmp4NUFsVTdhTVdUTm56NkJGa3phTldqVnIxN0JsMDdhTld6ZHYzOEFsaFJNM2psdzVjK2ZRcFZPM2psMDdkKy9neFpNM2oxNDllL2Z3NWRPM2oxOC9mLzhFQkFBNycsXHJcbidpbWcvY29udHJvbHMvcmljaHRleHQuZ2lmJzonUjBsR09EbGhFQUFRQVBlTUFIZUFpY2JhNk16ZDZyWE8zNzdUNG9xU21yckcwditpS0tpMnhyekgwOGpaNTdiQ3p0em03Ly9ocG9taXVZcWp1bkdJb28yaHRlVHI4b3FndG9xUm1NdmM2ZTd6K05YaDdKKzR6THJIMDZGNVNZU2RzNlczeDJtRG5OMnRiS0sweFllYXJiYkJ6Y3FYV1pTUGgrYnE3Y1NVVmlWRVk1ZWFtMFppZ043cDg4N2Q2WTJVbk5MajdrWmZlTEdIVHMzYzZPdlNvZC9yODdYQXpMekkxTGpFMEhkMGNIaUJpKys5YzhiS3lNN2U3T252OWNMWDV1ZnU5dHlxMUxXTVZickF4TmJsNzlTc3lZaWVzdlQwOU9QaTRSTTFWSTZsdXQ3bjhLRjdUYjNKMVdtQm5QbjgvdFhpN01iUDJiVE4zNzNTNHJ2SDAvRDErZGJpN2NTT3lPVHM4NXlRZ2RIZzdOdXJhZHpwOGZINi92K2lJc25hNk5YazcycUZvdlA0L0xLMHQ5bm04T2JsNVhSK2lsUnZpNXV5d3ZYNS9JR1pzaTlPYkxqUTRZNTRWLy9qcVlaM2Y5M244TVhhNkhLS283YWRmanRYZHRubDcrWHcrZUhyOCtIZzMvK2dKb2FmdDhLcHRZMmx1dGpZMkkrbXZQL2lwNGVjc1AvaHBlenE1NXlabGZqNy92K2hKNk43VE9mdjkrenkrTnVzYXV2MCs3U3J0M2FDanVMaTRJdVNtc2ZiNmYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFJd0FMQUFBQUFBUUFCQUFBQWpYQUJrSkhFaXdJQ01TQzBJc29HSEFRQVlvU1dZa1NOQkU0SW9ZQVJacDFCaWdZNEEyQ0FRcVlvSEJ3WU1IRHV5Z0djRFN5UWVSUURZWWNUTkdUNGNkQkhJK0lTTVNqQUlGRTFEazJDS2dhSVZGUFlJd1VvVGxoUW9oY0xoWVVRSUJRcGNmaDZiY1VUVG5naFErWjFJd2lSTUJUeUVjSjlhRUtjQ0R3UkVRSmdZeFlHUEdSUU10TlFRV0lDUkJSNHNpTXFqSThiQ25UZ2tPSXN0WWlBSm9pUmREVi9vRUVwRWxKS012TmdCb0JpREdSNE1ER2hBQm9HQ1EwWkEzYWc0Z29WTjZvQjhZTndRbGFqMXdSSm9xUkdnUC9KT0hka0FBT3c9PScsXHJcbidpbWcvY29udHJvbHMvc2VsZWN0LmdpZic6J1IwbEdPRGxoRUFBUUFOVWhBSldWbGF1cnF5WWZRalVxTnViTXAvZi8vejBsSjJlR3B2UDUvUC8vODlQS3V2cjE1SjEvWi8vNzdMekU0S25NNUk2NDNNU2NkRjZHcS8vLy9GNklyWlJwVFRNeExxL1Y1clcvM0N3dk1mbi8vNTExWE1xM3JoNGtSOS9EbnFxcXF2Ly8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ0VBTEFBQUFBQVFBQkFBQUFaVndKQndTQ3dhajhXUGNzbGNBb1NncUhRcURVQ3BXTkRuQ3Bwd01GT0ZROHNGUlFTUHFHY0FJWWVtaTByblFqQlFFRzVxWTJQSlNBcFJXMjlVQ1F3SEdsS0NXVmlLaTFPTmpsRldJVTJWU2s5SW1acEZRUUE3JyxcclxuJ2ltZy9jb250cm9scy9zZXF1ZW5jZS5naWYnOidSMGxHT0RsaEVBQVFBTlVtQUx1N3U4VEV4SzZ1cnJXMXRjUER3N0t5c3FtcHFiMjl2Y2ZIeDlMUzByaTR1Tm5aMlptWm1aeWNuTS9QejhEQXdNM056WmVYbDU2ZW50M2QzYUtpb3BpWW1OVFUxS3VycTdDd3NOYlcxc3ZMeTZlbnA4Ykd4dHZiMjZTa3BOSFIwYU9qbzZxcXF0L2YzNjJ0cmJHeHNjckt5di8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUNZQUxBQUFBQUFRQUJBQUFBWlZRSk53U0N3YWo4aWtVbmtoRlJTQXd5TVFRSlN1dzVERGtiQmtGb3ZPUkRRcERRMGpRV0VRZlJDcTJLVjhHV0UwSkJTUDRhSm1INFlSQkFRY1Zob1FFQjlkQUVNVkZYWjRJQnNHQWhnRENuT1ltWnBJUVFBNycsXHJcbidpbWcvY29udHJvbHMvc2V0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFvSkpSRUZVZU5xa1UwMW9FMUVRbmswMmlURlFFN1FpaFVLUmtLVEYxaVU5K0ZkUUNvV1lnQWNQZWdrSWVpaUlXaUhnd1V2cFFYczFHZ285OU9ZbEZ3VWhXQWhZaFpKV1VtaE14SmJZWWsxTEZEY21KcmFTdjkxMXZqUWJldlBnZzlrWjV2dStlVzluM2hNMFRhUC9XU0krZ1VDQURBWURtVXdtRWdTQlVOUm9OSjVqYUtqTlN5dUtzcVJqalVhRFZGV2xXQ3kyWDBCZkRKNW5kNXI5S3haSTBXaDBCdVJnTUhpYmN6bkdyckQvd0Q2aGF3d0h4QmRjTHRlMTJkblpHWWZEY1lPRmhrSkJwbkw1RjNZMElBY01ISEIxbllBaitYdyt4SGVaOEZTV2YxQlBUdyt0cnFZMkpFbHlBa2lsVWhzZWo4ZFpLaFdwdS9zNGpZK1AzK1Awcy9uNStmMFRWQ29WcWxhckwwT2gwS1RaYkNaWmxtbGdvTitwcWdyQkVPL3UvaVpnNElBTFRlY1grQlFYNi9YNjlYdyt2OGU3YllxaVNNdkx5K3QrZjJBR2hoZzVZT0NBQzQzKzcrVDFlaCtzckNTMWhZVTMydEpTUWt1bjA5cmc0TkEwVHdMVElNVElBUU1IWEdpZ2JVMmhWcXNacTlVYU5ac0tLWXJLb3hSWktEWXdLaXpFeUFFREIxeG9PazNrem82eFA0UEV4TVQ5V3lNamwvcTJ0NytucHFZZXZrQnVjdkx4MWQ3ZUU5TGk0dHV0Y1BqSlhFc29DTyt6Mld4Y1AwR2NDM3ptRHQ4WkhqN2JWeXlXeU8zMlNMSFlPd2w0dWZ5VGRuYStFTEN1cmlOMm5sU0VDMngxbXNoZFJaR2JrY2hjU0phTGZDT3RGSSsvL3ByTGJSSU1NWExBd0FFWG1rNFQrWkxBTG8rT2pqMVBKdGMxdDdzL2JMZmJIeVVTR1EyR0dEbGc0SUFMVGVzZDZZOEpZN0phclg2YnpUWnRzVmhPd3ErdGZkTXltWngyTUFjT3VQcm1yU1lLYURIUlViWmpiSWNBOHNNNnhROXNBREZQNHhOZjU0L3QyMXRuazlrS3JHM3FCZENMdzIwVC8vR0NGYlk5dGorc1ZmOEtNQUFDT29WeHo5UFBSd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbidpbWcvY29udHJvbHMvc2tldGNoZXMuZ2lmJzonUjBsR09EbGhFQUFRQU5VckFQcDdWSXFxQVA5NFI0akc5WW10QUl1cUFQMm1pazZwOGYvYnhFMnA4Zkt6ZkhTMjZZaXRBRnVsNStqcnlLZStPcXpBUFB5bWk5UHgvOXprbzlEYmdaQ3hENWpiLysrVWMvMTdVL3g3VWs2cDhFNm84UDk3VUZ1bDQ0NnJBTEhrLzhYcC81UEM3djdOc1krcUFGMms1VjJrNGQza3QrNlVjNUt5RWZYRm1YcTI1di8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDc0FMQUFBQUFBUUFCQUFBQVpJd0pWd1NDd2FqOGlrY3Nsc0doK0JBbVFWS25VR0t3TUFFQkVHVEk3UmlnU1NiRllaRVFMZ25WQThxOGJIa2xoeFVncU1zTUlnb0ZZcUdnY0xLeWNDQWhkT2lvdU1qWXhCQURzPScsXHJcbidpbWcvY29udHJvbHMvdGFibGUuZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy80Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1AvLy8vLy8vNENBZ0lDQWdQLy8vLy8vLzRDQWdJQ0FnUC8vLy8vLy80Q0FnSUNBZ0lDQWdQLy8vLy8vLzRDQWdQLy8vLy8vLzRDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUC8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLzRDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUC8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLzRDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUC8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLy8vLy80Q0FnUC8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLy8vLy8vLy8vNENBZ1AvLy8vLy8vLy8vLzRDQWdQLy8vLy8vLzRDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUg1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQWorQUFFRUVEQ0FRQUVEQnhBa1VMQ0FRUU1IRHlCRWtEQ0JRZ1VMRnpCazBMQ0JRd2NQSDBDRUVER0NSQWtUSjFDa1VMR0NSUXNYTDJERWtER0RSZzBiTjNEazBMR0RSdzhmUDRBRUVUS0VTQkVqUjVBa1ViS0VTUk1uVDZCRWtUS0ZTaFVyVjdCazBiS0ZTeGN2WDhDRUVUT0dUQmt6WjlDa1ViT0dUUnMzYitERWtUT0hUaDA3ZC9EazBiT0hUeDgvZndBRkVqU0lVQ0ZEaHhBbFVyU0lVU05IanlCRmtqU0pVaVZMbHpCbDByU0pVeWRQbjBDRkVqV0tWQ2xUcDFDbFVyV0tWU3RYcjJERmtqV0xWaTFidDNEbDByV0xWeTlmdjRBRkV6YU1XREZqeDVBbFU3YU1XVE5uejZCRmt6YU5XalZyMTdCbDA3YU5XemR2MzhBbGhSTTNqbHc1YytmUXBWTzNqbDA3ZCsvZ3haTTNqMTQ5ZS9mdzVkTzNqMTgvZi84RUJBQTcnLFxyXG4naW1nL2NvbnRyb2xzL3RhYmxlMi5naWYnOidSMGxHT0RsaEVBQVFBTVFlQUoyZG5jTEN3cUtpb3Y3Ky9iKy92NzI5dmFlbnAvTHk3WEM2RGJTMHRQbjU5cXlzckdxekNmdjcrYmk0dUpQTVJMS3lzcTZ1cnUvdjc5L2YzL1QwOVBEdzY1cWFtc1B3YzNXL0VLaW9xSmZiS1dXc0JycTZ1dno4L1AvLy93QUFBQ0g1QkFFQUFCNEFMQUFBQUFBUUFCQUFBQVYxb0NlT1pDaytXS3F1NlNNaVZ5elBNU0l5V3E3dk9TTnV3S0JRS0FvTU9wMEFFcW5zREFLaXdyRkRXRktSZzRMSXdlbDZ2MTJIQ0tLUVNCSm1NMXFpZ0lnV0RRb2xJcGZUS1kyRnlKRHArLzk5QmlJQ0J4TVRBb2FHaUJNSEFpSUFGWkdRa1JXVGxTSWNGcHFibkpvY0pxQ2hvaU1oQURzPScsXHJcbidpbWcvY29udHJvbHMvdGFidGV4dC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRHFTVVJCVkRqTFkvai8vejhESlppQktnYmt6SDljTUhYWDZ3Y2dtaXdEUUpxM252LzRIMFNEK09YbDVkbEEvTCtrcE9SL1FVSEIvK3pzN1ArcHFhbi9FeElTL2tkR1J2NFBEZzcrVDEwWERId2dwc3g4Vk5DNTZlV0RrSjY3NUhtaGJmM3pCMHVQdlAxZnV2UXBPQkRqNHVLeUl5SWkvZ2NHQnY3Mzh2TDY3K3pzL04vR3h1YS9pWW5KZjExZDNmOXFhbXFvZ1JqUWNhdWdaUEhqQjY2VjE0WnFJTnJtWHlxSW4zYnZnWFhlSmZLOEFOTGN2KzNsZnhBTjRoc1pHV1ZyYTJ2L1YxRlIrUzhuSi9kZlhGejh2NUNRMEg4ZUhwNy83T3pzLzVtWm1WRURFV1F6UlM2Z0JBTUFZQkRRUDU3eDI2SUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ2ltZy9jb250cm9scy90ZXh0LmdpZic6J1IwbEdPRGxoRUFBUUFKRUNBSHQ3ZXdBQUFQLy8vd0FBQUNINUJBRUFBQUlBTEFBQUFBQVFBQkFBQUFJZGxJK3B5NjBCbzN3SEdoQ29zZHR4dDJWZ09KTGxCNktNcEpidXF4UUFPdz09J1xyXG4sXHJcbidpbWcvZXh0L2F2aS5naWYnOidSMGxHT0RsaEVBQVFBUGZUQUllcDNLK3p1MWRnY2YvLy8xaGhjc3pWLzBTbTkrdFFQbitIdE8zMS92YjI5aTQyUExIRzhEZHQ5dXowL3ZmNi8xOXpmL0g0L3JYSTh1dnovWXVPdVBQNC9oMGpLK2Z4L1c1M2gxZlBWTzcyL3JpV09LVzk3alJKYTZpLzc2L0Q4TkRrL0tXejJxdkI4TG1ZSE9UcTh2YjM5NldydGk0MlRFeFlhOVBWMkM4OVFEWkVWN3pBeDRGNWMzVnBLalZIWGJyTTg5UG0vT1huNnRUbS9Mcko5RDVMWGtLVDRLdkI1L1g2L2x4K3hhbXQvL1Q1L3ZYeTlpazFSS3F6OVhsM0xGWmpwYmpVOVR5M1BsVmZjRm1WMmsxNXhudUVsRkIzajVTZ3E4M2I4RzE4cnJMQTZkbmM0UDJrbDExbGRzM1o2bVY3Z0ROR2tMelE2TXl1RnR2YjNPeUxmekZnNW42SXM5ZmU5QnduY0pDWTZudEdTWXRqWm1lUi8wMmZlTlA2LzRTajFsYlFXS0MyOVhtTW83dlk5Mk5zZTRIcmdmajcvMTZlLzFVMFJGQ00vN2ZKOHVmNS94MGtNZHpGZy92OS8vRDIvdEM2Y1FFTlpMRzF2WG1keDdqSDJjM2krSU5yZElab2NGaG1qZWJ4L1hxQ2pXSEZZZERTMkp1ci8wRldaYnUveUxtOXd2blV6OFhkK3JLMXVwVzg2TEhHOXZSTU00cVFuTmpvL0tIRjh2MmFpcEczNDJKemkxMWxiMEJqcHR1N0crbkhOSmZIdW4yYjhwdWtIcE9hcHZ2Ky8yL2RkZWpVSG9CMmdQYi8vK3pBQ25lMDZqQ2tNKzMvLzliaDloZ2dLRHB0OC9IMy92ZjcvL2I3LzNXUXUrTHYvZmkwcVQ5S1o4dmgvS2U0MmZoNmE5cnEvU2s2aExmUjhyUzN2NXlwNEplNzVGRnNpcnpINFlDYnp1cnE2dlkrSjdIRjhlbnkvbVJ0ZkpYNmtwYXoveWd3T29lRGlvV0ZqMlNDZUYySWJ1enovYVNrTDJkd2dVS2NSNG1QdGYvLy9jMm91TmptL3pWbjVzTFU5Ly8vK3IzTjg0aXIzamhmdjZmSTYvNTRaQUVRYTdHenRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQU5NQUxBQUFBQUFRQUJBQUFBai9BS2ROQTBDd1lETXdBRWdJWERod2dLVXpPQ0pvQ0FhQVV5TVRUQllDZUROcWg2Z0VFeTRZTUdERENDQVpBZ0U4cUFESEFTNDlwZ29VOEhHbFVwOXBDa3I1dXRNQzJDOGtUMWdsbWtFREE0c1NoUEJVYVhKS2x4aytVT3JFQU1ITXlad1VYS0F0RXNRRGk2UkxHU0JJU1FWRFFJQmVCMVo5Y1dXSERUSXRZWWlOR2JURzdCWmJ4OGprS0VMcmhnNHZRdjRFa1dBMnphRWxES0xJaVFiRXo1Rk9LcDdkTXR1aGdhRWtyYklvQ2JFckU2VUZzVDZZSFdabDBqSlZzMGg1RXJOaHhBcEdJc3hLYzZaR21iRUJtajdGZ2VSQ1ZpRVBabXZ0SVlLbUN5dzNrVEFKZTBGSEVRY0NBYVpSUWZVb1dhaE5VMzZjeUlPZ0dJVmNyd1FHRVhMRXl3S29OajFxb0JoQ29BeWlhUUVCQURzPScsXHJcbidpbWcvZXh0L2JtcC5naWYnOidSMGxHT0RsaEVBQVFBUGVzQUhWK2pNVEl6dFRYM2RHOVBWeG1kdi9vemFLb3N1dnM3K25zNzJOcWVaaHdlT1ozWUZwbWQvZlBGR1ZxZTVDWG84L1IxMngxaGRiYjM3cTR2dUhpNDJoeWdOcmM0TjdmNHBHWHBGOXVubWh0ZTFScm4vaDNLOW1xVWJHYlZmUDA5dkx6OVZlYlhwUTVQN1M1d1pMQXhOVjNNS2UveThDMXEvSHc4YnZCeCtMSXYyeDdqcnlPRHA2djBKcWdhZmo0K05EVDJLT3Bzb21Wd052ZzVwaWN5RTV3VzUyRUw3RzJ2M2lNbnZIQkI4N056OGZEeU1tOVM3dXlpdHFtQVZhVTMzcUJKSXlNa2JPam5ZU0VrTzN1OG5WNGdsQ1dVK3FzZ0g1NmhvbVBwL0N2bU5UZDM5M2Q2RkpjYnZYT3A1M0N5ZFBYNGZEdjhPQ09WR09MUDdPY0diUEZ6MkZxZTEramJPZm82K2JvNjRXMHd0VFgzSFI4aWVYbjZZaXJsZnI2K3RmWTNPTGs1LzF3SWx5WDNwdXR1bnk0cXM3UTA2REhxTTUxTjJKcmZKS0dGNnV0ZHJDeWFieS94NU11RWU5OVE1cWgxdnhkRzNGdWU1R1ZvTjVlTy92SVdxcURqT1o5VUlxUG5iN0cyL2IzK0k5M2p1RndScG5CNTVHODRtZGZnSEdxNUkxOE8zbDJncUtISjlxM2g4N04wWFY5alA3WXJtTjkxNzlTUXBZL0k5WjFMK2pwNjVpYm9ZeVlvZERWMmtxN092SnFLSUNJbGRuTnlrcUlrbHFmYXIvcng1dXZ6dmxQSUxtN3YxdUswSzE1WXArbXVKdlFwZFRiNExGS0ZyZTV2eUpuQnV6cjdlUXZERStVVmVYbjY4Q2RhNGlRbThlZ25jT2VxNlNscjhPOHRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUt3QUxBQUFBQUFRQUJBQUFBamVBRmtkV2xTQWxjR0RDQStpK1ZRaWlJNG9MNzRRa1dFQkM4Sk5iaFFWV1ZXSEFpTW1OREswNllKd3p4OE5KNXhrTWdNRnpnWU1NQkQyK1pHZ1I0ZEdvRlNrY29BSEFzSkxZN2dNWU9GSVNKeEVjbFJkUU5nQ1VaSUdnL3djd1NSQzBBUlJDSjlRcXBIREJxQTdveFFnMllFQ29TVklvWHdFMGtSbmdhUWhoUkl1NlhTRnh4b1RiNVFRbUFNbW9ZUXpwS2l3SVNSbVVwTVlZUko2SW1GRWpRc3BmTWhZR1hFZzRRd3RJWUI0NEdBSEI0QUFJQklpcUZKcGlxbEluQmc4RUtBbklhdEhYc3JrUWJVaXdvMVNybGxsU1hHcVFocERCclo4UUJnUUFEcz0nLFxyXG4naW1nL2V4dC9jLmdpZic6J1IwbEdPRGxoRUFBUUFPWmdBUC8vLzJ5VVA2R3gwSXVqUjk5WE12L1lTOTlxV055Uk45MjlMWUc3U09sck40V2F2UFdCUlR4MHVkdG5WdXR2T0VOOXYvTjhQOU0vTG91bHhYbUNvdDlYTWQxVU1kNVVNZm5LUS9XWmJGNmMxRnVkMWFXL1hONVdNWWV6UnBmS1p2dS9FNzFuV0w1VlNYaW1RbXlVU3RxYWhyVy9yZjdCWGRSZ1N1UENMdi9DRDZQRFZ2L1JENUxIV0ZDUHpHT1F1N2ZMVk8zTm9laHBOdEZPTXN1UlJmT0FSWnE4VEo2OVROUkFMVnFiMCt0dU9PaG9Oc1RNZHZLYmNyS3FmY0IvTXZHclJsdDFON0hOVlA3RVdMbkxVRm1aMC9MRUdxbkNZLy9TRDZDaXROTS9MZnEvRUlTZHZ0SlBNdi9MU1AvWlQvTjlRdi9pZnYva2gvdkVwRUNSei9QZXUzYUZwdFJBTHYvSlFJcTM0WEdVczlWQUxrMWtXWStqWVBTcGhmdStFLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUdBQUxBQUFBQUFRQUJBQUFBZVpnR0NDZzRTRmhvZUlpWVk4VVZKVkFBQmVHU1VDaFJ3d0xBVVlNVDBST3lGRmxZSkhMVVJJQlU5QUVUSVdJbFFhbFYwakhqNUdCU2RRQ2hjU0RpOHVFQXRCSkNhUVF6VUtCTHlRV2cwQlhBMVpBRk1NT2hWS016U1FOZ0VCQ3hBYlNRd1BCRnROQnlCT0t3a0RBV0JNT1Ziak9DZy9YeW9wSHpjRGd4TVVIVmNHRG9EQnNnU0JrSDJFSmhnSU9BZ0JnZ1NLSWtxY1dDZ1FBRHM9JyxcclxuJ2ltZy9leHQvY2FiLmdpZic6J1IwbEdPRGxoRUFBUUFQZlFBTm5oOE92czd1RGo1OS9oNU9EaTVZaWd6d0Y4NHQvZzQ3T3UyUUdWL0ZkaGN3R1ovdG5jNEpLbzA5bmQ0YkN6M25KNmlwU3MyTEROOEh1Tm5kTGI3WUtQbnBha3pnU1QrRXR2dHdHWC9RRmx5Ni9QOUtxNTJlRGo1bjJnMGVUbjZRRnkyT1huNm1PRnY2YTB6emg1elRkMXl6OU5ic1hpK1l5MjRwbW1zK1hyOWNqVDZSR2IrM0Y1aVJNdWVndWMvK1BvOUtDejV5WkpobG04LzZHaTJRRjUzaVZGZ2VQbDZBV004UUZhdjVPYnRwQ24weVNuL3pkNXpVbTIvd0dMOFFHRjdBR0k3M043aTkzazhRR1E5aEtmLzNXWXo5emY0cUN6MlhLUzMzTjZpbytleTZLMDJxMjExb0tielZpTTdNYlo5Y2JmOW1sMmlOUGM3VHBpc0MxbHVuYUFrRUpUbk9yeSs3WEU0cW02M0pUQTdPcnU5Ky93OFd5NytpeGNwb09vMjhIUDdna1lOekZLZXAydzJMeko1R0p2Z2xGYmJhR3J0aVZBZkFGdjFJNmwwZ09aLzQ2azBpWTdkUUdOOUh1SW1RRnUwK0hqNWg2ai9hek43NVM2NWREYTdEaDcxWHlnMWFlNDNHNlB5dkgwK3NuaDkzZUttaEkzY1JZeGZYSjVpQUZxejU1eldyQzR3YnVnbktPeTQ1T3Y3ZUxsNkFHQjU3dlQ4VFJUdXB1djE2K2NkSGlIbUFHUytaMnAwS2w4U3NQYThxREU2aHRBZ2poOTdwL0s4ZC9oNDhQUTU5ckxpU3RFczg3SDVYT3M1TGVzczY3Yy9OdlY2akZibnVUcTlDZzljUWN3clVkc3RTZE5pN1BDNFF3OW5YeVFvTlhYM0hxczNhYTMyN25ZOUxLMDNrR3kveTJxL3ppdi8zR1YxSDZYeTZhNDJ6QmpyWGlFemFXdzB6MkE4RmxqZE96dTczaUltUUYzM0p1bXJqaEliMmFHdTduSDQ1cS81cUNvM012VzZ1Ym42c2JTNkFHUDlmLy8vMkNPNnkxQ2tCdWovOWJlNzRXUG45cmQ0WGlNblc2VzZVdUg3cnZSN1AvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBTkFBTEFBQUFBQVFBQkFBQUFqL0FLRWxNVlFJbUNkTkNCN1FZQlVqRExTSDBKck5hRFduMDRsVmRDVFYyVlFsUllpSHhueTRZc0ZIUmJJVnZyU0FJWFhxME1NbnI1QmRpRFFFRXlOSVRQRElZQ2Jnb1RNZUw0Zzkyd0tyd0pwRlJtejA2UW5OVnBFRk9DUmdnUktod0E0OWFYSjFlRWlKVFFJdnhhSWsydEJya3A4cmpRZzh2Sk9CaUFFUEtGTDlxalNDUXhNckF4NlNjUFJEbDVnOW9LWU15NUtuRm9RREQzdThBUUppREJjQWhEZ0pRdkpJU1Y1b0pZSWdVb01CQm9WZE9wdzBzQURJMGtNUk5Rd0VHZ1VnV0JsWlpOb3NhWUVZMm9kWmNUUlFzWE9wbEtwWW1ZNEpVUXNOMTdJdk9VelJVaVRLUlNnVHQ1UUpneGlBd2FjL2JuaWRVV0Ntd2lBNVhTQkNEUXZnWUlJVU9HaFFIYmtoUGlBQU93PT0nLFxyXG4naW1nL2V4dC9jZHguZ2lmJzonUjBsR09EbGhFQUFRQU1aL0FDa3lMaDAyS3lFMUxDRkJNamsvUFNGT09TaFFQU2RXUDBWT1NpNVhRMEpXVFU5WFV6ZGdUQ3RsU2tGbFZEeHFVMGxvV2tGdVdUbHhWelYxVnpOMlZENXpXbDlxWldscGFXZHFhVWgyWURsOVhFcDZZMkowYkRpQ1hsQjhaM0Z6YzJONWNHdDRja0NJWkR5TFpGYUViMmgvZFdhQmRXaUJka0dUYkVpUmJuaUNmWG1DZmtlV2IwV1hjRWVhY2tpYWM0Q0poWUNMaG8ySmk0bU5pM3FTaVpDTGprNmhlWStQajFTamZsT25nRkdvZ2w2a2hGMm1oWStXazFpcGc1YVZsVjJvaFhLaWpsV3NnMWlyaG0rb2o1dWFtcHFlbkYyempwcWduWm1pbnAraG9HRzJrMksyazJLM2xLU2lvMm0xbFdtMmxXcTJsbWUzbFhTMGwzYTBtV200bUdtNWxXNjRsM1czbTJ5Nm1uRzZtMjY3bktpcHFLdXFxM2k5b1h5OW9MQ3ZzSDdBbzM3QnA3R3hzYW0xc0lIQ3FZTERxSUxHcW9iRnFvbkZySXZIc0xHOXViNjV2SlhJczViTHRiZkJ2YUhNdks3S3ZxRFZ3S2pWd3FiV3dxblh4TG5WeTh2UnpzYlR6ckxheXNQVnpzRFh6cm5lMEwzZjBjbm0yLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUg4QUxBQUFBQUFRQUJBQUFBZXlnSCtDZzM5MVpvU0lnMzFUQnhWRGJZbURiaFFFWUhvaElsSndpSGtqQWorQ0tGVnJFQzFiZzFvSEY0UmRFVFplU2lra2dsQWdmbmlJUFJOY1lodUNUeVZMTUg5ME8zWmhaMngvWmI1L3dFd3JjZ1lXVkFsQ05Ndk53RTByUGtSeFZrRThIOW0vSlRvcVNROGNIZ3dJZCtWL1VTYzFSWWxZWkdyTk9FZUpjeDBBM3FESklHaU1neGRaQnJrWU1JTVBpd0EzQ0NHUmtDUE5IeU43Z0JUQUVPbFBEQTFYdmpSWTRLVGpJQk1LWkNRS0JBQTcnLFxyXG4naW1nL2V4dC9jZXIuZ2lmJzonUjBsR09EbGhFQUFRQUxNSUFQLy8vd0NBQU1EQXdBQUFBQUFBZ0lDQWdQLy9BSUNBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFBQVJZRU1sSnE3MDA2TTA3Q0lVZ0NxRllGc0VRQ0FiZ3RnQU1DT2s2SDRLcnQ3UmFBSWZDQVVCdzVRQW9WVTZBSXhnRXhXTFBGbk1WaWJ4YVFmYlNJV3RIZ25nOG5oNjUxWmwyVkRLWmFwMzRaZ0FZMk8vNFBBWVRBUUE3JyxcclxuJ2ltZy9leHQvY2Z4LmdpZic6J1IwbEdPRGxoRUFBUUFOVW1BQUNaLy83Ky83VGI4QmlqLzd2ay8rSHkvSWpQLzVuVy95U24vMFMwLys3NC93MmUvek90Lzh6ci94R2cvOS95K202OTZ2SDQvYXJkLzFXNy96bXcvNW5VK0hIRjdhdmU4aWlwLzNDNjQ3RFo3NXJPNjAycDNOanYrWmJNNms2NDg2WFU3WGZKLzJHOTlHN0UrRWV5OUdPNjYvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQ1lBTEFBQUFBQVFBQkFBQUFhVVFKTlFxQmtBanBDaFVvZzREaWdPd0dKcG1od0JwVUtna0RnbWhvc2pTUnNvQnhyTmdlbUlLVHdJaEVaQVFWQUVSTktqSUdBNGhpUlJEZzhjVndCN1hYRU9EQWNBQmlDRmUwMEFqQWNLalJXUUFRQUpCbjBFRXBPTVZ3SUVqWHdBRXd3SUFRS1FqQVJ6WFF4eXJWY1paR1ptQldrbVlRQWJFYmtSSDA1RERFNGREd1VXVjJwS0hsY0lGRmRKVkNZWGhTTkxRUUE3JyxcclxuJ2ltZy9leHQvY2htLmdpZic6J1IwbEdPRGxoRUFBUUFLSUhBUC8vLzRDQWdQLy9BQUFBQUlDQUFNREF3QUFBZ1AvLy95SDVCQUVBQUFjQUxBQUFBQUFRQUJBQUFBTlNlTHBLN2l3ZUlxb29SRFpyUzVCVTVWakRFWnpuVUhsQlVaVUJJQmREVFFUcWE4cThiT1FYV0ErQUN3VVZNU0lLRUtJdGtzTWI2aWxESlVzUmFJOVFHMlNRMVNVUXV4c0N4bFF6MS9ic3VtdVNCQUE3JyxcclxuJ2ltZy9leHQvZGxsLmdpZic6J1IwbEdPRGxoRUFBUUFQZVZBSWVwM0ZkZ2NmLy8vNit6dTlIby85YnIvK0x4Lzl6dS84dmwvOFhpLzFoaGNzRGcvNnJVLzJOc2U4Ykp6ckRYLzBTbTk0cVFuTzMyLzh6Vi81ZWVwYnA3RmF4OEZwT2FwdVRwN21SdGZIZm9UeUN1RnJYYS8zZTE2cmJZK2U3dzh1VHE4bm1leWMyWUNiVGh1cWkvNzZYUy81bVptVnVhMjVITXc5RFMyTy8rNmZIRFZucVB3dFhmNkoydDJZU2oxcHFvMWtLVDRXTnpqTm5jNEltRWZLcXo5Y0diTXEvRDhOSGI1dnI2K2tMRkxMRzF2V0NIR1c5OHJydmQvNnJUL09pME43SEY4Wm1oekVlSlB1WG42cWZRbmF2QjhPKzhScDFZRWZMSFpyM1M2S3QyRnZYNy80T2kxY0cyc2FqVC9RZWJCYlhJOGd1WUI5dXdSaWl4SG5YblR0VHEvOS9tN09yNjVkdmk2dExTMHIzTjgyNTNoMzJWeUphY3hvSHNWNVdaeElpcjNyaVlPSmVrMG5PQ3RYKzA2OU9jRy9qNCtNUGgvWDY5aCtqMC80dVJ0c0NUVUl5Z200R2N6OFdRQzlQVXRiZko4cnpBeDdTM3Y2Vzk3bHJWUFBYNi85L3U2ZW5zOERpalRIYUl1N3JKOUpPV3dYNklzNWVleWZiMjlvdU91S1dydHFTa3BQUHo5S3ZVL2VIdy84SEFsTmVlUExyTTgxMWxkcGltMDQ2KzhIUG1UU1ovSXp4N1ZydS95SHVFbE5iQVcvcjkveUNJT0tkcEVmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSlVBTEFBQUFBQVFBQkFBQUFqcEFDc0JHRWd3ekFzQUlDb3BYQWhBZ01PSEFnQjBrQkZvQmtPSWt1d3dnUUFoQnFSSFJCUUN5Q0VBQzRVMkl5Uk1tRkNqejRVVUlzK29ZS1JseUFZVUJnNFUyTU5GanNnL1h6UVVhU1FGQ3BvQ0JMWWsyaUZ5VUpvcWRYUlFjZVNCQUFKRUFRYUkvSEJuVWg0ZWtVeUlzWkVnVGxhRlRmQklLQVJuUlJKQkZrUVlpbksya2hzTWFndzRPWFJraXBrM05JTFU3WElscHhVMmxJQlVXTExvUmwwV1dYUVNVRklHeVlrUVQ0elUxZE1DS1lJRUMzNFFlc0NBUkYweU9LeUM5c0dCZEFrNkNyUlc2dUVDaHFJeFF2eDRBY05uRGFBTWN4UTZpTkJBUVlEanlCVTBpT0NnVWtBQU93PT0nLFxyXG4naW1nL2V4dC9kb2MuZ2lmJzonUjBsR09EbGhFQUFRQU9aL0FQLy8velpLWkpDdTFqZExaUWxMc2dVMmdnWkNtOXppOUVScXVaT3I1b3VrM1pPaXQ1bTI0SGVSMVdDQnpRRXllSW1sNlZWdHBHZUsxUWc4aUlDZTVwV2t1ZHpvKzRPYzJ0cm0rK2p3L2VMcy9PLzAvVHBhbUNwaXQ5YmsrNkc2M2RQaStuaWo2L1AzL3BXejR1SHErOW5tKzZxKzhkamwrb2l0NWNmYStOZmwrOUxoK29DbjU3SEIxNjYrMUFndmk2MjYwUEwyL3RiYzZxcTV6MDFxcDZ1NjBlbncvVlY3emlnK2JjN2UrZkR5K3BhbXUrTHMrNTI0M2lGTW1zN2UrRHBwdUtTNzNhVzgzSGVLbkVKdXhNemQrUFQzL255WDJJcXU1TkxpK3Rybis2VzB5akpidG95djVKNjQzK2p2L0lXczVwR3g0dC9xKzN1bDZQVDQvZUhzL0YxMXEwQm10SSt4NDYrODMxSjN5dVh0L0Y5OXc2aTJ6VmgrMFdkK3M3ckYxSVNyNXRmbCt0M3ArL1A0L3NyYitPbncvRGhocnVueC9lYnUvTy8xL1pXMDR1SHIrNW1vdnEyOTBvR241OG5TNHRiaytxYTJ5OVBpKyszMC9VbDB6TExDMk5EZytaeXJ3SHlrNmJmSTlMREExdWZ2L09UdC9NbmIrZi8vL3lINUJBRUFBSDhBTEFBQUFBQVFBQkFBQUFmaWdIK0NkaTE3TG00MU0xMXlTNEovQ1FrUUZFY1NYbHBFSFNKMGVBT0NDUUNnb2FBRVJoc1ZZSjBRSmhjT01nNEhFUW9FVkdvTEE3Y1VCeGRjQndnSE5FTUVBZ0pvUWtFRERRQU5DRmsrQ2h4d0JtUUNabFVmQVJJQVh3aFdCVXc0QUFZeEFtbFNQUUUzQUJFY2VnVUZNQUFUR3dKOVl3d0JkUUF2WnpvRlY2QUZocEhBTUNJQUVGR2lIanpSWUNFT2xnQWRDRWcwUUhGQ2dRZkRWS3hBRXNCUm13dzJNdkRad3NhQ0dCQTVvSFFVdElPSGhtRXdCZndvODJibG53b1lsSlE0NFdIT25TSitVdVN4dVNDSkV3WnJvalJCRVliRmxCQTJBMGlkU25WcUlBQTcnLFxyXG4naW1nL2V4dC9lcHMuZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8velAvL21mLy9adi8vTS8vL0FQL00vLy9NelAvTW1mL01adi9NTS8vTUFQK1ovLytaelArWm1mK1paditaTS8rWkFQOW0vLzltelA5bW1mOW1adjltTS85bUFQOHovLzh6elA4em1mOHpadjh6TS84ekFQOEEvLzhBelA4QW1mOEFadjhBTS84QUFNei8vOHovek16L21jei9ac3ovTTh6L0FNek0vOHpNek16TW1jek1ac3pNTTh6TUFNeVovOHlaek15Wm1jeVpac3laTTh5WkFNeG0vOHhtek14bW1jeG1ac3htTTh4bUFNd3ovOHd6ek13em1jd3pac3d6TTh3ekFNd0EvOHdBek13QW1jd0Fac3dBTTh3QUFKbi8vNW4vekpuL21abi9acG4vTTVuL0FKbk0vNW5NekpuTW1abk1acG5NTTVuTUFKbVovNW1aekptWm1abVpacG1aTTVtWkFKbG0vNWxtekpsbW1abG1acGxtTTVsbUFKa3ovNWt6ekprem1aa3pacGt6TTVrekFKa0EvNWtBekprQW1aa0FacGtBTTVrQUFHYi8vMmIvekdiL21XYi9abWIvTTJiL0FHYk0vMmJNekdiTW1XYk1abWJNTTJiTUFHYVovMmFaekdhWm1XYVpabWFaTTJhWkFHWm0vMlptekdabW1XWm1abVptTTJabUFHWXovMll6ekdZem1XWXpabVl6TTJZekFHWUEvMllBekdZQW1XWUFabVlBTTJZQUFEUC8velAvekRQL21UUC9aalAvTXpQL0FEUE0velBNekRQTW1UUE1aalBNTXpQTUFET1ovek9aekRPWm1UT1paak9aTXpPWkFETm0vek5tekRObW1UTm1aak5tTXpObUFETXovek16ekRNem1UTXpaak16TXpNekFETUEvek1BekRNQW1UTUFaak1BTXpNQUFBRC8vd0QvekFEL21RRC9aZ0QvTXdEL0FBRE0vd0RNekFETW1RRE1aZ0RNTXdETUFBQ1ovd0NaekFDWm1RQ1paZ0NaTXdDWkFBQm0vd0JtekFCbW1RQm1aZ0JtTXdCbUFBQXovd0F6ekFBem1RQXpaZ0F6TXdBekFBQUEvd0FBekFBQW1RQUFaZ0FBTXdBQUFQNysvdjM5L2Z6OC9QWDE5Y3JLeXNuSnljZkh4N3k4dkxLeXNyQ3dzSldWbFNZbUppY3N6Q1Vxc2k0ejF6eEIyMUZXM0dCazRtNXk1SHgvNTVDVDZ2bjUrZkx5OHV6czdPTGk0dHZiMjlIUjBjakl5TVRFeE1IQndicTZ1cmEydHJPenM3R3hzYVdscFpTVWxJaUlpQ3dzTEI4ZkgvLy8veUg1QkFFQUFQOEFMQUFBQUFBUUFCQUFBQWpUQVA4SmpIY3ZYemlENGNMaGV5ZXc0VDk2N2JhNWMvY09YajE0NGVBSlpMZE9YYnFQNkVLaTA2Y3RYc1ovN05LZE8yZXVKVGx5NWZocEt4bnUzYnFWTE0yOUxGZk9DajkrKy9URnU5bFNKOHh5cXQ1VjlMYXZYa052RVNYQ3N6ZVJvcnh2VDkrSjI3cjEyenQzMjdiZGV4cElYejF2ODdqcFl3VzJIYmluOE9MSm05ZXQyd3A5MzlxNWZacE4yN3R1ZE91S3kvdFdvTGUrZnV0eTh5WnVHNnZDLzd4aFEveU9HemQ2NHJJQndQY1VtMmZQN3VUWkV3Y0FBR1I2bnoxbmV4ZG9XK2x3VDFtTm0wMjczemgvckw0RkJBQTcnLFxyXG4naW1nL2V4dC9leGUuZ2lmJzonUjBsR09EbGhFQUFRQUtJRkFQLy8vNENBZ0FBQUFNREF3QUFBdi8vLy93QUFBQUFBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBQUFNNFdMcmNGVERLQ1llOStBWVJCdmxnK0cyZFNBQUNpcElENVhJRElNKzB6Tlk0Y09mMHp0dXczOHozSS9KSXJwZGd5V3c2Qlk3b0lnRUFPdz09JyxcclxuJ2ltZy9leHQvZmFzdGEuZ2lmJzonUjBsR09EbGhFQUFRQUlRUUFPVG03R1IrbEV4bWhDeE9iSFNLbkp5dXZJU1dwRHhhZE5UYTVNVE8zRnh5akxTK3lKU2l0UFR5OUNSQ1pQeisvUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lINUJBRUtBQThBTEFBQUFBQVFBQkFBQUFWZTRDT09DN09NNkpnb1RxdWtLT015RFBJazhLTWNlY0drQzE0T2NRQ2dBQUVjN0VESWlSSUpSbURnT0tFV0JHcXJKYkNLaUZ1RndyQXdwZ0tPbWpNbXlDRzlJa1l6TjRBL0FBWGxxSkJlTXhRQ0xRYzJUaXdPQ25Zd0NIb2pJUUE3JyxcclxuJ2ltZy9leHQvZmRmLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBTWZIeDdLeXNyQ3dzSXNCQTNoNGVYZDNkeVltSnZNVUdQOGlKZjlEUnY5VVYvOTFkLzU5Z09mbjZ1N3U4SGQzZVBUMDlmRHc4ZTN0N3V2cjdPbnA2dC9mNE5yYTI3YTJ0L3Y3Ky9MeTh1am82T2ZuNStMaTRzVEV4TDI5dmJHeHNheXNySWlJaUh0N2UzTnpjMkZoWVZsWldSOGZILy8vL3lINUJBRUFBUDhBTEFBQUFBQVFBQkFBQUFqUkFQOEpkUGZ1bmphRDJyUmxreWV3NGI5NjlOcTFpMGl3blRaNkFzbFZFQmV1STRlUDM2ekFhNGNQNHpnTzRMNTlHOEZ5eEpwODhFWnFXMWNCWE1xVkxJOXNzNUl2bnhVcjdyNXRHMHFVNkxsOSsvamxxOWNRMjdwejV0S2hvNmN1M2pwdUsrdzFYZGZOM0RWMC9jTEcwMmZ1WFZOMVhkR3BXN2RPSFRwOTZMSTFUY2N0M1RWNllmdTEyOGRPcmtCczVyakZreWN2bnVGMDNlYjUvUWVZbTd5di9majFDMnh1TWVERVVkTnBEcXpPY21CdW9FR2ZHNzF1Y1QxMXFGT3paY2V1bkxhbXJMekpuaTNiSHl0N0FRRUFPdz09JyxcclxuJ2ltZy9leHQvZm9sZGVyLmdpZic6J1IwbEdPRGxoRUFBUUFOVUFBUDcrbVA3Ky9sdGZhYk82enRYZTl2N1Ric1NSTFA3ZmV2N3FoUDcya0xyQzE4N1c3Zjd6amN1WU03S0FHdjdMWm0xeWZzcVhNcWV1d2NhVExwbG5BWjl0QjdlRUg2SndDblY2aDVobUFMeUpKSzE3RmY3bGdMU0JISnRwQThpVk1GeGdhcDFyQmNHT0thOTlGN21HSWIrTUo2cDRFczdYN3I2TEpyYURIajlDU2JuQjFxUnlETktmT3R1b1EvZkVYN3VJSStXeVRiT0FHNmQxRCs2N1Z2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRFVBTEFBQUFBQVFBQkFBQUFhUXdKcVFRQ1FJajBoaEkvS1pLQlpKWkNOQURZZ2tpeUpSR1FCNEFWWlNxdU1ZUFd1UkJHTzlybEkzbUJYaGcrQVk3dmdTekNJckt5WUhCbTZESEFFWEdBWUZEVitNWGk4QUZTQWlEMmxxbHBZMGtBSWxsSTExZFRHYUdwMEhwYWFsTHFJUEZnQUZycSt1TFpwL1pSc21NeXdYRlNFZUZCa3FFQXNTRUFMRnhzY0NFQkkxQ3dvRHo5RFJ6MUJSMVVKQkFEcz0nLFxyXG4naW1nL2V4dC9naWYuZ2lmJzonUjBsR09EbGhFZ0FTQU5VdkFIK2R1UUdaLy84MEFmLy8veVJ3MWQvdi85bnMvOXp1LytmR0orVHkvNXpHOWZrMEJiUFkvWXJPLzRmUCtlN1haSWJHL3RiTTJWT3I5dHpKSkFtVThtejVOZ09iK2IvRGdkUHAvNjdXLzk3di8rTHgvK25JS1QxdHZiamIvOFBtLzJCRWxPODFEL3JOQWxqd1VFZEhyQStuNHVmR0tQRE1LdDNqeGd5TDhlWFVDZFBIMUpuTC9NWjdlN25jL3YvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFDOEFMQUFBQUFBU0FCSUFBQVpyd0pkd1NDd2FqOGdoWU1sc0xvMkE1Q3RhakFxdXJZOW1jNWhDWDlkRkp4Qm9ZTHhWc0FCRUlBZGNhS0kxUkdxVElYSGxheFZKVVVwa0xIbENVUWtGRGlNVkZoSU1nMTRGQmc4aUtoTUtIbzVSQmlnbkNDWWNGeG1ZTHdPa3BhU2lTVlJ5VHF4U3JxK3dya0VBT3c9PScsXHJcbidpbWcvZXh0L2hscC5naWYnOidSMGxHT0RsaEVBQVFBUGZSQVAvLy8wdExTOWZoOC92NitObmg4dkx5OHRUZThkYmc4di8vK0U1T1RtbHBhUzVqekZCUVVDbGZ5dS92N3l4Znc4YlE0amxyemhCTHdlbnA2ZlgxOWRqaDg3M0o0SnF2MmZIeTgrM3g5ZG5pOUJGSXVhRzU1OUxkOEJWVTBaR3Q2TlBlNytEazhXbU8yQ3RuNHRYZjhCeFV3dzVKdmVEbTgyNkx5QjlYeFphYnBKYXIxSHQvaC8vLzlPanQ5ZjM3L0hlYTR2RHg3TVRFeExXMXRTeGh6RlZWVlRCbHpCRk13Y3JZOC9UdzZ5Vlh1ZGJmOEJCTHhQMzgvYmkvelRaeDVtMXRiZERiOGFpMXovdjcvTnZxLzlmZzg4N3AvOWppODl2ajgvTHo5ajF6NENwZXlkcmo5RkovMThyUjNkYmU4aU5jelNsZ3k1K3YxZFRkNyt2cjYycUd3ak5qeGFqZC91THE5WEJ3Y1AvLzdxMnRyYW5VLzdDNnlZZXY3TWJ6L3dFeHZieTh2RFJwMHpOcjIrTGk1RUJ4MEthb3JlRGc0TmZYMXcxR3U4cmUveVJjeS83NTh6Tm56eXBmeXYvLy9TOWp6Y2ZRNHlkZHlvR2F6L1QwOU5qajlETm56dXJxNnRMZDhjREoyeXBoelh1YzRMdkczUlpOdHlGYnpmdi8vOWZlNmwySDNzREN4Q0JXeE9ydTl2YjI5dm42K3YzOC90Zmg4cFdWbFdCZ1lQMzgrQlJQeHRQYzhkbmo5TmZnOFNKWnlaQ28ySldrd21wcWFqbHMwRmRZV1pqUC9EMWx1ZWJ0Kzkvbjk5cmEyb0dhem0xeGQ5RGI3L2orL3d4R3VOSGI3K2pvNkNwZnh2NzkvdWp0OWtxSy85SGM3MDFOVFpLWXBEdHN5MnVZOVdxSnlxS3h6OVRmOFZGNXgxbCt4eVJad05iaDhpUmJ5dFRXMlpISi8vLy8vT1BxOEN4aHpYK2MxM0d5L3pKbXpNYlA0ZS94OXYvLzkzQ1MyUnRVeDh2THl6Sm16UnBWeVhtazlubDVlVTZNL3VUbzlkSGM4V2FNMnYvLyt1N3ovNmVucCtMazV5SmJ6RFJvenVEbjlOL2k3UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQU5FQUxBQUFBQUFRQUJBQUFBai9BS01Kaklia1dDZFFwb0lBb2pKd0lLRkd4bm9BbVBqaUJKNVpkQWE2MkFIZ3o1Y3JsbWh4OFZTcmxhQUNBZzBBTUpMTEM3UWNJWVlWVS9PbWc0eENCSGdSS1JWSXl5RU95ZGdvK2FIc21RcE5LbFdOUUdHckNSaGNBSkI1Z0RFcXo3SkhtTWFJYVFCSjJBMElBTXI0aVRBRWhBSUNPS0Mwc1VGamtCQUFlMzdkRXBXQkJJTUtUMUxZMGRXc0NvQVBQQlpFZVlEaHdLa2lBNnpJY2JabVZTWktzb0tWY0xWb1Y0SXBoaUtaZ0tNbmxRZzNDNVpzc0VBS2xTSm1pQkM4U3NOSUVnQmZFajV0UW5DZ1JpSUtUckMwbU5QbjBnVllPcVQwMHNBcEM1cG9FM3pVR1VDRzFRbytNWkxFWXFGZ0JzcG9aOHpFRWVDSXlSRUJYU29CRXRseXAyR29NSk1TQkZqUGdCZ3dCd0lEQWdBNycsXHJcbidpbWcvZXh0L2h0bS5naWYnOidSMGxHT0RsaEVBQVFBUGVGQUpDUWtQLy8vMWhaaVllcDNGbVd2QjVnbXN6bC8vZjM5NkhFNW4rdXgrM3Q3VEtJemNyWS81akMxV3BybTFKU2czU0FzcW5PLzB1SXRMdk80ek9ZN0wrL3YwT3EvbTdFNnlhS3dyN0svNEsxMElpcjNpT1IwaWFjNWJETi8wS1Y1Q21XNWJyYiswQmtpY2JWL0Q5NHNUTzA4REdxOHNuWC9uR0JzanVZNmtkNHBTK2k2Nlc1NGIvZi8yaHFsektQMkNsRlgyRmprRzNCNWt2QitlejIvekJ6c29TajFqT2M3Q3A3eEhHanlNalcvVzl5bmtoc2lkdnQvN2ZNL3lnOVc4VGkvOHZxOWxHbTVmZjMrRXRzaU1iVisxWldoeUpFYWxXVndGdGNpeWlmNXNIUTl1VHM4VCs2N2ttS3hMM1g1aDl4bmpHVjdiYlk2ZXoxLzl2cStPanc5LzMrLzZLMzNuUjRvN1BGN0tHNHlxclE2NVRwL0V1QnJuU1V0R050bk9UeS81UzMxbitpd0RXUjJWVldoa21tNXNuWS8zV28zdUhzOWorcDk3VE0venU1NzYzTi8zcCtwNmpHNDN2TitOUHAveXBzckQzTC9uM08rNzNLLzZleHZ0YlcxdS94OUNaRVpqMmcycCswMkhXeDNiVFM4Sm1xdkd2ei82dk4vN3JLL3pKZGovUDUvek9wM1gyQnEvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUlVQUxBQUFBQUFRQUJBQUFBam5BQXNKSEVDdzRBWWJFT3dvRU1od2dKVUFFQ05DeUZGaFlVT0lWWjVvMENBRlJZWVBGUnNTR0RreVFKTXZEaHdRQWxCb1NBTUNYUHpJV1lNa2dBdzBnakswWWZreXlDQU1HSlNzNkJLQXhoUTZXQUF3SVhBZ0FSUUVBWEJZR09PRkNoaEFPd0F3VFZDQ1F4a2hMeWhZVURHaGh3OFhBSnJPNkZDZ3JWc1JFK0NvaVFGQXl4c1RJQW9nTU1DWHJ4c0RIcElBa0pDSHhJMG9OUkFzV015RER4QTJSZ2IzcVJNbkJZVTBGeTdBQ0JPaXhaOEhBT2FJT2VBazBCRThQNGpvV1hLQ1FRVFFkN2JzT2FPRHhaVXNJNHFZWWVDYURFdUJBb0lMSHg3OHQwQUF5Sk1yUng0UUFEcz0nLFxyXG4naW1nL2V4dC9pc28uZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8velAvL21mLy9adi8vTS8vL0FQL00vLy9NelAvTW1mL01adi9NTS8vTUFQK1ovLytaelArWm1mK1paditaTS8rWkFQOW0vLzltelA5bW1mOW1adjltTS85bUFQOHovLzh6elA4em1mOHpadjh6TS84ekFQOEEvLzhBelA4QW1mOEFadjhBTS84QUFNei8vOHovek16L21jei9ac3ovTTh6L0FNek0vOHpNek16TW1jek1ac3pNTTh6TUFNeVovOHlaek15Wm1jeVpac3laTTh5WkFNeG0vOHhtek14bW1jeG1ac3htTTh4bUFNd3ovOHd6ek13em1jd3pac3d6TTh3ekFNd0EvOHdBek13QW1jd0Fac3dBTTh3QUFKbi8vNW4vekpuL21abi9acG4vTTVuL0FKbk0vNW5NekpuTW1abk1acG5NTTVuTUFKbVovNW1aekptWm1abVpacG1aTTVtWkFKbG0vNWxtekpsbW1abG1acGxtTTVsbUFKa3ovNWt6ekprem1aa3pacGt6TTVrekFKa0EvNWtBekprQW1aa0FacGtBTTVrQUFHYi8vMmIvekdiL21XYi9abWIvTTJiL0FHYk0vMmJNekdiTW1XYk1abWJNTTJiTUFHYVovMmFaekdhWm1XYVpabWFaTTJhWkFHWm0vMlptekdabW1XWm1abVptTTJabUFHWXovMll6ekdZem1XWXpabVl6TTJZekFHWUEvMllBekdZQW1XWUFabVlBTTJZQUFEUC8velAvekRQL21UUC9aalAvTXpQL0FEUE0velBNekRQTW1UUE1aalBNTXpQTUFET1ovek9aekRPWm1UT1paak9aTXpPWkFETm0vek5tekRObW1UTm1aak5tTXpObUFETXovek16ekRNem1UTXpaak16TXpNekFETUEvek1BekRNQW1UTUFaak1BTXpNQUFBRC8vd0QvekFEL21RRC9aZ0QvTXdEL0FBRE0vd0RNekFETW1RRE1aZ0RNTXdETUFBQ1ovd0NaekFDWm1RQ1paZ0NaTXdDWkFBQm0vd0JtekFCbW1RQm1aZ0JtTXdCbUFBQXovd0F6ekFBem1RQXpaZ0F6TXdBekFBQUEvd0FBekFBQW1RQUFaZ0FBTXdBQUFJQUFBSEJnWVAvODZmM2liZmU1TC83anJ2V2JBdi9xeVB5aElNdUhKdnkzVWZ5R0F1SjVDZitRRDlCMUllZW9idjkzQVBhSEsreVZTZXllWDU1SURMMVZHckkrQk10M1M0c3ZEbFFPQm1vUkRaVlNUKzhBQU44QUFMUUFBSThBQUNBQUFIQWdJSVEyTm9oQlFXQlFVSnlJaUhWd2NQLy8veUg1QkFFQUFQOEFMQUFBQUFBUUFCQUFBQWpSQVA4SkhFaXdvTUZBK2JCaGs4ZlA0RUI1OU9pdGVVUVJueitDclA0OUdtRnZWaGx5SU5uTnV2Z3ZtNzE0STliRUd4ZGhIRGh4MjdqRkV5aHZ4QWg2OGJ5TnU0Q3VuTGh1MmhMTSs0Zk5KcllkNE1haFN3ZEJuRFlBQWN3UnRma0lITGR5NlhTdzAvRU5BSUFFWFdxT2VDUU9RWUoxN1ZhOE85ZXQyN1o1MmFnNkJkQ3QzYmwyNmw1eUczcHZCTFp3VDdXZFc2ZnVna3R5L2Y3NU8xSXZuZ0FBMzhTVlEwYzVBcnlCSnRmQTI5Wk5YRkowRWR4bEk1Z3RudWx3M0xoNUl3ZHZ0TU5zMmVicDIrZmFvZTJCQVFFQU93PT0nLFxyXG4naW1nL2V4dC9qYXIuZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8velAvL21mLy9adi8vTS8vL0FQL00vLy9NelAvTW1mL01adi9NTS8vTUFQK1ovLytaelArWm1mK1paditaTS8rWkFQOW0vLzltelA5bW1mOW1adjltTS85bUFQOHovLzh6elA4em1mOHpadjh6TS84ekFQOEEvLzhBelA4QW1mOEFadjhBTS84QUFNei8vOHovek16L21jei9ac3ovTTh6L0FNek0vOHpNek16TW1jek1ac3pNTTh6TUFNeVovOHlaek15Wm1jeVpac3laTTh5WkFNeG0vOHhtek14bW1jeG1ac3htTTh4bUFNd3ovOHd6ek13em1jd3pac3d6TTh3ekFNd0EvOHdBek13QW1jd0Fac3dBTTh3QUFKbi8vNW4vekpuL21abi9acG4vTTVuL0FKbk0vNW5NekpuTW1abk1acG5NTTVuTUFKbVovNW1aekptWm1abVpacG1aTTVtWkFKbG0vNWxtekpsbW1abG1acGxtTTVsbUFKa3ovNWt6ekprem1aa3pacGt6TTVrekFKa0EvNWtBekprQW1aa0FacGtBTTVrQUFHYi8vMmIvekdiL21XYi9abWIvTTJiL0FHYk0vMmJNekdiTW1XYk1abWJNTTJiTUFHYVovMmFaekdhWm1XYVpabWFaTTJhWkFHWm0vMlptekdabW1XWm1abVptTTJabUFHWXovMll6ekdZem1XWXpabVl6TTJZekFHWUEvMllBekdZQW1XWUFabVlBTTJZQUFEUC8velAvekRQL21UUC9aalAvTXpQL0FEUE0velBNekRQTW1UUE1aalBNTXpQTUFET1ovek9aekRPWm1UT1paak9aTXpPWkFETm0vek5tekRObW1UTm1aak5tTXpObUFETXovek16ekRNem1UTXpaak16TXpNekFETUEvek1BekRNQW1UTUFaak1BTXpNQUFBRC8vd0QvekFEL21RRC9aZ0QvTXdEL0FBRE0vd0RNekFETW1RRE1aZ0RNTXdETUFBQ1ovd0NaekFDWm1RQ1paZ0NaTXdDWkFBQm0vd0JtekFCbW1RQm1aZ0JtTXdCbUFBQXovd0F6ekFBem1RQXpaZ0F6TXdBekFBQUEvd0FBekFBQW1RQUFaZ0FBTXdBQUFNREF3SUNBZ1AvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFOb0FMQUFBQUFBUUFCQUFBQWh1QUxWbEcwaXdvTGFEQ0xNQldNaHdJYlpzQ0E4cUpOZ1FHd0NJQ1FGSXU5andtc2RyR1RjcWxFWnlJemFRRWdHTUdLR3dJWUNUR1Q5cUxQa1NwVUNYTG1HbUxFbHpSTTJNT0ZmKzNObFQ1ZENiRFZjSzFYbVRwTkdGUHBtMnhPblFaalpzV0xOcVpmcXhxMWVVQVFFQU93PT0nLFxyXG4naW1nL2V4dC9qYXZhLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBR2RuekRRMFowQkFJTitnZU9HZGQrQ2ZlTitlZWVPZGV1S2VldUNlZk9TYmVlS2NlNjA4TXE0K05OaGRWZGRjVkVCQVFDQWdJQUVCQWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBT3NBTEFBQUFBQVFBQkFBQUFpQUFOY0pIQ2lRSE1HREI4TVo5SVl3b1VGejN4b081R1p3WERtSkE4bUoyMGF1RzBhQjM4aUJPeGV4SVRac1ZOWjlNMGN1SWhWczY3SmxFNWdOcFlxYktxaThsQm1UcHN5ZlA5WE5QSmlOaWdxQk9YZlNIQWkwNmN5YUJJc2V6WWx0WnRXQk1OZFYvWmsxcTFhWlhyR0N4YnJWNmNtRDE5QnBTM2V0N2JXREFRRUFPdz09JyxcclxuJ2ltZy9leHQvamR4LmdpZic6J1IwbEdPRGxoRUFBUUFKRUNBQUFBLzRDQWdQLy8vd0FBQUNINUJBRUFBQUlBTEFBQUFBQVFBQkFBQUFJelZJNlpKZzBOb3dud3lYanF4ZFFKZTJVZUtJbmZxVFhtQTREZytybVcyTWJWM05WMWpMZitEelJ0T01QUVJJSHNGQzhGQURzPScsXHJcbidpbWcvZXh0L2pwZy5naWYnOidSMGxHT0RsaEVBQVFBUGVrQUllcDNGZGdjZi8vLzYrenUvbjgvMWhoY3Y3Ky84elYvMk5zZTRxUW5FU205OGJKenZUNi82Vzk3dXBaS3RIby9hdkI4Sy9EOEpmSDlxVE45clMzdjVQRTlzSGcvLzkxTi9iMjlyYmEvOU9mZEtuUTlucVB3ditIVm55bjJtNTNoNkRMOXJIWS8reUROWXVPdUxxSWVyck04N2Q5VSs1ZExJU2oxb3FCdHJJMUUzU281dUNSWHBHdHpvOTlwZWFaVk9UQWZuYUl1N3pBeCtUcThteHB1S0JpTEtYUi9kbmM0S3F6OVpxbzF2ZHROWDJWeUppbTA5dmk2dnI2K3YvZG1heVhyR05ETHBPV3daaVN3cldYazZxUW01YWN4disxV3FyVS8rcUhQOGc3SExIRjhlMzIvKzd3OHRIby80T3AxRmhCUkplZXljS2NsV1J0Zk5tVFlQT01ONlhTLytYbjZyWEk4dHVRVjVXWnhQajQrRzgwS09UcDduZTA2bDFsZHJmSjh2K3NWYmVEY04vbTdJR2N6M1dsM25PQ3RiYzZNcG1oekthR2xKT0NySnpKOXFpLzcwS1Q0TkhiNXZQejlOWGY2TmJyLy8rZmVQK1dTYnUveVAvQlllbnM4T0x4Ly8rUFJ2MnFWTmVoZjhHUWZmZStaZldMTjdHMXZZaXB6c1hpLzRPaTFmZmJmNzNOODI5OHJ2YlVlcGVrMG42SXM0aXIzdHRKSXN6bS83bGdNWk9hcHBwYk11WEdncnJKOUl1UnR0bTZocVdydHBDQnIrUEVndi9tZ05WQ0grM0tmSjJ0MmR6dS85RFMySWVkeDY3Uzl2cm5ocnZkLzN1RWxHSnppLzkzT2YvUGRwMk1xUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUtRQUxBQUFBQUFRQUJBQUFBanZBRWtCR0VnUUVRb0FNMGdwWEFoQWdFT0hCZ2dBOEFKSzBnMkdEd1ZFWktCQVFadFBkSzRvQk9BRElnRUdUQTRjd0hHSWthYVJXK1RvdUlBblRKMDdtZUk4K2lCakpJWU9pMExOT2ZKRFZKNFdnNzc0R2ZubURCY1ZTaXc1T0pGb1U0a0FBMFkyWWRHb2hvZ3FmUG9rK1FNR3E4SkFkdlNZQ0pMbFJTRkJWSjVnTVV1S1RCY3BKS0NJMGVEbzBoNFBTK2p1R0FQRUJZMDBsRHBWSWxJbUFsME9QWWFrbUtTbVNDUVlvMVpBb0JzRHpnTk9HeWFBV0NPaGdnMDJkTTI0Y2FJSWtBVlBHVUlnc2RLZ1FGWlNoRERsNEdFSVRSUWpXb1JBR2pHRmdzSUZDUkFVQ01DOGVRRUVDUmFRQ2dnQU93PT0nLFxyXG4naW1nL2V4dC9qcy5naWYnOidSMGxHT0RsaEVBQVFBS0lBQVAvLy93QUFBSUNBZ01EQXdQLy9BSUNBQUFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQU5RS0xyY0lTREdKc2VUUUJDd2JiVFFCQlFrR0FDZ3lLR1BsMllqR2N3bkcycXJWMTBUUVJZNkd3YlhxYjB5aWdDSkpZU1pPSzRMaFBEWUVIUXZ3V0FnQ0d4clRRQ05oZ0Z0eitqMGVNMmVKUUFBT3c9PScsXHJcbidpbWcvZXh0L2pzZHJhdy5naWYnOidSMGxHT0RsaEVBQVFBUGViQUFBcit1L3kvdFRjL2laTis0eWgvUUFoK3ZmNS8rcnUvK2pyLzRTYi9PN3kvZ0FvK2o1aSs2T3ovUUFmK2lkTCszNlcvUUFzK2dBcCtvdWcvZDNqL29lYy9BdzMrcE9tL2I3Sy92UDIvemxjK3lOSytvU2IvUVF5K2c4Nit0cmgvb2llL2FHeS9hQ3kvTXJVL3Bpci9aaXEvWmlxL0t1Ni9aeXQvU3RSKzE1Ni9GZHorMTE2L0lHWS9lcnUvcXE1L1lhYi9jblUvbnlUL1IxQytpNVYraUZKK3dBZytqQlcrd2syK2hRKytuaVEvRTl1L0lhYy9OVGIvcWEzL2I3Sy9ZYWIvTDNKL2JYRC9acXMvY1RQL3F5Ny9TNVIrNkN3L1NCSStnY3YrZ2d4KzRLWS9RRXQrbFp6L0E4NytpZE8rOXZoL282aS9RbzEraTVQKzFsMys1U24vVHBkK3dBbCtxR3ovWVdhL0wvSy9wMnYvU05MKy9UMi81ZXAvVEJVKzh2Vi84dlYvdVhwL3FtNC9RUXcralJaK3hkQitnSXcrdWp0L3QvbC80eWgvQ1JMK2kxUyswdHErMVJ6KzdMQS9aeXUvSW1mL1FVeStyM0svZmo1L3hsQis4elYvcmpGL1FvMCtoMUUreGxFK2loUCt5TkkrNENZL0RaYSs1YXAvUzVUK3l4Uit5RkgrK1hxLzZlNC9XdUYvREpXK3dFbytvT2EvRlYxKzJOKy9EbGQrMTk2L0RGVis0ZWMvYUt6L1FJditzL1kvbFIwL1BiNC93QXUrZ0l4K2k1Uys2VzEvUXcyK3R6ai9nQXErdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUpzQUxBQUFBQUFRQUJBQUFBanZBRGNKSEtobEJSVkNrd1lxRkdpSGtSdzlSZDVraWJSd0V3VWRPU29CdUlKSlJoZ1JKdWdNOUNMb0RLVUZBeVR0bU1FSEJaZ0xHQVF5c0FLQVRLRUdFeVk4VW5Tb1Rad2JBbmtRS0pBb0F3RUhEZ2gwY1ZNZ3doT0JpR0FvaVpIcEFBUUlCeWlNOEFCZ2dNQUVTOWpNRVlCR2dRSVhBbjc0a2VCMUU1QVdnVXA4NldIQWdJQkdROHBvV2lPd2dxTWtJWXc4Q0JEZ2dTVXNGZ0JzNk12QkJvTVhMQWlyR0tPaGdCTWtBZ0hsWVFKZ2tROEVDQnFra05KbkN3MkJSNlpBaWlBQlI0MDZlSm9FRWZKSHdFQXhWZlowQUxEQTBBa2lDZTVVM0pRbUNoY3pjRWhjR2pSOElCUVFhajVVREFnQU93PT0nLFxyXG4naW1nL2V4dC9tZGIuZ2lmJzonUjBsR09EbGhFQUFRQVBlS0FEWktaUC8vLzVDdTFqZExaZlhtN1V3RU5vWW5WKy8wL2VMcy9Id2hUcE9pdDVtMjROcm0rL0hhM3RtL3l1N2Q1T2p3L1VnQ05KV2t1WnRIYnVyVjNvZ3dXN3BzaSs3ajZNcmIrSXl2NUhvNFc5M3ArODdlK1lxdTVJK3g0OWZsK3QrbXRPSzh5YkJnZ3BhbXU3REExb0VvVThuYitmUDMvcVZVZUxMQzJPbncvSGdlVEhpajY0U3I1bnlrNmJaK21PenovYUc2M2VMcys1VzA0cWEyeS96NCthVzgzTlo4bXR1Y3Nsb05QZG1kcTZ1NjBkTGkrcDg0YWJCa2dkMm50OStqdEhBYlNLaTJ6ZHloc3BFOFpJR241MVVKT3NmYStGTUlPWkU3Wk11QW5GNFBQKy8xL2JIQjE0Q241OXJuKzJvV1JlZnYvSGc2Vm9pdDVkYmsrdGJrKzUyNDNxQjVqdTMwL2NONGxXSVNRWjY0MzZTNzNhNisxSHVsNkpXejR0bm0rOGRvaU5qbCtxMjkwdnUzeTNjZVRMQmhnZUhzL00yTG85RGcrY3FBbk1OM2xNU1lycXA4bHVidS9OTGgrdUhyKzkzbysyY1VRN3JGMUtaVWVJd3pYMjhhU09qdi9QVDMvcHlyd04vcSswNEZOK254L2R6bys5UGkrK253L1pHeDRuRWFTS3E1ejRXczVwbW92cVcweXN6ZCtOQ0dvZW5MMXVYdC9QLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFJb0FMQUFBQUFBUUFCQUFBQWp5QUJVSlROR0VSSmN4T3dRSm9WRklvS0pEYXJKWU1FTm5BcEVLSlU1Z3lUTkFvSklBSUFsUW9FQWdRQUk4QnlUTTZiZ0daSU1oUGpTd0lWQkdBQk1GQTNKYUNGRGpCNDRiSU9vNHNDUGdBQjhiWEFhSUNOQ0FqSTR3UFlJNGtGTlV4WmtZQUZBRVFBVEVnSlFDTHdnc0VRRERqUjRyQUNZOFFHT2d3SlVMSUkwSW1MdGhBWUFrSVF5MGdRc3l3SjY1QWhoOEFWRGhRZC9ERWU0Z0VFREZBNEFFQ1ZZRWdxSWxCNUlDRVJERUVmQ21Bd0NIaENEOGdSQWxFWncrSHdSd0dQUlo0QWdaaXdFRHhsQ2t0U0lKREo2QUVWUEZUeHBESm82NHNLMkF4NVlGTXdCbG1OTENpUmNXdGdGSW4wNTlla0FBT3c9PScsXHJcbidpbWcvZXh0L21odC5naWYnOidSMGxHT0RsaEVBQVFBTE1LQVAvLy93QUFBSUNBQU1EQXdJQ0FnUC8vQUFBQS93Q0FBQUFBZ0FEL0FQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUFvQUxBQUFBQUFRQUJBQUFBUmlVRWxGcXIxekVzQTdyeG5sZVJ1UmJTTVhyR2RuZFVNZ0NOSXNFTU9NY0xHUUM0VkJZUlk3QkFBeEJYQzFXaDRTeDZRdllEQUFwZ1lqVWlha1dvR3g0eFpNNWZnSzRxMFMzVmw2cExGMkhNWWQyc2lEZkE4ZENQTDVURXdTZ2dvc0dSRUFPdz09JyxcclxuJ2ltZy9leHQvbW9sZW5naW5lLmdpZic6J1IwbEdPRGxoRUFBUUFPWnhBUC8vL3h2YWtQUDkrUnJaanhiWmpSemFrQjdha2ZmKyt6M2dvQ0xia3hqWmppSGJrcmZ6M0JuWmptRGxzaTNkbVBiOSt1Lzg5M0xvdTJibXREVGVuRDdnb1NEYmtrRGhvdXI4OVIvYWtmTDkrUjNha2ZIOStJYnJ4R3JudHJMeTJWZmtyZXI3OUJuWmoxSGlxaHJhajhMMTRjYjI0OG4yNU56NTdtZm10VC9nb2tuaHBpWGNsSjN2ejBqaHBhL3kxMERnb2F2eDFoN2JrVm5rcnUzODlyWHoydUQ2NzczMTMwTGhvMHppcUhQb3U3WHkyMlBsczVMdHl0RDM2TjM2N2kvZG1qL2dvZnIrL1JmWmpVWGhwQzNjbVdIbHNqSGVtM2pvdkhucHZWamtyVGpmbmhmWmpuZnB2WGJvdkNmY2xiMzAzMEhnb3FieDFDRGJrZUg2OEJ6YWtSL2JrbFRqck4zNTdrZmhwV0xsc3lQYmxCcmFrREhkbWtEZ29xRHcwVGpmblJuYWpsdmtyNS92ME0vMzZCdlpqMTNrc0Y3bHNLVHcwaGphamsvaXFmSDgrTWYyNUdQbHNrN2lxQy9kbVViaHBmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUhFQUxBQUFBQUFRQUJBQUFBZmVnSEdDZ3pROVRUWkNnNHFDSEY4d0ZnUVVZMnVMY1FJdk9Td2JEUU1pQldwc0I0TmtaMDhiQkE5S00xMWxRd3M2VklJWEpESUJXanNuSnpWdEJnWk1ib0pnQ1FvVEFCOGtYQjhBRXdwV0NJSUlHVzhvQUFJU0VnSUFLRVVCS3RBRFpqOGhBQWNIQUNGWVlnUTRnaFVOUENVT0dnQUFHZzRsUmdSQjdRWVVVSEFnNklISWN1TklnR2R4TGl3UTRjRUVFZ2dRa3Bqd01DREJFa0ZlQ2t3cGtJSUJCZ3dNVW1SSUVNWmJuQmdyRWxSUjhHREVDQ0JwQW14eDRtTlFCRFJFTEJSUU1NREFnaXNNUkMySzBDSktnQVl1cEFpb3BJaERodzVMRndVQ0FEcz0nLFxyXG4naW1nL2V4dC9tb3YuZ2lmJzonUjBsR09EbGhFQUFRQU9abUFGZFhWMHRMUzNkM2R6bzZPbVZsWldob2FEZzRPRzV1YmhvYUdueDhmR2xwYVY3SGNLeXNyQ3k2UzMyNzJ6K3V5Mk5qWTF6TFQwWEVUMkM5Mkt6THJseGNYRGEvZjNEQy8ySmlZaTB0TFd4c2JIclhWMDFOVFhSMGRGQzR0bVc1LzJuRjNXSzYvMmUvLzJyUlFrNU9UcHFhbXZuZ2FJbUppVUpDUW16RS8yMjU3RFUxTmFhbXBvNk9qcXFxcW03RytDVWxKWG0rN1Z0Ylc2K3ZyNVhoV3BIZVVXQmdZSlBpVlpTVWxITnpjN0N3c0lDQWdBa0pDYVNrcEcxdGJVeE1UTS9OaERrNU9hRGplTEt5c25aMmR1dlloQlVWRlhGeGNUMDlQVjVlWHFUamZKM2ZiM2ZJLzNMRi8xOWZYNVBkWDgvWW1KZVhsMGhJU0ZaV1ZnVUZCWjdpY21abVpwWGdZM083N0hHODV1dmttWVdGaFVGQlFZT0RnNTdnZEZGUlVTOHZMNVBlVmxCUVVESXlNcVBnZUhwNmV2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBR1lBTEFBQUFBQVFBQkFBQUFld2dHYUNnNFNGZ3lkRU80WUhYMWFFT1dZS0FKT1VIR1lZaEJvZEJWa3hXQ3BBUlFFRlNJUmRaZ2tXSUJjaUZDWTJaaFdFQWx0bEVnMFRJUjhPU1FRQnMyWUNFUnNqQ3g0UE1tYS9nd0l1SFZWS1FsYzBOMVBLaEFwbUJaU1VZeHhCaEFjOUdpOU1UU2xRV2lSbVhJUUVaZ1Nxcks1U0J3YUVGVDVPdDdtN0tHWmdDRUV3QTJCWXNXTUR6Q1FjTkFDRGdTVmt2RHdKVXdNQkJCNkU3cTNnTmdtQkdTT0VTR1FRWXlnREZSaUNBZ0VBT3c9PScsXHJcbidpbWcvZXh0L21wMy5naWYnOidSMGxHT0RsaEVBQVFBUGNBQVAvLy8vLy96UC8vbWYvL1p2Ly9NLy8vQVAvTS8vL016UC9NbWYvTVp2L01NLy9NQVArWi8vK1p6UCtabWYrWlp2K1pNLytaQVA5bS8vOW16UDltbWY5bVp2OW1NLzltQVA4ei8vOHp6UDh6bWY4elp2OHpNLzh6QVA4QS8vOEF6UDhBbWY4QVp2OEFNLzhBQU16Ly84ei96TXovbWN6L1pzei9NOHovQU16TS84ek16TXpNbWN6TVpzek1NOHpNQU15Wi84eVp6TXlabWN5WlpzeVpNOHlaQU14bS84eG16TXhtbWN4bVpzeG1NOHhtQU13ei84d3p6TXd6bWN3elpzd3pNOHd6QU13QS84d0F6TXdBbWN3QVpzd0FNOHdBQUpuLy81bi96Sm4vbVpuL1pwbi9NNW4vQUpuTS81bk16Sm5NbVpuTVpwbk1NNW5NQUptWi81bVp6Sm1abVptWlpwbVpNNW1aQUpsbS81bG16SmxtbVpsbVpwbG1NNWxtQUprei81a3p6Smt6bVprelpwa3pNNWt6QUprQS81a0F6SmtBbVprQVpwa0FNNWtBQUdiLy8yYi96R2IvbVdiL1ptYi9NMmIvQUdiTS8yYk16R2JNbVdiTVptYk1NMmJNQUdhWi8yYVp6R2FabVdhWlptYVpNMmFaQUdabS8yWm16R1ptbVdabVptWm1NMlptQUdZei8yWXp6R1l6bVdZelptWXpNMll6QUdZQS8yWUF6R1lBbVdZQVptWUFNMllBQURQLy96UC96RFAvbVRQL1pqUC9NelAvQURQTS96UE16RFBNbVRQTVpqUE1NelBNQURPWi96T1p6RE9abVRPWlpqT1pNek9aQURObS96Tm16RE5tbVRObVpqTm1Nek5tQURNei96TXp6RE16bVRNelpqTXpNek16QURNQS96TUF6RE1BbVRNQVpqTUFNek1BQUFELy93RC96QUQvbVFEL1pnRC9Nd0QvQUFETS93RE16QURNbVFETVpnRE1Nd0RNQUFDWi93Q1p6QUNabVFDWlpnQ1pNd0NaQUFCbS93Qm16QUJtbVFCbVpnQm1Nd0JtQUFBei93QXp6QUF6bVFBelpnQXpNd0F6QUFBQS93QUF6QUFBbVFBQVpnQUFNd0FBQU0zTnpZK1BrY1hGeHBXWW9zWEowdkQwL1hOMWVYeCtndFRWMTdtN3Z1RGg0cW1xcS92Ky84ckx5N0d5c2o0OU8xVlVVdFdNQ3Z1dEcxSTVEZnkyT3V5YkVLTnRFUDZ1Sm01T0YvekFYV2RjU3RlUUtZUnlWNE9CZnYrMFZIWm1VbDFjVy9iMjl2SHg4ZXZyNjgvUHoxQlFVRVpHUnYvLy95SDVCQUVBQVA4QUxBQUFBQUFRQUJBQUFBakdBUDhKSEtqUG43YUJDQlB1dytmdEhMOS80ZkJoUy9oUDNMbHhBTVQ1OCtmbFM3YUUrZnBoN0dZRjNyeDM4TUloRklkdUhMbHhYdHl4ZTVmb0cwSjk1OHh4ay9lbG5RSjI2N3o1V3lGd29UbHo4TnE5aXhjdmdSZHYybGhOOU9jTkFMcDI2cHJhWTlkT0hnQnM1LzVwT3lldTNqb2FDU0M4U3dkdlhFZ3JBckV4dkplMm5UdDYydlQxZ3p2d203eDRhK0Z0QXhEU0hNSnk5K3lwY3hkSUhJQjkvVDRpUExkMm5iVndoUHNaVHJnT0hqNXcvTTVwMjB2eG43bHhBOHY1NDF1Nk5jV0FBRHM9JyxcclxuJ2ltZy9leHQvbXJ2LmdpZic6J1IwbEdPRGxoRUFBUUFNWjFBQUJJYkFoUmN3TlllUWhhZXhwYWV5SnRpaXh3akNseWppdDBrRE4xanpoMmtqSjRralI2bERWNmxEWjdsVHQ5bDBHQ20wYURuRXFFbkU2S29VNkxvVkdMb2xXTG9sR05wRmlScG0yY3IyK2RzSG1qczNtanRIbWt0SHFrczN5b3VYeXB1b0tzdklPdHZJT3R2WVN1dm9XdXZvYXh3b2F4dzRteHdJbXh3WXF4d1lxeXdZcXl3b3V6d1l1endveTB3cGEzeFp5K3k1L0F6Si9BemFiRzBhbkcwYXZIMHF2SDA2dkkwcXpJMDYzSzFMSEwxYkRNMXJITTFyYlAyTGZRMmJ6VDI3N1UzTDdVM2I3VjNiL1YzY0RWM2NQWDM4VFkzOFRZNE1YWTM4WFk0TWJZNGNYWjRNYlo0TWJaNGNqYjRjcmI0OHpkNU5EZjV0SGc1dExoNXRUajZOdm42K0RxN3VYdThlYnU4ZWZ2OHVudzgrcng4K3J4OU92eDgrdng5T3Z5OU83ejllLzA5dkQxOS9IMTkvajYrL3I3Ky9yNy9QcjgvUHY4L1B2OC9mejgvUHY5L2Z6OS9mMzkvZjM5L3Y3OS9mMysvZjcrL2Y3Ky92Lysvdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FIOEFMQUFBQUFBUUFCQUFBQWY0Z0g5L0hDUXVoaStJaGlRZGduOG5PRVJHVWxGR1RrNU1Ta1U0SjM4ZE5sTmZWaFVZVTJOY1lGeFpWRFliSkVGWUh4bDFGdzhhWTNCdVoxbENJaWxRQlhWdGMzVldFUWRqYTI1YlNpa3JSZ3M4Wm5OemJuVXhYVzV4WGtvb0xFY09QMm5EYzIwNTJHNWdTaXNzUmcwK2FYVnVjMmczMkhKZ1MrdE5ESFZuYzJwMUpwUUFZd1pkdmhkSnRDZ0FVZ2VHaFFSWENNeW80eVZmaXlaZDBsUXhBS0dHR2pvSUJBQjRnaVJGQ3lWYjNMaDVReWFPU2dvRFFJUmhrb0xFRUN4bFZMcUJBNGVOakRvQmRCQVI0WWxLbGxOZ2tvSVJvNFdHaEIwYi9wakFFVVFKa3lWWWx6VEoxTU5Fb3cwaFZLd1lTMWJGQ0ErQ0FnRUFPdz09JyxcclxuJ2ltZy9leHQvbXNnLmdpZic6J1IwbEdPRGxoRUFBUUFQZVRBUG44Ly9yOC8vbjcvZlg1L0dCOXF1M3orRkNNeU9yei92ZjYvTURiL0phMTQrZngvdm43LytEcStlUHMrZUh0L2VUdi90VG0vVTZKeFBQMisxR0x4OTdvOXp4enZOM3Eva1dBdzlqcC9aeS83VkNNeWZ6OS8xNkt0K1RzOVplMjQrenkrS25GNmsrRHhhZkY3RkdGeGNMYStLSy82Zmo2L1Z5SXV2ajcvVDV0dGRibi9mWDUvNkMvNmREaCtJcXU0dkgzKyt6MCtJV3E0a3FFeE9idStUMXd2dDdzL1ZHTXlMelE3UHY4Lzl2cS9kcnAvZG5rOFZ5TXlkYmsrYzNnK052ci90TGorYUMzM0ZlSngyV1F6TzMwL2xHSXdPeng5M3lkMDNDVzBMblA3TGZYL0V5SXhOam8vY2JmL04vcy92YjUvTExNOGNUYitON3IvdVh0K1Z1SXR0UGwvZlAzKzFDTnlON3ArZmY1L0tURDdMM1Y5Tzd6K05mby9XT1B6STJ3NDJHUHk1N0I4Rm1MeUVOOXdsQjl4WWVvM0V4eXI5M245MWFFdHBpMjQvRDErKzcxL3ZIMS9FMkl4T3J2K0l1cDE3UEw2bFNIeHZiNi85L3Iva2lDdzZ2RzdWQ0p4T1ByODRtcTNFWjJ3bWFPelBmNi8xNk55dHpxL1oyejFsdUd5YzdhNjNLWjBiM1Q5SmEwNHo5NXYxT0h3L3Y5Lzl6bytmTDIrN1BLNjl6ci90RGgrZkgzL3JESzY1Vzg4TEhOOGNuZTkvVDQrLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSk1BTEFBQUFBQVFBQkFBQUFqVEFDY0pIRWl3b01HREJQL0FFVVRrUzVnK1BjWU1rVU5DaENFVUJJU2NhQU9nSTRBQUlITWM0akRoVFFja2lRZ2hZclBEajQwSEVCYk1hU0NEeDQwa0FpQXB5TklJNW9JRGZCeThlQlREd0I0QlZxSW9hTURpUUJFR1ZNQ0lXVkxBQUNBQlhpTFl5ZU9BUVFBYVpqUWtTRkMxaklBTWpCU05VSU9td29jdElVbzRLWUJGVDRvZ1NseXM0TkxDeEtBSWtSeEpBYkdoeGdBY1BwN1FtUUprMFFVZFRYN0V3VVBoVEJjUGEyQmNrVFJnQUJRdENCQWNDVlNGZ0FvTGhjaGdxRE9EaVJzSkV1NFlTVU1Bb2UzYnVHOEhCQUE3JyxcclxuJ2ltZy9leHQvbXNpLmdpZic6J1IwbEdPRGxoRUFBUUFNUVFBSWFHaGdBQUFNREF3UC8vL3dELy85Zlgxek5tekdiLy8yWm16R2JNL3pPWnpBQ1p6UC8vQUFEL0FETm0vL2YzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQUFBVnlJQ1NPUUdHZUJSQ01KR0s4NzZDeUlvQWt4NUVvOGtvQ3R0eHUwU01OWkFpZFl1RW9Bb0VDMjlCaDZBR09BRUZVeTlYT2dBSHZjeXhZWGNQbGdEcndMRVBPVVFLQmNVUzd6d0NDWUQ3UXJtdGxXWHRxZml4WmJGd0JEWEkrZ0lnQ2ZRMkZKR2xYZlF3TmpTSnJEdzlyYWpRaEFEcz0nLFxyXG4naW1nL2V4dC9wZGIuZ2lmJzonUjBsR09EbGhFQUFRQU9lRUFJMHhMWTgwTXB3M0w0TThTSjA1TVVoYmRFbGNkV3BVZ3BSTlRZMVBVNjlKUUxCT1JLbFFTWGRkaExaVVMzUmlqcXhZVTdaV1RKNWlZN2hjVTBOMHlybGZWcUpuYUVsOTEwbCsyRXArMkxkcVpjQnFZc0J1WkZHRjRsS0c0bEtHNDhsMGFieDRjOGg0Y0Z5UDZjMTlkY2wvZDgxK2Q3T0ZoczZCZWJlS2ljNkZmV3VaN05HSGdOS1FpTm1VaTlpWGp0dVhqZEdhbHRxYms5T2ZtdHlkbGN5aW45dWZsOE9uck0rbW82YXl3OStsbmVDbW45Q3FxZUNubjZpMHhkQ3NxdEt1cStDcnBLNjZ5K2F2cU9Xd3FMYS95N2UveTdYQjB1bTJydW0ycjdyRzE5Mi92TlRDdyt1OXR1eTl0ZXkrdDluRHc3N0syOXZFdzhMTzMvREZ2dS9HdnNqUTNNclg4czdhODgvYjg5ZmM1dExkOU5QZTlOUGU5ZGJmOWV6YzJ0Ymc5ZTNkMjlqaTlkbmo5dHJqOXQzbDl0M205dDdtOXVEbjkrSG8rT0xvOStMcCtPUHIrT1RyK09YcitlYnMrT2J0K2VqdCt1bnUrdW52K2VyditlencrdTN5K3UzeSsrL3orL0wxL1BQMi9QWDMvUGI0L1BuNi9mdjYrZno4L3Z6OS92MysvLzcrLy83Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBUDhBTEFBQUFBQVFBQkFBQUFqVkFQOEpIRWl3WU1FcENCTkdVWEpFaThFcGhDSktIQ1NrZ0pHQmZyN2N3UEZEU2tSQmdIeFlLVkRrbjU4bE00TG9hQkVpUmFBL2ZYSVltUGt2VEl3a1ZKcnNRQUhoUVFjK2VuTEkvQWZFaHBNcVQzcXdxR0JoVHg0OGRYSVUrRmZEeFJBa1JHU1VtQkRnUXdZS2NLVCs0MkVDQm8wWEtqZ3NrSENIemhzMVlxRm9BRUZDeElZSUJBNTR3RURCak5oL0p4aEVjS0JBQUlJNGJOQ1VFZlAzSDVNRUFBWTBXREdpd3dVS1hSci95MkZuanBzMVo4aUE0WkpGY3c0NWJ0S1VHZU5sQzVZcnB0c0luVTE3NmtDcEJYTHIzaDBRQURzPScsXHJcbidpbWcvZXh0L3BkZi5naWYnOidSMGxHT0RsaEVBQVFBUGVOQUt5c3JJc0JBOEhCd1NVbEplSGg0ZVhsNWZ2Nys5cmEydURnNE52YjIrZm41OUxTMHV6czdOalkyTi9mMytycTZ0VFUxSzJ0cmRQVDA5emMzUEh4OGJHeHNkRFEwUFB6OCtibTV0M2QzZVRrNVBUMDlEOC9QK21xcW5WMWVOaTJ1ZjhCQmVxOHZzWEZ4WUdCaFI0ZUh0emIyLzgzT3I2K3Z2c3ZNK3FxcS84RkNlNEJCTURBd1A4NE84ek16UDh5TmVucDZkSFIwYTZ1cnVKZVlJeU1qdjU5Z09qYjIraWFuYjYreHVwOWZPN3U3bk56ZGVOYlc0cUtqZDlQVHZvQkJPMVRVN2EydHN2THkvOUpUZjlVVjM5L2dmLy8vNnVycS84TkV1ZEpTdS9pNWY4YkgvOFdHdHNhSHFxcXF0WFYxYzNOellpSWplVnhjY2JHeHVGd2NmTHk4cWlvckwyOXZmOGlKZjhvSzk3ZTN1bE1UYkt5dUxlM3QrbnQ4ZjlpWlBiMjl0TlNVL2YzOTkwOE83cTZ3Tk5sYWM3T3p2OTFkL1gxOWErdnIrdlQxc1BEeTlzQkJQOFRHTHk4dk5uWjJlTGk0dVdOajZzQ0Jlam82T2tCQmNqSXlPVHQ4UDhNRU8vYTNOY2FIZjhIQy85cmJidTd1Nysvdi9ELy8rdnI2K2FQa08vdzh2OCtRTnVFaHZVQkJPM3Q3Ynk4d25KeWRPZElTUDlDUllFRkIrUGk0OGZIeC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUkwQUxBQUFBQUFRQUJBQUFBanhBQnNKaEZBaEFnQ0RBQUNrSVNDd1lhTVRhM0FZSXNQRlNoUUhNaElJckxHSHlKQkVnbHE4UU5Ga2hBRUhUalNlTVlHRkNSSTlJQWpSa1hQSXdFa0FCYjVrV2RMbWpvb2ZLOWdFNk9GaFJ4RWFDL0lFV01wMHFTSU1Ra1R3cWVPbW9RQUlMaXhvQ1ZNQ1FZTUZqTjRFc1lyZ1NZWU5QaFl4S0pEQURJRUtWalVjWUdCanpJME5PZ3BBVUFEQXFnSUNhSEo0QVpRQ3pKd0RNUG9LRk1EZ2dab3RIVG9rUVFSa0VBWEZqUVJVdWNBakJKNUFmdXg4S1BNQXN3QWxNK0pjK0tPZ0FJSURVREtZcGlLRmdnWUNFeHJFc01CQ0F1WStSc1FVZW9BQlR1NEZVeVFjYVhpRnc0RG4wSitUNE5BbElBQTcnLFxyXG4naW1nL2V4dC9waWMuZ2lmJzonUjBsR09EbGhFQUFRQVBla0FJZXAzRmRnY2YvLy82K3p1L244LzFoaGN2NysvOHpWLzJOc2U0cVFuRVNtOThiSnp2VDYvNlc5N3VwWkt0SG8vYXZCOEsvRDhKZkg5cVROOXJTM3Y1UEU5c0hnLy85MU4vYjI5cmJhLzlPZmRLblE5bnFQd3YrSFZueW4ybTUzaDZETDlySFkvK3lETll1T3VMcUllcnJNODdkOVUrNWRMSVNqMW9xQnRySTFFM1NvNXVDUlhwR3R6bzk5cGVhWlZPVEFmbmFJdTd6QXgrVHE4bXhwdUtCaUxLWFIvZG5jNEtxejlacW8xdmR0TlgyVnlKaW0wOXZpNnZyNit2L2RtYXlYckdORExwT1d3WmlTd3JXWGs2cVFtNWFjeHYrMVdxclUvK3FIUDhnN0hMSEY4ZTMyLys3dzh0SG8vNE9wMUZoQlJKZWV5Y0tjbFdSdGZObVRZUE9NTjZYUy8rWG42clhJOHR1UVY1V1p4UGo0K0c4MEtPVHA3bmUwNmwxbGRyZko4ditzVmJlRGNOL203SUdjejNXbDNuT0N0YmM2TXBtaHpLYUdsSk9Dckp6SjlxaS83MEtUNE5IYjV2UHo5TlhmNk5ici8vK2ZlUCtXU2J1L3lQL0JZZW5zOE9MeC8vK1BSdjJxVk5laGY4R1FmZmUrWmZXTE43RzF2WWlwenNYaS80T2kxZmZiZjczTjgyOThydmJVZXBlazBuNklzNGlyM3R0Sklzem0vN2xnTVpPYXBwcGJNdVhHZ3JySjlJdVJ0dG02aHFXcnRwQ0JyK1BFZ3YvbWdOVkNIKzNLZkoydDJkenUvOURTMkllZHg2N1M5dnJuaHJ2ZC8zdUVsR0p6aS85M09mL1BkcDJNcVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFLUUFMQUFBQUFBUUFCQUFBQWp2QUVrQkdFZ1FFUW9BTTBncFhBaEFnRU9IQmdnQThBSkswZzJHRHdWRVpLQkFRWnRQZEs0b0JPQURJZ0VHVEE0Y3dIR0lrYWFSVytUb3VJQW5USjA3bWVJOCtpQmpKSVlPaTBMTk9mSkRWSjRXZzc3NEdmbm1EQmNWU2l3NU9KRm9VNGtBQTBZMllkR29ob2dxZlBvaytRTUdxOEpBZHZTWUNKTGxSU0ZCVko1Z01VdUtUQmNwSktDSTBlRG8waDRQUytqdUdBUEVCWTAwbERwVklsSW1BbDBPUFlha21LU21TQ1FZbzFaQW9Cc0R6Z05PR3lhQVdDT2hnZzAyZE0yNGNhSUlrQVZQR1VJZ3NkS2dRRlpTaEREbDRHRUlUUlFqV29SQUdqR0Znc0lGQ1JBVUNNQzhlUUVFQ1JhUUNnZ0FPdz09JyxcclxuJ2ltZy9leHQvcHB0LmdpZic6J1IwbEdPRGxoRUFBUUFQZVlBRFpLWkpDdTF2N24yemRMWmJCZlJQLy8vKy8wL1pJMUxaRTZNNzFlUmR1RFlsWU1EOXJtKzhGMFcvYld4dUxzL1BDUlo1T2l0NjlIT1prOExOL3ErNVdrdWVqdy9abTI0TnpvKzZhMnk2VzB5dlQ0L2UvMS9iOWhTTkxpK3Z6ejdickYxTjNwKytudy9PSHMvTmxaSzN3Z0dQQ1dhSkUzTUs5UU81YW11M3VsNkxMQzJIaWo2NnBNT05tQllMSlRQYkhCMTQweEphRzYzWkd4NHVpUGF0bm0rOWpsK3RQaStxMjkwdkNsYXZDWGF1bncvZERnK2RMaCt2Q1pjZWp2L05mbCtxcTV6NHl2NVBDOWk5RjNXTm1BWC9WN1FzN2UrZUhyKy96MDc4Tm1TOHJiK1BERmtyeFBMNUEwSjh4eFZIWWFGUFQzL29XczVzTmxTOG5iK2ZDV2E1RTdOUFA0L3ZQMy90VjhYUC85KzRxdTVJK3g0OHpkK09YdC9QLzgrb1NyNW9ZckxhdTYwZEIzV01CaFNKVzA0cTYrMU9yeC9mREpsK2Z2L1BDU1c1bW92b01vSHVUdC9LaTJ6ZkMyZ1p5cndMZFlRZkNtZE1kclQ1MWRTUENkWFlDbjUvQ2NYb2dzSVpJMkx0YmsrdGJrKytMcysvQ2diL0NiWjN5azZjeHhVNVd6NHJBNUwvRE5vY2ZhK08zMC9aNjQzOVY5WFBDUlhNaHJUNkpFTTZXODNPNkNWS1M3M2FSSE5MaGFRdHJuKzRBa0hQLzc5OVBpKzRHbjU3REExb2l0NVoyNDN2Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSmdBTEFBQUFBQVFBQkFBQUFqNUFERUpYQUdqa2hrY1lvSzR5YUJCSUNZRkNseGtHZk5renBRT0NiQVVnak5Bb0lJQ0FnZ2dRRURIUVlFRVVReFVBTkd4aUFBSlNTUXRRQkRHUVp3TkhDSU0ySG1Jd0ljdldoYVE4RU1BUllDaml4b05JSExBQ0NNYVRYVElPZURvaWdFUkkyUUFBR1FGemFBaEVDRDBPVERoYUFBS2x3QWtJbkNIeVJzZlZSQVJpR0hnVEpzUUZ3QW9lVmtuaHdrMWdnU3dNY3NnRUFBeUlCdWN5Tk5BUUlFU1B4NWcwTU1GUUlKSEwxb29tdUFFVHlRb1pudHNBZUJ3allVZEZ0SjRRWUlCeUkwalVrZ0xUTUhud1ZtelI1ZFFrbzJwQWdOSU5XenNtY1NqQ3hWQ2YzaEg4R0RvUXBrWlFpeUJzYU9DQlc4QTJMTnJ6eDRRQURzPScsXHJcbidpbWcvZXh0L3BzLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBQVFFQkFNREF3SUNBZ0VCQWZmMzkrL3Y3K25wNmVQajQ5emMzTlhWMWRMUzBzckt5c1BEdzcyOXZiYTJ0cTJ0cmFTa3BKK2ZuNUdSa1l5TWpJR0JnWGw1ZVd4c2JGOWZYMWhZV0ZOVFUwdExTME5EUXpzN096YzNOeTB0TFNvcUtpSWlJaHNiR3hNVEV3ME5EUXNMQ3dZR0JnVUZCZi8vL3lINUJBRUFBUDhBTEFBQUFBQVFBQkFBQUFqM0FLOWwyNWJ0R2paK0JxOXAyM2J0bWo2RjZOaFpRWGR1blRwMzhBSzVzOGh1M3pXSzRNYUZBOGNPNHp4ODl1SzlFOWpOMjdkdjV5TEdpeWNQbno1NzhncUtXMEhPbkxwMzhlemx3emZVM2p5QjNNaVZPNmN1SlQ1czJmenB5MWRQMnpWelB1bGx1NmZQbjdhcCtmVGRNMGl1M1QxMDhLeTR3Nlp0Mzc2cDliWnBhK2VPVzdkN3JMWmg2NmZQN0Q1NURGMlM2MmFGbjl1LzZPVE5XeWZRbTdoejRyNnB5OGNxWHJ0MjlOeVphd2lnMjdlbDVzNnhZd2R2bmpweDRhN3RBd2RPbk5MUmdlREJhemV5bkZWdjNBQTRIcGZPU2pweDREeXZhT2lOM09CeTQzYVNHMmVPWExoeTJ4aGFGVmhRWWNOKzF4Z0dCQUE3JyxcclxuJ2ltZy9leHQvcHkuZ2lmJzonUjBsR09EbGhFQUFRQVBjQUFQLy8vLy8velAvL21mLy9adi8vTS8vL0FQL00vLy9NelAvTW1mL01adi9NTS8vTUFQK1ovLytaelArWm1mK1paditaTS8rWkFQOW0vLzltelA5bW1mOW1adjltTS85bUFQOHovLzh6elA4em1mOHpadjh6TS84ekFQOEEvLzhBelA4QW1mOEFadjhBTS84QUFNei8vOHovek16L21jei9ac3ovTTh6L0FNek0vOHpNek16TW1jek1ac3pNTTh6TUFNeVovOHlaek15Wm1jeVpac3laTTh5WkFNeG0vOHhtek14bW1jeG1ac3htTTh4bUFNd3ovOHd6ek13em1jd3pac3d6TTh3ekFNd0EvOHdBek13QW1jd0Fac3dBTTh3QUFKbi8vNW4vekpuL21abi9acG4vTTVuL0FKbk0vNW5NekpuTW1abk1acG5NTTVuTUFKbVovNW1aekptWm1abVpacG1aTTVtWkFKbG0vNWxtekpsbW1abG1acGxtTTVsbUFKa3ovNWt6ekprem1aa3pacGt6TTVrekFKa0EvNWtBekprQW1aa0FacGtBTTVrQUFHYi8vMmIvekdiL21XYi9abWIvTTJiL0FHYk0vMmJNekdiTW1XYk1abWJNTTJiTUFHYVovMmFaekdhWm1XYVpabWFaTTJhWkFHWm0vMlptekdabW1XWm1abVptTTJabUFHWXovMll6ekdZem1XWXpabVl6TTJZekFHWUEvMllBekdZQW1XWUFabVlBTTJZQUFEUC8velAvekRQL21UUC9aalAvTXpQL0FEUE0velBNekRQTW1UUE1aalBNTXpQTUFET1ovek9aekRPWm1UT1paak9aTXpPWkFETm0vek5tekRObW1UTm1aak5tTXpObUFETXovek16ekRNem1UTXpaak16TXpNekFETUEvek1BekRNQW1UTUFaak1BTXpNQUFBRC8vd0QvekFEL21RRC9aZ0QvTXdEL0FBRE0vd0RNekFETW1RRE1aZ0RNTXdETUFBQ1ovd0NaekFDWm1RQ1paZ0NaTXdDWkFBQm0vd0JtekFCbW1RQm1aZ0JtTXdCbUFBQXovd0F6ekFBem1RQXpaZ0F6TXdBekFBQUEvd0FBekFBQW1RQUFaZ0FBTXdBQUFBQy9BQUIvQUFBL0FDRGZBQ0NmQUQrL0FFQy9BQ0JmQUVCL0FHQ2ZBSUNBQUg5L0FHQmdBRjlmQUVCQUFEOC9BQ0FnQUw4QUFIOEFBRDhBQVBmMzkzOS9mLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFPNEFMQUFBQUFBUUFCQUFBQWlvQU4wSlJJZk9IRHFCQ0JNS3ZEYnUzRGh5MXhRcXZOWnVuRFJ6RVNVaVpGanVJYnByR1JOZU15ZXVaRWx3NU1nZFRHZ3VaY2x3MjNKbEt4blMzYmR3T0xkaDA3WnRwamh6Q1hsdTI2Wk5temVqM241T1RMZnVHOUZyMjhLSlc0a3dYYmVlMTlCeGt3b3hvVHAxSUVmbTRsb3o0anAyNk1CdEt3a3hZdGlWMTdEbFlrdE9uRXE3NUlDNnUrWnRyVW1UNU1DQnkzaU5XMTl2NEF4N3d3aFNaTFp2MnNMV2RCY1FBRHM9JyxcclxuJ2ltZy9leHQvcHljLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBSDkvQUVCQUFEOC9BQ0FnQUdCZ0lJQ0FRRUJBSUdCZ1FJQ0FZRjgvQUw4QUFJQUFBSDhBQUdBQUFFQUFBRDhBQUNBQUFJQWdJR0FnSUlCQVFFQWdJSjlnWUdCQVFJQmdZSUNBZ0g5L2YyQmdZRUJBUUNBZ0lQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBUFVBTEFBQUFBQVFBQkFBQUFpckFPc0pSSWZPSERxQkNCTUt2SVpORzdaeTF4UXF2QllQbXpSekVTVWlaQmp1SWJwckdSTmVNemV1WkVsMTVjb2RUR2d1WmNsMDcrRE5LeG15SHJ0ME9OL0pvd2R1NWpoekNYbUNBMGVQWGplajYzNU9GSGZPRzlGcjROS05XNGxRWEx1ZTE3Wjlrd294SVRseUlLOWxnOGUxWnNSejliWnhlMWNTWXNTd0s2L0pnOWUyM0RpVmQ4c0JyWGV0R3ppVGdNdXBVNWZ4MnJkdTc5YXBjN2R1SFVhUUl1ZDVveGUyWnIyQUFEcz0nLFxyXG4naW1nL2V4dC9ybS5naWYnOidSMGxHT0RsaEVBQVFBUGV2QU1QRHc4ckt5bzJOamNiR3hzZkh4NStmbjJscGFHbHBhYjI5dlllSGg1T1RrLzcrL21kblo2YW1wcVNrcEh4OGZKcWFtZ1E3Y2dOQ2V3STZjY1REd2VmaTNaNmVudDNqNkcxdGJRUWdYVTExbCtEZTJjblQyQUVqV1lhTWxjbkh4M09HbWdOQWU4akd4b0NCZ29LQ2dZQ0FnSStKZ2pWb2xMVzF0UU12V1I4ZUhxR2hvT2piMGFPam93UXRXcWUzeHJPenRCNC9aeTFYZkFRMmFaS1NrdWJoM003UHppTlRmNnlzckN0YWdZV0VnMzkvZitybjQ5N1oxb3VUbkRFeE1QLzI3dUhkMmhoTGVPam81cnk3dW1OY1ZzSEN3c0hCd2VucDZRaENlTjNkM1BEdjd2SHM1b3VYb29HWXJlN280ejV1bG5WMWRXS0JuQUUxYjBSMG9aeXR1NStkbTI5OWphQ3d3Ykd4c1hGeGNXeHNiTVRDd1hCd2NIUjBkSW1GZ3Ftam5yZTN0MytWcTcvQ3hXaG9hTTNNeXBlWGwvNysvVXAxbVk2T2pZdUtpdHZhMThqSHg1Q05qYW1sb1Q5amcycHFhbmQzZHpCWGZIWjJkY2ZIeUFSQWRyNi92Z1F5ZEFJNWVsK0Zwc3ZId3pKUWEvNysrZFBTMGNIQ3djYkd4VEZta3B1Ym0xaC9veWxJYmRMUTBOTFIwYW1xcXVYbDVGNThsTVRFeERweW9VOWRhZ1FnV0lhRmhBUWtXOHJKeVora3FHaU9yOFhGeHRqUXlTQk9kdWJnMnFPY2wrTGYzUEx5OHNMQ3d1dm81aDBjSEhCL2piNjVzckN3c1k2T2p0clkxUVZCZUFFNWRlM3Q3WTJFZm1GOGs1YVZsS3FxcWlWS2JXMktwVEpHVy9EdzdsUmNaSVNkczRpSWlmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUs4QUxBQUFBQUFRQUJBQUFBanpBRjhGd05GZ2hSVlRhVnlOZURCSHlhdUhyNktZc2RDZ1NhazNNaWdKQWNRSjRxc0hoeTRvd25QRHlRc3NZbktJUW9YcElRbFFWTzVJNFhNR2pDVlNrNnBJdVBKUXg1Z1FTVFF0b0tEaWg0RWdRRFFNZXRqSVNLZ0lReGEwMllSaVNRVW1VR0k4VEtBblZRWTBxMHdVdWZTRVI2UXBQcllTcVlHSVVSMUJyVFp3T05IQkEwUTFudFpVZ3JUSHhZdzhFMWpCOENqZ2xBMUNQVmlBY0pSaWtRRWtIajg1Q1BDb1RCODVxcjUwMnVMeGxZSUNCQVpJSW1ESURaZENjRG9yQ1BRSGdHc1JiREo5SU5PWlJvRUFkQkw1c1lNQXdRQUduYk5nT0hEQVN3a0JFQnlFQWQ3NTRhZ2pMUVRzaU5ORmk4ZUFBRHM9JyxcclxuJ2ltZy9leHQvc2NyaXB0LmdpZic6J1IwbEdPRGxoRUFBUUFNWmRBRWhiZEVsY2RVcWZDVXVnQ25hR20weWhERTJpRFUyakNrMmpEazJqRDM2TW9WZXNKWWVXcVpHZnNaZWpzNXlvdVp5cHVwMnF1cWF4d2FheXc2aTB4YTY1eWE2Nnk1dk9qTGZBemJYQjByckcxNzdLMjhETTNjWE4yOExPMzhIVnZjalEzTGpjcnNyWDhzN2E4OC9iODlqYzQ5TGQ5TlBlOWRiZjlkZmc5dGZrMWRqaTlkN2k2ZG5qOXR2azl0dm4yZDNsOXQzbTl0L245K0hvOStIbytPTG85K0xxK09UcitPWHIrT2pyOE9YcitlYnMrT2J1NXVmcytlYnQrZWZ2NWVudSt1bnc2T253N09ueDZPcnYrdXZ2K3V6ditlencrdTN5K3UzeSsrN3krL0R5OXUveisrLzE3L0gxL1BQMS9QUDIvUGIzK2ZiNCtmZjUvZmo2L2ZyNy9mdjgvdno5L1AzOS92MysvZjMrL3Y3Ky92Ny8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy95SCtFVU55WldGMFpXUWdkMmwwYUNCSFNVMVFBQ0g1QkFFS0FIOEFMQUFBQUFBUUFCQUFBQWUyZ0grQ2c0U0ZoUjZJaVJzYUdSMkdIbDJSa2x3V0FCR0ZISkpkQmo5YUZDQUFFSDlaVzF0TGtRay9BZ2xZRXdHdm8wRUxCME5EQWdVSEtsVlFFNjUvV3dkQlVoY0lBMDBDQTFSTVJ4TUF2d2RkVVpFREF3SThUMFUremI4TFFWRWh4UjhEUWtZN05kdFpRUWUwVndVdlUwazRNekhibzFzNVZpd2xHQTRNQ2dRcjZnbWE0RVFKa1I0MlpMaEljVUxnbndsSUtraDQwTUFmQVJJT0p3RFJRUU5HQ3hRbVJvakllS09YeVpQT0JqVUR3TEtseTBBQU93PT0nLFxyXG4naW1nL2V4dC9zZGYuZ2lmJzonUjBsR09EbGhFQUFRQU1aUUFDWW1KeVluSmk0dUxpNHVMeTh1TGk0dkxqQXZMelkyTmpjMk52OEFBRGMzTno4K1BseGNYR1ZsWlc1dWJtOXZiMlZsLzNaMmIzWjJkbjl6ZjNkM2I0QnpnSGQzZDIxdC8zaDRlRzV1LzI5di8zOTVmNEI1Z0c5L2YzWitmbStBZ0crQmdYOS9iMzUrZm45L2RuOS9kNENBYjM5L2Y0R0JiM1oyLzNkMy8zZUppWWVIaDRpSWY0aUlpSUNBLzMrUGozK1FrSCtSa1llUGo1Q1FrQjdHSGliSUp2OS9meS9MTDdhMnRtYllabTdhYnJlMy8yL2JiM2ZkZDhEQXdNSEJ3YjYrLzcrLy80RGZnTWJHeHNmSHg4akl5TW5KeWNmSC84akkvOURRME5EUS83ZnR0OGZ4eDhmOHgvMzkvZjcrL3YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUg4QUxBQUFBQUFRQUJBQUFBZkxnQXN3TDRRdk1naURoVEFJTFRFSmo0ODJJSkNRS2kwSUh4MmFIUjRHbVpzZkJDMHJVRU5RUkZCUUl4ZEtLRkJIS0N3dEpqNUZEajlPVUJRYVJ5NFFTQ2trc3cxUURxbTZHa0NwUU1HelVBMUdES203U0JrN1FjMG1xVTlRM0FBbkVTRVVGQ1VEczA4NFVPbFFHMDNIN2lhenRRNUZ4Qk04VUV0UU9sQVd3OFZRSGtDWjBJTkpRU0U1L0dtRDFzQUhsQW8xYmtpOFFZTkRDd1VQTURqUWFDRkFoUWtnSjFRbzBHSUdFUWtTa3FRMG9YS2xoQll0RHNScklZTG1pcG8yV3dpQXliT25UNWdtQWdFQU93PT0nLFxyXG4naW1nL2V4dC9za2MuZ2lmJzonUjBsR09EbGhFQUFRQU9lNEFEVStUU3RHYml4R2JqRktjak5OY3o5VmNUNVdlMEpaZkVaY2ZrbGVma3BlZmtwZWYwcGZmMHRmZms1amcwNWpoRTlqZ2xCbGhGQmxoVkZsaFZGbWhWSm5obE5uaGxOb2hsTm9oMVJvaDFWb2hsUnBoMVpwaGxocWhXQnlqMkYwam1OMWoySjFrbVoxaVdSMmtXWjRrbVo0azJsNWptaDVsSFI4Y0dsOG1HeDhsVzE5ajI1K2tHK0FtWENDbkhPQ21uR0RuWFNFblhhRm5uZUduWGlIbkg2S2w0K0tkNCthcTVlZG5acWpyNktqcEtLanBhT2twcHVsdE1LaGJhU2xwNlNscUtTbXFjV2picHlvdjZpcXJLbXFyS21ycnFxcnJhYXV1YXV1c3F5dXNheXVzcXl2c3EydnNxMnZzNjJ3czY2d3NiNndoYSt3czY2eHRLK3h0Syt4dGJDeHRLMnp2TEt6dGJPMHRiNjRkYlMxdHJhM3ViYTR1cmE0dTdXN3creTNUTGk4dzd1OXdMbSt4THEreGJ5K3dMeSt3YjIvd2JyQXhyM0J4OERDeEwvRXkvZkZKc0RGeXNQRnljSEd6TVhHeVBmSEsvZkhMTVhIeVBqSk0vakpOY2JLenNuTHpjbkx6c3ZOei9UTllNdk8wTXpPejh2TzBzek8wTXpPMHMzUDBNM1AwYzdRMGM3UTBzN1IwOC9SMHMvUjA5RFIwODNTMnREUzA4N1MyZEhTMDlMVDA5SFYyOVRWMWVuWGhOVFcxdFhXMlBiV2U5WFgxOVhYMk5YWDJkYlgxOWJYMk5iWDJkYlkyTmJZMmRmWjJmRFltdGpaMnQ3YXdkamEydHJiMjl6YzIvWGNtZDNlMzkzZjROemY1Zi9tUWYvb1F2L3BQL3pub09mbzZlbnA2dXJxNnV6czdPM3Q3ZTd1Ny9EdzhmTHk4dnp6MFBQejgvUHo5UFR6OC9mMjlmZjI5di8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBUDhBTEFBQUFBQVFBQkFBQUFqK0FBM0FnRkhnbEp3NllIeUVjT0VDQkFjTkFtVFl1c1hDMUVFd1FoclZhc1VueTVZR01XYk5XbUVSb1JCRnNFaVZXVUlsUWNpUkpURXFlbFZKeWhNc0NsNlNqR05TMFNvM1NwaE15VG1MbGdsVWJPaGdSRFNxU3hNblZvakdHcUlsbFI1Sk5rb05xdUlrQ1JZR0xWaXBjaVZDRnFkSEtVYWRNY0lXeWdJU2t5SnR5dUZKRklvM1huVHcrRkZFekFRU2x6QlJXb01qU2cwNFFIWVFVWE5ua1lVU21UQnA2Z1FCd0pVZ1I4ejRDWlFuMFFYSWdqKzE2Y0JsVGlKRGpBUUI4Z3dZazUwZUdUek0rTExuMEFzVlpBcFZBTnhueEJkQ2tOcmMrQkFtelJnOHVrK0Era01qMUtUbmFKQllLcFNva0tNTkF6QThJQkRCZ1hjRUJ5Z0dTQmhQSVVCQUFEcz0nLFxyXG4naW1nL2V4dC9zcWwuZ2lmJzonUjBsR09EbGhFQUFRQU1aMEFFaGJkRkZrZlZocWduQ0FtS1dFUDZhRlA2YUZRS2FGUWFPR1NKeUhZNmVIUTMyTG9aeUlaSjJJWklDUHBJU1Jwb1NUcDRtWXE0cVlxNHFZckpDZHNKR2ZzcEtmc3BPZ3M1ZWt0cHVudVp1b3VaeW91WjJvdXRXbkpKK3B1cjZvYXIrb2FzQ3BhTUdxYWNHcWJhS3R2OEtzYnFPdXdNT3RjYU92d0tTdndPS3VKYWV5d01DeGgrT3hKZU95SmR1ek9LbTB4YXExeGF1MXhLdTF4dWUxSnF5M3hLKzZ5ckM3eWJDN3k3Szd5ZWk4TGJXL3o3YS96ZW5BTnVyQU5iZkF6YmpCME96Q05iekQwcnZFMGV6RVJOWEluYi9MNU8vUlpmRFNhdkhVYXZMVmF2TFZhK3ZWZ3N2VjYvSGJnL0hkaVBMZGlQTGRpZGJjNXZUZmlkYmc5ZHJqOXZubGtQSGxxdmJucGVEbjkvYnJyL2Jzc2Zic3N1WHIrUGZ1cyt2dTgrbnYrZW52K3Vydit2bnh2ZnIwd083eSsrN3orKy96Ky92MXhQTDIvUFAyL1BiNC9QZjUvZi85MS8vOTJQcjcvZnI3L3YvKzNQMysvdjMrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUg4QUxBQUFBQUFRQUJBQUFBZTlnSCtDZzRTRmdrQkNQemsxS3h3UWhvSkRkSk9VRUkrR1BKU1RjeEJmbDRRM21uSnZFQUdtaFRKME96WXdKRkpxWmtZQmhTbVRvMnhxWlVXN3U0TWVkRGd4SmhrVlJXaHRjVzVrTElJWW8ydHBabUVuVm1OWVNFUUtnaFJ3TXlnYUZoRWdTVnBPT2lvR2doSnJhbWRnWFZrbFMxeFJQUzBIZ2c5cEtCc1hFdzRmNWtIeDBhS0FvQVZteE1DclFtV0VraTFQZkxnZ0lHaEFFeU1ZTVlaUTRtVktFQm9VL3dnQVFMS2tpQ05YbUx6b2dBRFNJQkVNR0NSb0lDZ1FBRHM9JyxcclxuJ2ltZy9leHQvc3dmLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBTzd2OGNqTTA2S2xxdUhqNW10OWxYdU1vOTdoNVZCYmFGcGxjNGFWcDVLaHM0ZVBtU3c2U1Q1TlhrMWVjWEtGbW8yY3JYdUNpcks3eGN2UzJqMUxXVnh3aFRwR1VtWjNpSnlxdUdWdWQ1Q2JwcVN3dk9ibzZrTlZabmlIbGNQSnpwaWdwclM0dTliYTNkdmY0cVdzc2J6Q3h2UDI5Ly8vL3lINUJBRUFBUDhBTEFBQUFBQVFBQkFBQUFqcEFQOEpGSWpObXo1djlQd05YUGlQWGo1ODJ0VGwwNVpQSDhOLyt0Slp5WVp3bXo1KzZmb3QzQmN2WGJaMUtMUGRXOGN2a0VpQjZiN05VNmV1bjBSNjJOVFpBK2Z0M3dwMzc5Q0pnd2NQSDg1czhzTFZ3L2R2bkx0MjU4TEJHemZQMzdoMDZMcVppNGN0M3ROejR1YU44K1p2SHRaejdiN3RDMVN1WFRkNDRiVDUwM2R2WE5hMCt1SzFQV2N2bmNkMDh1U0o2NVoybjFOdzc4YnA4NGNQbnpxNDNMWml5K2F1N1RwLzhPek5nM3Z1WFRtbVRjbVpHMmZ2WGJodzNUclhBN2ROSUwxNDVNcUI0MGI3WGJ0NjlWNjZUbGU1bmpsejlkakZ1M2Z4WDc5MDRMNTlpOGVQWVVBQU93PT0nLFxyXG4naW1nL2V4dC90aWJjby5naWYnOidSMGxHT0RsaEVBQVFBTVo0QUFBa09nQW5RQUJCYWdCQ2E2NGZKYThqS2JBbUxMQW1MYkVuTGJFb0xyRW9MN0lwTDdJcU1MSXNNZ0Jaa0FCWmtiTXVOQUJha2dCYWs3UXdOclF4TmdCZW93QmZwQUJncEFCaG53QmhwUUJpbndCaW9BQmlwZ0JqcGdCa293Qmtwd0JscEFCbHBRQmxwd0JtcFFCbXBnQm1wd0JtcVFCbnB3Qm5xQUJucWJnN1FRQm9xcmc4UWJvL1JBQnNyd0Jzc0xwQVJycENSN3RDUnd0dXJBeHZyUkp5cnhSenJ4VjFzQmQxc0NOOXRjSllYY05ZWENaK3RTZC90c05hWHltQXQ4UmJZQ3FCdHl1QnR5MkR1QytFdVRpSnZFNld3ODk1ZkZHWXhNOTZmdEIrZ3RHQWduU3MwSFd0MEh1eDB1S3RzSlRBMnVLdXIrT3dzdU94czV6RTNlT3p0WjNGM3FUSjRPbkN4T3JGeHVySHlidlc2ZkRWMXRubzh0cnA4dHpxOCtMdTlmanE2dmpyN09ieDkvanQ3dmp1N3ZqdTcrbnk5K3owK08zMCtQcjA5UHYwOVBEMyt2ejQrUGY2L1BqNy9mbjcvUG44L3Z2OC9mNzgvUHI5L3Y3OS9mLysvdjMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBSDhBTEFBQUFBQVFBQkFBQUFmVmdIK0NnaWNrSnlBZWc0cUNLQ2dmRnhVV0hTZ2xpMzhuSlRWTVhuRmpWamtvSjRxVVJXaDRlR0tuY0UwWkpJTW9ObWwxVVJNRUJVdHJlRWdwRDMrT1RuaFBEQWN0Q2doQWJWODBHMzhrRm1CNEZBaFZlR1F4RFZ4dlBTQ1hGWGhoQkRDbmVFa0dVbmhFS00wVmJIWUZDMlo0Y3pvS1dYZENyaDRjVjNoS0NESkhka0JnWWVZTURnMk1nc2hSNDZPQmdRUXFzT0NoSWtLQ29CSW9tdUJwdzJXS2xqSjR0cUJ3RVdCUWlReEd1cmpCUStjTUZCUXJCaXdhWVdJR2p5RS9ib2g0SWNEU0h3Y2FRSlFJZ1NFQ0FKOUlGd1VDQURzPScsXHJcbidpbWcvZXh0L3R4dC5naWYnOidSMGxHT0RsaEVBQVFBSkVDQUpLbSsvLy8vLy8vL3dBQUFDSDVCQUVBQUFJQUxBQUFBQUFRQUJBQUFBSXZsSTk1d04wcVFKaDBBaVZydlVnNlJuRkdwb1ZkOERYb1dab0xtbnBzdTc2eC9OTDFDS2Q3cFB2ZEhKRGlvUUFBT3c9PScsXHJcbidpbWcvZXh0L3Vua25vd24uZ2lmJzonUjBsR09EbGhFQUFRQU1RZUFQejgvTW5KeWZ2NysvbjUrZmo0K1ByNit2YjI5dlgxOWZmMzk4ek16Ti9mMy9MeThzdkx5L1B6OC9UMDlPcnE2dkh4OGVMaTR1L3Y3K2JtNXNMQ3d1Zm41K25wNmV6czdNUER3L0R3OE1YRnhldnI2K1BqNCszdDdmLy8vd0FBQUNINUJBRUFBQjRBTEFBQUFBQVFBQkFBQUFWM29NY2xRV21XaXFlcUNTRUFjRXhRNlJvSXpxRkRrZ1ZVbUpvbkFFQU1FSWhHNWdFd09EUTE0bUNLTUN3Mk1VQkFSWHdCQklRRDVQS1lhTG5aYjNnaDZaeUhhYldoc1hnVDQ0V0J3V0NQZjZjRWZURUNoQVVGQklGYmNJTUNobzZDaklTRWtINHdpZ3dEbFRBRENTb1JEQ2VoQVFrUkhpRUFPdz09JyxcclxuJ2ltZy9leHQvdmJzLmdpZic6J1IwbEdPRGxoRUFBUUFQY0FBUC8vLy8vL3pQLy9tZi8vWnYvL00vLy9BUC9NLy8vTXpQL01tZi9NWnYvTU0vL01BUCtaLy8rWnpQK1ptZitaWnYrWk0vK1pBUDltLy85bXpQOW1tZjltWnY5bU0vOW1BUDh6Ly84enpQOHptZjh6WnY4ek0vOHpBUDhBLy84QXpQOEFtZjhBWnY4QU0vOEFBTXovLzh6L3pNei9tY3ovWnN6L004ei9BTXpNLzh6TXpNek1tY3pNWnN6TU04ek1BTXlaLzh5WnpNeVptY3laWnN5Wk04eVpBTXhtLzh4bXpNeG1tY3htWnN4bU04eG1BTXd6Lzh3enpNd3ptY3d6WnN3ek04d3pBTXdBLzh3QXpNd0FtY3dBWnN3QU04d0FBSm4vLzVuL3pKbi9tWm4vWnBuL001bi9BSm5NLzVuTXpKbk1tWm5NWnBuTU01bk1BSm1aLzVtWnpKbVptWm1aWnBtWk01bVpBSmxtLzVsbXpKbG1tWmxtWnBsbU01bG1BSmt6LzVrenpKa3ptWmt6WnBrek01a3pBSmtBLzVrQXpKa0FtWmtBWnBrQU01a0FBR2IvLzJiL3pHYi9tV2IvWm1iL00yYi9BR2JNLzJiTXpHYk1tV2JNWm1iTU0yYk1BR2FaLzJhWnpHYVptV2FaWm1hWk0yYVpBR1ptLzJabXpHWm1tV1ptWm1abU0yWm1BR1l6LzJZenpHWXptV1l6Wm1Zek0yWXpBR1lBLzJZQXpHWUFtV1lBWm1ZQU0yWUFBRFAvL3pQL3pEUC9tVFAvWmpQL016UC9BRFBNL3pQTXpEUE1tVFBNWmpQTU16UE1BRE9aL3pPWnpET1ptVE9aWmpPWk16T1pBRE5tL3pObXpETm1tVE5tWmpObU16Tm1BRE16L3pNenpETXptVE16WmpNek16TXpBRE1BL3pNQXpETUFtVE1BWmpNQU16TUFBQUQvL3dEL3pBRC9tUUQvWmdEL013RC9BQURNL3dETXpBRE1tUURNWmdETU13RE1BQUNaL3dDWnpBQ1ptUUNaWmdDWk13Q1pBQUJtL3dCbXpBQm1tUUJtWmdCbU13Qm1BQUF6L3dBenpBQXptUUF6WmdBek13QXpBQUFBL3dBQXpBQUFtUUFBWmdBQU13QUFBQUNBZ1BmMzk4REF3SUNBZ1AvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBTndBTEFBQUFBQVFBQkFBQUFoMEFMY0pIRWl3NExWdDJSSW1MS2hRMjBHRjJiYlJ5amJSWVVLSENCZG13OFlSNDdWc0dEVlNCSG5RWXNpSUd6bGVXL21SWkVhSkl5MDJmTGlRRmtkc01sMUNoRm14NWNtSUFxOXhKS2tUcFVlS0poOGlwSFZ3SWkyWko3ZHAwN2J0MnRTV1JiT3haQWtSNDlTdllNTnVIVXQyWlVBQU93PT0nLFxyXG4naW1nL2V4dC92c2QuZ2lmJzonUjBsR09EbGhFQUFRQU1ac0FDNVBxalpWclVoYmRFbGNkVDljc0ZGZmNrdGRzMGRqdEY5bWNWQnF1RWxzdlU5eHZsbHl1MXQwejJGNHYyaDl3V1IvMzIyQ3hJU0lqNGFKajRtTWo0dU5rSWlhMnBTcnk1Mm8rNUcwN2FheXc1UzE3Sk8yNjZpMHhhbTF4cWF4L0plNDZwbTQ2cXkzeWFlMTlwMjc2WjI4NmE2Nnk2Qzk2YUc5NktPKzZLMjYvSzI4OTZiQTU2ZkE1cXJCNXF2QzVyZkEzN2JDMDdmRDFLN0U1Ym5EMXJuQzRMSEY0N1BDL0xMRzVMdkcxN1RINDd2SDJiZkk0N2ZKNHIzSjJyN0syOERNM2NITjNzTE8zOGpRM05iZC9kVGkrZFhqK2RiaitkamsrZG5sK2R2bit0M24rdDNvK3VQbjg5M28rK0RxK3VEcSsrSHIrdUhyKytMcisrUHIrK1BzK3VQcysrVHQrK1h1KyszdThPZnYrK2p2Kys3djhlancvT253Kytudy9PdngvTzd4K08zei9PN3ovZTcwL2UvMC9mSDIvZkwyL2ZQMy9mYjUvdmY1L3ZuNi9mLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIK0VVTnlaV0YwWldRZ2QybDBhQ0JIU1UxUUFDSDVCQUVLQUg4QUxBQUFBQUFRQUJBQUFBZk9nSCtDUWtGQVB6NDdPVFF5TVZ5Q2Z6VVJrcE1SYVdsbkpnTlpmekFXS3pjM1JFUTNEMmxxYUIxRG1nNGpLbXhzQ2dxdmJCVm9HZ080REI4ZnI3R3p0V1E5UEFNSkdCaXp5QVVYRjEwNkFnY0dCcjNJRldZWFdqWUNCQTBOYTk1ckN3cHJGR1VYV0RNQ0FSQVFZV0VLN3UvS0YxUXVBZ0QzVGZuNlRSTVhWMDhzQkR4Q1VLR2dRUWtYcEN4QklWQ1FpREVReFlEWnN1eENraElOLzNqdzh1WGFoU3BRTEI0SmtiRURGU3RUb2tCeG9nU0prU0liTW1wZ2dtUEdpeFlwVHBBQXdTRkRSZ0ZBZ3dvTkdnZ0FPdz09JyxcclxuJ2ltZy9leHQveGxzLmdpZic6J1IwbEdPRGxoRUFBUUFQZVJBUC8vL3paS1pKQ3UxamRMWmUvMC9aQzlpMjJ3Witqdy9lTHMvSm0yNEROd0RWNllWVnVpV0RSWUZaV2t1VE5wRDlybSs1T2l0elZlR25TbGNLYTJ5OXpvKzAyTU51LzEvZGZsK3RiaytqcHZIbkNiYlR0b0hqVkpHdDNvKzVQQ2pvK3g0K1h0L1BUNC9UWmpHelJlRk16ZCtPcngvWHVsNkRwOUozeWs2YVc4M0dHaVZIaWo2KzMwL2NmYStEbHdIbUdnV0piRWtaeXdtK1hzNWJIQjE2MjkwcTYrMUxMQzJPTHMrNVd6NG95djVJQ241OWpsK3BhbXU1ckdscnJGMUVpU1AxaWVVcXE1ejhuYitZcXU1Snlyd01EUndHU29ZRWVJTzBLSk5WS1hTT0hyKzU2NDM5UGkrOHJiK09Icy9GT1RRUFAzL3RMaStvaXQ1WlBFaldtdFl0M3ArMXFhU2RiaysrbncvVDk5SWFTNzNXQitYS0c2M1RSakVabW92angzSHpWTkdNL2R6MlduVzUyNDNrS0FKWWVwaFZpWVJ6dHhJa2VGTGVqdi9QUDQvajU3SGsrT09ZV3M1dWZ2L05EZytkYmkxalJOR2M3ZStXcXNaWkd4NHBXMDRsK2hVekpvS0tpMnpUUmVFek50RGthRUxNemF5OUxoK2pSVEZ6UlNGenAzR2QvcSsyZXFYOXJuKzkvcDM5cm4rcXU2MFlHbjV6UmtFdG5tK3pSdERyREExdlQzL3FHem42VzB5b1NyNXYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBSkVBTEFBQUFBQVFBQkFBQUFqdkFDTUp2RUdEa1kwYWg0VGtvZkJJWUNRRFZjYmN1UUxGUXBveWJLSzBLREpBb0FFQUlFT0NWTkNJZ0lNZkhRMThPS0lFUUo4RkMyVHNFWEVod29DYmcyWlFvWk5rQWd3a2NSNElHS3BpeTRBVkFNVDRZSUFDanhFQVh0WVFFUENrUzRBekFBb0VpY0VBellaQ0pJWUtFRVFtUUpzQ1lEU01LQUNFZzZNR0JFd0lzSklnQUIrUlpsNUk0QUpJTElRY0FiU0lGQmxHRFlJS0dVQUVDS1JnMFlORWVocjhrZE1CZ1FjQmZvZ0VjUGpsUUpZRGIwSXNFWUJCd0J3M213WDJ3Q0ZXZ0NHeFRoQ2xqdVFBQWlGRlBMQTBnVk5paUlzVXN5TklZWkxBVGgwZFV5RHRPTUZpZG9EbjBLTkREd2dBT3c9PScsXHJcbidpbWcvZXh0L3htbC5naWYnOidSMGxHT0RsaEVBQVFBUGNBQVAvLy8vLy96UC8vbWYvL1p2Ly9NLy8vQVAvTS8vL016UC9NbWYvTVp2L01NLy9NQVArWi8vK1p6UCtabWYrWlp2K1pNLytaQVA5bS8vOW16UDltbWY5bVp2OW1NLzltQVA4ei8vOHp6UDh6bWY4elp2OHpNLzh6QVA4QS8vOEF6UDhBbWY4QVp2OEFNLzhBQU16Ly84ei96TXovbWN6L1pzei9NOHovQU16TS84ek16TXpNbWN6TVpzek1NOHpNQU15Wi84eVp6TXlabWN5WlpzeVpNOHlaQU14bS84eG16TXhtbWN4bVpzeG1NOHhtQU13ei84d3p6TXd6bWN3elpzd3pNOHd6QU13QS84d0F6TXdBbWN3QVpzd0FNOHdBQUpuLy81bi96Sm4vbVpuL1pwbi9NNW4vQUpuTS81bk16Sm5NbVpuTVpwbk1NNW5NQUptWi81bVp6Sm1abVptWlpwbVpNNW1aQUpsbS81bG16SmxtbVpsbVpwbG1NNWxtQUprei81a3p6Smt6bVprelpwa3pNNWt6QUprQS81a0F6SmtBbVprQVpwa0FNNWtBQUdiLy8yYi96R2IvbVdiL1ptYi9NMmIvQUdiTS8yYk16R2JNbVdiTVptYk1NMmJNQUdhWi8yYVp6R2FabVdhWlptYVpNMmFaQUdabS8yWm16R1ptbVdabVptWm1NMlptQUdZei8yWXp6R1l6bVdZelptWXpNMll6QUdZQS8yWUF6R1lBbVdZQVptWUFNMllBQURQLy96UC96RFAvbVRQL1pqUC9NelAvQURQTS96UE16RFBNbVRQTVpqUE1NelBNQURPWi96T1p6RE9abVRPWlpqT1pNek9aQURObS96Tm16RE5tbVRObVpqTm1Nek5tQURNei96TXp6RE16bVRNelpqTXpNek16QURNQS96TUF6RE1BbVRNQVpqTUFNek1BQUFELy93RC96QUQvbVFEL1pnRC9Nd0QvQUFETS93RE16QURNbVFETVpnRE1Nd0RNQUFDWi93Q1p6QUNabVFDWlpnQ1pNd0NaQUFCbS93Qm16QUJtbVFCbVpnQm1Nd0JtQUFBei93QXp6QUF6bVFBelpnQXpNd0F6QUFBQS93QUF6QUFBbVFBQVpnQUFNd0FBQUFBQWdLYks4QUNBZ1BIeDhjREF3SWFHaHYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQU40QUxBQUFBQUFRQUJBQUFBaUJBTDExRzBpdzRFQnZDQVVDV01pd0liZHVDYnMxWkxnTndEWnVBQ0FxdE1peFlzVnJJSzhwM0phdG9qWnRvaXlXQkNCU1lqWnFBTFFCZ01RSkd3QnFKVnUrdEtnTmtxVlEyQ3JpYkFsZ3B5aE9vYVRaeExtTktNbUsyS0txL0xqUlk4ZU9Ua2xwM2JxVnFzU3JWajFtNWNyVjY4S3dZSjJDdlNveXBOdTNJUU1DQURzPScsXHJcbidpbWcvZXh0L3hwcy5naWYnOidSMGxHT0RsaEVBQVFBTVpaQUJPcTRodXE0eGFzNGpDbjNoeXQ1Q0t2NGpXeDQwTzM0MGUyNWtHNTZVKzI1V3U1NGx1KzZKR3l3bC9BNkhlODFYeTk0YXEwdDM3QzVhUzd3NFBHNnA3RDRJdks2NjNKMkp6TzdKVFI2OGJHeHBqVDZaclM3cC9UOExIUTNwL1U3Y1RPMUtUWDdwdmE4ckhXNUt6WTdxWGE4TlBUMDgvVTFyYmI2N2ZiN3J6ZThkbloyZHJhMnR2YjI4RGg4TnpjMjl6YzNOM2QzZDdlM3QvZjM5SGs3ZERsOGVMaTR1SGo1ZVBqNCtYajQrVGs1T2JtNXVmbjU5cnI5T25wNmVycTZ1THM4dXZyNiszcjZlenM3TzN0N2U3dDdlN3U3dTN3OHZEdzhPM3k5TzMwK1BUMDlQWDE5ZmIyOXZmMzkvajQrUG40K1ByNDkvdjQ5L241K2ZyNit2LzY5L3Y3Ky96OC9QLy8vdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkhTVTFRQUNINUJBRUtBSDhBTEFBQUFBQVFBQkFBQUFlYmdIK0NnNFNGaEUxTVRVMU9Ua2dtaG9KVVUxUlVWbGRYTWpxUVQ1eVRsVFlyR29hTFQxTlRwVmRZUzRhTXA0eFNQU2xLaHB4T1VVa3VIeFVpUUlaUVZUVWtIQ1VRSFE0MGhSY1NBd29VRmdjSUJnVW9oa2NqREJnTEFRUUNBQnVHUVRNZ0tnMFJFdzhKR1laSVJrSWVPVHM0THljaGhrWkVRMFZCUHo4K096ZUc4TzN6NFlNSGp4MDhETTJRRVNNR2pCWXNWcXhnQWFraW9VQUFPdz09JyxcclxuJ2ltZy9leHQvemlwLmdpZic6J1IwbEdPRGxoRUFBUUFMTUxBUC8vbVFBQUFNek1acG1aQVAvTW1mLy96SWFHaHNEQXdQSHg4ZmYzOS9qNCtQLy8vd0FBQUFBQUFBQUFBQUFBQUNINUJBRUFBQXNBTEFBQUFBQVFBQkFBQUFSWGNNbEpxNzEyYUkzbFFJQUJBQU0yQ0lKeEJPaTJlVVZoS0VGc0Y0QVFMQU91QnFNZ2dLRGo0VmFISUdHWTIvVUFBUU5RT1N3K0R5cm1jbW5GUmFmYnF2T1lEUk9JWThMWGZMYWkzbkQ0TGhHbzIrLzNEaVlDQURzPSdcclxuLFxyXG4ndzgvYWJvdXQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUxxU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFMRlF3eEJHUmtZT0lNVUY5VGlzcXZ1UGhEOEJhOEIvbE5nQkVFQXNWSEFrSzVDS0FXSmZJUDZOTGczRXY0QzRHWWl2VVdJUFFBQlJIUFhBa0FJNTdqQVFnMEpNR2cxTEFmRUZJTDVEcVQwQUFVU3ROUG9JaU8vaWtEc045TXd2U2kwQUNDQnFPUlFVbW45eEJUbzFMQUFJSUhya2VrWnFHQUlRUUVPbWVBSUlJR281OUQrQlpFRXhBQWdnSmlwNm1CMkhvM21vWVFGQUFKSHRVRVlvZ0hKMWdWZ0R5ajRCeEUrUWxIb0NsUWxRNmxDQUFLSW9SSUhGem4rZ0kwQWhsZ3ZFL0VEOEVvZy9BUEVVSUg0S1ZXWUV4R0dVT2hRZ2dKZ29jU1NVbVFiRUlrRGNCY1E1UVB3QUdzTHpnUGd0VkUwazBFT0dsRGdVSUlBb0NsR2c1ZlpBS2hpSTF3RHhQU0JPZ2xhVm9ESlZFb2gzUVpXQzJnSkZRUFZ5NU5vRkVFQ1VwRkZWSUZVQXJkOUJWYVF0S0QxQ1F4TlVTOGxENjNrWVVBR0ZQbEFmTXpuMkFRUVFDNW1PNUFXRkVCQ0RHaVRyb09sd0R4QS9BK0tMUUJ3TnhLK0FXQkZOcXpQVVV3dEl0Uk1nZ0pqSWNDUXpORjBhUUp0Mm9NenpDWWp0b2V4WUlCWUgxZkZBekluRmlBaWdHVGFrMmdzUVFPUkV2UWNRKzBIWklJY2tBUEVmSVA0TURiSHZvQkFENXJXVFFIb1JVdTZIQVZEcGtFdHFlZ1VJSUNZU1F4T1UvaktCbUExSkdPWllTV2o1Q1dyZUpRSFZHZ0VkZXdiSXJvRm1OR1FBY21RaFVBMFhzWFlEQkJBak1XTlAwSUpkRklnN2dGaVRTTE5CWldvejBQeXpRTzA2UUhZM0VLTVgvRXVBOGxOQlpUR1Evb0xQTUlBQVlpS2h6RFFqd1pFTTBIUmFDNDJGbnpqU3F4ZFFYcGlRSTBFQUlJQkl5ZldIZ0pnYkdyTEV0bEZCOWI4RXRQNWZCVzN5TVNLMUNjNUFNeUJCQUJCQWpBTTU3QWdNVFJhZy9YK0lVUXNRUUV4RHdaRWdBQkJBakVObElCY2dnSVpNQ3g4Z2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNEQUJjV0pRYUxnL2NIZ0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9hbnRpYm9keS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTmZTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUpIazBBc1hMbEN0R3J0NjlTcEpaZ0VFRUF1eENxOWZ2LzUvOCtiTkRLdFdyZm9mR0JqSVlHcHF5a2lPQTgrY09mTi83ZHExREJ3Y0hBeS9mLy8rYjJCZ1FKUTVBQUZFZElocWFtb3lmdjM2bGVISGp4OE15NWN2WjdoejV3N0pvZnY0OGVQL3k1WXRZL2o1OHlmRHQyL2ZHRUNPZlBEZ0FWSG1BQVFRU1ZHZmxaVUZaOCtlUFp2azBKdzZkU3FjblpxYUNxWVZGQlNJQ2xHQUFHSWt0ZlgwNk5Hai85T25Ud2VIQ2hzYkcwTkhSd2RSRmxWVVZQei85ZXNYQXlzckswTktTZ3FEcXFvcVNVa0hJSUFZeVczbWxaZVgvd2VtTVpoandXWVJjaVFMQ3d0RFYxY1hYclc0QUVBQU1SSHJLSkJseUdLZG5aMk1JRWVDSEF1VUp5b2tnWHBRSEZsWldmbS9xS2lJcUpBQ0NDQ2lIQXF5QkdRWnlNSEk0cUNRQk1tQkhGdFdWdllmbXlOQmNxQ1FCS2xsQkFKa1I0TE1aR2RuSnlwRUFRS0lxS2ovOSsvZi8rcnFhZ2FZcGY3Ky9neVdscGFNNktFR0tuTGEydHJBNG5WMWRmOUJwUVRJYlQwOVBYQzFwMDZkK3I5aHd3Wnc2UUdLa2VibVpwQm5DU1lGZ0FBaUtrU1ptSmdZUVFhQ0RBWTVhTTJhTlF4SGpoejVqeFN5NE1CQzlqVFFjMkFhMlpFblRwejR2MkxGQ3JBalFTRkpyQ05CQUNDQWlDNmVnQ0VKZGl3bzFFQU9Bb1VLc21OQkRrV0tXVEJBZHZqeDQ4Zi9yMTY5R3VScHNJZWJtcHFJZGlRSUFBUVFTZVVvTXpNelkwUkVCRGcwUUNFR3FxbEF5UUpudWtKeStLWk5tOEFPQnlXZGdJQUFraHdKQWdBQlJIS2pSRTlQRHh5eUlNZUMwbXhWVlJVODlKQkRFTm1SUURYL1FlVXVLT09CUXRMQ3dvTGs0Z2tnZ01ocVBZR1NRWHQ3T3lNd2hNRnB0cWFtNWorMlRBa1NBem9NN0VpUXc2RkZHbGx0QklBQW9xaVoxOTNkemNqSnlRbXFzN0U2RWdSQWNxRG83dTN0WmFURUxvQUFZbUdnRUxTMnRvSWRjT3pZc2YvbzZST0UvZno4R0lHWTRtWWhRQUJSdGVHTW5DNnBQUUlERUVCTXRIQWtMUUJBQUZITm9laTVudG9BSUlDb0dxSzBERldBQUtKcDU0NmFJUXdRUURSektMVkRHQ0NBbUdnVmV0Uk9zd0FCUkxQaUNkVDRvR2FJQWdRUTQxQVpjUVlJb0NFelVnSVFRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVlBQTdDVWw2ZFlqZ05nQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2Fycm93LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGZlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFEcUpsSExLWVVKQ2NuTzVCclAwQUEwVHRFSFlDT05TQkhJMEFBRFVUVXp5ZEhFMEFBRFlSRERZQ2gya0NxSm9BQUdxak1WRTlxRWdBSUlCWVNNME1EaFE2MFIwc0Noc1JxQkFnZ0ZsSkRnc3BKSUFGSUx5QkdNVUFBa2VyUVJpcUVLS3lJdWdERUc0alZDQkJBaktTVWo0eU1qSlNXb3cxSXNXSTRkKzdjQzhUYUR4QkFBNVdaR2tHT0pFVURRQUFOaEVNdkFCMUpjcVlFQ0tDQmNHZ2lPWm9BQW9qZURqMUFhcFREQUVBQU1RNlZzU2VBQUJveXpUeUFBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUFNQWFlcHBoOVBiS0o0QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvYXNzYXljdXJ2ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBTUFBQUR5SFRscEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBQU1VRXhVUlg5L2Z3QUFBUC8vLy8vLy8vbTBIWkFBQUFBRWRGSk9VLy8vL3dCQUtxbjBBQUFCQlVsRVFWUjQybUpnSmhvQUJCQUQ4VW9CQW9nRXBRQUJSSUpTZ0FBaVFTbEFBSkdnRkNDQVNGQUtFRUFrS0FVSUlCS1VBZ1FRQ1VvQkFvZ0VwUUFCUklKU2dBQkNVc3FBRlNEa0FRSUltY21FQlNESkF3UVFDVW9CQW9nRXBRQUJoTXhrWkdURXB4UWdnTkJNeFZDTkpBOFFRSmdPUUZXTUpBOFFRTmpjeW9oZEtVQUFZZlVXSTFhbEFBR0VQUVFZc1NrRkNDQWNnY1dJUlNsQUFPRUtWNWpua09RQkFnaDNGRENDQVpJOFFBQ1JFRnNBQVVTQ1VvQUFJa0VwUUFDUmtGNEJBb2lFWEFBUVFDUW9CUWdnRXBRQ0JCQUpTZ0VDaUFTbEFBRkVnbEtBQUNKQktVQUFrYUFVSUlCSVVBb1FRQ1FvQlFnZ0VwUUNCQkFKU2dFQ2lBU2xBQUVHQUZGbkVvOUxJOG5sQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9iYWNrLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFJUlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQU1ZQnlQVEU0T1RtWmJTRHRCd2dnWWgzSk90Q0JCUkJBeERpU2ZUREVMRUFBRFFwSEV1TlFnQURDNTBqaHdaUlhBQUtJQlp1bWxKUVVoYmx6NXo0Z3hTS2d4eEtBVkR3V3FRZEFzeElwOVFoQUFMRmdjU1FvZDc4aTBaRU5RS29laTlRRklDNmtSb2dEQkJDMmNsUURHQUxmU0hEa2ZEeU9kQVNhOVlFYURnVUlJR3dPdlV1aUl4Tm83VWdRQUFnZ0ZyUm8xd1FhZnAwSUJ3b0FLWkFqQTdCSUw2Qkdta1FIQUFHRW5rYVppWFRrZmlBMm9KY2pRUUFnZ05Dai92TmdkQ1FJQUFRUUkzSUxuNUdSRVo4akZZRFVlaHlPcEJqTW1UT0hFWjg4UUFDeEVKbHBES0FoS1RCUWpTZUFBQ0sybWJkK0lCMEpBZ0FCUkt4REE0SDR3MEE2RkNDQWlISW9NSk9BeThXQmRDeEFBQkdkbVlqSVVJVkFEMDJncEZHQ0R3QUVFQk9hUStRSWhPd0RhTWhld0NMZEQ2MnBhQUlBQWdnOTZ2OFFrUXcrNEhGc0FxMGNDeEJBak9oQlRpajYwUXIvZmh4MVBjbUZQNkdvQndnZ0RJY0M2M3Nlb0NWZjZOMHdJZVJRZ0FEQ2x1dC9rQklTMEpCYmdFVUtYRWxBUTU1aUFCQkFURmlxc2o5QXd6bkljR3dqRUI5QXc2RFFMS0NHUXdFQ2lIR29qT1lCQk5DUUdTa0JDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWd3QUdvTWl6TEo0cVZ3QUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9iZW56ZW5lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLM1NVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQ1I3RkJHUmthQ09DVWx4UUdJQy9DcElSVUFCQkFqS1FVK0lRdVNrNU1kZ0ZROUVEdEFoUTRBY2VMY3VYTWZZRk5QaXQwQUFVUVZod0lkbUFDazRwRWMrQUZLQzBEWmpVREhUcURFc1FBQlJKRkRvUTRFaGFBQ2tnTW5BdkVFcUNQbm80VnVJTkRCSDhoeEtFQUFrZVZRZkE2RU9RU29CdVJRQXlqdVIxSUhTZ29iU0hVb1FBQ1I1RkJnQmdFNWJEOCtCeUtGOW5vZ0ZRQU4zWVhRMERXQVNtK0FPdmdEc2ZZREJCQUxpWmxQQVlweE9oQUp3REpRQVRUNkE0RVlGaE1nRHpnQVBSTUlUUklFQVVBQWtWdU9YZ0E2c0FHUEl4bUFjb1ZReDMyQWh1UjVxT01Ob2JRQTFORkVBWUFBSXJ2QUI2VkJJUDRQd25nY3V3SHFzQU5JbVF2a3VFUlM3UU1JSUNZeW9wNEJLWlFZQ0VVZHFBd0ZZa2RRRVlWVVpKRU1BQUtJWElkZUpOVWlVRktCaG00Z21vZUpBZ0FCeE1KQVJ3QjA3QVZvc2lIWnd3QUJOR1FhSlFBQlJLcEQ1VW1OTW1vQmdBQWlONDFlSURWVFFHc3FHTkFuMWNNQUFVUkoxSCtBNXVSR1FpMHFJQVlWUy9lUkhDdUE1R0dpQUVBQWtadVorcUVOakFZU21ud01VUFlHY2l3RUNDQlNRM1FoY2swRGRFd0JqaERjRDIwVHdCeTVBSWdWUVJVQXRFRmpRS3BEQVFLSWljVGlaUUZhVGRNUGNoUlNjY09BRm9vd0J5WkM2L2I3ME5vSjFrNGxPbzBDQkJESmFSU3BwaW1FV3VRQURkMEFxSkpHUEE1VVFFcmJpckJ5bFJnQUVFQ1VOcHdOc0RYZm9HeFFGT2NqbFJRUG9Fa0hwY1ZGclAwQUFVU3Rya2dEVWt2b0Exck9mZ0R0aWl5Z3BDc0NFRUJVNjl4aENWMjhEaVRWb1FBQlJPMWVLS3lOZVpHUUEwbnRoUUlFRU9OUUdSOEZDS0FoMHlnQkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSU1BQWtvQU1kdWhMc09nQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2JvbGQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUdQU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUEwY1doang4Ly9yOXk1VXFLR2hVQUFjUkNEMGQyZDNjemZQdjJqZUhSbzBmL1MwdExHY2t4QnlDQUdHblpla0oySkJNVEU4Ty9mLzhZQkFVRkdSb2JHeG00dUxoSWNqQkFBREhSMDVFZzhQNzllNFk5ZS9hUWJCNUFBREhSMDVFZ1lHMXR6ZURuNTBkeTlBTUVFQk85SFptWW1FaFdHZ1VJSUthaDRFZ1FBQWdncHFIZ1NCQUFDQ0Ntb2VCSUVBQUlJS2FoNEVnUUFBZ2dwcUhnU0JBQUNDQ21vZUJJRUFBSUlLYWg0RWdRQUFnZ3BxSGdTQkFBQ0NDU0hicGl4UXE2T3hJRUFBS0laSWRtWjJjejhQUHowOVdSSUFBUVFHUzFub0FoK3Iram80UGgyYk5uZEhFa0NBQUVFQVBJb2VUaUkwZU8vS2RFUHlrWUlJQVloOHBvSGtBQURaaytFMEFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQXpCaFcxYkdyYmhzQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvYm9sZGhhc2gucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFCb1VsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBczlMRWxKU2RFRlVyVkFuRFpuenB3UDVKZ0JFRUNNdEc0OUFSMHBEcVF1QWJFWUVGOEFZa2R5SEFzUVFEU1BlcUNqWGdJcGR5QUdPYzRBaVBjREhTOUFxamtBQWNSQ3AraStBT1E3Z2h3SmRXdy9FQ2VTWWg1QUFESFJNTHIzQUhFb0xBUkJqZ1ZGT3hBZkFPSkNVczBFQ0NDYXBWR2c0d3lnSVNoQVNkcUVBWUFBWWhuTTBZME1BQUtJYVRCSE56SUFDQ0NxUmoyMW94c1pBQVFReTJDT2JtUUFFRUJNZ3ptNmtRRkFBRkVjOWJTTWJtUUFFRUFzWkRnTVJNR2plKzdjdVJlU2s1TnBFdDNJQUNDQXlJbDZsT2dHT2xJQTVGaGFSRGN5QUFnZ2txT2VrWkdSQWVnNHVrUTNNZ0FJSUxJeUUxSUlma0NLYnBvQ2dBQWlPOWZUSTdxUkFVQUFNUTZWMFR5QUFCb3lYUkdBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBREFQV2hpQ3JVNzhjaEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvYnJhY2tldC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBS0hTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVFQXN4aXI1Ly8vNy95SkVqREx5OHZBeHNiR3dNLy83OUE0dURxbDhRVmxGUllSQVNFZ0lKTVdMVC8vNzkrLyszYjk5bVlHUmtCR053Q0RFeE1mejY5WXZoOCtmUERGWldWZ3pjM055TStOd0FFRUJFT2ZUNjllc014NDhmQnp1U21aa1piQW1zalFDeURPZ1FCbmQzZDV3V1hieDRrZUhZc1dOZy9UQkhnano3NTg4ZnNINE9EZzRHVzF0YnZHNEFDQ0NpSEFveUNCUVNqbzZPREVwS1NneC8vLzZGaHlnSUFFTURyMzRURXhNR2RYVjFNQnNXb2lBUFAzejRrR0hIamgzZ21DSUVBQUtJS0lleXNyS0NhVGs1T1FaUlVWRkdVdE1YRHc4UEl4QmprL29QQ2wyWStmZ0FRQUFSbFpsQTBRUUtnZCsvZjFNMWc0QmlCcFlNQ0FHQUFDTEtvYURvb2tXN0ZaWVppUUVBQVRSa2lpZUFBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFnZ29od0txdWFRMjVKVXM1eUorSEFDQ0NDaVZJSWFKS1RVeTZUVTlTRFBFK05nZ0FBaXFwbjM4K2RQc0tGWHIxNEZ0L2FSVy9nZ0lDVWx4U0FnSUlBenVEOSsvUGoveVpNbkdDMThVSHNVWkFhbzhVd0lBQVFRVVE0RkdRUnk3Smt6WnhoT25UcUYwcHI2OGVNSGc0T0RBNmlGajFNL1NOK2VQWHZBRFhEMDFoaW9xUWN5bXhBQUNDQkdZcU1UNlB2L0xDd3NEQ0NNM0g0RVdjckp5Y25BejgrUE0wU0IvYUwvWDc1OHdVaWZJSE5BamxSUVVDQ1krQUVDaUhHb2pJOENCTkNRS1o0QUFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ0RBQVVuTWxPRTFicHpnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2J0bmNpci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBUHBTVVJCVkhqYVltU2dFa2hPVGxZQVVncG93aC9tenAxN2dScm1Bd1FRSXdVT013QlM4VUFNb2gwSUtMOEF4UnVCRHQ5QWpuMEFBY1JJaGdNVGdGUTl0dENET2dZWktPQlF0d0NJSndJZC9ZQllld0VDaUpFQ0I0SXNCSVhPUmlBK0FMVDBBeDY5b0JEM0IrSUFOUDBUZ1hnQ1ByMHdBQkJBakVRNFVBQklyVWVLWGxBb05JSWNTWXdGV013RE9UWWZ6YnhBUW1rWklJQVlpVWlIKzRGWUFDclVDRFN3Z1VxWkQrVGcrVWhtSndMTlhvQkxQVUFBTVJMcHlBdFFneTR3VUJGQVkycytORW5nZFN4QUFERVM2VWhIY3FLWkJBZURISnVBejdFQUFjU0l3NWYzNmVWSUhJNEYyWGtBV1I0Z2dKaXc2RmxQYjBlQ0FOQ2VSR2l4QlhZRE5NRGdBQ0NBbUxBVVFRNUlVVUFYUnlLQlFtZ0FnUnpaanl3QkVFQ01hRkYrSGxyT2taUzdnWHFKQ1RGaXpYS0E1ZytVSkFBUVFNZ2htZ0IxNUFOaUhRbHlJREdPUlBjTVBuMVFoOEdTUUQxTUhDQ0FXSkRVNU1QS1NuSkNFVitJd2RRUzZ5bW9HOERKRU5UWUFWVzFBQUhFaEZRY0tTQlZpMFE3RXVSQVF0RktiTFFqcVgrQTVBNXdTUUFRUUxBUWpZZlNCS3RGZEVjU1Nxc3dOVEFhcEFiRUppSjBOMElyQWxBYm9RRWdnR0JwMUFGSmtsaGZFNVhtU0VraWFBQVdvZ2FnakE0UVFEQ0hHa0RwQTZUbWJtekpBRDA1a0pBMmtjMUNiallhQUFRUUV6Ujl3bHJqSDBnTlRYTFRJWkVBN2xDQUFHSkJhcjFjSUxmY3hPWklkRFhraENvUVBJVFNBZ0FCeE1Rd1JBQkFBTEdRbUc1b29wWVlBQkJBSkRtVTNLb1NUeTFFdE4wQUFjU0UxaEdqdEFWRTdSam5oekVBQW9nSnFkMm5RQXRIa3BtSkdOQ0xUWUFBWWtMcVlNRmFMdVEyZkVseUpKR2hEKzhBQWdRUUMxSkJud0N0cmc1UTA3RVVkdjRZb0syNUJ3QUJ4SVJXZFFiUXFUVlBqREovNU5vU0lJQ1lvQm8zUUZ0T0NrZytHVEJIUWh2eE1IY3NCQkVBQVlTYzZ4ZWd0VXZ4V2taT0RpZEJUd0cweG53QXkrd0FBY1NJTmhwM0g4b05KR1V3aThwZEVRVm9sMGdBdWVzTUVFQ01hSW9hb00xL1VESlFISURPSGNnTjY2SFJEaHJQY29TSkF3UVFlbDAvQVZwVXdVWXc2TzNJQXFTMFdZZ3NCeEJBVEZqYWdJR3dFZ0E2S0VBdlJ5WWdkWkVMMFllUEFBS0lHVjNEK2ZQblh4Z1pHVDJFK3N3QXlGWUFpbTJrZ3lOaGdiSUE2TWhLZERVQUFjUklyR2FvTHovUUtMcjdrUnlaaUUwZFFBQXhrdURUQjlCY2VJQktEbFNBT2pDQWtDTkJBQ0NBaUJuSWRVQWFqNEtGYmlNcHc5cFlDdk1DYUhrdGdKUW1KK0RUQnhCQWpDUVkzbzgwMmdhcjJoWXlFRG55REszeFlNUGpBa2htRkJJejdnb1FRSXdraG9ZQnRKd053TklKQTRYd1JUUnhlV2p6MFFHTCtvbjRScGpSQVVBQU1WS1F2Z0lZRU5NM3hBRFk2TWRDY2thdUFRS0lrVW9ad3dIcVlBRXMwZ2RnVFRWSzdBQUlNQUE1M283aTg2RytSd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9idG5jaXIwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFSR1NVUkJWSGphWW1TZ0VraE9UbmFBTWdXQTJBQ0lMd0R4QjVEQTNMbHpEMUJxUGtBQU1WTGdNSkJqNG9IWUFlb3dRZ0RrY0pDREZ3SWRmb0ZVK3dBQ2lKRkV4NEZDS3dDSTY0RllBWnNhZGE3bmNQYk5iNUs0akhvQXhJMUF2QUhvNkEvRTJBMFFRSXdrT0RJQjNZR3k3RzhaREhrZWdSMEhZbk14L2NMUTkrMGZHOFBqbjhKZ1I1Ly9JZ2Rtb3pzWTZOZ0ZoT3dIQ0NCR0lrTnhQVFNLd2NDYTd6YURpK0JWc09OSUJTQ0g3bm12elhEMGt5cXlNQ2hKQk9JTFhZQUFZaVFpSGU2SFpoQnd5Q1dKSDJJUVp2MUNjZVo3KzV1SFlkNUxPK1RrQVhLa0k2NzBDeEJBak1RNEVoU2xmc0xud0tGSWJRQUszUld2TFFnNkZpQ0FHSWx4Wktuc05yS2ltWlRrMFAzWUM1eWVjVGtXSUlBWWNhVEorL1J5SkI3SEtpS25XWUFBWXNLaVp6MjlIUWtyUVVEMlFVc09XQWFHQTRBQVlrWUx6UUlnbFFGaXg0b2ZaZERoZnNKQVQ4RFA4aDJNejMrUkIzRVZqSXlNUHA0L2YvNEVpQU1RUU14WWlpRU9RNTZIRE1FaVp4Z0dBc2l5dndNbmd4ZS93QVdOQmRDeE00R08vUUVRUU1oUlh3QXJoaUpFVHpBTUpFQ3lYd0RxTGdhQUFFSjJhRDZzTUtkR09Va0pBTmtQY2dleXV3QUNpQWthN1FHdzBBU1ZselFCak13a0tVZHlod0RJZlFBQkJBdFJmMWpPbzBsb01nS3QrZitYNUZCRktuSDhBUUlJNWxCd1BRNXFZTkRHa2YvSTBvcmtIZ2VBQUdLQzVuWUY5Q1lhZFJ6SlNMWWowZHlqQUJCQVRNaU5YblZPYWpvVTVNai9GSm1BN0I2QUFHS2lYZDc5VDFYVEFBS0lDUmJ0OUtvcXlhbGFRUUFnZ0poZ3hSSVg4NjlCNlZDWXV3QUNpQW5hNmNMWHZ4bFFBSE1YUUFBeE1Rd1JBQkJBVE5BT0ZyeE5PSmdBc25zQUFvZ0oyRGg5QUJzb3VQbE5ZcEJGTzl3OUh3QUNpQW1wRjhodzgvdmdTcWRJN2prQUVFQXdoMjRFRWFBR0s3UXJNT0FBNUE1b0F4cnNQb0FBZ2psMEE2SlhxRE1vSElybWpnMEFBY1FFSGNRQ3BkRUZzTzdyUUljcXlINlFPNkJnQWNoOUFBR0VYRHcxSWhUcERIaG9JZ1VXMkYwQUFRUjNLRFQzVHdDeE43MDFITENpQ21RdnlING9tQUIxRndOQUFLRVgrSTJ3Y25YcU14ZTZKd0dRZlNCN2tRZlFZQnlBQUVMcEg0QjZlOEJlMzBVZ013R2s2Y3BYR1FZenZuc01ySXgvNmVKSTBBQUV0UGZKQUIwMHV3SGpBQVFRUmtjRzZOZ0hRTWMrQkRJRFB2M2xvb3RqWVk1RVNtNkpRRWR1UUZZREVFQlllMXhBeDE1QWQ2d3k1MnZ3NEFBdDBpUW91dEVjdVFCZEhVQUE0ZXdhb2p2MjRFY05jS3VkbXQyVlRXK05HR1k5ZDJRQW1ZL1BrU0FBRUVERURPUTZ3TWFqUUh3UllPOFExSlcxUXZTN1NRYkhQcW1DSGZubU53KzhMb2VteVFPNDlBQUVFRkZENDlBT1lEOG9rOEVidEV5L0dLejRiek9BaG4rSTZXdUI2bTFRbFhqc295cDZhUUlLd1VKQ1kva0FBVVRxWklNRGRPUWlBRmVQVVozekJaTGpKQmp3Tk1wQm1hV1IyQmtTZ0FBaWEvb0c2R0FGcUdQakdZaWJ1b0VCa0tNV01rQm1ReDZRWWlkQUFERlNtaUdneWNLQUFURVpJUS90TUlJYzhoQ3BHWG1CMktrYWJBQWd3QUJKazUramsrTXNzUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9idG5jaXIxLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFSclNVUkJWSGphWW1TZ0VraE9UbmFBTWdXQTJBQ0lMd0R4QjVEQTNMbHpEMUJxUGtBQU1WTGdNSkJqNG9IWUFlb3dRZ0RrY0pDREZ3SWRmb0ZVK3dBQ2lKRkV4NEZDS3dDSTY0RllBWnNhZGE3bmNQYk5iNUs0akhvQXhJMUF2QUhvNkEvRTJBMFFRSXdrT0RJQjNZR3k3RzhaYkZUL00yaG9DaktJOFAxaVlHZjVnNkh2NXg4V2hqZWYyQmh1WEgvUGNPUTJJOFBqbjhJWURnWTZkZ0VoK3dFQ2lKSElVRndQaldJd3NCZDd3dURwSXNFZ3d2dWQ1Q1R6NWpNbncvWTlMeGdPdnBKQkZnWWxpVUI4b1FzUVFJeEVwTVA5MEF3Q2p0YU1VQ0VHWG81ZkZHZSt6ei9ZR0dhc2ZvZWNQRUNPZE1TVmZnRUNpSkVZUjNJeC9XS0lNZi9KWUtiSFFIVnc2aElEdzZ6anZBUWRDeEJBak1RNHNpNkNpYXhvSmlVNU5LMzR4L0R0SHh0T3h3SUVFQ09PTkhtZlhvN0U0MWhGNURRTEVFQk1XUFNzcDdjalFRQmtEOGcra0wzUVBMRWVXUjRnZ0pqUlFyTUFTR1dBMkRrdWZ4Z1VKSDR5MEJOd3NmOWhrQk5rWmpoeGp3WEVWVEF5TXZwNC92ejVFeUFPUUFBeG9VVTVxSnhrTU9aL3dxQ3Q5SXRoSUFESVhwRDlVRkFQZFJjRFFBQWhSMzBCckJpS0NSQmxHRWlBWkw4QTFGME1BQUdFN05COFdHRk9qWEtTRWdDeUgrUU9aSGNCQkJBak5Ob0RZSW0zUC80bmpSd0tDcE4vSkZVSWhRdlpZZHhBZ0FDQ2hhZy9yTzZtalNNWlNYSWtMRlJCN29HNUR5Q0FZQTRGMStPZ0JnWnRIRW1ldVVqdWNRQUlJQ1pvcmdLM2lFQ3RvTUhpU0RUM0tBQUVFQk55bzFkYTZOdWdjU1M2ZXdBQ2lJbDJlWmU2eVFnZ2dKaGcwWTZVY0FjVmdMa0xJSUNZWUlVOEYvT3ZRZWxRbUxzQUFvZ0oydW5DMTc4WlVBQnpGMEFBTVRFTUVRQVFRRXpRRGhhOFRUaVlBTEo3QUFLSUNkZzRmUUFiS0xoMy8vdWdjaWlTZXo0QUJCQVRVaStRNGV5MWo0UEtvVWp1T1FBUVFEQ0hiZ1JMZkpRQjk4TUhBd0M1QStRZW1Qc0FBZ2ptMEEwd2tTTW52dzRLaDZLNVl3TkFBREZCQjdGQWFSUThXckh4R3QrQWh5cklmcEE3b0dBQnlIMEFBWVJjUElIR2dzQzl3SUVPVlpEOTBONG8zRjBBQVFSM0tEVDNUd0N4bDE4UkdiQ2lDbVF2eUg0b21BQjFGd05BQUtFWCtJMndjclZuOVErNkp3R1FmU0I3b2VBQkxEUkJBQ0NBVUJ3S1RhdUpZSi85NW1Ib1dQS05ibzRGMlFPeUQyUXZGQ1FpRDBBQUJCQXp1Z1pnUC9vQnNELzlFTWdNK1BTWGkrSHl0VThNbGpyc0RDeE0vMmp1U0tRaFNaQWpOeUNyQVFnZ1ptd2FnWTY5Z081WUhXVWU4QUFCTGRKay84b3Y2STVjZ0s0T0lJQ1ljUm1BN3RnOWw1a1l1SDkrWmxDU28xNVMySHYwSjhPRXZUd01JUFB4T1JJRUFBS0ltSUZjQjloNEZIaU1pUFVMUTZ3REswVWpLVmZ2c1RFc1B2QWJPVDJDMG1JZ3Zra0pnQUFpYW1nYzJnSHNCK0lFZUlPVzZSZURrL3hiQmxNVE1hTDZXay9mY1RHY1B2T0tZZDlEWWVReWtnRmEwUlFTR3NzSENDQlNKeHNjb0NNWEFlaHlzRWtHSXlWV3VOaTVlNzhaOERUS1FabWxrZGdaRW9BQUltdjZCdWhnQmFoajR4bUltN3FCQVpDakZqSkFaa01la0dJblFBQXhVcG9ob01uQ2dBRXhHU0VQN1RDQ0hQSVFxUmw1Z2RpcEdtd0FJTUFBMlNtYjNNK2lVWlFBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9idG5yZWMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUhhU1VSQlZIamFZbnozN3AwOEF3TURMeEJ6QVRFTEVETXlRTUIvaG9FQnlQYi9BZUp2UVB3WklJQllvSTdrQjJJMnFLSy9RUHh2Z0IzS0JNVE1VRGV3Z2dRQkFvZ0ZHcEpzVUVYZmdmZ24xQ2NENlZDUXU5aUJtQVBxTmk2QUFHSkJpbTZRSXo4QjhWY2cvZ1VOMVlFQVRGREhjVVA1bkNBM0FnUVF6SkYvb0NINUZlcllud1BzVUhZb214MGE5WXdBQWNTQ2xIRC9Ra1B5NXlCd0tBUFVMWDloU1JBZ2dGaWdqUDlRaDhHeG9LRGdnRGowL2Z2M0RHaHVBYnNQSUlDWUdJWUlBQWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJSU5qNEtHdzRHbzZobzJvREZYaklHT3crZ0FDQ2pZK0NPS0F4YzlCSUwyd1FkYUFIY3RtZ2JnSlBQZ0FFRUd4OEZEWm1EaHVPSGl4RDQreFF0LzBCQ0NBd0FYVXNCMVFoTzhQZ21td0FUK01BQkJCSUFEU1B3d3IxQlNlVUhrelRONkRZL1FZUVFDQ0hmb1lxR0V3VFlxQ0ErczJBTkNFR0VHQUFvWEJPYWtnTWxpb0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2J0bnJlYzAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQXBrU1VSQlZIamFZdXlmTXErVWg1ZlhrVjlBNUJzckcvcy9KaVpHQmtZR0JnWkdJQUZoL1FleW9UUVRRZ3daUUdVUk12OFI4ditob2hCeGlCUk1GcWJzUHpJYnF1YmYvMzhNZjM3L1l2cjgvZzM3OTUrL05nTUVFQXN2TDYrZHVyN3RPMVpPQVc0R0ppWU9aa2FJSTVtWklEUVRtTThJcFA4ek1FRTlBSFl1NDM4b0c5VzVDSXVoRHZ3UGNTekVjb2dyLy80RHNZRVlwT0lmRnZvL0JEUDgrL2RiN01lSGozZXZIZk1FQ0NBV1BrR3hueUJIL3Y3SEtnTlV4QVZ5RXhQUVJjei9JWTVFeGlBSFF4d0lDajJndzZHaHdJamk0djlBQ3huQndRSnk3TC8vLzVGQ0NZci9RY1JoRGdZNTdnOFMvZThmU1AzL2YweU1UTjg0T0FTZThQQUovUVVJd0JRWnBBQU13a0N3cGdaS29mOS9iS25wckZIUmk4dEt3akJXOThwZXV4aThDWStsdUFNZWFuQW9vbXpHaG5IcklkdjU4YUVoSmNHdGQ5bU1aWFdhYlJ2OE4rQVNNRys2ZGhidE5PZTh2d0JNa2tFT0FDQUl3MkQ2L3g4TGJtQ0lCNC9xMG5ZVG9Ja2dSd0ZSTkNIdE91RElWWWliNkZLL05mSTE3RFpqUHFCOC9LbVcrdEI5NThkTjRLU1hBZEdjVHI3bTgzUlNFQjFQdEN6WUZVQXM4QkFDeFJiVWdhQjBDbzUrcUNOaGZDWW9EVSs3OERTTHlGRHdETUVBc1F6a0hramFCTElab1Fuekg4UXVjQnIrQjdVYmFzZy9VR0Q4UTdVRFJBQUVZSnFNZGdBQVFSQTRyZi8vNU1wQUhNL1poaWUzUlVqRGFTRkp0ZWwrbVl4dVRBV1FBVlVaa2N4ZXpPQ1V0Y1psZC9IcE1NQktzMTJoQXhCYllyNC9BWWdvZ3lRQVFCQUVadlgvSHhzTmFIVHpoTGlLVzJEWnZJWExER3lNTkJmckdSN2loK3RSRGVjZG5keGFQMFRuVUtSSlNqQ0g3bGxVczR5eFBqMlkzbURTSzd5dEt3QVRWV3dEQUF5Q0V1My9KMk9yZ25Wd0pZREFVVFphcEVqU09WNld5dGZyYmVMQ0ZWZ2tFelpmSEd4N0xRUjZnOHZybDlsd1RoYWFyT0Zya09rZ3JzeTRBb2lGRVNsalFFSVJOZFRBbVlnUk5VbkFQQU95RHVKWWlBTmgrWUlKbHBuKy9ZZUlRcU1hSE1yUVVHU0FPdW9mY2g2QjB2OWdnY0RBQU0rbUFBSEVncEtMR1JEcERzV1JUTWhzWk05QXlsTkdXTHI2endpdGZmNkRMWU9YQWtpRlB5ejZRQmtNWmliWUErQ005Qi9xVVdnU1prSmtNb0FBUkpWQkRnQWdDTU1pOGY4LzFobWd3eE0zRWxncDIxZmx2c0VYV3NDOEpuSXpxdG13NC85MmFzOG1Rc2xtZ1krR1JCSTZXQ0k0UVBDcHF2YnpyZUZ4TW0yZkFHTDVqMlloUkJOU1VRU3RMcG1naVJ5RlJpdENJQ0VIRFVVbVNCbkt3QVFwZ2tBWjhqOGpjc2FGVkJDZ1FBR0hIcXhLaHRJZ2UrRlZOaEFEQkJBTEU4UXA4UElGckFDV0RCZ2dJUWl2TXVFaHpnQjFQQ1BVTTRqcUhtd0tOSE13Z2RNbUl6aWIvVWN1eW1BQndvQUlDSmg5NE9vWUdsandMQThFQUFIRWdtaEdNQ0JYRmRCNm5RRWV1dkJpZzVFQm1pNmhqZ1EzVmhqaE5Td2s3VEhDamZ3UGJ3c2dHakh3bGhuTVFmRG9SN2lORWJXZHd3QVFRRXlNU0k1a1JLcWZZZlVNM0dNd1Y4TWNDYzNuVEF5TXFLVUVFOVJTZUxUOGgyZFFsT3FXRVNQUW9ISDdIMVVRQ2dBQ2lBbGRsQkdaWUVRTFpRWllBdjhQVndNTEpYaW93K3o1anhReTBES1dFZHFxWW9SblBKaCtxTmovLzlqY0NBWUFBY1FFdHhnZWZZanlFSTZSRzc4d3RmREdMMFFVMW9UN3o0amVOa1dPbC8rb0NacmhQMXcvUWgvMnhncEFBREVodXhwY216QkNmUGFmRWFrbHp2QWYzdUFBTnk2ZzlUS3NVUXhyc3NHYWJjaU5aVVQ1eVloa0hnTktnZ056L2lFRkJieTFqM0E0UUFDeElMb0prS2lBV1FMdk5vQkxZcWpEb1VVS3BDWEVBS3ZyVUZyNktBMWtNSWJtZWlUUC9JZTY5RCswUkVCT0lQK2h1ZTAvdkJNRHdRQUJ4QUx2eXlCRnozKzBVSUdWM1RCSGdHU1l3UTZBTk9QZ0xTZDR6b2ZXVHY4aDlUbVlSbXJwTXlCM1dxQWxCWEkvNnYvLy8yZ0pqSUVCSUlCWW9JVU5KSzFBRzcyd05NY0lheHhBdXhSZ0IvMkg1TnQvNEZDR05zTVlVZU1VcGU4RE5mc3ZVaWovaGJZRElHMVZScWluR0JCSkJPNFdoRU1CQW9nRjByZjVqeFJ0a0w0TXVCdnlIK1pncUNQL3dWb2QwTTdIZjBoekRiVlI4aCtqa3didllpQkhQNnoxQkdORG94MGNBSWlVQ1BjOFFBQ3h3T3ovQjgyaFRORCtEYmkrL1FjSk1iQmpvZFVoNHo5RUZja0VxellaWVZaQk14c0RwR01IYTBIQkhQdnZQeVpHVDd1UTlpeTBqL1VQa2VrQUFvZ0ZGbVhJblMxdyt4RmFmZjZGTllOZ0RReG9JNWZ4SDZJNlJHUmhDQWVXUnY5RFN3aHdadzNxMEwrd1RodzA3VUxFL3FOMDd1QjVneEdScGdFQ2lBWGhDMGlZZ0JSRGEzK0d2NHpReElwVW00QWNpZWd5SUpwNThES1ZrUkhKb1dpaCtRK0IvMEs3ek5oQ0ZSYmFURWhOUTRBQWdrVDlQd1o0L3h2Uy9JS2tTVWgwUTZJQWxxdkJoakZCQXhkYWJhSmtKZ1pFR3YzUGdJZ3BXRWorL1E4TFNVUW9vaVlIUkxLQk5ydkJiSUFBWW9IbFVwaUJqTkJ5a3hHNUZvSzMwT0Z0WTNqakJCd0RUS2dWQ1NLV1lEbi9QM2pRQWNYQi94akJ1Zjh2ek1Fd3gvOUhaRXJreWhFZ2dGamd3ZjBQZWR5SUVaeHV3TVhEUDBRdENuUG9Qd1pZcndCYWcvK0RoZXAvYU9aaWdPZG9VUEVFR1JsQlpLeS9TQmtNVVRyOGg2djVDdzVSUnBUMER4QkE0TXlFSFB6ZzZwZ1pHcUwvSURrYUV0MlFWaEk0UC82RlNrRWJKWXlNaUQ0UkEzeFVCSmJtb2FVSUxOVGdqa1VhZzBJZUtVRWFwMktDVnM4Z0FCQkFMUEJvaDJwaWhIVmhRUjA1V0xxRXBsTllXNU1KdWZIN0R6RndCbXVFSU9wNFJEc0FsZzlnVWZ3WEtYM0N4NkNRU3dWbzZNSmlIQ0NBV0dDeC9mYy9KTWpCOVRwc05BTGFuUVgxYy81QiswcmdVR0pFak9iQlFoUGV0bU5BYWlQQWl5cEVNUVhTanhLYS81QnFxbjhNU0o2RGxPbXdyQUlRUUN6d0d1TWZ0Q3FEZFFHUmN6a2paT1R1UDdSUnpQZ2ZxZGNLYlVRd0lyWE00QzB3YUthQ2hReEdnUThQUFVTRytnc3RYeGxnYVJacUJrQUFvWVlvMU1lUXNwSVJKUU9CSGZudlAwcVhtZ0c1Uy9FZnVWbjlIMlZZNXg5U3JZTmNKUDFIei9YL2tCb2wveGtnRFI5b29BSUVFQXV5VDBHTys0ZFUwZnlIRGpUOEEzVTEvdjVIR2lPRkJqb2pBL3BZTThyZ0xTeFVHQmhSOHdGcXVrVmtNUFNxbFJHcFZRVVFRQ3ova1ZybjRGTG1INlI4QklVaTh6OUcrQUFZZkZTREFTbHR3a2Z6b0czSC80aTJQYXdSRGl2NDRhSExnRjRrTWFJVTlMQ2k3RDkwb0JnV29nQUJoQ2hILzBQR0xHSGRZa2JvNkFVc2gvK0hqelFqajR2Q2VpL1FVUDJQYUpQQ3VzMXdSOE16RlhwNi9RLzN6Ritrc2hjVUt1QmhTcWhaQUFFRWQramZmNUEySXlPMCtRWHJ0LytIamtuOVkyUkVIUk5saE1jODBtZ2VraU1aVUNjVy9zSFRHeU1pTDhCeU9iVG1RbTRqd0VZbllTRUtFSUFLYTlrQkFBUkI2Zi8vY3BCVE1ydTU2WUg1Z0VrQVJRTE1uYWJCNWNGN01nQTE5Z0s1UlQrdUEycnZua051eFJLdnRmWjFGZVBGS1VlYW5iOTZxUkJpdDZqQk9nSlFZVzQzQUlBZ0RPVGgvdVA2Z3hwRnFjb0dKV2xLZTZVM2MzQnR5bEtqQkV0R2lweWl5QXMxMzFiN3ZFcDRuWmpGUWpmNDZRTVVIRDEzK3hyZXh6Z0ZZVGxIRGxXcXNyUzV4aW1BV0Q1OWVNMHU5UDNqUjA0T2dTZkF5R2FGall3d29JM3dJVHVLaVlHQkFXY0huQUcxby9jZlVUakFTd0QwdmhPTURTc3pZWjAvSnNaL3YvLzkvUGoxNjZkM0hBQUJ4UEx6eDYvTkQ2OGQ4K1RoRi96THdzTDJHekpnaERZR2dlWWdSclNaSlhUMy9zZnJldXp5L3huUVcyREFKUG43RjlQWFQrKzVmdi81dHdZZ3dBQ1ozdzZ5OVphdFp3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2J0bnJlYzEucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQXBVU1VSQlZIamFZbHk3Wm1lRmxMaVlraEMvNEc5V1Z1Yi9USXlNakF3Z3hNUUFCa0FXQTRpUG9DQnNxQ1FtK0E5R1lJSVJTUHdIOGFFQ0tEU0krQWRWKys4L0EwUUlTUDhEYVdBRUN2MzkvK2Z2WDhiM0h6K3l2SDcvNlJwQUFMRklpNHNwcXNuSU1IRXcvcFpnWkdKa1k0QzRFK29xRUJ0SU0wRmN4QWh6UGNoUXFMci9XQndLb2FHTS8xRFhnQndCeEl4UWwvLzdENVdET2d6RUJuRVpRZHgvZjhHZStNdkE4a3VVUytJOUF4T1RPa0FBSHVnZ0JVQVlCZ0pnRWtWVUZDbDQ5djlQOHdVZXBFMU1zN2FVMHBDOVRIZE1SOHF6NUhPeTk3SkNxMk9GR3M0RXIvS1BWRGdFUWtBNWpyVXFPOUI2dlJ6SWlsTHNIRGVFVTRuOTRnUElhNk14RjArWkgrS0YwcmJmbndCTWtWRU93Q0FJUSsxZ2ZwanMvcmVWZFlVUi80aUIyTDdudHh2N3hPVFpvdmFIUjdLdkFNaXlTYkNTL2RhMWsvNmJLdXE5d3c0aDZoSW9ZcVBJeW4wR1F4d2h2d0ljd004djdPbG04UXJBTkJtZ0FBQ0NNTENrLy8vWXpKc1dCVUdOc0hXdU5SbWlaaFlnekYxYUhXanhnbWs5MjhnMStSbS9PWkJKcmF2RllnMUpha2Jsa1ZMU3VNNGdtcWU4LzhYdWpybGVKbWdJUndDcXlTQUhBQkNFWWJENC95ZUxqazJOTnhJNEZPakdDMGFxaE41ZS9YN29ETENyaHRSczNtdC9ySVpqcyt5bDlObEFKc2tKd1ZJbGFoVlVMS1RHVWF3WGV5RmVBdkJRUmlrQWdDQU1WZW4rTjVhbG14ckJQc0pBdCtmem1aaVBoWjFGZE5XQUJFYTJOR0lvbDBMRTdkVUFmYUhwSjBIVXdsUDF6Q21kU2Y3RHhzcEhTM1Y1RGtMYkJXRzNjYjRBVEpTQkRRQWdDTVBFK1AvSGdvNk53QVBhbE1JSmpYT0pQZ1pnYlQ0Z3l5Z3ZnTXlPVmdzVzgrWHk4RUxFN2c0WFRIN0lmTStaU0ZwRGROZm93Tlc5ZGZQNDRRa2dGa1pvSm9CSXdFSVBFdTMva1lvcGVIS0FSUk0wUkZFeUZDTTB5aUZaSFZMMFFOUFdmd1pZUURCQlBBSnlFY3pqZjJGbE05eDEwSUlEVVdBREJHQ2lER3dBQUNJWStMWC95dUtUVnJFQUY2MGphTDN6Sk94SWpEY0piVURjNStwNE1CTldTWkFYMVRzdjYzT3hBcmxwbEgwdE1DZEtDOFRhNUF2QVZKbmJBQURESU5Ddy84NmtDVTlyWENCMENLWWtWM0R2SjZreHFDa1VXQ1JpM0NtYlpXc3M3K2JOTjJYNzJPWExIMllGY1U4QXFzb2dCUUFZQm1FSysvK1hPeVphM0tIblFtM2l5UjhvZ2dpODZONkJZeU5LVzkyamRCQ2pYNFRCNFNNNEd0UHhVdy9jNGhpR3hOWUl2ejFYQUtySzZBZ0FHSWFnY3RmOVI0NStGRWszd1BFY1lqNzlNWEFKc1NPVHdXdlhvSHl0VXFCbndtY2d6MVZEL0lUQUhZb3FVeDA4TTIwaXJnQmlRb1FNdEFpRDFmVklhUnZHL28rVTBPR09RVW0zc0poQjFRaE81LytSb2hQSkcvOWhmRVlzSWNtQXlNd0FBY1FFU3luL1lUa1QxcTVnWkVCNEM5M0ZESWdNaGNoa2lOcUpBVDBXVVVLWkVaRjhZTTRHWnlxRU5rWWtUVEJqQUFJSVVnYjlSMjIxTVNLSEdwS2xqRWkxR0tKeVo4Qk1KZ3hJR1FIRmovK2hTUUNrN0Q4OFF6SCtaMEFKWjFoSUl3VWJBMEFBTWFGVjFZaUNHMW9Vd29wSGlHYmtCaWR5aUNHbFR5ai9QOEp0Q0lmOFIyQ0lBMkdXL0lkRytYOTR6REtpV1FJUVFDendhUDZIRk5PSXVFSnBZc0l6SjRwai82Tm1KbWlrd2xwTS8rR0ZFRnBLUUFrRVJuQzlEMWYzSHlsUW9EUkFBTEZBR2hBSUNVYWtrUHYvSDlsVXFCLy9Jd1UxaGk4UkRXUjQyeFRlcWtlRU9pTlNpRE9neDlKLzFJaUNoUjVBQURGQk5ETkNXOTRNQ01kQXV4S1FGdnAvU04wTXMrd2ZwSG9FNi9uM0R5bnFvZW9aL2lNMW5KSDZKbEFNc3dQVzJtZEFTaHJ3R0VCek9FQUFzU0JTSDhJUjRHSUtGakxJQm9BZHdZUkk4UDhSclIxSXFES2lPUnJSdWdjM3BwQWN6d2luR2FCcEV5cUcxTGRDemt3QUFaaXVnaHdBUUJBa3EvOS9tV2FCY1ZjSDZGUzJPK3RsLzlLNjZocnRiZExBSUpYL1hkNTVnWWFJVXFwZHNHUGV2dUZERUdQT2VmdXFndUpRUndDeHdFdFFXUFRBREFjSEFhak1ZNGEweGtIQkRHN3cvQVd6d2UxSWVLdmhIN3hSendEdHRFSGMrdzhwVlAramhpZzgycEY2QXJBUVJza3pFQzBBQWFndUZ4UUFRQmlFRW5UL0c2ZkJscnB1TU9hSDU0NU5FUDhKMFI2Wk4rbkRKVjBYRnhXZGdXUi9WUlg5YUdrUzl1K0NGTU9RRzhrb09mSkNmL29LSUJhNDRmOWdoVERNa2RDZUk2Z2xEdXRHTU1GS09FU1ZpSEFoVXRKQXl2bU04Q2hGaUlNZEM2YWhBZk1mWXVkL21HZGdvYzZJS0UwQkFnZ2Fva2hCL3gvcVkyZzdFdHhDaDVXQy94aWg3b00yTEpBNlRiRGtDcGFEWnlha3FJVjFtV0gyd2RNdG9yUmdoSThCUVBQS1AxaTM5VDhEUUFDeHdCSVd2Rk1HaTJwUUt3YlVrUDNIaEdpK1FUdHEvMkdkTHVSaUdWYm1JNFVreERKRWVvVGtmR2pYR0RtVC9mdVA2R3Y5UjAzRE1MOENCQkFMTEYyQ2N5TUQxSkVndzZIdFNFaW5rQW5hZFdDQWRoc1kwUnErRElpdXlEOUVVdmovN3g4aWM4SDdUYkRCQ0VRc3dsMERMNnYvSVlvd3FDMEFBY1FDVjhpQUZEM1FhQVozRy83OVEyb3JJalhoL2pQQzJzSFEzZ2NqZkF3Sk9SbWhwRXNHV0JUL2gzYVZvWTZIVmhLTXNFd0d5NFFNalBDWUFRZ2dGbGdaQmhsYWdSYm9USWhNaE9qTE15R2ltNGtSTWY3MEQ5Ym5naFhvakVocEhpa0p3SE0rVXVqOVF5NWZFVFVnTE9SaDZSTmtBVUFBc2Z4alFFNzQveUM1bndFUzFZelFQZzhrby94RDlPZi9vWFlaNEkwWmVEbklnSlRUa2FwV2VIR0ZxSG9oZzJLd2tnQmFaS0dVNlJEbEFBSEV3Z2dkT1FDTm9JSFpUSWdoR0xBalFBYkFRaE5Vd0VOelBDTlNPNG1SZ1FGTEl3UHFDQVpZZW1TQXAwMVlpRExDb3grUlBGQThCWE1za0FzUWdBa3JTQUVBQmtIdS8zK2VFV2wyRFNJd1VXdms2WWZjOExycHg0UGNTQ2hEYngrZWM0UU9NSnU5ZUdRbzZla0pUZTZzMU14Vk9tOWduTEdCNi80U1FDeXdvZ1J1Q0JNam9ndjc3eDlpSEJSc0l4TWtCUDhpdXRjb3VSNVd1ekgreDJ5Y01DQzNzdjZoRnZLZzBUdFk3ZlFQVVhSQm93UU1BQUtJNVQ4MElmK0grZUlmTEhjam9od2U5ZUFxRTVxSi9qUENlekdvQTlDUVdvNEJKWjFDeTl2L1NMa2VIdjNRMHVBZnJHajdoOW9PWUlib0JRZ2dGb2loMENqNi93OHhhc2ZFQ0szR0VJTmE4SnFUQVduOEZLVS9nTnlnUm00ME04QnJIWGoxK084ZlJ1RU9HK1NGcDFOR0pxamovek1BQkJBTHJDYUJGeCt3L2hoOEZBNWE3Y0Z5TmFqbEJHM1ZnczFpUk8yUXdWcGlzQVlIcExCQU9CWXkwUGNQUG5ZUHoxQU1TSmtKTmpJTjBzd00wUXNRUUN6LzRUa09XdGRDeTAxR0JzUUFGaVNkL29YVzczL2hZNk9NU1BFT24yQ0E5VmhobnY0SGE1OGlqVFFqWlNiSWVDbXMrZlVQcFdmd254SFJmUUVJSUpaLy95RWovOEIwK284UjJqYURES0F5UVh3S2RoRFNRQlkwODhCNzNJeUl0amdqYktRRmFVYUVFZEZLUnBwd1FPdTJZSFJkSU9VYXVIQ0U2UGtQRUlBcWM4Y0JBQVJoS0tqM1A2NERDZFFmS3V3a3NFRGJSelBWZGRxRnVIWmNrc3VmUXlHd0RhU3dqNkQzcDhvZVVOZ2QzTG5pMk1jVXVkMDNySmVEU3pZWVQ4WHV3aGlWcmlpaWM4WWhnRmplZmY3SUlzSWw5aDdVWWdlR0lSdGk2b1lCUHFvQkx5VlJ4dXdaVU1lZEdMRDE5UmtSYWZVL0EwbzNHcmswUUE5cG1KcC9RRWQrWitKOC8vN3JHMGFBQUdKNTllN1ROYUFTZFNFZTNoZk16TXovR1dFVFlpZ3pIWml6WDNBUE1ESWd1akp3aHlFNjNWZ3FMS1RlSm1vcGdkeFpCVG45OTUrL2pCK0JqbnovNmRzRmdBQURBSVhEQnZJWnlyYXBBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2J1dGFuZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJPMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFMS1lwVFVsSWFxR2ozZ3psejVpd2dWakZBQUxHUWFIZzlGUjE2QUlpSmRpaEFBTEdRYWNrRklQNUFwbDRGS0NZSkFBUVF1UTR0bkR0MzdnRnlOQ1luSnplUUV6TUFBVFJrTWhOQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBa2RzZTdRZTJLeWxwT0pNTUFBS0lYSWNhMER0RUFRS0lWSWMyVXJOelI0cGlnQUJpSENvRHVRQUJOR1F5RTBBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVlBQVB5R01Qa0dPaUlBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2J1dHRvbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUQ2VWxFUVZSNDJtSmtvQkpJVGs1V0FGSUthTUlmNXM2ZGU0RWE1Z01FRUNNRkRqTUFVdkZBREtJZENDaS9BTVViZ1E3ZlFJNTlBQUhFU0lZREU0QlVQYmJRZ3pvR0dTamdVTGNBaUNjQ0hmMkFXSHNCQW9pUkFnZUNMQVNGemtZZ1BnQzA5QU1ldmFBUTl3ZmlBRFQ5RTRGNEFqNjlNQUFRUUl4RU9GQUFTSzFIaWw1UUtEU0NIRW1NQlZqTUF6azJIODI4UUVKcEdTQ0FHSWxJaC91QldBQXExQWcwc0lGS21RL2s0UGxJWmljQ3pWNkFTejFBQURFUzZjZ0xVSU11TUZBUlFHTnJQalJKNEhVc1FBQXhFdWxJUjNLaW1RUUhneHliZ00reEFBSEVpTU9YOStubFNCeU9CZGw1QUZrZUlJQ1lzT2haVDI5SGdnRFFua1Jvc1FWMkF6VEE0QUFnZ0ppd0ZFRU9TRkZBRjBjaWdVSm9BSUVjMlk4c0FSQkFqR2hSZmg1YXpwR1V1NEY2aVFreFlzMXlnT1lQbENRQUVFRElJWm9BZGVRRFloMEpjaUF4amtUM0RENTlVSWZCa2tBOVRCd2dnRmlRMU9URHlrcHlRaEZmaU1IVUV1c3BxQnZBeVJEVTJBRlZ0UUFCeElSVUhDa2dWWXRFT3hMa1FFTFJTbXkwSTZsL2dPUU9jRWtBRUVDd0VJMkgwZ1NyUlhSSEVrcXJNRFV3R3FRR3hDWWlkRGRDS3dKUUc2RUJJSUJnYWRRQlNaSllYeE9WNWtoSkltZ0FGcUlHb0l3T0VFQXdoeHBBNlFPazVtNXN5UUE5T1pDUU5wSE5RbTQyR2dBRUVCTTBmY0phNHg5SURVMXkweUdSQU81UWdBQmlRV3E5WENDMzNNVG1TSFExNUlRcUVEeUUwZ0lBQWNURU1FUUFRQUN4a0podWFLS1dHQUFRUUNRNWxOeXFFazh0UkxUZEFBSEVoTllSbzdRRlJPMFk1NGN4QUFLSUNhbmRwMEFMUjVLWmlSalFpMDJBQUdKQzZtREJXaTdrTm54SmNpU1JvUS92QUFJRUVBdFNRWjhBcmE0T1VOT3hGSGIrR0tDdHVRY0FBY1NFVm5VRzBLazFUNHd5ZitUYUVpQ0FtS0FhTjBCYlRncElQaGt3UjBJYjhUQjNMQVFSQUFHRW5Pc1hvTFZMOFZwR1RnNG5RVThCdE1aOEFNdnNBQUhFaURZYWR4L0tEU1JsTUl2S1hSRUZhSmRJQUxuckRCQkFqR2lLR3FETmYxQXlVQnlBemgzSURldWgwUTRhejNLRWlRTUVFSHBkUHdGYVZNRkdNT2p0eUFLa3RGbUlMQWNRUUV4WTJvQ0JzQklBT2loQUwwY21JSFdSQzlHSGp3QUNpQmxkdy9uejUxOFlHUms5aFByTUFNaFdBSXB0cElNallZR3lBT2pJU25RMUFBSEVTS3htcUM4LzBDaTYrNUVjbVloTkhVQUFNWkxnMHdmUVhIaUFTZzVVZ0Rvd2dKQWpRUUFnZ0lnWnlIVkFHbytDaFc0aktjUGFXQXJ6QW1oNUxZQ1VKaWZnMHdjUVFJd2tHTjZQTk5vR3E5b1dNaEE1OGd5dDhXREQ0d0pJWmhRU00rNEtFRUNNSklhR0FiU2NEY0RTQ1FPRjhFVTBjWGxvODlFQmkvcUorRWFZMFFGQUFERlNrTDRDR0JEVE44UUEyT2pIUW5KR3JnRUNpSkZLR2NNQjZtQUJMTklIWUUwMVN1d0FDREFBT2Q2TzR2T2h2a2NBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9idXR0b24yLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLYVNVUkJWSGphWXZ6Ly96L0RVQUFBQWNTQ0xpQXJLd3NTNHdkaVFTak5pMDBkRFFBb3hINEI4U3NnZmdIRVh4NC9mdndYSmdrUVFJeXdFQVU2a0JGSWNRS3hEQkNMUXRtc1FNd0V4YlIySkl6K0RjU2ZnZmdERUQ4RU92WWJTQUlnZ01BT2hZYWlBQkFyQWJFSUVETkROZEU3WFRCQ01RUFV3UytCK0JyUXNUOEJBZ2dXcGF6UWtCU0JodDV2YURUOEFlSi9kSElrRXpTSnNVRnBrSnVFb2JIN0JDQ0FZQTRWZ3dveVF4MzVCWWkvUWgzN2wwNE9aWVk2a2h1SWVhQU9CZkhGUVE0RkNDQ1lReVdCbUFNcFFZTWMrUkdJZjBBZC9vOE9vY2tLZFFNRFVxZ3lRUjNOQUJCQU1JZHlRZFBHZjJoMC80STY4Z3ZVb1gvcEVKcXNVRFluMUEzL29XNENpd01FRUF1U2oyRGdIOVJodjJGcEZibVlvQVVBWm1abXBBejBGMXNNQWdRUUUxcU9ZMEIzTUswZENRSlFPN0E1RU80bWdBQmlZaGdpQUNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0NBaG94REFRSm95RGdVSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSkFkK2grTEhEUFM0QUN0QnlDWXNRUWMzRTBBQWNTQ3cvR3dJUlpXcUVIMEd0Smh4ZUZnQm9BQWdqbjBENVJtWkVBTS9jRUdyT2c5U0FZYklJT05rb0R0QmdnZ21FTmZRUld3TXlDRy9rQUFOR0ExRU1PT2JGQ0hnaHdKR3JCakFBZ2dtRU1mTVVCR25ObWhZanhReFFNNWtBdUx6YmNnQmtBQXdRUitRZ1Y0b0k1bGhjb041TkE0S0NhL0EvRnpFQWNnZ0ZpUTBzRnJhTEFMSWptVUVja0FXZ0xrQUlFTmUzNkR1dWtUU0JBZ2dKQWRDaEs0QjAyWG9GQUZEVW56MGpsRS8wR1RHMmkwR3pUUjhPYng0OGZncEFjUVFJeERaVUlNSU1BQUw4ZUZuMVRuMjhnQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvYnV0dG9uYmcucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQU5EU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQkJBTEpacS9NUHhZL0pyaE04TjdJT3NqdzNjZzZ6c1EvZ2JDUHd5c0RDd01uRUNTRjBqeVE3RVlrQVR5WThteEN5Q0FHTWxKbzg4WTNpOSt5dkNPQVlTL01Qd2tXaDhQQXp1REpJTVFnelNEQUlNTWd6QkpEZ1lJSUpJYytwTGh3K0lIREc4WTdqTzhBb2JaUHdxaWtZbEJua0dVUVpGQmhFR0NRWkFvQndNRUVORU92Y0h3ZlBGdFlGaUNvcGhhQUpRY1ZJQmhyTWtnUmRDeEFBRkUwS0UvR0g0dHZzN3duT0VxdzJPYVpSUk5ZRUxRWVpBREpnd21uQTRHQ0NDOERnVTU4akxRZ1RlQkRxVTFVR09RWXRCblVNRHBXSUFBd2xzOGdVS1NIbzRFZ1Z2QVpIV0Y0UkZPZVlBQXd1bFFvQU1YMHpLNnNRZk1FeUIrdGhpYkhFQUFZWFVvc0d4Y0RQTGhRSUE3d0JoOEFTeiswTVVCQWdpclErOEJDeUpxNW01U0FNamUrOEFpRUIwQUJCQVRabUgrYmpHb25CeEk4QkFZcDA4WTNxS0VLa0FBWVRqMEtiQkNwS1F3cHdZQTJmK1U0UU9LR0VBQU1hSFgzYUJxY1RDQTUwQjNBTnNPOEZBRkNDQVVoNzRCU3BGU2Q5TVNnTnp4Q3BoaVlRQWdnRkFjQ21waURDYUFuS0VCQW9nSmw4UmdjeWhBQUtFNDlQTWdjeWl5ZXdBQ0NNV2hvRWJ2WUFMSTdnRUlJQlNIZ2xybWd3a2d1d2NnZ0ZBY0N1bytEQ2FBN0I2QUFFSnhLS2lQTTVnQXNuc0FBZ2pGb2FDTzJHQUN5TzRCQ0NBbTlLN0JZQUxJN2dFSUlCU0hDZ0g3aVlNSkNDSzVCeUNBVUJ3cXlzQUg3dElPQmdCeWh5Z3c4bUVBSUlCUUhNck53QjRyRFF6WHdRQ2t3ZkhMQWU4L0FRUVFFNllDUVhDL2UyQ0hiNWdZMEFNTUlJQXdYQ1RGSUJTcnlDQTJvQTRGMlMrRk5qQUJFRUJZZzA2WlFYekFTZ0NRdlFvTUloamlBQUdFMWFFaURMeXhvSDcyUUFDUXZlSU1BaGg5ZTRBQXdwa1kxUmtrWTdVWlpPbnFTSkI5SUh1eHlRRUVFQk4ramRJZ2pYUnhwRHA0REFxM1hRQUJSSERzNlJmRG44VlhnVjB0V2c1R2dFSVM1RWdPQmphY1kwOEFBVVQwYUI1bzVPUVdEVWJ6UUdrU1YzUWpBNEFBSW1sOEZOajVXM3lYNFNWVnhrZEJSWkFTTU5zQWF4K2l4a2NCQW9qTUVlZDNpMEg5ZjNKR25LWEJJODZDNFBLYUZEc0JBb2lSa3VtYnJ3dy9GNzltK0FSMkxxRXhmRkNGQ0N6MlVLcEZVZ0JBQURFT2xYa21nQUFhTXRNM0FBRUdBQ2lJNVNaKzBic3FBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2J1dHRvbmJnMi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTWJTVVJCVkhqYVlweitZemtqQXdNRERETmh3Y2p5TUlETUpoZjhSMlBEOEQ4cytEOUFBTEdnT1pBRkNUTWowZWlPcGFaRGtSMzVGNGovSU5Fdy9BOGdnSkFkeWdyRWJGRE1qc1NHT1pZSlM4aFN3N0d3VUlRNTdoY1UvNFRTSVB0K0F3UVFDMUpJZ2h6RkFjUmNTSmdENm1oV3RKQ2x0a05CanZ3TmRkd1BJUDZHaE1IcUFBSUkzYUVneC9FQ01SOFU4d0F4SjlTeExFaWhTazJIL29PR0pNaVIzNEg0Q3hCL2dnWU1BeXkwQVFJSTJhSHNVSWVDSENnTXhJSkFMQUIxTEFjTlFoVTlOSDlBSGZrQmFoY0RrdHh2Z0FDQ09aUVpLVVQ1b0k0VUEySWhJT2FIaXJQVDBLRS9vZEg4RWVvT0JxU2tBQXBsWm9BQXdwWkdlYUFoS1FSMXJDQlVERG42cVFXUW8vMEwxQTRHYUNZQ09md3pMRU1EQkJBczF6TWpSVDhuMUdIOFVFY0tROU10QncwZCtnUEprVEJISStjTlpvQUFZa0dLU21abzJtQkh5djA4U0ptTGs0WU9aVU55Sk5iU0JpQ0FXTkJxSlZqSXdod01jelFubWtNWnFaempZZEhOanVSQWxQSWJJSUJZa0dvYWRBY3pvOVZVTUE5UTI2RU1XR3BFOUFxR0VTQ0FXTkRxYjBZc2pzWlYvMU9yQ3NYWHRvQ1hNQUFCaEt0YXhDZEdyUUtma1JTN0FRS0ltaG1EcGdBZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0NBaG94REFRS0lDYWwvamEzUHpZQmp4STJhd3psRTJRMFFRQ3c0Tk9JYkFxVG1hQjdXSVVZc21BRWdnRml3T0JJMnNvWSs5UGNIS1JhbzNRdEZ4akM3VVJ3TkVFQXNPSWIrWU1NcHNORTFOcVRlSWkzNjlkK2g5c0RzL0kza2FMQ0RBUUtJaGNEUUgvb3dDeTFIU2o1RDdmdUc1T2pmVUhmOUJ3Z2dGZ2JVa1Y3a29iK1BhTU1zOUJoN2VnKzE5d3ZVSFQ5aElRc1FRQ3hJaW44eG9BNzlvUSt6MEdzMDd4M1UvaTlROTREYzlRY2dnRmlRMGlac0JPMFRBMko4OGhkVUE3M0hSOTlEM2ZFTjZvYS9BQUhFZ2hiODN4Z1FJNzIvb2Z5QkduR0dPUlFjL1FBQmhCNzFzREZ6V0hSOFpoajRNWHh3MUFNRUVMSkRHWkVTK0crbzd3YkRyQWpZb1FBQnhJS2s4RGVhN3diVlBCTkFnQUVBczlNNTdHUW1UaVVBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9idXR0b25ncmVlbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTkNTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCQkFMSlpxL01QeHdmczN3bWVFOWtQV1I0VHVROVIwSWZ3UGhId1pXQmhZR1RpREpDeVQ1b1ZnTVNBTDVlOG14Q3lDQUdNbEpvODhZM2pzL1pYakhBTUpmR0g0U3JZK0hnWjFCa2tHSVFacEJnRUdHUVpna0J3TUVFRWtPZmNud3dma0J3eHVHK3d5dmdHSDJqNEpvWkdLUVp4QmxVR1FRWVpCZ0VDVEt3UUFCUkxSRGJ6QThkNzROREV0UUZGTUxnSktEQ2pDTU5SbWtDRG9XSUlBSU92UUh3eS9uNnd6UEdhNHlQS1paUnRFRUpnUWRCamxnd21EQzZXQ0FBTUxyVUpBakx3TWRlQlBvVUZvRE5RWXBCbjBHQlp5T0JRZ2d2TVVUS0NUcDRVZ1F1QVZNVmxjWUh1R1VCd2dnbkE0Rk90Q1psdEdOUFdDZUFQRXpaMnh5QUFHRTFhSEFzdEVaNU1PQkFIZUFNZmdDV1B5aGl3TUVFRmFIM2dNV1JOVE0zYVFBa0wzM2dVVWdPZ0FJSUNiTXd2eWRNNmljSEVqd0VCaW5UeGplb29RcVFBQmhPUFFwc0VLa3BEQ25CZ0RaLzVUaEE0b1lRQUF4b2RmZG9HcHhNSURuUUhjQTJ3N3dVQVVJSUJTSHZnRktrVkozMHhLQTNQRUttR0poQUNDQVVCd0thbUlNSm9DY29RRUNpQW1YeEdCektFQUFvVGowOHlCektMSjdBQUlJeGFHZ1J1OWdBc2p1QVFnZ0ZJZUNXdWFEQ1NDN0J5Q0FVQndLNmo0TUpvRHNIb0FBUW5Fb3FJOHptQUN5ZXdBQ0NNV2hvSTdZWUFMSTdnRUlJQ2IwcnNGZ0FzanVBUWdnRkljS0FmdUpnd2tJSXJrSElJQlFIQ3JLd0FmdTBnNEdBSEtIS0REeVlRQWdnRkFjeXMzQXZsY2FHSzZEQVVpRDQ1Y0QzbjhDQ0NBbVRBV0M0SDczd0E3Zk1ER2dCeGhBQUdHNFNJcEJhSzhpZzlpQU9oUmt2eFRhd0FSQUFHRU5PbVVHOFFFckFVRDJLakNJWUlnREJCQldoNG93OE80RjliTUhBb0RzRldjUXdPamJBd1FRenNTb3ppQzVWNXRCbHE2T0JOa0hzaGViSEVBQU1lSFhLQTNTU0JkSHFvUEhvSERiQlJCQUJNZWVmakg4Y2I0SzdHclJjakFDRkpJZ1IzSXdzT0VjZXdJSUlLSkg4MEFqSjdkb01Kb0hTcE80b2hzWkFBUVFTZU9qd002ZjgxMkdsMVFaSHdVVlFVckFiQU9zZllnYUh3VUlJREpIbk44NWcvci81SXc0UzROSG5BWEI1VFVwZGdJRUVDTWwwemRmR1g0NnYyYjRCSFl1b1RGOFVJVUlMUFpRcWtWU0FFQUFNUTZWZVNhQUFCb3kwemNBQVFZQUtFN2xKaVZwOTdvQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvYnV0dG9uZ3JlZW4yLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLUVNVUkJWSGphWXB6K1l6a0RFREF5UUFBakdtYkFRdE1DL01kQ0kyTUdnQUJpUVhNVUV4UXpvdEVNTkhUc2Z5VDJQeWdmbVFaaEJvQUFZa0ZTeEl6a1VHWTBQaU9OUWhZOUJHRU8rd3ZGTUh2L0FnUVFDMUtvd1J3SUVtT0Ywc2dPWnFSaGlQNUhjK0FmSVA0TnBjRnFBQUlJM2FFZ1Boc1VzNkk1bUpFR2prVk9oOGdPL0kxa0QxZ2VJSUNRMHlnejFHRWdSN0lqWVZZYWhpcDZhSUljK0JNcFg4Q1RBMEFBSVljb2NyU0RITWdKeEJ4UWg2T0hLclVkQ2d2TlgwaU8vSWNrL2hjZ2dGaVFNZ2dUVXFpeVF4M0ppUmFxdEhUb2I2Z2RNRWZDa2dFNEpnRUNDRjltWWtOeU1IcjBVOU9oc0pDRE9STG1hQmJra2djZ2dGalF5a2prb29rRktVT3hZU2x6cVJtaWY1QWNpYTIwWVFBSUlCWWN0Ukt5ZzVuUmZFZUxFR1ZBQ2xYMGpBdTJEeUNBV0xCVWs0eFlITTJJVnZoVHU4RC9oOFZ4S0pVTVFBQ3hZS2tlR1luQTFBU0U3QUhUQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBdWVBU3RjbUJialR2anNBdE1BQWNSQ2hDUC9vZlVXYWRFTFJhYXhPaFlnZ0Zod09CSjVaTzB2VXIvN0h3Mzc5Y2oyb1R1YUFTQ0FXSENNV2lDUHJDR1BZTkJ5cEFRMml2Y0hpNE1aQUFLSWhRRnpBQlhtd0Y5b2pxVEgyTk5QcUwzSURnYTdEU0NBV0hENERIbm9EM21ZaFI2amVUK2c5djlHRGxXQUFHSkJjeVR5Q0Jvc1RmNW1vUC80NkUvMFVBVUlJQllzd2MrSTVNZy9EQU0zNHZ3TEtWVC9Bd1FRY29neUl1VnU5REhMZ1J6REI2ZFJnQUJDZHloeWV2M0RNUEN6SWpEK1A0QUFRaTZlL21MeDNhQ1pad0lJTUFCMlNneFY2ejJvemdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvY2VudGVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFaL1NVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRM1IzNjl1MWJIWEwwQVFRUUU1bVdpYng3OTg3eTE2OWZncVRxWldSa0RBTlM0cVRxQXdnZ2toMzY0Y01ITXhZV2xrNWVYdDRmYkd4czc0blY5L3YzYitaLy8vNnhjM056cndiU1pnME5EZXFrMkFzUVFDUTVORDA5bmF1K3Z2NzUwYU5IczM3OCtIRVpLTVQvOSs5ZkZueDZybCsvemdsbHNnQWR5TUxPem43NTVjdVg3NzkvLzU3T3g4ZG5SS3pkQUFGRXRFTkJobTdZc0dITzE2OWZ5KzdjdVdNQ0RORS9uejkvL3MvTXpNeUtUMTlGUllYMnRXdlhORmxaV2Y4QVkrSXIwSkVpVTZaTU1aNDNiNTRBSnlkbkNjanp4TmdQRUVCRU9SUVVUWm1abVRIQUVQbXhmLzkrMlVlUEhzVm1aMmVyQUIzNzZkYXRXNnFSa1pFckJBVUYzYkhwUFhEZ1FIUnRiVzB6a1BuMzNyMTdCdE9uVHkrYk8zZXVLOURqUXI2K3ZtODVPRGlFUWNtSmtCc0FBb2lSaUVhSk9DaE5nYUlMRkJJZ1M0QWg4Yy9PenU2TXJLenMwVXVYTHIzYnZIbHpySU9EZ3lEUUU0bFlNczhXZjMvLzcvTHk4b244L1B5RlU2ZE8xUVU2a2lNNE9QaVpuSnpjWWhVVmxUUFcxdGJUL3Z6NVV5NHNMUHdHbHlNQUFvaUZVRkVDeXFXZ0RDQXBLWGs1THkvdkJqQUtwU2RQbnF5d2ZmdDIyWXlNakZBbEpTVm1EUTBObnZQbno3L0VZY3p6Rnk5ZS9PZmk0a3BmdTNhdEJqQ3BmQVI2OGdvd2pTNERtbmNIbUh4WWdLRTZCVWlyQXRYaWRDaEFBT0YxS05DSFY0RFVGVkJ1QmZxWVcxeGMvRTFjWE53eUlOOFhtTVkwZHUvZS9SZG93UTlnbEg1M2QzZlh3aFZyWjg2Y1lRUVdaUmJBR1BqdTZ1cjZGNmovYUV0TEM4aVJmTURrd3doVWM1Nkhod2R2VVFjUVFFU2xVV0RPL2dOTUluK0FUR1pnQ0Y3NCtQRmpQekJVenYzOCtaUHo2dFdyVEVCSE1BSkQraTRPN2Y5QnlRc1k0aDlCbnZyMDZSTXpLTGtBMDdZZTBKRy9nV1ovQlNraVZOUUJCQkFMTVE0Rk91SXZ5TDJnM0F2S0dFREQvd09qOHozUXdvOU1URXdNd0JEaUJJYmFVMng2Z2NVUkI5QkRvSkxoKyszYnQ1bUFlamx2M0xnUkMweE9Vc3VYTDQ4QUpnV2lTaDJBQUdJaHRuZ0NsWWVWbFpYY3dGejhHQmdxb1BUMEFSWmlRTWY4Qm5wR0c1cytHUmtaSG1CaGY5WEV4RVFZU0NzZk9uVG9HaWpqN2RpeFl6NHBaVGhBQURFT2xhNElRQUFObWRZVFFBQU5HWWNDQk5DUWNTaEFBTEdRcWdGVVZSb1lHRVNBaWh0Z0VhVUZLcGFBT2Y0dEtETUIyd0NCNk9xQk5jLzZKMCtlZkFIbS9CK2dQQUhLZkVBc0NheWRiZ016MWRLT2pvNnJtcHFhM3duWkN4QkFlQjBLTE9RWmdBMEpGREVQRDQvRUZTdFdQQVBXUnBJN2QrNThBaXhET1VEdUFlYjhMemlhZDFlQmpsUUJGbU0vZ2JVY0F6RDMvNWVRa1BnT0xKWmttNXVidnhMalNCQUFDQ0M4RGtVdUVVRE5PVkJMcWJHeHNRM1lnZ0lWL0ZsNzl1ejVEeXJ3Z1FBVVlsaUxEMUN4Qkd6RWZBZVd0UXlHaG9iOFFIMG5SRVZGWjA2Y09CSGtNV2FnUjloQllRSXRxM0VDZ0FEQ20wYVJDMk1nbXh0WXM3Q3FxYWxkMHRQVEV3SkczVjlnemNJQnNod1VVdEJveFJhaXlzQmE1NysydHZZL1lLaC9CNWFqUnFER0NhZ2xCZkkvVUM4b0FBZ21RWUFBWWlJUTlZSlF5d3lCanZ3S2F0YUJtbmVQSHorMm5qRmpCak9RQmpWSVRnQkQ3UjgwN1dFQVVBRVBERVZPRnhjWFJtQTkvdzJZVkw2QldsQ0xGaTJLQXJWTlFXMVVvUGxxaEJ3S0VFQjRIZnJseXhjTkVQM3QyN2VjdzRjUE0wK2FOTWthMU5nRldtNENUQXI4U1VsSk4wRFJDRXh6SUE5SllqTURGT0xBS3ZNNU1BU25BYU4vdGFlbjUyTlFNdy9vVVMyZ2VkSFBueiszQVFaSU5hRk9IMEFBRVVxanQ2SDBUR0RHRVFPbXpRaGdtMU1DMkVSanlzM05mUUJzU1cwR2h0WVhZTnVTRVpTTHNabHg0Y0tGRlJFUkVZbkF0UDBYbUd6MkFtUGtJVkM5MVByMTZ5Vm16WnFsRDNTa3ZMR3g4YVN3c0xBcitOd0NFRURnRElNTEEzMEpaNmVscFhHSmlZa3RFeEVSbVZkVlZaVVBiSlNJUU9XWWdSbEswOC9QendTZldVRE1DV3dqOElIWXdJeGtuWnljUEJsa0hqQTVHUkhRQjhZQUFVUzBRMEVZWkdoWldWbmZzMmZQYkVCOFlOcmlCcVk1ZGhBYjJMTGl4R2NXTU9SWWdEUS8wTEVzVzdkdVpRYzJtbVZCbmlmR2tTQU1FRUFrT1JTRWdiMVFkV0Q2OUFYMlFuV0JORHZRb2N6RVdrWUpCZ2dnY2pXS0F6M1JSS28rb0tjTWdSMjV1ZS9mdnpjalZTOUFBT0hOOWUvZXZjTWw5UktvZVJVcFZTOW9WQVZZeEhHQU9uRUNBZ0tuU0syNkFRSm95TFJIQVFKb3lMU2VBQUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0RBQUhZZmFpb083RlE2QUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9jaGFpbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRmFTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVFQXNwaWhrWkdjbTJLRGs1MlFCSUNRRHhoVGx6NW53Z1ZUOUFBTkV6UlB1QmVEOFFHNUNqR1NDQW1PZ1JtdFFBQUFFMFpOSW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVFQXUxREFJV1B3cEFTZ0dQRWdGS3pBY0lJQllxZWpvQmlPdHBGYUlBQWNSQ0F6TWZRREV1OElFY1F3RUNpQllPWFRoMzd0d0dmQXFBTlJQSmhnSUUwSkRKVEFBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRVp5Wm9PWm1BUjRrOUxSMEtFRUNrNUhvRldwYVRoQUJBQUpIaTBGdEEzRWlFdWdPMGNDaEFBREVPbFVFeWdBQWFNcGtKSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUlNQUpEeEcxUzVHd2ZvQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9jaGFyZ2VuLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFJUlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1dBVFRFbEo0Wm83ZCs0M2JITEp5Y2tGUUtvZlNlZ0FVSzBqUGt0STFRTlV6enBuenB6ZnlHSUFBY1NFeFpGOHVCd0pCZjVBdkFDSVFSWVZBckVERVFGQ2toNmcvYitCN3VCQUZnTUlJRWIwMWhONmFBSjlad0NrNWdPeEFaS3lScUNhQnFBY3lNTDlSTVllTGowUG9ISUwwRFVndXcwZ2dEQ2lIaGprMzRDYWtJWFdRdzF6UkRNY0JDNmdpZU1EdVBTQUhENGY2QUZRY25pQUZtaWNRUGQ4QjdFQkFnanNhblNNbGw3K1EwT0JaZ0NYSFVBeENaaWJBQUpvVU9kNllBaS9nTEVCQW1qSUZFOEFBWVRoVUVaR3hrSHBVSUFBR2pJaENoQkFMRlRNRUxneTNBVmdXdnRBcWZrQUFjUkNSVS9qS2s5QlJkRUJTZzBIQ0NBbWJJWHNZT3hDQXdRUU5VTVVWOEYvZ1JxR0F3UVExUndLVEljSHFCMkt3SFRQRDZRK2d0Z0FBVFRZYy8xM0dBTWdnTEMxbmdhTjQ0SDEvQzhZR3lDQXNEbUtEVXVocjBERGVsNEFoemhLc2dRSUlFWnNPUnpab1VBTm9BWnZBVFdLR0J4QUFackdGWEUxOFVBQUlJQVljUlZGYUk1Tm9HR29naXFEQmNpVkFqWTNBUVFRNDFBWmRnUUlvQ0ZUMXdNRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RSUFCQU9WQm93bkdNUVBIQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9jaGFyZ2VwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFKbFNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1dBVFpHUmt4S2toT1RtNUFValZRN2tmZ0RoeDd0eTVHL0NvRndCUys0SFlBQ3IwQUlnZGdYb2VJS3NqMU9ZQUNDQ01FRTFKU1dFbDREbVFJdzJCRm9GOHN3REpBYmdBV0I2a0hxb0g1RGtGVWtNVUlJQ3doU2dqV29pQUxPcEhGZ05hZUFISy9BakU4VUExOW5qc0VJQTZqZ0VwRnZxQmVtQmlGNERtRlJKeUtFQUFZVGdVcU9rWG10QjZJSjRJTWhES2IwU1NBNFhvQVNJQ0JObWhoVkRIdzhCOG9LTTNFaklISUlEQWFRT0dnUnBFc0tReG9odXNvUFFMVWcvRSswblFBd3JkQm1SM1lNTUFBWVNlUnI4TVFJYitTSXdpZ0FCaVFvdjJINE8xZUFJSW9DRlRqZ0lFRUFzbG1rSHBDNjE0Z2hVN0J1anBGQmhianBUWUJSQkFMQlI2Rk9SSUJ4eEZrZ00xUXhRZ2dDaDE2RUlnUG9qRXQ0YzY4QUZVam1vQUlJQW9jaWd3T2hkZ3FWN0JEZ1hLTlZEVG9RQUJOR1F5RTBBQU1hR0ZpTnhnZFNoQUFLR0hLQnVGNWoyQVZvVVhxTzFRZ0FCQ1NhTno1c3k1QTB4YmxLYlpCYlFJVVlBQVlzSlNOc3BqRVRPZ1lhejZFeE1EQUFHRUxkZS9SdU9EV2t2N2dZNjlRQU5IS2tCYlZnUmJZQUFCeElpdFpRMXNQRXNBby9FRlVvZ3FrTlBZSlRLNUhDQ21oUThRUURpYlZVREhzZE16VnhOcTVnRUVFQ00rbitEck85SENvZmdBUUFBeEVXaDBzREFNRWdBUVFJekVqRGpUTW1TSkhmRUdDQ0FtWWcwRGhpN3pRRGtTQkFBQ2lIR29qT0VEQk5DUWFaUUFCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRWUFKSGczNWZQeldRMEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvY2hlbWRyYXcucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUU5U1VSQlZIamFZdnovL3ovRFlBWUFBY1RFTU1nQlFBQU5lZ2NDQk5DZ2R5QkFBQTE2QndJRTBLQjNJRUFBRFhvSEFnVFFvSGNnUUFBTmVnY0NCTkNnZHlCQUFBMTZCd0lFMEtCM0lFQUFEWG9IQWdUUW9IY2dRQUFOZWdjQ0JCQUxzUXJacWsxUjJtVy9Xazh6NHBOSFZ3T1RKeVNHRGdBQ2lJVVV4eEZqT0l3UGtnZGhmSllUQXdBQ2lJa2N4eEVEa0IyS2pVK3N1UUFCUkhZYUJCbE1ycU54OGJFQmdBQWFrRXlDTGIzaUFnQUJ4RVFQU3lnQkFBSEVSSytRd0pjZThRR0FBR0lpTmJGVDZoZ1luMWh6QVFLSWhkakVEU3MyQ0NWd1l0U1FBZ0FDaUhHdzk0c0JBbWpRVjNVQUFUVG9IUWdRUUlQZWdRQUJOT2dkQ0JCQWc5NkJBQUUwNkIwSUVFQ0Qzb0VBQVRUb0hRZ1FRSVBlZ1FBQk5PZ2RDQkJBZzk2QkFBRTA2QjBJRUVDRDNvRUFBVFRvSFFnUVFJUGVnUUFCQmdEdzdXWlAwNi96cEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvY2hlbXNwaWRlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBUVdTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFRUZVY3VuZnYzbitFMUR4NDhDQ0dFanNBQW9pRkdnNTkrUEFoSXo3NVhidDIvWC94NGdXRGdvTENFbkx0QUFnZ3FvUW9JeU1qSWZuL2hOUVFBZ0FCUkxSRFAzMzZKSUJMamxCWkRKUm5wTFM4QmdnZ29oM0t4OGYzZ1Z5SFVnTUFCQkJkb3Y3WHIxOE1sRVk5UUFBUjdkRFRwMC9mMmJwMUs4NmcyNzE3Tjg2Yy8vTGxTd1lsSmFYMzZPSnYzNzVWbkRWckZsSFJBUkJBUkRzVWFKbnkrL2Z2c2NySnk4di9mL3o0TWRZZ3UzRGh3bUZRYUZwYld3dWh5MzMrL05tYWxaV1ZLUHNCQW9pSmxPakZGWDFxYW1xQnVPVHUzcjFydzhURXhFQnArZ1lJSUJacXBFVlpXZG1OSUF2bno1Ly9IMll4VEMzSWtkTFMwdjhwZFNoQUFCSHRVSkNCdUF5ZE4yOGV1SngwY1hFSitQZnZIeTlNUFVqc3laTW5rKzdjdVNONDRzU0pKeFlXRmpLa1prUVlBQWdnRmxKQzgrL2Z2eGppYytmT0JicytLU21KY2MrZVBmKytmUGtDTHpPQmptWUlEZzVtWkdGaGVYRHo1azE1SVArMWxaV1ZLRXp2NWN1WEZ4UHJVSUFBSXRxaERnNE9QQ3RXclBpeVlNR0MvNkFNSUNFaDhSOFlXb3dnaTBDT0JLbGhabWIrQzNRVUN5dzBZUTQyTnpkWEFGWDNOMjdja1AvMjdkcy9rRDVZREdscmF6OGt4bjZBQUNLNXh2ano1dy9qNnRXci80SEtSbEFJZ3h3SkxCSDB4Y1hGTHhMU2UrVElrUS8zN3QzajUrTGlZdERRMEZpcm82TVRRcXk5QUFGRWNvRVBDckRJeUVoR1NVbEplUG9DbHE4WDhPazVmUGp3NTZWTGwvNEhscVYrSU0rRmhJUXdrdUpJRUFBSUlJcHFKcGhEaWFqckthNEJBUUtJYmcxbmFKcGxKVmMvUUFCUjVGRDBNaE9QSS85UjJvQUJDQ0FtQ2tJSTNzWUVaakM4YW9HWjV3RWJHeHRKNVNZNkFBZ2drblA5MGFOSDN3R0xHVUZncG9KVm55OHNMUzBsaWRFTHFybVErWnFhbWsreFZRTFlBRUFBRWUxUVlHNWxCSmFoNENpVWtwSUNsWDlod0dLcC9mcjE2OHBBeDRJdEJOVlFvRUllMWk0QW1RMHNmd3VWbFpVbmdDb0dXSmtMYXFnQUd6RTJyMSsvQnNkR1dsb2F3V0FHQ0NCNDFVZ0luenAxNmc3SU1uUnhZTlg0QUZRSkFJdWdEN2owZ3ZTQlBJRkxqaGo3QVFLSTRzNGRyTllCVlpIQU92MC9jajBQWTRPU1NWeGNIRVV0WjRBQW9rb3ZGT1RZcTFldi9oY1ZGV1VBVmErd1VBQTU5czJiTnd5Q2dvSms5dzVnQUNDQVNHbVUvTVlsOS92M2IwWlFjODdYMXhmRDFuWHIxdjBIcFVWS20za0FBY1JFUXBuSmlzdlFqUnMzL2dNMlNMREtCUVVGTVZMUzM0SUJnQUFpT2pQaHc2Q01BbXl5cmNFbHYzRGh3di9MbGkzRG1tbUEzUkUrWXV3QUNDQ3FWYUg0R2huQUppRW9lV0NWNCtIaCtVU00rUUFCUkJXSDBxTmZEeEJBZE9uWFU4TXpBQUZFMTlZVEpRQWdnS2ppVUZ6cER6azBRVlVySlFBZ2dCaUh5bVFEUUFBTm1SRm5nQUFhTWc0RkNLQWg0MUNBQUJveURnVUlNQUNJUG9SM0lzMXlrd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9jbGVhbnVwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBRG1VbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFzUkNqaUpHUmtTRTVPZGtZeUZ3QXhEcEEzRGgzN3R3R21Edzl5bUtBQUdJaXhwRlFjQWFJYzRIWUVJanJnUTRYb0dlSUFnUVFFNUdPaElFSHdKQzhBS1EzQUhFQVBSMEtFRUJNSkRnUzJYRWJnZGlmbmc0RkNDQ3NEazFKU1dIRUlneHlYRHl5bytrWi9RQUJoTldod09qRmxqdEFqbE1BT2s0QktQOEJ5aytnbDBNQkFvZ0pTMml5NG5EOEJ5elJIMDh2aHdJRUVCTVdCLzNHb3g0OStnMUFJVXdQaHdJRUVCTXhvWW5rQ1d6UlQ3UGNEM1FQM0gwQUFZUWVvcHhFNkFjNUxoL0tYa2pMNko4elo4NC9HQnNnZ0pqUVF1d1RFZm8zd2tJUkZzSkFuOU04K2dFQ0NNV2hvS29RRzhZUy9RTEE2RGRBQ21HYTUzNkFBQ0szVWJJQUtjcnBrdnNCQW9oY2h5NmtkL1FEQkJBak1TMGZMTlVwcURWMUgwaE5CQ1VEYU9aU0JDYitEN1J5S0VBQVVkSWVEUVMxb3FBWTVOaCtZS2pTckVvRkNDQktIQXJLVEtBUWRBUmlRVkQwZ3h4TEs0Y0NCQkFsRG9XMW5rQWh1aDRhcWpRci9BRUNpT1EwQ20weDlVTWRoUzJxRDBCRGVpTXd6UzZnbGtNQkFvZ2NoODZIUm5NakhpMEswSkIrQUVyTDVHWXlZSnBuQnVyOUMySURCQkJSZlNaa3p3QTFHMEJ6K3dPZ0lRL3dXTElCR3ZMN29kMFhjZ0M4Q2dVSUlLS2JlV2laQ0JTcTUvSGxjbWdvRmtMTm5FOUdhTElEellDSEVFQUFZY3RNLzRDSzJBaVlBK3MzelNmUXFJQ1ZDZ0VneDVKWWZLRTBOd0VDQ0dzYWhmcm1KdzZmL29kbUZrVm90SUljWFlndkhVSWR1QjRhR3lBUFhvVHFnM25vQUpwNk5xRFlMMlF4Z0FEQ21abUFpcm1CaXI5aUVUOFB0VEFSS1ZRZG9KbHJBUUVIRzBCTEMzbG9ob05sdkFOQWZZbXdwQWRrWXpUZUFRSUluME5CR1kwUlhSTlFITGxvQW1XcUNWQ0gxME1kdkFIYVVEbUFMN09oaFRhb09qWUVxUWZ4c1hrV0lJRHdGayt3aklYc1dLakIrNkdPUTI1TVg0U3k5YUVPRm9BbUVWalN1SUJtaGdGVUhVeTlMQkNMQTlYZHhlWVdnQUFpV0k1Q1F4YmsyRDlvNGdIUTJza0JLUnB4Z1FkUXpBQlZENnNZUUdJSGdYZ3JFUE1BN2JpUHl3Q0FBQ0txd0lmMlhaaXhwUjIwRUJKQUMya1krSUNVZVM0Z1J5MVFMNmo3d3c4VWU0SFBEUUFCaExOVmp3MERheVVtUWowQVVnRFFQSGxpN1FZSUlFWlNMWUtPb25BQ1ErQWJ2dllxQVFlS2dVSVp2UWpDQndBQ2lKR1NFQUU2R21RaEU3Q1YvNElJeHdsQjAvbzdjdXdDQ0NER29UTFBCQkJBUTJiRUdTREFBQTRwbmJ6cnNiYU9BQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2NvcHkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDRWtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQXNSQ3JrSkdSRWM1T1RrNFdBRklKUU94UG9uMGJnZmpBM0xsekx5QUxFbE9XQXdRUUM2bU9oSUw5UVB3QmlCY0M4UU1pSFFuU2N4QkVBejJhQ0hUc0JtVHpDVGtXSUlBWWlmRU5XbWlDUWpJZmFKRWhLVUVKMUFleXFCRWFDd1pBREhMc0FtSkRGU0NBbUVpMERPVEllR2dVa2d0QWVrR2U3SWVhUnhRQUNDQW1FaHpaRDZUcXFaRXhvR25VRWVyWWZtTDBBQVFRRTVHT0JHV2VBbWhJSENUVGZhQTByUS95TERRWm5BZGlzTGxBL254Q21nRUNpTmdRTllEbTFnOFVCQ1FvZlFiZ2tGdElTRE5BQUxFdzBBa0FQVGtCU0UzQUVsdjdpZEVQRUVCRHBzQUhDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWl4Nkdncm9jOUZkMGdRSXdpZ0FBaXAvVzBBZHJnWFEra0oxTG95SHhveStyQW5EbHo4Q29FQ0NDU0hRcHFrd0lkYVFodDdaUGI0bGVBMGdlZ0xYMkNBQ0NBaU9yY3BhU2tLRUJiNUlvVU5wNlJ1elVmZ1dZMUVOdTVBd2dnb251aDBLaFdnTGJVS1hHc0F6VEtIWkg3OTRUY0FSQkFwRVE5cU1kWUNFdFhGSUFQNkk0a0JnQUVFT05RR1hFR0NLQWhVNDRDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQmdBVCtKK1VzUWZ2dHdBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9jb3B5Y2hlbWRyYXcucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVh3U1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFMTVlxTXpIV3kvTHlEZUQ5Ly92aVBWQXQ0ZVhtWmR1N2U5djNFa2ZNemdkeWZjSEZCTmdZWkdUbUdaOCtlTUh4NDg1MmdPUUFCUkpSRHJTMXN4QnJxbXBoQWhyS3dzQkR0eUgvLy9qQklTTWdBNlgrOFFJZXl3QjBLWklsRHhJazJDeUNBaUxMMTUvY2ZmejYrZThmeTRzV3ovNWdPL1ljekJmMzY5WStCaVltRDRldlhyeUJGNExxYWhZT0JRVmxaaGVIM24xOE16RXpFZXhvZ2dJaFd5Y1RNRExTVWlZR1RreE5NZzBJRFJMT3pzMzMvL2Z2UGYzUzMvd0ZpVnRZL0RQejgzRUM5TEl3Z2Q3TnhBeDJwcE1Mdzg5Y3ZrdE1vUUFDeGtLUVlHSnBYcjE1aCtQNzlCOHl4ekRkdlhyY0V1b2tkeVA4UGlXNW9JQU1Ka0djRWhZVVpMbDg2RDNMb2Z3bHhxZDhmUDc1SGhEZ1RDL09mUDM5ZUE1bUxDTmtORUVBc3BQcnM1ODlmd0NqOXljREN4UHIvMGJPSGJOZHYzZ3dvTGl4bEFDWUxzT01ac0NRTWJVMXRoc3J5YXM5ZmYzN0R4ZjhDUFNFakxzWFEyTno0Z3hpSEFnUVFTUTRGaFJBL1B6ODQra0doKytiZEcwWkZlUVVHUTBORGhuc1ArSUdPeDI0Y05nOEFReEtZVnRVWnhDUkVpWElEUUFDUjVGQ1FoUjgvZm1UNC9Qa3pNUDJ4TWJ4OSs1N2g1KzlmUVA1WGh1OWZ2Mk4xRUM0QWN1aTdkMjlBTWZTWEdQVUFBVVJpMVA5akVCSVNCSVlvTHpCRW1ZQU9CRHI2L2tlVUVDY21WbUFPSmFXMkFRZ2dFaDNLQkV5THI0SEZ6V2R3MUQ5NzloSXN5Z3lWUFhIaUZEQ2pmY2ZyVVpCRFFZN1UxTlJrVUZmWFpDQzJKQVVJSUtJYytnL285ZC9RY2xGVVZCUlUyd0NqbVFYbzRPOE1EeDQ5WUlERm5iS3lBZ093cU1MaU9FUm8vdnZIQks0SXVMbTVHWDcvL0UxMEVBRUVFQXVSTVE3TXByK0JqdnZIOE9USk0yZ2FaV0o0OU9nUldCSVdvbzhmUDJQNDhRTlVkR0ZHTllUNkMvWUl5SkV5TWxMQXNwYjQ4aFFnZ0ZpSWkzQ0lZMEVoS2lVbHdmRGpGekNITTdBQ0xmM0g4T2dKSWtSQmNxQm9SVTZya0ZDRXFQajdGOEpuWlFYcC9RMTJQTEhwRkNDQVdJZ05VRkJOQXdxcDI3ZHZNM3o1OGcyY1JoODl1cy9BeHNFS0Q5R1hMMThBazhNM3FOZGdJZmtYN0VBUS85Y3ZVTjB2d2FDcXFnd3VLVWlwNndFQ2lHaUhndExWOSs4L0dTd3RMU0VoQVhUMXpkdFNET2ZPbldINC9ROWFDd2tLZ2RNdkpQVCtJWVVvb2tnQ3lZTm9rS21nVVAzemg3aDBDaEJBeERrVWFOaS9Qd2pmL3dVR0VjaWhzSEtUQ2VxZ04yL2VBRVB0RjRyai9vS0RFNUZPWDcxNkJheUdyektvcUtnQlExYWRnZGhzRHhCQUxNU1duekR6ZnYvK0M2L1AyYUExMGE4L2tKd095aVNnOUFmSzJVeE12NEZxZ1VVWE13TTA2bUdoK3crc2pwK2ZsNEdEZzV2b1JBb1FRRVJtSmlaMkxpNXVGbDVlL3YrUWtBUTNpUDkvLy8yZEhSWWtvQ2hVVjFlSGhpUnFrUVRqZy9TeXNiQXhzSE95ZzlsQ0F2d01ISnpjUkRrVUlJQ0ljdWorZ3dmdXBtY204QUFMYzdEMVRNQ2lDZGhjK3YvczFXcytNeE16ZU5UKytQRUxYQVRCTWcvSWNiQU1BM0lZS0NSQm1JMkREWktXZ1I3KytPNHRNekZ1QUFnZ29oejY0TjZ6eFEvdWJXRENrc2ZFVEF4TU9rRHA5Ky9mUC9CMENDcHYveUNsYVhaMmRtQkdFMlM0ZFBVU3c5WnRHNEJzRVFZV1ZtRE5CaXlUVjZ4YjkyWTVFVzRBQ0NCaXE5Qy9VSXpSaVA4RExINSsvd1hsWG9nRFlSa0pSTE94c1lGYldpQmFHTmd1ZmZ2dUxiQkllOElBYk1jd1hMOTBuZUg4eGZNZ00zcUljUUJBQUpIY0hzVnNVREVEUTR3YmlEbmhwUUNvak9YbTVnUm1GZzZnUTdtQm1CMGMxZnk4L01EWVptVjQrZXcxdzhYckZ4a0VSYm1uQXN2VEtjUllCQkJBbERxVTRlUDdOOEJxOVJHdzJJRTBuRm5ZV1JqWVdkZ1p2djlpWTJCbEE0WG1ld2FtZi8vQXhkYTVpNmNZVHAwNENpenNmOXdEaGVRdnB1OXptSmlaaUNwSUFRS0lrWmp4VVVaR1JseFNiR3djREJuQVBoSHZuOS8vNEJrTmtVaGdKY0kvV0pFR0N2SlBRTHdiaUc5d2k3TXcvUDd5aitIbkY4Sk5Vb0FBWWh3cUE3a0FBVFJrUmtvQUFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWd3QUFERG5aL0kwSVFiUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9jb3B5cHJvZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUN6MGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBc3BpaGtaR1RIRWtwT1RIWUNVQTVGR0hKZzdkKzRCZEVGaWlraUFBR0tpeEpGUVlBREU5VUNzajBlN1BsU05BWWxtd3dGQUFJRjlRd2dUQXNCUWJRRGkrWGprMXdOeEFTVnVBUWdnSmdwQ0VobHNJQkQ5SUxrRGxOZ0ZFRUFVaFNSYXFQMG5SNDVZTndFRTBLRE05ZGhDRmlDQWhrenhCQkJBZzlhaDZLRUtFRUJESmtRQkFtaFFPelFsSllVTHhnWUlJS280RkppckE0RFVBenhLTGdEVkpKQnFMckFXK3daakF3UVFFeFVjS1FDdGRScHh5SVBLMElrZ05WQzFaQUdBQUtKR2lQWUQ4UWVnN3hmZ2tQZUh5bDBBNHZua1dnSVFRRXdVaG1ZQnROWUp4S1BNQUJydGlVQ3NBS3B1eWJFTElJQ1lLSENrQVRRMEE0RWg5b0dJVUdlQU9qWWZtaHhJQWdBQnhFUkJ1dHdQc2hqb3lBdEVhQUdwNzRlcUxRUmlVQ05GZ1JRN0FRS0lFVitkRGl3ZVFGR0d6VUIvcVBoRUl1eUlSekxERWRRZUJUb1NGTUlPUUxZaE1mVStDQUFFRUNHSDdpZWhVVXdNZUFCMG5DSTBWczZETWhpUW4waU1Rd0VDaU5RUUpTVWtzWVVvS0Mwcmd0STBOUG5jQnlVRlBDVUczS0VBQVlUWG9jajFMVFR6d05MbEJoTFNNM0tzZ0J3MUFhMk1YUTlORWhldzZCV2FNMmZPT3hBYklJQ1lTTWc4b0RKd0lpbU94TkpmbW9CVzh4eUFWaFRyY1ZRRzhGQUVDQ0JpYy8xOGFQcHFvQ0I5RnVLb0ppZEFLNFAxNkhMQTBId1BZd01FRUJNUm9Wa0E3WlFsVXVESVJnTEZHTWhzQWVUS0FNZ1dSRllBRUVERWhHZzkxS0lQNU9aMElKNUFvUEh4QVpvRTZyR0ZKZ2dBQkJBeC9YcFFEdS9IMThza0FpUUE5Uk5TOHdIbUlhQmFmaUQxRVZrU0lJQ28xcm1qRmdBNmtoV2JXd0FDaUpHUWc0anNMbE1ONEhJUFFBQXhrYXVSbm80RUFZQUFZcUxVQUhvNEVnUUFBb2lKV2daUmtDWVppVEViSUlBWWg4cGtBMEFBRFpudU1rQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JCZ0E2MlJiMnZHWkhYMEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2N1cnZlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFOUFNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBc2xtajkrL0tpeWRldlcyMmZQbm1WNC9mbzFYRnhBUUlCQlcxdWJ3ZFBUYzdLY25Gd2VOUndLRUVDTTVOVDFOMi9lUEQxMTZsU1QyN2R2TThEME16SXlndGt3R2dhRWhJUVlNak16R1d4dGJSa3BjU2hBQUpIazBCOC9mbkMydDdkL08zbnlKRnhNUVVHQndkN2Vua0ZHUmdZdTl1clZLNFlEQnc0dzNMdDNqK0hmdjM5Z2gwdExTelAwOXZhcUFrUDdEamtPQlFnZ29oMEtpdWFNakl6Yjc5Ky9CL01ORFEwWkNnb0tnc1RGeGRmajB6ZHo1c3ovbXpkdlp2ano1dzhET3pzN1EzTno4d2M5UFQxQlVoMEtFRUJnM3hMQ29KQ01pSWo0Nys3dS90L0h4K2YvcVZPbi9oT2pENFlmUEhnd0tTUWtCSzRmeENkRlB3Z0RCQkJSSVZwWldmbi8vUG56REt5c3JBekF0RWxXQnZuNTh5ZG5Ra0xDdHc4ZlBqQndjbkl5TEZ1MmpJdURnK003c2ZvQkFvaGc4WFQ1OHVYM0lFZUNNa2x0YlMwRHVia1lHTzNmWjh5WW9jckd4c2J3N2RzM2hnVUxGbndqUlQ5QUFCRjBLREFFQlVDMG1aa1pDRk9VYy9uNStlK2twcWFDMmNCaURSekt4T29GQ0NDOERuMzU4bVVnTUQyQlF6TXJLeXVJR3VVaE1JMHk4dkh4TWZ6Ky9adGh5NVl0b0tTZ1FvdytnQURDNjlEdDI3ZXZBOUVxS2lvTWhISTNzV0RTcEVuL05UUTB3T3pkdTNjelJFVkYzWTZPanY1UHlNRUFBWVMzWmdMVk9DRGc0T0JBbFdxd29hSGhQNmdNWm1LQ2hNK2pSNC9BNWV6YnQyOEo2Z1VJSUNZQ1pTZVlWbFZWL1VBTmg3cTR1SUNMbXI5Ly84S0xSckFqZ0E0blZCRUFCQkJlaCtycTZqS0lpWW1Cb2oySkdnNjFzYkZoNU9MaVFpbkRRUUJZVEJIVUN4QkFlS08rdExTVWtZSEtBSlNNdG0zYmh0SW1FQlFrWEZFQkJCRGRtM25oNGVGQnNEUUtBNkJZSXdRQUFvanVEZ1dWSHNCS0E2T0ZSUWdBQk5DQU5KeUI5VDRLSDlTeUlnUUFBbWhBSEFyTS9ZeWdkZ01vbllJQUtJUUpBWUFBR3JDdWlKMmRIVHo2WldWbEp4TlNEeEJBQStiUXVMaTRJRkQ3RkpTUkpDUWt5Z21wQndnZ3hxRXk3QWdRUUVPbUZ3b1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFR0FFRFpaeE1pVUNkUUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvY3V0LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBRGowbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFKSGxVRVpHUnFKeFNrcUtBeEFMb0l1VENnQUNpSVZVQnhJTGtwT1RBNEJVUHhBckFQRUdJQTdFWmhheHhTTkFBREhSeUpIemdkUjZJRDRBeEJlQStBT2w1Z0lFRUJNTkhKa0FwRUE0Y2U3Y3VZbEEyZ0NJTjFKcVBrQUFNVkhUa1ZDUUQ4UUxnSTVjQUhTMEExVHNBS1gyQUFRUUU1VWR5WUFXZ2lDSFhnQTYrZ09sTVFjUVFGUXRuckNFb0QweG9Va01BQWdnYXBlaklJYytRQXBCRVA4Z05Rd0dDQ0JxTzFRZm1zdGh4Uk1EdFVJVUlJQ283VkFEcEJDMEp5VjlFZ0lBQWNSQ1FwRlREeTI4UWVBQkVCY0NIYkVCU1kwQVZQNENVclFmSU5KOEFhZ25IMEF4QmdBSUlCWWlESmtQTFJjWElEa1VCTllENVJxQmptMUFDazBHSVA4QWtzV05lQnptQUExMUI1aGVxTWNjc2VrQkNDQVdJbkp4QXRTQUJHaG93VUlPSkZZUFZBTXFNeC9BaWlLazBJU25UNkFhQmFoanNEa01WSlFWQXZGOFhLRUpBZ0FCUkNoRS9hR1dHMEFMOFVTb3hldVJvaW9CeUorQXBCYVdQa0Zwc3gvcVdRVjBoNEZDSGlsQUdxQUIwSWpMSVFBQnhFSkU1dGdJVFo4TGtjUW5BdkYrcU1YODBOQUFPZVlCTkQzRFFsUUFxdThBc3NPUUhLZ0FqYWw2YUpYN1lNNmNPVmdkQWhCQWhCeDZBUnBTb05DSlI4b2MrZERRUEFpMUJLWTJBSW8zQUMwMXhKRmhIS0RGbUFITWMxQkhMc0RuRUlBQVlzVFh6QUsxSmFFaHR3SHFnQWRJSVJVSXpUZ0ZRTFk4VWxMNEFBMmxRQ3lPZ25rSWhDOUNpeStVa01ibEhvQUF3dXRRVU4wTGRBaW9UVmtBRFUxWW1mZ0JhckVEV3VnYklNa0xFSElVTm9ETFBRQUJSTkNoU0xWTVBaSkRMa0FkZmhES3pvZDZaZ1BVQXlpWmp4U0F5ejBBQVVTVVE0a3N0TThqWmJ3RDBCejhBRnAwVWV4UWdBQ2laaFZxZ09SQUEyamF2ZzlOT2hRRGdBQ2lpa09SbW5jUDBKTEdCbWc1TzU5U093QUNpRm9oQ3F1VitxSHA5UUxVMFFGSWpqV2d4QUtBQUdLaGtrUHRrUnptQ012ZFFNZDlRQ3Eya0t0WWtnRkFBRkV6alFxZ1JUOElmSVNXQWgrUTVNa0NBQUhFUWlnSEVwbnpIeUNGM0h4Z1NDWkNIUWhMQmc3NDZuRkNPUjRFQUFLSWhSak5SRGdXNUlqN1VFY3BRTmtNU1B3SHlHMVhVaDBKQWdBQnhFUkoyUVlEMExJeUVhbEMySUJVK0F1Z2o1S1FhajRJQUFRUUl5a2p6b1JDRnRvYXlrZHk4RVpvRGZXQkVrZUNBRUFBTVE2Vm9YR0FBQm95dzQ0QUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VHQUFabUl2Y0NSRzAwTUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2RlbG9jYWxpemVkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQjJrbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUxHUXFvR1JrWkZrUzVLVGt3MUE5Tnk1Y3k5Z2t5ZW12UUVRUUV4MGN1UitFQWF5RlpERmdUaUJXSE1BQW9pRmx0RUZkUmpJa1FKQURBck5EMmlPRndDeVFXSWJDSmtGRUVCTXRIUWtNS29mUUIwQmNxUWprUDhCMlpGUThRUEVtQWNRUUl5a3RFZUpqWG9reDJ3QU9pNFJpN2dBc3VPSmNRTkFBREhSSUNTUkhXTkF5SkhFbWdzUVFFdzBkQ1RZTWRSd0pBZ0FCQkMxUXpRZTNUSFVjQ1FJQUFRUUN4VkRNaDdvZ0VJZyt5T1FQWUdhamdRQmdBQ2lPRE9oT2FZUTZKQUpwRVkzTVc0QUNDQW1LcWZKQmRSS2srZ0FJSURJRGxGb1lYNmVHbW1TR0RjQUJCQVRtU0ZKYkdGT2NVakNBRUFBa1J5aTZJVTVrQzlBcVNPSmNRTkFBREZSa0NaaExTS2FoaVFNQUFRUXFWSC9EVW9qRitZS3RIWWtDQUFFRUVrT0JUcmdGcEF5UW5NTWlINUFTMGVDQUVBQU1aSTZTSWFqTEJXQUpRTnlIRUdNR3dBQ2lIR29qT1lCQk5DUTZUTUJCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FZQUNqbDNsL1hZL1luQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9kaWFtb25kLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FNQUFBQzdJRWhmQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHTVVFeFVSZmYzOS83Ky9oMGRIZm41K2Z2Nyt4c2JHeHdjSEFVRkJlN3U3bytQaitUazVPdnI2NG1KaWYzOS9Td3NMT0xpNGhRVUZKdWJtOGpJeUFNREE4TEN3ams1T2VQajQvajQrREV4TVJFUkVlbnA2Zkx5OGxwYVd2SHg4ZHJhMmo4L1A4ckt5cGVYbDlMUzB1cnE2dnI2K3EydHJSWVdGcWlvcU5mWDE4N096Z2tKQ2ZUMDlPRGc0TkRRMEdCZ1lNYkd4bkZ4Y1U1T1RuQndjQzB0TFllSGgxRlJVVkJRVU1QRHc1cWFtbWRuWnpnNE9NREF3STJOamQvZjMram82SmlZbUJvYUdyNit2b0dCZ2VYbDVVdExTMTFkWFJnWUdDY25KNktpb3YvLy95TWpJNUNRa0xpNHVMUzB0TEN3c0NrcEtRNE9EdGpZMkM0dUxpVWxKY1RFeEVCQVFEQXdNS09qbytIaDRZV0ZoVUZCUVlpSWlGbFpXZXpzN0JJU0VqVTFOV0ppWWxKU1VoNGVIdmIyOW9PRGcwVkZSVUpDUXFXbHBiYTJ0c1hGeFQ0K1BrZEhSNVdWbGN6TXpNM056WEp5Y3VmbjV6WTJOak16TTM1K2ZpRWhJVlZWVlNRa0pNdkx5eWdvS0tDZ29JU0VoR1JrWk8zdDdiVzF0VnhjWEY1ZVhoY1hGL0R3OERzN08vLy8vdzdMTHlZQUFBQ0VkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BSmZTTnI0QUFBSFNTVVJCVkhqYVltZ21FZ0FFRUFPeENnRUNpR2lGQUFGRXRFS0FBQ0phSVVBQUVhMFFJSUNJVmdnUVFFUXJCQWdnb2hVQ0JCRFJDZ0VDQ0l0QzJmd0tJVVlNVVlBQXdsQ29vdURQWjZoVnpJMHVEaEJBYUFvOUZkSUNETGg1UmZpWXFyUlJaUUFDQ0ZVaGk2cEFxRGtMa0NIRnlWYkhnU0lGRUVESUNubkxzNWw4bWFHY1dDc21UbVVrU1lBQVFsSm95eFBYcEluZ0t2TXdCZmt3dzdrQUFRUlh5SmpPRkt5SzZoQ3BCQzFMdVAwQUFRU1Q0dmQyU3hGRDl5bXpvM0dZTlZRRlFBQkJLRzM3SkFjTmJNSE1yY2NlcFFRT1ZJQUFBaXVzVGEzT0tNQWVJU3g1aXZFbUlBWkFBSUVWdWdxYmF1Q0tPbWwxTlQ0UURSQkFZSVVxSXZLU1RoellsUEdHU0xEeTJJRllBQUVFZGFxNG41ZW9MbVlFeTBhenl6aERtQUFCQkE4UXJoaEp6Z2kwV05NdmRNOFZoM0lBQWdnUmNnenFKYXlDeUFFcFp5YWN5QS9uQVFRUXNneVhvRUE5WElaWlVVMVVDRWtXSUlCUTQwSXVpNjB5R2N3U0syMndrRWFXQWdnZ3RHVFdhQ01ncjhuU3pCWEpLaEdJS2dNUVFPZ0psMUhKaGQzSW80d3Rwd1pOQWlDQU1MTUNRNlpNVWJnT2hqQkFBQkdkdVFBQ2lHaUZBQUZFdEVLQUFDSmFJVUFBRWEwUUlJQ0lWZ2dRUUVRckJBZ2dvaFVDQkJEUkNnRUNpR2lGQUFFR0FCU1o4UXQwWkNGTkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvZG91YmxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGNlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBTVlEcWVtSXhPU0E1T2RrQWlQc3B0UjhnZ0Zob0dRZ2dSd0twL1VBc0FHUS9uRHQzN2dTb2VBS1F5Z2RpUnlEK1FJeFpBQUhFUkE5SEF2RUZJRjZBNU1qNVFBeVNMeURXUElBQVlpUWxTaGtaR2NsMXBDTXdORDhnT1JJRUZnREZFb20xSHlDQW1PZ1FramdkU1lxNUFBSEVOQlFjQ1FJQUFjUTBGQndKQWdBQnhEUVVIQWtDQUFIRU5CUWNDUUlBQWNRMEZCd0pBZ0FCeERRVUhBa0NBQUhFTkJRY0NRSUFBY1EwRkJ3SkFnQUJ4RFFVSEFrQ0FBRkVhb2oyRDRRalFRQWdnRWgxYUNDMGNRRjJKRlJNbjlhT0JBR0FBS0pLZXhRYXFqUzFIeUNBR0lmS0lCbEFBQTJacmdoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQkJnQU1Ya29DNFd6ZVYwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZG91YmxlYXJyb3cucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQU1BQUFEeUhUbHBBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQURxVUV4VVJkYlcxbFJVVkFZR0J0WFYxVjVlWGxWVlZRVUZCWjJkblp5Y25BQUFBQUVCQVdOalk5ZlgxMkZoWWY3Ky9xcXFxczNOemRyYTJnTURBd2NIQitqbzZGMWRYUUlDQW4xOWZhdXJxMlJrWkVoSVNDd3NMREV4TWRuWjJXVmxaZERRMERRME5OUFQweElTRWhVVkZicTZ1cUNnb0FrSkNmYjI5aUFnSUVwS1NtOXZiejgvUC9uNStjZkh4Nit2ciszdDdmLy8vNmVucHpJeU1rbEpTY0RBd0MwdExlN3U3bnA2ZWljbko5TFMwbWhvYVBMeThuZDNkNzYrdnFtcHFWaFlXRk5UVThIQndYeDhmQmNYRjRxS2lyYTJ0dlQwOVB6OC9FQkFRQVFFQkdKaVlvYUdoaUlpSXYvLy80SUR1UVlBQUFCT2RGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FLeE4rODRBQUFHVVNVUkJWSGphWXZBbEdnQUVFQVB4U2dFQ2lBU2xBQUZFZ2xLQUFDSkJLVUFBa2FBVUlJQklVQW9RUUNRb0JRZ2dFcFFDQkJBSlNnRUNDSzZVVDVFQkRIaEFtSWNCQWVSMW9Db0FBZ2l1VkVKSW1Ba0UyRUNRalkySkNjb1RGcEtFcWdBSUlMaFNkbU5aQmdabUVHQUFJMllJajBIUXd3R3FBaUNBRUVwNWNUalJuaEhLQUFnZ3VGSU9GaHhLR1dGS0FRSUlZU3BCcFFBQmhEQlZsSkJTZ0FBaXdRRUFBVVNDVW9BQUlzR3RBQUZFV0Nrcks1UUJFRUNFSFFCWENoQkFSQ2lGT1FBZ2dJaHdLOHhVZ0FDQ0tGWHg4bFZsOFhXMXdsQ25iZ255bHJzQWlBMFFRQkNsdXB6OGV0eSt5cG9ZU2czRnJFVlpmYmt0UUd5QUFJSTZRTnpaUnN0Y3lReERLWitNSEMrdmlaZ2RpQTBRUURDM1NuSDVjRGxpY2FtYmtZSzJtaE9ZQ1JCQU1LV0NucHpjV0gzbHpjbWx3UWRtQVFRUVBBUzR1ZlN4S2hYZzVPU0hzQUFDQ0s3VTFnVjdXQm1ZU2tOWkFBRkVPTWVLaUVBWkFBRkVRdVlHQ0NBU2xBSUVFQWxLQVFLSUJLVUFBVVNDVW9BQUlrRXBRQUNSb0JRZ2dFaFFDaEJBSkNnRkNDQVNsQUlFR0FEOVNlUXQ2Um5LOHdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZG93bi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNhVWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVFBNmpBSjRUcEFaS1RrOW53dVFFZ2dGZ0dPcUNBRGxRQVV2T0JPQmFJbitCU0J4QkFUQVBzeUFRZ2RSNklKODZkTy9jSlByVUFBY1EwZ0k2Y0R3M0pCVUJIYmlDa0hpQ0FXQVlvcWo4QThVRWdOZ0E2c3BBWWZRQUJ4RWhNWm1Ga1pLUm1WUGNEOFFNZ2RnUTY4Z042eHNZRkFBS0loVTZoS0FCMVlBSlV5QUNLRHhCckJrQUEwU3ZxMXdPeEF4Sy9FUmlhQjBneEFDQ0FhQnIxd0pBTWdFWXpDT3dIWWxESUhnQTYwaEZYbVk0TEFBUVFDeDJpR3BRT0hhRVlGTEtCNUpnSkVFQlVEMUdnSXcyZ3hZNEJrdkFIYU9hNVFLaVd4QVVBQW9pSnlpR1pBSTFpQXpRcEFTeGlKQUdBQUdLaFlsU0RNSzRRMndBTXpRV1UyQUVRUUV4VWNLUUJOQlRQUTRVY29WRU5BeURISjFKcUQwQUFVWlJHZ1k0c2dHWWFsTFNJbE1zWmlFbWJ4S1JSZ0FBaTI2RkFSellBcVhvc3lwRWRhMEJLbE9OekMwQUFrZXhRYUZRclFHdVYvVGd5Q2NpeGhrQkhQaUMxYll3TEFBUVFFNG5wc1FDYUZrSGxZUUEwNUxCRjZ3TzBkRW94QUFnZ0ZoSnk5WHlvNDJCZ1BsTG1RUTVaa0FNRDBSc2NsQUtBQUNLMmVDcEFjeVEreHlhU0d1WEVBSUFBSWpxTlFodTZDVGlVZ0lvZlVPTTNnSkx5RXA5YkFBS0lwTXhFd0xHQnhMVFV5WFVvUUFDUmxKbUFEZ0dGM0FJY3Vmd0FBdzBCUUFDUlhEUGhjQ3pWTXc4NkFBZ2dzcXBRTk1lUzNBZ21Cd0FFRUZFREVMalNEclMxUkJkM0FBUVE0MUFaR2djSW9DRXo5Z1FRUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVFZQVEyVWc1d2dRREQwQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZHJldmVyc2VkLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLalNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBdWxCbnorL0xuaDdObXo5V2ZPbkdGNCtmSWx3L3YzN3htK2Z2M0t3TWpJeUlCY1BZUDRJQUFUVzc1OE9TTXA5Z0FFRUVVT3ZYWHIxdi9Ka3ljenZIMzdGdTRBbUlOZ2JHVEhVdEt1QUFnZ3NoejY5KzlmdGsyYk52MWN0MjRkaU0yZ3JhM040T0Rnd0tDdXJ2Nk9pNHNyRG9pMzR0SWJHUm41SDlrenhBS0FBQ0xMb1JzM2J2eTVaczBhQm1abVpvYm82R2dHYjI5dlJscW5VWUFBSXRtaGp4NDkrZzhLU1NZbUpvYmEybG9HTlRVMWtoeUpuaHlJQlFBQnhFUnFsTStkT3hjYzNRRUJBU1E3RWoxamtRSUFBb2draDE2K2ZQa25NQU14U0V0TE0vajcrd3VURzQza2hDaEFBSkhrMEx0Mzc0SkR3OUxTa29HVmxmVWRQY3RSZ0FCaUlqRjlnbWtGQlFXS0xDVW42Z0VDaU9RUUJRRWxKYVVMOUs2WkFBS0lwRnovKy9kdmlDWVdsbzMwVEo4Z0FCQkFKSVdvcXFvcTJDSmd5TmJUTzBRQkFvZ2toeW9xS29McGh3OGZVcFEreVVtakFBRkVra05obWVqNDhlUGdNcFdlVVE4UVFDUTUxTURBZ0YxT1RnNGNvdHUzYi85SnJ4d1BBZ0FCUkpKRGdYWDdyN1MwTkZCbVlsaTFhaFc0T3FWWEdnVUlJSklienNyS3lveGVYbDdnRXFDaG9ZSGh3SUVELytrUi9RQUJSRllMUHpRMFZCallZbUw0L3YwN3c2eFpzeGdtVEpqdy8rclZxLzgvZnZ5NGhWWnBGQ0NBR0NscHpGNjRjT0gvOU9uVEdUNTkrb1MxUlkrdGhROER5NVl0SXlteEFnUVFJNldqZWFCUVBIejRzUGU1YytmQVZleTNiOS9BRGtSMktEWTJxVjBSZ0FCaUhDckRqZ0FCTkdSNm9RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUdBQWhWN3Fkd01sLzlNQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZHNoYXBlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFLMFNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBdXBHaUlqSThGMUxpTWpJNWlQWEFXRHhFQjhibTV1QmtGQlFRWnhjWEVHRXhNVEJtTmo0MFplWHQ0R1Nod0tFRUNNcE5iMU1JY2lPd3pkNGVqaXdzTENETG01dVF4cWFtcU01RG9VSUlCSWRtaFVWTlIva0o3bHk1Zmp0UFRidDIvZVFMem81czJiUWdjT0hHQzRldlVxQXpNek0wTlFVQkNEbjU4Zk81RDlpMVNIQWdRUUN5M1NFeGNYMTFZZ0ZoWVJFV0d3dHJabTJMcDE2LzhWSzFZd3JGNjlHaFRTUDRFT0pqbGtBUUtJNU13RWkxcFNnTGUzTjJOdGJTMERFeE1UdzdwMTZ4Z2VQWHBFY3RzU0lJQklkaWlwam9RQlVQb01DQWhnK1B2M0w4UGN1WE5CTkJzcCtnRUNpS3dRSlJmNCsvc0xTMHRMTTl5NmRZdmg4dVhMUDBuUkN4QkFkQzFIV1ZsWjMxbGFXb0pqNWU3ZHV5VHBCUWdndWtVOURDZ29LSUJwWURvbFNSOUFBTkc5WmxKU1Vyb0Fva2tOVVlBQUlpdU5VcEpPV1ZoWU5vTG8zNzkvazZRUElJRG9IcUxBa0t3SGVWUlZWWlVrZlFBQnhFTHZOUHJ3NFVNd3JhaW9TSkkrZ0FBaUswVEpqWHBRMlhuOCtIR1VURVVzQUFnZ3NoeEticWh1Mzc3OUp5aEU1ZVRrR0F3TUROaEowUXNRUUhSTG82QnFjOVdxVmFETXhKQ1dsc1pBYXNNRUlJQll5SWwyVWtNVTJJTDZ2MmpSSW5CT0I3YWVHSlNWbFVtT0VvQUFZcUZWR3YzNDhlT1dKMCtlZU8vZXZadmgxS2xUWUQzQXhnbERhR2lvTURsMkFnUVEyYmtlMUM3RjFjSkg1L1B4OFRGa1ptYUMwaVhaUlFaQUFKRWQ5Y2d0ZVBRUUJva0IyNlBnVEdOa1pNUmdhMnU3bForZjM0ZVNOQTRRUUl4RFpkZ1JJSUNHVEM4VUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0NBaG94REFRSm95RGdVSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDREFCNDl0YkNoamZFcWdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZHVtbXkucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUZRU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUN4a0tNcE5UV1ZaRDFsWldVR1FLb2ZpQU5WVlZVL2tLb2ZJSURvRXFKUVIrNEhZZ2VvWTBrR0FBSEVSRWRIQ2dEeEJTQXVKTWNjZ0FCaW9yTWpIYnU2dWo2UVl4WkFBREVOQlVlQ0FFQUFNUTBGUjRJQVFBQXhEUVZIZ2dCQUFERU5CVWVDQUVBQU1RMEZSNElBUUFBeERRVkhnZ0JBQURFTkJVZUNBRUFBTVEwRlI0SUFRQUF4RFFWSGdnQkFBREVOQlVlQ0FFQUFrUnVpOGZSMEpBZ0FCQkJaRGdVNnJCRGF1S0NMSTBFQUlJQVloOHBvSGtBQURaa1dQa0FBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQUhWQmRiaDI4a3M4QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZS1ici5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUIrMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFMR1FxaUVsSmFVQmovUURJRDR3ZCs3Y0I2U1lTVXg3QXlDQUdFbHRsQUFkU295R0EwQWNDSFR3QjJvNUZDQ0FhQlgxRGtDOG5wb0dBZ1FRcFE1ZEFNU09VRHdCM2JISnlja0cxSElvUUFDeFVLai9JVEI2RDhDaUcrZ3dFRjJBSkMrQVR6TlFQU2prUWNuakFpR0xBQUtJaFlZWkZlNEFvSU5BR2JBZVNVNFJpUGNEc1FJMFBUc1NNZ3dnZ0tpV1JvR09DUUJTQ1VoQ2hYZ3kwM3lvSTRrR0FBRkVhWWpXQXgxWWo2V0lBamx5QTRITTlnQ0tpU29aQUFLSUZsRVBDcWw0b0FjZUFCMkxLKzF0QU1vRndqaHo1c3doYUNoQUFGRWE5UStnYWV3QVdvWUFKWVA5ZUhKOUk2a1dBUVFRcFNHNkVCZ3lEV2k1ZUQ5U2p1L0hsbEh3aERST0FCQkFWQzN3b1VYVkFiUzBTQlVBRUVCVWRTZ3dSQVZJemMzRUFvQUFvalRxNWFIUkRjdEUrV2dPM1VBdGh3SUVFS1VPVFVBck85RUwvRVpxT1JRZ2dHalZLQUZsRmtkeU1nMHVBQkJBNUlSb0k0RnE4d0FXQng2ZzFLRUFBY1E0VkFiSkFBSm95SFJGQUFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0RBQU51RWFUcGt2NVd4QUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9lLWMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFCMWtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBTEZRb3BtUmtSR0ZuNXljTEFDa0VvRFlINGdOZ0ZnQUt2VUJpQzhBOGNJNWMrWXNJTWN1Z0FCaW9aYVBnWTRFT2JBZnlYSElBQ1RtQUdXVDVWQ0FBR0tob2lQbjB6THFBUUtJaVFxT0RNRGlTRkNvR2M2ZE81Y1JoSUZzUlNCT0JPSUg1Tm9ERUVDTWxMUkhRV2tVNk5EN1FLWUNrbkFpMEhFNG81ZGMrd0FDaUlrS29ZbnN5QVg0SEVrSkFBZ2dTcVBlQUkyL2tGWnBGQ0NBS0hXb1BUSUhHSm9IYU9WUWdBQWFNZ1UrUUFCUjFhSFFBcDhtQUNDQUtIWG9CVFIrQUswY0NoQkFsRHIwSUJvL24xWU9CUWdnaWh3S3pEd2IwQXB4QTJEMHI4ZVZCSURpRHVUYUJSQkExS2hDQzRGNFBWcjBPd0FkQmZMRVE2aVlQclN1QnlVVnNrb0dnQUNpdUdZaXNhNC9BR3c5T1pKakYwQUFVU1hYUTJzalJ5eVpDeDJRWGRjREJCQlZRaFF0SFJwQWF5d0Z0TkxoQXRCREQ4aTFEeUNBR0lmS0lCbEFBQTJabWdrZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQWd3QWJwUllSc3hFRm5FQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZS1jbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUI2a2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFMcVJvWUdSbkp0aXc1T2RrQmlYdDN6cHc1ajRuVkN4QkFMTlR3TGRBQkFVREtBSWp0a1lRZkFQRkZJTjR3ZCs3Y0IxQ3gvVWp5alVEY1FLd2RBQUhFUWdVSDlnT3hBaDVsQXFRNENCY0FDQ0FXQ2h5WkFLVG0weXVOQWdRUUN4VWRlUUNJRjBLam5BR2FGUHlwNVZDQUFHSWh3NUVDME9oR0JvbkFkTGdBaThNblFOVlREQUFDaUp6aUtRR2E3dUNaQW9zajRRQW85NEVhRGdVSUlISWNpaDZkRStpUlJnRUNpQnlIR2lDeEwxQXJ4QWdCZ0FBaXg2SEkwZjZCWHJrZUlJQ0dUQlVLRUVEa09QUUJFdHVCV3JtYUVBQUlJSEljZWdCTEtVQnpBQkJBNURoMElScS9IcTJ4Z2EzY3BSZ0FCQkRKQlQ0d2x4OEFXZzRLVlFla3pMVWZLQVlxU3pjaVpUQUhhRkcya1JwMVBVQUFrVnZYQjBKYlFnWm9TUUJiTXRoSWpSQUZDQ0N5Y2oyMDdIUUVOZUhvbGVzQkFvanMxaFBVc1lIQUtGZUFocVErV2hsN0VGb2hiRUJyZytMS2xIZ0JRQUF4RHBWQk1vQUFHaklGUGtBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFR0FCZGVGT2JkbEg4elFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZS1mLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQlBVbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUxGUXc1Q1VsQlFISU9WQVFObURPWFBtTENEWERvQUFZcUdTaDBHT3JDZWc1Z0FRaysxUWdBQWFNbEVQRUVBc05ETFhFWXZZQjBvTUJBZ2dtamgwN3R5NUI3Q0pBOU1vMldZQ0JOQ1FpWHFBQUJveURnVUlJSnBFZlhKeThuNHN3b1ZBZklGY013RUNpRmFaQ1Z1WktrQ0pnUUFCTkdTaUhpQ0FhSlhyR2FtZDZ3RUNhTWlFS0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBREVPbGJFbmdBQWFNaUVLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VHQUFOZmthTzVwdVJzSUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2UtaC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRkFTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQXNaQ3JNU1VsSlFGSXhjUDRjK2ZPZGNTbUxqazVHVVhkbkRsekhNbXhEeUNBV0Nqd3BBSVFPMUJSSFY0QUVFQkRKdW9CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0NBV0tobEVEQjNOK0NRc3FlRytRQUJ4RUpGVDlmVE1rUUJBbWpJUkQxQUFGRXpSQnZ4UkQzRjVTaEFBRkhOb2NDYXFRRlAycVhZb1FBQk5HU2lIaUNBaG94REFRSm95RGdVSUlDR2pFTUJBb2lTelBRQWlBOVFVUjFlQUJCQWpFTmw3QWtnZ0laTTFBTUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFR0FBckdSb0NnY2VGSGdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZS1tb3JlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGVlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUM2a2FVbEpTQklEVWVpQjJBT0lEUUJ3NGQrN2NEOG5KeVZqRlFYcUFjdjFBcWdDSUg0REU1OHlaYzRGVWV3RUNpSndRVFlBNmhnRktKK0FUQnpyU0FPcElFRkFBNG5weVFoUWdnTWh4NkFjY2ZGTEZTUUlBQVVTeVE0SFJ1UUJJTlVLanR4SEt4eWNPam02b09FaXNrQnlIQWdRUTQxRHBMZ01FMEpESjlRQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RWUFENm5qVVFDSjkzVEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZS1uLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQm9rbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUxHUXF6RWxKY1VCU0RrZ0NWMllPM2Z1Qm14cWs1T1RVZFRPbVRPbmdWVDdBQUtJaFFKUGdpeXVSM09RSXRDeEQ0aFFTN0pEQVFLSTJsRS9uMVpSRHhCQTFIYW9BekJVQzJqaFVJQUFva1ZtcWdjNlZvSGFoZ0lFRURVZGVnRktDd0J4UDdVZENoQkExSFJvSVJJN0FCaXFBZFIwS0VBQVVjMmh3TngrQUVoTlFNNVlRTWNLVU10OGdBQ2lkaHB0Qk9JSHRFZ0NBQUZFVlljQ1EvVURrRXBFRWtxQUZ2WVVBNEFBb25xdWh5YUJCV2hsS3orbDVnSUVFSzNxZWxERytnQmxnNHFxQkVvTkJBZ2dtamdVU3hLZ09GTUJCQkROV2svUUJzb0dhcGtIRUVDMGJ1WWxJaVVCaWdCQUFOSFVvZEFrVUVnTnN3QUNpSkptM2dFaUhic0FXdkJUbEU0QkFvaHhxQXlTQVFUUWtPbUtBQVRRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQ0FBUUJ0aWo1cEYxSDNsZ0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9lLW8ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDREVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBTEdRbzRtUmtSRkRMRGs1V1FGSUpRQ3hQaEFMUUlVdkFQSEZ1WFBuTGtCWFQyb2JBeUNBR01scGxDQTdGT2hBa0tQNm9ZN0VCUjRBY1NIUXdSdklkU2hBQUZIa1VLZ2o5d094QVpGYUUyR2hTNnE5QUFGRWFScGRqK1pJY01nQnNTTVFCd0x4QmpUMTg0R2VNeURISW9BQVlpSFhoVUFMUVZIdGdDUUVTbytPd0JEN2dDUzJBYWl1QUpvMFlLQWY2aEdTQUVBQVVSS2krV2o4UURSSGdnRlFiQUkwcEdIQUFacnhTQUlBQVVTSlE1R2o4QURRUVEvd3FGMklSeTlSQUNDQW1NaU1kZ2Mwb1lNRXRCeWcxS0VBQVRSa0NueUFBQm95RGdVSUlISWRlZ0dOYjA5QXZRT0JwRUFRQUFRUVdRNkY1bTVTY3JJL0FZOFNCQUFCUkVuVW8rZms5ZENhQ2ozakZhQmxuZ1hZaWpGQ0FDQ0FXQ2h3S0toOGpBZGlCYVNjZkI3b3NFWm9hQXRBNVFPUTlJQWMyRWlPWlFBQlJHbGRid0N0NndXSTBQWUJXbk5kSUtldUJ3Z2dpbkk5MUZKRElqTEhCV1JIa2dNQUFvamlaaDVTV2pTQVJyTTltZ01QSWpmdnlHM21BUVFRNDFBWkpBTUlvQ0ZUNEFNRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQWFCOTdEamZzc1VBQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZS1wLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQmhVbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUxGUWFrQktTb29Ea0hMQW8rVEEzTGx6RHlBTGtOTytBQWdnUmtvYkpVQ0hOZ0NwZWdMS1BnQnhJZERCQzhoMUtFQUEwU3ZxQllCNGZuSnljZ0s1QmdBRUVDMGM2Z2pGZ2FCb1I1T3JKOWRRZ0FCaW9iWXIwZExqQm1BbzdrZEt3d3BBdmdHUXZrQ3F1UUFCUkkrb1A0Z2xHWkFNQUFLSUhnN2x4NUt4U0FZQUFVUlRod0tqR1JUbHlCbm9BekJwWENESExJQUFZcUdCNC9ZalJiRUJtblFodWVZQ0JCQUxEUUlTVitIZkNDdEh5UUVBQWNSQzQvUjVBWXBCam54QWlVRUFBVVNMNG9tUkZqNEdDS0FoMHlnQkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQW9rWm1Pa0FQaHdJRUVPTlFHU1FEQ0tBaEUvVUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VHQUFGcDg2eXYwUXJrMEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2Utcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUI4MGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFMRlFhZ0FqSXlPY25aeWNIQUNrN0lIWUFFbkpBeUMrQ01RYjVzNmQrNERjdGdWQUFMRlF3N2RBQjRJY3RoNklGZkFvRXdEaUJuTHRBQWdnRmlvNEV1U0EvVkNIMEF3QUJCQTEwbWc5bWlNM0FMRWlNSm9aUVJqSWRnVGlDVUQ4Z1JKTEFBS0lrZEwyYUVwS0NpZzBIV0I4cU9Od0FuTHRBd2dncXVkNllGSklvRVhVQXdRUU5SeTZFWTAvSCtoWUVGYWdwa01CQW9nYVVROUtuL2R4WktZRlFEd1JtQnd1VUJyMUFBRkVjWWdDSGZFQm1tRXVZSkVHSllQendORHRwOVFlZ0FDaU9FVFJDbnlRdy9MUkNud1lhQVI2cW9GYyt3QUNpS29PUlhJd3FCVG94K0pnd1RsejVwQlZUQUVFRUUzcWVtRElIUUJpUXlEekFKcVVBYmxtQWdRUUV4V0tJM3lXSDZTVzV3RUNpQnAxZlQvUXNTQjZJU2dFUVEwUHRQU0tEQzZRYXdsQUFGRzlac0lESmdBOVVVaXVmUUFCUksvMktOaVJsQmdBRUVEVWlQcEFJQTZBTnZIc2tjUS9RTlBvQmxoeW9BUUFCQkRqVUJra0F3aWdJZE1WQVFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBQXdCQ2ZIV3UyMW1oWFFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZWRpdC1pY29uLW9mZl8wMDQ0X3ZlY3Rvci1zbWFydC1vYmplY3QucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTJacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TUMxak1EWXdJRFl4TGpFek5EYzNOeXdnTWpBeE1DOHdNaTh4TWkweE56b3pNam93TUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM1F6WTRORGswTlVOR01qSTJPREV4T0RjeFJrWkRNVVJCUmpKRk4wVTBPQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8xTnpaRk1rRkZNelpFTVVFeE1VVXhRVGxDTWtRMU1UQTBRak5GTTBZd05TSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzFOelpGTWtGRk1qWkVNVUV4TVVVeFFUbENNa1ExTVRBMFFqTkZNMFl3TlNJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTFNMUlFMWhZMmx1ZEc5emFDSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPamd3TmpnME9UUTFRMFl5TWpZNE1URTROekZHUmtNeFJFRkdNa1UzUlRRNElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qZEROamcwT1RRMVEwWXlNalk0TVRFNE56RkdSa014UkVGR01rVTNSVFE0SWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K1Z5bE4rUUFBQTd0SlJFRlVlTnE4V05GeDJ6QU1sWHorcnpwQjFBbWlUbEI1QXNzVFJMa01ZSHNDeHhQWUdTQVhaWUxFRTFpZElPNEVWamJRQ0FWNmp6NGNTNG1RckFoM1BKNWxFbndFZ1FlUVlUQ1FQRHc4eE5URjF1ZjYrZm41TklUKzhBcGdDWFYzMUxoUFBjTlBhQWNDL2o0S1VBS1lVN2R4V1E5Z3BNUU40d3BxVHdTNkdoeW9BeUF2eU5ZNVVDdHAwYnBsTGx0OFRpMno1ajlSMjdmTlZRT2xSU0xxM3NUeHNoVzJERkt6Z0VNZmcxMWEraFkrWHc0VmZuaWtGdUhUbGhRK0RoUjhEUGhGNkw0bjNVVm5vQmJJRXhTZGdnRUZwL1VDbDJnRkd5cEJ6dm9jY3dmQUREWnZBeHMyN1BJOEZzZ0dzTHhtS2YrZk9PYThqUTJTaGRhNUIyMzl3d0NEdVlHQ2dsSnhCS09BRkxLR2dSamt6bm4wMk1FSGVLNVRkQ045WnVCS1EvSWx1UExRaGNyQXVVZmJCYVJGY3l4UWFVSHk1dUJiN05PM0lQQUZ0ZS9nMnQ5SXMyY2F0NUluUisydHdRVks0UUliODMwcXhpd05WM2JJOVVkWTdvY2pIWlpvZTFqcGhmcGZBTDhSL09tU0xReVg4bW14N29sWU5CWnBVUXR5VFVvV3Zwd05LLzNFR2d4eTVobGZDUnk1dE9nZGVxOHZ3UjhOeU1LUmJSSlpDNWhOUU85UFl5SHFmZlk0Q0w5L05ENmFpajk5c2tFUlVrZ0xVenRia1hvTDM5dzVyS1VSWTFIV0hSbUxKc0t2Zk5iTUVTeTJHekJUN0szeDdHdEg2ai90L3hTOFd0TzhFN0FsRXl4a3FuRWZoZkJSRk5hNEhXcExGNUFVUVZQMjVGVlRXeVJURVgyYWdvUEh4clE1UTE4M3JJUkF6bHFxSXlieENKSGZWVDdOdXRPZU96VHlCOXpwa2dTV25LTUZEdnBTeTdTajM3eHI2QXRqQjZsYmV3RzEwcHN6Vjd0OEZlbDVaVnZVcnBDMFFPTXJOMTIwUlBaS3BrUEJzejZnM3k3Vms5alZOVURmVWFZMVpiRmxUeCs5ME9aRVhMQ0NucEVaSUNkbkxhNFNPWTVkd3pLWEMrQlU3QzVIZFBiaHZBakY3a25NVDRWRlhFV0g1dklYb0pxN0FEMEFhQWJlNnl0SkN6Z2plMlVRemFXTFRBVHQxQ0R6VEJNNGZBUG9HWEJyaFRVamNUTjl0UXZud3FwTDJ4WXpOOFdGOFcrUDFMamFhRGUzZ2p0Vnh2cWhWWENjOFhQUjVURUxkNjI1eU8weXNnK08rc0JYK0h4QXorWHFIRnFESHNGM05hcjJzUzkzQWE0b0daaGgxblJkM3VNb3pRdkcyQ0JYd2pmWHZnZUlCS2EvK09OSUlITmhuUDlTY2FpWTlPVmdOZXVGMnNuWVpmMUZ4NzN6R1NYc3NOTUtVVmdPQkRBR3dFeHpjcHFIM0ZTOFJ4bnJicnM4YXplVWZFdWhjKzI3VTRVZGxPL0VhNXZoeUZmdGN3MHlubmtlajRTT3RhWkFDVHRhSXdIUFpvNHJTb1dyaVpRYmxJK3BZL3hUMnd2elZVQWRqMkozaWlJa0VEN08yZTYxejh0MU9GQmdtSkl1YWlpUXE3NCtiZVN2QUFNQWpBamVaT0pnV3ZrQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZWl0aGVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ1FrbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUN4a0txQmtaR1JJZ3VUazVNZGdKVHEzTGx6WjRQNHhOYU1BQUhFU0VvVlNnVkhLZ0NwODBBc0FNU0pRTWN1SU5heEFBSEVSQzlIUXNGNnFDTXZBUEVHVXN3R0NDQW1lamtTR0pyOVFNb0FpRDhBY1NBd05EK1FvaDhnZ0Zqb2tSR0Fqa3dBVWdWUUxpaktINkNsV1JBNGdNOE1nQUJpb1lNalFhSFlEK1ZPQURweUE1SUQ2NEVZUklNY3JvalBISUFBWXFHeEkwSHBjVDQwWFI0QU9ySVF6WUVNeElRbUNBQUVFSzNMVWVSME9SSG95UDFBZWorU0kwRzVYaEhvZ1VSQ0JnRUVFRkhGRXptWkNlaW9BcVFvL3dBTlZRWWtCellpcDFWQzdnQUlJSm80RkpvdXoyT1J3bkFnc1E0RkNDQVdHcVJMQjJpNkpNcUJ4QUtBQUdLaHNnUFJNd25GRG9RQmdBQmlvWkVEUVduU0VlakFDOVFLQ0lBQVlxSEFnYkR5MFFHTGRDRTFIUWtDQUFIRVFvWURGYUFobUlCV0RzS0xIRmhqZzVvQUlJQllLSFFnT0ExQ0d4c00wTVpHSVMwS1pJQUFZaUxTa2FCY2ZCL0prY2dGZFQ0bGpRMWlBVUFBa1JyMUtMa1lYMk9EMmdBZ2dJaDFhQ042TVlPcnNVRXJBQkJBWk5WTTBNYkdmbWlVZ3hvYmpwUTZoSkE3QUFLSTNFWUpTaU9ZSG0xYWdBQmlJdFczMEhRSnkxU090TW84NkFBZ2dGaElpUnBvRWxnTnhQWkFmSkZhaFRveHlROGdnQmlIeWtBdVFBQU5tUUVJZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNEQUF5Q2EzRnUxNzJtNEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2VsZWN0cm9waG9yZXNpcy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBTUFBQUM3SUVoZkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBQjFVRXhVUlg5L2YvNysvdi8vLy92NyszNStmdjM5L2VQajQ1T1RrL3o4L1BUMDlJK1BqL1gxOWZqNCtQYjI5dW5wNmZuNStmZjM5NDZPanZMeTh2UHo4K3ZyNjQyTmpmcjYrdWZuNStUazVPN3U3b09EZyszdDdaS1NrdWpvNkpTVWxJV0ZoZkR3OE9ibTV1enM3SWFHaHBDUWtPL3Y3Ly8vLzIxYjVNc0FBQUFuZEZKT1UvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BSU5XbDlrQUFBSFhTVVJCVkhqYVlsQWpFZ0FFRUFPeENnRUNpR2lGQUFGRXRFS0FBQ0phSVVBQUVhMFFJSUNJVmdnUVFFUXJCQWdnb2hVQ0JCRFJDZ0VDaUdpRkFBRUVVY2pBd01EQ0FHS2lVVEJoSUFBSUlLaENOaEVsRVJZSUE1V0NDQU1CUUFCQkZRb3pNL016c0FDMWMvT2dVQ0JoaUVLQUFJSXFaR1JrRkJPV2xCYmlZVVdoR0JsWmhhQW1BZ1FRVkNFckV4TlFrSU9ERVkxaVloU0FLZ1FJSUloQ0ZrNmdHSGJBQ0xVYUlJQ2dKZ29nRkVvSkNvcUtDckZDS2JoQ2dBQ0N1UkdtbjVtUG5aMWRob3NIVEFseU1ESnlRaFVDQkJCY0lhdVFxS2lnb0JRckx4OGJHNXVpTUlpU0VPY0Z1aEdxRUNDQW9BbzVHUms1QkdXQXB2RHg4L055YzNMemlFRW9Wa2FZMVFBQmhIQWpyN2dFR3hzZkw3TThGeENvUWlnRkRyaENnQUNDaHlNckQ5QUVYaDUrV1hZNWRuWVZBVERGaGVSR2dBQ0NLK1JRQUJtaHpJemlSbTVHdUJzQkFnakpqVnpzUUZOaytYbDRPU0Z1NUVSeEkwQUF3ZDNJeUExMUl3Y3pFSEN3Z2lsV1JuZzRBZ1FRaWhzNWVmbUJSaUFESnJnYkFRSUlIbzZNckdDVEdOSGlFdTVHZ0FDQ0oxeGdzbUtCSkZSMEFGRUlFRUJFWndXQUFDSmFJVUFBRWEwUUlJQ0lWZ2dRUUVRckJBZ2dvaFVDQkJEUkNnRUNpR2lGQUFGRXRFS0FBQ0phSVVBQUVhMFFJTUFBR2xTeGFnb3I1MVVBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9lbGxpcHNlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFmYVNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRQ3o3SmE5ZXVnV2xtWm1hR2UvZnVNWEJ5Y2pJOGVmS0U0ZGV2WHd4NmVubzhIejkrVkFPcU1aZVdsbzY4ZmZ1MjdaY3ZYMzZENU5qWjJSbDRlSGhZbFpXVmp3SFZMOVhTMGpvRjVOKzhjdVhLWnpZMk5nWUpDUWtHb0ZvR2JXMXRCa1ZGUllhL2YvOHljSEZ4NFhVb1FBQ3hrT296VUxrTE5OVHcyYk5ubFpjdVhiSUEwa0pBeDNMLysvY1BKTWNLb2hrWkdSbVltSmdZSGp4NFlBWGs2MzhBQWgwZG5kTkFqN2I5K2ZQbk5Ea2hDaEJBTEtRNGtJV0ZoWUdQankvejNMbHpPUzlldk5BRThobjUrZm5mQ2drSjNkVFYxVDBpTEN5OGk0T0Q0L09QSHo5NDM3NTk2d1lNUVJzZ0xmZnExU3ZwWGJ0MlNZdUxpMnNaR0JqTUJPcWJBalR2RnlrT0JRZ2dGbUlkQ1l3NmhUdDM3dFJmdjM3ZEd4aEFva0JIdlZOWFYrOEdXcnJqelpzM1g0SDg5MENIdkFFbGorL2Z2NE8wblFSR3N5QXdpWEFDbzlibDFxMWJKVURQcVIwL2ZyeEtWVlhWVkVaR3BocW81aDZ4RGdVSUlMd09CVVVoQ0hOemM3TUFvN2p4d29VTEVaOC9mMlp6ZEhUY0NuUlUxL3YzN3k4QTArT25seTlmZ3RNWk1GcmhHTWgvQThKQUR6TDgvdjM3bnBPVDA2bm56NStYNzkyNzF3Y1kwcUZBZmYrQmFUUWRhTTFuWWh3S0VFQjRIUXF5RUpRNW5qNTltZ3gwWkJqSWthS2lvcHVCSVZuQ3lzcDZDMmd4T0RuZ0F5QVBBSlBDRnhFUmtTTUNBZ0t2Z0RIeUR4aXlmaGN2WGd5Vmw1Yy9DOFM5UUk4UWRDaEFBT0V0bmtBWkF3ak1qaDA3bGc4TU5RNWdxR3dHNXVCaW9NVzNRSWFEUXBzWUFGSUhVZy9TQjB6TEpTNHVMaHZmdlh2SGN1VElrY3pIangvYkFERkJNd0FDaUltQUJmeEFCK1k4ZXZSSVUwcEs2cW1OalUySG9LRGc3WjgvZjRJOUFRcHhRbzRGeVVPVEFzaWhETUJRdlcxcmE5c0NETW43d0NKUEdaaG04NEIyQ0JCeUtFQUE0WFVvTUJUVVQ1OCtiUXNzYXY2Ym1abk5BRWJ6VlY1ZVhsRE9CNWQ3WW1KaVlFY1FTajdBOU13QUxCMFlnS1VEbUFhV0ROZXRyS3o2Z1pudDkrWExsODJCbnRBazVGQ0FBTUtid0lDNTJ4Q1lEaVdCNmVzRHNHRGVCTXo5SDFWVVZNQ2xBS2ljQkJYc1FJL0FrZ2pXcEFNS2ZYTnpjMUJJZ2tNVm1rRy9BblArRHFCSHE0Q1pWQUtZS2MyQnlvL2pjd3RBQU9GMUtEQktZb0NPWWdjV1BkZUFtZXJydDIvZndKYUJvd0xvVUJBZlZOTUFTd1VHOUFZNHlKR2dIQThNUFhBdEJLcmRZSHBCYkdCcy9RWFdVQStBZG9BY21nQVVub0RQTFFBQmhOZWhvSVFPQ2dFTkRZM0R3UFQxRVpqck1kS2ZwS1FrQTdBS1JSRURPUnBFZzBJU1JJTWNpcTRYV0dxOEFCWlBTNEc1MytMaHc0ZjZoS0llSUlEd092VHIxNisvZ1NIRENpeVNkZ1BUMlZ0QzZSSGtRRmhSbzZDZ0FBNTFuQmF6c0h3RE92WThLT1NCbmlCWVBnRUVFRjZIZ3RJWHlISmdiZk1lR0wzLzhUa1VWZ1N0WDcrZUlTb3FDcHdrOFBYSGdJNEVKWXZ2SURXZ0pFUUlBQVFRWG9lQ0xBTTVBQmp0L0NERDhEa1VscmxBQUZSSndFSVlYeGtOVkFmV0FLcDJDUUdBQU1MclVGQlQ3ZlhyMXd6QXV0d0JhT2dKWUlpOVF3OUZrQU5Cb1FQTE9EQkhBMnNmY09hQmxiZm9qZ2JxNFFJMkU0MUFHUXRrRHlHSEFnUVEzbklVMkhBQUZ4azNidHh3QXZwYUVNZ0haeDRRQmxZQTRISVJXSVF4WEwxNkZXdDZQSHYyTEtqNkJaZWRJUFdnZGlnSWd6SWYwRlBpd09aaEZNaXp3TUwvQmlHSEFnUVEzaEFGRmt0TGdKUVJNRlFWZ01tQUM5YTRoYlU1UVNFSkNqVlFza0N2b1VBT0IyWkdjRElBRlY4Z0ROTUh3a0E5ck1BeVdna285Z3RZeHM0ajVGQ0FBTUlib3NEcThpd3dCRjRDbzE3dy92Mzdua0RMZVlFMEF5ZzVBS09OQWRqc0F6c1dWKzRHaVlQUytjMmJOeG1BN1ZJR1VDTUcyQk1BU1hFQnpYRUZKZzloWUlueUVsalRIU1BrVUlBQVlpS1FtVzRZR1JrZEE0WWEwNmxUcDdLQWFVMExWaWFDU2dTUWcvRVZRZEJpaUFIWWNBYUhMaWlaUVBXcUErdjRRbUJvc3dJYk9hZUJJWHlWa0VNQkFvaUpRTG40RVZoOVRnYW16ZHZBdENZUGJPMVVBUzFUQmVWdVVQUVJhdUloOXd4QUhnTGxibUJNcUJ3NmRLZ1cxQ0FCVnN1UExDMHRKd0hUN3dkQzVnQUVFREVONTJOQXc2WUMwMVEzc05IckI4cEl3SnFxQkdqNWJXTEhyVURxb0VsRUZkZ0k2UWJXZVA3QWRQa1gyRENaQzNUc1FWRHNFQUlBQVVTb21RZk9CTUNHeUd4Z08zSTFNQ1QvQWtQV0Q5ajQ3UVZHdXhVd2hEaEJ4UXMrQUpJSEt1TUFxcmNBbGc0OUlFY0NIZjBIMk5sYkE4enRVMEhkRm1JYXpnQUJSRER1UURrVmFOZzNZS0t2QXhyT0RNd01ydnYzNy9jRnRud01ORFUxTzRDV0hBUTY1Z2N3aEo4QjhYZFlrZ0Jpa0Nla2dHbVNBNWkyYllCRlZSbXc2NndFOURpb0JiWVRXS0pVQWMxOVMyeWZDU0NBaU82RkFxUCtMakNhRW9GbFp5NndtNXdDekxHcXdKdzhGVmd5UEFjNitnRXd3eXdGUnVFNUlQNER6TjBzb01JY21GbWlnVDFXQldEclNCSVV2WEp5Y2crQm5iMUZ3Q1RRQzh5VUgwbnBoUUlFRUNPK2RBYnNKOEZ6THFoWUFXVWlVSTBENUpzQm83TUdHSlVtUUVmeEEwT09DMVlMZ2RJaUtDcEJtUWVrRDhqK0JtelFmQVkyVXM2YW1wbzJBMFAwQkxBRUFTY3JZSTRISlN0d1dReHFrT01EQUFGRThnQUV5QUpnbEoxU1VsS0tBVHBXSFZpN1dBTFRXaEt3TzZ3UGFnV0JDbjlRVFFRc0cxbUJqZVByd0RRNVMwMU43VGpRQXplQm9mZ0JWbUtRQ2dBQ2lIR29qRGdEQk5DUUdTUURDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNEQUF6TlhQZEJqMXN3TUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2VyYXNlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSVpTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUxHUXFvR1JrWkZvdGNuSnlRbEE2c0hjdVhNUFlKTW5wVllFQ0NBbUdqcHlQcERxQitMMVVBZFRCQUFDaUltR2pnd0FZa2NvN3FmVXNRQUJSUFUwaXV4SVlKUmZBR0ZxT0JZZ2dKaG82VWlZT0RVY0N4QkFUTFIySkxVY0N4QkFUUFJ3SkRVY0N4QkFUUFJ5SkpwakM2RWxBdEVBSUlDWUtIUmtBeW1PaE9veGdEcHlBU2wyQVFRUUV3V09CRmxXRHlyUW9aaFlSKzRINGcxQWp4V1NZaDlBQURGUkVOME8wQ2dFV3c0VUV5REJrWW1rMmdrUVFFeGtPdElBR3QwVGdIUWlJY2RTNmtnUUFBZ2dKZ29jK1FHYU9SYmdjeXcxSEFrQ0FBSEVTR3pESUNVbEJXVGhlU0JXQkZyNEFFY0RCT1NSQ3pDUEVISWtLWTBTZ0FBaTJxR2d1aDVvOFhrb0Z4NmllQnc3RVpxN2NZWWtLUTRGQ0NCUzA2Z2psTWFhSHRHU3dYeVlJNkVoU3hFQUNDQ1NRaFFhYWdMUTZNUWFza2pSblFpVTI0QVV5cUNNZHhDcURKUjBIT2JNbVRPQldJY0NCQkRKRFdkbzJuT0VPdVk4a0kyZVhnMmdJYmtCeVZFWG9JNEV5Y2xEMmY1UXh4TUZBQUtJNUJCRkN6MEhMRW8vRUZ0TGtaSkdBUUtJY2FnTWtnRUUwSkRwM0FFRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQTFyN2VHU2pvOUVVQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvZmluZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUMya2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1pDcjhmWHIxLy9QbnovUDhQanhZNFlYTDE2QXhTUWtKQmhrWldVWkRBd01HTVRFeEJpcDZWQ0FBR0lrdGNELy9QbnovMFdMRmpGOCtQQUJyem9CQVFHR3VMZzRCbDVlWHFvNEdDQ0FTSExvcmwyNy9wOCtmUnJNNXVEZ1lMQzB0R1RRMWRWbFlHTmpBNHY5K3ZXTDRmTGx5d3pIang5bitQSGpCMWpNMU5TVXdjM05qV0xIQWdRUTBRNUZkaVRVY3JCK0hNci9BOVV6b0ttbnlMRUFBY1JFYkhURExFMU5UWVZaaXM5aVJwQWFrRm9RQU9rRm1VR0pRd0VDaUNpSGd0SWtMR1JJeVNRZ3RTQTl5R2FRQ3dBQ2lJbVkzQTNLT0tBMENZMXVrZ0JJRDBndnlBeVFXZVE2RkNDQUNEb1VWQVNCQUNqakVJaHVuTWtBcWhkdUZqa0FJSUFJT2hSVVRvSUFLSGVUQzJCNllXYVJBd0FDaUtCRFlZVTVyQWdpQjhEMHdzd2lCd0FFMEpDcFFnRUNpS0JEUWRVaXJEQW5GOEQwd3N3aUJ3QUVFRUdIZ3VwdUVBRFZPT1FDbUY2WVdlUUFnQUFpNkZCUUF3TUVRTlVpcU1ZaHc0Ny9VTDBNaG9hR1pEc1VJSUFJT2hSVWFJTWFHS0M2RzFRdGtncEFla0I2UVdhSWlvcVNYWTBDQkJCUm1RblVDb0pWaGE5ZXZTSTZWRUZxWVZVdnpBeHlBVUFBRWVWUVVGTU5WaFhPbmowYjNFQWhrQXhBalpML0lMVklOUnpEdlh2My92OG5jeUFCSUlCbzNzeERCeUI5QlFVRkRNek16Q1FsQTRBQW9ubkRHUlNTeTVjdnA5aXhBQUhFU082UURpajlYYmh3Z1dCWEJCVGQ2QTRseDdFQUFjUkk2N0VuVUpyczYrdkRtaFJJY1N4QUFORzhDbVVFQXBCalFJNUNCeURIVDVnd2dlSHYzNzhFUXdzZ2dPaFMxNE5DREo5alo4eVlRZEFNZ0FDaVc2TUVuMk1KWlV3UUFBZ2d1cmFlY0RuVzBkR1JvRjZBQUdJY2lJRmNVSm9FUlRjb0pFR090TEt5SXBpWkFBS0ljYWlNT0FNRTBKQnBPQU1FMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVHQUJlWFROZ2lFNm0yUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9mbGlwaC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUdKa2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQlIzYUUzYjk3OFgxRlJRZldFRHhCQVZISG8zNzkvL3g4L2Z2dy9sTTN3OWV0WHVOemF0V3VwNG1pQUFLS0tRemR0MnNUdzh1VkxNRnRUVTVPaHY3OGZMdmZzMlRPR1Y2OWVVZXhZZ0FDaTJLSC8vdjM3Ly96NWN3WW1Kb2hSakVEQXdzTENpQ1FQOWdpbEFDQ0FLSGJvdW5YckdBd01EQmgrL3Z3SjVsKzlldlYvWGw0ZVBBUkI1VFRRN1F5ZlBuMmlLRlFCQW9oaWg5NjdkNDlCVmxZVzdCaVl3MENoaU94UVgxOWZoajE3OWxCa0QwQUFVZVRRSTBlTy9MZXdzR0Q0L2ZzM3c1OC9mOEJpT2pvNmpGT21USUZIL2E5ZnZ4aEVSVVVaSGoxNkJFNG01Tm9GRUVBVU9mVFFvVU1NcXFxcXNKd1Bwb0VPL3YvNTgyZTRnMEFoRFhLc3ViazV3NW8xYThpMkN5Q0F5SFlvS00xeGNuSXl3Tm9LTVBydTNic01yYTJ0Y0hXZ2tBWjVRa05EQTFUR2t1MVFnQUFpMjZGTGxpeGhzTGUzaDRja0tOUmd1ZnpMbHkvbzVTeTRWQkFVRkdSNDhPQUJXZEVQRUVCa09mVGJ0Mi8vUDN6NHdDQXRMWTBoQndvNTVISVVGTklnaDRKS2hlRGdZSWJGaXhlRHlsYVNIUXNRUUdRNWRPZk9uUXdPRGc3Z1RBUktnMnhzYlBDUUJaV2pyS3lzS09Vb1NCMUlIcVNXZzRNRFZGdVJiQ2RBQUpIczBPWExsLzgvZGVvVWc0cUtDamkwZUhoNHdCamtHRmc1bXBPVEF3OHhrRGpNc2FEa0VSUVV4UERqeHc5UU5VdFNxQUlFRU1rT0JkYnBER1ptWnVDb0JJWWNPRFJodVJzYkFIa0dscUZBbUoyZG5jSFMwcEpoOXV6WkpOa0xFRUJNSkdhZy83YTJ0Z3pXMXRZTXdHcVNnWmVYRit3SVVJakJvbDViV3h1bEhJV0ZKZ3dEMHplNGdnQlZ1NlNFS2tBQWtlVFEwNmRQTTRBY0NvcENibTV1dU9OQU5LekFCNVdqd0Z6L0g3MTRBbUZZeFFCcVhYbDVlVEhNbXplUGFMc0JBb2hvaDc1NTgrYS9nSUFBT0NwQkdRSVVVaUFNNG9OQ0Nia2NiV2xwUVlsNm1EcFkxUXFLRFRVMU5iQmFZZ0ZBQUxFUXEzRDE2dFhnT2h1VUprRmxJcXl4QVVxcm9OQUNXWTZ0UFFvTGJaQm5ZTWtFcFAvOSsvY01JaUlpNENhZ21KZ1lJeUg3QVFLSXFCQUZOWXlCQlRXRGdvSUNTaTBFc2hUV2FvSUJVSHUwcjY4UHhhRWdOU0MxSUkrQlBBUnlLQ2dqZW5wNk1uUjFkUkVWVUFBQlJGU0l6cHc1azhIUjBSRnNBWElyQ1pSV1lTR0pWTGVEeWxIazlpb0RNek16MkdHdzBBVHBCZWtEaVlGQytlM2J0LytGaFlYeGhpcEFBQkVNVWFDaC8wRk5PVkFtUW5Za0NJQWNBTElRMmJHZ2NyU3pzL1Ava3lkUC9zTWNDaXFTUUdwQXlRWkV3L2dnOHlJaUloamEyOXNKQmhaQUFCRU0wUlVyVmpDNHVycUNmUTRMVVZqWkNPTERRZ2dHenA4L3orRGg0UUhLZkF5N2QrOEdTOEFhTDdEb0I3RkJuZ1N4UWRYd3g0OGZ3WTBjUGo0K25LRUtFRUFFUS9UTW1UUGdhSWVGSnJKRk1NdGdZaUFRRXhQRENBeE5jR2FSa3BKaThQZjNaMWkxYWhVNG1ZQktDMUIwdzJnUUJ1bExUMDhuV0FFQUJCQVRvWVl4cUx3RFpRYVlRMEVoQ01zUUlBeHlMS3kvQkN0SFhWeGNRT2tPblB0QnRLU2tKQU9vMnQyNGNTTzRMQVdGTUN5TmdtaGxaV1dHeTVjdjQzVW9RQURoZGVpeFk4Y1k5UFQwa0RNS0E2alZCT3B4d3RJWXJKaUNaU0JRMlZoZlg4OFFFaExDQ0lwU1VMME9LOEpBZkZBaGYrTEVDWGhzZ0dpUTQwRU5jR0N5d1ZsVEFRUVFUb2NDTFFDMTFCbUVoSVRnbVFBVUV1Zk9uUVAzazdadTNRcHFXNEl0QXNtRExBTmxQSkFZU04yMGFkUCtneHdJTXVQZHUzZmdSak1vM1FMVElsZzlyQ1NBeFZCc2JDeElEODVBQXdnZ0ZsenR6VGx6NWpBa0ppYkMweUxVOGVDb2hHVU9VSFNkUFhzV0hHSmNYRnpnWWd6a1lGQU45djM3ZDNBREdxUUh1VkhkM2QwTmRoaXMyUWZMb0NBOXdDSUtYR3FBMmd2b2JnSUlJRVpjdzQ2VmxaWC9RY1VJVEI3V1NnYzVHaVFHeXEwZ1BzZ2h5QTBQa0RxUUduNStmbkRhMjd0M0wxZzlTQTdrU2VRTWlaeWtRSHhRU0lQMDlmVDBZRGdVSUlCd09oUTBocVN1cnM1SWJNMEZjaXlvd1F6U0I0ckNpUk1uTWdMVDZuK1FSMEFBMUxvSE5nOFpHY2dFQUFHRXN4d2wxcEhRZ3A4UmxqeGc5ZmwvYUFpQVFsMUdSb1lpUjRJQVFBQXgwbXJFR2RSMnZYMzdOcmpOV2xKU3draXBlUUFCQkU0YnRNSmJ0bXo1VHkyekFBS0ljYWlNNFFNRTBKQVpjUVlJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNEQUFJbFBYTEYxbDg5Z0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2ZsaXB2LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBR01FbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFKSHMwTW1USi85LysvWXQzWXNLZ0FCaUpMVjR5cy9QLzgvUHo4L0F3Y0hCa0phV3hpQWlJc0pJRDRjQ0JCQUxxUnBBSGlzb0tHQzRmLzgrdzRJRkN4Z2VQWHIwMzlIUmtjSFgxNWVCaFlXRlpvNEdDQ0FXY2pUOSsvZVBRVlJVbENFcUtncmtPSWJyMTY4emxKV1ZNU2dxS3Y3UHlNaGdZR1ZscGJxREFRS0lMSWN5TVRFeHNMR3hnVVAzOSsvZkRDb3FLZ3lWbFpVTWQrN2NZYWlxcW1JUUV4UDduNU9UdzhESnlVazFCd01FRU1rT1pXUmtCSWNpeUlITXpNeGd4NEx3Mzc5L1FTSEtVRk5Udy9EdDJ6ZUcvdjUraHA4L2YvN1gxTlJraUlpSW9OakJBQUZFY21ZcUxpNys3KzN0elNBbEpjVWdMaTRPZGpESThTQnpRS0VNQ20wWUcrVGdNMmZPTU96WnM0ZkIyTmlZSVRRMEZPUTVzaHdORUVBa094UVl0ZisxdGJVWkpDVWxHWGg0ZUJqVTFkWEJEZ001Rm9aaHllUFhyMS9na0dabloyYzRmdnc0dzVFalI4Q2g3dS92enlBa0pFU1Nnd0VDaU9SeWxKdWJHK3lZSHo5K01DZ3BLY0VkQ1hJWUxHbUE4SjgvZjhDWkR1WmdTMHRMaHVqb2FJWmJ0MjR4ekpneGcrSE5temNraFJCQUFKRWNvdlBuei84UHpOWGdjdFROelEzc0tKaURZRWtBNUVnWUc3bFlnNlh2MTY5Zk15eFpzZ1RNTmpBd1lQRHk4aUlZdWdBQlJMSkRnYUh4SDVpYkdmVDE5Y0VoaWh5S3NFd0Z5bVFneDRQNHNKQkdMdHBBNGlEUHZuLy9udUhpeFlzTXg0NGRZekExTldYdzhQREFXVklBQkJESkRnVlZvYURRQkdVTVVJYUJoUlkyYzJDaGlDNkdMZzlLdzZDeWVPUEdqYUNhRHB4RWdMVWZpa2FBQUNMWm9jQmk1ejhYRnhjNDNjRXNnNFVTeUZKUUtRQUxaVmc1QytPanM1RTlBVkxMeDhmSDhPblRKN0E0cUVJQmxzVndCUUFCUkhJNUNvcGFFRTVLU2dLblUwS2hpTXpIRnNMSW5rSUc2TVVZUUFDUjdGQlFSZ0ZoVU80MU5EU0VHL2JxMWF2L3dCcUpablU5UUFBUkhmWEFoc2gvVUJUTHlzcUNNd0tvZUFKbGh2cjZlb2F6WjgrQzBoVEQwYU5IR1RJek04R096Y3ZMQXllUjZ1cHFCbDVlWGthWS9rbVRKb0hsYzNOendmS2dLaGVVSGdzTEMvK0RZZ29tRDJxbGdUSnRSMGNIbUE4UVFFU0hLS2lRL3ZMbEM4UERodzhadm4vL3pnQ3l4TXpNREJ6OUwxNjhBUE5CbVFJR1FFVVhpQS9MY0NBK3lDRXc0Tzd1RHBhREpSOVhWMWNVZVJBZjJUeUFBQ0lxUkJzYkc4RmxKNmo0VUZCUUFCZll3c0xDNEFRUGNqUXd5c0Vad2NqSWlDWXRKeEFBQ0NDQ0lYcnYzcjMvb0J3T3lxVnIxNjZGaTRPcXo4K2ZQNFBLUGJEY3ZuMzdHSUF0ZjJpZStROHZTOUhMV1ZpR0FzbURRaEJVNklQVWdXZ1FIeFRDSVBOQW9XMXJhd3YzTkVBQW9ZUW9xRnJEMW1JSEd2QWZsSlpnbG9FTWxwYVdCcWRMV0MwRlNyc3dCNEVjQWMyNThIb2Z4SWJWWHNqaXNBb0JKQWJ5K0s1ZHU4QnF3c0xDUU8wSnVGc0FBb2lrY3JTaW91SS95TGNnUFNESGdaSUJLQjE5K1BDQklUdzhIQndpc0hvZjJRR2cwQUpISDVDR3lZUEVRWjRFZ1k4ZlA0S3FackQreU1oSVVNc01JN0FBQW9qa0FoK1VPMkdGdFpxYUd0eHdVQ2tBaTJhUVEyQ09BamtJVnNlREFNaHhJRGJJM2xXclZvR1NGcmk1Q0NxWGdkR05NMzBEQkJCR0dnVzJJVUhGQmlPK2hyT2RuUjNEd1lNSEdXN2N1TUVBYXZJOWZ2d1luQXhBRG9DMVI1SFRIU3k5Z2h3SktvT1hMMThPN25NRkJ3ZURQVWxNWHdzZ2dEQWNpcytSc0pySnlzcUtRVkJRRU94UVVNZnU2OWV2b1BRTmRnd29jNEdTQmFnNUNFdVRJQWMvZWZLRVljZU9IV0NIZ3RvSnljbkpKSlVPQUFHRU5kZmpDMVZZVWxGV1ZnYm5mSkRGc0RRSEFyRDZISmFEUWZqWnMyZmdFZ09VazRFVkFZT0FnQURKUlJoQUFHRjFLTDVRQmZhRDRGVXBLTHBCb1FoekpISzZCTEZCUmRiZHUzZkJIaW92THdmWFVPU1dvd0FCaExNY3ZYbno1bjlnTjRNUlZ6cEZMNHBBSVExeUhLZ0VPSHo0TURncHhNVEVNQ1FrSklCS0JxSWRpQ3MyQVFJSXAwTkJqc1NtQ1pTN1lTRUdheWlEb2hSVXhHelpzZ1hjL0FPTm9PRHlKQ0dBS3pZQkFvaUZrQ1pzam9VNUZFU0QwaDhvRjRQNFdWbFpvTFJMa3lvVUlJQllpUEVoc21OaC9mbnAwNmVESFFucWhYWjJkb0l5RFUzSG9BQUNpT1FDUHlvcTZqKzA0QWYxYytneVFBWUNBQUhFT0ZRbUd3QUNhTWdNNUFJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUlBQkFJTUp3TVRmMS9NZUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvZnVsbHNjcmVlbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJFa2xFUVZSNDJtTDgvLzgvdzJBR0FBSEV4RERJQVVBQURYb0hBZ1RRb0hjZ1FBQU5lZ2NDQk5DZ2R5QkFBQTE2QndJRTBLQjNJRUFBRFhvSEFnVFFvSGNnUUFDeEVLdXd2cjRlYTVYVDJOaklTQXQ5TUFBUVFJTStCQUVDaUlWVURjVDZISmQ2WENHS0N3QUUwS0FQUVlBQUd2UU9CQWlnUWU5QWdBQmlIT3p0UVlBQUd2UWhDQkJBZzk2QkFBRTA2QjBJRUVDRDNvRUFBVFRvSFFnUVFJUGVnUUFCUkxRRFFWVVVxZFVVTmN3QkNLQkJINElBQVRUb0hRZ1FRSVBlZ1FBQnhFSk9HcUpHZzVWWUFCQkFnejRFQVFKbzBEY1dBQUpvMEljZ1FBQU5lZ2NDQk5DZ2R5QkFBQTE2QndJRTBLQjNJRUFBRFhvSEFnVFFvSGNnUUFBTmVnY0NCTkNnZHlCQUFBMTZCd0lFR0FBcVNTYzdOeWU5MUFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvZnVsbHNjcmVlbjIucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFCSGtsRVFWUjQybUw4Ly84L3cyQUdBQUhFeERESUFVQUFEWG9IQWdUUW9IY2dRQUFOZWdjQ0JOQ2dkeUJBQUExNkJ3SUUwS0IzSUVBQURYb0hBZ1RRb0hjZ1FBQU5lZ2NDQkJEWkRteG9hUGdQd3BTcUlRUUFBbWpRaHlCQUFBMTZCd0lFMEtCM0lFQUFzWkNRNXY2UzZ5bWtkUGdQeW1jbVZpOUFBTEhRT2JSSk5nTWdnQmdIZTRNVklJQUdmUm9FQ0tCQjcwQ0FBQnIwRGdRSW9FSHZRSUFBWWlHanFFQVhaNlNtSG5RQUVFQ2tGRFAvcUJEcS8walZBQkJBcElRZ016R2hRMm1Jb1FPQUFCcjBhUkFnZ0FhOUF3RUNhTkE3RUNDQUJuMVZCeEJBZ3o0RUFRSm8wRHNRSUlBR3ZRTUJBbWpRT3hBZ2dBYTlBd0VDYU5BN0VDQ0FCcjBEQVFKbzBEc1FJSUFHdlFNQkFtalFPeEFnZ0FhOUF3RUNEQURqK1NwUEFuYktYQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9nZW5lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFtL1NVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQXNaQ2krUExseXd6djNyMWo0T1RrWlBqMzd4L0Q2OWV2MVc3ZHV1WDQ5KzlmajY5ZnZ4cisrZk9IRnlqK0Y2ajBQeU1qSXhNcksrdGZOamEyNndJQ0FnZUZoSVIyQXVselFMR2YvUHo4RE4rL2YyY3dORFJrWUdKaVltQm1abWJnNE9EQWF6ZEFBSkhrVUJZV0ZnWXVMaTZHejU4L3E5Ky9mei8zd1lNSEFVQ3h0MERMN2dBZE1lZmp4NC9YcEtXbHZ3RWR3bmpseWhVbUhoNGVWYURqRFlBZWNubng0a1dTcUtqb0JYRng4U215c3JLN1FBNkZBYUNuQ05vTkVFQWtPZlRObXpjTXIxNjlTcjF3NFVJekx5L3ZaMTFkM1NsQWh6MEVPbkw1czJmUEdBNGRPc1R3NWNzWHNNV2dVUGZ3OEdEZzV1Wm11SG56cHZPM2I5OTA3dHk1NDN2cDBxV053QmlZTFNNalV3bFU5NVZZdXdFQ2lMbWhvWUhvQUFVNnBBeG9VWmVabWRsQ29FTXpnTkdsZnZqdzRZcGZ2MzdaS0Nzcm4xVlZWWDF2YlczTkFJeG1CbTF0YlJEbXVuanhZc09CQXdjcVFBNk9pSWlJQTBiOUE2QkhhNEVoYkdoalk3TWZtRlMrZ0tJZkZGdjRBRUFBTVJKYk0yM2J0bTMreVpNbmcweE1URXJkM2Qxbnpaa3poK0hodzRmbmdmb05RUExBNkZ5Um01dWJDbVIrQVVVcktNMEJQVllDMU5jTlNzOUE4Tm5ZMk5qYzBkSHhPakN0V3g4L2Zud1JNSW04VDA5UDl3U0c3R3RnV3NaclAwQUFNUkVSM1l6cjE2L1BPWEhpUkVob2FHaUNoSVRFck9YTGx6TUEweWNEMEpHL1lCNTkvUGh4QkRDS28wQnNVTFFEUTh4ODc5NjlwVkJIZ3BMRFQyQkljcXhldlJxVXpvK0doNGY3QURPZzBKUXBVMllDSGNsSnlCMEFBVVRRb1I4K2ZQQS9kZXBVRHpCS0d3VUZCZGVESE1iSHg4Y0FUSnNNN096czRQaUNPWGJUcGsyNVFFb0V4RDU5K25RYU1HVEZZQmtGR0wxTXdLVEJERkw3L1BselVOcTlIaDhmSC9mKy9YdVhuVHQzdG9EOGdzOGRBQUZFeUtHaWE5ZXU3ZERSMGRscWJtN2VBeEpRVVZGaDhQWDFaY2pQejJkUVVGQjRBOHUxSUFjQU01b09NRTI2QVRPVUdqQUdncEVOQW5ycXE0dUx5d3RRQmdPWkFVelhETUNvUHdKTVNtVkhqeDVOQThhY0RUNkhBQVFRVG9lQ29neVl4bUtBbHNwSFIwZTNBQzFpK1Buekp3TXdWT0VKSHhoQ0oxQVNQTkRCUUQwWndCZ29CQlpML01paERjeDhqNEFaNlFsSUx5aEdnSHdHb0JvR0p5ZW4rY0JTNHdZd0xSY0M3Y1NaVUFFQ0NLZERnUmxGNE5peFl3bnk4dkxMZ1k2OThQYnRXN0FEZ1VtQkFaaTJ3RmhKU1drZnNMRCtDWElNTElxZlBIbGlzM3YzN2hSMDg0RG03QVY1RkZnMGdSMEl5dWtnUGNBazhOUFUxSFF5c0Z4MnVIdjNyaTR1OXdBRUVNNHlBWmgyZElCcFRBNVk3RFFDSGZrZlpBa29rNEJDRkFhQWxsd0dGa1UzZ0FXNlBzeXhRSm9SNkJBV0VCdm1lS0JuZmdGeit3NlFSMkhpd0lBQXh4Q0lEYXdJZGdFZC91YjY5ZXN1d0ZnNmk4MDlBQUdFMDZIQXF0RWFhTUZMWUpRZnVuSGpCZ01zTjB0S1NvS2pFNFNCaHIvVDB0TGFkdkRnUVgza2FJYXhZV2xYVEV6c2xJaUl5R1ZrODRFMUZNUHYzNy9CYkdBTjlnSW9mdzRZb2c1QWJpYzI5d0FFRUw0UU5RT21uWnRHUmtadmdGVW1MR1JBR1FhTVFZNEFoWkNVbE5ReW9HY3lnYUVqZ0c0R3pPRjJkbmJ6UU9VcnNoeW9uQVdtV1RBYlJLdXJxNThGWnFwY1hPNEJDQ0I4YVpRVFdON2RRUTRsVVBvQ09RNVkvWUdMSjFDb0FLUHFxb1dGeFNKYzVnREwzYlBBZ240anVqZ29RNEdTRVFpRDJnL0FRTGdHckdhNWNaa0RFRUE0UXhTbytTOHd3L3pkc21VTE9JcEFJUWpLQkNCSEF0TWJBNnhSQVhUNGYwdEx5K25BWXNrZDJDaFJSdzVOb09YL2dFVlNMNUQ3RGxRY2dRQ29CZ0pXQk9BS0E1Wm1RUUFZSTZCMDhCdVhld0FDaUtoR0NYTEdRS2RCdVJjOXF0SFRLYm9aNkswbWJITG9BQ0NBY0RvVUdBM013UFRIN09QakEyNFJJVHNDMUNhRk9RU1lQaG1COVhZbXNOaFNSeTc4b1dVeDA2NWR1NHIxOVBSMkF0UGhPNWgrWjJkbkRQdUE1Uzhyc0hYRmlzczlBQUdFMDZIQWN1ODcwTEVxeUw0R1pTWlFrZkx5NVVzd0d4U2FQMzc4MEFiV1FuSElEa1FPSFdER016NTM3cHcvTUZQT1J6WWZtRXpBbFFwSUR5aGpBWk9WRnJDNHc5bnNBd2dnbkE0Rkp2SlR3Q0lxOGV6WnN5TEF0UG9HWkNBbzBRUFRJNmpjZzZWQmhoMDdka1RCY2p6TXNlaU9Cb1pXRXRDaHE1RnpQaWpOd3NwUmtEbkFCbzB4c0xhNmlzczlBQUdFMDZGcWFtcEhnUVZ3QlRBajJRSFo2MEFHZzN5TzFtNFVBamJadkxDVm5jaGl3Qmd3QTlibHVzRG9QdzV6UExCMUJYY29NQ1FsZ0pXR2tZR0J3VnhjN2dFSUlDWThJWG9GV01BL0FxWWJIMkJoekFocStFTExWM2dWQ3F3dWRZRjhEUlFEbVpqK0F6M3pCem5KQUtPVmJmLysvUjZndEExMEVMZ2NCcVovVU5IR0FIUWNTTXdONkNFUkRRMk5QYmpjQXhCQU9CMHFKeWYzd2NyS2FnR3dQSTBFMWh3R29GWTdxSGdDVmdMZzdnVUkzN3QzendsWXRySWpwMHRnK1hvRW1Gbm1vSmNFd09MSUdWUTBnYUlaaEdIaVFBK3pBNXVFdVlxS2lnZUFyYXJMdU53REVFQTRIUW95REZpakxBR21tNGZMbGkyckFXWWFVQTRIaHlqSXdTQncrL1p0Qy9Sb3Q3VzFuUUZzRXZZRG8va2pzbm5Ba2tNT3FFOEdwQmRVMDRFd0tCbnQyN2N2RVZoaWFIaDVlZlVEWStNWEx2Y0FCQkNoOXVqcjRPRGdDbUEveVJ2WURTbUJPbzVoOCtiTkRCTW1UQUNGa2doeU9Rak1aRmVBVWJrTDZMbGJRTWV1UlM0ZmdlbVJHOWlxa2dBMmtzRm1nS3BOWU02M09YUG1UQmV3VVQ0TG1MeU80SE1JUUFBUmJPRURHN2NiZ1ZWa0NiQ3NyQWY2UEJCVUpIMzY5SW5oNmRPbklNdi9JRWV2bjUvZlpGRHZCY1FHTm9obkFUUGZLNWhIZ0VYUlA2QURRWDErY1BvRUZuMmFpNEFBbUJmMkFQdGdOU0JqOExrRElJQUlPaFRvMC84QkFRRlRnRDNQTmF0V3JWb0F6SzFwd040a3VKY0pkRFFiTE5TQWFXd0ZzR0d4REtRSGxLT0JqamtKak01dWtNZWdIbUhYMTlmL0VSUVVCRXFYMWl0WHJ0d0NMTzdlQVR1RTZjQVM1VHNoZHdBRUVOSGRaV0FSdFJXWXkvK2RQMysrRTFqUGl3SWJKTmVFaFlYL0FJc2RWVkJ1QmJaYnE0QzU5eVV3ZDRNNmV1QTBDR3dTWGdCbU9rWmdIMGtLMkViWUIyd2dMd2MyNWFLUEhEbXlFaGphSjRDT2pBUVdmNitJNlM0REJCQWpLUU81UUF0QVpXSXFzQUhTREF6Rno4QWNQaGVZVXg4QzArUnlvQWZBRFExZ3R4bmN6UUNXd2FCMktBUFFFNkFRZFFZNlZnZFlndmdDTTVNMXNBMDdHNml1MHREUThDdXN3Q2MwcEFNUVFDU05sQUJERUdUZ2JHQzZQUVFNM1Z4ZzhaUURUS3R2Z1JhRkFNWE9BMHVGYThCTThnMklHWUZzSm1DeVZBVVdQUWJBVUZNQnN1V0FUYjRMd0tUa0Q4cHdvTElVVmxJUU02UURFRUFraFNpdVFUSWdHejVJOWhmVWFJVmtEQ2FnWS84QzhYV2dKdzRDTXczS0lCa3dNekVBcTFXd0kwRWxBS2pvd3djQUFvaHhxSXpoQXdUUWtCa2ZCUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSU1BQUM0bzQ3Um5JZmFRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2gucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFCUlVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBTEdRcXpFbEpVVUJTQ1VnQ1MyWU8zZnVBMnhxazVPVEc1QzRCK2JNbVhPQVZQc0FBb2lGQWsrQ0hGcVA3QUFnZm9CRGJUMGFuMlNIQWdUUWtJbDZnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQVlxR2lXZnVCeFJETkhBb1FRRU1tUkFFQ2FNZzRGQ0NBcUJuMWpzQ2E2UUNPbW9uaXJpNUFBQTJaRUFVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDQ0JLY2oyb1NkZUl4c2NGR2lscDRvRUFRQUF4RHBWQk1vQUFHakpSRHhCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCQmdEUVl4NC8ySWw2TEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGFuZGxlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFHQ0FZQUFBQzFyUXdXQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQW1FbEVRVlI0Mm1MOC8vOC93MUFBQUFIRVFxN0d2WHYzWm43Ly9wMUJVbEtTUVZ4Y25FRkdSbVk2Tm5WUG5qekpmUG55SmNQejU4OFpPRGs1R1p5ZG5hZVRZeDlBQURGU0VxSm56NTdOQkRrQUJOQWRqT3hBbUx5eHNmRjBjdTBDQ0NCR1NxTWUzVUVTRWhKZytzV0xGMWc5UUM0QUNDQkdhcVZSYkNGSURRZkNBRUFBTVZJN001MDVjeVlUUkp1WW1FeW5wcmtBQVFZQVdRNUwreFNWNWpvQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvaGFuZGxlMi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBR0NBWUFBQUMxclF3V0FBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBQy9TVVJCVkhqYVl2ei8vejhEcVlDUmtaRVZTUEVDTVN0VTZEY1FmNGJTeUFDck9xQ2R2MG0xRXlDQVdCaklBeHhBckFURVVsQXpRSTY4RDhUdm9Hd0dxQU9GZ0ZnUnl2NER4TStBK0NZV0R4RUVBQUZFcmtOL0FQRnJJQmFEWWlFb2ZnZDFNQVBVZ1VKUVJ6SkFIZmthcXBka0FCQkE1RHIwTjlSaUdCdm1JRmdvTWlBNThEUFVBN2VnZW42VFl5RkFBREdTbVViUjA2QVFsaEQ4akJUQzc1RFRNRGwyQWdRUXBRNUZkN0E0RU90QnhTNEI4VXRzbVl3Y093RUNEQUFHZVRqUjViTHBId0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9oZWxpeC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBT1NTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQURSM0tFZlBuejQvL2J0VzRvTGE0QUFvcWxEZi96NDhmL3ExYXNNejU0OW85Z3NnQUJpb1lVRC8vNzkreDhZa2d3M2I5NWsrUGp4SXdNUER3L0ZaZ0lFRUF1MUhmajU4MmVHcDArZk1yeCsvUm9Vb2d3c0xDd004dkx5RkpzTkVFQlVjU2l3dlFCMjRNT0hEeG5ldkhuRDhQdjNid1pHUmtZR1RrNU9CaVVsSlFaK2ZuNks3UUFJSUJacU9QTHUzYnNNang4L1p2ajU4eWZZZ1d4c2JPRFFGQkVSWVpDV2xnYUpNVkpxRDBBQVVlelFPM2Z1TU55L2Y1L2gzNzkvREJ3Y0hBek16TXdNRHg0OEFFZi9sU3RYUU1tQndjVEVoT0lRQlFnZ2loMzY2TkVqQmlZbUpnWStQajRHRlJVVnNHTkJJUXZLNmNCaWlXSFBuajBNYW1wcS80SHlGSVVxUUFCUkkrb1plSGw1R1hSMGRCaTR1Ym5Cam5GMmR2NXZiR3pNc0dYTEZuQUlneHdOOGdnbEFDQ0FLSFlvS05SQXhSQW80eWdySy8rSE9SWVVzaG9hR21CNVVIcWxGQUFFRU1VT0JUa0NsTnRmdkhqQklDTWp3MkJ2Yi84ZjVHaFFrdmoyN1JzNGM0SEVLUVVBQWNSSWFWZmswNmRQLzQ4ZlA4NXc3ZG8xQmpFeE1RWkpTVW1HUDMvK2dCMElTcnVnZENzckt3dGlVNVJHQVFLSTRoQUZwVTh0TFMwR1ZsWldjSG9GNVhJUUcxU1dnaHd1SlNWRnNTTkJBQ0NBcUpMcmI5KytEUzZlUUNFSWN1VExseS9CeGRQMTY5Y1oyTm5aUWJtZTRxZ0hDQ0NLSFFvcTdFRWhDY3hFREFvS0N1Qk05UDc5ZTNENkJOVlcyN1p0QTRYcWYyQjlUMUdvQWdRUVZZb25VS2daR2hxQ2N6Nm9Gdkx6OC90dlkyUERzR25USm5CZER3cGhTaHNtQUFGRWNUTVAxRW9DTmVWZXZYb0ZUcGNnQUNvN0JRVUZHUXdNRE1EcEZCU3lsQUtBQUtKS09RcEtwNHNXTFFMbmNFdExTM0R4QkVvU1g3OStCZWQrY1hGeGloMEtFRUFVRjAvQVRBTXVudTdkdThjZ0xDek1vS2lvQ001WXNDSUtsT3MxTlRWQlNZQ2lOQW9RUUl6VUdOSUJPZmJXclZ0Z0I0S0tKeEFOU3JlZ3pBVXFReWwxSkFnQUJCREZVUStza2NDT0JJVWd5Tk9nYUFlRkxLZzJBcFd4MUdqaWdRQkFBRkhzVUZBOUQyb3RnUndJQ2oxUWVnU3hxVkhJSXdPQUFLTFlvU0JIQ2dnSWdOTWhxSVZFclJCRUJ3QUJSSlVxVkU5UGo0R0xpNHNtRG9RQmdBQ2lPRE1CYTZIL3dES1RwbzRFQVlBQVlod3FBN2tBQVRSa2huUUFBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnd0FCZGowb29LcmhTb1FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGVsbV9hYS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBUUFBQUJ2eWdIUUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQURXa2xFUVZSNDJtTDh6MEI5QUJCQVREUXdrd0VnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lDYUdBZ1FRVFF3RkNDQVczRklsL3hlQmFWQktaa1NUKzgrUXlOREZpRXNuUUFBeDRrcjhsLy9iTTh4Z0VHYUF5VE9pV1BDT0laM2hJSU11RG1NQkFnaW5vVUgvcFJtaWdBYjhCeHVDVEVLTVhzYndqR0V0RGtNQkFnaEhtSzcvZnhOb0pNS3p5RWFDM01ySUVNMXdFNmdLdTI2QUFNTGhVcVAvb1F5T0dLTC80UUVCWXUxbldNdHdGcXRiQVFJSXEwdjcvZ3VEamZ3UDF2d2ZTc1BjQ0hFekk0TVRnd0JETDFZM0FRUVFGa1BmSE80QWVnNW15SCs0VVF4STNvZUFXSVl1aHRmbk1VMEFDQ0FzM3MvNS81NGhGOG1ycUY1SGpiaXBESHdNMHpDQ0FDQ0FNRng2NHY5YWhnU1VKQVRCVmxEWE04SU5CeG1jd0xDQjRTU0d1d0FDQ01QUVpvWVlCaDY0ZGthb0FYc1lyQm51QThuL0tPbjJQd00zTUkwMFl2Z1ZJSURRREYzMi96bERFRWJZTVREc1lEQmdDQWFTc0loQ0dCM004QnlvQzlVVWdBQkNNN1FWNkU1R2VBakMxRjVrT0FiMHZDdVFmSW9VY1RBeWxxRUZ6YVVBQVlSaWFBdFFoeFZLckVOY3RRZm9IZ1lHZlFaRllOcEVEbWVJaXkwWnROQU1CUWdnRkVPREdSNHh2RUxLUTdDVXVaYkJCY3ozWXRpR0ZOWXd0NzVpMk1ud0VDVUFBQUlJcFpUU1pNeit2NENoRE81NWlIdjNBSEVtWE0wZVlEQ2dodmdDaG13R2VaUmtCUkJBYU9uMGw1RDYyMUlHSTZTaWc1R2hCQmhKTVZBdmx3RDUzZkNBQVpIbmdSbmdwakRiTzJSVEFBSUlMYUxZM2xVekxJR0hLWWkrd0hDVXdRSHVXUThnN3hsSy9sck1VTW1BYWlRREEwQUFZYVRURkVaV2hpMUlpWDhQTU9xazRla0E1UFhsU0NsakN3TXJReHBHamdJSUlDelpkTy8vVktEOVRDaFpGTFBrQjRuOEJRYkxIQVpuREVNQkFnaHIwWmZ3bjRraEZaN1RFVVlpOGowa3djMWgrTVd3Q0V2aEJ4QkFXQTE5OEYrRFlTR0RQSWJMWU5VSmhQZVFJWjdoQm9NQ0ZrTUJBZ2hyZWFyQVdBME1BQlM3a1ZJdHpLV2dLRkxBV2tnREJCRE9Pa3J6ZnpxRE9ZcUJxTUZ3QWxndDNzQlJSd0VFRU01NkgrUlc5TklVa1VVWmdBbXZCbWZsRGhCQWpMamJwNTcvSHpGSW9BVUNMRXhmQUpQWkxwejFQa0FBNFRIMHlQKzNTTEdQWHZKTE1wampOQlFnZ0JocDBaSUdDQ0NhdEtVQUFvZ21oZ0lFRUUwTUJRZ2dtaGdLRUVBME1SUWdnR2hpS0VBQTBjUlFnQUFEQVBlNDNhUnp6ZGRkQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9oZWxtX2Jhc2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVFBQUFCdnlnSFFBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFEREVsRVFWUjQybUw4ejBCOUFCQkFURFF3a3dFZ2dHaGlLRUFBMGNSUWdBQ2lpYUVBQVVRVFF3RUNpR2hEZC84L1FIUkNBUWdnaHY5RXdmTC9Cdi8xL2xmK0owNDFRQUN4RUdOeHhmK2RERmtNakF5VEdCait0ekVTVmc4UVFFUjR2eHhvWkRZRER4RG1NbXhocUNJaUVBQUNpUEUvRVVibU1IQkRlVjhaSmpONE14QnlMVUFBTVJIeStDNmdLMEZHTW9JaE45QzFXd202RmlDQW1BaUZKY2pqSUlkQm9vQVJ5TXNoR0FnQUFjU0V6K003b0s2RWhoUVFnZ3ptWWNnallDeEFBREhoTm5JWDBFMFFWeUtTSDRUSFRjQllnQUJpd2hlV1BGQVhNc0NOL2cvbGdZekZIYllBQWNTRUx5d1prQkowRkVNNU5Hd2hSblBqU1dBQUFZVEYwRXF3a2R6UWlJRzQ3QVNERWNNamh1UHdWQUJ6TFhaakFRS0lDZE9WTytDSkNPSXVFSG1VUVpQQkhVZ2lzamJDMkdvTVl3RUNpQW1Ya2NpUmM1UGhMRERKV3dESjExQURZUWFEak4yTVlTeEFBS0VZV3YxL0tUajNRTHlIVUhrYzZFb0dCZzBHV1lhVEtBa01CRUFKYkNHYXNRQUJoR0pveVRKWmh1MW9NUTR5ZkJmUWxTRGFqdUV3M01qLzBKVHduMkVuZ3pSUUo3STVBQUdFbHZmZkwvV09rbVFJaFhvYkluY0NWRHJCUVM2REZWUU9JcitPNFRIRHRtVkMwY2ltQUFRUVJvSHlicWtQME5nUXFCYVFXN3FCSHZlQnVxOGJpSXVSZ21BZHcwT0dIY3NFbzFITkFBZ2dqTmdYaXQ2eTdBWERHbmdnM0dBNHgyQUdqelJyY0dUQmpGd0xUR2JiTVl4a1lBQUlJQ3pwRkdUc2M0WlYwQmdHcFZCeGVQaGFBY2x0VUhVUUk0V2lNVTBBQ0NBYzVTa29FQ1RBWWNzSXovRU04SFFMY1NWbVdNSUFRQURoeVB1d1FFQWtyUC93Rk1xQUkzb1FBQ0NBOEpUOENOY3l3UE1YTE1aeGVSd0NBQUlJVDNtS2lESllJVTJja1F3TUFBR0V0K1FYaXQ0S2pMSTFVRzlEUWhma2NmeEdNakFBQkJDQk9rb1FuQkxXd0NNSjVNcHRCSXhrWUFBSUlDS2FCbStYV3Y0UCtyOGNDRVAvbS8xL3U1U3dEb0FBSXFyRjhRNXNiQWpReUhkTGlWRVBFRUJFTm50QXJpWE9sU0FJRUVDTXhMYTYzbTVoWUJEMklVNHRRQUF4MHFMTkR4QkFOR21mQWdRUVRRd0ZDQ0NhR0FvUVFEUXhGQ0NBYUdJb1FJQUJBSURUa3VTSDFaT1JBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2hlbG1fYmxvYi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBTUFBQUR5SFRscEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBR0FVRXhVUmFpOHcrenY4ZFBKeHBlZ3FkM2UzaVltSnJpNHVQWHk3OCsybU83dzhacVptZnJWcXUvdjc1YWRtdlBGcS9qMjhhS2xxKzd5OVU1T1Rob2FHdnpac1RZMk52YjA4Yi9OMWU3eitPN3U3UlVWRmZiMjl2cjYrcENRa1AvLy8rM3Q3Zkx5OHZYMTlZQ0FnUGYzOThuSnlhdXJxL241K2VycTZrVkZSVlZWVlQ4L1A5RFEwS2lvcUF3TURPam82RkJRVVB2NysvajQrTnZiMjhiR3hpTWpJL1B2N3ZISXJ2RHg5S0dwc0p5T25Ldk0yZUN4bStyZTErN3Q3ZkgyOVhhR2t1dnc5N3JJMnZMeDhOems2TS95KzRlVmxxQ2xtSitWZ3FLanBJbU9sYUtwcDZYTTZ2ajMrYWU0dnJmVThKMjZ5dm42K1ByNStQdjYrWkRENzR5Tmp1TGR5TERTMm9teDRmVHo4dTN0N24rQ2U2S3YwNkNNamFPU2xiT1FpNXljeE5qU3VNUzZzUFAzOHRhNXE0K2tyZlBTd2V6aDIvaml4N21taC9YMitQbjkrK3kvalBUcjRyaVdrZkxTc2JQZDRkUDErZC94L2ZyeDdxWEEzOFM3cTg2eHBwS1ZuSk95dy9EeDgrZklyYlBGNk12THl3Z0lDTzd1N2dBQUFQLy8vMWhabm5vQUFBQ0FkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84QU9BVkxad0FBQWlkSlJFRlVlTnBpcUNjYUFBUVFBL0ZLQVFLSUJLVUFBVVNDVW9BQUlrRXBRQUNSb0JRZ2dKQ1ZLaHJyQ0FuWHdJR3drSTZ4SXBJMFFBQWhLVFZTRXE2cmt6SmhoUUlUcWJvNllTVWpoRHhBQUNHVVZtdlYxV25Lc3FsVVE0RUttNnhtWFoxV05Wd0JRQURCbFdxTDFvbXF5c3ZKS0V0RGdiS01uTHdxVUZBYnBnSWdnR0JLMVRYcWhGZ01GV3BSZ0lJaGkxQ2RoanBVQ1VBQVFaVWFLTldKc2lqV1lnQkZGdEU2SlFPSUdvQUFnaXJWRTlaVlZlUEJWTXFqcHFvcnJBZFJBeEJBVUtWY2RmcnlDclZZZ0lLOGZoMFhSQTFBQUVHVkN0WEp5dFZpQlhLeWRVSVFOUUFCQkZVcUxNVW1nMTJwREp1VU1FUU5RQUJCbGRhWXFDalgxa295WnFxSlNYSTZBVlZJVmpoQmxDcXJtTlJBMUFBRUVFd3BhN1YwYlMxblRxS0hvMTBhQ3lNUEQ2ZU5NOFNYMHRXc1VLVUFBWVNpVkVJa3lwN1htOCszc01nOHk5cktnZDhXUlNsQUFLRXE1VTRSendqbVkwaGdGcWpLdHZlS1RrSlJDaEJBYUthNldyaUhtekhFNVNjTGNQZ3p4YmlZSWlzRkNDQU1VMHZpS3hseXcwb3RPTXFaWWd0UWxBSUVFSXBTd1hTdXNoQy9WUEZRUzE2L1BFKzNZakVVQndBRUVJcFNTVTYxUUJsMndZaUtBRU4yd1NBZnNVZ1VwUUFCaEtJVUcwQW9CUWdnbENqQUJoQlJBQkJBSkVRc1FBQ1JrRndBQW9pRVJBZ1FRQ1FrYllBQUlpSERBQVFRQ2RrUUlJQkl5TndBQVVSQ2tRRVFRQ1FVUkFBQlJFTHhCaEJBSkJTYUFBRkVnbEtBQUNKQktVQUFrYUFVSUlCSVVBb1FRQ1FvQlFnd0FLczUxMm1kZktYZUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvaGVsbV9jaGVtLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FRQUFBQnZ5Z0hRQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQzhrbEVRVlI0Mm1MOHowQjlBQkJBVERRd2t3RWdnR2hpS0VBQTBjUlFnQUNpaWFFQUFVUVRRd0VDaUNhR0FnUVFUUXdGQ0NDYUdBb1FRQ3lZUW8zZmQ3QUpNUDJEOC84ek1JSXhLZ0NKTURGOCtPZnhxNTRUM1FTQUFNSmk2QmUyMks5Qkw3NHhJNHVCakVXbUlZRHI3M3FKZTl5WUpnQUVFQlpEbVprRVg0anQrc29KY3crRWhobklDSFU1aU1YOW5kK05TUlhUQklBQXdtTG9mNFkvekg4NC8zQWdHOFVBRDRML2NMY3pNUHhoK011TUxVd0JBZ2hyUkVFMHcxekppR1FZc3BHNEFVQUFNV0UzRW1Zd3pIaUkwZi9oVmpEQTNZL05lSUFBd3VyOS8zQjNvb1lpQTRxTC95TzVIQlVBQkJBTGRnOHdvc1Q2YjhhL1RQL0IzdUw2ODQvaFB5TnlFc05tTEVBQXNlQXlFdVkrdG44M0JQMjhoTCt4L21SaWVNTmVjQ2ZqOGpkR1Fva2ZJSUJZOEV1RGpQM0tvTTY0NHJ6NFZRYUdvOXJwTnRaUE5kNzlac0tXSFJBQUlJQndabE5FUERNQms4NUhsaS9zbjlpMWdFNTQ5WjhSN2hOY0FDQ0FtTEM3RGprNi9qUDhZL2pCOUoyRm1YRVRJOHQvUllhLzhQU0FLMmtCQkJBTExqY2lFZzRudzEyR2FCMVcxY2VDd3Y5WG5GSjQvWk9ORVNtVllBTUFBY1NFTy9aaHJ2bk9vTW13OTl5NTFYVlBPUmk1ZnpILys0OWlNVGEzQWdRUXpzVC9IeDRNak1Bdy9jRHlsVFZyajhuZGVJM3ZYTXovLzJNa1BWUUFFRUJNdUtQb1B3TXNTcGlCcHY5bi9QbXY4Zmt2MFJqdmY0eUlhTUllQUFBQnhJSTc3aUd1K01PazlYSE5DbWFHWDJ3TUREeVBkeTcveGZRZktTTmp6NllBQVlRelRCbVJVZ0RUZjVDUEdSbisvV2Y2ei9FWFBVdGpBb0FBWXNLZFNSbFJDZzFHREFOd3AxT0FBR0xDbmUvL1l3UUZyRUQ4ajJRVk5nQVFRQ3k0STRvQnc0V0lkTUdBdDVRQ0NDQVdiSTduK2N2Mm5ZMllhdk03MzE5czRRY1FRRmdNL2ZCL2tzUit0OS9NMk5NRGN1WEMrdmV5aERvV3h3SUVFQ09tMlBtbk55UVltREFyUE9US0dXN1JQNDBYaHRMb0pnQUVFQ010R3IwQUFVU1RGZ3BBQU5IRVVJQUFvb21oQUFGRUUwTUJBb2dtaGdJRUVFME1CUWdnbWhnS0VFQTBNUlFnd0FCOUh0emtSUm5vT0FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGVsbV9jdGVybS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBUUFBQUJ2eWdIUUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQURWMGxFUVZSNDJtTDh6MEI5QUJCQVREUXdrd0VnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lDYUdBZ1FRVFF3RkNDQVczRklsL3hjeC9HZGdoUE5CS1JyQmkyZm9ac1NsRXlDQUdIRWwvc3YvN1JsbU1BZ0JqWUVZL0IvS2doajlqaUdkNFNDRExnNWpBUUlJcDZIQi82VVlvdUV1WklBYkJ3TkxHSjR6ck1WaEtFQUE0UWpURGY5dmdvMkVHY1FJTlJnQm9obHVBbFZoMXcwUVFEaGNhdlEvbE1FUlJRUVJDREN3bjJFTncxbXNiZ1VJSUt3dTdmc3ZERGJ5UDBva3dWai9vVHdIQmdHZ1NtejZBUUlJaTZGdkRuY3d4Q0NGNDMrazBHU0VRb2liWXhrNkdGNmZ4elFCSUlDd2VEL24vd2VHSExoSC84UGpud0VqRGZ4bm1NckF4ekFOSXdnQUFnakRwU2YrcndXbVFWZ0lNc0FqNkQrSzJ4bWgwWmZBc0o3aEpJYTdBQUlJdzZWZS83VVpndERjQXpIMEs4TmlobnNNUEF3dUROWklVYmVhNFJyRGRqUzNBZ1FRbWt1WC9YL09FQXgzSFNPSzF5c1lYZ0VUa2k0d0hPL0NRL2svUXdqRFM0YmxhQzREQ0NBMGwyci9UMmF3UkRJS29ma3VReUhETXFBN0dSbDJNZWd4U0NBbHIyTU1jeG11b3JnVklJQlE4bjdMZjBZR0s2aEJ2aWk1ZmpQREZ3Wk5CbDZ3bkJ0SzZtVUE2amlPRm9RQUFZUmlhRERRYXk4WnhNSHN6Umh4ZlFQSzNnVjBwejVTYUw5azJNN3c4TDg4a2xzQkFnZ2xURFVaY3hnV291VWhScWgyZlFaaGhsNmdleTh4VEVGSlh2OFpGZ0FUb0R5Szl3RUNDQzFNZndtcHZ5MWpNRVFwNkdCaGQ1ZGhKc04xQmhFR0gzRHFnS2s0ejlERmNFT1kvUjJ5S1FBQmhKR2taditmejlDSHRRVDlqOEVHa1VYQXRKcUdscVFBQWdnajhhY3lzakpzZ2Vad1JxUTBnTWdPeUpsMkN3TUxocEVNREFBQmhDWHYxd0dUemo5NFVrSXQvQmlRQW9XQjRRL0RVb1lHTEFVS1FBQmhMZm9TZ1VrckRXdHhoK3IxT1F5L0dCWmhLZndBQWdpcm9RLythd0xqVkI1blNRclI4d2dZbXRjWkZMQVlDaEJBV010VEJjWXFZRDcvajViSS95TVZNQ0M0Q0poeEZiQVcwZ0FCaExPTzB2aWZEc3l3Mk53S29ZOERFOWdOSEhVVVFBRGhyUGRyZ1ZVYkE5eDkvOUdNQkZWOE5UZ3JkNEFBWXNUZFB2WDgvNUJCRW9mY0N3WnBobDA0NjMyQUFNSmo2TkgvYjFBeUFhd1VnSVNxQklNNVRrTUJBb2lSRmkxcGdBQ2lTVnNLSUlCb1lpaEFBTkhFVUlBQW9vbWhBQUZFRTBNQkFvZ21oZ0lFRUUwTUJRZ3dBSVUvNzZhYS8rMUlBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2hlbG1fZmluZC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUMya2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1pDcjhmWHIxLy9QbnovUDhQanhZNFlYTDE2QXhTUWtKQmhrWldVWkRBd01HTVRFeEJpcDZWQ0FBR0lrdGNELy9QbnovMFdMRmpGOCtQQUJyem9CQVFHR3VMZzRCbDVlWHFvNEdDQ0FTSExvcmwyNy9wOCtmUnJNNXVEZ1lMQzB0R1RRMWRWbFlHTmpBNHY5K3ZXTDRmTGx5d3pIang5bitQSGpCMWpNMU5TVXdjM05qV0xIQWdRUTBRNUZkaVRVY3JCK0hNci9BOVV6b0ttbnlMRUFBY1JFYkhURExFMU5UWVZaaXM5aVJwQWFrRm9RQU9rRm1VR0pRd0VDaUNpSGd0SWtMR1JJeVNRZ3RTQTl5R2FRQ3dBQ2lJbVkzQTNLT0tBMENZMXVrZ0JJRDBndnlBeVFXZVE2RkNDQUNEb1VWQVNCQUNqakVJaHVuTWtBcWhkdUZqa0FJSUFJT2hSVVRvSUFLSGVUQzJCNllXYVJBd0FDaUtCRFlZVTVyQWdpQjhEMHdzd2lCd0FFMEpDcFFnRUNpS0JEUWRVaXJEQW5GOEQwd3N3aUJ3QUVFRUdIZ3VwdUVBRFZPT1FDbUY2WVdlUUFnQUFpNkZCUUF3TUVRTlVpcU1ZaHc0Ny9VTDBNaG9hR1pEc1VJSUFJT2hSVWFJTWFHS0M2RzFRdGtncEFla0I2UVdhSWlvcVNYWTBDQkJCUm1RblVDb0pWaGE5ZXZTSTZWRUZxWVZVdnpBeHlBVUFBRWVWUVVGTU5WaFhPbmowYjNFQWhrQXhBalpML0lMVklOUnpEdlh2My92OG5jeUFCSUlCbzNzeERCeUI5QlFVRkRNek16Q1FsQTRBQW9ubkRHUlNTeTVjdnA5aXhBQUhFU082UURpajlYYmh3Z1dCWEJCVGQ2QTRseDdFQUFjUkk2N0VuVUpyczYrdkRtaFJJY1N4QUFORzhDbVVFQXBCalFJNUNCeURIVDVnd2dlSHYzNzhFUXdzZ2dPaFMxNE5DREo5alo4eVlRZEFNZ0FDaVc2TUVuMk1KWlV3UUFBZ2d1cmFlY0RuVzBkR1JvRjZBQUdJY2lJRmNVSm9FUlRjb0pFR090TEt5SXBpWkFBS0ljYWlNT0FNRTBKQnBPQU1FMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVHQUJlWFROZ2lFNm0yUUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9oZWxtX2ltcG9ydC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBUUFBQUJ2eWdIUUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNha2xFUVZSNDJtTDh6MEI5QUJCQVREUXdrd0VnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lDYUdBZ1FRVFF3RkNDQ2FHQW9RUURReEZDQ0FhR0lvUUFEUnhGQ0FBS0tKb1FBQlJCTkRBUUtJQlprei9mOE1Bc3IvTXpCaUZjbGd5RVNTQUFnZ0ZFTmZNWGd5bElFVmdRcEVpQ3BHcUxiL1FNakU4QS9NaDNqeFAxeXVBNmdUR1FBRUVBdDJGekdDOFQrb29URCtmNmhSRURHSWdmL2cxaU1BUUFBeFlUUHVQOXhqeU81a2dOUC80QmhoT1RJQUNDQVdURU5CN3BuQkVNSEF6L0NCWVR2RFl5RHJHSkFFR1ZqS3NBM0k4bUtRUTNJUEl4YVhBZ1FRRTZhUkRBeVhHU1lEdFRNd2hESjhZdEJsQ0dQUVl1QURHbWJOME0yd21rRVd5UDhJRGMvL1FEZGlxNDRBQW9nSlBTNUJZQVZEUE1ORW9JRjhER2tNdkF6NURIb01Pa0REYkJoT01reGc4QUVhekE4T0dFWWtaNkFDZ0FCaXdrdzAveG4yQUxXRDNQc1VxT1U0MEhnR2FNUXdNRHdDa3NzWkhzSWRBQWtzZEFBUVFGaGlmd2VER2NNa2htVU1xNEMwSzRNMFV1b3NCTHJjREdoVkdUaHlZQVppdWhRZ2dCaVJoUnIvZjJlb2dMc0w1TUVQUUZmcHcxTWtKTHoxd0FZeVF1TWVCTG9ZT0JqcWtXSUxJSUJZTUNPS0VTbGQ4Z01qQ3BHTFFJYnFRdDM0SHlrL29ic1ZJSUN3Uk5SL2FNcjdEN2ZtSDFKaVp3UjdHWUlaa1l4SEJnQUJoT2JTZVF5YmtieUd5SWdRQzVuZzdvTzRCNWFiWGpOa29aZ0NFRUFvWWZyeS8wdVVuSVdhQmYvRE15b0RXbUppWkJCakVFY0tVNEFBWXFSRld3b2dnR2hTbmdJRUVFME1CUWdnbWhnS0VFQTBNUlFnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lDYUdBZ1FRVFF3RkNDQ2FHQW9RUURReEZDQ0FhR0lvUUlBQkFFTThrYXgwdnBjc0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvaGVsbV9sYXlvdXQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQWpCU1VSQlZIamFZdnovL3ovRFlBWUFBY1RFTU1nQlFBQU5lZ2NDQk5DZ2R5QkFBQTE2QndJRTBLQjNJRUFBRFhvSEFnUVFDN3JBekprekdXQkZENGcrY2VJRVExaFlHQU1iR3h2RHNXUEhHT1RrNUJnc0xTMFp2bi8venNESnljbHc3OTQ5aGsrZlBqRXdNaktDOVlCb0dCdG1Ca3o4MjdkdkszLzgrQkh5NHNVTGh2ajQrSForZnY2YXYzLy9ndVZnNmtSRVJGRGNBeEJBR0E0RUtZUnBRTmFJVFIwN096dURsSlFVSkNxWW1NQml6TXpNREcvZXZBSHJCWW45Ky9jUGJnNHZMMi8xMjdkdlE2OWN1Y0s0YjkrK0tpc3JxeHFnbzFFOGhPNUFnQUJpd1dVNXNtT3hoUWdJZ0h3dktTbUpZaWdyS3l2RGpSczNHQzVldk1nZ0x5L1BJQ2dvQ0hZa0NBQTlkT2ZqeDQvdi92ejVJd3dLOWJ0Mzc2b0lDQWpjd1ZkWkFBUVF3VFFJMGd4ektDeXFrQUhJa2I5Ly93WmpvTVZnR2hSeVc3ZHVaVGg5K2pSWTdQWHIxK0JRZmY3OE9RTUxDNHVJbnA1ZTFKTW5UeGkzYk5seSsrblRweTlCb1E0eUI0VFJBVUFBWVlRZ3pBSElhUWM1eWdsNUJ0a2NZT2d3R0JnWU1EeDgrQkRrTUxERFFZNHdOalplRHZUQU1sQklBeDBvQkFwaExpNHVyT1lEQkJBTExrdGdqa0xuWS9NTU5vTkJZaUNMZ2VtT1FVaElpT0hCZ3dmZzlBbExCakl5TWdXUEh6L3VBeWFSTDZCUWRuWjJCbnNBSFFBRUVBdWgwRUMySEZlbXdhWVdXWTZIaHdlVTNoaHUzYm9GZGdRMFZpWUNIZWtMRkhjR2V1QS9rSzRIbGhSTkdob2FLUG9CQWdockZDUG5ZSHdKR0pjblFBQVVlakI1a0tPY25Kd1loSVdGNGJrYUJJREZWTUN6Wjg4Ky8vcjFpK0hkdTNlK3dFelVoRzRIUUFEaERFR2dRZVhBS0pFRU1ndEFCZ0xUemhFZ2JRT0xKbVNIZ3pJR3pGTlFCK3dCaHNaTllMcWJEcFMrQWhJRGxubGdSd0xMUVhpdTV1RGcrTEpqeDQ3YlFNY3BBOHRYVTJ3eEFCQkFHQTRFUlFkUUE4Z1FQYUNsa2NCeUt2L256NS9QZ0E3anZYLy8vbjlnYVB3M05EUmtnbGtDU2s5QWVZYjM3OS9Eb3cvb1lINWc0WjRGZEVEV25qMTdKSUZpTDJBaENsSUQwZ01DVU04ZUJYcGVaZE9tVGY5c2JHem1LQ29xcGlHN0J5Q0FNRklsU0RNbzUxbGJXMGNETFdJRUdmcnk1VXRKb0FWTUlEbGdsREFDSFJvSWNoU0lEN0lRaEQ5Ly9nekdvRm9DNkxDam9Gb0dCSUM1OHd1b1FBZmxVbENHQVprSENvQVBIejR3QUF0dGtDTnpnZm9ZZCsvZXpYaisvUGtVZFBjQUJCQkdDQUp6MUcyZ1liZUFGckFBQytCZndBVE1LaUVoMFFBc3U1cjI3dDM3RzJnNXlCRnJnWWIvQjdLUEFDMjNCeFVkSUF0QmxnTWR2aFVvL2hSbzFEdHBhV2x6WUVIOUJSYmFJSG1RUTBGcEVSYWRRTTk5QWFwL0RyUlBVa2xKNlRLNmV3QUNDTU9CUUF0M25UcDFLZ3VVOWJXMXRWdUJvVmNEcW5laFJRYXJycTR1dzlldlgvOXQyTENCQ1ZpRzJmbjcrNFBxV0ZBb2c2TWE1TEhMbHkrbmdzcEFrRnBZbFFmQ0lET0JvUTlPczBpWmlRY285MWxaV1prWG1MeWkwZDBERUVBWURnU0cya0pna0dlQkhBUzA1S210clMzWVlwQ2hvR29OMUZBQXl0OEFsbUdhd0tyc1A4anhkKzdjWWVEajR3T1ZiU0I4ZXRhc1dXNGdSd005b2d2TUtIZVFheU10TFMxNENRRnlOREFIODF5NGNJRUgyQ2poRVJjWHYyeHVibzZTVXdBQ0NNT0JYNzU4K1FaMDJDVmd0RzRHT21nNnJMVUJyRVBCTlFPSURaVFQ4dlB6WXdBYS9PWG8wYVBQZ0tHdUJuUmdMREFkVFFjbTlLdkp5Y2xmZ0E2ZmZ2WHExZld3WEE4cmJvRFJEcTVWa0lxb0Y3S3lzclZuenB5WisrclZLNHhjREJCQUdBNEUxcGRuZ2VtTERXZ2hCMUFEdURrRXkzbkFFR0U0ZlBnd09QZUIwaHhRZkNjUUJ3RWQrQmtvZjVTYm0zdnE5ZXZYR2RYVjFUMkJIdDBCaWxMazhsRlVWQlJjU2lDSEtCRHpBRFBOS21ENm13Z3NwQitndXdjZ2dMQkZNU3NvMm9DT1VRVTFwV0NWUDBnTVZLQ0NRbEZNVEF4c0FkQlI5Y0JXU3hBb1Z3S2o5aUVRVzRNOEJJenlXR0FvN1FCR0did3VCNWtEeW1BZ1Q0SThDR3VLQWNWZGdZR3lDbWdHTXhEZlFuY1BRQUJoT0JDWWRtNEFOV2lxcWFsOUFCa0k4akhJSUZDTEJCVE5JRGFvc0FWWkNDcUV6NTQ5bXdWa1p3RExyd2lnT0NqZS9nTTlrQTV5QkNnRVFZNERGVDJndWxoQlFRSGNmZ1RxQWFkclVCME56SWpyZ1NITEJQUThJOUJUUWVqdUFRZ2dqSElRMkU3VEFvYkVacUJET1lDK2RBQ1ZaN0NDRlZaVGdJb0tJRTY2ZmZ2Mk9XQ1Q2ajdJTTBEMS80REo0aS9RQWN6QVVQNENhbm1EOUlMMGdOcCtJQWVCMGg2MG1HSUFaaklHWUpPTEFaVHVnSm50RWFnTUJTWVZqSG9WSUlBd0hBZ3lCQWhVZ00waHpxbFRwKzRINVZDUVpsZ3RBWXBtRUIvbzYxWEE2TklIaHR4Mm9NRzJ3TnpKQ2t5WHpOdTNiLzhQVEtmL1FJNEMxUzRnUGFEUVJLN2JRWHdRRGZUc0VXQTc4VExRb1crQUdXOFZxREpBZHc5QUFHRUlXRmhZTU9qcjY5OEgrUjdrNjB1WExyMEZSbDBrTUFPQWZGOEhaRThBK2pyeTVzMmJSVUFITW9KQ0JGUkRnSW9nWUVML0JmSUkwRk9NUUgwT29QU0czSVNDeFFESUxGQTZCaWFmYTBDZ0EvU1VDVEM2V1VEaTZBQWdnQmpSV3l1Z1ZqQzBjZUFBTkV6eitQSGo0SnhwWkdUMEgrakxzMEI1RTFETEdKamovZ0l6UVFjd3BINUZSa1kyd1pyMndBSjd6NUVqUjZTQW9hSUJkTUJmWUdHOUNoaWQwYUFvMWRUVUJCVlJEc0FxTGRUUjBURWJXTkF6TEYrKy9EOG9Sb0FGL2hWZ0V0SDE5UFJFY1E5QUFHR0VJS3dKRC9UNUFWQnJCSmdlMzBQcldVYWdaUnlnOUFpS1BsVlYxY2ZBMHI4R3lHOUNicmdDeXprWFlIUnJBYXN6VUZTejdOKy9Qd3FZTzU4QVEvb2tNRWJNZ0daL0E2cExXN2R1M1g5Z2kvb1BNRVpPQVVOOEhkQmVYVkNTUUFjQUFZUzF1UVVOUVhEVUFSc093a0NITEFWYTJBNE1zU3ZBa0ZJQkp2SmdZSW5mQ1ZJRGpFcDQ4d2tVbmFBTUFJcGFvUG9qd1BMVURwZ3Uvd05EVWhnb0p3MHNCVTRDUS84TkVMTUFHeDJnSE14a1oyZG5EbUtEaWpGc3pTMkFBTUxaSG9RbGFsQlJBY3l4MGJCaUEraVlPMENIZFlJeUMzcURGZVJBVUFFTzZtc0ExZG1Eb2hYWUttSUFlc1lEV0t0c0I2VnBZRWdlQi9aSnhJRkp4QlRZQU5rT1NvdWdxQVlWWGRqU0lFQUFNUTcyOFVHQUFCcjBReDhBQVRUb0hRZ1FRSVBlZ1FBQk5PZ2RDQkJBZzk2QkFBRTA2QjBJRUVDRDNvRUFBUVlBdGlXazNGMDdXZk1BQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9oZWxtX2xpbmtlci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBUUFBQUJ2eWdIUUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUR6RWxFUVZSNDJtTDh6MEI5QUJCQVREUXdrd0VnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lJV1Fnays1NnlmZFo3akhjSi9oUDRNQ2d3cURJa05nSHQ5ay9Ib0FBb2dSWDVJNjhYOHV3MUlHVVFZTEJrRWd5Y0R3bXVFTncya2dqbVpJWkxCa3hLMFBJSUJ3R3ZyRk8zWExLYUJ4MWd3Q0RJeEFWMEl3Q0x4bk9NUndoc0dZWWE0UHoxYnNlZ0VDQ0llaFIvK25NNmd5aERHQVpCa1pJR3BnVG9PSXJXQzR3ekNMd1JxcmV3RUNDR3RFTGZudnl1RElFQXJXREhNaHhPai9ZQjZJSGM1Z3orQUtWSWxOUDBBQVlYSHA1ZjkyREhrTTZraHVRN2dQd1FPeGJ6Qk1CQWFGSG9ackFRSUlpNkVXLzNVWW5LSGFrRWxrNDJEVzdHSzR5WEFjdzFDQUFNTHdmdVovSWFDUkRIREQva085RFhjRjFFQklNTGd4OEFKMW9Kc0JFRUJvaG43MVhzSGdCVFVDRnBZUWlHd3d3bWhHQmorRzVjQ1VnbW9LUUFDaEdUcDdpekdETU5RbERQQ29RVGJ3UDFMNGd2d2h6R0RBTUhjTHFpa0FBWVFXcGdiL3ZSbDA0QjZIYU52S3NBd3VMOGZRZ1JKNUlLT3ZNR3hodUlnU3JnQUJoT0xTbDA5ZU1HaER2ZmNmNm1rUU5nSWFDNEVhREQzd3dJR0Z1dzdEUzZCT1pITUFBZ2pGMEh2U29raEpIZDNqSU9ESmNJN2hGZHlkTUlQRkdlNUxJNnNDQ0NBVVErOERRK2cvUEZJWU1mSVJhczVDcEFOQmhnY29WZ01FRUVvcGRZOUJGQ2tzVVkyRkJNVmlZRkNJd1hNVlRGd0V6VkNBQUVJeFZJemhFMUxhUkNUMGN3eFJVQlZHRE1Yd3NFUzQ5VFBRcmNnQUlJQlFERlZnZUlkV0lpR01RczVmRE5CSWhBWERXd1lsRkVNQkFnZ2xUSldCSlNiQ1NNd01EQXNJUnFRVUFBSnYwQXdGQ0NCVVF4bS9BSTFGYVA2UGt0VC9vMlZXV0ZwK0JmUytNa282QlFnZ3RCd1ZDU3gxR0pEaW1SR0hsNUVULzFGZ01ZZ0tBQUlJTFVkZCtPL0wwSW0xVE1Jc0JHRnlwY0FjWllDaURDQ0EwRnhxd0tqRmNBRHNVVVFXWUlEeWtWTXFJdG50QjVhOEJtZzJBd1FRUm0zYXdtQUd6T0hLOERCamhHZGFaRXRnSVh1WFlUYkRLUXkvQUFRUVJubHF5amdMV0lQK2dSdnpIeTMzTU1DTFFnYWdxaVVNMDRBNjBNMEFDQ0NzRlYvbS84c01zUXg4R0JrVE9hVC9BelBLWWdZOWh1bFlxajZBQU1KYThVMW5kR1JvWTdnTUw2a1FMa1pZY2dXb3doNnJrUXdNQUFHRXM5NWYvVDhiV09mYk1raWlWWHNnMWd0Z01qckNNSlVoQkVlREFpQ0E4TFJRYnYrZkNRd3paYUN4bHNCU2dSbG82RzlnMWpqQjhBd1lQUkVNMlF5cU9Oc29BQUVFVHk3WTRWL21XZjhkL3F2KzUvZ3ZDNFFjUUpiTC8ybi8vekxqMXdVUVFJekVOczhmQUJVcU1CS25GaUNBR0duUjVnY0lJSnEwVHdFQ2lDYUdBZ1FRVFF3RkNDQ2FHQW9RUURReEZDREFBQ2ZsTkNVSldURGZBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2hlbG1fbWV4LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFHRlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUN6R0tURXhNWUV3RklINUFRTGtBbFA1QVFCM2NyRE5uemhCMEEwQUFFUnVpSUVNUEFQRjlxT0VHT05RMVFPVWZRTm5ZZ0FOVS9qN1VUQVZpSEFBUVFNUTZOQUdJN2FGc2VSeU9BRmxZRDhUOFVGeVB3eEVOVURNWW9HWW1FT01BZ0FBaUpVU1JnUUdlS0Nja3BrQ0FqeFVBQkJDeERsMkF4cCtBUmMwRklINkl4SDhJRldNZ29IY0NNUTRBQ0NBV0loMEtTa3VLUUJ3QVpWL0FFL0lKT0R5SDdMQUQwTFM2Z1lqTUNRWUFBY1E0VkFZZ0FBSm95SlNqQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVlBREIxaVg2WGZ6bUl3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2hlbG1fbnRlcm0ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVFBQUFCdnlnSFFBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFETkVsRVFWUjQybUw4ejBCOUFCQkFURFF3a3dFZ2dHaGlLRUFBMGNSUWdBQ2lpYUVBQVVRVFF3RUNpQ2FHQWdRUVRRd0ZDQ0FXM0ZJbC94Y3lNQ0x4LzBONUVEcUJvWXNSbDA2QUFHTEVsZmd2LzNkZ21NRWdDRk1HTmdxQjN6RmtNQnhrME1WaExFQUE0VFEwK0w4VVF6VFVWZi9oTGthd2xqSThZMWlMdzFDQUFNSVJwaHYrM3dRYUNURUc0allHaHY5d2cwRWdtdUVtVUJWMjNRQUJoTU9sUnY5REdKeWcyaEZ1aFpFUXNmME1heGpPWW5VclFBQmhkV25mZnlHZ2tRd1lub2FSRUtNZEdRU0FLckhwQndnZ0xJYStQZHpKRUF2M0ppT0s0VWhlQlBKaUdUb1ozcHpITkFFZ2dMQjRQK2YvZTRZY2xGaUh1Zlkva3BFUXNTa00vQXpUTUlJQUlJQXdYSHJ5LzFxR1JMQVhHZUVSOUIrZW1CRGlrSkJOWUZnUDFJRnVCa0FBWVJqYUNQUVVOOVNyWlF6M3dFYk1aTGdMajdEL1NHNzl6OERMRU1YUWdPRlhnQUJDTTNUNS94Y01RWENQWDJmb0F4dHlqK0VyUEV3WlVYTFlmNFpRaHBjTXk5RGNDaEJBYUlhMk1NUkFEWVJvLzhhd0JCNEVLRkdCWkh3TVVCY3FBQWdnbEx6ZjhwK1J3UW9sZ2dvWWFoa3NvUWI0UWEyQ3lHeUVHdndmcU9NWW1xRUFBWVJpYURCREI5QXpZa2p4ck1mZ3hUQ0JnUXZNM29Ua2NVU1dZQVRxMk1udzhMODhVaG9BQ0NBVTcyc3k1akFzUkVyZ0lEb0dHSjdYa1JJUkE1TEhJZlFDaG13R2VaUmtCUkJBYUdIYUpIeWU0UUpLeUhFRGd3QTMrTThBVXQ4a2pDb0tFRUFZaVgvTy8zbkFPRWN0a1pEelBtcTU5WitobUNHZUlSMHQrUU1FRUVZNlRXRmtaZGdDanl6VTBnbFdtaUpFdGpLd1lCakp3QUFRUUZqeWZqMndyUHlERkIyTVNIRU9TMndRK2g5UVpUMldRQUVJSUt4Rlh5SXdhYVVpNVJ2a0FoQTVVT1l3L0dKWWhLWHdBd2dncklZKytLL0JzSWhCRHNNUTFJTHdJVEEwYnpBb1lERVVJSUN3bHFjS2pOVkFReGxRakVUUDlReEFGWlZZaldSZ0FBZ2duSFdVNXY5MEJndVVQTVNBd2pzT0xHWnU0S2lqQUFJSVo3MWZBOHoxeUxuOFAxTEpEK0l0QmFyQUJRQUNpQkYzKzlUei95TUdDUnh5enhsa0dYYmlyUGNCQWdpUG9VZit2OEhpYlZnTklNbGdqdE5RZ0FCaXBFVkxHaUNBYU5LV0FnZ2dtaGdLRUVBME1SUWdnR2hpS0VBQTBjUlFnQUNpaWFFQUFVUVRRd0VDREFCK1JOeHdCTWNKSFFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGVsbV9udWNsZW90aWRlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFhMlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQkJBTElRVzdkKzltdTM3OWVzS2xTNWNTT0RnNGxQLzgrZk1iSnNmSXlBanhMUk1UODY5ZnZ6NUxTa3B1ME5mWDd3c09EbjZCYms1M2R6Zi84ZVBIUlh4OWZhMkJaaWk5Zi8vKzRMRmp4Kzc0K1BpOFNFbEorVTNJSFFBQnhFaW9abHE4ZUhIcTJiTm5aL0h4OFRFd016T0RIUWZTQTZOaDROKy9md3dmUG54Z1VGUlVYTzdnNEpCbVlHRHdCU1pYVkZTa0xpZ28yUDdxMVNzdm9EbnNuSnljWUxWLy8vNTlMU01qTS9IQmd3ZjlreWRQL29iUEhRQUJSREJFTDE2OG1NM056YzNBejgvUEFBd0plRWpDSEFwekxJZ1BESEdHbXpkdmhnRXRud0YwNkNHUWVIMTl2Y2ZIang5bnE2dXJ5MmhyYTRQVmdUd0Y4alF3RmtUdjM3L2Y4dmJ0VzRzTkd6WmtCZ1FFUE1IbERvQUFJcGhHdjN6NUlzdk96czd3Ky9kdnNBVXd4NEg0TUVlQ3hJR2hBMG9DSUljd256bHpSZ0lrZnVUSUVWV2dYSytWbFpXTW1KZ1l5R0ZnOWF5c3JHQTlJQUQwQUlPZW5wN1A0OGVQYSs3Y3VjT095eDBBQVVSTVp2b0ZEMzRXRnBEREdZQU9ZUUFtQjFCb00zejc5ZzNzUUJDQUpRa2cvOXV1WGJ0WUR4MDZWQVdNY2kwaElTR0dIejkrZ0QxejY5WXRobE9uVGpIY3ZYc1h6UC81OHllRGlvb0tBekJVRTdadTNScU15eEVBQVVUUW9jalJDNHF1ejU4L003Q3hzVEVBTXcwREZ4Y1gyR0tRQjZBT0JLdmw0ZUg1OS9MbFMxNGd0aFFWRlFVN0J1YkphOWV1Z2RVQVE1QUJHSUt3V0dEZzVlVmxmL0hpaFNFdWR3QUVFQXVweFFUSXNaOCtmUUk3RUJSS1VsSlNZSXRCVVFtS1VwRGN2WHYzcGdNZDl3MG9MZy95RE15aG9EUU80c3ZMeXpNQU14RFk0U0NIZ2tJVzZGQlFJTGpnc2hjZ2dBaUdLQ3pqd0lvaWtJTkFhUllVcWlCSGdTd0FpWUVzQk5FZ0J3RkQ5RHhRL2pJUXM4QmlBMFNENUlDaERJNTZVQnJYME5BQU94NHByWFBpY2dkQUFMRVFHL1d3VUFPRnFMaTRPRGhkZ1lxWmh3OGZncE1CekJNZ2h3T0xvRjVnNkZ3Rk90NEVHSnFLSUQyd0RBZ3N2aGdzTFMzQjZrRWhDWElveU9PZzJBRjZaRGN1ZHdBRUVERU9aWVd4UVJZSkN3dUQyU0NEUVZFSWlsYmtZZ3ZrSUdBR0V3R0c2bmRRNlFiTUpJckE0Z3FzRHVRSmtFTmh1UjlhV1lEeDY5ZXZRZlJsWE80QUNDQ0NVUS8wN1ZkWTBRTXpHRmJ3dzVJQmNoSUJPVnBMUyt0SFEwUERkelUxdGM1Mzc5NDkvZnIxS3pqOWd0U0NZZ1Baa2FCWUFWWUVvQXBnRFRDOXI4VGxEb0FBSXVoUW9LVkxRYlVJeUZHd2RBcExieUEreUJNZ0d1UjRVS2hJU0VnY1YxVlZQUTlTRnhVVmRRSllDWlFEeTlPUG9Jd0RjaWpJY1NCSGd4d0lTdWRQbmp4aHVIejU4aWxnYU5lbHA2ZC94T1VPZ0FBaUdQVkFYL1lCTTQzTWpSczMvSUUxRkI4c25YNy8vaDFzRVN3a2dmei93UEx5SkxCd0w3QzF0WVhYOVVBMXk0REo0Q2t3TGZjRGs0NEJxSllET1Jpa0g1aU8vOTYrZlhzeDBEUDFVNmRPZllUUEhRQUJ4RWhNTDNUT25EbnN3TkRTQW9hR0hEQ3QvUUZHNWQ5bno1NjFBTXZJQlVESDNRV0dLaXN3aEQ0QlBYQ3B1TGo0SFRZeldsdGJGUzVjdUtCaGJtNXVCN1JUSGVqSTNjQXk5U3JRNCtmWHJWdjNoWkFiQUFJSUpWZVRnbzJOalhmYjJka1prYXVmVkF3UVFDUzNSNEhSektTc3JGem01ZVZsRFV5bnRjQlNRSlFlN1ZHQUFDTEpWNkRNQjh6SjFYMTlmVDkyN3R6NWY5bXlaZjlkWFYzWEF0dWhrclFPVVlBQVlpUjJwQVFVa3NCQ3ZqSTNON2RlU1VtSkZWUXVncHAxb0JJQjJHYmRBc3k1NlUrZlBuMUdxd0FGQ0NDaUhBck1wU3pBd3IwOE96dTdFUmp0ektBY0MyejFneDBLTEw3QURaV0ZDeGR1dVhMbFNpcXd1SGxCQzRjQ0JCREJOQXJNelN3S0Nnb1ZtWm1aamNDUVpBWVYzcUJhQ2VSUVlKRUZibGlBR2hweGNYRSttcHFhMDZTbHBjVnA0VkNBQUNMb1VHRHhrNXFUazlNTVRKdk1vSkFERmZTZytoMllMTUhsS2JDWUF0ZEdvQUk4SXlNakVCanlrNEZ5M05SMktFQUFFWFFvTVBTQUFYZmpIcWdHQWhYd29Qb2VGSktnVmhDd2VnU0hMS2pBQjlVMndHN0ZUNkRZT2FDYUg5UjJLRUFBRWF5WmdJMksvUUlDQXRGQUI4OExEUTNWQkRxR0FkaHFaekF6TXdNM05FNmZQZzJ1Um9HTy93N3NvSlVCYTdHcHdCNG0xY2N5QVFLSTZGd1BkS3hGUkVURUlqYzNOMVZRR29XMWVrQVlXQTErQjlaZTFjRHVSVCt0Y2oxQUFCSGR3Z2NXUXllQTdjd1lZRFF2Qi9iRmxVQ1pDcFF1Z1MzOXIwQkgxZ0FkT1lHVzVUMUFBSkZjOEFKYk9SWkpTVW0zdG0zYjlyK3pzL01ITVBOazBhTUtCUWdnc2pRQkhXdm01K2QzRXRnSUxxQlhYUThRUUl4RFpRd2ZJSUNHekNBWlFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUNBQVFBaVh1YXFIT0hzYUFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGVsbV9zdWdhci5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUU0VWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBcyt5VDE3OWpDQWlxOC9mLzR3UG43OG1IWDM3dDNldWJtNTY0NGNPY0x3L2Z0M0JpWW0wdno1Nzk4L0JnNE9EZ1piVzF1R3laTW5CN203dTIrVms1UDd6Y3JLK3ArUmtaSEJ3Y0VCcDE2QUFHSWh4Z0tnWTIyQWpqMTA1Y29WaHF5c0xBWUpDUWtHb09FTXhKYkJJRWVBMUlMbzM3OS9NNnhZc1FMaytYVXVMaTRneDlzQmxSd21aQVpBQUJGeUtDTXcxS3pQblR0M2FQUG16UXc1T1RsZ2kwQWhBL1VBM0JIWUhBWmpJNnNGcHpkZ1RJQThPbXZXTEliZzRPQkQxdGJXdGtENW95Qmx1QndDRUVCNEhRbzA4UC9WcTFjUGI5cTBpU0U1T1puaDdkdTNjTXV3aFJhK0VFWlg5KzNiTjRiMDlIU3dZd1VGQlE5cmEyc3o0bk1MUUFEaFRXU2NuSnorL2YzOURQSHg4UXp2M3IzRDZVaHNqc0tTZkREVWdEeWVtSmpJME4zZERVcTcvdmpjQWhCQWVCMzY1czJiRFR3OFBLRDBoQ3Z0a2lTT3pVT2dwTVROelEyMkM1OWFnQURDNjlETGx5OHppSXVMTS96OSs1ZmtFTU9tRmpuNllYcEFab1BzdUhEaEFsNVBBUVFRM2pRS1NrZk16TXdZaHVPeUZKY0hDR1U0VU1iNit2VXJYb2NDQkJDaHpJUmhJVFkyT3pzN0dDTTdGQlJTdjM3OUFtT1lnOUJwWkRNSWxja0FBY1JDUkJtS2w4M0d4Z1pPSW9jUEh3YkhBRXhjVEV5TXdkalltRUZIUjRmaDU4K2ZlRXNCWWdCQUFMRXdVQWhBRmdGckxRWkZSVVVHV1ZsWmNNaUF4SDc4K01GdzZkSWxzRWRVVkZUQUdSS2JSNG5OZUFBQnhFS3NZM0JGTzR3dEpTWEZvSzZ1RHVlRGNqT29tZ1ZXRm1CeEVKK1lZZ3dYQUFnZ1lxdFFnc2tCbENaQkdMbjJBZFhyb09TQXEySWdwUnNFRUVBa1JUMnl3ZWloQVNvZFFJNEQwU0FBcWlCdTNyekpvSyt2RDY1eWtSMkhYb0lRRTdvQUFjUkNxaU5oSVlKc0lhakFYcmx5SlVxbUFTVUZVS05EVDA4UEk5cXhaU0pDb1FzUVFDUm5KdVRvZzdHL2ZQbkNFQmtaQ2M3aG9GQUZGZDRnRE1wY3BOWnF1QUJBQURFUm01a0kxZHVnVUFQbGRCQUdPVmhaV1psaHpabzFZRDZzSktBRUFBUVFFem1aQ1IyZ1Y3R2dVQVNWb2NCR0RjUFdyVnZCZk9TU2c1akFRQWNBQWNSRVNma0p3cUNNQWlyY2VYbDU0V0lnREFwRlYxZFhjT1o2L2ZvMW1JL1B3NFFDQXlDQXlDN3dZUWFETXBDNXVUbll3YkJNQTVNVEZSVmxpSXFLQXBlbklEbHN6VVJpa3dSQUFMRVE2dU1nRzRhcklRSnlMTFlpQnhUbG9NWUd0bHlPbmlGaHZRWmNBQ0NBOEVZOUZ4Y1hTdFdIcmFER1ZTWmlhMjNoYW5ERDJxVDRBRUFBNFhVb3FBeDgrZklsdkJCSHRveFFlc1BXUXNJV0t5d3NMQXpQbno4SFZ3ejRBRUFBNFhXb2lJaElBQ2pxUU8xRlN0TXlycHdOQ2dSUU5RdXlDNTg1QUFHRTE2SEFNbkJqU1VrSnc0SUZDeGlFaFlWeDFpakVaZ2pra0FiUklEUG56cDNMVUZsWkNZcitqZmowQWdRUUN3R0RHYlcwdEd5RGdvSU96NXc1a3lFcEtRbWNubUNORDF3ZE8wSkZEU2dVUVZFK2ZmcDBodkR3Y0FaZ0R4VFVYV2JFMTEwR0NDQkN4ZE4vWUc0OEFpeTg3WUJSYzZpdnJ3OWNIa3BLU3VKTkRyaENHU1FHYXZHRDBpUW9seGNWRllIYXNYWWdPd2pGQ2tBQUVWV09BaDEzQkJnSzdMcTZ1dDc1K2ZuckRoNDhDRTVYNUF6cGdFb1NPenM3aGttVEpnVUJRM1VyMEl6ZnhPZ0ZDQ0RHb1RJMERoQkFRMlkwRHlDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ0RBQUI2NWxUWmxmMjVRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L2hlcHRhbmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVpXU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVFDN1VNK3ZYckYrTzNiOSs0UG4vK3JQTGp4dzhGTGk2dUc3eTh2QS81K1BoK1VNTjhnQUJpb1lZRHYzejV3di9reVpQTTY5ZXZXejErL0pnQjZGZ0dFUkVSQm1WbFpRWlZWZFU1NHVMaU95bDFNRUFBTVpKYjRJTWMrT25USjVGbno1NmxYTGx5eGVyeTVjc01RSWN5ZlAzNmxRRmtKanM3TzRPUWtCQ0RscFlXZzU2ZUhvT2FtdG9jVVZIUlBRSUNBbC9SelFKNmxJMkhoK2NYUHZzQUFvaGtoOEljQ0F6QkhLRGpqSzVldmNwdzgrWk5CbUMwTXdDakd4U0NESUtDZ2d5dlg3OW11SHYzTHNPZlAzOFloSVdGUVE0Rk8xcERRMk83aElURU1xQW5QcEJpTDBBQUVlMVFrQU0vZlBnZzlmVHAweXhnQ09xQkhIamp4ZzBHWUhwa0FFWXJnNmFtSnRnaFFQb1lQei8vdmpkdjNvUUIxYW1CUXZuV3JWdGdqd0RUTEZpTmpvNE9nN2EyTnRqQndKRDh5TWJHUnRBUkFBRkVsRU5Cam56dzRFSHc4ZVBINDBGUmZPZk9IWWJmdjMrRFEwNWRYUjFrS1R5a1lCYWpoenhJSDh4aklBZURQS2F2cjg5Z1ltTFNLUzB0ZlpTUVl3RUNpQ2lIdm52M1RtRG56cDJMbHk5ZkRrNkR3TXpCb0t1ckN3NFpvRU1YaW9tSmJjZVc5dENUQ2pDRXdVbmwyclZyNEF3SDFNY1FHUm5KNE9qb0dFb29zd0VFRUZHNUh1ZzRlVkJ1QmlaNmNGcHpjWEVCaFFaUnVSa1VVc0FTNERWUVhZT01qSXdJTUdPbG5EbHp4dXJJa1NNTVFNY3p2SGp4QWhUS3drRDVwL2pNQVFnZ0ZtS2lIWml6TTRBWUhHV0dob1lNbHBhV0pjRG91a2xLWmtCeWNBYzNON2NMTUEzbmdjejgrUEVqdzgrZlAwV0FTdkE2RkNDQUNOWk1vRUw4MGFOSE1pQkRnV2tRRktLL2dXbnpMcm5sSWNqQndNeDJBWlMrUWNrT0ZGT2dnQUFGQ0Q1OUFBRkUwS0hBNG9VTG1FYkJtUUFZZFNDOEVGZ00vYUdrOEFZNjlqT3dUR1VBaGl3RE1CQkFXQVlVSVBqMEFBUVFRWWNDbzBYbysvZnZZTjhETXd5b0tEcERhVzNHd2NIeFUwRkI0WnlTa2hMSWZGQm1CUWNJUGowQUFjUkVLSDIrZi8vZTQ5V3JWd3lNakl3TW5KeWNETXpNekw4b2RTZ28rb0VodWt4U1VoSmtIZ01vSUlERkhROCtQUUFCUk1paHJBOGZQblFCcFNOZytjZ0FpaTVRdEZHamtjSEt5dm9GRlBVZ0FBb0lZSUI0NGxNUEVFQjRIUXBNbC93dlg3NWtBSmFEREhKeWNnenk4dkxuUU5GR0RZY0NQZndCbUtuQUlYci8vbjBHWUlYaUNhcnpjYWtIQ0NDOER2Mzc5eThiS0ZyKy9mc0hMdVJCMFVWTWRVZGtPdjBHOVBoYllERUhEZ2hRZVFxTVFaenBGQ0NBQ0VXOUNLZ21Bam9Zb3BpSjZSY0RsUURRb2FCMHVsNUtTZ3FjL29GMmdUSVVOeTcxQUFGRXlLRmlvRndKYWxDQXlsRmdpeWlDVUhsSExBQkZNOUM4UUdEYUJLVlhjRVpsWVdINWlrczlRQURoZFNnd0ExMEQ1VXhRb2djMVJDNWV2R2dGTkZpS1VrY0MwejRqMEx4cVlQdEJHRlQzZ3dwL1lQbjhGeGpLWDNEcEFRZ2d2QTRGSnZablptWm14NEJWSnRqWG9CWVFzTzNaQzB4VEhKUTRGSmhCelE0ZlBtd0ViSTJCMHorb1lhMmlvdEtPcnlJQkNDQW1RdWtJYUVDM3A2Zm5MVkFkRDRxbW8wZVBjdCsrZmJzVm1Cekk2c2FBV21MQVZsVE5wVXVYd0o2M3RyWm1jSEJ3T0FmTXJLZnc2UU1JSUlLV2dYd0piTFZYQTNQL1hHQkk4Z0dqSDVUbzFZQVpxeEhZeEtzbnBUb0ZwVXRnSTdycjlPblQ0Qm9KRkZPZ1FBQzJINXBCZ1lKUEwwQUFFZFZkQmpYbGdJYVZnYUlJRkZXZ0p0cXVYYnYwZ00yMEFHSXpGeWdHZ0szOXZ0MjdkMHVDV3Z6QW9nblVYSHdPOUd3bE1aNEZDQ0Npb3c5WXp6OHpOalplQ0d4QXhPL2J0NDhCMktaa0FCWXQ4Y0RvZXdGTXkxZUFJZndiVCtraEFDelVhN1p0MnlaejRzUUpjSmtNTkF1VUxxc0pkZXBnQUNDQVdFaW9TZjREYytZR056YzNRNkRGZXFBMGR1ellNWWEzYjkrV2d6cHZvQm9HR3dERkFLakJEZXFHbkR0M0Rwd3VRZWtkMkVPWUJHcWZFbXMvUUFDUjNBc0ZwVE5RRkFKRFJ4NlUxa0JkQ21ENUI2b013QVUzTm9lQ2FqZFF4UUVxNXB5Y25CaUNnb0l1QWZ0TU5ZVFNKVElBQ0NDU2N5NG9xb0RwcWdTWTVoWURMZWNBaFJUSUlRUmlBMVRVTVFDTE9nWnZiKytIb0V4SWlpTkJBQ0NBeUI2QUFCVXp3SFJYQzJ4WnFZRnFMbHdBRktKUUQ0SjZCOXVCN2RCWjVEUzhBUUtJa1pLaGNWQU5BMHl2N0VESE1CT01PaGFXMzhDUS9VMXVvd1lnZ0JpSHloZytRQUFObVdGSGdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBQXdCYXFnZCtJR0daZHdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaGV4YW5lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ2EwbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUM3RUtHUmtaaVRZME9UblpBVWhkbUR0MzdnZENhb210Y0FBQ2lKRm9oVVE0Rk9yQWVpQUcwU0JISmdJZHU0RWFEZ1VJSUtvNEZNMkI2R0FDRURmaUNsMWk3UWNJSUlvY0NuUmdBdFNCQ2tqQ0I0QjRJUkRuQTdFQlZPd0JFQWNDSFh1QlhJY0NCQkJaRHNYalFGRElIVUJTMXdCVkJ3TWcrUVp5SEFvUVFDUTVGR2h4QUpEWlQ4aUJXSkxGZkNROUY2Q2grNEFVaHdJRUVLbkZVejZTaFNDSE9RSXRkTVRsU0JDQXloa0M4UUtvRUNnNW5BZDZvSUFVaXdFQ2lJWE1ZbTBDMEFHRnhDcUdacVJFb09NMlFrTlhBQlF6UUQ0c3N4RUVBQUZFYm9IL2tSeE4wS0pLRVpxNUdLQU9KZ29BQkJDcERoVkFpbllHTWgzN0FjbWhSQU9BQUNMVm9RWlVxaEVWU1BVd1FBQU5WRjJ2UUtvR2dBQWFNbzBTZ0FBaTJxSEFIQ3FBVnVUUUZRQUVFQk85MHlmUXd3cmtlQmdnZ0ppR1F2b0VBWUFBWXFJMFZPZ0ZBQUtJM0JBOUQ2MzN5UUVDNUdnQ0NDQlNHeVVKMEVZSnpMSU4wTWJ4QnlKakFkU1NTb0NWb2FCMkFySDJBd1FRU1NFS05IZ0J0SUVCeXdRQjBOQjF3T2RBSUFiVjcvZVJIQW55MkVaUzdBWUlJTEliemxqYW1pZ05GU3doQ0hQZ1JLamFENlEwOHdBQ2lOSVd2Z0cwTldTQTFOWnNCR0ovUWc0a3RlRU1FRUFVOTVtZ0ZRRW81TEMxTDNFNmtGU0hBZ1FRMVhxaDBIUzZIcHJSQ0RxUVZJY0NCQkFqS1FPNVJEaFdBQnJsQzZqWnB3Y0JnQUJpSENvanpnQUJOR1JhVHdBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCQmdEVlZPYm5LTTlYOGdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvaW5rYmx1ZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUN0VWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5Hb2N5TWkxa3hDY1BFRUJNZzhTUnpDQUtuMk1CQW9ocEVEaVNIVWl4UU4yQzA3RUFBY1F5d0k3a0FWSWNRUHdESnZiL1gvd2ZiR29CQW9obEFCMHBCS1FrZ2ZnelZPZ2ZFUC9DcFI0Z2dGZ0d5SkVnQnhvQjhTY1FGK3JBbjhEUXhGbjdBQVFReXdBNFVoNUlCUUh4VnlCbUJlTDNRUHdHNk1pLytQUUJCQkFMblIwcEI2UXFnQmprcUJkQS9BeUliK0pLbDhnQUlJQ1k2T2hJWlNEVkQ4UWFRQ3dHeEYrQWVEL1FrYitKMFE4UVFFeDBjcVF2a0ZvTlRaZUNRUHdVaU9jQkhmbVZXRE1BQW9pUmxxMG5hQ2hXQVhFVUVQK0dGa05IZ0RnRjZNaDNwSmdGRUVBMGNTaTAwRTRFNGdZZ2xvWVdQWCtnYWRJVjZNaDdwSm9KRUVBc05IQ2tMcERxQUdJdldCa09UV0lndTZhUTQwZ1FBQWdnRmlvN01oNUk5UUt4TUxJd2xMNEF4RFBJTlJzZ2dGaW82TWc4SURVQnlXSElBQlQxbGNEUS9FNnUrUUFCUkpVMENuU2tCNURhamtmSkFxQWpFeW14QXlDQW1LamdTSkFadVhpVWdESlFMYVgyQUFRUU5jcFJUaUEyeGlOZkJBek5KNVJhQWhCQTFIRG9kMmlWaUExTUFqcHlKVFh5QUVBQU1WRVk3VTdRYU1YbW1BMmdERVN0ekFvUVFHUmxKcUFEdFlGVUpxaUdBV0oyYUc0SEZlaWdtdWdERU84Q1ZabUVXa1NrQUlBQUl0bWhRRWM2QXFrdFFNeUZKbFVJZE5nRVdsWEhBQUZFVHRRSEFERWJFR2NCOFhLbzJHTWdYa1hMaGcxQUFER1JHSnFnaHE0N3FDMEpETDNwUUhvclZLb0h5SDlHUzRjQ0JCQ3BOWk0rRUtzQU1UUFEwYUFxVVJFYW1ndHAzVlFFQ0NCU296NGFxWThEMGpzTmlQMkJvZm1SMWc0RkNDQlNRMVFDaU51QmVCMFFYeUttQzBFdEFCQkFqRU5sMkJFZ2dJYk1JQmxBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVlBTHJOb2hmMXVUNGZBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L2lua2NsZWFyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFSV1NVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUVFRlVjcXFtbmJRREVCMEEwclJ3S0VFQXNlQ3dueFJ3SElMWUhZZ0VTOVhFQ2NTVVF4MFBaRTY5ZnV0cUtUU0ZBQUZFcjZnUEkwQ01EeFB1QTJBK0lpNEY0RGhCWDRGSU1FRURVY3VnQ0V0VkxBL0ZlSVA0R2pZazFVRWQvd2FVQklJQllxT1RRQnlTbzVRRGk5VUQ4RVlqOW9ZNWpCdUo2SUQ2TVN4TkFBTEVNUUFidUFXSUZJRFpBQ3NIcFFHd0V4TWE0TkFFRUVMMGRHZ2JFMmRETTl3eUkyYUdPaklXRzdnMWNHZ0VDaUo0T3RRTGl4ZEFNY3hCVXNBRHhiQ0JXQTJJdklONk5Uek5BQU5HcndIY0I0dTFBdkJ5SU80RTRBNGlQQS9GdnFBZDJFeklBSUlDbzRWQlErZmNHaUJ0eFpLb0NJTjRDTFg1QURsd0d4Sk9CdUF2cWdUdkVXQUlRUUpSRXZSd1FsMFBMVUQ0ZzNnbkVQNUhrUVJtakE0ak5nRGdUaU9kRFE5UWRpTjJBZUQ4cGxnRUVFTGtPQldXR3BVRDhGWWluUUIwSVNuczdRTFVMMUNHaFFId1NpTzJBK0NJUTF3S3hEN1RjUEVlcWhRQUJSSTVEUVJadkF1SmRRSndNTFE4Wm9HbHdLeERQaGVib0xDQ2VCMDJIcnRDazRVdU9JMEVBSUlCSVRhUE1VSWM4QXVJUUpFZUN3SFZvU042QTFqanJvWTRVQnVLRjBKRGVTbTQ2QXdnZ1VoMHFDY1NDUUN3R1RYdm80QTQwZWtIZ0tMUStMNEtXbHcyVTVGaUFBQ0xGb2JKQXZCWWFRcUxRRU1QV3JMc0x4SjdRME44THpVaVQwRUtmWkFBUVFNUTZWQnJxTUZnb1RvQm1wQTFBckkwalpFR081WUxHd0FGS3kwQ0FBQ0xHb2VKQXZBNnBIZ2JsOHJkQUxBWEU4dEIwcDRGRjMwMGc5Z0RpSjBCY0E4VGNsRGdVSUlBSU9SUVVHcXVRUWhKVTVYMEE0aWFveGFEYTVSMjBGTURtMkt0QUhBVEVGdERHQ0NPNURnVUlJSHdPNVlMV3pYWlEvbFJvc1ZNRnRmQUN0SVlCTmR0VW9jV1RKaFp6VGdOeEc3UVZ6ME91UXdFQ0NKOURRY1dKTjVUZERNVDNvRkVJMG5NWjZ2Qm1xT05BR2VVSE5HU3hwZG4zUVB5SGtxZ0hDQ0I4RHZXQldwNE96UnlkMEp4OEVlcUpNaUJXaHFvQkZlYTNnRmdGaUxjQnNSNWEyWnNLclRLL2tPdFFnQURDVnpPQlF2TS90Q2phQkZWN0FwcldXcURSL1F2YXVIQ0E5bjFnWm02Q1ZxRVhvU0d2QzhRcFVQUElBZ0FCaE0raHNLcnVJTFRBM2dwTmE5T2dHUWZreUhab1dRcHo1RnhvNWlxRnB0bG4wS1FRQ2NUbktZbDZnQUFpcHE1dmhqWnV0ME1iSXZwQS9CMklxNEhZRXRveUI0R1ZRUHdLaUV1UW1uL00wRWJ4VGtyTFVZQUFJc2FoZTZDNEhlb3dVSWpsUU51U29WQTFvQ0xzUGpUZGdoeDNHNGdEb2VuMk56VmEzZ0FCUkVycjZSQTB2YzZGT2lJSktnNXFaejZFbGdnZ1J6NkdObGl1VXJPTEFCQkFwTlQxMjZFWlFnS2FCaG1nR2VrOHRHeGxnVG9TVk1CZm9uWmZCaUNBeUdtUGZvWm1zT1hRTHNnU0lHYURGbUdoMElxQTZnQWdnTWh4NkI1b3EwZ0ppSzlBYTZhelFCd0ZUWk0wQVFBQlJHNVhCRlFlQ2tFejFqRm9YLzBWTGJ1eEFBSEVPRlRHOEFFQ2FNZ001QUlFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JCZ0FPMGJOYVB1SFQ5b0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L2lua2NsZWFyYWxsLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFSQlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQXNlQ1MwTlRUcG9mOW5FQmNDY1R4VVBiRTY1ZXV0bUpUQ0JCQUF4bWlNa0M4RDRqOWdMZ1lpT2NBY1FVdXhRQUJ4REpBanBRRzRyMUEvQVNJUFlENEl4Qi9BT0pFWEJvQUFtZ2dITW9CeE91aGp2TUg0aTlBekF6RTlVQjhHSmNtZ0FBYUNJZjJBTEVDRUJ0QUhRa0MwNEhZQ0lpTmNXa0NDQ0I2T3pRTWlMT0IyQUdJbndFeE85U1JzZERRdllGTEkwQUEwZE9oVmtDOEdKcGhEb0lLRmlDZURjUnFRT3dGeEx2eGFRWUlJSHJsZWhjZzNnN0V5NEc0RTRnemdQZzRFUCtHZW1BM0lRTUFBb2dhRGdXVmYzeDQ1QXVBZUF1MCtBRTVjQmtRVHdiaUxxZ0g3aEJqQ1VBQVVlSlFPU0NlQ3JYb0tSQ3ZBV0pKSkhsamFFZzFBbkVtdEt5Y0R5Mk8zSUM0RFlqL0Vtc1pRQUNSbTBaQm1XRXBFSDhGNGlsQS9CT2E5bmFBYWhlb1EwS0IrQ1FRMndIeFJTQ3VCV0lmSUxZSDRuT2tXZ2dRUU9RNEZHVHhKaURlQmNUSjBQS1FBWm9HdHdMeFhHaU96Z0xpZWRCMDZBb05XVjl5SEFrQ0FBRkVhdFF6UXgzeUNJaERrQndKQXRlaElRa3FZcjVCQzNXUUk0V0JlQ0UwcExlU204NEFBb2hVaDRMU29DQVFpd0d4R1JiNU85RG9CWUdqMFBxOENGcGVObENTWXdFQ2lCU0h5Z0x4V21nSWlVSkR6QUNMdXJ0QTdBa04vYjNRakRRSkxmUkpCZ0FCUkt4RHBhRU9nNFhpQkdoRzJnREUyamhDRnVSWUxtZ01IS0MwREFRSUlHSWNLZzdFNjVEcVlWQXVmd3ZFVWtBc0QwMTNHbGowM1lRV1JhQVdVZzBRYzFQaVVJQUFJdVJRVUdpc1FnckoyZERtV0JQVVlsRHQ4ZzVhQ21CejdGVWdEZ0ppQzJoamhKRmNod0lFRUQ2SGNrSHJaanNvZnlxMDJLbUNXbmdCV3NPQW1tMnEwT0pKRTRzNXA2R0ZPNmdWejBPdVF3RUNDSjlEUWNXSk41VGRETVQzb0ZFSTBuTVo2dkJtcU9OQUdlVUhOR1N4cGRuM1FQeUhrcWdIQ0NCOER2V0JXcDRPelJ5ZDBKeDhFZXFKTWlCV2hxb0JGZWEzZ0ZnRmlMY0JzUjVhMlpzS3hQdVIycDhrQTRBQXdsY3pnVUx6UDdRbzJnUlZld0thMWxxZzBmMEwycmh3Z1BaOVlHWnVnbGFoRjZFaHJ3dkVLVkR6eUFJQUFZVFBvYkNxN2lDMHdONEtUV3ZUb0JrSDVNaDJhRmtLYytSY2FPWXFoYWJaWjlDa0VBbkU1eW1KZW9BQUlxYXViNFkyYnJkREd5TDZRUHdkaUt1QjJCTGFNZ2VCbFVEOENvaExrSnAvek5CRzhVNUt5MUdBQUNMR29YdWd1QjNxTUZDSTVVRGJrcUZRTmFBaTdENDAzWUljZHh1SUE2SHA5amMxV3Q0QUFVUks2K2tRTkwzT2hUb2lDU29PYW1NK2hKWUlJRWMraGpaWXJsS3ppd0FRUUtUVTlkdWhHVUlDbWdZWm9CbnBQTFJzWllFNkVsVEFYNkoyWHdZZ2dNaHBqMzZHWmpCUS8rY05FQzhCWWpab0VSWUtyUWlvRGdBQ2lCeUg3b0cyaXBTQStBcTBaam9MeEZIUU5Fa1RBQkJBNUhaRlFPV2hFRFJqSFlQMjFWL1JzaHNMRUVDTVEyVU1IeUNBaHN6NEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQURoSEhJR3dQN0g4QUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvaW5rZ3JlZW4ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDdFVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR29jeUxoUm54Q2NQRUVCTWc4U1J6Q0FLbjJNQkFvaHBFRGlTSFVpeFFOMkMwN0VBQWNReXdJN2tBVkljUVB3REp2WS8vdVVmYkdvQkFvaGxBQjBwQktRa2dmZ3pWT2dmRVAvQ3BSNGdnRmdHeUpFZ0J4b0I4U2NRRityQW44RFF4Rm43QUFRUXl3QTRVaDVJQlFIeFZ5Qm1CZUwzUVB3RzZNaS8rUFFCQkJBTG5SMHBCNlFxZ0Jqa3FCZEEvQXlJYitKS2w4Z0FJSUNZNk9oSVpTRFZEOFFhUUN3R3hGK0FlRC9Ra2IrSjBROFFRRXgwY3FRdmtGb05UWmVDUVB3VWlPY0JIZm1WV0RNQUFvaVJscTBuYUNoV0FYRVVFUCtHRmtOSGdEZ0Y2TWgzcEpnRkVFQTBjU2kwMEU0RTRnWWdsb1lXUFgrZ2FkSVY2TWg3cEpvSkVFQXNOSENrTHBEcUFHSXZXQmtPVFdJZ3U2YVE0MGdRQUFnZ0ZpbzdNaDVJOVFLeE1MSXdsTDRBeERQSU5Sc2dnRmlvNk1nOElEVUJ5V0hJQUJUMWxjRFEvRTZ1K1FBQlJKVTBDblNrQjVEYWprZkpBcUFqRXlteEF5Q0FtS2pnU0pBWnVYaVVnREpRTGFYMkFBUVFOY3BSVGlBMnhpTmZCQXpOSjVSYUFoQkExSERvZDJpVmlBMU1BanB5SlRYeUFFQUFNVkVZN1U3UWFNWG1tQTJnREVTdHpBb1FRR1JsSnFBRHRZRlVKcWlHQVdKMmFHNEhGZWlnbXVnREVPOENWWm1FV2tTa0FJQUFJdG1oUUVjNkFxa3RRTXlGSmxVSWROZ0VXbFhIQUFGRVR0UUhBREViRUdjQjhYS28yR01nWGtYTGhnMUFBREdSR0pxZ2hxNDdxQzBKREwzcFFIb3JWS29IeUg5R1M0Y0NCQkNwTlpNK0VLc0FNVFBRMGFBcVVSRWFtZ3RwM1ZRRUNDQlNvejRhcVk4RDBqc05pUDJCb2ZtUjFnNEZDQ0JTUTFRQ2lOdUJlQjBRWHlLbUMwRXRBQkJBakVObDJCRWdnSWJNSUJsQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FZQUdjU29vQS9sY0RiQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9pbmtyZWQucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDdUVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR29jdVpHUmh4Q2NQRUVCTWc4U1J6RUNLRVo5akFRS0lhUkE0a2gxSXNVRGRndE94QUFIRU1zQ081QUZTSEVEOEF5WVcvLy9QSDJ4cUFRS0laUUFkS1FTa0pJSDRNMVRvSHhEL3dxVWVJSUJZQnNpUklBY2FBZkVuVUhSREhmZ1RHSm80YXgrQUFHSVpBRWZLQTZrZ0lQNEt4S3hBL0I2STN3QWQrUmVmUG9BQVlxR3pJK1dBVkFVUWd4ejFBb2lmQWZGTlhPa1NHUUFFRUJNZEhha01wUHFCV0FPSXhZRDRDeER2QnpyeU56SDZBUUtJaVU2TzlBVlNxNkhwVWhDSW53THhQS0FqdnhKckJrQUFNZEt5OVFRTnhTb2dqZ0xpMzlCaTZBZ1Fwd0FkK1k0VXN3QUNpQ1lPaFJiYWlVRGNBTVRTMEtMbkR6Uk51Z0lkZVk5VU13RUNpSVVHanRRRlVoMUE3QVVWK2c5TllpQzdwcERqU0JBQUNDQVdLanN5SGtqMUFyRXdjcXhCNlF0QVBJTmNzd0VDaUlXS2pzd0RVaE9RSElZTVFGRmZDUXpONytTYUR4QkFWRW1qUUVkNkFLbnRlSlFzQURveWtSSTdBQUtJaVFxT0JKbVJpMGNKS0FQVlVtb1BRQUJSb3h6bEJHSmpQUEpGd05COFFxa2xBQUZFRFlkK2gxYUoyTUFrb0NOWFVpTVBBQVFRRTRYUjdnU05WbXlPMlFES1FOVEtyQUFCUkZabUFqcFFHMGhsZ21vWUlHYUg1blpRZ1E2cWlUNEE4UzVRbFVtb1JVUUtBQWdna2gwS2RLUWprTm9DeEZ4b1VvVkFoMDJnVlhVTUVFRGtSSDBBRUxNQmNSWVFMNGVLUFFiaVZiUnMyQUFFRUJPSm9RbHE2THFEMnBMQTBKc09wTGRDcFhxQS9HZTBkQ2hBQUpGYU0ra0RzUW9RTXdNZERhb1NGYUdodVpEV1RVV0FBQ0kxNnFPUitqZ2d2ZE9BMkI4WW1oOXA3VkNBQUNJMVJDV0F1QjJJMXdIeEpXSzZFTlFDQUFIRU9GU0dIUUVDYU1nTWtnRUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUlBQkFOMVRvaUUzWWh1SUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvbGFzc28ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFEREVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQ3hrS0tZa1pFUnAxeHljcklEbEdrQXhBSlE5Z1VnL2dERUQrYk9uZnNBbXo1aWEwYUFBR0lrV2lHYUk0RU9BemtvSG9nZG9JNkRPd3FJSDBLVjJTTTVIZ1FPQVBGR0lONEFkUGdIVWh3TEVFQWtPeFRxd0g2bzVRdUErQ0RRMGcyRTlBUDFLUUNwQUtqblFPeUpRSDBOeERvV0lJQkljaWpRc2dTb0l5Y0M4UVRrVUNFRlFKTkpQNVRyQ0RLSGtEc0FBb2hvaDZha3BJQkNZejdVNEF2VXlDQkFCNFBNTXdDYVowaklIUUFCUkVxdUI0VkFJTFVjQ1FKQXN4SkJHUS9vNEFCQ2FnRUNpQlNIS2dBTlBrQkMxQklMRmlKbE5wd0FJSUJZeUlncUJXanVic1FUdXV1QmFnMXhGVWxvUUI2SUx4SlNCQkJBcElUb0JXaXViWVFhdkIvb0dBRXNua21BbHFQNVJIamNBR29td1ZJRElJQkljYWdCdEl3RU9XQUNsSTB0eXVLaGRBSUJSNExrOXdOeElURWhEeEJBcEZhaGlWREgzWWNtQVFFc1pTVXNmUXBBSFlQdXdBQWdCam13SG1RZTBKRUxpTEVZSUlCSUtaNzZvWTRRZ09JUFVNZGVnTlk0RjZFMUViTGpEa0NUQ2tpZlBwVCtBQzJIRjVCU093RUVFRGtGZmowMFRUVkNwV0JWcUQ0MHZXRkwyekNQSENDM3pnY0lJSEtxVUZET3Z3aTBjQUtXTkRjZmkxWlFEVlpJeUh4QzdnQUlJSEthZVEraG9ZY3JFOEZDa1lHWVRFVXNBQWdnY2h4NkFEMjNJMldpRDlCY2JBaXFhcUVsQTlaTVJTb0FDQ0NTSFFxdG5ReWdqb09CZktnSERHRkpBcXJPRUZxVXhWUHFVSUFBWWlGVDN3Wm94b0dsMDQzWTBpRTBWeGVTV0tWaUJRQUJCRTdFeEdEMGpBUEU5Nm5aMVNCa1AwQUFrZVZRcUdQdlV5UHRFZXRRZ0FDaXBITUhLa2Zyc2RYM3RBQUFBVVMyUTZGVjN3TWNaU2ZWQVVBQVVkcGREb1NXQURSM0xFQUFrZDBMUld1cXpZZVdvWWxFdGtGSjdqSURCQkFqS1NQT2VCd3JBRzBESkVDVHd3RmlxazFTK3ZVQUFjUkk2dEE0dmtFSXBHN0lCMkw2VnFUWURSQkFqRU5sREI4Z2dJYk0yQk5BQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FJQUJBRU1mZU5PK2Z4ckVBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L21vdmV2aWV3LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FZQUFBQ00vcmh0QUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFVVlNVUkJWSGphWXZ6Ly96L0RZQVlBQWNURU1NZ0JRQUFOZWdjQ0JOQ2dkeUJBQUExNkJ3SUUwS0IzSUVBQURYb0hBZ1RRb0hjZ1FBQlI3TURmdjM5emcraHAwNmJOWVdSa25OUFcxallIV1p4U0FCQkFES0NDbWx6ODY5Y3ZiaEM5ZVBGaWtLUEFEZ1RSa3lkUG5nTVNCenFTblJMelFSZ2dnQmpKclVuKy92M0x3c3pNL0dmbHlwVnpJaUlpR0lDT0EyTVErUGZ2SDhPTUdUTVkwdFBUVTJEcXlBMUFnQUFpeTRGQUJ6QUJ3Yi9ObXpmUENRd01CRG1XZ1lPRGcrSEhqeDlnR2hpeVlFY0NRNVloSmlZbUJhYWVIQWNDQkJEWklmamh3NGM4RFEwTnZaY3ZYektFaDRjelNFdExNL1QxOVlGQ0RlemdPWFBtTVBEeThqSmN2MzRkSkVlMkl3RUNpSW5Va0lNbGZnRUJnVWwyZG5ZTUxpNHVEQ3RXckVqaDVvYmtDUllXRm9iWnMyZW5nRUxXeHNhR1FWUlV0QlNhSkRoQitrbDFJRUFBc1pBYXJVRDhGU2EyYXRXcWxEOS8vckNEMkVBYWxqWmhjdGxBeC82RXFXVmxaZjJLYkE2eDlnSUVFQk94R1FKazZMMTc5K2JFeHNiT09YNzgrQnlvbzlpQkZuS0JEV0tDR0lXVVViaEEra0RzYytmT3pRR214VGszYnR5WUF6SUhKazRNQUFnZ0ptSno2OU9uVCtmNCt2b3lMRm15aEdIdTNMbXdJb29GdWJoQ1NkeU1qTCtBamdTSDdzS0ZDeG1XTGwzSzRPUGp3M0QvL3YwNUlQT0lkU1JBQUJGMElNaXdWNjllVGZYdzhHQzRkdTBhZzVTVUZFTnhjVEZNN2pzd1JMNGhoeHlTQS8rQTVFSHMvUHg4QmdVRkJZYTdkKzh5dUx1N016eDU4bVFPc1VVUFFBQVJkT0RidDIvYmdDSEhmdVhLRlFaUVJwZy9mejZEcHFabXl1dlhyeWNDYzNMdHUzZnYra0Rxdm44SHU0WGg1OCtmNEhRR0VnZkpnOVRKeTh0bkxGcTBpSUdmbjUvaDl1M2I0SkI4L3Z6NUhHSWNDQkJBQklzWlkyUGpPY0EwQkE0aGRuWjJCa0ZCUVladjM3NkJRZzg1dE1CaUlFZUMxUER3OEtCRU9TampjSEZ4Z1lvbWNGa0prZ042RWhRaktZUWNDQkJBQk5NQk1EcmdqZ0NGem9zWEx4andlUXFrQm9UUndhZFBuK0RtZ1BRL2UvYU1xRXdDRUlDeE1pZ0NJQVpoWURRd2RjVVBTLzJoQWcyOGNNVURBOWZVUUU4QU01bGRDTStBVlFWVnBSSjJINmlLK3pRejkzSkpSMFRnN29nSW1CbjIzdWp1UzVrZmhVUTVmeG9BUnpuV1dzak1Yd0UvQVVSVWhYMzY5T2s1d0tnRk53U0FoZk1jb09PY1lYS3dCa0YxZFRWWVBpc3JDNk9oQUl4V2NUYzNON0E4MExGempodzVNb2ZZeGdKQUFCSE1KS0N5enNURUpBVlk3NEpEOE5DaFE2QmNIQW1OVG5GZ0NBckFHZ2pJTkVnY0pBOWlWMVJVdE83YXRRc2NraHMyYkdDd3RyWk9JYlk1QmhCQUJCMElxZzFBamdRWnVuNzllZ1kxTlRVR0J3Y0hCbWpoL0FWdUVGcEJEU29IWWZMMjl2WU1LaW9xREt0WHIyWndkbllHMXo2d21vVVFBQWdnb2dwTGtDTkJSUWZRWVNrM2I5NWtRSzYrL2tEck9Gakl3VElRcUh5RVZYVUJBUUVwUUF5dk1wR3JRRUlBSUlDSXJyeEJWUlRJY09RS1B5RWhZVTVJU01oVVdDTUJPU1FURXhPbmhvYUd6b0hWMVRDOXBMWm9BQUtJaFJURnlJWURjMm41OXUzYkdZQzFETWd4YzhURXhPRHE4dkx5NW9DcVJGQ2FBeFpMVTJWa1pGTFE5Uk1MQUFLSW9nWXJzTVV5QjlRV0JJVWFKeWNudzlldlg4RzFEYWd3QmhVL3MyYk5Za2hOVGFXb3dRb1FRR1QzRllCUnh3S2k1ODJiQnk0K2dBNEE5MGxBTklqZjM5OFBMa3FBRG1XaXBFOENFRUFVZFdoZ1pkM01tVFBoamdUUm5aMmRWT3MwQVFRUUE2VUd3SHAyM2QzZFlNZUJDbXhxT1E2RUFRS0ljYkNQRHdJRTBLQWZXUUFJb0VIdlFJQUFHdlFPQkFpZ1FlOUFnQUFhOUE0RUNLQkI3MENBQUJyMERnUUlNQURIUXpabkg3M0lTQUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9uMnMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDK1VsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBc3BpaGtaR2JHS0p5Y25Pd0FwQnpUaEEzUG56ajFBck5tRUdrY0FBY1JJU3VzSjNhRkFCeVlBcVhvZ1ZnRGlEMEI4QVNwbEFNUUNRUHdBaUF1QkR0NUFxVU1CQW9oc2h3SWRPUjlJZ1J3S2NrUWowREVYc0lSeVBUU2tGd0RsRXlseEtFQUFrZVZRSkVjbUFoMndBSjhlYUtqUEorUllRdTRBQ0NDU0hRcTBPQURJWEUrTUk1RWNXd0NrK29IWUVWZTZKZVFPZ0FBaXg2SDNRV2tQYUtFajFCRU4wQ2dHcGNkRXBPZ0dwVmxEb0xvSFVIWDdRVFJNSDZrT0JRZ2drb29ub0dVRzBJd3pFU1lHdEJqazBBTlFjWCtvUXc1QU01TUNrbmFRSGdlZ0dRcmtGRThBQVVScU9Xb0FkUng2TG9aWjNvakdmNEJjWENHYlFTb0FDQ0JTSGFxQVpqa0ROSVFVb01uaEF4TC9BaXphb1o3N1FJbERBUUtJbkpwSkFGc29JNFVZTERRdlVMTm1BZ2dnVWgwS3Nsd0FHR3JJanJXSDBoZVJvaHNVZWdGQWRmMW9JWS9zSVpJQVFBQ3hrT0ZRRUFBVlVRdWdVVm9JcW4yUW9oamtVRUVzZWdNb0NXbUFBQ0tuZUZvUGpXNURwSFJIcUxRQXhRQ29XTnVBcTlBbjVBNkFBQ0lualRaQzAyRS9DWHJtUTlQMlJuTFRLRUFBa1Z1RndxckZEZEFhNmdPZWtKeVBGTzB3Z0ZHckVYSUhRQUJSMGloSlFBcFZrS1ViWWRVanRFSGlEMjBQQ09Bd0RzV3hoTndCRUVDVU52TVVvRlZtQUJZSGZZQ0crRVJvMjBBQm4yTUp1UU1nZ0NoeUtKYnFGZWJZRDhqTlBxRGNlMEloUzhnZEFBRkVOWWNTMFViWWo4ZXhSblBtekRtUHp3eUFBS0pMbndrYXVvN1E1SUFPMWdIeEcwSm1BQVFRM1RwM09Cd0x5bnk5d05COFRFZy9RQUF4a2pyaVRHNzBveVVEVU9hNkNjVHRRRWNlSkVZZlFBQXhrak0wVGdYSENnTXBNYUFqcnhPckJ5Q0F3TVVDdVpoTVJ5cVJZeGRBQURGU090bEFUT2dDSFNjQnBQaUIrRFl3RlArUll3OUFBREVPbFZrUmdBQWFNa002QUFFMFpCd0tFRUJEeHFFQUFRWUFoU05xUjZybVRzQUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L25ldy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJpRWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFMRVFxNUNSa1pFb2Rjbkp5UVZBeWgrUGtnOUFYRGgzN3R3SE1BRmkyaHNBQWNSQ0E4LzNBL0VDSUg2SVF6NGVpQk9BdUlFVVF3RUNpSkhZMWxOS1Nvb0RrSElnUW1rOUVCc0NRK3dDamhDZkQ2UVVnUGdnRUQ4QXFsdEFqQnNBQW9pVUVGMFBNaGdhZGZqQUFWeU9oSUtEVUlmYWd6d0ZkRGhJN1FWQ2xnTUVFQ2tPRllDbXJRT1VwQXRRQ0VLVEJpaDAvMFBOSlFnQUFtakk1SHFBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFDSzE0UndQYlBFNERJUkRBUUtJbElZem9TNEdPUURVY0U0a3hnMEFBY1E0Vk1aSEFRSm95S1JSZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUFNQU9PUkRHeVJSQ29RQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvb2N0YW5lLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ0xFbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUN5bUtHUmtaTWNTU2s1TURnSlFCa1VaTW1EdDM3Z2QwUVdJcUhZQUFZaVMyWnNMaHlINGdWVUNDWHk4QXNTTTVqZ1VJSUtJY2lzT1I4NEZVQXBUN0FJcnhBUWQ4amlYa0RvQUFJdG1oUUFjS0FLbjlTTkc5QUlnTHNZVVNtc2RBbnBxUHk3R0UzQUVRUUNRNUZHaVpBcEJhaitSSVVKb3JKRGJlOFRtV2tEc0FBb2hvaHdJdE1ZQ0dwQUJVT0JGb3lRSlNjeTh1eHhKeUIwQUFNWkZnT015Um9CQUlKTWVSSUFEVmx3amxnajBQalNtOEFDQ0FpQzFIKzVFY0NRcUJEWlNVaVZnY20wQklEMEFBRWV0UTVPaStRSTBDSE9yWUNjU3FCd2dnVW11bUQxU3VjRDRTcXhBZ2dJWk1GUW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSWUhNcFBTQUZBQUpIcTBINW82NGxpQURVbkg2bDJ3Z3NBQW9oWWg2TFh6UUpVY0NSeTI0RmdDd3dnZ0loeUtJNkdCQ1dPblk4VWlvWEVWTXNBQVVSMDFGUExzZENlUVFDU0k0bHFoUUVFRURrdGZMd3RkUkxhb2d1QStoS0piZUVEQkJCWmZTWnlIQXZ0cmE2SGNnOEExVHVTMG1jQ0NDQ3llNkZBaXh1QVZEMEpuVHNEYU9ZaHEzTUhFRUNNcEF6a1luSHNmR0lhdldqTlJFT2dJeCtRMnE4SENDQkdVa2VjY1NRREJTSzFMeURIa1NBQUVFQ01RMlZvSENDQWhreGREeEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCQmdDa2pkcU81OWhMOEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvb3Blbi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNiVWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFMSFF3dENiTjIvaWJFQUlDd3N6aUlpSU1KSnFKa0FBVWQyaDNkM2QvNEVPeGF1bXRMVDB2N3E2T2ttT0JRZ2dCbERyaVpvNE9UbjUvN2x6NS83amttOW9hUGkvY2VQRy82U2FDeEJBUklmb3BrMmJDSVlVREFCREM2ZWNob1lHdzU0OWU4REpnNHVMaXlFN081dW9rQVVJSUZJY3ltQnRiUTFPWTRRY0NYUUFUc3NOREF3WU9EazU0V2FDSEV4TU1nQUlJSkxTcUpXVkZRUEphUXZUSTR5d0VBZkZFckg2QUFKb3lCUlBBQUUwWkJ3S0VFQkR4cUVBQVVUVmN2VE1tVFAvdDIvZkRtYkh4OGN6eU1uSk1WTExiSUFBb3BwRC8vNzlDM2JrdzRjUHdmelRwMCtESEVxMVFBQUlJS3BGL2RTcFUrR09CQUdRbzRHT3BWcGZIQ0NBcU9MUU5XdlcvTDkwNlJLRytNeVpNeGxBdFJRMTdBQUlJSW9kK3Z6NTgvODdkdXdBczBFVkFnekEyTk9tVFdONDkrNGR4WTRGQ0NDcVJYMWlZaUs0UWtEaU04SWN5OEpDZVZZQUNDQ0tIUXB5Qk1pUlFFY3hZbkU4bzZHaElWVUNBaUNBS1BhcXFLZ29JdzhQRDg2b2pZdUxZK0RsNWFXNG1BSUlJS3BFUGJDUndmanIxeThNeC83OCtmTS9OUndKQWdBQlJMVTB5c2JHeHZqbnp4L2tkaTVWaHdrQkFvam9xQWUxSGVmUG53OXE1dUYwQUREMDRPeHQyN1l4WEx0MkRleG1iR3EvZmZzR041Y1lBQkJBak1SNi9NMmJOLytQSFR0RzFmcGJWbGFXQVpqWmlFb2FBQUhFT0ZRR2NnRUNhTWkwbmdBQ2FNZzRGQ0NBaG94REFRSm95RGdVSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDREFBQVBkRHh0YTUwcnNBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3Bhc3RlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ1UwbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFzUkNya0pHUkVhdDRjbkt5QUpBcUFPSUxjK2ZPM1FEbE13RFpIMGh4Q0tIeUhDQ0FHSWtwOEFrNGNqOFFQd0JpQnlCdUJPSjZxTFFqMExFWHFPVlFnQUFpMjZGSWpnUTU1aUFROXdNeFNDd1JxcVNmRk1jU2NnZEFBSkhsVURSSGdrQUNsRTRFT213QlZFMENLWTRsNUE2QUFDSTNNODJIT3ZJaEVBZWdPeEthUmtIc1FwQ0hnSTQyb0RRekFRUVF0WEw5QjZUUVphQ0ZZd0VDaUZ5SGd0SWh5R0o1SU40QVRadFlIVU10eHdJRUVGa09oUlk5amxESGdzQUNXanNXSUlESWpucDZPeFlnZ0NoS28vUjBMRUFBVVp5WjZPVllnQUNpU3E2bmgyTUJBb2dxRGdWYUJpcFg3ME10QjVXckM0SDRBTFJxcFlwakFRS0lpVXFPTklEVzg3QjYzd0NLRS9FNUJzbXg2d25aQXhCQVRGUnlKS2lhbkFDa0E2R2hXUStyT29rSU9YdW81L0FDZ0FCaW9wSWpQMEJEYUFPMGxpSXFtcEhNQ0NSa0gwQUFrZHNvd1hBa21ud0RLS1NBY281bzR2Q0dDaERuSTV0QnlCMEFBY1JFalpCRWt6ZUFPbUlobnBBOWo4OE1iQUFnZ0VnS1VTSWRDY3BRaGNndEtXeHRXWFQ5aE53QkVFQkVPNVJhamlTM1BRb1FRRXhFUm5jL0xSMUpEQUFJSUdMVHFBSzA4ellnamdRQmdBQWkxcUhnOWljMCt1bnVTQkFBQ0NDaUhJcGNsOE1jUzA5SGdnQkFBSkdhNjlHN3gxUnpKQ0YzQUFRUUV5bUdRRVBXQVZyN0pOSWpKR0VBSUlBWWg4cUlNMEFBRFpteEo0QUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUF3QVBoVWE0bEYwMmV3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Bhc3RlY2hlbWRyYXcucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVNZU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkRWSFBycTFhdGxmLzc4ZWQzVTFGVEZ5TWpJVEcySEFnUVFJeWsxVTBkSGh5MVF2U2ZRSWIrQW1PSHYzNzhNLy83OSsyTnZieStqcWFtWjhQVHBVM1kyTnJiUFBUMDlHKy9jdVhQWDFkV1ZBZWg0bUhabUppYW10eXRXckZoOTdkcTFwNlE2RkNDQVdFaFJ6TWZIdDhMVzFsWUs1RUNRQjRFV2cybHVibTZHdlh2M01seTRjSUhCemMyTnQ3UzBOQWFrNXVmUG53d3dENEhVUG52MmpHSFZxbFhLUUxFR29MNjNwTmdORUVBa09aU0xpMHVNbDVlWDRjcVZLd3pNek13Z1Bsajh6WnMzREJ3Y0hBem01dVlNMzc5L1p3Q0dMRmdlNUxqUG56K0RRcDFCUUVDQVFWRlJFY1EyQUdwUkJtS1NIQW9RUUNRNUZHUWh5Q0V3eTY5ZnZ3NUo2RXhNY0JvVXdpQTVHQUNGcHFTa0pBTTdPenM0R1FENXJFQmhObEtqSGlDQVNISW9ORTJDMlNDTFFhRUVjaGdvZW4vOStnVm53MmlRV2xDeUFIbmc2OWV2REYrK2ZBR3hRWGFTM0dRRENDQVdjbklneUFFZ3gvRHo4NE1kQkFwbGFXbHBjUFNEQU15aHlCNEVPZmIzNzk4TW5aMmR4cHMyYmNwa1pXVzlEZVMvSXRaT2dBQWlPVVJoR1FubVdCQUFaUnByYTJ0d2lJSEVZQmhjckVBZERPS0QwclNnb0NDRGxwWldOSkROQkN3aEtvQXg4WWdZdXdFQ2lHU0hJanNFNWdoWWtuang0Z1ZZSERtSndOU0FRaE5ZYW9BZHFxS2l3bEJRVUJBSmpBRStUazdPUW1DTTNDWmtOMEFBa2VSUW1BTmhtUWFVTGtIUkRpdUdRQ0dHSHUwdzhPUEhEM0JKQUFOS1Nrb01tWm1aM3J0MzczNElWRjhMMVBjT245MEFBVVNTUTBHNUZoUlNvTkFCc1VFT2hZbUJISWVNMGRNcXlIT3dvZ3NVNGp3OFBBeWdvZzRJdElCWUFZanhPaFFnZ0VpT2VsRElRSE12MkJIQVRBRVdBem1LaFlVRkpkY2owOEQwQ0taQlpTNklCc1VDS0RNQ1BRa3FxdGdKMlEwUVFDUTdGQlNhSUVmQ0hBVmlmL3YyRFo0a1lGVW1lbVlDUlR1b3FJSTVIc1lHT3ZRL01jVVZRQUF4a1JyMU1FZUNRaEprT1FqRE1nNHNEY0k4QUF0MTVEUUxZNE5DR0RuVEVRSUFBVVJ5aU1Jc0FUa0s1aUJZSm9NNUhsc2FoWVV3TE9SaEhpVFdvUUFCUkxKRFFSYURRaFJrRWNoU0dBMERvQXlHSG5ySXlRREdCbVVrV0ZGR0RBQUlJSkp6UGNneVdJTURGcnJJMVNvSUkyY2liRVVjTEptUUVxSUFBY1JDVHRVSml6cVlvNUZyS1ZER1FnNU5QRTFHa2h3S0VFQmtSVDBzTFNLSERBaUE2bnFRSEVyTEhDMzZZV0tnNUVPS1F3RUNpSVhjWEErekVObWhJRDZvZk1Ub1JtQXBXMEcxR0t6dFFBd0FDQ0NTcTFCWWd4bVcyMEZwRXVaWWtCZ296ZUtLZWxpeWdYa012ZTJLRHdBRUVFa09CWVhXclZ1M3dOVWZ6QUtRdzBBMUV5eEpvRWM5TVcwSFlnQkFBSkhrVUdDL2FPYTJiZHRBWFFsdW9NUCtRUnNidjYyc3JOUlBuandwZ0Z3Q29JY29ldFNEa2crb09nVzJucGlKcVhnQUFvaWtYaWpRQWxCdzZZRWNDaW9Fb01LL2dVbEJFMmlPRFRDOWlXS3JEdEVxQUpDK0g2RGVLekR6c1FJOStoQllMUzhGeWwzR1p6ZEFBREVPbFlGY2dBQWFNaU1sQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VHQUFoUHlIUUNwYUNyZ0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3BlbnRhbmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDamtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRQzZrYUdCa1pjY29sSnljTEFLbDZJTDQ0ZCs3Y0JjU1lSMnlGQXhCQWpLVFVUQVFjYVFDazVnT3hBVlFJNU5CQ29JTS9VTU94QUFIRVJDVkhKZ0NwL1VpT0JBR3dHTlFEWkpzTkF3QUJSRlNJNGpJSUd0V2dVQXlBQ29GQ0x4Q0lIYUJKQUNaV1NDZ3BFSElIUUFDUjdWQm9TSzBIWWdXbzBBR1FJMkZSRFpSM2dNb0xRT1UzQUhFaXJxUkF5QjBBQVVUUW9UZ2NXUUNrK3BHRUdvRU9hTUFSNHV1aElRd0NENkNldVVDcVF3RUNpQ1NIWW9ucUI5QlFPb0RQREtDK0JxU2t3QUJOQ2hOSWNTaEFBQkh0VUZLakVvdGpIYUNlVk1DbW41QTdBQUtJS0ljU0V5SkVPaFpiaklDVEFpRjNBQVFRUVllbXBLVHNSMHBqRjZDaGNJR1NXZ1pMR25lY00yY08zdVFERUVERWxLTUNTTG5ha1ZKSGdnQTBOZ0tSaEI0UTBnTVFRTVE0ZENPVVZpQTJQUklKN0dHeEJEU1hvRU1CQW9nWWgyNkFPWlNZV29ZRUFFdW5DNGxSREJCQVRFUkUwd1drcUltbmhndWhIbFpBQ3dpOEFDQ0FpSzNyTjZDRkFxVWducFJvQndHQUFDTFdvUXVSb2wrQjN0RU9BZ0FCeEVSa0xrV08vZ0I2UnpzSUFBUVFLUzM4RFZSS3B5UkhPd2dBQkJBcERvVVZVd1lVUmovSjBRNENBQUZFdEVPaERZOFBsRVEvdWRFT0FnQUJSR3JuanRMb0p5dmFRUUFnZ0FnNkZLMHRRR24wa3hYdElBQVFRQ1MzOElFT2ZBK3QveThnSlFWQzRBTzAxQ2lBOGhYUlE1U1FPd0FDaUtqdU1zZ1FKTWR1Z0hiY3lLMU9TWTUyRUFBSUlLTDc5VWlPclFiaWh4VGsrZ1BrZEpjQkFvaHhxSXc0QXdUUWtCblNBUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBR2pJT0JRZ3dBQnJwNzlvRFZ4TldBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3BsdXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFCVWtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBTEdRbzRtUmtSR3JlSEp5Y2dPUXFrY1NPakIzN2x4SGZHWVIyOVlBQ0NBbWFqbVMxZ0FnZ0ppR2dpTkJBQ0NBaGt3YUJRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFDS3BlQUlXUHdKQXlnQ1BFbmswdmdCUWp3TWU5UStnbUNBQUNDQlN5MUdRSS9kVFVYMGpFRGNRWXhCQUFBMlpxQWNJb0NIalVJQUFHaklPQlFnZ1V0UG9CU0RHVjNmSEEzRUNtdnBDQXBtSktBQVFRSXlrREVBUXFrSnAyU2dCQ0tBaEUvVUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFGRWtrTUhjb2dTSUlBWWg4cjRLRUFBRFptb0J3aWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNEQUFEcVluNVNOSGlPNEFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3Byb3BhbmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDWDBsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQkJBRHFBb2xoRWtCeWNuSkRVQ3NRRzAzQUFRUXdSQmxaR1FreFpFT1FLb2VpT2VUNGxCaTdBQUlJR3BIZlQrVWRnQ0ZMRFVkQ3hCQVZITW8xR0VHU0VMMVFERURhcGtQRUVDTWhOSWdNZEVDVFpQM29kd0ZvQkFGWXBEWUJTQjJuRHQzN2dkaTB5b3VBQkJBMUFwUldKb0VPYWdRaUJPaGZBTm9tcVVZQUFRUUV4V2lQQUVhZ2lDUUNBbzlJRDRBWkRkQ3hRcWdtWXdpQUJCQUZFVTkwQUVDMENnSDBRZUFEblJFa3o4UERWVlFTQ3NTU2dMNDNBSVFRRXhVaUhJQnFFTVNzY2pEeEFSSUxiTFFBVUFBTVZFUTVhRG9ESUJ5RzRHaDlRQmREVkRzQWpUTmdrQUFOSm1RQlFBQ2lLeW9oMGI1ZVZqT0JqcklrSUNuOWtQVE1TamtEYkY1aWxEVUF3UVF1U0ZhRDNVa0E0NG94NVlFUGxDU0JBQUNpSW1NS0FkbGpnS2tLTDlBU0E4MEJCT1JhcTBDVXUwRkNDQW1Nak1RQ0lBc24wQ3NKcUJqTndDcERiQ3FsdFJhQ3lDQW1FZ01UZVJxTXBIWUdnY3RDVHhBOHpCUkFDQ0FtRWh3SkNoTjVzT3FTV2loVGhLQWVneGVhd0hON0NkV0wwQUFNWkVZNVFKSTFTUlpBT3JCQ2FUV1dnQUJSRlR4QkRRTVZGNnVSMHFiRDZoUWZUc2dtUWNxc2o3Z2N3dEFBTEVRRWVYb1JZb0NVdEZFRGFBQU5UOFFueUtBQUdJaHdpQlE1cGxJNnk0Uk1FRDRnTlFuWFBJQUFjUTRWSVlkQVFKb3lQUkNBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWdnSWFNUXdFQ2FNZzRGQ0NBaG94REFRSm95RGdVSUlDR2pFTUJBbWpJT0JRZ3dBQ2pwTkNxZVNaTzdRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Byb3RlaW4ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVIzU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1ZDaStjZVBILy9mdm4zTDhPN2RPNGJQbno4emZQdjJqZUhQbno5Z09WWldWZ1l1TGk0R1hsNWVCaUVoSVREbTRPQmdKTmN1Z0FCaUpLZDRBanJvLzZOSGp4Z2VQMzdNOE9uVEp3WkdSa1lHSmlZbU1BM0R5QUJrQnc4UEQ0T01qQXdZQXoxQXNvTUJBb2draHdMVmdoMTQ3ZG8xY09neE16T2pPQTdaa2VpT2hUbVlrNU9UUVVWRmhVRldWaGFraG1nSEF3UVEwUTRGUnVuLzY5ZXZNOXk2ZFFzY2VpQkh3aHhFckVPUkhheWdvTUNncXFyS3dNTENRcFJqQVFLSUtJZisvdjM3LzRVTEZ4Z2VQSGdBVG51d3FBYm5SaVFhM2FIWWtnQ01CbUZ4Y1hFR0hSMGRrSmtFSFFzUVFFekVSUGZObXpjWlFGR083RWdRRFl0NkVBMFNROFl3ZGJqRVFYcGV2WHJGY1BmdVhiQWRoTndCRUVBRWN6M0lnU0NISWx1Q25ublFReE1XeXZoQ0ZBWkFHUktXMGZBQmdBQmlJbFQ4WEw1OEdhZkRRS0VDQzAza2tFSU9QV1E5NkNFTFUzdm56aDJHNzkrLzR3MVZnQUJpSWhTYVFNZWlwRU5jYVpHUUE5RXpITElZcU94OTl1d1ozaEFGQ0NDY0R2MzE2OWYvZS9mdVlYVUFyclNITG84dDdXSUxkUkQvK2ZQbllEdHh1UWNnZ0hBNkZGU1FnMm9iNUhSSHlMSFlrZ2MyUGRoQzl1ZlBud3dmUDM3RUdhSUFBWVRUb1cvZXZNRW8wTEdWbS9CeURrdDVTa3IwZzlnZlBuekE2VkNBQUdMQkY2TDRjamMyQzVITFUvU3lGSlRUUVd4a0dzYUc4VUcxSFM0QUVFQXNlT3B6ckxVTXJpSUozZUhJWXRnY2lXd2V6SU9nNk1jRkFBS0lCVS9SaEROcTBSMUNUTWdpbDUvLy92M0RDRTFZN3NjRkFBSUlwME94T1FackhZd2x6ZUpxU1lFY0JISWt6Rk13Tm5vbGdBMEFCQkRPekFSc08ySkVEeTZIWTJOalN4TG82UmJkODZBcUdoY0FDQ0NjRHVYbTVzYndMYnJCK0VvRGJKVUFlcnBHTndNNWNOQUJRQURoZEtpQWdBQTRhdkExMVhCRkdiNFl3RlVpZ0RDb1I0QUxBQVFRVG9jS0NnckMweEMyeGdXdWhqRlozUXlvV2Z6OC9EalZBQVFRVG9lQytqb3d4K0lMTWVRUVFXYkRNRWcvRENPclExY0xhdm56OGZIaGRDaEFBT0YwS0tneHE2eXNqR0VKT3NiWE1NYm1TR3dPQm9tQkd0RnNiR3c0RzlBQUFZUzNQU29oSVFIT1ZLQXlGVmZVSXpzT3ZUQkhUdzdvNVNnTXM3T3pneDJLRHdBRUVONW1Ic2lIMnRyYTROeUxIaExZUWhjNUJORkRFNTFHTmt0ZVhoN2tXTHpkRVlBQUl0Z1ZBWVdxaG9ZR1ZrdHhPUmFkalUwOVNPenYzNzhNVWxKU0RHSmlZZ1F6SEVBQXNSQ1JJeG5sNU9UK2crcCtVT2NPdWRyREZxM28wWSt0SklCNVdsUlVsT2h1TTBBQUVkMWRCdnIrLzhPSEQ4R2RNWkFsc0FZd3ZnWUtla21CSEtLZ1BoSXdBRUJtRU5WZEJnZ2drZ2NnWHI5K0RlN3NnVUlZMmJIWUdpdll5bGxRN1FOeUlDaTZTUm1BQUFnZ3NvWjBnTTJ4LzZEeEpsQUlnMXJseU4wTFdLTUVQZnBCcFFjb1BZS2lHMTh4aEFzQUJCQWpKVVBqb0Q3TzE2OWZ3VjBXVUVNYlZJd0J4Y0NoQ1Jza0EzV0ZRWlVIaUNabW9BRVhBQWdneHFFeWhnOFFRRU5tZkJRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJTUFBbXFHZ2NGbVBBckFBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9wdWJjaGVtLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFVUlNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQkJCVkhmcjI3VnVwQXdjT2ZEMTU4dVQxYjkrK3NWTFRiSUFBWXFSR3pmVDkrM2VXaXhjdjNyaDU4Nll5T3pzN0E4ak1YNzkrTWVqbzZKeFNWMWQzNE9IaCtVNnBIUUFCUkpGREh6OSs3UHowNmRPWnQyL2ZWZ2FabzYrdnYxbEJRU0VHeUdaNjlPalJuQXNYTGdRek1qSXlLQ29xdmxGVFU3TVdFeE83UmE1ZEFBRkVsa00vZi83TUNYVEUwN3QzN3dxQ1FoRG9pRk5hV2xyV25KeWNmNURWZmZueWhmUE9uVHZyYjl5NDRmNzc5MjhHR1JtWm4zcDZla3JDd3NMUFNMVVRJSUNJZHVqUG56OFp2Mzc5S25ibHlwV2JRTXY1dWJpNEdIUjFkV2NvS1NubGdod0lTcE1mUDM3VSt2VHBVeUFySytzZElTR2hMV3hzYkYrQjZuNkRIUHpnd1lPcFY2OWVUUVNhd2FDc3JQekYwTkJRQXVqSmIwQk1sQU1BQW9nb2g3NS8vMTRZRklMQUtHWVhGQlJrME5iV25nRU1uUkkrUHI2dm9PZ0hpbThEUlRmUXdTLzUrZmszLy8zN1YvVGR1M2VlZi83OFlXZG1adjVqYW1vcUNFcW5RRTl3UDMvK3ZQVFNwVXYxd0ZnQkpZbWZCZ1lHMGtBejN4SnlBMEFBZ1JNK0lYejU4dVY1TTJiTStBL01NR3VBSWNJS0V6OTA2TkM3elpzMy93Y21nUmhrY1JEKzhlTUg0NnRYcnhUUG56Ky9BNlFHbU5FcWtPV3VYYnMyQVdRbXlHeGkzQUFRUUN6RXBoRlFTS3FvcUVTQ29oTEUzN3QzNzI5Z0tOMXhjWEVSNGVEZytJZXVIaFNsb3FLaTk0SFlRMFJFeEE0WUl3ZUJZdGZsNWVVM2d1U0FkQ2t3OVBPQm1lMG5NZllEQkJCUkRnVVo5dS9mUDFDUnd3MTA2QWRnNXVnQVJ1a3ZjM056VFdMMEE1UEpJYURqbElEUmJRMFRBNGFxRUtoRUlCWUFCQkRSSVFvS2ZtQW1BWmVId014VURneEpabEp5TFRSMDc2T2JTU3dBQ0NDU2F5Wmd1V2tCek0zL3NVVTN5VVVPQ1NFS0VFQk1wQmdLeXRuQVRPTUFUSE5INlYzWEF3UVFFeG1oOEFOWVphcFF3M0pTb2g0Z2dFaHlLQk1UMHg5Z2FDNEdOajRrNkIyaUFBSEVSSXJ2UVZFUEtweTV1Ym4vUEh2MnpKaWVEZ1VJSUpKQ0ZGaGZjNEpvWU0ya2Z3WUlRTTA2WXZVQ0MveUc2OWV2VDBEeU9ETXBtUWtnZ0lncW5rQlZJb2dHMWQwZ1drSkM0aHF3Y1JGdytQRGhwOGJHeGk2eXNySjdjZWtGVlp0bno1NTlDMHpYN0Y1ZVhuQ1hBYXZiMTFBSHN4UGpCb0FBSXRhaFFzQkdDUU93cWx5Z3Fxb2FDeXFhZ00yNWpVQ3BBS0FqOWdERnY4bkp5YVdMaTR1dkJoYmt3a0RMV1lDaDllZisvZnRiZ05Xb0liQUcrd2gwSkFmTVBGQUQ1dGF0VzV1QmpSaWlReFFnZ0lodVBZRnFJMkQ5WEE2cW9ZQ040V1ZBaDZidzh2S0NLd0JncTJnNnNCRVNEcXk1ZUlFMTBBZGdZNFFMcUk0RmxLYUJqV2R0b0FkdXdacDlzRllVTUhaQWpaS2R3S28wbXBoR0NVQUFrZFFlQmJYa256eDVrZ05zblBTRFd2Q2FtcHI3Z1cxUlQyRG0rb25lWG9WNUFnU0FuaEFIaGpvbzVIV0FWUytvZ1YwSjFOZEJTdjRBQ0NDeUdzNmd0dW05ZS9mNmdTMmZmRkNEV0VORDR4UXdTVGlCbW4zb0RnWld0MXVCelRwSFlKcGtBS2JyVG1Bb1ZoTGJCa1VHQUFGRVVWY0U1R0JnS0UwRE5xWXpRQ0VNTEEzMkF4MFNCTXJSUUFjZUFPWjBIVkFQQU5SK0JZcm5vdmNBU0FFQUFVUzF6aDNRVVZ1QUllY09TbnVnNklWMjdqWURROXVmbkJCRUJ3QUJ4RWpOOFZGZ080QWQ2TmliTEN3c240R3RlbDFxRnZnQUFjUTRWQVp5QVFKb3lJeVVBQVRRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUlBQkFDRjducHM2QmY2K0FBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvcmVheHlzLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FZQUFBQ00vcmh0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBRlJVbEVRVlI0Mm1MOC8vOC93MkFHQUFIRXhERElBVUFBRFhvSEFnVFFvSGNnUUFBTmVnY0NCTkNnZHlCQUFBMTZCd0lFMEtCM0lFQUFzUkJTOE9ya3FTTVBWcTYxNXBHWFlmajk5UnNERXlzcnc2OFBIeG4rLy8zTHdNVEN6TURBQ1BJam9iS1VrZUh2ejU5QXBVd2dKcGhtWW1OamtQUHpPU3BzYUdDRFR5ZEFBREVTS3FoUGwxYjh2ejEzQWRoQU5pRWhCalorZm9hL1A3NHpzUEx3TUh4NTlJVGh6OWV2UUVlemdCMzYvKzhmb0Z2L00wRE1aQVFLZ1RBemczeVFIOFBIbTdjWi92Myt6ZkQzTzFBdjBBeE9DUWtHTmo1ZUJzdXBFeG54MlE4UWdEQXlWZ0VRQklEb2tZRkdFWVd6TmZ2L3YxTmI1YXhvUldhbC9ZRERiWS9qY1pkZGtEQUdVbFYvVXJrekJwUnpQSGRBUFFqUXJvVmJObmhyMFl3Q1pXSXBSYmlTekE2M0t2UlN3a3d6M2pORTd5aE5DaHhLd1d1ZHZmZ1RRQVFkeU1MRnhjQXVLTWpBeE1rQjVyUHg4UUY5THc2TVhoWndkUC81OW8xQnp0ZUw0ZXZqSnd3ZmdZNzQrLzBuT0lULy8vc0hkZ3hJM2JQOUJ4aStQSGdFWmpNeU16TXdpVEF6ZkxoOWgwSGN5cEtnQXdFQ2lLQUQrVFhVR0NTY0hCaVlnVkg4RDVqdVB0Kzl5L0Q3OHhkRUdnRkcwTnR6RjhCc2JtbHBCaWtYUjRaUHQyNHovUHI0aWVIN3kxZkFrUDRETkVNZEh2WE03QndNUElweXdCRC95c0FwSlVYUWdRQUJSTkNCcjArY1lyaTdhQ2tETXhjbkpOdXpzT0xJRkl4QXgveG1lSC81Q2dPN2lERERIMkJ5QUtVL0ZuWTJjS1o2QS9URXZ4OC9HWVFNOVJrZXJkL004Qk1ZdmV6Q1FnUWRDQkJBQkIwSXlod3MzRnpnTkVoWUxTdllZYjhmUGdMeldibTVnVW1BaVVIQzFwcmhOekR0dnI5NkhSajlQNEQ0SnpoNWdLS2NFQUFJSUlJcXdHbUpCQUFxUXNERkNSQ0FpaFpRMU42YXY0RGh6ZWx6RFBxVlpRd2ZidDRDT3ZvN09NUEIxT0VEQUFGRTBJR2c0b1NpTmlNb2tRSzFjNHFMTWR4YnVacmh4NXUzREZ6QUlvWkRWSVFvQndJRUVFRUg4aW9yTWZ3SEpuUktBS2hRNXhRWEI1YURmNER1WlFSbW5wZkEwUDNGd0M0a1NGQXZRQUFSOUFJd3g5cUF5aTFLQUNqbi9nTG0vRzh2WG9DTEdYQlJBeTdjR1FucUJRZ2dnamEvUEhUNG01Q0JQc00vWU1GTFh2RDlCMmN5VG1DVS92OU5la3dBQkJCQkIycGtwVE1MQXgwSXlwM2twa0UrVlZXR3I4K2VNNUFURXdBQlJGQUhLeC9mSlc1RmhUWlFsVVpxam9ibDZxOVBub0NyTlZEVWtnb0FBb2lnQXovZnZ2TkxVRVBqSEorNjJqdFNNOHUvWDc4WWVCVVZHSDY4ZmtWVWpzVUdBQUtJaVpnbyt2UDkyMW9wWjZjTG9NS1ZsTFRISmlnQUxLQS9BME9lL0dJS0lJQ1lpTEVJVlBJTDZldG1DUnNaZkNNMm9ZUHFZRkRkL0JjWWlneGtKQTBZQUFnZ2dnNFVzVEJuRUxXMFlCRFExYjFwM05ZeWp4MllHMEhWRlNGUHNmTHlnQnNFZjRETk1HS0tFMXdBSUlDWWlFbmtZQXkwQk5nSUtETHRianZJTFN2RDhBOVVqZUYwMzM5Z2htQUJOMWovQUF0a1Nod0lFRUFrcFZ5Z28zNERxeWh2NDQ2V2c1eVNFdUFhQXF1aHdMUUtxam0rUEh3RTZSWlFBQUFDaUluVU11M1AxMjlmZ1ExWUw1T09sb3ZBSFBvVjVFaFFVeDVGR2JDOFl3UlZ3QlNrUFJnQUNDRFM4ejdRa2NEaTR4dXdLMkFBYlBKcnFhZWxuT2VSbFdYNDlmNER1UFVDcW05QlJjdEhZSXVaa1pSY2p3TUFCQkFMSlpyL2ZQNzhTRDRvd0I2WUllSitmLzFhK1BiMEdlVzNGeStEK3gvZ1hoeW8zZ1dtWDFBQkR3cGxScVFRQlhlZ0NHVTJJQUFJSUlvY0NJN3liOTgrQXp0TVUxWGlZOVovZi9aY1hOclRQUWpZRUszNmZQYyswM2RnQWYzejFXdGdheHpZcnhFUUJIYzU0UTRFT2s0aFBKU2dGUUFCeERqWXh3Y0JBbWpRanl3QUJOQ2dkeUJBQUExNkJ3SUUwS0IzSUVBQURYb0hBZ1RRb0hjZ1FBQU5lZ2NDQkJnQS91L2FPUUQyOTBjQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvcmVjdGFuZ2xlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFOUVNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRUVBcyt5WThmUHpJY1BueFk2Y21USjR0ZnYzNXQ4dXJWcTErZ0twZVJrWkVCblVZR3lHS3dLaHFiSGlFaElUWnRiZTN6VmxaVzBVRDJYUzR1THB4dUFRZ2dSbngxL2FsVHAxU1BIajI2NStyVnEzSk1URXdNYkd4c0dJN0R4Y1lHa0IzOTc5OC9oajkvL2pEOC92MmJRVkZSOFhGR1JvYUxxS2pvTFZ4NkFRSUliNGhldjM1OTdwVXJWK1FrSlNYL0JnVUZsUjQ1Y21UdDVjdVhPZGpaMlNtS3hwOC9meklBUS9Lbmc0T0R4L3IxNjd2dTM3OHZ1MzM3OWhWeGNYRkd1UFFBQkJCZWh3SU5NR1JoWVdIdzl2WXUxOURRNkQ5OStqUUROVnBib05BRWVWWlRVM01ta1B0cCt2VHB5NEFCb29wUEQwQUE0YzFNYjkrK1pRQkZ1WWlJeUE2UXdhQ1F3QmUxeEFLUUdTQ3pRRWxKVUZEd0Vvai83ZHMzdkhvQUFnaHZpSUpDRHhTaU0yYk1BRHY0MTY5ZkRKUkdPd2h3Y0hBdzNMMTdsNkdrcEFRY3Vzek16QVQxQUFRUUN5R2ZnOENQSHovZ2ZHcUVLQ3o2djMvL0RvbFdKc0tsSkVBQXNSQlYyREpScjdpRmVaUlVUd01FRU1Hb0o4WlNVaDFKRGdBSUlCWmFHazVOQUJCQVRKUTZFbGRoVDJveFJrZzlRQUFObWJvZUlJRElkaWkxdTltRVlnOGdnRmlJTFVxb1ZUemg4aUFoY3dFQ2lJa1lRMEVGTktobEF5cVlxUkdTTUErREdpV2dTb1FZendNRUVNSE1CR3JkcEtlbk0zUjNkek9vcTZ2REMybEt3ZCsvZnhuRXhjVVpGQlFVd0o0bkZBQUFBWVRYb2NBMkl0Z0FvT1BzZ0kwR2hzZVBIek93c3JKU3hhR2d1dDdVMUpUQno4OVBFUlN5bkp5Y2VOVURCQkRlTkFwc01WMEdOcG90ZCs3YzJTRWdJUERpNWN1WDU3bTV1ZG1va291Wm1INi9mLzllL2M2ZE96TkEwUTlzOXQzRHB4NGdnUEEybklHdEo3VnAwNmJ0QWJVWFFZMFJXT01CVzh1ZUVCOWRIRVNEb2gvVWpwQ1RrM3NKYkRnN0F0dTkxM0c1QlNDQThEb1VaQWd3RkpWQkRlWkxseTVwZnYzNjlSZXVoSS9jZWtkM0VJeEdsd2RtVURZOVBiMWJscGFXZ2NEVy9SMCtQajZjYmdFSUlNYWhNdXdJRUVCRHBtWUNDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUF3QUFJbENZMjU1WTRRQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3JlZG8ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFHemtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQXNaQ2o2ZHY3Rit6djNuMlYvYzNFOG8rUjhmOWZ1TVQvdjh6L0dWZ1kvdjdqWVpLU0VuakV4Y244aTFvT0JRZ2draHo2OThjM3hyL2ZYb2s4di9QQS92NlQ5NFhmV2RoL2dxT0Y2ZTlmVUxYeC85OWZkZ1lHdGorLy80cXpNN0NvSnFuSTg5Mmtsa01CQW9na2gvNzg5SUhyd2JXTGFUZnVQU2w4OWUyM3dNKy9qSmhKaDVuOVB6UGpoMzkvV2I3Ty9zR29rS0FpTGZPUWc1bnBMNlVPQlFnZ1JxS3EwTjhmdUg5OC9NQnk1L3I5NUl0WHpyVysrY2JBOFllQm1ZR0ZuZU1mS3d2akgyYWdLUXovL3pQKy8vT1QrZWZQdjh4L3dFSEE5VjlBUXZpeG5wRjFpSXFjNUJWQmRxYnZHQjcvK0ptVmdZUDlEd3NiS3dNek1BM2hjd0pBQUJIbDBOL3ZMeVhmUG5ITzVQTE50eWxQL2dJVElkQVJuS0pTcjZRa1JIYUk4WEllWUdmNisrUC8vNzhzZno2K05QL3c2b25MZzdlL1ZiOENIUXgycjdEeUp6MWoweGh6TGFsdFhNeU1rSkQ5LzRYOXpZMDdxbmV1diszbTF0R29WbENVdU1qTHlvdzMxQUVDaUhEVS8vN00vT25oSFpjWDd6OFp2QVk1a2dub1RuN0p6MnBhT2dXR2F0THJlRmxaZnJPeHN2ei85ZnNQNDU4dmIxYS9mOER1L1BQMms5NzdqejlxZ0d6KzgvRXA3NTNyYkpQWU9OaGU2TWtKWGVSbFovNzEvYzJ0bUZzM3I0ZGNmOG5wd0NmNkxVWmFqdUU2QXl2RGQzek9BQWdnZ2c3OThmRXR6K1A3cjNpZWYveXQ4Sk9GQXhpU01xL1V0UFZ5akRYa3R3S2pFNTZyUVk1bEU1VDR5Y1dzL1BVdnY0Z3ZOK2VkNmMvdVBITjYvK2NIMDZjbmR4Uk8vL3EvbmUyWFJwZzQ3Ly9iVHk2ZDliMzUrTFBMeDM5eVRCei9HRG1KU2FNQUFVVEFvVytVUDc1L3JQNzZDN1BtaCs4TUhBeGNBcjlGWmJXVzZhbktic1dXNXNDQVQvV2dMTzlYZGw1V2prU3VOKzhPM1Bud1EvSDF2MzlNZjEvZkZqNTc1T2syVm1hbVAxKy9mZWI2KzRlRmtZdWY0NU1rUDhkZWRpWkdncGtOSUlEd0YvaS92NmovL3Y1Si9mUHZYd0kvL25NeThQUEt2VlJWRUYvSXg4bUN0M3hrWk9UK0tTaXI4MFRQeTkxWVIxNTZseWpUdjMvTS8vNHlmUDN5bWYzRHg0L2N2My8vWi96M254R1lWaGtaaWMzMUFBR0UzNkhmZjMvOTgrT2I3SSsvUDlnWVFBSEt5ZjlDaUlmOUNUQWEvaEZqT0krNDhrY2xaZkVPS1piL1g1bVpRRll4Z2hFckt5U0gvL3Yzbi9rUHNIWWd4akNBQU1MdjBKK2ZqZjc5K2NQdy93OHdxWU1DK004dm5wKy8vdktTVXY2eEMzS29jSWt5M0VFS2I0Wi9aUFFxQUFJSXYwUFpPSitDaldaaCtBM01WZ3kvZjMvbitmWDdMenN3SklpcklONCs1TC8zOENuL2s2OE1pdi8rZ2NMdFB4UWpaUkptcGkvRW1BVVFRQ3dFNG00L0d3K2ZOQWY3cTg5TUREOTVmM3ovS1BqcS9TYzFCVEh1KzJ6TWpIalQ2WTgzRC9pdkhWaTcvdHdqQm9lUC94a1FhZkUvS01vaGZGalVFK05RZ0FEQ0g2TE1RcTk1aFdRM0NmL24vTTRMVFA0L3Y3L2l2UFBpWGRxcnIzK2w4R243ZlArRTE3RmRtMDRjZnNqZ2lPSkltRnZCaWZJWHc4OXZYOWpmZi81aDh4dm9ZRUlPQlFnZ2d1VW9qNkRFQzNreDdrMXZ2bnhKLy9qekM5ZW5wM2Zzcnd2eHVISnJ5aTRSNDJMQldrVDkrYy82U0V4V2Q3YXBLdjg3ZG1iR0wweU1ESmpGejM5R1ptWTIzdGY4WXFLWGVGaVpmaEJ5QjBBQUVWV0YvcnE5cCsvTXpmdEtGKzUrOHZ2K2o0V1JSVkFlczFxa01RQUlJS0lhem13SzVxWHkwckt6cERrWVByUDgrd09zRnAvejNyOTFxLzNhZ3crbVAvNHhNTlBEb1FBQlJGd0xuNVgzcjVpU3pta05GZWsrR1E3R2I4eC92akcrZjNaZjgveVpTOHZ2UEhrai8rY2ZBeU90SFFvUVFFUjNSVmo1Uk45SWF4ck1sUkhodlN6RXhQaVA0ZGNIcGsrdjdzcWRPWGR6emMxbm45WCsvS2V0WXdFQ2lKSFVJWjNQVDI4SjN6aDNadWJGMjgrRFBnRWRCMnlKL0pOUTBEaWhyNjhXcXlJdFJKVkdNallBRUVDTTVJdzlnUng3OWZTSkpkY2Z2M0Y1LytzL3kzOWcrNVJQVXY2aHFibWhoNXFNeEIxYVpEQ0FBQ0tyRjhvcnJmWlczY0FnVlZsYzRJSWdHeU13ZC8xay9QVDB0c0xwaytkM25MLzN4b2dXYVJZZ2dCZ3BHYzE3LytDU3pKVnpGNWJkZlBEYUJseXdBME9XUjB6cXVibU5vNWU4R004dG5FMUJNZ0JBQUZIVXJ4ZVVWbnl1WTZDZHBTWWplRmFFalFYWXhQL0crT1g1UTZtVHQxL1dYbnJOVUU3TkVBVUlJTW9HSUlERkZwKzQ3SDAxWGRVc0tRR3VoendNd09US0kvYVRoNW54TlMvVHIwUFVkQ2hBQURGU1pTQVgySy82OFBZMXo2T0hIM3hmL3VUVEZKUVczaXdyeG4xTm5KZnRFN1VjQ2hCQWpOUWVjWDd4a3NHQ1YvRGZPVzQycGwvVU5CY2dnS2p1MEYrL0dOalkyQmgrVVR2WEF3UVE0MUFad3djSW9DRXptZ2NRUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VHQUFsc092Ry9IK3FQc0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3JpbmczLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ1gwbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JCQURxQW9saEVrQnljbkpEVUNzUUcwM0FBUVF3UkJsWkdRa3haRU9RS29laU9lVDRsQmk3QUFJSUdwSGZUK1VkZ0NGTERVZEN4QkFWSE1vMUdFR1NFTDFRREVEYXBrUEVFQ01oTklnTWRFQ1RaUDNvZHdGb0JBRllwRFlCU0IybkR0MzdnZGkweW91QUJCQTFBcFJXSm9FT2FnUWlCT2hmQU5vbXFVWUFBUVFFeFdpUEFFYWdpQ1FDQW85SUQ0QVpEZEN4UXFnbVl3aUFCQkFGRVU5MEFFQzBDZ0gwUWVBRG5SRWt6OFBEVlZRU0NzU1NnTDQzQUlRUUV4VWlISUJxRU1Tc2NqRHhBUklMYkxRQVVBQU1WRVE1YURvRElCeUc0R2g5UUJkRFZEc0FqVE5na0FBTkptUUJRQUNpS3lvaDBiNWVWak9CanJJa0lDbjlrUFRNU2prRGJGNWlsRFVBd1FRdVNGYUQzVWtBNDRveDVZRVBsQ1NCQUFDaUltTUtBZGxqZ0trS0w5QVNBODBCQk9SYXEwQ1V1MEZDQ0FtTWpNUUNJQXNuMENzSnFCak53Q3BEYkNxbHRSYUN5Q0FtRWdNVGVScU1wSFlHZ2N0Q1R4QTh6QlJBQ0NBbUVod0pDaE41c09xU1dpaFRoS0FlZ3hlYXdITjdDZFdMMEFBTVpFWTVRSkkxU1JaQU9yQkNhVFdXZ0FCUkZUeEJEUU1WRjZ1UjBxYkQ2aFFmVHNnbVFjcXNqN2djd3RBQUxFUUVlWG9SWW9DVXRGRURhQUFOVDhRbnlLQUFHSWh3aUJRNXBsSTZ5NFJNRUQ0Z05RblhQSUFBY1E0VklZZEFRSm95UFJDQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWd3QUNqcE5DcWVTWk83UUFBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9yaW5nNC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJPMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFMS1lwVFVsSWFxR2ozZ3psejVpd2dWakZBQUxHUWFIZzlGUjE2QUlpSmRpaEFBTEdRYWNrRklQNUFwbDRGS0NZSkFBUVF1UTR0bkR0MzdnRnlOQ1luSnplUUV6TUFBVFJrTWhOQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBa2RzZTdRZTJLeWxwT0pNTUFBS0lYSWNhMER0RUFRS0lWSWMyVXJOelI0cGlnQUJpSENvRHVRQUJOR1F5RTBBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVlBQVB5R01Qa0dPaUlBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3Jpbmc1LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ2prbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUM2a2FHQmtaY2NvbEp5Y0xBS2w2SUw0NGQrN2NCY1NZUjJ5RkF4QkFqS1RVVEFRY2FRQ2s1Z094QVZRSTVOQkNvSU0vVU1PeEFBSEVSQ1ZISmdDcC9VaU9CQUd3R05RRFpKc05Bd0FCUkZTSTRqSUlHdFdnVUF5QUNvRkNMeENJSGFCSkFDWldTQ2dwRUhJSFFBQ1I3VkJvU0swSFlnV28wQUdRSTJGUkRaUjNnTW9MUU9VM0FIRWlycVJBeUIwQUFVVFFvVGdjV1FDaytwR0VHb0VPYU1BUjR1dWhJUXdDRDZDZXVVQ3FRd0VDaUNTSFlvbnFCOUJRT29EUERLQytCcVNrd0FCTkNoTkljU2hBQUJIdFVGS2pFb3RqSGFDZVZNQ21uNUE3QUFLSUtJY1NFeUpFT2haYmpJQ1RBaUYzQUFRUVFZZW1wS1RzUjBwakY2Q2hjSUdTV2daTEduZWNNMmNPM3VRREVFREVsS01DU0xuYWtWSkhnZ0EwTmdLUmhCNFEwZ01RUU1RNGRDT1VWaUEyUFJJSjdHR3hCRFNYb0VNQkFvZ1loMjZBT1pTWVdvWUVBRXVuQzRsUkRCQkFURVJFMHdXa3FJbW5oZ3VoSGxaQUN3aThBQ0NBaUszck42Q0ZBcVVnbnBSb0J3R0FBQ0xXb1F1Um9sK0IzdEVPQWdBQnhFUmtMa1dPL2dCNlJ6c0lBQVFRS1MzOERWUktweVJIT3dnQUJCQXBEb1VWVXdZVVJqL0owUTRDQUFGRXRFT2hEWThQbEVRL3VkRU9BZ0FCUkdybmp0TG9KeXZhUVFBZ2dBZzZGSzB0UUduMGt4WHRJQUFRUUNTMzhJRU9mQSt0L3k4Z0pRVkM0QU8wMUNpQThoWFJRNVNRT3dBQ2lLanVNc2dRSk1kdWdIYmN5SzFPU1k1MkVBQUlJS0w3OVVpT3JRYmloeFRrK2dQa2RKY0JBb2h4cUl3NEF3VFFrQm5TQVFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWd3QUJycDc5b0RWeE5XQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9yaW5nNi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNhMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVFDN0VLR1JrWmlUWTBPVG5aQVVoZG1EdDM3Z2RDYW9tdGNBQUNpSkZvaFVRNEZPckFlaUFHMFNCSEpnSWR1NEVhRGdVSUlLbzRGTTJCNkdBQ0VEZmlDbDFpN1FjSUlJb2NDblJnQXRTQkNrakNCNEI0SVJEbkE3RUJWT3dCRUFjQ0hYdUJYSWNDQkJCWkRzWGpRRkRJSFVCUzF3QlZCd01nK1FaeUhBb1FRQ1E1RkdoeEFKRFpUOGlCV0pMRmZDUTlGNkNoKzRBVWh3SUVFS25GVXo2U2hTQ0hPUUl0ZE1UbFNCQ0F5aGtDOFFLb0VDZzVuQWQ2b0lBVWl3RUNpSVhNWW0wQzBBR0Z4Q3FHWnFSRW9PTTJRa05YQUJRelFENHNzeEVFQUFGRWJvSC9rUnhOMEtKS0VacTVHS0FPSmdvQUJCQ3BEaFZBaW5ZR01oMzdBY21oUkFPQUFDTFZvUVpVcWhFVlNQVXdRQUFOVkYydlFLb0dnQUFhTW8wU2dBQWkycUhBSENxQVZ1VFFGUUFFRUJPOTB5ZlF3d3JrZUJnZ2dKaUdRdm9FQVlBQVlxSTBWT2dGQUFLSTNCQTlENjMzeVFFQzVHZ0NDQ0JTR3lVSjBFWUp6TElOME1ieEJ5SmpBZFNTU29DVm9hQjJBckgyQXdRUVNTRUtOSGdCdElFQnl3UUIwTkIxd09kQUlBYlY3L2VSSEFueTJFWlM3QVlJSUxJYnpsamFtaWdORlN3aENIUGdSS2phRDZRMDh3QUNpTklXdmdHME5XU0ExTlpzQkdKL1FnNGt0ZUVNRUVBVTk1bWdGUUVvNUxDMUwzRTZrRlNIQWdRUTFYcWgwSFM2SHByUkNEcVFWSWNDQkJBaktRTzVSRGhXQUJybEM2alpwd2NCZ0FCaUhDb2p6Z0FCTkdSYVR3QUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQkJnRFZWT2JuS005WDhnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Jpbmc3LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFaV1NVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRQzdVTSt2WHJGK08zYjkrNFBuLytyUExqeHc4RkxpNnVHN3k4dkEvNStQaCtVTU44Z0FCaW9ZWUR2M3o1d3Yva3laUE02OWV2V3oxKy9KZ0I2RmdHRVJFUkJtVmxaUVpWVmRVNTR1TGlPeWwxTUVBQU1aSmI0SU1jK09uVEo1Rm56NTZsWExseXhlcnk1Y3NNUUljeWZQMzZsUUZrSmpzN080T1FrQkNEbHBZV2c1NmVIb09hbXRvY1VWSFJQUUlDQWwvUnpRSjZsSTJIaCtjWFB2c0FBb2hraDhJY0NBekJIS0Rqaks1ZXZjcHc4K1pOQm1DME13Q2pHeFNDRElLQ2dneXZYNzltdUh2M0xzT2ZQMzhZaElXRlFRNEZPMXBEUTJPN2hJVEVNcUFuUHBCaUwwQUFFZTFRa0FNL2ZQZ2c5ZlRwMHl4Z0NPcUJISGpqeGcwR1lIcGtBRVlyZzZhbUp0Z2hRUG9ZUHovL3ZqZHYzb1FCMWFtQlF2bldyVnRnandEVExGaU5qbzRPZzdhMk50akJ3SkQ4eU1iR1J0QVJBQUZFbEVOQmpuenc0RUh3OGVQSDQwRlJmT2ZPSFliZnYzK0RRMDVkWFIxa0tUeWtZQmFqaHp4SUg4eGpJQWVEUEthdnI4OWdZbUxTS1MwdGZaU1FZd0VDaUNpSHZudjNUbURuenAyTGx5OWZEazZEd016Qm9LdXJDdzRab0VNWGlvbUpiY2VXOXRDVENqQ0V3VW5sMnJWcjRBd0gxTWNRR1JuSjRPam9HRW9vc3dFRUVGRzVIdWc0ZVZCdUJpWjZjRnB6Y1hFQmhRWlJ1UmtVVXNBUzREVlFYWU9Nakl3SU1HT2xuRGx6eHVySWtTTU1RTWN6dkhqeEFoVEt3a0Q1cC9qTUFRZ2dGbUtpSFppek00QVlIR1dHaG9ZTWxwYVdKY0RvdWtsS1prQnljQWMzTjdjTE1BM25nY3o4K1BFanc4K2ZQMFdBU3ZBNkZDQ0FDTlpNb0VMODBhTkhNaUJEZ1drUUZLSy9nV256THJubEljakJ3TXgyQVpTK1Fja09GRk9nZ0FBRkNENTlBQUZFMEtIQTRvVUxtRWJCbVFBWWRTQzhFRmdNL2FHazhBWTY5ak93VEdVQWhpd0RNQkJBV0FZVUlQajBBQVFRUVljQ28wWG8rL2Z2WU44RE13eW9LRHBEYVczR3djSHhVMEZCNFp5U2toTElmRkJtQlFjSVBqMEFBY1JFS0gyK2YvL2U0OVdyVnd5TWpJd01uSnljRE16TXpMOG9kU2dvK29FaHVreFNVaEprSGdNb0lJREZIUTgrUFFBQlJNaWhyQThmUG5RQnBTTmcrY2dBaWk1UXRGR2prY0hLeXZvRkZQVWdBQW9JWUlCNDRsTVBFRUI0SFFwTWwvd3ZYNzVrQUphRERISnljZ3p5OHZMblFORkdEWWNDUGZ3Qm1LbkFJWHIvL24wR1lJWGlDYXJ6Y2FrSENDQzhEdjM3OXk4YktGcisvZnNITHVSQjBVVk1kVWRrT3YwRzlQaGJZREVIRGdoUWVRcU1RWnpwRkNDQUNFVzlDS2dtQWpvWW9waUo2UmNEbFFEUW9hQjB1bDVLU2dxYy9vRjJnVElVTnk3MUFBRkV5S0Zpb0Z3SmFsQ0F5bEZnaXlpQ1VIbEhMQUJGTTlDOFFHRGFCS1ZYY0VabFlXSDVpa3M5UUFEaGRTZ3dBMTBENVV4UW9nYzFSQzVldkdnRk5GaUtVa2NDMHo0ajBMeHFZUHRCR0ZUM2d3cC9ZUG44RnhqS1gzRHBBUWdndkE0Rkp2Wm5abVpteDRCVkp0alhvQllRc08zWkMweFRISlE0RkpoQnpRNGZQbXdFYkkyQjB6K29ZYTJpb3RLT3J5SUJDQ0FtUXVrSWFFQzNwNmZuTFZBZEQ0cW1vMGVQY3QrK2Zic1ZtQnpJNnNhQVdtTEFWbFROcFV1WHdKNjN0clptY0hCd09BZk1yS2Z3NlFNSUlJS1dnWHdKYkxWWEEzUC9YR0JJOGdHakg1VG8xWUFacXhIWXhLc25wVG9GcFV0Z0k3cnI5T25UNEJvSkZGT2dRQUMySDVwQmdZSlBMMEFBRWRWZEJqWGxnSWFWZ2FJSUZGV2dKdHF1WGJ2MGdNMjBBR0l6RnlnR2dLMzl2dDI3ZDB1Q1d2ekFvZ25VWEh3TzlHd2xNWjRGQ0NDaW93OVl6ejh6TmpaZUNHeEF4Ty9idDQ4QjJLWmtBQll0OGNEb2V3Rk15MWVBSWZ3YlQra2hBQ3pVYTdadDJ5Wno0c1FKY0prTU5BdVVMcXNKZGVwZ0FDQ0FXRWlvU2Y0RGMrWUdOemMzUTZERmVxQTBkdXpZTVlhM2I5K1dnenB2b0JvR0d3REZBS2pCRGVxR25EdDNEcHd1UWVrZDJFT1lCR3FmRW1zL1FBQ1IzQXNGcFROUUZBSkRSeDZVMWtCZENtRDVCNm9Nd0FVM05vZUNhamRReFFFcTVweWNuQmlDZ29JdUFmdE1OWVRTSlRJQUNDQ1NjeTRvcW9EcHFnU1k1aFlETGVjQWhSVElJUVJpQTFUVU1RQ0xPZ1p2YisrSG9FeElpaU5CQUNDQXlCNkFBQlV6d0hSWEMyeFpxWUZxTGx3QUZLSlFENEo2Qjl1QjdkQlo1RFM4QVFLSWtaS2hjVkFOQTB5djdFREhNQk9NT2hhVzM4Q1EvVTF1b3dZZ2dCaUh5aGcrUUFBTm1XRkhnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUF3QmFxZ2QrSUdHWmR3QUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Jpbmc4LnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ0xFbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdRUUN5bUtHUmtaTWNTU2s1TURnSlFCa1VaTW1EdDM3Z2QwUVdJcUhZQUFZaVMyWnNMaHlINGdWVUNDWHk4QXNTTTVqZ1VJSUtJY2lzT1I4NEZVQXBUN0FJcnhBUWQ4amlYa0RvQUFJdG1oUUFjS0FLbjlTTkc5QUlnTHNZVVNtc2RBbnBxUHk3R0UzQUVRUUNRNUZHaVpBcEJhaitSSVVKb3JKRGJlOFRtV2tEc0FBb2hvaHdJdE1ZQ0dwQUJVT0JGb3lRSlNjeTh1eHhKeUIwQUFNWkZnT015Um9CQUlKTWVSSUFEVmx3amxnajBQalNtOEFDQ0FpQzFIKzVFY0NRcUJEWlNVaVZnY20wQklEMEFBRWV0UTVPaStRSTBDSE9yWUNjU3FCd2dnVW11bUQxU3VjRDRTcXhBZ2dJWk1GUW9RUUVQR29RQUJOR1FjQ2hCQVE4YWhBQUUwWkJ3S0VFQkR4cUVBQVRSWUhNcFBTQUZBQUpIcTBINW82NGxpQURVbkg2bDJ3Z3NBQW9oWWg2TFh6UUpVY0NSeTI0RmdDd3dnZ0loeUtJNkdCQ1dPblk4VWlvWEVWTXNBQVVSMDFGUExzZENlUVFDU0k0bHFoUUVFRURrdGZMd3RkUkxhb2d1QStoS0piZUVEQkJCWmZTWnlIQXZ0cmE2SGNnOEExVHVTMG1jQ0NDQ3llNkZBaXh1QVZEMEpuVHNEYU9ZaHEzTUhFRUNNcEF6a1luSHNmR0lhdldqTlJFT2dJeCtRMnE4SENDQkdVa2VjY1NRREJTSzFMeURIa1NBQUVFQ01RMlZvSENDQWhreGREeEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCQmdDa2pkcU81OWhMOEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvcm5hLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FNQUFBRHlIVGxwQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFEUFVFeFVSYm01dWI2K3ZyZTN0LzcrL3J1N3U5TFMwcmk0dU1EQXdMcTZ1dno4L0wrL3YvVDA5TDI5dmZIeDhmdjcrK3pzN0x5OHZPL3Y3NmlvcUp5Y25QMzkvZWZuNTk3ZTNyYTJ0cUNnb1BQejg4TEN3dUxpNHNmSHg4VEV4T1RrNU5YVjFkdmIyM3g4ZkhaMmRxU2twTVhGeGRIUjBmWDE5ZTd1N28yTmpZT0RnK3JxNnYvLy84akl5Tm5aMmQzZDNhNnVyblYxZGRmWDE1Q1FrTnJhMnJXMXRkVFUxSStQajVpWW1Nek16TWJHeHR6YzNPdnI2K2JtNXBTVWxORFEwTS9Qejg3T3pvNk9qdmYzOS9EdzhQLy8vemtZMW5RQUFBQkZkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BTEx1c1RnQUFBR1BTVVJCVkhqYVluQWhHZ0FFRUFQeFNnRUNpQVNsQUFGRWdsS0FBQ0pCS1VBQWthQVVJSUJJVUFvUVFDUW9CUWdnbkVvRitkRkZBQUlJbDFJbldWWjBJWUFBd3E2VWsxL0Z4QTVkRUNDQXNDbmxGRFRsWW1JUVJCY0dDQ0JNcGN5OHJJd01IT3pTek9nU0FBR0VvWlJaZ1pHSmpWSGNRUVRERElBQXdsQnF6TURFSllYVkF3QUJoS0ZVZ0VYR1doS3JVb0FBd2xES29zT05JL3dBQWdoRHFaQ3RLZzYxQUFHRW9WVENRTkhjRUt0U2dBRENVTXJMNXFqTWd6VmlBQUlJVTFDYVI0Q0RrWUVWVXlsQUFHSFR6OElscEdHa2l5RU1FRURZbE1yeDYyc3FtV0dFR0VBQTRVZ3VXc0lTVnVpQ0FBR0VYYWsybjRXNFBib2dRQUJoVlNvbUtzdkFaSU11Q2hCQTJKUUs4N0F3c2JIeW9Rc0RCQkNtVWpsR0FRWW1SakVNbFM0QUFZU2hWSlNSZzBGS25wY1owektBQU1KUXlzN0Vyc2N0Z3MwSEFBR0VvWlJCeHBrWmUzSUJDQ0FNcFpacXVMSTdRQUJoS0ZYSFdXUUFCQkFKcFF0QUFKR2dGQ0NBU0ZBS0VFQWtLQVVJSUJLVUFnUVFDVW9CQW9nRXBRQUJSSUpTZ0FBaVFTbEFnQUVBRHMyOEx4QlBta0FBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9yb3RhdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQWFhU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBVWVUUVAzLytNZ2FHeFR4YnNHalpzMCtmUHd2UjBxRUFBY1JJU2ZIMDdkdDNMcUJENzREWVhGeWNEUDQrWGd6dXJrN2hrcElTaDZudFVJQUFvc2loYjk2ODFZeE9TTnVMTGk0b0tNRFExOVVhTGlJc2ZBekVaMk5qL1V1cFF3RUNpQ3lIZnZueWhYL2J6ajNYTjIzZXp2RDZ6UnVjNmh6c2JCajhmRHdQYTJ0cGhGUHFVSUFBSXRtaDkrNC9LSjR5ZlhieDlSdTNHRUI2aWRHdm82WEowTlhlS00zTXpQei81NjlmekN6TXpQOUFiRkxzQlFnZ2tqTFRwU3RYTnhlWDF4UmZ1MzZUZ1lXRm1jSFFRSStnSGpOVFk0YVVwTmp0Zi83K1pmcnk5U3Z2Mm5XYkhtZm5sejY5ZGZ0T0Z5bDJBd1FRMFE2OWV1M0d5cDcrS2NiQURNVEF4c3JLa0JBYnhSQVhIYkVkbDNvalEzMkcyc3JTMzZsSmNZVlNVcEtWekV6TS8vNysvY3U1YTg4K2hnY1BIekdVVnpmRXZIcjFXbzlZK3dFQ2lLaW9CNFZFU1hudFRaQUZBZ0w4RFBFeGthRFFER0prWVBnZGw1eTVHZDJCM2g1dXYyVmxwV3Q0ZUxnUGMzRnhQUVY2N0E4b3FyLy8rTUY2NXV6NU8rMWQvYXovL3YxajBOYlVZR2lzcjFUbjRlYitUTWdOQUFIRVFveHZ0dS9ZQTNZa0N3c0xRMVI0Q0lPSnNZRXpIeC9mclI4L2ZnZ1Q0MENZR2xZV2xyK2E2bW9lQ1hGUmV4Y3VYczV3OWZvTmhpTkhUOXowY0hPV0l1UUdnQUFpNk5CZnYzNHpyMXF6SHN6VzA5RmlNRGMxOWdVNWtwMk43ZS92WDc5K21wdVpNTGc1TytKMUlOd3lGcFovdkh5OHQyeXRMWU5Pbmp5ekR1VFExV3MzTU5oWW1mUHo4UEI4eE9jT2dBQWk2TkR0TzNjLy92emxDd01qSXlORGdML1BhMTVlM3VzZ1IwSXNadjJXbDUxdUQ1VDZqYytCeUFDa2w0K1g5NnFmcitmZm03ZnZNRDk5OXB6aDlKbnoxeDBkYlBHR0trQUE0YzFNdjMvL1p0cDM0QkNZcmFnZ3o2Q2tJQi9CenM3MkhTYlB3Y0grbTUrUDk2NEFQLzlEVGc2TzM4UVdPZXpzN0YrQTZkTk5Xa29Tek4rOWR6K3dPdjZEMXkwQUFjU0V2eTcvdy9iNHlWTXcyOVRZa0lHVGsvTUp1bU5ZV1ZsSkxoT0JSZHQvRGs2T0o3ckFwQVFDRHg4OVp2ajk1dzh6UGowQUFZVFhvY0RpaEIxVUhJRWRhbXAwR09pb2I5U3F1MEZtNldoci9nT3hQMy81Q3JLTEE1OTZnQURDNjlCLy8vOHp3Mm9mS1FtSmNtclUyVEFBS2xkbHBLVm1RQUxrRDhQL2YvL3h1Z1VnZ0lndThJSDFIdFZDRXg3OUhCeG5JUTc5UjFBOVFBQVJkQ2dURXhNNHh3TnJrVnhxTjkyZVAzL1JBVWtHTEF6QWVNT2JSZ0VDQ0s5REdSa1kvL0x5OElEWkowK2RUYWFtSTBHTjd2TVhMb21DMk1CeUdXd1hQdlVBQVlUZm9jQTZFbGlRZzlrblRwMEJGLzdVY3VqZmYzK1pUcDA1QjJZcktTb3dNREl4NG8xL2dBQml3cDh1V2I1Wm1wdUMyWStBUmNpRGh3L2JxZVhRNjlkdjducis0Z1dZYldkanhjREN6UElEbjNxQUFNTHJVR0M3OGErWmlYRTVzRUJuK1BYN044TzhCVXRpUU8xSlNoMEphcHpNWGJCWUV4ajlES0lpd2d5Z2hqV3dldjJEVHc5QUFERVJLT3YrQ1FqeWIzVjFkZ0R6TDF5NnduRHMyTW5IbERwMDk1NzlEMi9mdVFmT3BKN3VyZ3pBZkhBSlZBcmcwd01RUUFSelBRYzd4MGN2RDlkd2FXbElkVGR6emdJR1lOcTZTSzRqZ2EybGh3dVhyQUN6VlZXVUdKd2M3WUpBVlNvaGZRQUJSTkNob0VLZWw1Zm5VbEo4ekE5UlVSR0dEeDgvTXJTMDk0anUzTDN2R2FtT0JMYkNudlZNbU1MNjlldFhCZ2x4TVliNDJLZ253QmJYVldJcUVvQUFJcXJoRENwS1BuLytMSFB1d3FXVE0yYk5Zd0QyNFJtQTlUdURnWjRPUXl5d2xhK3BvWWEzNkxweTlmbzZZUHZUNHNxMTZ3eWdCak93TzgyUUdCZjFWMDlYMjVTWGgvY2xvV2dIQVlBQUlycHpCMnBKQVIwbzkvRGg0Mld6NXkxU3VQL2dJVFRFMlJoVWxCWEJmU05nM1gxWVFVNDJEVlQxUG5qd2FPSGxxOWVNZ2VVdnd3T2dXbEJtQkFFVlpTV0c1SVNZTy9KeXNuSEFtSG9FeWdmRTJBOFFRQ1QxUWtHT0JYWkx4SUMxVk1YSjAyZkQ5dTQ3eVBEeTFXdG9tY3VJVlEvTWZGQlVPOWpiTUZoYm1zOFZGUkdaQ296eVY2Q0dOTEYyQXdRUXlkMWxVREw0OGZNSHo1Y3ZYN1hmdkgxYmVQSFNGZHR6d0x6MURGZ21mdnYyamVIbnoxL3drQWIyaFJoQWJVNVRFME5nRWFSNVdGaFlxQitVSm9FWjlBc3gwWTBNQUFLSTdKRVNVQzMxOCtkUG51L2Z2OHQvKy83ZERCamE4c0RHaFFqUVBEWm9DUDlpWm1aNkEzVHdMV0NqK2lLd0xmc1FsTHZKYllFQkJCQWpwVVBqb09RQTdMTXpnOXFUb0tZYXJIRUJxcnRCMVNJdzAvMEFkZXBJaVdac0FDQ0FHSWZLR0Q1QUFBMlo4VkdBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQURBTnA1bG40Tk5MZlpBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3J4bi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUVEVWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1JDcjhPalJvLzgzYjk3TThPYk5Hd1kvUHo4UVpxU25Rd0VDaUFGVTRCT0RrNU9ULzkrNGNlUC9vMGVQL29QWVg3OSsvVStzWG1wZ2dBQWlLZXFGaFlVWlpHVmxHUTBORFJuT256OVAxd0FGQ0NDaUhZcnNPQU1EQTRZTEZ5N1ExYUVBQVVTMFEwR09PM2JzR0lxanYzMzdScmVHQWtBQWtSU2liOSsrQldXbS8xeGNYT0RvQjJZd3VvVW9RQUFSN1ZDWTQ1Q2pIeGJDOUFBQUFVUlNaa0tQL3NlUEg0TkRtQmk5bHk1ZG9paVpBQVFRU1E0Rk9vNFJQZnFKemYwN2QrNWtlUGZ1SGRtT0JRZ2drbXNta09QMjd0MExabHRaV1pFVS9SMGRIUXoveVd5cEF3UVF5UTRGUlQ4c0ZKRkRtQmk5d0JCbDJMQmhBMWtoQ2hCQVJGV2hvT29UNUNBWStQanhJOFBpeFl2LzM3dDNqK0hYcjE4TTgrZlBaMUJYVjhmcldKaityVnUzTXBpYm0vK1hrcElpcVFvR0NDQkdZbUtpdTd2Ny84MmJONm1XZzBWRVJFREpnQ1NIQWdRUVVTSHE1dVlHQ2dVNC85eTVjd3dnaDBkR1JvTDVpeFl0WWdnS0NtTGc0ZUhCcXYvdjM3L2d6QVJxMElBQXNLSUFWeGFnREVtc1F3RUNpQ2lINnV2cm94aG9aMmZIVUZGUjhmL256NThNMzc5L0I1V3hEQTRPRGd6NExENXo1c3gvbUVOOWZYMFpTSEVrQ0FBRUVObnQwZXpzYkFaUXMyL1RwazNnRUZxNWNpVlJWU293TFRPNHVycVMzRVFFQ0NDeUhRcHM3b0ZEc3JTMGxHSFNwRW5nYUFVNWxoQ0lpb29peXo2QUFHSWgxNkd3MWhNb1JHSHBEbFJzSlNZbTR0UVRHQmpJSUMwdFRWYURHeUNBU0hZb0tIcEJJUWZLVENESHdkSWRjZ2tCQ21sUWVXdHRiYzJJbk5QZDNkM0pMaWtBQW9pUjFJb0NXR2IraDNWSGNBR1FQQ2o5Z2hyYW9MUU15ampBalBlZm5aMmQ3TzRMUUFDUjNDVm9hR2o0ZitUSWtmK3ZYNy9HMnhVQmRWWG16WnYzSDZTZUdsMFJnQUFpT1RPQldreWdtcWlwcVFsdkxnZUZZbmg0T0R3V0tLMGtBQUtJckZ3UDdEZUJHeWNnQnhOcXc0SktCVkFtQXptV2toNEJRQUNSbkVaVFVsTEFtUVhVRWdKbUhBWTVPVGtHVU1qaEs4QkJEcHc2ZFNvNE5rQWVsSkdSQWV0REtsc0pwbDJBQUNMWm9ZMk5qZjlCRm9LS0lWaW9na29BVUcwRHpPVjRIUXpVOXg4VXV0QVdGN3l4QXFvRWdPYmhkU3hBQUpIc1VHRFI5Qi9hc1dOd2NYRUJZNUREUWVVcHlNRWd4NE9LSnBEbHdDS0prWmppRGxnZE05VFYxZUZWRHhCQUpEc1VaREFveWtHT1EyNU1nOUl0TExQQnlsaFFFZ0dKUjBSRWdNY0RrTTJBcVlQUndOb05yNmNBQW9pUjNLRnhZS2orQjlWT0lFdlFDMzFzelRwUW1Rb0NzT1lpTk1RWjFOVFVVQ29HWEFBZ2dCaXBNWVlQQ3lGUUtDS0hOQXh3Y25MQ013OG9oRWx0T1lFQVFBQXhEcFhKQm9BQUdqTERqZ0FCTkdRY0NoQkFROGFoQUFFMFpCd0tFR0FBc1lLOEdUQWhsWGNBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9yeG5tYXAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFER1VsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdRUVJRNU5TVW5oQldJV2VqZ1VJSUJZeUhRZ041Qmluak5uemlkNmhTaEFBREVPbGN3RUVFQkRKbzBDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBc1pDUjR4V0FWQUlCWlF1QUpjSURham9VSUlESUNWRUJJSzRIWW5zc2N2cFFPUUZHUmtZR2RFd0pBQWdnc29vbllLZ1dnQndLRExWQXNDRlFSeVFuSjY4SFVnZm56cDA3QWFZV0tMWWZTRG5nTU1vUmFNWUJZdXdFQ0NDU1F4VHFxQXZJb1lZVzJoZlF0Q3dFNGc5QXh6UENNSkJmQ0ZWM2dWaDdBUUtJNXBrSjZMQUZRT29CTUdTUlE5VWZpQnVCY2grSU5RY2dnT2lWNno4UUtZWVRBQVRRZ0JkUHhHWXlnQUFhTXVVb1FBQ1I2MUFISEZFSEtqdmpzWWdyWUluMmVGSXNCQWdna2gwS3pCUUcwTEt5RVlzMFNDd0FxQ1lBU1gwL05OY2pGME9KVUhVSnhOb0xFRUFrbGFQQThoTlUvTndIRlMvUTNJek5JeUJIemdkaVEyaElnc3BSUnpTSHdqeDhIcVFPS0FjdXB2QzVCU0NBU0ExUlVJRytBWmNqb2NYUkJsQVZDbFVMY2dESWdmbFkxRjJBaHV4K29LTVZDRmtNRUVCTUpJUm1QN1JBTHlTaTdDeUVwa09RSGxEdHBRQjBUQU9PTWhia3NmVkFlUUY4WmdJRUVCT1JqZ3lBTmtRQ1NTaWtRUTZFNlFPRlhENXkya1Z5YkNLVTJZL1BNSUFBWWlMQ2tRYlFOSmNJTkpUb0ZoSFVRNDVJRGdBNWFENDBiV0xVK2FDU0JOcUd3QW9BQWdodlpvSm1IbEJtMkFpMHVJR2NjZ3lhczBHT1ZRVGlBbWl4WklnZU0xQVBnT3dLeE5aUUFRZ2dRaUVLSzFvYXlDeHZVZEloMUp3RDBJeUdMWE9CMHZaNmFKc1gzQjJIeVFNRUVBdWUwSXlHRnV5R1ZLaFlDcUc1dXgrSmphOWNWSUJXSHZENkZTQ0FNS0llNkVCUWYvMHZrRjRENUFxRDJwZFVxZ1ZCaldvQllNZzU0bElBY3dzb3lRSGRnSkkwQUFJSVc5U0x3dHdNU3B0VXJLNUJIazRFT1FZWGhnR1FJNEdPRlVMV0RCQkFXRFVBbzRVTG40RURnUUVDQ0ZkbUVoL0lsaEl3TkxuUXhRQUNDS2NQZ0tFcU5aaENGQ0NBOEVvQ0hjczJXQndLRUVDRXl0RS93R2hnWkJnRUFDQ0Foc3hvSGtBQURabXVDRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFR0FCMisybG95ZzluTmdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvcnhubWFwMi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUVMMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1FRQzZVR3BLU2tpQU9wdjNQbnpuMkRMa2ZOWkFVUVFJemtHQVowSER1UVlnVTY3Z3MrZGRSMEtFQUFnUTBqQlNjbkozUFJ5bXg4R0NDQVNIRWdCNjBEQVI4R0NDQmlIY2xPeTlnQ21zOUlTQTFBQU5ITWtkVDJERUFBc1JESU5NekFEUE1UNk5oK0lMY0FpRDhBY1NGUWJBRzlpeWVBQU1KYmpnSWQ5QmZvU0FjZ013Q0lGWUU0RVlqckI2SWNCUWdnWXNyUkQxQkhQd0JTRDRBT253L0VCa0QrQldJc0FLcFZBRklLV0tRZVFNMGtDZ0FFRU1HYUNlWWdhTWlDd0FZZ2ppY2hNRUN4c1I4YUV6QzhIeXBPTkFBSUlHS3JVR1RIVFNURkVxQkhKMENaZ1VDMkl5aU5RME56QWlrT0JRZ2dZaDI2RU9ZNHBCQTJJTUdlQTBBTVV5OEFjaWlwYVJRZ2dKaUlEQldRNHo0QUhSZEFadlRqcnNNWkdYRmlZS2tqQWxNSEVFQ2t0SjVBb2VxUHhFNGdRYThBQVQ0dXdBeGpBQVFRL3RvQUxmY0M4WHNrL24ya0VNYVg2eDJROVVIRjNpTmxUcUlxQklBQVlpSWhVOENLSitUbzl5ZWlhRm9QelVESUFNUmZENVVuQ2dBRUVLa05aL1RvRDhEalNBR29JeGVnMTJSUS9nS29QRkVBSUlCSWRTZ29GQk5Bam9CbXNBZDRvcjhmNnFoQ0hERlVDUFhRZkdJc0JnZ2draHdLamY0TFNDRzVFRnYwQXkxUGdLcHhKR0FrU0Q0QXFoNHZBQWdnY3ZwTXlJN2JnQjc5MFBJVkZFcU9RSTk5SU9CeGtId2dLUFFKbGNzQUFVU09RemRBUTZFQUdyM29kZjU2YUF2ckFwR3hCS29NR2dtbFY0QUF3dHRuQWhXNk9ESktBalRVWUdBQ1Vwb0QxZU1PNUFRQTBJeEFYUDB1Z0FBaTE2SHpvWVYySXBRR2hjWkNVdXR2WXN0UkVBQUlJSEw3OVE3UXB0dDZhTWdLRUNwVHlRSEFBQkdFc1FFQ2lJVkVqUWJRWmhxMmdocFVjNTJITmpoQW9idUJHZ0VLWXdBRUVFbFJEMDEvQjZHRitBTXNCYndCMUJQOTBEU1hTSTFvQndHQUFHSWlJOG8zNENwcVFEa1lXdXVBdWkwR3hCYm1PR0pQQkprUEVFQk1KR2lFNWVUejBCWTZvZktSNk1JY0c1Z3padzdLRUJGQUFKR1RtU1pBMjZZTlJEcTJIMXJta2hLYVV1aGlBQUZFZEJxRlpxVHowTlo2SVRSVUp3SWQxRUJFQnV5SHBsMlEzb2RRR3R4eFJLOFlRQ015d05EOGdXNE9RQURoZFNpd2hjMElOT2cva2lFd3RpRzBkem9mNm9CR2FPYjVRTURCb09wV0hxblVNRUFmSndDcTR3WTY5Q3U2Zm9BQUlqaWFCM1FzRTlDZ2YwaTVIbFluZ3kyQXBzRjhxT1Vib0tYQ0FXSzZ3bERIN3dlcUZZVHl4WUNPZklWTkxVQUFFVFhzQ0hNczFPRDFTQ0h5QVJxTkY2RjhmV2pKSUFDVkEwVnJJcktqb1dhQTlOdkRxbHFndkNGUVhBTG95QmU0M0FBUVFFU1Bqd0lkeXdJMDhBOVNYVzhQalVwQy9aOExVRWZEQmlJZVFERW81RThCOFQ0Z0JxVkx2QzB0Z0FBaWVTQVhTeVVnZ0pRY0hMQ01zbHpBazNIa2dBNThSSXk5QUFGRTFsZ2wwQUpXQ3V0d0NTRG1KTVZPZ0FDaWVJQVZhQ0V2c1RVTkVJdVRhdzlBQURFT2xYa21nQUFhTXRNM0FBRUdBRGd1aTdaNEVNblBBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3NhdmUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDbmtsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JCREpEazFKU1dGaFpHUmtvQVFEelNEWlhvQUFZZ0RsZW1Kd2NuSXlNN1ZEQ1dnbUU3SDJBd1FRc1k3a3BGV1VnZ0tBR0RjQUJCQXhqdVNqZGZvRDJzRkt5QjBBQVRUZ2ppVFdzUUFCaE0rUmt2VE8yVUE3dVhHNUJ5Q0FjRG1TZDZDS0lhRGRITmpjQkJCQUxMUW9YNEdXT2VDUmZqQjM3dHdIdUNTQmNqL216Sm1ESVE0UVFJem9qUkpnR1NjTlZQeVVBa2Z1QjFJT0JKUTVBdTA0Z01jTVFhQmozeU9MQVFRUXRoRDlTMkhzZ1J3WkNIVElCaHlPT0E5VmN3QlBxTDVIRDFXQUFHSkJDMDArb0tJWE9DeG9BRkwyUkRyMkFBRzVmS0I1SUxNK0FPMEx4RkVEY2dFZCt3M0dCd2dnOUJBRjVmUlBPQ3lvQitJRlFQeVFnQ01QQWkzL2dFZCtJeEIvaEprSlNzODRrZ0dva29FN0ZDQ0EwSE83SXA1MDg1OUFKaUVuUGVNMUU5bHRBQUhFaEpZMjdnL1cxaE5BQUEyWlpoNUFBQTBaaHdJRUVBc05hcGIveEpTVnBBS0FBQm95SVFvUVFFUEdvUUFCTkdRY0NoQkFUR2pwUzVITWRMa2VqMXdDTmNwZmdBQkNEMUUyTXMwSkFEcG1QalpIQXFuNVpIcGVHSmtQRUVEb3VmNDVCWjRHaFJ3eVB4NGtSb0Y1MzVFNUFBR0VFcUxBUnNBbm9HVVNaQmlhQ0hNc3NzT2g5QUp5aWlua0Jna0lBQVFRdHN4RWNyY1k2SkFGU0k1RmFTa0I1UkxKaUhaQmRER0FBR0xDNHBPblFJWDhaRHAyQXBMUUJWQzdsSnc0UjI4MGd3QkFBT0dxbWY1aEVRTTEzZVlEUGZHQUJEdlhvNlZiWkNDQVpDNUtud2xJL1VCWERCQkFMRGg4OUJuVU5nV0dFbkxtTWlReWN4d2t3U09OUURzdUlQZENnWFoveGFZUUlJQ0dUTDhlSUlDR3pFZ0pRQUFObWJFbmdBQWFNcU41QUFGRXRFT1JITXhDVHdmQ01FQUFNUTZWV1JHQUFCb3l6VHlBQUJveURnVUlvQ0hqVUlBQUF3Q3F1T3pYcWdkWHpBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3NlbGVjdC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJtMGxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBTVlES1VYdzRPVG1aY2FEZEFNSUFBY1JJcU1CblpHU2tXNERoQXdBQk5HU2lIaUNBV0VoUkRFd0cxSzV2RDh5ZE85ZVJHSVVBQVRSa1FoUWdnRmpJMU9jSURJa0Q1Rm9LakprR0lGVlBpaDZBQUJveUlRb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJRRHRVblZRTkFBTkhkb2NBeU5BRklCWkNxRHlDQUJpSkU0OG5SQkJCQVRIUU9UUVVnNVVDT1hvQUFvbmVJNXBPckVTQ0E2TzNRQUhJMUFnUVF1WTBTQTJBMGtxd0hpQlhJZFNoQUFKSFV3cWRCZXhRRUJJRXRzUStFM0FFUVFJT2h3RThnUmhGQUFOR2x6NFRVL3J3QXhJbEEvQURLTHdDeGdTR3FTTWdkQUFIRVFxZFFBNVdkalVBSE5TQ0pGUUk5c0JGSXp3ZlNvQ0lMYjBNY0lJQm9IdlhRc2pNUXpaRmdBTzBsR0lJNm9ZVE1BUWdneHFFeVBnb1FRRU9tOVFRUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RUUVQR29RQUJOR1FjQ2hCZ0FLVWRlZmhPallPcUFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvc2VsZWN0YWxsLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ3pFbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFVZXhRUmtaR0RKeVNrdEtBVFJ3ZGt3SUFBb2pxSVpxY25Kd0FwUEtCdEFBMXpRVUlJRnBFZlR3UWd4d1pRRTFEQVFLSWlkTG9SZ3ROQlNCbEFNU0ZvRkNscGtNQkFvamFJUXB5M0FZZ1hnREVDa0NIRzFETFlJQUFvclpEUWVsejR0eTVjejlBSFV5MVVBVUlJQ1lxWjZJSFFFZGVnQXBOQktWVGFtVXFnQUJpb25JbW1nampRQjM4Z0ZxWkNpQ0FtS2dVbXJCTXRBRk5haUsxb2g4Z2dKaW9tWW1nYVJNWmJLQldwZ0lJSUNacVppSjBRV3BtS29BQVlxSkJKbUxBRXYwVVp5cUFBR0tpZGliQ0VxcFV5VlFBQWNSRW8wekVRTzFNQlJCQUxOVE1STkRvclllR1hpSlEvQUJTcHVvSFpTbzhTUVF2QUFnZ0ptcGxJcUFqSElEVWVXZ0lOd0x4ZXFBWXlIRUMxTWhVQUFIRVNFNi9IdFFZZ1RYbmdOZ1JHb29nZmlQUVVST1FRbmMrMU9HSlFBeHk3SDRnVm9URkFDbDJBd1FRQzRXWjZBSTBGRUdaeFJEb2dBZG9SVk1nME1HZ1pMQWUybEQ1QUUwV0MwaTFEQ0NBeUFwUllBc2VsSW51UXkyR2h5S2VUQWNMWFpBakx3RFZHNUlhb2dBQlJLNUQrMkZSaWh5S1JKUVNBVkFITzRJeUZTbDJBd1FRMkZla1lxaUY1QlpwQXRDTVI1S2RBQUZFZG1haUJpREZib0FBb3FnY2hSYjQ2NkhKWUFJd09ndHhWTEh6b2VuWmtkeHlGQ0NBbUNod3BBRlN1YmtBbXlPaHVYOEJ0SGdDWmFqOTVDWWJnQUFpTnpNWlFNdEVBV2hJSWRmMW9BYktBbWc2ZEVBUzk0ZDZpZ0dhQ1JlUVlqZEFBSkViOWV1aGptU0EwdlZJY2dlZzVhUURtamd5bUEvMHlBRm8rVXNVQUFnZ2NoMGFpQzlFa1J6TWdDVkVRZW9MUWNYYW5EbHppTFlRSUlBb3FVSU5vQ0dyQUUyamlRVGFyQmdaaWhTN0FRS0k3TXdFdGN3UVdvMG1nQm9nT0J4WmdPUkllM0ljQ1FJQUFjUTRWQ1liQUFKb3lBdzdBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFnQUVBQ3pSRkovaU1GK2dBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9zZWxmcmFnLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ0kwbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUJSNUZCR1JrYXNPQ1VsUlFDWEhBaVRBd0FDaUlrU1IySUR5Y25KQ2tCcVBUbDY4UUdBQUdLaXBpT2hJQUdJSGFBT3Bob0FDQ0JhcE5GNElMNEF4UG5VTkJRZ2dLanFVR0FvQmtDWmlkQ1FwUm9BQ0NBbUdvVG14TGx6NTRKQzlBSFE0VlJ6TEVBQU1WRXhORUZwRWhTaUM2QkNFNkVPcHdvQUNDQnFoaWdvOUJZQVEvTURsTDhCaUEyb2xha0FBb2lKeXRHK0VNYUJPbmdEdFRJVlFBQXhVVE1UQVIxM0FFMXFJclV5RlVBQU1WRXpFNkVMVWpOVEFRUVFFdzB5RVFPV1VLVTRVd0VFRUJNTk1oRTZvRXFtQWdnZ0ptcG5JaXpSVDVWTUJSQkFUTlRPUkVBeEFTQjJvSGFtQWdnZ0ptcG1JcWdEendQeGZpQjdQY2pSMU1wVUFBSEVSSTFNQkEzRmZtanpEdVJ3UWFpeSswajFQMFdaQ2lDQUdNa1owZ0UxODRBT2FBQXk1YUhwY3o0b3hFQ05FV0RvUFVCTEdpQTVVTklvaElhMklVZ05xZllDQkJBVGhkRnVBQXRGb09XT3lJNkVSamtvRXlsQ3VTQkhmaUEzVXdFRUVGa2hDdXhxQkVBZGVBQTlGQWxrdlBsUUR3aVNhaTlBQUpIclVKQ0ZGNEVXVGlBeFhRdEFIYnR4enB3NUMwalJDeEJBRENDSGtvb3BMYnhCRGliVlRvQUFZaHdxNDZNQUFUUmsrdlVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCQmdBbEZ1TjhDOC83eEFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvc2VxLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFKdVNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCQkFEcUptSEQrTUR5Y25KQlVBc1FJdzlJSFVnOWVTNkJ5Q0F5QTVSb0tVSlFLb2Zpb2tCWUxWUWZTUURnQUJpSXRPUkRrQnFQcFNiQU9RM0VGQVBrb2M1Y0Q1VVAwa0FJSUNZeUhDa0FaQmFEK1VlZ05MMXVFSUtLQjRBa2tkVHZ4NXFEdEVBSUlDWVNIU2tBRFFrUWZRRklBNEU0Z1d3cUVXM0hNcUhoZndDcVBvTFVQM3ppVTNmSUFBUVFJeUVNa3hLU2dweXRQb0RNY2p5RDBDc09IZnUzQTlRQiswSFVnNVE4WWxJNnVPQldBRVVra0MxamtpZXZZL2syWTFJNmcvTW1UUG5BRFozQUFRUUN4R2VxY2NpbGdoekpCU0FRdW85MUhKczZnTmhESkErb0dNVG9jbkhBSXFSQVZhSEFnUVFNUTV0eEJLaW9EUjVBTW14c0p5UEhxTDVVTWVENUJPUlFoVG1HWXdReGVVSWdBQWlHUFdNakl6SWFRNFVqZWVobG04QU9qUVFXamJDSEJvSUZOdUFWanJzaDNJTGdYSVRnR0tna0F5QWVzb1FLUFlBdlJ6RkJnQUNpQ1NISW1XUTgwZ2g0SURzRUd5VkFwSkhrTldESEhrQlc0R1BEUUFFRU1rT1JTcnM1eU1KTFFCYW1vaW50SmlQVkk3QzB2Z0NYRFVUTmdBUVFHUTVGR281S0pSQW9YVUJhS2toRVVYYmVXajZuZ0JVWDRpdkNzVUdBQUtJWURtS1N5UFVNbEJHY3lTeUtBU3BheVRIa1NBQUVFQ01RMlhzQ1NDQWhrd3pEeUNBaG94REFRSm95RGdVSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNEQUFKdDY0WVBoTjFUdkFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvc2dyb3VwLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ3QwbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JCQUxMZ2xHUmthU0RFcE9UbFlBVWc1QXJBL0VDK2ZPblh1QkdIM0VWdUVBQVlUVm9Ta3BLU0JYL2lmZ01KQ2pESURZSHVwQUFhaFVJckdPSkFVQUJCQWpOaDhSQ2syZ0l4T0ExSHdzVWlCSExpREZBY1NHS0VBQU1XRUpUWFlpOU9sVHc1R2tBSUFBd25BbzBMS2ZST2h6UU9NL0FPSU50TXhNQUFIRWdoYWFRa0RxSFlGb0Y0Q21UUmo0QU1TZ2pMUWZLT2NJOU9nSExHa1pyaGFVZm9GaUlQMEJRTHdBNmttQ0FDQ0EwRE1UTVZrZDJaR0pRQXpLT1B1aDRuREhRdE54UDFJbWd6a2M1akNRNXc0UTYxQ0FBR0pCaS9hM0pFUTdQRTJDSElmbTJJbEltUTBVd28xUU9oL05vMFFEZ0FBaXA4QzNSODg0ME9MSUVlb1lBN1FTQWFSMkFrZzlFQnVTbTVZQkFvZ2NoelppeTkxb2pzVUhFb2xRZ3dFQUFvaGtod0lkZEFDUDNBV29RNURCZkdoNmhhbjVBTTFFSkFHQUFLSkZYWStlT1FTZ2pqMlBWQUkwUWtPZjZCb01JSUJRYWlaUzYzYzhSZGg5YUs3R0JnNUFrODhCVW1vbWdBQ2lWZXNwRUU4NmRJQ1dEQW1rR0FnUVFFeG9JY0ZMRFZjaVpTeDhaZVI4dE1vQUx3QUlJQ1pxaHpDb3VRZDF3QU9nZ3hXUnlsQnNJSjlZY3dFQ0NNVmhjK2JNK1VpRkFFMkFGdjRCME5CdEFGSzRIQ3hBcktFQUFjU0VKVVNZcVpSTy9aR0xKS2lEaVNsbnNRS0FBTUp3S0RCVS8xTEpvUUhReGdkNjJyMkFweWpEQ1FBQ2lBbEhPbU9ra21QM0l6c1d5a2JPUUJPSk5RZ2dnQmh4bFdQa2xxbEF4NENpdUI1TDJZbmVqZ1czRjRndFJ3RUNpQVZmRjRIQ0NnQ1VlZVNobWNvQnFTVUZjdlJFZkZVeE5nQVFRSXhEWlNBWElJQ0dUTDhlSUlDR2pFTUJBbWpJT0JRZ2dJYU1Rd0VDYU1nNEZDQ0Fob3hEQVFKb3lEZ1VJSUNHakVNQkFnd0F4OHJSdlU2RXhBTUFBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3NpbmdsZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBRlNTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQ3hrS09Ka1pHUlpEM0p5Y2tHUUtvZmlBUG56Sm56Z1ZUOUFBRkVseENGT25JL0VEdEFIVXN5QUFnZ0pqbzZVZ0NJTHdCeElUbm1BQVFRRTUwZDZUaDM3dHdQNUpnRkVFQk1ROEdSSUFBUVFFeER3WkVnQUJCQVRFUEJrU0FBRUVCTVE4R1JJQUFRUUV4RHdaRWdBQkJBVEVQQmtTQUFFRUJNUThHUklBQVFRRXhEd1pFZ0FCQkFURVBCa1NBQUVFQk1ROEdSSUFBUVFPU0dhRHc5SFFrQ0FBSEVBQm9rSXhWRFE3VUFpQVhvWlNkQUFERU9sZEU4Z0FBYU1pMThnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQWFNZzRGQ0tBaDQxQ0FBQm95RGdVSW9DSGpVSUFBQXdDZUlLaG9HclRSSndBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvc3BlY3RydW0ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQU1BQUFDN0lFaGZBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUFNVUV4VVJUOUl6SDkvZi8vLy8vLy8vKzBONno4QUFBQUVkRkpPVS8vLy93QkFLcW4wQUFBQTdrbEVRVlI0Mm1KZ0poSUFCQkFEc1FvQkFvaG9oUUFCUkxSQ2dBQWlXaUZBQUJHdEVDQ0FpRllJRUVCRUt3UUlJS0lWQWdRUTBRb0JBb2hvaFFBQmhGRElpQlhBcFFFQ0NFa2hFeGFBVUFnUVFFUXJCQWdnb2hVQ0JCQU9oUXdZQ2dFQ2lHaUZBQUZFdEVLQUFDSmFJVUFBNFZUSWdLWVFJSUNRRlRMZ1V3Z1FRRVFyQkFnZ05JVU1jR1hvQ2dFQ2lHaUZBQUdFcVpBQnBwQUJSU0ZBQU9GVnlJQ2tFQ0NBaUZZSUVFQkVwMGVBQUNJNmhRTUVFTkVLQVFLSWFJVUFBVVMwUW9BQUlsb2hRQUFSclJBZ2dJaFdDQkJBUkNzRUNDQ2lGUUlFRU5FS0FRS0lhSVVBQVVTMFFvQUFBd0JwcFJDbnlnSmRuZ0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC9zcG90LWJsb3dpbmdkb3duLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FNQUFBQzdJRWhmQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFNQVVFeFVSUUFBQVA3Ky9nVUZCUUlDQWdjSEIvLy8vd29LQ3ArZm4vdjcrNm1wcVNBZ0lBWUdCbmg0ZUFNREF3a0pDWmVYbHdRRUJCQVFFUGYzOTYrdnI0Q0FnTHU3dTQrUGp4NGVIaU1qSTliVzF2MzkvWU9EZzVHUmthQ2dvSW1KaVV4TVRDMHRMUXNMQ3dFQkFiZTN0OHJLeWhjWEY2dXJxMmRuWjVxYW1uNStmdC9mMzJ4c2JPM3Q3Yk96czZpb3FMYTJ0a2RIUjNCd2NDd3NMQklTRW9lSGh4OGZId0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdEaXR5d0FBQUEzZEZKT1UvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QVFXWjJMQUFBQmcwbEVRVlI0Mm1Jd0l4SUFCQkFEc1FvQkFvaG9oUUFCUkxSQ2dBQWlXaUZBQUJHdEVDQ0FpRllJRUVCRUt3UUlJS0lWQWdRUWhrSU9FWGt1VXdNZUlYUnhnQUJDVThqS3I4ajBId2lZMk1SWVVXVUFBZ2hOb2FiQWZ5aGcwa2FWQVFnZ1ZJV2l6UC9oZ0ZrWVJRb2dnRkFWY2lFcC9HK01JZ1VRUUNnS2RaaitJd05KWkRtQUFFSlJxTStMckk2RkUxa09JSUJRRkxLeklDc1VrRWFXQXdnZ0ZJWDgzQ2dteWlITEFRUVFpa0paRkRleXlDRExBUVFRaWtJOUZEZHlheURMQVFRUWlrSmxGRTh6b1hnR0lJQlFGR3FoS1B5dmdpd0hFRUNvQVk0YWppaXhEUkJBcUFxTmtOV0pvMGdCQkJDcVFoRTJoRG8rZFJRcGdBQkNTeFJJQmlxaEpncUFBRUpMWnFvSWhZS29DUklnZ05BVW1zQzl3OFNES2dNUVFHZ0twUVQ1b09yWTBESURRQUNoNXhrMWFJcGtaa2VUQUFnZ2pNd2x4Z3hVeXN4c2lDNE9FRUNZMlZWWDRmOS9DWFlNWVlBQXdwYXZPVGl3Q0FJRUVORUZBRUFBRWEwUUlJQ0lWZ2dRUUVRckJBZ2dvaFVDQkJEUkNnRUNpR2lGQUFFR0FEUHY2NkVlZmZwckFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvc3BvdC1ibG93aW5ndXAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQU1BQUFDN0lFaGZBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQU1BVUV4VVJRQUFBUDcrL2dVRkJRWUdCdi8vL3drSkNRTURBNmVucHdRRUJQZjM5eGdZR0JjWEYvdjcreVltSmdnSUNDY25Kd3dNRENVbEpRRUJBVEl5TWdJQ0FpSWlJdjM5L1Z4Y1hQUHo4M0p5Y25oNGVCQVFFRGMzTjNGeGNZYUdoak16TTlMUzBwT1RrMWRYVitibTV2WDE5UmtaR1RVMU5WQlFVSVdGaFNzckswRkJRYSt2cjIxdGJiZTN0MkppWXRuWjJRY0hCMTFkWFFzTEN6MDlQUTRPRG1abVpwZVhsNk9qb3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSzhTQkxrQUFBQTVkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FEcXNaVUFBQUFHRlNVUkJWSGphWXJBZ0VnQUVFQU94Q2dFQ2lHaUZBQUZFdEVLQUFDSmFJVUFBRWEwUUlJQ0lWZ2dRUUVRckJBZ2diQW81c1NrRUNDQU1oV0tTclAvNVRIa3dGQUlFRUxwQ1RsSG0vLy8vTTR0aW1Bb1FRR2dLV1RSQjZvQXFlVm5RRkFJRUVKcENEYWIvRU1Ba2k2WVFJSUJRRmZJWS9ZY0JKaFZVaFFBQmhLclFuQTJoVUJGVklVQUFvU3JVRW9Fci9DK1BxaEFnZ0ZBVXNqQWgxUDBYRVVOUkNCQkFLQXAxa2RUOUYySkhVUWdRUUNnSzVWaVJGTEpLb1NnRUNDQVVoWG9HU0FyWjFGRVVBZ1FRaWtKaFpLdi9DNklvQkFnZ0ZJV3FLQXE1VVJRQ0JCQ0tRaTRVaGRJb0NnRUNDRVVoTjRyQy95Z0tBUUlJajRsc0tBb0JBZ2hGb1F3ZXp3QUVFSXBDSGVSd1pCWkhVUWdRUUNnSzJUbVFGREtab1NnRUNDRFV1QllXZ0tzVDRFZE51Z0FCaEpwNkpFeGdabkx3S2FPbUhvQUFRa3ZoK3NaQ0VCK3JLYUNsY0lBQXdzaUYyb2I4VEx4SzdCaTVFQ0NBaUM0QUFBS0lhSVVBQVVTMFFvQUFJbG9oUUFBUnJSQWdnSWhXQ0JCQVJDc0VDQ0NpRlFJRUdBQkFvUFVKVm5sQmRnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Nwb3QtY2lyY2xlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FNQUFBQzdJRWhmQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFNQVVFeFVSUUFBQUFRRUJQLy8vd3NMQ3ljbkp3SUNBZ01EQTZlbnB6MDlQUWdJQ0FVRkJUVTFOUXdNREplWGwrYm01aTh2THdFQkFXaG9hQWtKQ1JFUkVhdXJxL1B6OC9mMzk5L2YzeVltSnRMUzBnWUdCbUJnWUhGeGNhK3Zyd2NIQjF4Y1hERXhNUTRPRHRuWjJlM3Q3VzF0YlNVbEpiT3pzeGdZR0RJeU1sZFhWMTFkWFRjM04xOWZYMEpDUWdvS0NnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBbW1aZ0FBQUF3ZEZKT1UvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BR0tsMEhnQUFBRlFTVVJCVkhqYVl0QW5FZ0FFRUFPeENnRUNpR2lGQUFGRXRFS0FBQ0phSVVBQUVhMFFJSUNJVmdnUVFFUXJCQWdnb2hVQ0JCRFJDZ0VDaUdpRkFBRkV0RUtBQUNKYUlVQUFZU2hVRTFSUTU1Y1d3VkFJRUVCb0N2bDBXZG4rLy8vUEtzQWhqcVlRSUlCUUZZb0pNLzZIQUVabVpWU0ZBQUdFb3BDSm0vay9EREN6TUtFb0JBZ2dGSVhzYlA4UmdKRVhSU0ZBQUtFb2xORkRVaWluZzZJUUlJQlFGSEw4UndiOEtBb0JBZ2hGSVNlS1FsWVVoUUFCaEtKUUcwV2hLb3BDZ0FCQ1VhZ2loS1JPU2g1RklVQUFvZnFhRVVraEY2cXZBUUlJTlJ3MWVPRHFlTkRDRVNDQVVHTkdWQkVlTTV4OHFERURFRUJvY2EzRUlRQld4OFl0aVJiWEFBR0VrWHBrdFZpNEpEVFpNVklQUUFBUm5SNEJBb2hvaFFBQlJMUkNnQUFpV2lGQUFCR3RFQ0NBaUZZSUVFQkVLd1FJSUtJVkFnUVEwUW9CQW9ob2hRQUJSTFJDZ0FBaVdpRkFnQUVBb2RpQkZLbTlaRUlBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9zcG90LWNyZXNjZW50ZG93bi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBTUFBQUM3SUVoZkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBQ2xVRXhVUlFBQUFBSUNBcCtmbndvS0N2Ly8vOFBEdzR1TGkvMzkvZG5aMmRMUzBnY0hCd1lHQmdVRkJRTURBN3U3dS9Qejh3a0pDZTN0N1FnSUNBc0xDM2QzZDFWVlZTWW1KbloyZGxGUlVZbUppUTBORFRVMU5XNXVibVJrWkhCd2NJZUhoL2YzOTdlM3R6RXhNVjlmWDBSRVJJMk5qYSt2cnlBZ0lLT2pvNysvditibTVueDhmQ3NySzdPenM4Zkh4MnBxYW9DQWdLdXJxMTFkWFVORFF4UVVGQVFFQlAvLy8zMUoxY3NBQUFBM2RGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FRV1oyTEFBQUJnVWxFUVZSNDJtSXdJeElBQkJBRHNRb0JBb2hvaFFBQlJMUkNnQUFpV2lGQUFCR3RFQ0NBaUZZSUVFQkVLd1FJSUtJVkFnUVEwUW9CQW9ob2hRQUJSTFJDZ0FCQ1Vjakpoc3hUMVVUbUFRUVFpa0ltQmhZa0hyTUJzaHhBQUtFcDVFQncrQmxRekFjSUlEU0ZoZ2dPSHdNVHNoeEFBS0VvMUdDUVEzQzBVUlVDQkJDS1FsWUdIa0VZVzBHWVFSZFpEaUNBVUJUeU16QWF3ZGo2ak1nT05qTURDQ0RVY0dSZzRKVUZlNXhGaHBHQmdSMVpDaUNBVUJXcU16RHdpTW16c3JMcGNETXdDS05JQVFRUXFrSUpvRGtNUURWY1FJckJHRVVLSUlCUUZVcUNWVUNBZ0RpS0ZFQUFvU3BrWlVBQ2lpaFNBQUdFbGloTUVPcWtXRkJrQUFJSVRhR0lFRXdkc3pLcURFQUFvU25VWW9TYnlJa3FBeEJBNk9sUlZBQnFvQXFhQkVBQW9Tc1VaQVpienMzRmdTWUJFRUFZS1p5UDBSUVlQNHhxNk9JQUFZU1pGVGlsR1JpVTlEQ0VBUUlJVzU1aFo4Y2lDQkJBUkdjdWdBQWlXaUZBQUJHdEVDQ0FpRllJRUVCRUt3UUlJS0lWQWdRUTBRb0JBb2hvaFFBQkJnQ2VQakdocENRK2FnQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Nwb3QtY3Jlc2NlbnR1cC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBTUFBQUM3SUVoZkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTUFVRXhVUlFBQUFQNysvZ1VGQlFJQ0FnWUdCdi8vL3hnWUdOTFMwZ1FFQkkrUGo2ZW5wd3NMQ3dNREEzaDRlQWtKQ2QvZjM0Q0FnQXdNREhSMGRGUlVWR1JrWkRjM053Y0hCeWNuSi9QejgyOXZiK3JxNmw1ZVh2MzkvVWRIUjR1TGkyQmdZQzh2TC9uNStUZzRPR3hzYk1mSHh6WTJOdTN0N2VibTVoa1pHVU5EUS9mMzk4ek16QThQRDM1K2ZsOWZYMEZCUVQwOVBSOGZIN3U3dXhNVEUxRlJVY1BEdzUrZm54MGRIUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHV2pvcGNBQUFBNWRGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQURxc1pVQUFBQUdEU1VSQlZIamFZckFnRWdBRUVBT3hDZ0VDaUdpRkFBRkV0RUtBQUNKYUlVQUFFYTBRSUlDSVZnZ1FRRVFyQkFnZ29oVUNCQkRSQ2dFQ0NKdENOV3dLQVFJSVF5R3JnT0IvUVY1V0RJVUFBWVN1a0ZXZjZmLy8vMHlpR0NvQkFnaGRvU1JJM2YvL0xIcm9DZ0VDQ0UyaE92Ti9LR0JIVXdnUVFHZ0toYm1oNnJnMTBSUUNCQkNhUWlhWWdmK1pwVkJsQUFJSVZhRVpCMXdoQ3llcVFvQUFRbFVveXdOWCtGOFZWU0ZBQUtFcTVFYW8rOCtFR2tJQUFZU2lrQitrZ0lQbHZ4allxU29vQ2dFQ0NFVWhGL04vWm1aNUxuWXVaV2FlL3p5b2pnUUlJQlNGQWl3c09rWmdscWt4QzRjUWlrS0FBRUpSS1BLZm1SL0tsR0Q2YjRLaUVDQ0FVQlFhL0plR3M0WCtLNkFvQkFnZ0ZJV0dURnB3dGd3Zkc0cENnQUJDVWNnbWpzUlJRbFVJRUVBb0NqV0VrUjNNaDZJUUlJQlFGSnJ6SW5Iay9xTW9CQWdnRklXYzJrZ2NkbDBVaFFBQlJIVG1BZ2dnb2hVQ0JCRFJDZ0VDaUdpRkFBRkV0RUtBQUNKYUlVQUFFYTBRSUlDSVZnZ1FRRVFyQkFnZ29oVUNCQmdBM2ZpTmJSRjh3cXdBQUFBQVNVVk9SSzVDWUlJPScsXHJcbid3OC9zcG90LWhhbGZlbGxpcHNlZG93bi5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBTUFBQUM3SUVoZkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTUFVRXhVUlFBQUFPM3Q3ZjcrL2dvS0NnSUNBZ2NIQndZR0JnVUZCUWtKQ1FRRUJOTFMwZ2dJQ09ibTV2UHo4NStmbi8zOS9aMmRuWTZPanVIaDRhK3ZyL2o0K0EwTkRUNCtQalUxTmNQRHc3ZTN0MTlmWC8vLy81V1ZsWGQzZDhmSHg3Mjl2YnU3dTRDQWdFUkVSREV4TVNBZ0lIeDhmQXNMQzB4TVRCUVVGTCsvdjY2dXJnTURBNk9qbzluWjJhV2xwY3ZMeTFWVlZZK1Bqd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIUmplYjRBQUFBemRGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FIR2V2WTRBQUFGbVNVUkJWSGphWWpBaUVnQUVFQU94Q2dFQ2lHaUZBQUZFdEVLQUFDSmFJVUFBRWEwUUlJQ0lWZ2dRUUVRckJBZ2dvaFVDQkJEUkNnRUNpR2lGQUFHRXFwQ1hFUW53b2tnQkJCQ0tRaTdtLzBpQVF4TlpEaUNBVUJUeXNTRXJaRmRFbGdNSUlCU0ZBdXpJQ2xrRmtlVUFBZ2hGb1I0bnNrSTJHV1E1Z0FCQ1VhanpIOFZxUG1RNWdBQkNVU2lQb3BCRkMxa09JSUJRRkFxaEtQeXZqeXdIRUVDbzRjaUJvcEFIV1FvZ2dGQVZxaUNyVTBPUkFnZ2dWSVhxckFoMW5HSW9VZ0FCaEtyUUVFa2hzeXFLRkVBQW9TcVVRTFphRWtVS0lJRFFVbzhHUXAyb05Jb01RQUNoS1pUbGh0c3NoU29ERUVCb0NubFk0Q1p5b2NvQUJCQjZ3aldBQmlXekVwb0VRQUNoSzJSa0Jsdk94cXFMSmdFUVFCaFpRWUVGbUlTMFdZVFJ4UUVDQ0RQUGNJbi8vNjhzaHlFTUVFRFlNaGMvUHhaQmdBQWlPaGNDQkJEUkNnRUNpR2lGQUFGRXRFS0FBQ0phSVVBQUVhMFFJSUNJVmdnUVFFUXJCQWd3QVA5MHdwSFl2NFRWQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC9zcG90LWhhbGZlbGxpcHNldXAucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQU1BQUFDN0lFaGZBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQU1BVUV4VVJRQUFBUDcrL3Q3ZTNnVUZCUUlDQXYvLy8vbjUrUVlHQmhrWkdWUlVWQmdZR0VGQlFRTURBNCtQandzTEN3d01EQWdJQ0JjWEZ3UUVCT2JtNWdrSkNSOGZIOGZIeDUrZm42ZW5wN3U3dS9mMzl3OFBEMUZSVVVORFF6YzNONENBZ0RJeU1uaDRlSUdCZ1c5dmIzTnpjKzN0N2RMUzBqWTJOa2RIUjE5ZlgyUmtaRUpDUWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTh3aHJvQUFBQXRkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUtYdkMvMEFBQUZrU1VSQlZIamFZdEFoRWdBRUVBT3hDZ0VDaUdpRkFBRkV0RUtBQUNKYUlVQUFFYTBRSUlDSVZnZ1FRRVFyQkFnZ29oVUNCQkRSQ2dFQ0NLdENWU3hpQUFHRXFaQlZudjgvdnlJcnVqQkFBR0VvWk9WbS92Ly9QN01jdWtxQUFNSlFxQXhTOS84L3V5YWFPRUFBb1NzVVp2a1BCV3FvRWdBQmhLNlFrdytxams4V1ZRSWdnTkFVTWpMRERQelBJb1VpQXhCQWFBckZoZUFLMlhsUlpBQUNDRTJoQmc5YzRYOTFGQm1BQUVKVnlNaUJVUGRmbWcxWkNpQ0FVQldLL1VjR2tzaFNBQUdFcWxDQ0JVa2RENG9qQVFJSVZhR1NDSkpDQVJWa0tZQUFRbFdveFk2a2tFVUdXUW9nZ0ZBVmFxTzRVUUZaQ2lDQVVCV0tvaWprUXBZQ0NDQlVoUndvQ2dXUnBRQUNDRlVoRjRwQ0FXUXBnQUJDVlNpSW92QS9zaFJBQUtFcTVFUlJ4NDBzQlJCQXFBclptSkFCU2hRQ0JCRFJ1UkFnZ0loV0NCQkFSQ3NFQ0NDaUZRSUVFTkVLQVFLSWFJVUFBVVMwUW9BQUlsb2hRQUFSclJBZ3dBRG5zcVQyQm9scFdBQUFBQUJKUlU1RXJrSmdnZz09JyxcclxuJ3c4L3Nwb3QtaGVsbGlwc2UucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQU1BQUFDN0lFaGZBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQU1BVUV4VVJRQUFBUDcrL2dNREF3WUdCdi8vL3drSkNRSUNBZ1VGQmF1cnF4Z1lHRUpDUW1Sa1pFTkRRL2YzOXdRRUJHNXVidTN0N1Y1ZVh2UHo4NStmbjN4OGZMT3pzOFBEd3pNek0xWldWbE5UVXlNakkzUjBkSStQanhjWEZ5UWtKRWRIUnd3TURISnljbVptWmtCQVFLK3ZyMGxKU1pPVGsvMzkvVUZCUVV4TVRJQ0FnRlZWVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSldHdU9ZQUFBQXRkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUtYdkMvMEFBQUZQU1VSQlZIamFZdEFoRWdBRUVBT3hDZ0VDaUdpRkFBRkV0RUtBQUNKYUlVQUFFYTBRSUlDSVZnZ1FRRVFyQkFnZ29oVUNCQkRSQ2dFQ2lHaUZBQUZFdEVLQUFDSmFJVUFBb1Nua1ZlUG1rdU9VMHVDV0VVSlRDQkJBS0FwVk5ObVkyZjZEQUJNekd3OEhpa0tBQUVKV3lNL0U5QjhCbUppVVdKQWtBUUlJb1pCRmt2MC9LbUNWUjFJSkVFQUloVnJNLzlFQnN5SkNJVUFBd1JVeUt2ekhCT3k4Y0lVQUFRUlhLUFlmR3hDRkt3UUlJTGhDWVd6cVdJWGhDZ0VDaUdnVEFRSUlybENkR1lzNkprU3dBd1FRd3RmU1dId3RpUEExUUFBaGhhTXFSamdxTXlJVUFnUVF2cGdSUkk0WmdBQkNpV3NPbnY5OFVHVjgvN2xRNHhvZ2dOQlNqNENJaERqbmYxbHhiUkVCdE5RREVFQkVwMGVBQUNKYUlVQUFFYTBRSUlDSVZnZ1FRRVFyQkFnZ29oVUNCQkRSQ2dFQ2lHaUZBQUZFdEVLQUFDSmFJVUFBRWEwUUlJQ0lWZ2dRWUFEcnVLNythalJ0blFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvc3BvdC12ZWxsaXBzZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBTUFBQUM3SUVoZkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBTUFVRXhVUlFBQUFQNysvZ29LQ2dnSUNBVUZCY1BEdzcrL3Z3UUVCUC8vL3dFQkFRSUNBaEFRRUFrSkNjek16RUZCUVFjSEI5bloyUXNMQzlMUzBqdzhQREl5TXQvZjN6OC9QKzN0N1FNREEvbjUrUTBORGN2THk0Q0FnTHk4dkVKQ1FxT2pvL2YzOTU2ZW5nd01ERGs1T1RVMU5WQlFVT2JtNXNiR3hwK2ZuN3U3dTYrdnI2eXNyQThQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCWVBXdFFBQUFBdWRGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0NDajNOVkFBQUJhRWxFUVZSNDJtTFFKUklBQkJBRHNRb0JBb2hvaFFBQlJMUkNnQUFpV2lGQUFCR3RFQ0NBaUZZSUVFQkVLd1FJSUtJVkFnUVEwUW9CQWdpTFFnNDJOZzVNVVlBQXdsQW9Mc2J5L3orTHNDaTZPRUFBb1N2azVSYjhEd1JLVEt4b0VnQUJoS1pRblovelB4aHdjbW1peWdBRUVKcENQcDcvVU1Bc2dpb0RFRUNvQ2dYK0l3RlV5d0VDQ0ZXaEtoTkNIWThZaWhSQUFLRXE1RVkya1I5RkNpQ0FVQlJLc2lNci9LK0dMQWNRUUNnS3BWSFUvWmRGbGdNSUlCU0YyaWdtTWlzaXl3RUVFSXBDRFdaa2hld3l5SElBQVlTaVVBdkZablo1WkRtQUFHTEFHWXhvQVFrUVFDZ0tHVkVWS2lETEFRUVFubkJrUVpFQ0NDQlVoWEpJTWNPa2dpSUZFRUNvQ29XUVRXUkRrUUlJSUtKVEQwQUFvU2tVWW9hbVJ5NHV0SlFMRUVBWUtWeEhDcVJPRUNPRkF3UVFacDRSWnBHUVlGSEd5RE1BQVVSMExnUUlJS0x6TlVBQUVhMFFJSUNJVmdnUVFFUXJCQWdnb2hVQ0JCRFJDZ0VDaUdpRkFBRUdBSXRWc1hmelNXd2VBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3N5bWJvbC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBTUFBQUR5SFRscEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBQlhVRXhVUlh4OGZIMTlmWXlNaklTRWhKeWNuUFgxOWRIUjBmLy8vNVNVbExTMHRLYW1wdjcrL3VEZzROTFMwb3VMaSszdDdlenM3UDM5L1p1Ym0rSGg0Y1BEdzdPenM1T1RrL3I2K3NMQ3dvV0ZoYWVucC9iMjl2Ly8vK04xNnUwQUFBQWRkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84QVdZYm5hZ0FBQWVoSlJFRlVlTnBpa0NFYUFBUVFBL0ZLQVFLSUJLVUFBVVNDVW9BQUlrRXBRQUNSb0JRZ2dFaFFDaEJBSkNnRkNDQVNsQUlFRUxwU2NUWWhCZ1pHQmdZT05uNTBwUUFCaEtxVWxZT0JrWmtOeUJBUVkyQmc1a0ZWQ2hCQUtFcDVnUVp5c0VQWW5FQzJGSXBTZ0FCQ1Zzb0dsR1htaHZHWWdPNWdRVllLRUVCSVN2a1pnRUFDenVVQnVwaEJCRWtwUUFBaEtXVUNLUldBYzlsQlhBWkJoRHhBQUNHVUNvT2wyQkZTWWlBK0o0SVBFRUFJcFZ4QWx6SXlJMW5JQlFvMEpBR0FBRUlvWlFZWndvZWtWSlFSMVFVQUFZUlFDalNERVVVcE1MaUFJcXh3UGtBQW9TaGxZR0JDVlFvVVFpZ0ZDQ0NFVWo2UXNaaEs0ZUVzQXhCQURDaStRUEdXRU1oRlNBSUFBWVFhV0l6SWtjZUJGZ2NBQVlRY0JVQlRHTVdSb3dERmZobUFBRUpTeWdveWhSZk9GV0JBNGNySUFBUVFzbzA4UUhPWTJKSHQ1MFJPTGdBQmhKSUlXZmtZR0lRZ1ljN09BalFUTmNFQ0JCQmNLUmNrSFhKQmcxWVVtQS9BREVSU0F3Z2d1RklXcUxOWUlTSXNFSVV5MG9pUUJnZ2doRklHS0dCa2h3WUhCQ0NVQWdRUXNsS29MRGg4SkJrWkdSbFE0dzhnZ0ZCTWhhZ0Z4enJNRGlSVEFRSUkxUUZndGFCY3pjMElzd09oRkNDQVNDZ3lBQUtJQktVQUFVU0NVb0FBSWtFcFFBQ1JvQlFnZ0VoUUNoQkFKQ2dGQ0NBU2xBSUVFQWxLQVFJTUFCWUVvalp5T0EyZEFBQUFBRWxGVGtTdVFtQ0MnLFxyXG4ndzgvdGVtcGxhdGUucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQWE0U1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVFWUno2OE9IRC8wZVBIdjMvOU9sVGxMTHUxcTFiLzNOeWN2N3I2T2o4QjdFcHNRTWdnQmhBNVNpNStQdjM3LytMaW9yK0N3b0svdWZpNHZvdktTbjVmOXUyYmY5QkRpOG9LUGd2SUNBQWRxU3NyT3ovcEtTay81VFlCUkJBRkRrME56Y1g3SmlPam83L2h3NGQraDhRRUFEbWk0bUovVmRSVWZuZjN0NysvOUdqUi84blQ1NzhuNE9ENC8vRml4ZkpkaXhBQUpIdHlGZXZYdjBYRmhiKzM5Zlg5Ly96NTgvZ1VEeDgrUEQvNE9EZy84M056Zit2WExrQ2R1VE5temZCV0Z0YiszOUVSQVRaRGdVSUlFWnlxOUN2WDcvK056WTJacENXbG1ab2FHaGdrSkNRWVBqNzl5OEREdzhQMk9Bdlg3NkErU0RBeDhmSHNIUG5Ub2JpNG1JR1lGcG0wTlhWWlNUVlBvQUFuTk94Q1FBd0NFVFJzM1pPdDNJVlJ4SzBWWkNRWkFPNzYvNXJibjBtWmlaVmhidERSQzc4QVNNQ21ZbVpBZEgzM04zZHFDcVkyYXAzQkJCSkRyMTkrL2IvR1RObS9ILzkralU0R214c2JCaUJmSVk3ZCs0d0FLT1pnWVdGQmV3NG1BTkJnSk9UaytIYXRXc01KU1VsRElHQmdRd2hJU0ZrT1JRZ2dGaUlVUVFxV3FaTW1jS3daTWtTY0dnZE8zYU1ZZnIwNmY5ZnZIakIwTmJXeGdETU9BeUtpb29NZi83OHdkQUx6RVFNcDA2ZFlnQm1NSWI1OCtlRCtHQmYvUGp4NC8rblQ1OUE0a1FsQTRBQXdodWk5KzdkKzUrWGwvZmZ4TVNFWWRldVhlQzAyTjNkemJCeTVVb0dNek16QnBENGpSczNHSUM1SHBRVTRHa1N1ZWdET1I1WWJJR1RDQ2pVUVFDVSt5MHRMUm4wOVBRWU1qSXkvb1BTT3lHSEFnUVEzc3lrcnE3Ky85dTNid3o1K2ZrTTN0N2VZTWVBMHR1RkN4Y1lUcDgrRFhhQXJhMHRBeTh2THdOSUhYS1V3eTJBaWdVRkJZRkRGZVRacXFvcUJpWW1Kb2J3OEhDR2xwWVdCbUJKd1FCTVFuaERGaUNBOERvVW1Fbituemx6aG1IejVzMWdoNEF5QThoaVVMcGpaV1VGT3hwWTZJTkREWnNqWWFFS1VnOEtlWkFEcjE2OXlpQW5KOGN3YytaTUJpc3JLNGE1YytjeTFOVFVNSnc3ZHc2VWhIQTZGaUNBOERvVWxEWkIwVnRYVndmMlBTaDl3aHdFTHR1UUhJZk94K2JZbno5L010eTllNWRCU2tvS1hHU0JQUHZ1M1RzR0J3Y0hodFdyVnpPNHU3dmpkQ2hBQU9GTm8ycHFhb3h4Y1hFTXMyYk5BaGMvek16TUdGRkt5SkV3dGNETUE2WTFOVFVaZ05VdE9EMkRNbU5YVnhjNEdRQ1RHZDQwQ2hCQUJJdW44dkp5Y05tNGZ2MTZjQnJGRmdQNEhJa01RRWtGRktvZ1I0TFM5Y1NKRThHWmRONjhlUXdLQ2dwNERRRUlJQ1lpeWs1d1NJS0tKSkRQcVFWQWpnWFZiQ0JnYUdoSVVEMUFBT0ZObzgrZlB3ZFhrd1lHQmd4bFpXWGd0QVd5QUZTd2d6SVFLSVFJdGN4d2hUYkkweUFNcWdTQUZRY29lZUVOVVlBQXdodEVvSVFQS3Y5QTBhK3NyQXkyR09UUUJ3OGV3QXR6ZkI3Rmx5UkE1b0F5V0ZwYUdzUHk1Y3RCdFJmZXNoUWdnUEE2RkJTQ0lNTkE1U1kvUHo4NHJTWWtKREQ0K2ZreFJFZEhnejBDa3NmbFdIakxCK2hnVVBvR21ZSHNPVkRSRmhvYUNzNWdQVDA5ZUdNSElJRHdPbFJKU1lreEppYUdvYlcxRlZ4OWdvb3BVSG02Y2VOR0JtQzdFOVFlQmZPUlN3TnNWU2dvaWtHTmtkbXpaNFBMVVZBTEM1U1pRUHFBRFcxd0ViVjc5MjY4RGdVSVFHZ2RFZ0VVaFVBVWRlQ0pRaDhVaFloQUVvWm0rd0g1elJOYjRNNks4M1RnV3RQZElTS0g0ZTQrVXc1RU1JWFdBSmdybkQvL1c4UlVGVlFWVXg3akFUQXpJZ0tadWY4SEVjSE1ucWorQkdDODNHa0FBRUlZcW9yZ0JDOUlaRVlDQ1RaNjVUWTJESkNHWDEvUDROcmQ0T2hYc1lrWjdvNnFRbVl1a2JOekE4d2lBbFVGblFmc0hQaVh3V1A4MGNYTUVCRW5tSDRDaUlYWTRnUllyOE56QmpDRC9hK3VyZ2JWWE9DaUJWYTFvalRMZ0NYRC9mdjNHWUFlQURlYWdlckFDb0JwRWVSNGNQVUpER21pRzlBQUFVUldDMy9hdEdtZ3podTRRUUhLREtCMGlweVVRQUNVL2tDTlpXRDNBNXpoZ0hvWWdDSExTRzY1Q3hCQVpKWGdvTG9aWkRrc1E4Q2lCNVJwUUhVNHNGY0tab015RXFqeEFWSUhLaVdBN1UreXU4d0FBVVNXUTdXMHRCZ2pJeVBCVlNBb05FSFJESElnaU42d1lRTkRSVVVGQTdBWHdBRE1LT0RLQWhTcUwxKytCUGVqeUFVQUFUZ3ZneG9BZ0JDRytjVFVYbWhEVHErY0JCd3NKS1ByMlVKbjVqYzVDVXV3N3NaUUdCZ3ZpTDkySnlJU0J3V1Fxa0thblMzMENTQ0srdlhBV3VXL3ZMejhmMnRyYTNDL0hWZ1pnSFA2MXExYi80dUtpb0lkRFN6by84Zkh4LzhITmhFcEdvQUFDQ0NLSEFvcUoxVlZWY0g5OWJObno2STRCTlNuQitiMi82Q1FwOFFPR0FZSUlNYWhNalFPRUVCRFpqUVBJSUNHakVNQkFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUlNQU4wZTFLdEh4R3hjQUFBQUFFbEZUa1N1UW1DQycsXHJcbid3OC90ZW1wbGF0ZXMucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUdGU1VSQlZIamFZdnovL3ovRFVBQUFBY1RFTUVRQVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRQ3pHS1RFeE1ZRXdGSUg1QVFMa0FsUDVBUUIzY3JETm56aEIwQTBBQUVSdWlJRU1QQVBGOXFPRUdPTlExUU9VZlFObllnQU5VL2o3VVRBVmlIQUFRUU1RNk5BR0k3YUZzZVJ5T0FGbFlEOFQ4VUZ5UHd4RU5VRE1Zb0dZbUVPTUFnQUFpSlVTUmdRR2VLQ2NrcGtDQWp4VUFCQkN4RGwyQXhwK0FSYzBGSUg2SXhIOElGV01nb0hjQ01RNEFDQ0FXSWgwS1NrdUtRQndBWlYvQUUvSUpPRHlIN0xBRDBMUzZnWWpNQ1FZQUFjUTRWQVlnQUFKb3lKU2pBQUUwWkJ3S0VFQkR4cUVBQVRSa0hBb1FRRVBHb1FBQk5HUWNDaEJBUThhaEFBRTBaQndLRUVCRHhxRUFBVFJrSEFvUVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RWUFEQjFpWDZYZnptSXdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvdGV4dC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBR3hTVVJCVkhqYVl2ei8vei9EVUFBQUFjVEVNRVFBUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1FRQ3ltS1UxSlM5Z01wQnlqM0F4QmZRT0tEd0FPb3VBR1NtT1BjdVhNUDRET1htSVlSUUFDUkU2SWZvSllMQXJFam10eENvSmdoa0JZRTRnWFVERkdBQUNMSG9ZR0VRZ2dvL3dHSUU2RWhUQlVBRUVBc3BJWW1JVWZDUUhKeWNnTFVvZkZBdGdNZXBRZWdHQzhBQ0NCU1EzUWlDV3Jqa1pKREE1Q3VoMko3S0IrVXZ2UFIwamhPQUJCQUpEbVUyTkJFU3NzNGt3bFFmQU5JbmxqREFBS0lsc1hUUmxCYUpjTGpSS1ZqZ0FDaW1VT0JqbGhBVFhVQUFUUmtDbnlBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQ2l5S0ZZYWh4N0hPb0VrTGdDNU5nRkVFQ01wQXpwTURJeXdpeFdnTllxQmpnSytvMndZZ2RhbFlJOG9JQ2s1Z0pVelFGaVcwOEFBY1E0Vk1hZUFBSm95S1JSZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJb0NIalVJQUFHaklPQlFpZ0llTlFnQUFhTWc0RkNLQWg0MUNBQUJveURnVUlvQ0hqVUlBQUdqSU9CUWlnSWVOUWdBQURBS3ZDWCtkeStjNElBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3RsYy5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQURMa2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBTEdRb2pnM04vZjYzNzkvNVgvLy92MFRKc2JJeU1nQUt6bVEyYmdBU0o2SmlZa2RDQjVPbmp4WmsxaTdBUUtJSklmKyt2VkxTRU5EZzlQQXdJQVQ2R0R5UW9hRmhlSFpzMmNNUjQ4ZUZTSkZIMEFBa2VUUVAwQ2dvS0RBNE9qb1NGRTAzcjkvbitIdzRjTi9TTkVERUVBa09SUVV0Y0JRWmZqMzd4OERNUHBSb2h3V3JUQTJqSThzRHdLc3JLd01uejkvQmtVL1NaNERDQ0FXVWtNRFpEbklrVDkvL2tSeElMWTBpczNSSUFCS05xUTZGQ0NBV0VoMUpNZ0NZRVlBWTNJQkJ3Y0gyTE9rQUlBQVlpSTE2cW5STmtCUElzUUFnQUFpdVJ3bDFRSnFtUUVRUUV5a2hzUkFBWUFBWXFJMENnOGVQTWl3WWNNR2NFNm1KUUFJSUlvYyt2TGxTNGFMRnk4eTNMaHhnK0h5NWNzMGRTaEFBREdSRTRwSUZRRERqeDgvd0RRSTB4SUFCQkJGbVVsS1NvckIwTkNRUVY1ZW5rRlhWeGVyK2pkdjNvQ1R4c09IRHlseUtFQUFzVkNTVzBGbHFvdUxDN3g4eFFiMjc5L1BjUFBtVFlaUG56NHhSRVJFTUxDeHNaR1ZLUUVDaU9SY2oyNEp5UEc0SEFsS0RpQUhnZ3A0VUdiNy92MDcyU0VLRUVCVWI0K0MyZ0V3ejRCYVNqbzZPbUF4WUt1TGdaK2ZuK3h5RkNDQVdDaEpvK2dBVkMyQ1NnQlFDQ29ySzRORDJ0emNuRUZhV3BwQlVsS1NvZ0FBQ0NDcWh1aVZLMWNZMXE5Zno3QjU4Mlp3Sm9JQkdSa1pCbVptWm9vcURvQUFvcWg0UWdmUG56OEhPd2hVWkwxLy81NnFWU2hBQUxGUUs5cEJRRTlQaitIcDA2Y01QRHc4NEtLTG1nQWdnRWh1NXVGekxDaUtmWHg4d0UxQVhsNWVxam9VSUlCWXFKM3JpY2swNUtSUmdBQWFrTllUS0IyVGFoWkFBTEdRYWdHb0cvSHQyemR3MzRrY0FPb3pmZjM2RlV5VEFnQUNpQ1NIZ3NwRmtFTkJ1UnJVWnlLblZ3QmlnenlKWEZ3UkF3QUNpQ1NIZ2dwMFVHRXVKQ1JFVWRTTGlJZ1E3VkVZQUFnZ1VrT1VCUlJ0Nzk2OUExc0VLd1h3OVVMUlN3cFFvd1RVamdXS2tXUTNRQUNScEJnWW11OU9uejdOZStiTW1aOFVGbWZzd0toL1I0cmRBQUhFT0ZSR25BRUNhTWlNNWdFRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFR0FDOE1EcEhrVVlWd1FBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvdGxjbnVtYmVyLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FNQUFBRHlIVGxwQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFDSFVFeFVSZi8vLzRpSWlEOC9QNDZPanFPam81MmRuVDQrUHB5Y25LU2twSWVIaDZLaW91RGc0SXFLaW8rUGo0eU1qSDUrZm4xOWZZdUxpMVpXVnBtWm1YcDZlcGFXbG9tSmljSEJ3VXhNVEpxYW1vT0RnM3g4ZkcxdGJVUkVSSTJOalpHUmtXeHNiSnVibTRhR2htQmdZS0dob1pDUWtIUjBkSitmbjZDZ29IZDNkMkZoWVlXRmhmLy8vMU5hR2N3QUFBQXRkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUtYdkMvMEFBQUczU1VSQlZIamFZdEFoR2dBRUVBUHhTZ0VDaUFTbEFBRkVnbEtBQUNKQktVQUFrYUFVSUlCSVVBb1FRQ1FvQlFnZ0VwUUNCQkIycFdLQ3ZMek16SExNek14OFBIQkJnQURDcmxTSkFRNGs0WUlBQVlSZEtTTkNLU3RjRUNDQUdGRHNCRm5KekNlSVhTbEFBTUdWYWlQYmlhU1VIYTRVSUlBWXNOb0o0b2hyeVhDaktBVUlJT3hLT1lFa201QXNFNG9EQUFJSXQxSlJCZ1VtRkZNQkFnaE5LYWNVRHpPekZMTUFpTTNHcEl5aUZDQ0FVSldLc0VtRGRZRGR5c0RDeG9Ic0FJQUFRbEhLeHNRa0FGUEt3c2JOd2NTQmJDcEFBS0VvNVdCZ2d5dGxFR0ppRWtIeEZrQUFvYm1WaVIrdUZDTUtBQUlJcnBRVG9sUWFYU25DQVFBQmhNMVViaGxOaEZKRnVGS0FBRUl6Rld3ZWs2d2FOZ2NBQkJCNkZJRDh6c1RBd3lmTXdpTE1vc0xDd2FVS1Z3b1FRRmlVZ24yUDRrb0lBQWdnZEFlQUtRazJiaXhLQVFJSXJwUkhnNE9GaFlXTEg2NFN5WlVRQUJCQURKanBuNE9KallsTkZOTlVnQUJpSUNhclFBQkFBT0ZSaW00cVFBQ2hLK1hFclJRZ2dOQ1Y4cWlEZmNmRnhjRWxqeVlGRUVBa2xDNEFBVVNDVW9BQUlrRXBRQUNSb0JRZ2dFaFFDaEJBSkNnRkNDQVNsQUlFRUFsS0FRSU1BTU9uNFltZHJBbGRBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3RsY3RlbXBsYXRlLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBQ3lVbEVRVlI0Mm1MOC8vOC93MUFBQUFIRXhEQkVBRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUN4a0tJNFB6Ly9uSUNBZ0RRakkrTWZFQjlQcmNieStmUG5wMzE5ZlViVWNpaEFBSkhrVUY1ZVhxbWNuQnd4SGg0ZWhuLy8vakVBSFF5WGd6a2FKalo3OW15cTFzMEFBVVNTUTRHTytNM0d4c2JBeXNySzhQZnZYNGFKRXlkQzBnOFRaZ3I2K3ZXclNIMTkvVk5xaFRCQUFKSGtVRkNvZ1VJTTVEQVFCb1ZxY25JeUE0NFFaZ1pTVXRRS1lZQUFZaUZWQTh5aElNRE16TXhBcnhBR0NDQ3lIQW9DMzc1OW8yc0lBd1FReVE0Rk9Ramt5TVdMRnpQOC92MGJid2hqOHlRTUE5WCtKc1ZlZ0FBaU9ZMkN3SjgvZnhpQVVRY1BVVndoakErQVFwd1VBQkJBVEtSR095aWsrUGo0R0tLaW9zQWhoeXVFOFdGWXFKSUNBQUtJaVp3UUJRRXBLU200WmJoQ0dGdjBrd3NBQW9pSm5JeUVEUENGOEtWTGw2am1VSUFBSWp0RWlRbGhrSU9Sd2ZmdjM4a09aWUFBb2loRUNZV3dvYUVoWFB6TGx5OE15NVl0WXpoLy9qeko2Uk1FQUFLSWhZR0tBRDJFa2NHdlg3OFlYcjE2eGZEcDB5ZXl6QVlJSUJaeUhJT3IxWVF0cEo0OGVRSk91MkppWWd5aG9hRmdtaHdBRUVDa05rckFVUWhLZzZCeWtGQlorT1BIRDRiMTY5Y3pDQXNMTTBSR1JqS29xS2d3RUdnZTRnUUFBVVJxZ2M4S2JPb3hjSE56Z3gwSnl1SDRRcGlGaFlWQlRrNE8xRHdrSzEwaUE0QUFJc21od0liRk0yQ3h3d2lzL3Y2QUhBck0xZUxBRUdiR0ZjSWdoL3I0K0ZEc1NCQUFDQ0NTSE5yZjM0L1MycW1wcVhrQkRDMXhmQ0VNcXYvSmpXNWtBQkJBRk9WNlFpR01yZlVQYlpDUTdIQ0FBS0xJb1lSQ0dEMGp3cXBZYUh1QWxSUzdBQUtJcXVVb2VnamphdWFCN0FVV1c4OUlNUnNnZ0JpSHl2Z29RQUFObVg0OVFBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQWdBRUEwOWxoN0J3OEFsc0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3RyaXBsZS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUJka2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFER0E2bnA4bUZ5UW5Kd2NBTVFDMUhJUFFBRFJKRVNCRGt3QVV1dUJlRCt5WTBIaVVEbVNQUVVRUUV3MGN1UjhLUGZDM0xselA2Q0p6d2V5RFFoNUNoMEFCQkFURFIyNUFPaklSQnppRi9CNUNoc0FDQ0NtQVhBa1huRmNBQ0NBbUlhQ0kwRUFJSUNZaG9JalFRQWdnSmlHZ2lOQkFDQ0FtSWFDSTBFQUlJQ1lob0lqUVFBZ2dKaUdnaU5CQUNDQW1JYUNJMEVBSUlDWWhvSWpRUUFnZ0ppR2dpTkJBQ0NBbUlhQ0kwRUFJSUJJU2FQSWpnbWdweU5CQUNDQUNEb1VhTmtDSU9XSVp1a0JVQ01DajJPbzZrZ1FBQWdnc2h2T3VKcGtRSEVIV3JnSElJQVloOHBvSGtBQURaaytFMEFBRFJtSEFnVFFrSEVvUUFBTkdZY0NCTkNRY1NoQUFBMFpod0lFMEpCeEtFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQTJtVkZnVHBZV1hvQUFBQUFTVVZPUks1Q1lJST0nLFxyXG4ndzgvdW5kby5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBUUFBQUJ2eWdIUUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUVPRWxFUVZSNDJtTDh6MEI5QUJCQVREUXdrd0VnZ0doaUtFQUEwY1JRZ0FDaWlhRUFBVVFUUXdFQ2lDYUdBZ1FRVFF3RkNDQ2FHQW9RUUN6RUtQckYvRVBvUGNjdlhwYXZFUDVmYnZiMy9HLzVma0Y0WDFoNC9xQ3FCd2dnUm1KeTFFdVoxKzdQYkgvSU1YOWlZR0FFOHYreHM3NlZucUY0blBzdmR2VUFBVVNFb1crNDd3VStxSGlyOG9PTkVlSEJmM3d2bGFacHpSQjZpMDBIUUFDaEdmcVQrUnNId3grT1A1eFFOL3hqZnNsM3ErUmUrbnZodnd5cy8zbSsvR0g5eDhUSThKdmxGekF1dUg4cXI5Q3ZGSCtPYVNoQUFLR0Y2VmVqWjJsUGVNV1hxdTNrQm9mWUc4bFR5KzdiL0dGa1pPRDRLMzVEWWpYelo2YlAvemcrMmIreWV5ZnloZjFXTk5OM3JuemVYK2lHQWdRUW1xR3NYS3dTTDAwZmUvMHMxNW5GOC9lSnpwV0t4NVovZ0w3bS9TcDFXR3FXMGpiT1greEFyejIvZTUvOXB1Vjc0UjhzVHdOZlRPYTZ6b3dXaGdBQmhHWW80emRtRVFhbWo3eVh1bGxlYzd5K052V1YrbmNXUmdheGw4cGRRcmVsZHZKRDNTU3hrNTNoLzltN0dXL0VQNHJlclJNcUZFWUxBb0FBUWpQMFA4UGZOOXpzYjBVL2NoOVlEZUl4QWtPUzc2Tk9wdUlKN2hkc2NQY3cvaFhjcmhiNGEvUG4rQitzejF4ZmFxSWJDaEJBV0JML1A3Wi9RTU1nSmpBeWlEN1dUMUxiS3ZpYzdUOXEvUExNRW1EZytneE13OXpmeFA0eW9wb0FFRUE0Y3hUcmYrYi9qQXhzZnlYWGF1emwrWVVwejM2TGJ6ZkhlNkRQbVA3eW9pZExnQURDbXFNWUdmNHgvQU1uTnNiL25OZlp2bUxOMzM5WUdaaC9Nd0xWTW4xR2x3TUlJQ3d1WmZyRkFQWStVRG5EWCtiSCtUY3R2ekZqQkJIekQ4VlB2RC81L2dQVi9lTkZsd1VJSUNiMGlQclA5WWZ2UDVnRmRDM0RiOGFIMm5zT1hZbjhqbWJzSDU1UHJxOHR2Z2dEQStnWEs0WkxBUUlJemRCL29uK0Z2d3ZDTElBRXhSL0dvNHNQei8zS2htTDVueS84SDlWL0FqTXU3Mk8rcnl4b2dRb1FRR2hoeXJOVDlqUVB4M2RSTks5S3NMOW5RQ284ZnZKL2NIL00rc3JvTHlQM1Q4Vk95WVBvTGdVSUlFWmk2LzNmakt4UXBYK1kzM1EvZW55dCtwMHcwMy9weTNaMjRoL1IxUUlFRU5HRk5NeklYL3p2WnR4bnVGbnlVZWdmQTk5N3VYNitMNWhxQVFLSWhiUXkvU2YzKzZRSG4rK0V2NUw2ejhEelU3MVZjeDBubGpJVklJQklNdlF2NDZlMCs3TFg0ejhJL1FkbUM4VTFtZ3Y1UG1GVEJ4QkFKQmo2aC9sajhIMnRPMTd2Z1I3bi9DTjFWaThmZXhITndBQVFRRVNINlIvR2owWjNwYS83djVKaVlPRDZvN2JVT2xEeUxTNjFBQUZFdEtHL1JCNHIzaWgvSndMeXVOUlpIYXdsUGd3QUJCQ1Izdi9LZmNQbXlxUzM0ditBbFlqY2JyTUUwYmY0VkFNRUVGR0cvbWY4b0hoMXlodngvd3djZjJUMnE3WGlONUtCQVNDQWlQTCtQNzd2V2h6dldmN3pmWlBmb3pKTjRTUWg5UUFCUkZTTytzdjhWZWozbCs5OHZ6bFlHUG1mOGYwaXBCNGdnQmhKYVo0anNpcCtBQkJBakxSbzh3TUVFRTBhYUFBQlJCTkRBUUtJSm9ZQ0JCQk5EQVVJSUpvWUNoQmdBR05kYUJ1WVdBUzlBQUFBQUVsRlRrU3VRbUNDJyxcclxuJ3c4L3Vua25vd24ucG5nJzonaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNvQUFBQXFDQVlBQUFERnc4bGJBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFDRVVsRVFWUjQybUw4Ly84L3cxQUFBQUhFeERCRUFFQUFEUm1IQWdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQ3hrS0tZa1pHUllndVRrNU1OZ05SOElBYlJENEE0Y083Y3VSY0kxWkFBQWNSQ3oxQ0JPbkkvRUF0QWhSU2dmRUZDZWdFQ2lJbU9qaFJBY3lRTUNBRGxIQWpwQndnZ2VxWlJBeXlPaElFTGhEUURCQkE5SGZvQmgzZ2lNSTErSUtRWklJQlk2QkRkQlVpaGRnQ0lIZEFjdVlBWXN3QUNpSkdVOWlncHVSN3F5UHRvMFYwSURWbFFKam9BZE9RQm1BUWhkd0FFRUUwY2lwUnhETkNrSGdBZHA0aE5EeUYzQUFRUXJkSm9BaFpIVWdRQUFvaFdEc1dWdXhlU2F5QkFBRkUxNnFFRk9zeWgrOUdrRndDalBSR1hYa0x1QUFnZ0Zpcm1idVEwQ2NyaElFZkZRL2tIZ1k1c29NUU9nQUJpb1lFajRZVTcwSEdPMUVwTEFBRkVqVFRhanlQajZGTXowUU1FRURVY3FvQkQvQ0kxSFFvUVFOUndLTGJxRDVSeEpsRFRvUUFCeEVKbW1xeUhSamZJa1J1aGJBVmljamU1QUNDQXlNbE02QmtIVkhjYlFoMzZBZFFJcGtYQkRCQkFMQ1NHNW53c0dRY1V3Z3JJOVRZdEFFQUFrWnBHRXdhcXp3UVFRTlRJVEJkb0hab2dBQkJBcERwMEFwYVd1U005UWhRZ2dFaXU2NEhwRk5RUXRnZFZpOUFjL29FYURpSGtEb0FBWWh3cUE3a0FBVFJrQmlBQUFtaklPQlFnZ0lhTVF3RUNhTWc0RkNDQWhveERBUUpveURnVUlJQ0dqRU1CQW1qSU9CUWd3QUQ4R0hpMWJXTTBEd0FBQUFCSlJVNUVya0pnZ2c9PScsXHJcbid3OC91cC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUNFa2xFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnUVFBNmpBSjRScERaS1RrMVVKdVFFZ2dGZ0dNcENBRGhRQVV2MUF2QkdJYitOVEN4QkFUQVBvU0FNZ3RSK0lQOHlkTzNjRElmVUFBY1EwUUk1TWdEcVNBZWpJUW1MMEFBUVF5d0JGTmNpaEg0QTRrRmk5QUFIRVF1ZW9YZy9FQ2xDaFFHQm9QaUJXUDBBQU1kSEprUVZBNmp5U0l4dUJqanhBaWhrQUFjUklUUEhEeU1oSVNWVFBCK0lBSk9FRFFFYzZZaXNtOFFHQUFHS2hZMVNEd0FOUzBpVXlBQWdnSmpwRk5RTlN1dnhBanBrQUFjUkNnMXlOSHRVd1VBaDA1QVZ5elFZSUlLcWxVUnhSRFFNYmdJNE1KRlNWNHdNQUFjUkU0NmdHQVZBb0psSnFCMEFBc2RBd3FobWdoWG9pdWVrU0dRQUVFQXVWY3pWVjB5VXlBQWdnSmhwRU5Rd3NBRHB5QWJVeUtrQUFzWkFSMWFCUWRDQ2dGQlNLaGRRc1VRQUNpT2hjRDNTa0E5U1JBZ1NVZzlLaklTbjFPREc1SGlDQVdJZ01TUWRZczR3SWtFaXFJNGtCQUFGRVZCcUZOaUNJU1c4VGlHa0Vrd01BQW9pa0FoOFlzdk9oYlVsc0FHdGpnMXBSRHhCQUpPVjZvRU1TY1lRc1NZMWdjZ0JBQUpGY1BPRndiQ0ExQ25WOEFDQ0F5Q3BIMFJ4TGNpT1lIQUFRUUJUMTY2R2ROTHE0QXlDQUdJZktpRE5BQUEyWklSMkFBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFBTUFBZmI1YVh3NWpCa0FBQUFBU1VWT1JLNUNZSUk9JyxcclxuJ3c4L3dpZ2dseS5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUI0VWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1RRa0hFb1FBQU5HWWNDQk5DUWNTaEFBQTBaaHdJRTBKQnhLRUFBRFJtSEFnVFFrSEVvUUFDeEVLdVFrWkdSYXBZbUp5YzNBQ2w3SVA0QXhJMXo1c3k1UUVnUFFBQ3gwRHRrZ0k0c0FGTDFTRUlDUU94SVNCOUFBTEVNUUN6NlEra0ZVSG9qTVpvQUFtZ2dIQXFLWmdjUW5qdDNyaUpJQUJqMUJEVUJCQkFqc2EwblN0SW9XcHFjQ01UN29WS09RTWNlSU1ZTkFBSEVRb2MwbVlDV0pnUFFRcGNvQUJCQVRIUk9rd2VnYkZESUpnSkQ4d094aGdBRUVEM1M2RUZvS0FZQUhTWklyaUVBQVVTVE5Jb2xUYTZIRlVPZ05JbXVuaGczQUFRUXkyQk5rK2dBSUlDWUJtdWFSQWNBQWNSQ3l6UUp4SXFVT0E0WkFBUVFDNVdpR3oxTmZvQ21TUU9rVUtVSUFBUVFDNDNUNUFOcVJSTkFBRkVqalNvZ3Bja0ZhR21TYWc0RkNDQnFSUDBIcEpBRXBjbEVXaFRHQUFIRVFtR2FCSUZHV3FSSmRBQVFRQ3hVU0pNT3RFaVQ2QUFnZ0pnb1RKTVRhSlVtMFFGQUFMRlFJVTBXMHFNUkN4QkFUR1JFK3dWb0ZNUFNKRjBBUUFDeGtPQklVSlRQUnhOK1FDK0hBZ1FRMFNFS1RYOTBTNVBvQUNDQUdJZktRQzVBQUEyWkFRaUFBQm95RGdVSW9DSGpVSUFBR2pJT0JRaWdJZU5RZ0FBYU1nNEZDS0FoNDFDQUFCb3lEZ1VJTUFDYlJuaWNPUjZ6WWdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvem9vbWJveC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBTUFBQUR5SFRscEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQURBRkJNVkVXNXVibU1qSXp5OHZMOC9QeVVsSlRGeGNXY25KejQrUGpwNmVuKy92NkFnSURkM2QzcTZ1cjkvZjJCZ1lINysvdjE5ZldFaElRQUFBRC8vLy8vLy84VkZSVVdGaFlYRnhjWUdCZ1pHUmthR2hvYkd4c2NIQndkSFIwZUhoNGZIeDhnSUNBaElTRWlJaUlqSXlNa0pDUWxKU1VtSmlZbkp5Y29LQ2dwS1NrcUtpb3JLeXNzTEN3dExTMHVMaTR2THk4d01EQXhNVEV5TWpJek16TTBORFExTlRVMk5qWTNOemM0T0RnNU9UazZPam83T3pzOFBEdzlQVDArUGo0L1B6OUFRRUJCUVVGQ1FrSkRRME5FUkVSRlJVVkdSa1pIUjBkSVNFaEpTVWxLU2twTFMwdE1URXhOVFUxT1RrNVBUMDlRVUZCUlVWRlNVbEpUVTFOVVZGUlZWVlZXVmxaWFYxZFlXRmhaV1ZsYVdscGJXMXRjWEZ4ZFhWMWVYbDVmWDE5Z1lHQmhZV0ZpWW1KalkyTmtaR1JsWldWbVptWm5aMmRvYUdocGFXbHFhbXByYTJ0c2JHeHRiVzF1Ym01dmIyOXdjSEJ4Y1hGeWNuSnpjM04wZEhSMWRYVjJkblozZDNkNGVIaDVlWGw2ZW5wN2UzdDhmSHg5ZlgxK2ZuNS9mMytBZ0lDQmdZR0Nnb0tEZzRPRWhJU0ZoWVdHaG9hSGg0ZUlpSWlKaVltS2lvcUxpNHVNakl5TmpZMk9qbzZQajQrUWtKQ1JrWkdTa3BLVGs1T1VsSlNWbFpXV2xwYVhsNWVZbUppWm1abWFtcHFibTV1Y25KeWRuWjJlbnA2Zm41K2dvS0Nob2FHaW9xS2pvNk9rcEtTbHBhV21wcWFucDZlb3FLaXBxYW1xcXFxcnE2dXNyS3l0cmEydXJxNnZyNit3c0xDeHNiR3lzckt6czdPMHRMUzF0YlcydHJhM3Q3ZTR1TGk1dWJtNnVycTd1N3U4dkx5OXZiMit2cjYvdjcvQXdNREJ3Y0hDd3NMRHc4UEV4TVRGeGNYR3hzYkh4OGZJeU1qSnljbkt5c3JMeTh2TXpNek56YzNPenM3UHo4L1EwTkRSMGRIUzB0TFQwOVBVMU5UVjFkWFcxdGJYMTlmWTJOaloyZG5hMnRyYjI5dmMzTnpkM2QzZTN0N2YzOS9nNE9EaDRlSGk0dUxqNCtQazVPVGw1ZVhtNXVibjUrZm82T2pwNmVucTZ1cnI2K3ZzN096dDdlM3U3dTd2NysvdzhQRHg4Zkh5OHZMejgvUDA5UFQxOWZYMjl2YjM5L2Y0K1BqNStmbjYrdnI3Ky92OC9QejkvZjMrL3Y3Ly8vK25BeVhPQUFBQUZYUlNUbFAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dBcjJYM3FBQUFCYVVsRVFWUjQybUlRSVJvQUJCQUQ4VW9CQW9nRXBRQUJSSUpTZ0FBaVFTbEFBSkdnRkNDQVNGQUtFRUFrS0FVSUlIU2xER3lDZ216WTlRTUVFS29vaXlBVXNHQlJDaEJBeUVvWkJBVVpXVUVNVmtaQlFVeVRBUUtJQVVVbEF6WTJEQUFFRUpLQW9DQUhnc01oS0lpdUZDQ0FHSkRjaVdJT0E0WjdBUUlJSVMzSWlDckRpRzRzUUFBaHVRN29JeUU0QVBvTjNiVUFBUVRuc29FTUVSS0dBaUdRTld5b1NnRUNpQUhoS1F5bGFDNEFDQ0FjU29XeEtBVUlJQndPNE1QaUFJQUF3dW90WVM0dUxreHZBUVFRanNEaUFnVVdENnBTZ0FBaUlRb0FBb2lFaUFVSUlOekpSWkNiRzFVcFFBRGhTb1Fpb0ZTTEd0VUFBWVF6YVhOanFBVUlJSndaQnF3VVJTMUFBT0hPaG96b2FnRUNDRStPUlZjTEVFRDRNamNqYW80RUNDQzg1UUJFTFl3SEVFRDRpd3lRV2xZWUJ5Q0FDSlF1TEFpVklnQUJSRUpCQkJCQUpDZ0ZDQ0FTbEFJRUVBbEtBUUtJQktVQUFVU0NVb0FBSWtFcFFBQ1JvQlFnd0FDN3FvTUlLVEdwakFBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvem9vbWluLnBuZyc6J2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDb0FBQUFxQ0FZQUFBREZ3OGxiQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFNWFNVUkJWSGphWXZ6Ly96L0RVQUFBQWNURU1FUUFRQUFOR1ljQ0JOQ1FjU2hBQUEwWmh3SUUwSkJ4S0VBQURSbUhBZ1RRa0hFb1FBQ3hrS3Z4OWV2WC84K2ZQOC93K1BGamhoY3ZYb0RGSkNRa0dHUmxaUmtNREF3WXhNVEVHS25wVUlBQVlpUzF3UC84K1hQRG9rV0w2ajk4K0lCWG5ZQ0FBRU5jWEZ3akx5OXZBelVjQ2hCQUpEbDAxNjVkLzArZlBnMW1jM0J3TUZoWldUSG82T2pBSFFQeXhPWExsK3VQSHovTzhPUEhEN0E2VTFOVEJqYzNONHBERnlDQWlIWW9zaU9obHE4SE1vTndLRjhIVkI4SVUyOWlZc0xnN3U1T2tXTUJBb2lKMk9pR1dacWFtZ29Mb1NBOFdvSkFha0JxUWVETW1UTmdNeWh4S0VBQUVlVlFVSnFFaFNTMlROTGEydm9maE5IRlFXcEJvWWxzQnJrQUlJQ1lpTW5kb0l3RFNwUFE2Q1lKQUtOOFBVZ3Z5QXlRV2VRNkZDQ0FDRG9VVkFTQmdLV2xKUU9CNk1hWkRFQ1pEdGtzY2dCQUFCRjBLS2ljQkFGZFhkMUdjaTBCbFF6SVpwRURBQUtJWUlFUEs4eVJ5ME5zNlJHYmVIVjFOU09TM25xWVdlUUFnQUFhTWxVb1FBQVJERkZRdFFnS0NWRHhBZ3RWV0VpaGh5UzZPSEx4QmpPTFhBQVFRQVJERkZSM2d3Q294aUhYRXBoZW1GbmtBSUFBSXVoUVEwTkRNQTJxRmtFMURobDJySVBxaFp0RkRnQUlJSUlPRlJVVlpRUTFNRUIxTjZoYUpOVUNrQjZRWHBBWklMUElkU2hBQUJGVjE0UFMyS1JKaytwaFZTaXhUVGhRQVQ5cjFpd3dPeTh2ajZLV0ZFQUFFWlhyUVJhQXFrOFFtRDE3TnJpQlFpQVpnQm9sY0VkQ0hWMS83OTQ5WUxqOEo4dXhBQUZFVVRNUFZGdUJLZ0o4elR4MEFOSlhVRkNnejh6TWZJa1Vod0lFRU0wYnpxQ1FYTDU4T2NXT0JRZ2dSbktIZEY2OWVnWHVpang1OGdSdlZ3UVUzZWdPSmNleEFBSEVTT3V4SjFDYTdPdnJxOGVXRkVoeExFQUFNZEpqa096djM3OTZFeVpNdUVpSll3RUNpSkZlbzNuNEhBdEt6OW5aMlhpTFBJQUFvbHVqQkJSaW9KQURoU0E2SUpReFFRQWdnT2phZXNMbFdFZEhSNEo2QVFLSWNTQUdja0hKWU1hTUdSZEJJUWx5SkxBSFFMQ21Bd2dneHFFeTRnd1FRRU9tNFF3UVFFUEdvUUFCTkdRY0NoQkFROGFoQUFFMFpCd0tFRUJEeHFFQUFUUmtIQW9RWUFCZlZtcEZhZ0k5RmdBQUFBQkpSVTVFcmtKZ2dnPT0nLFxyXG4ndzgvem9vbW91dC5wbmcnOidpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ29BQUFBcUNBWUFBQURGdzhsYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQURPRWxFUVZSNDJtTDgvLzgvdzFBQUFBSEV4REJFQUVBQURSbUhBZ1FRWFJ6NjVzMGJYa3JOQUFnZ3VqaFVSRVRrTTR6OTdkczNZM0xNQUFnZ3hvSEtURUFISzNCeGNUMGdWajFBQUExWUdvVTU4dWJObXhMRXFBY0lJTWJCVUR3QlE1Y1Y2UERmK05RQUJCRFpEbjM5K3ZYLzgrZlBNengrL0pqaHhZc1hZREVKQ1FrR1dWbFpCZ01EQXdZeE1URkdFaDNMREhUc1gxenlBQUZFc2tNL2YvNzhmOUdpUlF3ZlBuekFxMDVBUUlBaExpNk9nWmVYbDZDRHYzejVZczdEdzNNUzZGaGVvR00vWTFNREVFQWtPWFRYcmwzL1Q1OCtEV1p6Y0hBd1dGcGFNdWpxNmpLd3NiR0J4WDc5K3NWdytmSmxodVBIanpQOCtQRURMR1pxYXNyZzV1YkdTR255QUFnZ29oMks3RWlvNVdEOU9KVC9CNnBuUUZOUGtXTUJBb2lKMk9pR1dacWFtZ3F6RkovRmpDQTFJTFVnQU5JTE1vTVNod0lFRUZFT0JhVkpXTWlRa2tsQWFrRjZrTTBnRndBRUVCTXh1UnVVY1VCcEVocmRKQUdRSHBCZWtCa2dzOGgxS0VBQUVYUW9xQWdDQVZER0lSRGRPSk1CVkMvY0xISUFRQUFSZENpb25BUUJVTzRtRjhEMHdzd2lCd0FFRUFzaEJiRENIRllFZ1VCcmF5dFJVVmhkWGMySXJCZG1GamtBSUlDR1RIc1VJSUFJaGlpb1dnU0ZCS2d3WjJkblJ3a3BZZ0ZJTDh3c2NnRkFBQkVNVVZEZERRS2dHb2RjQU5NTE00c2NBQkJBQkIwS2FtQ0FBS2hhQk5VNFpOanhINnFYd2REUWtHeUhBZ1FRUVllQ0NtMVFBd05VZDRPcVJWSUJTQTlJTDhnTVVWRlJzcXRSZ0FBaUtqT0JXa0d3cXZEVnExZEVoeXBJTGF6cWhabEJMZ0FJSUtJY0NtcXF3YXJDMmJObmd4c29CSklCcUZIeUg2UVdxWVpqdUhmdjN2Ly9aRGFBQVFLSTVzMDhkQURTVjFCUXdNRE16RXhTTWdBSUlKbzNuRUVodVh6NWNvb2RDeEJBWkhkRlFPbnZ3b1VMQkxzaW9PaEdkeWc1amdVSUlKcDM3a0Jwc3ErdkQydFNJTVd4QUFGRTh5cVVFUWhBamdFNUNoMkFIRDlod2dTR3YzLy9FZ3d0Z0FDaVMxMFBDakY4anAweFl3WkJNd0FDaUc2TkVueU9KWlF4UVFBZ2dPamFlc0xsV0VkSFI0SjZBUUpvUUVaS1FHa1NGTjJna0FRNTBzcktpbUJtQWdnZ3hxRXk0Z3dRUUVPbTRRd1FRQVB1MEcvZnZoRVZwUUFCTkdTaUhpQ0Foa3pVQXdUUWtIRW9RQUFOR1ljQ0JOQ1FjU2hBZ0FFQTZwaHFLRThZSUtZQUFBQUFTVVZPUks1Q1lJST0nXHJcbn07XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbmlmICh0eXBlb2YgKF9fSlNEcmF3Ml9Ub3VjaE1vbCkgPT0gJ3VuZGVmaW5lZCcpIHtcclxuICBkb2pvLnJlcXVpcmUoJ2Rpaml0LmxheW91dC5BY2NvcmRpb25Db250YWluZXInKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rpaml0LmxheW91dC5Db250ZW50UGFuZScpO1xyXG59XHJcblxyXG5zY2lsLkFjY29yZGlvbiA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24ocGFyZW50LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnRk9STS5BQ0NPUkRJT04nO1xyXG4gICAgc2NpbC5BY2NvcmRpb24uYWRkU3R5bGVzaGVldCgpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IHNjaWwuYnlJZChwYXJlbnQpO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9PSBudWxsID8ge30gOiBvcHRpb25zO1xyXG5cclxuICAgIHZhciBzdHlsZSA9ICcnO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy53aWR0aCA+IDApXHJcbiAgICAgIHN0eWxlICs9ICd3aWR0aDonICsgdGhpcy5vcHRpb25zLndpZHRoICsgJ3B4Oyc7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhlaWdodCA+IDApXHJcbiAgICAgIHN0eWxlICs9ICdoZWlnaHQ6JyArIHRoaXMub3B0aW9ucy5oZWlnaHQgKyAncHg7JztcclxuXHJcbiAgICB0aGlzLmNvbnRhaW5lciA9IG5ldyBkaWppdC5sYXlvdXQuQWNjb3JkaW9uQ29udGFpbmVyKHtzdHlsZTogc3R5bGV9LCBwYXJlbnQpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuaXRlbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLm9wdGlvbnMuaXRlbXNbaV07XHJcbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZENoaWxkKG5ldyBkaWppdC5sYXlvdXQuQ29udGVudFBhbmUoe1xyXG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gICAgICAgIGNvbnRlbnQ6IGl0ZW0uaHRtbCxcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250YWluZXIuc3RhcnR1cCgpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25hZnRlcnJlbmRlciAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25hZnRlcnJlbmRlcih0aGlzKTtcclxuICB9LFxyXG59KTtcclxuXHJcbnNjaWwuYXBwbHkoc2NpbC5BY2NvcmRpb24sIHtcclxuICBzdHlsZXNoZWV0QWRkZWQ6IGZhbHNlLFxyXG5cclxuICBhZGRTdHlsZXNoZWV0OiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLnN0eWxlc2hlZXRBZGRlZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc3R5bGVzaGVldEFkZGVkID0gdHJ1ZTtcclxuICAgIHNjaWwuVXRpbHMuYWRkQ3NzKHRoaXMuZ2V0Q3NzKCkpO1xyXG4gIH0sXHJcblxyXG4gIGdldENzczogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgY29kZSA9ICcuZGlqaXRBY2NvcmRpb25Jbm5lckNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlZmVmO2JvcmRlcjogc29saWQgMXB4ICNiNWJjYzc7fVxcclxcbicgK1xyXG4gICAgICAnLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIC5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlcntiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO2JvcmRlcjogMXB4IHNvbGlkICM3NTlkYzA7bWFyZ2luOiAwIDJweCAycHg7fVxcclxcbicgK1xyXG4gICAgICAnLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLCAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0RG93biB7ZGlzcGxheTogbm9uZTtmb250LXNpemU6IDAuNjVlbTtmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7fVxcclxcbicgK1xyXG4gICAgICAnLmRpaml0QWNjb3JkaW9uVGl0bGV7cGFkZGluZzogNXB4IDdweCAycHggN3B4O21pbi1oZWlnaHQ6IDE3cHg7fVxcclxcbic7XHJcblxyXG4gICAgcmV0dXJuIGNvZGU7XHJcbiAgfSxcclxufSk7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbnNjaWwuQXBwID0ge1xyXG4gICAgaW1nU21hbGw6IGZ1bmN0aW9uIChuYW1lLCB3cmFwYXN1cmwpIHtcclxuICAgICAgICB2YXIgcyA9IFwic21hbGwvXCIgKyBuYW1lO1xyXG4gICAgICAgIGlmICh3cmFwYXN1cmwpXHJcbiAgICAgICAgICAgIHMgPSBcInVybChcIiArIHMgKyBcIilcIjtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH1cclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cclxuXHJcbi8qKlxyXG4qIEF1dG9Db21wbGV0ZSBjbGFzcyAtIENvbnZlcnQgYSBJTlBVVCBmaWVsZCBpbnRvIGEgYXV0by1jb21wbGV0ZSBmaWVsZFxyXG4qIEBjbGFzcyBzY2lsbGlnZW5jZS5BdXRvQ29tcGxldGVcclxuKiA8cHJlPlxyXG4qIDxiPkV4YW1wbGU6PC9iPlxyXG4qICAgIHZhciBpbnB1dCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImlucHV0XCIpO1xyXG4qICAgIHZhciBhYyA9IG5ldyBzY2lsLkF1dG9Db21wbGV0ZShlbGVtZW50LCBcImh0dHA6Ly9zZXJ2ZXIvYWpheC5hc2h4P2NtZD1hdXRvY29tcGxldGVcIik7XHJcbiogPC9wcmU+XHJcbiovXHJcbnNjaWwuQXV0b0NvbXBsZXRlID0gc2NpbC5leHRlbmQoc2NpbGxpZ2VuY2UuX2Jhc2UsIHtcclxuICAgIC8qKlxyXG4gICAgKiBAY29uc3RydWN0b3IgQXV0b0NvbXBsZXRlXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nIG9yIERPTX0gZWxlbWVudCAtIHRoZSBJTlBVVCBlbGVtZW50IHRvIGJlIGNvbnZlcnRlZFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEFqYXggdXJsIHRvIGxpc3QgaXRlbXMuICBUaGUgYWpheCBzZXJ2aWNlIHNob3VsZCByZXR1cm4geyBzdWNjZWVkZWQ6IHRydWUsIHJldDogeyBpdGVtczogW10gfSB9XHJcbiAgICAqL1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChlbGVtZW50LCB1cmwsIG9wdGlvbnMsIGZvcm0pIHtcclxuICAgICAgICB0aGlzLmlucHV0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmF1dG8gPSBudWxsO1xyXG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMuc3VnaWQgPSAwO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcclxuXHJcbiAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICB0aGlzLmlucHV0ID0gdHlwZW9mIChlbGVtZW50KSA9PSBcInN0cmluZ1wiID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudCkgOiBlbGVtZW50O1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0LnRhZ05hbWUgPT0gXCJJTlBVVFwiKSB7XHJcbiAgICAgICAgICAgIHNjaWwuY29ubmVjdCh0aGlzLmlucHV0LCBcIm9ua2V5dXBcIiwgZnVuY3Rpb24gKGUpIHsgbWUua2V5ZG93bihlKTsgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmF1dG8gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQuYm9keSwgXCJkaXZcIiwgbnVsbCwgeyBkaXNwbGF5OiBcIm5vbmVcIiwgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCIsIGJvcmRlcjogXCJzb2xpZCAxcHggZ3JheVwiLCBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiIH0pO1xyXG4gICAgICAgICAgICBzY2lsLmNvbm5lY3QoZG9jdW1lbnQuYm9keSwgXCJvbm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZSkgeyB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0OyBpZiAoc3JjICE9IG1lLnEgJiYgIXNjaWwuVXRpbHMuaXNDaGlsZE9mKHNyYywgbWUuYXV0bykpIG1lLmNsaWNrb3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5saXN0ZWRvbmx5KSB7XHJcbiAgICAgICAgICAgICAgICBzY2lsLmNvbm5lY3QodGhpcy5pbnB1dCwgXCJvbmJsdXJcIiwgZnVuY3Rpb24gKGUpIHsgbWUudmFsaWRhdGVMaXN0KCk7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzY2lsLkF1dG9Db21wbGV0ZS5fYWxsLnB1c2godGhpcyk7XHJcbiAgICB9LFxyXG5cclxuICAgIHZhbGlkYXRlTGlzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzID0gdGhpcy5pbnB1dC52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5pdGVtcyA9PSBudWxsIHx8IHNjaWwuVXRpbHMuaW5kZXhPZih0aGlzLml0ZW1zLCBzKSA8IDApXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSBcIlwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc1Zpc2libGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRvICE9IG51bGwgJiYgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPT0gXCJcIjtcclxuICAgIH0sXHJcblxyXG4gICAgaGlkZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG8gIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgIH0sXHJcblxyXG4gICAga2V5ZG93bjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlucHV0ID09IG51bGwgfHwgdGhpcy51cmwgPT0gbnVsbCB8fCB0aGlzLnVybCA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlucHV0LnZhbHVlLmxlbmd0aCA8IDEgfHwgZS5rZXlDb2RlID09IDI3IHx8IChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKCkgJiYgZS5rZXlDb2RlID09IDEzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMzggfHwgZS5rZXlDb2RlID09IDQwIHx8IGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodChlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHN1Z2lkID0gKyt0aGlzLnN1Z2lkO1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLnN0YXJ0c3dpdGgodGhpcy51cmwsIFwiZGF0YTpcIikpIHtcclxuICAgICAgICAgICAgLy8gbG9jYWwgZGF0YVxyXG4gICAgICAgICAgICB2YXIgcmV0ID0gdGhpcy5maWx0ZXJsaXN0KHRoaXMudXJsLnN1YnN0cig1KS5zcGxpdCgnLCcpLCB0aGlzLmlucHV0LnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0KHJldCwgc3VnaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzY2lsLlV0aWxzLnN0YXJ0c3dpdGgodGhpcy51cmwsIFwiamF2YXNjcmlwdDpcIikpIHtcclxuICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnVybC5zdWJzdHIoMTEpO1xyXG4gICAgICAgICAgICB2YXIgZm4gPSBzY2lsLlV0aWxzLmV2YWwocyk7XHJcbiAgICAgICAgICAgIHZhciBpdGVtcyA9IGZ1bih0aGlzKTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXQgPSB0aGlzLmZpbHRlcmxpc3QoaXRlbXMsIHRoaXMuaW5wdXQudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QocmV0LCBzdWdpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB1cmwgdG8gYWpheCBjYWxsXHJcbiAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciBhcmdzID0geyBxOiB0aGlzLmlucHV0LnZhbHVlIH07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMub25zdWdnZXN0ICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25zdWdnZXN0KGFyZ3MsIHRoaXMuZm9ybSwgdGhpcyk7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMuanNvbnAodGhpcy51cmwsIGZ1bmN0aW9uIChyZXQpIHsgbWUubGlzdChyZXQuaXRlbXMgPT0gbnVsbCA/IHJldCA6IHJldC5pdGVtcywgc3VnaWQpOyB9LCBhcmdzKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGZpbHRlcmxpc3Q6IGZ1bmN0aW9uIChsaXN0LCBxKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGlmIChxICE9IG51bGwgJiYgcSAhPSBcIlwiICYmIGxpc3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBxID0gcS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0W2ldLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxKSA+PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHNjaWwuVXRpbHMudHJpbShsaXN0W2ldKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNQYXJlbnRIaWRkZW46IGZ1bmN0aW9uIChxKSB7XHJcbiAgICAgICAgdmFyIG9iaiA9IHE7XHJcbiAgICAgICAgd2hpbGUgKG9iaiAhPSBudWxsICYmIG9iai5zdHlsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmouc3R5bGUuZGlzcGxheSA9PSBcIm5vbmVcIiB8fCBvYmouc3R5bGUudmlzaWJpbGl0eSA9PSBcImhpZGRlblwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIG9iaiA9IG9iai5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGxpc3Q6IGZ1bmN0aW9uIChpdGVtcywgc3VnaWQpIHtcclxuICAgICAgICBpZiAoaXRlbXMgPT0gbnVsbCB8fCBpdGVtcy5sZW5ndGggPT0gMCB8fCBzdWdpZCAhPSB0aGlzLnN1Z2lkIHx8IHRoaXMuaXNQYXJlbnRIaWRkZW4odGhpcy5pbnB1dCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0by5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHZhciBwID0gc2NpbGxpZ2VuY2UuVXRpbHMuZ2V0T2Zmc2V0KHRoaXMuaW5wdXQpO1xyXG4gICAgICAgICAgICB2YXIgc2Nyb2xsID0gc2NpbGxpZ2VuY2UuVXRpbHMuc2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIHZhciB6SW5kZXggPSBzY2lsLlV0aWxzLmdldFppbmRleCh0aGlzLmlucHV0KSArIDE7XHJcbiAgICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmlzSUUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzMiA9IEpzVXRpbHMuZ2V0U2Nyb2xsT2Zmc2V0KHRoaXMuZSk7XHJcbiAgICAgICAgICAgICAgICBzY3JvbGwub2Zmc2V0KC1zMi54LCAtczIueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHcgPSB0aGlzLmlucHV0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1pbmF1dG93aWR0aCA+IDAgJiYgdGhpcy5vcHRpb25zLm1pbmF1dG93aWR0aCA+IHcpXHJcbiAgICAgICAgICAgICAgICB3ID0gdGhpcy5vcHRpb25zLm1pbmF1dG93aWR0aDtcclxuICAgICAgICAgICAgaWYgKHcgPCAxMDApXHJcbiAgICAgICAgICAgICAgICB3ID0gMTAwO1xyXG4gICAgICAgICAgICB2YXIgcG9zID0gc2NpbC5VdGlscy5pc0ZpeGVkUG9zaXRpb24odGhpcy5pbnB1dCkgPyBcImZpeGVkXCIgOiBcImFic29sdXRlXCI7XHJcbiAgICAgICAgICAgIGRvam8uc3R5bGUodGhpcy5hdXRvLCB7IHpJbmRleDogekluZGV4LCBwb3NpdGlvbjogcG9zLCBkaXNwbGF5OiBcIlwiLCB3aWR0aDogKHcgLSAyKSArIFwicHhcIiwgbGVmdDogKHAueCArIHNjcm9sbC54KSArIFwicHhcIiwgdG9wOiAocC55ICsgc2Nyb2xsLnkgKyB0aGlzLmlucHV0Lm9mZnNldEhlaWdodCkgKyBcInB4XCIgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgc2NpbGxpZ2VuY2UuVXRpbHMucmVtb3ZlQWxsKHRoaXMuYXV0byk7XHJcbiAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBkaXYgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuYXV0bywgJ2RpdicsIGl0ZW1zW2ldKTtcclxuICAgICAgICAgICAgZG9qby5jb25uZWN0KGRpdiwgXCJvbmNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7IG1lLmNsaWNrKGUpOyB9KTtcclxuICAgICAgICAgICAgZG9qby5jb25uZWN0KGRpdiwgXCJvbm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoZSkgeyBtZS5tb3VzZW92ZXIoZSk7IH0pO1xyXG4gICAgICAgICAgICBkb2pvLmNvbm5lY3QoZGl2LCBcIm9ubW91c2VvdXRcIiwgZnVuY3Rpb24gKGUpIHsgbWUubW91c2VvdXQoZSk7IH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgaGlnaGxpZ2h0OiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG8gPT0gbnVsbCB8fCB0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSA9PSBcIm5vbmVcIilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAyNykge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5hdXRvLmNoaWxkTm9kZXM7XHJcbiAgICAgICAgdmFyIHNlbCA9IG51bGw7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgaXRlbSA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRBdHRyaWJ1dGUoXCJzZWxcIikgPT0gXCIxXCIpIHtcclxuICAgICAgICAgICAgICAgIHNlbCA9IGk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICAgICAgICBpZiAoc2VsICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsaWNrSXRlbShjaGlsZHJlbltzZWxdKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG5ld3NlbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAzOCB8fCBlLmtleUNvZGUgPT0gNDApIHtcclxuICAgICAgICAgICAgaWYgKHNlbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdzZWwgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGUua2V5Q29kZSA9PSAzOCkge1xyXG4gICAgICAgICAgICAgICAgbmV3c2VsID0gc2VsIC0gMTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdzZWwgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgIG5ld3NlbCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuZXdzZWwgPSBzZWwgKyAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld3NlbCA+PSBjaGlsZHJlbi5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2VsID0gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5ld3NlbCAhPSBudWxsICYmIG5ld3NlbCAhPSBzZWwpIHtcclxuICAgICAgICAgICAgaWYgKHNlbCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5faGlsaXRJdGVtKGNoaWxkcmVuW3NlbF0sIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5faGlsaXRJdGVtKGNoaWxkcmVuW25ld3NlbF0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgbW91c2VvdmVyOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHRoaXMuX2hpbGl0SXRlbShlLnNyY0VsZW1lbnQgfHwgZS50YXJnZXQsIHRydWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBtb3VzZW91dDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB0aGlzLl9oaWxpdEl0ZW0oZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0LCBmYWxzZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9oaWxpdEl0ZW06IGZ1bmN0aW9uIChpdGVtLCBmKSB7XHJcbiAgICAgICAgaWYgKGYpIHtcclxuICAgICAgICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNkZGZcIjtcclxuICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoXCJzZWxcIiwgXCIxXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIndoaXRlXCI7XHJcbiAgICAgICAgICAgIGl0ZW0ucmVtb3ZlQXR0cmlidXRlKFwic2VsXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0SXRlbVZhbHVlOiBmdW5jdGlvbiAoc3JjKSB7XHJcbiAgICAgICAgdmFyIHMgPSB1bmVzY2FwZShzcmMuaW5uZXJIVE1MKTtcclxuICAgICAgICBpZiAocyA9PSBcIiZuYnNwO1wiKVxyXG4gICAgICAgICAgICBzID0gXCJcIjtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgY2xpY2s6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdmFyIHNyYyA9IGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldDtcclxuICAgICAgICB0aGlzLmNsaWNrSXRlbShzcmMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjbGlja0l0ZW06IGZ1bmN0aW9uIChzcmMpIHtcclxuICAgICAgICB2YXIgcyA9IHRoaXMuZ2V0SXRlbVZhbHVlKHNyYyk7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vblNldFZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblNldFZhbHVlKHRoaXMuaW5wdXQsIHMpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5vdmVyd3JpdGUgPT0gXCJ1bml0XCIpXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSB0aGlzLmNoYW5nZVVuaXQodGhpcy5pbnB1dC52YWx1ZSwgcyk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLm92ZXJ3cml0ZSA9PSBmYWxzZSlcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSArPSBzO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHM7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vdmVyd3JpdGUpXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uY2xpY2tpdGVtICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbmNsaWNraXRlbShzKTtcclxuXHJcbiAgICAgICAgc2NpbC5VdGlscy5maXJlRXZlbnQodGhpcy5pbnB1dCwgXCJjaGFuZ2VcIiwgZmFsc2UsIHRydWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjbGlja291dDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPT0gXCJcIilcclxuICAgICAgICAgICAgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgIH1cclxufSk7XHJcblxyXG5zY2lsLmFwcGx5KHNjaWwuQXV0b0NvbXBsZXRlLCB7XHJcbiAgICBfYWxsOiBbXSxcclxuXHJcbiAgICBoaWRlQWxsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9hbGwubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIHRoaXMuX2FsbFtpXS5oaWRlKCk7XHJcbiAgICB9XHJcbn0pOyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8qKlxyXG4gKiBDaGFydCBjbGFzcyAtIENoYXJ0IENvbnRyb2xcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLkNoYXJ0XHJcbiAqIFN1cHBvcnRlZCBjaGFydCB0eXBlczogcGllLCBsaW5lLCBzdGFja2VkbGluZSwgYXJlYSwgc3RhY2tlZGFyZWEsIGNvbHVtbiwgY2x1c3RlcmVkY29sdW1uLCBiYXIsIGNsdXN0ZXJlZGJhciwgYnViYmxlXHJcbiAqIDxwcmU+XHJcbiAqIDxiPkV4YW1wbGUgMTo8L2I+XHJcbiAqICAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiJmd0O1xyXG4gKiAgICAgICAgc2NpbC5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAqICAgICAgICAgICAgbmV3IHNjaWwuQ2hhcnQoJ2RpdjEnLCB7IHR5cGU6IFwiYmFyXCIsIHdpZHRoOiA4MDAsIGhlaWdodDogMzAwLFxyXG4gKiAgICAgICAgICAgICAgICBhamF4OiB7IHVybDogXCJzZXJ2aWNlLmFzcHg/Y21kPWRhdGFzb3VyY2Umc291cmNlPWJ1Z1wiIH1cclxuICogICAgICAgICAgICB9KTtcclxuICogICAgICAgIH0pO1xyXG4gKiAgICAmbHQ7L3NjcmlwdCZndDtcclxuICpcclxuICogPGI+RXhhbXBsZSAyOjwvYj5cclxuICogICAgJmx0O3NjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCImZ3Q7XHJcbiAqICAgICAgICBzY2lsLnJlYWR5KGZ1bmN0aW9uICgpIHtcclxuICogICAgICAgICAgICBuZXcgc2NpbC5DaGFydCgnZGl2MScsIHsgdHlwZTogXCJiYXJcIiwgd2lkdGg6IDgwMCwgaGVpZ2h0OiAzMDAsXHJcbiAqICAgICAgICAgICAgICAgIHNlcmllczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJTZXJpZXMgMVwiLCBkYXRhOiB7IEE6IDEwMDAwLCBCOiA5MjAwLCBDOiAxMTgxMSwgRDogMTIwMDAsIEU6IDc2NjIsIEY6IDEzODg3fSB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJTZXJpZXMgMlwiLCBkYXRhOiB7IEE6IDMwMDAsIEI6IDEyMDAwLCBEOiAxMjc4M30gfVxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqICAgICAgICAgICAgfSk7XHJcbiAqICAgICAgICB9KTtcclxuICogICAgJmx0Oy9zY3JpcHQmZ3Q7XHJcbiAqXHJcbiAqIDxiPkV4YW1wbGUgMzo8L2I+XHJcbiAqICAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiJmd0O1xyXG4gKiAgICAgICAgc2NpbC5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAqICAgICAgICAgICAgbmV3IHNjaWwuQ2hhcnQoJ2RpdjEnLCB7IHR5cGU6IFwiYmFyXCIsIHdpZHRoOiA4MDAsIGhlaWdodDogMzAwLFxyXG4gKiAgICAgICAgICAgICAgICB4bGFiZWxzOiBbXCJNb25cIiwgXCJUdWVcIiwgXCJXZWRcIiwgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIl0sXHJcbiAqICAgICAgICAgICAgICAgIHNlcmllczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJTZXJpZXMgMVwiLCBkYXRhOiBbMTAwMDAsIDkyMDAsIDExODExLCAxMjAwMCwgNzY2MiwgMTM4ODddIH1cclxuICogICAgICAgICAgICAgICAgXVxyXG4gKiAgICAgICAgICAgIH0pO1xyXG4gKiAgICAgICAgfSk7XHJcbiAqICAgICZsdDsvc2NyaXB0Jmd0O1xyXG4gKlxyXG4gKiA8Yj5FeGFtcGxlIDQ6PC9iPlxyXG4gKiAgICAmbHQ7c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiZndDtcclxuICogICAgICAgIG5ldyBzY2lsLkNoYXJ0KCdjb250YWluZXInLCB7IHR5cGU6IFwiYnViYmxlXCIsIHdpZHRoOiA4MDAsIGhlaWdodDogMzAwLCB4bWluOiAwLCB5bWluOiAwLCB4bWF4OiA4LCB5bWF4OiAyMCwgeXRpdGxlOiBcIkJ1YmJsZVwiLFxyXG4gKiAgICAgICAgICAgIHNlcmllczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJTZXJpZXMgMVwiLCBkYXRhOiBbXHJcbiAqICAgICAgICAgICAgICAgICAgICB7IHg6IDEsIHk6IDEyLjQ1LCBzaXplOiAxLCBjb2xvcjogJ3JlZCcgfSxcclxuICogICAgICAgICAgICAgICAgICAgICB7IHg6IDIsIHk6IDE1LjQ1LCBzaXplOiAyLCBjb2xvcjogXCJncmVlblwiIH0sXHJcbiAqICAgICAgICAgICAgICAgICAgICAgeyB4OiAzLCB5OiAyLCBzaXplOiAxLjUgfSxcclxuICogICAgICAgICAgICAgICAgICAgICB7IHg6IDQsIHk6IDcsIHNpemU6IDMuNSB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgIHsgeDogNSwgeTogMTIsIHNpemU6IDEuNSB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgIHsgeDogNiwgeTogNywgc2l6ZTogNC41IH1cclxuICogICAgICAgICAgICAgICAgICAgICBdXHJcbiAqICAgICAgICAgICAgICAgICAgICB9XHJcbiAqICAgICAgICAgICAgICAgIF1cclxuICogICAgICAgIH0pO1xyXG4gKiAgICB9KTtcclxuICogICAgJmx0Oy9zY3JpcHQmZ3Q7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuXHJcbmlmICh0eXBlb2YgKF9fSlNEcmF3Ml9Ub3VjaE1vbCkgPT0gJ3VuZGVmaW5lZCcpIHtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLkNoYXJ0Jyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5wbG90MmQuQXJlYXMnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5TdGFja2VkQXJlYXMnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5CYXJzJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5wbG90MmQuQ2x1c3RlcmVkQmFycycpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcucGxvdDJkLkNvbHVtbnMnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5DbHVzdGVyZWRDb2x1bW5zJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5wbG90MmQuU3RhY2tlZENvbHVtbnMnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5MaW5lcycpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcucGxvdDJkLlN0YWNrZWRMaW5lcycpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcucGxvdDJkLk1hcmtlcnMnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5NYXJrZXJzT25seScpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcucGxvdDJkLlBpZScpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcucGxvdDJkLlNjYXR0ZXInKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLnBsb3QyZC5HcmlkJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5wbG90MmQuU3BpZGVyJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5wbG90MmQuQnViYmxlJyk7XHJcblxyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcuYXhpczJkLkRlZmF1bHQnKTtcclxuICBkb2pvLnJlcXVpcmUoJ2Rvam94LmNoYXJ0aW5nLmFjdGlvbjJkLkhpZ2hsaWdodCcpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcuYWN0aW9uMmQuVG9vbHRpcCcpO1xyXG4gIGRvam8ucmVxdWlyZSgnZG9qb3guY2hhcnRpbmcuYWN0aW9uMmQuTW92ZVNsaWNlJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy5hY3Rpb24yZC5NYWduaWZ5Jyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy53aWRnZXQuTGVnZW5kJyk7XHJcbiAgZG9qby5yZXF1aXJlKCdkb2pveC5jaGFydGluZy50aGVtZXMuQ2xhcm8nKTtcclxufVxyXG5cclxuLy8gaHR0cDovL2RlbW9zLmRvam90b29sa2l0Lm9yZy9kb2pveC9jaGFydGluZy90ZXN0cy90ZXN0X3BpZV9zbWFydF9sYWJlbC5odG1sXHJcbnNjaWwuQ2hhcnQgPSBzY2lsLmV4dGVuZChzY2lsLl9iYXNlLCB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIENoYXJ0XHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBlbGVtZW50IC0gdGhlIHBhcmVudCBFbGVtZW50XHJcbiAgICogQHBhcmFtIHtkaWN0fSBvcHRpb25zIC0geyB0eXBlIHsgc3RyaW5nIH0sIHdpZHRoLCBoZWlnaHQsIHRpdGxlIHtzdHJpbmd9LCBsZWdlbmQge2Jvb2x9LCBsYWJlbHN0eWxlOiB7IHN0cmluZzogaGlkZGVuLCBjb2x1bW5zLCBudWxsIH0sXHJcbiAgICogICAgICB0aGVtZSB7c3RyaW5nfSwgYW5pbWF0ZSB7Ym9vbH0sIHNoYWRvdyB7Ym9vbH0sIHh0aXRsZSB7c3RyaW5nfSwgeXRpdGxlIHtzdHJpbmd9LCBsaW5ld2l0aDoge2ludH0sXHJcbiAgICogICAgICBzZXJpZXM6IFt7bGFiZWwsIGRhdGF9XSB9XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKHBhcmVudCwgb3B0aW9ucykge1xyXG4gICAgdGhpcy5UID0gJ0NIQVJUJztcclxuICAgIHNjaWwuQ2hhcnQuYWRkU3R5bGVzaGVldCgpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IHNjaWwuYnlJZChwYXJlbnQpO1xyXG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICB0aGlzLmxvYWREYXRhKG9wdGlvbnMpO1xyXG4gIH0sXHJcblxyXG4gIGxvYWREYXRhOiBmdW5jdGlvbihvcHRpb25zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlcmllcyAhPSBudWxsKVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvYWREYXRhRnJvbVVybCh0aGlzLm9wdGlvbnMuYWpheCA9PSBudWxsID8gbnVsbCA6IHRoaXMub3B0aW9ucy5hamF4LnVybCk7XHJcbiAgfSxcclxuXHJcbiAgbG9hZERhdGFGcm9tVXJsOiBmdW5jdGlvbih1cmwpIHtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodXJsKSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5zZXJpZXMgPSBudWxsO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBzY2lsLlV0aWxzLmpzb25wKHVybCwgZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIGlmIChyZXQgPT0gbnVsbCB8fCByZXQubGVuZ3RoID09IG51bGwgfHwgcmV0Lmxlbmd0aCA9PSAwKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgKHJldFswXSkgIT0gJ29iamVjdCcpIHtcclxuICAgICAgICBtZS5vcHRpb25zLnNlcmllcyA9IFt7ZGF0YTogcmV0fV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIHJldFswXSlcclxuICAgICAgICAgIGtleXMucHVzaChrKTtcclxuXHJcbiAgICAgICAgdmFyIHggPSBrZXlzWzBdO1xyXG4gICAgICAgIHZhciBkYXRhID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICBkYXRhLnB1c2gocmV0W2ldW3hdKTtcclxuXHJcbiAgICAgICAgbWUub3B0aW9ucy5zZXJpZXMgPSBbXTtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgbWUub3B0aW9ucy5zZXJpZXMucHVzaCh7bGFiZWw6IHgsIGRhdGE6IGRhdGF9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbWUub3B0aW9ucy54bGFiZWxzID0gZGF0YTtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBrID0gMTsgayA8IGtleXMubGVuZ3RoOyArK2spIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSBbXTtcclxuICAgICAgICAgICAgdmFyIHkgPSBrZXlzW2tdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICBkYXRhLnB1c2gocmV0W2ldW3ldKTtcclxuICAgICAgICAgICAgbWUub3B0aW9ucy5zZXJpZXMucHVzaCh7bGFiZWw6IHksIGRhdGE6IGRhdGF9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1lLnJlbmRlcigpO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuXHJcbiAgZG93bmxvYWRJbWFnZTogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoSlNEcmF3U2VydmljZXMudXJsID09IG51bGwgfHwgSlNEcmF3U2VydmljZXMudXJsID09ICcnKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWxlcnQoJ0pTRHJhdyB3ZWIgc2VydmljZSBpcyBub3QgYXZhaWxhYmxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgaHRtbCA9ICc8ZGl2IHN0eWxlPVxcJ3dpZHRoOicgKyB0aGlzLnBhcmVudC5vZmZzZXRXaWR0aCArICdweFxcJz4nICsgdGhpcy5wYXJlbnQuaW5uZXJIVE1MICsgJzwvZGl2Pic7XHJcbiAgICBzY2lsLlV0aWxzLnBvc3QoSlNEcmF3U2VydmljZXMudXJsICsgJz9jbWQ9aHRtbDJpbWFnZScsIHtodG1sOiBodG1sLCBjc3M6IHNjaWwuQ2hhcnQuZ2V0Q3NzKCksIHdpZHRoOiB0aGlzLnBhcmVudC5vZmZzZXRXaWR0aH0pO1xyXG4gIH0sXHJcblxyXG4gIHJlbmRlcjogZnVuY3Rpb24oKSB7XHJcbiAgICBzY2lsLlV0aWxzLnJlbW92ZUFsbCh0aGlzLnBhcmVudCk7XHJcblxyXG4gICAgdmFyIHR5cGUgPSBudWxsO1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkge1xyXG4gICAgICBjYXNlICdjb2x1bW4nOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuQ29sdW1ucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2x1c3RlcmVkY29sdW1uJzpcclxuICAgICAgICB0eXBlID0gZG9qb3guY2hhcnRpbmcucGxvdDJkLkNsdXN0ZXJlZENvbHVtbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0YWNrZWRjb2x1bW4nOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuU3RhY2tlZENvbHVtbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Jhcic6XHJcbiAgICAgICAgdHlwZSA9IGRvam94LmNoYXJ0aW5nLnBsb3QyZC5CYXJzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjbHVzdGVyZWRiYXInOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuQ2x1c3RlcmVkQmFycztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGluZSc6XHJcbiAgICAgICAgdHlwZSA9IGRvam94LmNoYXJ0aW5nLnBsb3QyZC5MaW5lcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc3RhY2tlZGxpbmUnOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuU3RhY2tlZExpbmVzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhcmVhJzpcclxuICAgICAgICB0eXBlID0gZG9qb3guY2hhcnRpbmcucGxvdDJkLkFyZWFzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzdGFja2VkYXJlYSc6XHJcbiAgICAgICAgdHlwZSA9IGRvam94LmNoYXJ0aW5nLnBsb3QyZC5TdGFja2VkQXJlYXM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NjYXR0ZXInOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuU2NhdHRlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ3JpZCc6XHJcbiAgICAgICAgdHlwZSA9IGRvam94LmNoYXJ0aW5nLnBsb3QyZC5HcmlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzcGlkZXInOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuU3BpZGVyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdidWJibGUnOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuQnViYmxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwaWUnOlxyXG4gICAgICAgIHR5cGUgPSBkb2pveC5jaGFydGluZy5wbG90MmQuUGllO1xyXG4gICAgICAgIGlmICghKHRoaXMub3B0aW9ucy5yYWRpdXMgPiAwKSlcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5yYWRpdXMgPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5vcHRpb25zLnRpdGxlKSkge1xyXG4gICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5wYXJlbnQsICdoMycsIHNjaWwuTGFuZy5yZXModGhpcy5vcHRpb25zLnRpdGxlKSwge21hcmdpbjogMCwgdGV4dEFsaWduOiAnY2VudGVyJywgZm9udFNpemU6IHRoaXMub3B0aW9ucy50aXRsZXNpemUgPiAwID8gdGhpcy5vcHRpb25zLnRpdGxlc2l6ZSArICdweCcgOiBudWxsfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnBhcmVudCwgJ2RpdicpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMud2lkdGggPiAwKVxyXG4gICAgICB0aGlzLnBhcmVudC5zdHlsZS53aWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aCArICdweCc7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhlaWdodCA+IDApXHJcbiAgICAgIGRpdi5zdHlsZS5oZWlnaHQgPSB0aGlzLm9wdGlvbnMuaGVpZ2h0ICsgJ3B4JztcclxuXHJcbiAgICB2YXIgY2hhcnQgPSBuZXcgZG9qb3guY2hhcnRpbmcuQ2hhcnQoZGl2KTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRoZW1lICE9IG51bGwpXHJcbiAgICAgIGNoYXJ0LnNldFRoZW1lKGRvam94LmNoYXJ0aW5nLnRoZW1lc1t0aGlzLm9wdGlvbnMudGhlbWVdKTtcclxuICAgIGVsc2VcclxuICAgICAgY2hhcnQuc2V0VGhlbWUoZG9qb3guY2hhcnRpbmcudGhlbWVzLkNsYXJvKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvbnRjb2xvciA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuZm9udGNvbG9yID0gJ2JsdWUnO1xyXG5cclxuICAgIHZhciBhcmdzID0ge1xyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICBtYXJrZXJzOiB0cnVlLFxyXG4gICAgICBnYXA6IHRoaXMub3B0aW9ucy5nYXAgPiAwID8gdGhpcy5vcHRpb25zLmdhcCA6IDUsXHJcbiAgICAgIHJhZGl1czogdGhpcy5vcHRpb25zLnJhZGl1cyA+IDAgPyB0aGlzLm9wdGlvbnMucmFkaXVzIDogbnVsbCxcclxuICAgICAgaHRtbExhYmVsczogdHJ1ZSxcclxuICAgICAgZm9udENvbG9yOiB0aGlzLm9wdGlvbnMuZm9udGNvbG9yLFxyXG4gICAgICBsYWJlbFdpcmluZzogdGhpcy5vcHRpb25zLmZvbnRjb2xvcixcclxuICAgICAgYW5pbWF0ZTogdGhpcy5vcHRpb25zLmFuaW1hdGUsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5saW5ld2lkdGggPiAwKVxyXG4gICAgICBhcmdzLnN0cm9rZSA9IHt3aWR0aDogdGhpcy5vcHRpb25zLmxpbmV3aWR0aH07XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsc3R5bGUgIT0gbnVsbClcclxuICAgICAgYXJncy5sYWJlbFN0eWxlID0gdGhpcy5vcHRpb25zLmxhYmVsc3R5bGU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNoYWRvdyAhPSBmYWxzZSlcclxuICAgICAgYXJncy5zaGFkb3cgPSB7ZHg6IDIsIGR5OiAyLCB3aWR0aDogMiwgY29sb3I6IFswLCAwLCAwLCAwLjNdfTtcclxuICAgIGNoYXJ0LmFkZFBsb3QoJ2RlZmF1bHQnLCBhcmdzKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGxvdHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMub3B0aW9ucy5wbG90cylcclxuICAgICAgICBjaGFydC5hZGRQbG90KGssIHRoaXMub3B0aW9ucy5wbG90c1trXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHhhcmdzID0ge307XHJcbiAgICB2YXIgeWFyZ3MgPSB7dmVydGljYWw6IHRydWUsIGZpeExvd2VyOiAnbWFqb3InLCBmaXhVcHBlcjogJ21ham9yJ307XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy54bWluICE9IG51bGwpXHJcbiAgICAgIHhhcmdzLm1pbiA9IHRoaXMub3B0aW9ucy54bWluO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy54bWF4ICE9IG51bGwpXHJcbiAgICAgIHhhcmdzLm1heCA9IHRoaXMub3B0aW9ucy54bWF4O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy54dGl0bGUgIT0gbnVsbCkge1xyXG4gICAgICB4YXJncy50aXRsZSA9IHRoaXMub3B0aW9ucy54dGl0bGU7XHJcbiAgICAgIHhhcmdzLnRpdGxlT3JpZW50YXRpb24gPSAnYXdheSc7XHJcbiAgICAgIHhhcmdzLnRpdGxlR2FwID0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnltaW4gIT0gbnVsbClcclxuICAgICAgeWFyZ3MubWluID0gdGhpcy5vcHRpb25zLnltaW47XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnltYXggIT0gbnVsbClcclxuICAgICAgeWFyZ3MubWF4ID0gdGhpcy5vcHRpb25zLnltYXg7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnl0aXRsZSAhPSBudWxsKSB7XHJcbiAgICAgIHlhcmdzLnRpdGxlID0gc2NpbC5MYW5nLnJlcyh0aGlzLm9wdGlvbnMueXRpdGxlKTtcclxuICAgICAgeWFyZ3MudGl0bGVHYXAgPSA1O1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzZXJpZXMgPSB0aGlzLm9wdGlvbnMuc2VyaWVzO1xyXG4gICAgdmFyIHhsYWJlbHMgPSB0aGlzLm9wdGlvbnMueGxhYmVscztcclxuICAgIGlmIChzZXJpZXNbMF0uZGF0YSAhPSBudWxsICYmIHNlcmllc1swXS5kYXRhLmxlbmd0aCA9PSBudWxsKSB7XHJcbiAgICAgIHhsYWJlbHMgPSBbXTtcclxuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xyXG4gICAgICB2YXIgZGF0YSA9IHNlcmllc1swXS5kYXRhO1xyXG4gICAgICBmb3IgKHZhciBrIGluIGRhdGEpIHtcclxuICAgICAgICB4bGFiZWxzLnB1c2goayk7XHJcbiAgICAgICAgdmFsdWVzLnB1c2goZGF0YVtrXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBzZXJpZXMyID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgICB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGRhdGEgPSBzZXJpZXNbaV0uZGF0YTtcclxuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgeGxhYmVscy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGRhdGFbeGxhYmVsc1trXV07XHJcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHYgPT0gbnVsbCA/IDAgOiB2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzMi5wdXNoKHtsYWJlbDogc2NpbC5MYW5nLnJlcyhzZXJpZXNbaV0ubGFiZWwpLCBkYXRhOiB2YWx1ZXMsIGFyZ3M6IHNlcmllc1tpXS5hcmdzLCBhZGRpdHVwOiBzZXJpZXNbaV0uYWRkaXR1cH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHNlcmllcyA9IHNlcmllczI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy50eXBlID09ICdwaWUnKSB7XHJcbiAgICAgIGNoYXJ0LmFkZFNlcmllcyhzZXJpZXNbMF0ubGFiZWwsIHNlcmllc1swXS54eWRhdGEgIT0gbnVsbCA/IHNlcmllc1swXS54eWRhdGEgOiB0aGlzLmFycmF5MmRhdGEoc2VyaWVzWzBdLmRhdGEsIG51bGwsIHhsYWJlbHMsIHRoaXMub3B0aW9ucy5zaG93cGVyY2VudGFnZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHhsYWJlbHMgIT0gbnVsbClcclxuICAgICAgICB4YXJncy5sYWJlbHMgPSB0aGlzLmFycmF5MmRhdGEoeGxhYmVscywgdHJ1ZSk7XHJcblxyXG4gICAgICBjaGFydC5hZGRBeGlzKCd4JywgeGFyZ3MpO1xyXG4gICAgICBjaGFydC5hZGRBeGlzKCd5JywgeWFyZ3MpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy50eXBlID09ICdidWJibGUnKSB7XHJcbiAgICAgICAgY2hhcnQuYWRkU2VyaWVzKHNlcmllc1swXS5sYWJlbCwgc2VyaWVzWzBdLnh5ZGF0YSB8fCBzZXJpZXNbMF0uZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICBjaGFydC5hZGRTZXJpZXMoc2VyaWVzW2ldLmxhYmVsID09IG51bGwgPyAnU2VyaWVzLScgKyAoaSArIDEpIDogc2VyaWVzW2ldLmxhYmVsLCBzZXJpZXNbaV0ueHlkYXRhICE9IG51bGwgPyBzZXJpZXNbaV0ueHlkYXRhIDogdGhpcy5hcnJheTJkYXRhKHNlcmllc1tpXS5kYXRhLCBudWxsLCB4bGFiZWxzLCBudWxsLCBzZXJpZXNbaV0uYWRkaXR1cCksIHNlcmllc1tpXS5hcmdzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vbmV3IGRvam94LmNoYXJ0aW5nLndpZGdldC5MZWdlbmQoY2hhcnQsIFwiZGVmYXVsdFwiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudG9vbHRpcHMgIT0gZmFsc2UpXHJcbiAgICAgIG5ldyBkb2pveC5jaGFydGluZy5hY3Rpb24yZC5Ub29sdGlwKGNoYXJ0LCAnZGVmYXVsdCcpO1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkge1xyXG4gICAgICBjYXNlICdwaWUnOlxyXG4gICAgICBjYXNlICdzY2F0dGVyJzpcclxuICAgICAgY2FzZSAnZ3JpZCc6XHJcbiAgICAgICAgbmV3IGRvam94LmNoYXJ0aW5nLmFjdGlvbjJkLk1vdmVTbGljZShjaGFydCwgJ2RlZmF1bHQnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYmFyJzpcclxuICAgICAgY2FzZSAnY2x1c3RlcmVkYmFyJzpcclxuICAgICAgICBuZXcgZG9qb3guY2hhcnRpbmcuYWN0aW9uMmQuSGlnaGxpZ2h0KGNoYXJ0LCAnZGVmYXVsdCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjb2x1bW4nOlxyXG4gICAgICBjYXNlICdjbHVzdGVyZWRjb2x1bW4nOlxyXG4gICAgICAgIG5ldyBkb2pveC5jaGFydGluZy5hY3Rpb24yZC5IaWdobGlnaHQoY2hhcnQsICdkZWZhdWx0Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xpbmUnOlxyXG4gICAgICBjYXNlICdzdGFja2VkbGluZSc6XHJcbiAgICAgICAgbmV3IGRvam94LmNoYXJ0aW5nLmFjdGlvbjJkLk1hZ25pZnkoY2hhcnQsICdkZWZhdWx0Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FyZWEnOlxyXG4gICAgICBjYXNlICdzdGFja2VkYXJlYSc6XHJcbiAgICAgICAgbmV3IGRvam94LmNoYXJ0aW5nLmFjdGlvbjJkLk1hZ25pZnkoY2hhcnQsICdkZWZhdWx0Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhcnQucmVuZGVyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZWdlbmQpIHtcclxuICAgICAgdmFyIGxlZ2VuZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnBhcmVudCwgJ2RpdicpO1xyXG4gICAgICBuZXcgZG9qb3guY2hhcnRpbmcud2lkZ2V0LkxlZ2VuZCh7Y2hhcnQ6IGNoYXJ0fSwgbGVnZW5kKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgY2hhcnQuY29ubmVjdFRvUGxvdCgnZGVmYXVsdCcsIGZ1bmN0aW9uKGV2dCkge1xyXG4gICAgICBpZiAoZXZ0LnR5cGUgPT0gJ29uY2xpY2snKSB7XHJcbiAgICAgICAgaWYgKG1lLm9wdGlvbnMub25jbGljayAhPSBudWxsKVxyXG4gICAgICAgICAgbWUub3B0aW9ucy5vbmNsaWNrKGV2dCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZ0LnR5cGUgPT0gJ29ubW91c2VvdmVyJykge1xyXG4gICAgICAgIGlmIChtZS5vcHRpb25zLm9ubW91c2VvdmVyICE9IG51bGwpXHJcbiAgICAgICAgICBtZS5vcHRpb25zLm9ubW91c2VvdmVyKGV2dCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZ0LnR5cGUgPT0gJ29ubW91c2VvdXQnKSB7XHJcbiAgICAgICAgaWYgKG1lLm9wdGlvbnMub25tb3VzZW91dCAhPSBudWxsKVxyXG4gICAgICAgICAgbWUub3B0aW9ucy5vbm1vdXNlb3V0KGV2dCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0sXHJcblxyXG4gIGFycmF5MmRhdGE6IGZ1bmN0aW9uKGxpc3QsIGFzQXhpcywgeGxhYmVscywgc2hvd3BlcmNlbnRhZ2UsIGFkZGl0dXApIHtcclxuICAgIHZhciBzdW0gPSAwO1xyXG4gICAgaWYgKHNob3dwZXJjZW50YWdlKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGlmICghaXNOYU4obGlzdFtpXSkpXHJcbiAgICAgICAgICBzdW0gKz0gbGlzdFtpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciB2ID0gbnVsbDtcclxuICAgIHZhciByZXQgPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYXNBeGlzKSB7XHJcbiAgICAgICAgcmV0LnB1c2goe3ZhbHVlOiBpICsgMSwgdGV4dDogbGlzdFtpXX0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB2MiA9IG51bGw7XHJcbiAgICAgICAgaWYgKGFkZGl0dXApIHtcclxuICAgICAgICAgIGlmICh2ID09IG51bGwpXHJcbiAgICAgICAgICAgIHYgPSBsaXN0W2ldO1xyXG4gICAgICAgICAgZWxzZSBpZiAobGlzdFtpXSAhPSBudWxsICYmICFpc05hTihsaXN0W2ldKSlcclxuICAgICAgICAgICAgdiArPSBsaXN0W2ldO1xyXG4gICAgICAgICAgdjIgPSBsaXN0W2ldID09IG51bGwgPyBudWxsIDogdjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdjIgPSBsaXN0W2ldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHMgPSB2MjtcclxuICAgICAgICB2YXIgdCA9IHM7XHJcbiAgICAgICAgaWYgKHhsYWJlbHMgIT0gbnVsbCAmJiB4bGFiZWxzW2ldICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChzaG93cGVyY2VudGFnZSAmJiAhaXNOYU4ocykgJiYgc3VtID4gMClcclxuICAgICAgICAgICAgcyA9IChNYXRoLnJvdW5kKHMgLyBzdW0gKiAxMDAwKSAvIDEwKSArICclJztcclxuICAgICAgICAgIHMgPSB4bGFiZWxzW2ldICsgJyAoJyArIHMgKyAnKSc7XHJcbiAgICAgICAgICB0ID0geGxhYmVsc1tpXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldC5wdXNoKHt4OiBpICsgMSwgeTogdjIsIHRleHQ6IHQsIHRvb2x0aXA6IHN9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfSxcclxufSk7XHJcblxyXG5cclxuc2NpbC5hcHBseShzY2lsLkNoYXJ0LCB7XHJcbiAgc3R5bGVzaGVldEFkZGVkOiBmYWxzZSxcclxuXHJcbiAgYWRkU3R5bGVzaGVldDogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zdHlsZXNoZWV0QWRkZWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnN0eWxlc2hlZXRBZGRlZCA9IHRydWU7XHJcbiAgICBzY2lsLlV0aWxzLmFkZENzcyh0aGlzLmdldENzcygpKTtcclxuICB9LFxyXG5cclxuICBnZXRDc3M6IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIGNvZGUgPSAnLmRpaml0VG9vbHRpcCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMjAwMDsgZGlzcGxheTogYmxvY2s7IGxlZnQ6IDA7IG92ZXJmbG93OiB2aXNpYmxlOyB9XFxyXFxuJztcclxuICAgIGNvZGUgKz0gJy5kaWppdFRvb2x0aXBDb250YWluZXIgeyBib3JkZXI6IHNvbGlkICNhYWYgMXB4OyBiYWNrZ3JvdW5kOiAjZmZmOyBjb2xvcjogYmx1ZTsgcGFkZGluZzogMnB4OyBib3JkZXItcmFkaXVzOiAzcHg7IH1cXHJcXG4nO1xyXG4gICAgY29kZSArPSAnLmRpaml0VG9vbHRpcENvbm5lY3RvciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxcclxcbic7XHJcbiAgICBjb2RlICs9ICcuZG9qb3hMZWdlbmRJY29uIHsgZmxvYXQ6IGxlZnQ7IH1cXHJcXG4nO1xyXG5cclxuICAgIHJldHVybiBjb2RlO1xyXG4gIH0sXHJcbn0pO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5zY2lsLkNsaXBib2FyZCA9IHtcclxuICAgIGNvcHk6IGZ1bmN0aW9uICh0ZXh0KSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0ZXh0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICB2YXIgZSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcInRleHRhcmVhXCIsIG51bGwsIHsgcG9zaXRpb246ICdmaXhlZCcsIHRvcDogMCwgbGVmdDogMCwgd2lkdGg6ICcycHgnLCBoZWlnaHQ6ICcycHgnLCBwYWRkaW5nOiAwLCBib3JkZXI6ICdub25lJywgb3V0bGluZTogJ25vbmUnLCBib3hTaGFkb3c6ICdub25lJywgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyB9KTtcclxuICAgICAgICBlLnZhbHVlID0gdGV4dDtcclxuICAgICAgICBlLnNlbGVjdCgpO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0gZmFsc2U7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0ID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cclxuLyoqXHJcbiAqIENvbnRleHRNZW51IGNsYXNzXHJcbiAqIDxwcmU+XHJcbiAqIDxiPkV4YW1wbGU6PC9iPlxyXG4gKiAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiAoa2V5LCBvYmopIHtcclxuICogICAgICAgIGFsZXJ0KCBrZXkgKyBcIiBjbGlja2VkXCIpO1xyXG4gKiAgICB9O1xyXG4gKlxyXG4gKiAgICB2YXIgaXRlbXMgPSBbeyBjYXB0aW9uOiBcIkNvbG9yXCIsIGtleTogXCJ4XCIsIGNhbGxiYWNrOiBmdW5jdGlvbiAoa2V5KSB7IGFsZXJ0KFwiQ29sb3I6IFwiICsga2V5KTsgIH0sIGNoaWxkcmVuOiBbXCJSZWRcIiwgXCJCbHVlXCJdIH0sXHJcbiAqICAgICAgICAgICAgXCJTbWFsbFwiLCBcIkJpZ1wiXHJcbiAqICAgICAgICBdO1xyXG4gKlxyXG4gKiAgICB2YXIgbWVudSA9IG5ldyBzY2lsLkNvbnRleHRNZW51KGl0ZW1zLCBjYWxsYmFjaywgbnVsbCk7XHJcbiAqICAgIGZ1bmN0aW9uIHRlc3QoKSB7XHJcbiAqICAgICAgICBtZW51LnNob3coMTAwLCAxMDApO1xyXG4gKiAgICB9XHJcbiAqIDwvcHJlPlxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuQ29udGV4dE1lbnVcclxuICovXHJcbnNjaWwuQ29udGV4dE1lbnUgPSBzY2lsLmV4dGVuZChzY2lsLl9iYXNlLCB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIENvbnRleHRNZW51XHJcbiAgICogQHBhcmFtIHthcnJheX0gaXRlbXMgLSBhbiBhcnJheSBvZiBtZW51IGl0ZW0gZGVpZmluaXRpb25zXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBjYWxsYmFjayBmdW5jdGlvblxyXG4gICAqIEBwYXJhbSB7TWVudX0gcGFyZW50TWVudSAtIHBhcmVudCBtZW51IGl0ZW1cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oaXRlbXMsIGNhbGxiYWNrLCBwYXJlbnRNZW51LCBkb2MsIGxhbmcpIHtcclxuICAgIHRoaXMuVCA9ICdDT05URVhUX01FTlUnO1xyXG4gICAgdGhpcy5kb2N1bWVudCA9IGRvYyA9PSBudWxsID8gZG9jdW1lbnQgOiBkb2M7XHJcbiAgICB0aGlzLnRib2R5ID0gbnVsbDtcclxuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICAgIHRoaXMuc3VibWVudXMgPSB7fTtcclxuICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcclxuICAgIHRoaXMuY3VyID0gbnVsbDtcclxuICAgIHRoaXMucGFyZW50TWVudSA9IHBhcmVudE1lbnU7XHJcbiAgICB0aGlzLm9iaiA9IG51bGw7XHJcbiAgICB0aGlzLmxhbmcgPSBsYW5nICE9IG51bGwgPyBsYW5nIDogc2NpbC5MYW5nO1xyXG4gIH0sXHJcblxyXG4gIGlzRnJvbTogZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKHRoaXMudGJvZHkgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNDaGlsZE9mKGUsIHRoaXMudGJvZHkucGFyZW50Tm9kZSkpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGZvciAodmFyIGsgaW4gdGhpcy5zdWJtZW51cykge1xyXG4gICAgICBpZiAodGhpcy5zdWJtZW51c1trXS5pc0Zyb20oZSkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgdGhpcyBjb250ZXh0IG1lbnVcclxuICAgKiBAZnVuY3Rpb24gc2hvd1xyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0geCBjb29yZGluYXRlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSB5IGNvb3JkaW5hdGVcclxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqIC0gdGFnZ2VkIG9iamVjdFxyXG4gICAqL1xyXG4gIHNob3c6IGZ1bmN0aW9uKHgsIHksIG9iaiwgaXRlbXMsIGxlZnQpIHtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgdGhpcy5fY3JlYXRlKGl0ZW1zKTtcclxuICAgIHRoaXMub2JqID0gb2JqO1xyXG5cclxuICAgIHZhciBtYXhaaW5kZXggPSBzY2lsLlV0aWxzLmdldE1heFppbmRleCgpO1xyXG4gICAgdmFyIHBhcmVudCA9IHRoaXMudGJvZHkucGFyZW50Tm9kZTtcclxuICAgIHBhcmVudC5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICBwYXJlbnQuc3R5bGUuekluZGV4ID0gbWF4WmluZGV4ID4gMCA/IG1heFppbmRleCArIDEgOiAxMDA7XHJcbiAgICBzY2lsLlV0aWxzLm1vdmVUb1NjcmVlbih4LCB5LCBwYXJlbnQsIGxlZnQpO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgY29udGV4dCBtZW51XHJcbiAgICogQGZ1bmN0aW9uIGhpZGVcclxuICAgKi9cclxuICBoaWRlOiBmdW5jdGlvbihoaWRlUGFyZW50KSB7XHJcbiAgICBpZiAodGhpcy50Ym9keSA9PSBudWxsIHx8IHRoaXMudGJvZHkucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID09ICdub25lJylcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy50Ym9keS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBmb3IgKHZhciBrIGluIHRoaXMuc3VibWVudXMpXHJcbiAgICAgIHRoaXMuc3VibWVudXNba10uaGlkZSgpO1xyXG4gICAgdGhpcy5zZXRDdXIobnVsbCk7XHJcbiAgICBpZiAoaGlkZVBhcmVudCAmJiB0aGlzLnBhcmVudE1lbnUgIT0gbnVsbClcclxuICAgICAgdGhpcy5wYXJlbnRNZW51LmhpZGUoaGlkZVBhcmVudCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgbWVudSBpcyB2aXNpYmxlXHJcbiAgICogQGZ1bmN0aW9uIGlzVmlzaWJsZVxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBpc1Zpc2libGU6IGZ1bmN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGJvZHkgIT0gbnVsbCAmJiB0aGlzLnRib2R5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSAhPSAnbm9uZSc7XHJcbiAgfSxcclxuXHJcbiAgX2NyZWF0ZTogZnVuY3Rpb24oaXRlbXMpIHtcclxuICAgIGlmIChpdGVtcyAhPSBudWxsKVxyXG4gICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XHJcbiAgICBpZiAodGhpcy50Ym9keSA9PSBudWxsKSB7XHJcbiAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgIHRoaXMudGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKHRoaXMuZG9jdW1lbnQuYm9keSwgMCwgMCwge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLCBkaXNwbGF5OiAnbm9uZScsIGJhY2tncm91bmRDb2xvcjogJyNlZWUnLCBjb2xvcjogJyMwMDAnLCBib3JkZXI6ICdzb2xpZCAxcHggI2RkZCd9KTtcclxuICAgICAgdGhpcy50Ym9keS5zZXRBdHRyaWJ1dGUoJ2pzcG9wdXBtZW51JywgJzEnKTtcclxuICAgICAgZG9qby5jb25uZWN0KHRoaXMudGJvZHkucGFyZW50Tm9kZSwgJ29ubW91c2Vkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGlmIChlLmJ1dHRvbiAhPSAyKSBtZS5jbGljayhlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRvam8uY29ubmVjdCh0aGlzLnRib2R5LnBhcmVudE5vZGUsICdvbm1vdXNlb3ZlcicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5oaWxpdChlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRvam8uY29ubmVjdCh0aGlzLmRvY3VtZW50LmJvZHksICdvbm1vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5jbGlja091dChlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuX2NyZWF0ZUl0ZW1zKCk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW1zICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5fY3JlYXRlSXRlbXMoKTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBfY3JlYXRlSXRlbXM6IGZ1bmN0aW9uKCkge1xyXG4gICAgc2NpbC5VdGlscy5yZW1vdmVBbGwodGhpcy50Ym9keSk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2ldO1xyXG4gICAgICBpZiAoaXRlbSA9PSAnLScpIHtcclxuICAgICAgICBpZiAoaSA9PSAwIHx8IHRoaXMuaXRlbXNbaSAtIDFdID09ICctJyB8fCBpID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSlcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIHZhciB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRib2R5LCAndHInKTtcclxuICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHt0ZXh0QWxpZ246ICdjZW50ZXInLCB3aWR0aDogJzIwcHgnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZjVmNWY1J30pO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgJzxociBzdHlsZT1cXCdtYXJnaW46MDtwYWRkaW5nOjBcXCc+Jywge3BhZGRpbmc6ICcwIDJweCAwIDJweCd9KS5jb2xTcGFuID0gMztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ3N0cmluZycpXHJcbiAgICAgICAgICBpdGVtID0ge2NhcHRpb246IGl0ZW19O1xyXG4gICAgICAgIGlmIChpdGVtLmtleSA9PSBudWxsKVxyXG4gICAgICAgICAgaXRlbS5rZXkgPSBpdGVtLmNhcHRpb247XHJcbiAgICAgICAgdmFyIHN1YiA9IGl0ZW0uY2hpbGRyZW4gIT0gbnVsbCAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgdmFyIGJnID0gaXRlbS5iZyA9PSBudWxsID8gJyNlZWUnIDogaXRlbS5iZztcclxuICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJywgbnVsbCwge2JhY2tncm91bmRDb2xvcjogYmd9LCBpdGVtLmRpc2FibGVkID8gbnVsbCA6IHttZW51a2V5OiBpdGVtLmtleX0pO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgaXRlbS5jaGVja2VkID8gJyYjMTAwMDQ7JyA6IG51bGwsIHt0ZXh0QWxpZ246ICdjZW50ZXInLCB3aWR0aDogJzIwcHgnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZjVmNWY1J30pO1xyXG4gICAgICAgIHZhciBzdHlsZSA9IHtwYWRkaW5nOiAnMXB4IDNweCAxcHggM3B4JywgY29sb3I6IGl0ZW0uZGlzYWJsZWQgPyAnZ3JheScgOiAnJ307XHJcbiAgICAgICAgdmFyIHMgPSBpdGVtLm5vdHRyYW5zbGF0ZSA/IGl0ZW0uY2FwdGlvbiA6IHRoaXMubGFuZy5yZXMoaXRlbS5jYXB0aW9uKTtcclxuICAgICAgICBpZiAoaXRlbS5pY29uICE9IG51bGwpXHJcbiAgICAgICAgICBzID0gJzxpbWcgc3JjPVxcJycgKyBpdGVtLmljb24gKyAnXFwnPicgKyBzO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgcywgc3R5bGUpO1xyXG4gICAgICAgIHN0eWxlLmZvbnRTaXplID0gJzc1JSc7XHJcbiAgICAgICAgc3R5bGUucGFkZGluZ0xlZnQgPSAnMTBweCc7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBpdGVtLnNob3J0Y3V0ID09IG51bGwgPyAnJyA6IGl0ZW0uc2hvcnRjdXQsIHN0eWxlKTtcclxuICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIHN1YiA/ICcmcnNhcXVvOycgOiBudWxsLCB7dGV4dEFsaWduOiAncmlnaHQnLCB3aWR0aDogJzMwcHgnLCBwYWRkaW5nUmlnaHQ6ICc1cHgnfSk7XHJcblxyXG4gICAgICAgIGlmIChzdWIpXHJcbiAgICAgICAgICB0aGlzLnN1Ym1lbnVzW2l0ZW0ua2V5XSA9IG5ldyBzY2lsLkNvbnRleHRNZW51KGl0ZW0uY2hpbGRyZW4sIGl0ZW0uY2FsbGJhY2sgPT0gbnVsbCA/IHRoaXMuY2FsbGJhY2sgOiBpdGVtLmNhbGxiYWNrLCB0aGlzLCB0aGlzLmRvY3VtZW50KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBkZWxldGUgdGhpcy5zdWJtZW51c1tpdGVtLmtleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG5cclxuICBoaWxpdDogZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIHRyID0gc2NpbC5VdGlscy5nZXRQYXJlbnQoZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0LCAnVFInKTtcclxuICAgIGlmICh0ciAhPSBudWxsICYmIHRyLmdldEF0dHJpYnV0ZSgnbWVudWtleScpICE9IG51bGwpXHJcbiAgICAgIHRoaXMuc2V0Q3VyKHRyKTtcclxuICB9LFxyXG5cclxuICBzZXRDdXI6IGZ1bmN0aW9uKHRyKSB7XHJcbiAgICBpZiAodGhpcy5jdXIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1ci5jaGlsZE5vZGVzWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZjVmNWY1JztcclxuICAgICAgdGhpcy5jdXIuY2hpbGROb2Rlc1sxXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgdGhpcy5jdXIuY2hpbGROb2Rlc1syXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgdGhpcy5jdXIuY2hpbGROb2Rlc1szXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgdmFyIHN1YiA9IHRoaXMuc3VibWVudXNbdGhpcy5jdXIuZ2V0QXR0cmlidXRlKCdtZW51a2V5JyldO1xyXG4gICAgICBpZiAoc3ViICE9IG51bGwpXHJcbiAgICAgICAgc3ViLmhpZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1ciA9IHRyO1xyXG4gICAgaWYgKHRyICE9IG51bGwpIHtcclxuICAgICAgdHIuY2hpbGROb2Rlc1swXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2FhZic7XHJcbiAgICAgIHRyLmNoaWxkTm9kZXNbMV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNhYWYnO1xyXG4gICAgICB0ci5jaGlsZE5vZGVzWzJdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjYWFmJztcclxuICAgICAgdHIuY2hpbGROb2Rlc1szXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2FhZic7XHJcbiAgICAgIHZhciBzdWIgPSB0ciA9PSBudWxsID8gbnVsbCA6IHRoaXMuc3VibWVudXNbdHIuZ2V0QXR0cmlidXRlKCdtZW51a2V5JyldO1xyXG4gICAgICBpZiAoc3ViICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgcCA9IHNjaWwuVXRpbHMuZ2V0T2Zmc2V0KHRyLmNoaWxkTm9kZXNbM10sIGZhbHNlKTtcclxuICAgICAgICB2YXIgcDIgPSBzY2lsLlV0aWxzLmdldE9mZnNldCh0ci5jaGlsZE5vZGVzWzBdLCBmYWxzZSk7XHJcbiAgICAgICAgc3ViLnNob3cocC54ICsgdHIuY2hpbGROb2Rlc1szXS5vZmZzZXRXaWR0aCArIDEsIHAueSwgbnVsbCwgbnVsbCwgcDIueCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG5cclxuICBnZXRDYWxsYmFja09iajogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRNZW51ID09IG51bGwgPyB0aGlzLm9iaiA6IHRoaXMucGFyZW50TWVudS5nZXRDYWxsYmFja09iaigpO1xyXG4gIH0sXHJcblxyXG4gIGNsaWNrOiBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmdldFBhcmVudChlLnNyY0VsZW1lbnQgfHwgZS50YXJnZXQsICdUUicpO1xyXG4gICAgdmFyIGtleSA9IHRyID09IG51bGwgPyBudWxsIDogdHIuZ2V0QXR0cmlidXRlKCdtZW51a2V5Jyk7XHJcbiAgICBpZiAodGhpcy5zdWJtZW51c1trZXldICE9IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGlmIChrZXkgIT0gbnVsbCAmJiB0aGlzLmNhbGxiYWNrICE9IG51bGwpXHJcbiAgICAgIHRoaXMuY2FsbGJhY2soa2V5LCB0aGlzLmdldENhbGxiYWNrT2JqKCksIHRyLmNoaWxkTm9kZXNbMF0uaW5uZXJIVE1MICE9ICcnKTtcclxuICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9LFxyXG5cclxuICBjbGlja091dDogZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIHRib2R5ID0gc2NpbC5VdGlscy5nZXRQYXJlbnQoZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0LCAnVEJPRFknKTtcclxuICAgIGlmICh0Ym9keSAhPSBudWxsICYmIHRib2R5LmdldEF0dHJpYnV0ZSgnanNwb3B1cG1lbnUnKSA9PSAnMScpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gIH0sXHJcbn0pO1xyXG5cclxuc2NpbC5hcHBseShzY2lsLkNvbnRleHRNZW51LCB7XHJcbiAgaXNGcm9tQ29udGV4dE1lbnU6IGZ1bmN0aW9uKHNyYykge1xyXG4gICAgdmFyIHRib2R5ID0gc2NpbC5VdGlscy5nZXRQYXJlbnQoc3JjLCAnVEJPRFknKTtcclxuICAgIHJldHVybiB0Ym9keSAhPSBudWxsICYmIHRib2R5LmdldEF0dHJpYnV0ZSgnanNwb3B1cG1lbnUnKSA9PSAnMSc7XHJcbiAgfSxcclxufSk7XHJcblxyXG5cclxuSlNEcmF3Mi5Db250ZXh0TWVudSA9IHNjaWwuQ29udGV4dE1lbnU7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG4vKipcclxuICogRGlhbG9nIGNsYXNzXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5EaWFsb2dcclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgIC8vIENyZWF0ZSBhIHBvcHVwIGRpYWxvZ1xyXG4gKiAgICB2YXIgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwiZGl2XCIpO1xyXG4gKiAgICB2YXIgdHh0ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgXCJ0ZXh0YXJlYVwiLCBudWxsLCB7IHdpZHRoOiBcIjU4MHB4XCIsIGhlaWdodDogXCI0MDBweFwiIH0pO1xyXG4gKiAgICB2YXIgYnRuID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KFxyXG4gKiAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiZGl2XCIsIG51bGwsIHsgdGV4dEFsaWduOiBcImNlbnRlclwiIH0pLFxyXG4gKiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLCBcIk9LXCIsIHsgd2lkdGg6IFwiMjAwcHhcIiB9KTtcclxuICpcclxuICogICAgdmFyIGRsZyA9IG5ldyBzY2lsbGlnZW5jZS5EaWFsb2coXCJNeSBEaWFsb2dcIiwgZGl2KTtcclxuICogICAgZG9qby5jb25uZWN0KGJ0biwgXCJvbmNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7IGRsZy5oaWRlKCk7IH0pO1xyXG4gKiAgICBkbGcuc2hvdygpO1xyXG4gKiA8L3ByZT5cclxuICovXHJcbnNjaWwuRGlhbG9nID0gc2NpbC5leHRlbmQoc2NpbC5fYmFzZSwge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvciBEaWFsb2dcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBkZWZhdWx0ZGlhbG9nIHRpdGxlXHJcbiAgICogQHBhcmFtIHtET019IGJvZHkgLSBkaWFsb2cgYm9keVxyXG4gICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gb3B0aW9ucyB7IHBhcmVudFdpbmRvdywgbm9jbG9zZSwgbm90aXRsZSB9XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKHRpdGxlLCBib2R5LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnRElBTE9HJztcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuICAgIHRoaXMubGFuZyA9IHRoaXMub3B0aW9ucy5sYW5nID09IG51bGwgPyBzY2lsLkxhbmcgOiB0aGlzLm9wdGlvbnMubGFuZztcclxuICAgIHRoaXMuaWQgPSB0aGlzLm9wdGlvbnMuaWQ7XHJcbiAgICBpZiAodGhpcy5pZCA9PSBudWxsIHx8IHRoaXMuaWQgPT0gJycpIHtcclxuICAgICAgaWYgKHNjaWwuRGlhbG9nLl9pZGluY3JlYXNlID09IG51bGwpXHJcbiAgICAgICAgc2NpbC5EaWFsb2cuX2lkaW5jcmVhc2UgPSAwO1xyXG4gICAgICB0aGlzLmlkID0gJ19fanNkaWFsb2cnICsgKCsrc2NpbC5EaWFsb2cuX2lkaW5jcmVhc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjaWwuRGlhbG9nLl9hbGxpdGVtcyA9PSBudWxsKVxyXG4gICAgICBzY2lsLkRpYWxvZy5fYWxsaXRlbXMgPSB7fTtcclxuICAgIHNjaWwuRGlhbG9nLl9hbGxpdGVtc1t0aGlzLmlkXSA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5wYXJlbnRXaW5kb3cgPSB0aGlzLm9wdGlvbnMucGFyZW50V2luZG93ID09IG51bGwgPyB3aW5kb3cgOiB0aGlzLm9wdGlvbnMucGFyZW50V2luZG93O1xyXG4gICAgdGhpcy5ib2R5ID0gYm9keTtcclxuICAgIHRoaXMudGl0bGUgPSB0aXRsZTtcclxuICAgIHRoaXMuV1JBUFBFUiA9ICdjb250ZW50JztcclxuICAgIHRoaXMuZGlhbG9nID0gbnVsbDtcclxuICAgIHRoaXMuZGlhbG9nbWFzayA9IG51bGw7XHJcbiAgICB0aGlzLm1vdmluZ1N0ID0gbnVsbDtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgZGlhbG9nIGlzIHZpc2libGVcclxuICAgKiBAZnVuY3Rpb24gaXNWaXNpYmxlXHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIGlzVmlzaWJsZTogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cgIT0gbnVsbCAmJiB0aGlzLmRpYWxvZy5zdHlsZS5kaXNwbGF5ICE9ICdub25lJztcclxuICB9LFxyXG5cclxuICBpc0Zyb206IGZ1bmN0aW9uKGUpIHtcclxuICAgIGlmICghdGhpcy5pc1Zpc2libGUoKSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHNjaWwuVXRpbHMuaXNDaGlsZE9mKGUsIHRoaXMuZGlhbG9nKTtcclxuICB9LFxyXG5cclxuICBzaG93MjogZnVuY3Rpb24ob3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbClcclxuICAgICAgb3B0aW9ucyA9IHt9O1xyXG4gICAgdGhpcy5zaG93KG9wdGlvbnMudGl0bGUsIG9wdGlvbnMuemluZGV4LCBvcHRpb25zLm1vZGFsLCBvcHRpb25zLmltbWVkaWF0ZWx5LCBvcHRpb25zLm93bmVyKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGRpYWxvZ1xyXG4gICAqIEBmdW5jdGlvbiBzaG93XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gZGlhbG9nIHRpdGxlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHppbmRleCAtIHpJbmRleCBvZiBkaWFsb2cgRE9NXHJcbiAgICogQHBhcmFtIHtib29sfSBtb2RhbCAtIE1vZGFsIGRpYWxvZ1xyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBzaG93OiBmdW5jdGlvbih0aXRsZSwgemluZGV4LCBtb2RhbCwgaW1tZWRpYXRlbHksIG93bmVyKSB7XHJcbiAgICB0aGlzLm93bmVyID0gb3duZXI7XHJcbiAgICBpZiAodGhpcy5pc1Zpc2libGUoKSkge1xyXG4gICAgICBpZiAodGl0bGUgIT0gbnVsbCAmJiB0aGlzLmRpYWxvZy50aXRsZUVsZW1lbnQgIT0gbnVsbClcclxuICAgICAgICB0aGlzLmRpYWxvZy50aXRsZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5sYW5nLnJlcyh0aXRsZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobW9kYWwgPT0gbnVsbClcclxuICAgICAgbW9kYWwgPSB0cnVlO1xyXG5cclxuICAgIGlmICghKHNjaWwuRGlhbG9nLmtUaW1lciA+IDApKVxyXG4gICAgICBpbW1lZGlhdGVseSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5fY3JlYXRlKCk7XHJcbiAgICB0aGlzLm1vdmluZ1N0ID0gbnVsbDtcclxuICAgIGlmICh0aXRsZSAhPSBudWxsICYmIHRoaXMuZGlhbG9nLnRpdGxlRWxlbWVudCAhPSBudWxsKVxyXG4gICAgICB0aGlzLnNldFRpdGxlKHRpdGxlKTtcclxuICAgIHZhciBtYXhaaW5kZXggPSBzY2lsLlV0aWxzLmdldE1heFppbmRleCgpO1xyXG4gICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMubWluRGxnWmluZGV4ID4gMCAmJiBtYXhaaW5kZXggPCBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLm1pbkRsZ1ppbmRleClcclxuICAgICAgbWF4WmluZGV4ID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5taW5EbGdaaW5kZXg7XHJcbiAgICB2YXIgeiA9IHppbmRleCA9PSBudWxsID8gbWF4WmluZGV4ICsgMTAgOiB6aW5kZXg7XHJcbiAgICB0aGlzLmRpYWxvZy5hbHBoYSA9IDA7XHJcbiAgICB0aGlzLmRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5kaWFsb2dtYXNrLnN0eWxlLm1pbkhlaWdodCA9ICcxMDAlJztcclxuICAgIHRoaXMuZGlhbG9nbWFzay5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XHJcbiAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICBpZiAoeiA+IDApIHtcclxuICAgICAgdGhpcy5kaWFsb2dtYXNrLnN0eWxlLnpJbmRleCA9IHogKyAxO1xyXG4gICAgICB0aGlzLmRpYWxvZy5zdHlsZS56SW5kZXggPSB6ICsgMjtcclxuICAgIH1cclxuICAgIGlmICghbW9kYWwpIHtcclxuICAgICAgdGhpcy5kaWFsb2cuc3R5bGUuekluZGV4ID0geiArIDE7XHJcbiAgICAgIHRoaXMuZGlhbG9nbWFzay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nLnN0eWxlLmJvcmRlckNvbG9yID0gbW9kYWwgPyAnI2ZmZicgOiBKU0RyYXcyLlNraW4uZGlhbG9nLmJrY29sb3I7XHJcblxyXG4gICAgaWYgKHNjaWxsaWdlbmNlLlV0aWxzLmlzVG91Y2ggfHwgaW1tZWRpYXRlbHkpIHtcclxuICAgICAgZG9qby5zdHlsZSh0aGlzLmRpYWxvZywge2Rpc3BsYXk6ICcnLCBvcGFjaXR5OiAxLjAwLCBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PTEwMCknfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2pvLnN0eWxlKHRoaXMuZGlhbG9nLCB7ZGlzcGxheTogJycsIG9wYWNpdHk6IC4wMCwgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0wKSd9KTtcclxuICAgICAgdGhpcy5kaWFsb2cudGltZXIgPSBzZXRJbnRlcnZhbCgnc2NpbC5EaWFsb2cuZ2V0KFxcJycgKyB0aGlzLmlkICsgJ1xcJykuZmFkZSgxKScsIHNjaWwuRGlhbG9nLmtUaW1lcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vdmVDZW50ZXIoKTtcclxuICAgIHNjaWwuRGlhbG9nLnN0YWNrLnB1c2godGhpcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3NjaWxmb3JtICYmIHRoaXMuZm9ybSAhPSBudWxsICYmIHRoaXMuZm9ybS5maWVsZHMgIT0gbnVsbClcclxuICAgICAgdGhpcy5mb3JtLmZvY3VzKCk7XHJcbiAgfSxcclxuXHJcbiAgc2V0VGl0bGU6IGZ1bmN0aW9uKHRpdGxlKSB7XHJcbiAgICB0aGlzLmRpYWxvZy50aXRsZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5sYW5nLnJlcyh0aXRsZSk7XHJcbiAgfSxcclxuXHJcbiAgbW92ZUNlbnRlcjogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgZCA9IGRvam8ud2luZG93LmdldEJveCgpO1xyXG4gICAgdmFyIHdpZHRoID0gZC53O1xyXG4gICAgdmFyIGhlaWdodCA9IGQuaDtcclxuICAgIHZhciBsZWZ0ID0gZC5sO1xyXG4gICAgdmFyIHRvcCA9IGQudDtcclxuICAgIHZhciBkaWFsb2d3aWR0aCA9IHRoaXMuZGlhbG9nLm9mZnNldFdpZHRoO1xyXG4gICAgdmFyIGRpYWxvZ2hlaWdodCA9IHRoaXMuZGlhbG9nLm9mZnNldEhlaWdodDtcclxuICAgIHZhciB0b3Bwb3NpdGlvbiA9IE1hdGgucm91bmQodG9wICsgKGhlaWdodCAtIGRpYWxvZ2hlaWdodCkgLyAyKTtcclxuICAgIHZhciBsZWZ0cG9zaXRpb24gPSBNYXRoLnJvdW5kKGxlZnQgKyAod2lkdGggLSBkaWFsb2d3aWR0aCkgLyAyKTtcclxuXHJcbiAgICBkb2pvLnN0eWxlKHRoaXMuZGlhbG9nLCB7dG9wOiBNYXRoLm1heCh0b3AsIHRvcHBvc2l0aW9uKSArICdweCcsIGxlZnQ6IE1hdGgubWF4KGxlZnQsIGxlZnRwb3NpdGlvbikgKyAncHgnfSk7XHJcbiAgICB0aGlzLnNjcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVXaWR0aCgpO1xyXG4gIH0sXHJcblxyXG4gIF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nICE9IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgdmFyIHRvcEJvZHkgPSB0aGlzLnBhcmVudFdpbmRvdy5kb2N1bWVudC5ib2R5O1xyXG4gICAgdmFyIHppID0gMjAwO1xyXG4gICAgdmFyIHRib2R5ID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlVGFibGUodG9wQm9keSwgMCwgMCwge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLCBib3JkZXJSYWRpdXM6ICczcHgnLCB3aWR0aDogdywgaGVpZ2h0OiBoLCB6SW5kZXg6IHppLCBiYWNrZ3JvdW5kQ29sb3I6IEpTRHJhdzIuU2tpbi5kaWFsb2cuYmtjb2xvciwgYm9yZGVyOiBKU0RyYXcyLlNraW4uZGlhbG9nLmJvcmRlcn0pO1xyXG4gICAgdGhpcy5kaWFsb2cgPSB0Ym9keS5wYXJlbnROb2RlO1xyXG4gICAgdGhpcy5kaWFsb2cuc2V0QXR0cmlidXRlKCdfX3NjaWxsaWdlbmNlX2RsZycsIHRoaXMuaWQpO1xyXG5cclxuICAgIHZhciB0ciwgdGQ7XHJcbiAgICB2YXIgYm9yZGVydG9wID0gJzAnO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpdGxlKSB7XHJcbiAgICAgIGJvcmRlcnRvcCA9ICc1cHgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHIgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInLCBudWxsLCB7aGVpZ2h0OiAnMzBweCd9KTtcclxuICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCB0aGlzLmxhbmcucmVzKHRoaXMudGl0bGUpLCB7cGFkZGluZ0xlZnQ6ICc1cHgnLCBmb250V2VpZ2h0OiAnYm9sZCcsIGNvbG9yOiBzY2lsLkFwcCA9PSBudWxsIHx8IHNjaWwuQXBwLmNvbmZpZyA9PSBudWxsID8gJycgOiBzY2lsLkFwcC5jb25maWcudGV4dH0pO1xyXG4gICAgICB0aGlzLmRpYWxvZy50aXRsZUVsZW1lbnQgPSB0ZDtcclxuICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCB7dGV4dEFsaWduOiAncmlnaHQnLCB2ZXJ0aWNhbEFsaWduOiAndG9wJ30pO1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5ub2Nsb3NlKSB7XHJcbiAgICAgICAgdmFyIGltZyA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdpbWcnLCBudWxsLCB7Y3Vyc29yOiAncG9pbnRlcicsIG1hcmdpblJpZ2h0OiAnNXB4J30sIHt0aXRsZTogSlNEcmF3Mi5MYW5ndWFnZS5yZXMoJ0Nsb3NlJyksIHNyYzogc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9kbGdjbG9zZS5qcGcnKX0pO1xyXG4gICAgICAgIGRvam8uY29ubmVjdChzY2lsbGlnZW5jZS5VdGlscy5pc0lwYWQgPyB0ZCA6IGltZywgJ29uY2xpY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICBtZS5oaWRlKCk7XHJcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubW92YWJsZSAhPSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChzY2lsbGlnZW5jZS5VdGlscy5pc1RvdWNoKSB7XHJcbiAgICAgICAgICBkb2pvLmNvbm5lY3QodHIsICdvbnRvdWNoc3RhcnQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09IDEpIG1lLnN0YXJ0TW92ZShlLnRvdWNoZXNbMF0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkb2pvLmNvbm5lY3QodG9wQm9keSwgJ29udG91Y2htb3ZlJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PSAxICYmIG1lLm1vdmUoZS50b3VjaGVzWzBdKSkge1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZG9qby5jb25uZWN0KHRvcEJvZHksICdvbnRvdWNoZW5kJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIG1lLmVuZE1vdmUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0ci5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7XHJcbiAgICAgICAgICBkb2pvLmNvbm5lY3QodHIsICdvbm1vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgbWUuc3RhcnRNb3ZlKGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkb2pvLmNvbm5lY3QodG9wQm9keSwgJ29ubW91c2Vtb3ZlJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICBtZS5tb3ZlKGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkb2pvLmNvbm5lY3QodG9wQm9keSwgJ29ubW91c2V1cCcsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBtZS5lbmRNb3ZlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgbnVsbCwge3BhZGRpbmc6IGJvcmRlcnRvcCArICcgNXB4IDVweCA1cHgnfSk7XHJcbiAgICB0ZC5jb2xTcGFuID0gMjtcclxuXHJcbiAgICB2YXIgdyA9IHRoaXMub3B0aW9ucy53aWR0aDtcclxuICAgIHZhciBoID0gdGhpcy5vcHRpb25zLmhlaWdodDtcclxuICAgIHZhciBzdHlsZSA9IHtiYWNrZ3JvdW5kOiAnI2ZmZicsIHBhZGRpbmc6ICc1cHgnfTtcclxuICAgIGlmICh3ID4gMCB8fCBoID4gMClcclxuICAgICAgc2NpbC5hcHBseShzdHlsZSwge3dpZHRoOiB3ID4gMCA/IHcgOiBudWxsLCBoZWlnaHQ6IGggPiAwID8gaCA6IG51bGwsIG92ZXJmbG93OiAnc2Nyb2xsJ30pO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYm9keXN0eWxlICE9IG51bGwpXHJcbiAgICAgIHNjaWwuYXBwbHkoc3R5bGUsIHRoaXMub3B0aW9ucy5ib2R5c3R5bGUpO1xyXG5cclxuICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdkaXYnLCBudWxsLCBzdHlsZSk7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuYm9keSA9PSAnc3RyaW5nJylcclxuICAgICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2PicgKyB0aGlzLmJvZHkgKyAnPC9kaXY+JztcclxuICAgIGVsc2VcclxuICAgICAgZGl2LmFwcGVuZENoaWxkKHRoaXMuYm9keSk7XHJcblxyXG4gICAgdmFyIG9wYWNpdHkgPSB0aGlzLm9wdGlvbnMub3BhY2l0eSA+IDAgPyB0aGlzLm9wdGlvbnMub3BhY2l0eSA6IDc1O1xyXG4gICAgdGhpcy5kaWFsb2dtYXNrID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudCh0b3BCb2R5LCAnZGl2JywgbnVsbCwge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLCB0b3A6ICcwJywgbGVmdDogJzAnLCBtaW5IZWlnaHQ6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScsIGJhY2tncm91bmQ6ICcjOTk5Jywgb3BhY2l0eTogb3BhY2l0eSAvIDEwMC4wLCBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PScgKyBvcGFjaXR5ICsgJyknLCB6SW5kZXg6IHppIC0gMX0pO1xyXG4gICAgZG9qby5jb25uZWN0KHdpbmRvdywgJ29ucmVzaXplJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgIG1lLnJlc2l6ZSgpO1xyXG4gICAgfSk7XHJcbiAgICBkb2pvLmNvbm5lY3Qod2luZG93LCAnb25zY3JvbGwnLCBmdW5jdGlvbigpIHtcclxuICAgICAgbWUuc2Nyb2xsKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBidWc6IEkjNTc2M1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5maXh0cmFuc3BhcmVudGlzc3VlICYmIGRvam94LmdmeC5yZW5kZXJlciA9PSAnc2lsdmVybGlnaHQnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nbWFzay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG4gICAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUub3BhY2l0eSA9ICcxLjAnO1xyXG4gICAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUuZmlsdGVyID0gJ2FscGhhKG9wYWNpdHk9MTAwKSc7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgc2Nyb2xsOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5pc1Zpc2libGUoKSB8fCB0aGlzLmRpYWxvZ21hc2sgPT0gbnVsbCB8fCB0aGlzLmRpYWxvZ21hc2suc3R5bGUuZGlzcGxheSA9PSAnbm9uZScpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHZhciBkID0gZG9qby53aW5kb3cuZ2V0Qm94KCk7XHJcbiAgICB2YXIgcmlnaHQgPSBNYXRoLm1heChkLncgKyBkLmwsIHRoaXMuZGlhbG9nLm9mZnNldExlZnQgKyB0aGlzLmRpYWxvZy5vZmZzZXRXaWR0aCk7XHJcbiAgICB2YXIgYm90dG9tID0gTWF0aC5tYXgoZC5oICsgZC50LCB0aGlzLmRpYWxvZy5vZmZzZXRUb3AgKyB0aGlzLmRpYWxvZy5vZmZzZXRIZWlnaHQpO1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nbWFzay5vZmZzZXRXaWR0aCA8PSByaWdodClcclxuICAgICAgdGhpcy5kaWFsb2dtYXNrLnN0eWxlLndpZHRoID0gcmlnaHQgKyAncHgnO1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nbWFzay5vZmZzZXRIZWlnaHQgPD0gYm90dG9tKVxyXG4gICAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUuaGVpZ2h0ID0gYm90dG9tICsgJ3B4JztcclxuICB9LFxyXG5cclxuICByZXNpemU6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5zY3JvbGwoKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIHRoZSBkaWFsb2cgdG8gYSBuZXcgcG9zaXRpb25cclxuICAgKiBAZnVuY3Rpb24gbW92ZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHlcclxuICAgKi9cclxuICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpIHtcclxuICAgIHNjaWwuVXRpbHMubW92ZVRvU2NyZWVuKHgsIHksIHRoaXMuZGlhbG9nKTtcclxuICB9LFxyXG5cclxuICBzdGFydE1vdmU6IGZ1bmN0aW9uKGUpIHtcclxuICAgIHRoaXMubW92aW5nU3QgPSBudWxsO1xyXG4gICAgdmFyIHNyYyA9IGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldDtcclxuICAgIGlmIChzcmMudGFnTmFtZSA9PSAnSU1HJylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5tb3ZpbmdTdCA9IG5ldyBKU0RyYXcyLlBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcclxuICB9LFxyXG5cclxuICBtb3ZlOiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5tb3ZpbmdTdCA9PSBudWxsIHx8IChlLndoaWNoIHx8IGUuYnV0dG9uKSAhPSAxKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIGRlbHRhID0gbmV3IEpTRHJhdzIuUG9pbnQoZS5jbGllbnRYIC0gdGhpcy5tb3ZpbmdTdC54LCBlLmNsaWVudFkgLSB0aGlzLm1vdmluZ1N0LnkpO1xyXG4gICAgdmFyIHRvcCA9IHNjaWxsaWdlbmNlLlV0aWxzLnBhcnNlUGl4ZWwodGhpcy5kaWFsb2cuc3R5bGUudG9wKSArIGRlbHRhLnk7XHJcbiAgICB2YXIgbGVmdCA9IHNjaWxsaWdlbmNlLlV0aWxzLnBhcnNlUGl4ZWwodGhpcy5kaWFsb2cuc3R5bGUubGVmdCkgKyBkZWx0YS54O1xyXG4gICAgdGhpcy5tb3ZlVG8obGVmdCwgdG9wKTtcclxuXHJcbiAgICB0aGlzLm1vdmluZ1N0ID0gbmV3IEpTRHJhdzIuUG9pbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfSxcclxuXHJcbiAgZW5kTW92ZTogZnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLm1vdmluZ1N0ID0gbnVsbDtcclxuICB9LFxyXG5cclxuICB1cGRhdGVXaWR0aDogZnVuY3Rpb24oZikge1xyXG4gICAgdGhpcy5kaWFsb2cuc3R5bGUud2lkdGggPSAodGhpcy5kaWFsb2cuZmlyc3RDaGlsZC5maXJzdENoaWxkLm9mZnNldFdpZHRoICsgMikgKyAncHgnO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgZGlhbG9nXHJcbiAgICogQGZ1bmN0aW9uIGhpZGVcclxuICAgKiBAcGFyYW0ge2Jvb2x9IGltbWVkaWF0ZWx5IC0gc2V0IHRoaXMgdG8gdHJ1ZSB0byBza2lwIGZhZGluZyBhbmltYXRpb25cclxuICAgKi9cclxuICBoaWRlOiBmdW5jdGlvbihpbW1lZGlhdGVseSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmhpZGUgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uaGlkZSgpO1xyXG5cclxuICAgIGlmICghKHNjaWwuRGlhbG9nLmtUaW1lciA+IDApKVxyXG4gICAgICBpbW1lZGlhdGVseSA9IHRydWU7XHJcblxyXG4gICAgaWYgKGltbWVkaWF0ZWx5IHx8IHNjaWxsaWdlbmNlLlV0aWxzLmlzVG91Y2gpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGlhbG9nICE9IG51bGwpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuZGlhbG9nLnRpbWVyKTtcclxuICAgICAgICB0aGlzLmRpYWxvZy50aW1lciA9IHNldEludGVydmFsKCdzY2lsLkRpYWxvZy5nZXQoXFwnJyArIHRoaXMuaWQgKyAnXFwnKS5mYWRlKDApJywgc2NpbC5EaWFsb2cua1RpbWVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNjaWwuRGlhbG9nLnN0YWNrLnBvcCgpO1xyXG4gICAgc2NpbC5BdXRvQ29tcGxldGUuaGlkZUFsbCgpO1xyXG4gIH0sXHJcblxyXG4gIGNsb3NlOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZyA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmRpYWxvZy50aW1lcik7XHJcbiAgICB0aGlzLmRpYWxvZy50aW1lciA9IG51bGw7XHJcbiAgICB0aGlzLmRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgdGhpcy5kaWFsb2dtYXNrLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB0aGlzLmRpYWxvZ21hc2suc3R5bGUud2lkdGggPSAnMHB4JztcclxuICAgIHRoaXMuZGlhbG9nbWFzay5zdHlsZS5oZWlnaHQgPSAnMHB4JztcclxuICB9LFxyXG5cclxuICBmYWRlOiBmdW5jdGlvbihmbGFnKSB7XHJcbiAgICBpZiAoZmxhZyA9PSBudWxsKVxyXG4gICAgICBmbGFnID0gMTtcclxuXHJcbiAgICB2YXIgdmFsdWUgPSBmbGFnID09IDEgPyB0aGlzLmRpYWxvZy5hbHBoYSArIHNjaWwuRGlhbG9nLmtTcGVlZCA6IHRoaXMuZGlhbG9nLmFscGhhIC0gc2NpbC5EaWFsb2cua1NwZWVkO1xyXG4gICAgdGhpcy5kaWFsb2cuYWxwaGEgPSB2YWx1ZTtcclxuICAgIGRvam8uc3R5bGUodGhpcy5kaWFsb2csIHtvcGFjaXR5OiB2YWx1ZSAvIDEwMCwgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0nICsgdmFsdWUgKyAnKSd9KTtcclxuXHJcbiAgICBpZiAodmFsdWUgPj0gOTkpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmRpYWxvZy50aW1lcik7XHJcbiAgICAgIHRoaXMuZGlhbG9nLnRpbWVyID0gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfSxcclxufSk7XHJcblxyXG5zY2lsLmFwcGx5KHNjaWwuRGlhbG9nLCB7XHJcbiAgc3RhY2s6IFtdLFxyXG4gIGtUaW1lcjogMTAsXHJcbiAga1NwZWVkOiA0MCxcclxuXHJcbiAga2V5ZG93bjogZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKGUua2V5Q29kZSA9PSAyNyAmJiB0aGlzLnN0YWNrLmxlbmd0aCA+IDApXHJcbiAgICAgIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXS5oaWRlKCk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBEaWFsb2cgb2JqZWN0IGJ5IGl0cyBJRFxyXG4gICAqIEBmdW5jdGlvbiB7c3RhdGljfSBnZXRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGUgZGlhbG9nIElEXHJcbiAgICovXHJcbiAgZ2V0OiBmdW5jdGlvbihpZCkge1xyXG4gICAgaWYgKHNjaWwuRGlhbG9nLl9hbGxpdGVtcyA9PSBudWxsKVxyXG4gICAgICBzY2lsLkRpYWxvZy5fYWxsaXRlbXMgPSB7fTtcclxuICAgIHJldHVybiBzY2lsLkRpYWxvZy5fYWxsaXRlbXNbaWRdO1xyXG4gIH0sXHJcblxyXG4gIGdldERpYWxvZzogZnVuY3Rpb24oZSkge1xyXG4gICAgd2hpbGUgKGUgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgdCA9IHNjaWwuVXRpbHMuZ2V0UGFyZW50KGUsICdUQUJMRScpO1xyXG4gICAgICBpZiAodCA9PSBudWxsKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgdmFyIGlkID0gdC5nZXRBdHRyaWJ1dGUoJ19fc2NpbGxpZ2VuY2VfZGxnJyk7XHJcbiAgICAgIGlmIChpZCAhPSBudWxsKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldChpZCk7XHJcbiAgICAgIGUgPSB0LnBhcmVudE5vZGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9LFxyXG59KTtcclxuXHJcbnNjaWwub25sb2FkKGZ1bmN0aW9uKCkge1xyXG4gIGRvam8uY29ubmVjdChkb2N1bWVudC5ib2R5LCAnb25rZXlkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgc2NpbC5EaWFsb2cua2V5ZG93bihlKTtcclxuICB9KTtcclxufSk7XHJcblxyXG5cclxuSnNEaWFsb2cgPSBKU0RyYXcyLkRpYWxvZyA9IHNjaWwuRGlhbG9nO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5zY2lsLkRuRCA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24ocGFyZW50LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnRE5EJztcclxuICAgIHRoaXMuc3JjID0gbnVsbDtcclxuICAgIHRoaXMuY29weSA9IG51bGw7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IHNjaWwuYnlJZChwYXJlbnQpO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBkb2pvLmNvbm5lY3QocGFyZW50LCAnb25tb3VzZWRvd24nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIGlmICghbWUuZGlzYWJsZWQpIG1lLm1vdXNlZG93bihlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGRvam8uY29ubmVjdChkb2N1bWVudC5ib2R5LCAnb25tb3VzZW1vdmUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIGlmICghbWUuZGlzYWJsZWQpIG1lLm1vdXNlbW92ZShlKTtcclxuICAgIH0pO1xyXG4gICAgZG9qby5jb25uZWN0KGRvY3VtZW50LmJvZHksICdvbm1vdXNldXAnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIGlmICghbWUuZGlzYWJsZWQpIG1lLm1vdXNldXAoZSk7XHJcbiAgICB9KTtcclxuICB9LFxyXG5cclxuICBpc0RyYWdnaW5nOiBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmRyYWdnaW5nO1xyXG4gIH0sXHJcblxyXG4gIGNhbmNlbDogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zcmMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uY2FuY2VsICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm9uY2FuY2VsKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3JjID0gbnVsbDtcclxuICAgIHRoaXMuY29weSA9IG51bGw7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfSxcclxuXHJcbiAgbW91c2Vkb3duOiBmdW5jdGlvbihlLCBzcmMpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25zdGFydGRyYWcgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNyYyA9IHRoaXMub3B0aW9ucy5vbnN0YXJ0ZHJhZyhlLCB0aGlzKTtcclxuICAgICAgdGhpcy5zdGFydHBvcyA9IHt4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WX07XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgbW91c2Vtb3ZlOiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5zcmMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmNvcHkgPT0gbnVsbCAmJiAoTWF0aC5hYnMoZS5jbGllbnRYIC0gdGhpcy5zdGFydHBvcy54KSA+IDEwIHx8IE1hdGguYWJzKGUuY2xpZW50WSAtIHRoaXMuc3RhcnRwb3MueSkgPiAxMCkpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbmNyZWF0ZWNvcHkgIT0gbnVsbClcclxuICAgICAgICB0aGlzLmNvcHkgPSB0aGlzLm9wdGlvbnMub25jcmVhdGVjb3B5KGUsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvcHkgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgc2Nyb2xsID0gc2NpbC5VdGlscy5zY3JvbGxPZmZzZXQoKTtcclxuICAgICAgdGhpcy5jb3B5LnN0eWxlLmxlZnQgPSAoZS5jbGllbnRYICsgc2Nyb2xsLnggKyAyKSArICdweCc7XHJcbiAgICAgIHRoaXMuY29weS5zdHlsZS50b3AgPSAoZS5jbGllbnRZICsgc2Nyb2xsLnkgKyAyKSArICdweCc7XHJcblxyXG4gICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uZHJhZ292ZXIgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uZHJhZ292ZXIoZSwgdGhpcyk7XHJcbiAgfSxcclxuXHJcbiAgbW91c2V1cDogZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKHRoaXMuc3JjICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbmRyb3AgIT0gbnVsbClcclxuICAgICAgICB0aGlzLm9wdGlvbnMub25kcm9wKGUsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3JjID0gbnVsbDtcclxuICAgIHRoaXMuY29weSA9IG51bGw7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfSxcclxufSk7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8qKlxyXG4qIERyb3Bkb3duQnV0dG9uIGNsYXNzXHJcbiogQGNsYXNzIHNjaWxsaWdlbmNlLkRyb3Bkb3duQnV0dG9uXHJcbiogPHByZT5cclxuKiA8Yj5FeGFtcGxlOjwvYj5cclxuKiAgICAmbHQ7YnV0dG9uIGlkPSdkJyZndDtTZWxlY3QgQ2l0eSZsdDsvYnV0dG9uJmd0O1xyXG4qICAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiJmd0O1xyXG4qICAgICAgICBzY2lsLnJlYWR5KGZ1bmN0aW9uICgpIHtcclxuKiAgICAgICAgICAgIG5ldyBzY2lsLkRyb3Bkb3duQnV0dG9uKCdkJywgeyBpdGVtczogW1wiQm9zdG9uXCIsIFwiTmV3IFlvcmtcIiwgXCJMb25kb25cIl0sXHJcbiogICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChjaXR5KSB7IGFsZXJ0KGNpdHkpOyB9IH0pO1xyXG4qICAgICAgICB9KTtcclxuKiAgICAmbHQ7L3NjcmlwdCZndDtcclxuKiA8L3ByZT5cclxuKi9cclxuc2NpbGxpZ2VuY2UuRHJvcGRvd25CdXR0b24gPSBzY2lsbGlnZW5jZS5leHRlbmQoc2NpbGxpZ2VuY2UuX2Jhc2UsIHtcclxuICAgIC8qKlxyXG4gICAgKiBAY29uc3RydWN0b3IgRHJvcGRvd25CdXR0b25cclxuICAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBidXR0b24gLSB0aGUgQlVUVE9OIGVsZW1lbnQgdG8gYmUgY29udmVydGVkXHJcbiAgICAqIEBwYXJhbSB7ZGljdH0gb3B0aW9ucyAtIHsgaXRlbXM6IFtdLCBjYWxsYmFjazogZnVuY3Rpb24oaXRlbSkge30gfVxyXG4gICAgKi9cclxuICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbiAoYnV0dG9uLCBvcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5UID0gXCJEUk9QRE9XTl9CVVRUT05cIjtcclxuICAgICAgICB0aGlzLmF1dG8gPSBudWxsO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuXHJcbiAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICB0aGlzLmJ1dHRvbiA9IHR5cGVvZiAoYnV0dG9uKSA9PSBcInN0cmluZ1wiID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYnV0dG9uKSA6IGJ1dHRvbjtcclxuICAgICAgICBkb2pvLmNvbm5lY3QodGhpcy5idXR0b24sIFwib25jbGlja1wiLCBmdW5jdGlvbiAoKSB7IG1lLnNob3coKTsgfSk7XHJcblxyXG4gICAgICAgIHZhciBzID0gdGhpcy5vcHRpb25zLmRyb3Bkb3duID09IG51bGwgPyBcIiYjOTY2MDtcIiA6IHRoaXMub3B0aW9ucy5kcm9wZG93bjtcclxuICAgICAgICBpZiAodGhpcy5idXR0b24udGFnTmFtZSA9PSAnVEFCTEUnKSB7XHJcbiAgICAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5idXR0b24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJURFwiKTtcclxuICAgICAgICAgICAgdmFyIHRkID0gbGlzdFtsaXN0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwic3BhblwiLCBzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZXhwYW5kcmlnaHQpXHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5idXR0b24sIFwic3BhblwiLCBzLCB7IGZvbnRTaXplOiBcIjcwJVwiIH0pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5idXR0b24sIFwic3BhblwiLCBzLCB7IGZvbnRTaXplOiBcIjcwJVwiIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgaXNWaXNpYmxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0byAhPSBudWxsICYmIHRoaXMuYXV0by5zdHlsZS5kaXNwbGF5ID09IFwiXCI7XHJcbiAgICB9LFxyXG5cclxuICAgIHNob3c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uc2hvd2Ryb3Bkb3duICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbnNob3dkcm9wZG93bih0aGlzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXV0byA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB3ID0gdGhpcy5vcHRpb25zLndpZHRoO1xyXG4gICAgICAgICAgICBpZiAoISh3ID4gMCkgJiYgc2NpbC5VdGlscy5pc0lFICYmIHNjaWwuVXRpbHMuaXNJRSA8PSA4KVxyXG4gICAgICAgICAgICAgICAgdyA9IDIwMDtcclxuXHJcbiAgICAgICAgICAgIHZhciBwb3MgPSBzY2lsLlV0aWxzLmlzRml4ZWRQb3NpdGlvbih0aGlzLmJ1dHRvbikgPyBcImZpeGVkXCIgOiBcImFic29sdXRlXCI7XHJcbiAgICAgICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUoZG9jdW1lbnQuYm9keSwgMCwgMSwgeyBib3JkZXJSYWRpdXM6IFwiMnB4XCIsIGJvcmRlcjogSlNEcmF3Mi5Ta2luLmRpYWxvZy5ib3JkZXIsIGJhY2tncm91bmRDb2xvcjogSlNEcmF3Mi5Ta2luLmRpYWxvZy5ia2NvbG9yLCBkaXNwbGF5OiBcIm5vbmVcIiwgcG9zaXRpb246IHBvcywgd2lkdGg6IHcgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0byA9IHRib2R5LnBhcmVudE5vZGU7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGl2ID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgXCJ0clwiKSwgXCJ0ZFwiLCBudWxsLCB7IHBhZGRpbmc6IFwiNXB4XCIgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXJlYSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiZGl2XCIsIG51bGwsIHsgYmFja2dyb3VuZENvbG9yOiBcIiNmZmZcIiB9KTtcclxuICAgICAgICAgICAgLy90aGlzLmF1dG8gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQuYm9keSwgXCJkaXZcIiwgbnVsbCwgeyBkaXNwbGF5OiBcIm5vbmVcIiwgYmFja2dyb3VuZENvbG9yOiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yID09IG51bGwgPyBcIndoaXRlXCIgOiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yLCBib3JkZXI6IFwic29saWQgMXB4IGdyYXlcIiwgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgd2lkdGg6IHcgfSk7XHJcblxyXG4gICAgICAgICAgICBkb2pvLmNvbm5lY3QoZG9jdW1lbnQuYm9keSwgXCJvbm1vdXNlZG93blwiLCBmdW5jdGlvbiAoZSkgeyB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0OyBpZiAoc3JjICE9IG1lLnEgJiYgIXNjaWwuVXRpbHMuaXNDaGlsZE9mKHNyYywgbWUuYXV0bykpIG1lLmNsaWNrb3V0KCk7IH0pO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QodGhpcy5vcHRpb25zLml0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucG9zaXRpb24oKTtcclxuICAgIH0sXHJcblxyXG4gICAgaGlkZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG8gIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgIH0sXHJcblxyXG4gICAgcG9zaXRpb246IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcCA9IHNjaWxsaWdlbmNlLlV0aWxzLmdldE9mZnNldCh0aGlzLmJ1dHRvbik7XHJcbiAgICAgICAgdmFyIHNjcm9sbCA9IHNjaWxsaWdlbmNlLlV0aWxzLnNjcm9sbE9mZnNldCgpO1xyXG4gICAgICAgIHZhciB6SW5kZXggPSBzY2lsLlV0aWxzLmdldFppbmRleCh0aGlzLmJ1dHRvbikgKyAxO1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLmlzSUUpIHtcclxuICAgICAgICAgICAgdmFyIHMyID0gSnNVdGlscy5nZXRTY3JvbGxPZmZzZXQodGhpcy5lKTtcclxuICAgICAgICAgICAgc2Nyb2xsLm9mZnNldCgtczIueCwgLXMyLnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHgsIHk7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5leHBhbmRyaWdodCkge1xyXG4gICAgICAgICAgICB4ID0gcC54ICsgc2Nyb2xsLnggKyB0aGlzLmJ1dHRvbi5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgeSA9IHAueSArIHNjcm9sbC55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgeCA9IHAueCArIHNjcm9sbC54O1xyXG4gICAgICAgICAgICB5ID0gcC55ICsgc2Nyb2xsLnkgKyB0aGlzLmJ1dHRvbi5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvam8uc3R5bGUodGhpcy5hdXRvLCB7IHpJbmRleDogekluZGV4LCBkaXNwbGF5OiBcIlwiLCB4OiAwLCB5OiAwIH0pO1xyXG4gICAgICAgIHNjaWwuVXRpbHMubW92ZVRvU2NyZWVuKHgsIHksIHRoaXMuYXV0byk7XHJcbiAgICB9LFxyXG5cclxuICAgIGxpc3Q6IGZ1bmN0aW9uIChpdGVtcykge1xyXG4gICAgICAgIGlmIChpdGVtcyA9PSBudWxsIHx8IGl0ZW1zLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSAhPSBcIlwiKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgbGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGl0ZW1zKVxyXG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKHsgbGFiZWw6IGl0ZW1zW2tdLCBrZXk6IGsgfSk7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gbGlzdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNjaWwuVXRpbHMucmVtb3ZlQWxsKHRoaXMuYXJlYSk7XHJcbiAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGlmIChpdGVtID09IFwiLVwiICYmIChpID09IDAgfHwgaXRlbXNbaSAtIDFdID09IFwiLVwiIHx8IGkgPT0gaXRlbXMubGVuZ3RoIC0gMSkpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVJdGVtKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY3JlYXRlSXRlbTogZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbSA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5hcmVhLCAnaHInLCBudWxsLCB7IG1hcmdpbjogMCwgcGFkZGluZzogMCwgYm9yZGVyQ29sb3I6IHNjaWwuQXBwLmNvbmZpZyA9PSBudWxsID8gbnVsbCA6IHNjaWwuQXBwLmNvbmZpZy5mcmFtZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaXRlbSkgPT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgaXRlbSA9IHsgbGFiZWw6IGl0ZW0gfTtcclxuXHJcbiAgICAgICAgdmFyIGxhYmVsID0gdGhpcy5vcHRpb25zLnRyYW5zbGF0ZSA/IHNjaWwuTGFuZy5yZXMoaXRlbS5sYWJlbCkgOiBpdGVtLmxhYmVsO1xyXG4gICAgICAgIGlmIChpdGVtLmtleSA9PSBudWxsICYmIGxhYmVsICE9IGl0ZW0ubGFiZWwpXHJcbiAgICAgICAgICAgIGl0ZW0ua2V5ID0gaXRlbS5sYWJlbDtcclxuXHJcbiAgICAgICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLmFyZWEsICdkaXYnLCBudWxsLCB7IHBhZGRpbmc6IFwiM3B4IDEwcHggM3B4IDEwcHhcIiwgY29sb3I6IEpTRHJhdzIuU2tpbi5tZW51LmNvbG9yLCBjdXJzb3I6IFwicG9pbnRlclwiIH0sIHsgdXJsOiBpdGVtLnVybCwga2V5OiBpdGVtLmtleSB9KTtcclxuXHJcbiAgICAgICAgdmFyIGRpdjIgPSBkaXY7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbXMgIT0gbnVsbCAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHRib2R5ID0gc2NpbC5VdGlscy5jcmVhdGVUYWJsZShkaXYsIDAsIDAsIHsgd2lkdGg6IFwiMTAwJVwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHksIFwidHJcIik7XHJcbiAgICAgICAgICAgIHZhciBkaXYyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIG51bGwsIHsgdGV4dEFsaWduOiBcImxlZnRcIiB9KTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIFwiJiM5NjU4O1wiLCB7IHBhZGRpbmdMZWZ0OiBcIjEwcHhcIiwgdGV4dEFsaWduOiBcInJpZ2h0XCIsIGZvbnRTaXplOiBcIjUwJVwiIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0ZW0uaWNvbiAhPSBudWxsKVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2MiwgXCJpbWdcIiwgbnVsbCwgeyBtYXJnaW5SaWdodDogXCI1cHhcIiB9LCB7IHNyYzogaXRlbS5pY29uIH0pO1xyXG4gICAgICAgIGlmIChsYWJlbCAhPSBudWxsKVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2MiwgXCJzcGFuXCIsIGxhYmVsKTtcclxuXHJcbiAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICBpZiAoaXRlbS5pdGVtcyAhPSBudWxsICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpdGVtLmV4cGFuZHJpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXRlbS5kcm9wZG93biA9IFwiXCI7XHJcbiAgICAgICAgICAgIG5ldyBzY2lsLkRyb3Bkb3duQnV0dG9uKGRpdiwgaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT0gbnVsbCAmJiBpdGVtLmxhYmVsICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICBpdGVtLmtleSA9IGl0ZW0ubGFiZWw7XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChkaXYsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoZSkgeyBpZiAoaXRlbS5vbmNsaWNrICE9IG51bGwpIGl0ZW0ub25jbGljaygpOyBtZS5jbGljayhlLCBkaXYpOyB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRvam8uY29ubmVjdChkaXYsIFwib25tb3VzZW92ZXJcIiwgZnVuY3Rpb24gKGUpIHsgbWUubW91c2VvdmVyKGUsIGRpdik7IH0pO1xyXG4gICAgICAgIGRvam8uY29ubmVjdChkaXYsIFwib25tb3VzZW91dFwiLCBmdW5jdGlvbiAoZSkgeyBtZS5tb3VzZW91dChlLCBkaXYpOyB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0SXRlbTogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0O1xyXG4gICAgICAgIGlmIChzcmMudGFnTmFtZSAhPSBcIkRJVlwiKVxyXG4gICAgICAgICAgICBzcmMgPSBzY2lsLlV0aWxzLmdldFBhcmVudChzcmMsIFwiRElWXCIpO1xyXG4gICAgICAgIHJldHVybiBzcmM7XHJcbiAgICB9LFxyXG5cclxuICAgIG1vdXNlb3ZlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB0aGlzLmdldEl0ZW0oZSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZGRmXCI7XHJcbiAgICAgICAgdGhpcy5nZXRJdGVtKGUpLnN0eWxlLmNvbG9yID0gSlNEcmF3Mi5Ta2luLm1lbnUuaGlnaGxpZ2h0Y29sb3I7XHJcbiAgICB9LFxyXG5cclxuICAgIG1vdXNlb3V0OiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHRoaXMuZ2V0SXRlbShlKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmZmZcIjtcclxuICAgICAgICB0aGlzLmdldEl0ZW0oZSkuc3R5bGUuY29sb3IgPSBKU0RyYXcyLlNraW4ubWVudS5jb2xvcjtcclxuICAgIH0sXHJcblxyXG4gICAgY2xpY2tvdXQ6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGNsaWNrOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBzcmMgPSB0aGlzLmdldEl0ZW0oZSk7XHJcbiAgICAgICAgdmFyIHVybCA9IHNyYy5nZXRBdHRyaWJ1dGUoXCJ1cmxcIik7XHJcbiAgICAgICAgdmFyIGtleSA9IHNyYy5nZXRBdHRyaWJ1dGUoXCJrZXlcIik7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jYWxsYmFjayAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2FsbGJhY2soa2V5ID09IG51bGwgfHwga2V5ID09IFwiXCIgPyBzcmMuaW5uZXJUZXh0IHx8IHNyYy50ZXh0Q29udGVudCA6IGtleSwgdXJsKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMub25jbGljayAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMub25jbGljayhrZXkgPT0gbnVsbCB8fCBrZXkgPT0gXCJcIiA/IHNyYy5pbm5lclRleHQgfHwgc3JjLnRleHRDb250ZW50IDoga2V5LCB1cmwpO1xyXG4gICAgICAgIGVsc2UgaWYgKHVybCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFyZ2V0ID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSB1cmw7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybCwgdGhpcy5vcHRpb25zLnRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfVxyXG59KTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLyoqXHJcbiAqIERyb3Bkb3duSW5wdXQgY2xhc3NcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLkRyb3Bkb3duSW5wdXRcclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgICZsdDtpbnB1dCBpZD0nZCcvJmd0O1xyXG4gKiAgICAmbHQ7c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiZndDtcclxuICogICAgICAgIHNjaWwucmVhZHkoZnVuY3Rpb24gKCkge1xyXG4gKiAgICAgICAgICAgIG5ldyBzY2lsLkRyb3Bkb3duSW5wdXQoJ2QnLCB7IGl0ZW1zOiBbXCJCb3N0b25cIiwgXCJOZXcgWW9ya1wiLCBcIkxvbmRvblwiXSxcclxuICogICAgICAgICAgICAgICAgb25jbGlja2l0ZW06IGZ1bmN0aW9uIChjaXR5KSB7IGFsZXJ0KGNpdHkpOyB9XHJcbiAqICAgICAgICAgICAgfSk7XHJcbiAqICAgICAgICB9KTtcclxuICogICAgJmx0Oy9zY3JpcHQmZ3Q7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuXHJcbi8vIFRPRE86IFJlY292ZXIgc3R5bGVcclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3NjaWxsaWdlbmNlL0pTRHJhdy5MaXRlL2lzc3Vlcy80XHJcbi8vIGRvY3VtZW50LndyaXRlKCc8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+aW5wdXQuX3NjaWxfZHJvcGRvd246Oi1tcy1jbGVhciB7ZGlzcGxheTogbm9uZTt9PC9zdHlsZT4nKTtcclxuXHJcbnNjaWwuRHJvcGRvd25JbnB1dCA9IHNjaWwuZXh0ZW5kKHNjaWxsaWdlbmNlLl9iYXNlLCB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIERyb3Bkb3duSW5wdXRcclxuICAgKiBAcGFyYW0ge3N0cmluZyBvciBET019IGlucHV0IC0gdGhlIElOUFVUIGVsZW1lbnQgdG8gYmUgY29udmVydGVkXHJcbiAgICogQHBhcmFtIHtkaWN0fSBvcHRpb25zIC0geyBpdGVtczogW10sIG92ZXJ3cml0ZTogdHJ1ZS9mYWxzZSwgb25jbGlja2l0ZW06IGZ1bmN0aW9uKGl0ZW0pIHt9LCBvbnN1Z2dlc3Q6IGZ1bmN0aW9uKGFyZ3MpIHt9LCBhdWd0byB9XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnRFJPUERPV05fSU5QVVQnO1xyXG4gICAgdGhpcy5hdXRvID0gbnVsbDtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuICAgIHRoaXMuaW5wdXQgPSB0eXBlb2YgKGlucHV0KSA9PSAnc3RyaW5nJyA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0KSA6IGlucHV0O1xyXG4gICAgdGhpcy5pdGVtc2NoYW5nZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWdpZCA9IDA7XHJcbiAgICB0aGlzLnN1Z2dlc3RsZW5ndGggPSB0aGlzLm9wdGlvbnMuc3VnZ2VzdGxlbmd0aCA+IDAgPyB0aGlzLm9wdGlvbnMuc3VnZ2VzdGxlbmd0aCA6IDE7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvc3VnZ2VzdCA9PSAnJylcclxuICAgICAgdGhpcy5vcHRpb25zLmF1dG9zdWdnZXN0ID0gbnVsbDtcclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5pbnB1dC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYgJyArIHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvZHJvcGRvd24uZ2lmJywgdHJ1ZSkgKyAnIG5vLXJlcGVhdCByaWdodCBjZW50ZXInO1xyXG4gICAgdGhpcy5pbnB1dC5zdHlsZS5ib3JkZXIgPSAnc29saWQgMXB4ICM5OTknO1xyXG4gICAgdGhpcy5pbnB1dC5zdHlsZS5wYWRkaW5nID0gJzJweCc7XHJcbiAgICB0aGlzLmlucHV0LmNsYXNzTmFtZSA9ICdfc2NpbF9kcm9wZG93bic7XHJcbiAgICB0aGlzLnVwZGF0ZVJlYWRvbmx5KCk7XHJcblxyXG4gICAgZG9qby5jb25uZWN0KHRoaXMuaW5wdXQsICdvbmtleXVwJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICBtZS5rZXl1cChlKTtcclxuICAgIH0pO1xyXG4gICAgZG9qby5jb25uZWN0KHRoaXMuaW5wdXQsICdvbmNsaWNrJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICBtZS5jbGlja01lKGUpO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuXHJcbiAgdXBkYXRlRHJvcGRvd246IGZ1bmN0aW9uKHJlYWRvbmx5KSB7XHJcbiAgICBpZiAocmVhZG9ubHkgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMucmVhZG9ubHkgPSByZWFkb25seTtcclxuICAgICAgdGhpcy51cGRhdGVSZWFkb25seSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnB1dC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSB0aGlzLm9wdGlvbnMuaXRlbXMgPT0gbnVsbCA/ICcnIDogc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9kcm9wZG93bi5naWYnLCB0cnVlKTtcclxuICB9LFxyXG5cclxuICB1cGRhdGVSZWFkb25seTogZnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLmlucHV0LnJlYWRPbmx5ID0gdGhpcy5vcHRpb25zLnJlYWRvbmx5O1xyXG4gICAgdGhpcy5pbnB1dC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm9wdGlvbnMucmVhZG9ubHkgPyAnI2VlZScgOiAnI2ZmZic7XHJcbiAgfSxcclxuXHJcbiAga2V5dXA6IGZ1bmN0aW9uKGUpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaW5wdXQgPT0gbnVsbCB8fCB0aGlzLm9wdGlvbnMuYXV0b3N1Z2dlc3QgPT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMub25GaWx0ZXIgPT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuaXRlbXMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVhZG9ubHkpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5pdGVtcyAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0KGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXQudmFsdWUubGVuZ3RoIDwgdGhpcy5zdWdnZXN0bGVuZ3RoIHx8IGUua2V5Q29kZSA9PSA5IHx8IGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICBpZiAodGhpcy5hdXRvICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgc3VnaWQgPSArK3RoaXMuc3VnaWQ7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uRmlsdGVyICE9IG51bGwpIHtcclxuICAgICAgdmFyIHJldCA9IHRoaXMub3B0aW9ucy5vbkZpbHRlcih0aGlzLmlucHV0LnZhbHVlKTtcclxuICAgICAgdGhpcy5saXN0KHJldCwgc3VnaWQpO1xyXG4gICAgICB0aGlzLml0ZW1zY2hhbmdlZCA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHNjaWwuVXRpbHMuc3RhcnRzd2l0aCh0aGlzLm9wdGlvbnMuYXV0b3N1Z2dlc3QsICdkYXRhOicpKSB7XHJcbiAgICAgIC8vIGxvY2FsIGRhdGFcclxuICAgICAgdmFyIHJldCA9IHRoaXMuZmlsdGVybGlzdCh0aGlzLm9wdGlvbnMuYXV0b3N1Z2dlc3Quc3Vic3RyKDUpLnNwbGl0KCcsJyksIHRoaXMuaW5wdXQudmFsdWUpO1xyXG4gICAgICB0aGlzLmxpc3QocmV0LCBzdWdpZCk7XHJcbiAgICAgIHRoaXMuaXRlbXNjaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKHRoaXMub3B0aW9ucy5hdXRvc3VnZ2VzdCwgJ2phdmFzY3JpcHQ6JykpIHtcclxuICAgICAgdmFyIHMgPSB0aGlzLm9wdGlvbnMuYXV0b3N1Z2dlc3Quc3Vic3RyKDExKTtcclxuICAgICAgdmFyIGZuID0gc2NpbC5VdGlscy5ldmFsKHMpO1xyXG4gICAgICB2YXIgaXRlbXMgPSBmbih0aGlzKTtcclxuXHJcbiAgICAgIHZhciByZXQgPSB0aGlzLmZpbHRlcmxpc3QoaXRlbXMsIHRoaXMuaW5wdXQudmFsdWUpO1xyXG4gICAgICB0aGlzLmxpc3QocmV0LCBzdWdpZCk7XHJcbiAgICAgIHRoaXMuaXRlbXNjaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLml0ZW1zICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmF1dG9zdWdnZXN0ID09IG51bGwpIHtcclxuICAgICAgLy8gbG9jYWwgZGF0YVxyXG4gICAgICB2YXIgcmV0ID0gdGhpcy5maWx0ZXJsaXN0KHRoaXMub3B0aW9ucy5pdGVtcywgdGhpcy5pbnB1dC52YWx1ZSk7XHJcbiAgICAgIHRoaXMubGlzdChyZXQsIHN1Z2lkKTtcclxuICAgICAgdGhpcy5pdGVtc2NoYW5nZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMuYXV0b3N1Z2dlc3QgIT0gbnVsbCkge1xyXG4gICAgICAvLyB1cmwgdG8gYWpheCBjYWxsXHJcbiAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgIHZhciBhcmdzID0ge3E6IHRoaXMuaW5wdXQudmFsdWV9O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uc3VnZ2VzdCAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5vbnN1Z2dlc3QoYXJncyk7XHJcbiAgICAgIHNjaWwuVXRpbHMuanNvbnAodGhpcy5vcHRpb25zLmF1dG9zdWdnZXN0LCBmdW5jdGlvbihyZXQpIHtcclxuICAgICAgICBtZS5saXN0KHJldC5pdGVtcyA9PSBudWxsID8gcmV0IDogcmV0Lml0ZW1zLCBzdWdpZCk7XHJcbiAgICAgICAgbWUuaXRlbXNjaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgfSwgYXJncyk7XHJcbiAgICB9XHJcblxyXG4gIH0sXHJcblxyXG4gIGZpbHRlcmxpc3Q6IGZ1bmN0aW9uKGxpc3QsIHEpIHtcclxuICAgIHZhciByZXQgPSBbXTtcclxuICAgIGlmIChxICE9IG51bGwgJiYgcSAhPSAnJyAmJiBsaXN0ICE9IG51bGwpIHtcclxuICAgICAgcSA9IHEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKGxpc3RbaV0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHEpID49IDApXHJcbiAgICAgICAgICByZXQucHVzaChzY2lsLlV0aWxzLnRyaW0obGlzdFtpXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH0sXHJcblxyXG4gIGNsaWNrTWU6IGZ1bmN0aW9uKGUpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXRlbXMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBpbnB1dCA9IGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldDtcclxuICAgIGlmIChpbnB1dC5vZmZzZXRXaWR0aCAtIChlLm9mZnNldFggPT0gbnVsbCA/IGUubGF5ZXJYIDogZS5vZmZzZXRYKSA8IDE2KVxyXG4gICAgICB0aGlzLnNob3coKTtcclxuICB9LFxyXG5cclxuICBzZXRJdGVtczogZnVuY3Rpb24obGlzdCkge1xyXG4gICAgaWYgKGxpc3QgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5vcHRpb25zLml0ZW1zID0gbGlzdDtcclxuICAgIHRoaXMuaXRlbXNjaGFuZ2VkID0gdHJ1ZTtcclxuICB9LFxyXG5cclxuICBpc0NoaWxkT2Y6IGZ1bmN0aW9uKHNyYykge1xyXG4gICAgcmV0dXJuIHNyYyA9PSB0aGlzLmlucHV0IHx8IEpzVXRpbHMuaXNDaGlsZE9mKHNyYywgdGhpcy5hdXRvKTtcclxuICB9LFxyXG5cclxuICBpc0Ryb3Bkb3duVmlzaWJsZTogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRvICE9IG51bGwgJiYgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPT0gJyc7XHJcbiAgfSxcclxuXHJcbiAgaXNWaXNpYmxlOiBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0ICE9IG51bGwgJiYgdGhpcy5pbnB1dC5zdHlsZS5kaXNwbGF5ID09ICcnO1xyXG4gIH0sXHJcblxyXG4gIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0byA9PSBudWxsKSB7XHJcbiAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgIHZhciBwb3MgPSBzY2lsLlV0aWxzLmlzRml4ZWRQb3NpdGlvbih0aGlzLmlucHV0KSA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnO1xyXG4gICAgICB0aGlzLmF1dG8gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQuYm9keSwgJ2RpdicsIG51bGwsIHtkaXNwbGF5OiAnbm9uZScsIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJywgb3ZlcmZsb3c6ICdoaWRkZW4nLCBib3JkZXI6ICdzb2xpZCAxcHggZ3JheScsIHBvc2l0aW9uOiBwb3MsIHpJbmRleDogOTk5OTl9KTtcclxuICAgICAgZG9qby5jb25uZWN0KGRvY3VtZW50LmJvZHksICdvbm1vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0O1xyXG4gICAgICAgIGlmIChzcmMgIT0gbWUucSAmJiBzcmMucGFyZW50Tm9kZSAhPSBtZS5hdXRvKSBtZS5jbGlja291dCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pdGVtc2NoYW5nZWQpXHJcbiAgICAgIHRoaXMubGlzdCh0aGlzLm9wdGlvbnMuaXRlbXMsICsrdGhpcy5zdWdpZCk7XHJcbiAgICB0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5hdXRvLnN0eWxlLnpJbmRleCA9IHNjaWwuVXRpbHMuZ2V0WmluZGV4KHRoaXMuaW5wdXQpICsgMTtcclxuICAgIHRoaXMudXBkYXRlRHJvcGRvd25TaXplKCk7XHJcbiAgfSxcclxuXHJcbiAgaGlnaGxpZ2h0OiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5hdXRvID09IG51bGwgfHwgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnKSB7XHJcbiAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMgfHwgZS5rZXlDb2RlID09IDQwKSB7XHJcbiAgICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoZS5rZXlDb2RlID09IDI3KSB7XHJcbiAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5hdXRvLmNoaWxkTm9kZXM7XHJcbiAgICB2YXIgc2VsID0gbnVsbDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGl0ZW0gPSBjaGlsZHJlbltpXTtcclxuICAgICAgaWYgKGl0ZW0uZ2V0QXR0cmlidXRlKCdzZWwnKSA9PSAnMScpIHtcclxuICAgICAgICBzZWwgPSBpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICBpZiAoc2VsICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5jbGlja0l0ZW0oY2hpbGRyZW5bc2VsXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgbmV3c2VsID0gbnVsbDtcclxuICAgIGlmIChlLmtleUNvZGUgPT0gMzggfHwgZS5rZXlDb2RlID09IDQwKSB7XHJcbiAgICAgIGlmIChzZWwgPT0gbnVsbCkge1xyXG4gICAgICAgIG5ld3NlbCA9IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09IDM4KSB7XHJcbiAgICAgICAgbmV3c2VsID0gc2VsIC0gMTtcclxuICAgICAgICBpZiAobmV3c2VsIDwgMClcclxuICAgICAgICAgIG5ld3NlbCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3c2VsID0gc2VsICsgMTtcclxuICAgICAgICBpZiAobmV3c2VsID49IGNoaWxkcmVuLmxlbmd0aClcclxuICAgICAgICAgIG5ld3NlbCA9IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChlLmNoYXIgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBjID0gZS5jaGFyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgbmV3c2VsID0gdGhpcy5maW5kTmV4dE1hdGNoKGMsIHNlbCA9PSBudWxsID8gMCA6IHNlbCArIDEsIGNoaWxkcmVuLmxlbmd0aCk7XHJcbiAgICAgICAgaWYgKG5ld3NlbCA9PSBudWxsICYmIHNlbCAhPSBudWxsKVxyXG4gICAgICAgICAgbmV3c2VsID0gdGhpcy5maW5kTmV4dE1hdGNoKGMsIDAsIHNlbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobmV3c2VsICE9IG51bGwgJiYgbmV3c2VsICE9IHNlbCkge1xyXG4gICAgICBpZiAoc2VsICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5faGlsaXRJdGVtKGNoaWxkcmVuW3NlbF0sIGZhbHNlKTtcclxuICAgICAgdGhpcy5faGlsaXRJdGVtKGNoaWxkcmVuW25ld3NlbF0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGZpbmROZXh0TWF0Y2g6IGZ1bmN0aW9uKGMsIHN0YXJ0LCBlbmQpIHtcclxuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XHJcbiAgICAgIHZhciBpdGVtID0gdGhpcy5hdXRvLmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmIChpdGVtLmlubmVySFRNTCkge1xyXG4gICAgICAgIHZhciBzID0gdGhpcy5nZXRJdGVtVmFsdWUoaXRlbSk7XHJcbiAgICAgICAgaWYgKHMubGVuZ3RoID4gMCAmJiBzLnN1YnN0cigwLCAxKS50b0xvd2VyQ2FzZSgpID09IGMpXHJcbiAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSxcclxuXHJcbiAgdXBkYXRlRHJvcGRvd25TaXplOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duVmlzaWJsZSgpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIHAgPSBzY2lsLlV0aWxzLmdldE9mZnNldCh0aGlzLmlucHV0KTtcclxuICAgIHZhciBzY3JvbGwgPSBzY2lsbGlnZW5jZS5VdGlscy5zY3JvbGxPZmZzZXQoKTtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzSUUpIHtcclxuICAgICAgdmFyIHMyID0gSnNVdGlscy5nZXRTY3JvbGxPZmZzZXQodGhpcy5lKTtcclxuICAgICAgc2Nyb2xsLm9mZnNldCgtczIueCwgLXMyLnkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHcgPSB0aGlzLmlucHV0Lm9mZnNldFdpZHRoO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5hdXRvd2lkdGggPiAwICYmIHRoaXMub3B0aW9ucy5taW5hdXRvd2lkdGggPiB3KVxyXG4gICAgICB3ID0gdGhpcy5vcHRpb25zLm1pbmF1dG93aWR0aDtcclxuICAgIGlmICh3IDwgMTAwKVxyXG4gICAgICB3ID0gMTAwO1xyXG4gICAgZG9qby5zdHlsZSh0aGlzLmF1dG8sIHtsZWZ0OiAocC54ICsgc2Nyb2xsLngpICsgJ3B4JywgdG9wOiAocC55ICsgc2Nyb2xsLnkgKyB0aGlzLmlucHV0Lm9mZnNldEhlaWdodCkgKyAncHgnLCB3aWR0aDogKHcgLSAyKSArICdweCd9KTtcclxuICB9LFxyXG5cclxuICBoaWRlOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmF1dG8gIT0gbnVsbCAmJiB0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSAhPSAnbm9uZScpXHJcbiAgICAgIHRoaXMuYXV0by5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH0sXHJcblxyXG4gIGlzUGFyZW50SGlkZGVuOiBmdW5jdGlvbihxKSB7XHJcbiAgICB2YXIgb2JqID0gcTtcclxuICAgIHdoaWxlIChvYmogIT0gbnVsbCAmJiBvYmouc3R5bGUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAob2JqLnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnIHx8IG9iai5zdHlsZS52aXNpYmlsaXR5ID09ICdoaWRkZW4nKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBvYmogPSBvYmoucGFyZW50Tm9kZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9LFxyXG5cclxuICBsaXN0OiBmdW5jdGlvbihpdGVtcywgc3VnaWQpIHtcclxuICAgIGlmIChpdGVtcyA9PSBudWxsIHx8IGl0ZW1zLmxlbmd0aCA9PSAwIHx8IHN1Z2lkICE9IHRoaXMuc3VnaWQgfHwgdGhpcy5pc1BhcmVudEhpZGRlbih0aGlzLmlucHV0KSkge1xyXG4gICAgICBpZiAodGhpcy5hdXRvICE9IG51bGwpIHtcclxuICAgICAgICBzY2lsbGlnZW5jZS5VdGlscy5yZW1vdmVBbGwodGhpcy5hdXRvKTtcclxuICAgICAgICB0aGlzLmF1dG8uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvID09IG51bGwgfHwgdGhpcy5hdXRvLnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNjaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbXNjaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBzY2lsbGlnZW5jZS5VdGlscy5yZW1vdmVBbGwodGhpcy5hdXRvKTtcclxuICAgIGlmIChpdGVtcyA9PSBudWxsIHx8IGl0ZW1zLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIG1lID0gdGhpcztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIHMgPSBpdGVtc1tpXTtcclxuICAgICAgdmFyIGRpdiA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5hdXRvLCAnZGl2Jywgc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpID8gJyZuYnNwOycgOiBzLCB7cGFkZGluZzogJzJweCcsIHRleHRBbGlnbjogdGhpcy5vcHRpb25zLmFsaWdufSk7XHJcbiAgICAgIGRvam8uY29ubmVjdChkaXYsICdvbmNsaWNrJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIG1lLmNsaWNrKGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgZG9qby5jb25uZWN0KGRpdiwgJ29ubW91c2VvdmVyJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIG1lLm1vdXNlb3ZlcihlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRvam8uY29ubmVjdChkaXYsICdvbm1vdXNlb3V0JywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIG1lLm1vdXNlb3V0KGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBtb3VzZW92ZXI6IGZ1bmN0aW9uKGUpIHtcclxuICAgIHRoaXMuX2hpbGl0SXRlbShlLnNyY0VsZW1lbnQgfHwgZS50YXJnZXQsIHRydWUpO1xyXG4gIH0sXHJcblxyXG4gIG1vdXNlb3V0OiBmdW5jdGlvbihlKSB7XHJcbiAgICB0aGlzLl9oaWxpdEl0ZW0oZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0LCBmYWxzZSk7XHJcbiAgfSxcclxuXHJcbiAgX2hpbGl0SXRlbTogZnVuY3Rpb24oaXRlbSwgZikge1xyXG4gICAgaWYgKGYpIHtcclxuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2RkZic7XHJcbiAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdzZWwnLCAnMScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG4gICAgICBpdGVtLnJlbW92ZUF0dHJpYnV0ZSgnc2VsJyk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgY2xpY2tvdXQ6IGZ1bmN0aW9uKGUpIHtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gIH0sXHJcblxyXG4gIGNsaWNrOiBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0O1xyXG4gICAgdGhpcy5jbGlja0l0ZW0oc3JjKTtcclxuICB9LFxyXG5cclxuICBnZXRJdGVtVmFsdWU6IGZ1bmN0aW9uKHNyYykge1xyXG4gICAgdmFyIHMgPSBzY2lsLlV0aWxzLmh0bWxEZWNvZGUoc3JjLmlubmVySFRNTCk7XHJcbiAgICBpZiAocyA9PSAnJm5ic3A7JylcclxuICAgICAgcyA9ICcnO1xyXG4gICAgcmV0dXJuIHM7XHJcbiAgfSxcclxuXHJcbiAgY2xpY2tJdGVtOiBmdW5jdGlvbihzcmMpIHtcclxuICAgIHZhciBzID0gdGhpcy5nZXRJdGVtVmFsdWUoc3JjKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25TZXRWYWx1ZSAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25TZXRWYWx1ZSh0aGlzLmlucHV0LCBzKTtcclxuICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5vdmVyd3JpdGUgPT0gJ3VuaXQnKVxyXG4gICAgICB0aGlzLmlucHV0LnZhbHVlID0gdGhpcy5jaGFuZ2VVbml0KHRoaXMuaW5wdXQudmFsdWUsIHMpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLm92ZXJ3cml0ZSA9PSBmYWxzZSlcclxuICAgICAgdGhpcy5pbnB1dC52YWx1ZSArPSBzO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmlucHV0LnZhbHVlID0gcztcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVyd3JpdGUpXHJcbiAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCk7XHJcbiAgICB0aGlzLmlucHV0LmZvY3VzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmNsaWNraXRlbSAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25jbGlja2l0ZW0ocyk7XHJcblxyXG4gICAgc2NpbC5VdGlscy5maXJlRXZlbnQodGhpcy5pbnB1dCwgJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcclxuICB9LFxyXG5cclxuICBjaGFuZ2VVbml0OiBmdW5jdGlvbihzLCB1bml0KSB7XHJcbiAgICB2YXIgciA9IEpTRHJhdzIuVGFibGUucGFyc2VWYWx1ZVVuaXQocyk7XHJcbiAgICBpZiAociA9PSBudWxsIHx8IHIudmFsdWUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHIudmFsdWUgKyAodW5pdCA9PSBudWxsID8gJycgOiB1bml0KTtcclxuICB9LFxyXG59KTtcclxuXHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbnNjaWwuRmF2b3JpdGUgPSBzY2lsLmV4dGVuZChzY2lsLl9iYXNlLCB7XHJcbiAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKGtleSwgb25BZGRGYXZvcml0ZSkge1xyXG4gICAgdGhpcy5UID0gJ0ZBVk9SSVRFJztcclxuICAgIHRoaXMua2V5ID0ga2V5O1xyXG4gICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICB0aGlzLm9uQWRkRmF2b3JpdGUgPSBvbkFkZEZhdm9yaXRlO1xyXG4gICAgdGhpcy5jaGFuZ2VkID0gZmFsc2U7XHJcbiAgfSxcclxuXHJcbiAgZ2V0TGlzdDogZnVuY3Rpb24odHlwZSkge1xyXG4gICAgdGhpcy5fbG9hZCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNbdHlwZV07XHJcbiAgfSxcclxuXHJcbiAgY29udGFpbnM6IGZ1bmN0aW9uKG5hbWUsIHR5cGUpIHtcclxuICAgIHRoaXMuX2xvYWQoKTtcclxuXHJcbiAgICB2YXIgbGlzdCA9IHRoaXMuaXRlbXNbdHlwZV07XHJcbiAgICByZXR1cm4gbGlzdCA9PSBudWxsID8gZmFsc2UgOiBzY2lsLlV0aWxzLmluZGV4T2YobGlzdCwgbmFtZSkgPj0gMDtcclxuICB9LFxyXG5cclxuICBhZGQ6IGZ1bmN0aW9uKG5hbWUsIGYsIHR5cGUpIHtcclxuICAgIHRoaXMuX2xvYWQoKTtcclxuXHJcbiAgICB2YXIgbGlzdCA9IHRoaXMuaXRlbXNbdHlwZV07XHJcbiAgICBpZiAobGlzdCA9PSBudWxsKSB7XHJcbiAgICAgIGlmIChmKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtc1t0eXBlXSA9IFtuYW1lXTtcclxuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcCA9IHNjaWwuVXRpbHMuaW5kZXhPZihsaXN0LCBuYW1lKTtcclxuICAgICAgaWYgKHAgPCAwICYmIGYpIHtcclxuICAgICAgICBsaXN0LnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChwID49IDAgJiYgIWYpIHtcclxuICAgICAgICBsaXN0LnNwbGljZShwLCAxKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub25BZGRGYXZvcml0ZSAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9uQWRkRmF2b3JpdGUobmFtZSwgZiwgdHlwZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhbmdlZClcclxuICAgICAgdGhpcy5fc2F2ZSgpO1xyXG4gIH0sXHJcblxyXG4gIF9zYXZlOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLml0ZW1zID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgcyA9IHNjaWwuVXRpbHMuanNvbjJzdHIodGhpcy5pdGVtcyk7XHJcbiAgICBzY2lsLlV0aWxzLmNyZWF0ZUNvb2tpZSgnc2NpbF9oZWxtX2Zhdm9yaXRlc18nICsgdGhpcy5rZXksIHMpO1xyXG4gIH0sXHJcblxyXG4gIF9sb2FkOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLml0ZW1zICE9IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgcyA9IHNjaWwuVXRpbHMucmVhZENvb2tpZSgnc2NpbF9oZWxtX2Zhdm9yaXRlc18nICsgdGhpcy5rZXkpO1xyXG4gICAgdmFyIHYgPSBzY2lsLlV0aWxzLmV2YWwocyk7XHJcbiAgICB0aGlzLml0ZW1zID0gdiA9PSBudWxsID8ge30gOiB2O1xyXG4gIH0sXHJcbn0pO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vKipcclxuICogRmllbGROdW1iZXIgY2xhc3MgLSBGaWVsZE51bWJlciBDb250cm9sXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5GaWVsZE51bWJlclxyXG4gKi9cclxuc2NpbC5GaWVsZE51bWJlciA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqIEBmdW5jdGlvbiBjb25zdHJvY3RvclxyXG4gICAqIEBwYXJhbSB7RE9NfSBwYXJlbnRcclxuICAgKiBAcGFyYW0ge2RpY3R9IG9wdGlvbnMgLSB7IHdpZHRoLCBtaW4sIG1heCwgYWxsb3dvcGVyYXRvciwgc2NhbGUsIHVuaXRzIH1cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oaW5wdXQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuVCA9ICdGSUVMRF9OVU1CRVInO1xyXG4gICAgaWYgKHR5cGVvZiAoaW5wdXQpID09ICdzdHJpbmcnKVxyXG4gICAgICBpbnB1dCA9IHNjaWwuYnlJZChpbnB1dCk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XHJcbiAgICB0aGlzLnVuaXQgPSBudWxsO1xyXG4gICAgLy90aGlzLmlucHV0LnN0eWxlLnRleHRBbGlnbiA9IFwicmlnaHRcIjtcclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd29wZXJhdG9yKSB7XHJcbiAgICAgIHRoaXMuYXV0byA9IG5ldyBzY2lsLkRyb3Bkb3duSW5wdXQoaW5wdXQsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaXRlbXM6IHRoaXMub3B0aW9ucy5pdGVtcyA9PSBudWxsID8gWycnLCAn4omlJywgJ+KJpCcsICcmbHQ7JywgJyZndDsnLCAnwrEnXSA6IHRoaXMub3B0aW9ucy5pdGVtcyxcclxuICAgICAgICAgIG9uU2V0VmFsdWU6IGZ1bmN0aW9uKGlucHV0LCBzKSB7XHJcbiAgICAgICAgICAgIG1lLm9uU2V0T3BlcmF0b3IoaW5wdXQsIHMpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgdHI7XHJcbiAgICB2YXIgdmlld29ubHkgPSB0aGlzLm9wdGlvbnMudmlld29ubHkgfHwgdGhpcy5pbnB1dC5kaXNhYmxlZCB8fCB0aGlzLmlucHV0LnJlYWRPbmx5O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy51bml0cyAhPSBudWxsICYmICF2aWV3b25seSkge1xyXG4gICAgICB2YXIgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKG51bGwsIDAsIDAsIHtib3JkZXI6ICdzb2xpZCAxcHggI2NjYyd9KTtcclxuICAgICAgdGhpcy5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0Ym9keS5wYXJlbnROb2RlLCB0aGlzLmlucHV0KTtcclxuXHJcbiAgICAgIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnKS5hcHBlbmRDaGlsZCh0aGlzLmlucHV0KTtcclxuICAgICAgdGhpcy51bml0ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgbnVsbCwge2JvcmRlckxlZnQ6ICdzb2xpZCAxcHggI2NjYyd9KSwgJ3NlbGVjdCcsIG51bGwsIHt3aWR0aDogdGhpcy5vcHRpb25zLnVuaXR3aWR0aH0pO1xyXG4gICAgICBzY2lsLlV0aWxzLmxpc3RPcHRpb25zKHRoaXMudW5pdCwgdGhpcy5vcHRpb25zLnVuaXRzLCBudWxsLCB0cnVlLCBmYWxzZSk7XHJcblxyXG4gICAgICBzY2lsLmNvbm5lY3QodGhpcy51bml0LCAnb25jaGFuZ2UnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmZpcmVFdmVudChtZS5pbnB1dCwgJ2NoYW5nZScpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuaW5wdXQuc3R5bGUuYm9yZGVyID0gJ25vbmUnO1xyXG4gICAgICB0aGlzLnVuaXQuc3R5bGUuYm9yZGVyID0gJ25vbmUnO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBzY2lsLmNvbm5lY3QoaW5wdXQsICdvbmNoYW5nZScsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgdmFyIHMgPSBpbnB1dC52YWx1ZTtcclxuICAgICAgaWYgKHMgIT0gJycgJiYgcyAhPSBudWxsICYmIChtZS5vcHRpb25zLmFjY2VwdHMgPT0gbnVsbCB8fCAhbmV3IFJlZ0V4cChtZS5vcHRpb25zLmFjY2VwdHMpLnRlc3QocykpICYmICFzY2lsLlV0aWxzLmlzTnVtYmVyKHMsIG1lLm9wdGlvbnMuYWxsb3dvcGVyYXRvcikpIHtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoJ0EgbnVtYmVyIGlzIHJlcXVpcmVkIScpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChtZS51bml0ICE9IG51bGwpXHJcbiAgICAgICAgICBzICs9IG1lLnVuaXQudmFsdWU7XHJcbiAgICAgICAgbWUuc2V0VmFsdWUocyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdmlld29ubHkgJiYgdGhpcy5vcHRpb25zLm1vYmlsZWRhdGEgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICBuZXcgc2NpbC5Nb2JpbGVEYXRhKGlucHV0LCB7XHJcbiAgICAgICAgd2VpZ2hzdGF0aW9uOiB0cnVlLCB1cmw6IHNjaWwuTW9iaWxlRGF0YS5nZXREZWZhdWx0VXJsKHRydWUpLCBvbnJlc3VsdDogZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgICAgICBtZS5zZXRWYWx1ZShyZXQuYmFyY29kZSk7XHJcbiAgICAgICAgICBzY2lsLk1vYmlsZURhdGEubWFya1JlY2lldmVkKGlucHV0KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICBzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbihzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcpLCB7XHJcbiAgICAgICAgbGFiZWw6ICcmIzk4Nzg7JywgdGl0bGU6ICdTZWxlY3QgV2VpZ2ggU3RhdGlvbicsIHR5cGU6ICdhJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBzY2lsLk1vYmlsZURhdGEuc2VsZWN0V2VpZ2hzdGF0aW9uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgb25TZXRPcGVyYXRvcjogZnVuY3Rpb24oaW5wdXQsIG9wKSB7XHJcbiAgICBpZiAob3AgPT0gJycpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgcyA9IHNjaWwuVXRpbHMudHJpbShpbnB1dC52YWx1ZSk7XHJcbiAgICBpZiAob3AgPT0gJ8KxJykge1xyXG4gICAgICBpZiAocy5pbmRleE9mKCfCsScpID49IDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBpbnB1dC52YWx1ZSA9IHMgKyAnIMKxJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBjID0gcy5sZW5ndGggPiAwID8gcy5zdWJzdHIoMCwgMSkgOiBudWxsO1xyXG4gICAgICBpZiAoYyA9PSAn4omlJyB8fCBjID09ICfiiaQnIHx8IGMgPT0gJz4nIHx8IGMgPT0gJzwnKVxyXG4gICAgICAgIHMgPSBzLnN1YnN0cigxKTtcclxuICAgICAgaW5wdXQudmFsdWUgPSBvcCArIHM7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgY2xlYXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xyXG4gIH0sXHJcblxyXG4gIHNldFZhbHVlOiBmdW5jdGlvbih2KSB7XHJcbiAgICB2ID0gdiA9PSBudWxsID8gbnVsbCA6IChKU0RyYXcyLlRhYmxlID09IG51bGwgPyB7dmFsdWU6IHZ9IDogSlNEcmF3Mi5UYWJsZS5zcGxpdFVuaXQodiArICcnKSk7XHJcbiAgICBpZiAodiA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGUgPiAwICYmICFpc05hTih2LnZhbHVlKSlcclxuICAgICAgdi52YWx1ZSAqPSB0aGlzLm9wdGlvbnMuc2NhbGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kZWNpbWFsID4gMClcclxuICAgICAgdi52YWx1ZSA9IHNjaWwuVXRpbHMucm91bmQodi52YWx1ZSwgdGhpcy5vcHRpb25zLmRlY2ltYWwpO1xyXG5cclxuICAgIGlmICh2LnVuaXQyID09IG51bGwpXHJcbiAgICAgIHYudW5pdDIgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdHVuaXQ7XHJcblxyXG4gICAgaWYgKHRoaXMudW5pdCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSB2LnZhbHVlO1xyXG4gICAgICBzY2lsLlV0aWxzLnNlbGVjdE9wdGlvbih0aGlzLnVuaXQsIHYudW5pdDIsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHYudmFsdWUgKyAodi51bml0MiA9PSBudWxsID8gJycgOiB2LnVuaXQyKTtcclxuICAgICAgaWYgKEpTRHJhdzIuQ29sb3JDb2RpbmcgIT0gbnVsbClcclxuICAgICAgICBKU0RyYXcyLkNvbG9yQ29kaW5nLnNob3codGhpcy5pbnB1dCwgdi52YWx1ZSwgdGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgdiA9IHNjaWwuVXRpbHMudHJpbSh0aGlzLmlucHV0LnZhbHVlKTtcclxuICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHYpICYmICFpc05hTih2KSkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlID4gMClcclxuICAgICAgICB2IC89IHRoaXMub3B0aW9ucy5zY2FsZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVuaXQgIT0gbnVsbClcclxuICAgICAgICB2ID0gdiArIHRoaXMudW5pdC52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdjtcclxuICB9LFxyXG59KTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLyoqXHJcbiogTWVudSBjbGFzcyAtIE1lbnUgQ29udHJvbFxyXG4qIEBjbGFzcyBzY2lsbGlnZW5jZS5NZW51XHJcbiovXHJcbnNjaWwuTWVudSA9IHtcclxuICAgIHRpbWVvdXQ6IHNjaWxsaWdlbmNlLlV0aWxzLmlzVG91Y2ggfHwgd2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkID8gMjAwMCA6IDUwMCxcclxuICAgIGNsb3NldGltZXI6IDAsXHJcbiAgICBtZW51aXRlbTogbnVsbCxcclxuXHJcbiAgICBpc09wZW46IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gc2NpbC5NZW51Lm1lbnVpdGVtICE9IG51bGwgJiYgc2NpbC5NZW51Lm1lbnVpdGVtLnN0eWxlLmRpc3BsYXkgIT0gXCJub25lXCI7XHJcbiAgICB9LFxyXG5cclxuICAgIG9wZW46IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHNjaWwuTWVudS5jYW5jZWxjbG9zZXRpbWUoKTtcclxuICAgICAgICBpZiAoc2NpbC5NZW51Lm1lbnVpdGVtKVxyXG4gICAgICAgICAgICBzY2lsLk1lbnUubWVudWl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICBzY2lsLk1lbnUubWVudWl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgc2NpbC5NZW51Lm1lbnVpdGVtLnN0eWxlLmRpc3BsYXkgPSAnJztcclxuICAgIH0sXHJcblxyXG4gICAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoc2NpbC5NZW51Lm1lbnVpdGVtKVxyXG4gICAgICAgICAgICBzY2lsLk1lbnUubWVudWl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH0sXHJcblxyXG4gICAgb3Blbk9yQ2xvc2U6IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIGlmIChzY2lsLk1lbnUubWVudWl0ZW0gPT0gbnVsbCB8fCBzY2lsLk1lbnUubWVudWl0ZW0uc3R5bGUuZGlzcGxheSA9PSBcIm5vbmVcIilcclxuICAgICAgICAgICAgdGhpcy5vcGVuKGlkKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH0sXHJcblxyXG4gICAgY2xvc2V0aW1lOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2NpbC5NZW51LmNsb3NldGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChzY2lsLk1lbnUuY2xvc2UsIHNjaWwuTWVudS50aW1lb3V0KTtcclxuICAgIH0sXHJcblxyXG4gICAgY2FuY2VsY2xvc2V0aW1lOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuTWVudS5jbG9zZXRpbWVyKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2NpbC5NZW51LmNsb3NldGltZXIpO1xyXG4gICAgICAgICAgICBzY2lsLk1lbnUuY2xvc2V0aW1lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcbkpTRHJhdzIuTWVudSA9IHNjaWwuTWVudTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLyoqXHJcbiAqIFBvcHVwIGNsYXNzXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5Qb3B1cFxyXG4gKiA8cHJlPlxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICogJmx0O3NwYW4gaWQ9J2snJmd0O1Rlc3QmbHQ7L3NwYW4mZ3Q7IE1vcmUgd29yZHNcclxuICogJmx0O3NwYW4gaWQ9J1NwYW4xJyZndDtUZXN0MiZsdDsvc3BhbiZndDtcclxuICogJmx0O3NjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCImZ3Q7XHJcbiAqICAgICBzY2lsLm9ubG9hZChmdW5jdGlvbiAoKSB7XHJcbiAqICAgICAgICAgbmV3IHNjaWwuUG9wdXAoJ2snLCB7IGh0bWw6IFwiSGVsbG8sIFdvcmxkIVwiLCBjYXB0aW9uOiBcIkhlbGxvd1wiIH0pO1xyXG4gKiAgICAgICAgIG5ldyBzY2lsLlBvcHVwKCdTcGFuMScsIHsgaHRtbDogXCImbHQ7aW1nIHNyYz0nZmFjZS5naWYnJmd0O1wiLCBjYXB0aW9uOiBcIlBpY3R1cmVcIiB9KTtcclxuICogICAgIH0pO1xyXG4gKiAmbHQ7L3NjcmlwdCZndDtcclxuICogPC9wcmU+XHJcbiAqL1xyXG5zY2lsLlBvcHVwID0gc2NpbC5leHRlbmQoc2NpbC5fYmFzZSwge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvciBQb3B1cFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nIG9yIERPTX0gZWxlbWVudCAtIHRoZSBJTlBVVCBlbGVtZW50IHRvIGJlIGNvbnZlcnRlZFxyXG4gICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gb3B0aW9ucyAtIHsgY2FwdGlvbiwgaHRtbCwgb25nZXRodG1sOiBmdW5jdGlvbigpIHt9IH1cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oYSwgb3B0aW9ucykge1xyXG4gICAgdGhpcy5UID0gJ1BPUFVQJztcclxuICAgIGlmICh0eXBlb2YgKGEpID09ICdzdHJpbmcnKVxyXG4gICAgICB0aGlzLmEgPSBzY2lsLmJ5SWQoYSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuYSA9IGE7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zID0ge307XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuYSAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgIGRvam8uY29ubmVjdCh0aGlzLmEsICdvbm1vdXNlb3V0JywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgc2NpbC5Qb3B1cC5oaWRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBkb2pvLmNvbm5lY3QodGhpcy5hLCAnb25tb3VzZW92ZXInLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgc2NpbC5Qb3B1cC5zaG93KG1lLCBlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NpbC5Qb3B1cC5pbml0KCk7XHJcbiAgfSxcclxuXHJcbiAgZ2V0SHRtbDogZnVuY3Rpb24oZSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmdldGh0bWwyICE9IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub25nZXRodG1sMih0aGlzLCBlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmh0bWwgPT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uZ2V0aHRtbCAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5odG1sID0gdGhpcy5vcHRpb25zLm9uZ2V0aHRtbCh0aGlzKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaHRtbDtcclxuICB9LFxyXG5cclxuICBnZXRDYXB0aW9uOiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uZ2V0Y2FwdGlvbjIgIT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vbmdldGNhcHRpb24yKHRoaXMsIGUpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY2FwdGlvbjtcclxuICB9LFxyXG59KTtcclxuXHJcbnNjaWwuYXBwbHkoc2NpbC5Qb3B1cCwge1xyXG4gIGN1cnJlbnQ6IG51bGwsXHJcbiAgaW5pdGVkOiBudWxsLFxyXG5cclxuICBzaG93OiBmdW5jdGlvbihwb3B1cCwgZTIpIHtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50ID0gcG9wdXA7XHJcbiAgICBlID0gbmV3IHNjaWwuUG9wdXAuRXZlbnQoZTIpO1xyXG5cclxuICAgIHZhciBjYXB0aW9uID0gdGhpcy5jdXJyZW50LmdldENhcHRpb24oZTIpO1xyXG4gICAgdmFyIGh0bWwgPSB0aGlzLmN1cnJlbnQuZ2V0SHRtbChlMik7XHJcblxyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShodG1sKSkge1xyXG4gICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JlYXRlKCk7XHJcbiAgICB0aGlzLmFyZWEuaW5uZXJIVE1MID0gJyc7XHJcbiAgICB0aGlzLnRpdGxlLmlubmVySFRNTCA9ICcnO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuZGlzcGxheSA9ICcnO1xyXG5cclxuICAgIHRoaXMudGl0bGUuaW5uZXJIVE1MID0gY2FwdGlvbiA9PSBudWxsID8gJycgOiBjYXB0aW9uO1xyXG4gICAgdGhpcy5hcmVhLmlubmVySFRNTCA9IGh0bWw7XHJcblxyXG4gICAgaWYgKGUgIT0gbnVsbClcclxuICAgICAgdGhpcy5tb3ZlKGUpO1xyXG4gIH0sXHJcblxyXG4gIGhpZGU6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5jdXJyZW50ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmRpdiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudGl0bGUuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgIHRoaXMuYXJlYS5pbm5lckhUTUwgPSAnJztcclxuICAgICAgdGhpcy5kaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBtb3ZlOiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5kaXYgPT0gbnVsbCB8fCB0aGlzLmRpdi5zdHlsZS5kaXNwbGF5ID09ICdub25lJylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBvYmogPSBlLnNyY0VsZW1lbnQgPT0gbnVsbCA/IGUudGFyZ2V0IDogZS5zcmNFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuY3VycmVudC5hID09IG9iaiB8fCB0aGlzLmlzQ2hpbGRPZihvYmosIHRoaXMuY3VycmVudC5hKSkge1xyXG4gICAgICB0aGlzLm1vdmV0byhlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzQ2hpbGRPZihvYmosIHRoaXMuZGl2KSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gIH0sXHJcblxyXG4gIG1vdmV0bzogZnVuY3Rpb24oZSkge1xyXG4gICAgdGhpcy5jcmVhdGUoKTtcclxuICAgIHZhciBzY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxMZWZ0KCk7XHJcbiAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxUb3AoKTtcclxuXHJcbiAgICB2YXIgd2luV2lkdGggPSAwO1xyXG4gICAgdmFyIHdpbkhlaWdodCA9IDA7XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmFsbCA9PSBudWxsKSB7XHJcbiAgICAgIHdpbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIHdpbkhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbldpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgICB3aW5IZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHZhciB3ID0gdGhpcy5kaXYub2Zmc2V0V2lkdGg7XHJcbiAgICB2YXIgaCA9IHRoaXMuZGl2Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICB2YXIgeCA9IGUuY2xpZW50WCArIHNjcm9sbExlZnQgKyAxMDtcclxuICAgIHZhciB5ID0gZS5jbGllbnRZICsgc2Nyb2xsVG9wICsgMjA7XHJcbiAgICBpZiAoeCAtIHNjcm9sbExlZnQgKyB3ID4gd2luV2lkdGggJiYgeCAtIHNjcm9sbExlZnQgLSB3ID4gMClcclxuICAgICAgeCAtPSB3ICsgMTU7XHJcbiAgICBpZiAoeSAtIHNjcm9sbFRvcCArIGggPiB3aW5IZWlnaHQgJiYgeSAtIHNjcm9sbFRvcCAtIGggPiAwKVxyXG4gICAgICB5IC09IGggKyAyNTtcclxuXHJcbiAgICB0aGlzLmRpdi5zdHlsZS5sZWZ0ID0geCArICdweCc7XHJcbiAgICB0aGlzLmRpdi5zdHlsZS50b3AgPSB5ICsgJ3B4JztcclxuICB9LFxyXG5cclxuICBpc0NoaWxkT2Y6IGZ1bmN0aW9uKG9iaiwgcGFyZW50KSB7XHJcbiAgICB3aGlsZSAob2JqICE9IG51bGwpIHtcclxuICAgICAgaWYgKG9iaiA9PSBwYXJlbnQpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIG9iaiA9IG9iai5wYXJlbnROb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9LFxyXG5cclxuICBzY3JvbGxMZWZ0OiBmdW5jdGlvbihlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJSZXN1bHRzKFxyXG4gICAgICB3aW5kb3cucGFnZVhPZmZzZXQgPyB3aW5kb3cucGFnZVhPZmZzZXQgOiAwLFxyXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCA6IDAsXHJcbiAgICAgIGRvY3VtZW50LmJvZHkgPyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgOiAwLFxyXG4gICAgKTtcclxuICB9LFxyXG5cclxuICBzY3JvbGxUb3A6IGZ1bmN0aW9uKGUpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlclJlc3VsdHMoXHJcbiAgICAgIHdpbmRvdy5wYWdlWU9mZnNldCA/IHdpbmRvdy5wYWdlWU9mZnNldCA6IDAsXHJcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgOiAwLFxyXG4gICAgICBkb2N1bWVudC5ib2R5ID8gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgOiAwLFxyXG4gICAgKTtcclxuICB9LFxyXG5cclxuICBmaWx0ZXJSZXN1bHRzOiBmdW5jdGlvbihuX3dpbiwgbl9kb2NlbCwgbl9ib2R5KSB7XHJcbiAgICB2YXIgbl9yZXN1bHQgPSBuX3dpbiA/IG5fd2luIDogMDtcclxuICAgIGlmIChuX2RvY2VsICYmICghbl9yZXN1bHQgfHwgKG5fcmVzdWx0ID4gbl9kb2NlbCkpKVxyXG4gICAgICBuX3Jlc3VsdCA9IG5fZG9jZWw7XHJcbiAgICByZXR1cm4gbl9ib2R5ICYmICghbl9yZXN1bHQgfHwgKG5fcmVzdWx0ID4gbl9ib2R5KSkgPyBuX2JvZHkgOiBuX3Jlc3VsdDtcclxuICB9LFxyXG5cclxuICBpbml0OiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmluaXRlZCA9PSB0cnVlKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB0aGlzLmluaXRlZCA9IHRydWU7XHJcblxyXG4gICAgZG9qby5jb25uZWN0KGRvY3VtZW50LCAnb25tb3VzZW1vdmUnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHNjaWwuUG9wdXAubW92ZShlKTtcclxuICAgIH0pO1xyXG4gIH0sXHJcblxyXG4gIGNyZWF0ZTogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5kaXYgIT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmRpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcclxuICAgIHRoaXMuZGl2LnN0eWxlLmJvcmRlclN0eWxlID0gJ3NvbGlkJztcclxuICAgIHRoaXMuZGl2LnN0eWxlLmJvcmRlckNvbG9yID0gJyNmMGYwZjAgI2EwYTBhMCAjYTBhMGEwICNmMGYwZjAnO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuYm9yZGVyV2lkdGggPSAnMnB4JztcclxuICAgIHRoaXMuZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIHRoaXMuZGl2LnN0eWxlLnpJbmRleCA9IHNjaWwuVXRpbHMuZ2V0TWF4WmluZGV4KCk7XHJcbiAgICB0aGlzLmRpdi5zdHlsZS50ZXh0QWxpZ24gPSAnbGVmdCc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZGl2KTtcclxuXHJcbiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBkaXYuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBoaWdobGlnaHQnO1xyXG4gICAgZGl2LnN0eWxlLnBhZGRpbmcgPSAnMXB4JztcclxuICAgIHRoaXMuZGl2LmFwcGVuZENoaWxkKGRpdik7XHJcblxyXG4gICAgdGhpcy50aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy50aXRsZS5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgIHRoaXMudGl0bGUuc3R5bGUuYm9yZGVyID0gSlNEcmF3Mi5Ta2luLmRpYWxvZy5ib3JkZXI7XHJcbiAgICB0aGlzLnRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IEpTRHJhdzIuU2tpbi5kaWFsb2cuYmtjb2xvcjtcclxuICAgIHRoaXMudGl0bGUuc3R5bGUuY29sb3IgPSAnd2hpdGUnO1xyXG4gICAgZGl2LmFwcGVuZENoaWxkKHRoaXMudGl0bGUpO1xyXG5cclxuICAgIHRoaXMuYXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5hcmVhLnN0eWxlLnBhZGRpbmcgPSAnMnB4JztcclxuICAgIHRoaXMuYXJlYS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG4gICAgZGl2LmFwcGVuZENoaWxkKHRoaXMuYXJlYSk7XHJcbiAgfSxcclxufSk7XHJcblxyXG5cclxuc2NpbC5Qb3B1cC5FdmVudCA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oZSkge1xyXG4gICAgdGhpcy5jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgdGhpcy5jbGllbnRZID0gZS5jbGllbnRZO1xyXG4gICAgdGhpcy5zcmNFbGVtZW50ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xyXG4gIH0sXHJcbn0pO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vKipcclxuKiBQcm9ncmVzcyBjbGFzcyAtIFRvIFNob3cgUHJvZ3Jlc3NcclxuKiBAY2xhc3Mge3N0YXRpY30gc2NpbGxpZ2VuY2UuUHJvZ3Jlc3NcclxuKiA8cHJlPlxyXG4qIDxiPkV4YW1wbGU6PC9iPlxyXG4qICAgIHNjaWxsaWdlbmNlLlByb2dyZXNzLnNob3coXCJSdW5uaW5nXCIsIGZ1bmN0aW9uKCkgeyBhbGVydChcImNhbmNlbGxlZFwiKTsgfSk7XHJcbiogICAgdmFyIGNvdW50ID0gMDtcclxuKiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsgc2NpbGxpZ2VuY2UuUHJvZ3Jlc3MudXBkYXRlKCsrY291bnQsIFwiVmFsdWUgXCIgKyBjb3VudCk7IH0sIDUwMCk7XHJcbiogPC9wcmU+XHJcbiovXHJcbnNjaWxsaWdlbmNlLlByb2dyZXNzID0ge1xyXG4gICAgZGxnOiBudWxsLFxyXG4gICAgYmFyOiBudWxsLFxyXG4gICAgbXNnOiBudWxsLFxyXG4gICAgb25jYW5jZWw6IG51bGwsXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNob3cgcHJvZ3Jlc3MgYmFyXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBzaG93XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYXB0aW9uIGRpYWxvZyBjYXB0aW9uXHJcbiAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9yIGZhbHNlOiBvbmNhbGNlbCBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIHVzZXJzIGNsaWNrIG9uIENhbmNlbCBidXR0b25cclxuICAgICogQHBhcmFtIHtzdHJpbmd9IG1zZyBNZXNzYWdlXHJcbiAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvd3Byb2dyZXNzYmFyXHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBzaG93OiBmdW5jdGlvbiAoY2FwdGlvbiwgb25jYW5jZWwsIG1zZywgc2hvd3Byb2dyZXNzYmFyKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGUoKTtcclxuICAgICAgICBpZiAob25jYW5jZWwgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxidG4uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICB0aGlzLm9uY2FuY2VsID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mKG9uY2FuY2VsKSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxidG4uc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMub25jYW5jZWwgPSBvbmNhbmNlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tc2cuaW5uZXJIVE1MID0gbXNnID09IG51bGwgPyBcIlwiIDogbXNnO1xyXG4gICAgICAgIHRoaXMuZnJhbWUuc3R5bGUuZGlzcGxheSA9IHNob3dwcm9ncmVzc2JhciA9PSBmYWxzZSA/IFwibm9uZVwiIDogXCJcIjtcclxuICAgICAgICB0aGlzLmRsZy5zaG93KGNhcHRpb24pO1xyXG4gICAgfSxcclxuXHJcbiAgICBoaWRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGxnICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZGxnLmhpZGUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgY2FuY2VsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub25jYW5jZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vbmNhbmNlbCgpO1xyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIChwZXJjZW50LCBtc2cpIHtcclxuICAgICAgICBpZiAocGVyY2VudCA+IDEwMClcclxuICAgICAgICAgICAgcGVyY2VudCA9IDEwMDtcclxuICAgICAgICBlbHNlIGlmICghKHBlcmNlbnQgPiAwKSlcclxuICAgICAgICAgICAgcGVyY2VudCA9IDA7XHJcblxyXG4gICAgICAgIHZhciBuID0gTWF0aC5yb3VuZCgzMDAgKiBwZXJjZW50IC8gMTAwKTtcclxuICAgICAgICBpZiAobiA8IDApXHJcbiAgICAgICAgICAgIG4gPSAwO1xyXG4gICAgICAgIHRoaXMuYmFyLnN0eWxlLndpZHRoID0gbiArIFwicHhcIjtcclxuICAgICAgICB0aGlzLm1zZy5pbm5lckhUTUwgPSBtc2cgPT0gbnVsbCA/IFwiXCIgOiBtc2c7XHJcbiAgICB9LFxyXG4gICAgXHJcbiAgICBjcmVhdGU6IGZ1bmN0aW9uICh1KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGxnICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgdmFyIGRpdiA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQobnVsbCwgXCJkaXZcIiwgbnVsbCwgeyBtYXJnaW46IFwiNXB4XCIsIHdpZHRoOiBcIjMyMHB4XCIsIHRleHRBbGlnbjogXCJjZW50ZXJcIiB9KTtcclxuICAgICAgICB0aGlzLmFuaW1hdG9yID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiZGl2XCIsIHNjaWwuVXRpbHMuaW1nVGFnKFwiYW5pbWF0b3IuZ2lmXCIpLCB7IHRleHRBbGlnbjogXCJjZW50ZXJcIiB9KTtcclxuICAgICAgICB0aGlzLm1zZyA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2LCBcImRpdlwiLCBcIiZuYnNwO1wiLCB7IHRleHRBbGlnbjogXCJjZW50ZXJcIiB9KTtcclxuICAgICAgICB0aGlzLmZyYW1lID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiZGl2XCIsIG51bGwsIHsgd2lkdGg6IFwiMzAwcHhcIiwgaGVpZ2h0OiBcIjIwcHhcIiwgYm9yZGVyOiBcInNvbGlkIDFweCAjZTBlMGUwXCIsIHRleHRBbGlnbjogXCJsZWZ0XCIgfSk7XHJcbiAgICAgICAgdGhpcy5iYXIgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZnJhbWUsIFwiZGl2XCIsIFwiJm5ic3A7XCIsIHsgd2lkdGg6IFwiMXB4XCIsIGhlaWdodDogXCIyMHB4XCIsIGJhY2tncm91bmRDb2xvcjogXCJibHVlXCIgfSk7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxidG4gPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgXCJidXR0b25cIiwgc2NpbC5VdGlscy5pbWdUYWcoXCJjYW5jZWwuZ2lmXCIpICsgXCJDYW5jZWxcIiwgeyBtYXJnaW5Ub3A6IFwiMTBweFwiIH0pO1xyXG4gICAgICAgIGRvam8uY29ubmVjdCh0aGlzLmNhbmNlbGJ0biwgXCJvbmNsaWNrXCIsIGZ1bmN0aW9uICgpIHsgc2NpbGxpZ2VuY2UuUHJvZ3Jlc3MuY2FuY2VsKCk7IH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRsZyA9IG5ldyBKU0RyYXcyLkRpYWxvZyhcIlByb2dyZXNzXCIsIGRpdik7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn07XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbnNjaWwuUmVzaXphYmxlID0gc2NpbC5leHRlbmQoc2NpbC5fYmFzZSwge1xyXG4gIGNvbnN0cnVjdG9yOiBmdW5jdGlvbihoYW5kbGUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuVCA9ICdSRVNJWkFCTEUnO1xyXG4gICAgaWYgKHR5cGVvZiAoaGFuZGxlKSA9PSAnc3RyaW5nJylcclxuICAgICAgaGFuZGxlID0gc2NpbC5ieUlkKGhhbmRsZSk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcbiAgICB0aGlzLnJlc2l6aW5nID0gbnVsbDtcclxuICAgIHRoaXMuaGFuZGxlID0gaGFuZGxlO1xyXG4gICAgdGhpcy5iZ2NvbG9yID0gdGhpcy5oYW5kbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09ICd5JylcclxuICAgICAgaGFuZGxlLnN0eWxlLmN1cnNvciA9ICducy1yZXNpemUnO1xyXG4gICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PSAneCcpXHJcbiAgICAgIGhhbmRsZS5zdHlsZS5jdXJzb3IgPSAnZXctcmVzaXplJztcclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgZG9qby5jb25uZWN0KGhhbmRsZSwgJ29ubW91c2Vkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICBtZS5zdGFydChlKTtcclxuICAgIH0pO1xyXG4gICAgc2NpbC5jb25uZWN0KGRvY3VtZW50LmJvZHksICdvbm1vdXNlbW92ZScsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgaWYgKG1lLnJlc2l6ZShlKSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfSk7XHJcbiAgICBzY2lsLmNvbm5lY3QoZG9jdW1lbnQuYm9keSwgJ29ubW91c2V1cCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgbWUucmVzaXppbmcgPSBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tb3VzZW92ZXJjb2xvciAhPSBudWxsKSB7XHJcbiAgICAgIHNjaWwuY29ubmVjdChoYW5kbGUsICdvbm1vdXNlb3ZlcicsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIG1lLmhhbmRsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBtZS5vcHRpb25zLm1vdXNlb3ZlcmNvbG9yO1xyXG4gICAgICB9KTtcclxuICAgICAgc2NpbC5jb25uZWN0KGhhbmRsZSwgJ29ubW91c2VvdXQnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICBtZS5oYW5kbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gbWUuYmdjb2xvcjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgcmVzaXplOiBmdW5jdGlvbihlKSB7XHJcbiAgICBpZiAodGhpcy5yZXNpemluZyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIGRlbHRhID0gdGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PSAneScgPyAoZS5jbGllbnRZIC0gdGhpcy5yZXNpemluZy55KSA6IChlLmNsaWVudFggLSB0aGlzLnJlc2l6aW5nLngpO1xyXG4gICAgaWYgKGRlbHRhID09IDApXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIHZhciBmID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9ucmVzaXplICE9IG51bGwpXHJcbiAgICAgIGYgPSB0aGlzLm9wdGlvbnMub25yZXNpemUoZGVsdGEsIHRoaXMpO1xyXG5cclxuICAgIGlmIChmKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09ICd5JylcclxuICAgICAgICB0aGlzLnJlc2l6aW5nLnkgPSBlLmNsaWVudFk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnJlc2l6aW5nLnggPSBlLmNsaWVudFg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfSxcclxuXHJcbiAgc3RhcnQ6IGZ1bmN0aW9uKGUpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09ICd5JylcclxuICAgICAgdGhpcy5yZXNpemluZyA9IHt5OiBlLmNsaWVudFl9O1xyXG4gICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PSAneCcpXHJcbiAgICAgIHRoaXMucmVzaXppbmcgPSB7eDogZS5jbGllbnRYfTtcclxuICB9LFxyXG59KTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLyoqXHJcbiAqIFRhYmxlIGNsYXNzIC0gVGFibGUgQ29udHJvbFxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuVGFibGVcclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZSAxOjwvYj5cclxuICogICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAqICAgICAgICB2YXIgcGFyZW50ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRvY3VtZW50LmJvZHksIFwiZGl2XCIpO1xyXG4gKiAgICAgICAgdmFyIGNvbHVtbnMgPSB7XHJcbiAqICAgICAgICAgICAgdXNlcjogeyBsYWJlbDogXCJVc2VyXCIsIHR5cGU6IFwiaW5wdXRcIiwgd2lkdGg6IDMwMCB9LFxyXG4gKiAgICAgICAgICAgIHJvbGU6IHsgbGFiZWw6IFwiUm9sZVwiLCB0eXBlOiBcInNlbGVjdFwiLCBvcHRpb25zOiBbXCJcIiwgXCJNZW1iZXJcIiwgXCJNYW5hZ2VyXCJdLCB3aWR0aDogMzAwIH1cclxuICogICAgICAgIH07XHJcbiAqICAgICAgICB2YXIgdGFibGUgPSBuZXcgc2NpbGxpZ2VuY2UuVGFibGUoe3ZpZXdvbmx5OiBmYWxzZSwgaGVhZGVyOiB0cnVlfSk7XHJcbiAqICAgICAgICB0YWJsZS5yZW5kZXIocGFyZW50LCBjb2x1bW5zKTtcclxuICpcclxuICogICAgICAgIHRhYmxlLnNldERhdGEoW3sgdXNlcjogXCJUb255XCIsIHJvbGU6IFwiTWVtYmVyXCIgfSwgeyB1c2VyOiBcIkphY2tcIiwgcm9sZTogXCJNYW5hZ2VyXCJ9XSk7XHJcbiAqICAgIH0pO1xyXG4gKlxyXG4gKiA8Yj5FeGFtcGxlIDIgKERvdWJsZSBIZWFkZXIgVGFibGUpOjwvYj5cclxuICogICAgJmx0O3NjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCImZ3Q7XHJcbiAqICAgICAgICB2YXIgdGFibGU7XHJcbiAqICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHtcclxuICogICAgICAgICAgICB2YXIgcGFyZW50ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRvY3VtZW50LmJvZHksIFwiZGl2XCIpO1xyXG4gKiAgICAgICAgICAgIHZhciBjb2x1bW5zID0ge1xyXG4gKiAgICAgICAgICAgICAgICBtYXNzOiB7IGxhYmVsOiBcIk1hc3NcIiwgdHlwZTogXCJudW1iZXJcIiwgYWxpZ246IFwiY2VudGVyXCIsIHdpZHRoOiAyMDAsIHVuaXQ6IFwiZ1wiIH0sXHJcbiAqICAgICAgICAgICAgICAgIGZpbGU6IHsgbGFiZWw6IFwiTk1SXCIsIHR5cGU6IFwiZmlsZVwiLCBvcHRpb25zOiB7IHVwbG9hZHVybDogXCJzZXJ2aWNlLmFzcHg/Y21kPXVwbG9hZFwifSB9LFxyXG4gKiAgICAgICAgICAgICAgICBuYW1lOiB7IGxhYmVsOiBcIkNvbXBvdW5kIE5hbWVcIiwgdHlwZTogXCJpbnB1dFwiLCB3aWR0aDogMjAwIH0sXHJcbiAqICAgICAgICAgICAgICAgIHZlbmRvcjogeyBsYWJlbDogXCJWZW5kb3JcIiwgdHlwZTogXCJlZGl0YWJsZXNlbGVjdFwiLCBvcHRpb25zOiBbXCJDb21wYW55IEFcIiwgXCJDb21wYW55IEJcIl0sIHdpZHRoOiAyMDAgfVxyXG4gKiAgICAgICAgICAgIH07XHJcbiAqICAgICAgICAgICAgdGFibGUgPSBuZXcgc2NpbC5UYWJsZSh7IHZpZXdvbmx5OiB0cnVlLCBoZWFkZXIwOiBbbnVsbCwgeyBsYWJlbDogXCJTY2lsbGlcIiwgY29sc3BhbjogMiB9LCB7IGxhYmVsOiBcIktpbmFzZVwifV0gfSk7XHJcbiAqICAgICAgICAgICAgdGFibGUucmVuZGVyKHBhcmVudCwgY29sdW1ucyk7XHJcbiAqICAgICAgICAgICAgdGFibGUuYWRkUm93KHsgbWFzczogMTYwLCBuYW1lOiBcIkNvbXBvdW5kIDEyM1wiLCB2ZW5kb3I6IFwiU2lnbWFcIiB9KTtcclxuICogICAgICAgIH0pO1xyXG4gKiAgJmx0Oy9zY3JpcHQmZ3Q7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuc2NpbC5UYWJsZSA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3IgVGFibGVcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHZpZXdvbmx5XHJcbiAgICogQHBhcmFtIHtib29sfSBoZWFkZXJcclxuICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IG9wdGlvbnMgLSB7IHZpZXdvbmx5KGJvb2wpLCBoZWFkZXIoYm9vbCksIHNlbGVjdHJvdyAoYm9vbCksIHJvd2NoZWNrKGJvb2wpLCBkZWxyb3coYm9vbCksIGFkZHJvdyAoYm9vbCksIHNlbGVjdHJvdyAoYm9vbCksIG9uQWRkLCBvbnNlbGVjdHJvdywgb25jaGFuZ2UgfVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yOiBmdW5jdGlvbih2aWV3b25seSwgaGVhZGVyLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnVEFCTEUnO1xyXG4gICAgaWYgKHZpZXdvbmx5ICE9IG51bGwgJiYgdHlwZW9mICh2aWV3b25seSkgPT0gJ29iamVjdCcpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gdmlld29ubHk7XHJcbiAgICAgIHRoaXMudmlld29ubHkgPSB0aGlzLm9wdGlvbnMudmlld29ubHk7XHJcbiAgICAgIHRoaXMuaGVhZGVyID0gdGhpcy5vcHRpb25zLmhlYWRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIG9sZCBjb25zdHJ1Y3RvcjogKHZpZXdvbmx5LCBoZWFkZXIsIG9wdGlvbnMpXHJcbiAgICAgIHRoaXMudmlld29ubHkgPSB2aWV3b25seTtcclxuICAgICAgdGhpcy5oZWFkZXIgPSBoZWFkZXI7XHJcbiAgICAgIGlmIChzY2lsLlRhYmxlLl90YWJsZWluY3JlYXNlID09IG51bGwpXHJcbiAgICAgICAgc2NpbC5UYWJsZS5fdGFibGVpbmNyZWFzZSA9IDA7XHJcbiAgICAgIHRoaXMuX3RhYmxlaWQgPSArK3NjaWwuVGFibGUuX3RhYmxlaW5jcmVhc2U7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIChvcHRpb25zKSA9PSAnZnVuY3Rpb24nKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHtvbkFkZDogb3B0aW9uc307XHJcbiAgICAgIGVsc2UgaWYgKG9wdGlvbnMgPT0gbnVsbClcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7fTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncm91cEluZGV4ID0gMDtcclxuICAgIHRoaXMuY2hlY2tJbmRleCA9IDE7XHJcbiAgICB0aGlzLmRhdGFJbmRleCA9IDI7XHJcbiAgICB0aGlzLl9zdGFydHJvdyA9IDI7XHJcbiAgICB0aGlzLnRib2R5ID0gbnVsbDtcclxuICAgIHRoaXMuaXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5rZXkgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuX2xhc3RjaGVjayA9IG51bGw7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRhYmxlIGRhdGEgYXMgeG1sXHJcbiAgICogQGZ1bmN0aW9uIGdldERhdGFcclxuICAgKi9cclxuICBnZXRYbWw6IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIG4gPSB0aGlzLnRib2R5LmNoaWxkTm9kZXMubGVuZ3RoIC0gdGhpcy5fc3RhcnRyb3c7XHJcbiAgICBpZiAobiA9PSAwKVxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB2YXIgeG1sID0gJzx0YWJsZT5cXG4nO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcclxuICAgICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW2kgKyB0aGlzLl9zdGFydHJvd107XHJcblxyXG4gICAgICB2YXIgaGFzZGF0YSA9IGZhbHNlO1xyXG4gICAgICB2YXIgcm93ID0ge307XHJcbiAgICAgIHZhciBqID0gdGhpcy5kYXRhSW5kZXg7XHJcbiAgICAgIGZvciAodmFyIGsgaW4gdGhpcy5pdGVtcykge1xyXG4gICAgICAgIHZhciB2ID0gc2NpbC5Gb3JtLmdldEZpZWxkRGF0YSh0ci5jaGlsZE5vZGVzW2orK10uZmllbGQpO1xyXG4gICAgICAgIHJvd1trXSA9IHY7XHJcbiAgICAgICAgaWYgKCFoYXNkYXRhICYmIHYgIT0gbnVsbCAmJiB2ICE9ICcnKVxyXG4gICAgICAgICAgaGFzZGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghaGFzZGF0YSlcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIHhtbCArPSAnPHInO1xyXG4gICAgICBpZiAodHIuZ2V0QXR0cmlidXRlKCdpc25ldycpID09ICcxJylcclxuICAgICAgICB4bWwgKz0gJyBpc25ldz1cXCcxXFwnJztcclxuICAgICAgeG1sICs9ICc+XFxuJztcclxuICAgICAgZm9yICh2YXIgayBpbiByb3cpIHtcclxuICAgICAgICB2YXIgdiA9IHJvd1trXTtcclxuICAgICAgICBpZiAodiAhPSBudWxsICYmIHYgIT0gJycpXHJcbiAgICAgICAgICB4bWwgKz0gJzxpIG49XFwnJyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUoaykgKyAnXFwnPicgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKHYpICsgJzwvaT5cXG4nO1xyXG4gICAgICB9XHJcbiAgICAgIHhtbCArPSAnPC9yPlxcbic7XHJcbiAgICB9XHJcbiAgICB4bWwgKz0gJzwvdGFibGU+JztcclxuICAgIHJldHVybiB4bWw7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRhYmxlIHhtbCBkYXRhXHJcbiAgICogQGZ1bmN0aW9uIHNldFhtbFxyXG4gICAqIEBwYXJhbSB7eG1sfSB4bWxcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgc2V0WG1sOiBmdW5jdGlvbih4bWwsIGxvY2tlZGl0ZW1zKSB7XHJcbiAgICB2YXIgcm9vdCA9IG51bGw7XHJcbiAgICBpZiAodHlwZW9mIHhtbCA9PSAnb2JqZWN0Jykge1xyXG4gICAgICByb290ID0geG1sO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgeG1sID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHZhciBkb2MgPSBzY2lsLlV0aWxzLnBhcnNlWG1sKHhtbCk7XHJcbiAgICAgIGlmIChkb2MgIT0gbnVsbClcclxuICAgICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudCB8fCBkb2MuZmlyc3RFbGVtZW50Q2hpbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRhdGEgPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChyb290ICE9IG51bGwgJiYgcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9PSBudWxsKVxyXG4gICAgICAgIHJvb3QgPSBudWxsO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb290ICE9IG51bGwpIHtcclxuICAgICAgdmFyIHJvd3MgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdyJyk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIHZhciByb3cgPSB7fTtcclxuXHJcbiAgICAgICAgdmFyIGNlbGxzID0gcm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaScpO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2VsbHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgIHZhciBlID0gY2VsbHNbal07XHJcbiAgICAgICAgICB2YXIgayA9IGUuZ2V0QXR0cmlidXRlKCduJyk7XHJcbiAgICAgICAgICByb3dba10gPSBlLnRleHQgfHwgZS50ZXh0Q29udGVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGEucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREYXRhKGRhdGEpO1xyXG4gIH0sXHJcblxyXG4gIGdldENzdjogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgcyA9ICcnO1xyXG4gICAgdmFyIGkgPSAwO1xyXG4gICAgZm9yICh2YXIgayBpbiB0aGlzLml0ZW1zKSB7XHJcbiAgICAgIGlmICgrK2kgPiAxKVxyXG4gICAgICAgIHMgKz0gJywnO1xyXG4gICAgICBzICs9IHNjaWwuVXRpbHMuZXNjQ3N2VmFsdWUodGhpcy5pdGVtc1trXS5sYWJlbCk7XHJcbiAgICB9XHJcbiAgICBzICs9ICdcXG4nO1xyXG5cclxuICAgIHZhciBuID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzLmxlbmd0aCAtIHRoaXMuX3N0YXJ0cm93O1xyXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opIHtcclxuICAgICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW2ogKyB0aGlzLl9zdGFydHJvd107XHJcbiAgICAgIHZhciByb3cgPSB0aGlzLmdldFJvd0RhdGEodHIsIHRydWUpO1xyXG5cclxuICAgICAgaSA9IDA7XHJcbiAgICAgIGZvciAodmFyIGsgaW4gdGhpcy5pdGVtcykge1xyXG4gICAgICAgIGlmICgrK2kgPiAxKVxyXG4gICAgICAgICAgcyArPSAnLCc7XHJcbiAgICAgICAgcyArPSBzY2lsLlV0aWxzLmVzY0NzdlZhbHVlKHJvd1trXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHMgKz0gJ1xcbic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGFibGUgZGF0YSAgLSBjb2xsZWN0aW9uOiB7IGlkLjE6IHsuLi59LCBpZC4yIDogey4uLn0sIC4uLiB9XHJcbiAgICogQGZ1bmN0aW9uIGdldERhdGFcclxuICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IGNvbGxlY3Rpb24gLSB0aGUgY29sbGVjdGlvbiB0aGF0IGRhdGEgd2lsbCBiZSBwbGFjZWQgaW5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBpZCBwcmVmaXhcclxuICAgKi9cclxuICBnZXREYXRhOiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpZCwgcm93Y2hlY2spIHtcclxuICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcclxuICAgICAgdmFyIHJvd3MgPSBbXTtcclxuICAgICAgdmFyIG4gPSB0aGlzLnRib2R5LmNoaWxkTm9kZXMubGVuZ3RoIC0gdGhpcy5fc3RhcnRyb3c7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW2kgKyB0aGlzLl9zdGFydHJvd107XHJcbiAgICAgICAgdmFyIHJvdyA9IHRoaXMuZ2V0Um93RGF0YSh0ciwgcm93Y2hlY2spO1xyXG4gICAgICAgIHJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByb3dzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIG4gPSB0aGlzLnRib2R5LmNoaWxkTm9kZXMubGVuZ3RoIC0gdGhpcy5fc3RhcnRyb3c7XHJcbiAgICAgIGNvbGxlY3Rpb25baWQgKyAnLm4nXSA9IG47XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW2kgKyB0aGlzLl9zdGFydHJvd107XHJcbiAgICAgICAgdmFyIGtleSA9IGlkICsgJy4nICsgaSArICcuJztcclxuICAgICAgICBpZiAodHIuZ2V0QXR0cmlidXRlKCdpc25ldycpID09ICcxJylcclxuICAgICAgICAgIGNvbGxlY3Rpb25ba2V5ICsgJ2lzbmV3J10gPSAxO1xyXG5cclxuICAgICAgICB2YXIgaiA9IHRoaXMuZGF0YUluZGV4O1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gdGhpcy5pdGVtcylcclxuICAgICAgICAgIGNvbGxlY3Rpb25ba2V5ICsga10gPSBzY2lsLkZvcm0uZ2V0RmllbGREYXRhKHRyLmNoaWxkTm9kZXNbaisrXS5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgSlNPTiBkYXRhIG9mIGEgcm93XHJcbiAgICogQGZ1bmN0aW9uIGdldFJvd0RhdGFcclxuICAgKi9cclxuICBnZXRSb3dEYXRhOiBmdW5jdGlvbih0ciwgcm93Y2hlY2spIHtcclxuICAgIGlmICh0ciA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKHRyKSA9PSAnbnVtYmVyJykge1xyXG4gICAgICB0ciA9IHRoaXMudGJvZHkuY2hpbGROb2Rlc1t0ciArIHRoaXMuX3N0YXJ0cm93XTtcclxuICAgICAgaWYgKHRyID09IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHJvdyA9IHt9O1xyXG4gICAgaWYgKHRyLmdldEF0dHJpYnV0ZSgnaXNuZXcnKSA9PSAnMScpXHJcbiAgICAgIHJvdy5pc25ldyA9IDE7XHJcblxyXG4gICAgdmFyIGogPSB0aGlzLmRhdGFJbmRleDtcclxuICAgIGZvciAodmFyIGsgaW4gdGhpcy5pdGVtcykge1xyXG4gICAgICB2YXIgdGQgPSB0ci5jaGlsZE5vZGVzW2orK107XHJcbiAgICAgIHZhciB2ID0gdGQgPT0gbnVsbCA/IG51bGwgOiBzY2lsLkZvcm0uZ2V0RmllbGREYXRhKHRkLmZpZWxkKTtcclxuICAgICAgaWYgKHYgIT0gbnVsbCAmJiB2ICE9ICcnKVxyXG4gICAgICAgIHJvd1trXSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvd2NoZWNrICYmIHRyLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQpXHJcbiAgICAgIHJvdy5yb3djaGVja2VkID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gcm93O1xyXG4gIH0sXHJcblxyXG4gIGdldFJvd1RleHRzOiBmdW5jdGlvbih0cikge1xyXG4gICAgaWYgKHRyID09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHR5cGVvZiAodHIpID09ICdudW1iZXInKSB7XHJcbiAgICAgIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW3RyICsgdGhpcy5fc3RhcnRyb3ddO1xyXG4gICAgICBpZiAodHIgPT0gbnVsbClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcm93ID0ge307XHJcbiAgICBpZiAodHIuZ2V0QXR0cmlidXRlKCdpc25ldycpID09ICcxJylcclxuICAgICAgcm93LmlzbmV3ID0gMTtcclxuXHJcbiAgICB2YXIgaiA9IHRoaXMuZGF0YUluZGV4O1xyXG4gICAgZm9yICh2YXIgayBpbiB0aGlzLml0ZW1zKSB7XHJcbiAgICAgIHZhciBlID0gdHIuY2hpbGROb2Rlc1tqKytdO1xyXG4gICAgICB2YXIgdiA9IGUudGV4dCB8fCBlLnRleHRDb250ZW50O1xyXG4gICAgICBpZiAodiAhPSBudWxsICYmIHYgIT0gJycpXHJcbiAgICAgICAgcm93W2tdID0gdjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcm93O1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBKU09OIGRhdGEgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcm93XHJcbiAgICogQGZ1bmN0aW9uIGdldEN1cnJlbnRSb3dEYXRhXHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudFJvd0RhdGE6IGZ1bmN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Um93RGF0YSh0aGlzLmN1cnJvdyk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRhYmxlIGRhdGFcclxuICAgKiBAZnVuY3Rpb24gc2V0RGF0YVxyXG4gICAqIEBwYXJhbSB7YXJyYXl9IGRhdGEgLSB0aGUgYXJyYXkgb2YgdGFibGUgZGF0YSwgb25lIGFycmF5IGl0ZW0gaXMgZm9yIG9uZSByb3dcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgc2V0RGF0YTogZnVuY3Rpb24oZGF0YSwgbG9ja2VkaXRlbXMpIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIGlmIChkYXRhICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHRoaXMuYWRkUm93KGRhdGFbaV0sIGxvY2tlZGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudmlld29ubHkgJiYgdGhpcy5vcHRpb25zLmFkZHJvdyAhPSBmYWxzZSlcclxuICAgICAgdGhpcy5hZGRSb3coKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYWxsIHJvd3NcclxuICAgKiBAZnVuY3Rpb24gY2xlYXJcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgY2xlYXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMudGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IHRoaXMuX3N0YXJ0cm93OyAtLWkpXHJcbiAgICAgIHRoaXMudGJvZHkucmVtb3ZlQ2hpbGQodGhpcy50Ym9keS5jaGlsZE5vZGVzW2ldKTtcclxuICAgIHRoaXMuY3Vycm93ID0gbnVsbDtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBSZW5kZXIgdGFibGVcclxuICAgKiBAZnVuY3Rpb24gcmVuZGVyXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBwYXJlbnQgLSBwYXJlbnQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSB7YXJyYXl9IGl0ZW0gLSBjb2x1bW4gZGVmaW5pdGlvbiBhcyBhbiBhcnJheVxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICByZW5kZXI6IGZ1bmN0aW9uKHBhcmVudCwgaXRlbXMpIHtcclxuICAgIHRoaXMuaXRlbXMgPSB7fTtcclxuICAgIGZvciAodmFyIGlkIGluIGl0ZW1zKSB7XHJcbiAgICAgIGlmIChpdGVtc1tpZF0gIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuaXRlbXNbaWRdID0gaXRlbXNbaWRdO1xyXG4gICAgICAgIGlmIChpdGVtc1tpZF0uaXNrZXkpXHJcbiAgICAgICAgICB0aGlzLmtleSA9IGlkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWRlQ29va2llQ29scyh0aGlzLml0ZW1zKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIChwYXJlbnQpID09ICdzdHJpbmcnKVxyXG4gICAgICBwYXJlbnQgPSBkb2pvLmJ5SWQocGFyZW50KTtcclxuXHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsICdkaXYnKTtcclxuICAgIHRoaXMudGJvZHkgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVUYWJsZShkaXYsIDAsIDMsIHtib3JkZXJSaWdodDogSlNEcmF3Mi5Ta2luLmpzc2RmLmJvcmRlciwgYm9yZGVyQm90dG9tOiBKU0RyYXcyLlNraW4uanNzZGYuYm9yZGVyLCBib3JkZXJUb3A6IEpTRHJhdzIuU2tpbi5qc3NkZi5ib3JkZXJ9KTtcclxuICAgIHRoaXMudGJvZHkucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3NjaWxfdGFibGUnKTtcclxuICAgIGlmICghdGhpcy52aWV3b25seSAmJiB0aGlzLm9wdGlvbnMuYWRkcm93ICE9IGZhbHNlKSB7XHJcbiAgICAgIHZhciBhZGRidG4gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgJ2RpdicpLCAnaW1nJywgbnVsbCwgbnVsbCwge3NyYzogc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9hZGQuZ2lmJyksIHRpdGxlOiBzY2lsLkxhbmcucmVzKCdBZGQnKX0pO1xyXG4gICAgICBkb2pvLmNvbm5lY3QoYWRkYnRuLCAnb25jbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChtZS5vcHRpb25zLm9uQWRkICE9IG51bGwpIG1lLm9wdGlvbnMub25BZGQobWUpOyBlbHNlIG1lLmFkZFJvdygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcjAgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICB2YXIgaGVhZGVyMCA9IHRoaXMub3B0aW9ucy5oZWFkZXIwO1xyXG4gICAgdmFyIHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICBpZiAoaGVhZGVyMCAhPSBudWxsKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChyMCwgJ3RkJywgbnVsbCwge2Rpc3BsYXk6IHRoaXMub3B0aW9ucy5ncm91cGluZyA/ICcnIDogJ25vbmUnfSk7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChyMCwgJ3RkJywgbnVsbCwge2Rpc3BsYXk6IHRoaXMub3B0aW9ucy5yb3djaGVjayA/ICcnIDogJ25vbmUnfSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVyMC5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIHZhciBpdGVtID0gaGVhZGVyMFtpXTtcclxuICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocjAsICd0ZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocjAsICd0ZCcsIHNjaWwuTGFuZy5yZXMoaXRlbS5sYWJlbCksIHNjaWwuVGFibGUuaGVhZGVyc3R5bGVzLCB7Y29sU3BhbjogaXRlbS5jb2xzcGFufSk7XHJcbiAgICAgICAgICB0ZC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQociwgJ3RkJywgbnVsbCwgc2NpbC5UYWJsZS5oZWFkZXJzdHlsZXMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ncm91cGluZykge1xyXG4gICAgICB0ZC5zdHlsZS53aWR0aCA9ICc1cHgnO1xyXG4gICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdpbWcnLCBudWxsLCBudWxsLCB7c3JjOiBzY2lsLlV0aWxzLmltZ1NyYygnaW1nL21pbnVzLmdpZicpfSwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIG1lLmdyb3VwRXhwYW5kQWxsKGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHIsICd0ZCcsIG51bGwsIHNjaWwuVGFibGUuaGVhZGVyc3R5bGVzKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucm93Y2hlY2spIHtcclxuICAgICAgdGQuc3R5bGUud2lkdGggPSAnNXB4JztcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5yb3djaGVjayAhPSAncmFkaW8nKVxyXG4gICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgJ2NoZWNrYm94JywgbnVsbCwgbnVsbCwgbnVsbCwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgbWUuY2hlY2tBbGwoKGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldCkuY2hlY2tlZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0ZC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzdHlsZSA9IHNjaWwuY2xvbmUoc2NpbC5UYWJsZS5oZWFkZXJzdHlsZXMpO1xyXG4gICAgc3R5bGUuYm9yZGVyQm90dG9tID0gSlNEcmF3Mi5Ta2luLmpzc2RmLmJvcmRlcjtcclxuICAgIHN0eWxlLmJvcmRlckxlZnQgPSBKU0RyYXcyLlNraW4uanNzZGYuYm9yZGVyO1xyXG5cclxuICAgIGZvciAodmFyIGlkIGluIHRoaXMuaXRlbXMpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2lkXTtcclxuICAgICAgdmFyIHMgPSBzY2lsLkxhbmcucmVzKGl0ZW0ubGFiZWwpO1xyXG4gICAgICBpZiAoaXRlbS51bml0ICE9IG51bGwgJiYgaXRlbS51bml0ICE9ICcnKVxyXG4gICAgICAgIHMgKz0gJyAoJyArIHNjaWwuTGFuZy5yZXMoaXRlbS51bml0KSArICcpJztcclxuICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHIsICd0ZCcsIHMsIHN0eWxlLCB7a2V5OiBpZH0pO1xyXG4gICAgICBpZiAoaXRlbS53aWR0aCAhPSBudWxsKVxyXG4gICAgICAgIHRkLnN0eWxlLndpZHRoID0gaXRlbS53aWR0aCArICdweCc7XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2hpZGRlbicgfHwgaXRlbS5pc2hpZGRlbilcclxuICAgICAgICB0ZC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnY2hlY2tib3gnICYmIGl0ZW0uaGVhZGVyY2hlY2tib3ggIT0gZmFsc2UgJiYgIXRoaXMudmlld29ubHkgJiYgIWl0ZW0udmlld29ubHkpIHtcclxuICAgICAgICB2YXIgY2hrID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCAnY2hlY2tib3gnKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RDaGVja0FsbChjaGssIGlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGVhZGVyID09IGZhbHNlKVxyXG4gICAgICByLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBpZiAoIXRoaXMudmlld29ubHkpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWxyb3cgIT0gZmFsc2UpXHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHIsICd0ZCcsICcmbmJzcDsnLCBzdHlsZSk7XHJcbiAgICAgIHRoaXMuYWRkUm93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlY3Ryb3cpXHJcbiAgICAgIGRvam8uY29ubmVjdCh0aGlzLnRib2R5LCAnb25jbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5jbGlja1JvdyhlKTtcclxuICAgICAgfSk7XHJcbiAgfSxcclxuXHJcbiAgY29ubmVjdENoZWNrQWxsOiBmdW5jdGlvbihjaGssIGlkKSB7XHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgZG9qby5jb25uZWN0KGNoaywgJ29uY2xpY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIG1lLmNoZWNrQWxsKChlLnNyY0VsZW1lbnQgfHwgZS50YXJnZXQpLmNoZWNrZWQsIGlkKTtcclxuICAgIH0pO1xyXG4gIH0sXHJcblxyXG4gIGhpZENvbHVtbjogZnVuY3Rpb24oa2V5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93Q29sdW1uKGtleSwgZmFsc2UpO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgb3IgaGlkZSBhIGNvbHVtblxyXG4gICAqIEBmdW5jdGlvbiBzaG93Q29sdW1uXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gZlxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBzaG93Q29sdW1uOiBmdW5jdGlvbihrZXksIGYpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZGVyMCAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGYgPT0gbnVsbClcclxuICAgICAgZiA9IHRydWU7XHJcblxyXG4gICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2tleV07XHJcbiAgICBpZiAoaXRlbSA9PSBudWxsIHx8IGl0ZW0udHlwZSA9PSAnaGlkZGVuJylcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgaXRlbS5pc2hpZGRlbiA9ICFmO1xyXG5cclxuICAgIGlmICh0aGlzLnRib2R5ID09IG51bGwgfHwgdGhpcy50Ym9keS5jaGlsZE5vZGVzLmxlbmd0aCA8PSAxKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIGljb2wgPSB0aGlzLmdldENvbEluZGV4KGtleSk7XHJcbiAgICBpZiAoaWNvbCA9PSAtMSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy50Ym9keS5jaGlsZE5vZGVzLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLnRib2R5LmNoaWxkTm9kZXNbaV0uY2hpbGROb2Rlc1tpY29sXS5zdHlsZS5kaXNwbGF5ID0gZiA/ICcnIDogJ25vbmUnO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0sXHJcblxyXG4gIGdldENvbEluZGV4OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIHZhciB0ciA9IHRoaXMudGJvZHkuY2hpbGROb2Rlc1sxXTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHIuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodHIuY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoJ2tleScpID09IGtleSlcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgYWxsIHJvd3NcclxuICAgKiBAZnVuY3Rpb24gY2hlY2tBbGxcclxuICAgKi9cclxuICBjaGVja0FsbDogZnVuY3Rpb24oZiwga2V5KSB7XHJcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXM7XHJcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX3N0YXJ0cm93OyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBpZiAobm9kZXNbaV0uc3R5bGUuZGlzcGxheSA9PSAnbm9uZScpXHJcbiAgICAgICAgICBub2Rlc1tpXS5jaGlsZE5vZGVzW3RoaXMuY2hlY2tJbmRleF0uZmlyc3RDaGlsZC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgbm9kZXNbaV0uY2hpbGROb2Rlc1t0aGlzLmNoZWNrSW5kZXhdLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IGY7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBpY29sID0gdGhpcy5nZXRDb2xJbmRleChrZXkpO1xyXG4gICAgICBpZiAoaWNvbCA9PSAtMSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5fc3RhcnRyb3c7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGlmIChub2Rlc1tpXS5zdHlsZS5kaXNwbGF5ID09ICdub25lJykge1xyXG4gICAgICAgICAgbm9kZXNbaV0uY2hpbGROb2Rlc1t0aGlzLmNoZWNrSW5kZXhdLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIgdGQgPSBub2Rlc1tpXS5jaGlsZE5vZGVzW2ljb2xdO1xyXG4gICAgICAgICAgdmFyIGxpc3QgPSB0ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTtcclxuICAgICAgICAgIGlmIChsaXN0ICE9IG51bGwgJiYgbGlzdC5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgbGlzdFswXS5jaGVja2VkID0gZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2hlY2tlZCByb3dzXHJcbiAgICogQGZ1bmN0aW9uIGdldENoZWNrZWRSb3dzXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZFJvd3M6IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHJldCA9IFtdO1xyXG4gICAgdmFyIGxpc3QgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXM7XHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5fc3RhcnRyb3c7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChsaXN0W2ldLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQpXHJcbiAgICAgICAgcmV0LnB1c2goaSAtIHRoaXMuX3N0YXJ0cm93KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGNoZWNrZWQgcm93IGRhdGFcclxuICAgKiBAZnVuY3Rpb24gZ2V0Q2hlY2tlZFJvd0RhdGFcclxuICAgKi9cclxuICBnZXRDaGVja2VkUm93RGF0YTogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgcmV0ID0gW107XHJcbiAgICB2YXIgbGlzdCA9IHRoaXMudGJvZHkuY2hpbGROb2RlcztcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLl9zdGFydHJvdzsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGxpc3RbaV0uY2hpbGROb2Rlc1t0aGlzLmNoZWNrSW5kZXhdLmZpcnN0Q2hpbGQuY2hlY2tlZClcclxuICAgICAgICByZXQucHVzaCh0aGlzLmdldFJvd0RhdGEobGlzdFtpXSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2hlY2tlZCByb3cgZGF0YS4gIElmIG5vIHJvdyBjaGVja2VkLCBpdCB3aWxsIHVzZSB0aGUgY3VycmVudCByb3dcclxuICAgKiBAZnVuY3Rpb24gZ2V0Q2hlY2tlZFJvd0RhdGEyXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZFJvd0RhdGEyOiBmdW5jdGlvbigpIHtcclxuICAgIHZhciByZXQgPSBbXTtcclxuICAgIHZhciBsaXN0ID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzO1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuX3N0YXJ0cm93OyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAobGlzdFtpXS5jaGlsZE5vZGVzW3RoaXMuY2hlY2tJbmRleF0uZmlyc3RDaGlsZC5jaGVja2VkKVxyXG4gICAgICAgIHJldC5wdXNoKHRoaXMuZ2V0Um93RGF0YShsaXN0W2ldKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJldC5sZW5ndGggPT0gMCAmJiB0aGlzLmN1ciAhPSBudWxsKVxyXG4gICAgICByZXQucHVzaCh0aGlzLmdldEN1cnJlbnRSb3dEYXRhKCkpO1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQga2V5IG9mIGEgcm93XHJcbiAgICogQGZ1bmN0aW9uIGdldEtleVxyXG4gICAqL1xyXG4gIGdldEtleTogZnVuY3Rpb24odHIpIHtcclxuICAgIHJldHVybiB0ciA9PSBudWxsID8gbnVsbCA6IHRyLmdldEF0dHJpYnV0ZSgna2V5Jyk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgYSByb3cgYnkgdXNpbmcgaXRzIGtleVxyXG4gICAqIEBmdW5jdGlvbiBjaGVja1Jvd1xyXG4gICAqL1xyXG4gIGNoZWNrUm93OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnJvd2NoZWNrKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdmFyIGxpc3QgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXM7XHJcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9zdGFydHJvdzsgaSA8IGxpc3QubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgaWYgKGxpc3RbaV0uZ2V0QXR0cmlidXRlKCdrZXknKSA9PSBrZXkpXHJcbiAgICAgICAgICBsaXN0W2ldLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2Yga2V5ID09ICdvYmplY3QnKSB7XHJcbiAgICAgIHZhciB0ciA9IGtleTtcclxuICAgICAgaWYgKHRyLnRhZ05hbWUgPT0gJ1RSJylcclxuICAgICAgICB0ci5jaGlsZE5vZGVzW3RoaXMuY2hlY2tJbmRleF0uZmlyc3RDaGlsZC5jaGVja2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsIGtleXMgb2YgY2hlY2tlZCByb3dzXHJcbiAgICogQGZ1bmN0aW9uIGdldENoZWNrZWRLZXlzXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZEtleXM6IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHJldCA9IFtdO1xyXG4gICAgdmFyIGxpc3QgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXM7XHJcbiAgICBmb3IgKHZhciBpID0gdGhpcy5fc3RhcnRyb3c7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChsaXN0W2ldLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQpXHJcbiAgICAgICAgcmV0LnB1c2gobGlzdFtpXS5nZXRBdHRyaWJ1dGUoJ2tleScpKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCBrZXlzIG9mIGNoZWNrZWQgcm93cy4gIElmIG5vIHJvdyBjaGVja2VkLCBpdCByZXR1cm5zIHNlbGVjdGVkIHJvdy5cclxuICAgKiBAZnVuY3Rpb24gZ2V0Q2hlY2tlZEtleXMyXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZEtleXMyOiBmdW5jdGlvbigpIHtcclxuICAgIHZhciByZXQgPSB0aGlzLmdldENoZWNrZWRLZXlzKCk7XHJcbiAgICBpZiAocmV0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEN1cnJlbnRLZXkoKTtcclxuICAgICAgaWYgKGtleSAhPSBudWxsKVxyXG4gICAgICAgIHJldC5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGEgcm93IGJ5IHVzaW5nIGl0cyBrZXkuICBJZiBubyByb3cgY2hlY2tlZCwgaXQgcmV0dXJucyBzZWxlY3RlZCByb3cuXHJcbiAgICogQGZ1bmN0aW9uIGdldENoZWNrZWRLZXlzMlxyXG4gICAqL1xyXG4gIGdldENoZWNrZWRSb3dzMjogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgcmV0ID0gdGhpcy5nZXRDaGVja2VkUm93cygpO1xyXG4gICAgaWYgKHJldC5sZW5ndGggPT0gMCkge1xyXG4gICAgICBpZiAodGhpcy5jdXJyb3cgIT0gbnVsbClcclxuICAgICAgICByZXQucHVzaCh0aGlzLmN1cnJvdyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUga2V5IG9mIGN1cnJlbnQgcm93XHJcbiAgICogQGZ1bmN0aW9uIGdldEN1cnJlbnRLZXlcclxuICAgKi9cclxuICBnZXRDdXJyZW50S2V5OiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmN1cnJvdyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIga2V5ID0gdGhpcy5jdXJyb3cuZ2V0QXR0cmlidXRlKCdrZXknKTtcclxuICAgIHJldHVybiBrZXkgPT0gJycgPyBudWxsIDoga2V5O1xyXG4gIH0sXHJcblxyXG4gIGNsaWNrUm93OiBmdW5jdGlvbihlKSB7XHJcbiAgICB2YXIgc3JjID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0O1xyXG4gICAgdmFyIHNyYztcclxuICAgIGlmIChzcmMudGFnTmFtZSA9PSAnVFInKVxyXG4gICAgICB0ciA9IHNyYztcclxuICAgIGVsc2UgaWYgKHNyYy50YWdOYW1lID09ICdBJylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZWxzZVxyXG4gICAgICB0ciA9IHNjaWwuVXRpbHMuZ2V0UGFyZW50KHNyYywgJ1RSJyk7XHJcblxyXG4gICAgaWYgKHRyICE9IG51bGwgJiYgdGhpcy50Ym9keSAhPSB0ci5wYXJlbnROb2RlKVxyXG4gICAgICB0ciA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdFJvdyh0cik7XHJcbiAgfSxcclxuXHJcbiAgc2VsZWN0Rmlyc3RSb3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW3RoaXMuX3N0YXJ0cm93XTtcclxuICAgIHRoaXMuc2VsZWN0Um93KHRyKTtcclxuICB9LFxyXG5cclxuICBmaW5kUm93OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIHZhciBsaXN0ID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzO1xyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuX3N0YXJ0cm93OyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAobGlzdFtpXS5nZXRBdHRyaWJ1dGUoJ2tleScpID09IGtleSlcclxuICAgICAgICByZXR1cm4gbGlzdFtpXTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0sXHJcblxyXG4gIHNlbGVjdFJvdzogZnVuY3Rpb24odHIpIHtcclxuICAgIGlmICh0eXBlb2YgKHRyKSA9PSAnc3RyaW5nJylcclxuICAgICAgdHIgPSB0aGlzLmZpbmRSb3codHIpO1xyXG5cclxuICAgIHZhciBvbGQgPSB0aGlzLmN1cnJvdztcclxuICAgIGlmICh0aGlzLmN1cnJvdyAhPSBudWxsKVxyXG4gICAgICB0aGlzLmN1cnJvdy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmN1cnJvdy5nZXRBdHRyaWJ1dGUoJ2JnY29sb3InKTtcclxuICAgIHRoaXMuY3Vycm93ID0gdHI7XHJcbiAgICBpZiAodGhpcy5jdXJyb3cgIT0gbnVsbClcclxuICAgICAgdGhpcy5jdXJyb3cuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gSlNEcmF3Mi5Ta2luLmpzc2RmLnJvd2NvbG9yO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25zZWxlY3Ryb3cgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uc2VsZWN0cm93KHRoaXMuY3Vycm93LCBvbGQpO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhIHJvd1xyXG4gICAqIEBmdW5jdGlvbiBkZWxSb3dcclxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRoZSBrZXkgdmFsdWVcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgZGVsUm93OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIHZhciBsaXN0ID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChsaXN0W2ldLmdldEF0dHJpYnV0ZSgna2V5JykgPT0ga2V5KSB7XHJcbiAgICAgICAgdGhpcy50Ym9keS5yZW1vdmVDaGlsZChsaXN0W2ldKTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uY2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcyk7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgYSByb3dcclxuICAgKiBAZnVuY3Rpb24gdXBkYXRlUm93XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSB0aGUga2V5IHZhbHVlXHJcbiAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBkYXRhIHJvdyBkYXRhXHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIHVwZGF0ZVJvdzogZnVuY3Rpb24oa2V5LCBkYXRhKSB7XHJcbiAgICB2YXIgbGlzdCA9IHRoaXMudGJvZHkuY2hpbGROb2RlcztcclxuICAgIGZvciAodmFyIGkgPSB0aGlzLl9zdGFydHJvdzsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGxpc3RbaV0uZ2V0QXR0cmlidXRlKCdrZXknKSA9PSBrZXkpIHtcclxuICAgICAgICB2YXIgdHIgPSBsaXN0W2ldO1xyXG4gICAgICAgIGlmIChkYXRhID09IG51bGwpXHJcbiAgICAgICAgICBkYXRhID0ge307XHJcbiAgICAgICAgZGF0YS5yb3djaGVja2VkID0gdGhpcy5vcHRpb25zLnJvd2NoZWNrICYmIHRyLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQ7XHJcbiAgICAgICAgdmFyIHIgPSB0aGlzLmFkZFJvdyhkYXRhLCBudWxsLCB0cik7XHJcbiAgICAgICAgdGhpcy50Ym9keS5yZW1vdmVDaGlsZCh0cik7XHJcbiAgICAgICAgaWYgKHRoaXMuY3Vycm93ID09IHRyKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RSb3cocik7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBTZXQgY2VsbCB2YWx1ZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRDZWxsVmFsdWUyXHJcbiAgICogQHBhcmFtIHtzdHJpbmcvbnVtYmVyL0RPTX0gcm93a2V5IHRoZSBrZXkgb2YgdGhlIHJvdywgb3Igcm93IGluZGV4LCBvciBUUlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xrZXkgdGhlIGtleSBvZiB0aGUgY29sdW1uXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlXHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIHNldENlbGxWYWx1ZTI6IGZ1bmN0aW9uKHJvd2tleSwgY29sa2V5LCB2YWx1ZSkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNbY29sa2V5XSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIHRyID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKHJvd2tleSkgPT0gJ251bWJlcicpIHtcclxuICAgICAgdHIgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXNbdGhpcy5fc3RhcnRyb3cgKyByb3drZXldO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgKHJvd2tleSkgPT0gJ29iamVjdCcgJiYgcm93a2V5LnRhZ05hbWUgPT0gJ1RSJykge1xyXG4gICAgICB0ciA9IHJvd2tleTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBsaXN0ID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzO1xyXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5fc3RhcnRyb3c7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKGxpc3RbaV0uZ2V0QXR0cmlidXRlKCdrZXknKSA9PSByb3drZXkpIHtcclxuICAgICAgICAgIHRyID0gbGlzdFtpXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0ciA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ci5jaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHZhciB0ZCA9IHRyLmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmICh0ZC5nZXRBdHRyaWJ1dGUoJ19fdGlkJykgPT0gY29sa2V5ICYmIHRkLmZpZWxkICE9IG51bGwpIHtcclxuICAgICAgICBzY2lsLkZvcm0uc2V0RmllbGREYXRhKHRkLmZpZWxkLCB0aGlzLml0ZW1zW2NvbGtleV0sIHRoaXMudmlld29ubHksIHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2VsbCB2YWx1ZVxyXG4gICAqIEBmdW5jdGlvbiBnZXRDZWxsVmFsdWUyXHJcbiAgICogQHBhcmFtIHtzdHJpbmcvbnVtYmVyfSByb3drZXkgdGhlIGtleSBvZiB0aGUgcm93LCBvciByb3cgaW5kZXhcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sa2V5IHRoZSBrZXkgb2YgdGhlIGNvbHVtblxyXG4gICAqIEByZXR1cm5zIHRoZSBjZWxsIHZhbHVlXHJcbiAgICovXHJcbiAgZ2V0Q2VsbFZhbHVlMjogZnVuY3Rpb24ocm93a2V5LCBjb2xrZXkpIHtcclxuICAgIGlmICh0aGlzLml0ZW1zW2NvbGtleV0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgdmFyIHRyID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKHJvd2tleSkgPT0gJ251bWJlcicpIHtcclxuICAgICAgdHIgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXNbdGhpcy5fc3RhcnRyb3cgKyByb3drZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGxpc3QgPSB0aGlzLnRib2R5LmNoaWxkTm9kZXM7XHJcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9zdGFydHJvdzsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBpZiAobGlzdFtpXS5nZXRBdHRyaWJ1dGUoJ2tleScpID09IHJvd2tleSkge1xyXG4gICAgICAgICAgdHIgPSBsaXN0W2ldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRyID09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHIuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdGQgPSB0ci5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICBpZiAodGQuZ2V0QXR0cmlidXRlKCdfX3RpZCcpID09IGNvbGtleSAmJiB0ZC5maWVsZCAhPSBudWxsKVxyXG4gICAgICAgIHJldHVybiBzY2lsLkZvcm0uZ2V0RmllbGREYXRhKHRkLmZpZWxkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9LFxyXG5cclxuICBfaGlsaXRSb3c6IGZ1bmN0aW9uKGUsIGYpIHtcclxuICAgIHZhciB0ciA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcclxuICAgIGlmICh0ci50YWdOYW1lICE9ICdUUicpXHJcbiAgICAgIHRyID0gc2NpbC5VdGlscy5nZXRQYXJlbnQodHIsICdUUicpO1xyXG4gICAgaWYgKHRyID09IG51bGwgfHwgdHIuZ2V0QXR0cmlidXRlKCdzY2lsdGFibGUnKSAhPSAnMScpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZiB8fCB0ciA9PSB0aGlzLmN1cnJvdylcclxuICAgICAgdHIuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gSlNEcmF3Mi5Ta2luLmpzc2RmLnJvd2NvbG9yO1xyXG4gICAgZWxzZVxyXG4gICAgICB0ci5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0ci5nZXRBdHRyaWJ1dGUoJ2JnY29sb3InKTtcclxuICB9LFxyXG5cclxuICBncm91cEV4cGFuZEFsbDogZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIGltZyA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcclxuICAgIHZhciBmID0gc2NpbC5VdGlscy5lbmRzd2l0aChpbWcuc3JjLCAnbWludXMuZ2lmJyk7XHJcbiAgICBpbWcuc3JjID0gc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy8nICsgKGYgPyAncGx1cycgOiAnbWludXMnKSArICcuZ2lmJyk7XHJcblxyXG4gICAgdmFyIHRyID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzW3RoaXMuX3N0YXJ0cm93XTtcclxuICAgIHdoaWxlICh0ciAhPSBudWxsKSB7XHJcbiAgICAgIHRyID0gdGhpcy5ncm91cEV4cGFuZCh0ciwgZik7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgZ3JvdXBFeHBhbmQ6IGZ1bmN0aW9uKHRyLCBmKSB7XHJcbiAgICB2YXIgczAgPSB0aGlzLmdldENlbGxWYWx1ZSh0ciwgdGhpcy5vcHRpb25zLmdyb3VwaW5nKTtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoczApKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgaW1nID0gdHIuY2hpbGROb2Rlc1t0aGlzLmdyb3VwSW5kZXhdLmZpcnN0Q2hpbGQ7XHJcbiAgICBpZiAoaW1nLnRhZ05hbWUgIT0gJ0lNRycpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGYgPT0gbnVsbCkge1xyXG4gICAgICBmID0gc2NpbC5VdGlscy5lbmRzd2l0aChpbWcuc3JjLCAnbWludXMuZ2lmJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgd2hpbGUgKCh0ciA9IHRyLm5leHRTaWJsaW5nKSAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBzID0gdGhpcy5nZXRDZWxsVmFsdWUodHIsIHRoaXMub3B0aW9ucy5ncm91cGluZyk7XHJcbiAgICAgIGlmIChzMCAhPSBzKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICArK247XHJcbiAgICAgIHRyLnN0eWxlLmRpc3BsYXkgPSBmID8gJ25vbmUnIDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaW1nLnNyYyA9IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvJyArIChmID8gKG4gPiAwID8gJ3BsdXMnIDogJ3BsdXMwJykgOiAnbWludXMnKSArICcuZ2lmJyk7XHJcbiAgICByZXR1cm4gdHI7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgcm93XHJcbiAgICogQGZ1bmN0aW9uIGFkZFJvd1xyXG4gICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gdmFsdWVzIHJvdyB2YWx1ZXNcclxuICAgKiBAcGFyYW0ge3Jlc2VydmVkfSBsb2NrZWRpdGVtc1xyXG4gICAqIEBwYXJhbSB7RE9NfSBiZWZvcmVyb3cgbmV3IHJvdyB3aWxsIGJlIGluc2VydGVkIGJlZm9yZSB0aGlzIHJvd1xyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBhZGRSb3c6IGZ1bmN0aW9uKHZhbHVlcywgbG9ja2VkaXRlbXMsIGJlZm9yZXJvdykge1xyXG4gICAgaWYgKHZhbHVlcyA9PSBudWxsICYmIHRoaXMub3B0aW9ucy5vbkFkZCAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uQmVmb3JlQWRkUm93ICE9IG51bGwpXHJcbiAgICAgIHZhbHVlcyA9IHRoaXMub3B0aW9ucy5vbkJlZm9yZUFkZFJvdyh2YWx1ZXMpO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB2YXIgYmdjb2xvciA9IHRoaXMudGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggJSAyID09IDEgPyBKU0RyYXcyLlNraW4uanNzZGYub2RkY29sb3IgOiBKU0RyYXcyLlNraW4uanNzZGYuZXZlbmNvbG9yO1xyXG4gICAgdmFyIHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQobnVsbCwgJ3RyJywgbnVsbCwge2JhY2tncm91bmRDb2xvcjogYmdjb2xvcn0sIHtzY2lsdGFibGU6ICcxJywgYmdjb2xvcjogYmdjb2xvcn0pO1xyXG4gICAgaWYgKGJlZm9yZXJvdyA9PSBudWxsKVxyXG4gICAgICB0aGlzLnRib2R5LmFwcGVuZENoaWxkKHIpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRib2R5Lmluc2VydEJlZm9yZShyLCBiZWZvcmVyb3cpO1xyXG5cclxuICAgIGRvam8uY29ubmVjdCh0aGlzLnRib2R5LnBhcmVudE5vZGUsICdvbm1vdXNlb3ZlcicsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgbWUuX2hpbGl0Um93KGUsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgICBkb2pvLmNvbm5lY3QodGhpcy50Ym9keS5wYXJlbnROb2RlLCAnb25tb3VzZW91dCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgbWUuX2hpbGl0Um93KGUsIGZhbHNlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBuZXdncm91cCA9IGZhbHNlO1xyXG4gICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHIsICd0ZCcpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ncm91cGluZykge1xyXG4gICAgICB2YXIgcyA9IHZhbHVlcyA9PSBudWxsID8gbnVsbCA6IHZhbHVlc1t0aGlzLm9wdGlvbnMuZ3JvdXBpbmddO1xyXG4gICAgICB2YXIgczAgPSB0aGlzLmdldENlbGxWYWx1ZShyLnByZXZpb3VzU2libGluZywgdGhpcy5vcHRpb25zLmdyb3VwaW5nKTtcclxuICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSB8fCBzICE9IHMwKSB7XHJcbiAgICAgICAgbmV3Z3JvdXAgPSB0cnVlO1xyXG4gICAgICAgIHZhciBpbWcgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdpbWcnLCBudWxsLCBudWxsLCB7dGl0bGU6ICdFeHBhbmQvQ29sbGFwc2UgQWxsJywgc3JjOiBzY2lsLlV0aWxzLmltZ1NyYygnaW1nL21pbnVzLmdpZicpfSk7XHJcbiAgICAgICAgc2NpbC5jb25uZWN0KGltZywgJ29uY2xpY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICBtZS5ncm91cEV4cGFuZChyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQociwgJ3RkJyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnJvd2NoZWNrKSB7XHJcbiAgICAgIHZhciBuYW1lID0gdGhpcy5vcHRpb25zLnJvd2NoZWNrID09ICdyYWRpbycgPyAnX19zY2lsX3RhYmxlXycgKyB0aGlzLl90YWJsZWlkICsgJ19yYWRpbycgOiBudWxsO1xyXG4gICAgICB2YXIgY2hlY2t0eXBlID0gdGhpcy5vcHRpb25zLnJvd2NoZWNrID09ICdyYWRpbycgPyAncmFkaW8nIDogJ2NoZWNrYm94JztcclxuICAgICAgdmFyIGNoZWNrID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBjaGVja3R5cGUsIG51bGwsIG51bGwsIHtuYW1lOiBuYW1lfSk7XHJcbiAgICAgIGNoZWNrLmNoZWNrZWQgPSB2YWx1ZXMgPT0gbnVsbCA/IGZhbHNlIDogdmFsdWVzLnJvd2NoZWNrZWQ7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMub25yb3djaGVjayAhPSBudWxsKVxyXG4gICAgICAgIGRvam8uY29ubmVjdChjaGVjaywgJ29uY2hhbmdlJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBtZS5vcHRpb25zLm9ucm93Y2hlY2sociwgY2hlY2suY2hlY2tlZCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoY2hlY2t0eXBlID09ICdjaGVja2JveCcpXHJcbiAgICAgICAgc2NpbC5jb25uZWN0KGNoZWNrLCAnb25jbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgIG1lLmNoZWNrZWRDbGljayhlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XHJcbiAgICAgIHIuc2V0QXR0cmlidXRlKCdpc25ldycsICcxJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5rZXkgIT0gbnVsbCAmJiB2YWx1ZXNbdGhpcy5rZXldICE9IG51bGwpXHJcbiAgICAgICAgci5zZXRBdHRyaWJ1dGUoJ2tleScsIHZhbHVlc1t0aGlzLmtleV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGlkIGluIHRoaXMuaXRlbXMpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2lkXTtcclxuICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHIsICd0ZCcsIG51bGwsIGl0ZW0uc3R5bGVzLCBpdGVtLmF0dHJpYnV0ZXMpO1xyXG4gICAgICB0ZC5zdHlsZS5ib3JkZXJMZWZ0ID0gSlNEcmF3Mi5Ta2luLmpzc2RmLmJvcmRlcjtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnaGlkZGVuJyB8fCBpdGVtLmlzaGlkZGVuKVxyXG4gICAgICAgIHRkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgICB2YXIgdmlld29ubHkgPSB0aGlzLnZpZXdvbmx5IHx8IGl0ZW0udmlld29ubHkgfHwgbG9ja2VkaXRlbXMgIT0gbnVsbCAmJiBsb2NrZWRpdGVtc1tpZF07XHJcbiAgICAgIHRkLmZpZWxkID0gc2NpbC5Gb3JtLmNyZWF0ZUZpZWxkKHRkLCBpdGVtLCB2aWV3b25seSwgdmFsdWVzID09IG51bGwgPyBpdGVtLnZhbHVlIDogdmFsdWVzW2lkXSwgdmFsdWVzLCB0cnVlLCB0cnVlKTtcclxuICAgICAgaWYgKHZpZXdvbmx5ICYmIGl0ZW0udHlwZSAhPSAnaW1nJykge1xyXG4gICAgICAgIHRkLmZpZWxkLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0ZC5maWVsZC50YWdOYW1lID09ICdJTlBVVCcgfHwgdGQuZmllbGQudGFnTmFtZSA9PSAnU0VMRUNUJyB8fCB0ZC5maWVsZC50YWdOYW1lID09ICdURVhUQVJFQScpIHtcclxuICAgICAgICAgIHRoaXMuX2Nvbm5lY3RPbmNoYW5nZSh0ZC5maWVsZCwgaXRlbSk7XHJcbiAgICAgICAgICBpZiAoaXRlbS5hZGRyb3dvbmVudGVyICYmIGJlZm9yZXJvdyA9PSBudWxsKVxyXG4gICAgICAgICAgICB0ZC5maWVsZC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGQuc2V0QXR0cmlidXRlKCdfX3RpZCcsIGlkKTtcclxuICAgICAgdGhpcy5jb25uZWN0S2V5ZG93bih0ZCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnZpZXdvbmx5ICYmIGxvY2tlZGl0ZW1zID09IG51bGwgJiYgdGhpcy5vcHRpb25zLmRlbHJvdyAhPSBmYWxzZSkge1xyXG4gICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQociwgJ3RkJyk7XHJcbiAgICAgIHRkLnN0eWxlLmJvcmRlckxlZnQgPSBKU0RyYXcyLlNraW4uanNzZGYuYm9yZGVyO1xyXG4gICAgICB2YXIgYiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgJ2ltZycsIG51bGwsIG51bGwsIHtzcmM6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvZGVsLmdpZicpLCB0aXRsZTogc2NpbC5MYW5nLnJlcygnRGVsZXRlJyl9KTtcclxuICAgICAgZG9qby5jb25uZWN0KGIsICdvbmNsaWNrJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgbWUucmVtb3ZlUm93KHRoaXMpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uQWRkUm93ICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbkFkZFJvdyhyLCB2YWx1ZXMpO1xyXG5cclxuICAgIGlmIChuZXdncm91cCAmJiB0aGlzLm9wdGlvbnMuZ3JvdXBsaW5lc3R5bGUgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHIuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSlcclxuICAgICAgICByLmNoaWxkTm9kZXNbaV0uc3R5bGUuYm9yZGVyVG9wID0gdGhpcy5vcHRpb25zLmdyb3VwbGluZXN0eWxlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH0sXHJcblxyXG4gIGNoZWNrZWRDbGljazogZnVuY3Rpb24oZSkge1xyXG4gICAgdmFyIGNoZWNrID0gZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0O1xyXG4gICAgaWYgKCFjaGVjay5jaGVja2VkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKGUuc2hpZnRLZXkpIHtcclxuICAgICAgdmFyIG5vZGVzID0gdGhpcy50Ym9keS5jaGlsZE5vZGVzO1xyXG4gICAgICB2YXIgc3RhcnQgPSBzY2lsLlV0aWxzLmluZGV4T2Yobm9kZXMsIHNjaWwuVXRpbHMuZ2V0UGFyZW50KHRoaXMuX2xhc3RjaGVjaywgJ1RSJykpO1xyXG4gICAgICB2YXIgZW5kID0gc2NpbC5VdGlscy5pbmRleE9mKG5vZGVzLCBzY2lsLlV0aWxzLmdldFBhcmVudChjaGVjaywgJ1RSJykpO1xyXG4gICAgICBpZiAoc3QgIT0gLTEgJiYgZWQgIT0gLTEpIHtcclxuICAgICAgICB2YXIgc3QgPSBNYXRoLm1pbihzdGFydCwgZW5kKTtcclxuICAgICAgICB2YXIgZWQgPSBNYXRoLm1heChzdGFydCwgZW5kKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gc3Q7IGkgPD0gZWQ7ICsraSkge1xyXG4gICAgICAgICAgaWYgKG5vZGVzW2ldLnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnKVxyXG4gICAgICAgICAgICBub2Rlc1tpXS5jaGlsZE5vZGVzW3RoaXMuY2hlY2tJbmRleF0uZmlyc3RDaGlsZC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIG5vZGVzW2ldLmNoaWxkTm9kZXNbdGhpcy5jaGVja0luZGV4XS5maXJzdENoaWxkLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fbGFzdGNoZWNrID0gY2hlY2s7XHJcbiAgfSxcclxuXHJcbiAgX2Nvbm5lY3RPbmNoYW5nZTogZnVuY3Rpb24oZmllbGQsIGl0ZW0pIHtcclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBkb2pvLmNvbm5lY3QoZmllbGQsICdvbmNoYW5nZScsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgbWUub25jaGFuZ2UoZSwgaXRlbSk7XHJcbiAgICB9KTtcclxuICB9LFxyXG5cclxuICBzZXRDZWxsVmFsdWU6IGZ1bmN0aW9uKHRyLCBrZXksIHYpIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHIuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdGQgPSB0ci5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICBpZiAodGQuZmllbGQgIT0gbnVsbCAmJiB0ZC5nZXRBdHRyaWJ1dGUoJ19fdGlkJykgPT0ga2V5KSB7XHJcbiAgICAgICAgc2NpbC5Gb3JtLnNldEZpZWxkRGF0YSh0ZC5maWVsZCwgdGhpcy5pdGVtc1trZXldLCB0aGlzLnZpZXdvbmx5LCB2KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGdldENlbGxWYWx1ZTogZnVuY3Rpb24odHIsIGtleSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ci5jaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHZhciB0ZCA9IHRyLmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmICh0ZC5maWVsZCAhPSBudWxsICYmIHRkLmdldEF0dHJpYnV0ZSgnX190aWQnKSA9PSBrZXkpXHJcbiAgICAgICAgcmV0dXJuIHNjaWwuRm9ybS5nZXRGaWVsZERhdGEodGQuZmllbGQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSxcclxuXHJcbiAgY29ubmVjdEtleWRvd246IGZ1bmN0aW9uKHRkLCBpdGVtKSB7XHJcbiAgICBpZiAodGhpcy52aWV3b25seSB8fCB0ZC5maWVsZC50YWdOYW1lICE9ICdJTlBVVCcgfHwgIWl0ZW0uYWRkcm93b25lbnRlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBkb2pvLmNvbm5lY3QodGQuZmllbGQsICdvbmtleWRvd24nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpIHtcclxuICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmdldFBhcmVudCh0ZCwgJ1RSJyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaXRlbS5hZGRyb3dvbmVudGVyKSA9PSAnZnVuY3Rpb24nKVxyXG4gICAgICAgICAgaXRlbS5hZGRyb3dvbmVudGVyKHRkLCBpdGVtLCBtZSk7XHJcbiAgICAgICAgaWYgKG1lLnRib2R5LmNoaWxkTm9kZXNbbWUudGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggLSAxXSA9PSB0cilcclxuICAgICAgICAgIG1lLmFkZFJvdygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9LFxyXG5cclxuICBvbmNoYW5nZTogZnVuY3Rpb24oZSwgaXRlbSkge1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uY2hhbmdlICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbmNoYW5nZSh0aGlzLCBlLCBpdGVtKTtcclxuICB9LFxyXG5cclxuICByZW1vdmVSb3c6IGZ1bmN0aW9uKGltZykge1xyXG4gICAgdmFyIG1lID0gdGhpcztcclxuICAgIHNjaWwuVXRpbHMuY29uZmlybVllcygnRGVsZXRlIHRoaXMgcm93PycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICB2YXIgdHIgPSBzY2lsbGlnZW5jZS5VdGlscy5nZXRQYXJlbnQoaW1nLCAnVFInKTtcclxuICAgICAgdHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0cik7XHJcbiAgICAgIGlmIChtZS5vcHRpb25zLm9uY2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgbWUub3B0aW9ucy5vbmNoYW5nZSh0aGlzKTtcclxuICAgICAgbWUuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuXHJcbiAgc2hvd0hpZGVDb2x1bW5zOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICh0aGlzLnNob3doaWRlRGxnID09IG51bGwpIHtcclxuICAgICAgdmFyIGNvbHVtbnMgPSB7XHJcbiAgICAgICAgY2FwdGlvbjoge2xhYmVsOiAnQ2FwdGlvbicsIHdpZHRoOiA0MDB9LFxyXG4gICAgICAgIGtleToge2xhYmVsOiAnS2V5Jywgd2lkdGg6IDEwMCwgaXNrZXk6IHRydWV9LFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgdmFyIGZpZWxkcyA9IHt0YWJsZToge3R5cGU6ICd0YWJsZScsIGNvbHVtbnM6IGNvbHVtbnMsIG9wdGlvbnM6IHtyb3djaGVjazogdHJ1ZSwgdmlld29ubHk6IHRydWV9fX07XHJcbiAgICAgIHRoaXMuc2hvd2hpZGVEbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybSgnU2hvdy9IaWRlIENvbHVtbnMnLCBmaWVsZHMsIHtcclxuICAgICAgICBsYWJlbDogJ09LJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBtZS5zaG93SGlkZUNvbHVtbnMyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSwge2hpZGVsYWJlbDogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd2hpZGVEbGcuc2hvdygpO1xyXG5cclxuICAgIHZhciByb3dzID0gW107XHJcbiAgICBmb3IgKHZhciBrIGluIHRoaXMuaXRlbXMpIHtcclxuICAgICAgaWYgKHRoaXMuaXRlbXNba10udHlwZSAhPSAnaGlkZGVuJylcclxuICAgICAgICByb3dzLnB1c2goe2NhcHRpb246IHRoaXMuaXRlbXNba10ubGFiZWwsIGtleTogaywgcm93Y2hlY2tlZDogIXRoaXMuaXRlbXNba10uaXNoaWRkZW59KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd2hpZGVEbGcuZm9ybS5zZXREYXRhKHt0YWJsZTogcm93c30pO1xyXG4gICAgdGhpcy5zaG93aGlkZURsZy5tb3ZlQ2VudGVyKCk7XHJcbiAgfSxcclxuXHJcbiAgc2hvd0hpZGVDb2x1bW5zMjogZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgY29scyA9ICcnO1xyXG5cclxuICAgIHZhciB0YWJsZSA9IHRoaXMuc2hvd2hpZGVEbGcuZm9ybS5maWVsZHMudGFibGUuanNkO1xyXG4gICAgdmFyIGxpc3QgPSB0YWJsZS5nZXREYXRhKG51bGwsIG51bGwsIHRydWUpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHZhciBmID0gbGlzdFtpXS5yb3djaGVja2VkID09IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd0NvbHVtbihsaXN0W2ldLmtleSwgZik7XHJcbiAgICAgIGlmICghZilcclxuICAgICAgICBjb2xzICs9IGxpc3RbaV0ua2V5ICsgJywnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93aGlkZURsZy5oaWRlKCk7XHJcblxyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5vcHRpb25zLmhpZGVjb2x1bW5jb29raWVrZXkpKVxyXG4gICAgICBzY2lsLlV0aWxzLmNyZWF0ZUNvb2tpZSh0aGlzLm9wdGlvbnMuaGlkZWNvbHVtbmNvb2tpZWtleSArICdfc2NpbF90YWJsZV9oaWRlY29scycsIGNvbHMsIDM2NTApOyAvLyAxMCB5ZWFyc1xyXG4gIH0sXHJcblxyXG4gIF9oaWRlQ29va2llQ29sczogZnVuY3Rpb24oY29scykge1xyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0aGlzLm9wdGlvbnMuaGlkZWNvbHVtbmNvb2tpZWtleSkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgcyA9IHNjaWwuVXRpbHMucmVhZENvb2tpZSh0aGlzLm9wdGlvbnMuaGlkZWNvbHVtbmNvb2tpZWtleSArICdfc2NpbF90YWJsZV9oaWRlY29scycpO1xyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBzcyA9IHMuc3BsaXQoJywnKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGNvbCA9IGNvbHNbc3NbaV1dO1xyXG4gICAgICBpZiAoY29sICE9IG51bGwpXHJcbiAgICAgICAgY29sc1tzc1tpXV0uaXNoaWRkZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH0sXHJcbn0pO1xyXG5cclxuXHJcbnNjaWxsaWdlbmNlLmFwcGx5KHNjaWxsaWdlbmNlLlRhYmxlLCB7XHJcbiAgaGVhZGVyc3R5bGVzOiB7IC8qYm9yZGVyOiBcInNvbGlkIDFweCAjZWVlXCIsICovd2hpdGVTcGFjZTogJ25vd3JhcCcsIHRleHRBbGlnbjogJ2NlbnRlcicsIHZlcnRpY2FsQWxpZ246ICd0b3AnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjYmJiJ30sIC8vc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvaGVhZGVyLWJnLmdpZlwiLCB0cnVlKSArIFwiIHJlcGVhdC14XCIgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgdGFibGVcclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iaiB0aGUgZGF0YSBvYmplY3QgdG8gYmUgbG9hZGVkIGludG8gdGhlIHRhYmxlLiBvYmoubG9hZCgpIHdpbGwgYmUgY2FsbGVkXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBwYXJlbnQgcGFyZW50IGVsZW1lbnRcclxuICAgKiBAcGFyYW0ge2FycmF5fSBpdGVtcyB0YWJsZSBjb2x1bW4gaXRlbXMuIGl0ZW06IHsgaWQsIGlza2V5IC4uLiB9XHJcbiAgICogQHBhcmFtIHtib29sfSB2aWV3b25seSBpbmRpY2F0ZSBpZiBjcmVhdGluZyBhIHZpZXdvbmx5IHRhYmxlXHJcbiAgICogQHJldHVybnMgYSBuZXcgVGFibGUgb2JqZWN0XHJcbiAgICovXHJcbiAgY3JlYXRlOiBmdW5jdGlvbihvYmosIHBhcmVudCwgaXRlbXMsIHZpZXdvbmx5LCBsb2FkaW1tZWRpYXRlbHkpIHtcclxuICAgIGlmICh0eXBlb2YgcGFyZW50ID09ICdzdHJpbmcnKVxyXG4gICAgICBwYXJlbnQgPSBkb2pvLmJ5SWQocGFyZW50KTtcclxuXHJcbiAgICB2YXIgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHBhcmVudCwgJ2RpdicpO1xyXG4gICAgdmFyIHRhYmxlID0gbmV3IHNjaWwuVGFibGUodmlld29ubHkpO1xyXG4gICAgdGFibGUucmVuZGVyKGRpdiwgaXRlbXMpO1xyXG5cclxuICAgIGlmIChsb2FkaW1tZWRpYXRlbHkgIT0gZmFsc2UgJiYgb2JqLmxvYWQgIT0gbnVsbClcclxuICAgICAgc2NpbC5vbmxvYWQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgb2JqLmxvYWQoKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gdGFibGU7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBwYWdlc1xyXG4gICAqIEBmdW5jdGlvbiB7c3RhdGljfSBsaXN0UGFnZXNcclxuICAgKiBAcGFyYW0ge0RPTX0gZGl2IC0gcGFyZW50IGRpdlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRvdGFscGFnZXNcclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmNsaWNrKHBhZ2UpIHt9XHJcbiAgICovXHJcbiAgbGlzdFBhZ2VzOiBmdW5jdGlvbihkaXYsIHBhZ2UsIHRvdGFscGFnZXMsIG9uY2xpY2spIHtcclxuICAgIHNjaWwuVXRpbHMucmVtb3ZlQWxsKGRpdik7XHJcbiAgICBpZiAoIShwYWdlID49IDEpIHx8ICEodG90YWxwYWdlcyA+IDEpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgLS1wYWdlO1xyXG5cclxuICAgIHZhciBzdCwgZWQ7XHJcbiAgICBpZiAodG90YWxwYWdlcyA8PSAxMSkge1xyXG4gICAgICBzdCA9IDA7XHJcbiAgICAgIGVkID0gdG90YWxwYWdlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0ID0gcGFnZSAtIDU7XHJcbiAgICAgIGlmIChzdCA8IDApXHJcbiAgICAgICAgc3QgPSAwO1xyXG4gICAgICBlZCA9IHN0ICsgMTE7XHJcbiAgICAgIGlmIChlZCA+IHRvdGFscGFnZXMpXHJcbiAgICAgICAgZWQgPSB0b3RhbHBhZ2VzO1xyXG4gICAgICBpZiAoZWQgLSBzdCA8IDExKSB7XHJcbiAgICAgICAgc3QgPSBlZCAtIDExO1xyXG4gICAgICAgIGlmIChzdCA8IDApXHJcbiAgICAgICAgICBzdCA9IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyZWF0ZVBhZ2UoZGl2LCBzY2lsLkxhbmcucmVzKCdQcmV2aW91cyBQYWdlJyksIHBhZ2UgPiAwID8gcGFnZSA6IG51bGwsIG9uY2xpY2spO1xyXG5cclxuICAgIGlmIChzdCA+IDApIHtcclxuICAgICAgdGhpcy5jcmVhdGVQYWdlKGRpdiwgMSwgMSwgb25jbGljayk7XHJcbiAgICAgIGlmIChzdCA+IDEpXHJcbiAgICAgICAgdGhpcy5jcmVhdGVQYWdlKGRpdiwgJy4uLicsIG51bGwsIG9uY2xpY2spO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGsgPSBzdDsgayA8IHBhZ2U7ICsraylcclxuICAgICAgdGhpcy5jcmVhdGVQYWdlKGRpdiwgayArIDEsIGsgKyAxLCBvbmNsaWNrKTtcclxuICAgIHRoaXMuY3JlYXRlUGFnZShkaXYsIHBhZ2UgKyAxLCBudWxsLCBvbmNsaWNrKTtcclxuICAgIGZvciAodmFyIGsgPSBwYWdlICsgMTsgayA8IGVkOyArK2spXHJcbiAgICAgIHRoaXMuY3JlYXRlUGFnZShkaXYsIGsgKyAxLCBrICsgMSwgb25jbGljayk7XHJcbiAgICBpZiAoZWQgPCB0b3RhbHBhZ2VzKSB7XHJcbiAgICAgIGlmIChlZCArIDEgPCB0b3RhbHBhZ2VzKVxyXG4gICAgICAgIHRoaXMuY3JlYXRlUGFnZShkaXYsICcuLi4nLCBudWxsLCBvbmNsaWNrKTtcclxuICAgICAgdGhpcy5jcmVhdGVQYWdlKGRpdiwgdG90YWxwYWdlcywgdG90YWxwYWdlcywgb25jbGljayk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcmVhdGVQYWdlKGRpdiwgc2NpbC5MYW5nLnJlcygnTmV4dCBQYWdlJyksIHBhZ2UgKyAxIDwgdG90YWxwYWdlcyA/IHBhZ2UgKyAyIDogbnVsbCwgb25jbGljayk7XHJcbiAgfSxcclxuXHJcbiAgY3JlYXRlUGFnZTogZnVuY3Rpb24oZGl2LCBsYWJlbCwgcGFnZSwgb25jbGljaykge1xyXG4gICAgaWYgKHBhZ2UgPT0gbnVsbClcclxuICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgJ3NwYW4nLCBsYWJlbCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQnV0dG9uKGRpdiwge1xyXG4gICAgICAgIGxhYmVsOiBsYWJlbCwgdHlwZTogJ2EnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG9uY2xpY2socGFnZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgJ3NwYW4nLCAnJm5ic3A7Jyk7XHJcbiAgfSxcclxuXHJcbiAgcm93czJ4bWw6IGZ1bmN0aW9uKHJvd3MpIHtcclxuICAgIGlmIChyb3dzID09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHZhciBzID0gJzx0YWJsZT4nO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHZhciByID0gcm93c1tpXTtcclxuICAgICAgcyArPSAnPHI+JztcclxuICAgICAgZm9yICh2YXIgayBpbiByKSB7XHJcbiAgICAgICAgdmFyIHYgPSByW2tdO1xyXG4gICAgICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHYpKVxyXG4gICAgICAgICAgcyArPSAnPGkgbj1cXCcnICsgc2NpbC5VdGlscy5lc2NYbWxWYWx1ZShrKSArICdcXCc+JyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodikgKyAnPC9pPic7XHJcbiAgICAgIH1cclxuICAgICAgcyArPSAnPC9yPic7XHJcbiAgICB9XHJcbiAgICBzICs9ICc8L3RhYmxlPic7XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcbn0pO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vKipcclxuICogVHJlZSBjbGFzcyAtIFRyZWUgQ29udHJvbFxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuVHJlZVxyXG4gKiA8cHJlPlxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICogICAgdmFyIHBhcmVudCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImRpdlwiKTtcclxuICogICAgdmFyIGFjID0gc2NpbC5UcmVlKHBhcmVudCwgeyB1cmw6IFwiL3BhdGgvYWpheC5hc2h4P2NtZD1sb2FkdHJlZVwiIH0pO1xyXG4gKiA8L3ByZT5cclxuICovXHJcbnNjaWwuVHJlZSA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3IgVHJlZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nIG9yIERPTX0gcGFyZW50IC0gdGhlIHBhcmVudCBlbGVtZW50XHJcbiAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHtib29sfSBzb2xvXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKHBhcmVudCwgb3B0aW9ucywgc29sbywgZHJvcGRvd24pIHtcclxuICAgIHRoaXMuVCA9ICdUUkVFJztcclxuICAgIHRoaXMuY29udGFpbmVyID0gcGFyZW50O1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9PSBudWxsID8ge30gOiBvcHRpb25zO1xyXG4gICAgdGhpcy5zb2xvID0gc29sbyAhPSBudWxsID8gc29sbyA6IHRoaXMub3B0aW9ucy5zb2xvO1xyXG4gICAgdGhpcy5kcm9wZG93biA9IGRyb3Bkb3duICE9IG51bGwgPyBkcm9wZG93biA6IHRoaXMub3B0aW9ucy5kcm9wZG93bjtcclxuXHJcbiAgICB0aGlzLm9uQWRkSXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLm9uU2VsZWN0SXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLm9uRXhwYW5kSXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLmN1ciA9IG51bGw7XHJcbiAgICB0aGlzLm1hcmdpbiA9IDI4O1xyXG4gICAgdGhpcy5pZG5hbWUgPSAnaWQnO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBzY2lsLlV0aWxzLnJlbW92ZUFsbChwYXJlbnQpO1xyXG4gICAgLy9kb2pvLmNvbm5lY3QocGFyZW50LCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHsgbWUub25TZWxlY3QoZS5zcmNFbGVtZW50IHx8IGUudGFyZ2V0KTsgfSk7XHJcbiAgfSxcclxuXHJcbiAgY2xlYXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgc2NpbC5VdGlscy5yZW1vdmVBbGwodGhpcy5jb250YWluZXIpO1xyXG4gIH0sXHJcblxyXG4gIHJlbG9hZEN1cjogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5jdXIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucmVsb2FkKHRoaXMuY3VyKTtcclxuICB9LFxyXG5cclxuICByZWxvYWQ6IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmIChub2RlID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZSgnbG9hZGVkJyk7XHJcbiAgICBpZiAobm9kZS5maXJzdENoaWxkLm5leHRTaWJsaW5nICE9IG51bGwpXHJcbiAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxkLm5leHRTaWJsaW5nKTtcclxuXHJcbiAgICB2YXIgaW1nID0gdGhpcy5fZXhwYW5kKG5vZGUpO1xyXG4gICAgdGhpcy5vbkV4cGFuZChpbWcpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfSxcclxuXHJcbiAgZ2V0Q3VyUm9vdDogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRSb290KHRoaXMuY3VyKTtcclxuICB9LFxyXG5cclxuICBnZXRSb290OiBmdW5jdGlvbihub2RlKSB7XHJcbiAgICBpZiAobm9kZSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgbiA9IHRoaXMuZ2V0UGFyZW50KG5vZGUpO1xyXG4gICAgdmFyIHAgPSBub2RlO1xyXG4gICAgd2hpbGUgKG4gIT0gbnVsbCkge1xyXG4gICAgICBwID0gbjtcclxuICAgICAgbiA9IHRoaXMuZ2V0UGFyZW50KHApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHA7XHJcbiAgfSxcclxuXHJcbiAgZ2V0UGFyZW50OiBmdW5jdGlvbihub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlID09IG51bGwgfHwgbm9kZS5wYXJlbnROb2RlID09IHRoaXMuY29udGFpbmVyID8gbnVsbCA6IG5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlO1xyXG4gIH0sXHJcblxyXG4gIGFkZDogZnVuY3Rpb24ocGFyZW50LCBpdGVtKSB7XHJcbiAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAoaXRlbS5sZW5ndGggIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGhpcy5hZGQocGFyZW50LCBpdGVtW2ldKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0uX21vcmUpXHJcbiAgICAgIGl0ZW0ubGVhZiA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uQWRkSXRlbSAhPSBudWxsKVxyXG4gICAgICBpdGVtID0gdGhpcy5vcHRpb25zLm9uQWRkSXRlbShpdGVtKTtcclxuICAgIGVsc2UgaWYgKHRoaXMub25BZGRJdGVtICE9IG51bGwpXHJcbiAgICAgIGl0ZW0gPSB0aGlzLm9uQWRkSXRlbShpdGVtKTtcclxuXHJcbiAgICB2YXIgbiA9IG51bGw7XHJcbiAgICBpZiAocGFyZW50ID09IG51bGwpIHtcclxuICAgICAgbiA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5jb250YWluZXIsICdkaXYnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBjb250YWluZXIgPSBwYXJlbnQuZmlyc3RDaGlsZC5uZXh0U2libGluZztcclxuICAgICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRhaW5lciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsICdkaXYnLCBudWxsLCB7bWFyZ2luTGVmdDogdGhpcy5tYXJnaW4gKyAncHgnfSk7XHJcbiAgICAgIG4gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoY29udGFpbmVyLCAnZGl2Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgbi5pdGVtID0gaXRlbTtcclxuXHJcbiAgICB2YXIgbSA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQobiwgJ2RpdicsIG51bGwsIHtwYWRkaW5nOiAnM3B4IDAgM3B4IDAnLCB3aGl0ZVNwYWNlOiAnbm93cmFwJ30pO1xyXG4gICAgdmFyIGltZyA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQobSwgJ2ltZycsIG51bGwsIHt3aWR0aDogJzE2cHgnfSwgaXRlbS5sZWFmIHx8IGl0ZW0uZGlzYWJsZWQgPyB7c3JjOiBzY2lsLlV0aWxzLmltZ1NyYygnaW1nL2JsYW5rLmdpZicpfSA6IHtzcmM6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvcGx1cy5naWYnKSwgdGl0bGU6ICdFeHBhbmQnfSk7XHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgZG9qby5jb25uZWN0KGltZywgJ29uY2xpY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIG1lLm9uRXhwYW5kKGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duKVxyXG4gICAgICBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KG0sICdpbWcnLCBudWxsLCBudWxsLCB7c3JjOiBpdGVtLnNob3J0Y3V0ID8gJ2ltZy9zdGF0dXNfc2hvcnRjdXQuZ2lmJyA6ICdpbWcvc3RhdHVzXycgKyAoaXRlbS5zdGF0dXMgPT0gbnVsbCB8fCBpdGVtLnN0YXR1cyA9PSAnJyA/ICdvcGVuJyA6IGl0ZW0uc3RhdHVzKSArICcuZ2lmJ30pO1xyXG4gICAgaWYgKGl0ZW0uaWNvbiAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChpdGVtLmljb24uaW5kZXhPZignLycpIDwgMClcclxuICAgICAgICBpdGVtLmljb24gPSAnaW1nL2ljb25zLycgKyBpdGVtLmljb24gKyAnLmdpZic7XHJcbiAgICAgIHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQobSwgJ2ltZycsIG51bGwsIHtwYWRkaW5nUmlnaHQ6IHRoaXMub3B0aW9ucy5pY29uZ2FwfSwge3NyYzogaXRlbS5pY29ufSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KG0sICdzcGFuJywgaXRlbS5fbW9yZSA/ICc8dSBzdHlsZT1cXCdjb2xvcjpibHVlO2N1cnNvcjpwb2ludGVyXFwnPm1vcmUuLi48L3U+JyA6IGl0ZW0ubmFtZSk7XHJcbiAgICBtLmNsYXNzTmFtZSA9ICd0YmFyJztcclxuICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XHJcbiAgICAgIG0uc3R5bGUuY29sb3IgPSAnZ3JheSc7XHJcbiAgICAgIG0uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdvbicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcbiAgICAgIGRvam8uY29ubmVjdChtLCAnb25jbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAoKGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudCkgIT0gbS5maXJzdENoaWxkKSBtZS5zZWxlY3QobS5wYXJlbnROb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGQobiwgaXRlbS5jaGlsZHJlbik7XHJcbiAgICBpZiAocGFyZW50ICE9IG51bGwpXHJcbiAgICAgIHRoaXMuZXhwYW5kKHBhcmVudCwgdHJ1ZSk7XHJcbiAgICBpZiAoaXRlbS5leHBhbmQgPT0gZmFsc2UpXHJcbiAgICAgIHRoaXMuZXhwYW5kKG4sIGZhbHNlKTtcclxuXHJcbiAgICBpZiAoaXRlbS5zZWxlY3RlZClcclxuICAgICAgdGhpcy5zZWxlY3Qobik7XHJcbiAgICByZXR1cm4gbjtcclxuICB9LFxyXG5cclxuICBleHBhbmQ6IGZ1bmN0aW9uKG5vZGUsIGYpIHtcclxuICAgIHZhciBiYXIgPSBub2RlLmZpcnN0Q2hpbGQ7XHJcbiAgICB2YXIgaW1nID0gYmFyLmZpcnN0Q2hpbGQ7XHJcbiAgICBpZiAoYmFyLm5leHRTaWJsaW5nID09IG51bGwpIHtcclxuICAgICAgaW1nLnNyYyA9ICdpbWcvYmxhbmsuZ2lmJztcclxuICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhci5uZXh0U2libGluZy5zdHlsZS5kaXNwbGF5ID0gZiA/ICcnIDogJ25vbmUnO1xyXG4gICAgICB0aGlzLl9leHBhbmQobm9kZSwgZik7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgX2V4cGFuZDogZnVuY3Rpb24obm9kZSwgZikge1xyXG4gICAgdmFyIGltZyA9IG5vZGUuZmlyc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgaW1nLnNyYyA9IHNjaWwuVXRpbHMuaW1nU3JjKGYgPyAnaW1nL21pbnVzLmdpZicgOiAnaW1nL3BsdXMuZ2lmJyk7XHJcbiAgICBpbWcuc2V0QXR0cmlidXRlKCd0aXRsZScsIGYgPyAnU2hyaW5rJyA6ICdFeHBhbmQnKTtcclxuICAgIHJldHVybiBpbWc7XHJcbiAgfSxcclxuXHJcbiAgc2hyaW5rU2libGluZ3M6IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIHZhciBsaXN0ID0gbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXM7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGxpc3RbaV0gIT0gbm9kZSlcclxuICAgICAgICB0aGlzLmV4cGFuZChsaXN0W2ldLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgb25FeHBhbmQ6IGZ1bmN0aW9uKGltZykge1xyXG4gICAgdmFyIGJhciA9IGltZy5wYXJlbnROb2RlO1xyXG4gICAgaWYgKGJhci50YWdOYW1lICE9ICdESVYnIHx8IGJhci5jbGFzc05hbWUgIT0gJ3RiYXInKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIGYgPSBudWxsO1xyXG4gICAgdmFyIG4gPSBiYXIucGFyZW50Tm9kZTtcclxuICAgIGlmIChuICE9IG51bGwgJiYgbi5pdGVtICE9IG51bGwgJiYgbi5pdGVtLmxlYWYpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnVybCA9PSBudWxsIHx8IG4uZ2V0QXR0cmlidXRlKCdsb2FkZWQnKSA9PSAnMScgfHwgYmFyLm5leHRTaWJsaW5nICE9IG51bGwpIHtcclxuICAgICAgZiA9IGJhci5uZXh0U2libGluZyA9PSBudWxsIHx8IGJhci5uZXh0U2libGluZy5zdHlsZS5kaXNwbGF5ID09ICdub25lJztcclxuICAgICAgdGhpcy5leHBhbmQobiwgZik7XHJcbiAgICAgIGlmIChmICYmIHRoaXMuc29sbylcclxuICAgICAgICB0aGlzLnNocmlua1NpYmxpbmdzKG4pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub25FeHBhbmRJdGVtICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMub25FeHBhbmRJdGVtKG4sIGYpKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWROb2RlcyhuKTtcclxuICB9LFxyXG5cclxuICBsb2FkTm9kZXM6IGZ1bmN0aW9uKG4pIHtcclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB2YXIgZm4gPSBmdW5jdGlvbihyZXQpIHtcclxuICAgICAgaWYgKG4uaXRlbS5fbW9yZSkge1xyXG4gICAgICAgIHZhciBwYXJlbnQgPSBuLnBhcmVudE5vZGU7XHJcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKG4pO1xyXG4gICAgICAgIG4gPSBwYXJlbnQucGFyZW50Tm9kZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAobi5nZXRBdHRyaWJ1dGUoJ2xvYWRlZCcpID09ICcxJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBuLnNldEF0dHJpYnV0ZSgnbG9hZGVkJywgJzEnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJldC5yb3dzICE9IG51bGwgJiYgcmV0LnJvd3MubGVuZ3RoID4gMClcclxuICAgICAgICBtZS5hZGQobiwgcmV0LnJvd3MpO1xyXG4gICAgICBlbHNlIGlmIChyZXQubGVuZ3RoID4gMClcclxuICAgICAgICBtZS5hZGQobiwgcmV0KTtcclxuICAgICAgbWUuZXhwYW5kKG4sIHRydWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAobi5pdGVtLmNoaWxkcmVuICE9IG51bGwpIHtcclxuICAgICAgZm4obi5pdGVtLmNoaWxkcmVuKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBiZWZvcmVsb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgIG4uZmlyc3RDaGlsZC5maXJzdENoaWxkLnNyYyA9IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvYW5pbWF0b3JzbWFsbC5naWYnKTtcclxuICAgIH07XHJcbiAgICB2YXIgYWZ0ZXJsb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgIG4uZmlyc3RDaGlsZC5maXJzdENoaWxkLnNyYyA9IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvcGx1cy5naWYnKTtcclxuICAgIH07XHJcbiAgICB2YXIgYXJncyA9IG4uaXRlbTtcclxuICAgIGlmICh0aGlzLm9uQWpheERhdGEgIT0gbnVsbClcclxuICAgICAgYXJncyA9IHRoaXMub25BamF4RGF0YShuKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudXJsICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLnVybCAhPSAnJylcclxuICAgICAgc2NpbC5VdGlscy5hamF4KHRoaXMub3B0aW9ucy51cmwsIGZuLCBhcmdzLCB7cG9wdXA6IGZhbHNlLCBiZWZvcmVsb2FkOiBiZWZvcmVsb2FkLCBhZnRlcmxvYWQ6IGFmdGVybG9hZH0pO1xyXG4gIH0sXHJcblxyXG4gIHNlbGVjdDogZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKHR5cGVvZiBub2RlID09ICdzdHJpbmcnKVxyXG4gICAgICBub2RlID0gdGhpcy5maW5kKG51bGwsIG5vZGUpO1xyXG5cclxuICAgIGlmIChub2RlID09IG51bGwgfHwgbm9kZS5pdGVtICE9IG51bGwgJiYgbm9kZS5pdGVtLnNlbGVjdGFibGUgPT0gZmFsc2UpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAobm9kZS5pdGVtICE9IG51bGwgJiYgbm9kZS5pdGVtLl9tb3JlKSB7XHJcbiAgICAgIHRoaXMubG9hZE5vZGVzKG5vZGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3VyICE9IG51bGwpXHJcbiAgICAgIHRoaXMuY3VyLmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9ICcnO1xyXG4gICAgdGhpcy5jdXIgPSBub2RlO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd24gJiYgdGhpcy5jdXIgIT0gbnVsbClcclxuICAgICAgdGhpcy5jdXIuZmlyc3RDaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmNmY0YjknO1xyXG4gICAgdGhpcy5jdXIuZmlyc3RDaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNkZGYnO1xyXG4gICAgaWYgKHRoaXMub25TZWxlY3RJdGVtICE9IG51bGwpIHtcclxuICAgICAgdmFyIGlzbGVhZiA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmN1ciAhPSBudWxsKVxyXG4gICAgICAgIGlzbGVhZiA9IHRoaXMuY3VyLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcgPT0gbnVsbDtcclxuICAgICAgdGhpcy5vblNlbGVjdEl0ZW0odGhpcy5jdXIsIGlzbGVhZik7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgZ2V0SWNvblRleHQ6IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmIChub2RlID09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgdmFyIGltZyA9IG5vZGUuZmlyc3RDaGlsZC5jaGlsZE5vZGVzWzJdO1xyXG4gICAgaWYgKGltZy50YWdOYW1lID09ICdTUEFOJylcclxuICAgICAgcmV0dXJuIGltZy5pbm5lckhUTUw7XHJcbiAgICByZXR1cm4gJzxpbWcgc3JjPVxcJycgKyBpbWcuc3JjICsgJ1xcJz4nICsgaW1nLm5leHRTaWJsaW5nLmlubmVySFRNTDtcclxuICB9LFxyXG5cclxuICBzZXRDdXJyZW50OiBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XHJcbiAgICB2YXIgbiA9IHRoaXMuZmluZChudWxsLCB2YWx1ZSwga2V5KTtcclxuICAgIGlmIChuICE9IG51bGwpXHJcbiAgICAgIHRoaXMuc2VsZWN0KG4pO1xyXG5cclxuICAgIHJldHVybiBuO1xyXG4gIH0sXHJcblxyXG4gIGZpbmQ6IGZ1bmN0aW9uKHBhcmVudCwgdmFsdWUsIGtleSkge1xyXG4gICAgdmFyIGNvbnRhaW5lciA9IHBhcmVudCA9PSBudWxsID8gdGhpcy5jb250YWluZXIgOiBwYXJlbnQuZmlyc3RDaGlsZC5uZXh0U2libGluZztcclxuICAgIGlmIChjb250YWluZXIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKGtleSA9PSBudWxsKVxyXG4gICAgICBrZXkgPSAnaWQnO1xyXG5cclxuICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5jaGlsZE5vZGVzO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgbiA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICBpZiAobi5pdGVtICE9IG51bGwgJiYgbi5pdGVtW2tleV0gPT0gdmFsdWUpXHJcbiAgICAgICAgcmV0dXJuIG47XHJcblxyXG4gICAgICB2YXIgYyA9IHRoaXMuZmluZChuLCB2YWx1ZSwga2V5KTtcclxuICAgICAgaWYgKGMgIT0gbnVsbClcclxuICAgICAgICByZXR1cm4gYztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0sXHJcblxyXG4gIGdldENoaWxkcmVuOiBmdW5jdGlvbihwYXJlbnQpIHtcclxuICAgIHZhciBjb250YWluZXIgPSBwYXJlbnQgPT0gbnVsbCA/IHRoaXMuY29udGFpbmVyIDogcGFyZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7XHJcbiAgICByZXR1cm4gY29udGFpbmVyID09IG51bGwgPyBudWxsIDogY29udGFpbmVyLmNoaWxkTm9kZXM7XHJcbiAgfSxcclxuXHJcbiAgZ2V0UGFyZW50OiBmdW5jdGlvbihuKSB7XHJcbiAgICByZXR1cm4gbi5wYXJlbnROb2RlLnBhcmVudE5vZGU7XHJcbiAgfSxcclxufSk7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbnNjaWwuVXBsb2FkRmlsZSA9IHtcclxuICAgIGRsZzogbnVsbCxcclxuICAgIGZvcm06IG51bGwsXHJcbiAgICBtc2c6IG51bGwsXHJcbiAgICBmaWxlczogW10sXHJcbiAgICBmaWxldHlwZXM6IFtdLFxyXG4gICAga0lmcmFtZTogXCJfX3NjaWxfdXBsb2FkZmlsZV9pZnJhbWVcIixcclxuXHJcbiAgICBzaG93OiBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlKCk7XHJcbiAgICAgICAgdGhpcy5kbGcuc2hvdygpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMubXNnICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMubXNnLmlubmVySFRNTCA9IG9wdGlvbnMubXNnO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbaV0udmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxldHlwZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5yZW1vdmVBbGwodGhpcy5maWxldHlwZXNbaV0pO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGV0eXBlc1tpXS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5vcHRpb25zLmZpbGV0eXBlcyAhPSBudWxsID8gXCJcIiA6IFwibm9uZVwiO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZpbGV0eXBlcyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgc2NpbC5VdGlscy5saXN0T3B0aW9ucyh0aGlzLmZpbGV0eXBlc1tpXSwgdGhpcy5vcHRpb25zLmZpbGV0eXBlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICB1cGxvYWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnMucGFyYW1zO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWpheFVwbG9hZEZpbGUodGhpcy5mb3JtLCB0aGlzLm9wdGlvbnMudXJsLCBwYXJhbXMgPT0gbnVsbCA/IHt9IDogcGFyYW1zLCBmdW5jdGlvbiAocmV0KSB7IG1lLmRsZy5oaWRlKCk7IG1lLm9wdGlvbnMuY2FsbGJhY2socmV0KTsgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGNyZWF0ZTogZnVuY3Rpb24gKHBhcmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRsZyAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgICAgLy8gZm9ybSBtZXRob2Q9J3Bvc3QnIGlkPSdfX25ld2ZpbGUnIGVuY3R5cGU9JydcclxuICAgICAgICB2YXIgZGl2ID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwiZGl2XCIsIFwiPGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz48L2Zvcm0+XCIsIHsgcGFkZGluZzogXCIxNXB4XCIgfSk7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gZGl2LmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgdGhpcy5tc2cgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5mb3JtLCBcImRpdlwiLCBcIlBsZWFzZSBzcGVjaWZ5IGZpbGVzIHRvIGJlIHVwbG9hZGVkXCIpO1xyXG4gICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUodGhpcy5mb3JtKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHksIFwidHJcIik7XHJcbiAgICAgICAgICAgIHZhciB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiKTtcclxuICAgICAgICAgICAgdmFyIGZpbGUgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiZmlsZVwiLCBudWxsLCBudWxsLCB7IG5hbWU6IFwiZlwiICsgaSB9KTtcclxuXHJcbiAgICAgICAgICAgIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICB2YXIgdHlwZSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgXCJzZWxlY3RcIiwgbnVsbCwgbnVsbCwgeyBuYW1lOiBcImZpbGV0eXBlLmZcIiArIGkgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZXR5cGVzLnB1c2godHlwZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHksIFwidHJcIik7XHJcbiAgICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIG51bGwsIHsgcGFkZGluZ1RvcDogXCIxMHB4XCIsIHRleHRBbGlnbjogXCJjZW50ZXJcIiB9LCB7IGNvbFNwYW46IDIgfSk7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVCdXR0b24odGQsIHsgc3JjOiBzY2lsLkFwcC5pbWdTbWFsbChcInN1Ym1pdC5wbmdcIiksIGxhYmVsOiBcIlVwbG9hZFwiLCBvbmNsaWNrOiBmdW5jdGlvbiAoKSB7IG1lLnVwbG9hZCgpOyB9IH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRsZyA9IG5ldyBzY2lsLkRpYWxvZyhcIlVwbG9hZCBGaWxlXCIsIGRpdik7XHJcbiAgICB9XHJcbn07IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5CQSA9IHNjaWxsaWdlbmNlLmV4dGVuZChzY2lsbGlnZW5jZS5fYmFzZSwge1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChiLCBhLCByaSkge1xyXG4gICAgICAgIHRoaXMuYiA9IGI7XHJcbiAgICAgICAgdGhpcy5hID0gYTtcclxuICAgICAgICB0aGlzLnJpbmdjbG9zdXJlID0gcmk7XHJcbiAgICAgICAgdGhpcy5uZXh0ID0gW107XHJcbiAgICAgICAgdGhpcy5mID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBhcmVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kZXB0aCA9IG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIGZpbmQ6IGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgICAgdmFyIHN0YWNrID0gbmV3IEpTRHJhdzIuU3RhY2soKTtcclxuICAgICAgICBzdGFjay5wdXNoKHRoaXMpO1xyXG4gICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgoKSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGJhID0gc3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgIGlmIChiYS5hID09IGEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYmE7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGJhLm5leHQubGVuZ3RoOyArK2spXHJcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGJhLm5leHRba10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIGxpc3Q6IGZ1bmN0aW9uIChsaXN0LCBtb2RlKSB7XHJcbiAgICAgICAgdmFyIHN0YWNrID0gbmV3IEpTRHJhdzIuU3RhY2soKTtcclxuICAgICAgICBzdGFjay5wdXNoKHRoaXMpO1xyXG4gICAgICAgIHZhciBkZXB0aGZpcnN0ID0gbW9kZSA9PSBcImRlcHRoZmlyc3RcIjtcclxuICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKCkgPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBiYSA9IGRlcHRoZmlyc3QgPyBzdGFjay5wb3AoKSA6IHN0YWNrLnBvcEhlYWQoKTtcclxuICAgICAgICAgICAgbGlzdC5wdXNoKGJhKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBiYS5uZXh0Lmxlbmd0aDsgKytrKVxyXG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChiYS5uZXh0W2tdKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHN0YXJ0QXRvbTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmIgPT0gbnVsbCA/IG51bGwgOiB0aGlzLmIub3RoZXJBdG9tKHRoaXMuYSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGFkZE5leHQ6IGZ1bmN0aW9uIChiYSkge1xyXG4gICAgICAgIHRoaXMubmV4dC5wdXNoKGJhKTtcclxuICAgICAgICBiYS5wYXJlbnQgPSB0aGlzO1xyXG4gICAgICAgIGJhLmRlcHRoID0gdGhpcy5kZXB0aCArIDE7XHJcbiAgICB9LFxyXG5cclxuICAgIHN0ZXJlbzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBicyA9IHRoaXMuYS5ib25kcztcclxuICAgICAgICBpZiAodGhpcy5iID09IG51bGwgfHwgIXRoaXMuYS5pc01hcmtlZFN0ZXJlbygpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcblxyXG4gICAgICAgIC8vIGZpbmQgb3V0IDJEIGxheW91dFxyXG4gICAgICAgIHZhciBhbmdsZXMgPSBbXTtcclxuICAgICAgICB2YXIgYm9uZHMgPSBbXTtcclxuICAgICAgICB2YXIgYTAgPSB0aGlzLmE7XHJcbiAgICAgICAgdmFyIGFuZ2xlMCA9IHRoaXMuYi5vdGhlckF0b20oYTApLnAuYW5nbGVUbyhhMC5wKTtcclxuICAgICAgICBERUJVRy5wcmludChhMC5lbGVtKTtcclxuICAgICAgICBERUJVRy5wcmludChhbmdsZTApO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKGJzW2ldID09IHRoaXMuYilcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgdmFyIGExID0gYnNbaV0ub3RoZXJBdG9tKGEwKTtcclxuICAgICAgICAgICAgdmFyIGFuZyA9IGExLnAuYW5nbGVUbyhhMC5wKTtcclxuICAgICAgICAgICAgdmFyIGFuZ2xlID0gYW5nIC0gYW5nbGUwO1xyXG4gICAgICAgICAgICBERUJVRy5wcmludChhMS5lbGVtICsgXCIsIFwiICsgYW5nICsgXCIsIFwiICsgYW5nbGUpO1xyXG4gICAgICAgICAgICBpZiAoYW5nbGUgPCAwKVxyXG4gICAgICAgICAgICAgICAgYW5nbGUgKz0gMzYwO1xyXG4gICAgICAgICAgICB2YXIgcCA9IGFuZ2xlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYW5nbGVzLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYW5nbGUgPCBhbmdsZXNba10pIHtcclxuICAgICAgICAgICAgICAgICAgICBwID0gaztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIG5leHQgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubmV4dC5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmV4dFtrXS5iID09IGJzW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHRoaXMubmV4dFtrXTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmV4dCA9PSBudWxsICYmIHRoaXMuYS5yaW5nY2xvc3VyZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmEucmluZ2Nsb3N1cmVzLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYS5yaW5nY2xvc3VyZXNba10ubmV4dC5iID09IGJzW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSB0aGlzLmEucmluZ2Nsb3N1cmVzW2tdLm5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYS5yaW5nY2xvc3VyZXMuc3BsaWNlKGssIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5leHQgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICAgICAgYW5nbGVzLnNwbGljZShwLCAwLCBhbmdsZSk7XHJcbiAgICAgICAgICAgIGJvbmRzLnNwbGljZShwLCAwLCBuZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXh0ID0gYm9uZHM7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9uZHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIERFQlVHLnByaW50KGJvbmRzW2ldLmEuZWxlbSArIFwiLCBcIiArIGFuZ2xlc1tpXSk7XHJcblxyXG4gICAgICAgIHZhciBwYXR0ZXJuID0gXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5iLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UgJiYgdGhpcy5iLmExID09IHRoaXMuYSlcclxuICAgICAgICAgICAgcGF0dGVybiArPSBcIlVcIjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIICYmIHRoaXMuYi5hMSA9PSB0aGlzLmEpXHJcbiAgICAgICAgICAgIHBhdHRlcm4gKz0gXCJEXCI7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBwYXR0ZXJuICs9IFwiLVwiO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChib25kc1tpXS5iLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UgJiYgYm9uZHNbaV0uYi5hMSA9PSB0aGlzLmEpXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IFwiVVwiO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChib25kc1tpXS5iLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSCAmJiBib25kc1tpXS5iLmExID09IHRoaXMuYSlcclxuICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gXCJEXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gXCItXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBERUJVRy5wcmludChwYXR0ZXJuKTtcclxuICAgICAgICBzd2l0Y2ggKHBhdHRlcm4pIHtcclxuICAgICAgICAgICAgY2FzZSBcIkQtLVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiREQtXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJERERcIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tRFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiLUQtXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCItRERcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkQtLS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi1VLS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tRC1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tLVVcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkRVLS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi1EVS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tRFVcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlUtLURcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkBcIjtcclxuICAgICAgICAgICAgY2FzZSBcIlUtLVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVVUtXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJVVVVcIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tVVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiLVUtXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCItVVVcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlUtLS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi1ELS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tVS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tLURcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlVELS1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi1VRC1cIjpcclxuICAgICAgICAgICAgY2FzZSBcIi0tVURcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkQtLVVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkBAXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgcmVuZGVyU21pbGVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHMgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLmIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgcmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmIucmluZyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmluZyA9IHRoaXMuYi5yaW5nID8gXCJAXCIgOiBcIiFAXCI7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5iLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFOlxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gcmluZyArIFwiPVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5UUklQTEU6XHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSByaW5nICsgXCIjXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SRE9VQkxFOlxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gcmluZyArIFwiLSxcIiArIHJpbmcgKyBcIj1cIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFT1JBUk9NQVRJQzpcclxuICAgICAgICAgICAgICAgICAgICBzICs9IHJpbmcgKyBcIi0sXCIgKyByaW5nICsgXCI6XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRU9SQVJPTUFUSUM6XHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSByaW5nICsgXCI9LFwiICsgcmluZyArIFwiOlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5VTktOT1dOOlxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gcmluZyArIFwiflwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWTpcclxuICAgICAgICAgICAgICAgICAgICBzICs9IHJpbmcgKyBcIi4uXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmIucmluZyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzICs9IHJpbmcgKyBcIi1cIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmluZ2Nsb3N1cmUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgc3RlcmVvID0gdGhpcy5zdGVyZW8oKTtcclxuICAgICAgICAgICAgLy8gQiwgQywgTiwgTywgUCwgUywgRiwgQ2wsIEJyLCBhbmQgSVxyXG4gICAgICAgICAgICB2YXIgYXIgPSBKU0RyYXcyLlBULmlzQXJBdG9tKHRoaXMuYS5lbGVtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYS5lbGVtID09IFwiNSdcIiB8fCB0aGlzLmEuZWxlbSA9PSBcIjMnXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmEuYmlvKSB7XHJcbiAgICAgICAgICAgICAgICBzICs9IFwiW1tcIiArIHRoaXMuYS5lbGVtICsgXCJdXVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChhciB8fCB0aGlzLmEuZWxlbSA9PSAnQ2wnIHx8IHRoaXMuYS5lbGVtID09ICdGJyB8fCB0aGlzLmEuZWxlbSA9PSAnQnInIHx8IHRoaXMuYS5lbGVtID09ICdJJyB8fCB0aGlzLmEuZWxlbSA9PSAnQicpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmEuY2hhcmdlID09IDAgJiYgdGhpcy5hLmlzb3RvcGUgPT0gbnVsbCAmJiBzdGVyZW8gPT0gbnVsbCAmJiB0aGlzLmEucXVlcnkgPT0gbnVsbCAmJiAhdGhpcy5hLmxvY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYS5hcm9tYXRpYyAmJiBhcilcclxuICAgICAgICAgICAgICAgICAgICBzICs9IHRoaXMuYS5lbGVtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSB0aGlzLmEuZWxlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHMgKz0gXCJbXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hLnF1ZXJ5ICE9IG51bGwgJiYgdGhpcy5hLnF1ZXJ5LmFscyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmEucXVlcnkuYWxzLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID4gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gXCIsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmEucXVlcnkudCA9PSBmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gXCIhXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gdGhpcy5hLnF1ZXJ5LmFsc1trXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hLmlzb3RvcGUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgcyArPSB0aGlzLmEuaXNvdG9wZTtcclxuICAgICAgICAgICAgICAgICAgICBzICs9IHRoaXMuYS5lbGVtO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmEuY2hhcmdlICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hLmhjb3VudCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gXCJIXCIgKyB0aGlzLmEuaGNvdW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hLmNoYXJnZSA9PSAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzICs9ICcrJztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmEuY2hhcmdlID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzICs9ICctJztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gKHRoaXMuYS5jaGFyZ2UgPiAwID8gXCIrXCIgOiBcIi1cIikgKyBNYXRoLmFicyh0aGlzLmEuY2hhcmdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RlcmVvICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSBzdGVyZW8gKyAodGhpcy5hLmhjb3VudCA9PSAxID8gXCJIXCIgOiBcIlwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hLnF1ZXJ5ICE9IG51bGwgJiYgdGhpcy5hLnF1ZXJ5LnJiYyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gXCI7UlwiICsgdGhpcy5hLnF1ZXJ5LnJiYztcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmEucXVlcnkgIT0gbnVsbCAmJiB0aGlzLmEucXVlcnkuc3ViICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSBcIjtYXCIgKyB0aGlzLmEucXVlcnkuc3ViO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYS5sb2NrZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSBcIjswXCI7XHJcbiAgICAgICAgICAgICAgICBzICs9IFwiXVwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hLnJpbmdjbG9zdXJlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMuYS5yaW5nY2xvc3VyZXM7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGxpc3QubGVuZ3RoOyArK2spXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSAobGlzdFtrXS5yaSA8IDEwID8gXCJcIiA6IFwiJVwiKSArIGxpc3Rba10ucmk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHMgKz0gKHRoaXMucmluZ2Nsb3N1cmUgPCAxMCA/IFwiXCIgOiBcIiVcIikgKyB0aGlzLnJpbmdjbG9zdXJlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5uZXh0Lmxlbmd0aCAtIDE7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5uZXh0W2ldLnJlbmRlclNtaWxlcygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkID09IG51bGwgfHwgY2hpbGQubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoL15bMC05fFxcPXxcXCNdKyQvLnRlc3QoY2hpbGQpKVxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSBcIihcIiArIGNoaWxkICsgXCIpXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcyArPSB0aGlzLm5leHRbdGhpcy5uZXh0Lmxlbmd0aCAtIDFdLnJlbmRlclNtaWxlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9XHJcbn0pO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHJcblxyXG4vKipcclxuKiBCYXNlNjQgY2xhc3MgcHJvdmlkZSBiYXNlNjQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnNcclxuKiBAY2xhc3Mge3N0YXRpY30gc2NpbGxpZ2VuY2UuSlNEcmF3Mi5CYXNlNjRcclxuKi9cclxuSlNEcmF3Mi5CYXNlNjQgPSB7XHJcbiAgICAvLyBwcml2YXRlIHByb3BlcnR5XHJcbiAgICBfa2V5U3RyOiBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEJhc2U2NCBlbmNvZGUgYSBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGVuY29kZVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgaW5wdXQgc3RyaW5nXHJcbiAgICAqIEByZXR1cm5zIGVuY29kZWQgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgZW5jb2RlOiBmdW5jdGlvbiAoaW5wdXQpIHtcclxuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciBvdXRwdXQgPSBcIlwiO1xyXG4gICAgICAgIHZhciBjaHIxLCBjaHIyLCBjaHIzLCBlbmMxLCBlbmMyLCBlbmMzLCBlbmM0O1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuXHJcbiAgICAgICAgaW5wdXQgPSBKU0RyYXcyLkJhc2U2NC5fdXRmOF9lbmNvZGUoaW5wdXQpO1xyXG5cclxuICAgICAgICB3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjaHIxID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xyXG4gICAgICAgICAgICBjaHIyID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xyXG4gICAgICAgICAgICBjaHIzID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xyXG5cclxuICAgICAgICAgICAgZW5jMSA9IGNocjEgPj4gMjtcclxuICAgICAgICAgICAgZW5jMiA9ICgoY2hyMSAmIDMpIDw8IDQpIHwgKGNocjIgPj4gNCk7XHJcbiAgICAgICAgICAgIGVuYzMgPSAoKGNocjIgJiAxNSkgPDwgMikgfCAoY2hyMyA+PiA2KTtcclxuICAgICAgICAgICAgZW5jNCA9IGNocjMgJiA2MztcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05hTihjaHIyKSkge1xyXG4gICAgICAgICAgICAgICAgZW5jMyA9IGVuYzQgPSA2NDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTihjaHIzKSkge1xyXG4gICAgICAgICAgICAgICAgZW5jNCA9IDY0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgK1xyXG5cdFx0XHR0aGlzLl9rZXlTdHIuY2hhckF0KGVuYzEpICsgdGhpcy5fa2V5U3RyLmNoYXJBdChlbmMyKSArXHJcblx0XHRcdHRoaXMuX2tleVN0ci5jaGFyQXQoZW5jMykgKyB0aGlzLl9rZXlTdHIuY2hhckF0KGVuYzQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3V0cHV0O1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogQmFzZTY0IGRlY29kZSBhIHN0cmluZ1xyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gZGVjb2RlXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCBpbnB1dCBzdHJpbmdcclxuICAgICogQHJldHVybnMgZGVjb2RlZCBzdHJpbmdcclxuICAgICovXHJcbiAgICBkZWNvZGU6IGZ1bmN0aW9uIChpbnB1dCkge1xyXG4gICAgICAgIGlmIChpbnB1dCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIG91dHB1dCA9IFwiXCI7XHJcbiAgICAgICAgdmFyIGNocjEsIGNocjIsIGNocjM7XHJcbiAgICAgICAgdmFyIGVuYzEsIGVuYzIsIGVuYzMsIGVuYzQ7XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG5cclxuICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXFw9XS9nLCBcIlwiKTtcclxuICAgICAgICB3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgZW5jMSA9IHRoaXMuX2tleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcclxuICAgICAgICAgICAgZW5jMiA9IHRoaXMuX2tleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcclxuICAgICAgICAgICAgZW5jMyA9IHRoaXMuX2tleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcclxuICAgICAgICAgICAgZW5jNCA9IHRoaXMuX2tleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcclxuXHJcbiAgICAgICAgICAgIGNocjEgPSAoZW5jMSA8PCAyKSB8IChlbmMyID4+IDQpO1xyXG4gICAgICAgICAgICBjaHIyID0gKChlbmMyICYgMTUpIDw8IDQpIHwgKGVuYzMgPj4gMik7XHJcbiAgICAgICAgICAgIGNocjMgPSAoKGVuYzMgJiAzKSA8PCA2KSB8IGVuYzQ7XHJcblxyXG4gICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjEpO1xyXG4gICAgICAgICAgICBpZiAoZW5jMyAhPSA2NCkge1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZW5jNCAhPSA2NCkge1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0cHV0ID0gSlNEcmF3Mi5CYXNlNjQuX3V0ZjhfZGVjb2RlKG91dHB1dCk7XHJcbiAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgIH0sXHJcblxyXG4gICAgLy8gcHJpdmF0ZSBtZXRob2QgZm9yIFVURi04IGVuY29kaW5nXHJcbiAgICBfdXRmOF9lbmNvZGU6IGZ1bmN0aW9uIChzdHJpbmcpIHtcclxuICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXFxyXFxuL2csIFwiXFxuXCIpO1xyXG4gICAgICAgIHZhciB1dGZ0ZXh0ID0gXCJcIjtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBzdHJpbmcubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChuKTtcclxuICAgICAgICAgICAgaWYgKGMgPCAxMjgpIHtcclxuICAgICAgICAgICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgoYyA+IDEyNykgJiYgKGMgPCAyMDQ4KSkge1xyXG4gICAgICAgICAgICAgICAgdXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjID4+IDYpIHwgMTkyKTtcclxuICAgICAgICAgICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTIpIHwgMjI0KTtcclxuICAgICAgICAgICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xyXG4gICAgICAgICAgICAgICAgdXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdXRmdGV4dDtcclxuICAgIH0sXHJcblxyXG4gICAgLy8gcHJpdmF0ZSBtZXRob2QgZm9yIFVURi04IGRlY29kaW5nXHJcbiAgICBfdXRmOF9kZWNvZGU6IGZ1bmN0aW9uICh1dGZ0ZXh0KSB7XHJcbiAgICAgICAgdmFyIHN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgIHZhciBjID0gYzEgPSBjMiA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChpIDwgdXRmdGV4dC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYyA9IHV0ZnRleHQuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgaWYgKGMgPCAxMjgpIHtcclxuICAgICAgICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xyXG4gICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChjID4gMTkxKSAmJiAoYyA8IDIyNCkpIHtcclxuICAgICAgICAgICAgICAgIGMyID0gdXRmdGV4dC5jaGFyQ29kZUF0KGkgKyAxKTtcclxuICAgICAgICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDMxKSA8PCA2KSB8IChjMiAmIDYzKSk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjMiA9IHV0ZnRleHQuY2hhckNvZGVBdChpICsgMSk7XHJcbiAgICAgICAgICAgICAgICBjMyA9IHV0ZnRleHQuY2hhckNvZGVBdChpICsgMik7XHJcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAxNSkgPDwgMTIpIHwgKChjMiAmIDYzKSA8PCA2KSB8IChjMyAmIDYzKSk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZztcclxuICAgIH1cclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5ERUJVRyA9IHtcclxuICAgIGVuYWJsZTogZmFsc2UsXHJcbiAgICBjbGVhcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChERUJVRy5lbmFibGUpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiREVCVUdcIikudmFsdWUgPSAnJztcclxuICAgIH0sXHJcbiAgICBwcmludDogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAoREVCVUcuZW5hYmxlKSB7XHJcbiAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJERUJVR1wiKTtcclxuICAgICAgICAgICAgY29uc29sZS52YWx1ZSArPSBzICsgXCJcXG5cIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLyoqXHJcbiogc2NpbGxpZ2VuY2UgbmFtZXNwYWNlIChzY2lsIGlzIGFuIGFsaWFzIG5hbWUpXHJcbiogQG5hbWVzcGFjZSBzY2lsbGlnZW5jZVxyXG4qL1xyXG5zY2lsbGlnZW5jZSA9IHsgX2Jhc2U6IGZ1bmN0aW9uICgpIHsgfSB9O1xyXG5vbG4gPSBzY2lsbGlnZW5jZTtcclxuc2NpbCA9IHNjaWxsaWdlbmNlO1xyXG5cclxuLyoqXHJcbiogc2NpbGxpZ2VuY2UuYXBwbHkgaXMgYSB0b29sIGZ1bmN0aW9uIHRvIGFwcGVuZCBuZXcgcHJvcGVydGllcyB0byBhIGRpY3Rpb25hcnkgb2JqZWN0XHJcbiogPHByZT5cclxuKiA8Yj5FeGFtcGxlOjwvYj5cclxuKiAgICB2YXIgcGVyc29uID0geyBmaXJzdG5hbWU6IFwiVG9ueVwiLCBsYXN0bmFtZTogXCJZdWFuXCIgfTtcclxuKiAgICBzY2lsbGlnZW5jZS5hcHBseShwZXJzb24sIHsgY29tcGFueTogXCJTY2lsbGlnZW5jZVwiIH0pO1xyXG4qIDwvcHJlPlxyXG4qIEBmdW5jdGlvbiB7ZnVuY3Rpb259IHNjaWxsaWdlbmNlLmFwcGx5XHJcbiovXHJcbnNjaWxsaWdlbmNlLm92ZXJ3cml0ZSA9IHNjaWxsaWdlbmNlLmFwcGx5ID0gZnVuY3Rpb24gKGRlc3QsIGF0dHMsIGRlZmF1bHRzKSB7XHJcbiAgICBpZiAoZGVmYXVsdHMpXHJcbiAgICAgICAgc2NpbGxpZ2VuY2UuYXBwbHkoZGVzdCwgZGVmYXVsdHMpO1xyXG5cclxuICAgIGlmIChkZXN0ICYmIGF0dHMgJiYgdHlwZW9mIGF0dHMgPT0gJ29iamVjdCcpIHtcclxuICAgICAgICBmb3IgKHZhciBrIGluIGF0dHMpXHJcbiAgICAgICAgICAgIGRlc3Rba10gPSBhdHRzW2tdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc3Q7XHJcbn07XHJcblxyXG5zY2lsbGlnZW5jZS5hcHBseShzY2lsbGlnZW5jZSwge1xyXG4gICAgLyoqXHJcbiAgICAqIHNjaWxsaWdlbmNlLmV4dGVuZCBpcyBhIHRvb2wgZnVuY3Rpb24gdG8gZG8gT08gcHJvZ3JhbW1pbmcgaW4gSmF2YXNjcmlwdFxyXG4gICAgKiA8cHJlPlxyXG4gICAgKiA8Yj5FeGFtcGxlOjwvYj5cclxuICAgICogICAgLy8gcGFyZW50IGNsYXNzLCBoZXJlIHNjaWxsaWdlbmNlLl9iYXNlIGlzIGVtcHR5IGNsYXNzXHJcbiAgICAqICAgIFBlcnNvbiA9IHNjaWxsaWdlbmNlLmV4dGVuZChzY2lsbGlnZW5jZS5fYmFzZSwge1xyXG4gICAgKiAgICAgICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKGZpcnN0bmFtZSwgbGFzdG5hbWUpIHtcclxuICAgICogICAgICAgICAgICB0aGlzLmZpcnN0bmFtZSA9IGZpcnN0bmFtZTtcclxuICAgICogICAgICAgICAgICB0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7XHJcbiAgICAqICAgICAgICB9LFxyXG4gICAgKlxyXG4gICAgKiAgICAgICAgZ2V0RnVsbG5hbWU6IGZ1bmN0aW9uKCkge1xyXG4gICAgKiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RuYW1lICsgXCIsIFwiICsgdGhpcy5maXJzdG5hbWU7XHJcbiAgICAqICAgICAgICB9XHJcbiAgICAqICAgIH0pO1xyXG4gICAgKlxyXG4gICAgKiAgICAvLyBzdWIgY2xhc3NcclxuICAgICogICAgRW1wbG95ZWUgPSBzY2lsbGlnZW5jZS5leHRlbmQoUGVyc29uLCB7XHJcbiAgICAqICAgICAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKGZpcnN0bmFtZSwgbGFzdG5hbWUsIGVtcGxveWVlaWQpIHtcclxuICAgICogICAgICAgICAgICB0aGlzLnN1cGVyY2xhc3MoKS5jb25zdHJ1Y3RvcihmaXJzdG5hbWUsIGxhc3RuYW1lKTtcclxuICAgICogICAgICAgICAgICB0aGlzLmVtcGxveWVlaWQgPSBlbXBsb3llZWlkO1xyXG4gICAgKiAgICAgICAgfSxcclxuICAgICpcclxuICAgICogICAgICAgIGdldEVtcGxveWVlSUQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICogICAgICAgICAgICByZXR1cm4gdGhpcy5lbXBsb3llZWlkO1xyXG4gICAgKiAgICAgICAgfVxyXG4gICAgKiAgICB9KTtcclxuICAgICogICAgXHJcbiAgICAqICAgIC8vIGRlZmluZSBzdGF0aWMgbWV0aG9kXHJcbiAgICAqICAgIHNjaWxsaWdlbmNlLmFwcGx5KEVtcGxveWVlLCB7XHJcbiAgICAqICAgICAgICBrQ29tcGFueTogXCJTY2lsbGlnZW5jZVwiLCAvLyBzdGF0aWMgcHJvcGVydHlcclxuICAgICpcclxuICAgICogICAgICAgIGdldEVtcGxveU5vOiBmdW5jdGlvbiAoaWQpIHsgLy8gc3RhdGljIG1ldGhvZFxyXG4gICAgKiAgICAgICAgICAgIHJldHVybiBcIlNDSS1cIiArIGlkO1xyXG4gICAgKiAgICAgICAgfVxyXG4gICAgKiAgICB9XHJcbiAgICAqXHJcbiAgICAqICAgIC8vIGNyZWF0ZSBhbiBFbXBsb3llZSBvYmplY3RcclxuICAgICogICAgdmFyIGUgPSBuZXcgRW1wbG95ZWUoXCJUb255XCIsIFwiWXVhblwiLCAxOTIpO1xyXG4gICAgKiAgICB2YXIgcyA9IGUuZ2V0RnVsbG5hbWUoKTtcclxuICAgICogPC9wcmU+XHJcbiAgICAqIEBmdW5jdGlvbiB7ZnVuY3Rpb259IHNjaWxsaWdlbmNlLmV4dGVuZFxyXG4gICAgKi9cclxuICAgIGV4dGVuZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBpbyA9IGZ1bmN0aW9uIChhdHRzKSB7IGZvciAodmFyIGsgaW4gYXR0cykgdGhpc1trXSA9IGF0dHNba107IH07XHJcbiAgICAgICAgdmFyIG9jID0gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNiLCBzcCwgb3ZlcnJpZGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3AgPT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIG92ZXJyaWRlcyA9IHNwO1xyXG4gICAgICAgICAgICAgICAgc3AgPSBzYjtcclxuICAgICAgICAgICAgICAgIHNiID0gb3ZlcnJpZGVzLmNvbnN0cnVjdG9yICE9IG9jID8gb3ZlcnJpZGVzLmNvbnN0cnVjdG9yIDogZnVuY3Rpb24gKCkgeyBzcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBGID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgICAgICAgICB2YXIgc3BwID0gc3AucHJvdG90eXBlO1xyXG4gICAgICAgICAgICBGLnByb3RvdHlwZSA9IHNwcDtcclxuICAgICAgICAgICAgdmFyIHNicCA9IHNiLnByb3RvdHlwZSA9IG5ldyBGKCk7XHJcbiAgICAgICAgICAgIHNicC5jb25zdHJ1Y3RvciA9IHNiO1xyXG4gICAgICAgICAgICBzYi5zdXBlcmNsYXNzID0gc3BwO1xyXG4gICAgICAgICAgICBpZiAoc3BwLmNvbnN0cnVjdG9yID09IG9jKVxyXG4gICAgICAgICAgICAgICAgc3BwLmNvbnN0cnVjdG9yID0gc3A7XHJcbiAgICAgICAgICAgIHNiLm92ZXJyaWRlID0gZnVuY3Rpb24gKGF0dHMpIHsgc2NpbGxpZ2VuY2Uub3ZlcnJpZGUoc2IsIGF0dHMpOyB9O1xyXG4gICAgICAgICAgICBzYnAuc3VwZXJjbGFzcyA9IHNicC5zdXByID0gKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNwcDsgfSk7XHJcbiAgICAgICAgICAgIHNicC5vdmVycmlkZSA9IGlvO1xyXG4gICAgICAgICAgICBzY2lsbGlnZW5jZS5vdmVycmlkZShzYiwgb3ZlcnJpZGVzKTtcclxuICAgICAgICAgICAgc2IuZXh0ZW5kID0gZnVuY3Rpb24gKGF0dHMpIHsgcmV0dXJuIHNjaWxsaWdlbmNlLmV4dGVuZChzYiwgYXR0cyk7IH07XHJcbiAgICAgICAgICAgIHJldHVybiBzYjtcclxuICAgICAgICB9O1xyXG4gICAgfSAoKSxcclxuXHJcbiAgICBvdmVycmlkZTogZnVuY3Rpb24gKG9yaWdjbGFzcywgb3ZlcnJpZGVzKSB7XHJcbiAgICAgICAgaWYgKG92ZXJyaWRlcykge1xyXG4gICAgICAgICAgICB2YXIgcCA9IG9yaWdjbGFzcy5wcm90b3R5cGU7XHJcbiAgICAgICAgICAgIHNjaWxsaWdlbmNlLmFwcGx5KHAsIG92ZXJyaWRlcyk7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hbGwgIT0gbnVsbCAmJiBvdmVycmlkZXMuaGFzT3duUHJvcGVydHkoJ3RvU3RyaW5nJykpXHJcbiAgICAgICAgICAgICAgICBwLnRvU3RyaW5nID0gb3ZlcnJpZGVzLnRvU3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY2xvbmU6IGZ1bmN0aW9uIChzcmMpIHtcclxuICAgICAgICBpZiAoc3JjID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoc3JjLmxlbmd0aCAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gc3JjLmNvbmNhdChbXSk7XHJcblxyXG4gICAgICAgIHZhciBkZXN0ID0ge307XHJcbiAgICAgICAgc2NpbC5hcHBseShkZXN0LCBzcmMpO1xyXG4gICAgICAgIHJldHVybiBkZXN0O1xyXG4gICAgfSxcclxuXHJcbiAgICBjbG9uZUFycmF5OiBmdW5jdGlvbiAoc3JjKSB7XHJcbiAgICAgICAgaWYgKHNyYyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHNyYy5sZW5ndGggIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3JjLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNyY1tpXSA9PSBcIm9iamVjdFwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldFtpXSA9IHNjaWwuY2xvbmUoc3JjW2ldKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICByZXRbaV0gPSBzcmNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBkZXN0ID0ge307XHJcbiAgICAgICAgc2NpbC5hcHBseShkZXN0LCBzcmMpO1xyXG4gICAgICAgIHJldHVybiBkZXN0O1xyXG4gICAgfSxcclxuXHJcbiAgICBieUlkOiBmdW5jdGlvbiAoaWQpIHtcclxuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjb25uZWN0OiBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCB8fCBldmVudCA9PSBudWxsIHx8IGV2ZW50ID09IFwiXCIgfHwgY2FsbGJhY2sgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZWxlbWVudC5hZGRFdmVudExpc3RlbmVyICE9IG51bGwpXHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudC5zdWJzdHIoMiksIGZ1bmN0aW9uIChlKSB7IGNhbGxiYWNrKGUsIGVsZW1lbnQpOyB9KTtcclxuICAgICAgICBlbHNlIGlmIChlbGVtZW50LmF0dGFjaEV2ZW50ICE9IG51bGwpXHJcbiAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoZXZlbnQsIGZ1bmN0aW9uIChlKSB7IGNhbGxiYWNrKGUsIGVsZW1lbnQpOyB9KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChlbGVtZW50LCBldmVudCwgZnVuY3Rpb24gKGUpIHsgY2FsbGJhY2soZSwgZWxlbWVudCk7IH0pO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbnNjaWxsaWdlbmNlLnJlYWR5ID0gZG9qby5yZWFkeTtcclxuc2NpbGxpZ2VuY2Uub25sb2FkID0gZG9qby5hZGRPbkxvYWQ7XHJcblxyXG5cclxuLypcclxuc2NpbGxpZ2VuY2UuZ2V0R2VvTG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcCA9IG51bGw7XHJcbiAgICBpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7XHJcbiAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbiAocG9zaXRpb24pIHsgc2NpbGxpZ2VuY2UuZ2VvbG9jYXRpb24gPSB7IHg6IHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSwgeTogcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZX0gfSk7XHJcbiAgICB9XHJcbn07XHJcbnNjaWxsaWdlbmNlLmdldEdlb0xvY2F0aW9uKCk7XHJcbiovXHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbkpTRHJhdzIuRHJhd2VyID0ge1xyXG4gICAga01pbkZvbnRTaXplOiA0LFxyXG5cclxuICAgIGRyYXdGb3JtdWxhOiBmdW5jdGlvbiAoc3VyZmFjZSwgcCwgcmV2ZXJzZWQsIHMsIGNvbG9yLCBmb250c2l6ZSkge1xyXG4gICAgICAgIC8vSSMxMTk0MFxyXG4gICAgICAgIGlmIChyZXZlcnNlZCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHMuY2hhckF0KDApO1xyXG4gICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpXHJcbiAgICAgICAgICAgICAgICByZXZlcnNlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHJlY3QgPSBuZXcgSlNEcmF3Mi5SZWN0KCk7XHJcbiAgICAgICAgdmFyIHNzID0gdGhpcy5zcGxpdEZvcm11bGEocyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBpZiAocmV2ZXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzc1tpXS5udW0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5kcmF3V29yZChzdXJmYWNlLCByZWN0LCBwLCBjb2xvciwgZm9udHNpemUsIHNzW2ldLm51bSwgcmV2ZXJzZWQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjdCA9IHI7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWN0LnVuaW9uKHIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgciA9IHRoaXMuZHJhd1dvcmQoc3VyZmFjZSwgcmVjdCwgcCwgY29sb3IsIGZvbnRzaXplLCBzc1tpXS5zdHIsIHJldmVyc2VkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSlcclxuICAgICAgICAgICAgICAgIHJlY3QgPSByO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZWN0LnVuaW9uKHIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFyZXZlcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNzW2ldLm51bSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZHJhd1dvcmQoc3VyZmFjZSwgcmVjdCwgcCwgY29sb3IsIGZvbnRzaXplLCBzc1tpXS5udW0sIHJldmVyc2VkLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QgPSByO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC51bmlvbihyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlY3Q7XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdXb3JkOiBmdW5jdGlvbiAoc3VyZmFjZSwgcmVjdCwgcCwgY29sb3IsIGZvbnRzaXplLCB3LCByZXZlcnNlZCwgaXNudW1iZXIpIHtcclxuICAgICAgICBpZiAoaXNudW1iZXIpXHJcbiAgICAgICAgICAgIGZvbnRzaXplIC89IDEuNDtcclxuICAgICAgICB2YXIgbiA9IHRoaXMuZHJhd0xhYmVsKHN1cmZhY2UsIHAsIHcsIGNvbG9yLCBmb250c2l6ZSwgZmFsc2UsIHJldmVyc2VkID8gXCJlbmQtYW5jaG9yXCIgOiBcInN0YXJ0LWFuY2hvclwiKTtcclxuICAgICAgICB2YXIgciA9IG4uX3JlY3QuY2xvbmUoKTtcclxuICAgICAgICB2YXIgbncgPSByLndpZHRoIC8gMjtcclxuXHJcbiAgICAgICAgdmFyIGR4ID0gMDtcclxuICAgICAgICB2YXIgZHkgPSBpc251bWJlciA/IGZvbnRzaXplIC8gNCA6IDA7XHJcbiAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKSB7XHJcbiAgICAgICAgICAgIC8vIGR4ID0gLW53O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXZlcnNlZCkge1xyXG4gICAgICAgICAgICBkeCA9IC0ocC54IC0gcmVjdC5sZWZ0KSAtIG53O1xyXG4gICAgICAgICAgICBpZiAodyA9PSBcIklcIiB8fCB3ID09IFwiaVwiIHx8IHcgPT0gXCJsXCIgfHwgdyA9PSBcInJcIiB8fCB3ID09IFwiZlwiIHx8IHcgPT0gXCIuXCIpIHtcclxuICAgICAgICAgICAgICAgIGR4IC09IGZvbnRzaXplIC8gNi4wO1xyXG4gICAgICAgICAgICAgICAgLy8gci53aWR0aCAtPSA0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2NpbC5VdGlscy5pc0Nocm9tZSlcclxuICAgICAgICAgICAgICAgIGR4IC09IGZvbnRzaXplIC8gMTAuMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGR4ID0gKHJlY3QucmlnaHQoKSAtIHAueCkgKyBudztcclxuICAgICAgICAgICAgaWYgKHcgPT0gXCJJXCIgfHwgdyA9PSBcImlcIiB8fCB3ID09IFwibFwiIHx8IHcgPT0gXCJyXCIgfHwgdyA9PSBcImZcIiB8fCB3ID09IFwiLlwiKSB7XHJcbiAgICAgICAgICAgICAgICBkeCArPSBmb250c2l6ZSAvIDYuMDtcclxuICAgICAgICAgICAgICAgIC8vIHIud2lkdGggLT0gNDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNDaHJvbWUpXHJcbiAgICAgICAgICAgICAgICBkeCArPSBmb250c2l6ZSAvIDEwLjA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUoZHgsIGR5KV0pO1xyXG4gICAgICAgIHIubGVmdCArPSBkeDtcclxuICAgICAgICByLnRvcCArPSBkeTtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH0sXHJcblxyXG4gICAgc3BsaXRGb3JtdWxhOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmICgvXltBLVpdKyQvLnRlc3QocykgfHwgL15bXFwoXVteXFwoXFwpXStbXFwpXSQvLnRlc3QocykgfHwgL15bXFxbXVteXFxbXFxdXStbXFxdXSQvLnRlc3QocykpXHJcbiAgICAgICAgICAgIHJldHVybiBbeyBzdHI6IHN9XTtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG5cclxuICAgICAgICB2YXIgYnJhY2tldCA9IDA7XHJcbiAgICAgICAgdmFyIG51bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHZhciB3ID0gXCJcIjtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBzLmNoYXJBdChpKTtcclxuICAgICAgICAgICAgaWYgKGJyYWNrZXQgPiAwIHx8IGMgPT0gJygnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYnJhY2tldCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgJiYgcmV0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0W3JldC5sZW5ndGggLSAxXS5udW0gPSB3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgc3RyOiB3IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICsrYnJhY2tldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJyknKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLS1icmFja2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHcgKz0gYztcclxuICAgICAgICAgICAgICAgIGlmIChicmFja2V0ID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHN0cjogdyB9KTtcclxuICAgICAgICAgICAgICAgICAgICB3ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciAmJiByZXQubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFtyZXQubGVuZ3RoIC0gMV0ubnVtID0gdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyBzdHI6IHcgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHcgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScgJiYgIW51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3ICE9IFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgc3RyOiB3IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3ICs9IGM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKG51bWJlciAmJiByZXQubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHJldFtyZXQubGVuZ3RoIC0gMV0ubnVtID0gdztcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0LnB1c2goeyBzdHI6IHcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdDdXJ2ZUFycm93OiBmdW5jdGlvbiAoc3VyZmFjZSwgcDEsIHAyLCBwMWEsIHAyYSwgY29sb3IsIGxpbmV3aWR0aCkge1xyXG4gICAgICAgIGlmIChwMWEgPT0gbnVsbCB8fCBwMmEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYW5jaG9ycyA9IEpTRHJhdzIuQ3VydmUuY2FsY0FuY2hvcnMocDEsIHAyKTtcclxuICAgICAgICAgICAgcDFhID0gYW5jaG9ycy5wMWE7XHJcbiAgICAgICAgICAgIHAyYSA9IGFuY2hvcnMucDJhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VyZmFjZS5jcmVhdGVQYXRoKFwiXCIpLm1vdmVUbyhwMS54LCBwMS55KVxyXG4gICAgICAgICAgICAuY3VydmVUbyhwMWEueCwgcDFhLnksIHAyYS54LCBwMmEueSwgcDIueCwgcDIueSlcclxuICAgICAgICAgICAgLnNldFN0cm9rZSh7IGNvbG9yOiBjb2xvciwgd2lkdGg6IGxpbmV3aWR0aCwgY2FwOiBcInJvdW5kXCIgfSk7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0Fycm93aGVhZChzdXJmYWNlLCBwMmEsIHAyLCBjb2xvciwgbGluZXdpZHRoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0N1cnZlOiBmdW5jdGlvbiAoc3VyZmFjZSwgcDEsIHAyLCBkZWcsIHIsIGNvbG9yLCBsaW5ld2lkdGgpIHtcclxuICAgICAgICB2YXIgYW5jaG9ycyA9IEpTRHJhdzIuQ3VydmUuY2FsY0FuY2hvcnMocDEsIHAyLCBkZWcsIHIpO1xyXG4gICAgICAgIHZhciBwMWEgPSBhbmNob3JzLnAxYTtcclxuICAgICAgICB2YXIgcDJhID0gYW5jaG9ycy5wMmE7XHJcblxyXG4gICAgICAgIHN1cmZhY2UuY3JlYXRlUGF0aChcIlwiKS5tb3ZlVG8ocDEueCwgcDEueSlcclxuICAgICAgICAgICAgLmN1cnZlVG8ocDFhLngsIHAxYS55LCBwMmEueCwgcDJhLnksIHAyLngsIHAyLnkpXHJcbiAgICAgICAgICAgIC5zZXRTdHJva2UoeyBjb2xvcjogY29sb3IsIHdpZHRoOiBsaW5ld2lkdGgsIGNhcDogXCJyb3VuZFwiIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3QXJyb3c6IGZ1bmN0aW9uIChzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgsIGRvdHRlZGxpbmUsIGFycm93c3R5bGUpIHtcclxuICAgICAgICBpZiAoYXJyb3dzdHlsZSA9PSBcImR1YWxcIikge1xyXG4gICAgICAgICAgICB2YXIgZCA9IG5ldyBKU0RyYXcyLlBvaW50KHAyLnggLSBwMS54LCBwMi55IC0gcDEueSk7XHJcbiAgICAgICAgICAgIHZhciB2ID0gZC5jbG9uZSgpLnJvdGF0ZSg5MCkuc2V0TGVuZ3RoKGxpbmV3aWR0aCk7XHJcbiAgICAgICAgICAgIHZhciB0cDEgPSBwMS5jbG9uZSgpLm9mZnNldChkLnggKyB2LngsIGQueSArIHYueSk7XHJcbiAgICAgICAgICAgIHZhciB0cDIgPSBwMi5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KTtcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgdHAxLCB0cDIsIGNvbG9yLCBsaW5ld2lkdGgsIGRvdHRlZGxpbmUpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3QXJyb3doZWFkMihzdXJmYWNlLCB0cDEsIHRwMiwgY29sb3IsIGxpbmV3aWR0aCwgXCJ0b3BcIik7XHJcblxyXG4gICAgICAgICAgICB2ID0gZC5jbG9uZSgpLnJvdGF0ZSgtOTApLnNldExlbmd0aChsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICB0cDEgPSBwMS5jbG9uZSgpLm9mZnNldChkLnggKyB2LngsIGQueSArIHYueSk7XHJcbiAgICAgICAgICAgIHRwMiA9IHAyLmNsb25lKCkub2Zmc2V0KC1kLnggKyB2LngsIC1kLnkgKyB2LnkpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCB0cDEsIHRwMiwgY29sb3IsIGxpbmV3aWR0aCwgZG90dGVkbGluZSk7XHJcbiAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdBcnJvd2hlYWQyKHN1cmZhY2UsIHRwMiwgdHAxLCBjb2xvciwgbGluZXdpZHRoLCBcInRvcFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJyb3dzdHlsZSA9PSBcInJldmVyc2libGVcIikge1xyXG4gICAgICAgICAgICB2YXIgZCA9IG5ldyBKU0RyYXcyLlBvaW50KHAyLnggLSBwMS54LCBwMi55IC0gcDEueSk7XHJcbiAgICAgICAgICAgIHZhciB2ID0gZC5jbG9uZSgpLnJvdGF0ZSg5MCkuc2V0TGVuZ3RoKGxpbmV3aWR0aCk7XHJcbiAgICAgICAgICAgIHZhciB0cDEgPSBwMS5jbG9uZSgpLm9mZnNldChkLnggKiAwLjYgKyB2LngsIGQueSAqIDAuNiArIHYueSk7XHJcbiAgICAgICAgICAgIHZhciB0cDIgPSBwMi5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KTtcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgdHAxLCB0cDIsIGNvbG9yLCBsaW5ld2lkdGgsIGRvdHRlZGxpbmUpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3QXJyb3doZWFkMihzdXJmYWNlLCB0cDEsIHRwMiwgY29sb3IsIGxpbmV3aWR0aCwgXCJ0b3BcIik7XHJcblxyXG4gICAgICAgICAgICB2ID0gZC5jbG9uZSgpLnJvdGF0ZSgtOTApLnNldExlbmd0aChsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICB0cDEgPSBwMS5jbG9uZSgpLm9mZnNldChkLnggKyB2LngsIGQueSArIHYueSk7XHJcbiAgICAgICAgICAgIHRwMiA9IHAyLmNsb25lKCkub2Zmc2V0KC1kLnggKyB2LngsIC1kLnkgKyB2LnkpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCB0cDEsIHRwMiwgY29sb3IsIGxpbmV3aWR0aCwgZG90dGVkbGluZSk7XHJcbiAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdBcnJvd2hlYWQyKHN1cmZhY2UsIHRwMiwgdHAxLCBjb2xvciwgbGluZXdpZHRoLCBcInRvcFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhcnJvd3N0eWxlID09IFwic29saWRcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHYgPSBuZXcgSlNEcmF3Mi5Qb2ludChwMi54IC0gcDEueCwgcDIueSAtIHAxLnkpLnNldExlbmd0aChsaW5ld2lkdGggKiA0KTtcclxuICAgICAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAxLCBwMi5jbG9uZSgpLm9mZnNldCgtdi54LCAtdi55KSwgY29sb3IsIGxpbmV3aWR0aCwgZG90dGVkbGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgsIGRvdHRlZGxpbmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdBcnJvd2hlYWQoc3VyZmFjZSwgcDEsIHAyLCBjb2xvciwgbGluZXdpZHRoLCBhcnJvd3N0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdBcnJvd2hlYWQ6IGZ1bmN0aW9uIChzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgsIGFycm93c3R5bGUpIHtcclxuICAgICAgICBpZiAoYXJyb3dzdHlsZSA9PSBcInNvbGlkXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5kcmF3QXJyb3doZWFkMihzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgsIGFycm93c3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcnJvd3N0eWxlID09IFwiZG91YmxlXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5kcmF3QXJyb3doZWFkMihzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYXdBcnJvd2hlYWQyKHN1cmZhY2UsIHAyLCBwMSwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFycm93c3R5bGUgPT0gXCJub25lXCIpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhd0Fycm93aGVhZDIoc3VyZmFjZSwgcDEsIHAyLCBjb2xvciwgbGluZXdpZHRoKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdBcnJvd2hlYWQyOiBmdW5jdGlvbiAoc3VyZmFjZSwgcDEsIHAyLCBjb2xvciwgbGluZXdpZHRoLCBhcykge1xyXG4gICAgICAgIHZhciB2ID0gcDEuY2xvbmUoKS5vZmZzZXQoLXAyLngsIC1wMi55KS5zZXRMZW5ndGgobGluZXdpZHRoICogNyk7XHJcbiAgICAgICAgdmFyIGRlZyA9IHYuYW5nbGUoKTtcclxuICAgICAgICB2YXIgdjEgPSB2LmNsb25lKCkucm90YXRlKDI1KTtcclxuICAgICAgICB2YXIgdjIgPSB2LmNsb25lKCkucm90YXRlKC0yNSk7XHJcbiAgICAgICAgdmFyIGExID0gcDIuY2xvbmUoKS5vZmZzZXQodjEueCwgdjEueSk7XHJcbiAgICAgICAgdmFyIGEyID0gcDIuY2xvbmUoKS5vZmZzZXQodjIueCwgdjIueSk7XHJcblxyXG4gICAgICAgIGlmIChhcyA9PSBcInNvbGlkXCIpIHtcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd1RyaWFuZ2xlKHN1cmZhY2UsIGExLCBwMiwgYTIsIGNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXMgPT0gXCJ0b3BcIikge1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBhMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcyA9PSBcImJvdHRvbVwiKSB7XHJcbiAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGEyLCBwMiwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBhMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBhMiwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZHJhd1RyaWFuZ2xlOiBmdW5jdGlvbiAoc3VyZmFjZSwgcDEsIHAyLCBwMywgY29sb3IpIHtcclxuICAgICAgICB2YXIgdCA9IHN1cmZhY2UuY3JlYXRlUGF0aChcIlwiKS5tb3ZlVG8ocDEueCwgcDEueSkubGluZVRvKHAyLngsIHAyLnkpLmxpbmVUbyhwMy54LCBwMy55KS5saW5lVG8ocDEueCwgcDEueSk7XHJcbiAgICAgICAgdC5zZXRGaWxsKGNvbG9yKTtcclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0JyYWNrZXQ6IGZ1bmN0aW9uIChzdXJmYWNlLCByLCBjb2xvciwgbGluZXdpZHRoLCBzaGFwZSkge1xyXG4gICAgICAgIHZhciBtID0gbGluZXdpZHRoICogMztcclxuICAgICAgICB2YXIgdyA9IGxpbmV3aWR0aDtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwicm91bmRcIjpcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0N1cnZlKHN1cmZhY2UsIHIudG9wbGVmdCgpLCByLmJvdHRvbWxlZnQoKSwgLTMwLCAwLjMsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3Q3VydmUoc3VyZmFjZSwgci50b3ByaWdodCgpLCByLmJvdHRvbXJpZ2h0KCksIDMwLCAwLjMsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjdXJseVwiOlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCByLnRvcGxlZnQoKSwgci50b3BsZWZ0KCkub2Zmc2V0KG0sIDApLCBjb2xvciwgdyk7XHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCByLnRvcGxlZnQoKSwgci5ib3R0b21sZWZ0KCksIGNvbG9yLCB3KTtcclxuICAgICAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHIuYm90dG9tbGVmdCgpLCByLmJvdHRvbWxlZnQoKS5vZmZzZXQobSwgMCksIGNvbG9yLCB3KTtcclxuXHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCByLnRvcHJpZ2h0KCksIHIudG9wcmlnaHQoKS5vZmZzZXQoLW0sIDApLCBjb2xvciwgdyk7XHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCByLnRvcHJpZ2h0KCksIHIuYm90dG9tcmlnaHQoKSwgY29sb3IsIHcpO1xyXG4gICAgICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgci5ib3R0b21yaWdodCgpLCByLmJvdHRvbXJpZ2h0KCkub2Zmc2V0KC1tLCAwKSwgY29sb3IsIHcpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3RG91YmxlQXJyb3c6IGZ1bmN0aW9uIChzdXJmYWNlLCByLCBjb2xvciwgbGluZXdpZHRoKSB7XHJcbiAgICAgICAgdmFyIG0gPSBsaW5ld2lkdGggKiAzO1xyXG4gICAgICAgIHZhciB3ID0gbGluZXdpZHRoO1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdMaW5lKHN1cmZhY2UsIHIudG9wbGVmdCgpLCByLnRvcHJpZ2h0KCksIGNvbG9yLCB3KTtcclxuICAgICAgICB0aGlzLmRyYXdBcnJvdyhzdXJmYWNlLCByLnRvcGxlZnQoKSwgci5ib3R0b21sZWZ0KCksIGNvbG9yLCB3KTtcclxuICAgICAgICB0aGlzLmRyYXdBcnJvdyhzdXJmYWNlLCByLnRvcHJpZ2h0KCksIHIuYm90dG9tcmlnaHQoKSwgY29sb3IsIHcpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3TGFiZWw6IGZ1bmN0aW9uIChzdXJmYWNlLCBwLCBzLCBmb250Y29sb3IsIGZvbnRzaXplLCBvcGFxdWUsIGFsaWduLCBvZmZzZXR4LCBzdHJva2UpIHtcclxuICAgICAgICB2YXIgdyA9IGZvbnRzaXplICsgMjtcclxuICAgICAgICBpZiAob3BhcXVlKSB7XHJcbiAgICAgICAgICAgIHZhciByID0gbmV3IEpTRHJhdzIuUmVjdChwLnggLSB3IC8gMiwgcC55IC0gdyAvIDIsIHcsIHcpO1xyXG4gICAgICAgICAgICBzdXJmYWNlLmNyZWF0ZVJlY3QoeyB4OiByLmxlZnQsIHk6IHIudG9wLCB3aWR0aDogci53aWR0aCwgaGVpZ2h0OiByLmhlaWdodCB9KVxyXG4gICAgICAgICAgICAgICAgLnNldEZpbGwob3BhcXVlID09IHRydWUgPyBcIiNmZmZcIiA6IG9wYXF1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgeCA9IHAueCArIChvZmZzZXR4ID09IG51bGwgPyAwIDogb2Zmc2V0eCk7XHJcbiAgICAgICAgdmFyIHkgPSBwLnkgKyB3IC8gMiAtIDI7XHJcbiAgICAgICAgaWYgKGFsaWduID09IFwic3RhcnQtYW5jaG9yXCIpIHtcclxuICAgICAgICAgICAgYWxpZ24gPSBcInN0YXJ0XCI7XHJcbiAgICAgICAgICAgIHggLT0gZm9udHNpemUgKiAwLjQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhbGlnbiA9PSBcImVuZC1hbmNob3JcIikge1xyXG4gICAgICAgICAgICBhbGlnbiA9IFwiZW5kXCI7XHJcbiAgICAgICAgICAgIHggKz0gZm9udHNpemUgKiAwLjQ7XHJcbiAgICAgICAgICAgIC8vIHMgPSBKU0RyYXcyLlN1cGVyQXRvbXMucmV2ZXJzZUxhYmVsKHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYXJncyA9IHsgeDogeCwgeTogeSwgdGV4dDogcywgYWxpZ246IGFsaWduID09IG51bGwgPyBcIm1pZGRsZVwiIDogYWxpZ24gfTtcclxuICAgICAgICB2YXIgdCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGRvam94LmdmeC5yZW5kZXJlciA9PSBcImNhbnZhc1wiKSB7XHJcbiAgICAgICAgICAgIHQgPSBzdXJmYWNlLmNyZWF0ZVRleHQoYXJncyk7XHJcbiAgICAgICAgICAgIHQuc2hhcGUuZm9udFN0eWxlID0gXCJib2xkIFwiICsgKGZvbnRzaXplIDwgdGhpcy5rTWluRm9udFNpemUgPyB0aGlzLmtNaW5Gb250U2l6ZSA6IGZvbnRzaXplKSAvKk1hYyxMaW51eCBidWcqLyArIFwicHggQXJpYWxcIjtcclxuICAgICAgICAgICAgdC5zaGFwZS5maWxsU3R5bGUgPSBmb250Y29sb3I7XHJcbiAgICAgICAgICAgIHQuc2hhcGUuYWxpZ24gPSBcImNlbnRlclwiO1xyXG5cclxuICAgICAgICAgICAgdC5td2lkdGggPSB0aGlzLmdldFRleHRXaWR0aChzdXJmYWNlLCB0KTtcclxuICAgICAgICAgICAgdC5nZXRUZXh0V2lkdGggPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0Lm13aWR0aDsgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHQgPSBzdXJmYWNlLmNyZWF0ZVRleHQoYXJncylcclxuICAgICAgICAgICAgICAgIC5zZXRGb250KHsgZmFtaWx5OiBcIkFyaWFsXCIsIHNpemU6IChmb250c2l6ZSA8IHRoaXMua01pbkZvbnRTaXplID8gdGhpcy5rTWluRm9udFNpemUgOiBmb250c2l6ZSkgLypNYWMsTGludXggYnVnKi8gKyBcInB4XCIsIHdlaWdodDogXCJub3JtYWxcIiB9KVxyXG4gICAgICAgICAgICAgICAgLnNldEZpbGwoZm9udGNvbG9yKTtcclxuICAgICAgICAgICAgaWYgKHN0cm9rZSAhPSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIHQuc2V0U3Ryb2tlKGZvbnRjb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzcGFjZSBjaGFyIGNhdXNlcyBoYW5nLXVwIGlzc3VlXHJcbiAgICAgICAgaWYgKC9eWyBdKyQvLnRlc3QocykpXHJcbiAgICAgICAgICAgIHQuX3JlY3QgPSBuZXcgSlNEcmF3Mi5SZWN0KHgsIHksIHMubGVuZ3RoICogZm9udHNpemUgLyAyLCBmb250c2l6ZSArIDQpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdC5fcmVjdCA9IG5ldyBKU0RyYXcyLlJlY3QoeCwgeSwgdC5nZXRUZXh0V2lkdGgoKSwgZm9udHNpemUgKyA0KTtcclxuXHJcbiAgICAgICAgdC5fcmVjdC50b3AgLT0gdC5fcmVjdC5oZWlnaHQgKiAwLjg7XHJcbiAgICAgICAgaWYgKGFsaWduID09IFwiZW5kXCIpXHJcbiAgICAgICAgICAgIHQuX3JlY3QubGVmdCAtPSB0Ll9yZWN0LndpZHRoO1xyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3VGV4dDI6IGZ1bmN0aW9uIChzdXJmYWNlLCBwLCBzLCBmb250Y29sb3IsIGZvbnRzaXplLCByb3RhdGVkZWcpIHtcclxuICAgICAgICB2YXIgdyA9IGZvbnRzaXplICsgMjtcclxuICAgICAgICB2YXIgdCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGRvam94LmdmeC5yZW5kZXJlciA9PSBcImNhbnZhc1wiKSB7XHJcbiAgICAgICAgICAgIHQgPSBzdXJmYWNlLmNyZWF0ZVRleHQoeyB4OiBwLngsIHk6IHAueSArIHcgLyAyIC0gMiwgdGV4dDogcyB9KTtcclxuICAgICAgICAgICAgdC5zaGFwZS5mb250U3R5bGUgPSBcImJvbGQgXCIgKyAoZm9udHNpemUgPCB0aGlzLmtNaW5Gb250U2l6ZSA/IHRoaXMua01pbkZvbnRTaXplIDogZm9udHNpemUpIC8qTWFjLExpbnV4IGJ1ZyovICsgXCJweCBBcmlhbFwiO1xyXG4gICAgICAgICAgICB0LnNoYXBlLmZpbGxTdHlsZSA9IGZvbnRjb2xvcjtcclxuICAgICAgICAgICAgdC5zaGFwZS5hbGlnbiA9IFwiY2VudGVyXCI7XHJcblxyXG4gICAgICAgICAgICB0Lm13aWR0aCA9IHRoaXMuZ2V0VGV4dFdpZHRoKHN1cmZhY2UsIHQpO1xyXG4gICAgICAgICAgICB0LmdldFRleHRXaWR0aCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHQubXdpZHRoOyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdCA9IHN1cmZhY2UuY3JlYXRlVGV4dCh7IHg6IHAueCwgeTogcC55ICsgdyAvIDIgLSAyLCB0ZXh0OiBzLCBhbGlnbjogXCJtaWRkbGVcIiB9KVxyXG4gICAgICAgICAgICAgICAgLnNldEZvbnQoeyBmYW1pbHk6IFwiQXJpYWxcIiwgc2l6ZTogKGZvbnRzaXplIDwgdGhpcy5rTWluRm9udFNpemUgPyB0aGlzLmtNaW5Gb250U2l6ZSA6IGZvbnRzaXplKSAvKk1hYyxMaW51eCBidWcqLyArIFwicHhcIiwgd2VpZ2h0OiBcIm5vcm1hbFwiIH0pXHJcbiAgICAgICAgICAgICAgICAuc2V0RmlsbChmb250Y29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocm90YXRlZGVnICE9IG51bGwpXHJcbiAgICAgICAgICAgIHQuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnJvdGF0ZUF0KHJvdGF0ZWRlZywgcC54LCBwLnkpXSk7XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdUZXh0OiBmdW5jdGlvbiAoc3VyZmFjZSwgcCwgcywgZm9udGNvbG9yLCBmb250c2l6ZSwgYWxpZ24sIGl0YWxpYykge1xyXG4gICAgICAgIGlmIChhbGlnbiA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGlnbiA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICB2YXIgdCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGRvam94LmdmeC5yZW5kZXJlciA9PSBcImNhbnZhc1wiKSB7XHJcbiAgICAgICAgICAgIHQgPSBzdXJmYWNlLmNyZWF0ZVRleHQoeyB4OiBwLngsIHk6IHAueSArIGZvbnRzaXplICsgMiwgdGV4dDogcyB9KTtcclxuICAgICAgICAgICAgdC5zaGFwZS5mb250U3R5bGUgPSAoZm9udHNpemUgPCB0aGlzLmtNaW5Gb250U2l6ZSA/IHRoaXMua01pbkZvbnRTaXplIDogZm9udHNpemUpIC8qTWFjLExpbnV4IGJ1ZyovICsgXCJweCBBcmlhbFwiO1xyXG4gICAgICAgICAgICB0LnNoYXBlLmZpbGxTdHlsZSA9IGZvbnRjb2xvcjtcclxuICAgICAgICAgICAgdC5zaGFwZS5hbGlnbiA9IGFsaWduO1xyXG5cclxuICAgICAgICAgICAgdC5td2lkdGggPSB0aGlzLmdldFRleHRXaWR0aChzdXJmYWNlLCB0KTtcclxuICAgICAgICAgICAgdC5nZXRUZXh0V2lkdGggPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0Lm13aWR0aDsgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBmb250ID0geyBmYW1pbHk6IFwiQXJpYWxcIiwgc2l6ZTogKGZvbnRzaXplIDwgdGhpcy5rTWluRm9udFNpemUgPyB0aGlzLmtNaW5Gb250U2l6ZSA6IGZvbnRzaXplKSAvKk1hYyxMaW51eCBidWcqLyArIFwicHhcIiwgd2VpZ2h0OiBcIm5vcm1hbFwiIH07XHJcbiAgICAgICAgICAgIGlmIChpdGFsaWMpXHJcbiAgICAgICAgICAgICAgICBmb250LnN0eWxlID0gXCJpdGFsaWNcIjtcclxuICAgICAgICAgICAgdCA9IHN1cmZhY2UuY3JlYXRlVGV4dCh7IHg6IHAueCwgeTogcC55ICsgZm9udHNpemUgKyAyLCB0ZXh0OiBzLCBhbGlnbjogYWxpZ24gfSlcclxuICAgICAgICAgICAgICAgIC5zZXRGb250KGZvbnQpXHJcbiAgICAgICAgICAgICAgICAuc2V0RmlsbChmb250Y29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFsaWduID09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICB2YXIgdyA9IHQuZ2V0VGV4dFdpZHRoKCk7XHJcbiAgICAgICAgICAgIHQuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgtdywgMCldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRleHRXaWR0aDogZnVuY3Rpb24gKHN1cmZhY2UsIHMpIHtcclxuICAgICAgICB2YXIgY3R4ID0gc3VyZmFjZS5zdXJmYWNlLnJhd05vZGUuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBzLmZpbGxTdHlsZTtcclxuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzLmZpbGxTdHlsZTtcclxuICAgICAgICBjdHguZm9udCA9IHMuZm9udFN0eWxlO1xyXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSBcImNlbnRlclwiO1xyXG4gICAgICAgIC8vY3R4LnRleHRCYXNlbGluZSA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gY3R4Lm1lYXN1cmVUZXh0KHMudGV4dCkud2lkdGggLyA2O1xyXG4gICAgICAgIGN0eC5yZXN0b3JlKCk7XHJcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3QmFzaXM6IGZ1bmN0aW9uIChzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpIHtcclxuICAgICAgICB0aGlzLmRyYXdMaW5lKHN1cmZhY2UsIHAxLCBwMiwgY29sb3IsIGxpbmV3aWR0aCk7XHJcblxyXG4gICAgICAgIHZhciBkID0gbmV3IEpTRHJhdzIuUG9pbnQocDIueCAtIHAxLngsIHAyLnkgLSBwMS55KS5zY2FsZSgxLjAgLyA2LjApO1xyXG4gICAgICAgIHZhciBwID0gcDEuY2xvbmUoKS5vZmZzZXQoLWQueCAqIDAuNSwgLWQueSAqIDAuNSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpIHtcclxuICAgICAgICAgICAgcC5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICAgICAgICB2YXIgdCA9IHAuY2xvbmUoKS5vZmZzZXQoZC54ICogMS4yNSwgZC55ICogMS4yNSk7XHJcbiAgICAgICAgICAgIHQucm90YXRlQXJvdW5kKHAsIC00NSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRyYXdMaW5lKHN1cmZhY2UsIHAsIHQsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0N1cnZlczogZnVuY3Rpb24gKHN1cmZhY2UsIHAxLCBwMiwgY29sb3IsIGxpbmV3aWR0aCkge1xyXG4gICAgICAgIHZhciBwYXRoID0gc3VyZmFjZS5jcmVhdGVQYXRoKCk7XHJcbiAgICAgICAgcGF0aC5tb3ZlVG8ocDEueCwgcDEueSk7XHJcblxyXG4gICAgICAgIHZhciBsZW4gPSBwMS5kaXN0VG8ocDIpO1xyXG4gICAgICAgIHZhciBuID0gTWF0aC5mbG9vcihsZW4gLyBsaW5ld2lkdGgpO1xyXG4gICAgICAgIHZhciBkID0gbmV3IEpTRHJhdzIuUG9pbnQocDIueCAtIHAxLngsIHAyLnkgLSBwMS55KS5zY2FsZSgxLjAgLyBuKTtcclxuICAgICAgICB2YXIgdiA9IG5ldyBKU0RyYXcyLlBvaW50KHAyLnggLSBwMS54LCBwMi55IC0gcDEueSkucm90YXRlKDkwKS5zZXRMZW5ndGgobGluZXdpZHRoICogMik7XHJcbiAgICAgICAgZm9yICh2YXIgayA9IDE7IGsgPD0gbjsgayArPSAyKSB7XHJcbiAgICAgICAgICAgIHZhciBwID0gcDEuY2xvbmUoKS5vZmZzZXQoZC54ICogaywgZC55ICogayk7XHJcbiAgICAgICAgICAgIHZhciB0MSA9IHAuY2xvbmUoKS5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICAgICAgICBpZiAoKChrIC0gMSkgLyAyKSAlIDIgPT0gMSlcclxuICAgICAgICAgICAgICAgIHAub2Zmc2V0KHYueCwgdi55KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcC5vZmZzZXQoLXYueCwgLXYueSk7XHJcbiAgICAgICAgICAgIHBhdGgucUN1cnZlVG8ocC54LCBwLnksIHQxLngsIHQxLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXRoLnNldFN0cm9rZSh7IGNvbG9yOiBjb2xvciwgd2lkdGg6IGxpbmV3aWR0aCB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0xpbmU6IGZ1bmN0aW9uIChzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgsIGRvdGxpbmUsIGNhcCkge1xyXG4gICAgICAgIGlmIChsaW5ld2lkdGggPT0gbnVsbClcclxuICAgICAgICAgICAgbGluZXdpZHRoID0gMTtcclxuXHJcbiAgICAgICAgaWYgKGRvdGxpbmUgPT0gbnVsbCB8fCBkb3RsaW5lIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1cmZhY2UuY3JlYXRlTGluZSh7IHgxOiBwMS54LCB5MTogcDEueSwgeDI6IHAyLngsIHkyOiBwMi55IH0pXHJcbiAgICAgICAgICAgICAgICAuc2V0U3Ryb2tlKHsgY29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoLCBjYXA6IGNhcCA9PSBudWxsID8gXCJyb3VuZFwiIDogY2FwIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIGxlbiA9IHAxLmRpc3RUbyhwMik7XHJcbiAgICAgICAgICAgIHZhciBuID0gTWF0aC5mbG9vcihsZW4gLyBkb3RsaW5lKTtcclxuICAgICAgICAgICAgaWYgKG4gJSAyID09IDApXHJcbiAgICAgICAgICAgICAgICAtLW47XHJcblxyXG4gICAgICAgICAgICB2YXIgZCA9IHAyLmNsb25lKCkub2Zmc2V0KC1wMS54LCAtcDEueSkuc2NhbGUoMS4wIC8gbik7XHJcbiAgICAgICAgICAgIHZhciBkMiA9IGQuY2xvbmUoKS5zY2FsZSgwLjMpO1xyXG4gICAgICAgICAgICB2YXIgc3QgPSBuZXcgSlNEcmF3Mi5Qb2ludCgoKHAyLnggLSBwMS54KSAtIGQueCAqIG4pIC8gMiwgKChwMi55IC0gcDEueSkgLSBkLnkgKiBuKSAvIDIpO1xyXG5cclxuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrICs9IDIpIHtcclxuICAgICAgICAgICAgICAgIHZhciB0MSA9IHAxLmNsb25lKCkub2Zmc2V0KHN0LnggKyBkLnggKiBrICsgZDIueCwgc3QueSArIGQueSAqIGsgKyBkMi55KTtcclxuICAgICAgICAgICAgICAgIHZhciB0MiA9IHQxLmNsb25lKCkub2Zmc2V0KGQueCAtIGQyLngsIGQueSAtIGQyLnkpO1xyXG4gICAgICAgICAgICAgICAgc3VyZmFjZS5jcmVhdGVMaW5lKHsgeDE6IHQxLngsIHkxOiB0MS55LCB4MjogdDIueCwgeTI6IHQyLnkgfSlcclxuICAgICAgICAgICAgICAgICAgICAuc2V0U3Ryb2tlKHsgY29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoLCBjYXA6IGNhcCA9PSBudWxsID8gXCJyb3VuZFwiIDogY2FwIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3UmVjdDogZnVuY3Rpb24gKHN1cmZhY2UsIHIsIGNvbG9yLCBsaW5ld2lkdGgsIHJhZGl1cywgc3R5bGUpIHtcclxuICAgICAgICBpZiAociA9PSBudWxsIHx8IHIuaXNFbXB0eSgpKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdmFyIG9wdHMgPSB7IHg6IHIubGVmdCwgeTogci50b3AsIHdpZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0IH07XHJcbiAgICAgICAgaWYgKHJhZGl1cyAhPSBudWxsKVxyXG4gICAgICAgICAgICBvcHRzLnIgPSByYWRpdXM7XHJcbiAgICAgICAgaWYgKHN0eWxlICE9IG51bGwpXHJcbiAgICAgICAgICAgIG9wdHMuc3R5bGUgPSBzdHlsZTtcclxuICAgICAgICByZXR1cm4gc3VyZmFjZS5jcmVhdGVSZWN0KG9wdHMpLnNldFN0cm9rZSh7IGNvbG9yOiBjb2xvciwgd2lkdGg6IGxpbmV3aWR0aCB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0RTaGFwZTogZnVuY3Rpb24gKHN1cmZhY2UsIHIsIGNvbG9yLCBsaW5ld2lkdGgsIHJldmVyc2UpIHtcclxuICAgICAgICB2YXIgcmFkID0gci5oZWlnaHQgLyAyO1xyXG4gICAgICAgIHZhciB4ID0gci5yaWdodCgpIC0gcmFkO1xyXG4gICAgICAgIHZhciB5ID0gci5jZW50ZXIoKS55O1xyXG4gICAgICAgIHZhciBwYXRoID0gc3VyZmFjZS5jcmVhdGVQYXRoKClcclxuICAgICAgICAgICAubW92ZVRvKHsgeDogeCwgeTogci50b3AgfSlcclxuICAgICAgICAgICAuYXJjVG8ocmFkLCByYWQsIDAsIGZhbHNlLCB0cnVlLCB0aGlzLl9jYWxjUG9pbnQoeCwgeSwgcmFkLCAxODAgLyAyKSlcclxuICAgICAgICAgICAuYXJjVG8ocmFkLCByYWQsIDAsIGZhbHNlLCB0cnVlLCB0aGlzLl9jYWxjUG9pbnQoeCwgeSwgcmFkLCAxODApKVxyXG4gICAgICAgICAgICAubGluZVRvKHsgeDogci5sZWZ0LCB5OiByLmJvdHRvbSgpIH0pXHJcbiAgICAgICAgICAgIC5saW5lVG8oeyB4OiByLmxlZnQsIHk6IHIudG9wIH0pXHJcbiAgICAgICAgICAgIC5saW5lVG8oeyB4OiB4LCB5OiByLnRvcCB9KVxyXG4gICAgICAgICAgIC5jbG9zZVBhdGgoKVxyXG4gICAgICAgICAgIC5zZXRTdHJva2UoeyBjb2xvcjogY29sb3IsIHdpZHRoOiBsaW5ld2lkdGggfSk7XHJcblxyXG4gICAgICAgIGlmIChyZXZlcnNlKVxyXG4gICAgICAgICAgICBwYXRoLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC5yb3RhdGVBdChNYXRoLlBJLCByLmNlbnRlcigpLngsIHkpXSk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICB9LFxyXG5cclxuICAgIF9jYWxjUG9pbnQ6IGZ1bmN0aW9uICh4LCB5LCByYWQsIGRlZykge1xyXG4gICAgICAgIGRlZyA9IChNYXRoLlBJIC8gMTgwKSAqICgzNjAgLSBkZWcpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHg6IE1hdGgucm91bmQoKHJhZCAqIC1NYXRoLnNpbihkZWcpKSArIHgpLCB5OiBNYXRoLnJvdW5kKHkgLSAocmFkICogTWF0aC5jb3MoZGVnKSkpXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd0VsbGlwc2U6IGZ1bmN0aW9uIChzdXJmYWNlLCByLCBjb2xvciwgbGluZXdpZHRoKSB7XHJcbiAgICAgICAgdmFyIGMgPSByLmNlbnRlcigpO1xyXG4gICAgICAgIHJldHVybiBzdXJmYWNlLmNyZWF0ZUVsbGlwc2UoeyBjeDogYy54LCBjeTogYy55LCByeDogci53aWR0aCAvIDIsIHJ5OiByLmhlaWdodCAvIDIgfSkuc2V0U3Ryb2tlKHsgY29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3UGllOiBmdW5jdGlvbiAoc3VyZmFjZSwgeCwgeSwgciwgZGVnMSwgZGVnMikge1xyXG4gICAgICAgIHZhciBjYWxjUG9pbnQgPSBmdW5jdGlvbiAoZGVnLCByYWQpIHtcclxuICAgICAgICAgICAgZGVnID0gKE1hdGguUEkgLyAxODApICogKDM2MCAtIGRlZyk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHg6IE1hdGgucm91bmQoKHIgKiAtTWF0aC5zaW4oZGVnKSkgKyB4KSwgeTogTWF0aC5yb3VuZCh5IC0gKHIgKiBNYXRoLmNvcyhkZWcpKSlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBzdXJmYWNlLmNyZWF0ZVBhdGgoKVxyXG4gICAgICAgICAgIC5tb3ZlVG8oeyB4OiB4LCB5OiB5IH0pXHJcbiAgICAgICAgICAgLmxpbmVUbyhjYWxjUG9pbnQoZGVnMSkpXHJcbiAgICAgICAgICAgLmFyY1RvKHIsIHIsIDAsIGZhbHNlLCB0cnVlLCBjYWxjUG9pbnQoZGVnMiAvIDIpKVxyXG4gICAgICAgICAgIC5hcmNUbyhyLCByLCAwLCBmYWxzZSwgdHJ1ZSwgY2FsY1BvaW50KGRlZzIpKVxyXG4gICAgICAgICAgIC5saW5lVG8oeyB4OiB4LCB5OiB5IH0pXHJcbiAgICAgICAgICAgLmNsb3NlUGF0aCgpXHJcbiAgICAgICAgICAgLnNldEZpbGwoXCIjNTM1MzUzXCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3RGlhbW9uZDogZnVuY3Rpb24gKHN1cmZhY2UsIHIsIGNvbG9yLCBsaW5ld2lkdGgpIHtcclxuICAgICAgICB2YXIgYyA9IHIuY2VudGVyKCk7XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IFtcclxuICAgICAgICAgICAgeyB4OiBjLngsIHk6IHIudG9wIH0sXHJcbiAgICAgICAgICAgIHsgeDogci5yaWdodCgpLCB5OiBjLnkgfSxcclxuICAgICAgICAgICAgeyB4OiBjLngsIHk6IHIuYm90dG9tKCkgfSxcclxuICAgICAgICAgICAgeyB4OiByLmxlZnQsIHk6IGMueSB9LFxyXG4gICAgICAgICAgICB7IHg6IGMueCwgeTogci50b3AgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIHN1cmZhY2UuY3JlYXRlUG9seWxpbmUocG9pbnRzKS5zZXRTdHJva2UoeyBjb2xvcjogY29sb3IsIHdpZHRoOiBsaW5ld2lkdGggfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXdIZXhnb246IGZ1bmN0aW9uIChzdXJmYWNlLCByLCBjb2xvciwgbGluZXdpZHRoKSB7XHJcbiAgICAgICAgdmFyIGMgPSByLmNlbnRlcigpO1xyXG4gICAgICAgIHZhciBkID0gbmV3IEpTRHJhdzIuUG9pbnQoMCwgci53aWR0aCAvIDIpO1xyXG4gICAgICAgIGQucm90YXRlKC0zMCk7XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IFtcclxuICAgICAgICAgICAgeyB4OiByLnJpZ2h0KCksIHk6IGMueSB9LFxyXG4gICAgICAgICAgICB7IHg6IGMueCArIGQueCwgeTogYy55IC0gZC55IH0sXHJcbiAgICAgICAgICAgIHsgeDogYy54IC0gZC54LCB5OiBjLnkgLSBkLnkgfSxcclxuICAgICAgICAgICAgeyB4OiByLmxlZnQsIHk6IGMueSB9LFxyXG4gICAgICAgICAgICB7IHg6IGMueCAtIGQueCwgeTogYy55ICsgZC55IH0sXHJcbiAgICAgICAgICAgIHsgeDogYy54ICsgZC54LCB5OiBjLnkgKyBkLnkgfSxcclxuICAgICAgICAgICAgeyB4OiByLnJpZ2h0KCksIHk6IGMueSB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gc3VyZmFjZS5jcmVhdGVQb2x5bGluZShwb2ludHMpLnNldFN0cm9rZSh7IGNvbG9yOiBjb2xvciwgd2lkdGg6IGxpbmV3aWR0aCB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhd1BlbnRhZ29uOiBmdW5jdGlvbiAoc3VyZmFjZSwgciwgY29sb3IsIGxpbmV3aWR0aCkge1xyXG4gICAgICAgIHZhciBjID0gci5jZW50ZXIoKTtcclxuICAgICAgICB2YXIgcDEgPSBjLmNsb25lKCkub2Zmc2V0KDAsIC1yLndpZHRoIC8gMik7XHJcbiAgICAgICAgdmFyIHAyID0gcDEuY2xvbmUoKS5yb3RhdGVBcm91bmQoYywgNzIpO1xyXG4gICAgICAgIHZhciBwMyA9IHAyLmNsb25lKCkucm90YXRlQXJvdW5kKGMsIDcyKTtcclxuICAgICAgICB2YXIgcDQgPSBwMy5jbG9uZSgpLnJvdGF0ZUFyb3VuZChjLCA3Mik7XHJcbiAgICAgICAgdmFyIHA1ID0gcDQuY2xvbmUoKS5yb3RhdGVBcm91bmQoYywgNzIpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBwb2ludHMgPSBbXHJcbiAgICAgICAgICAgIHsgeDogcDEueCwgeTogcDEueSB9LFxyXG4gICAgICAgICAgICB7IHg6IHAyLngsIHk6IHAyLnkgfSxcclxuICAgICAgICAgICAgeyB4OiBwMy54LCB5OiBwMy55IH0sXHJcbiAgICAgICAgICAgIHsgeDogcDQueCwgeTogcDQueSB9LFxyXG4gICAgICAgICAgICB7IHg6IHA1LngsIHk6IHA1LnkgfSxcclxuICAgICAgICAgICAgeyB4OiBwMS54LCB5OiBwMS55IH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gc3VyZmFjZS5jcmVhdGVQb2x5bGluZShwb2ludHMpLnNldFN0cm9rZSh7IGNvbG9yOiBjb2xvciwgd2lkdGg6IGxpbmV3aWR0aCB9KTtcclxuICAgIH1cclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5KU0RyYXcyLkZvcm11bGFQYXJzZXIgPSB7XHJcbiAgICBwYXJzZTogZnVuY3Rpb24gKHMsIG9ycGhhbiwgYm9uZHMpIHtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHNhbHQgPSBudWxsO1xyXG4gICAgICAgIHZhciBwID0gcy5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgaWYgKHAgPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gLS1DT09ILjJIQ2xcclxuICAgICAgICAgICAgc2FsdCA9IHMuc3Vic3RyKHAgKyAxKTtcclxuICAgICAgICAgICAgcyA9IHMuc3Vic3RyKDAsIHApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG0gPSB0aGlzLl9wYXJzZShzLCBvcnBoYW4sIGJvbmRzKTtcclxuICAgICAgICBpZiAobSA9PSBudWxsICYmIG9ycGhhbilcclxuICAgICAgICAgICAgbSA9IHRoaXMucGFyZUZvcm11bGFBc1NhbHQocyk7XHJcblxyXG4gICAgICAgIGlmIChtID09IG51bGwgfHwgbS5hdG9tcy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHNhbHQpKSB7XHJcbiAgICAgICAgICAgIHZhciBtMiA9IHRoaXMucGFyZUZvcm11bGFBc1NhbHQoc2FsdCk7XHJcbiAgICAgICAgICAgIGlmIChtMiA9PSBudWxsIHx8IG0yLmF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgICAgICB2YXIgYTEgPSBtLmF0b21zW20uYXRvbXMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIHZhciBhMiA9IG0yLmF0b21zWzBdO1xyXG4gICAgICAgICAgICBtLm1lcmdlTW9sKG0yKTtcclxuICAgICAgICAgICAgdmFyIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGExLCBhMik7XHJcbiAgICAgICAgICAgIGIudHlwZSA9IEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZO1xyXG4gICAgICAgICAgICBtLmFkZEJvbmQoYik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBKU0RyYXcyLlN1cGVyQXRvbXMubm9ybWFsaXplKG0pO1xyXG4gICAgICAgIHJldHVybiBtO1xyXG4gICAgfSxcclxuXHJcbiAgICBwYXJlRm9ybXVsYUFzU2FsdDogZnVuY3Rpb24gKHNhbHQpIHtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHNhbHQpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGNvZWYgPSAxO1xyXG4gICAgICAgIHZhciBzMiA9IHNhbHQucmVwbGFjZSgvXlswLTldKy8sIFwiXCIpO1xyXG4gICAgICAgIGlmIChzMi5sZW5ndGggPCBzYWx0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb2VmID0gcGFyc2VJbnQoc2FsdC5zdWJzdHIoMCwgc2FsdC5sZW5ndGggLSBzMi5sZW5ndGgpKTtcclxuICAgICAgICAgICAgc2FsdCA9IHMyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29lZiA8IDEpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICAvLyAtLUNPT0guTkg0K1xyXG4gICAgICAgIHZhciBtID0gbnVsbDtcclxuICAgICAgICB2YXIgc2FsdDIgPSBzYWx0LnJlcGxhY2UoL1srfC1dWzEtOV0/JC8sIFwiXCIpO1xyXG4gICAgICAgIHZhciBjaGFyZ2UgPSB0aGlzLnBhcnNlQ2hhcmdlKHNhbHQuc3Vic3RyKHNhbHQyLmxlbmd0aCkpO1xyXG4gICAgICAgIHNhbHQgPSBzYWx0MjtcclxuXHJcbiAgICAgICAgLy8gc3RyaXAgSCdzXHJcbiAgICAgICAgdmFyIGVsZW0gPSBzYWx0LnJlcGxhY2UoL1tIXVswLTldezAsMTB9L2csIFwiXCIpO1xyXG4gICAgICAgIG0gPSB0aGlzLm1vbEZyb21BdG9tKGVsZW0sIGZhbHNlLCBjaGFyZ2UpO1xyXG4gICAgICAgIGlmIChtID09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHMyID0gc2FsdC5yZXBsYWNlKC9eW0EtWl1bYS16XT8vLCBcIlwiKTtcclxuICAgICAgICAgICAgaWYgKHMyLmxlbmd0aCA8IHNhbHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtID0gc2FsdC5zdWJzdHIoMCwgc2FsdC5sZW5ndGggLSBzMi5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgbSA9IHRoaXMuX3BhcnNlKHMyKTtcclxuICAgICAgICAgICAgICAgIGlmIChtID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXR0cyA9IEpTRHJhdzIuU3VwZXJBdG9tcy5fZ2V0QXR0YWNoQXRvbXMobSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cyA9PSBudWxsIHx8IGF0dHMubGVuZ3RoICE9IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB2YXIgYTEgPSBhdHRzWzBdLmE7XHJcbiAgICAgICAgICAgICAgICBhMS5hdHRhY2hwb2ludHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtICE9IFwiSFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEyID0gbmV3IEpTRHJhdzIuQXRvbShhdHRzWzBdLmEucC5jbG9uZSgpLCBlbGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTEsIGEyKTtcclxuICAgICAgICAgICAgICAgICAgICBtLmFkZEF0b20oYTIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG0uYWRkQm9uZChiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG0gPT0gbnVsbCB8fCBtLmF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIG0wID0gbS5jbG9uZSgpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY29lZjsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBhMSA9IG0uYXRvbXNbbS5hdG9tcy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgdmFyIG0zID0gbTAuY2xvbmUoKTtcclxuICAgICAgICAgICAgdmFyIGEyID0gbTMuYXRvbXNbMF07XHJcbiAgICAgICAgICAgIG0ubWVyZ2VNb2wobTMpO1xyXG4gICAgICAgICAgICB2YXIgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTEsIGEyKTtcclxuICAgICAgICAgICAgYi50eXBlID0gSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVk7XHJcbiAgICAgICAgICAgIG0uYWRkQm9uZChiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtO1xyXG4gICAgfSxcclxuXHJcbiAgICBwYXJzZVNhbHQ6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciBjYXBzID0gczsgLy8gcy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIHZhciBzYWx0cyA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2FsdHMgfHwgSlNEcmF3Mi5zYWx0cztcclxuICAgICAgICBpZiAoc2FsdHMgIT0gbnVsbCAmJiBzYWx0c1tjYXBzXSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChzYWx0c1tjYXBzXSA9PSBcIlwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY29lZjogMSwgbWY6IG51bGwsIG13OiAwLCBzOiBzIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgczIgPSBcIlwiO1xyXG4gICAgICAgIGlmICghSlNEcmF3Mi5Gb3JtdWxhUGFyc2VyLmlnbm9yZXNhbHRjb2VmKSB7XHJcbiAgICAgICAgICAgIHZhciBwYXR0ID0gL15bMC05XXswLDEwfVtcXC5dP1swLTldezAsOX1bIF0/LztcclxuICAgICAgICAgICAgdmFyIHMyID0gcGF0dC5leGVjKHMpICsgXCJcIjtcclxuICAgICAgICAgICAgaWYgKHMyLmxlbmd0aCA9PSBzLmxlbmd0aClcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGNvZWYgPSAxLjA7XHJcbiAgICAgICAgaWYgKHMyICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgY29lZiA9IHBhcnNlRmxvYXQoczIpO1xyXG4gICAgICAgICAgICBpZiAoaXNOYU4oY29lZikpXHJcbiAgICAgICAgICAgICAgICBjb2VmID0gMS4wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gcy5zdWJzdHIoczIubGVuZ3RoKTtcclxuICAgICAgICBjYXBzID0gczsgLy8gcy50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgICB2YXIgbWYgPSBudWxsO1xyXG4gICAgICAgIHZhciBtdyA9IG51bGw7XHJcbiAgICAgICAgdmFyIHNhbHRzID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5zYWx0cyB8fCBKU0RyYXcyLnNhbHRzO1xyXG4gICAgICAgIGlmIChzYWx0cyAhPSBudWxsICYmIHNhbHRzW2NhcHNdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgbWYgPSBzYWx0c1tjYXBzXTtcclxuICAgICAgICAgICAgbXcgPSB0aGlzLm1mMm13KG1mLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG1mID0gcztcclxuICAgICAgICAgICAgbXcgPSB0aGlzLm1mMm13KG1mLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG13ID09IG51bGwgfHwgbXcgPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGNvZWY6IGNvZWYsIG1mOiBjb2VmID09IDEgPyBtZiA6IGNvZWYgKyBcIihcIiArIG1mICsgXCIpXCIsIG13OiBNYXRoLnJvdW5kKG13ICogKGNvZWYgPiAwID8gY29lZiA6IDEpICogMTAwMCkgLyAxMDAwLCBzOiBjb2VmID09IDEgPyBzIDogY29lZiArIHMsIHN0YXRzOiB0aGlzLm1mMlN0YXRzKG1mLCB0cnVlKSB9O1xyXG4gICAgfSxcclxuXHJcbiAgICBwYXJzZUNoYXJnZTogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICBpZiAocyA9PSBcIitcIiB8fCBzID09IFwiKytcIiB8fCBzID09IFwiKysrXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBzLmxlbmd0aDtcclxuICAgICAgICBlbHNlIGlmIChzID09IFwiLVwiIHx8IHMgPT0gXCItLVwiIHx8IHMgPT0gXCItLS1cIilcclxuICAgICAgICAgICAgcmV0dXJuIC1zLmxlbmd0aDtcclxuXHJcbiAgICAgICAgaWYgKHMubGVuZ3RoID4gMSAmJiAocy5zdWJzdHIocy5sZW5ndGggLSAxKSA9PSAnKycgfHwgcy5zdWJzdHIocy5sZW5ndGggLSAxKSA9PSAnLScpKVxyXG4gICAgICAgICAgICBzID0gcy5zdWJzdHIocy5sZW5ndGggLSAxKSArIHMuc3Vic3RyKDAsIHMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzdHJpcEhzOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmIChzID09IG51bGwgfHwgcy5sZW5ndGggPD0gMSlcclxuICAgICAgICAgICAgcmV0dXJuIHM7XHJcbiAgICAgICAgdmFyIHMyID0gcy5yZXBsYWNlKC9bK3wtXVsxLTldPyQvLCBcIlwiKTtcclxuICAgICAgICB2YXIgY2hhcmdlID0gcy5zdWJzdHIoczIubGVuZ3RoKTtcclxuICAgICAgICBpZiAoL15bQS1aXVthLXpdP1tIXVswLTldezAsMn0kLy50ZXN0KHMyKSkge1xyXG4gICAgICAgICAgICB2YXIgZWxlbSA9IC9eW0Etel1bYS16XT8vLmV4ZWMocyk7XHJcbiAgICAgICAgICAgIHZhciBlID0gSlNEcmF3Mi5QVFtlbGVtXTtcclxuICAgICAgICAgICAgaWYgKGUgIT0gbnVsbCAmJiBlLm0gIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtICsgY2hhcmdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgvXltIXVswLTldezAsMn1bQS1aXVthLXpdPyQvLnRlc3QoczIpKSB7XHJcbiAgICAgICAgICAgIHZhciBlbGVtID0gL1tBLXpdW2Etel0/JC8uZXhlYyhzKTtcclxuICAgICAgICAgICAgdmFyIGUgPSBKU0RyYXcyLlBUW2VsZW1dO1xyXG4gICAgICAgICAgICBpZiAoZSAhPSBudWxsICYmIGUubSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0gKyBjaGFyZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzO1xyXG4gICAgfSxcclxuXHJcbiAgICBtZXJnZVN0YXRzOiBmdW5jdGlvbiAoZGVzdCwgZnJvbSwgY29lZikge1xyXG4gICAgICAgIGlmIChkZXN0ID09IG51bGwpXHJcbiAgICAgICAgICAgIGRlc3QgPSB7IGVsZW1lbnRzOiB7fSwgY2hhcmdlczogMCwgaXNvdG9wZXM6IHt9IH07XHJcblxyXG4gICAgICAgIGlmIChmcm9tICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGNvZWYgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNvZWYgPSAxO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBlIGluIGZyb20uZWxlbWVudHMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkZXN0LmVsZW1lbnRzW2VdID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzdC5lbGVtZW50c1tlXSA9IGZyb20uZWxlbWVudHNbZV0gKiBjb2VmO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGRlc3QuZWxlbWVudHNbZV0gKz0gZnJvbS5lbGVtZW50c1tlXSAqIGNvZWY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yICh2YXIgZSBpbiBmcm9tLmlzb3RvcGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVzdC5pc290b3Blc1tlXSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIGRlc3QuaXNvdG9wZXNbZV0gPSB7fTtcclxuICAgICAgICAgICAgICAgIHZhciBpc28gPSBkZXN0Lmlzb3RvcGVzW2VdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlzbzIgPSBmcm9tLmlzb3RvcGVzW2VdO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBpc28yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzb1tpXSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc29baV0gPSBpc28yW2ldICogY29lZjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzb1tpXSArPSBpc28yW2ldICogY29lZjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGZyb20uY2hhcmdlcyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgZGVzdC5jaGFyZ2VzICs9IGZyb20uY2hhcmdlcyAqIGNvZWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVzdDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0QXRvbVN0YXRzOiBmdW5jdGlvbiAobW9sKSB7XHJcbiAgICAgICAgaWYgKG1vbCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IHsgZWxlbWVudHM6IHt9LCBjaGFyZ2VzOiAwLCBpc290b3Blczoge30sIGJpb3M6IFtdIH07XHJcblxyXG4gICAgICAgIHZhciBocyA9IDA7XHJcbiAgICAgICAgdmFyIG11bHRpY2VudGVySHMgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW9sLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gbW9sLmF0b21zW2ldO1xyXG4gICAgICAgICAgICBpZiAoYS5lbGVtID09IFwiNSdcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5lbGVtZW50c1tcIkhcIl0gPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICByZXQuZWxlbWVudHNbXCJIXCJdID0gMTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICArK3JldC5lbGVtZW50c1tcIkhcIl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYS5lbGVtID09IFwiMydcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5lbGVtZW50c1tcIkhcIl0gPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICByZXQuZWxlbWVudHNbXCJIXCJdID0gMTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICArK3JldC5lbGVtZW50c1tcIkhcIl07XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0LmVsZW1lbnRzW1wiT1wiXSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5lbGVtZW50c1tcIk9cIl0gPSAxO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICsrcmV0LmVsZW1lbnRzW1wiT1wiXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChhLmJpbyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGEuYmlvLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEpTRHJhdzIuQklPLkFOVElCT0RZOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSlNEcmF3Mi5CSU8uUFJPVEVJTjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEpTRHJhdzIuQklPLkdFTkU6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBKU0RyYXcyLkJJTy5ETkE6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBKU0RyYXcyLkJJTy5STkE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZSA9IG5ldyBKU0RyYXcyLlNlcXVlbmNlRWRpdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlLnNldFhtbChhLmJpby5zZXF1ZW5jZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXQuYmlvcy5wdXNoKHsgbXc6IHNlLmdldE1vbFdlaWdodCgpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChhLmVsZW0gPT0gXCJAXCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gbW9sLmdldEFsbEJvbmRzKGEpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGR1bW15ID0gMDtcclxuICAgICAgICAgICAgICAgIHZhciBzdW0gPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsaXN0Lmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3Rba10udHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICArK2R1bW15O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGxpc3Rba10udmFsZW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsID4gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBNYXRoLmZsb29yKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGR1bW15ID4gMClcclxuICAgICAgICAgICAgICAgICAgICBtdWx0aWNlbnRlckhzICs9IHN1bTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChhLmVsZW0gPT0gXCIjXCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzYWx0ID0gdGhpcy5wYXJzZVNhbHQoYS5hbGlhcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2FsdCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVyZ2VTdGF0cyhyZXQsIHNhbHQuc3RhdHMsIHNhbHQuY29lZik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZSA9IGEuZWxlbTtcclxuICAgICAgICAgICAgICAgIGlmIChhLmlzb3RvcGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByZXQuaXNvdG9wZXNbZV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lmlzb3RvcGVzW2VdID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzbyA9IHJldC5pc290b3Blc1tlXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNvW2EuaXNvdG9wZV0gPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNvW2EuaXNvdG9wZV0gPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNvW2EuaXNvdG9wZV0gPSBpc29bYS5pc290b3BlXSArIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHJldC5lbGVtZW50c1tlXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXQuZWxlbWVudHNbZV0gPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmVsZW1lbnRzW2VdID0gbiArIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBocyArPSBhLmhjb3VudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXQuY2hhcmdlcyArPSBhLmNoYXJnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGhzIC09IG11bHRpY2VudGVySHM7XHJcbiAgICAgICAgaWYgKGhzID4gMCkge1xyXG4gICAgICAgICAgICBpZiAocmV0LmVsZW1lbnRzW1wiSFwiXSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0LmVsZW1lbnRzW1wiSFwiXSA9IGhzICsgcmV0LmVsZW1lbnRzW1wiSFwiXTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0LmVsZW1lbnRzW1wiSFwiXSA9IGhzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgc3RhdHMybXc6IGZ1bmN0aW9uIChzdGF0cykge1xyXG4gICAgICAgIGlmIChzdGF0cyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHN1bSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBzdGF0cy5lbGVtZW50cykge1xyXG4gICAgICAgICAgICBpZiAoayA9PSBcIkRcIilcclxuICAgICAgICAgICAgICAgIHN1bSArPSBKU0RyYXcyLlBUW1wiSFwiXS5pc29bMl0gKiBzdGF0cy5lbGVtZW50c1trXTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PSBcIlRcIilcclxuICAgICAgICAgICAgICAgIHN1bSArPSBKU0RyYXcyLlBUW1wiSFwiXS5pc29bM10gKiBzdGF0cy5lbGVtZW50c1trXTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZSA9IEpTRHJhdzIuUFRba107XHJcbiAgICAgICAgICAgICAgICBpZiAoZSA9PSBudWxsIHx8IGUubSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgLy9jb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIHN1bSArPSBlLm0gKiBzdGF0cy5lbGVtZW50c1trXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0YXRzLmJpb3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRzLmJpb3MubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gc3RhdHMuYmlvc1tpXS5tdztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN1bSArPSB0aGlzLl9pc290b3BlbWFzcyhzdGF0cy5pc290b3Blcyk7XHJcbiAgICAgICAgaWYgKHN1bSA+IDApXHJcbiAgICAgICAgICAgIHN1bSA9IHNjaWwuVXRpbHMucm91bmQoc3VtLCA0KTtcclxuICAgICAgICByZXR1cm4gc3VtO1xyXG4gICAgfSxcclxuXHJcbiAgICBzdGF0czJlbTogZnVuY3Rpb24gKHN0YXRzKSB7XHJcbiAgICAgICAgaWYgKHN0YXRzID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgc3VtID0gMDtcclxuICAgICAgICBmb3IgKHZhciBrIGluIHN0YXRzLmVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIHZhciBlID0gSlNEcmF3Mi5QVFtrXTtcclxuICAgICAgICAgICAgaWYgKGUgPT0gbnVsbCB8fCBlLmVtID09IG51bGwpXHJcbiAgICAgICAgICAgIC8vY29udGludWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgc3VtICs9IGUuZW0gKiBzdGF0cy5lbGVtZW50c1trXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN1bSArPSB0aGlzLl9pc290b3BlbWFzcyhzdGF0cy5pc290b3Blcyk7XHJcbiAgICAgICAgcmV0dXJuIHN1bTtcclxuICAgIH0sXHJcblxyXG4gICAgX2lzb3RvcGVtYXNzOiBmdW5jdGlvbiAoaXNvdG9wZXMyKSB7XHJcbiAgICAgICAgaWYgKGlzb3RvcGVzMiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuXHJcbiAgICAgICAgdmFyIHN1bSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBpc290b3BlczIpIHtcclxuICAgICAgICAgICAgdmFyIGUgPSBKU0RyYXcyLlBUW2tdO1xyXG4gICAgICAgICAgICBpZiAoZSA9PSBudWxsIHx8IGUubSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICB2YXIgaXNvdG9wZXMgPSBpc290b3BlczJba107XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gaXNvdG9wZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBtID0gZS5pc29baV07XHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gKG0gPT0gbnVsbCA/IGUubSA6IG0pICogaXNvdG9wZXNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN1bTtcclxuICAgIH0sXHJcblxyXG4gICAgc3RhdHMybWY6IGZ1bmN0aW9uIChzdGF0cywgaHRtbCkge1xyXG4gICAgICAgIGlmIChzdGF0cyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciBzID0gXCJcIjtcclxuICAgICAgICBpZiAoc3RhdHMuZWxlbWVudHNbXCJDXCJdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcyArPSBcIkNcIjtcclxuICAgICAgICAgICAgaWYgKHN0YXRzLmVsZW1lbnRzW1wiQ1wiXSA+IDEpXHJcbiAgICAgICAgICAgICAgICBzICs9IChodG1sID8gXCI8c3ViPlwiICsgc3RhdHMuZWxlbWVudHNbXCJDXCJdICsgXCI8L3N1Yj5cIiA6IHN0YXRzLmVsZW1lbnRzW1wiQ1wiXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0cy5lbGVtZW50c1tcIkhcIl0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzICs9IFwiSFwiO1xyXG4gICAgICAgICAgICBpZiAoc3RhdHMuZWxlbWVudHNbXCJIXCJdID4gMSlcclxuICAgICAgICAgICAgICAgIHMgKz0gKGh0bWwgPyBcIjxzdWI+XCIgKyBzdGF0cy5lbGVtZW50c1tcIkhcIl0gKyBcIjwvc3ViPlwiIDogc3RhdHMuZWxlbWVudHNbXCJIXCJdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAodmFyIGUgaW4gc3RhdHMuZWxlbWVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGUgIT0gXCJDXCIgJiYgZSAhPSAnSCcgJiYgZSAhPSAnUicpIHtcclxuICAgICAgICAgICAgICAgIHMgKz0gZTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0cy5lbGVtZW50c1tlXSA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSAoaHRtbCA/IFwiPHN1Yj5cIiArIHN0YXRzLmVsZW1lbnRzW2VdICsgXCI8L3N1Yj5cIiA6IHN0YXRzLmVsZW1lbnRzW2VdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICh2YXIgZSBpbiBzdGF0cy5pc290b3Blcykge1xyXG4gICAgICAgICAgICB2YXIgaXNvdG9wZXMgPSBzdGF0cy5pc290b3Blc1tlXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaXNvIGluIGlzb3RvcGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHRtbClcclxuICAgICAgICAgICAgICAgICAgICBzICs9IFwiPHN1cD5cIiArIGlzbyArIFwiPC9zdXA+XCIgKyBlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gXCJ7XCIgKyBpc28gKyBcIn1cIiArIGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNvdG9wZXNbaXNvXSA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgcyArPSAoaHRtbCA/IFwiPHN1Yj5cIiArIGlzb3RvcGVzW2lzb10gKyBcIjwvc3ViPlwiIDogaXNvdG9wZXNbaXNvXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciByID0gc3RhdHMuZWxlbWVudHNbJ1InXTtcclxuICAgICAgICBpZiAociA+IDApIHtcclxuICAgICAgICAgICAgcyArPSAnUic7XHJcbiAgICAgICAgICAgIGlmIChyID4gMSlcclxuICAgICAgICAgICAgICAgIHMgKz0gKGh0bWwgPyBcIjxzdWI+XCIgKyByICsgXCI8L3N1Yj5cIiA6IHIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0YXRzLmNoYXJnZXMgIT0gMCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IE1hdGguYWJzKHN0YXRzLmNoYXJnZXMpO1xyXG4gICAgICAgICAgICB2YXIgdCA9IChzdGF0cy5jaGFyZ2VzID4gMCA/IFwiK1wiIDogXCItXCIpICsgKGMgPiAxID8gYyA6ICcnKTtcclxuICAgICAgICAgICAgaWYgKGh0bWwpXHJcbiAgICAgICAgICAgICAgICBzICs9IFwiPHN1cD5cIiArIHQgKyBcIjwvc3VwPlwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzICs9IHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzO1xyXG4gICAgfSxcclxuXHJcbiAgICBtZjJtdzogZnVuY3Rpb24gKG1mLCBpc3NhbHQpIHtcclxuICAgICAgICB2YXIgc3RhdHMgPSB0aGlzLm1mMlN0YXRzKG1mLCBpc3NhbHQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRzMm13KHN0YXRzKTtcclxuICAgIH0sXHJcblxyXG4gICAgbm9ybU1GOiBmdW5jdGlvbiAobWYpIHtcclxuICAgICAgICB2YXIgc3RhdHMgPSB0aGlzLm1mMlN0YXRzKG1mKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0czJtZihzdGF0cyk7XHJcbiAgICB9LFxyXG5cclxuICAgIG1mMlN0YXRzOiBmdW5jdGlvbiAobWYsIGlzc2FsdCkge1xyXG4gICAgICAgIGlmIChtZiA9PSBudWxsIHx8IG1mID09IFwiXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgY2hhcmdlcyA9IDA7XHJcbiAgICAgICAgdmFyIG1mMiA9IG1mLnJlcGxhY2UoLygoWyt8LV1bMC05XXswLDJ9KXwoWyBdWzAtOV17MCwyfVsrfC1dKSkkLywgXCJcIik7XHJcbiAgICAgICAgaWYgKG1mMi5sZW5ndGggPCBtZi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY2hhcmdlcyA9IHRoaXMucGFyc2VDaGFyZ2UobWYuc3Vic3RyKG1mMi5sZW5ndGgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciByZXQgPSB0aGlzLm1mMlN0YXRzMihtZjIpO1xyXG4gICAgICAgIGlmIChyZXQgIT0gbnVsbCAmJiBjaGFyZ2VzICE9IDApIHtcclxuICAgICAgICAgICAgLy8gSSMxMDA0OVxyXG4gICAgICAgICAgICBpZiAoaXNzYWx0KVxyXG4gICAgICAgICAgICAgICAgY2hhcmdlcyA9IHRoaXMuY2FsY1NhbHRDaGFyZ2VzKHJldCwgY2hhcmdlcyk7XHJcblxyXG4gICAgICAgICAgICByZXQuY2hhcmdlcyArPSBjaGFyZ2VzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgY2FsY1NhbHRDaGFyZ2VzOiBmdW5jdGlvbiAocmV0LCBjaGFyZ2VzKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuY2FsY3NhbHRjaGFyZ2VzICE9IHRydWUpXHJcbiAgICAgICAgICAgIHJldHVybiBjaGFyZ2VzO1xyXG5cclxuICAgICAgICBpZiAoY2hhcmdlcyA+PSAxKSB7XHJcbiAgICAgICAgICAgIGlmIChjaGFyZ2VzID4gMSkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiByZXQuZWxlbWVudHMpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmVsZW1lbnRzW2tdIC89IGNoYXJnZXMgKiAxLjA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChyZXQuZWxlbWVudHNbXCJIXCJdID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXQuZWxlbWVudHNbXCJIXCJdID0gMDtcclxuICAgICAgICAgICAgLS1yZXQuZWxlbWVudHNbXCJIXCJdO1xyXG4gICAgICAgICAgICBjaGFyZ2VzID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjaGFyZ2VzO1xyXG4gICAgfSxcclxuXHJcbiAgICBtZjJTdGF0czI6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgdmFyIG0gPSBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0KHMpO1xyXG4gICAgICAgIGlmIChtICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEF0b21TdGF0cyhtKTtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IHsgZWxlbWVudHM6IHt9LCBjaGFyZ2VzOiAwIH07XHJcblxyXG4gICAgICAgIHZhciBudW1wYXQgPSAvXlswLTldKy87XHJcbiAgICAgICAgdmFyIHN1bSA9IDA7XHJcbiAgICAgICAgdmFyIHA7XHJcbiAgICAgICAgd2hpbGUgKChwID0gcy5pbmRleE9mKCcoJykpID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHAgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhdHMgPSB0aGlzLl9tZjJTdGF0cyhzLnN1YnN0cigwLCBwKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldCA9IHRoaXMubWVyZ2VTdGF0cyhyZXQsIHN0YXRzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcyA9IHMuc3Vic3RyKHApO1xyXG5cclxuICAgICAgICAgICAgdmFyIGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIG4gPSAwO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjID0gcy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT0gNDApIHsgLy8gKFxyXG4gICAgICAgICAgICAgICAgICAgICsrbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gNDEpIHsgLy8gKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJyYWNrZXQgPSBzLnN1YnN0cigxLCBpIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN1YnN0cihpICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdWIgPSBzLm1hdGNoKG51bXBhdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YiAhPSBudWxsICYmIHN1Yi5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3Vic3RyKHN1YlswXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHBhcnNlSW50KHN1YlswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0cyA9IHRoaXMubWYyU3RhdHMyKGJyYWNrZXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB0aGlzLm1lcmdlU3RhdHMocmV0LCBzdGF0cywgayk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAtLW47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWYpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBzdGF0cyA9IHRoaXMuX21mMlN0YXRzKHMpO1xyXG4gICAgICAgIGlmIChzdGF0cyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXQgPSB0aGlzLm1lcmdlU3RhdHMocmV0LCBzdGF0cyk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgX21mMlN0YXRzOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHZhciBwYXR0ID0gL15bQS1aXVthLXpdP1swLTldezAsOX0vO1xyXG4gICAgICAgIHZhciBwYXR0MiA9IC9eW0EtWl1bYS16XT8vO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0geyBlbGVtZW50czoge30sIGNoYXJnZXM6IDAgfTtcclxuICAgICAgICB3aGlsZSAocyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gcGF0dC5leGVjKHMpO1xyXG4gICAgICAgICAgICBpZiAoYyA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgICAgICB2YXIgczIgPSBjWzBdO1xyXG4gICAgICAgICAgICBpZiAoczIgPT0gXCJcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICAgICAgdmFyIHN5bWIgPSBwYXR0Mi5leGVjKHMyKVswXTtcclxuICAgICAgICAgICAgdmFyIGUgPSBKU0RyYXcyLlBUW3N5bWIgPT0gXCJEXCIgfHwgc3ltYiA9PSBcIlRcIiA/IFwiSFwiIDogc3ltYl07XHJcbiAgICAgICAgICAgIHZhciBuID0gc3ltYi5sZW5ndGggPT0gczIubGVuZ3RoID8gMSA6IHBhcnNlSW50KHMyLnN1YnN0cihzeW1iLmxlbmd0aCkpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHN0YXRzID0geyBlbGVtZW50czoge30sIGNoYXJnZXM6IDAgfTtcclxuICAgICAgICAgICAgaWYgKGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG0gPSBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0KHN5bWIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG0gPT0gbnVsbCB8fCAhKG0ubXcgPiAwKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIHN0YXRzID0gdGhpcy5nZXRBdG9tU3RhdHMobSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShlLm0gPiBudWxsKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBzdGF0cy5lbGVtZW50c1tzeW1iXSA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0ID0gdGhpcy5tZXJnZVN0YXRzKHJldCwgc3RhdHMsIG4pO1xyXG4gICAgICAgICAgICBzID0gcy5zdWJzdHIoczIubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgbW9sRnJvbUF0b206IGZ1bmN0aW9uIChlbGVtLCBhZGRBdHRhY2hQb2ludCwgY2hhcmdlKSB7XHJcbiAgICAgICAgdmFyIHMyID0gZWxlbS5yZXBsYWNlKC9bK3wtXVsxLTldPyQvLCBcIlwiKTtcclxuICAgICAgICBpZiAoczIubGVuZ3RoIDwgZWxlbS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY2hhcmdlID0gdGhpcy5wYXJzZUNoYXJnZShlbGVtLnN1YnN0cihzMi5sZW5ndGgpKTtcclxuICAgICAgICAgICAgZWxlbSA9IHMyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGUgPSBKU0RyYXcyLlBUW2VsZW1dO1xyXG4gICAgICAgIGlmIChlICE9IG51bGwgJiYgZS5hID4gMCkge1xyXG4gICAgICAgICAgICBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICAgICAgICAgIHZhciBhID0gbmV3IEpTRHJhdzIuQXRvbShuZXcgSlNEcmF3Mi5Qb2ludCgwLCAwKSwgZWxlbSk7XHJcbiAgICAgICAgICAgIGlmIChjaGFyZ2UgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGEuY2hhcmdlID0gY2hhcmdlO1xyXG4gICAgICAgICAgICBtLmFkZEF0b20oYSk7XHJcbiAgICAgICAgICAgIGlmIChhZGRBdHRhY2hQb2ludClcclxuICAgICAgICAgICAgICAgIGEuYXR0YWNocG9pbnRzID0gWzFdO1xyXG4gICAgICAgICAgICByZXR1cm4gbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBfcGFyc2U6IGZ1bmN0aW9uIChzLCBvcnBoYW4sIGJvbmRzKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKFwiXltcXChdW15cXChcXCldK1tcXCldJFwiKS50ZXN0KHMpKVxyXG4gICAgICAgICAgICBzID0gcy5zdWJzdHIoMSwgcy5sZW5ndGggLSAyKTtcclxuXHJcbiAgICAgICAgdmFyIHMyID0gdGhpcy5zdHJpcEhzKHMpO1xyXG4gICAgICAgIHZhciBtID0gdGhpcy5tb2xGcm9tQXRvbShzMiwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKG0gIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG07XHJcblxyXG4gICAgICAgIHZhciB0b2tlbnMgPSB7IE86IFtcIk9cIl0sIFM6IFtcIlNcIl0sIFNlOiBbXCJTZVwiXSwgVGU6IFtcIlRlXCJdLCBZOiBbXCJZXCJdLCBOSDogW1wiTlwiXSwgUEg6IFtcIlBcIl0sIENPOiBbXCJDXCIsIFwiXj1PXCJdLCBDTzI6IFtcIkNcIiwgXCJePU9cIiwgXCJPXCJdLCBDSDI6IFtcIkNcIl0sIEMySDQ6IFtcIkNcIiwgXCJDXCJdLCBDM0g2OiBbXCJDXCIsIFwiQ1wiLCBcIkNcIl0sIEM0SDg6IFtcIkNcIiwgXCJDXCIsIFwiQ1wiLCBcIkNcIl0sIEM1SDEwOiBbXCJDXCIsIFwiQ1wiLCBcIkNcIiwgXCJDXCIsIFwiQ1wiXSB9O1xyXG4gICAgICAgIGlmIChvcnBoYW4pXHJcbiAgICAgICAgICAgIHRva2Vucy5IID0gW107XHJcblxyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLnN0YXJ0c3dpdGgocywgJygnKSkge1xyXG4gICAgICAgICAgICB2YXIgcCA9IHMuaW5kZXhPZignKScpO1xyXG4gICAgICAgICAgICBpZiAocCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBzMSA9IHMuc3Vic3RyKDEsIHAgLSAxKTtcclxuICAgICAgICAgICAgICAgIHZhciB0ID0gcy5zdWJzdHIocCArIDEpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHMyID0gdC5yZXBsYWNlKC9eWzAtOV0rLywgXCJcIik7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVwZWF0ID0gMTtcclxuICAgICAgICAgICAgICAgIGlmIChzMi5sZW5ndGggPCB0Lmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICByZXBlYXQgPSBwYXJzZUludCh0LnN1YnN0cigwLCB0Lmxlbmd0aCAtIHMyLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJldCA9IHRoaXMuX3BhcnNlQ29ubmVjdG9ycyhzMSwgb3JwaGFuKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gbnVsbCAmJiByZXQucmVtYWluZWQgPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhdG9tcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVwZWF0OyArK2kpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0b21zID0gYXRvbXMuY29uY2F0KHJldC5hdG9tcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbSA9IHRoaXMuX2Nvbm5lY3QoYXRvbXMsIHMyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbSA9IEpTRHJhdzIuU3VwZXJBdG9tcy5nZXQocyk7XHJcbiAgICAgICAgaWYgKG0gIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG07XHJcblxyXG4gICAgICAgIG0gPSB0aGlzLm1vbEZyb21BdG9tKHMsIHRydWUpO1xyXG4gICAgICAgIGlmIChtICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBtO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBrIGluIHRva2Vucykge1xyXG4gICAgICAgICAgICB2YXIgbSA9IHRoaXMuX3RyeUZvcm11bGEoaywgdG9rZW5zW2tdLCBzKTtcclxuICAgICAgICAgICAgaWYgKG0gIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybiBtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgdmFyIGVsZW0gPSBzLnN1YnN0cigwLCAyKTtcclxuICAgICAgICAgICAgdmFyIGUgPSBKU0RyYXcyLlBUW2VsZW1dO1xyXG4gICAgICAgICAgICBpZiAoZSAhPSBudWxsICYmIEpTRHJhdzIuUFQuaXNNZXRhbChlLmEpICYmXHJcbiAgICAgICAgICAgICAgICAoZSAhPSBKU0RyYXcyLlBULksgJiYgZSAhPSBKU0RyYXcyLlBULk5hICYmIGUgIT0gSlNEcmF3Mi5QVC5SYiAmJiBlICE9IEpTRHJhdzIuUFQuQ3MgJiZcclxuICAgICAgICAgICAgICAgICAgICBlICE9IEpTRHJhdzIuUFQuRnIgJiYgZSAhPSBKU0RyYXcyLlBULlNiKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cnlGb3JtdWxhKGVsZW0sIFtlbGVtXSwgcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDb21tb24gRm9ybXVsYTogLS1DbkhbbioyXS0tLCAtLUNuSFtuKjIrMV0sIC0tQ25IW24qMi0xXSwgYW5kIC0tQ25IW24qMi0zXVxyXG4gICAgICAgIGlmIChib25kcyA9PSAxIHx8IGJvbmRzID09IDIpIHtcclxuICAgICAgICAgICAgdmFyIHJlZyA9IC9eQ1swLTldK0hbMC05XSskLztcclxuICAgICAgICAgICAgaWYgKHJlZy50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHMuaW5kZXhPZignSCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNzID0gcGFyc2VJbnQocy5zdWJzdHIoMSwgcCAtIDEpKTtcclxuICAgICAgICAgICAgICAgIHZhciBocyA9IHBhcnNlSW50KHMuc3Vic3RyKHAgKyAxKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3MgPiAwICYmIChib25kcyA9PSAyICYmIGNzICogMiA9PSBocyAvKiAtLUNuSFtuKjJdLS0gKi8gfHwgYm9uZHMgPT0gMSAmJiAoY3MgKiAyICsgMSA9PSBocyAvKiAtLUNuSFtuKjIrMV0tLSAqLyB8fCBjcyAqIDIgLSAxID09IGhzIC8qIC0tQ25IW24qMi0xXS0tICovIHx8IGNzICogMiAtIDMgPT0gaHMgLyogLS1DbkhbbioyLTNdLS0gKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGExID0gbmV3IEpTRHJhdzIuQXRvbShuZXcgSlNEcmF3Mi5Qb2ludCgwLCAwKSwgJ0MnKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYTIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGExLmF0dGFjaHBvaW50cyA9IFsxXTtcclxuICAgICAgICAgICAgICAgICAgICBtLmFkZEF0b20oYTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY3M7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGkgJSAyID09IDEgPyAwLjUgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhMiA9IG5ldyBKU0RyYXcyLkF0b20obmV3IEpTRHJhdzIuUG9pbnQoYTEucC54ICsgMSwgeSksICdDJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG0uYWRkQXRvbShhMik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTEsIGEyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gY3MgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3MgKiAyIC0gMSA9PSBocykgLyogLS1DbkhbbioyLTFdLS0gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLnR5cGUgPSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjcyAqIDIgLSAzID09IGhzKSAvKiAtLUNuSFtuKjItM10tLSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIudHlwZSA9IEpTRHJhdzIuQk9ORFRZUEVTLlRSSVBMRTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtLmFkZEJvbmQoYik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhMSA9IGEyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvbmRzID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhMiA9PSBudWxsID8gYTEgOiBhMikuYXR0YWNocG9pbnRzID0gWzJdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIF9wYXJzZUNvbm5lY3RvcnM6IGZ1bmN0aW9uIChzLCBvcnBoYW4pIHtcclxuICAgICAgICB2YXIgdG9rZW5zID0geyBPOiBbXCJPXCJdLCBTOiBbXCJTXCJdLCBTZTogW1wiU2VcIl0sIFRlOiBbXCJUZVwiXSwgWTogW1wiWVwiXSwgTkg6IFtcIk5cIl0sIFBIOiBbXCJQXCJdLCBDTzogW1wiQ1wiLCBcIj1PXCJdLCBDTzI6IFtcIkNcIiwgXCI9T1wiLCBcIk9cIl0sIENIMjogW1wiQ1wiXSwgQzJINDogW1wiQ1wiLCBcIkNcIl0sIEMzSDY6IFtcIkNcIiwgXCJDXCIsIFwiQ1wiXSwgQzRIODogW1wiQ1wiLCBcIkNcIiwgXCJDXCIsIFwiQ1wiXSwgQzVIMTA6IFtcIkNcIiwgXCJDXCIsIFwiQ1wiLCBcIkNcIiwgXCJDXCJdIH07XHJcbiAgICAgICAgaWYgKG9ycGhhbilcclxuICAgICAgICAgICAgdG9rZW5zLkggPSBbXTtcclxuXHJcbiAgICAgICAgdmFyIGF0b21zID0gW107XHJcbiAgICAgICAgd2hpbGUgKHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgZmluZG9uZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIHRva2Vucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjaWwuVXRpbHMuc3RhcnRzd2l0aChzLCBrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0b21zID0gYXRvbXMuY29uY2F0KHRva2Vuc1trXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3Vic3RyKGsubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBmaW5kb25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFmaW5kb25lKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXRvbXMubGVuZ3RoID09IDAgPyBudWxsIDogeyBhdG9tczogYXRvbXMsIHJlbWFpbmVkOiBzIH07XHJcbiAgICB9LFxyXG5cclxuICAgIF90cnlGb3JtdWxhOiBmdW5jdGlvbiAocHJlZml4LCBhdG9tcywgcykge1xyXG4gICAgICAgIGlmICghc2NpbC5VdGlscy5zdGFydHN3aXRoKHMsIHByZWZpeCwgdHJ1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdChhdG9tcywgcy5zdWJzdHIocHJlZml4Lmxlbmd0aCkpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfY29ubmVjdDogZnVuY3Rpb24gKGF0b21zLCBuYW1lKSB7XHJcbiAgICAgICAgdmFyIG0gPSBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0KG5hbWUpO1xyXG4gICAgICAgIGlmIChtID09IG51bGwpIHtcclxuICAgICAgICAgICAgbSA9IHRoaXMuX3BhcnNlKG5hbWUsIG51bGwsIDEpO1xyXG4gICAgICAgICAgICBpZiAobSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgbSA9IHRoaXMubW9sRnJvbUF0b20obmFtZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG0gPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIG0gPSBtLmNsb25lKCk7XHJcblxyXG4gICAgICAgIHZhciBhdHRzID0gSlNEcmF3Mi5TdXBlckF0b21zLl9nZXRBdHRhY2hBdG9tcyhtKTtcclxuICAgICAgICBpZiAoYXR0cyA9PSBudWxsIHx8IGF0dHMubGVuZ3RoICE9IDEpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgYTEgPSBhdHRzWzBdLmE7XHJcbiAgICAgICAgdmFyIGEyID0gbnVsbDtcclxuICAgICAgICB2YXIgYnJhbmNoID0gbnVsbDtcclxuICAgICAgICBhMS5hdHRhY2hwb2ludHMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gYXRvbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBhdG9tc1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjLnN1YnN0cigwLCAxKSA9PSBcIl5cIikge1xyXG4gICAgICAgICAgICAgICAgYnJhbmNoID0gYy5zdWJzdHIoMSk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSSMxMjA3NFxyXG4gICAgICAgICAgICBhMSA9IHRoaXMuX2Nvbm5lY3RBdG9tKGExLCBjLCBtKTtcclxuICAgICAgICAgICAgaWYgKGJyYW5jaCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25uZWN0QXRvbShhMSwgYnJhbmNoLCBtKTtcclxuICAgICAgICAgICAgICAgIGJyYW5jaCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGExLmF0dGFjaHBvaW50cyA9IFsxXTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH0sXHJcblxyXG4gICAgX2Nvbm5lY3RBdG9tOiBmdW5jdGlvbiAoYTEsIGMsIG0pIHtcclxuICAgICAgICB2YXIgZG91YmxlYm9uZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChjLnN1YnN0cigwLCAxKSA9PSBcIj1cIikge1xyXG4gICAgICAgICAgICBjID0gYy5zdWJzdHIoMSk7XHJcbiAgICAgICAgICAgIGRvdWJsZWJvbmQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHAgPSBhMS5wLmNsb25lKCk7XHJcbiAgICAgICAgcC5vZmZzZXQoMSwgMCk7XHJcbiAgICAgICAgdmFyIGEyID0gbmV3IEpTRHJhdzIuQXRvbShwLCBjKTtcclxuICAgICAgICB2YXIgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTEsIGEyKTtcclxuICAgICAgICBpZiAoZG91YmxlYm9uZClcclxuICAgICAgICAgICAgYi50eXBlID0gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFO1xyXG4gICAgICAgIG0uYWRkQXRvbShhMik7XHJcbiAgICAgICAgbS5hZGRCb25kKGIpO1xyXG4gICAgICAgIHJldHVybiBhMjtcclxuICAgIH1cclxufTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG5cclxuLyoqXHJcbiogR3JvdXAgY2xhc3MgLSBkZWZpbmVzIE9iamVjdCBncm91cHNcclxuKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuSlNEcmF3Mi5Hcm91cFxyXG4qL1xyXG5KU0RyYXcyLkdyb3VwID0gc2NpbC5leHRlbmQoc2NpbC5fYmFzZSwge1xyXG4gICAgLyoqXHJcbiAgICAqIEBjb25zdHJ1Y3RvciBHcm91cFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIGdyb3VwIG5hbWVcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBncm91cCB0eXBlXHJcbiAgICAqL1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChuYW1lLCB0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5UID0gXCJHUk9VUFwiO1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmlkID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9yZWN0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnAgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZ2FwID0gNi4wO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsOyAvLyBhIGdyb3VwIGNhbiBiZWxvbmcgdG8gYW5vdGhlciBncm91cFxyXG4gICAgICAgIHRoaXMuY29sb3IgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yYXRpbyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50YWcgPSBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBnID0gbmV3IEpTRHJhdzIuR3JvdXAodGhpcy5uYW1lLCB0aGlzLnR5cGUpO1xyXG4gICAgICAgIGcuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGcuX3JlY3QgPSB0aGlzLl9yZWN0ID09IG51bGwgPyBudWxsIDogdGhpcy5fcmVjdC5jbG9uZSgpO1xyXG4gICAgICAgIGcucCA9IHRoaXMucCA9PSBudWxsID8gbnVsbCA6IHRoaXMucC5jbG9uZSgpO1xyXG4gICAgICAgIGcuY29sb3IgPSB0aGlzLmNvbG9yO1xyXG4gICAgICAgIGcuZ2FwID0gdGhpcy5nYXA7XHJcbiAgICAgICAgZy5yYXRpbyA9IHRoaXMucmF0aW87XHJcbiAgICAgICAgZy50YWcgPSB0aGlzLnRhZztcclxuICAgICAgICByZXR1cm4gZztcclxuICAgIH0sXHJcblxyXG4gICAgaHRtbDogZnVuY3Rpb24gKHNjYWxlKSB7XHJcbiAgICAgICAgdmFyIHMgPSBcIjxpIGk9J1wiICsgdGhpcy5pZCArIFwiJyB4PSdcIiArIHRoaXMuVCArIFwiJyB0PSdcIiArIHNjaWxsaWdlbmNlLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMudHlwZSkgKyBcIicgbj0nXCIgKyB0aGlzLm5hbWUgKyBcIidcIjtcclxuICAgICAgICBpZiAodGhpcy5jb2xvciAhPSBudWxsKVxyXG4gICAgICAgICAgICBzICs9IFwiIGNscj0nXCIgKyB0aGlzLmNvbG9yICsgXCInXCI7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FwID4gMClcclxuICAgICAgICAgICAgcyArPSBcIiBnYXA9J1wiICsgdGhpcy5nYXAgKyBcIidcIjtcclxuICAgICAgICBzICs9IFwiPjwvaT5cIjtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgcmVhZEh0bWw6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgLy90aGlzLnAgPSBKU0RyYXcyLlBvaW50LmZyb21TdHJpbmcoZS5nZXRBdHRyaWJ1dGUoXCJwXCIpKTtcclxuICAgICAgICB2YXIgZ2FwID0gcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZShcImdhcFwiKSk7XHJcbiAgICAgICAgaWYgKGdhcCA+IDApXHJcbiAgICAgICAgICAgIHRoaXMuZ2FwID0gZ2FwO1xyXG4gICAgfSxcclxuXHJcbiAgICBmbGlwWTogZnVuY3Rpb24gKHkpIHtcclxuICAgIH0sXHJcblxyXG4gICAgZmxpcFg6IGZ1bmN0aW9uICh4KSB7XHJcbiAgICB9LFxyXG5cclxuICAgIHNjYWxlOiBmdW5jdGlvbiAocywgb3JpZ2luKSB7XHJcbiAgICB9LFxyXG5cclxuICAgIG9mZnNldDogZnVuY3Rpb24gKGR4LCBkeSkge1xyXG4gICAgfSxcclxuXHJcbiAgICByZWN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlY3Q7XHJcbiAgICB9LFxyXG5cclxuICAgIHRvZ2dsZTogZnVuY3Rpb24gKHAsIHRvcikge1xyXG4gICAgICAgIHZhciByID0gdGhpcy5fcmVjdDtcclxuICAgICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgcmV0dXJuIHAueSA+PSByLnRvcCAmJiBwLnkgPD0gci5ib3R0b20oKSAmJiAoTWF0aC5hYnMocC54IC0gci5sZWZ0KSA8IHRvciAvIDIgfHwgTWF0aC5hYnMocC54IC0gci5yaWdodCgpKSA8IHRvciAvIDIpIHx8XHJcbiAgICAgICAgICAgIHAueCA+PSByLmxlZnQgJiYgcC54IDw9IHIucmlnaHQoKSAmJiAoTWF0aC5hYnMocC55IC0gci50b3ApIDwgdG9yIC8gMiB8fCBNYXRoLmFicyhwLnkgLSByLmJvdHRvbSgpKSA8IHRvciAvIDIpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3Q3VyOiBmdW5jdGlvbiAoc3VyZmFjZSwgciwgY29sb3IsIG0pIHtcclxuICAgICAgICB2YXIgcjIgPSB0aGlzLl9yZWN0O1xyXG4gICAgICAgIGlmIChyMiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdmFyIGMgPSByMi5jZW50ZXIoKTtcclxuICAgICAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7IGN4OiByMi5sZWZ0LCBjeTogYy55LCByOiByIH0pLnNldEZpbGwoY29sb3IpO1xyXG4gICAgICAgIHN1cmZhY2UuY3JlYXRlQ2lyY2xlKHsgY3g6IHIyLnJpZ2h0KCksIGN5OiBjLnksIHI6IHIgfSkuc2V0RmlsbChjb2xvcik7XHJcbiAgICAgICAgc3VyZmFjZS5jcmVhdGVDaXJjbGUoeyBjeDogYy54LCBjeTogcjIudG9wLCByOiByIH0pLnNldEZpbGwoY29sb3IpO1xyXG4gICAgICAgIHN1cmZhY2UuY3JlYXRlQ2lyY2xlKHsgY3g6IGMueCwgY3k6IHIyLmJvdHRvbSgpLCByOiByIH0pLnNldEZpbGwoY29sb3IpO1xyXG5cclxuICAgICAgICBpZiAobSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbS5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0uYXRvbXNbaV0uZ3JvdXAgIT0gdGhpcylcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIG0uYXRvbXNbaV0uZHJhd0N1cihzdXJmYWNlLCByICogMC43NSwgY29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbS5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG0uZ3JhcGhpY3NbaV0uZ3JvdXAgIT0gdGhpcylcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIG0uZ3JhcGhpY3NbaV0uZHJhd0N1cihzdXJmYWNlLCByICogMC43NSwgY29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBfdXBkYXRlUmVjdDogZnVuY3Rpb24gKG0sIGJvbmRsZW5ndGgpIHtcclxuICAgICAgICB2YXIgciA9IG0uZ2V0R3JvdXBSZWN0KHRoaXMsIGJvbmRsZW5ndGgpO1xyXG4gICAgICAgIHRoaXMuX3JlY3QgPSByO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3OiBmdW5jdGlvbiAoc3VyZmFjZSwgbGluZXdpZHRoLCBtLCBmb250c2l6ZSkge1xyXG4gICAgICAgIHZhciByID0gdGhpcy5fcmVjdDtcclxuICAgICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciBjb2xvciA9IHRoaXMuY29sb3IgPT0gbnVsbCA/IFwiZ3JheVwiIDogdGhpcy5jb2xvcjtcclxuICAgICAgICAvL3IuaW5mbGF0ZSh0aGlzLmdhcCAqIGxpbmV3aWR0aCwgdGhpcy5nYXAgKiBsaW5ld2lkdGgpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJjaGlyYWxcIikge1xyXG4gICAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgbmV3IEpTRHJhdzIuUG9pbnQoci5sZWZ0ICsgci53aWR0aCAvIDIsIHIudG9wIC0gZm9udHNpemUpLCB0aGlzLm5hbWUsIGNvbG9yLCBmb250c2l6ZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd1JlY3Qoc3VyZmFjZSwgciwgY29sb3IsIGxpbmV3aWR0aCAvIDQsIGxpbmV3aWR0aCAqIDMpOyAvLy5zZXRGaWxsKFwiI2ZmZmZmZlwiKTtcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIG5ldyBKU0RyYXcyLlBvaW50KHIubGVmdCArIHIud2lkdGggLyAyLCByLmJvdHRvbSgpICsgZm9udHNpemUgLyAyKSwgdGhpcy5uYW1lLCBjb2xvciwgZm9udHNpemUsIGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHRoaXMudGFnKSlcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIG5ldyBKU0RyYXcyLlBvaW50KHIubGVmdCwgci50b3AgLSBmb250c2l6ZSksIHRoaXMudGFnLCBcImJsYWNrXCIsIGZvbnRzaXplLCBmYWxzZSwgXCJzdGFydFwiKTtcclxuICAgICAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0aGlzLnJhdGlvKSlcclxuICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIG5ldyBKU0RyYXcyLlBvaW50KHIucmlnaHQoKSwgci5ib3R0b20oKSArIGZvbnRzaXplIC8gMiksIFwicmF0aW86IFwiICsgdGhpcy5yYXRpbywgXCJibGFja1wiLCBmb250c2l6ZSwgZmFsc2UsIFwiZW5kXCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3U2VsZWN0OiBmdW5jdGlvbiAobGFzc28pIHtcclxuICAgICAgICBsYXNzby5kcmF3KHRoaXMsIHRoaXMuX3JlY3QuZm91clBvaW50cygpKTtcclxuICAgIH1cclxufSk7XHJcblxyXG5KU0RyYXcyLkdyb3VwLmNhc3QgPSBmdW5jdGlvbiAoYSkge1xyXG4gICAgcmV0dXJuIGEgIT0gbnVsbCAmJiBhLlQgPT0gJ0dST1VQJyA/IGEgOiBudWxsO1xyXG59OyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbkpTRHJhdzIuSURHZW5lcmF0b3IgPSBzY2lsLmV4dGVuZChzY2lsLl9iYXNlLCB7XHJcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5pID0gc3RhcnQgPiAwID8gc3RhcnQgOiAwO1xyXG4gICAgICAgIHRoaXMudXNlZCA9IHRoaXMuaSA9PSAwID8gbnVsbCA6IHt9O1xyXG4gICAgfSxcclxuXHJcbiAgICBuZXh0OiBmdW5jdGlvbiAoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy51c2VkID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiArK3RoaXMuaTtcclxuXHJcbiAgICAgICAgaWYgKGlkID4gMCAmJiAhdGhpcy51c2VkW2lkXSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZWRbaWRdID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWQgPSArK3RoaXMuaTtcclxuICAgICAgICB3aGlsZSAodGhpcy51c2VkW2lkXSlcclxuICAgICAgICAgICAgaWQgPSArK3RoaXMuaTtcclxuICAgICAgICB0aGlzLnVzZWRbaWRdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICB9XHJcbn0pOyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8qKlxyXG5AcHJvamVjdCBKU0RyYXdcclxuQHZlcnNpb24gNS4zLjFcclxuQGRlc2NyaXB0aW9uIEpTRHJhdyBDaGVtaWNhbC9CaW9sb2dpY2FsIFN0cnVjdHVyZSBFZGl0b3JcclxuKi9cclxuXHJcbi8qKlxyXG4qIEpTRHJhdzIgbmFtZXNwYWNlXHJcbiogQG5hbWVzcGFjZSBzY2lsbGlnZW5jZS5KU0RyYXcyXHJcbiovXHJcbkpTRHJhdzIgPSB7fTtcclxuc2NpbGxpZ2VuY2UuSlNEcmF3MiA9IEpTRHJhdzI7XHJcbnNjaWxsaWdlbmNlLkpTRHJhdzMgPSBKU0RyYXczID0gSlNEcmF3MjtcclxuXHJcbkpTRHJhdzIuc3BlZWR1cCA9IHsgZm9udHNpemU6IDQsIGdhcDogMCwgZGlzYWJsZXVuZG86IGZhbHNlLCBtaW5ib25kbGVuZ3RoOiAxIH07XHJcblxyXG4vKipcclxuKiBKU0RyYXcgVmVyc2lvblxyXG4qIEBwcm9wZXJ0eSBzY2lsbGlnZW5jZS5KU0RyYXcyLnZlcnNpb25cclxuKi9cclxuSlNEcmF3Mi52ZXJzaW9uID0gXCJKU0RyYXcgVjUuMy4xXCI7XHJcblxyXG4vLyBKU0RyYXcgZmlsZSB2ZXJzaW9uXHJcbkpTRHJhdzIua0ZpbGVWZXJzaW9uID0gXCI1LjBcIjtcclxuXHJcbi8qKlxyXG4qIEpTRHJhdyBEZWZhdWx0IE9wdGlvbnNcclxuKiBAcHJvcGVydHkge2RpY3Rpb25heX0gc2NpbGxpZ2VuY2UuSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucyBkZWZhdWx0IEVkaXRvciBvcHRpb25zOiB7IHNraW46IFwidzhcIiBvciBudWxsLCBkZWxoZXRlcm9hdG9tOiBmYWxzZSwgc2FsdHM6IHsgbmFtZTogTUYsIC4uLn0sIGFiYnJldmlhdGlvbnM6IHt9LCB0bGM6IHt9LCBwb3B1cHdpZHRoOiBudW1iZXIsIHBvcHVwaGVpZ2h0OiBudW1iZXIsIHBvcHVweGRyYXc6IHRydWUgb3IgZmFsc2UsIG1vbm9jb2xvcjogdHJ1ZSBvciBmYWxzZSwgamRyYXdwYXRoOiBcImh0dHA6Ly9zZXJ2ZXIvamRyYXcvXCIgfVxyXG4qL1xyXG5KU0RyYXcyLmRlZmF1bHRvcHRpb25zID0ge307XHJcbkpTRHJhdzIucGFzc3dvcmQgPSB7ZW5jcnlwdDp0cnVlfTtcclxuXHJcbkpTRHJhdzIuVEVYVEtFWVdPUkRTID0gW1wiwrBDXCIsIFwicnRcIiwgXCJyZWZsdXhcIiwgXCJoclwiLCBcIm1pblwiLCBcInNlY1wiLCBcInBzaVwiLCBcImF0bVwiLCBcIm92ZXJuaWdodFwiLCBcIm1pY3Jvd2F2ZVwiLCBcIs6UXCJdO1xyXG5KU0RyYXcyLk1PTEVDVUxFVFlQRVMgPSBbXCJTbWFsbE1vbGVjdWxlXCIsIFwiUG9seW1lclwiLCBcIlBlcHRpZGVcIiwgXCJETkFcIiwgXCJSTkFcIiwgXCJBRENcIiwgXCJDaGVtaWNhbFJlYWdlbnRcIl07XHJcbkpTRHJhdzIuQ0hJUkFMSVRJRVMgPSBbXCJBY2hpcmFsXCIsIFwiQWJzb2x1dGVcIiwgXCJSYWNlbWljXCIsIFwiRGlhc3RlcmVvbWVyaWNcIiwgXCJFbmF0aW9tZXIgUlwiLCBcIkVuYXRpb21lciBTXCJdO1xyXG5cclxuLyoqXHJcbiogUHJlZGVmaW5lZCBCb25kIFR5cGVzOlxyXG48cHJlPlxyXG5KU0RyYXcyLkJPTkRUWVBFUyA9IHtcclxuICAgIFVOS05PV046IDAsXHJcbiAgICBTSU5HTEU6IDEsXHJcbiAgICBET1VCTEU6IDIsXHJcbiAgICBUUklQTEU6IDMsXHJcbiAgICBERUxPQ0FMSVpFRDogNCxcclxuICAgIFdFREdFOiA1LFxyXG4gICAgSEFTSDogNixcclxuICAgIFdJR0dMWTogNyxcclxuICAgIEVJVEhFUjogOCxcclxuICAgIFNJTkdMRU9SRE9VQkxFOiA5LFxyXG4gICAgU0lOR0xFT1JBUk9NQVRJQzogMTAsXHJcbiAgICBET1VCTEVPUkFST01BVElDOiAxMSxcclxuICAgIFFVQURSVVBMRTogMTIsXHJcbiAgICBEVU1NWTogMTMsXHJcbiAgICBQRVBUSURFOiAyMSxcclxuICAgIE5VQ0xFT1RJREU6IDIyLFxyXG4gICAgRElTVUxGSURFOiAyMyxcclxuICAgIEFNSURFOiAyNFxyXG59XHJcbjwvcHJlPlxyXG4qIEBjbGFzcyB7c3RhdGljfSBzY2lsbGlnZW5jZS5KU0RyYXcyLkJPTkRUWVBFU1xyXG4qL1xyXG5KU0RyYXcyLkJPTkRUWVBFUyA9IHtcclxuICAgIFVOS05PV046IDAsXHJcbiAgICBTSU5HTEU6IDEsXHJcbiAgICBET1VCTEU6IDIsXHJcbiAgICBUUklQTEU6IDMsXHJcbiAgICBERUxPQ0FMSVpFRDogNCxcclxuICAgIFdFREdFOiA1LFxyXG4gICAgSEFTSDogNixcclxuICAgIFdJR0dMWTogNyxcclxuICAgIEVJVEhFUjogOCxcclxuICAgIFNJTkdMRU9SRE9VQkxFOiA5LFxyXG4gICAgU0lOR0xFT1JBUk9NQVRJQzogMTAsXHJcbiAgICBET1VCTEVPUkFST01BVElDOiAxMSxcclxuICAgIFFVQURSVVBMRTogMTIsXHJcbiAgICBEVU1NWTogMTMsXHJcbiAgICBCT0xEOiAxNCxcclxuICAgIEJPTERIQVNIOiAxNSxcclxuICAgIFBFUFRJREU6IDIxLFxyXG4gICAgTlVDTEVPVElERTogMjIsXHJcbiAgICBESVNVTEZJREU6IDIzLFxyXG4gICAgQU1JREU6IDI0XHJcbn07XHJcblxyXG5KU0RyYXcyLlJYTkNFTlRFUiA9IHtcclxuICAgIE5PVENFTlRFUjogLTEsXHJcbiAgICBDRU5URVI6IDEsXHJcbiAgICBCUkVBSzogNCxcclxuICAgIENIQU5HRTogOCxcclxuICAgIEJSRUFLQU5EQ0hBTkdFOiAxMlxyXG59O1xyXG5cclxuSlNEcmF3Mi5BTElHTiA9IHtcclxuICAgIFJJR0hUOiAwLFxyXG4gICAgQk9UVE9NOiAxLFxyXG4gICAgTEVGVDogMixcclxuICAgIFRPUDogM1xyXG59O1xyXG5cclxuSlNEcmF3Mi5CSU8gPSB7XHJcbiAgICBBQTogJ0FBJyxcclxuICAgIC8vQkFTRTogJ0JBU0UnLFxyXG4gICAgQU5USUJPRFk6ICdBTlRJQk9EWScsXHJcbiAgICBQUk9URUlOOiBcIlBST1RFSU5cIixcclxuICAgIEdFTkU6IFwiR0VORVwiLFxyXG4gICAgRE5BOiBcIkROQVwiLFxyXG4gICAgUk5BOiBcIlJOQVwiLFxyXG4gICAgQkFTRV9ETkE6IFwiQkFTRUROQVwiLFxyXG4gICAgQkFTRV9STkE6IFwiQkFTRVJOQVwiXHJcbn07XHJcblxyXG5KU0RyYXcyLkFOVElCT0RZID0ge1xyXG4gICAgSWdHOiBcIklnR1wiLFxyXG4gICAgRmFiOiBcIkZhYlwiLFxyXG4gICAgU2NGdjogXCJTY0Z2XCJcclxufTtcclxuXHJcblxyXG5KU0RyYXcyLkROQVRhYmxlID0ge1xyXG4gICAgR0NUOiBcIkFcIiwgR0NDOiBcIkFcIiwgR0NBOiBcIkFcIiwgR0NHOiBcIkFcIixcclxuICAgIENHVDogXCJSXCIsIENHQzogXCJSXCIsIENHQTogXCJSXCIsIENHRzogXCJSXCIsIEFHQTogXCJSXCIsIEFHRzogXCJSXCIsXHJcbiAgICBBQVQ6IFwiXCIsIEFBQzogXCJOXCIsXHJcbiAgICBHQVQ6IFwiRFwiLCBHQUM6IFwiRFwiLFxyXG4gICAgVEdUOiBcIkNcIiwgVEdDOiBcIkNcIixcclxuICAgIENBQTogXCJRXCIsIENBRzogXCJRXCIsXHJcbiAgICBHQUE6IFwiRVwiLCBHQUc6IFwiRVwiLFxyXG4gICAgR0dUOiBcIkdcIiwgR0dDOiBcIkdcIiwgR0dBOiBcIkdcIiwgR0dHOiBcIkdcIixcclxuICAgIENBVDogXCJIXCIsIENBQzogXCJIXCIsXHJcbiAgICBBVFQ6IFwiSVwiLCBBVEM6IFwiSVwiLCBBVEE6IFwiSVwiLFxyXG4gICAgVFRBOiBcIkxcIiwgVFRHOiBcIkxcIiwgQ1RUOiBcIkxcIiwgQ1RDOiBcIkxcIiwgQ1RBOiBcIkxcIiwgQ1RHOiBcIkxcIixcclxuICAgIEFBQTogXCJLXCIsIEFBRzogXCJLXCIsXHJcbiAgICBBVEc6IFwiTVwiLFxyXG4gICAgVFRUOiBcIkZcIiwgVFRDOiBcIkZcIixcclxuICAgIENDVDogXCJQXCIsIENDQzogXCJQXCIsIENDQTogXCJQXCIsIENDRzogXCJQXCIsXHJcbiAgICBUQ1Q6IFwiU1wiLCBUQ0M6IFwiU1wiLCBUQ0E6IFwiU1wiLCBUQ0c6IFwiU1wiLCBBR1Q6IFwiU1wiLCBBR0M6IFwiU1wiLFxyXG4gICAgQUNUOiBcIlRcIiwgQUNDOiBcIlRcIiwgQUNBOiBcIlRcIiwgQUNHOiBcIlRcIixcclxuICAgIFRHRzogXCJXXCIsXHJcbiAgICBUQVQ6IFwiWVwiLCBUQUM6IFwiWVwiLFxyXG4gICAgR1RUOiBcIlZcIiwgR1RDOiBcIlZcIiwgR1RBOiBcIlZcIiwgR1RHOiBcIlZcIixcclxuICAgIEFURzogXCJbXCIsXHJcbiAgICBUQUE6IFwiXVwiLCBUR0E6IFwiXVwiLCBUQUc6IFwiXVwiXHJcbn07XHJcblxyXG5cclxuSlNEcmF3Mi5STkFUYWJsZSA9IHtcclxuICAgIEdDVTogXCJBXCIsIEdDQzogXCJBXCIsIEdDQTogXCJBXCIsIEdDRzogXCJBXCIsXHJcbiAgICBDR1U6IFwiUlwiLCBDR0M6IFwiUlwiLCBDR0E6IFwiUlwiLCBDR0c6IFwiUlwiLCBBR0E6IFwiUlwiLCBBR0c6IFwiUlwiLFxyXG4gICAgQUFVOiBcIk5cIiwgQUFDOiBcIk5cIixcclxuICAgIEdBVTogXCJEXCIsIEdBQzogXCJEXCIsXHJcbiAgICBVR1U6IFwiQ1wiLCBVR0M6IFwiQ1wiLFxyXG4gICAgQ0FBOiBcIlFcIiwgQ0FHOiBcIlFcIixcclxuICAgIEdBQTogXCJFXCIsIEdBRzogXCJFXCIsXHJcbiAgICBHR1U6IFwiR1wiLCBHR0M6IFwiR1wiLCBHR0E6IFwiR1wiLCBHR0c6IFwiR1wiLFxyXG4gICAgQ0FVOiBcIkhcIiwgQ0FDOiBcIkhcIixcclxuICAgIEFVVTogXCJJXCIsIEFVQzogXCJJXCIsIEFVQTogXCJJXCIsXHJcbiAgICBBVUc6IFwiW1wiLFxyXG4gICAgVVVBOiBcIkxcIiwgVVVHOiBcIkxcIiwgQ1VVOiBcIkxcIiwgQ1VDOiBcIkxcIiwgQ1VBOiBcIkxcIiwgQ1VHOiBcIkxcIixcclxuICAgIEFBQTogXCJLXCIsIEFBRzogXCJLXCIsXHJcbiAgICBBVUc6IFwiTVwiLFxyXG4gICAgVVVVOiBcIkZcIiwgVVVDOiBcIkZcIixcclxuICAgIENDVTogXCJQXCIsIENDQzogXCJQXCIsIENDQTogXCJQXCIsIENDRzogXCJQXCIsXHJcbiAgICBVQ1U6IFwiU1wiLCBVQ0M6IFwiU1wiLCBVQ0E6IFwiU1wiLCBVQ0c6IFwiU1wiLCBBR1U6IFwiU1wiLCBBR0M6IFwiU1wiLFxyXG4gICAgQUNVOiBcIlRcIiwgQUNDOiBcIlRcIiwgQUNBOiBcIlRcIiwgQUNHOiBcIlRcIixcclxuICAgIFVHRzogXCJXXCIsXHJcbiAgICBVQVU6IFwiWVwiLCBVQUM6IFwiWVwiLFxyXG4gICAgR1VVOiBcIlZcIiwgR1VDOiBcIlZcIiwgR1VBOiBcIlZcIiwgR1VHOiBcIlZcIixcclxuICAgIFVBQTogXCJdXCIsIFVHQTogXCJdXCIsIFVBRzogXCJdXCJcclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5KU0RyYXcyLm5lZWRQcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBzY2lsLlV0aWxzLmFsZXJ0KFwiVGhpcyBpcyBhIEpTRHJhdyBQcm8gZmVhdHVyZS5cIik7XHJcbn07XHJcblxyXG5KU0RyYXcyLlNlY3VyaXR5ID0ge1xyXG4gICAga0VkaXRpb246IFwiTGl0ZVwiLFxyXG4gICAgZXJyb3I6IG51bGwsXHJcbiAgICB2YWxpZDogdHJ1ZSxcclxuXHJcbiAgICBfY2hlY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgIH1cclxufTtcclxuXHJcblxyXG5zY2lsLmFwcGx5KEpTRHJhdzIsIHtcclxuICAgIFRleHQ6IHsgY2FzdDogZnVuY3Rpb24gKGEpIHsgcmV0dXJuIG51bGw7IH0gfSxcclxuICAgIFNoYXBlOiB7IGNhc3Q6IGZ1bmN0aW9uIChhKSB7IHJldHVybiBudWxsOyB9IH0sXHJcbiAgICBCcmFja2V0OiB7IGNhc3Q6IGZ1bmN0aW9uIChhKSB7IHJldHVybiBudWxsOyB9IH0sXHJcbiAgICBBc3NheUN1cnZlOiB7IGNhc3Q6IGZ1bmN0aW9uIChhKSB7IHJldHVybiBudWxsOyB9IH0sXHJcbiAgICBBcnJvdzogeyBjYXN0OiBmdW5jdGlvbiAoYSkgeyByZXR1cm4gbnVsbDsgfSB9LFxyXG4gICAgVExDOiB7IGNhc3Q6IGZ1bmN0aW9uIChhKSB7IHJldHVybiBudWxsOyB9IH0sXHJcbiAgICBTcGVjdHJ1bTogeyBjYXN0OiBmdW5jdGlvbiAoYSkgeyByZXR1cm4gbnVsbDsgfSB9LFxyXG4gICAgUGx1czogeyBjYXN0OiBmdW5jdGlvbiAoYSkgeyByZXR1cm4gbnVsbDsgfSB9LFxyXG4gICAgR3JvdXA6IHsgY2FzdDogZnVuY3Rpb24gKGEpIHsgcmV0dXJuIG51bGw7IH0gfSxcclxuICAgIFJHcm91cDogeyBjYXN0OiBmdW5jdGlvbiAoYSkgeyByZXR1cm4gbnVsbDsgfSB9XHJcbn0pO1xyXG5cclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5UYWJsZSA9IHtcclxuICAgIHNwbGl0VW5pdDogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAocyA9PSBudWxsIHx8IHMgPT0gXCImbmJzcDtcIilcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcyA9IHNjaWwuVXRpbHMudHJpbShzKTtcclxuICAgICAgICBpZiAocy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciB1bml0MiA9IG51bGw7XHJcbiAgICAgICAgdmFyIHVuaXQgPSBudWxsO1xyXG4gICAgICAgIHZhciBudW0gPSBzLnJlcGxhY2UoL1thLXp8XFwvfCV8wrBdKyQvaSwgXCJcIik7XHJcbiAgICAgICAgaWYgKG51bSAhPSBzKSB7XHJcbiAgICAgICAgICAgIHVuaXQyID0gcy5zdWJzdHIobnVtLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHVuaXQgPSB1bml0Mi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBudW0gPSBzY2lsLlV0aWxzLnRyaW0obnVtKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgodW5pdCA9PSBcIncvd1wiIHx8IHVuaXQgPT0gXCJ3L3ZcIikgJiYgc2NpbC5VdGlscy5lbmRzd2l0aChudW0sIFwiJVwiKSkge1xyXG4gICAgICAgICAgICBudW0gPSBudW0uc3Vic3RyKDAsIG51bS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgdW5pdDIgPSB1bml0ID0gXCIlIFwiICsgdW5pdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh1bml0ID09IFwiJXcvd1wiKVxyXG4gICAgICAgICAgICB1bml0MiA9IHVuaXQgPSBcIiUgdy93XCI7XHJcbiAgICAgICAgZWxzZSBpZiAodW5pdCA9PSBcIiV3L3ZcIilcclxuICAgICAgICAgICAgdW5pdDIgPSB1bml0ID0gXCIlIHcvdlwiO1xyXG5cclxuICAgICAgICByZXR1cm4geyB2YWx1ZTogc2NpbC5VdGlscy50cmltKG51bSksIHVuaXQ6IHVuaXQsIHVuaXQyOiB1bml0MiB9O1xyXG4gICAgfSxcclxuXHJcbiAgICByZWFkU2RmUmVjb3JkOiBmdW5jdGlvbiAoc2RmbW9sLCByZWFkYXR0cmlidXRlcykge1xyXG4gICAgICAgIGlmIChzZGZtb2wuc3Vic3RyKDAsIDEpID09IFwiXFxuXCIpXHJcbiAgICAgICAgICAgIHNkZm1vbCA9IHNkZm1vbC5zdWJzdHIoMSk7XHJcbiAgICAgICAgZWxzZSBpZiAoc2RmbW9sLnN1YnN0cigwLCAyKSA9PSBcIlxcclxcblwiKVxyXG4gICAgICAgICAgICBzZGZtb2wgPSBzZGZtb2wuc3Vic3RyKDIpO1xyXG5cclxuICAgICAgICB2YXIgcCA9IHNkZm1vbC5pbmRleE9mKFwiXFxuTSAgRU5EXCIpO1xyXG4gICAgICAgIGlmIChwIDwgMClcclxuICAgICAgICAgICAgcCA9IHNkZm1vbC5pbmRleE9mKFwiXFxuTSBFTkRcIik7XHJcbiAgICAgICAgaWYgKHAgPCAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHAxID0gc2RmbW9sLmluZGV4T2YoXCJcXG5cIiwgcCArIDEpO1xyXG4gICAgICAgIHZhciBtb2xmaWxlID0gcDEgPCAwID8gc2RmbW9sIDogc2RmbW9sLnN1YnN0cigwLCBwMSk7XHJcbiAgICAgICAgdmFyIHMgPSBwMSA8IDAgPyBudWxsIDogc2RmbW9sLnN1YnN0cihwMSArIDEpO1xyXG4gICAgICAgIHZhciBwcm9wcyA9IHJlYWRhdHRyaWJ1dGVzID8gSlNEcmF3Mi5UYWJsZS5yZWFkUHJvcHMocykgOiBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4geyBtb2xmaWxlOiBtb2xmaWxlLCBwcm9wczogcHJvcHMgfTtcclxuICAgIH0sXHJcblxyXG4gICAgcmVhZFByb3BzOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHZhciByZXQgPSB7fTtcclxuICAgICAgICBpZiAocyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gcmV0O1xyXG5cclxuICAgICAgICB2YXIgc3MgPSBzLnNwbGl0KCdcXG4nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHMgPSBzc1tpXTtcclxuICAgICAgICAgICAgdmFyIG4gPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgdiA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAocy5zdWJzdHIoMCwgMSkgPT0gXCI+XCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gcy5pbmRleE9mKCc8JywgMSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICArK3A7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAxID0gcy5pbmRleE9mKCc+JywgcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHAxID4gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHMuc3Vic3RyKHAsIHAxIC0gcCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yICgrK2k7IGkgPCBzcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHMgPSBzc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NpbC5VdGlscy50cmltKHMpLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2ID0gcztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYgKz0gcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG4gIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldFtzY2lsLlV0aWxzLnRyaW0obildID0gc2NpbC5VdGlscy50cmltKHYpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5KU0RyYXcyLkpTRHJhd0lPID0ge1xyXG4gICAgZG93bmxvYWRkbGc6IG51bGwsXHJcbiAgICBqc2RzYXZlZGxnOiBudWxsLFxyXG4gICAganNkRmlsZXM6IHsganNkcmF3OiBcIkpTRHJhdzIgWE1MXCIsIG1vbDogXCJNb2wgRmlsZVwiLCByeG46IFwiUmVhY3Rpb24gRmlsZVwiLCBpbmNoaTogXCJJbkNoSVwiLCBoZWxtOiBcIkhFTE1cIiwgeGhlbG06IFwieEhFTE1cIiwgc21pbGVzOiBcIlNNSUxFU1wiLCBjbWw6IFwiQ2hlbWljYWwgTWFya3VwIExhbmd1YWdlXCIsIGNkeG1sOiBcIkNoZW1EcmF3IENEWE1MXCIsIGNkeDogXCJDaGVtRHJhdyBDRFhcIiwgcG5nOiBcIlBORyBQaWN0dXJlXCIgfSxcclxuICAgIGpzZEZpbGVzMjogeyBqc2Q6IFwiSlNEcmF3IFhNTFwiLCBwbmc6IFwiUE5HIFBpY3R1cmVcIiB9LFxyXG4gICAganNkRmlsZXMzOiB7IGhlbG06IFwiSEVMTVwiLCB4aGVsbTogXCJ4SEVMTVwiIH0sXHJcbiAgICBqc3NzYXZlZGxnOiBudWxsLFxyXG4gICAganNzRmlsZXM6IHsgc2RmOiBcIlNERiBGaWxlXCIsIGNzdjogXCJDU1YgRmlsZVwiLCBqc3NkZjogXCJYbWwgRmlsZVwiLCBqc29uOiBcIkpzb24gRmlsZVwiIH0sXHJcblxyXG4gICAgY2FsbFdlYnNlcnZpY2U6IGZ1bmN0aW9uIChjbWQsIGRhdGEsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhd1NlcnZpY2VzLnVybCA9PSBudWxsIHx8IEpTRHJhd1NlcnZpY2VzLnVybCA9PSBcIlwiKVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KFwiSlNEcmF3IHdlYiBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGVcIik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmFqYXgoSlNEcmF3U2VydmljZXMudXJsICsgXCI/Y21kPVwiICsgY21kLCBjYWxsYmFjaywgZGF0YSk7XHJcbiAgICB9LFxyXG5cclxuICAgIG5lZWRDcm9zc2RvbWFpbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChKU0RyYXdTZXJ2aWNlcy54ZG9tYWluKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gd2luZG93LmxvY2F0aW9uICsgXCJcIjtcclxuICAgICAgICAgICAgdmFyIHAgPSBzLmluZGV4T2YoXCI6Ly9cIik7XHJcbiAgICAgICAgICAgIHZhciBwMiA9IHMuaW5kZXhPZihcIi9cIiwgcCArIDMpO1xyXG4gICAgICAgICAgICB2YXIgaG9zdCA9IHMuc3Vic3RyKDAsIHAyICsgMSk7XHJcbiAgICAgICAgICAgIGlmICghc2NpbC5VdGlscy5zdGFydHN3aXRoKEpTRHJhd1NlcnZpY2VzLnVybC50b0xvd2VyQ2FzZSgpLCBob3N0LnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAganNkRmlsZU9wZW46IGZ1bmN0aW9uIChqc2QpIHtcclxuICAgICAgICB2YXIgbXNnO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uID09IFwiTGl0ZVwiKVxyXG4gICAgICAgICAgICBtc2cgPSB0aGlzLnJlcyhcIlBsZWFzZSBzZWxlY3QgYSBIRUxNIGZpbGVcIikgKyBcIiAoKi5oZWxtLCAqLnhoZWxtKTpcIjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIG1zZyA9IHRoaXMucmVzKFwiUGxlYXNlIHNlbGVjdCBhIGNoZW1pc3RyeSBmaWxlXCIpICsgXCIgKCoubW9sLCAqLnJ4biwgKi5jZHgsICouc2tjLCAqLmhlbG0sICoueGhlbG0sICouc21pbGVzIGV0Yy4pOlwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5uZWVkQ3Jvc3Nkb21haW4oKSkge1xyXG4gICAgICAgICAgICB2YXIgdXJsID0gSlNEcmF3U2VydmljZXMudXJsICsgXCI/Y21kPVwiO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLnVwbG9hZEZpbGUoXCI8aW1nIHNyYz0nXCIgKyBzY2lsLkFwcC5pbWdTbWFsbChcIm9wZW4ucG5nXCIpICsgXCInPlwiICsgdGhpcy5yZXMoXCJJbXBvcnQgRmlsZVwiKSxcclxuICAgICAgICAgICAgICAgIG1zZywgdXJsICsgXCJ4ZG9tYWluLnBvc3RcIiwgZnVuY3Rpb24gKHhmaWxlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuanNvbnAodXJsICsgXCJvcGVuanNkXCIsIGZ1bmN0aW9uIChyZXQpIHsgSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlT3BlbjIoanNkLCByZXQpOyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgX3hmaWxlbmFtZTogeGZpbGVuYW1lIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5qc2RGaWxlT3BlbkRsZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmllbGRzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IHsgdHlwZTogXCJodG1sXCIsIHRlbXBsYXRlOiBcIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOm5vd3JhcCc+XCIgKyBtc2cgKyBcIjwvZGl2PlwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogeyB0eXBlOiBcInBvc3RmaWxlXCIsIGF0dHJpYnV0ZXM6IHsgbmFtZTogXCJmaWxlXCJ9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0YXM6IEpTRHJhdzIuU2VjdXJpdHkua0VkaXRpb24gPT0gXCJMaXRlXCIgPyBudWxsIDogeyB0eXBlOiBcInNlbGVjdFwiLCBpdGVtczogeyBcIlwiOiBcIlwiLCBcInJlYWN0YW50XCI6IFwiSW1wb3J0IGFzIFJlYWN0YW50XCIsIFwicHJvZHVjdFwiOiBcIkltcG9ydCBhcyBQcm9kdWN0XCJ9IH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc2RGaWxlT3BlbkRsZyA9IHNjaWwuRm9ybS5jcmVhdGVEbGdGb3JtKFwiTG9hZCBGaWxlXCIsIGZpZWxkcyxcclxuICAgICAgICAgICAgICAgICAgICB7IHNyYzogc2NpbC5BcHAuaW1nU21hbGwoXCJvcGVuLnBuZ1wiKSwgbGFiZWw6IFwiTG9hZCBGaWxlXCIsIG9uY2xpY2s6IGZ1bmN0aW9uICgpIHsgbWUuanNkRmlsZU9wZW4xKCk7IH0gfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHVzZXBvc3Rmb3JtOiB0cnVlLCBoaWRlbGFiZWw6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuanNkRmlsZU9wZW5EbGcuc2hvdygpO1xyXG4gICAgICAgICAgICB0aGlzLmpzZEZpbGVPcGVuRGxnLmpzZCA9IGpzZDtcclxuICAgICAgICAgICAgdGhpcy5qc2RGaWxlT3BlbkRsZy5mb3JtLnBvc3Rmb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMudXBsb2FkRmlsZShcIjxpbWcgc3JjPSdcIiArIHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL29wZW4uZ2lmXCIpICsgXCInPlwiICsgdGhpcy5yZXMoXCJJbXBvcnQgRmlsZVwiKSxcclxuICAgICAgICAgICAgdGhpcy5yZXMoXCJQbGVhc2Ugc2VsZWN0IGEgY2hlbWlzdHJ5IGZpbGVcIikgKyBcIiAoKi5tb2wsICoucnhuLCAqLmNkeCwgKi5za2MsICouc21pbGVzIGV0Yy4pOlwiLFxyXG4gICAgICAgICAgICBKU0RyYXdTZXJ2aWNlcy51cmwgKyBcIj9jbWQ9b3BlbmpzZFwiLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAocmV0KSB7IEpTRHJhdzIuSlNEcmF3SU8uanNkRmlsZU9wZW4yKGpzZCwgcmV0KTsgfSk7XHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBqc2RGaWxlT3BlbjE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuanNkRmlsZU9wZW5EbGcuZm9ybS5wb3N0KEpTRHJhd1NlcnZpY2VzLnVybCArIFwiP2NtZD1vcGVuanNkXCIsIG51bGwsIGZ1bmN0aW9uIChyZXQpIHtcclxuICAgICAgICAgICAgdmFyIGltcG9ydGFzID0gbWUuanNkRmlsZU9wZW5EbGcuZm9ybS5maWVsZHMuaW1wb3J0YXMgPT0gbnVsbCA/IG51bGwgOiBtZS5qc2RGaWxlT3BlbkRsZy5mb3JtLmZpZWxkcy5pbXBvcnRhcy52YWx1ZTtcclxuICAgICAgICAgICAgbWUuanNkRmlsZU9wZW4yKG1lLmpzZEZpbGVPcGVuRGxnLmpzZCwgcmV0LCBpbXBvcnRhcyk7XHJcbiAgICAgICAgICAgIG1lLmpzZEZpbGVPcGVuRGxnLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcblxyXG4gICAganNkRmlsZU9wZW4yOiBmdW5jdGlvbiAoanNkLCByZXQsIGltcG9ydGFzKSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSByZXQuYmFzZTY0ICE9IG51bGwgPyBKU0RyYXcyLkJhc2U2NC5kZWNvZGUocmV0LmJhc2U2NCkgOiByZXQuY29udGVudHM7XHJcbiAgICAgICAgaWYgKGltcG9ydGFzID09IFwicmVhY3RhbnRcIiB8fCBpbXBvcnRhcyA9PSBcInByb2R1Y3RcIikge1xyXG4gICAgICAgICAgICB2YXIgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgICAgICAgICBpZiAocmV0LmZvcm1hdCA9PSBcIm1vbGZpbGVcIilcclxuICAgICAgICAgICAgICAgIG0uc2V0TW9sZmlsZShkYXRhKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAocmV0LmZvcm1hdCA9PSBcInJ4blwiKVxyXG4gICAgICAgICAgICAgICAgbS5zZXRSeG5maWxlKGRhdGEpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBtLnNldFhtbChkYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChtLmF0b21zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciByeG4gPSBtLnBhcnNlUnhuKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChyeG4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc2QucGFzdGVNb2wobSwgbnVsbCwgaW1wb3J0YXMpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ4bi5hcnJvdyA9PSBudWxsICYmIHJ4bi5wcm9kdWN0cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnhuLnJlYWN0YW50cy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzZC5wYXN0ZU1vbChyeG4ucmVhY3RhbnRzW2ldLCBudWxsLCBpbXBvcnRhcykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbXBvcnRhcyA9PSBcInJlYWN0YW50XCIgJiYgcnhuLnJlYWN0YW50cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnhuLnJlYWN0YW50cy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc2QucGFzdGVNb2wocnhuLnJlYWN0YW50c1tpXSwgbnVsbCwgaW1wb3J0YXMpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbXBvcnRhcyA9PSBcInByb2R1Y3RcIiAmJiByeG4ucHJvZHVjdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ4bi5wcm9kdWN0cy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc2QucGFzdGVNb2wocnhuLnByb2R1Y3RzW2ldLCBudWxsLCBpbXBvcnRhcykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmKVxyXG4gICAgICAgICAgICAgICAgICAgIGpzZC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJObyBzdHJ1Y3R1cmUgaW1wb3J0ZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXQuZm9ybWF0ID09IFwibW9sZmlsZVwiIHx8IHNjaWwuVXRpbHMuZW5kc3dpdGgocmV0LmZpbGVuYW1lLCBcIi5tb2xcIikpXHJcbiAgICAgICAgICAgICAgICBqc2Quc2V0TW9sZmlsZShkYXRhKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAocmV0LmZvcm1hdCA9PSBcInJ4blwiIHx8IHNjaWwuVXRpbHMuZW5kc3dpdGgocmV0LmZpbGVuYW1lLCBcIi5yeG5cIikpXHJcbiAgICAgICAgICAgICAgICBqc2Quc2V0UnhuZmlsZShkYXRhKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAocmV0LmZvcm1hdCA9PSBcInhoZWxtXCIgfHwgc2NpbC5VdGlscy5lbmRzd2l0aChyZXQuZmlsZW5hbWUsIFwiLnhoZWxtXCIpKVxyXG4gICAgICAgICAgICAgICAganNkLnNldFhIZWxtKGRhdGEpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChyZXQuZm9ybWF0ID09IFwiaGVsbVwiIHx8IHNjaWwuVXRpbHMuZW5kc3dpdGgocmV0LmZpbGVuYW1lLCBcIi5oZWxtXCIpKVxyXG4gICAgICAgICAgICAgICAganNkLnNldEhlbG0oZGF0YSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGpzZC5zZXRYbWwoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBqc2RGaWxlU2F2ZTogZnVuY3Rpb24gKGpzZCkge1xyXG4gICAgICAgIGlmIChKU0RyYXcyLkpTRHJhd0lPLmpzZHNhdmVkbGcgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwiZGl2XCIsIHRoaXMucmVzKFwiUGxlYXNlIHNlbGVjdCB0aGUgZmlsZSBmb3JtYXQgdG8gYmUgc2F2ZWQ6IFwiKSwgeyB3aWR0aDogXCI0MjBweFwiLCBtYXJnaW46IFwiMTBweFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgc2VsID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgXCJzZWxlY3RcIik7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzZWwsIFwib3B0aW9uXCIpO1xyXG4gICAgICAgICAgICBpZiAoSlNEcmF3Mi5TZWN1cml0eS5rRWRpdGlvbiA9PSBcIkxpdGVcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGpzZC5vcHRpb25zLmhlbG10b29sYmFyKVxyXG4gICAgICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMubGlzdE9wdGlvbnMoc2VsLCBKU0RyYXcyLkpTRHJhd0lPLmpzZEZpbGVzMywgbnVsbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMubGlzdE9wdGlvbnMoc2VsLCBKU0RyYXcyLkpTRHJhd0lPLmpzZEZpbGVzLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoanNkLm9wdGlvbnMudGxjcGxhdGUpXHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmxpc3RPcHRpb25zKHNlbCwgSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlczIsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2NpbC5VdGlscy5saXN0T3B0aW9ucyhzZWwsIEpTRHJhdzIuSlNEcmF3SU8uanNkRmlsZXMsIG51bGwsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBzID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgXCJkaXZcIiwgbnVsbCwgeyBtYXJnaW5Ub3A6IFwiMjBweFwiLCB0ZXh0QWxpZ246IFwiY2VudGVyXCIgfSk7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQnV0dG9uKHMsIHsgc3JjOiBzY2lsLkFwcC5pbWdTbWFsbChcInN1Ym1pdC5wbmdcIiksIGxhYmVsOiBcIlNhdmUgRmlsZVwiLCBvbmNsaWNrOiBmdW5jdGlvbiAoZSkgeyBKU0RyYXcyLkpTRHJhd0lPLmpzZEZpbGVTYXZlMigpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0gfSk7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQnV0dG9uKHMsIFwiJm5ic3A7XCIpO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbihzLCB7IHNyYzogc2NpbC5BcHAuaW1nU21hbGwoXCJjYW5jZWwucG5nXCIpLCBsYWJlbDogXCJDYW5jZWxcIiwgb25jbGljazogZnVuY3Rpb24gKGUpIHsgSlNEcmF3Mi5KU0RyYXdJTy5qc2RzYXZlZGxnLmhpZGUoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9IH0pO1xyXG5cclxuICAgICAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc2RzYXZlZGxnID0gbmV3IEpTRHJhdzIuRGlhbG9nKFwiPGltZyBzcmM9J1wiICsgc2NpbC5BcHAuaW1nU21hbGwoXCJzYXZlLnBuZ1wiKSArIFwiJz5cIiArIHRoaXMucmVzKFwiU2F2ZSBGaWxlXCIpLCBkaXYpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkpTRHJhd0lPLmpzZHNhdmVkbGcuc2VsID0gc2VsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBKU0RyYXcyLkpTRHJhd0lPLmpzZHNhdmVkbGcuanNkID0ganNkO1xyXG4gICAgICAgIEpTRHJhdzIuSlNEcmF3SU8uanNkc2F2ZWRsZy5zaG93KCk7XHJcbiAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc2RzYXZlZGxnLnNlbC5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgIH0sXHJcblxyXG4gICAganNkRmlsZVNhdmUyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5qc2RGaWxlU2F2ZTMoSlNEcmF3Mi5KU0RyYXdJTy5qc2RzYXZlZGxnLnNlbC52YWx1ZSwgSlNEcmF3Mi5KU0RyYXdJTy5qc2RzYXZlZGxnLmpzZCk7XHJcbiAgICAgICAgdGhpcy5qc2RzYXZlZGxnLmhpZGUoKTtcclxuICAgIH0sXHJcblxyXG4gICAganNkRmlsZVNhdmUzOiBmdW5jdGlvbiAoZXh0LCBqc2QpIHtcclxuICAgICAgICB2YXIgcztcclxuICAgICAgICBpZiAoZXh0ID09IFwiaGVsbVwiKVxyXG4gICAgICAgICAgICBzID0ganNkLmdldEhlbG0oKTtcclxuICAgICAgICBlbHNlIGlmIChleHQgPT0gXCJ4aGVsbVwiKVxyXG4gICAgICAgICAgICBzID0ganNkLmdldFhIZWxtKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBzID0ganNkLmdldFhtbCgpO1xyXG5cclxuICAgICAgICB2YXIgZHQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHZhciBwcmVmaXggPSBKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uID09IFwiTGl0ZVwiICYmIGpzZC5vcHRpb25zLmhlbG10b29sYmFyID8gXCJIRUxNXCIgOiBcIkpTRHJhd1wiO1xyXG4gICAgICAgIHZhciBmaWxlbmFtZSA9IHByZWZpeCArIGR0LmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIChkdC5nZXRNb250aCgpICsgMSkgKyBcIi1cIiArIGR0LmdldERhdGUoKSArIFwiLlwiICsgZXh0O1xyXG4gICAgICAgIHZhciBhcmdzID0geyBjbGllbnQ6IFwianNkcmF3XCIsIHdyYXBwZXI6IFwibm9uZVwiLCBmaWxlbmFtZTogZmlsZW5hbWUsIGNvbnRlbnRzOiBzIH07XHJcbiAgICAgICAgc2NpbC5VdGlscy5wb3N0KEpTRHJhd1NlcnZpY2VzLnVybCArIFwiP2NtZD1zYXZlZmlsZVwiLCBhcmdzLCBcIl9ibGFua1wiKTtcclxuICAgIH0sXHJcblxyXG4gICAgY2xlYW51cDogZnVuY3Rpb24gKGpzZCkge1xyXG4gICAgICAgIHZhciBzZWxlY3RlZCA9IGpzZC5tLmNsb25lKHRydWUpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZCAhPSBudWxsICYmIHNlbGVjdGVkLmF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICBzZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgdmFyIHNtaWxlcyA9IHNlbGVjdGVkICE9IG51bGwgPyBzZWxlY3RlZC5nZXRTbWlsZXMoKSA6IGpzZC5nZXRTbWlsZXMoKTtcclxuICAgICAgICBpZiAoc21pbGVzID09IG51bGwgfHwgc21pbGVzID09IFwiXCIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdmFyIHVybCA9IEpTRHJhd1NlcnZpY2VzLnVybDtcclxuICAgICAgICBpZiAodXJsID09IG51bGwpIHtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydChcIkpTRHJhdyBXZWIgU2VydmljZSBpcyBub3QgY29uZmlndXJlZCB5ZXQuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbCA9IHdpbmRvdy5sb2NhdGlvbjtcclxuICAgICAgICB2YXIgcyA9IGwucHJvdG9jb2wgKyBcIi8vXCIgKyBsLmhvc3QgKyBcIi9cIjtcclxuXHJcbiAgICAgICAgdmFyIGZ1biA9IG51bGw7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuc3RhcnRzd2l0aCh1cmwudG9Mb3dlckNhc2UoKSwgcy50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICBmdW4gPSBzY2lsLlV0aWxzLmFqYXg7XHJcbiAgICAgICAgICAgIHNtaWxlcyA9IHNlbGVjdGVkICE9IG51bGwgPyBzZWxlY3RlZC5nZXRYbWwoKSA6IGpzZC5nZXRYbWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZ1biA9IHNjaWwuVXRpbHMuanNvbnA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgb3BlbmJvbmRzID0gW107XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc2QubS5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGIgPSBqc2QubS5ib25kc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChiLmExLnNlbGVjdGVkICE9IGIuYTIuc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbmJvbmRzLnB1c2goYik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgICAgZnVuKHVybCArIFwiP2NtZD1jbGVhbnVwXCIsIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbSA9IG1lLl9kYXRhMk1vbChkYXRhKTtcclxuICAgICAgICAgICAgICAgIGlmIChtICE9IG51bGwgJiYgIW0uaXNFbXB0eSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbS5zZXRCb25kTGVuZ3RoKGpzZC5ib25kbGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtZS5fY29ubmVjdE9wZW5Cb25kcyhqc2QubSwgbSwgb3BlbmJvbmRzLCBqc2QuYm9uZGxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IHNlbGVjdGVkLnJlY3QoKS5jZW50ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlcjIgPSBtLnJlY3QoKS5jZW50ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbS5vZmZzZXQoY2VudGVyLnggLSBjZW50ZXIyLngsIGNlbnRlci55IC0gY2VudGVyMi55KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGpzZC5wdXNodW5kbygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpzZC5kZWxTZWxlY3RlZCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBtLnNldFNlbGVjdGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpzZC5tLm1lcmdlTW9sKG0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGpzZC5yZWZyZXNoKHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1lLl9zZXRNb2xEYXRhKGpzZCwgZGF0YSwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCB7IGlucHV0OiBzbWlsZXMsIGlucHV0Zm9ybWF0OiBcImpzZHJhd1wiIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBfY29ubmVjdE9wZW5Cb25kczogZnVuY3Rpb24gKGhvc3QsIG0sIGJvbmRzLCBib25kbGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKGJvbmRzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChib25kcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHZhciBib25kID0gYm9uZHNbaV07XHJcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IGJvbmQuYTEuc2VsZWN0ZWQgPyBib25kLmExIDogYm9uZC5hMjtcclxuICAgICAgICAgICAgICAgIHZhciBmaXggPSBib25kLmExLnNlbGVjdGVkID8gYm9uZC5hMiA6IGJvbmQuYTE7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IG0uZ2V0T2JqZWN0QnlJZChtb3ZlLmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChhID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIG5iID0gYm9uZC5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgbmIucmVwbGFjZUF0b20obW92ZSwgYSk7XHJcbiAgICAgICAgICAgICAgICBtLmFkZEJvbmQobmIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBib25kID0gYm9uZHNbMF07XHJcbiAgICAgICAgdmFyIG1vdmUgPSBib25kLmExLnNlbGVjdGVkID8gYm9uZC5hMSA6IGJvbmQuYTI7XHJcbiAgICAgICAgdmFyIGZpeCA9IGJvbmQuYTEuc2VsZWN0ZWQgPyBib25kLmEyIDogYm9uZC5hMTtcclxuXHJcbiAgICAgICAgdmFyIGEgPSBtLmdldE9iamVjdEJ5SWQobW92ZS5pZCk7XHJcbiAgICAgICAgaWYgKGEgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAvLyB0cmFuc2xhdGVcclxuICAgICAgICB2YXIgcDtcclxuICAgICAgICBpZiAoYm9uZC5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB2YXIgaSA9IHNjaWwuVXRpbHMuaW5kZXhPZihob3N0LmJvbmRzLCBib25kKTtcclxuICAgICAgICAgICAgaG9zdC5ib25kcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIHAgPSBob3N0Lmd1ZXNzQm9uZChmaXgsIGJvbmRsZW5ndGgpO1xyXG4gICAgICAgICAgICBob3N0LmJvbmRzLnNwbGljZShpLCAwLCBib25kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHAgPSBtb3ZlLnA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG0ub2Zmc2V0KHAueCAtIGEucC54LCBwLnkgLSBhLnAueSk7XHJcblxyXG4gICAgICAgIC8vIHJvdGF0ZVxyXG4gICAgICAgIHZhciBwMiA9IG0uZ3Vlc3NCb25kKGEsIGJvbmRsZW5ndGgpO1xyXG4gICAgICAgIHZhciBhbmcxID0gZml4LnAuYW5nbGVUbyhwKTtcclxuICAgICAgICB2YXIgYW5nMiA9IHAyLmFuZ2xlVG8ocCk7XHJcbiAgICAgICAgbS5yb3RhdGUocCwgYW5nMSAtIGFuZzIpO1xyXG5cclxuICAgICAgICB2YXIgbmIgPSBib25kLmNsb25lKCk7XHJcbiAgICAgICAgbmIucmVwbGFjZUF0b20obW92ZSwgYSk7XHJcbiAgICAgICAgbS5hZGRCb25kKG5iKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcblxyXG4gICAgX2RhdGEyTW9sOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHZhciBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0YSkgPT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgbSA9IG0uc2V0WG1sKGRhdGEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgbSA9IG0uc2V0WG1sKGRhdGEub3V0cHV0KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH0sXHJcblxyXG4gICAgX3NldE1vbERhdGE6IGZ1bmN0aW9uIChqc2QsIGRhdGEsIHEsIGNsZWFyKSB7XHJcbiAgICAgICAgdmFyIG0gPSB0aGlzLl9kYXRhMk1vbChkYXRhKTtcclxuICAgICAgICBpZiAobSA9PSBudWxsIHx8IG0uaXNFbXB0eSgpKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGpzZC5wdXNodW5kbygpO1xyXG4gICAgICAgIGlmIChqc2Quc2V0WG1sKG0uZ2V0WG1sKCkpICE9IG51bGwpXHJcbiAgICAgICAgICAgIGpzZC5yZWZyZXNoKHRydWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBuYW1lMnN0cnVjdHVyZTogZnVuY3Rpb24gKGpzZCkge1xyXG4gICAgICAgIHZhciBmbiA9IGZ1bmN0aW9uIChxKSB7XHJcbiAgICAgICAgICAgIHZhciB1cmw7XHJcbiAgICAgICAgICAgIGlmIChKU0RyYXdTZXJ2aWNlcy5pZDJzICE9IG51bGwgJiYgSlNEcmF3U2VydmljZXMuaWQycy51cmwgIT0gbnVsbCAmJiBKU0RyYXdTZXJ2aWNlcy5pZDJzLnJlZ2V4ICE9IG51bGwgJiYgcS5tYXRjaChKU0RyYXdTZXJ2aWNlcy5pZDJzLnJlZ2V4KSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdXJsID0gSlNEcmF3U2VydmljZXMuaWQycy51cmw7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKEpTRHJhd1NlcnZpY2VzLm4ycyAhPSBudWxsICYmIEpTRHJhd1NlcnZpY2VzLm4ycy51cmwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHVybCA9IEpTRHJhd1NlcnZpY2VzLm4ycy51cmw7XHJcblxyXG4gICAgICAgICAgICBpZiAodXJsID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJOYW1lLXRvLXN0cnVjdHVyZSBpcyBub3QgY29uZmlndXJlZCB5ZXQuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmpzb25wKHVybCwgZnVuY3Rpb24gKGRhdGEpIHsgSlNEcmF3Mi5KU0RyYXdJTy5fc2V0TW9sRGF0YShqc2QsIGRhdGEsIHEpOyB9LCB7IHE6IHEsIGZtdDogXCJqc2RyYXdcIiB9LCB7IHNob3dwcm9ncmVzczogdHJ1ZSB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBjYXB0aW9uLCBtZXNzYWdlLCBkZWZhdWx0dmFsLCBidG4sIGNhbGxiYWNrLFxyXG4gICAgICAgIHZhciBtc2cgPSBKU0RyYXdTZXJ2aWNlcy5uMnMgIT0gbnVsbCAmJiBKU0RyYXdTZXJ2aWNlcy51cmwubXNnICE9IG51bGwgPyBKU0RyYXdTZXJ2aWNlcy5uMnMubXNnIDogdGhpcy5yZXMoXCJQbGVhc2UgdHlwZSBjaGVtaWNhbCBuYW1lLCBDQVMsIFNNSUxFUyBldGMuXCIpICsgXCI6XCI7XHJcbiAgICAgICAgc2NpbC5VdGlscy5wcm9tcHQyKHtcclxuICAgICAgICAgICAgY2FwdGlvbjogXCI8aW1nIHNyYz0nXCIgKyBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9uMnMuZ2lmXCIpICsgXCInPlwiICsgdGhpcy5yZXMoXCJOYW1lIHRvIFN0cnVjdHVyZVwiKSxcclxuICAgICAgICAgICAgbWVzc2FnZTogbXNnLFxyXG4gICAgICAgICAgICBidXR0b246IHRoaXMucmVzKFwiQ29udmVydFwiKSxcclxuICAgICAgICAgICAgY2FsbGJhY2s6IGZuLFxyXG4gICAgICAgICAgICBhdXRvc3VnZ2VzdHVybDogKEpTRHJhd1NlcnZpY2VzLm4ycyAhPSBudWxsID8gSlNEcmF3U2VydmljZXMubjJzLnN1Z2dlc3QgOiBudWxsKSxcclxuICAgICAgICAgICAgaWNvbnVybDogc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvbmFtZTJzLmdpZlwiKSxcclxuICAgICAgICAgICAgb3duZXI6IGpzZFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICByZXM6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTRHJhdzIuTGFuZ3VhZ2UucmVzKHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBqc3NGaWxlT3BlbjogZnVuY3Rpb24gKGpzcykge1xyXG4gICAgICAgIHZhciBjaGVjayA9IHsgbXNnOiBcIkFwcGVuZGluZyBNb2RlXCIgfTtcclxuICAgICAgICBpZiAoanNzLm9wdGlvbnMuYXBwZW5kaW5nbW9kZSkge1xyXG4gICAgICAgICAgICBjaGVjay5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2hlY2suZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3RydWN0dXJlY29sdW1uID0ganNzLm9wdGlvbnMuc3RydWN0dXJlY29sdW1uID09IG51bGwgPyBcIlwiIDoganNzLm9wdGlvbnMuc3RydWN0dXJlY29sdW1uO1xyXG4gICAgICAgIHNjaWwuVXRpbHMudXBsb2FkRmlsZShcIjxpbWcgc3JjPSdcIiArIHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL29wZW4uZ2lmXCIpICsgXCInPlwiICsgdGhpcy5yZXMoXCJPcGVuIEZpbGVcIiksXHJcbiAgICAgICAgICAgIHRoaXMucmVzKFwiUGxlYXNlIHNlbGVjdCBhIGZpbGVcIikgKyBcIiAoKi5zZGYsKi5yZGYsKi54bHMsKi5jc3YsKi5zbWlsZXMpOlwiLCBKU0RyYXdTZXJ2aWNlcy51cmwgKyBcIj9jbWQ9b3Blbmpzc1wiLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAocmV0KSB7IEpTRHJhdzIuSlNEcmF3SU8uanNzRmlsZU9wZW4yKGpzcywgcmV0KTsgfSwgeyBzdHJ1Y3R1cmVjb2x1bW46IHN0cnVjdHVyZWNvbHVtbiB9LCBjaGVjayk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5lZWRDcm9zc2RvbWFpbigpKSB7XHJcbiAgICAgICAgICAgIHZhciB1cmwgPSBKU0RyYXdTZXJ2aWNlcy51cmwgKyBcIj9jbWQ9XCI7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMudXBsb2FkRmlsZShcIjxpbWcgc3JjPSdcIiArIHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL29wZW4uZ2lmXCIpICsgXCInPlwiICsgdGhpcy5yZXMoXCJPcGVuIEZpbGVcIiksXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcyhcIlBsZWFzZSBzZWxlY3QgYSBmaWxlXCIpICsgXCIgKCouc2RmLCoucmRmLCoueGxzLCouY3N2LCouc21pbGVzKVwiLFxyXG4gICAgICAgICAgICAgICAgdXJsICsgXCJ4ZG9tYWluLnBvc3RcIiwgZnVuY3Rpb24gKHhmaWxlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuanNvbnAodXJsICsgXCJvcGVuanNzXCIsIGZ1bmN0aW9uIChyZXQpIHsgSlNEcmF3Mi5KU0RyYXdJTy5qc3NGaWxlT3BlbjIoanNkLCByZXQpOyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgX3hmaWxlbmFtZTogeGZpbGVuYW1lLCBzdHJ1Y3R1cmVjb2x1bW46IHN0cnVjdHVyZWNvbHVtbiB9KTtcclxuICAgICAgICAgICAgICAgIH0sIG51bGwsIG51bGwsIG51bGwsIG51bGwsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy51cGxvYWRGaWxlKFwiPGltZyBzcmM9J1wiICsgc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvb3Blbi5naWZcIikgKyBcIic+XCIgKyB0aGlzLnJlcyhcIk9wZW4gRmlsZVwiKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzKFwiUGxlYXNlIHNlbGVjdCBhIGZpbGVcIikgKyBcIiAoKi5zZGYsKi5yZGYsKi54bHMsKi5jc3YsKi5zbWlsZXMpOlwiLCBKU0RyYXdTZXJ2aWNlcy51cmwgKyBcIj9jbWQ9b3Blbmpzc1wiLFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJldCkgeyBKU0RyYXcyLkpTRHJhd0lPLmpzc0ZpbGVPcGVuMihqc3MsIHJldCk7IH0sIHsgc3RydWN0dXJlY29sdW1uOiBzdHJ1Y3R1cmVjb2x1bW4gfSwgY2hlY2spO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAganNzRmlsZU9wZW4yOiBmdW5jdGlvbiAoanNzLCByZXQsIGNoZWNrKSB7XHJcbiAgICAgICAgdmFyIGFwcGVuZGluZ21vZGUgPSBzY2lsLlV0aWxzLnVwbG9hZGZpbGVEbGcuY2hlY2suY2hlY2tlZDtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5lbmRzd2l0aChyZXQuZmlsZW5hbWUsIFwiLnJkZlwiKSlcclxuICAgICAgICAgICAganNzLnNldFJkZihyZXQuYmFzZTY0ICE9IG51bGwgPyBKU0RyYXcyLkJhc2U2NC5kZWNvZGUocmV0LmJhc2U2NCkgOiByZXQuY29udGVudHMsIG51bGwsIG51bGwsICFhcHBlbmRpbmdtb2RlKTtcclxuICAgICAgICAvL2Vsc2UgaWYgKHNjaWwuVXRpbHMuZW5kc3dpdGgocmV0LmZpbGVuYW1lLCBcIi5zZGZcIikpXHJcbiAgICAgICAgLy8gICAganNzLnNldFNkZihyZXQuYmFzZTY0ICE9IG51bGwgPyBKU0RyYXcyLkJhc2U2NC5kZWNvZGUocmV0LmJhc2U2NCkgOiByZXQuY29udGVudHMsIG51bGwsIG51bGwsICFhcHBlbmRpbmdtb2RlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGpzcy5zZXRYbWwocmV0LmJhc2U2NCAhPSBudWxsID8gSlNEcmF3Mi5CYXNlNjQuZGVjb2RlKHJldC5iYXNlNjQpIDogcmV0LmNvbnRlbnRzLCBudWxsLCAhYXBwZW5kaW5nbW9kZSwgYXBwZW5kaW5nbW9kZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGpzc0ZpbGVTYXZlOiBmdW5jdGlvbiAoanNzKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuSlNEcmF3SU8uanNzc2F2ZWRsZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQobnVsbCwgXCJkaXZcIiwgdGhpcy5yZXMoXCJQbGVhc2Ugc2VsZWN0IGEgZmlsZSB0eXBlXCIpICsgXCI6XCIsIHsgd2lkdGg6IFwiMzUwcHhcIiwgbWFyZ2luOiBcIjEwcHhcIiB9KTtcclxuICAgICAgICAgICAgdmFyIHNlbCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwic2VsZWN0XCIpO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2VsLCBcIm9wdGlvblwiKTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5saXN0T3B0aW9ucyhzZWwsIEpTRHJhdzIuSlNEcmF3SU8uanNzRmlsZXMsIG51bGwsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBzID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRpdiwgXCJkaXZcIiwgbnVsbCwgeyBtYXJnaW5Ub3A6IFwiMjBweFwiLCB0ZXh0QWxpZ246IFwiY2VudGVyXCIgfSk7XHJcbiAgICAgICAgICAgIHZhciBidG4gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocywgXCJidXR0b25cIiwgXCI8aW1nIHNyYz0nXCIgKyBzY2lsLkFwcC5pbWdTbWFsbChcInN1Ym1pdC5wbmdcIikgKyBcIic+XCIgKyB0aGlzLnJlcyhcIlNhdmVcIikpO1xyXG4gICAgICAgICAgICBkb2pvLmNvbm5lY3QoYnRuLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHsgSlNEcmF3Mi5KU0RyYXdJTy5qc3NGaWxlU2F2ZTIoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcclxuICAgICAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc3NzYXZlZGxnID0gbmV3IEpTRHJhdzIuRGlhbG9nKFwiPGltZyBzcmM9J1wiICsgc2NpbC5BcHAuaW1nU21hbGwoXCJzYXZlLnBuZ1wiKSArIFwiJz5cIiArIHRoaXMucmVzKFwiU2F2ZSBGaWxlXCIpLCBkaXYpO1xyXG4gICAgICAgICAgICBKU0RyYXcyLkpTRHJhd0lPLmpzc3NhdmVkbGcuc2VsID0gc2VsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBKU0RyYXcyLkpTRHJhd0lPLmpzc3NhdmVkbGcuanNzID0ganNzO1xyXG4gICAgICAgIEpTRHJhdzIuSlNEcmF3SU8uanNzc2F2ZWRsZy5zaG93KCk7XHJcbiAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc3NzYXZlZGxnLnNlbC5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgIH0sXHJcblxyXG4gICAganNzRmlsZVNhdmUyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IEpTRHJhdzIuSlNEcmF3SU8uanNzc2F2ZWRsZy5zZWwudmFsdWU7XHJcbiAgICAgICAgdmFyIGR0ID0gbmV3IERhdGUoKTtcclxuICAgICAgICB2YXIgZmlsZW5hbWUgPSBcIkpTRHJhd1RhYmxlXCIgKyBkdC5nZXRGdWxsWWVhcigpICsgXCItXCIgKyAoZHQuZ2V0TW9udGgoKSArIDEpICsgXCItXCIgKyBkdC5nZXREYXRlKCkgKyBcIi5cIiArIGV4dDtcclxuICAgICAgICB2YXIgYXJncyA9IHsgY2xpZW50OiBcImpzc2RmXCIsIHdyYXBwZXI6IFwibm9uZVwiLCBmaWxlbmFtZTogZmlsZW5hbWUgfTtcclxuICAgICAgICBzd2l0Y2ggKGV4dCkge1xyXG4gICAgICAgICAgICBjYXNlIFwic2RmXCI6XHJcbiAgICAgICAgICAgICAgICBhcmdzLmNvbnRlbnRzID0gSlNEcmF3Mi5KU0RyYXdJTy5qc3NzYXZlZGxnLmpzcy5nZXRTZGYoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwianNzZGZcIjpcclxuICAgICAgICAgICAgICAgIGFyZ3MuY29udGVudHMgPSBKU0RyYXcyLkpTRHJhd0lPLmpzc3NhdmVkbGcuanNzLmdldFhtbCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJqc29uXCI6XHJcbiAgICAgICAgICAgICAgICBhcmdzLmNvbnRlbnRzID0gc2NpbC5VdGlscy5qc29uMnN0cihKU0RyYXcyLkpTRHJhd0lPLmpzc3NhdmVkbGcuanNzLmdldEpzb24oKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImNzdlwiOlxyXG4gICAgICAgICAgICAgICAgYXJncy5jb250ZW50cyA9IEpTRHJhdzIuSlNEcmF3SU8uanNzc2F2ZWRsZy5qc3MuZ2V0Q3N2KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgc2NpbC5VdGlscy5wb3N0KEpTRHJhd1NlcnZpY2VzLnVybCArIFwiP2NtZD1zYXZlZmlsZVwiLCBhcmdzLCBcIl9ibGFua1wiKTtcclxuICAgICAgICBKU0RyYXcyLkpTRHJhd0lPLmpzc3NhdmVkbGcuaGlkZSgpO1xyXG4gICAgfVxyXG59OyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbkpTRHJhdzIuTGFuZ3VhZ2UgPSB7XHJcbiAgICBjdXJyZW50OiBudWxsLFxyXG4gICAgdXNlOiBmdW5jdGlvbiAobGFuZykge1xyXG4gICAgfSxcclxuXHJcbiAgICByZXM6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9XHJcbn07IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5MYXNzbyA9IHNjaWxsaWdlbmNlLmV4dGVuZChzY2lsbGlnZW5jZS5fYmFzZSwge1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChleHRyYSwgbGluZXdpZHRoLCBzZWxlY3RpbmcpIHtcclxuICAgICAgICB0aGlzLnN1cmZhY2UgPSBleHRyYTtcclxuICAgICAgICB0aGlzLmxpbmV3aWR0aCA9IGxpbmV3aWR0aDtcclxuICAgICAgICB0aGlzLmxpc3QgPSBzZWxlY3RpbmcgPyBbXSA6IG51bGw7XHJcblxyXG4gICAgICAgIHRoaXMubGFzdGhpdHMgPSBbXTtcclxuICAgICAgICB0aGlzLmN1cmhpdHMgPSBbXTtcclxuICAgICAgICB0aGlzLmxpbmUgPSBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBoaXQ6IGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaW5kZXhPZih0aGlzLmxhc3RoaXRzLCBhKSA+PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGEuc2VsZWN0ZWQgPSAhYS5zZWxlY3RlZDtcclxuICAgICAgICBpZiAoYS5zZWxlY3RlZClcclxuICAgICAgICAgICAgYS5kcmF3U2VsZWN0KHRoaXMpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUoYSk7XHJcbiAgICAgICAgdGhpcy5jdXJoaXRzLnB1c2goYSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVuZEhpdHM6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcclxuICAgICAgICB0aGlzLmxhc3RoaXRzID0gdGhpcy5jdXJoaXRzO1xyXG4gICAgICAgIHRoaXMuY3VyaGl0cyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5saW5lICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuc3VyZmFjZS5yZW1vdmUodGhpcy5saW5lKTtcclxuICAgICAgICB0aGlzLmxpbmUgPSBKU0RyYXcyLkRyYXdlci5kcmF3TGluZSh0aGlzLnN1cmZhY2UsIHN0YXJ0LCBlbmQsIFwiI2FhZlwiLCB0aGlzLmxpbmV3aWR0aCAvIDIpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3OiBmdW5jdGlvbiAoYSwgcG9pbnRzKSB7XHJcbiAgICAgICAgaWYgKHBvaW50cy54ICE9IG51bGwpXHJcbiAgICAgICAgICAgIHBvaW50cyA9IFtwb2ludHNdO1xyXG5cclxuICAgICAgICB2YXIgbm9kZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgcCA9IHBvaW50c1tpXTtcclxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnN1cmZhY2UuY3JlYXRlQ2lyY2xlKHsgY3g6IHAueCwgY3k6IHAueSwgcjogdGhpcy5saW5ld2lkdGggKiAyIH0pLnNldEZpbGwoSlNEcmF3Mi5FZGl0b3IuQ09MT1JTRUxFQ1RFRCk7XHJcbiAgICAgICAgICAgIG5vZGVzLnB1c2goYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5saXN0ICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMubGlzdC5wdXNoKHsgYTogYSwgbm9kZXM6IG5vZGVzIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIHJlbW92ZTogZnVuY3Rpb24gKGEpIHtcclxuICAgICAgICB2YXIgbm9kZXMgPSBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxpc3RbaV0uYSA9PSBhKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlcyA9IHRoaXMubGlzdFtpXS5ub2RlcztcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5vZGVzID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgdGhpcy5zdXJmYWNlLnJlbW92ZShub2Rlc1tpXSk7XHJcbiAgICB9XHJcbn0pOyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbkpTRHJhdzIuUFQgPSB7XHJcbiAgICBjb21tb25Vc2VkOiB7IEM6IFwiQ1wiLCBOOiBcIk5cIiwgTzogXCJPXCIsIFM6IFwiU1wiLCBQOiBcIlBcIiwgRjogXCJGXCIsIENsOiBcIkxcIiwgQnI6IFwiQlwiLCBJOiBcIklcIiwgSDogXCJILEQsVFwiLCBTaTogbnVsbCwgUjogXCJSXCIgfSxcclxuXHJcbiAgICBnZXRDb21tb25Vc2VkRWxlbWVudHM6IGZ1bmN0aW9uIChmb3J3aGF0KSB7XHJcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcclxuICAgICAgICBpZiAoZm9yd2hhdCA9PSBcIm1lbnVcIikge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBlIGluIEpTRHJhdzIuUFQuY29tbW9uVXNlZClcclxuICAgICAgICAgICAgICAgIGxpc3QucHVzaCh7IGNhcHRpb246IGUsIHNob3J0Y3V0OiBKU0RyYXcyLlBULmNvbW1vblVzZWRbZV0gfSk7XHJcbiAgICAgICAgICAgIGxpc3QucHVzaChcIi1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBlIGluIHRoaXMuY29tbW9uVXNlZClcclxuICAgICAgICAgICAgICAgIGxpc3QucHVzaChlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vbGlzdC5wdXNoKFwiLi4uXCIpO1xyXG4gICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgfSxcclxuXHJcbiAgICAnKic6IHsgYTogMCB9LFxyXG4gICAgJ1gnOiB7IGE6IDAgfSwgLy8gaGFsb2dlblxyXG4gICAgJ1InOiB7IGE6IDAgfSxcclxuXHJcbiAgICBIOiB7IGE6IDEsIGM6ICc5MDkwOTAnLCBtOiAxLjAwNzksIGVtOiAxLjAwNzgsIGU6IDEsIHY6IFsxXSwgaXNvOiB7IDE6IDEuMDA3OCwgMjogMi4wMTQxLCAzOiAzLjAxNjF9IH0sXHJcbiAgICAvLyBKU0RyYXcuUHJvXHJcbiAgICBCZTogeyBhOiA0LCBjOiAnQzJGRjAwJywgbTogOS4wMTIyLCBlbTogOS4wMTIyLCB2OiBbMCwgMl0sIGlzbzogeyA5OiA5LjAxMjJ9IH0sXHJcbiAgICBCOiB7IGE6IDUsIGM6ICdGRkI1QjUnLCBtOiAxMC44MTEsIGVtOiAxMS4wMDkzLCBlOiAzLCB2OiBbM10sIGlzbzogeyAxMDogMTAuMDEyOSwgMTE6IDExLjAwOTN9IH0sXHJcbiAgICBDOiB7IGE6IDYsIGM6ICcwMDAwMDAnLCBtOiAxMi4wMTA3LCBlbTogMTIsIGU6IDQsIHY6IFs0XSwgaXNvOiB7IDEyOiAxMiwgMTM6IDEzLjAwMzR9IH0sXHJcbiAgICBOOiB7IGE6IDcsIGM6ICczMDUwRjgnLCBtOiAxNC4wMDY3LCBlbTogMTQuMDAzMSwgZTogNSwgdjogWzNdLCBpc286IHsgMTQ6IDE0LjAwMzEsIDE1OiAxNS4wMDAxfSB9LFxyXG4gICAgTzogeyBhOiA4LCBjOiAnRkYwRDBEJywgbTogMTUuOTk5NCwgZW06IDE1Ljk5NDksIGU6IDYsIHY6IFsyXSwgaXNvOiB7IDE2OiAxNS45OTQ5LCAxNzogMTYuOTk5MSwgMTg6IDE3Ljk5OTJ9IH0sXHJcbiAgICBGOiB7IGE6IDksIGM6ICc5MEUwNTAnLCBtOiAxOC45OTg0LCBlbTogMTguOTk4NCwgZTogNywgdjogWzFdLCBpc286IHsgMTk6IDE4Ljk5ODR9IH0sXHJcbiAgICAvLyBKU0RyYXcuUHJvXHJcbiAgICBOYTogeyBhOiAxMSwgYzogJ0FCNUNGMicsIG06IDIyLjk4OTgsIGVtOiAyMi45ODk4LCB2OiBbMCwgMV0sIGlzbzogeyAyMzogMjIuOTg5OH0gfSxcclxuICAgIC8vIEpTRHJhdy5Qcm9cclxuICAgIFNpOiB7IGE6IDE0LCBjOiAnRjBDOEEwJywgbTogMjguMDg1NSwgZW06IDI3Ljk3NjksIGU6IDQsIHY6IFs0XSwgaXNvOiB7IDI4OiAyNy45NzY5LCAyOTogMjguOTc2NSwgMzA6IDI5Ljk3Mzh9IH0sXHJcbiAgICBQOiB7IGE6IDE1LCBjOiAnRkY4MDAwJywgbTogMzAuOTczOCwgZW06IDMwLjk3MzgsIGU6IDUsIHY6IFszLCA1XSwgaXNvOiB7IDMxOiAzMC45NzM4fSB9LFxyXG4gICAgUzogeyBhOiAxNiwgYzogJ0MwQzAwMCcsIG06IDMyLjA2NSwgZW06IDMxLjk3MjEsIGU6IDYsIHY6IFsyLCA0LCA2XSwgaXNvOiB7IDMyOiAzMS45NzIxLCAzMzogMzIuOTcxNSwgMzQ6IDMzLjk2NzksIDM2OiAzNS45NjcxfSB9LFxyXG4gICAgQ2w6IHsgYTogMTcsIGM6ICcxRkYwMUYnLCBtOiAzNS40NTMsIGVtOiAzNC45Njg5LCBlOiA3LCB2OiBbMSwgMywgNSwgN10sIGlzbzogeyAzNTogMzQuOTY4OSwgMzc6IDM2Ljk2NTl9IH0sXHJcbiAgICAvLyBKU0RyYXcuUHJvXHJcbiAgICBLOiB7IGE6IDE5LCBjOiAnOEY0MEQ0JywgbTogMzkuMDk4MywgZW06IDM4Ljk2MzcsIHY6IFswLCAxXSwgaXNvOiB7IDM5OiAzOC45NjM3LCA0MDogMzkuOTY0LCA0MTogNDAuOTYxOH0gfSxcclxuICAgIENhOiB7IGE6IDIwLCBjOiAnM0RGRjAwJywgbTogNDAuMDc4LCBlbTogMzkuOTYyNiwgdjogWzAsIDJdLCBpc286IHsgNDA6IDM5Ljk2MjYsIDQyOiA0MS45NTg2LCA0MzogNDIuOTU4OCwgNDQ6IDQzLjk1NTUsIDQ2OiA0NS45NTM3LCA0ODogNDcuOTUyNX0gfSxcclxuICAgIC8vIEpTRHJhdy5Qcm9cclxuICAgIEdlOiB7IGE6IDMyLCBjOiAnNjY4RjhGJywgbTogNzIuNjQsIGVtOiA3My45MjEyLCB2OiBbNCwgMl0sIGlzbzogeyA3MDogNjkuOTI0MywgNzI6IDcxLjkyMjEsIDczOiA3Mi45MjM1LCA3NDogNzMuOTIxMiwgNzY6IDc1LjkyMTR9IH0sXHJcbiAgICBBczogeyBhOiAzMywgYzogJ0JEODBFMycsIG06IDc0LjkyMTYsIGVtOiA3NC45MjE2LCBlOiA1LCB2OiBbMywgNV0sIGlzbzogeyA3NTogNzQuOTIxNn0gfSxcclxuICAgIFNlOiB7IGE6IDM0LCBjOiAnRkZBMTAwJywgbTogNzguOTYsIGVtOiA3OS45MTY1LCBlOiA2LCB2OiBbMiwgNCwgNl0sIGlzbzogeyA3NDogNzMuOTIyNSwgNzY6IDc1LjkxOTIsIDc3OiA3Ni45MTk5LCA3ODogNzcuOTE3MywgODA6IDc5LjkxNjUsIDgyOiA4MS45MTY3fSB9LFxyXG4gICAgQnI6IHsgYTogMzUsIGM6ICdBNjI5MjknLCBtOiA3OS45MDQsIGVtOiA3OC45MTgzLCBlOiA3LCB2OiBbMSwgMywgNSwgN10sIGlzbzogeyA3OTogNzguOTE4MywgODE6IDgwLjkxNjN9IH0sXHJcbiAgICAvLyBKU0RyYXcuUHJvXHJcbiAgICBJOiB7IGE6IDUzLCBjOiAnOTQwMDk0JywgbTogMTI2LjkwNCwgZW06IDEyNi45MDQsIGU6IDcsIHY6IFsxLCAzLCA1LCA3XSwgaXNvOiB7IDEyNzogMTI2LjkwNH0gfSxcclxuICAgIC8vIEpTRHJhdy5Qcm9cclxuXHJcbiAgICBpc0VsZWN0cm9uQWNjZXB0b3I6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdmFyIGFuID0gZS5hO1xyXG4gICAgICAgIHJldHVybiBhbiA+PSA2ICYmIGFuIDw9IDkgfHwgLy8gRWxlbWVudC5DICYmIGF0b21pY25vIDw9IEVsZW1lbnQuRiB8fFxyXG4gICAgICAgICAgICAgICAgYW4gPj0gMTUgJiYgYW4gPD0gMTcgfHwgLy8gYXRvbWljbm8gPiBFbGVtZW50LlAgJiYgYXRvbWljbm8gPD0gRWxlbWVudC5DbCB8fFxyXG4gICAgICAgICAgICAgICAgYW4gPj0gMzMgJiYgYW4gPD0gMzUgfHwgLy8gYXRvbWljbm8gPj0gRWxlbWVudC5BcyAmJiBhdG9taWNubyA8PSBFbGVtZW50LkJyIHx8XHJcbiAgICAgICAgICAgICAgICBhbiA+PSA1MCAmJiBhbiA8PSA1MyB8fCAvLyBhdG9taWNubyA+PSBFbGVtZW50LlNiICYmIGF0b21pY25vIDw9IEVsZW1lbnQuSSB8fFxyXG4gICAgICAgICAgICAgICAgYW4gPj0gODMgJiYgYW4gPD0gODU7IC8vIGF0b21pY25vID49IEVsZW1lbnQuQmkgJiYgYXRvbWljbm8gPD0gRWxlbWVudC5BdDtcclxuICAgIH0sXHJcblxyXG4gICAgc2hvd1F1ZXJ5QXRvbXM6IGZ1bmN0aW9uIChwYXJlbnQsIGYpIHtcclxuICAgICAgICB2YXIgYnV0dG9ucyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJ1dHRvblwiKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKGJ1dHRvbnNbaV0uZ2V0QXR0cmlidXRlKFwiclwiKSA9PSBcIjFcIilcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNbaV0uc3R5bGUuZGlzcGxheSA9IGYgPyBcIlwiIDogXCJub25lXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBtYWtlQXRvbUxpc3Q6IGZ1bmN0aW9uIChsaXN0LCBmKSB7XHJcbiAgICAgICAgaWYgKGxpc3QgPT0gbnVsbCB8fCBsaXN0ID09IFwiXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgYXRvbXMgPSBbXTtcclxuICAgICAgICB2YXIgc3MgPSBsaXN0LnNwbGl0KFwiLFwiKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gc2NpbGxpZ2VuY2UuVXRpbHMudHJpbShzc1tpXSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRBdG9tTGlzdChzKSlcclxuICAgICAgICAgICAgICAgIGF0b21zLnB1c2gocyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXRvbXMubGVuZ3RoID09IDAgPyBudWxsIDogeyBhdG9tczogYXRvbXMsIHQ6ICFzY2lsbGlnZW5jZS5VdGlscy5pc0ZhbHNlKGYpIH07XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTWV0YWw6IGZ1bmN0aW9uIChhdG9taWNubykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgaXNWYWxpZEF0b21MaXN0OiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHZhciBlID0gSlNEcmF3Mi5QVFtzXTtcclxuICAgICAgICByZXR1cm4gZSAhPSBudWxsICYmIGUuYSA+IDAgfHwgcyA9PSBcIipcIiB8fCBzID09IFwiQVwiIHx8IHMgPT0gXCJhXCIgfHwgcyA9PSBcImNcIiB8fCB0aGlzLmlzQXJBdG9tKHMudG9VcHBlckNhc2UoKSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzQXJBdG9tOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiBzID09IFwiQ1wiIHx8IHMgPT0gXCJOXCIgfHwgcyA9PSBcIlNcIiB8fCBzID09IFwiUFwiIHx8IHMgPT0gXCJPXCI7XHJcbiAgICB9XHJcbn07IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5Ta2luID0ge1xyXG4gICAganNkcmF3OiBudWxsLFxyXG4gICAganNzZGY6IG51bGwsXHJcbiAgICBkaWFsb2c6IG51bGwsXHJcblxyXG4gICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmpzZHJhdyA9IHsgYmtjb2xvcjogXCIjZTFlMWUxXCIsIGJraW1nOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9oYmcuZ2lmXCIpLCB0b29sYmFyYms6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL3Rvb2xiYXJiay5qcGdcIiksIGhvdmVyY29sb3I6IFwiI2VlZlwiLCBidG5zZWxjb2xvcjogXCIjYmJmXCIgfTtcclxuICAgICAgICB0aGlzLmpzc2RmID0geyBiZ2NvbG9yOiBcIiNlZWVcIiwgaGVhZGVyaW1nOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9oZWFkZXItYmcuZ2lmXCIpLCBoZWFkZXJjb2xvcjogXCIjZWVlXCIsIHJvd2NvbG9yOiBcIiNmOTZcIiwgb2RkY29sb3I6IFwiXCIsIGV2ZW5jb2xvcjogXCIjZWVlXCIsIGJvcmRlcjogXCJzb2xpZCAxcHggI2NjY1wiIH07XHJcbiAgICAgICAgc2NpbGxpZ2VuY2UuYXBwbHkodGhpcy5qc3NkZiwgdGhpcy5qc2RyYXcpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nID0geyBia2ltZzogc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvZGxnaGVhZGVyLmdpZlwiKSwgYmtjb2xvcjogXCIjNmJhZGY2XCIsIGJvcmRlcjogXCIxcHggc29saWQgIzRmNmQ4MVwiIH07XHJcbiAgICB9LFxyXG5cclxuICAgIHJlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuanNkcmF3ID0geyBia2NvbG9yOiBcIiNFQ0NERENcIiwgYmtpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2hiZy1yZWQuZ2lmXCIpLCB0b29sYmFyYms6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL3Rvb2xiYXJiay1yZWQuanBnXCIpLCBob3ZlcmNvbG9yOiBcIiNmQ2REZUNcIiB9O1xyXG4gICAgICAgIHRoaXMuanNzZGYgPSB7IGJnY29sb3I6IFwiI0Y4Q0VFOFwiLCBoZWFkZXJpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2hlYWRlci1iZ3JlZC5naWZcIiksIGhlYWRlcmNvbG9yOiBcIiNGOENFRThcIiwgcm93Y29sb3I6IFwiI0ZmZUVmOFwiLCBvZGRjb2xvcjogXCJcIiwgZXZlbmNvbG9yOiBcIiNlZWVcIiwgYm9yZGVyOiBcInNvbGlkIDFweCAjY2NjXCIgfTtcclxuICAgICAgICBzY2lsbGlnZW5jZS5hcHBseSh0aGlzLmpzc2RmLCB0aGlzLmpzZHJhdyk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2cgPSB7IGJraW1nOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9kbGdoZWFkZXItcmVkLmdpZlwiKSwgYmtjb2xvcjogXCIjRTdBNkRGXCIsIGJvcmRlcjogXCIxcHggc29saWQgIzRmNmQ4MVwiIH07XHJcbiAgICB9LFxyXG5cclxuICAgIGdyZWVuOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5qc2RyYXcgPSB7IGJrY29sb3I6IFwiI0M3RUVERlwiLCBia2ltZzogc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvaGJnLWdyZWVuLmdpZlwiKSwgdG9vbGJhcmJrOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy90b29sYmFyYmstZ3JlZW4uanBnXCIpLCBob3ZlcmNvbG9yOiBcIiNkN2ZFZUZcIiB9O1xyXG4gICAgICAgIHRoaXMuanNzZGYgPSB7IGJnY29sb3I6IFwiI0NDRjhFOFwiLCBoZWFkZXJpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2hlYWRlci1iZ2dyZWVuLmdpZlwiKSwgaGVhZGVyY29sb3I6IFwiI0NDRjhFOFwiLCByb3djb2xvcjogXCIjZENGZmY4XCIsIG9kZGNvbG9yOiBcIlwiLCBldmVuY29sb3I6IFwiI2VlZVwiLCBib3JkZXI6IFwic29saWQgMXB4ICNjY2NcIiB9O1xyXG4gICAgICAgIHNjaWxsaWdlbmNlLmFwcGx5KHRoaXMuanNzZGYsIHRoaXMuanNkcmF3KTtcclxuICAgICAgICB0aGlzLmRpYWxvZyA9IHsgYmtpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2RsZ2hlYWRlci1ncmVlbi5naWZcIiksIGJrY29sb3I6IFwiIzk1RDA5Q1wiLCBib3JkZXI6IFwiMXB4IHNvbGlkICM0ZjZkODFcIiB9O1xyXG4gICAgfSxcclxuXHJcbiAgICBibHVlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5qc2RyYXcgPSB7IGJrY29sb3I6IFwiI0NERDBFQ1wiLCBia2ltZzogc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvaGJnLWJsdWUuZ2lmXCIpLCB0b29sYmFyYms6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL3Rvb2xiYXJiay1ibHVlLmpwZ1wiKSwgaG92ZXJjb2xvcjogXCIjZERlMGZDXCIgfTtcclxuICAgICAgICB0aGlzLmpzc2RmID0geyBiZ2NvbG9yOiBcIiNEQ0RGRjZcIiwgaGVhZGVyaW1nOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9oZWFkZXItYmdibHVlLmdpZlwiKSwgaGVhZGVyY29sb3I6IFwiI0RDREZGNlwiLCByb3djb2xvcjogXCIjZUNlRkZmXCIsIG9kZGNvbG9yOiBcIlwiLCBldmVuY29sb3I6IFwiI2VlZVwiLCBib3JkZXI6IFwic29saWQgMXB4ICNjY2NcIiB9O1xyXG4gICAgICAgIHNjaWxsaWdlbmNlLmFwcGx5KHRoaXMuanNzZGYsIHRoaXMuanNkcmF3KTtcclxuICAgICAgICB0aGlzLmRpYWxvZyA9IHsgYmtpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2RsZ2hlYWRlci1ibHVlLmdpZlwiKSwgYmtjb2xvcjogXCIjOEJCNkNDXCIsIGJvcmRlcjogXCIxcHggc29saWQgIzRmNmQ4MVwiIH07XHJcbiAgICB9LFxyXG5cclxuICAgIHllbGxvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuanNkcmF3ID0geyBia2NvbG9yOiBcIiNFQ0VDQ0RcIiwgYmtpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2hiZy15ZWxsb3cuZ2lmXCIpLCB0b29sYmFyYms6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL3Rvb2xiYXJiay15ZWxsb3cuanBnXCIpLCBob3ZlcmNvbG9yOiBcIiNmQ2ZDZERcIiB9O1xyXG4gICAgICAgIHRoaXMuanNzZGYgPSB7IGJnY29sb3I6IFwiI0Y0RjRFMVwiLCBoZWFkZXJpbWc6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2hlYWRlci1iZ3llbGxvdy5naWZcIiksIGhlYWRlcmNvbG9yOiBcIiNGNEY0RTFcIiwgcm93Y29sb3I6IFwiI0Y0RjRCOFwiLCBvZGRjb2xvcjogXCJcIiwgZXZlbmNvbG9yOiBcIiNlZWVcIiwgYm9yZGVyOiBcInNvbGlkIDFweCAjY2NjXCIgfTtcclxuICAgICAgICBzY2lsbGlnZW5jZS5hcHBseSh0aGlzLmpzc2RmLCB0aGlzLmpzZHJhdyk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2cgPSB7IGJraW1nOiBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9kbGdoZWFkZXIteWVsbG93LmdpZlwiKSwgYmtjb2xvcjogXCIjQzhCQThGXCIsIGJvcmRlcjogXCIxcHggc29saWQgIzRmNmQ4MVwiIH07XHJcbiAgICB9LFxyXG5cclxuICAgIG1lbnU6IHsgaGlnaGxpZ2h0Y29sb3I6IFwiI2M2MFwiLCBjb2xvcjogXCJibHVlXCIgfSxcclxuICAgIGZvcm06IHtcclxuICAgICAgICBsYWJlbHN0eWxlczogeyBiYWNrZ3JvdW5kQ29sb3I6IFwiI2VlZlwiLCBib3JkZXI6IFwic29saWQgMXB4ICNkZGVcIiwgdGV4dEFsaWduOiBcImxlZnRcIiwgdmVydGljYWxBbGlnbjogXCJ0b3BcIiwgd2hpdGVTcGFjZTogXCJub3dyYXBcIiB9LFxyXG4gICAgICAgIGZpZWxkY29sb3I6IFwiYmx1ZVwiLFxyXG4gICAgICAgIHJvd3NlbGVjdGNvbG9yOiBcIiNhYWZcIlxyXG4gICAgfVxyXG59O1xyXG5cclxuSlNEcmF3Mi5Ta2luLnJlc2V0KCk7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8qKlxyXG4qIFN0YWNrIGNsYXNzIC0gZGVmaW5lIFN0YWNrIGRhdGEgc3RydWN0dXJlXHJcbiogQGNsYXNzIHNjaWxsaWdlbmNlLkpTRHJhdzIuU3RhY2tcclxuKiA8cHJlPlxyXG4qIDxiPkV4YW1wbGU6PC9iPlxyXG4qICAgIHZhciBzdGFjayA9IEpTRHJhdzIuU3RhY2soNTApO1xyXG4qICAgIHN0YWNrLnB1c2goXCJIeWRyb2dlblwiKTtcclxuKiAgICBzdGFjay5wdXNoKFwiRXh5Z2VuXCIpO1xyXG4qXHJcbiogICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcclxuKiA8L3ByZT5cclxuKi9cclxuSlNEcmF3Mi5TdGFjayA9IHNjaWxsaWdlbmNlLmV4dGVuZChzY2lsbGlnZW5jZS5fYmFzZSwge1xyXG4gICAgLyoqXHJcbiAgICAqIEBjb25zdHJ1Y3RvciBTdGFja1xyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gY2FwYWNpdHlcclxuICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKGNhcGFjaXR5KSB7XHJcbiAgICAgICAgdGhpcy5faXRlbXMgPSBbXTtcclxuICAgICAgICB0aGlzLl9jYXBhY2l0eSA9IGNhcGFjaXR5O1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogR2V0IGFuIGl0ZW0gYnkgaXRzIGluZGV4XHJcbiAgICAqIEBmdW5jdGlvbiBpdGVtXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gdGhlIGluZGV4XHJcbiAgICAqIEByZXR1cm5zIHRoZSBpdGVtXHJcbiAgICAqL1xyXG4gICAgaXRlbTogZnVuY3Rpb24gKGkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNbaV07XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDbGVhciBhbGwgaXRlbXNcclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIGNsZWFyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5faXRlbXMgPSBbXTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCBpdGVtIGNvdW50XHJcbiAgICAqIEBmdW5jdGlvbiBsZW5ndGhcclxuICAgICogQHJldHVybnMgYSBudW1iZXJcclxuICAgICovXHJcbiAgICBsZW5ndGg6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMubGVuZ3RoO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc0VtcHR5OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogUHVzaCBhIG5ldyBpdGVtIGF0IHRoZSBlbmQgb2Ygc3RhY2tcclxuICAgICogQGZ1bmN0aW9uIHB1c2hcclxuICAgICogQHBhcmFtIHtvYmplY3R9IGkgLSB0aGUgaXRlbVxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAgcHVzaDogZnVuY3Rpb24gKGkpIHtcclxuICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoID4gdGhpcy5fY2FwYWNpdHkpXHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGkpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogUG9wIG91dCB0aGUgdG9wIGl0ZW0gaW4gdGhlIHN0YWNrXHJcbiAgICAqIEBmdW5jdGlvbiBwb3BcclxuICAgICogQHJldHVybnMgdGhlIGl0ZW1cclxuICAgICovXHJcbiAgICBwb3A6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5wb3AoKTtcclxuICAgIH0sXHJcblxyXG4gICAgcG9wSGVhZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pdGVtcy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLl9pdGVtc1swXTtcclxuICAgICAgICB0aGlzLl9pdGVtcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgcmV0dXJuIGk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuXHJcblxyXG5zY2lsLkRlcXVlID0gc2NpbC5hcHBseShzY2lsLl9iYXNlLCB7XHJcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIH0sXHJcblxyXG4gICAgcHVzaFJhbmdlOiBmdW5jdGlvbiAobGlzdCkge1xyXG4gICAgICAgIGlmIChsaXN0ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICB0aGlzLnB1c2gobGlzdFtpXSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHB1c2g6IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKG4pO1xyXG4gICAgfSxcclxuXHJcbiAgICBwb3A6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciByID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH0sXHJcblxyXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoO1xyXG4gICAgfSxcclxuXHJcbiAgICBjbGVhcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIH1cclxufSk7IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5TdXBlckF0b21zID0ge1xyXG4gICAgc2RmOiBcIlxcbk1vbEVuZ2luZTAyMjQxNDEyMTUyRFxcblxcbiAgNiAgNiAgMCAgMCAgMCAgMCAgICAgICAgICAgIDk5OSBWMjAwMFxcbiAgICAxLjM1MTAgICAgMC4wMDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAwLjAwMDAgICAgMC43ODAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAwLjAwMDAgICAgMi4zNDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAyLjcwMjAgICAgMC43ODAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAyLjcwMjAgICAgMi4zNDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAxLjM1MTAgICAgMy4xMjAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgMSAgMiAgMiAgMCAgMCAgMCAgMFxcbiAgMiAgMyAgMSAgMCAgMCAgMCAgMFxcbiAgMSAgNCAgMSAgMCAgMCAgMCAgMFxcbiAgNCAgNSAgMiAgMCAgMCAgMCAgMFxcbiAgNSAgNiAgMSAgMCAgMCAgMCAgMFxcbiAgNiAgMyAgMiAgMCAgMCAgMCAgMFxcbk0gIEVORFxcbj4gPFQ+XFxuQmVuemVuZVxcblxcbiQkJCRcXG5cXG5Nb2xFbmdpbmUwMjI0MTQxMjE1MkRcXG5cXG4gIDYgIDYgIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjIwMDBcXG4gICAgMS4zNTEwICAgIDAuMDAwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMC4wMDAwICAgIDAuNzgwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMC4wMDAwICAgIDIuMzQwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMS4zNTEwICAgIDMuMTIwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMi43MDIwICAgIDIuMzQwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMi43MDIwICAgIDAuNzgwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gIDEgIDIgIDEgIDAgIDAgIDAgIDBcXG4gIDIgIDMgIDEgIDAgIDAgIDAgIDBcXG4gIDMgIDQgIDEgIDAgIDAgIDAgIDBcXG4gIDQgIDUgIDEgIDAgIDAgIDAgIDBcXG4gIDUgIDYgIDEgIDAgIDAgIDAgIDBcXG4gIDYgIDEgIDEgIDAgIDAgIDAgIDBcXG5NICBFTkRcXG4+IDxUPlxcbkhleGFuZVxcblxcbiQkJCRcXG5cXG5Nb2xFbmdpbmUwMjI0MTQxMjE1MkRcXG5cXG4gIDUgIDUgIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjIwMDBcXG4gICAgMC4wMDAwICAgIDAuNDgyMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMS40ODM2ICAgIDAuMDAwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMi40MDA2ICAgIDEuMjYyMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMS40ODM2ICAgIDIuNTI0MiAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMC4wMDAwICAgIDIuMDQyMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gIDEgIDIgIDEgIDAgIDAgIDAgIDBcXG4gIDIgIDMgIDEgIDAgIDAgIDAgIDBcXG4gIDMgIDQgIDEgIDAgIDAgIDAgIDBcXG4gIDQgIDUgIDEgIDAgIDAgIDAgIDBcXG4gIDUgIDEgIDEgIDAgIDAgIDAgIDBcXG5NICBFTkRcXG4+IDxUPlxcblBlbnRhbmVcXG5cXG4kJCQkXFxuXFxuTW9sRW5naW5lMDIyNDE0MTIxNTJEXFxuXFxuICAzICAzICAwICAwICAwICAwICAgICAgICAgICAgOTk5IFYyMDAwXFxuICAgIDAuNzgwMCAgICAwLjAwMDAgICAgMC4wMDAwIEMgICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwXFxuICAgIDAuMDAwMCAgICAxLjM1MTAgICAgMC4wMDAwIEMgICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwXFxuICAgIDEuNTYwMCAgICAxLjM1MTAgICAgMC4wMDAwIEMgICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwXFxuICAxICAyICAxICAwICAwICAwICAwXFxuICAxICAzICAxICAwICAwICAwICAwXFxuICAyICAzICAxICAwICAwICAwICAwXFxuTSAgRU5EXFxuPiA8VD5cXG5Qcm9wYW5lXFxuXFxuJCQkJFxcblxcbk1vbEVuZ2luZTAyMjQxNDEyMTUyRFxcblxcbiAgNCAgNCAgMCAgMCAgMCAgMCAgICAgICAgICAgIDk5OSBWMjAwMFxcbiAgICAwLjAwMDAgICAgMC4wMDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAwLjAwMDAgICAgMS41NjAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAxLjU2MDAgICAgMS41NjAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAxLjU2MDAgICAgMC4wMDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgMSAgMiAgMSAgMCAgMCAgMCAgMFxcbiAgMiAgMyAgMSAgMCAgMCAgMCAgMFxcbiAgMyAgNCAgMSAgMCAgMCAgMCAgMFxcbiAgNCAgMSAgMSAgMCAgMCAgMCAgMFxcbk0gIEVORFxcbj4gPFQ+XFxuQnV0YW5lXFxuXFxuJCQkJFxcblxcbk1vbEVuZ2luZTAyMjQxNDEyMTUyRFxcblxcbiAgNyAgNyAgMCAgMCAgMCAgMCAgICAgICAgICAgIDk5OSBWMjAwMFxcbiAgICAwLjAwMDAgICAgMC45NzI3ICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAxLjIxOTYgICAgMC4wMDAwICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAyLjc0MDUgICAgMC4zNDcxICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAzLjQxNzQgICAgMS43NTI3ICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAyLjc0MDUgICAgMy4xNTgxICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAxLjIxOTYgICAgMy41MDU0ICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgICAwLjAwMDAgICAgMi41MzI3ICAgIDAuMDAwMCBDICAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMFxcbiAgMSAgMiAgMSAgMCAgMCAgMCAgMFxcbiAgMiAgMyAgMSAgMCAgMCAgMCAgMFxcbiAgMyAgNCAgMSAgMCAgMCAgMCAgMFxcbiAgNCAgNSAgMSAgMCAgMCAgMCAgMFxcbiAgNSAgNiAgMSAgMCAgMCAgMCAgMFxcbiAgNiAgNyAgMSAgMCAgMCAgMCAgMFxcbiAgNyAgMSAgMSAgMCAgMCAgMCAgMFxcbk0gIEVORFxcbj4gPFQ+XFxuSGVwdGFuZVxcblxcbiQkJCRcXG5cXG5Nb2xFbmdpbmUwMjI0MTQxMjE1MkRcXG5cXG4gIDggIDggIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjIwMDBcXG4gICAgMC4wMDAwICAgIDEuMTAzMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMS4xMDMxICAgIDAuMDAwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMi42NjMxICAgIDAuMDAwMCAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMy43NjYwICAgIDEuMTAzMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMy43NjYwICAgIDIuNjYzMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMi42NjMxICAgIDMuNzY2MiAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMS4xMDMxICAgIDMuNzY2MiAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gICAgMC4wMDAwICAgIDIuNjYzMSAgICAwLjAwMDAgQyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG4gIDEgIDIgIDEgIDAgIDAgIDAgIDBcXG4gIDIgIDMgIDEgIDAgIDAgIDAgIDBcXG4gIDMgIDQgIDEgIDAgIDAgIDAgIDBcXG4gIDQgIDUgIDEgIDAgIDAgIDAgIDBcXG4gIDUgIDYgIDEgIDAgIDAgIDAgIDBcXG4gIDYgIDcgIDEgIDAgIDAgIDAgIDBcXG4gIDcgIDggIDEgIDAgIDAgIDAgIDBcXG4gIDggIDEgIDEgIDAgIDAgIDAgIDBcXG5NICBFTkRcXG4+IDxUPlxcbk9jdGFuZVxcblxcbiQkJCRcXG5cIixcclxuXHJcbiAgICBkaWN0OiBudWxsLFxyXG4gICAgcmV2ZXJzaWJsZToge30sXHJcbiAgICBBbWlub0FjaWRzOiB7fSxcclxuICAgIEROQXM6IHt9LFxyXG4gICAgUk5Bczoge30sXHJcbiAgICB0ZW1wbGF0ZXM6IHt9LFxyXG4gICAgbnRlcm1pbmFsczoge30sXHJcbiAgICBjdGVybWluYWxzOiB7fSxcclxuICAgIGN1c3RvbXRlbXBsYXRlczoge30sXHJcblxyXG4gICAgbGlzdEZ1bmN0aW9uYWxHcm91cHM6IGZ1bmN0aW9uIChwYXJlbnQpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuICAgICAgICB2YXIgY29scyA9IFt7IGtleTogJ25hbWUnLCBjYXB0aW9uOiAnTmFtZScsIHdpZHRoOiAyMDAgfSwgeyBrZXk6ICdtb2xmaWxlJywgdHlwZTogXCJzdHJ1Y3R1cmVcIiwgY2FwdGlvbjogJ1N0cnVjdHVyZSd9XTtcclxuICAgICAgICB2YXIganNzID0gbmV3IEpTRHJhdzIuVGFibGUobnVsbCwgeyBjb2x1bW5zOiBjb2xzLCB0b29sYmFyOiBbXCJzZWFyY2hcIl0gfSwgcGFyZW50KTtcclxuXHJcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMuZGljdClcclxuICAgICAgICAgICAgbGlzdC5wdXNoKHsgbmFtZTogbmFtZSwgbW9sZmlsZTogdGhpcy5kaWN0W25hbWVdID09IG51bGwgPyBudWxsIDogdGhpcy5kaWN0W25hbWVdLmdldE1vbGZpbGUoKSB9KTtcclxuICAgICAgICBqc3Muc2V0SnNvbih7IHJvd3M6IGxpc3QgfSk7XHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIChxLCBuKSB7XHJcbiAgICAgICAgaWYgKHEgPT0gbnVsbCB8fCBxID09IFwiXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgcSA9IHEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB2YXIgbGVuID0gcS5sZW5ndGg7XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiB0aGlzLmRpY3QpIHtcclxuICAgICAgICAgICAgaWYgKGsubGVuZ3RoID49IGxlbiAmJiBrLnN1YnN0cigwLCBsZW4pLnRvTG93ZXJDYXNlKCkgPT0gcSkge1xyXG4gICAgICAgICAgICAgICAgcmV0LnB1c2goayk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0Lmxlbmd0aCA+PSBuKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldDogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuICAgICAgICB2YXIgbSA9IHRoaXMuZGljdFtuYW1lXTtcclxuICAgICAgICBpZiAobSA9PSBudWxsKVxyXG4gICAgICAgICAgICBtID0gdGhpcy5udGVybWluYWxzW25hbWVdO1xyXG4gICAgICAgIGlmIChtID09IG51bGwpXHJcbiAgICAgICAgICAgIG0gPSB0aGlzLmN0ZXJtaW5hbHNbbmFtZV07XHJcbiAgICAgICAgcmV0dXJuIG0gPT0gbnVsbCA/IG51bGwgOiBtLmNsb25lKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEROQTogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5ETkFzW25hbWVdO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRSTkE6IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuUk5Bc1tuYW1lXTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0QUE6IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQW1pbm9BY2lkc1tuYW1lXTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0VGVtcGxhdGU6IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzW25hbWVdO1xyXG4gICAgfSxcclxuXHJcbiAgICBoYXNDdXN0b21UZW1wbGF0ZXM6IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkKCk7XHJcbiAgICAgICAgZm9yICh2YXIgayBpbiB0aGlzLmN1c3RvbXRlbXBsYXRlcylcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRDdXN0b21UZW1wbGF0ZTogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b210ZW1wbGF0ZXNbbmFtZV07XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIENPT0ggLS0+IEhPT0MsIENPMkggLS0+IEhPMkMsIG4tQnV0IC0tPiBuLUJ1dCwgQm9jIC0tPiBCb2NcclxuICAgIHJldmVyc2VMYWJlbDogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuICAgICAgICBpZiAodGhpcy5nZXQocykgIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZUxhYmVsMihzKTtcclxuXHJcbiAgICAgICAgdmFyIGMgPSBzLnN1YnN0cigwLCAxKTtcclxuICAgICAgICB2YXIgczEgPSBzLnN1YnN0cigxKTtcclxuICAgICAgICBpZiAoKGMgPT0gXCJPXCIgfHwgYyA9PSBcIlNcIikgJiYgdGhpcy5nZXQoczEpICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VMYWJlbDIoczEpICsgYztcclxuXHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9LFxyXG5cclxuICAgIHJldmVyc2VMYWJlbDI6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmV2ZXJzaWJsZVtzXSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gcztcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IFwiXCI7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICAgICAgdmFyIG4gPSAxO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA+PSAwOyAtLWopIHtcclxuICAgICAgICAgICAgICAgIHZhciBjID0gcy5jaGFyQ29kZUF0KGopO1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MClcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICArK247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSAtPSBuIC0gMTtcclxuICAgICAgICAgICAgcmV0ICs9IHMuc3Vic3RyKGksIG4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfSxcclxuXHJcbiAgICBndWVzc09uZTogZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB0aGlzLnJlYWQoKTtcclxuXHJcbiAgICAgICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMuZGljdCkge1xyXG4gICAgICAgICAgICBpZiAoay50b0xvd2VyQ2FzZSgpID09IG5hbWUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICByZWFkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGljdCAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5kaWN0ID0ge307XHJcbiAgICAgICAgdGhpcy5hZGRTZGYodGhpcy5zZGYpO1xyXG5cclxuICAgICAgICBpZiAoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucyAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmFkZFNkZihKU0RyYXcyLmRlZmF1bHRvcHRpb25zLmFiYnJldmlhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYWRkU2RmKEpTRHJhdzIuYWJicmV2aWF0aW9ucyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uQWZ0ZXJSZWFkICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25BZnRlclJlYWQoKTtcclxuICAgIH0sXHJcblxyXG4gICAgYWRkU2RmOiBmdW5jdGlvbiAoc2RmKSB7XHJcbiAgICAgICAgaWYgKHNkZiA9PSBudWxsIHx8IHNkZiA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciB1bmtub3duID0gMDtcclxuICAgICAgICB2YXIgc3MgPSBzZGYuc3BsaXQoXCIkJCQkXCIpO1xyXG4gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgc3MubGVuZ3RoOyArK2spIHtcclxuICAgICAgICAgICAgdmFyIHIgPSBKU0RyYXcyLlRhYmxlLnJlYWRTZGZSZWNvcmQoc3Nba10sIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSByLnByb3BzW1wiVFwiXTtcclxuICAgICAgICAgICAgdmFyIGN1c3RvbXRlbXBsYXRlID0gci5wcm9wc1tcIkNUXCJdO1xyXG4gICAgICAgICAgICB2YXIgc3RybmFtZSA9IHIucHJvcHNbXCJOYW1lXCJdO1xyXG4gICAgICAgICAgICB2YXIgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgICAgICAgICBtLnNldE1vbGZpbGUoci5tb2xmaWxlKTtcclxuICAgICAgICAgICAgLy90aGlzLm5vcm1hbGl6ZShtKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBsYXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzW3RlbXBsYXRlXSA9IG07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3VzdG9tdGVtcGxhdGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b210ZW1wbGF0ZXNbY3VzdG9tdGVtcGxhdGVdID0gbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgX2dldEF0dGFjaEF0b21zOiBmdW5jdGlvbiAobSkge1xyXG4gICAgICAgIHZhciBsaXN0ID0gW107XHJcbiAgICAgICAgaWYgKG0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0uYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHZhciBhID0gbS5hdG9tc1tpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYS5hdHRhY2hwb2ludHMubGVuZ3RoOyArK2spXHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFthLmF0dGFjaHBvaW50c1trXSAtIDFdID0geyBhcG86IGEuYXR0YWNocG9pbnRzW2tdLCBhOiBhIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpc3Q7XHJcbiAgICB9LFxyXG5cclxuICAgIF9hbGlnbk1vbDogZnVuY3Rpb24gKGRlc3QsIGEsIHNyYywgYTAsIGxlbikge1xyXG4gICAgICAgIGlmIChsZW4gPiAwKVxyXG4gICAgICAgICAgICBzcmMuc2V0Qm9uZExlbmd0aChsZW4pO1xyXG5cclxuICAgICAgICB2YXIgYm9uZHMgPSBkZXN0LmdldE5laWdoYm9yQm9uZHMoYSk7XHJcbiAgICAgICAgaWYgKGJvbmRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHNyYy5vZmZzZXQoYS5wLnggLSBhMC5wLngsIGEucC55IC0gYTAucC55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYm9uZHMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgLy8gb2Zmc2V0IHRvIHJlZmVyZW5jZSBhdG9tXHJcbiAgICAgICAgICAgIHNyYy5vZmZzZXQoYS5wLnggLSBhMC5wLngsIGEucC55IC0gYTAucC55KTtcclxuXHJcbiAgICAgICAgICAgIGIgPSBib25kc1swXTtcclxuICAgICAgICAgICAgLy8gcm90YXRlIHRvIHRoZSByZXZlcnNlZCBkaXJlY3Rpb25cclxuICAgICAgICAgICAgdmFyIGRlZyA9IGIub3RoZXJBdG9tKGEpLnAuYW5nbGVUbyhhLnApO1xyXG4gICAgICAgICAgICB2YXIgYnMgPSBzcmMuZ2V0TmVpZ2hib3JCb25kcyhhMCk7XHJcbiAgICAgICAgICAgIGlmIChicy5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIHNyYy5yb3RhdGUoYS5wLCBkZWcgKyA2MCAtIGEwLnAuYW5nbGVUbyhic1swXS5vdGhlckF0b20oYTApLnApKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoYnMubGVuZ3RoID09IDIpXHJcbiAgICAgICAgICAgICAgICBzcmMucm90YXRlKGEucCwgZGVnICsgMTgwIC0gYTAucC5taWRkbGVBbmdsZShic1swXS5vdGhlckF0b20oYTApLnAsIGJzWzFdLm90aGVyQXRvbShhMCkucCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChib25kcy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICAvLyBvZmZzZXQgdG8gcmVmZXJlbmNlIGF0b21cclxuICAgICAgICAgICAgc3JjLm9mZnNldChhLnAueCAtIGEwLnAueCwgYS5wLnkgLSBhMC5wLnkpO1xyXG5cclxuICAgICAgICAgICAgLy8gcm90YXRlIHRvIHRoZSByZXZlcnNlZCBkaXJlY3Rpb25cclxuICAgICAgICAgICAgdmFyIGRlZyA9IGEucC5taWRkbGVBbmdsZShib25kc1swXS5vdGhlckF0b20oYSkucCwgYm9uZHNbMV0ub3RoZXJBdG9tKGEpLnApO1xyXG4gICAgICAgICAgICB2YXIgYnMgPSBzcmMuZ2V0TmVpZ2hib3JCb25kcyhhMCk7XHJcbiAgICAgICAgICAgIGlmIChicy5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIHNyYy5yb3RhdGUoYS5wLCBkZWcgKyA2MCAtIGEwLnAuYW5nbGVUbyhic1swXS5vdGhlckF0b20oYTApLnApKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoYnMubGVuZ3RoID09IDIpXHJcbiAgICAgICAgICAgICAgICBzcmMucm90YXRlKGEucCwgZGVnICsgMTgwIC0gYTAucC5taWRkbGVBbmdsZShic1swXS5vdGhlckF0b20oYTApLnAsIGJzWzFdLm90aGVyQXRvbShhMCkucCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn07XHJcblxyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhd1xyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG5cclxuLyoqXHJcbiogVGV4dCBjbGFzc1xyXG4qIEBjbGFzcyBzY2lsbGlnZW5jZS5KU0RyYXcyLlRleHRcclxuKi9cclxuSlNEcmF3Mi5UZXh0ID0gc2NpbGxpZ2VuY2UuZXh0ZW5kKHNjaWxsaWdlbmNlLl9iYXNlLCB7XHJcbiAgICAvKipcclxuICAgIEBwcm9wZXJ0eSB7UmVjdH0gX3JlY3QgUG9zaXRpb25cclxuICAgICovXHJcbiAgICAvKipcclxuICAgIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IFRleHQgdmFsdWVcclxuICAgICovXHJcbiAgICAvKipcclxuICAgIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2xvciBEaXNwbGF5IENvbG9yXHJcbiAgICAqL1xyXG4gICAgLyoqXHJcbiAgICBAcHJvcGVydHkge2Jvb2x9IHNlbGVjdGVkIFNlbGVjdGluZyBGbGFnXHJcbiAgICAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBAY29uc3RydWN0b3IgVGV4dFxyXG4gICAgKiBAcGFyYW0ge1JlY3R9IHIgLSB0aGUgcG9zaXRpb25cclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHZhbHVlXHJcbiAgICAqL1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChyLCB0ZXh0KSB7XHJcbiAgICAgICAgdGhpcy5UID0gXCJURVhUXCI7XHJcbiAgICAgICAgdGhpcy5fcmVjdCA9IHI7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcclxuICAgICAgICB0aGlzLmNvbG9yID0gbnVsbDtcclxuICAgICAgICB0aGlzLmZvbnRzaXplID0gMS4wO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpZWxkdHlwZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYW5jaG9ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXRhbGljID0gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgYSA9IG5ldyBKU0RyYXcyLlRleHQodGhpcy5fcmVjdC5jbG9uZSgpLCB0aGlzLnRleHQpO1xyXG4gICAgICAgIGEuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGEuY29sb3IgPSB0aGlzLmNvbG9yO1xyXG4gICAgICAgIGEuZmllbGR0eXBlID0gdGhpcy5maWVsZHR5cGU7XHJcbiAgICAgICAgYS5yZWFkb25seSA9IHRoaXMucmVhZG9ubHk7XHJcbiAgICAgICAgYS5mb250c2l6ZSA9IHRoaXMuZm9udHNpemU7XHJcbiAgICAgICAgYS5pdGFsaWMgPSB0aGlzLml0YWxpYztcclxuICAgICAgICByZXR1cm4gYTtcclxuICAgIH0sXHJcblxyXG4gICAgYWxsQW5jaG9yc0luOiBmdW5jdGlvbiAobSkge1xyXG4gICAgICAgIGlmICh0aGlzLmFuY2hvcnMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYW5jaG9ycy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgYSA9IHRoaXMuYW5jaG9yc1tpXTtcclxuICAgICAgICAgICAgaWYgKEpTRHJhdzIuQXRvbS5jYXN0KGEpICE9IG51bGwgJiYgbS5hdG9tcy5pbmRleE9mKGEpIDwgMCB8fFxyXG4gICAgICAgICAgICAgICAgSlNEcmF3Mi5Cb25kLmNhc3QoYSkgIT0gbnVsbCAmJiBtLmJvbmRzLmluZGV4T2YoYSkgPCAwIHx8XHJcbiAgICAgICAgICAgICAgICBKU0RyYXcyLkJyYWNrZXQuY2FzdChhKSAhPSBudWxsICYmIG0uZ3JhcGhpY3MuaW5kZXhPZihhKSA8IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBhdHRhY2g6IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgICAvLyBhbmNob3JzIGNhbiBjb250YWluIG9uZSBicmFja2V0LCBvciBhbnkgbnVtYmVyIG9mIGF0b21zIGFuZC9vciBib25kc1xyXG4gICAgICAgIGlmIChKU0RyYXcyLkJyYWNrZXQuY2FzdChvYmopICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5hbmNob3JzID0gW29ial07XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEpTRHJhdzIuQXRvbS5jYXN0KG9iaikgPT0gbnVsbCAmJiBKU0RyYXcyLkJvbmQuY2FzdChvYmopID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYW5jaG9ycy5sZW5ndGggPT0gMSAmJiBKU0RyYXcyLkJyYWNrZXQuY2FzdCh0aGlzLmFuY2hvcnNbMF0pICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0cyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYW5jaG9ycy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hbmNob3JzW2ldID09IG9iaikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYW5jaG9ycy5wdXNoKG9iaik7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGh0bWw6IGZ1bmN0aW9uIChzY2FsZSkge1xyXG4gICAgICAgIHZhciBzcyA9IFwiXCI7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFuY2hvcnMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIHNzICs9IChzcyA9PSBcIlwiID8gXCJcIiA6IFwiLFwiKSArIHRoaXMuYW5jaG9yc1tpXS5pZDtcclxuICAgICAgICB2YXIgcyA9IFwiPGkgaT0nXCIgKyB0aGlzLmlkICsgXCInIHg9J1wiICsgdGhpcy5UICsgXCInIHA9J1wiICsgdGhpcy5fcmVjdC50b1N0cmluZyhzY2FsZSkgKyBcIidcIjtcclxuICAgICAgICBpZiAodGhpcy5jb2xvciAhPSBudWxsICYmIHRoaXMuY29sb3IgIT0gXCJcIilcclxuICAgICAgICAgICAgcyArPSBcIiBjbHI9J1wiICsgdGhpcy5jb2xvciArIFwiJ1wiO1xyXG4gICAgICAgIGlmICh0aGlzLmZvbnRzaXplID4gMClcclxuICAgICAgICAgICAgcyArPSBcIiBmb250c2l6ZT0nXCIgKyB0aGlzLmZvbnRzaXplLnRvRml4ZWQoMikgKyBcIidcIjtcclxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSlcclxuICAgICAgICAgICAgcyArPSBcIiB2PScxJ1wiO1xyXG4gICAgICAgIGlmICh0aGlzLml0YWxpYylcclxuICAgICAgICAgICAgcyArPSBcIiBpdGFsaWM9JzEnXCI7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGR0eXBlICE9IG51bGwgJiYgdGhpcy5maWVsZHR5cGUgIT0gXCJcIilcclxuICAgICAgICAgICAgcyArPSBcIiBmaWVsZHR5cGU9J1wiICsgc2NpbC5VdGlscy5lc2NYbWxWYWx1ZSh0aGlzLmZpZWxkdHlwZSkgKyBcIidcIjtcclxuICAgICAgICBpZiAoc3MgIT0gXCJcIilcclxuICAgICAgICAgICAgcyArPSBcIiBhbmNob3JzPSdcIiArIHNzICsgXCInXCI7XHJcbiAgICAgICAgcyArPSBcIj5cIiArIHNjaWxsaWdlbmNlLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMudGV4dCkgKyBcIjwvaT5cIjtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgcmVhZEh0bWw6IGZ1bmN0aW9uIChlLCBtYXApIHtcclxuICAgICAgICB2YXIgciA9IEpTRHJhdzIuUmVjdC5mcm9tU3RyaW5nKGUuZ2V0QXR0cmlidXRlKFwicFwiKSk7XHJcbiAgICAgICAgdmFyIHMgPSBlLmdldEF0dHJpYnV0ZShcInNcIik7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbClcclxuICAgICAgICAgICAgcyA9IGUudGV4dCB8fCBlLnRleHRDb250ZW50O1xyXG4gICAgICAgIGlmIChyID09IG51bGwgfHwgc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIEkjNjIyMDogcD1cIjI3LjQ5NSAtNS4xMDUgNTcwLjM5NyAwLjkwMVwiXHJcbiAgICAgICAgaWYgKHIud2lkdGggPiByLmhlaWdodCAqIDEwMClcclxuICAgICAgICAgICAgci53aWR0aCA9IHIuaGVpZ2h0ICogNS4wO1xyXG4gICAgICAgIGlmIChyLmhlaWdodCA+IHIuaGVpZ2h0ICogMTAwKVxyXG4gICAgICAgICAgICByLmhlaWdodCA9IHIud2lkdGggLyA1LjA7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlY3QgPSByO1xyXG4gICAgICAgIHRoaXMudGV4dCA9IHM7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHNjaWwuVXRpbHMuaXNUcnVlKGUuZ2V0QXR0cmlidXRlKFwidlwiKSk7XHJcbiAgICAgICAgdGhpcy5pdGFsaWMgPSBzY2lsLlV0aWxzLmlzVHJ1ZShlLmdldEF0dHJpYnV0ZShcIml0YWxpY1wiKSk7XHJcbiAgICAgICAgdGhpcy5kdW1teSA9IHNjaWwuVXRpbHMuaXNUcnVlKGUuZ2V0QXR0cmlidXRlKFwiZHVtXCIpKTtcclxuICAgICAgICB0aGlzLmZpZWxkdHlwZSA9IGUuZ2V0QXR0cmlidXRlKFwiZmllbGR0eXBlXCIpO1xyXG5cclxuICAgICAgICB2YXIgZm9udHNpemUgPSBwYXJzZUZsb2F0KGUuZ2V0QXR0cmlidXRlKFwiZm9udHNpemVcIikpO1xyXG4gICAgICAgIGlmIChmb250c2l6ZSA+IDApXHJcbiAgICAgICAgICAgIHRoaXMuZm9udHNpemUgPSBmb250c2l6ZTtcclxuXHJcbiAgICAgICAgdmFyIHMyID0gZS5nZXRBdHRyaWJ1dGUoXCJhbmNob3JzXCIpO1xyXG4gICAgICAgIGlmIChzMiAhPSBudWxsICYmIHMyICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgdmFyIGFuY2hvcnMgPSBbXTtcclxuICAgICAgICAgICAgdmFyIHNzID0gczIuc3BsaXQoJywnKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzcy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGEgPSBtYXBbcGFyc2VJbnQoc3Nbal0pXTtcclxuICAgICAgICAgICAgICAgIGlmIChhICE9IG51bGwgJiYgKEpTRHJhdzIuQXRvbS5jYXN0KGEpICE9IG51bGwgfHwgSlNEcmF3Mi5Cb25kLmNhc3QoYSkgIT0gbnVsbCB8fCBKU0RyYXcyLkJyYWNrZXQuY2FzdChhKSAhPSBudWxsKSlcclxuICAgICAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goYSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hbmNob3JzID0gYW5jaG9ycztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGZsaXBZOiBmdW5jdGlvbiAoeSkge1xyXG4gICAgfSxcclxuXHJcbiAgICBmbGlwWDogZnVuY3Rpb24gKHgpIHtcclxuICAgIH0sXHJcblxyXG4gICAgc2NhbGU6IGZ1bmN0aW9uIChzLCBvcmlnaW4pIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVjdCAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9yZWN0LnNjYWxlKHMsIG9yaWdpbik7XHJcbiAgICB9LFxyXG5cclxuICAgIG9mZnNldDogZnVuY3Rpb24gKGR4LCBkeSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZWN0ICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX3JlY3Qub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlY3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVjdCA9PSBudWxsID8gbnVsbCA6IHRoaXMuX3JlY3QuY2xvbmUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgdG9nZ2xlOiBmdW5jdGlvbiAocCwgdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlY3QgIT0gbnVsbCAmJiB0aGlzLl9yZWN0LmNvbnRhaW5zKHApO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVPYmplY3Q6IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYW5jaG9ycy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hbmNob3JzW2ldID09IG9iaikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBkcmF3Q3VyOiBmdW5jdGlvbiAoc3VyZmFjZSwgciwgY29sb3IsIG0pIHtcclxuICAgICAgICB2YXIgcCA9IHRoaXMuX3JlY3QuY2VudGVyKCk7XHJcbiAgICAgICAgc3VyZmFjZS5jcmVhdGVDaXJjbGUoeyBjeDogcC54LCBjeTogcC55LCByOiByIH0pLnNldEZpbGwoY29sb3IpO1xyXG5cclxuICAgICAgICBpZiAobSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5hbmNob3JzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzW2ldLmRyYXdDdXIoc3VyZmFjZSwgciAqIDAuNzUsIGNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGRyYXc6IGZ1bmN0aW9uIChzdXJmYWNlLCBsaW5ld2lkdGgsIG0sIGZvbnRzaXplKSB7XHJcbiAgICAgICAgdmFyIHMgPSB0aGlzLnRleHQ7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB2YXIgciA9IHRoaXMuX3JlY3Q7XHJcbiAgICAgICAgdmFyIGZzID0gZm9udHNpemUgKiAodGhpcy5mb250c2l6ZSA+IDAgPyB0aGlzLmZvbnRzaXplIDogMS4wKTtcclxuICAgICAgICB2YXIgY29sb3IgPSB0aGlzLmNvbG9yID09IG51bGwgfHwgdGhpcy5jb2xvci5sZW5ndGggPT0gMCA/IFwiYmxhY2tcIiA6IHRoaXMuY29sb3I7XHJcbiAgICAgICAgdmFyIHQgPSBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChzdXJmYWNlLCBuZXcgSlNEcmF3Mi5Qb2ludChyLmxlZnQsIHIudG9wKSwgcywgY29sb3IsIGZzLCBudWxsLCB0aGlzLml0YWxpYyk7XHJcbiAgICAgICAgci53aWR0aCA9IHQgPT0gbnVsbCA/IDAgOiB0LmdldFRleHRXaWR0aCgpO1xyXG4gICAgICAgIHIuaGVpZ2h0ID0gZnMgKyA0O1xyXG5cclxuICAgICAgICAvL3ZhciBzcyA9IHMubWF0Y2goL1sgXXswLH1bYS16fDAtOXwqfCR8QHw/fCFdWyBdezAsfVs9XS9naSk7XHJcbiAgICAgICAgLy9pZiAoc3MgIT0gbnVsbCkge1xyXG4gICAgICAgIC8vICAgIHZhciBjID0gc3NbMF0uc3Vic3RyKDAsIHNzWzBdLmluZGV4T2YoJz0nKSk7XHJcbiAgICAgICAgLy8gICAgYyA9IHNjaWxsaWdlbmNlLlV0aWxzLnRyaW0oYyk7XHJcbiAgICAgICAgLy8gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFuY2hvcnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAvLyAgICAgICAgdmFyIGIgPSBKU0RyYXcyLkJvbmQuY2FzdCh0aGlzLmFuY2hvcnNbaV0pO1xyXG4gICAgICAgIC8vICAgICAgICBpZiAoYiAhPSBudWxsKVxyXG4gICAgICAgIC8vICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIGIuY2VudGVyKCksIGMsIGNvbG9yLCBmb250c2l6ZSAqIDAuODUpO1xyXG4gICAgICAgIC8vICAgIH1cclxuICAgICAgICAvL31cclxuICAgIH0sXHJcblxyXG4gICAgZHJhd1NlbGVjdDogZnVuY3Rpb24gKGxhc3NvKSB7XHJcbiAgICAgICAgbGFzc28uZHJhdyh0aGlzLCB0aGlzLl9yZWN0LmZvdXJQb2ludHMoKSk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuSlNEcmF3Mi5UZXh0LmNhc3QgPSBmdW5jdGlvbiAoYSkge1xyXG4gICAgcmV0dXJuIGEgIT0gbnVsbCAmJiBhLlQgPT0gJ1RFWFQnID8gYSA6IG51bGw7XHJcbn07IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuSlNEcmF3Mi5Ub29sYmFyID0gc2NpbC5leHRlbmQoc2NpbC5fYmFzZSwge1xyXG4gICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uIChlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGVkaXRvci5vcHRpb25zO1xyXG4gICAgICAgIHRoaXMudG9wdG9vbGJhclRib2R5ID0gbnVsbDtcclxuICAgICAgICB0aGlzLkJPUkRFUlNUWUxFID0gXCJzb2xpZCAxcHggI2NjY1wiO1xyXG4gICAgICAgIHRoaXMudG9vbGJhcmJrY29sb3IgPSBcIiNmY2ZjZmNcIjtcclxuICAgIH0sXHJcblxyXG4gICAgZGVzdHJveTogZnVuY3Rpb24gKCkge1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRCdXR0b25zOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhci5nZXRFbGVtZW50c0J5VGFnTmFtZShcImltZ1wiKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2hvdzogZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJyb3cuc3R5bGUuZGlzcGxheSA9IGYgPyBcIlwiIDogXCJub25lXCI7XHJcbiAgICB9LFxyXG5cclxuICAgIGNyZWF0ZVRvb2xiYXJzOiBmdW5jdGlvbiAoZGl2KSB7XHJcbiAgICAgICAgdmFyIGVsZW1zID0gW1wiSFwiLCBcIkNcIiwgXCJOXCIsIFwiT1wiLCBcIlNcIiwgXCJQXCIsIFwiRlwiLCBcIkNsXCIsIFwiQnJcIiwgXCIuLi5cIl07XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5xdWVyeSlcclxuICAgICAgICAgICAgZWxlbXMucHVzaChcIiYjOTY3OTtcIik7XHJcblxyXG4gICAgICAgIHZhciBzdHlsZSA9IHsgYm9yZGVyOiB0aGlzLkJPUkRFUlNUWUxFLCBiYWNrZ3JvdW5kOiBKU0RyYXcyLlNraW4uanNkcmF3LmJrY29sb3IgfTtcclxuXHJcbiAgICAgICAgdmFyIG1lID0gdGhpcy5lZGl0b3I7XHJcbiAgICAgICAgdmFyIG1haW5ib2R5ID0gc2NpbC5VdGlscy5jcmVhdGVUYWJsZShudWxsLCAwLCAwLCBzdHlsZSk7XHJcbiAgICAgICAgdGhpcy50b29sYmFyID0gbWFpbmJvZHk7XHJcbiAgICAgICAgZG9qby5jb25uZWN0KG1haW5ib2R5LnBhcmVudE5vZGUsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoZSkgeyBtZS5vblNlbEJ0bihlID09IG51bGwgPyB3aW5kb3cuZXZlbnQgOiBlKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcclxuICAgICAgICBzY2lsLlV0aWxzLnVuc2VsZWN0YWJsZShtYWluYm9keS5wYXJlbnROb2RlKTtcclxuXHJcbiAgICAgICAgdmFyIGJhY2tncm91bmQgPSBKU0RyYXcyLlNraW4uanNkcmF3LmJrY29sb3I7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIilcclxuICAgICAgICAgICAgYmFja2dyb3VuZCArPSBcIiB1cmwoXCIgKyBKU0RyYXcyLlNraW4uanNkcmF3LnRvb2xiYXJiayArIFwiKSByZXBlYXQteCBcIjtcclxuICAgICAgICBlbHNlIGlmIChKU0RyYXcyLlNraW4uanNkcmF3LmJraW1nICE9IG51bGwpXHJcbiAgICAgICAgICAgIGJhY2tncm91bmQgKz0gXCIgdXJsKFwiICsgSlNEcmF3Mi5Ta2luLmpzZHJhdy5ia2ltZyArIFwiKSByZXBlYXQteCBcIjtcclxuICAgICAgICB2YXIgdHIgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KG1haW5ib2R5LCBcInRyXCIsIG51bGwsIHsgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9KTtcclxuICAgICAgICB0aGlzLnRvb2xiYXJyb3cgPSB0cjtcclxuXHJcbiAgICAgICAgdmFyIHMgPSBzY2lsbGlnZW5jZS5VdGlscy5pbWdUYWcoXCJqc2RyYXcuZ2lmXCIsIG51bGwsIFwidGl0bGU9J1wiICsgdGhpcy5yZXMoXCJBYm91dCBKU0RyYXdcIikgKyBcIicgc3R5bGU9J3dpZHRoOlwiICsgdGhpcy5vcHRpb25zLmJ0bnNpemUgKyBcInB4O2hlaWdodDpcIiArIHRoaXMub3B0aW9ucy5idG5zaXplICsgXCJweDsnIGNtZD0nanNkcmF3J1wiKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTa2luVzgoKSlcclxuICAgICAgICAgICAgc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiLCBzLCB7IHBhZGRpbmdMZWZ0OiBcIjNweFwiIH0pO1xyXG5cclxuICAgICAgICB2YXIgdGJvZHkgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVUYWJsZShzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpLCAwLCAwLCB7IG1hcmdpblRvcDogKHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIiA/IFwiOHB4XCIgOiBcIjJweFwiKSwgbWFyZ2luQm90dG9tOiBcIjFweFwiIH0pO1xyXG4gICAgICAgIGlmIChzY2lsbGlnZW5jZS5VdGlscy5pc1RvdWNoICYmICFzY2lsbGlnZW5jZS5VdGlscy5pc0lFKVxyXG4gICAgICAgICAgICBkb2pvLmNvbm5lY3QodGJvZHkucGFyZW50Tm9kZSwgXCJvbnRvdWNobW92ZVwiLCBmdW5jdGlvbiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpIHtcclxuICAgICAgICAgICAgdGJvZHkucGFyZW50Tm9kZS5hbGlnbiA9IHRoaXMub3B0aW9ucy50b29sYmFyYWxpZ24gPT0gbnVsbCA/ICdjZW50ZXInIDogdGhpcy5vcHRpb25zLnRvb2xiYXJhbGlnbjtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50b29sYmFybGVmdG1hcmdpbiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGJvZHkucGFyZW50Tm9kZS5zdHlsZS5tYXJnaW5MZWZ0ID0gdGhpcy5vcHRpb25zLnRvb2xiYXJsZWZ0bWFyZ2luO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRvcHRvb2xiYXJUYm9keSA9IHRib2R5O1xyXG4gICAgICAgIHRoaXMucmVjcmVhdGVUb3BUb29sYmFyKCk7XHJcblxyXG4gICAgICAgIHRyID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudChtYWluYm9keSwgJ3RyJyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU2tpblc4KCkpIHtcclxuICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCB7IHZlcnRpY2FsQWxpZ246IFwidG9wXCIsIGJhY2tncm91bmRQb3NpdGlvbjogXCJsZWZ0XCIgfSk7XHJcbiAgICAgICAgICAgIHRib2R5ID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlVGFibGUodGQsIDEsIG51bGwsIHsgY29sb3I6IFwiIzAwMFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB7IHdpZHRoOiB0aGlzLm9wdGlvbnMuYnRuc2l6ZSArIFwicHhcIiwgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuYnRuc2l6ZSArIFwicHhcIiwgZm9udFdlaWdodDogXCJib2xkXCIsIGN1cnNvcjogJ2RlZmF1bHQnLCB0ZXh0QWxpZ246ICdjZW50ZXInLCB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJywgcGFkZGluZzogXCIycHhcIiB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlICE9IDEpXHJcbiAgICAgICAgICAgICAgICBzdHlsZS5mb250U2l6ZSA9ICh0aGlzLm9wdGlvbnMuc2NhbGUgKiAxMDApICsgXCIlXCI7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHZhciByID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQociwgJ3RkJywgZWxlbXNbaV0sIHN0eWxlLCB7IGNtZDogZWxlbXNbaV0gfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbXNbaV0gPT0gXCIuLi5cIilcclxuICAgICAgICAgICAgICAgICAgICBkLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB0aGlzLnJlcyhcIkVsZW1lbnQgUGVyaW9kaWMgVGFibGVcIikpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbXNbaV0gPT0gXCImIzk2Nzk7XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgdGhpcy5yZXMoXCJBdG9tIFByb3BlcnRpZXNcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KGQsIFwib25tb3VzZW92ZXJcIiwgZnVuY3Rpb24gKCkgeyB0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IEpTRHJhdzIuU2tpbi5qc2RyYXcuaG92ZXJjb2xvcjsgfSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KGQsIFwib25tb3VzZW91dFwiLCBmdW5jdGlvbiAoKSB7IHRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7IH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0ZCA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgbnVsbCwgeyBib3JkZXJUb3A6IHRoaXMuQk9SREVSU1RZTEUsIGJvcmRlckxlZnQ6IHRoaXMuQk9SREVSU1RZTEUgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSkge1xyXG4gICAgICAgICAgICB0ZC5jb2xTcGFuID0gMjtcclxuICAgICAgICAgICAgdGQuc3R5bGUuYm9yZGVyTGVmdCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkaXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobWFpbmJvZHkucGFyZW50Tm9kZSwgZGl2KTtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChkaXYpO1xyXG4gICAgICAgIGRpdi5zdHlsZS5ib3JkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRvci5tYWludGFibGUgPSBtYWluYm9keS5wYXJlbnROb2RlO1xyXG4gICAgfSxcclxuXHJcbiAgICBfbWFrZVBsdWdpbkZ1bjogZnVuY3Rpb24gKGZuKSB7XHJcbiAgICAgICAgdmFyIG1lID0gdGhpcy5lZGl0b3I7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGZuKG1lKTtcclxuICAgICAgICAgICAgKGUuc3JjRWxlbWVudCB8fCBlLnRhcmdldCkuc2V0QXR0cmlidXRlKFwianNkcmF3YWN0aXZhdGVcIiwgXCJmYWxzZVwiKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVjcmVhdGVUb3BUb29sYmFyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5lZGl0b3IuZGltZW5zaW9uLng7XHJcbiAgICAgICAgdmFyIHRib2R5ID0gdGhpcy50b3B0b29sYmFyVGJvZHk7XHJcbiAgICAgICAgdmFyIGJ1dHRvbnMgPSB0aGlzLmNyZWF0ZUJ1dHRvbnMod2lkdGgpO1xyXG4gICAgICAgIHZhciBqc2R0YiA9IFwiX19qc2RfdGJfXCIgKyB0aGlzLmVkaXRvci5pZDtcclxuICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG5cclxuICAgICAgICBzY2lsbGlnZW5jZS5VdGlscy5yZW1vdmVBbGwodGJvZHkpO1xyXG5cclxuICAgICAgICB2YXIgdHIgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCBcInRyXCIpO1xyXG4gICAgICAgIHZhciB0cjIgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpXHJcbiAgICAgICAgICAgIHRyMiA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHksIFwidHJcIiwgbnVsbCwgeyBoZWlnaHQ6IFwiNnB4XCIsIGZvbnRzaXplOiBcIjFweFwiIH0pO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIGIgPSBidXR0b25zW2ldO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbih0ciwgdHIyLCBiLCBqc2R0Yik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcGx1Z2lucyA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMucGx1Z2lucztcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBsdWdpbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAocGx1Z2lucyA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcGx1Z2lucyA9IHRoaXMub3B0aW9ucy5wbHVnaW5zO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBwbHVnaW5zID0gcGx1Z2lucy5jb25jYXQodGhpcy5vcHRpb25zLnBsdWdpbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGx1Z2lucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCgyICogdGhpcy5vcHRpb25zLmJ0bnNpemUgLyAyMCk7XHJcbiAgICAgICAgICAgIHZhciBubGVmdCA9IDA7XHJcbiAgICAgICAgICAgIHZhciBucmlnaHQgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwbHVnaW4gPSBwbHVnaW5zW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbi5sb2NhdGlvbiA9PSBcImxlZnRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChubGVmdCsrID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwidGRcIiwgXCI8aW1nIHNyYz0nXCIgKyBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9zZXAuZ2lmXCIpICsgXCInIGFsdD0nc2VwYXJhdG9yJyBzdHlsZT0nbWFyZ2luOjAgXCIgKyB3ICsgXCJweCAwIFwiICsgdyArIFwicHg7Jz5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmluc2VydEJlZm9yZSh0ZCwgdHIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyMi5pbnNlcnRCZWZvcmUoc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudChudWxsLCBcInRkXCIpLCB0cjIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRkID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudChudWxsLCBcInRkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyLmluc2VydEJlZm9yZSh0ZCwgdHIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdHIyLmluc2VydEJlZm9yZShzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwidGRcIiksIHRyMi5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChubGVmdCsrID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIFwiPGltZyBzcmM9J1wiICsgc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvc2VwLmdpZlwiKSArIFwiJyBhbHQ9J3NlcGFyYXRvcicgc3R5bGU9J21hcmdpbjowIFwiICsgdyArIFwicHggMCBcIiArIHcgKyBcInB4Oyc+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyMiwgXCJ0ZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCdG5JbWcodGQsIHBsdWdpbnNbaV0uaWNvbnVybCwgbnVsbCwgbnVsbCwgcGx1Z2luc1tpXS50b29sdGlwcywgbnVsbCwgcGx1Z2luc1tpXS53aWR0aCwgcGx1Z2luc1tpXS5sYWJlbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGQsIFwib25jbGlja1wiLCB0aGlzLl9tYWtlUGx1Z2luRnVuKHBsdWdpbnNbaV0ub25jbGljaykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY3JlYXRlQnV0dG9uczogZnVuY3Rpb24gKHdpZHRoKSB7XHJcbiAgICAgICAgdmFyIGJ1dHRvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgdmFyIGJvbmRzID0gW3sgYzogXCJ0cmlwbGVcIiwgdDogXCJUcmlwbGUgYm9uZFwiLCBsYWJlbDogXCJUcmlwbGVcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBjOiBcInVwXCIsIHQ6IFwiV2VkZ2UgYm9uZFwiLCBsYWJlbDogXCJVcFwiIH0sIHsgYzogXCJkb3duXCIsIHQ6IFwiSGFzaCBib25kXCIsIGxhYmVsOiBcIkRvd25cIiB9LCB7IGM6IFwid2lnZ2x5XCIsIHQ6IFwiV2lnZ2xlIGJvbmRcIiwgbGFiZWw6IFwiV2lnZ2xlXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgYzogXCJkZWxvY2FsaXplZFwiLCB0OiBcIkRlbG9jYWxpemVkIGJvbmRcIiwgbGFiZWw6IFwiRGVsb2NhbGl6ZWRcIiB9LCB7IGM6IFwiZWl0aGVyXCIsIHQ6IFwiRWl0aGVyIGRvdWJsZSBib25kXCIsIGxhYmVsOiBcIkVpdGhlclwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IGM6IFwiYm9sZGhhc2hcIiwgdDogXCJIYXNoZWQgYm9uZFwiLCBsYWJlbDogXCJIYXNoZWRcIiB9LCB7IGM6IFwiYm9sZFwiLCB0OiBcIkJvbGQgYm9uZFwiLCBsYWJlbDogXCJCb2xkXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgYzogXCJkdW1teVwiLCB0OiBcIklvbmljIGJvbmRcIiwgbGFiZWw6IFwiSW9uaWNcIiB9LCB7IGM6IFwidW5rbm93blwiLCB0OiBcIkRvdHRlZCBib25kXCIsIGxhYmVsOiBcIkRvdHRlZFwifV07XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5xdWVyeSlcclxuICAgICAgICAgICAgYm9uZHMuY29uY2F0KFt7IGM6IFwic2luZ2xlZG91YmxlXCIsIHQ6IFwiU2luZ2xlIG9yIERvdWJsZVwiLCBsYWJlbDogXCJTaW5nbGVcIiB9LCB7IGM6IFwic2luZ2xlYXJvbWF0aWNcIiwgdDogXCJTaW5nbGUgb3IgQXJvbWF0aWNcIiB9LCB7IGM6IFwiZG91YmxlYXJvbWF0aWNcIiwgdDogXCJEb3VibGUgb3IgQXJvbWF0aWNcIn1dKTtcclxuXHJcbiAgICAgICAgdmFyIHNtYWxsc2NyZWVuID0gdGhpcy5pc1NraW5XOCgpICYmIHdpZHRoIDw9IDQwMDtcclxuXHJcbiAgICAgICAgdmFyIGZpbGVzdWJtZW51cyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd2ZpbGVtZW51ICE9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGZpbGVzdWJtZW51cy5wdXNoKHsgYzogXCJzYXZlXCIsIHQ6IFwiRXhwb3J0XCIsIGxhYmVsOiBcIkV4cG9ydFwiIH0pO1xyXG4gICAgICAgICAgICBmaWxlc3VibWVudXMucHVzaCh7IGM6IFwib3BlblwiLCB0OiBcIkltcG9ydFwiLCBsYWJlbDogXCJJbXBvcnRcIiB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBzZWxlY3R0b29scyA9IFt7IGM6IFwibGFzc29cIiwgdDogXCJMYXNzbyBTZWxlY3Rpb25cIiwgbGFiZWw6IFwiTGFzc29cIiB9LFxyXG4gICAgICAgICAgICB7IGM6IFwic2VsZnJhZ1wiLCB0OiBcIlNlbGVjdCBGcmFnbWVudFwiLCBsYWJlbDogXCJGcmFnbWVudFwiIH0sIHsgYzogXCJzZWxlY3RhbGxcIiwgdDogXCJTZWxlY3QgQWxsXCIsIGxhYmVsOiBcIkFsbFwifV07XHJcblxyXG4gICAgICAgIHZhciBhZGRhYm91dCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGxjcGxhdGUpIHtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJuZXdcIiwgdDogXCJOZXdcIiwgbGFiZWw6IFwiTmV3XCIsIHN1YjogZmlsZXN1Ym1lbnVzIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInRsY3RlbXBsYXRlXCIsIHQ6IFwiVGVtcGxhdGVcIiwgbGFiZWw6IFwiVGVtcGxhdGVcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBjOiBcInNwb3QtY2lyY2xlXCIsIHQ6IFwiQ2lyY2xlIFNwb3RcIiwgbGFiZWw6IFwiQ2lyY2xlXCIsIHN1YjogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgYzogXCJzcG90LWhlbGxpcHNlXCIsIHQ6IFwiSG9yaXpvbnRhbCBFbGxpcHNlIFNwb3RcIiwgbGFiZWw6IFwiRWxsaXBzZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBjOiBcInNwb3QtdmVsbGlwc2VcIiwgdDogXCJWZXJ0aWNhbCBFbGxpcHNlIFNwb3RcIiwgbGFiZWw6IFwiRWxsaXBzZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBjOiBcInNwb3QtaGFsZmVsbGlwc2V1cFwiLCB0OiBcIkhhbGYtRWxsaXBzZSBTcG90XCIsIGxhYmVsOiBcIkVsbGlwc2VcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgYzogXCJzcG90LWhhbGZlbGxpcHNlZG93blwiLCB0OiBcIkhhbGYtRWxsaXBzZSBTcG90XCIsIGxhYmVsOiBcIkVsbGlwc2VcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgYzogXCJzcG90LWJsb3dpbmd1cFwiLCB0OiBcIkJsb3dpbmctdXAgU3BvdFwiLCBsYWJlbDogXCJCbG93aW5nXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IGM6IFwic3BvdC1ibG93aW5nZG93blwiLCB0OiBcIkJsb3dpbmctZG93biBTcG90XCIsIGxhYmVsOiBcIkJsb3dpbmdcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgYzogXCJzcG90LWNyZXNjZW50dXBcIiwgdDogXCJDcmVzY2VudCBTcG90XCIsIGxhYmVsOiBcIkNyZXNjZW50XCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IGM6IFwic3BvdC1jcmVzY2VudGRvd25cIiwgdDogXCJDcmVzY2VudCBTcG90XCIsIGxhYmVsOiBcIkNyZXNjZW50XCIgfVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJlcmFzZXJcIiwgdDogXCJFcmFzZXJcIiwgbGFiZWw6IFwiRXJhc2VyXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInRsY1wiLCB0OiBcIlRMQyBQbGF0ZVwiLCBsYWJlbDogXCJUTENcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ0bGNudW1iZXJcIiwgdDogXCJOdW1iZXIgUGxhdGVcIiwgbGFiZWw6IFwiTnVtYmVyXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiZWxlY3Ryb3Bob3Jlc2lzXCIsIHQ6IFwiRWxlY3Ryb3Bob3Jlc2lzIEdlbCBQbGF0ZVwiLCBsYWJlbDogXCJFbGVjdHJvcGhvcmVzaXNcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwidGV4dFwiLCB0OiBcIlRleHQvQXRvbSBMYWJlbFwiLCBsYWJlbDogXCJUZXh0XCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInVuZG9cIiwgdDogXCJVbmRvXCIsIGxhYmVsOiBcIlVuZG9cIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJyZWRvXCIsIHQ6IFwiUmVkb1wiLCBsYWJlbDogXCJSZWRvXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImNlbnRlclwiLCB0OiBcIk1vdmUgdG8gY2VudGVyXCIsIGxhYmVsOiBcIkNlbnRlclwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInpvb21pblwiLCB0OiBcIlpvb20gaW5cIiwgbGFiZWw6IFwiWm9vbVwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInpvb21vdXRcIiwgdDogXCJab29tIG91dFwiLCBsYWJlbDogXCJab29tXCIgfSk7XHJcblxyXG4gICAgICAgICAgICBhZGRhYm91dCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy53b3JrZmxvdykge1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcIm5ld1wiLCB0OiBcIk5ld1wiLCBsYWJlbDogXCJOZXdcIiwgc3ViOiBmaWxlc3VibWVudXMgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInNlbGVjdFwiLCB0OiBcIkJveCBTZWxlY3Rpb25cIiwgbGFiZWw6IFwiQm94XCIsIHN1Yjogc2VsZWN0dG9vbHMgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwibW92ZXZpZXdcIiwgdDogXCJNb3ZlL1ZpZXdcIiwgbGFiZWw6IFwiTW92ZVwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInpvb21ib3hcIiwgdDogXCJab29tIEJveFwiLCBsYWJlbDogXCJab29tXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInJlY3RhbmdsZVwiLCB0OiBcIlJlY3RhbmdsZVwiLCBsYWJlbDogXCJSZWN0YW5nbGVcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJkaWFtb25kXCIsIHQ6IFwiRGlhbW9uZFwiLCBsYWJlbDogXCJEaWFtb25kXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiZWxsaXBzZVwiLCB0OiBcIkVsbGlwc2VcIiwgbGFiZWw6IFwiRWxsaXBzZVwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImRyZXZlcnNlZFwiLCB0OiBcIkQgUmV2ZXJzZWRcIiwgbGFiZWw6IFwiRCBSZXZlcnNlZFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImRzaGFwZVwiLCB0OiBcIkQgU2hhcHJlXCIsIGxhYmVsOiBcIkQgU2hhcHJlXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImFycm93XCIsIHQ6IFwiUmVhY3Rpb24gYXJyb3dcIiwgbGFiZWw6IFwiUmVhY3Rpb25cIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ0ZXh0XCIsIHQ6IFwiVGV4dC9BdG9tIExhYmVsXCIsIGxhYmVsOiBcIlRleHRcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiZXJhc2VyXCIsIHQ6IFwiRXJhc2VyXCIsIGxhYmVsOiBcIkVyYXNlclwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ1bmRvXCIsIHQ6IFwiVW5kb1wiLCBsYWJlbDogXCJVbmRvXCIgfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwicmVkb1wiLCB0OiBcIlJlZG9cIiwgbGFiZWw6IFwiUmVkb1wiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJjZW50ZXJcIiwgdDogXCJNb3ZlIHRvIGNlbnRlclwiLCBsYWJlbDogXCJDZW50ZXJcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ6b29taW5cIiwgdDogXCJab29tIGluXCIsIGxhYmVsOiBcIlpvb21cIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ6b29tb3V0XCIsIHQ6IFwiWm9vbSBvdXRcIiwgbGFiZWw6IFwiWm9vbVwiIH0pO1xyXG5cclxuICAgICAgICAgICAgYWRkYWJvdXQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuaGVsbXRvb2xiYXIpIHtcclxuICAgICAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLkludGVyZmFjZS5nZXRIZWxtVG9vbGJhcihidXR0b25zLCBmaWxlc3VibWVudXMsIHNlbGVjdHRvb2xzLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dhYm91dCAhPSBmYWxzZSlcclxuICAgICAgICAgICAgICAgIGFkZGFib3V0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucGFzdGVjaGVtZHJhdykge1xyXG4gICAgICAgICAgICAgICAgZmlsZXN1Ym1lbnVzLnB1c2goeyBjOiBcInBhc3RlY2hlbWRyYXdcIiwgdDogXCJQYXN0ZSBDaGVtRHJhdywgSVNJUy9EcmF3Li4uXCIsIGxhYmVsOiBcIlBhc3RlXCIgfSk7XHJcbiAgICAgICAgICAgICAgICBmaWxlc3VibWVudXMucHVzaCh7IGM6IFwiY29weWNoZW1kcmF3XCIsIHQ6IFwiQ29weSBDaGVtRHJhdywgSVNJUy9EcmF3LCBXb3JkLi4uXCIsIGxhYmVsOiBcIkNvcHlcIiB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSkge1xyXG4gICAgICAgICAgICAgICAgZmlsZXN1Ym1lbnVzLnB1c2goeyBjOiBcImFib3V0XCIsIHQ6IFwiQWJvdXQgSlNEcmF3XCIsIGxhYmVsOiBcIkFib3V0XCIgfSk7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcIm5ld1wiLCB0OiBcIk5ld1wiLCBsYWJlbDogXCJOZXdcIiwgc3ViOiBmaWxlc3VibWVudXMgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcIm5ld1wiLCB0OiBcIk5ld1wiLCBzdWI6IGZpbGVzdWJtZW51cywgbGFiZWw6IFwiTmV3XCIgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzY2lsbGlnZW5jZS5VdGlscy5zZXJ2aWNlQXZhaWxhYmxlKCkgJiYgSlNEcmF3Mi5TZWN1cml0eS5rRWRpdGlvbiAhPSBcIkxpdGVcIilcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwibjJzXCIsIHQ6IFwiTmFtZSB0byBTdHJ1Y3R1cmVcIiwgbGFiZWw6IFwiTjJTXCIsIHN1YjogW3sgYzogXCJjbGVhbnVwXCIsIHQ6IFwiQ2xlYW4gdXBcIiwgbGFiZWw6IFwiQ2xlYW5cIn1dIH0pO1xyXG4gICAgICAgICAgICBpZiAoYnV0dG9ucy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcHBtb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3R0b29scy5wdXNoKHsgYzogXCJjb3B5XCIsIHQ6IFwiQ29weVwiLCBsYWJlbDogXCJDb3B5XCIgfSk7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3R0b29scy5wdXNoKHsgYzogXCJjdXRcIiwgdDogXCJDdXRcIiwgbGFiZWw6IFwiQ3V0XCIgfSk7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3R0b29scy5wdXNoKHsgYzogXCJwYXN0ZVwiLCB0OiBcIlBhc3RlXCIsIGxhYmVsOiBcIlBhc3RlXCIgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwic2VsZWN0XCIsIHQ6IFwiQm94IFNlbGVjdGlvblwiLCBsYWJlbDogXCJCb3hcIiwgc3ViOiBzZWxlY3R0b29scyB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJjZW50ZXJcIiwgdDogXCJNb3ZlIHRvIGNlbnRlclwiLCBsYWJlbDogXCJDZW50ZXJcIiwgc3ViOiBzbWFsbHNjcmVlbiA/IG51bGwgOiBbeyBjOiBcInpvb21pblwiLCB0OiBcIlpvb20gaW5cIiwgbGFiZWw6IFwiWm9vbVwiIH0sIHsgYzogXCJ6b29tb3V0XCIsIHQ6IFwiWm9vbSBvdXRcIiwgbGFiZWw6IFwiWm9vbVwiIH0sIHsgYzogXCJyb3RhdGVcIiwgdDogXCJSb3RhdGVcIiwgbGFiZWw6IFwiUm90YXRlXCIgfSwgeyBjOiBcImZsaXBoXCIsIHQ6IFwiRmxpcCBIb3Jpem9udGFsXCIsIGxhYmVsOiBcIkZsaXBcIiB9LCB7IGM6IFwiZmxpcHZcIiwgdDogXCJGbGlwIFZlcnRpY2FsXCIsIGxhYmVsOiBcIkZsaXBcIn1dIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcIm1vdmV2aWV3XCIsIHQ6IFwiTW92ZS9WaWV3XCIsIGxhYmVsOiBcIk1vdmVcIiwgc3ViOiBbeyBjOiBcInpvb21ib3hcIiwgdDogXCJab29tIEJveFwiLCBsYWJlbDogXCJab29tXCJ9XSB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcblxyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImVyYXNlclwiLCB0OiBcIkVyYXNlclwiLCBsYWJlbDogXCJFcmFzZXJcIiB9KTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYXBwbW9kZSlcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwidW5kb1wiLCB0OiBcIlVuZG9cIiwgbGFiZWw6IFwiVW5kb1wiLCBzdWI6IFt7IGM6IFwicmVkb1wiLCB0OiBcIlJlZG9cIiwgbGFiZWw6IFwiUmVkb1wifV0gfSk7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwifFwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInNpbmdsZVwiLCB0OiBcIlNpbmdsZSBib25kXCIsIGxhYmVsOiBcIlNpbmdsZVwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImRvdWJsZVwiLCB0OiBcIkRvdWJsZSBib25kXCIsIGxhYmVsOiBcIkRvdWJsZVwiLCBzdWI6IGJvbmRzIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcImNoYWluXCIsIHQ6IFwiQ2hhaW4gVG9vbFwiLCBsYWJlbDogXCJDaGFpblwiIH0pO1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuXHJcbiAgICAgICAgICAgIHZhciBpID0gMDtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBudWxsO1xyXG4gICAgICAgICAgICBKU0RyYXcyLlN1cGVyQXRvbXMucmVhZCgpO1xyXG4gICAgICAgICAgICB2YXIgdGVtcGxhdGVpY29ucyA9IHsgYmVuemVuZTogMSwgaGV4YW5lOiAxLCBwZW50YW5lOiAxLCBwcm9wYW5lOiAxLCBidXRhbmU6IDEsIGhlcHRhbmU6IDEsIG9jdGFuZTogMSB9O1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIEpTRHJhdzIuU3VwZXJBdG9tcy50ZW1wbGF0ZXMpIHtcclxuICAgICAgICAgICAgICAgICsraTtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gaztcclxuICAgICAgICAgICAgICAgIHZhciBjID0gdGVtcGxhdGVpY29uc1trLnRvTG93ZXJDYXNlKCldID8gay50b0xvd2VyQ2FzZSgpIDogXCJ0ZW1wbGF0ZVwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgPD0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3QgPSB7IGM6IGMsIGNtZDogXCJ0ZW1wbGF0ZS5cIiArIGssIGxhYmVsOiBuYW1lLCB0OiBuYW1lIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKGxhc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3Quc3ViID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Quc3ViID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5zdWIucHVzaCh7IGM6IGMsIGNtZDogXCJ0ZW1wbGF0ZS5cIiArIGssIGxhYmVsOiBuYW1lLCB0OiBuYW1lIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoSlNEcmF3Mi5TdXBlckF0b21zLmhhc0N1c3RvbVRlbXBsYXRlcygpICYmIHRoaXMub3B0aW9ucy5zaG93Y3VzdG9tdGVtcGxhdGVzICE9IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgbGFzdC5zdWIucHVzaCh7IGM6IFwidGVtcGxhdGVzXCIsIGNtZDogXCJ0ZW1wbGF0ZS5bY3VzdG9tXVwiLCBsYWJlbDogXCJUZW1wbGF0ZXNcIiwgdDogXCJDdXN0b20gVGVtcGxhdGVzXCIgfSk7XHJcblxyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gW3sgYzogXCJlLUhcIiwgdDogXCJFbGVtZW50IEhcIiwgbGFiZWw6IFwiSHlkcm9nZW5cIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgYzogXCJlLU9cIiwgdDogXCJFbGVtZW50IE9cIiwgbGFiZWw6IFwiT3h5Z2VuXCIgfSwgeyBjOiBcImUtTlwiLCB0OiBcIkVsZW1lbnQgTlwiLCBsYWJlbDogXCJOaXRyb2dlblwiIH0sIHsgYzogXCJlLVNcIiwgdDogXCJFbGVtZW50IFNcIiwgbGFiZWw6IFwiU3VsZnVyXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IGM6IFwiZS1QXCIsIHQ6IFwiRWxlbWVudCBQXCIsIGxhYmVsOiBcIlBob3NwaG9ydXNcIiB9LCB7IGM6IFwiZS1GXCIsIHQ6IFwiRWxlbWVudCBGXCIsIGxhYmVsOiBcIkZsdW9yaW5lXCIgfSwgeyBjOiBcImUtQ2xcIiwgdDogXCJFbGVtZW50IENsXCIsIGxhYmVsOiBcIkNobG9yaW5lXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IGM6IFwiZS1CclwiLCB0OiBcIkVsZW1lbnQgQnJcIiwgbGFiZWw6IFwiQnJvbWluZVwiIH0sIHsgYzogXCJlLW1vcmVcIiwgdDogXCJFbGVtZW50IFBlcmlvZGljIFRhYmxlXCIsIGxhYmVsOiBcIlAuVC5cIn1dO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJlLUNcIiwgdDogXCJFbGVtZW50IENcIiwgbGFiZWw6IFwiQ2FyYm9uXCIsIHN1YjogZWxlbWVudHMgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uICE9IFwiTGl0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGM6IFwidGV4dFwiLCB0OiBcIlRleHQvQXRvbSBMYWJlbFwiLCBsYWJlbDogXCJUZXh0XCIsIHN1Yjogc21hbGxzY3JlZW4gPyBudWxsIDogW3sgYzogXCJzZ3JvdXBcIiwgdDogXCJTR3JvdXAgLSBUYWcgQXRvbS9Cb25kL0JyYWNrZXRcIiwgbGFiZWw6IFwiU0dyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjOiBcImJyYWNrZXRcIiwgdDogXCJCcmFja2V0XCIsIGxhYmVsOiBcIkJyYWNrZXRcIiB9LCB7IGM6IFwic3ltYm9sXCIsIHQ6IFwiU3ltYm9sXCIsIGxhYmVsOiBcIlN5bWJvbFwifV1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBjOiBcInJlY3RhbmdsZVwiLCB0OiBcIlJlY3RhbmdsZVwiLCBsYWJlbDogXCJSZWN0YW5nbGVcIiwgc3ViOiBbeyBjOiBcImRpYW1vbmRcIiwgdDogXCJEaWFtb25kXCIsIGxhYmVsOiBcIkRpYW1vbmRcIiB9LCB7IGM6IFwiZWxsaXBzZVwiLCB0OiBcIkVsbGlwc2VcIiwgbGFiZWw6IFwiRWxsaXBzZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYzogXCJkcmV2ZXJzZWRcIiwgdDogXCJEIFJldmVyc2VkXCIsIGxhYmVsOiBcIkQgUmV2ZXJzZWRcIiB9LCB7IGM6IFwiZHNoYXBlXCIsIHQ6IFwiRCBTaGFwcmVcIiwgbGFiZWw6IFwiRCBTaGFwcmVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGM6IFwiY3VydmVcIiwgdDogXCJDdXJ2ZVwiLCBsYWJlbDogXCJDdXJ2ZVwiIH0sIHsgYzogXCJ0bGNcIiwgdDogXCJUTEMgUGxhdGVcIiwgbGFiZWw6IFwiVExDXCIgfSwgeyBjOiBcInRsY3RlbXBsYXRlXCIsIHQ6IFwiVGVtcGxhdGVcIiwgbGFiZWw6IFwiVGVtcGxhdGVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGM6IFwiZWxlY3Ryb3Bob3Jlc2lzXCIsIHQ6IFwiRWxlY3Ryb3Bob3Jlc2lzIEdlbCBQbGF0ZVwiLCBsYWJlbDogXCJFbGVjdHJvcGhvcmVzaXNcIiB9LCB7IGM6IFwiYXNzYXljdXJ2ZVwiLCB0OiBcIkFzc2F5IEN1cnZlXCIsIGxhYmVsOiBcIkFzc2F5XCIgfSwgeyBjOiBcInNwZWN0cnVtXCIsIHQ6IFwiU3BlY3RydW1cIiwgbGFiZWw6IFwiU3BlY3RydW1cIn1dXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJjaGFyZ2VwXCIsIHQ6IFwiSW5jcmVhc2UgY2hhcmdlc1wiLCBsYWJlbDogXCJDaGFyZ2VcIiwgc3ViOiBbeyBjOiBcImNoYXJnZW5cIiwgdDogXCJEZXNjcmVhc2UgY2hhcmdlc1wiLCBsYWJlbDogXCJDaGFyZ2VcIn1dIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yeG4gJiYgSlNEcmF3Mi5TZWN1cml0eS5rRWRpdGlvbiAhPSBcIkxpdGVcIikge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGM6IFwiYXJyb3dcIiwgdDogXCJSZWFjdGlvbiBhcnJvd1wiLCBsYWJlbDogXCJSZWFjdGlvblwiLCBzdWI6IFt7IGM6IFwicGx1c1wiLCB0OiBcIlJlYWN0aW9uIFBsdXNcIiwgbGFiZWw6IFwiUGx1c1wiIH0sIHsgYzogXCJyeG5cIiwgdDogXCJDbGVhbiB1cCByZWFjdGlvblwiLCBsYWJlbDogXCJDbGVhblwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IGM6IFwiY29weXByb2RcIiwgdDogXCJDb3B5IHJlYWN0YW50cyB0byBwcm9kdWN0c1wiLCBsYWJlbDogXCJSLT5QXCIgfSwgeyBjOiBcInJ4bm1hcFwiLCB0OiBcIk1hcCByZWFjdGlvblwiLCBsYWJlbDogXCJNYXBcIiB9LCB7IGM6IFwicnhubWFwMlwiLCB0OiBcIkNsZWFyIHJlYWN0aW9uIG1hcFwiLCBsYWJlbDogXCJDbGVhclwifV1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmlvbG9neSAmJiBKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uICE9IFwiTGl0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0b3IuaGVsbSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIG9yZy5oZWxtLndlYmVkaXRvci5JbnRlcmZhY2UuYWRkVG9vbGJhcihidXR0b25zLCBudWxsLCBudWxsLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJzZXFcIiwgdDogXCJQZXB0aWRlIFNlcXVlbmNlXCIsIGxhYmVsOiBcIlBlcHRpZGVcIiwgc3ViOiBbeyBjOiBcImhlbGl4XCIsIHQ6IFwiRE5BIFNlcXVlbmNlXCIsIGxhYmVsOiBcIkROQVwiIH0sIHsgYzogXCJybmFcIiwgdDogXCJSTkEgU2VxdWVuY2VcIiwgbGFiZWw6IFwiUk5BXCIgfSwgeyBjOiBcImFudGlib2R5XCIsIHQ6IFwiQW50aWJvZHlcIiwgbGFiZWw6IFwiQW50aWJvZHlcIiB9LCB7IGM6IFwicHJvdGVpblwiLCB0OiBcIlByb3RlaW5cIiwgbGFiZWw6IFwiUHJvdGVpblwiIH0sIHsgYzogXCJnZW5lXCIsIHQ6IFwiR2VuZVwiLCBsYWJlbDogXCJHZW5lXCJ9XSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSAmJiB0aGlzLm9wdGlvbnMuaW5rdG9vbHMgJiYgIXNtYWxsc2NyZWVuKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiaW5rcmVkXCIsIHQ6IFwiSW5rIC0gUmVkXCIsIGxhYmVsOiBcIklua1wiLCBzdWI6IFt7IGM6IFwiaW5rYmx1ZVwiLCB0OiBcIkluayAtIEJsdWVcIiwgbGFiZWw6IFwiSW5rXCIgfSwgeyBjOiBcImlua2dyZWVuXCIsIHQ6IFwiSW5rIC0gR3JlZW5cIiwgbGFiZWw6IFwiSW5rXCIgfSwgeyBjOiBcImlua2NsZWFyXCIsIHQ6IFwiQ2xlYXIgSW5rXCIsIGxhYmVsOiBcIkNsZWFyMVwiIH0sIHsgYzogXCJpbmtjbGVhcmFsbFwiLCB0OiBcIkNsZWFyIEFsbCBJbmtzXCIsIGxhYmVsOiBcIkNsZWFyXCJ9XSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKEpTRHJhdzIuU2VjdXJpdHkua0VkaXRpb24gIT0gXCJMaXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VuZHF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJ8XCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbeyBjOiBcImNoZW1zcGlkZXJcIiwgdDogXCJTZWFyY2ggQ2hlbVNwaWRlclwiLCBsYWJlbDogXCJDaGVtU3BpZGVyXCJ9XTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5yZWF4eXMgIT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaCh7IGM6IFwicmVheHlzXCIsIHQ6IFwiU2VhcmNoIFJlYXh5c1wiLCBsYWJlbDogXCJSZWF4eXNcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInB1YmNoZW1cIiwgdDogXCJTZWFyY2ggUHViQ2hlbVwiLCBsYWJlbDogXCJQdWJDaGVtXCIsIHN1YjogbGlzdCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy51c2VjaGVtZHJhdylcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiY2hlbWRyYXdcIiwgdDogXCJDaGVtRHJhdyBFZGl0b3JcIiwgbGFiZWw6IFwiQ2hlbURyYXdcIiB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChKU0RyYXcyLkZ1bGxzY3JlZW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmV4aXRmdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiZnVsbHNjcmVlbjJcIiwgdDogXCJSZWd1bGFyIFNpemVcIiwgbGFiZWw6IFwiRnVsbHNjcmVlblwiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5mdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7IGM6IFwiZnVsbHNjcmVlblwiLCB0OiBcIkZ1bGxzY3JlZW4gU2l6ZVwiLCBsYWJlbDogXCJGdWxsc2NyZWVuXCIgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChhZGRhYm91dCkge1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goeyBjOiBcInxcIiB9KTtcclxuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHsgYzogXCJhYm91dFwiLCB0OiBcIkFib3V0IEpTRHJhd1wiLCBsYWJlbDogXCJBYm91dFwiIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSlcclxuICAgICAgICAgICAgdGhpcy5yZWxheW91dEJ1dHRvbnNCeVdpZHRoKGJ1dHRvbnMsIHdpZHRoLCB0aGlzLm9wdGlvbnMucGx1Z2lucyA9PSBudWxsID8gMCA6IHRoaXMub3B0aW9ucy5wbHVnaW5zLmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlbGF5b3V0QnV0dG9uc0J5V2lkdGg6IGZ1bmN0aW9uIChidXR0b25zLCB3aWR0aCwgbnBsdWdpbnMpIHtcclxuICAgICAgICB2YXIgbiA9IE1hdGgucm91bmQod2lkdGggLyAodGhpcy5vcHRpb25zLnNraW4gPT0gXCJ3OFwiID8gNTAgOiA2MCkpIC0gYnV0dG9ucy5sZW5ndGggLSBucGx1Z2lucztcclxuICAgICAgICBpZiAobiA8IDAgJiYgbiA8IC04KSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBidXR0b25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uc1tpXS5jID09IFwifFwiKVxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG4gPSBNYXRoLnJvdW5kKHdpZHRoIC8gKHRoaXMub3B0aW9ucy5za2luID09IFwidzhcIiA/IDUwIDogNjApKSAtIGJ1dHRvbnMubGVuZ3RoIC0gbnBsdWdpbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuID09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKG4gPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1dHRvbnNbaV0uYyA9PSBcInJpbmc1XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3ViID0gYnV0dG9uc1tpXS5zdWI7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucy5zcGxpY2UoaSArIGogKyAxLCAwLCBzdWJbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWIuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zW2kgKyBqXS5zdWIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbaSArIGogKyAxXS5zdWIgPSBzdWI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG4gPCAwKSB7XHJcbiAgICAgICAgICAgIG4gPSAtbjtcclxuICAgICAgICAgICAgdmFyIHJhbmtzO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndvcmtmbG93KVxyXG4gICAgICAgICAgICAgICAgcmFua3MgPSBbXCJ6b29tb3V0XCIsIFwiem9vbWJveFwiLCBcInJlZG9cIiwgXCJ6b29taW5cIiwgXCJlcmFzZXJcIiwgXCJtb3Zldmlld1wiXTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmhlbG10b29sYmFyKVxyXG4gICAgICAgICAgICAgICAgcmFua3MgPSBbXCJ6b29tYm94XCIsIFwiem9vbW91dFwiLCBcInpvb21pblwiLCBcInJlZG9cIiwgXCJlcmFzZXJcIl07XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJhbmtzID0gW1wiZG91YmxlXCIsIFwiY2hhaW5cIiwgXCJwdWJjaGVtXCIsIFwicGVudGFuZVwiLCBcImhleGFuZVwiLCBcInpvb21ib3hcIiwgXCJtb3Zldmlld1wiLCBcInpvb21vdXRcIiwgXCJ6b29taW5cIiwgXCJyZWRvXCIsIFwibjJzXCIsIFwiZXJhc2VyXCIsIFwic2VxXCIsIFwiY2hlbWRyYXdcIiwgXCJjaGFyZ2VwXCIsIFwicmVjdGFuZ2xlXCIsIFwiYXJyb3dcIiwgXCJ0ZXh0XCJdO1xyXG5cclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGJ1dHRvbnMubGVuZ3RoIC0gMTsgaSA+IDA7IC0taSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgNTAwICYmIGJ1dHRvbnNbaV0uYyA9PSBcInxcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHJhbmsgPSBzY2lsLlV0aWxzLmluZGV4T2YocmFua3MsIGJ1dHRvbnNbaV0uYyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmFuayA+PSAwICYmIHJhbmsgKyAxIDw9IG4pIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA+IDAgJiYgYnV0dG9uc1tpIC0gMV0uYyA9PSBcInxcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zLnNwbGljZShpIC0gMSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC0taTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1dHRvbnNbaSAtIDFdLnN1YiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zW2kgLSAxXS5zdWIgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3ViID0gYnV0dG9uc1tpIC0gMV0uc3ViO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpbiA9PSBcInNpXCIgJiYgc3ViLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5wdXNoKFwifFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBzdWIucHVzaChidXR0b25zW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGJ1dHRvbnNbaV0uc3ViO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbaV0uc3ViID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGlzdC5sZW5ndGg7ICsraylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5wdXNoKGxpc3Rba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVzOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiBKU0RyYXcyLkxhbmd1YWdlLnJlcyhzKTtcclxuICAgIH0sXHJcblxyXG4gICAgaXNTa2luVzg6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNraW4gPT0gXCJ3OFwiIHx8IHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIjtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0SG92ZXJhYmxlOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdChlLCBcIm9ubW91c2VvdmVyXCIsIGZ1bmN0aW9uICgpIHsgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kID0gSlNEcmF3Mi5Ta2luLmpzZHJhdy5ob3ZlcmNvbG9yOyB9KSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KGUsIFwib25tb3VzZW91dFwiLCBmdW5jdGlvbiAoKSB7IHRoaXMuc3R5bGUuYmFja2dyb3VuZCA9IHRoaXMuZ2V0QXR0cmlidXRlKFwicHVzaGVkXCIpID09IG51bGwgPyBcIlwiIDogSlNEcmF3Mi5Ta2luLmpzZHJhdy5idG5zZWxjb2xvcjsgfSkpO1xyXG4gICAgfSxcclxuXHJcbiAgICBleGNoYW5nZUJ1dHRvbjogZnVuY3Rpb24gKHBhcmVudCwgdGQpIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNraW4gPT0gXCJzaVwiKSB7XHJcbiAgICAgICAgICAgIC8vcGFyZW50LmlubmVySFRNTFxyXG4gICAgICAgICAgICAvL1wiPGltZyBzdHlsZT1cIm1hcmdpbi10b3A6IC01cHg7XCIgc3JjPVwic3JjLy4uL3c4L1BlbnRhbmUucG5nXCI+PGRpdiBzdHlsZT1cIndpZHRoOiA0MnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiBncmF5OyBvdmVyZmxvdzogaGlkZGVuOyBmb250LXNpemU6IDlweDsgbWFyZ2luLXRvcDogLTExcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7XCI+UGVudGFuZTwvZGl2PlwiXHJcbiAgICAgICAgICAgIC8vdGQuaW5uZXJIVE1MXHJcbiAgICAgICAgICAgIC8vXCI8dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCI+PHRib2R5Pjx0cj48dGQ+PGltZyBzdHlsZT1cIm1hcmdpbi10b3A6IC01cHg7XCIgc3JjPVwic3JjLy4uL3c4L0J1dGFuZS5wbmdcIj48L3RkPjx0ZD48ZGl2IHN0eWxlPVwid2lkdGg6IDQycHg7IHRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6IGdyYXk7IG92ZXJmbG93OiBoaWRkZW47IGZvbnQtc2l6ZTogOXB4OyBtYXJnaW4tdG9wOiAtMTFweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5CdXRhbmU8L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPlwiXHJcbiAgICAgICAgICAgIHZhciBpbWcxID0gcGFyZW50LmNoaWxkTm9kZXNbMF07XHJcbiAgICAgICAgICAgIHZhciB0eHQxID0gaW1nMS5uZXh0U2libGluZztcclxuXHJcbiAgICAgICAgICAgIHZhciB0ZHMgPSB0ZC5jaGlsZE5vZGVzWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGRcIik7XHJcbiAgICAgICAgICAgIHZhciBpbWcyID0gdGRzWzBdLmNoaWxkTm9kZXNbMF07XHJcbiAgICAgICAgICAgIHZhciB0eHQyID0gdGRzWzFdLmNoaWxkTm9kZXNbMF07XHJcblxyXG4gICAgICAgICAgICB2YXIgc3JjID0gaW1nMS5zcmM7XHJcbiAgICAgICAgICAgIHZhciBzdWJ0aXRsZSA9IHR4dDEuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICB2YXIgY21kID0gZG9qby5hdHRyKHBhcmVudCwgXCJjbWRcIik7XHJcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IGRvam8uYXR0cihwYXJlbnQsIFwidGl0bGVcIik7XHJcblxyXG4gICAgICAgICAgICBpbWcxLnNyYyA9IGltZzIuc3JjO1xyXG4gICAgICAgICAgICB0eHQxLmlubmVySFRNTCA9IHR4dDIuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICBkb2pvLmF0dHIocGFyZW50LCBcImNtZFwiLCBkb2pvLmF0dHIodGQsIFwiY21kXCIpKTtcclxuICAgICAgICAgICAgZG9qby5hdHRyKHBhcmVudCwgXCJ0aXRsZVwiLCBkb2pvLmF0dHIodGQsIFwidGl0bGVcIikpO1xyXG5cclxuICAgICAgICAgICAgaW1nMi5zcmMgPSBzcmM7XHJcbiAgICAgICAgICAgIHR4dDIuaW5uZXJIVE1MID0gc3VidGl0bGU7XHJcbiAgICAgICAgICAgIGRvam8uYXR0cih0ZCwgXCJjbWRcIiwgY21kKTtcclxuICAgICAgICAgICAgZG9qby5hdHRyKHRkLCBcInRpdGxlXCIsIHRpdGxlKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgc3JjID0gcGFyZW50LnNyYztcclxuICAgICAgICAgICAgdmFyIGNtZCA9IGRvam8uYXR0cihwYXJlbnQsIFwiY21kXCIpO1xyXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2pvLmF0dHIocGFyZW50LCBcInRpdGxlXCIpO1xyXG4gICAgICAgICAgICB2YXIgc3VidGl0bGUgPSBwYXJlbnQubmV4dFNpYmxpbmcgIT0gbnVsbCA/IHBhcmVudC5uZXh0U2libGluZy5pbm5lckhUTUwgOiBudWxsO1xyXG5cclxuICAgICAgICAgICAgcGFyZW50LnNyYyA9IHRkLnNyYztcclxuICAgICAgICAgICAgZG9qby5hdHRyKHBhcmVudCwgXCJjbWRcIiwgZG9qby5hdHRyKHRkLCBcImNtZFwiKSk7XHJcbiAgICAgICAgICAgIGRvam8uYXR0cihwYXJlbnQsIFwidGl0bGVcIiwgZG9qby5hdHRyKHRkLCBcInRpdGxlXCIpKTtcclxuICAgICAgICAgICAgaWYgKHRkLm5leHRTaWJsaW5nICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICBwYXJlbnQubmV4dFNpYmxpbmcuaW5uZXJIVE1MID0gdGQubmV4dFNpYmxpbmcuaW5uZXJIVE1MO1xyXG5cclxuICAgICAgICAgICAgdGQuc3JjID0gc3JjO1xyXG4gICAgICAgICAgICBkb2pvLmF0dHIodGQsIFwiY21kXCIsIGNtZCk7XHJcbiAgICAgICAgICAgIGRvam8uYXR0cih0ZCwgXCJ0aXRsZVwiLCB0aXRsZSk7XHJcbiAgICAgICAgICAgIGlmICh0ZC5uZXh0U2libGluZyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGQubmV4dFNpYmxpbmcuaW5uZXJIVE1MID0gc3VidGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVCdXR0b246IGZ1bmN0aW9uICh0ciwgdHIyLCBiLCBqc2R0Yikge1xyXG4gICAgICAgIHZhciB0ZDtcclxuICAgICAgICB2YXIgaW1nO1xyXG4gICAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCgyICogdGhpcy5vcHRpb25zLmJ0bnNpemUgLyAyMCk7XHJcbiAgICAgICAgdmFyIHRiaWQgPSBqc2R0YiArIFwiX1wiICsgYi5jO1xyXG4gICAgICAgIGlmIChiLmMgPT0gXCJ8XCIpIHtcclxuICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIFwiPGltZyBzcmM9J1wiICsgc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvc2VwLmdpZlwiKSArIFwiJyBzdHlsZT0nbWFyZ2luOjAgXCIgKyAyICogdyArIFwicHggMCBcIiArIDIgKiB3ICsgXCJweDt3aWR0aDpcIiArIHcgKyBcInB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsnPlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRkID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiKTtcclxuICAgICAgICAgICAgdmFyIHNyYyA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpXHJcbiAgICAgICAgICAgICAgICBzcmMgPSBcInc4L1wiICsgYi5jICsgXCIucG5nXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHNyYyA9IFwiaW1nL1wiICsgYi5jICsgXCIuZ2lmXCI7XHJcbiAgICAgICAgICAgIGltZyA9IHRoaXMuY3JlYXRlQnRuSW1nKHRkLCAoYi5pbWcgIT0gbnVsbCA/IGIuaW1nIDogc2NpbC5VdGlscy5pbWdTcmMoc3JjKSksIHRiaWQsIGIuY21kICE9IG51bGwgPyBiLmNtZCA6IGIuYywgdGhpcy5yZXMoYi50KSwgbnVsbCwgbnVsbCwgdGhpcy5yZXMoYi5sYWJlbCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGIuaGlkZGVuKVxyXG4gICAgICAgICAgICB0ZC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblxyXG4gICAgICAgIGlmIChiLnN1YiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0cjIgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdGQxO1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpbiA9PSBcInNpXCIpIHtcclxuICAgICAgICAgICAgdGQxID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGltZy5wYXJlbnROb2RlLnBhcmVudE5vZGUsIFwidGRcIiwgXCImIzk2NjA7XCIsIHsgZm9udFNpemU6IFwiMTBweFwiLCBjb2xvcjogXCJncmF5XCIsIGJvcmRlclRvcDogXCJzb2xpZCAxcHggI2NjY1wiLCBib3JkZXJSaWdodDogXCJzb2xpZCAxcHggI2NjY1wiLCBib3JkZXJCb3R0b206IFwic29saWQgMXB4ICNjY2NcIiB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZXRIb3ZlcmFibGUodGQxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0cjIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRkMSA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgXCImIzk2NjA7XCIsIHsgZm9udFNpemU6ICh0aGlzLm9wdGlvbnMuYnRuc2l6ZSAvIDIpICsgXCJweFwiLCB2ZXJ0aWNhbEFsaWduOiBcImJvdHRvbVwiLCBjb2xvcjogXCJncmF5XCIgfSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRkMSA9IHNjaWxsaWdlbmNlLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIyLCBcInRkXCIsIG51bGwsIHsgaGVpZ2h0OiBcIjEwcHhcIiwgYmFja2dyb3VuZDogc2NpbC5VdGlscy5pbWdTcmMoXCJ3OC9oYW5kbGUucG5nXCIsIHRydWUpICsgXCIgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXJcIiB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiLmhpZGRlbilcclxuICAgICAgICAgICAgdGQxLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuXHJcbiAgICAgICAgaWYgKHNjaWxsaWdlbmNlLlV0aWxzLmlzVG91Y2gpIHtcclxuICAgICAgICAgICAgZG9qby5jb25uZWN0KHRkLCBcIm9udG91Y2htb3ZlXCIsIGZ1bmN0aW9uICgpIHsgSlNEcmF3Mi5NZW51Lm9wZW4odGJpZCArIFwiX3N1YlwiKTsgfSk7XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdCh0ZDEsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoKSB7IEpTRHJhdzIuTWVudS5vcGVuKHRiaWQgKyBcIl9zdWJcIik7IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KHRkLCBcIm9uTVNQb2ludGVyTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmJ1dHRvbnMgPT0gMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNEcmF3Mi5NZW51Lm9wZW4odGJpZCArIFwiX3N1YlwiKTtcclxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1NraW5XOCgpKSB7XHJcbiAgICAgICAgICAgICAgICBkb2pvLmNvbm5lY3QodGQxLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEpTRHJhdzIuTWVudS5vcGVuKHRiaWQgKyBcIl9zdWJcIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vaWYgKCFzY2lsbGlnZW5jZS5VdGlscy5pc0lFKVxyXG4gICAgICAgICAgICAgICAgLy8gICAgZG9qby5jb25uZWN0KHRkLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKCkgeyBKU0RyYXcyLk1lbnUuY2xvc2UoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB0ZDEuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgdGhpcy5yZXMoXCJjbGljayB0byBleHBhbmRcIikpO1xyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KHRkMSwgXCJvbm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoZSkgeyAoZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBzY2lsLlV0aWxzLmltZ1NyYyhcInc4L2hhbmRsZTIucG5nXCIsIHRydWUpOyB9KTtcclxuICAgICAgICAgICAgICAgIGRvam8uY29ubmVjdCh0ZDEsIFwib25tb3VzZW91dFwiLCBmdW5jdGlvbiAoZSkgeyAoZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBzY2lsLlV0aWxzLmltZ1NyYyhcInc4L2hhbmRsZS5wbmdcIiwgdHJ1ZSk7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KHRkMSwgXCJvbm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoKSB7IEpTRHJhdzIuTWVudS5vcGVuKHRiaWQgKyBcIl9zdWJcIik7IH0pO1xyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KHRkMSwgXCJvbm1vdXNlb3V0XCIsIGZ1bmN0aW9uICgpIHsgSlNEcmF3Mi5NZW51LmNsb3NldGltZSgpOyB9KTtcclxuICAgICAgICAgICAgICAgIGRvam8uY29ubmVjdCh0ZDEsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoKSB7IEpTRHJhdzIuTWVudS5jbG9zZSgpOyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHRib2R5ID0gc2NpbC5VdGlscy5jcmVhdGVUYWJsZSh0ZCwgMCwgMCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsIHpJbmRleDogOTk5OTk5OTksIGJvcmRlclJhZGl1czogTWF0aC5yb3VuZCgodGhpcy5vcHRpb25zLnNraW4gPT0gXCJzaVwiID8gMyA6IDQpICogdGhpcy5vcHRpb25zLmJ0bnNpemUgLyA0MCkgKyBcInB4XCIsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIiA/IHRoaXMudG9vbGJhcmJrY29sb3IgOiBKU0RyYXcyLlNraW4uanNkcmF3LmJrY29sb3IsIGJvcmRlcjogdGhpcy5CT1JERVJTVFlMRSwgcGFkZGluZzogXCIycHhcIlxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAvL2lmICh0aGlzLm9wdGlvbnMuc2tpbiA9PSBcInc4XCIgJiYgIXNjaWxsaWdlbmNlLlV0aWxzLmlzSUUpXHJcbiAgICAgICAgLy8gICAgdGJvZHkucGFyZW50Tm9kZS5zdHlsZS5ib3JkZXIgPSBudWxsO1xyXG4gICAgICAgIHZhciB0YWJsZSA9IHRib2R5LnBhcmVudE5vZGU7XHJcbiAgICAgICAgdGFibGUuaWQgPSB0YmlkICsgXCJfc3ViXCI7XHJcbiAgICAgICAgdGFibGUub25tb3VzZW92ZXIgPSBKU0RyYXcyLk1lbnUuY2FuY2VsY2xvc2V0aW1lO1xyXG4gICAgICAgIHRhYmxlLm9ubW91c2VvdXQgPSBKU0RyYXcyLk1lbnUuY2xvc2V0aW1lO1xyXG5cclxuICAgICAgICB2YXIgYnMgPSBiLnN1YjtcclxuICAgICAgICB2YXIgbGVmdG1hcmdpbiA9IDA7XHJcbiAgICAgICAgdmFyIHNpbmdsZXJvdyA9IHRoaXMub3B0aW9ucy5za2luICE9IFwidzhcIiB8fCBicy5sZW5ndGggPD0gNTtcclxuICAgICAgICBpZiAoIXNpbmdsZXJvdykge1xyXG4gICAgICAgICAgICBsZWZ0bWFyZ2luID0gLSh0aGlzLm9wdGlvbnMuYnRuc2l6ZSAvIDIgKyA0KTtcclxuICAgICAgICAgICAgdGFibGUuc3R5bGUubWFyZ2luTGVmdCA9IGxlZnRtYXJnaW4gKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2NpbGxpZ2VuY2UuVXRpbHMuaXNJRSAmJiBzY2lsbGlnZW5jZS5VdGlscy5pc0lFIDwgOCAmJiAhdGhpcy5pc1NraW5XOCgpKVxyXG4gICAgICAgICAgICB0YWJsZS5zdHlsZS5tYXJnaW4gPSAodGhpcy5vcHRpb25zLmJ0bnNpemUgKyA0KSArICdweCAwIDAgJyArIChsZWZ0bWFyZ2luIC0gdGhpcy5vcHRpb25zLmJ0bnNpemUgLSAyKSArICdweCc7XHJcblxyXG4gICAgICAgIHZhciB0ciA9IG51bGw7XHJcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBicy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICB2YXIgYm4gPSBic1tqXTtcclxuICAgICAgICAgICAgaWYgKHNpbmdsZXJvdyB8fCBqICUgMiA9PSAwKVxyXG4gICAgICAgICAgICAgICAgdHIgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuICAgICAgICAgICAgdGQgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICBpZiAoYm4gPT0gXCJ8XCIpIHtcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgXCJoclwiLCBudWxsLCB7IG1hcmdpbjogXCI1cHggMCAwIDBcIiwgcGFkZGluZzogMCB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiB0aGlzLmlzU2tpblc4KCkpXHJcbiAgICAgICAgICAgICAgICB0ZC5zdHlsZS5wYWRkaW5nVG9wID0gdyArIFwicHhcIjtcclxuICAgICAgICAgICAgdmFyIHNyYyA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpXHJcbiAgICAgICAgICAgICAgICBzcmMgPSBcInc4L1wiICsgYm4uYyArIFwiLnBuZ1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzcmMgPSBcImltZy9cIiArIGJuLmMgKyBcIi5naWZcIjtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVCdG5JbWcodGQsIChibi5pbWcgIT0gbnVsbCA/IGJuLmltZyA6IHNjaWwuVXRpbHMuaW1nU3JjKHNyYykpLCBudWxsLCBibi5jbWQgIT0gbnVsbCA/IGJuLmNtZCA6IGJuLmMsIHRoaXMucmVzKGJuLnQpLCB0YmlkLCBudWxsLCB0aGlzLnJlcyhibi5sYWJlbCksIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRkO1xyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVCdG5JbWc6IGZ1bmN0aW9uICh0ZCwgc3JjLCB0YmlkLCBjbWQsIHRpdGxlLCBwYXJlbnQsIHdpZHRoLCBsYWJlbCwgc3ViKSB7XHJcbiAgICAgICAgaWYgKHdpZHRoID09IG51bGwpXHJcbiAgICAgICAgICAgIHdpZHRoID0gdGhpcy5vcHRpb25zLmJ0bnNpemU7XHJcbiAgICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKDIgKiB3aWR0aCAvIDIwKTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNraW4gPT0gXCJzaVwiKSB7XHJcbiAgICAgICAgICAgIGlmIChzdWIpXHJcbiAgICAgICAgICAgICAgICB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgXCJkaXZcIiwgbnVsbCwgeyBoZWlnaHQ6IFwiMzJweFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgdGFibGUgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKHRkLCAwLCAwLCBzdWIgPyBudWxsIDogeyBtYXJnaW46IFwiMCAycHggMCAycHhcIiwgYmFja2dyb3VuZENvbG9yOiB0aGlzLnRvb2xiYXJia2NvbG9yIH0pO1xyXG4gICAgICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGFibGUsIFwidHJcIik7XHJcbiAgICAgICAgICAgIHZhciB0ZDEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgbnVsbCwgc3ViID8gbnVsbCA6IHsgYm9yZGVyOiBcInNvbGlkIDFweCBcIiArIEpTRHJhdzIuU2tpbi5qc2RyYXcuYmtjb2xvciB9KTtcclxuICAgICAgICAgICAgdmFyIHRkMiA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBpbWcgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRkMSwgXCJpbWdcIiwgbnVsbCwgeyBtYXJnaW5Ub3A6IFwiLTVweFwiIH0sIHsgc3JjOiBzcmMsIGFsdDogdGl0bGUgfSk7XHJcbiAgICAgICAgICAgIHZhciBzdHlsZXMgPSB7IG1hcmdpblRvcDogXCItMTFweFwiLCB3aWR0aDogd2lkdGggKyBcInB4XCIsIGZvbnRTaXplOiBcIjlweFwiLCB0ZXh0QWxpZ246IFwiY2VudGVyXCIsIGNvbG9yOiBcImdyYXlcIiwgd2hpdGVTcGFjZTogXCJub3dyYXBcIiwgb3ZlcmZsb3c6IFwiaGlkZGVuXCIgfTtcclxuICAgICAgICAgICAgaWYgKHN1Yikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRkMiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmlzSUUgJiYgc2NpbC5VdGlscy5pc0lFIDwgOClcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZXMuZm9udFNpemUgPSBzdHlsZXMubWFyZ2luVG9wID0gc3R5bGVzLndpZHRoID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0QWxpZ24gPSBcImxlZnRcIjtcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZDIsIFwiZGl2XCIsIGxhYmVsID09IG51bGwgfHwgbGFiZWwgPT0gXCJcIiA/IFwiJm5ic3A7XCIgOiBsYWJlbCwgc3R5bGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZDEsIFwiZGl2XCIsIGxhYmVsID09IG51bGwgfHwgbGFiZWwgPT0gXCJcIiA/IFwiJm5ic3A7XCIgOiBsYWJlbCwgc3R5bGVzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXRIb3ZlcmFibGUoc3ViID8gdGQgOiB0ZDEpO1xyXG4gICAgICAgICAgICBpZiAodGl0bGUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIChzdWIgPyB0ZCA6IHRkMSkuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRpdGxlKTtcclxuICAgICAgICAgICAgaWYgKGNtZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgKHN1YiA/IHRkIDogdGQxKS5zZXRBdHRyaWJ1dGUoJ2NtZCcsIGNtZCk7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIChzdWIgPyB0ZCA6IHRkMSkuc2V0QXR0cmlidXRlKCdwYXJlbnQnLCBwYXJlbnQpO1xyXG4gICAgICAgICAgICBpZiAodGJpZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgKHN1YiA/IHRkIDogdGQxKS5pZCA9IHRiaWQ7XHJcbiAgICAgICAgICAgIHJldHVybiBpbWc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgc3R5bGUgPSB7IHRleHRBbGlnbjogXCJjZW50ZXJcIiwgcGFkZGluZzogdGhpcy5pc1NraW5XOCgpID8gXCIycHggMnB4IDAgMnB4XCIgOiBcIjJweFwiLCB2ZXJ0aWNhbEFsaWduOiBcIm1pZGRsZVwiLCB3aWR0aDogd2lkdGggKyBcInB4XCIsIGhlaWdodDogdGhpcy5vcHRpb25zLmJ0bnNpemUgKyBcInB4XCIgfTtcclxuICAgICAgICB2YXIgaW1nO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpIHtcclxuICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IHRoaXMub3B0aW9ucy5idXR0b25zaGFwZSArIFwiLnBuZ1wiO1xyXG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gXCJ1cmwoXCIgKyBzY2lsLlV0aWxzLmltZ1NyYyhcInc4L1wiICsgYnV0dG9uKSArIFwiKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdFwiO1xyXG4gICAgICAgICAgICBpbWcgPSBzY2lsbGlnZW5jZS5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImltZ1wiLCBudWxsLCBzdHlsZSwgeyBzcmM6IHNyYywgYWx0OiB0aXRsZSB9KTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImRpdlwiLCBsYWJlbCA9PSBudWxsIHx8IGxhYmVsID09IFwiXCIgPyBcIiZuYnNwO1wiIDogbGFiZWwsIHsgd2lkdGg6IHdpZHRoICsgXCJweFwiLCBmb250U2l6ZTogXCI5cHhcIiwgdGV4dEFsaWduOiBcImNlbnRlclwiLCBjb2xvcjogXCJncmF5XCIsIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsIG92ZXJmbG93OiBcImhpZGRlblwiIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW1nID0gc2NpbGxpZ2VuY2UuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgXCJpbWdcIiwgbnVsbCwgc3R5bGUsIHsgc3JjOiBzcmMsIGFsdDogdGl0bGUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY21kICE9IG51bGwpXHJcbiAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2NtZCcsIGNtZCk7XHJcbiAgICAgICAgaWYgKHRpdGxlICE9IG51bGwpXHJcbiAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgdGl0bGUpO1xyXG4gICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbClcclxuICAgICAgICAgICAgaW1nLnNldEF0dHJpYnV0ZSgncGFyZW50JywgcGFyZW50KTtcclxuICAgICAgICBpZiAodGJpZCAhPSBudWxsKVxyXG4gICAgICAgICAgICBpbWcuaWQgPSB0YmlkO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpIHtcclxuICAgICAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KGltZywgXCJvbm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoKSB7IHRoaXMuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gc2NpbC5VdGlscy5pbWdTcmMoXCJ3OC9cIiArIG1lLm9wdGlvbnMuYnV0dG9uc2hhcGUgKyBcIjEucG5nXCIsIHRydWUpOyB9KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdChpbWcsIFwib25tb3VzZW91dFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IHNjaWwuVXRpbHMuaW1nU3JjKFwidzgvXCIgKyBtZS5vcHRpb25zLmJ1dHRvbnNoYXBlICsgKHRoaXMuZ2V0QXR0cmlidXRlKFwicHVzaGVkXCIpID09IG51bGwgPyBcIlwiIDogXCIwXCIpICsgXCIucG5nXCIsIHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEhvdmVyYWJsZShpbWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW1nO1xyXG4gICAgfVxyXG59KTsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2MyODgzMjUodj12cy44NSkuYXNweFxyXG5mdW5jdGlvbiBnZXRJRVZlcnNpb24oKSB7XHJcbiAgICAvLyAgICBpZiAod2luZG93Lm5hdmlnYXRvci5hcHBOYW1lID09IFwiTmV0c2NhcGVcIiB8fCB3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIkVkZ2UvXCIpID4gMCkge1xyXG4gICAgLy8gICAgICAgIHZhciBzID0gd2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uO1xyXG4gICAgLy8gICAgICAgIHMgPSBzLnN1YnN0cihzLmluZGV4T2YoXCJFZGdlL1wiKSArIDUpO1xyXG4gICAgLy8gICAgICAgIHZhciBwID0gcy5pbmRleE9mKCcuJyk7XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHBhcnNlSW50KHMuc3Vic3RyKDAsIHApKTtcclxuICAgIC8vICAgIH1cclxuICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLmFwcE5hbWUgIT0gXCJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXJcIiAmJiB3aW5kb3cubmF2aWdhdG9yLmFwcE5hbWUuaW5kZXhPZihcIk1TQXBwSG9zdFwiKSA8IDAgJiYgISh3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIlRyaWRlbnRcIikgPiAwICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA+PSAxMSkpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PSBudWxsID8gKGRvY3VtZW50LmNvbXBhdE1vZGUgPT0gXCJDU1MxQ29tcGF0XCIgPyA3IDogNikgOiBkb2N1bWVudC5kb2N1bWVudE1vZGU7XHJcbn07XHJcblxyXG52YXIgX19pZXZlcnNpb24gPSBnZXRJRVZlcnNpb24oKTtcclxuXHJcbnZhciBfX2llQXBwVmVyc2lvbiA9IF9faWV2ZXJzaW9uID8gKHdpbmRvdy5wb3N0TWVzc2FnZSA/ICh3aW5kb3cucGVyZm9ybWFuY2UgPyA5IDogOCkgOiA3KSA6IG51bGw7XHJcbmlmIChfX2lldmVyc2lvbikge1xyXG4gICAgdmFyIHNpbHZlcmxpZ2h0ID0gdHlwZW9mIChKU0RyYXcyX2Rpc2FibGVzaWx2ZXJsaWdodCkgPT0gXCJ1bmRlZmluZWRcIiB8fCAhSlNEcmF3Ml9kaXNhYmxlc2lsdmVybGlnaHQgPyBcInNpbHZlcmxpZ2h0LFwiIDogXCJcIjtcclxuICAgIGlmIChkb2pvLnZlcnNpb24ubWFqb3IgPD0gMSAmJiBkb2pvLnZlcnNpb24ubWlub3IgPCA3KVxyXG4gICAgICAgIGRvam8uY29uZmlnLmdmeFJlbmRlcmVyID0gc2lsdmVybGlnaHQgKyBcInZtbFwiO1xyXG4gICAgZWxzZSBpZiAoX19pZXZlcnNpb24gPCA5KVxyXG4gICAgICAgIGRvam8uY29uZmlnLmdmeFJlbmRlcmVyID0gc2lsdmVybGlnaHQgKyBcInZtbCxzdmdcIjtcclxufVxyXG5cclxuZG9qby5yZXF1aXJlKFwiZG9qby5pby5zY3JpcHRcIik7XHJcbmRvam8ucmVxdWlyZShcImRvam8uaW8uaWZyYW1lXCIpO1xyXG5kb2pvLnJlcXVpcmUoXCJkb2pveC5nZnhcIik7XHJcbmRvam8ucmVxdWlyZShcImRvam94LmdmeC51dGlsc1wiKTtcclxuZG9qby5yZXF1aXJlKFwiZG9qby53aW5kb3dcIik7XHJcblxyXG5pZiAodHlwZW9mIChfX0pTRHJhdzJfVG91Y2hNb2wpID09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgIGRvam8ucmVxdWlyZShcImRvam94LmNoYXJ0aW5nLkNoYXJ0MkRcIik7XHJcbiAgICBkb2pvLnJlcXVpcmUoXCJkb2pveC5jaGFydGluZy5heGlzMmQuRGVmYXVsdFwiKTtcclxuICAgIGRvam8ucmVxdWlyZShcImRvam94LmNoYXJ0aW5nLnBsb3QyZC5EZWZhdWx0XCIpO1xyXG4gICAgZG9qby5yZXF1aXJlKFwiZG9qb3guY2hhcnRpbmcudGhlbWVzLldldGxhbmRcIik7XHJcbn1cclxuaWYgKCEoZG9qby52ZXJzaW9uLm1ham9yIDw9IDEgJiYgZG9qby52ZXJzaW9uLm1pbm9yIDw9IDYpKVxyXG4gICAgZG9qby5yZXF1aXJlKFwiZG9qb3guc3RvcmFnZS5Mb2NhbFN0b3JhZ2VQcm92aWRlclwiKTtcclxuXHJcbi8vIENhbnZhcyBvbiBBbmRyb2lkIDIueDsgZG9qbyAxLjcgd29uJ3QgbmVlZCBpdFxyXG5pZiAoZG9qby52ZXJzaW9uLm1ham9yIDw9IDEgJiYgZG9qby52ZXJzaW9uLm1pbm9yIDwgNykge1xyXG4gICAgc2NpbC5vbmxvYWQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRvam94LmdmeC5UZXh0LnByb3RvdHlwZS5fcmVuZGVyU2hhcGUgPSBmdW5jdGlvbiAoLyogT2JqZWN0ICovY3R4KSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gdGhpcy5zaGFwZTtcclxuICAgICAgICAgICAgY3R4LnNhdmUoKTtcclxuICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHMuZmlsbFN0eWxlO1xyXG4gICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzLmZpbGxTdHlsZTtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSBzLmZvbnRTdHlsZTtcclxuICAgICAgICAgICAgY3R4LnRleHRBbGlnbiA9IHMuYWxpZ247XHJcbiAgICAgICAgICAgIGN0eC5maWxsVGV4dChzLnRleHQsIHMueCwgcy55KTtcclxuICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTtcclxuICAgICAgICAgICAgY3R4LnN0cm9rZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufVxyXG5cclxuc2NpbGxpZ2VuY2Uuc3VnZ2VzdEluc3RhbGxTaWx2ZXJsaWdodCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmIChkb2pveC5nZngucmVuZGVyZXIgPT0gXCJ2bWxcIikge1xyXG4gICAgICAgIGlmIChjb25maXJtKFwiSlNEcmF3Mi5FZGl0b3IgcnVucyBtdWNoIGZhc3RlciB3aXRoIFNpbHZlcmxpZ2h0IGluIElFIDYsNyw4LiAgRG8geW91IHdhbnQgdG8gaW5zdGFsbCBTaWx2ZWxpZ2h0IG5vdz9cIikpXHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKFwiaHR0cDovL3d3dy5zaWx2ZXJsaWdodC5uZXQvZG93bmxvYWRzXCIpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gX2lzSHRtbDUoKSB7XHJcbiAgICB2YXIgaWUgPSBfX2lldmVyc2lvbjtcclxuICAgIGlmIChpZSlcclxuICAgICAgICByZXR1cm4gaWUgPj0gOTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdHlwZSAhPSBudWxsICYmIGRvY3VtZW50LmRvY3R5cGUubmFtZSAhPSBudWxsICYmIGRvY3VtZW50LmRvY3R5cGUubmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaHRtbFwiXHJcbn07XHJcbmZ1bmN0aW9uIGdldEFuZHJvaWRWZXJzaW9uKCkge1xyXG4gICAgdmFyIHMgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgIHZhciBwID0gcy5pbmRleE9mKFwiQW5kcm9pZFwiKTtcclxuICAgIGlmIChwIDwgMClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBzID0gcy5zdWJzdHIocCArIDgpO1xyXG4gICAgcCA9IHMuaW5kZXhPZignOycpO1xyXG4gICAgcyA9IHMuc3Vic3RyKDAsIHApO1xyXG4gICAgcCA9IHMuaW5kZXhPZignLicpO1xyXG4gICAgaWYgKHAgPiAwKVxyXG4gICAgICAgIHMgPSBzLnN1YnN0cigwLCBwKTtcclxuICAgIHJldHVybiBpc05hTihzKSA/IHRydWUgOiBwYXJzZUZsb2F0KHMpO1xyXG59O1xyXG5mdW5jdGlvbiBnZXRpT1NWZXJzaW9uKCkge1xyXG4gICAgdmFyIHMgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgIHZhciBwID0gcy5pbmRleE9mKFwiaVBhZFwiKTtcclxuICAgIGlmIChwIDwgMClcclxuICAgICAgICBwID0gcy5pbmRleE9mKFwiaVBob25lXCIpO1xyXG4gICAgaWYgKHAgPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHZhciBwID0gcy5pbmRleE9mKCdPUycsIHAgKyA0KTtcclxuICAgIGlmIChwIDwgMClcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIHMgPSBzLnN1YnN0cihwICsgMyk7XHJcbiAgICBwID0gcy5pbmRleE9mKCdfJyk7XHJcbiAgICBzID0gcy5zdWJzdHIoMCwgcCk7XHJcbiAgICBwID0gcy5pbmRleE9mKCcuJyk7XHJcbiAgICBpZiAocCA+IDApXHJcbiAgICAgICAgcyA9IHMuc3Vic3RyKDAsIHApO1xyXG4gICAgcmV0dXJuIGlzTmFOKHMpID8gdHJ1ZSA6IHBhcnNlSW50KHMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiogVXRpbHMgY2xhc3MgLSBwcm92aWRlcyB2YXJpZXR5IG9mIHRvb2wgZnVuY3Rpb25zXHJcbiogQGNsYXNzIHNjaWxsaWdlbmNlLlV0aWxzXHJcbiovXHJcbnNjaWxsaWdlbmNlLlV0aWxzID0ge1xyXG4gICAgX194Y29kZTogMTAsXHJcbiAgICBpc0lFOiBfX2lldmVyc2lvbixcclxuICAgIGlzSUU4TG93ZXI6IF9faWV2ZXJzaW9uICYmIF9faWV2ZXJzaW9uIDwgOSxcclxuICAgIG5hdGl2ZW1vZGU6IHdpbmRvdy5uYXZpZ2F0b3IuYXBwTmFtZS5pbmRleE9mKFwiTVNBcHBIb3N0XCIpID49IDAsXHJcbiAgICBpc0h0bWw1OiBfaXNIdG1sNSgpLFxyXG4gICAgaXNGaXJlZm94OiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+PSAwLFxyXG4gICAgaXNPcGVyYTogbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdPcGVyYScpID49IDAsXHJcbiAgICBpc0Nocm9tZTogbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUnKSA+PSAwLFxyXG4gICAgaXNMaW51eDogbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdMaW51eCcpID49IDAsXHJcbiAgICBpc1VidW50dTogbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdVYnVudHUnKSA+PSAwLFxyXG4gICAgaXNJcGFkOiBnZXRpT1NWZXJzaW9uKCksXHJcbiAgICBpc0FuZHJvaWQ6IGdldEFuZHJvaWRWZXJzaW9uKCksXHJcbiAgICBpc1RvdWNoOiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ2lQYWQnKSA+PSAwIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignaVBob25lJykgPj0gMCB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FuZHJvaWQnKSA+PSAwLFxyXG4gICAgaXNTaWx2ZXJsaWdodDogbnVsbCxcclxuICAgIGxhc3RUb3VjaFRtOiAwLFxyXG4gICAgYnV0dG9uV2lkdGg6IDE2MCxcclxuXHJcbiAgICBnZXRUb3BXaW5kb3c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdyA9IHdpbmRvdztcclxuICAgICAgICB3aGlsZSAody5wYXJlbnQgIT0gbnVsbCAmJiB3LnBhcmVudCAhPSB3KVxyXG4gICAgICAgICAgICB3ID0gdy5wYXJlbnQ7XHJcbiAgICAgICAgcmV0dXJuIHc7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzUmlnaHRCdXR0b246IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgaWYgKGUgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZS53aGljaCkgIC8vIEdlY2tvIChGaXJlZm94KSwgV2ViS2l0IChTYWZhcmkvQ2hyb21lKSAmIE9wZXJhXHJcbiAgICAgICAgICAgIHJldHVybiBlLndoaWNoID09IDM7XHJcbiAgICAgICAgZWxzZSBpZiAoXCJidXR0b25cIiBpbiBlKSAgLy8gSUUsIE9wZXJhIFxyXG4gICAgICAgICAgICByZXR1cm4gZS5idXR0b24gPT0gMjtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzVG91Y2hEYmxDbGljazogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgdG0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB2YXIgZCA9IHRtIC0gc2NpbC5VdGlscy5sYXN0VG91Y2hUbTtcclxuICAgICAgICBzY2lsLlV0aWxzLmxhc3RUb3VjaFRtID0gdG07XHJcbiAgICAgICAgcmV0dXJuIGUudG91Y2hlcy5sZW5ndGggPT0gMSAmJiBkIDw9IDUwMDtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIGEgaHRtbCBlbGVtZW50IGhhcyBhIHBhcmVudFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gaGFzQW5zZXN0b3JcclxuICAgICogQHBhcmFtIHtET019IG9iaiAtIHRvIGJlIGNoZWNrZWQgY2hpbGRcclxuICAgICogQHBhcmFtIHtET019IHBhcmVudFxyXG4gICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAgKi9cclxuICAgIGhhc0Fuc2VzdG9yOiBmdW5jdGlvbiAob2JqLCBwYXJlbnQpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwgfHwgb2JqID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgd2hpbGUgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmoucGFyZW50Tm9kZSA9PSBwYXJlbnQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgb2JqID0gb2JqLnBhcmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJvdW5kIGEgbnVtYmVyIHdpdGggc3BlY2lmaWMgZGVjaW1hbFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gcm91bmRcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbCAtIGEgbnVtYmVyIHRvIGJlIHJvdW5kZWRcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IG4gLSB0aGUgbnVtYmVyIG9mIGRlY2ltYWxcclxuICAgICogQHJldHVybnMgYSBudW1iZXJcclxuICAgICovXHJcbiAgICByb3VuZDogZnVuY3Rpb24gKHZhbCwgbikge1xyXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCBpc05hTih2YWwpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB2YXIgZCA9IE1hdGgucG93KDEwLCBuKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWwgKiBkKSAvIGQ7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSb3VuZCBhIG51bWJlciB0byBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHJvdW5kVG9TaWduaWZpY2FudERpZ2l0c1xyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gZCAtIGEgbnVtYmVyIHRvIGJlIGNvbnZlcnRlZFxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gZGlnaXRzXHJcbiAgICAqIEByZXR1cm5zIGEgbnVtYmVyXHJcbiAgICAqL1xyXG4gICAgcm91bmRUb1NpZ25pZmljYW50RGlnaXRzOiBmdW5jdGlvbiAoZCwgZGlnaXRzKSB7XHJcbiAgICAgICAgaWYgKGQgPT0gMCB8fCBpc05hTihkKSlcclxuICAgICAgICAgICAgcmV0dXJuIGQ7XHJcblxyXG4gICAgICAgIHZhciBzY2FsZSA9IE1hdGgucG93KDEwLCBNYXRoLmZsb29yKHRoaXMubG9nMTAoTWF0aC5hYnMoZCkpKSArIDEpO1xyXG4gICAgICAgIHJldHVybiBzY2FsZSAqIHRoaXMucm91bmQoZCAvIHNjYWxlLCBkaWdpdHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBsb2cxMDogZnVuY3Rpb24gKHZhbCkge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmxvZyh2YWwpIC8gTWF0aC5MTjEwO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogUm91bmQgYSBudW1iZXIgYXMgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSByb3VuZFN0clxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gdmFsIC0gYSBudW1iZXIgdG8gYmUgY29udmVydGVkXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIC0gdGhlIG51bWJlciBvZiBkZWNpbWFsXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWRkaW5nXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgcm91bmRTdHI6IGZ1bmN0aW9uICh2YWwsIG4sIHBhZGRpbmcpIHtcclxuICAgICAgICBpZiAodmFsID09IG51bGwgfHwgaXNOYU4odmFsKSlcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBcIjBcIjtcclxuXHJcbiAgICAgICAgdmFyIGQgPSBNYXRoLnBvdygxMCwgbik7XHJcbiAgICAgICAgdmFyIHMgPSAoTWF0aC5yb3VuZCh2YWwgKiBkKSAvIGQpICsgXCJcIjtcclxuICAgICAgICBpZiAocyA9PSBcIjBcIiAmJiB2YWwgIT0gMCB8fCBuID4gMCAmJiAoTWF0aC5hYnModmFsKSA8IDEgLyBkIHx8IHZhbCA8IDEgJiYgcy5sZW5ndGggPCAodmFsICsgXCJcIikubGVuZ3RoKSkgeyAvL0kjOTI5N1xyXG4gICAgICAgICAgICB2YXIgZSA9IE1hdGguZmxvb3IodGhpcy5sb2cxMCh2YWwpKTtcclxuICAgICAgICAgICAgaWYgKGUgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmV0ID0gdGhpcy5yb3VuZFN0cih2YWwgKiBNYXRoLnBvdygxMCwgLWUpLCBuLCBwYWRkaW5nKSArIFwiZVwiICsgZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHJldCkgPT0gcGFyc2VGbG9hdChzKSA/IHMgOiByZXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChwYWRkaW5nID09IGZhbHNlIHx8IG4gPD0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHM7XHJcblxyXG4gICAgICAgIHZhciBwID0gcy5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgaWYgKHAgPCAwKSB7XHJcbiAgICAgICAgICAgIHMgKz0gXCIuXCI7XHJcbiAgICAgICAgICAgIHAgPSBzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbSA9IHMubGVuZ3RoIC0gMSAtIHA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IG07IGkgPCBuOyArK2kpXHJcbiAgICAgICAgICAgIHMgKz0gXCIwXCI7XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDb252ZXJ0IGEgbnVtYmVyIGludG8gYSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBudW0yc3RyXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgLSBhIG51bWJlciB0byBiZSBjb252ZXJ0ZWRcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IG4gLSB0aGUgbnVtYmVyIG9mIGRlY2ltYWxcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aGUgbnVtYmVyXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgbnVtMnN0cjogZnVuY3Rpb24gKHZhbCwgbiwgdW5pdCwgcGFkZGluZykge1xyXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCAhaXNGaW5pdGUodmFsKSB8fCBpc05hTih2YWwpKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKHVuaXQgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRTdHIodmFsLCBuLCBwYWRkaW5nKTtcclxuICAgICAgICBlbHNlIGlmICh1bml0ID09IFwiJVwiKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3VuZFN0cih2YWwgKiAxMDAsIG4sIHBhZGRpbmcpICsgdW5pdDtcclxuXHJcbiAgICAgICAgaWYgKHVuaXQgPT0gXCJMXCIgfHwgdW5pdCA9PSBcImxcIikge1xyXG4gICAgICAgICAgICAvL3ZhbCAvPSAxMDAwO1xyXG4gICAgICAgICAgICB1bml0ID0gdW5pdC50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbCkgPj0gMTAwMClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRTdHIodmFsIC8gMTAwMCwgbiwgcGFkZGluZykgKyBcIiBcIiArIHRoaXMuX2NvbnZlcnRVbml0KHVuaXQsIDEwMDApO1xyXG4gICAgICAgIGlmIChNYXRoLmFicyh2YWwpID49IDEpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdW5kU3RyKHZhbCwgbiwgcGFkZGluZykgKyBcIiBcIiArIHRoaXMuX2NvbnZlcnRVbml0KHVuaXQsIDEpO1xyXG5cclxuICAgICAgICB2YWwgKj0gMTAwMDtcclxuICAgICAgICBpZiAoTWF0aC5hYnModmFsKSA+PSAxKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3VuZFN0cih2YWwsIG4sIHBhZGRpbmcpICsgXCIgXCIgKyB0aGlzLl9jb252ZXJ0VW5pdCh1bml0LCAwLjAwMSk7XHJcblxyXG4gICAgICAgIHZhbCAqPSAxMDAwO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdW5kU3RyKHZhbCwgbiwgcGFkZGluZykgKyBcIiBcIiArIHRoaXMuX2NvbnZlcnRVbml0KHVuaXQsIDAuMDAwMDAxKTtcclxuICAgIH0sXHJcblxyXG4gICAgX2NvbnZlcnRVbml0OiBmdW5jdGlvbiAodW5pdCwgc2NhbGUpIHtcclxuICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGlmICh1bml0ID09IFwiZy9MXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwibWcvbUxcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVuaXQgPT0gXCJVL0xcIilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJtVS9tTFwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bml0O1xyXG4gICAgICAgICAgICBjYXNlIDEwMDA6XHJcbiAgICAgICAgICAgICAgICBpZiAodW5pdCA9PSBcImcvTFwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImcvbUxcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVuaXQgPT0gXCJVL0xcIilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJVL21MXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwia1wiICsgdW5pdDtcclxuICAgICAgICAgICAgY2FzZSAwLjAwMTpcclxuICAgICAgICAgICAgICAgIGlmICh1bml0ID09IFwiZy9MXCIgfHwgdW5pdCA9PSBcIm1nL21MXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwibWcvTFwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodW5pdCA9PSBcIlUvTFwiIHx8IHVuaXQgPT0gXCJtVS9tTFwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIm1VL0xcIjtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJtXCIgKyB1bml0O1xyXG4gICAgICAgICAgICBjYXNlIDAuMDAwMDAxOlxyXG4gICAgICAgICAgICAgICAgaWYgKHVuaXQgPT0gXCJnL0xcIiB8fCB1bml0ID09IFwibWcvbUxcIilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ1Zy9MXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh1bml0ID09IFwiVS9MXCIgfHwgdW5pdCA9PSBcIm1VL21MXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidVUvTFwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInVcIiArIHVuaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBkaXNhYmxlZGNvbnRleHRtZW51czogW10sXHJcbiAgICBkaXNhYmxlQ29udGV4dE1lbnU6IGZ1bmN0aW9uIChlbGVtZW50LCBkb2MpIHtcclxuICAgICAgICBpZiAoZWxlbWVudCAhPSBudWxsICYmIHNjaWwuVXRpbHMuaW5kZXhPZih0aGlzLmRpc2FibGVkY29udGV4dG1lbnVzLCBlbGVtZW50KSA8IDApXHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRjb250ZXh0bWVudXMucHVzaChlbGVtZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGRvYyA9PSBudWxsKVxyXG4gICAgICAgICAgICBkb2MgPSBkb2N1bWVudDtcclxuXHJcbiAgICAgICAgaWYgKGRvYy5ib2R5Ll9fY29udGV4dG1lbnVkaXNhYmxlZClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBkb2MuYm9keS5fX2NvbnRleHRtZW51ZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGRvYy5ib2R5Lm9uY29udGV4dG1lbnUgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICBpZiAoZSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgZSA9IGV2ZW50O1xyXG5cclxuICAgICAgICAgICAgdmFyIHNyYyA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcclxuICAgICAgICAgICAgdmFyIGxpc3QgPSBzY2lsLlV0aWxzLmRpc2FibGVkY29udGV4dG1lbnVzO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzcmMgPT0gbGlzdFtpXSB8fCBzY2lsLlV0aWxzLmlzQ2hpbGRPZihzcmMsIGxpc3RbaV0pKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNyYy5wYXJlbnROb2RlICE9IG51bGwgJiYgSlNEcmF3Mi5FZGl0b3IuZ2V0KHNyYy5wYXJlbnROb2RlLmlkKSAhPSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICBzcmMuZmlyc3RDaGlsZCAhPSBudWxsICYmIHNyYy5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPSBudWxsICYmIHNyYy5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImpzcG9wdXBtZW51XCIpID09IFwiMVwiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNjaWwuQ29udGV4dE1lbnUuaXNGcm9tQ29udGV4dE1lbnUoc3JjKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGZpeCBjb250ZXh0IG1lbnUgcHJvYmxlbSBvbiBTYWZhcmlcclxuICAgICAgICAgICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuZ2V0UGFyZW50KHNyYywgXCJkaXZcIik7XHJcbiAgICAgICAgICAgIGlmIChkaXYgIT0gbnVsbCAmJiBKU0RyYXcyLkVkaXRvci5nZXQoZGl2LmlkKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG5cclxuICAgIHNlcnZpY2VBdmFpbGFibGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIEpTRHJhd1NlcnZpY2VzICE9IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIEpTRHJhd1NlcnZpY2VzLnVybCAhPSBcInVuZGVmaW5lZFwiICYmIEpTRHJhd1NlcnZpY2VzLnVybCAhPSBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogZXZhbHVhdGUgYSBqYXZhc2NyaXB0IGV4cHJlc3Npb25cclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGV2YWxcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBqYXZhc2NyaXB0IGV4cHJlc3Npb25cclxuICAgICogQHJldHVybnMgamF2YXNjcmlwdCBvYmplY3RcclxuICAgICovXHJcbiAgICBldmFsOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmIChzID09IFwiXCIgfHwgdHlwZW9mIChzKSAhPSBcInN0cmluZ1wiKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZXZhbChcInZhciBzPVwiICsgcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBFdmFsdWF0aW9uIGlmIGFuIG9iamVjdCBpcyB0cnVlLiAgdHJ1ZSwgMSwgb24sIHllcyB3aWxsIGJlIHRydWVcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGlzRmFsc2VcclxuICAgICogQHBhcmFtIHtvYmplY3R9IHMgLSB0aGUgaW5wdXQgb2JqZWN0XHJcbiAgICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgICovXHJcbiAgICBpc1RydWU6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcyA9IChzICsgXCJcIikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gcyA9PSBcIjFcIiB8fCBzID09IFwidHJ1ZVwiIHx8IHMgPT0gXCJ5ZXNcIiB8fCBzID09IFwib25cIjtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEV2YWx1YXRpb24gaWYgYW4gb2JqZWN0IGlzIGZhbHNlLiAgZmFsc2UsIDAsIG9mZiwgbm8gd2lsbCBiZSBmYWxzZVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gaXNGYWxzZVxyXG4gICAgKiBAcGFyYW0ge29iamVjdH0gcyAtIHRoZSBpbnB1dCBvYmplY3RcclxuICAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAgKi9cclxuICAgIGlzRmFsc2U6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcyA9IChzICsgXCJcIikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gcyA9PSBcIjBcIiB8fCBzID09IFwiZmFsc2VcIiB8fCBzID09IFwibm9cIiB8fCBzID09IFwib2ZmXCI7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzQXR0VHJ1ZTogZnVuY3Rpb24gKGUsIGF0dCkge1xyXG4gICAgICAgIHZhciBzID0gZS5nZXRBdHRyaWJ1dGUoYXR0KSArIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHMgPT0gXCJcIiB8fCB0aGlzLmlzVHJ1ZShzKTtcclxuICAgIH0sXHJcblxyXG4gICAgaXNBdHRGYWxzZTogZnVuY3Rpb24gKGUsIGF0dCkge1xyXG4gICAgICAgIHZhciBzID0gZS5nZXRBdHRyaWJ1dGUoYXR0KSArIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHMgPT0gXCIwXCIgfHwgcy50b0xvd2VyQ2FzZSgpID09IFwiZmFsc2VcIjtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYSBudW1iZXIgaW50byBhIGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGZvcm1hdFN0clxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gdiAtIGEgbnVtYmVyIHRvIGJlIGNvbnZlcnRlZFxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gdyAtIHRvdGFsIHdpZHRoIHRoZSByZXN1bHQgc3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSBkIC0gdGhlIG51bWJlciBvZiBkZW1pY2FsXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgZm9ybWF0U3RyOiBmdW5jdGlvbiAodiwgdywgZCkge1xyXG4gICAgICAgIHZhciBzID0gdiA9PSBudWxsID8gXCJcIiA6IHYudG9GaXhlZChkKSArIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHNjaWwuVXRpbHMucGFkTGVmdChzLCB3LCAnICcpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogR2VuZXJhdGUgYSBHVUlEXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB1dWlkXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgLy8gaHR0cDovL3d3dy5icm9vZmEuY29tLzIwMDgvMDkvamF2YXNjcmlwdC11dWlkLWZ1bmN0aW9uL1xyXG4gICAgdXVpZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjaGFycyA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicuc3BsaXQoJycpO1xyXG4gICAgICAgIHZhciB1dWlkID0gW107XHJcbiAgICAgICAgdmFyIGk7XHJcbiAgICAgICAgdmFyIHJhZGl4ID0gY2hhcnMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyByZmM0MTIyLCB2ZXJzaW9uIDQgZm9ybVxyXG4gICAgICAgIHZhciByO1xyXG5cclxuICAgICAgICAvLyByZmM0MTIyIHJlcXVpcmVzIHRoZXNlIGNoYXJhY3RlcnNcclxuICAgICAgICB1dWlkWzhdID0gdXVpZFsxM10gPSB1dWlkWzE4XSA9IHV1aWRbMjNdID0gJy0nO1xyXG4gICAgICAgIHV1aWRbMTRdID0gJzQnO1xyXG5cclxuICAgICAgICAvLyBGaWxsIGluIHJhbmRvbSBkYXRhLiAgQXQgaT09MTkgc2V0IHRoZSBoaWdoIGJpdHMgb2YgY2xvY2sgc2VxdWVuY2UgYXNcclxuICAgICAgICAvLyBwZXIgcmZjNDEyMiwgc2VjLiA0LjEuNVxyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzNjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICghdXVpZFtpXSkge1xyXG4gICAgICAgICAgICAgICAgciA9IDAgfCBNYXRoLnJhbmRvbSgpICogMTY7XHJcbiAgICAgICAgICAgICAgICB1dWlkW2ldID0gY2hhcnNbKGkgPT0gMTkpID8gKHIgJiAweDMpIHwgMHg4IDogcl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1dWlkLmpvaW4oJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBBcHBlbmQgY2hhcnMgdG8gYSBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHBhZExlZnRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSB0aGUgaW5wdXQgc3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIC0gdG90YWwgd2lkdGggb2YgcmVzdWx0IHN0cmluZ1xyXG4gICAgKiBAcGFyYW0ge2NoYXJ9IGMgLSB0aGUgY2hhcmFjdGVyIHRvIGJlIGFwcGVuZGVkXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgcGFkTGVmdDogZnVuY3Rpb24gKHMsIG4sIGMpIHtcclxuICAgICAgICB2YXIgczEgPSAnJztcclxuICAgICAgICBmb3IgKHZhciBpID0gKHMgKyBcIlwiKS5sZW5ndGg7IGkgPCBuOyArK2kpXHJcbiAgICAgICAgICAgIHMxICs9IChjID09IG51bGwgPyAnICcgOiBjKTtcclxuICAgICAgICByZXR1cm4gczEgKyBzO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogSW5zZXJ0IGNoYXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHBhZFJpZ2h0XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gdGhlIGlucHV0IHN0cmluZ1xyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gbiAtIHRvdGFsIHdpZHRoIG9mIHJlc3VsdCBzdHJpbmdcclxuICAgICogQHBhcmFtIHtjaGFyfSBjIC0gdGhlIGNoYXJhY3RlciB0byBiZSBpbnNlcnRlZFxyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIHBhZFJpZ2h0OiBmdW5jdGlvbiAocywgbiwgYykge1xyXG4gICAgICAgIHZhciBzMSA9ICcnO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSBzLmxlbmd0aDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgczEgKz0gKGMgPT0gbnVsbCA/ICcgJyA6IGMpO1xyXG4gICAgICAgIHJldHVybiBzICsgczE7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBFdmFsdWF0ZSBpZiBhIHN0cmluZyBlbmRzIHdpdGggYW5vdGhlciBzdWItc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBlbmRzd2l0aFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIHRoZSBpbnB1dCBzdHJpbmdcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIC0gdGhlIHN1Yi1zdHJpbmcgdG8gYmUgdGVzdGVkXHJcbiAgICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgICovXHJcbiAgICBlbmRzd2l0aDogZnVuY3Rpb24gKHMsIHRva2VuLCBjYXNlc2Vuc2l0aXZlKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbCB8fCB0b2tlbiA9PSBudWxsIHx8IHMubGVuZ3RoIDwgdG9rZW4ubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgdmFyIHQgPSBzLnN1YnN0cihzLmxlbmd0aCAtIHRva2VuLmxlbmd0aCwgdG9rZW4ubGVuZ3RoKTtcclxuICAgICAgICBpZiAoY2FzZXNlbnNpdGl2ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT0gdG9rZW47XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdC50b0xvd2VyQ2FzZSgpID09IHRva2VuLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBFdmFsdWF0ZSBpZiBhIHN0cmluZyBzdGFydHMgd2l0aCBhbm90aGVyIHN1Yi1zdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGVuZHN3aXRoXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gdGhlIGlucHV0IHN0cmluZ1xyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSB0aGUgc3ViLXN0cmluZyB0byBiZSB0ZXN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAgKi9cclxuICAgIHN0YXJ0c3dpdGg6IGZ1bmN0aW9uIChzLCB0b2tlbiwgY2FzZXNlbnNpdGl2ZSkge1xyXG4gICAgICAgIGlmIChzID09IG51bGwgfHwgdG9rZW4gPT0gbnVsbCB8fCBzLmxlbmd0aCA8IHRva2VuLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHZhciB0ID0gcy5zdWJzdHIoMCwgdG9rZW4ubGVuZ3RoKTtcclxuICAgICAgICBpZiAoY2FzZXNlbnNpdGl2ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHQgPT0gdG9rZW47XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdC50b0xvd2VyQ2FzZSgpID09IHRva2VuLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUcmltIGEgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBsdHJpbVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIHRoZSBpbnB1dCBzdHJpbmdcclxuICAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgICovXHJcbiAgICB0cmltOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiBzID09IG51bGwgPyBudWxsIDogcy5yZXBsYWNlKC9eW1xcc3xcXHRcXHJcXG5dK3xbXFxzfFxcdFxcclxcbl0rJC9nLCBcIlwiKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRyaW0gdGhlIGxlZnQgc3BhY2VzIG9mIGEgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB0cmltXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gdGhlIGlucHV0IHN0cmluZ1xyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGx0cmltOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiBzID09IG51bGwgPyBudWxsIDogcy5yZXBsYWNlKC9eW1xcc3xcXHRcXHJcXG5dKy8sIFwiXCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogVHJpbSB0aGUgcmlnaHQgc3BhY2VzIG9mIGEgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBydHJpbVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIHRoZSBpbnB1dCBzdHJpbmdcclxuICAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgICovXHJcbiAgICBydHJpbTogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICByZXR1cm4gcyA9PSBudWxsID8gbnVsbCA6IHMucmVwbGFjZSgvW1xcc3xcXHRcXHJcXG5dKyQvLCBcIlwiKTtcclxuICAgIH0sXHJcblxyXG4gICAgaXNGaXhlZFBvc2l0aW9uOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHdoaWxlIChlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGUuc3R5bGUgIT0gbnVsbCAmJiBlLnN0eWxlLnBvc2l0aW9uID09IFwiZml4ZWRcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICBlID0gZS5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9mZnNldDogZnVuY3Rpb24gKGUsIHNjcm9sbCkge1xyXG4gICAgICAgIHZhciBkID0gc2NpbC5VdGlscy5zY3JvbGxPZmZzZXQoKTtcclxuICAgICAgICB2YXIgcCA9IG5ldyBKU0RyYXcyLlBvaW50KDAsIDApO1xyXG4gICAgICAgIHdoaWxlIChlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGUub2Zmc2V0TGVmdCA+IDAgfHwgZS5vZmZzZXRUb3AgPiAwKVxyXG4gICAgICAgICAgICAgICAgcC5vZmZzZXQoZS5vZmZzZXRMZWZ0LCBlLm9mZnNldFRvcCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0lFICYmIChlLnNjcm9sbExlZnQgPiAwIHx8IGUuc2Nyb2xsVG9wID4gMCkpXHJcbiAgICAgICAgICAgICAgICBwLm9mZnNldChlLnNjcm9sbExlZnQsIGUuc2Nyb2xsVG9wKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmlzSUUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlLnNjcm9sbFRvcCA+IDAgfHwgZS5zY3JvbGxMZWZ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHAub2Zmc2V0KC1lLnNjcm9sbExlZnQsIC1lLnNjcm9sbFRvcCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgaWYgKGUuc3R5bGUucG9zaXRpb24gPT0gXCJhYnNvbHV0ZVwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGlmIChfX2lldmVyc2lvbiAmJiBfX2lldmVyc2lvbiA8IDgpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIHAub2Zmc2V0KC1kLngsIC1kLnkpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgLy9icmVhaztcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlID0gZS5vZmZzZXRQYXJlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2lmIChfX2lldmVyc2lvbiAmJiBfX2llQXBwVmVyc2lvbiA8IDgpXHJcbiAgICAgICAgLy8gICAgcC5vZmZzZXQoZC54LCBkLnkpO1xyXG5cclxuICAgICAgICBpZiAoc2Nyb2xsICE9IGZhbHNlKVxyXG4gICAgICAgICAgICBwLm9mZnNldCgtZC54LCAtZC55KTtcclxuICAgICAgICByZXR1cm4gcDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0U2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBwID0gbmV3IEpTRHJhdzIuUG9pbnQoMCwgMCk7XHJcbiAgICAgICAgd2hpbGUgKGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoZS5zY3JvbGxMZWZ0ID4gMCB8fCBlLnNjcm9sbFRvcCA+IDApXHJcbiAgICAgICAgICAgICAgICBwLm9mZnNldChlLnNjcm9sbExlZnQsIGUuc2Nyb2xsVG9wKTtcclxuICAgICAgICAgICAgZSA9IGUub2Zmc2V0UGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcDtcclxuICAgIH0sXHJcblxyXG4gICAgc2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGllYm9keSA9IChkb2N1bWVudC5jb21wYXRNb2RlICYmIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gXCJCYWNrQ29tcGF0XCIpID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IDogZG9jdW1lbnQuYm9keTtcclxuXHJcbiAgICAgICAgdmFyIHggPSBzY2lsLlV0aWxzLmlzSUUgPyBpZWJvZHkuc2Nyb2xsTGVmdCA6IHBhZ2VYT2Zmc2V0O1xyXG4gICAgICAgIHZhciB5ID0gc2NpbC5VdGlscy5pc0lFID8gaWVib2R5LnNjcm9sbFRvcCA6IHBhZ2VZT2Zmc2V0O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQoeCwgeSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHNjcmlwdFVybDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9zY3JpcHR1cmwgIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHVybDtcclxuICAgICAgICBpZiAoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5pbWFnZWJhc2UgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fc2NyaXB0dXJsID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5pbWFnZWJhc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NjcmlwdHVybCAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0dXJsO1xyXG5cclxuICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgZSA9IGxpc3RbaV07XHJcbiAgICAgICAgICAgIGlmIChlLnRhZ05hbWUgPT0gXCJTQ1JJUFRcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHMgPSBlLmdldEF0dHJpYnV0ZSgnc3JjJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocyA9PSBudWxsIHx8IHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHAgPSBzLmxhc3RJbmRleE9mKCcvJyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IHAgPCAwID8gJycgOiBzY2lsLlV0aWxzLnRyaW0ocy5zdWJzdHIoMCwgcCArIDEpKTtcclxuICAgICAgICAgICAgICAgIHZhciBmaWxlID0gc2NpbC5VdGlscy50cmltKHAgPCAwID8gcyA6IHMuc3Vic3RyKHAgKyAxKSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIHAgPSBmaWxlLmluZGV4T2YoJz8nKTtcclxuICAgICAgICAgICAgICAgIGlmIChwID4gMClcclxuICAgICAgICAgICAgICAgICAgICBmaWxlID0gZmlsZS5zdWJzdHIoMCwgcCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRzd2l0aChmaWxlLCBcInNjaWxsaWdlbmNlLmpzZHJhdzIuXCIpICYmIHRoaXMuZW5kc3dpdGgoZmlsZSwgXCIuanNcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKHBhdGgsIFwiaHR0cDovL1wiKSB8fCBzY2lsLlV0aWxzLnN0YXJ0c3dpdGgocGF0aCwgXCJodHRwczovL1wiKSB8fCBzY2lsLlV0aWxzLnN0YXJ0c3dpdGgocGF0aCwgXCIvL1wiKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHVybCA9IHBhdGg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY2lsLlV0aWxzLnN0YXJ0c3dpdGgocGF0aCwgJy8nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHVybCA9IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgZG9jdW1lbnQubG9jYXRpb24uaG9zdCArIHBhdGg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBkb2N1bWVudC5sb2NhdGlvbiArIFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IHVybC5pbmRleE9mKCc/Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHAgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuc3Vic3RyKDAsIHApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBwID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHVybCA9IHVybC5zdWJzdHIoMCwgcCArIDEpICsgcGF0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpbGUgPT0gXCJqc2RyYXcuY29yZS5qc1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHVybCA9IHBhdGggKyBcIi4uL1wiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgX2ltZ0Jhc2U6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gc2NpbC5VdGlscy5zY3JpcHRVcmwoKTtcclxuICAgIH0sXHJcblxyXG4gICAgaW1nU3JjOiBmdW5jdGlvbiAoYnV0dG9uLCB3cmFwYXNpbnVybCkge1xyXG4gICAgICAgIHZhciBzID0gc2NpbC5VdGlscy5faW1nQmFzZSgpICsgYnV0dG9uO1xyXG4gICAgICAgIGlmICh3cmFwYXNpbnVybClcclxuICAgICAgICAgICAgcyA9IFwidXJsKFwiICsgcyArIFwiKVwiO1xyXG4gICAgICAgIHJldHVybiBzO1xyXG4gICAgfSxcclxuXHJcbiAgICBpbWdUYWc6IGZ1bmN0aW9uIChiLCBsYWJlbCwgZXh0cmEpIHtcclxuICAgICAgICByZXR1cm4gXCI8aW1nXCIgKyAoZXh0cmEgPT0gbnVsbCA/IFwiXCIgOiBcIiBcIiArIGV4dHJhKSArIFwiIHNyYz0nXCIgKyB0aGlzLmltZ1NyYyhcImltZy9cIiArIGIpICsgXCInPlwiICsgKGxhYmVsID09IG51bGwgPyBcIlwiIDogbGFiZWwpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzdHlsZVJlY3Q6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBKU0RyYXcyLlJlY3Qoc2NpbC5VdGlscy5wYXJzZVBpeGVsKGUuc3R5bGUubGVmdCksXHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMucGFyc2VQaXhlbChlLnN0eWxlLnRvcCksXHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMucGFyc2VQaXhlbChlLnN0eWxlLndpZHRoKSxcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5wYXJzZVBpeGVsKGUuc3R5bGUuaGVpZ2h0KSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHBhcnNlUGl4ZWw6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbCB8fCAhc2NpbC5VdGlscy5lbmRzd2l0aChzLCBcInB4XCIpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcyA9IHMuc3Vic3RyKDAsIHMubGVuZ3RoIC0gMik7XHJcbiAgICAgICAgcmV0dXJuIGlzTmFOKHMpID8gbnVsbCA6IHBhcnNlSW50KHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogQ2xvbmUgYW4gYXJyYXlcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGNsb25lQXJyYXlcclxuICAgICogQHBhcmFtIHthcnJheX0gYXIgLSB0aGUgYXJyYXkgdG8gYmUgY2xvbmVkXHJcbiAgICAqIEByZXR1cm5zIGEgbmV3IGFycmF5XHJcbiAgICAqL1xyXG4gICAgY2xvbmVBcnJheTogZnVuY3Rpb24gKGFyKSB7XHJcbiAgICAgICAgdmFyIHIgPSBbXTtcclxuICAgICAgICB0aGlzLm1lcmdlQXJyYXkociwgYXIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogTWVyZ2UgdHdvIGFycmF5c1xyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gbWVyZ2VBcnJheVxyXG4gICAgKiBAcGFyYW0ge2FycmF5fSBkZXN0IC0gdGhlIGRlc3RpbmF0aW9uIGFycmF5IHRvIGJlIG1lcmdlZCB0b1xyXG4gICAgKiBAcGFyYW0ge2FycmF5fSBzcmMgLSB0aGUgc291cmNlIGFycmF5cyB0byBiZSBtZXJnZWQgZnJvbVxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAgbWVyZ2VBcnJheTogZnVuY3Rpb24gKGRlc3QsIHNyYykge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3JjLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICBkZXN0LnB1c2goc3JjW2ldKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEZpbmQgdGhlIGluZGV4IG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXlcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IG1lcmdlQXJyYXlcclxuICAgICogQHBhcmFtIHthcnJheX0gYXIgLSB0aGUgYXJyYXkgdG8gYmUgc2VhcmNoZWRcclxuICAgICogQHBhcmFtIHtvYmplY3R9IGkgLSB0aGUgaXRlbSB0byBiZSBzZWFyY2hlZFxyXG4gICAgKiBAcmV0dXJucyB0aGUgaW5kZXggaWYgc3VjY2VlZGVkOyAtMSBpZiBmYWlsZWRcclxuICAgICovXHJcbiAgICBmaW5nQXJyYXlJbmRleDogZnVuY3Rpb24gKGFyLCBpKSB7XHJcbiAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBhci5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgICBpZiAoYXJba10gPT0gaSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEZ1bmN0aW9uTmFtZTogZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHZhciBmTmFtZSA9IChmICsgXCJcIikubWF0Y2goL2Z1bmN0aW9uXFxzKihbXFx3XFwkXSopXFxzKlxcKC8pO1xyXG4gICAgICAgICAgICBpZiAoZk5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZk5hbWVbMV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgc3BsaXRDc3ZSb3c6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbCB8fCBzID09IFwiXFxyXCIgfHwgcyA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChzLnN1YnN0cihzLmxlbmd0aCAtIDEpID09IFwiXFxyXCIpXHJcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cigwLCBzLmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcblxyXG4gICAgICAgIHZhciBpbnF1b3RlID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIHYgPSBcIlwiO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHMuc3Vic3RyKGksIDEpO1xyXG4gICAgICAgICAgICBpZiAoYyA9PSAnXFxcIicpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaW5xdW90ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2ID09IFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucXVvdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgdiArPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMxID0gcy5zdWJzdHIoaSArIDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYzEgPT0gJ1xcXCInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICs9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2k7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYzEgPT0gJywnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh2KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5xdW90ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiArPSBjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnF1b3RlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJywnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5xdW90ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHYgKz0gYztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXQucHVzaCh2KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgZXNjQ3N2VmFsdWU6IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKHYgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodikgIT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgdiA9IHYgKyBcIlwiO1xyXG4gICAgICAgIGlmICh2LmluZGV4T2YoJywnKSA+PSAwIHx8IHYuaW5kZXhPZignXFxcIicpID49IDAgfHwgdi5pbmRleE9mKCdcXHInKSA+PSAwIHx8IHYuaW5kZXhPZignXFxuJykgPj0gMClcclxuICAgICAgICAgICAgdiA9ICdcXFwiJyArIHYucmVwbGFjZSgvW1xcXCJdL2csIFwiXFxcIlxcXCJcIikucmVwbGFjZSgvXFxyXFxuL2csIFwiXCIpICsgJ1xcXCInO1xyXG4gICAgICAgIHJldHVybiB2O1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogVW5lc2NhcGUgYW4geG1sIHZhbHVlXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB1bmVzY1htbFZhbHVlXHJcbiAgICAqIEBwYXJhbSB7b2JqZWN0fSB2IC0gdGhlIGlucHV0IHN0cmluZ1xyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIHVuZXNjWG1sVmFsdWU6IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKHYgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIHJldHVybiB2LnJlcGxhY2UoLyZsdDsvZ2ksIFwiPFwiKS5yZXBsYWNlKC8mZ3Q7L2dpLCBcIj5cIikucmVwbGFjZSgvJiN4QTsvZ2ksIFwiXFxuXCIpLnJlcGxhY2UoLyZhcG9zOy9nLCBcIidcIikucmVwbGFjZSgvJnF1b3Q7L2csIFwiXFxcIlwiKS5yZXBsYWNlKC8mYW1wOy9naSwgXCImXCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogRXNjYXBlIHRoZSBvYmplY3QgYXMgdGhlIHhtbCB2YWx1ZVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gZXNjWG1sVmFsdWVcclxuICAgICogQHBhcmFtIHtvYmplY3R9IHYgLSB0aGUgaW5wdXQgb2JqZWN0XHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gdHJpbSAtIGluZGljYXRlIGlmIHRyaW0gdGhlIHNwYWNlc1xyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGVzY1htbFZhbHVlOiBmdW5jdGlvbiAodiwgdHJpbSkge1xyXG4gICAgICAgIGlmICh2ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAodikgIT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgdiA9IHYgKyBcIlwiO1xyXG5cclxuICAgICAgICBpZiAodHJpbSlcclxuICAgICAgICAgICAgdiA9IHNjaWwuVXRpbHMudHJpbSh2KTtcclxuICAgICAgICByZXR1cm4gdi5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIikucmVwbGFjZSgvPC9nLCBcIiZsdDtcIikucmVwbGFjZSgvPi9nLCBcIiZndDtcIikucmVwbGFjZSgvXFxyL2csIFwiJiN4RDtcIikucmVwbGFjZSgvXFxuL2csIFwiJiN4QTtcIikucmVwbGFjZSgvJy9nLCBcIiZhcG9zO1wiKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcclxuICAgIH0sXHJcblxyXG4gICAgZXNjVXJsRGF0YTogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAocyA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gcztcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IFwiXCI7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gcy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICB2YXIgczEgPSBzLnN1YnN0cihpLCAxKTtcclxuICAgICAgICAgICAgaWYgKGMgPiAyNTUpXHJcbiAgICAgICAgICAgICAgICByZXQgKz0gczE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHMxID09IFwiK1wiKVxyXG4gICAgICAgICAgICAgICAgcmV0ICs9IFwiJTJiXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldCArPSBlc2NhcGUoczEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgZXNjRmlsZU5hbWU6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHM7XHJcblxyXG4gICAgICAgIHZhciByZXQgPSBcIlwiO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHMuc3Vic3RyKGksIDEpO1xyXG4gICAgICAgICAgICBpZiAocy5jaGFyQ29kZUF0KGkpID4gMjU1IHx8IC9bYS16fDAtOXxffCB8XFwtfFxcKHxcXCl8XFx7fFxcfXxcXFt8XFxdfFxcLl0vaWcudGVzdChjKSlcclxuICAgICAgICAgICAgICAgIHJldCArPSBjO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXQgKz0gJ18nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRGaXJzdENoaWxkOiBmdW5jdGlvbiAocGFyZW50LCB0YWcpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZE5vZGVzW2ldLnRhZ05hbWUgPT0gdGFnKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFBhcnNlIGFuIHhtbCBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHBhcnNlWG1sXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSB4bWwgLSBpbnB1dCB4bWwgc3RyaW5nXHJcbiAgICAqIEByZXR1cm5zIGEgWE1MIGRvY3VtZW50IG9iamVjdFxyXG4gICAgKi9cclxuICAgIHBhcnNlWG1sOiBmdW5jdGlvbiAoeG1sKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IHRoaXMucGFyc2VYbWwyKHhtbCk7XHJcbiAgICAgICAgaWYgKHJldCAhPSBudWxsICYmIHJldC5zdWNjZWVkZWQpXHJcbiAgICAgICAgICAgIHJldHVybiByZXQuZG9jO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBwYXJzZVhtbDI6IGZ1bmN0aW9uICh4bWwpIHtcclxuICAgICAgICBpZiAoeG1sID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB4bWwgPSB0aGlzLnRyaW0oeG1sKTtcclxuICAgICAgICBpZiAoeG1sLmxlbmd0aCA8IDEwIHx8IHhtbC5zdWJzdHIoMCwgMSkgIT0gXCI8XCIgfHwgeG1sLnN1YnN0cih4bWwubGVuZ3RoIC0gMSwgMSkgIT0gXCI+XCIpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIGVycm9yID0gbnVsbDtcclxuICAgICAgICB2YXIgZG9jID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAod2luZG93LkRPTVBhcnNlcikge1xyXG4gICAgICAgICAgICAgICAgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh4bWwsIFwidGV4dC94bWxcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSAvLyBJbnRlcm5ldCBFeHBsb3JlclxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBkb2MgPSBuZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxET01cIik7XHJcbiAgICAgICAgICAgICAgICBkb2MuYXN5bmMgPSBcImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICBkb2MubG9hZFhNTCh4bWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gZS5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VlZGVkOiBzdWNjZWVkZWQsIGVycm9yOiBlcnJvciwgZG9jOiBkb2MgfTtcclxuICAgIH0sXHJcblxyXG4gICAgeHF1ZXJ5OiBmdW5jdGlvbiAoZSwgcGF0aCwgcmV0dXJub25lKSB7XHJcbiAgICAgICAgaWYgKGUgPT0gbnVsbCB8fCBwYXRoID09IG51bGwgfHwgcGF0aCA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IG51bGw7XHJcbiAgICAgICAgdmFyIGxpc3QgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gbGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKHMgPT0gXCJcIilcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgdmFyIHRhZyA9IHMucmVwbGFjZSgvW1xcW11AW2Etel0rWzAtOXxhLXpdezAsOX09J1teXFwnXSsnW1xcXV0kLywgXCJcIik7XHJcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cih0YWcubGVuZ3RoICsgMiwgcy5sZW5ndGggLSAodGFnLmxlbmd0aCArIDMpKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBrZXkgPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgdmFsID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIHAgPSBzLmluZGV4T2YoJz0nKTtcclxuICAgICAgICAgICAgaWYgKHAgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBrZXkgPSBzLnN1YnN0cigwLCBwKTtcclxuICAgICAgICAgICAgICAgIHAgKz0gMjtcclxuICAgICAgICAgICAgICAgIHZhbCA9IHMuc3Vic3RyKHAsIHMubGVuZ3RoIC0gcCAtIDEpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgZTIgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGUuY2hpbGROb2Rlcy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGMgPSBlLmNoaWxkTm9kZXNba107XHJcbiAgICAgICAgICAgICAgICBpZiAoYy50YWdOYW1lID09IHRhZykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gbnVsbCB8fCBjLmdldEF0dHJpYnV0ZShrZXkpID09IHZhbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgZTIgPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlMiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5vbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBbZTJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlMiA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJldCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICAgICAgaWYgKGUyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZSA9IGUyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFBhcnNlIGFuIGpzb24gc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBwYXJzZUpzb25cclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBpbnB1dCBqc29uIHN0cmluZ1xyXG4gICAgKiBAcmV0dXJucyBhIGphdmFzY3JpcHQgb2JqZWN0XHJcbiAgICAqL1xyXG4gICAgcGFyc2VKc29uOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV2YWwocyk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUZXN0IGlmIGEgc3RyaW5nIGNvbnRhaW5zIGEgd29yZFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY29udGFpbnNXb3JkXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSB0aGUgc3RyaW5nIHRvIGJlIHRlc3RlZFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gd29yZCAtIHRoZSB3b3JkIHRvIGJlIHRlc3RlZFxyXG4gICAgKiBAcGFyYW0ge2Jvb2x9IGlnbm9yZWNhc2UgLSBpbmRpY2F0ZSBpZiBpZ25vcmluZyBjYXNlcyBvciBub3RcclxuICAgICogQHJldHVybnMgdHJ1ZSBvZiBmYWxzZVxyXG4gICAgKi9cclxuICAgIGNvbnRhaW5zV29yZDogZnVuY3Rpb24gKHN0ciwgd29yZCwgaWdub3JlY2FzZSkge1xyXG4gICAgICAgIGlmIChzdHIgPT0gbnVsbCB8fCB3b3JkID09IG51bGwgfHwgc3RyID09IFwiXCIgfHwgd29yZCA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGlnbm9yZWNhc2UpXHJcbiAgICAgICAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdmFyIHdvcmRzID0gc3RyLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xcVysvKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmICh3b3Jkc1tpXSA9PSB3b3JkKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNob3cgbWVzc2FnZSBkaWFsb2cuPGJyPlxyXG4gICAgKiBGb3IgV2luZG93cyA4IG1ldHJvIEFwcHMsIGFuZCBPZmZpY2UgQXBwcywgc3RhbmRhcmQgYWxlcnQoKSBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZC4gIGFsZXJ0MigpIGNhbiBiZSBhbiBhbHRlcm5hdGl2ZS5cclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGFsZXJ0MlxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgYm9keVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gY2FwdGlvbiAtIGRpYWxvZyBjYXB0aW9uXHJcbiAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2FsbGJhY2sgLSBjYWxsYmFjayBmdW5jdGlvblxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gaWNvbnVybCAtIGltYWdlIHVybCBvZiB0aGUgZGlhbG9nIGljb25cclxuICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIC0gZGlhbG9nIHdpZHRoXHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBhbGVydDI6IGZ1bmN0aW9uIChtZXNzYWdlLCBjYXB0aW9uLCBjYWxsYmFjaywgaWNvbnVybCwgd2lkdGgpIHtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5hbGVydGRsZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUoKTtcclxuICAgICAgICAgICAgdmFyIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCBcInRyXCIpO1xyXG4gICAgICAgICAgICB2YXIgaW1nID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiLCBudWxsLCB7IHZlcnRpY2FsQWxpZ246IFwidG9wXCIgfSksIFwiaW1nXCIsIG51bGwsIHsgaGVpZ2h0OiBcIjUwcHhcIiwgd2lkdGg6IFwiNTBweFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgbnVsbCwgeyB0ZXh0QWxpZ246IFwiY2VudGVyXCIgfSk7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiZGl2XCIsIG51bGwsIHsgcGFkZGluZzogXCIxMHB4XCIsIHRleHRBbGlnbjogXCJsZWZ0XCIsIG1heFdpZHRoOiBcIjgwMHB4XCIsIG1heEhlaWdodDogXCI0MDBweFwiLCBvdmVyZmxvdzogXCJhdXRvXCIsIGNvbG9yOiBcIiMwMDBcIiB9KTtcclxuICAgICAgICAgICAgLy9pZiAoc2NpbC5VdGlscy5pc0lFKVxyXG4gICAgICAgICAgICAvLyAgICBtc2cuc3R5bGUuaGVpZ2h0ID0gXCJleHByZXNzaW9uKGNsaWVudEhlaWdodD4zNjAgPyAnMzYwcHgnIDogJ2F1dG8nKVwiO1xyXG4gICAgICAgICAgICB2YXIgb2sgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiYnV0dG9uXCIsIHNjaWwuVXRpbHMuaW1nVGFnKFwidGljay5naWZcIiwgdGhpcy5yZXMoXCJPS1wiKSksIHsgd2lkdGg6IFwiODBweFwiIH0pO1xyXG5cclxuICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydGRsZyA9IG5ldyBKU0RyYXcyLkRpYWxvZyhcIkF0dGVudGlvblwiLCB0Ym9keS5wYXJlbnROb2RlKTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydGRsZy5tc2cgPSBtc2c7XHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMuYWxlcnRkbGcuaW1nID0gaW1nO1xyXG5cclxuICAgICAgICAgICAgZG9qby5jb25uZWN0KG9rLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHsgdmFyIGQgPSBzY2lsLlV0aWxzLmFsZXJ0ZGxnOyBpZiAoZC5jYWxsYmFjayAhPSBudWxsKSBkLmNhbGxiYWNrKCk7IGQuaGlkZSgpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGljb251cmwgPT0gbnVsbCB8fCBpY29udXJsID09IFwiXCIpXHJcbiAgICAgICAgICAgIGljb251cmwgPSBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9pbmZvcm1hdGlvbi5naWZcIik7XHJcbiAgICAgICAgZWxzZSBpZiAoIXNjaWwuVXRpbHMuc3RhcnRzd2l0aChpY29udXJsLCBcImh0dHA6XCIpKVxyXG4gICAgICAgICAgICBpY29udXJsID0gc2NpbC5VdGlscy5pbWdTcmMoXCJpbWcvXCIgKyBpY29udXJsICsgXCIuZ2lmXCIpO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnRkbGcuc2hvdyhjYXB0aW9uKTtcclxuICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0ZGxnLmNhbGxiYWNrID0gY2FsbGJhY2s7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydGRsZy5tc2cuaW5uZXJIVE1MID0gbWVzc2FnZSA9PSBudWxsID8gJycgOiBcIjxkaXYgc3R5bGU9J21hcmdpbjowO21heC13aWR0aDo4MDBweDsnPlwiICsgbWVzc2FnZSArIFwiPC9kaXY+XCI7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydGRsZy5pbWcuc3JjID0gaWNvbnVybDtcclxuXHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydGRsZy5tb3ZlQ2VudGVyKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBTaG93IGNvbmZpcm0gZGlhbG9nLjxicj5cclxuICAgICogRm9yIFdpbmRvd3MgOCBtZXRybyBBcHBzLCBhbmQgT2ZmaWNlIEFwcHMsIHN0YW5kYXJkIGNvbmZpcm0oKSBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZC4gIGNvbmZpcm0oKSBjYW4gYmUgYW4gYWx0ZXJuYXRpdmUuXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBjb25maXJtXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBib2R5XHJcbiAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nIHN0YXR1cyl9IGNhbGxiYWNrIC0gY2FsbGJhY2sgZnVuY3Rpb24uIHN0YXR1cyB2YWx1ZTogdHJ1ZSwgZmFsc2UsICdjYW5jZWwnXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gY2FuY2VsYnRuIC0gaW5kaWNhdGUgaWYgaXQgc2hvd3MgQ2FuY2VsIGJ1dHRvbiBvciBub3RcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGNhcHRpb24gLSBkaWFsb2cgY2FwdGlvblxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAgY29uZmlybTogZnVuY3Rpb24gKG1lc3NhZ2UsIGNhbGxiYWNrLCBjYW5jZWxidG4sIGNhcHRpb24sIG93bmVyKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuY29uZmlybWRsZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUoKTtcclxuICAgICAgICAgICAgdmFyIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCBcInRyXCIpO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgXCI8aW1nIHN0eWxlPSd3aWR0aDo1MHB4O2hlaWdodDo1MHB4Oycgc3JjPSdcIiArIHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL3F1ZXN0aW9uLmdpZlwiKSArIFwiJz5cIiwgeyB2ZXJ0aWNhbEFsaWduOiBcInRvcFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgbnVsbCwgeyB0ZXh0QWxpZ246IFwiY2VudGVyXCIgfSk7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiZGl2XCIsIG51bGwsIHsgcGFkZGluZzogXCIxMHB4XCIsIHRleHRBbGlnbjogXCJsZWZ0XCIsIG1heEhlaWdodDogXCIzNjBweFwiLCBjb2xvcjogXCJibGFja1wiIH0pO1xyXG4gICAgICAgICAgICAvL2lmIChzY2lsLlV0aWxzLmlzSUUpXHJcbiAgICAgICAgICAgIC8vICAgIG1zZy5zdHlsZS5oZWlnaHQgPSBcImV4cHJlc3Npb24oY2xpZW50SGVpZ2h0PjM2MCA/ICczNjBweCcgOiAnYXV0bycpXCI7XHJcbiAgICAgICAgICAgIHZhciB5ZXMgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiYnV0dG9uXCIsIHRoaXMucmVzKFwiWWVzXCIpLCB7IHdpZHRoOiBcIjgwcHhcIiB9KTtcclxuICAgICAgICAgICAgdmFyIG5vID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImJ1dHRvblwiLCB0aGlzLnJlcyhcIk5vXCIpLCB7IHdpZHRoOiBcIjgwcHhcIiB9KTtcclxuICAgICAgICAgICAgdmFyIGNhbmNlbCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgXCJidXR0b25cIiwgdGhpcy5yZXMoXCJDYW5jZWxcIiksIHsgd2lkdGg6IFwiODBweFwiIH0pO1xyXG5cclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jb25maXJtZGxnID0gbmV3IEpTRHJhdzIuRGlhbG9nKHRoaXMucmVzKFwiQXR0ZW50aW9uXCIpLCB0Ym9keS5wYXJlbnROb2RlKTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jb25maXJtZGxnLm1zZyA9IG1zZztcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jb25maXJtZGxnLmNhbmNlbCA9IGNhbmNlbDtcclxuXHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdCh5ZXMsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoZSkgeyB2YXIgZCA9IHNjaWwuVXRpbHMuY29uZmlybWRsZzsgZC5oaWRlKCk7IGUucHJldmVudERlZmF1bHQoKTsgaWYgKGQuY2FsbGJhY2sgIT0gbnVsbCkgZC5jYWxsYmFjayh0cnVlKTsgfSk7XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChubywgXCJvbmNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7IHZhciBkID0gc2NpbC5VdGlscy5jb25maXJtZGxnOyBkLmhpZGUoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyBpZiAoZC5jYWxsYmFjayAhPSBudWxsKSBkLmNhbGxiYWNrKGZhbHNlKTsgfSk7XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChjYW5jZWwsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoZSkgeyB2YXIgZCA9IHNjaWwuVXRpbHMuY29uZmlybWRsZzsgZC5oaWRlKCk7IGUucHJldmVudERlZmF1bHQoKTsgaWYgKGQuY2FsbGJhY2sgIT0gbnVsbCkgZC5jYWxsYmFjaygnY2FuY2VsJyk7IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2NpbC5VdGlscy5jb25maXJtZGxnLnNob3coKTtcclxuICAgICAgICBzY2lsLlV0aWxzLmNvbmZpcm1kbGcuY2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICAgICAgICBzY2lsLlV0aWxzLmNvbmZpcm1kbGcuY2FuY2VsLnN0eWxlLmRpc3BsYXkgPSBjYW5jZWxidG4gPyAnJyA6IFwibm9uZVwiO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY29uZmlybWRsZy5tc2cuaW5uZXJIVE1MID0gbWVzc2FnZSA9PSBudWxsID8gJycgOiBcIjxwcmUgc3R5bGU9J21hcmdpbjowJz5cIiArIG1lc3NhZ2UgKyBcIjwvcHJlPlwiO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY29uZmlybWRsZy5oaWRlKHRydWUpO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuY29uZmlybWRsZy5zaG93KGNhcHRpb24sIG51bGwsIG51bGwsIG51bGwsIG93bmVyKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEEgc2ltcGxlIHZlcnNpb24gY29uZmlybSBkaWFsb2csIG9ubHkgc2hvd2luZyBZZXMsIE5vIGJ1dHRvblxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY29uZmlybVllc1xyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgYm9keVxyXG4gICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIC0gY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBjb25maXJtWWVzOiBmdW5jdGlvbiAobWVzc2FnZSwgY2FsbGJhY2ssIG93bmVyKSB7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jb25maXJtKG1lc3NhZ2UsIGZ1bmN0aW9uIChmKSB7IGlmIChmKSBjYWxsYmFjaygpOyB9LCBudWxsLCBudWxsLCBvd25lcik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBTaG93IHByb21wdCBkaWFsb2csIGFuZCBhc2sgdG8gaW5wdXQgYSBzdHJpbmc8YnI+XHJcbiAgICAqIEZvciBXaW5kb3dzIDggbWV0cm8gQXBwcywgYW5kIE9mZmljZSBBcHBzLCBzdGFuZGFyZCBwcm9tcHQoKSBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZC4gIFRoaXMgcHJvbXB0KCkgY2FuIGJlIGFuIGFsdGVybmF0aXZlLlxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gcHJvbXB0MlxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gY2FwdGlvbiAtIGRpYWxvZyBjYXB0aW9uXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBib2R5XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZWZhdWx0dmFsdWUgLSBkZWZhdWx0IHZhbHVlIGluIHRoZSBpbnB1dCBib3hcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGJ1dHRvbiAtIHRoZSBidXR0b24gbGFiZWxcclxuICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjayAtIGNhbGxiYWNrIGZ1bmN0aW9uLlxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gaWNvbnVybCAtIHRoZSB1cmwgb2YgZGlhbG9nIGljb25cclxuICAgICogQHBhcmFtIHtib29sfSB6aW5kZXggLSB6SW5kZXggb2YgdGhlIGRpYWxvZ1xyXG4gICAgKiBAcGFyYW0ge2Jvb2x9IG11bHRpbGluZSAtIGluZGljYXRlIGlmIHNob3dpbmcgbXVsdGlsaW5lIGlucHV0IGJveFxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBwcm9tcHQyOiBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb21wdChvcHRpb25zLmNhcHRpb24sIG9wdGlvbnMubWVzc2FnZSwgb3B0aW9ucy5kZWZhdWx0dmFsdWUsIG9wdGlvbnMuYnV0dG9uLFxyXG4gICAgICAgICAgICBvcHRpb25zLmNhbGxiYWNrLCBvcHRpb25zLmljb251cmwsIG9wdGlvbnMuemluZGV4LCBvcHRpb25zLm11bHRpbGluZSwgb3B0aW9ucy5hdXRvc3VnZ2VzdHVybCwgb3B0aW9ucy5vd25lcixcclxuICAgICAgICAgICAgb3B0aW9ucy5tYXhsZW5ndGgsIG9wdGlvbnMuaGVpZ2h0KTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNob3cgcHJvbXB0IGRpYWxvZywgYW5kIGFzayB0byBpbnB1dCBhIHN0cmluZzxicj5cclxuICAgICogRm9yIFdpbmRvd3MgOCBtZXRybyBBcHBzLCBhbmQgT2ZmaWNlIEFwcHMsIHN0YW5kYXJkIHByb21wdCgpIGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkLiAgVGhpcyBwcm9tcHQoKSBjYW4gYmUgYW4gYWx0ZXJuYXRpdmUuXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBwcm9tcHRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGNhcHRpb24gLSBkaWFsb2cgY2FwdGlvblxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgYm9keVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gZGVmYXVsdHZhbCAtIGRlZmF1bHQgdmFsdWUgaW4gdGhlIGlucHV0IGJveFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gYnRuIC0gdGhlIGJ1dHRvbiBsYWJlbFxyXG4gICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIC0gY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBpY29udXJsIC0gdGhlIHVybCBvZiBkaWFsb2cgaWNvblxyXG4gICAgKiBAcGFyYW0ge2Jvb2x9IHppbmRleCAtIHpJbmRleCBvZiB0aGUgZGlhbG9nXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gbXVsdGlsaW5lIC0gaW5kaWNhdGUgaWYgc2hvd2luZyBtdWx0aWxpbmUgaW5wdXQgYm94XHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBwcm9tcHQ6IGZ1bmN0aW9uIChjYXB0aW9uLCBtZXNzYWdlLCBkZWZhdWx0dmFsLCBidG4sIGNhbGxiYWNrLCBpY29udXJsLCB6aW5kZXgsIG11bHRpbGluZSwgYXV0b3N1Z2dlc3R1cmwsIG93bmVyLCBtYXhsZW5ndGgsIGhlaWdodCkge1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLnByb21wdGRsZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUoKTtcclxuICAgICAgICAgICAgdmFyIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCBcInRyXCIpO1xyXG4gICAgICAgICAgICB2YXIgaWNvbiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiksIFwiZGl2XCIsIG51bGwsIHsgd2lkdGg6IFwiNTBweFwiIH0pO1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIik7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiZGl2XCIsIG51bGwsIHsgY29sb3I6IFwiYmxhY2tcIiB9KTtcclxuXHJcbiAgICAgICAgICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiZGl2XCIpO1xyXG4gICAgICAgICAgICB2YXIgaW5wdXQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2LCBcImlucHV0XCIsIG51bGwsIHsgd2lkdGg6IFwiMzYwcHhcIiwgZGlzcGxheTogXCJub25lXCIgfSk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShcIngtd2Via2l0LXNwZWVjaFwiLCBcIm9uXCIpO1xyXG4gICAgICAgICAgICB2YXIgdGV4dGFyZWEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2LCBcInRleHRhcmVhXCIsIG51bGwsIHsgd2lkdGg6IFwiMzYwcHhcIiwgZGlzcGxheTogXCJub25lXCIgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImRpdlwiLCBudWxsLCB7IHRleHRBbGlnbjogXCJjZW50ZXJcIiwgcGFkZGluZ1RvcDogXCI1cHhcIiB9KTtcclxuICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiYnV0dG9uXCIsIGJ0biwgeyB3aWR0aDogc2NpbC5VdGlscy5idXR0b25XaWR0aCArIFwicHhcIiB9KTtcclxuXHJcbiAgICAgICAgICAgIHZhciBkbGcgPSBzY2lsLlV0aWxzLnByb21wdGRsZyA9IG5ldyBKU0RyYXcyLkRpYWxvZyh0aGlzLnJlcyhcIk1lc3NhZ2VcIiksIHRib2R5LnBhcmVudE5vZGUpO1xyXG4gICAgICAgICAgICBkbGcuaWNvbiA9IGljb247XHJcbiAgICAgICAgICAgIGRsZy5tc2cgPSBtc2c7XHJcbiAgICAgICAgICAgIGRsZy5pbnB1dCA9IGlucHV0O1xyXG4gICAgICAgICAgICBkbGcudGV4dGFyZWEgPSB0ZXh0YXJlYTtcclxuICAgICAgICAgICAgZGxnLmJ1dHRvbiA9IGJ1dHRvbjtcclxuXHJcbiAgICAgICAgICAgIHZhciBmbiA9IGZ1bmN0aW9uIChlKSB7IHZhciBkID0gZGxnOyBkLmhpZGUoKTsgaWYgKGQuY2FsbGJhY2sgIT0gbnVsbCkgZC5jYWxsYmFjayhkLmlucHV0LnN0eWxlLmRpc3BsYXkgPT0gXCJub25lXCIgPyBkLnRleHRhcmVhLnZhbHVlIDogZC5pbnB1dC52YWx1ZSwgZC5pbnB1dC5zdHlsZS5kaXNwbGF5ID09IFwibm9uZVwiID8gZC50ZXh0YXJlYSA6IGQuaW5wdXQpOyBpZiAoZS5wcmV2ZW50RGVmYXVsdCAhPSBudWxsKSBlLnByZXZlbnREZWZhdWx0KCk7IH07XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChkbGcuaW5wdXQsIFwib25rZXlkb3duXCIsIGZ1bmN0aW9uIChlKSB7IGlmIChlLmtleUNvZGUgPT0gMTMpIHsgZm4oZSk7IH0gfSk7XHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChidXR0b24sIFwib25jbGlja1wiLCBmbik7XHJcblxyXG4gICAgICAgICAgICBkbGcuYXV0byA9IG5ldyBzY2lsLkF1dG9Db21wbGV0ZShpbnB1dCwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZGxnID0gc2NpbC5VdGlscy5wcm9tcHRkbGc7XHJcblxyXG4gICAgICAgIGRsZy5pbnB1dC5zdHlsZS5kaXNwbGF5ID0gbXVsdGlsaW5lID8gXCJub25lXCIgOiBcIlwiO1xyXG4gICAgICAgIGRsZy50ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gbXVsdGlsaW5lID8gXCJcIiA6IFwibm9uZVwiO1xyXG4gICAgICAgIGRsZy5pbnB1dC5zZXRBdHRyaWJ1dGUoXCJtYXhsZW5ndGhcIiwgbWF4bGVuZ3RoID4gMCA/IG1heGxlbmd0aCA6IFwiXCIpO1xyXG5cclxuICAgICAgICBpZiAoaGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICBkbGcuaW5wdXQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgICAgICBkbGcudGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGxnLmlucHV0LnN0eWxlLmhlaWdodCA9IFwiXCI7XHJcbiAgICAgICAgICAgIGRsZy50ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGxnLmF1dG8udXJsID0gYXV0b3N1Z2dlc3R1cmw7XHJcbiAgICAgICAgZGxnLmF1dG8uZGlzYWJsZWQgPSBhdXRvc3VnZ2VzdHVybCA9PSBudWxsIHx8IGF1dG9zdWdnZXN0dXJsID09IFwiXCI7XHJcblxyXG4gICAgICAgIGRsZy5zaG93KGNhcHRpb24sIHppbmRleCk7XHJcbiAgICAgICAgaWYgKGljb251cmwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkbGcuaWNvbi5pbm5lckhUTUwgPSBcIiZuYnNwO1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGxnLmljb24uaW5uZXJIVE1MID0gXCI8aW1nIHN0eWxlPSd3aWR0aDo1MHB4O2hlaWdodDo1MHB4Oycgc3JjPSdcIiArIGljb251cmwgKyBcIic+XCI7XHJcbiAgICAgICAgICAgIGRsZy5pY29uLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGxnLm1zZy5pbm5lckhUTUwgPSBtZXNzYWdlID09IG51bGwgPyAnJyA6IG1lc3NhZ2U7XHJcbiAgICAgICAgZGxnLmJ1dHRvbi5pbm5lckhUTUwgPSBidG4gPT0gbnVsbCA/IHRoaXMucmVzKFwiT0tcIikgOiB0aGlzLnJlcyhidG4pO1xyXG4gICAgICAgIChtdWx0aWxpbmUgPyBkbGcudGV4dGFyZWEgOiBkbGcuaW5wdXQpLnZhbHVlID0gZGVmYXVsdHZhbCA9PSBudWxsID8gJycgOiBkZWZhdWx0dmFsO1xyXG4gICAgICAgIGRsZy5jYWxsYmFjayA9IGNhbGxiYWNrO1xyXG5cclxuICAgICAgICBkbGcuaGlkZSh0cnVlKTtcclxuICAgICAgICBkbGcuc2hvdzIoeyBvd25lcjogb3duZXIgfSk7XHJcbiAgICAgICAgKG11bHRpbGluZSA/IGRsZy50ZXh0YXJlYSA6IGRsZy5pbnB1dCkuc2VsZWN0KCk7XHJcbiAgICAgICAgKG11bHRpbGluZSA/IGRsZy50ZXh0YXJlYSA6IGRsZy5pbnB1dCkuZm9jdXMoKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENyZWF0ZSBhIENvb2tpZVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlQ29va2llXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gdGhlIGNvb2tpZSdzIG5hbWVcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gdGhlIHZhbHVlIG9mIHRoZSBjb29raWVcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IGRheXMgLSB0b3RhbCBkYXlzIHRoYXQgdGhlIGNvb2tpZSB3aWxsIGV4cGlyZVxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAgY3JlYXRlQ29va2llOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGRheXMsIGlnbm9yZVN0b3JlKSB7XHJcbiAgICAgICAgaWYgKCFpZ25vcmVTdG9yZSkge1xyXG4gICAgICAgICAgICB2YXIgc3RvcmUgPSBkb2pveC5zdG9yYWdlID09IG51bGwgfHwgZG9qb3guc3RvcmFnZS5Mb2NhbFN0b3JhZ2VQcm92aWRlciA9PSBudWxsID8gbnVsbCA6IG5ldyBkb2pveC5zdG9yYWdlLkxvY2FsU3RvcmFnZVByb3ZpZGVyKCk7XHJcbiAgICAgICAgICAgIGlmIChzdG9yZSAhPSBudWxsICYmIHN0b3JlLmlzQXZhaWxhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN0b3JlLmluaXRpYWxpemUoKTtcclxuICAgICAgICAgICAgICAgIHN0b3JlLnB1dChuYW1lLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBleHBpcmVzID0gXCJcIjtcclxuICAgICAgICBpZiAoZGF5cykge1xyXG4gICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpO1xyXG4gICAgICAgICAgICBleHBpcmVzID0gXCI7IGV4cGlyZXM9XCIgKyBkYXRlLnRvR01UU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyBcIj1cIiArIGVzY2FwZSh2YWx1ZSkgKyBleHBpcmVzICsgXCI7IHBhdGg9L1wiO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogUmVhZCBhIENvb2tpZVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gcmVhZENvb2tpZVxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHRoZSBjb29raWUncyBuYW1lXHJcbiAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgY29va2llIGFzIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgcmVhZENvb2tpZTogZnVuY3Rpb24gKG5hbWUsIGlnbm9yZVN0b3JlKSB7XHJcbiAgICAgICAgaWYgKCFpZ25vcmVTdG9yZSkge1xyXG4gICAgICAgICAgICB2YXIgc3RvcmUgPSBkb2pveC5zdG9yYWdlID09IG51bGwgfHwgZG9qb3guc3RvcmFnZS5Mb2NhbFN0b3JhZ2VQcm92aWRlciA9PSBudWxsID8gbnVsbCA6IG5ldyBkb2pveC5zdG9yYWdlLkxvY2FsU3RvcmFnZVByb3ZpZGVyKCk7XHJcbiAgICAgICAgICAgIGlmIChzdG9yZSAhPSBudWxsICYmIHN0b3JlLmlzQXZhaWxhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN0b3JlLmluaXRpYWxpemUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXQobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBuYW1lRVEgPSBuYW1lICsgXCI9XCI7XHJcbiAgICAgICAgdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYyA9IGNhW2ldO1xyXG4gICAgICAgICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT0gJyAnKVxyXG4gICAgICAgICAgICAgICAgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTtcclxuICAgICAgICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5lc2NhcGUoYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBFcmFzZSBhIENvb2tpZVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gZXJhc2VDb29raWVcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSB0aGUgY29va2llJ3MgbmFtZVxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAgZXJhc2VDb29raWU6IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgaWYgKGRvam94LnN0b3JhZ2UgIT0gbnVsbCAmJiBkb2pveC5zdG9yYWdlLkxvY2FsU3RvcmFnZVByb3ZpZGVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHN0b3JlID0gbmV3IGRvam94LnN0b3JhZ2UuTG9jYWxTdG9yYWdlUHJvdmlkZXIoKTtcclxuICAgICAgICAgICAgaWYgKHN0b3JlLmlzQXZhaWxhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN0b3JlLmluaXRpYWxpemUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5yZW1vdmUobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNyZWF0ZUNvb2tpZShuYW1lLCBcIlwiLCAtMSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBGb3JtYXQgZmlsZSBzaXplXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBmb3JtYXRGaWxlc2l6ZVxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gcyAtIGZpbGUgc2l6ZVxyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGZvcm1hdEZpbGVzaXplOiBmdW5jdGlvbiAoZmlsZXNpemUpIHtcclxuICAgICAgICBpZiAoIShmaWxlc2l6ZSA+IDApKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVzaXplIC8gMTAwMCA8IDEpXHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlc2l6ZSArIFwiQnl0ZXNcIjtcclxuICAgICAgICBmaWxlc2l6ZSA9IGZpbGVzaXplIC8gMTAwMDtcclxuICAgICAgICBpZiAoZmlsZXNpemUgLyAxMDAwIDwgMSlcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoZmlsZXNpemUgKiAxMCkgLyAxMCArIFwiS0JcIjtcclxuICAgICAgICBmaWxlc2l6ZSA9IGZpbGVzaXplIC8gMTAwMDtcclxuICAgICAgICBpZiAoZmlsZXNpemUgLyAxMDAwIDwgMSlcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoZmlsZXNpemUgKiAxMCkgLyAxMCArIFwiTUJcIjtcclxuICAgICAgICBmaWxlc2l6ZSA9IGZpbGVzaXplIC8gMTAwMDtcclxuICAgICAgICBpZiAoZmlsZXNpemUgLyAxMDAwIDwgMSlcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoZmlsZXNpemUgKiAxMCkgLyAxMCArIFwiR0JcIjtcclxuICAgICAgICBmaWxlc2l6ZSA9IGZpbGVzaXplIC8gMTAyNDtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChmaWxlc2l6ZSAqIDEwKSAvIDEwICsgXCJUQlwiO1xyXG4gICAgfSxcclxuXHJcbiAgICB0b2RheTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBzY2lsLlV0aWxzLnRydW5jMmRhdGUobmV3IERhdGUoKSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHRydW5jMmRhdGU6IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgcmV0dXJuIGQgPT0gbnVsbCA/IG51bGwgOiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xyXG4gICAgfSxcclxuXHJcbiAgICB0aW1lOiBmdW5jdGlvbiAodG0pIHtcclxuICAgICAgICBpZiAodG0gPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIHZhciB0ID0gbnVsbDtcclxuICAgICAgICBpZiAodHlwZW9mICh0bSkgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBpZiAoL15bMC05XSskLy50ZXN0KHRtKSkge1xyXG4gICAgICAgICAgICAgICAgdG0gPSBwYXJzZUludCh0bSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3MgPSB0bS5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNzLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBwYXJzZUludChzc1swXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBzc1sxXS5sZW5ndGggPT0gMyA/IHRoaXMuX3BhcnNlTW9udGgoc3NbMV0pIDogKHBhcnNlSW50KHNzWzFdKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gcGFyc2VJbnQoc3NbMl0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoeSA+IDAgJiYgbSA+PSAwICYmIG0gPCAxMiAmJiBkID4gMCAmJiBkIDw9IDMxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSwgZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHQgPT0gbnVsbClcclxuICAgICAgICAgICAgdCA9IG5ldyBEYXRlKHRtKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdG0gaXMgYSBzdHJpbmcsIGxpa2UgMjAxNS0wNC0zMCwgdGhlIHRpbWUgaXMgVVRDIHRpbWUuICBDb252ZXJ0IGl0IGludG8gbG9jYWwgdGltZS5cclxuICAgICAgICB2YXIgb2Zmc2V0ID0gdC5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgICAgIGlmIChpc05hTihvZmZzZXQpKVxyXG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0LmdldFRpbWUoKSArIG9mZnNldCAqIDYwMDAwKTtcclxuICAgIH0sXHJcblxyXG4gICAgX21vbnRoczogW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdLFxyXG4gICAgX3dlZWtkYXlzOiBbXCJTdW5kYXlcIiwgXCJNb25kYXlcIiwgXCJUdWVzZGF5XCIsIFwiV2VkbmVzZGF5XCIsIFwiVGh1cnNkYXlcIiwgXCJGcmlkYXlcIiwgXCJTYXR1cmRheVwiXSxcclxuXHJcbiAgICB3ZWVrZGF5OiBmdW5jdGlvbiAoZHQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNbZHQuZ2V0RGF5KCldO1xyXG4gICAgfSxcclxuXHJcbiAgICBfcGFyc2VNb250aDogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAocyA9PSBudWxsIHx8IHMubGVuZ3RoICE9IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICBzID0gcy5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIHMuc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgcmV0dXJuIHNjaWwuVXRpbHMuaW5kZXhPZih0aGlzLl9tb250aHMsIHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBmb3JtYXRUaW1lOiBmdW5jdGlvbiAodG0sIGZvcm1hdCkge1xyXG4gICAgICAgIGlmICh0bSA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAodG0gPT0gbnVsbClcclxuICAgICAgICAgICAgdG0gPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdG0gIT0gXCJvYmplY3RcIilcclxuICAgICAgICAgICAgdG0gPSBzY2lsLlV0aWxzLnRpbWUodG0pO1xyXG5cclxuICAgICAgICBpZiAoSlNEcmF3Mi50aW1lem9uZW9mZmV0ID4gMClcclxuICAgICAgICAgICAgdG0gPSBuZXcgRGF0ZSh0bS5nZXRUaW1lKCkgKyBKU0RyYXcyLnRpbWV6b25lb2ZmZXQgKiA2MCAqIDYwICogMTAwMCk7XHJcblxyXG4gICAgICAgIC8vIGRhdGUgcGFydFxyXG4gICAgICAgIHZhciBzID0gZm9ybWF0O1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgICAgICAgIHMgPSBcInl5eXktbW1tLWRkXCI7XHJcblxyXG4gICAgICAgIHMgPSBzLnJlcGxhY2UoXCJ5eXl5XCIsIHRtLmdldEZ1bGxZZWFyKCkpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKFwieXlcIiwgKHRtLmdldEZ1bGxZZWFyKCkgKyBcIlwiKS5zdWJzdHIoMikpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKFwibW1tXCIsIHNjaWwuVXRpbHMuX21vbnRoc1t0bS5nZXRNb250aCgpXSlcclxuICAgICAgICAgICAgLnJlcGxhY2UoXCJtbVwiLCBzY2lsLlV0aWxzLnBhZExlZnQodG0uZ2V0TW9udGgoKSArIDEsIDIsICcwJykpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKFwiZGRcIiwgc2NpbC5VdGlscy5wYWRMZWZ0KHRtLmdldERhdGUoKSwgMiwgJzAnKSk7XHJcblxyXG4gICAgICAgIC8vIHRpbWUgcGFydFxyXG4gICAgICAgIHZhciBoMTIgPSBzLmluZGV4T2YoXCJoaFwiKSA+PSAwO1xyXG4gICAgICAgIHZhciBoID0gdG0uZ2V0SG91cnMoKTtcclxuICAgICAgICBzID0gcy5yZXBsYWNlKFwiaGhcIiwgdGhpcy5wYWRMZWZ0KGggJSAxMiwgMiwgJzAnKSlcclxuICAgICAgICAgICAgLnJlcGxhY2UoXCJISFwiLCB0aGlzLnBhZExlZnQoaCwgMiwgJzAnKSlcclxuICAgICAgICAgICAgLnJlcGxhY2UoXCJNTVwiLCB0aGlzLnBhZExlZnQodG0uZ2V0TWludXRlcygpLCAyLCAnMCcpKVxyXG4gICAgICAgICAgICAucmVwbGFjZShcIlNTXCIsIHRoaXMucGFkTGVmdCh0bS5nZXRTZWNvbmRzKCksIDIsICcwJykpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKFwic3NcIiwgdGhpcy5wYWRMZWZ0KHRtLmdldFNlY29uZHMoKSwgMiwgJzAnKSk7XHJcbiAgICAgICAgaWYgKGgxMilcclxuICAgICAgICAgICAgcyArPSBoID49IDEyID8gXCJQTVwiIDogXCJBTVwiO1xyXG5cclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYSBkYXRlIG51bWJlciBpbnRvIHZpc2libGUgZGF0ZSBzdHJpbmdcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGRhdGVTdHJcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IHRtIC0gdGhlIG51bWJlciBvZiB0aW1lXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gY2xhc3NpYyAtIGlmIGNsYXNzaWMgaXMgdHJ1ZSwgaXQgd29uJ3Qgc2hvdyBUb2RheSwgWWVzdGVyZGF5IGV0Yy5cclxuICAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgICovXHJcbiAgICBkYXRlU3RyOiBmdW5jdGlvbiAoaW5wdXQsIGNsYXNzaWMsIGZvcm1hdCkge1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoaW5wdXQpIHx8IGlucHV0ID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIHZhciB0cCA9IHR5cGVvZiAoaW5wdXQpO1xyXG4gICAgICAgIGlmICghKHRwID09IFwib2JqZWN0XCIgfHwgdHAgPT0gXCJudW1iZXJcIiB8fCB0cCA9PSBcInN0cmluZ1wiKSlcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgdmFyIHRtID0gaW5wdXQ7XHJcbiAgICAgICAgaWYgKHRwICE9IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgdG0gPSBzY2lsLlV0aWxzLnRpbWUodG0pO1xyXG4gICAgICAgICAgICBpZiAodG0gPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGRheXMgPSAoc2NpbC5VdGlscy50b2RheSgpLmdldFRpbWUoKSAtIHNjaWwuVXRpbHMudHJ1bmMyZGF0ZSh0bSkuZ2V0VGltZSgpKSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQ7XHJcblxyXG4gICAgICAgIHZhciByZXQgPSBudWxsO1xyXG4gICAgICAgIGlmICghY2xhc3NpYykge1xyXG4gICAgICAgICAgICBpZiAoZGF5cyA9PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0ID0gSlNEcmF3Mi5MYW5ndWFnZS5yZXMoXCJUb2RheVwiKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF5cyA9PSAxKVxyXG4gICAgICAgICAgICAgICAgcmV0ID0gSlNEcmF3Mi5MYW5ndWFnZS5yZXMoXCJZZXN0ZXJkYXlcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KGZvcm1hdCkpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1hdCA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuZGF0ZWZvcm1hdDtcclxuICAgICAgICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoZm9ybWF0KSlcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBcInl5eXktbW1tLWRkXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBpbnB1dCBpcyAyMDE0LTA0LTA4LCB0aGlzIGlzIHRvIGZpeCB0aGUgdGltZXpvbmUgaXNzdWVcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoaW5wdXQpID09IFwic3RyaW5nXCIpXHJcbiAgICAgICAgICAgICAgICB0bSA9IG5ldyBEYXRlKHRtKTtcclxuXHJcbiAgICAgICAgICAgIHJldCA9IHNjaWwuVXRpbHMuZm9ybWF0VGltZSh0bSwgZm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDb252ZXJ0IGEgdGltZSBudW1iZXIgaW50byB2aXNpYmxlIHRpbWUgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB0aW1lU3RyXHJcbiAgICAqIEBwYXJhbSB7bnVtYmVyfSB0bSAtIHRoZSBudW1iZXIgb2YgdGltZVxyXG4gICAgKiBAcGFyYW0ge2Jvb2x9IGNsYXNzaWMgLSBpZiBjbGFzc2ljIGlzIHRydWUsIGl0IHdvbid0IHNob3cgVG9kYXksIFllc3RlcmRheSBldGMuXHJcbiAgICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICAqL1xyXG4gICAgdGltZVN0cjogZnVuY3Rpb24gKHRtLCBjbGFzc2ljLCB0aW1lZm10KSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0bSkgfHwgdG0gPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgKHRtKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGlmICh0bSA9PSBcIm5ld1wiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+XCIgKyBKU0RyYXcyLkxhbmd1YWdlLnJlcyhcIk5ld1wiKSArIFwiPC9zcGFuPlwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdG07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodG0gPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0bSAhPSBcIm9iamVjdFwiKVxyXG4gICAgICAgICAgICB0bSA9IHNjaWwuVXRpbHMudGltZSh0bSk7XHJcblxyXG4gICAgICAgIHZhciBzID0gdGltZWZtdCAhPSBudWxsID8gdGltZWZtdCA6IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMudGltZWZvcm1hdDtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICBzID0gXCJISDpNTVwiO1xyXG5cclxuICAgICAgICByZXR1cm4gc2NpbC5VdGlscy5kYXRlU3RyKHRtLCBjbGFzc2ljKSArIFwiIFwiICsgc2NpbC5VdGlscy5mb3JtYXRUaW1lKHRtLCBzKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENyZWF0ZSBhIEJ1dHRvblxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlQnV0dG9uXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nIG9yIERPTX0gcGFyZW50IC0gdGhlIHBhcmVudCBvZiB0aGUgbmV3IGVsZW1lbnQuICBUaGUgcGFyZW50IGNhbiBiZSBzZXQgdG8gbnVsbCwgc28gaXQgd29uJ3QgaGF2ZSBhIHBhcmVudFxyXG4gICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IGJ1dHRvbiAtIHsgY2FwdGlvbjogc3RyaW5nLCBvbmNsaWNrOiBmdW5jdGlvbiB9XHJcbiAgICAqIEByZXR1cm5zIHRoZSBuZXcgYnV0dG9uXHJcbiAgICAqL1xyXG4gICAgY3JlYXRlQnV0dG9uOiBmdW5jdGlvbiAocGFyZW50LCBidXR0b24sIGxhbmcpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHBhcmVudCA9PSBcInN0cmluZ1wiKVxyXG4gICAgICAgICAgICBwYXJlbnQgPSBkb2pvLmJ5SWQocGFyZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGJ1dHRvbiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoYnV0dG9uKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwic3BhblwiLCBidXR0b24pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcyA9IChsYW5nID09IG51bGwgPyBzY2lsLkxhbmcgOiBsYW5nKS5yZXMoYnV0dG9uLmNhcHRpb24gfHwgYnV0dG9uLmxhYmVsKTtcclxuICAgICAgICB2YXIgdGl0bGUgPSBzY2lsLkxhbmcucmVzKGJ1dHRvbi50aXRsZSk7XHJcblxyXG4gICAgICAgIGlmIChidXR0b24uc3JjID09IG51bGwgJiYgYnV0dG9uLmljb251cmwgIT0gbnVsbClcclxuICAgICAgICAgICAgYnV0dG9uLnNyYyA9IGJ1dHRvbi5pY29udXJsO1xyXG4gICAgICAgIGlmIChidXR0b24udGl0bGUgPT0gbnVsbCAmJiBidXR0b24udG9vbHRpcHMgIT0gbnVsbClcclxuICAgICAgICAgICAgYnV0dG9uLnRpdGxlID0gYnV0dG9uLnRvb2x0aXBzO1xyXG5cclxuICAgICAgICB2YXIgYSA9IG51bGw7XHJcbiAgICAgICAgaWYgKGJ1dHRvbi50eXBlID09IFwiYlwiKSB7XHJcbiAgICAgICAgICAgIHZhciB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUocGFyZW50LCAwLCAwLCB7IGZsb2F0OiBidXR0b24uZmxvYXQgPT0gbnVsbCA/IFwibGVmdFwiIDogYnV0dG9uLmZsb2F0LCB0ZXh0QWxpZ246IFwiY2VudGVyXCIsIG1hcmdpbjogMCwgYm9yZGVyUmFkaXVzOiBcIjJweFwiIH0pO1xyXG4gICAgICAgICAgICBhID0gdGJvZHkucGFyZW50Tm9kZTtcclxuICAgICAgICAgICAgaWYgKGJ1dHRvbi5pZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBidXR0b24uaWQpO1xyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCBcInRyXCIpLCBcInRkXCIsIFwiPGltZyBzcmM9J1wiICsgYnV0dG9uLnNyYyArIFwiJ1wiICsgKGJ1dHRvbi5pbWdoZWlnaHQgPiAwID8gXCIgaGVpZ2h0PSdcIiArIGJ1dHRvbi5pbWdoZWlnaHQgKyBcIidcIiA6IFwiXCIpICsgXCI+XCIsIHsgcGFkZGluZzogXCIzcHggMTJweCAwIDEycHhcIiB9KTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgXCJ0clwiKSwgXCJ0ZFwiLCBzLCB7IGNvbG9yOiBcIiNmZmZcIiwgZm9udFNpemU6IFwiNjAlXCIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocyA9PSBudWxsICYmIChidXR0b24uc3JjIHx8IGJ1dHRvbi5pY29uKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBhID0gdGhpcy5jcmVhdGVFbGVtZW50KHBhcmVudCwgXCJpbWdcIiwgbnVsbCwgeyB3aWR0aDogYnV0dG9uLndpZHRoLCBjdXJzb3I6IFwicG9pbnRlclwiLCB2ZXJ0aWNhbEFsaWduOiBcIm1pZGRsZVwiIH0sIHsgc3JjOiAoYnV0dG9uLnNyYyB8fCBidXR0b24uaWNvbiksIHRpdGxlOiBidXR0b24udGl0bGUsIGlkOiBidXR0b24uaWQgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLnNyYyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHMgPSBcIjxpbWcgc3R5bGU9J3ZlcnRpY2FsLWFsaWduOm1pZGRsZScgc3JjPSdcIiArIGJ1dHRvbi5zcmMgKyBcIidcIiArIChidXR0b24uaW1naGVpZ2h0ID4gMCA/IFwiIGhlaWdodD0nXCIgKyBidXR0b24uaW1naGVpZ2h0ICsgXCInXCIgOiBcIlwiKSArIFwiPlwiICsgcztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLnR5cGUgPT0gXCJhXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIGJ1dHRvbi50YWduYW1lICE9IG51bGwgPyBidXR0b24udGFnbmFtZSA6IChzID09IFwiXCIgfHwgcyA9PSBudWxsID8gXCJzcGFuXCIgOiBcInVcIiksIHMsIHsgd2lkdGg6IGJ1dHRvbi53aWR0aCwgY3Vyc29yOiBcInBvaW50ZXJcIiwgYmFja2dyb3VuZDogYnV0dG9uLmJhY2tncm91bmQsIHdoaXRlU3BhY2U6IFwibm93cmFwXCIgfSwgeyB0aXRsZTogdGl0bGUsIGlkOiBidXR0b24uaWQgfSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwiYnV0dG9uXCIsIHMsIHsgd2lkdGg6IGJ1dHRvbi53aWR0aCwgYmFja2dyb3VuZDogYnV0dG9uLmJhY2tncm91bmQsIHBhZGRpbmc6IGJ1dHRvbi5wYWRkaW5nIH0sIHsgdGl0bGU6IHRpdGxlLCBpZDogYnV0dG9uLmlkIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uLml0ZW1zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PSBcIklNR1wiIHx8IGEudGFnTmFtZSA9PSBcIlVcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCBcInNwYW5cIiwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICBiLmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgICAgICAgICAgYSA9IGI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoYyA9IGJ1dHRvbi5oaWdobGlnaHRjb2xvciA9PSBudWxsID8gSlNEcmF3Mi5Ta2luLm1lbnUuaGlnaGxpZ2h0Y29sb3IgOiBidXR0b24uaGlnaGxpZ2h0Y29sb3I7XHJcbiAgICAgICAgdmFyIGMgPSBidXR0b24uY29sb3IgPT0gbnVsbCA/IChidXR0b24udHlwZSA9PSBcImJcIiA/IFwiXCIgOiBKU0RyYXcyLlNraW4ubWVudS5jb2xvcikgOiBidXR0b24uY29sb3I7XHJcbiAgICAgICAgYS5zdHlsZS5jb2xvciA9IGM7XHJcbiAgICAgICAgaWYgKGJ1dHRvbi50eXBlID09IFwiYlwiKSB7XHJcbiAgICAgICAgICAgIHNjaWwuY29ubmVjdChhLCBcIm9ubW91c2VvdmVyXCIsIGZ1bmN0aW9uICgpIHsgYS5zdHlsZS5iYWNrZ3JvdW5kID0gaGM7IH0pO1xyXG4gICAgICAgICAgICBzY2lsLmNvbm5lY3QoYSwgXCJvbm1vdXNlb3V0XCIsIGZ1bmN0aW9uICgpIHsgYS5zdHlsZS5iYWNrZ3JvdW5kID0gYzsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzY2lsLmNvbm5lY3QoYSwgXCJvbm1vdXNlb3ZlclwiLCBmdW5jdGlvbiAoKSB7IGEuc3R5bGUuY29sb3IgPSBoYzsgfSk7XHJcbiAgICAgICAgICAgIHNjaWwuY29ubmVjdChhLCBcIm9ubW91c2VvdXRcIiwgZnVuY3Rpb24gKCkgeyBhLnN0eWxlLmNvbG9yID0gYzsgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uLml0ZW1zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jYWxsYmFjayA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uY2FsbGJhY2sgPSBmdW5jdGlvbiAoY21kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1dHRvbi5vbmNsaWNrICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLm9uY2xpY2soY21kKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnV0dG9uLml0ZW1zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLml0ZW1zW2ldLmxhYmVsID09IGNtZCAmJiBidXR0b24uaXRlbXNbaV0udXJsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLml0ZW1zW2ldLnRhcmdldCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBidXR0b24uaXRlbXNbaV0udXJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oYnV0dG9uLml0ZW1zW2ldLnVybCwgYnV0dG9uLml0ZW1zW2ldLnRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ldyBzY2lsLkRyb3Bkb3duQnV0dG9uKGEsIGJ1dHRvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYnV0dG9uLm9uY2xpY2sgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGRvam8uY29ubmVjdChhLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHsgYnV0dG9uLm9uY2xpY2soZSk7IH0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChidXR0b24udXJsKVxyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KGEsIFwib25jbGlja1wiLCBmdW5jdGlvbiAoKSB7IGlmIChidXR0b24udGFyZ2V0ID09IG51bGwpIHdpbmRvdy5sb2NhdGlvbiA9IGJ1dHRvbi51cmw7IGVsc2Ugd2luZG93Lm9wZW4oYnV0dG9uLnVybCwgYnV0dG9uLnRhcmdldCk7IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJ1dHRvbi5rZXkgIT0gbnVsbClcclxuICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYnV0dG9uLmtleSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogQ3JlYXRlIGEgSFRNTCBlbGVtZW50LlxyXG4gICAgKiA8cHJlPlxyXG4gICAgKiA8Yj5FeGFtcGxlOjwvYj5cclxuICAgICogICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImRpdlwiLCBcclxuICAgICogICAgICAgXCImbHQ7XCIgKyBcImEgaHJlZj0namF2YXNjcmlwdDphbGVydCg5OSknJmd0O3Rlc3QmbHQ7L2FcIiArIFwiJmd0O1wiLCB7dGV4dEFsaWduOidjZW50ZXInfSwge2NsYXNzOiAnbXljbGFzcyd9KTtcclxuICAgICogPC9wcmU+XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBjcmVhdGVFbGVtZW50XHJcbiAgICAqIEBwYXJhbSB7RE9NfSBwYXJlbnQgLSB0aGUgcGFyZW50IG9mIHRoZSBuZXcgZWxlbWVudC4gIFRoZSBwYXJlbnQgY2FuIGJlIHNldCB0byBudWxsLCBzbyBpdCB3b24ndCBoYXZlIGEgcGFyZW50XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgLSB0aGUgbmFtZSBvZiB0aGUgbmV3IGVsZW1lbnRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGh0bWwgLSB0aGUgaW5uZXJIVE1MIG9mIHRoZSBuZXcgZWxlbWVudFxyXG4gICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IHN0eWxlcyAtIHN0eWxlcyBvZiB0aGUgbmV3IGVsZW1lbnRcclxuICAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBhdHRyaWJ1dGVzIC0gYXR0cmlidXRlcyBvZiB0aGUgbmV3IGVsZW1lbnQsIHN1Y2ggYXMgdGhlIG5hbWUsIGlkLCBjbGFzcyBldGMuXHJcbiAgICAqIEBwYXJhbSB7b25jbGlja30gZnVuY3Rpb25cclxuICAgICogQHJldHVybnMgdGhlIG5ldyBIVE1MIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAocGFyZW50LCB0YWcsIGh0bWwsIHN0eWxlcywgYXR0cmlidXRlcywgb25jbGljaykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgcGFyZW50ID0gc2NpbC5ieUlkKHBhcmVudCk7XHJcblxyXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzICE9IG51bGwgJiYgYXR0cmlidXRlcy50aXRsZSAhPSBudWxsKVxyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnRpdGxlID0gdGhpcy5yZXMoYXR0cmlidXRlcy50aXRsZSk7XHJcblxyXG4gICAgICAgIHZhciBlID0gbnVsbDtcclxuICAgICAgICB0YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFnID09IFwiY2hlY2tib3hcIiB8fCB0YWcgPT0gXCJyYWRpb1wiIHx8IHRhZyA9PSBcInBhc3N3b3JkXCIgfHwgdGFnID09IFwiaGlkZGVuXCIgfHwgdGFnID09IFwiZmlsZVwiIHx8IHRhZyA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNJRThMb3dlcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGF0dCA9IGF0dHJpYnV0ZXMgIT0gbnVsbCAmJiBhdHRyaWJ1dGVzW1wibmFtZVwiXSAhPSBudWxsID8gXCIgbmFtZT0nXCIgKyBhdHRyaWJ1dGVzW1wibmFtZVwiXSArIFwiJ1wiIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiPGlucHV0IHR5cGU9J1wiICsgdGFnICsgXCInXCIgKyBhdHQgKyBcIj5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xyXG4gICAgICAgICAgICAgICAgZS50eXBlID0gdGFnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmVudCAhPSBudWxsKVxyXG4gICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZSk7XHJcblxyXG4gICAgICAgIGlmIChodG1sICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PSBcInJhZGlvXCIgfHwgdGFnID09IFwiY2hlY2tib3hcIilcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwic3BhblwiLCBodG1sKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0eWxlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdiA9IHN0eWxlc1trXTtcclxuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKChrID09IFwid2lkdGhcIiB8fCBrID09IFwiaGVpZ2h0XCIgfHwgayA9PSBcInBhZGRpbmdcIiB8fCBrID09IFwibWFyZ2luXCIpICYmIHR5cGVvZiAodikgPT0gXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgICAgICB2ID0gdiArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBlLnN0eWxlW2tdID0gdjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2tdICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoaywgYXR0cmlidXRlc1trXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvbmNsaWNrICE9IG51bGwpXHJcbiAgICAgICAgICAgIGRvam8uY29ubmVjdChlLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7IG9uY2xpY2soZXZlbnQsIGUpOyB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGU7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vICAgIC8qKlxyXG4gICAgLy8gICAgKiBEb3dubG9hZCBhIGZpbGUgZnJvbSB0aGUgc2FtZSBzaXRlLiAgSXQgd29uJ3Qgd29yayB0byBkb3dubG9hZCBjcm9zcy1zaXRlIGNvbnRlbnRzLlxyXG4gICAgLy8gICAgKiA8cHJlPlxyXG4gICAgLy8gICAgKiA8Yj5FeGFtcGxlOjwvYj5cclxuICAgIC8vICAgICogICAgc2NpbC5VdGlscy5kb3dubG9hZEZpbGUoXCJkYXRhL20ubW9sXCIsIGZ1bmN0aW9uKGRhdGEpIHsgYWxlcnQoZGF0YSk7IH0pO1xyXG4gICAgLy8gICAgKiA8L3ByZT5cclxuICAgIC8vICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGRvd25sb2FkRmlsZVxyXG4gICAgLy8gICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gdXJsIG9mIHRoZSBmaWxlXHJcbiAgICAvLyAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24oZGF0YSkge31cclxuICAgIC8vICAgICovXHJcbiAgICAvLyAgICBkb3dubG9hZEZpbGU6IGZ1bmN0aW9uICh1cmwsIGNhbGxiYWNrKSB7XHJcbiAgICAvLyAgICAgICAgdmFyIGlmcmFtZSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImlmcmFtZVwiLCBudWxsLCB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRpc3BsYXk6IFwibm9uZVwiIH0sXHJcbiAgICAvLyAgICAgICAgICAgIHsgZnJhbWVCb3JkZXI6IDAsIHNyYzogdXJsIH0pO1xyXG5cclxuICAgIC8vICAgICAgICBzY2lsLmNvbm5lY3QoaWZyYW1lLCBcIm9ubG9hZFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyAgICAgICAgICAgIHZhciBkb2MgPSBudWxsO1xyXG4gICAgLy8gICAgICAgICAgICBpZiAoaWZyYW1lLmNvbnRlbnREb2N1bWVudCAhPSBudWxsKVxyXG4gICAgLy8gICAgICAgICAgICAgICAgZG9jID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDtcclxuICAgIC8vICAgICAgICAgICAgZWxzZSBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cgIT0gbnVsbClcclxuICAgIC8vICAgICAgICAgICAgICAgIGRvYyA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xyXG4gICAgLy8gICAgICAgICAgICB2YXIgYm9keSA9IGRvYyA9PSBudWxsID8gbnVsbCA6IGRvYy5ib2R5O1xyXG5cclxuICAgIC8vICAgICAgICAgICAgdmFyIGRhdGE7XHJcbiAgICAvLyAgICAgICAgICAgIGlmIChib2R5ID09IG51bGwgJiYgZG9jLmRvY3VtZW50RWxlbWVudCAhPSBudWxsKVxyXG4gICAgLy8gICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jKTtcclxuICAgIC8vICAgICAgICAgICAgZWxzZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgZGF0YSA9IHNjaWwuVXRpbHMuZ2V0SW5uZXJUZXh0KGJvZHkpO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcclxuICAgIC8vICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpXHJcbiAgICAvLyAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhLCB1cmwpO1xyXG4gICAgLy8gICAgICAgIH0pO1xyXG4gICAgLy8gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogQ3JlYXRlIGEgSFRNTCB0YWJsZSBlbGVtZW50XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBjcmVhdGVUYWJsZVxyXG4gICAgKiBAcGFyYW0ge0RPTX0gcGFyZW50IC0gdGhlIHBhcmVudCBvZiB0aGUgbmV3IHRhYmxlLiAgVGhlIHBhcmVudCBjYW4gYmUgc2V0IHRvIG51bGwsIHNvIGl0IHdvbid0IGhhdmUgYSBwYXJlbnRcclxuICAgICogQHBhcmFtIHtudW1iZXJ9IGNlbGxzcGFjaW5nIC0gdGhlIGNlbGwgc3BhY2luZyBpbiBwaXhlbFxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gY2VsbHBhZGRpbmcgLSB0aGUgY2VsbCBwYWRkaW5nIGluIHBpeGVsXHJcbiAgICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gc3R5bGVzIC0gc3R5bGVzIG9mIHRoZSBuZXcgZWxlbWVudFxyXG4gICAgKiBAcGFyYW0ge251bWJlcn0gYm9yZGVyIC0gdGhlIGJvcmRlciB3aWR0aCBvZiB0aGUgdGFibGVcclxuICAgICogQHJldHVybnMgdGhlIG5ldyBIVE1MIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBjcmVhdGVUYWJsZTogZnVuY3Rpb24gKHBhcmVudCwgY2VsbHNwYWNpbmcsIGNlbGxwYWRkaW5nLCBzdHlsZXMsIGJvcmRlcikge1xyXG4gICAgICAgIHZhciB0YWJsZSA9IHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwidGFibGVcIiwgbnVsbCwgc3R5bGVzKTtcclxuICAgICAgICBpZiAoY2VsbHNwYWNpbmcgIT0gbnVsbClcclxuICAgICAgICAgICAgdGFibGUuY2VsbFNwYWNpbmcgPSBjZWxsc3BhY2luZztcclxuICAgICAgICBpZiAoY2VsbHBhZGRpbmcgIT0gbnVsbClcclxuICAgICAgICAgICAgdGFibGUuY2VsbFBhZGRpbmcgPSBjZWxscGFkZGluZztcclxuICAgICAgICBpZiAoYm9yZGVyID49IDApXHJcbiAgICAgICAgICAgIHRhYmxlLmJvcmRlciA9IGJvcmRlcjtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFbGVtZW50KHRhYmxlLCBcInRib2R5XCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogQ3JlYXRlIGEgSFRNTCB0YWJsZSBlbGVtZW50XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBjcmVhdGVUYWJsZVxyXG4gICAgKiBAcGFyYW0ge0RPTX0gcGFyZW50IC0gdGhlIHBhcmVudCBvZiB0aGUgbmV3IHRhYmxlLiAgVGhlIHBhcmVudCBjYW4gYmUgc2V0IHRvIG51bGwsIHNvIGl0IHdvbid0IGhhdmUgYSBwYXJlbnRcclxuICAgICogQHBhcmFtIHtkaWN0fSBzdHlsZXMgLSBzdHlsZXMgb2YgdGhlIG5ldyBlbGVtZW50XHJcbiAgICAqIEBwYXJhbSB7ZGljdH0gYXR0cmlidXRlcyAtIGF0dHJpYnV0ZXNcclxuICAgICogQHJldHVybnMgdGhlIG5ldyBIVE1MIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBjcmVhdGVUYWJsZTI6IGZ1bmN0aW9uIChwYXJlbnQsIHN0eWxlcywgYXR0cmlidXRlcykge1xyXG4gICAgICAgIHZhciB0YWJsZSA9IHRoaXMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwidGFibGVcIiwgbnVsbCwgc3R5bGVzLCBhdHRyaWJ1dGVzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFbGVtZW50KHRhYmxlLCBcInRib2R5XCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVUUjogZnVuY3Rpb24gKHBhcmVudCwgc3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwidHJcIiwgc3R5bGVzKTtcclxuICAgIH0sXHJcblxyXG4gICAgY3JlYXRlVEQ6IGZ1bmN0aW9uIChwYXJlbnQsIHN0eWxlcykge1xyXG4gICAgICAgIGlmIChwYXJlbnQudGFnTmFtZSAhPSBcIlRSXCIpXHJcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMuY3JlYXRlVFIocGFyZW50KTtcclxuICAgICAgICByZXR1cm4gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHBhcmVudCwgXCJ0ZFwiLCBzdHlsZXMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVDZW50ZXJCb3g6IGZ1bmN0aW9uIChwYXJlbnQsIGJvcmRlcikge1xyXG4gICAgICAgIHZhciB0ID0gdGhpcy5jcmVhdGVUYWJsZShwYXJlbnQsIDAsIDAsIG51bGwsIGJvcmRlcik7XHJcbiAgICAgICAgdC5wYXJlbnROb2RlLnNldEF0dHJpYnV0ZShcImFsaWduXCIsIFwiY2VudGVyXCIpO1xyXG4gICAgICAgIHZhciB0ciA9IHRoaXMuY3JlYXRlRWxlbWVudCh0LCBcInRyXCIpO1xyXG4gICAgICAgIHZhciB0ZCA9IHRoaXMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiLCBudWxsLCB7IHRleHRBbGlnbjogXCJsZWZ0XCIgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRkO1xyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVTZWxlY3Q6IGZ1bmN0aW9uIChwYXJlbnQsIGl0ZW1zLCB2YWx1ZSwgc29ydGl0ZW1zLCBzdHlsZXMpIHtcclxuICAgICAgICB2YXIgc2VsID0gdGhpcy5jcmVhdGVFbGVtZW50KHBhcmVudCwgXCJzZWxlY3RcIiwgbnVsbCwgc3R5bGVzKTtcclxuICAgICAgICB0aGlzLmxpc3RPcHRpb25zKHNlbCwgaXRlbXMsIHZhbHVlLCBmYWxzZSwgc29ydGl0ZW1zKTtcclxuICAgICAgICByZXR1cm4gc2VsO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogU3BlY2lmeSBpdGVtcyBvZiBhIFNFTEVDVCBlbGVtZW50XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBsaXN0T3B0aW9uc1xyXG4gICAgKiBAcGFyYW0ge0RPTX0gc2VsZWN0IC0gdGhlIGRlc3RpbmF0aW9uIFNFTEVDVCBlbGVtZW50XHJcbiAgICAqIEBwYXJhbSB7YXJyYXkgb3IgZGljdGlvbmFyeX0gaXRlbXMgLSBpdGVtcyB0byBiZSBhZGRlZFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsIC0gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCBpdGVtXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gcmVtb3ZlYWxsIC0gaW5kaWNhdGUgaWYgcmVtb3ZpbmcgYWxsIGV4aXN0aW5nIGl0ZW1zIGJlZm9yZSBhZGRpbmcgbmV3IGl0ZW1zXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gc29ydGl0ZW1zIC0gaW5kaWNhdGUgaWYgc29ydGluZyBpdGVtcyBiZWZvcmUgYWRkaW5nIHRoZW1cclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIGxpc3RPcHRpb25zOiBmdW5jdGlvbiAoc2VsZWN0LCBpdGVtcywgdmFsLCByZW1vdmVhbGwsIHNvcnRpdGVtcykge1xyXG4gICAgICAgIGlmIChyZW1vdmVhbGwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGwoc2VsZWN0KTtcclxuICAgICAgICBpZiAoaXRlbXMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHNvcnRpdGVtcylcclxuICAgICAgICAgICAgICAgIGl0ZW1zLnNvcnQoKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHMgPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciBvcHQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoc2VsZWN0LCBcIm9wdGlvblwiLCBzLCBudWxsLCB7IHZhbHVlOiBzIH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHMgPT0gdmFsKVxyXG4gICAgICAgICAgICAgICAgICAgIG9wdC5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLCBcInNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgc3MgPSB7fTtcclxuICAgICAgICAgICAgdmFyIGxpc3QgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBpdGVtcykge1xyXG4gICAgICAgICAgICAgICAgc3NbaXRlbXNba11dID0gaztcclxuICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVtc1trXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNvcnRpdGVtcylcclxuICAgICAgICAgICAgICAgIGxpc3Quc29ydCgpO1xyXG5cclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdiA9IGxpc3RbaV07XHJcbiAgICAgICAgICAgICAgICB2YXIgayA9IHNzW3ZdO1xyXG4gICAgICAgICAgICAgICAgdmFyIG9wdCA9IHRoaXMuY3JlYXRlRWxlbWVudChzZWxlY3QsIFwib3B0aW9uXCIsIHYsIG51bGwsIHsgdmFsdWU6IGsgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoayA9PSB2YWwpXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0LnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBTZWxlY3QgYW4gaXRlbSBpbiBhIFNFTEVDVCBlbGVtZW50IGJhc2VkIG9uIGEgdmFsdWVcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHNlbGVjdE9wdGlvblxyXG4gICAgKiBAcGFyYW0ge0RPTX0gc2VsZWN0IC0gdGhlIGRlc3RpbmF0aW9uIFNFTEVDVCBlbGVtZW50XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgLSB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIHNlbGVjdE9wdGlvbjogZnVuY3Rpb24gKHNlbGVjdCwgdmFsLCBpZ25vcmVjYXNlKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIG9wdCA9IHNlbGVjdC5vcHRpb25zW2ldO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0VxdWFsU3RyKG9wdC52YWx1ZSwgdmFsICsgXCJcIiwgaWdub3JlY2FzZSkgfHwgdHlwZW9mICh2YWwpID09IFwiYm9vbGVhblwiICYmICh2YWwgPT0gdHJ1ZSAmJiBzY2lsLlV0aWxzLmlzVHJ1ZShvcHQudmFsdWUpIHx8IHZhbCA9PSBmYWxzZSAmJiBzY2lsLlV0aWxzLmlzRmFsc2Uob3B0LnZhbHVlKSkpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc0VxdWFsU3RyOiBmdW5jdGlvbiAoczEsIHMyLCBpZ25vcmVjYXNlKSB7XHJcbiAgICAgICAgaWYgKHMxID09IG51bGwgJiYgczIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHMxID09IG51bGwgfHwgczIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoaWdub3JlY2FzZSlcclxuICAgICAgICAgICAgcmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPT0gczIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gczEgPT0gczI7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZW1vdmUgYWxsIGNoaWxkIGVsZW1lbnRzXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSByZW1vdmVBbGxcclxuICAgICogQHBhcmFtIHtET019IHBhcmVudCAtIHRoZSBwYXJlbnQgSFRNTCBlbGVtZW50XHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICByZW1vdmVBbGw6IGZ1bmN0aW9uIChwYXJlbnQpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwgfHwgcGFyZW50LmNoaWxkTm9kZXMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSlcclxuICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5jaGlsZE5vZGVzW2ldKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCB0aGUgZmlyc3QgcGFyZW50IGVsZW1lbnQgd2l0aCBhIGdpdmVuIHRhZyBuYW1lXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBnZXRQYXJlbnRcclxuICAgICogQHBhcmFtIHtET019IG9iaiAtIHRoZSBzdGFydCBIVE1MIGVsZW1lbnRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIHRoZSBlbGVtZW50IHRhZyBuYW1lIHRvIGJlIHNlYXJjaGVkXHJcbiAgICAqIEByZXR1cm5zIHRoZSBmaXJzdCBwYXJlbnQgZWxlbWVudFxyXG4gICAgKi9cclxuICAgIGdldFBhcmVudDogZnVuY3Rpb24gKG9iaiwgdGFnKSB7XHJcbiAgICAgICAgdGFnID0gdGFnLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgd2hpbGUgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmoudGFnTmFtZSAhPSBudWxsICYmIG9iai50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT0gdGFnKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICAgICAgb2JqID0gb2JqLnBhcmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUZXN0IGlmIGFuIGVsZW1lbnQgaXMgYSBjaGlsZCBvZiBhIHBhcmVudFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gdGVzdFBhcmVudFxyXG4gICAgKiBAcGFyYW0ge0RPTX0gb2JqIC0gdGhlIGNoaWxkIEhUTUwgZWxlbWVudCB0byBiZSB0ZXN0ZWRcclxuICAgICogQHBhcmFtIHtET019IHBhcmVudCAtIHRoZSBwYXJlbnQgZWxlbWVudCB0byBiZSB0ZXN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAgKi9cclxuICAgIHRlc3RQYXJlbnQ6IGZ1bmN0aW9uIChvYmosIHBhcmVudCkge1xyXG4gICAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBwYXJlbnQgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHdoaWxlIChvYmogIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAob2JqLnBhcmVudE5vZGUgPT0gcGFyZW50KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIG9iaiA9IG9iai5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBGaW5kIHRoZSBmaXJzdCBjaGlsZCBvZiBhIGdpdmVuIHRhZyBuYW1lXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBmaXJzdEVsZW1lbnRcclxuICAgICogQHBhcmFtIHtET019IHBhcmVudCAtIHRoZSBwYXJlbnQgZWxlbWVudCB0byBiZSB0ZXN0ZWRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIHRoZSB0YWcgbmFtZSB0byBiZSBzZWFyY2hlZFxyXG4gICAgKiBAcmV0dXJucyB0aGUgY2hpbGQgSFRNTCBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgZmlyc3RFbGVtZW50OiBmdW5jdGlvbiAocGFyZW50LCB0YWcpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBwYXJlbnQuY2hpbGROb2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PSBudWxsICYmIGMubm9kZU5hbWUgIT0gJyN0ZXh0JyB8fCB0YWcgIT0gbnVsbCAmJiBjLm5vZGVOYW1lID09IHRhZylcclxuICAgICAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgYXJyYXlDb250YWluc0FycmF5OiBmdW5jdGlvbiAoc3VwZXJzZXQsIHN1YnNldCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2V0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmluZGV4T2Yoc3VwZXJzZXQsIHN1YnNldFtpXSkgPCAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcblxyXG4gICAgaW5kZXhPZjogZnVuY3Rpb24gKGxpc3QsIGEsIGlnbm9yZWNhc2UpIHtcclxuICAgICAgICBpZiAobGlzdCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcblxyXG4gICAgICAgIGlmIChpZ25vcmVjYXNlICYmIHR5cGVvZiAoYSkgPT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgKGEpICE9IFwic3RyaW5nXCIpXHJcbiAgICAgICAgICAgIGlnbm9yZWNhc2UgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gbGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKGlnbm9yZWNhc2UpXHJcbiAgICAgICAgICAgICAgICBzID0gcy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBpZiAocyA9PSBhKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgIH0sXHJcblxyXG4gICAgZGVsRnJvbUFycmF5OiBmdW5jdGlvbiAobGlzdCwgYSkge1xyXG4gICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgICBpZiAobGlzdFtpXSA9PSBhKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICsrbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbjtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFBvc3QgZGF0YSB0byBhIHVybFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gcG9zdFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gdGhlIGRlc3RpbmF0aW9uIHVybCB0byB0byBiZSBwb3N0ZWQgdG9cclxuICAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBhcmdzIC0gdGhlIGRhdGEgdG8gYmUgcG9zdGVkXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXQgLSB0aGUgdGFyZ2V0IGZyYW1lXHJcbiAgICAqIEByZXR1cm5zIG51bGxcclxuICAgICovXHJcbiAgICBwb3N0OiBmdW5jdGlvbiAodXJsLCBhcmdzLCB0YXJnZXQpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImZvcm1cIiwgbnVsbCwgeyBkaXNwbGF5OiBcIm5vbmVcIiB9KTtcclxuXHJcbiAgICAgICAgc2NpbC5VdGlscy5yZW1vdmVBbGwodGhpcy5mb3JtKTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIGFyZ3MpIHtcclxuICAgICAgICAgICAgdmFyIGYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy5mb3JtLCBcInRleHRhcmVhXCIpO1xyXG4gICAgICAgICAgICBmLm5hbWUgPSBrO1xyXG4gICAgICAgICAgICBmLnZhbHVlID0gYXJnc1trXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy5mb3JtLm1ldGhvZCA9IFwicG9zdFwiO1xyXG4gICAgICAgIHRoaXMuZm9ybS5hY3Rpb24gPSB1cmw7XHJcbiAgICAgICAgdGhpcy5mb3JtLnN1Ym1pdCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBwb3N0SWZyYW1lOiBmdW5jdGlvbiAodXJsLCBhcmdzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9zdGZvcm0gPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5wb3N0Zm9ybSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImZvcm1cIiwgbnVsbCwgeyBkaXNwbGF5OiBcIm5vbmVcIiB9KTtcclxuXHJcbiAgICAgICAgZG9qby5pby5pZnJhbWUuc2VuZCh7XHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBmb3JtOiB0aGlzLmZvcm0sXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGFyZ3MsXHJcbiAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiA1LFxyXG4gICAgICAgICAgICBwcmV2ZW50Q2FjaGU6IHRydWUsXHJcbiAgICAgICAgICAgIGhhbmRsZUFzOiBcInRleHRcIixcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChkYXRhKSB7IH0sXHJcbiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24gKGRhdGEpIHsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBhbGVydDogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKHMubGVuZ3RoID4gMTAwMClcclxuICAgICAgICAgICAgcyA9IHMuc3Vic3RyKDAsIDEwMDApICsgXCIuLi5cIjtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5uYXRpdmVtb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQyKHMsIFwiSlNEcmF3Mi5FZGl0b3IgTWVzc2FnZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFsZXJ0KHMpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIERvd25sb2FkIGRhdGEgZnJvbSBhIHVybFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gZG93bmxvYWRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIHRoZSBkZXN0aW5hdGlvbiB1cmxcclxuICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIGRvd25sb2FkOiBmdW5jdGlvbiAodXJsLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID4gMClcclxuICAgICAgICAgICAgdXJsICs9IFwiJl9fdG09XCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHVybCArPSBcIj9fX3RtPVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuc3RhcnRzd2l0aCh1cmwsIFwiaHR0cDovL1wiKSkge1xyXG4gICAgICAgICAgICB2YXIganNvbnBBcmdzID0ge1xyXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICBjYWxsYmFja1BhcmFtTmFtZTogXCJjYWxsYmFja1wiLFxyXG4gICAgICAgICAgICAgICAgbG9hZDogY2FsbGJhY2ssXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7IGFsZXJ0KGVycm9yKTsgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBkb2pvLmlvLnNjcmlwdC5nZXQoanNvbnBBcmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciB4aHJBcmdzID0ge1xyXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVBczogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgICAgICBsb2FkOiBjYWxsYmFjayxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHsgLyphbGVydChlcnJvcik7Ki8gfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBkb2pvLnhockdldCh4aHJBcmdzKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBQZXJmb3JtIGFuIEFqYXggY2FsbFxyXG4gICAgKiA8cHJlPlxyXG4gICAgKiA8Yj5FeGFtcGxlOjwvYj5cclxuICAgICogICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAqICAgICAgICBhbGVydChyZXQubWVzc2FnZSk7XHJcbiAgICAqICAgIH07XHJcbiAgICAqICAgIHNjaWxsaWdlbmNlLmFqYXgoXCIvcGF0aC9hamF4LmFzaHhcIiwgY2FsbGJhY2ssIHsgdXNlcm5hbWU6IFwidG9tXCIsIHBhc3N3b3JkOiBcIjEyM1wiIH0pO1xyXG4gICAgKiA8L3ByZT5cclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGFqYXhcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIHRoZSBkZXN0aW5hdGlvbiB1cmxcclxuICAgICogQHBhcmFtIHtmdW5jdGlvbihkaWN0aW9uYXJ5KX0gY2FsbGJhY2sgLSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cclxuICAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBwYXJhbXMgLSBkYXRhIHRvIGJlIHNlbnRcclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIGFqYXg6IGZ1bmN0aW9uICh1cmwsIGNhbGxiYWNrLCBwYXJhbXMsIG9wdHMpIHtcclxuICAgICAgICBpZiAob3B0cyA9PSBudWxsKVxyXG4gICAgICAgICAgICBvcHRzID0ge307XHJcblxyXG4gICAgICAgIHZhciB4aHJBcmdzID0ge1xyXG4gICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgc3luYzogb3B0cy5zeW5jLFxyXG4gICAgICAgICAgICBoYW5kbGVBczogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHNjaWwuVXRpbHMuc3R1cGlkVG9tY2F0QnVnKHBhcmFtcyksXHJcbiAgICAgICAgICAgIHRpbWVvdXQ6IG9wdHMudGltZW91dCxcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0cy5zaG93cHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdHMub25FcnJvciAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIG9wdHMub25FcnJvcihkYXRhKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KGRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0cy5zaG93cHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hamF4Q2FsbGJhY2soZGF0YSwgY2FsbGJhY2ssIG9wdHMub25FcnJvciwgb3B0cy5pZ25vcmVzdWNjZWVkY2hlY2spO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjaWwuVXNlciAhPSBudWxsICYmIHNjaWwuVXNlci5vbkFqYXggIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICBzY2lsLlVzZXIub25BamF4KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAob3B0cy5zaG93cHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgIHNjaWwuUHJvZ3Jlc3Muc2hvdygob3B0cy5jYXB0aW9uID09IG51bGwgPyBcIkxvYWRpbmcgLi4uXCIgOiBvcHRzLmNhcHRpb24pLCBmYWxzZSwgKG9wdHMubWVzc2FnZSA9PSBudWxsID8gXCJDb21tdW5pY2F0aW5nIHdpdGggdGhlIHNlcnZlciAuLi5cIiA6IG9wdHMubWVzc2FnZSksIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMub25hamF4Y2FsbCAhPSBudWxsKVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLm9uYWpheGNhbGwoeGhyQXJncywgb3B0cyk7XHJcblxyXG4gICAgICAgIGlmIChvcHRzLmhlYWRlcnMgIT0gbnVsbClcclxuICAgICAgICAgICAgeGhyQXJncy5oZWFkZXJzID0gb3B0cy5oZWFkZXJzO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKG9wdHMudmVyYikge1xyXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkZWxcIjpcclxuICAgICAgICAgICAgICAgIGRvam8ueGhyRGVsZXRlKHhockFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwdXRcIjpcclxuICAgICAgICAgICAgICAgIGRvam8ueGhyUHV0KHhockFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJnZXRcIjpcclxuICAgICAgICAgICAgICAgIGRvam8ueGhyR2V0KHhockFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBkb2pvLnhoclBvc3QoeGhyQXJncyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHN0dXBpZFRvbWNhdEJ1ZzogZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiBwYXJhbXM7XHJcbiAgICB9LFxyXG5cclxuICAgIGFqYXh3YWl0OiBmdW5jdGlvbiAodXJsLCBwYXJhbXMpIHtcclxuICAgICAgICB2YXIgcmV0ID0gbnVsbDtcclxuICAgICAgICB2YXIgZnVuID0gZnVuY3Rpb24gKHIpIHsgcmV0ID0gcjsgfTtcclxuICAgICAgICB0aGlzLmFqYXgodXJsLCBmdW4sIHBhcmFtcywgeyBzeW5jOiB0cnVlIH0pO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBQZXJmb3JtIGFuIEpTT05QIGNhbGxcclxuICAgICogPHByZT5cclxuICAgICogPGI+RXhhbXBsZTo8L2I+XHJcbiAgICAqICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKHJldCkge1xyXG4gICAgKiAgICAgICAgYWxlcnQocmV0Lm1lc3NhZ2UpO1xyXG4gICAgKiAgICB9O1xyXG4gICAgKiAgICBzY2lsbGlnZW5jZS5hamF4KFwiaHR0cDovL290aGVyc2VydmVyL3BhdGgvYWpheC5hc2h4XCIsIGNhbGxiYWNrLCB7IHVzZXJuYW1lOiBcInRvbVwiLCBwYXNzd29yZDogXCIxMjNcIiB9KTtcclxuICAgICpcclxuICAgICogICAgLy8gY3Jvc3MgZG9tYWluIGNhbGwgdG8gcG9zdCBsYXJnZSBkYXRhXHJcbiAgICAqICAgIHZhciB1cmwgPSBcImh0dHA6Ly9zZXJ2ZXIvanNkcmF3L3NlcnZpY2UuYXNweD9jbWQ9XCI7XHJcbiAgICAqICAgIHZhciBqc2QgPSBKU0RyYXcuZ2V0KFwiZGl2MVwiKTtcclxuICAgICogICAgc2NpbC5VdGlscy5qc29ucCh1cmwgKyBcImpzZHJhdzJpbWdcIiwgZnVuY3Rpb24gKHJldCkge1xyXG4gICAgKiAgICAgICAgYWxlcnQocmV0LnNyYyk7XHJcbiAgICAqICAgIH0sIHsganNkcmF3OiBqc2QuZ2V0WG1sKCkgfSwgeyB4ZG9tYWludXJsOiB1cmwgKyBcInhkb21haW4ucG9zdGRhdGFcIiB9KTtcclxuICAgICogPC9wcmU+XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBqc29ucFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gdGhlIGRlc3RpbmF0aW9uIHVybFxyXG4gICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIHRoZSBjYWxsYmFjayBmdW5jdGlvblxyXG4gICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IHBhcmFtcyAtIGRhdGEgdG8gYmUgc2VudFxyXG4gICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICAqL1xyXG4gICAganNvbnA6IGZ1bmN0aW9uICh1cmwsIGNhbGxiYWNrLCBwYXJhbXMsIG9wdHMpIHtcclxuICAgICAgICBpZiAob3B0cyA9PSBudWxsKVxyXG4gICAgICAgICAgICBvcHRzID0ge307XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMgPT0gbnVsbClcclxuICAgICAgICAgICAgcGFyYW1zID0geyB3cmFwcGVyOiBcImpzb25wXCIgfTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHBhcmFtcy53cmFwcGVyID0gXCJqc29ucFwiO1xyXG5cclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKHVybCwgXCIvL1wiKSkge1xyXG4gICAgICAgICAgICB2YXIgcyA9ICh3aW5kb3cubG9jYXRpb24gKyBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKHMsIFwiaHR0cHM6XCIpKVxyXG4gICAgICAgICAgICAgICAgdXJsID0gXCJodHRwczpcIiArIHVybDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdXJsID0gXCJodHRwOlwiICsgdXJsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHAgPSB1cmwuaW5kZXhPZignPycpO1xyXG4gICAgICAgIGlmIChwIDwgMClcclxuICAgICAgICAgICAgdXJsICs9IFwiP1wiO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdXJsICs9IFwiJlwiO1xyXG4gICAgICAgIHVybCArPSBcIl9fanNkcmF3X3RpbWVzdGFtcF9fPVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgIGlmIChvcHRzLnNob3dwcm9ncmVzcylcclxuICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5zaG93KChvcHRzLmNhcHRpb24gPT0gbnVsbCA/IFwiTG9hZGluZyAuLi5cIiA6IG9wdHMuY2FwdGlvbiksIGZhbHNlLCAob3B0cy5tZXNzYWdlID09IG51bGwgPyBcIkNvbW11bmljYXRpbmcgd2l0aCB0aGUgc2VydmVyIC4uLlwiIDogb3B0cy5tZXNzYWdlKSwgZmFsc2UpO1xyXG5cclxuICAgICAgICBpZiAob3B0cy54ZG9tYWludXJsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5wb3N0WGRvbWFpbkRhdGEob3B0cy54ZG9tYWludXJsLCBmdW5jdGlvbiAoeGZpbGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmpzb25wKHVybCwgZnVuY3Rpb24gKHJldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLnNob3dwcm9ncmVzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXQpO1xyXG4gICAgICAgICAgICAgICAgfSwgeyBfeGZpbGVuYW1lOiB4ZmlsZW5hbWUgfSk7XHJcbiAgICAgICAgICAgIH0sIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIganNvbnBBcmdzID0ge1xyXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgICBjYWxsYmFja1BhcmFtTmFtZTogXCJjYWxsYmFja1wiLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogc2NpbC5VdGlscy5zdHVwaWRUb21jYXRCdWcocGFyYW1zKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLnNob3dwcm9ncmVzcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLm9uRXJyb3IgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5vbkVycm9yKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydChkYXRhLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMuc2hvd3Byb2dyZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2lsLlByb2dyZXNzLmhpZGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hamF4Q2FsbGJhY2soZGF0YSwgY2FsbGJhY2ssIG9wdHMub25FcnJvciwgb3B0cy5pZ25vcmVzdWNjZWVkY2hlY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHNjaWwuVXRpbHMub25qc29ucGNhbGwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMub25qc29ucGNhbGwoanNvbnBBcmdzKTtcclxuXHJcbiAgICAgICAgICAgIGRvam8uaW8uc2NyaXB0LmdldChqc29ucEFyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0WmluZGV4OiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHdoaWxlIChlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGUuc3R5bGUgIT0gbnVsbCAmJiBlLnN0eWxlLnpJbmRleCAhPSBcIlwiICYmIGUuc3R5bGUuekluZGV4ICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZS5zdHlsZS56SW5kZXgpO1xyXG4gICAgICAgICAgICBlID0gZS5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH0sXHJcblxyXG4gICAgb25BamF4Q2FsbGJhY2s6IG51bGwsXHJcbiAgICBhamF4Q2FsbGJhY2s6IGZ1bmN0aW9uIChkYXRhLCBjYWxsYmFjaywgb25FcnJvciwgaWdub3Jlc3VjY2VlZGNoZWNrKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IG51bGw7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcInZhciBvPVwiICsgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0ID0gbztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydChcIkVycm9yIHdoZW4gcGFyc2luZyBBamF4IHJlc3VsdHM6XFxuXCIgKyBlLm1lc3NhZ2UgKyBcIlxcblwiICsgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcclxuICAgICAgICAgICAgICAgIHJldCA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJVbmtub3duIHJldHVybiBmb3JtYXRcIik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLm9uQWpheENhbGxiYWNrICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHNjaWwuVXRpbHMub25BamF4Q2FsbGJhY2socmV0KSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZ25vcmVzdWNjZWVkY2hlY2sgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJldC5zdWNjZWVkKSB7XHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2socmV0LnJldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2NpbC5Vc2VyICE9IG51bGwgJiYgc2NpbC5Vc2VyLm5lZWRMb2dpbiAhPSBudWxsICYmIHNjaWwuVXNlci5uZWVkTG9naW4ocmV0KSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGlmIChvbkVycm9yICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9uRXJyb3IocmV0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQuZXJyY29kZSA9PSBcIk5vbmVcIilcclxuICAgICAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KHJldC5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hbGVydChcIltcIiArIChyZXQuZXJyY29kZSA9PSBudWxsID8gXCJFUlJPUlwiIDogcmV0LmVycmNvZGUpICsgXCJdOiBcIiArIHJldC5lcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFqYXhVcGxvYWRGaWxlOiBmdW5jdGlvbiAoZm9ybSwgdXJsLCBwYXJhbXMsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKHBhcmFtcyA9PSBudWxsKVxyXG4gICAgICAgICAgICBwYXJhbXMgPSB7fTtcclxuICAgICAgICBpZiAodXJsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndyYXBwZXI9dGV4dGFyZWFcIikgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhciBwID0gdXJsLmluZGV4T2YoJz8nKTtcclxuICAgICAgICAgICAgaWYgKHAgPiAwKVxyXG4gICAgICAgICAgICAgICAgdXJsICs9IFwiJndyYXBwZXI9dGV4dGFyZWFcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdXJsICs9IFwiP3dyYXBwZXI9dGV4dGFyZWFcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEkjMTIwMzZcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5fX19hamF4VXBsb2FkRmlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGRvam8uY29uZmlnLmRvam9CbGFua0h0bWxVcmwgPSBzY2lsLlV0aWxzLmltZ1NyYyhcImJsYW5rLmh0bWxcIik7XHJcbiAgICAgICAgICAgIGRvam8uaW8uaWZyYW1lLnNlbmQoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiBkb2pvLmNvbmZpZy5kb2pvQmxhbmtIdG1sVXJsLFxyXG4gICAgICAgICAgICAgICAgZm9ybTogZm9ybSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJnZXRcIixcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiA2MCxcclxuICAgICAgICAgICAgICAgIHByZXZlbnRDYWNoZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGhhbmRsZUFzOiBcInRleHRcIlxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5fX19hamF4VXBsb2FkRmlsZSA9PSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZG9qby5pby5pZnJhbWUuc2VuZCh7XHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBmb3JtOiBmb3JtLFxyXG4gICAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgICBjb250ZW50OiBwYXJhbXMsXHJcbiAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiA2MCxcclxuICAgICAgICAgICAgcHJldmVudENhY2hlOiB0cnVlLFxyXG4gICAgICAgICAgICBoYW5kbGVBczogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgc2NpbC5Qcm9ncmVzcy5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KGRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIHNjaWwuUHJvZ3Jlc3MuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hamF4Q2FsbGJhY2soZGF0YSwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNjaWwuUHJvZ3Jlc3Muc2hvdyhcIlVwbG9hZGluZ1wiLCBmYWxzZSwgXCJDb21tdW5pY2F0aW5nIHdpdGggdGhlIHNlcnZlciAuLi5cIiwgZmFsc2UpO1xyXG4gICAgfSxcclxuXHJcbiAgICBhamF4UG9zdEZpbGU6IGZ1bmN0aW9uIChmb3JtLCB1cmwsIHBhcmFtcywgY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAocGFyYW1zID09IG51bGwpXHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHt9O1xyXG4gICAgICAgIGlmICh1cmwudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid3JhcHBlcj10ZXh0YXJlYVwiKSA8IDApIHtcclxuICAgICAgICAgICAgdmFyIHAgPSB1cmwuaW5kZXhPZignPycpO1xyXG4gICAgICAgICAgICBpZiAocCA+IDApXHJcbiAgICAgICAgICAgICAgICB1cmwgKz0gXCImd3JhcHBlcj10ZXh0YXJlYVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB1cmwgKz0gXCI/d3JhcHBlcj10ZXh0YXJlYVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2pvLmlvLmlmcmFtZS5zZW5kKHtcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgIGZvcm06IGZvcm0sXHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhcmFtcyxcclxuICAgICAgICAgICAgdGltZW91dFNlY29uZHM6IDUsXHJcbiAgICAgICAgICAgIHByZXZlbnRDYWNoZTogdHJ1ZSxcclxuICAgICAgICAgICAgaGFuZGxlQXM6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAvL2Vycm9yOiBmdW5jdGlvbiAoZGF0YSkgeyBzY2lsLlV0aWxzLmFsZXJ0KGRhdGEubWVzc2FnZSk7IH0sXHJcbiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24gKGRhdGEpIHsgaWYgKGNhbGxiYWNrICE9IG51bGwpIGNhbGxiYWNrKGRhdGEpOyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlczogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICByZXR1cm4gSlNEcmF3Mi5MYW5ndWFnZS5yZXMocyk7XHJcbiAgICB9LFxyXG5cclxuICAgIFVwbG9hZEZpbGVEbGc6IHNjaWxsaWdlbmNlLmV4dGVuZChzY2lsbGlnZW5jZS5fYmFzZSwge1xyXG4gICAgICAgIGNhbGxiYWNrOiBudWxsLFxyXG4gICAgICAgIHVybDogbnVsbCxcclxuICAgICAgICBwYXJhbXM6IG51bGwsXHJcbiAgICAgICAgbXNnOiBudWxsLFxyXG4gICAgICAgIGNoZWNrZmlsZXM6IG51bGwsXHJcbiAgICAgICAgZGxnOiBudWxsLFxyXG4gICAgICAgIGJ0bjogbnVsbCxcclxuICAgICAgICB0Ym9keTogbnVsbCxcclxuICAgICAgICBmaWxlczogW10sXHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbiAobXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdmFyIGRpdiA9IEpzVXRpbHMuY3JlYXRlRWxlbWVudChudWxsLCBcImRpdlwiLCBcIjxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+PC9mb3JtPlwiKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtID0gZGl2LmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgIHRoaXMudGJvZHkgPSBKc1V0aWxzLmNyZWF0ZVRhYmxlKHRoaXMuZm9ybSwgbnVsbCwgbnVsbCwgeyBtYXJnaW46IFwiNnB4XCIsIHdpZHRoOiBcIjM1MHB4XCIgfSwgeyBhbGlnbjogXCJjZW50ZXJcIiB9KTtcclxuICAgICAgICAgICAgdmFyIHRyID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KHRoaXMudGJvZHksIFwidHJcIik7XHJcbiAgICAgICAgICAgIHRoaXMubXNnID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLm1zZy5jb2xTcGFuID0gMjtcclxuXHJcbiAgICAgICAgICAgIGlmIChtdWx0aXBsZSAhPSBudWxsICYmIG11bHRpcGxlID09IHRydWUpXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZSA9IDU7XHJcblxyXG4gICAgICAgICAgICB2YXIgbiA9IDE7XHJcbiAgICAgICAgICAgIGlmIChtdWx0aXBsZSAmJiBzY2lsLlV0aWxzLmlzSUUgJiYgc2NpbC5VdGlscy5pc0lFIDwgMTApXHJcbiAgICAgICAgICAgICAgICB2YXIgbiA9IG11bHRpcGxlID4gMSA/IG11bHRpcGxlIDogNTtcclxuXHJcbiAgICAgICAgICAgIHZhciBhcmdzID0geyBzaXplOiAyNiwgbmFtZTogXCJmaWxlXCIgfTtcclxuICAgICAgICAgICAgaWYgKG11bHRpcGxlICYmIG4gPT0gMSlcclxuICAgICAgICAgICAgICAgIGFyZ3MubXVsdGlwbGUgPSBcIm11bHRpcGxlXCI7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdHIgPSBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgXCJ0clwiKTtcclxuICAgICAgICAgICAgICAgIEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiLCBzY2lsLlV0aWxzLnJlcyhcIkZpbGVcIikgKyBcIjpcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW2ldID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiKSwgXCJmaWxlXCIsIG51bGwsIG51bGwsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2NpbC5Nb2JpbGVEYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB0ciA9IEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRib2R5LCBcInRyXCIpO1xyXG4gICAgICAgICAgICAgICAgSnNVdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIFwiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6bm93cmFwJz5cIiArIHNjaWwuVXRpbHMucmVzKFwiRnJvbSBNb2JpbGVcIikgKyBcIjo8L2Rpdj5cIiwgbnVsbCwgeyB2YWxpZ246IFwidG9wXCIgfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGQyID0gSnNVdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2JpbGVpbWFnZXMgPSBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodGQyLCBcImhpZGRlblwiLCBudWxsLCBudWxsLCB7IG5hbWU6IFwibW9iaWxlaW1hZ2VzXCIgfSk7XHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbih0ZDIsIHsgbGFiZWw6IFwiU2hvd1wiLCB0eXBlOiBcImFcIiwgb25jbGljazogZnVuY3Rpb24gKCkgeyBtZS5zaG93SW1hZ2VMaXN0KCk7IH0gfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlbGlzdGRpdiA9IEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0ZDIsIFwiZGl2XCIsIG51bGwsIHsgZGlzcGxheTogXCJub25lXCIgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlbGlzdCA9IHNjaWwuTW9iaWxlRGF0YS5jcmVhdGVJbWFnZUxpc3QodGhpcy5pbWFnZWxpc3RkaXYsIG11bHRpcGxlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHIgPSBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgXCJ0clwiLCBudWxsLCB7IGRpc3BsYXk6IFwibm9uZVwiIH0pO1xyXG4gICAgICAgICAgICBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiwgXCJQYXNzd29yZDpcIik7XHJcbiAgICAgICAgICAgIEpzVXRpbHMuY3JlYXRlRWxlbWVudChKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiksIFwicGFzc3dvcmRcIiwgbnVsbCwgbnVsbCwgeyBuYW1lOiBcImpzZHJhdy51cGxvYWQucGFzc3dvcmRcIiB9KTtcclxuICAgICAgICAgICAgdGhpcy5wYXNzd29yZFJvdyA9IHRyO1xyXG5cclxuICAgICAgICAgICAgSnNVdGlscy5jcmVhdGVFbGVtZW50KEpzVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRib2R5LCBcInRyXCIpLCBcInRkXCIsIFwiJm5ic3A7XCIpO1xyXG5cclxuICAgICAgICAgICAgdHIgPSBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgXCJ0clwiKTtcclxuICAgICAgICAgICAgSnNVdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmJ0biA9IEpzVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsIFwidGRcIiksIFwiYnV0dG9uXCIsIFwiPGltZyBzcmM9J1wiICsgc2NpbC5BcHAuaW1nU21hbGwoXCJzdWJtaXQucG5nXCIpICsgXCInIC8+XCIgKyBzY2lsLlV0aWxzLnJlcyhcIlVwbG9hZFwiKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRsZyA9IG5ldyBKU0RyYXcyLkRpYWxvZyhcIlVwbG9hZCBGaWxlXCIsIGRpdik7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2hvd0ltYWdlTGlzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbWFnZWxpc3RkaXYuc3R5bGUuZGlzcGxheSA9PSBcIm5vbmVcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZWxpc3RkaXYuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBzY2lsLk1vYmlsZURhdGEubGlzdEltYWdlcyh0aGlzLmltYWdlbGlzdCwgdGhpcy5wYXJhbXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZWxpc3RkaXYuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2hvdzogZnVuY3Rpb24gKGNhcHRpb24sIG1lc3NhZ2UsIHVybCwgY2FsbGJhY2ssIHBhcmFtcywgc2hvd3Bhc3N3b3JkLCBwb3N0b25seSwgY2hlY2tmaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRsZy5zaG93KGNhcHRpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnBvc3Rvbmx5ID0gcG9zdG9ubHk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tmaWxlcyA9IGNoZWNrZmlsZXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmltYWdlbGlzdGRpdiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlbGlzdGRpdi5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlbGlzdC5jbGVhcigpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZG9qby5jb25uZWN0KHRoaXMuYnRuLCBcIm9uY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHsgbWUuc2hvdzIoKTsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnRuID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uIChyZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJldCk7XHJcbiAgICAgICAgICAgICAgICBtZS5kbGcuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnVybCA9IHVybDtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBhc3N3b3JkUm93LnN0eWxlLmRpc3BsYXkgPSBzaG93cGFzc3dvcmQgPyBcIlwiIDogXCJub25lXCI7XHJcbiAgICAgICAgICAgIHRoaXMubXNnLmlubmVySFRNTCA9IG1lc3NhZ2U7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2hvdzI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9iaWxlaW1hZ2VzICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vYmlsZWltYWdlcy52YWx1ZSA9IHNjaWwuTW9iaWxlRGF0YS5nZXRTZWxlY3RlZEltYWdlcyh0aGlzLmltYWdlbGlzdCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3N0b25seSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpbGVuYW1lID0gdGhpcy5maWxlc1swXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJ1xcXFwnKTtcclxuICAgICAgICAgICAgICAgIGlmIChwID4gMClcclxuICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cihwICsgMSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gdGhpcy5wYXJhbXMgPT0gbnVsbCA/IHt9IDogc2NpbC5jbG9uZSh0aGlzLnBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICBhcmdzLl94ZmlsZW5hbWUgPSBpZCArIFwiX1wiICsgZmlsZW5hbWU7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIG1lID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMuYWpheFBvc3RGaWxlKHRoaXMuZm9ybSwgdGhpcy51cmwsIGFyZ3MsIGZ1bmN0aW9uICgpIHsgbWUuY2FsbGJhY2soYXJncy5feGZpbGVuYW1lKTsgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVzID0gdGhpcy5maWxlc1swXS5maWxlcztcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goZmlsZXNbaV0ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2ZpbGVzKGxpc3QsIGZ1bmN0aW9uIChvdmVyd3JpdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBzY2lsLmNsb25lKG1lLnBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mub3ZlcndyaXRlID0gb3ZlcndyaXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmFqYXhVcGxvYWRGaWxlKG1lLmZvcm0sIG1lLnVybCwgYXJncywgbWUuY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NpbC5VdGlscy5hamF4VXBsb2FkRmlsZShtZS5mb3JtLCBtZS51cmwsIG1lLnBhcmFtcywgbWUuY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSksXHJcblxyXG4gICAgcG9zdFhkb21haW5EYXRhOiBmdW5jdGlvbiAodXJsLCBjYWxsYmFjaywgZGF0YSkge1xyXG4gICAgICAgIHZhciBpZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHZhciBhcmdzID0gc2NpbC5jbG9uZShkYXRhKTtcclxuICAgICAgICBpZiAoYXJncyA9PSBudWxsKVxyXG4gICAgICAgICAgICBhcmdzID0ge307XHJcbiAgICAgICAgYXJncy5feGZpbGVuYW1lID0gaWQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnhkb21haW5mb3JtID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMueGRvbWFpbmZvcm0gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQuYm9keSwgXCJmb3JtXCIsIG51bGwsIHsgZGlzcGxheTogXCJub25lXCIgfSk7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hamF4UG9zdEZpbGUodGhpcy54ZG9tYWluZm9ybSwgdXJsLCBhcmdzLCBmdW5jdGlvbiAoKSB7IGlmIChjYWxsYmFjayAhPSBudWxsKSBjYWxsYmFjayhhcmdzLl94ZmlsZW5hbWUpOyB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFVwbG9hZCBhIGZpbGUgd2l0aCBBamF4XHJcbiAgICAqIDxwcmU+XHJcbiAgICAqIDxiPkV4YW1wbGU6PC9iPlxyXG4gICAgKiAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihyZXQpIHsgYWxlcnQocmV0Lm1lc3NhZ2UpOyB9O1xyXG4gICAgKiAgICBzY2lsLlV0aWxzLnVwbG9hZEZpbGUoXCJVcGxvYWRlIEZpbGVcIiwgXCJQbGVhc2UgdXBsb2FkIGF0dGFjaG1lbnRzXCIsIFwiL3VwbG9hZGUuYXNweFwiLCBjYWxsYmFjaywgeyBwcm9qZWN0OiBcIkhJVlwiIH0pO1xyXG4gICAgKiA8L3ByZT5cclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHVwbG9hZEZpbGVcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGNhcHRpb24gLSB0aGUgY2FwdGlvbiBvZiB1cGxvYWRpbmcgZGlhbG9nXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2UgYm9keSBvZiB1cGxvYWRpbmcgZGlhbG9nXHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSB0aGUgZGVzdGluYXRpb24gdXJsXHJcbiAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uXHJcbiAgICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gcGFyYW1zIC0gZGF0YSB0byBiZSBzZW50XHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gY2hrIC0gcmVzZXJ2ZWRcclxuICAgICogQHBhcmFtIHtib29sfSBtdWx0aXBsZSAtIGRhdGEgdG8gYmUgc2VudFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gc2hvd3Bhc3N3b3JkXHJcbiAgICAqIEBwYXJhbSB7Ym9vbH0gcG9zdG9ubHlcclxuICAgICogQHJldHVybnMgbnVsbFxyXG4gICAgKi9cclxuICAgIHVwbG9hZGZpbGVEbGc6IG51bGwsXHJcbiAgICB1cGxvYWRmaWxlRGxnMjogbnVsbCxcclxuICAgIHVwbG9hZEZpbGU6IGZ1bmN0aW9uIChjYXB0aW9uLCBtZXNzYWdlLCB1cmwsIGNhbGxiYWNrLCBwYXJhbXMsIGNoaywgbXVsdGlwbGUsIHNob3dwYXNzd29yZCwgcG9zdG9ubHksIGNoZWNrZmlsZXMpIHtcclxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZmlsZURsZzIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZmlsZURsZzIgPSBuZXcgc2NpbC5VdGlscy5VcGxvYWRGaWxlRGxnKHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZGZpbGVEbGcyLnNob3coY2FwdGlvbiwgbWVzc2FnZSwgdXJsLCBjYWxsYmFjaywgcGFyYW1zLCBzaG93cGFzc3dvcmQsIHBvc3Rvbmx5LCBjaGVja2ZpbGVzKTtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRmaWxlRGxnMi5jaGVjayA9IGNoaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGZpbGVEbGcgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZmlsZURsZyA9IG5ldyBzY2lsLlV0aWxzLlVwbG9hZEZpbGVEbGcoKTtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRmaWxlRGxnLnNob3coY2FwdGlvbiwgbWVzc2FnZSwgdXJsLCBjYWxsYmFjaywgcGFyYW1zLCBzaG93cGFzc3dvcmQsIHBvc3Rvbmx5LCBjaGVja2ZpbGVzKTtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRmaWxlRGxnLmNoZWNrID0gY2hrO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgdXBsb2FkRmlsZTI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgZGxnID0gdGhpcy51cGxvYWRmaWxlRGxnO1xyXG4gICAgICAgIHZhciBwYXJhbXMgPSBkbGcucGFyYW1zO1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWpheFVwbG9hZEZpbGUodGhpcy51cGxvYWRmaWxlRGxnLmZvcm0sIGRsZy51cmwsIHBhcmFtcyA9PSBudWxsID8ge30gOiBwYXJhbXMsIGRsZy5jYWxsYmFjayk7XHJcbiAgICB9LFxyXG5cclxuICAgIGllMnRvdWNoZXM6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdmFyIGxpc3QgPSBlLmdldFBvaW50ZXJMaXN0KCk7XHJcbiAgICAgICAgdmFyIHRvdWNoZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIHRvdWNoZXMucHVzaCh7IHBvaW50ZXJJZDogbGlzdFtpXS5wb2ludGVySWQsIGNsaWVudFg6IGxpc3RbaV0uY2xpZW50WCwgY2xpZW50WTogbGlzdFtpXS5jbGllbnRZLCB0YXJnZXQ6IGUudGFyZ2V0LCBidXR0b246IGUuYnV0dG9uIH0pO1xyXG4gICAgICAgIHRvdWNoZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb2ludGVySWQgLSBiLnBvaW50ZXJJZDsgfSk7XHJcbiAgICAgICAgZS50b3VjaGVzID0gdG91Y2hlcztcclxuICAgICAgICByZXR1cm4gZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0U2NyZWVuU2l6ZTogZnVuY3Rpb24gKHdpbikge1xyXG4gICAgICAgIGlmICh3aW4gPT0gbnVsbClcclxuICAgICAgICAgICAgd2luID0gd2luZG93O1xyXG4gICAgICAgIHZhciBzY3JvbGxSb290ID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCB3aW4uZG9jdW1lbnQuYm9keTtcclxuICAgICAgICB2YXIgdWlXaW5kb3cgPSB3aW4uZG9jdW1lbnQucGFyZW50V2luZG93IHx8IHdpbi5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3OiB1aVdpbmRvdy5pbm5lcldpZHRoIHx8IHNjcm9sbFJvb3QuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgICAgIGg6IHVpV2luZG93LmlubmVySGVpZ2h0IHx8IHNjcm9sbFJvb3QuY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYSBKU09OIG9iamVjdCBpbnRvIGEgc3RyaW5nXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB1cGxvYWRGaWxlXHJcbiAgICAqIEBwYXJhbSB7ZGljdGlvbmFyeX0gdiAtIHRoZSBpbnB1dCBqc29wIG9iamVjdFxyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGpzb24yc3RyOiBmdW5jdGlvbiAodiwgcmVhZGFibGUsIHJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIHF1b3QgPSByZXN0cmljdCA/IFwiXFxcIlwiIDogXCInXCI7XHJcblxyXG4gICAgICAgIGlmICh2ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcclxuICAgICAgICBpZiAodHlwZW9mICh2KSA9PSBcIm51bWJlclwiKVxyXG4gICAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICBpZiAodHlwZW9mICh2KSA9PSBcImJvb2xlYW5cIilcclxuICAgICAgICAgICAgcmV0dXJuIHYgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcclxuICAgICAgICBpZiAodHlwZW9mICh2KSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gdi5yZXBsYWNlKC9cXHIvZywgXCJcXFxcclwiKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKTtcclxuICAgICAgICAgICAgaWYgKHF1b3QgPT0gXCJcXFwiXCIpXHJcbiAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKC9cXFwiL2csIFwiXFxcXFxcXCJcIik7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoL1xcJy9nLCBcIlxcXFwnXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVvdCArIHMgKyBxdW90O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mICh2KSA9PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgIGlmICh2Lmxlbmd0aCAhPSBudWxsKSB7IC8vIGFycmF5XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IChyZWFkYWJsZSA/IFwiWyBcIiA6IFwiW1wiKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICAgICAgICBzICs9IChpID4gMCA/IChyZWFkYWJsZSA/IFwiLCBcIiA6IFwiLFwiKSA6IFwiXCIpICsgdGhpcy5qc29uMnN0cih2W2ldLCByZWFkYWJsZSwgcmVzdHJpY3QpO1xyXG4gICAgICAgICAgICAgICAgcyArPSAocmVhZGFibGUgPyBcIiBdXCIgOiBcIl1cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBzID0gKHJlYWRhYmxlID8gXCJ7IFwiIDogXCJ7XCIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGogPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiB2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gbnVsbCB8fCBrID09ICcnIHx8IHZba10gPT0gbnVsbCB8fCBrLnN1YnN0cigwLCAxKSA9PSAnXycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKytqID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5zdWJzdHIocy5sZW5ndGggLSAxLCAxKSA9PSBcIn1cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gKHJlYWRhYmxlID8gXCIsXFxyXFxuXCIgOiBcIixcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gKHJlYWRhYmxlID8gXCIsIFwiIDogXCIsXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN0cmljdCAmJiAvXlthLXp8X10rWzAtOXxhLXp8X117MCwxMDAwfSQvLnRlc3QoaykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gaztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gcXVvdCArIGsgKyBxdW90O1xyXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gKHJlYWRhYmxlID8gXCI6IFwiIDogXCI6XCIpICsgdGhpcy5qc29uMnN0cih2W2tdLCByZWFkYWJsZSwgcmVzdHJpY3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcyArPSAocmVhZGFibGUgPyBcIiB9XCIgOiBcIn1cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJudWxsXCI7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE1heFppbmRleDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB6MSA9IHRoaXMuZ2V0TWF4WmluZGV4MihcImRpdlwiKTtcclxuICAgICAgICB2YXIgejIgPSB0aGlzLmdldE1heFppbmRleDIoXCJpZnJhbWVcIik7XHJcbiAgICAgICAgdmFyIHozID0gdGhpcy5nZXRNYXhaaW5kZXgyKFwidGFibGVcIik7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWF4KHoxLCB6MiksIHozKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TWF4WmluZGV4MjogZnVuY3Rpb24gKHRhZykge1xyXG4gICAgICAgIC8vIEkjMTE4NjlcclxuICAgICAgICB2YXIgemluZGV4ID0gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPT0gXCJtY2UtZnVsbHNjcmVlblwiID8gMTAxIDogMTtcclxuICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChsaXN0W2ldLnN0eWxlID09IG51bGwgfHwgbGlzdFtpXS5zdHlsZS5kaXNwbGF5ID09IFwibm9uZVwiKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIHZhciB6ID0gbGlzdFtpXS5zdHlsZS56SW5kZXg7XHJcbiAgICAgICAgICAgIGlmICh6ICE9IG51bGwgJiYgeiAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgayA9IHBhcnNlSW50KHopO1xyXG4gICAgICAgICAgICAgICAgaWYgKGsgPiB6aW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgemluZGV4ID0gaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gemluZGV4O1xyXG4gICAgfSxcclxuXHJcbiAgICBpc0FsbFBhcmVudFZpc2libGU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgaWYgKGUgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICB3aGlsZSAoZSAhPSBudWxsICYmIGUuc3R5bGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoZS5zdHlsZS5kaXNwbGF5ID09IFwibm9uZVwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICBlID0gZS5wYXJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYW4gWE1MIG9iamVjdCBpbnRvIEpTT04gb2JqZWN0XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSB4bWwySnNvblxyXG4gICAgKiBAcGFyYW0ge1hNTEVsZW1lbnR9IHBhcmVudCAtIHRoZSBwYXJlbnQgWE1MIGVsZW1lbnRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIHRoZSB4bWwgdGFnIG5hbWUgdG8gYmUgbG9va2VkIHVwXHJcbiAgICAqIEByZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdFxyXG4gICAgKi9cclxuICAgIHhtbDJKc29uOiBmdW5jdGlvbiAocGFyZW50LCB0YWcpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHZhciBsaXN0ID0gcGFyZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZyk7XHJcbiAgICAgICAgaWYgKGxpc3QgPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgZSA9IGxpc3RbaV07XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0geyBfZTogZSB9O1xyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGUuYXR0cmlidXRlcy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGF0ID0gZS5hdHRyaWJ1dGVzW2tdO1xyXG4gICAgICAgICAgICAgICAgaXRlbVthdC5uYW1lXSA9IGF0LnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYSBKU09OIG9qZWN0IGFycmF5IGludG8gYW4geG1sIHN0cmluZ1xyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30ganNvbkxpc3QyWG1sXHJcbiAgICAqIEBwYXJhbSB7YXJyYXl9IGxpc3QgLSB0aGUgaW5wdXQgYXJyYXkgb2Ygb2JqZWN0c1xyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gdGhlIHhtbCB0YWcgbmFtZSB0byBiZSB3cmFwcGVkIGluIHhtbFxyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGpzb25MaXN0MlhtbDogZnVuY3Rpb24gKGxpc3QsIHRhZykge1xyXG4gICAgICAgIGlmIChsaXN0ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICB2YXIgcyA9IFwiXCI7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICBzICs9IHRoaXMuanNvbjJYbWwobGlzdFtpXSwgdGFnKTtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbnZlcnQgYSBKU09OIG9qZWN0IGludG8gYW4geG1sIHN0cmluZ1xyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30ganNvbjJYbWxcclxuICAgICogQHBhcmFtIHtkaWN0aW9uYXJ5fSBkaWN0IC0gdGhlIGlucHV0IG9iamVjdFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gdGhlIHhtbCB0YWcgbmFtZSB0byBiZSB3cmFwcGVkIGluIHhtbFxyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gaW5uZXJYbWwgLSB0aGUgaW5uZXIgeG1sIHRvIGJlIHBsYWNlZCBpbiB0aGUgeG1sIGVsZW1lbnRcclxuICAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgICovXHJcbiAgICBqc29uMlhtbDogZnVuY3Rpb24gKGRpY3QsIHRhZywgaW5uZXJYbWwpIHtcclxuICAgICAgICBpZiAoZGljdCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICAgICAgdmFyIHMgPSBcIjxcIiArIHRhZztcclxuICAgICAgICBmb3IgKHZhciBrIGluIGRpY3QpIHtcclxuICAgICAgICAgICAgdmFyIHYgPSBkaWN0W2tdO1xyXG4gICAgICAgICAgICBpZiAodiA9PSBudWxsIHx8IHR5cGVvZiAodikgPT0gXCJzdHJpbmdcIiAmJiB2ID09IFwiXCIpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgKHYpO1xyXG4gICAgICAgICAgICBpZiAodHlwZSAhPSBcIm9iamVjdFwiICYmIHR5cGUgIT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgICAgICAgICAgcyArPSBcIiBcIiArIGsgKyBcIj1cXFwiXCIgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKGRpY3Rba10pICsgXCJcXFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbm5lclhtbCAhPSBudWxsICYmIGlubmVyWG1sICE9IFwiXCIpXHJcbiAgICAgICAgICAgIHMgKz0gXCI+XCIgKyBpbm5lclhtbCArIFwiPC9cIiArIHRhZyArIFwiPlwiO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcyArPSBcIi8+XCI7XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBNZXJnZSB0d28gYXJyYXlzXHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBqb2luQXJyYXlcclxuICAgICogQHBhcmFtIHthcnJheX0gbGlzdDEgLSB0aGUgZmlyc3QgYXJyYXlcclxuICAgICogQHBhcmFtIHthcnJheX0gbGlzdDIgLSB0aGUgc2Vjb25kIGFycmF5XHJcbiAgICAqIEByZXR1cm5zIGEgbmV3IGFycmF5XHJcbiAgICAqL1xyXG4gICAgam9pbkFycmF5OiBmdW5jdGlvbiAobGlzdDEsIGxpc3QyKSB7XHJcbiAgICAgICAgaWYgKGxpc3QxID09IG51bGwgJiYgbGlzdDIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgZWxzZSBpZiAobGlzdDEgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIGxpc3QyO1xyXG4gICAgICAgIGVsc2UgaWYgKGxpc3QyID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBsaXN0MTtcclxuXHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgbGlzdDEgPT0gXCJzdHJpbmdcIiB8fCBsaXN0MS5sZW5ndGggPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXQucHVzaChsaXN0MSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QxLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICAgICAgcmV0LnB1c2gobGlzdDFbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGxpc3QyID09IFwic3RyaW5nXCIgfHwgbGlzdDIubGVuZ3RoID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0LnB1c2gobGlzdDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Mi5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgICAgIHJldC5wdXNoKGxpc3QyW2ldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgaW5uZXIgeG1sIG9mIGFuIHhtbCBlbGVtZW50XHJcbiAgICAqIEBmdW5jdGlvbiB7c3RhdGljfSBnZXRJbm5lclhtbFxyXG4gICAgKiBAcGFyYW0ge1htbEVsZW1lbnR9IGVsZW1lbnRcclxuICAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgICovXHJcbiAgICBnZXRJbm5lclhtbDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICBpZiAoZSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChlLmRvY3VtZW50RWxlbWVudCAhPSBudWxsKVxyXG4gICAgICAgICAgICBlID0gZS5kb2N1bWVudEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChlLmlubmVyWE1MKVxyXG4gICAgICAgICAgICByZXR1cm4gZS5pbm5lclhNTDtcclxuXHJcbiAgICAgICAgaWYgKGUueG1sKVxyXG4gICAgICAgICAgICByZXR1cm4gZS54bWw7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgWE1MU2VyaWFsaXplciAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gXCJcIjtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgICAgICBzICs9IChuZXcgWE1MU2VyaWFsaXplcigpKS5zZXJpYWxpemVUb1N0cmluZyhlLmNoaWxkTm9kZXNbaV0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRJbm5lclRleHQ6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgaWYgKGUgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZSAhPSBudWxsICYmIGUuZG9jdW1lbnRFbGVtZW50ICE9IG51bGwpXHJcbiAgICAgICAgICAgIGUgPSBlLmRvY3VtZW50RWxlbWVudDtcclxuICAgICAgICByZXR1cm4gc2NpbC5VdGlscy50cmltKGUuaW5uZXJUZXh0IHx8IGUudGV4dENvbnRlbnQgfHwgZS50ZXh0KTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0Q2hpbGRYbWxFbGVtZW50czogZnVuY3Rpb24gKGUsIHRhZykge1xyXG4gICAgICAgIGlmIChlICE9IG51bGwgJiYgZS5kb2N1bWVudEVsZW1lbnQgIT0gbnVsbClcclxuICAgICAgICAgICAgZSA9IGUuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgIGlmIChlID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKGUuY2hpbGROb2Rlc1tpXS50YWdOYW1lID09IHRhZylcclxuICAgICAgICAgICAgICAgIHJldC5wdXNoKGUuY2hpbGROb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9LFxyXG5cclxuICAgIG51bTJsZXR0ZXI6IGZ1bmN0aW9uIChpLCBsb3dlcmNhc2UpIHtcclxuICAgICAgICB2YXIgcyA9IFwiXCI7XHJcbiAgICAgICAgd2hpbGUgKGkgPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gKGkgLSAxKSAlIDI2O1xyXG4gICAgICAgICAgICBzID0gU3RyaW5nLmZyb21DaGFyQ29kZShjICsgKGxvd2VyY2FzZSA/IDk3IDogNjUpKSArIHM7XHJcbiAgICAgICAgICAgIGkgPSAoaSAtIGMgLSAxKSAvIDI2O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH0sXHJcblxyXG4gICAgaXNJbWc6IGZ1bmN0aW9uIChleHQpIHtcclxuICAgICAgICByZXR1cm4gZXh0ID09IFwiZ2lmXCIgfHwgZXh0ID09IFwicG5nXCIgfHwgZXh0ID09IFwianBnXCIgfHwgZXh0ID09IFwianBlZ1wiIHx8IGV4dCA9PSBcInRpZlwiIHx8IGV4dCA9PSBcInRpZmZcIiB8fCBleHQgPT0gXCJibXBcIjtcclxuICAgIH0sXHJcblxyXG4gICAgaXNPZmZpY2VGaWxlOiBmdW5jdGlvbiAoZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIGV4dCA9PSBcImRvY1wiIHx8IGV4dCA9PSBcImRvY3hcIiB8fCBleHQgPT0gXCJydGZcIiB8fCBleHQgPT0gXCJwcHRcIiB8fCBleHQgPT0gXCJwcHR4XCIgfHwgZXh0ID09IFwieGxzXCIgfHwgZXh0ID09IFwieGxzeFwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc1BERjogZnVuY3Rpb24gKGV4dCkge1xyXG4gICAgICAgIHJldHVybiBleHQgPT0gXCJwZGZcIjtcclxuICAgIH0sXHJcblxyXG4gICAgaXNTcGVjdHJhRmlsZTogZnVuY3Rpb24gKGV4dCkge1xyXG4gICAgICAgIHJldHVybiBleHQgPT0gXCJqZHhcIjtcclxuICAgIH0sXHJcblxyXG4gICAgaXNDaGVtRmlsZTogZnVuY3Rpb24gKGV4dCkge1xyXG4gICAgICAgIHJldHVybiBleHQgPT0gXCJjZHhcIiB8fCBleHQgPT0gXCJjZHhtbFwiIHx8IGV4dCA9PSBcImpzZFwiIHx8IGV4dCA9PSBcImpzZHJhd1wiIHx8IGV4dCA9PSBcIm1vbFwiIHx8IGV4dCA9PSBcInNkZlwiIHx8IGV4dCA9PSBcIm1vbDJcIiB8fCBleHQgPT0gXCJjbWxcIiB8fFxyXG4gICAgICAgIGV4dCA9PSBcInNrY1wiIHx8IGV4dCA9PSBcInRnZlwiIHx8IGV4dCA9PSBcIm1ydlwiIHx8IGV4dCA9PSBcInJ4blwiIHx8IGV4dCA9PSBcInJkZlwiIHx8IGV4dCA9PSBcImhlbG1cIiB8fCBleHQgPT0gXCJ4aGVsbVwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRGaWxlRXh0OiBmdW5jdGlvbiAoZmlsZW5hbWUpIHtcclxuICAgICAgICBpZiAoZmlsZW5hbWUgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdmFyIHAgPSBmaWxlbmFtZSA9PSBudWxsID8gLTEgOiBmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgIGlmIChwIDw9IDApXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHIocCArIDEpO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc0NoaWxkT2Y6IGZ1bmN0aW9uIChlLCBwYXJlbnQpIHtcclxuICAgICAgICBpZiAocGFyZW50ID09IG51bGwgfHwgZSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIHdoaWxlIChlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGUucGFyZW50Tm9kZSA9PSBwYXJlbnQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgZSA9IGUucGFyZW50Tm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRFbGVtZW50czogZnVuY3Rpb24gKHBhcmVudCwgbmFtZSwgaWdub3JlY2FzZSkge1xyXG4gICAgICAgIHZhciByZXQgPSBbXTtcclxuICAgICAgICBpZiAocGFyZW50ICE9IG51bGwgJiYgcGFyZW50LmNoaWxkTm9kZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHBhcmVudC5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PSBuYW1lIHx8IGlnbm9yZWNhc2UgJiYgYS50YWdOYW1lICE9IG51bGwgJiYgbmFtZSAhPSBudWxsICYmIGEudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09IG5hbWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgICAgICAgICByZXQucHVzaChhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRGaXJzdEVsZW1lbnQ6IGZ1bmN0aW9uIChwYXJlbnQsIG5hbWUpIHtcclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgaWYgKHBhcmVudCAhPSBudWxsICYmIHBhcmVudC5jaGlsZE5vZGVzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGEgPSBwYXJlbnQuY2hpbGROb2Rlc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChuYW1lID09IG51bGwgJiYgYS50YWdOYW1lICE9IG51bGwgfHwgbmFtZSAhPSBudWxsICYmIGEudGFnTmFtZSA9PSBuYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICBwYXJzZUluZGV4OiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmIChzID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHZhciBzMiA9IHMucmVwbGFjZSgvWzAtOV0rJC8sIFwiXCIpO1xyXG4gICAgICAgIGlmIChzMiA9PSBzKVxyXG4gICAgICAgICAgICByZXR1cm4geyBwcmVmaXg6IHMyLCBpbmRleDogbnVsbCB9O1xyXG4gICAgICAgIHJldHVybiB7IHByZWZpeDogczIsIGluZGV4OiBwYXJzZUludChzLnN1YnN0cihzMi5sZW5ndGgpKSB9O1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVBcnJheUl0ZW06IGZ1bmN0aW9uIChsaXN0LCBpdGVtKSB7XHJcbiAgICAgICAgdmFyIHAgPSBzY2lsLlV0aWxzLmluZGV4T2YobGlzdCwgaXRlbSk7XHJcbiAgICAgICAgaWYgKHAgPCAwKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgbGlzdC5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlbW92ZUFycmF5SXRlbXM6IGZ1bmN0aW9uIChsaXN0LCBpdGVtcykge1xyXG4gICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZW1vdmVBcnJheUl0ZW0obGlzdCwgaXRlbXNbaV0pKVxyXG4gICAgICAgICAgICAgICAgKytuO1xyXG4gICAgICAgIHJldHVybiBuO1xyXG4gICAgfSxcclxuXHJcbiAgICBtb3ZlVG9TY3JlZW46IGZ1bmN0aW9uICh4LCB5LCBlLCBsZWZ0KSB7XHJcbiAgICAgICAgdmFyIGQgPSBkb2pvLndpbmRvdy5nZXRCb3goKTtcclxuICAgICAgICBpZiAoeCArIGUub2Zmc2V0V2lkdGggPiBkLmwgKyBkLncpIHtcclxuICAgICAgICAgICAgaWYgKGxlZnQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHggPSBsZWZ0IC0gZS5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgeCA9IGQubCArIGQudyAtIGUub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh4IDwgMClcclxuICAgICAgICAgICAgeCA9IDA7XHJcblxyXG4gICAgICAgIGlmICh5ICsgZS5vZmZzZXRIZWlnaHQgPiBkLnQgKyBkLmgpXHJcbiAgICAgICAgICAgIHkgPSBkLnQgKyBkLmggLSBlLm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAoeSA8IDApXHJcbiAgICAgICAgICAgIHkgPSAwO1xyXG5cclxuICAgICAgICBlLnN0eWxlLmxlZnQgPSB4ICsgXCJweFwiO1xyXG4gICAgICAgIGUuc3R5bGUudG9wID0geSArIFwicHhcIjtcclxuICAgIH0sXHJcblxyXG4gICAgdW5zZWxlY3RhYmxlOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGUub25zZWxlY3RzdGFydCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xyXG4gICAgICAgIGUuc2V0QXR0cmlidXRlKFwidW5zZWxlY3RhYmxlXCIsIFwib25cIik7XHJcbiAgICAgICAgZG9qby5zdHlsZShlLCB7XHJcbiAgICAgICAgICAgIHdlYmtpdFRvdWNoQ2FsbG91dDogXCJub25lXCIsXHJcbiAgICAgICAgICAgIHdlYmtpVXNlckRlbGVjdDogXCJub25lXCIsXHJcbiAgICAgICAgICAgIGtodG1sVXNlclNlbGVjdDogXCJub25lXCIsXHJcbiAgICAgICAgICAgIE1velVzZXJTZWxlY3Q6IFwibm9uZVwiLFxyXG4gICAgICAgICAgICBtc1VzZXJTZWxlY3Q6IFwibm9uZVwiLFxyXG4gICAgICAgICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBsZXR0ZXIybnVtOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG5cclxuICAgICAgICB2YXIgcmV0ID0gMDtcclxuICAgICAgICBzID0gcy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHMuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MClcclxuICAgICAgICAgICAgICAgIHJldCA9IHJldCAqIDI2ICsgKGMgLSA2NSArIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgbnVtMmxldHRlcjogZnVuY3Rpb24gKGlfMWJhc2VkLCBsb3dlcmNhc2UpIHtcclxuICAgICAgICB2YXIgcyA9IFwiXCI7XHJcbiAgICAgICAgd2hpbGUgKGlfMWJhc2VkID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IChpXzFiYXNlZCAtIDEpICUgMjY7XHJcbiAgICAgICAgICAgIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMgKyAobG93ZXJjYXNlID8gOTcgOiA2NSkpICsgcztcclxuICAgICAgICAgICAgaV8xYmFzZWQgPSAoaV8xYmFzZWQgLSBjIC0gMSkgLyAyNjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGNvbm5lY3Q6IGZ1bmN0aW9uIChlbGVtZW50LCBldmVudCwgZnVuKSB7XHJcbiAgICAgICAgcmV0dXJuIGRvam8uY29ubmVjdChlbGVtZW50LCBldmVudCwgZnVuKTtcclxuICAgIH0sXHJcblxyXG4gICAgYXJyYXkyc3RyOiBmdW5jdGlvbiAobGlzdCwgc2VwKSB7XHJcbiAgICAgICAgaWYgKGxpc3QgPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICAgICAgdmFyIHMgPSBcIlwiO1xyXG4gICAgICAgIGlmIChzZXAgPT0gbnVsbClcclxuICAgICAgICAgICAgc2VwID0gJywnO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApXHJcbiAgICAgICAgICAgICAgICBzICs9IHNlcDtcclxuICAgICAgICAgICAgaWYgKGxpc3RbaV0gIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHMgKz0gbGlzdFtpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzRGljdEVtcHR5OiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgaWYgKG9iaiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIG9iailcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXREaWN0VmFsdWVzOiBmdW5jdGlvbiAoZGljdCwgbGlzdCkge1xyXG4gICAgICAgIGlmIChkaWN0ID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBpZiAobGlzdCA9PSBudWxsKVxyXG4gICAgICAgICAgICBsaXN0ID0gW107XHJcbiAgICAgICAgZWxzZSBpZiAobGlzdCA9PSB0cnVlKVxyXG4gICAgICAgICAgICBsaXN0ID0gW1wiXCJdO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBrIGluIGRpY3QpXHJcbiAgICAgICAgICAgIGxpc3QucHVzaChkaWN0W2tdKTtcclxuICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RGljdEtleXM6IGZ1bmN0aW9uIChkaWN0LCBsaXN0KSB7XHJcbiAgICAgICAgaWYgKGRpY3QgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmIChsaXN0ID09IG51bGwpXHJcbiAgICAgICAgICAgIGxpc3QgPSBbXTtcclxuICAgICAgICBlbHNlIGlmIChsaXN0ID09IHRydWUpXHJcbiAgICAgICAgICAgIGxpc3QgPSBbXCJcIl07XHJcblxyXG4gICAgICAgIGZvciAodmFyIGsgaW4gZGljdClcclxuICAgICAgICAgICAgbGlzdC5wdXNoKGspO1xyXG4gICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXREaWN0S2V5QnlWYWx1ZTogZnVuY3Rpb24gKGRpY3QsIHYpIHtcclxuICAgICAgICBpZiAoZGljdCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICBmb3IgKHZhciBrIGluIGRpY3QpIHtcclxuICAgICAgICAgICAgaWYgKGRpY3Rba10gPT0gdilcclxuICAgICAgICAgICAgICAgIHJldHVybiBrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0RW52OiBmdW5jdGlvbiAoZW52KSB7XHJcbiAgICAgICAgaWYgKGVudiA9PSBudWxsIHx8IGVudiA9PSBcIlwiKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBzY2lsLlV0aWxzLmltZ1NyYyhcImltZy9cIiArIGVudiArIFwiLmdpZlwiLCB0cnVlKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSBcIm5vLXJlcGVhdFwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBzb3VuZDogZnVuY3Rpb24gKHdhdikge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSUUgJiYgdGhpcy5pc0lFIDwgOSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fX3NvdW5kID09IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX19zb3VuZCA9IHRoaXMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImF1ZGlvXCIsIG51bGwsIHsgZGlzcGxheTogXCJub25lXCIgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX19zb3VuZC5zcmMgIT0gd2F2KVxyXG4gICAgICAgICAgICB0aGlzLl9fc291bmQuc3JjID0gd2F2O1xyXG4gICAgICAgIHRoaXMuX19zb3VuZC5wbGF5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVzY2FwZUh0bWw6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICB0ZXh0V2lkdGg6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbCB8fCBzLmxlbmd0aCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuXHJcbiAgICAgICAgdmFyIHN1bSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAyNTUpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gMjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgKytzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9LFxyXG5cclxuICAgIGFyZUxpc3RFcTogZnVuY3Rpb24gKHgsIHkpIHtcclxuICAgICAgICBpZiAoeCA9PSB5KVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoeCA9PSBudWxsICYmIHkgIT0gbnVsbCB8fCB4ICE9IG51bGwgJiYgeSA9PSBudWxsIHx8IHgubGVuZ3RoICE9IHkubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmICh4W2ldICE9IHlbaV0pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBhcmVEaWN0RXE6IGZ1bmN0aW9uIChtYWluLCB0bykge1xyXG4gICAgICAgIGlmIChtYWluID09IHRvKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAobWFpbiA9PSBudWxsIHx8IHRvID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIG1haW4pIHtcclxuICAgICAgICAgICAgdmFyIHggPSBtYWluW2tdO1xyXG4gICAgICAgICAgICB2YXIgeSA9IHRvW2tdO1xyXG4gICAgICAgICAgICBpZiAoISh4ID09IHkgfHwgeCA9PSBudWxsICYmIHkgPT0gXCJcIiB8fCB4ID09IFwiXCIgJiYgeSA9PSBudWxsKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIHNwbGl0U3RyOiBmdW5jdGlvbiAocywgc2VwYXJhdG9yKSB7XHJcbiAgICAgICAgaWYgKHMgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciByZXQgPSBbXTtcclxuICAgICAgICB2YXIgc3MgPSBzLnNwbGl0KHNlcGFyYXRvcik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgICAgcmV0LnB1c2godGhpcy50cmltKHNzW2ldKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNFbXB0eVN0cjogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc051bGxPckVtcHR5KHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICByZWdGaW5kQWxsTWF0Y2hlczogZnVuY3Rpb24gKHMsIHBhdHRlcm4sIHN0YXJ0KSB7XHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGlmIChzID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiByZXQ7XHJcblxyXG4gICAgICAgIGlmIChzdGFydCA+IDApXHJcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cihzdGFydCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcblxyXG4gICAgICAgIHZhciBtO1xyXG4gICAgICAgIHZhciBzdCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKChtID0gcGF0dGVybi5leGVjKHMpKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHZhciBwID0gbS5pbmRleDtcclxuICAgICAgICAgICAgdmFyIHcgPSBtICsgXCJcIjtcclxuICAgICAgICAgICAgcmV0LnB1c2goeyBzdGFydDogc3QgKyBwICsgc3RhcnQsIHN0cjogdyB9KTtcclxuXHJcbiAgICAgICAgICAgIHN0ICs9IHAgKyB3Lmxlbmd0aDtcclxuICAgICAgICAgICAgcyA9IHMuc3Vic3RyKHAgKyB3Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfSxcclxuXHJcbiAgICBpc051bWJlcjogZnVuY3Rpb24gKHMsIGFsbG93b3BlcmF0b3IpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChzKSA9PSBcIm51bWJlclwiKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIHZhciBwID0gcy5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgaWYgKHAgPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBpID0gcy5pbmRleE9mKCcsJyk7XHJcbiAgICAgICAgICAgIGlmIChpID4gMCAmJiBpIDwgcClcclxuICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoL1ssXS9nLCAnJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJIzExMDg2XHJcbiAgICAgICAgaWYgKGFsbG93b3BlcmF0b3IpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKFwiXls+fDx84omlfOKJpF0/WyBdezAsNTB9Wy1dP1swLTldKyhbXFwuXVswLTldezAsNTB9KT8oW2V8RV1bLXwrXVswLTldKyk/KFsgXXswLDUwfVvCsV1bMC05XXswLDUwfShbXFwuXVswLTldezAsNTB9KT8pPyRcIikudGVzdChzICsgXCJcIik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHMpO1xyXG4gICAgfSxcclxuXHJcbiAgICBodG1sRGVjb2RlOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgICAgICAgIHJldHVybiBzO1xyXG4gICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZS5pbm5lckhUTUwgPSBzO1xyXG4gICAgICAgIHJldHVybiBlLmNoaWxkTm9kZXMubGVuZ3RoID09PSAwID8gXCJcIiA6IGUuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGh0bWwyVGV4dDogZnVuY3Rpb24gKGh0bWwpIHtcclxuICAgICAgICBpZiAodGhpcy5pc051bGxPckVtcHR5KGh0bWwpKVxyXG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcclxuICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGUuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgICByZXR1cm4gZS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCA/IFwiXCIgOiB0aGlzLmdldElubmVyVGV4dChlKTtcclxuICAgIH0sXHJcblxyXG4gICAgcGFyc2VOdW1iZXI6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgdmFyIG4gPSBzID09IG51bGwgPyBOYU4gOiBwYXJzZUZsb2F0KHMpO1xyXG4gICAgICAgIHJldHVybiBpc05hTihuKSA/IG51bGwgOiBuO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogVGVzdCBpZiBpdCBpcyBudWxsIG9yIGVtcHR5IHN0cmluZ1xyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gaXNOdWxsT3JFbXB0eVxyXG4gICAgKiBAcGFyYW0ge3Zhcn0gcyAtIHZhciB0byBiZSB0ZXN0ZWRcclxuICAgICogQHJldHVybnMgYm9vbFxyXG4gICAgKi9cclxuICAgIGlzTnVsbE9yRW1wdHk6IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcmV0dXJuIHMgPT0gbnVsbCB8fCB0eXBlb2YgKHMpID09IFwic3RyaW5nXCIgJiYgcyA9PSBcIlwiO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogVGVzdCBpZiBpdCBpcyBub3QgYSBudW1iZXJcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGlzTmFOXHJcbiAgICAqIEBwYXJhbSB7dmFyfSBuIC0gdmFyIHRvIGJlIHRlc3RlZFxyXG4gICAgKiBAcmV0dXJucyBib29sXHJcbiAgICAqL1xyXG4gICAgaXNOYU46IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgcmV0dXJuIG4gPT0gbnVsbCB8fCBpc05hTihuKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCBvdXRlciB4bWwgb2YgYW4gWE1MIGVsZW1lbnRcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGdldE91dGVyWG1sXHJcbiAgICAqIEBwYXJhbSB7WE1MRWxlbWVudH0gZVxyXG4gICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAgKi9cclxuICAgIGdldE91dGVyWG1sOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGlmIChlID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBlLnhtbCAhPSBudWxsID8gZS54bWwgOiAobmV3IFhNTFNlcmlhbGl6ZXIoKSkuc2VyaWFsaXplVG9TdHJpbmcoZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBBZGQgY3NzIHNjcmlwdCBpbiBhIHBhZ2VcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGFkZENzc1xyXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZSAtIGNzcyBzY3JpcHRcclxuICAgICovXHJcbiAgICBhZGRDc3M6IGZ1bmN0aW9uIChjb2RlKSB7XHJcbiAgICAgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcclxuXHJcbiAgICAgICAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcclxuICAgICAgICAgICAgLy8gSUVcclxuICAgICAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY29kZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBPdGhlciBicm93c2Vyc1xyXG4gICAgICAgICAgICBzdHlsZS5pbm5lckhUTUwgPSBjb2RlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHN0eWxlKTtcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEluc2VydCBhbGwgaXRlbXMgb2YgYSBkaXJjdGlvbmFyeSBpbiBhbm90aGVyIGRpY3Rpb25hcnlcclxuICAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGluc2VydEFmdGVyRGljdFxyXG4gICAgKiBAcGFyYW0ge2RpY3R9IGRpY3QgLSBkZXN0aW5hdGlvblxyXG4gICAgKiBAcGFyYW0ge2RpY3R9IGl0ZW1zIC0gaXRlbXMgdG8gYmUgaW5zZXJ0ZWRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIHJlZmVyZW5jZSBpdGVtXHJcbiAgICAqL1xyXG4gICAgaW5zZXJ0QWZ0ZXJEaWN0OiBmdW5jdGlvbiAoZGljdCwgaXRlbXMsIGtleSkge1xyXG4gICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICB2YXIgdGVtcCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gZGljdCkge1xyXG4gICAgICAgICAgICBpZiAoayA9PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgdGVtcFtrXSA9IGRpY3Rba107XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgZGljdFtrXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICh2YXIgayBpbiBpdGVtcylcclxuICAgICAgICAgICAgZGljdFtrXSA9IGl0ZW1zW2tdO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBrIGluIHRlbXApXHJcbiAgICAgICAgICAgIGRpY3Rba10gPSB0ZW1wW2tdO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogSW5zZXJ0IGFsbCBpdGVtcyBvZiBhIGRpcmN0aW9uYXJ5IGluIGFub3RoZXIgZGljdGlvbmFyeVxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gaW5zZXJ0QmVmb3JlRGljdFxyXG4gICAgKiBAcGFyYW0ge2RpY3R9IGRpY3QgLSBkZXN0aW5hdGlvblxyXG4gICAgKiBAcGFyYW0ge2RpY3R9IGl0ZW1zIC0gaXRlbXMgdG8gYmUgaW5zZXJ0ZWRcclxuICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIHJlZmVyZW5jZSBpdGVtXHJcbiAgICAqL1xyXG4gICAgaW5zZXJ0QmVmb3JlRGljdDogZnVuY3Rpb24gKGRpY3QsIGl0ZW1zLCBrZXkpIHtcclxuICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdmFyIHRlbXAgPSB7fTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIGRpY3QpIHtcclxuICAgICAgICAgICAgaWYgKGsgPT0ga2V5IHx8IGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wW2tdID0gZGljdFtrXTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBkaWN0W2tdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKHZhciBrIGluIGl0ZW1zKVxyXG4gICAgICAgICAgICBkaWN0W2tdID0gaXRlbXNba107XHJcblxyXG4gICAgICAgIGZvciAodmFyIGsgaW4gdGVtcClcclxuICAgICAgICAgICAgZGljdFtrXSA9IHRlbXBba107XHJcbiAgICB9LFxyXG5cclxuICAgIGRpc2FibGVTZWxlY3Rpb246IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgaWYgKGQgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBzY2lsLmFwcGx5KGQuc3R5bGUsIHtcclxuICAgICAgICAgICAgd2Via2l0VG91Y2hDYWxsb3V0OiBcIm5vbmVcIiwgLyogaU9TIFNhZmFyaSAqL1xyXG4gICAgICAgICAgICB3ZWJraXRVc2VyU2VsZWN0OiBcIm5vbmVcIiwgLyogQ2hyb21lICovXHJcbiAgICAgICAgICAgIG1velVzZXJTZWxlY3Q6IFwibm9uZVwiLCAvKiBGaXJlZm94ICovXHJcbiAgICAgICAgICAgIG1zVXNlclNlbGVjdDogXCJub25lXCIsIC8qIElFL0VkZ2UgKi9cclxuICAgICAgICAgICAgdXNlclNlbGVjdDogXCJub25lXCJcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TGFzdEJhcmNvZGU6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2F0ZWdvcnksIGVtYWlsLCB1cmwpIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmpzb25wKHVybCAhPSBudWxsID8gdXJsIDogXCJKU0RyYXcvU2VydmljZS5hc3B4P2NtZD1tb2JpbGUuZ2V0bGFzdFwiLCBmdW5jdGlvbiAocmV0KSB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHJldCk7XHJcbiAgICAgICAgfSwgeyBjYXRlZ29yeTogY2F0ZWdvcnksIHVzZXJlbWFpbDogZW1haWwgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGJlZXA6IGZ1bmN0aW9uIChkb3VibGViZWVwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoQXVkaW8pID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2JlZXBvYmogPT0gbnVsbClcclxuICAgICAgICAvL3RoaXMuX2JlZXBvYmogPSBuZXcgQXVkaW8oXCJkYXRhOmF1ZGlvL3dhdjtiYXNlNjQsLy91UVJBQUFBV01TTHdVSVlBQXNZa1hnb1F3QUVhWUxXZmtXZ0FJMHdXcy9JdEFBQUdEZ1l0QWdBeU4rUVdhQUFpaHdNV200RzhRUVJEaU1jQ0JjSDNDYytDRHYvN3hBNFR2aDlSei95OFFBREJ3TVdnUUFaRy9JTE5BQVJRNEdMVGNEZUlJSWh4R09CQXVEN2hPZkJCMy85NGdjSjN3K281LzVlSUFJQUFBVndXZ1FBVlEyT1JhSVF3RU1BSmlEZzk1RzRuUUw3bVFWV0k2R3dSY2ZzWkFjc0trSnZ4Z3hFanpGVWdmSG9TUTlRcTdLTndxSHd1QjEzTUE0YTFxL0RtQnJIZ1BjbWppR29oLy9Fd0M1bkdQRW1TNFJjZmtWS09oSmYrV09nb3hKY2xGejNrZ24vL2RCQSt5YTFHaHVyTm44emIvLzlOTnV0TnVoejMxZi8vLy85dnQvLy96K0lkQUVBQUFLNExRSUFLb2JISXRFSVlDR0FFeEJ3ZThqY1RvRjl6SUtyRWREWUl1UDJNZ09XRlNFMzR3WWlSNWlxUVBqMEpJZW9WZGxHNFZENFhBNjdtQWNOYTFmaHpBMWp3SHVUUnhEVVEvL2lZQmN6akhpVEpjSXVQeUtsSFFrdi9MSFFVWWt1U2k1N3lRVC8vdWdnZlpOYWpRM1ZteitadC8vK21tM1dtM1E1NzZ2Ly8vLyszMi8vLzUvRU9nQUFBRFZnaFFBQUFBQS8vdVFaQVVBQjFXSTBQWnVnQUFBQUFvUXdBQUFFazNuUmQycUFBQUFBQ2lEZ0FBQUFBQUFCQ3FFRVFSTENnd3BCR01sSmtJejhqS2hHdmo0azZqelJucWFzTktJZW9oNWdJN0JKYUMxQTFBb05CakpnYnlBcFZTNElEbFpnRFU1V1VBeEVLRE5tbUFMSHpacDBGa3oxRk1UbUdGbDFGTUV5b2RJYXZjQ0FVSERXcktBSUE0YWEyb0NnSUxFQnVwWmdIdkFoRUJjWjZqb1FCeFM3NkFnY2NyRmxjekJ2S0xDMFFJMmNCb0NGdmZUREFvN2VvT1FJbnFEUEJ0dnJERVpCTllONXh3Tnd4UVJmdzhaUTV3UVZMdk84T1lVK21IdkZMbERoMDVNZGc3QlQ2WXJSUHBDQnpuTUIyci8veEtKanl5T2grY0ltcjIvNGRvc2N3RDZuZVpqdVpSNEFnQUFCWUFBQUFCeTF4Y2RRdHhZQllZWmRpZmtVRGd6elhhWG45OFowb2k5SUxVNW1CakZBTm1Sd2xWSjMvNmpZREFteGFpREczLzZ4alFRQ0NLa1JiLzZrZy93VytrU0o1Ly9yTG9ia0xTaUttcVAvMGlrSnVEYVNhU2YvNkppTFlMRVluVy8ra1hnMVdSVkpMLzlFbVExWVpJc3YvNlF6d3k1cWs3Lyt0RVUwbmtsczMveklVTVBLTlgvNnlaTGYra0ZnQWZnR3lMRkFVd1kvL3VRWkFVQUJjZDVVaU5QVlhBQUFBcEFBQUFBRTBWWlFLdzlJU0FBQUNnQUFBQUFWUUl5Z0lFbFZyRmtCUytKaGkrRUF1dStsS0FrWVVFSXNtRUFFb01lRG1DRVRNdmZTSFRHa0Y1UldIN2t6L0VTSFdQQXEva2NDUmhxQnRNZG9rUGRNN3ZpbDdSRzk4QTJzYzd6TzZadlRkTTdwbU9VQVpUbkpXK05YeHFtZDQxZHFKNm1MVFh4clBwblY4YXZhSWY1U3ZMN3BuZFB2UHBuZEpSOUt1dThmZVB2dWl1aG9yZ1dqcDdNZi9QUmp4Y0ZDUERrVzMxc3Jpb0NFeGl2djlsY3dLRWFIc2YvN293MkZsMVQvOVJrWGdFaFlFbEFvQ0xGdE1Bcnh3aXZESkorYlIxSFRLSmRsRW9URUxDSXFnRXdWR1NRK2hJbTBOYks4V1hjVEVJMFVQb2EyTmJHNHkySzAwSkVXYlphdkpYa1lhcW85Q1JIUzU1RmNaVGpLRWszTktvQ1lVblNRMHJXeHJaYkZLYktJaE9LUFplMWNKS3paU2FRckl5VUxIRFptVjVLNHh5U3NEUktXT3J1YW5HdGpMSlhGRW13YUliRExYMGhJUEJVUVBWRlZrUWtEb1VOZlNvRGdRR0tQZWtveGVHekE0RFV2bm40Ynh6Y1pydEp5aXBLZlBOeTV3Kzlsblh3Z3FzaXlITmVTVnBlbXc0YldiOXBzWWVxLy91UVpCb0FCUXQ0eU1WeFlBSUFBQWtRb0FBQUh2WXBMNW02QUFnQUFDWERBQUFBRDU5amJsVGlyUWU5dXBGc21aYnBNdWR5N0x6MVgxRFlzeE9PU1dwZlBxTlgyV3FrdEswRE12dUd3bGJOajQ0VGxlTFBRK0dzZmIrR09XT0tKb0lyV2IzY0lNZWVPTjZsejJ1bVRxTVhWOE1qMzB5V1Bwam9TYTl1aks4U3llSlA1eTVtT1cxRDZodkxlcGV2ZUVBRURvMG1nQ1JDbE9FZ0FOdjNCOWE2ZmlrZ1VTdS9EbUFNQVRyR3g3bm5nNXA1aWltUE5ac2ZRTFlCMnNETElrelJLWk9IR0FhVXlEY3BGQlNMRzlNQ1FBTGdBSWdRczJZdW5Pc3pMU0F5UVlQVkMyWWRHR2VIRDJkVGRKazFwQUhHQVdEam5rY0xLRnltUzNSUVpUSW56eVNvQndNRzBRdWVDM2dNc0NFWXhVcWxyY3hLNmsxTFFRY3NteVllUVBkQzJZZnVHUEFTQ0JrY1ZNUVFxcFZKc2h1aTF0a1hRSlFWME9YR0FaTVhTT0VFQlJpclhiVlJRVzd1Z3E3SU03clBXU1p5RGxNM0l1TkVreHpDT0owbnkyVGhOa3lSYWkxYjZldi8vM2R6Tkd6TmIvLzR1QXZIVDVzVVJjWkNGY3VLTGhPRnM4bUxBQUVBdDRVV0FBSUFCQUFBQUFCNHFiSG8wdElqVmtVVS8vdVFaQXdBQmZTRnozWnFRQUFBQUFuZ3dBQUFFMUhqTXAycUFBQUFBQ1pEZ0FBQUQ1VWtURTFVZ1pFVUV4cVl5bk4xcVp2cUlPUkVFRm1CY0pRa3dkeGlGdHcwcUVPa0dZZlJEaWZCdWk5TVFnNFFBSEFxV3RBV0hvQ3h1MVlmNFZmV0xQSU0ybUhERnNiUUVWR3d5cVFvUWN3bmZIZUlrTnQ5WW5raWFTMW9penljcUpyeDRLT1FqYWhaeFdiY1pnenRqMmM0OW5LbWtJZDQ0UzcxajBjOGVWOXlESzZ1UFJ6eDVYMThlRHZqdlE2eUtvOVpTUzZsLy84ZWxlUEsvTGYvL0lJbnJPRi9GdkRvQURZQUdCTUdiN0Z0RXJtNU1YTWxtUEFKUVZnV3RhN1p4MmdvKzh4SjBVaUNiOExISGRmdFd5TEpFMFFJQUlzSStVYlh1NjdkWk1qbWdER0NHbDFIK3ZwRjROU0Rja1NJa2s3VmQrc3hFaEJRTVJVOGovMTJVSVJoelNhVWRRK3JRVTVrR2VGeG0raGIxb2g2cFdXbXYzdXZtUmVEbDBVbnZ0YXBWYUl6bzFqWmJmL3BENkVsTHFTWCtyVW1PUU5wSkZhL3Irc2E0ZS9wQmxBQUJvQUFBQUEzQ1VnU2hMZEdJeHNZN0FVQUJQUnJnQ0FCZER1UTVHQzdEcVBRQ2diYkpVQW9SU1VqK05JRWlnMFlmeVdVaG8xVkJCQkEvL3VRWkI0QUJaeDV6Zk1ha2VBQUFBbXdBQUFBRjVGM1AwdzlHdEFBQUNmQUFBQUF3TGhNRG1BWVdNZ1ZFRzFVMEZJR0NCZ1hCWEF0Zk1IMTAwMDBFRUVFRUVDVUJZbG4wM1RUVGROQkRab3BvcFl2clRUZE5hMzI1bUltTmczVFRQVjlxM3BtWTB4b082YnYzcjAweStJREdpZC85YWFhWlRHTXVqOW1wdTlNcGlvMWRYcnI1SEVSVFpTbXFVMzZBM0N1bXpOLzlSb2J2L1h4NHY5aWprU1JTTkxRaEFXdW1hcDgyV1JTQlVxWFN0Vi9ZY1MrWFZMblNTK1dMRHJvcUFyRmtNRXNBUytlV21yVXpyTzBvRW1FNDBSbE1aNStPRElrQXlLQUdVd1ozbVZLbWNhbWNKbk1XMjZNUlBnVXc2aitMa2h5SEdWR1lqU1VVS05wdUpVUW9PSUF5RHZFeUc4UzV5Zks2ZGhaYzBUeDFLSS9ndmlLTDZxdnZGczErYld0YXo1OHVVTm5yeXE2a3Q1UnpPQ2tQV2xWcVZYMmEvRUVCVWRVMUtyWExmNDBHb2lpRlhLLy8vcXBvaURYck9ncURSMzhKQjBidzdTb0wrWkI5bzFSQ2tRalEyQ0JZWktkLytWSnhaUlJabHFTa0tpd3MwV0Z4VXlDd3NLaU15N2hVVkZoSWFDck5Rc0trVElzTGl2d0tLaWdzajhYWWx3dC9XS2kyTjRkLy91UVJDU0FBalVSTklIcE1aQkdZaWFRUFNZeUFBQUJMQUFBQUFBQUFDV0FBQUFBcFVGL01nKzBhb2hTSVJvYkJBc01sTy8vS2s0c29vc3kxSlNGUllXYUxDNHFaQllXRlJHWmR3cUtpd2tOQlZtb1dGU0prV0Z4WDRGRlJRV1IrTHNTNFcvckZSYi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1ZFRkhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVTI5MWJtUmliM2t1WkdVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNakF3TkdoMGRIQTZMeTkzZDNjdWMyOTFibVJpYjNrdVpHVUFBQUFBQUFBQUFDVT1cIik7XHJcbiAgICAgICAgICAgIHRoaXMuX2JlZXBvYmogPSBuZXcgQXVkaW8oXCJkYXRhOmF1ZGlvL3dhdjtiYXNlNjQsVWtsR1J0b0VBQUJYUVZaRlptMTBJQkFBQUFBQkFBRUFFU3NBQUJFckFBQUJBQWdBWkdGMFliVUVBQUI5ZFhGcGEzRjRmWVNMa1ppVWpvZUNlM1J1YVd0emUzNkdqSk9aa1l5R2dIcHliR2h2YzN1QmlJMlVtWkNLaFg5M2NXeG9iM1o5ZzRtUWxaYVBpb044ZG05cWFuRjRmNE9Ma1plVWpvaUJlM1J2YVd4emVJQ0dpNU9ZbEl1RmdYbHliV2x0ZEh1QmlJNlVsNUNMaG4xNGNtbHFjSFY4ZzRtT2w1ZVBpWVI4ZG5Cb2EzRjNmb1dLa1phVmpvaUJlblZ3WjJ4eWVvQ0ZqWktYbEl5R2dIcHphMmx2ZEhtQ2g0K1RsNUtLaFg1NGNXdHBiM1o5Z1ltUGxwZVBpWU45ZG5Cb2EzRjRmb09Ma1plV2pZbUFmSFJ2WjI1eWVYK0ZqWktYbEl5RmdYbHphMmx2YzN1QWg0NlZsNUNMaFg5M2NXdHFiM1Y5ZzRpUWxaZVBpb0o5ZG5Gb2EzRjRmb1NLa1phVWo0ZUJmSFZ1YVd0emVYK0dqSktZazR5R2dIbDBiV2R1ZFh0L2lJMlZtSkNNaFg1M2NXdHFiM1o4ZzRpUWxaYVBpb044ZG5Gb2EzQjRmb1NLa1plVmpvaUNlM1J1YVd4emVYK0dpNU9YazQyR2YzdHpiR2h0ZFh1Qmg0eVZsNUdNaEg1NGNtdHBjSFY4ZzRtT2xwYVJpWU45ZG05cmFYRjRmWVNMa0phV2pvZUNlblp1YUd4emVJQ0ZqSk9YazR5SGYzcHpiV2x0ZEhxQmlJMlVsNUdOaEg1NGNtdHBibmQ3Z29tUWxaZVBpNEo5ZG5CcWFuRjNmWU9Ma0ppVWo0ZUJmSFZ1YVd0emVYK0ZqSktZazR5SGdIcHpiR2x0YzN1Qmg0MlZsNUdMaFg5MmMycHBjWFY4Z29tUGxaaU9pb0orZG5GcGFYRjVmWU9La1plV2pZaURlblZ1YVd0emVJR0ZqSktYazQyR2dIbDFiV2h0ZEh0L2g0MlZsNUtMaEg5M2MydG9iM1Y5ZzRpUGxaZVBpNE44ZDNCcGEzRjNmb1NKa1phV2o0ZUNmSE52YUd0eWVuK0ZqSkdZbEl1SWdIbDBiR2h1YzN1Qmg0MlVsNUtNZzRCNGNtdG9jWFI4ZzRtUGxaV1Jpb0o5ZDI5cmFtOTNmb1NKa1plVWpvbUNlM1Z2YUcxeWQzK0hpNUtZbEkyR2dIcHpibWR0ZEhxQmlJeVZscEtMaEg5NWNtcHBiM1Y4ZzRpT2xwZVFpWU4rZG5GcWFYSjJmWVNMajVpVWo0aUNmSFJ1YVd4emVIK0ZqSkdZazQySGYzdHpiV2h1ZEhxQWhvNlRtWkdMaFg5NGMycHBiblo4Z29tT2xwZVBpNEorZG5CcWFuQjNmb09La0plV2pvaUJmSFJ3YUd4eWVIK0dpNUtZazQ2R2dYcHpiV2R1ZEhxQWg0NlRtSkdNaFg1NGNtdHBiM1Y4ZzRlUGxaaVBpb1I5ZG5GcGEzQjJmb09La1phVmo0aUJmSFp1YVd4eWVYNkVqWkdZbEkyR2dYbHpibWh1YzNxQmhvMlVsNUtMaFg5NWNXdHBjSFY4Z1lpUGxaZVBpNFI4ZDNGcGFuQjNmb09La0ppVmpvbUJlM1p1YW10eWVJQ0ZpcE9XbEk2RmdYcDFhMnBzYzN1QWg0NlNtSktMaFg5NGMydG9jSFI5Z29pT2xaZVJpb045ZDNCcWFYRjNmb0tMa0pXVmo0bUJmSFZ2YVd0eWVIK0dpNUtYbG95SGdIbDBibWh1YzNxQWg0MlRsNUtNaFg1NWNtdG9jSFo3Z29pT2xaZVBpb1I4ZUhCcWFuRjJmWVNKa0ppVmo0aUNmSFp1YUd4emVIMkhpNUtYbFkyRmdIdHpiV2x0YzNxQWg0MlVscEtNaFg5NGMydHFiblo2Z29tT2xwYVJpNE45ZDNGcGFuRjJmWVNLa0pXV2pvbUNlM1p2YVd0eGVYNkZpNUtZazQySGdYcDBibWh0YzN1QWhveVVtSktMaFlCNGMydG9jSFI5Z1lpT2xwZVFpb045ZDNKcWFuQjNmSVNKa0plVmo0aUJmblJ3YVdweWVYNkZqSkdYbEk2R2dIcDFiR2x1Y25xQmhveVVtSktNaEg5NGMyMW5iM1Y4Z1ltT2xaZVFpNE4rZDNGcWFYQjNmUUE9XCIpO1xyXG4gICAgICAgIHRoaXMuX2JlZXBvYmoucGxheSgpO1xyXG5cclxuICAgICAgICBpZiAoZG91YmxlYmVlcCkge1xyXG4gICAgICAgICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbWUuX2JlZXBvYmoucGxheSgpOyB9LCAzMDApO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgdGV4dGFyZWFTZWxlY3Q6IGZ1bmN0aW9uICh0YSwgc3RhcnRQb3MsIGVuZFBvcykge1xyXG4gICAgICAgIC8vIGRvIHNlbGVjdGlvblxyXG4gICAgICAgIC8vIENocm9tZSAvIEZpcmVmb3hcclxuICAgICAgICBpZiAodHlwZW9mICh0YS5zZWxlY3Rpb25TdGFydCkgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICB0YS5mb2N1cygpO1xyXG4gICAgICAgICAgICB0YS5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0UG9zO1xyXG4gICAgICAgICAgICB0YS5zZWxlY3Rpb25FbmQgPSBlbmRQb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJRVxyXG4gICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKSB7XHJcbiAgICAgICAgICAgIHRhLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIHRhLnNlbGVjdCgpO1xyXG4gICAgICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XHJcbiAgICAgICAgICAgIHJhbmdlLm1vdmVFbmQoXCJjaGFyYWN0ZXJcIiwgZW5kUG9zKTtcclxuICAgICAgICAgICAgcmFuZ2UubW92ZVN0YXJ0KFwiY2hhcmFjdGVyXCIsIHN0YXJ0UG9zKTtcclxuICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICogRmlyZSBhbiBldmVudFxyXG4gICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gZmlyZUV2ZW50XHJcbiAgICAqIEBwYXJhbSB7RE9NfSBlbGVtZW50XHJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudG5hbWVcclxuICAgICovXHJcbiAgICBmaXJlRXZlbnQ6IGZ1bmN0aW9uIChlbGVtZW50LCBldmVudG5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGFyZ3MpIHtcclxuICAgICAgICB2YXIgZXZlbnQ7IC8vIFRoZSBjdXN0b20gZXZlbnQgdGhhdCB3aWxsIGJlIGNyZWF0ZWRcclxuXHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJIVE1MRXZlbnRzXCIpO1xyXG4gICAgICAgICAgICBldmVudC5pbml0RXZlbnQoZXZlbnRuYW1lLCBidWJibGVzID09IG51bGwgPyB0cnVlIDogYnViYmxlcywgY2FuY2VsYWJsZSA9PSBudWxsID8gdHJ1ZSA6IGNhbmNlbGFibGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTtcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID0gZXZlbnRuYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFyZ3MgIT0gbnVsbClcclxuICAgICAgICAgICAgc2NpbC5hcHBseShldmVudCwgYXJncyk7XHJcblxyXG4gICAgICAgIGV2ZW50LmV2ZW50TmFtZSA9IGV2ZW50bmFtZTtcclxuXHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWxlbWVudC5maXJlRXZlbnQoXCJvblwiICsgZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBzdW06IGZ1bmN0aW9uIChsaXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIHNjaWwuTWF0aC5zdW0obGlzdCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGF2ZzogZnVuY3Rpb24gKGxpc3QpIHtcclxuICAgICAgICByZXR1cm4gc2NpbC5NYXRoLmF2ZyhsaXN0KTtcclxuICAgIH0sXHJcblxyXG4gICAgc3RkZXY6IGZ1bmN0aW9uIChsaXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIHNjaWwuTWF0aC5zdGRldihsaXN0KTtcclxuICAgIH1cclxufTtcclxuXHJcbnNjaWwuZm9ybSA9IHt9O1xyXG5Kc1V0aWxzID0gc2NpbC5VdGlscztcclxuc2NpbC5VdGlscy5wYWRsZWZ0ID0gc2NpbC5VdGlscy5wYWRMZWZ0O1xyXG5zY2lsLlV0aWxzLnBhZHJpZ2h0ID0gc2NpbC5VdGlscy5wYWRSaWdodDtcclxuXHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7SlNEcmF3Mk1vZHVsZVR5cGUsIFNjaWxNb2R1bGVUeXBlfSBmcm9tICcuLi9zcmMvdHlwZXMnO1xyXG5cclxuaW1wb3J0IHR5cGUge0lTY2lsVXRpbHN9IGZyb20gJy4uL3NyYy90eXBlcy9zY2lsJztcclxuaW1wb3J0IHR5cGUge0Rvam9UeXBlLCBEb2pveFR5cGV9IGZyb20gJy4uL3NyYy90eXBlcy9kb2pvJztcclxuaW1wb3J0IHR5cGUge1RhYmJlZEZvcm19IGZyb20gJy4vVGFiYmVkRm9ybSc7XHJcbmltcG9ydCB0eXBlIHtJRGlhbG9nfSBmcm9tICcuLi9zcmMvdHlwZXMvanNkcmF3Mic7XHJcblxyXG5kZWNsYXJlIGNvbnN0IGRvam86IERvam9UeXBlO1xyXG5kZWNsYXJlIGNvbnN0IGRvam94OiBEb2pveFR5cGU7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5kZWNsYXJlIGNvbnN0IEpTRHJhdzI6IEpTRHJhdzJNb2R1bGVUeXBlPGFueT47XHJcbmRlY2xhcmUgY29uc3QgSnNVdGlsczogSVNjaWxVdGlscztcclxuZGVjbGFyZSBjb25zdCBDcnlwdG9KUzogYW55O1xyXG5cclxuZXhwb3J0IHR5cGUgSXRlbVR5cGUgPSB7XHJcbiAgZGF0YWZvcm1hdDogc3RyaW5nO1xyXG4gIGVuY3J5cHQ6IGJvb2xlYW47XHJcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgZmllbGQ6IEZpZWxkVHlwZTtcclxuICBjYXB0aW9uOiBzdHJpbmc7XHJcbiAgdGQxOiBIVE1MVGFibGVDZWxsRWxlbWVudCxcclxuICB0ZDI6IEhUTUxUYWJsZUNlbGxFbGVtZW50XHJcbiAgYWx0ZXJuYXRpdmVrZXk6IHN0cmluZztcclxuICB3YXM6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBjb2xzcGFuOiBudW1iZXI7XHJcbiAgdW5pdDogc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0ge1xyXG4gIGpzZDogVGFiYmVkRm9ybTtcclxuICBzdHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBMYW5nVHlwZSA9IGFueTtcclxuXHJcbmV4cG9ydCBlbnVtIEJ1dHRvblR5cGVzIHtcclxuICBTRUxFQ1QgPSAnc2VsZWN0J1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBCdXR0b25UeXBlID0gdHlwZW9mIEJ1dHRvblR5cGVzW2tleW9mIHR5cGVvZiBCdXR0b25UeXBlc107XHJcblxyXG5leHBvcnQgdHlwZSBCdXR0b25EZXNjVHlwZSA9IHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgY2FwdGlvbjogc3RyaW5nO1xyXG4gIHR5cGU6IEJ1dHRvblR5cGU7XHJcbiAgbGFiZWxzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcclxuICBzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcclxuICBzdHlsZXM6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj47XHJcbiAgb25jaGFuZ2U6IEZ1bmN0aW9uO1xyXG4gIHNyYzogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IGFueTtcclxuICBpdGVtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgb3B0aW9uczogYW55O1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgc29ydDogYm9vbGVhbjtcclxuICBvbmVudGVyOiBGdW5jdGlvbjtcclxuICBhdXRvc3VnZ2VzdHVybDogc3RyaW5nO1xyXG4gIG9uc3VnZ2VzdDogRnVuY3Rpb247XHJcbiAgb25jbGljazogRnVuY3Rpb247XHJcbiAgYjogSFRNTEVsZW1lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEJ1dHRvbkRlc2MgPSAnLScgfCAnfCcgfCBCdXR0b25EZXNjVHlwZTtcclxuXHJcbi8qKlxyXG4gKiBGb3JtIGNsYXNzXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5Gb3JtXHJcbiAqIDxwcmU+XHJcbiAqIFN1cHBvcnRlZCBmaWVsZCB0eXBlczpcclxuICogICAgYmFzaWMgdHlwZXM6IGhpZGRlbiwgbnVtYmVyLCB0ZXh0LCByYWRpbywgZGF0ZSwgY29sb3JcclxuICogICAgbGlzdCB0eXBlczogc2VsZWN0LCBkcm9wZG93bmlucHV0LCBlZGl0YWJsZXNlbGVjdCwgZHJvcGRvd25jaGVjaywgbXVsdGlzZWxlY3RcclxuICogICAgdGFibGUgYW5kIHRleHQ6IHRhYmxlLCB0YWJ0ZXh0LCByaWNodGV4dCwgaHRtbCwgcGxhaW50ZXh0XHJcbiAqICAgIGNoZW1pc3RyeSBhbmQgYmlvbG9neToganNkcmF3LCBqZHJhdy5mbSwganNkcmF3LnNlLCBqc2RyYXcudGFibGUsIHBsYXRlLCBza2V0Y2hlcywgcGxhdGVzXHJcbiAqICAgIGZpbGU6IGZpbGUsIGZpbGVwYXRoLCBmaWxlbGluaywgZmlsZWRibGluaywgaW1hZ2VcclxuICogICAgZm9ybTogc3ViZm9ybVxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICogICAgJmx0O3NjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCImZ3Q7XHJcbiAqICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHtcclxuICogICAgICAgICAgICB2YXIgcGFyZW50ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGRvY3VtZW50LmJvZHksIFwiZGl2XCIpO1xyXG4gKiAgICAgICAgICAgIHZhciBjb2x1bW5zID0ge1xyXG4gKiAgICAgICAgICAgICAgICBtYXNzOiB7IGxhYmVsOiBcIk1hc3NcIiwgdHlwZTogXCJudW1iZXJcIiwgd2lkdGg6IDIwMCwgdW5pdDogXCJnXCIgfSxcclxuICogICAgICAgICAgICAgICAgbmFtZTogeyBsYWJlbDogXCJDb21wb3VuZCBOYW1lXCIsIHR5cGU6IFwiaW5wdXRcIiwgd2lkdGg6IDYwMCwgYnV0dG9uOiB7IGxhYmVsOiBcIlRlc3RcIiwgb25jbGljazogZnVuY3Rpb24gKCkgeyBhbGVydCg5OSk7IH0gfSB9LFxyXG4gKiAgICAgICAgICAgICAgICB2ZW5kb3I6IHsgbGFiZWw6IFwiVmVuZG9yXCIsIHR5cGU6IFwic2VsZWN0XCIsIG9wdGlvbnM6IFtcIkNvbXBhbnkgQVwiLCBcIkNvbXBhbnkgQlwiXSwgd2lkdGg6IDcwMCB9XHJcbiAqICAgICAgICAgICAgfTtcclxuICogICAgICAgICAgICB2YXIgZm9ybSA9IG5ldyBzY2lsLkZvcm0oeyB2aWV3b25seTogZmFsc2UgfSk7XHJcbiAqICAgICAgICAgICAgZm9ybS5yZW5kZXIocGFyZW50LCBjb2x1bW5zLCB7IGltbWVkaWF0ZWx5OiB0cnVlIH0pO1xyXG4gKiAgICAgICAgfSk7XHJcbiAqICAgICZsdDsvc2NyaXB0Jmd0O1xyXG4gKiA8L3ByZT5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBGb3JtSW50IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IFQ6IHN0cmluZztcclxuICBwcml2YXRlIG9wdGlvbnM6IGFueTtcclxuICBwcml2YXRlIGxhbmc6IExhbmdUeXBlO1xyXG4gIHByaXZhdGUgdmlld29ubHk6IGJvb2xlYW47XHJcbiAgcHVibGljIHRib2R5OiBhbnk7XHJcblxyXG4gIHByaXZhdGUgaXRlbXM6IHsgW2lOYW1lOiBzdHJpbmddOiBJdGVtVHlwZSB9O1xyXG4gIHByaXZhdGUgZmllbGRzOiB7IFtmTmFtZTogc3RyaW5nXTogRmllbGRUeXBlIH07XHJcbiAgcHJpdmF0ZSBidXR0b25zOiBhbnlbXTtcclxuXHJcbiAgcHJpdmF0ZSBkaXJ0eTogYm9vbGVhbjtcclxuICBwcml2YXRlIGFsdGVybmF0aXZlZm9ybXM6IHsgW3A6IHN0cmluZ106IGFueSB9O1xyXG4gIHB1YmxpYyBwYXJlbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVuZGVyb3B0aW9uczoge307XHJcblxyXG4gIHByaXZhdGUgY3VycmVudHJvdzogSXRlbVR5cGU7XHJcbiAgcHJpdmF0ZSBjdXJyZW50cm93YmNrY29sb3I6IHN0cmluZztcclxuICBwcml2YXRlIHBvc3Rmb3JtOiBDaGlsZE5vZGU7XHJcbiAgcHJpdmF0ZSBidXR0b25UUjogSFRNTFRhYmxlUm93RWxlbWVudDtcclxuXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIEZvcm1cclxuICAgKiBAcGFyYW0ge2Jvb2x9IHZpZXdvbmx5IC0gYnVpbGQgYSB2aWV3b25seSBGb3JtXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55IHwgYm9vbGVhbikge1xyXG4gICAgdGhpcy5UID0gJ0ZPUk0nO1xyXG4gICAgaWYgKHR5cGVvZiAob3B0aW9ucykgPT0gJ2Jvb2xlYW4nKVxyXG4gICAgICB0aGlzLm9wdGlvbnMgPSB7dmlld29ubHk6IG9wdGlvbnN9O1xyXG4gICAgZWxzZSBpZiAob3B0aW9ucyA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMgPSB7fTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLm9wdGlvbnMubGFuZyA9PSBudWxsID8gc2NpbC5MYW5nIDogdGhpcy5vcHRpb25zLmxhbmc7XHJcbiAgICB0aGlzLnZpZXdvbmx5ID0gdGhpcy5vcHRpb25zLnZpZXdvbmx5O1xyXG4gICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICB0aGlzLnRib2R5ID0gbnVsbDtcclxuICAgIHRoaXMuZmllbGRzID0gbnVsbDtcclxuICAgIHRoaXMuYnV0dG9ucyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBkZXN0b3J5KCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICBzY2lsLlV0aWxzLnJlbW92ZUFsbCh0aGlzLnRib2R5KTtcclxuICAgIHRoaXMudGJvZHkgPSBudWxsO1xyXG4gICAgdGhpcy5maWVsZHMgPSBudWxsO1xyXG4gICAgdGhpcy5idXR0b25zID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbGxlY3QgZm9ybSBkYXRhIGluIHhtbCBmb3JtYXRcclxuICAgKiBAZnVuY3Rpb24gZ2V0WG1sXHJcbiAgICogQHJldHVybnMgeG1sIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFhtbChub3dyYXBwZXIpIHtcclxuICAgIHZhciByZXQgPSBub3dyYXBwZXIgPyAnJyA6ICc8ZGF0YT5cXG4nO1xyXG4gICAgZm9yICh2YXIgaWQgaW4gdGhpcy5maWVsZHMpIHtcclxuICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZHNbaWRdO1xyXG4gICAgICB2YXIgdiA9IHNjaWwuRm9ybS5nZXRGaWVsZERhdGEoZmllbGQsIHRoaXMuaXRlbXNbaWRdKTtcclxuICAgICAgaWYgKHYgIT0gbnVsbCAmJiB2ICE9ICcnKSB7XHJcbiAgICAgICAgcmV0ICs9ICc8aSBuPVxcJycgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKGlkKSArICdcXCc+JztcclxuICAgICAgICBpZiAoZmllbGQuc3R5cGUgPT0gJ2pzZHJhdycgfHwgZmllbGQuc3R5cGUgPT0gJ3hkcmF3JyB8fCBmaWVsZC5zdHlwZSA9PSAnanNkcmF3LnRhYmxlJyB8fCBmaWVsZC5zdHlwZSA9PSAnanNkcmF3LnNlJyB8fFxyXG4gICAgICAgICAgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy5mbScgfHwgZmllbGQuc3R5cGUgPT0gJ3RhYmxlJyB8fCBmaWVsZC5zdHlwZSA9PSAncGxhdGUnIHx8IGZpZWxkLnN0eXBlID09ICdwbGF0ZXMnKVxyXG4gICAgICAgICAgcmV0ICs9IHY7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0ICs9IHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodik7XHJcbiAgICAgICAgcmV0ICs9ICc8L2k+XFxuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFub3dyYXBwZXIpXHJcbiAgICAgIHJldCArPSAnPC9kYXRhPic7XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGZvcm0gZGF0YVxyXG4gICAqIEBmdW5jdGlvbiBzZXRYbWxcclxuICAgKiBAcGFyYW0ge3htbH0gZGF0YSB0aGUgZm9ybSBkYXRhLCAqaWQqIGlzIHRoZSBrZXlcclxuICAgKi9cclxuICBzZXRYbWwoeG1sKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IHNjaWwuRm9ybS54bWwySnNvbih4bWwpO1xyXG4gICAgICB0aGlzLnNldERhdGEoZGF0YSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGFsZXJ0KCdFcnJvciByYWlzZWQgd2hlbiBzZXR0aW5nIGZvcm0gZGF0YTogJyArIGUubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb2xsZWN0IGZvcm0gZGF0YVxyXG4gICAqIEBmdW5jdGlvbiBnZXREYXRhXHJcbiAgICogQHJldHVybnMgdGhlIGZvcm0gZGF0YSBhcyBhIGRpY3Rpb25hcnksIHdpdGggKmlkKiBhcyB0aGUga2V5XHJcbiAgICovXHJcbiAgZ2V0RGF0YShpbmNsdWRlTnVsbFZhbHVlcz86IGJvb2xlYW4pIHtcclxuICAgIHZhciByZXQgPSB7fTtcclxuICAgIGZvciAodmFyIGlkIGluIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGRzW2lkXTtcclxuICAgICAgaWYgKGZpZWxkICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgdiA9IHNjaWwuRm9ybS5nZXRGaWVsZERhdGEoZmllbGQsIHRoaXMuaXRlbXNbaWRdKTtcclxuICAgICAgICBpZiAoaW5jbHVkZU51bGxWYWx1ZXMgfHwgIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh2KSlcclxuICAgICAgICAgIHJldFtpZF0gPSB2O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGZvcm0gZGF0YVxyXG4gICAqIEBmdW5jdGlvbiBzZXREYXRhXHJcbiAgICogQHBhcmFtIHtkaWN0b25hcnl9IGRhdGEgdGhlIGZvcm0gZGF0YSwgKmlkKiBpcyB0aGUga2V5XHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhLCBvdmVyd3JpdGVtb2RlPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXREaXJ0eShmYWxzZSk7XHJcbiAgICBmb3IgKHZhciBpZCBpbiB0aGlzLmZpZWxkcykge1xyXG4gICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkc1tpZF07XHJcbiAgICAgIGlmIChmaWVsZCA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdmFyIHYgPSBudWxsO1xyXG4gICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgdiA9IGRhdGFbaWRdO1xyXG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5pdGVtc1tpZF07XHJcbiAgICAgICAgaWYgKHYgPT0gbnVsbCAmJiBpdGVtICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChpdGVtLmFsdGVybmF0aXZla2V5ICE9IG51bGwpXHJcbiAgICAgICAgICAgIHYgPSBkYXRhW2l0ZW0uYWx0ZXJuYXRpdmVrZXldO1xyXG4gICAgICAgICAgaWYgKHYgPT0gbnVsbCAmJiBpdGVtLndhcyAhPSBudWxsKVxyXG4gICAgICAgICAgICB2ID0gZGF0YVtpdGVtLndhc107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3ZlcndyaXRlbW9kZSkge1xyXG4gICAgICAgIGlmICh2ICE9IG51bGwpXHJcbiAgICAgICAgICBzY2lsLkZvcm0uc2V0RmllbGREYXRhKGZpZWxkLCB0aGlzLml0ZW1zW2lkXSwgdGhpcy52aWV3b25seSwgdiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2NpbC5Gb3JtLnNldEZpZWxkRGF0YShmaWVsZCwgdGhpcy5pdGVtc1tpZF0sIHRoaXMudmlld29ubHksIHYsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERpcnR5KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIGZpZWxkIHZhbHVlXHJcbiAgICogQGZ1bmN0aW9uIHNldEZpZWxkVmFsdWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGUgaWQgb2YgdGhlIGZpZWxkXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHYgLSB2YWx1ZSB0byBiZSBzZXRcclxuICAgKi9cclxuICBzZXRGaWVsZFZhbHVlKGlkLCB2LCBkYXRhKSB7XHJcbiAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkc1tpZF07XHJcbiAgICBzY2lsLkZvcm0uc2V0RmllbGREYXRhKHRoaXMuZmllbGRzW2lkXSwgdGhpcy5pdGVtc1tpZF0sIHRoaXMudmlld29ubHksIHYsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmllbGQgdmFsdWVzXHJcbiAgICogQGZ1bmN0aW9uIGNsZWFyXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLnNldERhdGEoe30pO1xyXG4gIH1cclxuXHJcbiAgb25jaGFuZ2UoZmllbGQsIGFyZ3M/OiBhbnkpIHtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmNoYW5nZSAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25jaGFuZ2UoZmllbGQsIHRoaXMsIGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlydHkoZikge1xyXG4gICAgdGhpcy5kaXJ0eSA9IGYgPT0gbnVsbCB8fCBmID09IHRydWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50VW5zYXZlZChtc2cpIHtcclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICBzY2lsLmNvbm5lY3Qod2luZG93LCAnb25iZWZvcmV1bmxvYWQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgIGlmIChtZS5kaXJ0eSkge1xyXG4gICAgICAgIGlmIChtc2cgPT0gbnVsbClcclxuICAgICAgICAgIG1zZyA9ICdXQVJOSU5HOiBGb3JtIGRhdGEgYXJlIG5vdCBzYXZlZCB5ZXQuJztcclxuXHJcbiAgICAgICAgdmFyIHMgPSBzY2lsLkxhbmcucmVzKG1zZyk7XHJcbiAgICAgICAgaWYgKGUgIT0gbnVsbClcclxuICAgICAgICAgIGUucmV0dXJuVmFsdWUgPSBzO1xyXG4gICAgICAgIHJldHVybiBzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN3aXRjaEZvcm0oa2V5KSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmFsdGVybmF0aXZlZm9ybXMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmFsdGVybmF0aXZlZm9ybXMgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmFsdGVybmF0aXZlZm9ybXMgPSB7fTtcclxuICAgICAgdGhpcy5hbHRlcm5hdGl2ZWZvcm1zWycnXSA9IHt0Ym9keTogdGhpcy50Ym9keSwgZmllbGRzOiB0aGlzLmZpZWxkcywgaXRlbXM6IHRoaXMuaXRlbXN9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5hbHRlcm5hdGl2ZWZvcm1zW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLm9wdGlvbnMuYWx0ZXJuYXRpdmVmb3Jtc1trZXldO1xyXG4gICAgICBpZiAoaXRlbXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyMihpdGVtcywgdGhpcy5wYXJlbnQsIHRoaXMucmVuZGVyb3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZWZvcm1zW2tleV0gPSB7dGJvZHk6IHRoaXMudGJvZHksIGZpZWxkczogdGhpcy5maWVsZHMsIGl0ZW1zOiB0aGlzLml0ZW1zfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciBjdXIgPSB0aGlzLmFsdGVybmF0aXZlZm9ybXNba2V5XTtcclxuICAgIGlmIChjdXIgPT0gbnVsbClcclxuICAgICAgY3VyID0gdGhpcy5hbHRlcm5hdGl2ZWZvcm1zWycnXTtcclxuXHJcbiAgICB0aGlzLnRib2R5ID0gY3VyLnRib2R5O1xyXG4gICAgdGhpcy5maWVsZHMgPSBjdXIuZmllbGRzO1xyXG4gICAgdGhpcy5pdGVtcyA9IGN1ci5pdGVtcztcclxuICAgIGZvciAodmFyIGsgaW4gdGhpcy5hbHRlcm5hdGl2ZWZvcm1zKVxyXG4gICAgICB0aGlzLmFsdGVybmF0aXZlZm9ybXNba10udGJvZHkucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gayA9PSBrZXkgPyAnJyA6ICdub25lJztcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0cm93KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodHJvdyh0aGlzLml0ZW1zW2tleV0pO1xyXG4gIH1cclxuXHJcbiAgb25zZWxlY3Ryb3coZSkge1xyXG4gICAgdmFyIHNyYyA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcclxuICAgIHZhciB0ZCA9IHNjaWwuVXRpbHMuZ2V0UGFyZW50KHNyYywgJ1REJyk7XHJcblxyXG4gICAgdmFyIGl0ZW0gPSBudWxsO1xyXG4gICAgZm9yICh2YXIgayBpbiB0aGlzLml0ZW1zKSB7XHJcbiAgICAgIGlmICh0aGlzLml0ZW1zW2tdICE9IG51bGwgJiYgKHRoaXMuaXRlbXNba10udGQxID09IHRkIHx8IHRoaXMuaXRlbXNba10udGQyID09IHRkKSkge1xyXG4gICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zW2tdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oaWdobGlnaHRyb3coaXRlbSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRyb3coaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudHJvdyA9PSBpdGVtKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudHJvdyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudHJvdy50ZDEuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jdXJyZW50cm93YmNrY29sb3I7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRyb3cudGQyICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5jdXJyZW50cm93LnRkMi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudHJvd2Jja2NvbG9yID0gaXRlbS50ZDEuc3R5bGUuYmFja2dyb3VuZENvbG9yO1xyXG4gICAgICBpdGVtLnRkMS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBKU0RyYXcyLlNraW4uZm9ybS5yb3dzZWxlY3Rjb2xvcjtcclxuICAgICAgaWYgKGl0ZW0udGQyICE9IG51bGwpXHJcbiAgICAgICAgaXRlbS50ZDIuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gSlNEcmF3Mi5Ta2luLmZvcm0ucm93c2VsZWN0Y29sb3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRyb3cgPSBpdGVtO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25zZWxlY3Ryb3cgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uc2VsZWN0cm93KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVuZGVyIHRoZSBmb3JtXHJcbiAgICogQGZ1bmN0aW9uIHJlbmRlclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nIG9yIERPTX0gcGFyZW50IHBhcmVudCBlbGVtZW50XHJcbiAgICogQHBhcmFtIHtkaWN0fSBpdGVtcyBmaWVsZCBkZWZpbml0aW9uXHJcbiAgICogQHBhcmFtIHtpbW1lZGlhdGVseTogdHJ1ZS9mYWxzZSwgYnV0dG9uczpbXSB9IG9wdGlvbnNcclxuICAgKi9cclxuICByZW5kZXIocGFyZW50LCBpdGVtcywgb3B0aW9ucz86IGFueSkge1xyXG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICB0aGlzLnJlbmRlcm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5yZW5kZXIyKGl0ZW1zLCB0aGlzLnBhcmVudCwgdGhpcy5yZW5kZXJvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcjIoaXRlbXMsIHBhcmVudCwgb3B0aW9ucykge1xyXG4gICAgdmFyIGFsaWduID0gb3B0aW9ucyA9PSBudWxsID8gbnVsbCA6IG9wdGlvbnMuYWxpZ247XHJcbiAgICB2YXIgYnV0dG9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IG51bGwgOiBvcHRpb25zLmJ1dHRvbnM7XHJcbiAgICB2YXIgaW1tZWRpYXRlbHkgPSB0eXBlb2YgKG9wdGlvbnMpID09ICdib29sZWFuJyA/IG9wdGlvbnMgOiAob3B0aW9ucyA9PSBudWxsID8gdHJ1ZSA6IG9wdGlvbnMuaW1tZWRpYXRlbHkgIT0gZmFsc2UpO1xyXG5cclxuICAgIHRoaXMudGJvZHkgPSBudWxsO1xyXG4gICAgdGhpcy5maWVsZHMgPSB7fTtcclxuICAgIHRoaXMuaXRlbXMgPSB7fTtcclxuICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xyXG5cclxuICAgIGxldCBpdGVtOiBJdGVtVHlwZTtcclxuICAgIGZvciAodmFyIGsgaW4gaXRlbXMpIHtcclxuICAgICAgaXRlbSA9IGl0ZW1zW2tdO1xyXG4gICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdGhpcy5pdGVtc1trXSA9IGl0ZW07XHJcbiAgICAgIGlmIChpdGVtLmxhYmVsID09IG51bGwgJiYgaXRlbS5jYXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgaXRlbS5sYWJlbCA9IGl0ZW0uY2FwdGlvbjtcclxuICAgICAgaWYgKEpTRHJhdzIuVGFibGUgIT0gbnVsbCAmJiBzY2lsLlV0aWxzLmluZGV4T2YoSlNEcmF3Mi5UYWJsZS5rTnVtYmVyQ29sdW1ucywgaXRlbS50eXBlKSA+PSAwKSB7XHJcbiAgICAgICAgaXRlbS50eXBlID0gJ251bWJlcic7XHJcbiAgICAgICAgaWYgKGl0ZW0udW5pdCA9PSBudWxsKVxyXG4gICAgICAgICAgaXRlbS51bml0ID0gSlNEcmF3Mi5UYWJsZS5rRGVmYXVsdFVuaXRzW2l0ZW0udHlwZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZXBvc3Rmb3JtKSB7XHJcbiAgICAgIHZhciBkaXYgPSBKc1V0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnZGl2JywgJzxmb3JtIG1ldGhvZD1cXCdwb3N0XFwnIGVuY3R5cGU9XFwnbXVsdGlwYXJ0L2Zvcm0tZGF0YVxcJz48L2Zvcm0+Jyk7XHJcbiAgICAgIHRoaXMucG9zdGZvcm0gPSBkaXYuZmlyc3RDaGlsZDtcclxuICAgICAgcGFyZW50ID0gdGhpcy5wb3N0Zm9ybTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgY29scyA9IHRoaXMub3B0aW9ucy5jb2xzO1xyXG4gICAgaWYgKCEoY29scyA+IDApKSB7XHJcbiAgICAgIGlmICghKGNvbHMgPiAxKSlcclxuICAgICAgICBjb2xzID0gMTtcclxuICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5pdGVtcykge1xyXG4gICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zW2lkXTtcclxuICAgICAgICBpZiAoaXRlbS5jb2xzcGFuID4gY29scylcclxuICAgICAgICAgIGNvbHMgPSBpdGVtLmNvbHNwYW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgdHI6IEhUTUxUYWJsZVJvd0VsZW1lbnQ7XHJcbiAgICB2YXIgY29sc3BhbiA9IGNvbHM7XHJcbiAgICB0aGlzLnRib2R5ID0gc2NpbC5VdGlscy5jcmVhdGVUYWJsZShwYXJlbnQpO1xyXG4gICAgdmFyIGxhc3RpdGVtID0gbnVsbDtcclxuICAgIGZvciAodmFyIGlkIGluIHRoaXMuaXRlbXMpIHtcclxuICAgICAgaXRlbSA9IHRoaXMuaXRlbXNbaWRdO1xyXG4gICAgICBpZiAodHlwZW9mIChpdGVtKSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdncm91cCcpIHtcclxuICAgICAgICB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRib2R5LCAndHInKTtcclxuICAgICAgICBjb2xzcGFuID0gY29scztcclxuICAgICAgfSBlbHNlIGlmIChsYXN0aXRlbSAhPSBudWxsICYmIGxhc3RpdGVtLnR5cGUgPT0gJ2dyb3VwJyB8fCAhKHRyICE9IG51bGwgJiYgY29scyA+IDEgJiYgY29sc3BhbiA8IGNvbHMpKSB7XHJcbiAgICAgICAgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICAgICAgY29sc3BhbiA9IGl0ZW0uY29sc3BhbiA+IDAgPyBpdGVtLmNvbHNwYW4gOiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbHNwYW4gKz0gaXRlbS5jb2xzcGFuID4gMCA/IGl0ZW0uY29sc3BhbiA6IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBmaWVsZCA9IHRoaXMubmV3RmllbGQoaXRlbSwgdHIsIGltbWVkaWF0ZWx5LCAob3B0aW9ucyA9PSBudWxsID8gbnVsbCA6IG9wdGlvbnMuaGlkZWxhYmVsKSwgKG9wdGlvbnMgPT0gbnVsbCA/IG51bGwgOiBvcHRpb25zLnZlcnRpY2FsKSk7XHJcbiAgICAgIGlmIChmaWVsZCAhPSBudWxsKVxyXG4gICAgICAgIGl0ZW0uZmllbGQgPSB0aGlzLmZpZWxkc1tpZF0gPSBmaWVsZDtcclxuXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2dyb3VwJyAmJiBjb2xzID4gMSlcclxuICAgICAgICBpdGVtLnRkMS5jb2xTcGFuID0gY29scyAqIDI7XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0uY29sc3BhbiA+IDEpXHJcbiAgICAgICAgaXRlbS50ZDIuY29sU3BhbiA9IChpdGVtLnRkMi5jb2xTcGFuID4gMCA/IGl0ZW0udGQyLmNvbFNwYW4gOiAxKSArIChpdGVtLmNvbHNwYW4gLSAxKSAqIDI7XHJcblxyXG4gICAgICBpZiAoZmllbGQgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMub25lbnRlciAhPSBudWxsICYmIGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJylcclxuICAgICAgICB0aGlzLmNvbm5lY3RLZXlFbnRlcihmaWVsZCwgdGhpcy5vcHRpb25zLm9uZW50ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25zZWxlY3Ryb3cgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgICBkb2pvLmNvbm5lY3QodGhpcy50Ym9keS5wYXJlbnROb2RlLCAnb25jbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5vbnNlbGVjdHJvdyhlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFsaWduICE9IG51bGwpXHJcbiAgICAgIHRoaXMudGJvZHkucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoJ2FsaWduJywgYWxpZ24pO1xyXG5cclxuICAgIGlmIChidXR0b25zICE9IG51bGwpIHtcclxuICAgICAgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgJyZuYnNwOycpO1xyXG4gICAgICB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRib2R5LCAndHInKTtcclxuICAgICAgdGhpcy5idXR0b25UUiA9IHRyO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCB8fCAhb3B0aW9ucy52ZXJ0aWNhbClcclxuICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcpO1xyXG5cclxuICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCB7d2hpdGVTcGFjZTogJ25vd3JhcCd9KTtcclxuICAgICAgaWYgKG9wdGlvbnMuY2VudGVyYnV0dG9ucylcclxuICAgICAgICB0ZC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgdmFyIGIgPSBidXR0b25zW2ldO1xyXG4gICAgICAgICAgaWYgKGIgPT0gJyAnKVxyXG4gICAgICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdzcGFuJywgJyZuYnNwOycpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnMucHVzaChzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbih0ZCwgYiwgdGhpcy5sYW5nKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYnV0dG9ucy5wdXNoKHNjaWwuVXRpbHMuY3JlYXRlQnV0dG9uKHRkLCBidXR0b25zLCB0aGlzLmxhbmcpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9zdCh1cmwsIHBhcmFtcywgY2FsbGJhY2spIHtcclxuICAgIGlmICh0aGlzLnBvc3Rmb3JtID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAocGFyYW1zID09IG51bGwpXHJcbiAgICAgIHBhcmFtcyA9IHt9O1xyXG4gICAgc2NpbC5hcHBseShwYXJhbXMsIHRoaXMuZ2V0RGF0YSgpKTtcclxuXHJcbiAgICBzY2lsLlV0aWxzLmFqYXhVcGxvYWRGaWxlKHRoaXMucG9zdGZvcm0sIHVybCwgcGFyYW1zLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwb3N0Rm9ybSh1cmwsIHBhcmFtcywgY2FsbGJhY2spIHtcclxuICAgIGlmICh0aGlzLnBvc3Rmb3JtID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHNjaWwuVXRpbHMuYWpheFVwbG9hZEZpbGUodGhpcy5wb3N0Zm9ybSwgdXJsLCBwYXJhbXMsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAqIEBmdW5jdGlvbiBjaGVja1JlcXVpcmVkRmllbGRzXHJcbiAgICovXHJcbiAgY2hlY2tSZXF1aXJlZEZpZWxkcygpIHtcclxuICAgIHZhciBmaWVsZHMgPSB0aGlzLmZpZWxkcztcclxuICAgIHZhciBuID0gMDtcclxuICAgIGZvciAodmFyIGsgaW4gdGhpcy5pdGVtcykge1xyXG4gICAgICB2YXIgaXRlbSA9IHRoaXMuaXRlbXNba107XHJcbiAgICAgIHZhciBmaWVsZCA9IGZpZWxkc1trXTtcclxuICAgICAgaWYgKGl0ZW0gPT0gbnVsbCB8fCBmaWVsZCA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgaXRlbS50ZDEuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gSlNEcmF3Mi5Ta2luLmZvcm0ubGFiZWxzdHlsZXMuYmFja2dyb3VuZENvbG9yO1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICdqc2RyYXcudGFibGUnKSB7XHJcbiAgICAgICAgbiArPSBmaWVsZC5qc2QuY2hlY2tSZXF1aXJlZEZpZWxkcygwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFpdGVtLnJlcXVpcmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdmFyIHMgPSBzY2lsLkZvcm0uZ2V0RmllbGREYXRhKGZpZWxkKTtcclxuICAgICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSkge1xyXG4gICAgICAgIGl0ZW0udGQxLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZWQnO1xyXG4gICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCByZXF1aXJlZCBmaWVsZHNcclxuICAgKiBAZnVuY3Rpb24gcmVzZXRSZXF1aXJlZEZpZWxkc1xyXG4gICAqL1xyXG4gIHJlc2V0UmVxdWlyZWRGaWVsZHMoKSB7XHJcbiAgICB2YXIgZmllbGRzID0gdGhpcy5maWVsZHM7XHJcbiAgICBmb3IgKHZhciBrIGluIHRoaXMuaXRlbXMpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2tdO1xyXG4gICAgICB2YXIgZmllbGQgPSBmaWVsZHNba107XHJcbiAgICAgIGlmIChpdGVtID09IG51bGwgfHwgZmllbGQgPT0gbnVsbClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGl0ZW0udGQxLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IEpTRHJhdzIuU2tpbi5mb3JtLmxhYmVsc3R5bGVzLmJhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbm5lY3RLZXlFbnRlcihmaWVsZCwgb25lbnRlcikge1xyXG4gICAgZG9qby5jb25uZWN0KGZpZWxkLCAnb25rZXlkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICBpZiAoZS5rZXlDb2RlID09IDEzKSB7XHJcbiAgICAgICAgb25lbnRlcihmaWVsZCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5ld0ZpZWxkKGl0ZW0sIHRyLCBpbW1lZGlhdGVseSwgaGlkZWxhYmVsLCB2ZXJpdGNhbCkge1xyXG4gICAgdmFyIG1lID0gdGhpcztcclxuICAgIGlmICghdGhpcy52aWV3b25seSkge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICdqc2RyYXcnIHx8IGl0ZW0udHlwZSA9PSAneGRyYXcnKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMgIT0gbnVsbCAmJiBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnVzZXhkcmF3KVxyXG4gICAgICAgICAgaXRlbS50eXBlID0gJ3hkcmF3JztcclxuICAgICAgICAvL2lmIChpdGVtLm9wdGlvbnMgPT0gbnVsbClcclxuICAgICAgICAvLyAgICBpdGVtLm9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8gSSM5MTMyXHJcbiAgICAgICAgaWYgKGl0ZW0ub3B0aW9ucyAhPSBudWxsKVxyXG4gICAgICAgICAgaXRlbS5vcHRpb25zLm9uZGF0YWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBtZS5vbmNoYW5nZShmaWVsZCk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGl0ZW0ub25kYXRhY2hhbmdlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIG1lLm9uY2hhbmdlKGZpZWxkKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdqc2RyYXcudGFibGUnIHx8IGl0ZW0udHlwZSA9PSAnanNkcmF3LnNlJyB8fCBpdGVtLnR5cGUgPT0gJ2pzZHJhdy5mbScgfHwgaXRlbS50eXBlID09ICd0YWJsZScgfHxcclxuICAgICAgICBpdGVtLnR5cGUgPT0gJ3BsYXRlJyB8fCBpdGVtLnR5cGUgPT0gJ3BsYXRlcycgfHwgaXRlbS50eXBlID09ICd0YWJ0ZXh0JyB8fCBpdGVtLnR5cGUgPT0gJ3JpY2h0ZXh0JyB8fCBpdGVtLnR5cGUgPT0gJ3BsYWludGV4dCcpIHtcclxuICAgICAgICAvL2lmIChpdGVtLm9wdGlvbnMgPT0gbnVsbClcclxuICAgICAgICAvLyAgICBpdGVtLm9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8gSSM5MTMyXHJcbiAgICAgICAgaWYgKGl0ZW0ub3B0aW9ucyAhPSBudWxsKVxyXG4gICAgICAgICAgaXRlbS5vcHRpb25zLm9uY2hhbmdlID0gZnVuY3Rpb24oanNzLCBhcmdzKSB7XHJcbiAgICAgICAgICAgIG1lLm9uY2hhbmdlKGZpZWxkLCBhcmdzKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgaXRlbS5vbmNoYW5nZSA9IGZ1bmN0aW9uKGpzcywgYXJncykge1xyXG4gICAgICAgICAgICBtZS5vbmNoYW5nZShmaWVsZCwgYXJncyk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGZpZWxkID0gdGhpcy5uZXdGaWVsZDIoaXRlbSwgdHIsIGltbWVkaWF0ZWx5LCBoaWRlbGFiZWwsIHZlcml0Y2FsKTtcclxuICAgIGlmIChmaWVsZCA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAoIXRoaXMudmlld29ubHkpIHtcclxuICAgICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJyB8fCBmaWVsZC50YWdOYW1lID09ICdURVhUQVJFQScpXHJcbiAgICAgICAgc2NpbC5jb25uZWN0KGZpZWxkLCAnb25jaGFuZ2UnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLm9uY2hhbmdlKGZpZWxkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgZWxzZSBpZiAoZmllbGQudGFnTmFtZSA9PSAnU0VMRUNUJyAmJiAhSlNEcmF3Mi5fX3RvdWNobW9sYXBwKSAvLyBUb3VjaE1vbCBmb3IgV29yZCBmYWlscyBoZXJlXHJcbiAgICAgICAgc2NpbC5jb25uZWN0KGZpZWxkLCBzY2lsLlV0aWxzLmlzSUUgJiYgc2NpbC5VdGlscy5pc0lFIDwgOSA/ICdvbmNsaWNrJyA6ICdvbmNoYW5nZScsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgbWUub25jaGFuZ2UoZmllbGQpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJyAmJiBpdGVtLm1vYmlsZWRhdGEgIT0gbnVsbCAmJiBpdGVtLnR5cGUgIT0gJ251bWJlcicpXHJcbiAgICAgICAgbmV3IHNjaWwuTW9iaWxlRGF0YShmaWVsZCwge2NhdGVnb3J5OiBpdGVtLm1vYmlsZWRhdGEsIHVybDogc2NpbC5Nb2JpbGVEYXRhLmdldERlZmF1bHRVcmwoZmFsc2UpfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfVxyXG5cclxuICBuZXdGaWVsZDIoaXRlbSwgdHIsIGltbWVkaWF0ZWx5LCBoaWRlbGFiZWwsIHZlcml0Y2FsKSB7XHJcbiAgICB2YXIgcyA9IGl0ZW0ubGFiZWwgPT0gbnVsbCA/ICcmbmJzcDsnIDogdGhpcy5sYW5nLnJlcyhpdGVtLmxhYmVsKSArICc6JztcclxuICAgIGlmIChpdGVtLnR5cGUgPT0gJ2dyb3VwJykge1xyXG4gICAgICBpZiAodGhpcy50Ym9keS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMudGJvZHksICd0cicpLCAndGQnLCAnJm5ic3A7Jywge2ZvbnRTaXplOiAnNTAlJ30sIHtjb2xTcGFuOiAyfSk7XHJcbiAgICAgICAgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICAgIH1cclxuICAgICAgdHIuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9oZWFkZXItYmcuZ2lmJywgdHJ1ZSk7XHJcbiAgICAgIHRyLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXgnO1xyXG5cclxuICAgICAgdmFyIGQgPSBkb2pvLmNsb25lKEpTRHJhdzIuU2tpbi5mb3JtLmxhYmVsc3R5bGVzKTtcclxuICAgICAgc2NpbC5hcHBseShkLCB7Zm9udFdlaWdodDogJ2JvbGQnLCBjb2xvcjogJyM1NTUnLCBiYWNrZ3JvdW5kOiAnJ30pO1xyXG4gICAgICBpZiAoaXRlbS5jb2xsYXBzaWJsZSAhPSBmYWxzZSlcclxuICAgICAgICBzY2lsLmFwcGx5KGQsIHtiYWNrZ3JvdW5kSW1hZ2U6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvY29sbGFwc2UuZ2lmJywgdHJ1ZSksIGJhY2tncm91bmRQb3NpdGlvbjogJ3JpZ2h0JywgYmFja2dyb3VuZFJlcGVhdDogJ25vLXJlcGVhdCd9KTtcclxuICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBzLCBkLCB7Y29sU3BhbjogMn0pO1xyXG4gICAgICBpZiAoaXRlbS5jb2xsYXBzaWJsZSAhPSBmYWxzZSlcclxuICAgICAgICBkb2pvLmNvbm5lY3QodGQsICdvbmNsaWNrJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgc2NpbC5Gb3JtLmV4cGFuZChlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgaXRlbS5ncm91cCA9IHRkO1xyXG4gICAgICBpdGVtLnRkMSA9IHRkO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdub3RlJykge1xyXG4gICAgICB2YXIgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIG51bGwsIHtjb2xTcGFuOiAyfSk7XHJcbiAgICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdkaXYnLCB0aGlzLmxhbmcucmVzKGl0ZW0ubGFiZWwgfHwgaXRlbS5zdHIpLCBpdGVtLnN0eWxlKTtcclxuICAgICAgaWYgKGl0ZW0uY29sb3IgIT0gbnVsbClcclxuICAgICAgICBkaXYuc3R5bGUuY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBpdGVtLnRkMSA9IHRkO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChoaWRlbGFiZWwpIHtcclxuICAgICAgICBpdGVtLnRkMSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucmVxdWlyZWQpXHJcbiAgICAgICAgICBzICs9ICc8c3BhbiBzdHlsZT1cXCdjb2xvcjpyZWRcXCcgdGl0bGU9XFwnJyArIHRoaXMubGFuZy5yZXMoJ1JlcXVpcmVkJykgKyAnXFwnPio8L3NwYW4+JztcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KGl0ZW0uaWNvbikpIHtcclxuICAgICAgICAgIGl0ZW0udGQxID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBzLCBKU0RyYXcyLlNraW4uZm9ybS5sYWJlbHN0eWxlcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGl0ZW0udGQxID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnKTtcclxuICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChpdGVtLnRkMSwgJ2ltZycsIG51bGwsIG51bGwsIHtzcmM6IGl0ZW0uaWNvbn0pO1xyXG4gICAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KGl0ZW0udGQxLCAnc3BhbicsIHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGFiZWxzdHlsZSAhPSBudWxsKVxyXG4gICAgICAgICAgc2NpbC5hcHBseShpdGVtLnRkMS5zdHlsZSwgaXRlbS5sYWJlbHN0eWxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodmVyaXRjYWwpXHJcbiAgICAgICAgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50Ym9keSwgJ3RyJyk7XHJcbiAgICAgIHZhciB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgaXRlbS5sZWFkaW5nLCBudWxsLCB7dmFsaWduOiAndG9wJ30pO1xyXG4gICAgICBpdGVtLnRkMiA9IHRkO1xyXG4gICAgICB2YXIgZmllbGQgPSBzY2lsLkZvcm0uY3JlYXRlRmllbGQodGQsIGl0ZW0sIHRoaXMudmlld29ubHksIGl0ZW0udmFsdWUsIG51bGwsIGltbWVkaWF0ZWx5LCBudWxsLCB0aGlzKTtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnaGlkZGVuJykge1xyXG4gICAgICAgIHRyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgdHIuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnMScpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmaWVsZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpZWxkVmFsdWUoa2V5KSB7XHJcbiAgICByZXR1cm4gc2NpbC5Gb3JtLmdldEZpZWxkRGF0YSh0aGlzLmZpZWxkc1trZXldKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKGtleSkge1xyXG4gICAgc2NpbC5Gb3JtLmZvY3VzKHRoaXMuZmllbGRzLCBrZXkpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm0gZXh0ZW5kcyBGb3JtSW50IHtcclxuICBzdGF0aWMgZm9jdXMoZmllbGRzLCBrZXkpIHtcclxuICAgIGlmIChmaWVsZHMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBmaWVsZCA9IG51bGw7XHJcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgayBpbiBmaWVsZHMpIHtcclxuICAgICAgICB2YXIgZiA9IGZpZWxkc1trXTtcclxuICAgICAgICBpZiAoZiAhPSBudWxsICYmIChmLnRhZ05hbWUgPT0gJ0lOUFVUJyB8fCBmLnRhZ05hbWUgPT0gJ1RFWFRBUkVBJyB8fCBmLnRhZ05hbWUgPT0gJ1NFTEVDVCcpICYmICFmLmRpc2FibGVkICYmICFmLnJlYWRPbmx5KSB7XHJcbiAgICAgICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmdldFBhcmVudChmLCAnVFInKTtcclxuICAgICAgICAgIGlmICh0ciAhPSBudWxsICYmIHRyLnN0eWxlLmRpc3BsYXkgIT0gJ25vbmUnICYmICFmLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGZpZWxkID0gZjtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWVsZCA9IGZpZWxkc1trZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZCAhPSBudWxsICYmIGZpZWxkLnN0eWxlLmRpc2xheSAhPSAnbm9uZScgJiYgZmllbGQuZm9jdXMgIT0gbnVsbCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGZpZWxkLmZvY3VzKCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1lcmdlRm9ybShzcmMxLCBzcmMyKSB7XHJcbiAgICBpZiAoc3JjMSA9PSBudWxsICYmIHNyYzIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgdmFyIHJldCA9IHt9O1xyXG4gICAgaWYgKHNyYzEgPT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBrIGluIHNyYzIpIHtcclxuICAgICAgICBpZiAoc3JjMltrXSAhPSBudWxsKVxyXG4gICAgICAgICAgcmV0W2tdID0gc3JjMltrXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzcmMyID09IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgayBpbiBzcmMxKSB7XHJcbiAgICAgICAgaWYgKHNyYzFba10gIT0gbnVsbClcclxuICAgICAgICAgIHJldFtrXSA9IHNyYzFba107XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBrIGluIHNyYzEpIHtcclxuICAgICAgaWYgKHNyYzJba10gPT0gbnVsbCAmJiBzcmMxW2tdICE9IG51bGwpXHJcbiAgICAgICAgcmV0W2tdID0gc3JjMVtrXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBrIGluIHNyYzIpIHtcclxuICAgICAgaWYgKHNyYzJba10gIT0gbnVsbClcclxuICAgICAgICByZXRba10gPSBzcmMyW2tdO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZGVsZXRlIHJldFtrXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnQocGFyZW50LCB0YWcsIGh0bWwsIHN0eWxlcywgYXR0cmlidXRlcywgb25jbGljaykge1xyXG4gICAgaWYgKGF0dHJpYnV0ZXMgIT0gbnVsbCAmJiBhdHRyaWJ1dGVzLnRpdGxlICE9IG51bGwpXHJcbiAgICAgIGF0dHJpYnV0ZXMudGl0bGUgPSBzY2lsLkxhbmcucmVzKGF0dHJpYnV0ZXMudGl0bGUpO1xyXG4gICAgcmV0dXJuIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsIHRhZywgaHRtbCwgc3R5bGVzLCBhdHRyaWJ1dGVzLCBvbmNsaWNrKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBleHBhbmQoZSkge1xyXG4gICAgdmFyIHRkID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xyXG4gICAgaWYgKHRkLnRhZ05hbWUgIT0gJ1REJylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdmFyIHMgPSB0ZC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U7XHJcbiAgICB2YXIgZXhwYW5kID0gcy5pbmRleE9mKCdleHBhbmQuZ2lmJykgPiAwO1xyXG4gICAgaWYgKGV4cGFuZClcclxuICAgICAgdGQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9jb2xsYXBzZS5naWYnLCB0cnVlKTtcclxuICAgIGVsc2VcclxuICAgICAgdGQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gc2NpbC5VdGlscy5pbWdTcmMoJ2ltZy9leHBhbmQuZ2lmJywgdHJ1ZSk7XHJcblxyXG4gICAgdmFyIHRyID0gdGQucGFyZW50Tm9kZS5uZXh0U2libGluZztcclxuICAgIHdoaWxlICh0ciAhPSBudWxsICYmIHRyLmNoaWxkTm9kZXMubGVuZ3RoICE9IDEgJiYgdHIuZ2V0QXR0cmlidXRlKCdidXR0b25yb3cnKSAhPSAnMScpIHtcclxuICAgICAgaWYgKHRyLmdldEF0dHJpYnV0ZSgnaGlkZGVuJykgIT0gJzEnKVxyXG4gICAgICAgIHRyLnN0eWxlLmRpc3BsYXkgPSBleHBhbmQgPyAnJyA6ICdub25lJztcclxuICAgICAgdHIgPSB0ci5uZXh0U2libGluZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBfaXNBbGxTdHJpbmcocykge1xyXG4gICAgaWYgKHMgPT0gbnVsbCB8fCB0eXBlb2YgKHMpICE9ICdvYmplY3QnKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHMubGVuZ3RoID4gMClcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgZm9yICh2YXIgayBpbiBzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHNba10pICE9ICdzdHJpbmcnKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgKytuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG4gPiAwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIF9nZXRMaXN0SXRlbXMoaXRlbSkge1xyXG4gICAgaWYgKHR5cGVvZiAoaXRlbS5pdGVtcykgPT0gJ2Z1bmN0aW9uJylcclxuICAgICAgaXRlbS5pdGVtcyA9IGl0ZW0uaXRlbXMoKTtcclxuICAgIHZhciBsaXN0ID0gaXRlbS5pdGVtcztcclxuICAgIGlmIChsaXN0ID09IG51bGwgJiYgaXRlbS5vcHRpb25zICE9IG51bGwgJiYgaXRlbS5vcHRpb25zLml0ZW1zICE9IG51bGwpIHtcclxuICAgICAgbGlzdCA9IGl0ZW0ub3B0aW9ucy5pdGVtcztcclxuICAgICAgaXRlbS5pdGVtcyA9IGxpc3Q7XHJcbiAgICAgIGl0ZW0ub3B0aW9ucy5pdGVtcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAobGlzdCA9PSBudWxsICYmIHRoaXMuX2lzQWxsU3RyaW5nKGl0ZW0ub3B0aW9ucykpIHtcclxuICAgICAgbGlzdCA9IGl0ZW0ub3B0aW9ucztcclxuICAgICAgaXRlbS5pdGVtcyA9IGxpc3Q7XHJcbiAgICAgIGl0ZW0ub3B0aW9ucyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVGaWVsZChwYXJlbnQsIGl0ZW0sIHZpZXdvbmx5LCB2YWx1ZSwgdmFsdWVzLCBpbW1lZGlhdGVseSwgZm9ydGFibGUsIGZvcm0pIHtcclxuICAgIHZhciB0YWcgPSAnaW5wdXQnO1xyXG4gICAgdmFyIGl0ZW10eXBlID0gaXRlbS50eXBlO1xyXG4gICAgaWYgKHBhcmVudCAhPSBudWxsICYmIChpdGVtdHlwZSA9PSAnaW5wdXQnIHx8IGl0ZW10eXBlID09ICdzZWxlY3QnIHx8IGl0ZW10eXBlID09ICdkYXRlJyB8fCBpdGVtdHlwZSA9PSAnY29sb3InIHx8IGl0ZW10eXBlID09ICdyYWRpbycgfHwgaXRlbXR5cGUgPT0gJ2NoZWNrYm94JyB8fCBpdGVtdHlwZSA9PSBudWxsKSlcclxuICAgICAgcGFyZW50LnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcclxuXHJcbiAgICBpZiAoLypmb3J0YWJsZSAmJiAqL3ZpZXdvbmx5ICYmIChpdGVtdHlwZSA9PSBudWxsIHx8IGl0ZW10eXBlID09ICdpbnB1dCcgfHwgaXRlbXR5cGUgPT0gJ3NlbGVjdCcgfHwgaXRlbXR5cGUgPT0gJ2VkaXRhYmxlc2VsZWN0JyB8fFxyXG4gICAgICAgIGl0ZW10eXBlID09ICdodG1sdGV4dCcgfHwgaXRlbXR5cGUgPT0gJ211bHRpc2VsZWN0JyB8fCBpdGVtdHlwZSA9PSAnZHJvcGRvd25pbnB1dCcgfHwgaXRlbXR5cGUgPT0gJ2Ryb3Bkb3duY2hlY2snIHx8IGl0ZW10eXBlID09ICdkYXRlJykgJiZcclxuICAgICAgaXRlbS50ZW1wbGF0ZSA9PSBudWxsICYmIChmb3J0YWJsZSB8fCBpdGVtLnVuaXQgPT0gbnVsbCkpXHJcbiAgICAgIGl0ZW10eXBlID0gJ2h0bWwnO1xyXG5cclxuICAgIHN3aXRjaCAoaXRlbXR5cGUpIHtcclxuICAgIGNhc2UgJyc6XHJcbiAgICBjYXNlICdoaWRkZW4nOlxyXG4gICAgY2FzZSAnZGF0ZSc6XHJcbiAgICBjYXNlICdjb2xvcic6XHJcbiAgICBjYXNlICdlZGl0YWJsZXNlbGVjdCc6XHJcbiAgICBjYXNlICdkcm9wZG93bmlucHV0JzpcclxuICAgIGNhc2UgJ2Ryb3Bkb3duY2hlY2snOlxyXG4gICAgY2FzZSAnbXVsdGlzZWxlY3QnOlxyXG4gICAgICB0YWcgPSAnaW5wdXQnO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3Bhc3N3b3JkJzpcclxuICAgICAgdGFnID0gJ3Bhc3N3b3JkJztcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyYXdmaWxlJzpcclxuICAgICAgdGFnID0gJ2ZpbGUnO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgIHRhZyA9ICdpbnB1dCc7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnaHRtbHRleHQnOlxyXG4gICAgICB0YWcgPSAndGV4YXJlYSc7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnanNkcmF3JzpcclxuICAgIGNhc2UgJ3hkcmF3JzpcclxuICAgIGNhc2UgJ2pzZHJhdy5mbSc6XHJcbiAgICBjYXNlICdqc2RyYXcuc2UnOlxyXG4gICAgY2FzZSAnanNkcmF3LnRhYmxlJzpcclxuICAgIGNhc2UgJ3BsYXRlJzpcclxuICAgIGNhc2UgJ3BsYXRlcyc6XHJcbiAgICBjYXNlICd0YWJsZSc6XHJcbiAgICBjYXNlICd0YWJ0ZXh0JzpcclxuICAgIGNhc2UgJ3JpY2h0ZXh0JzpcclxuICAgIGNhc2UgJ3BsYWludGV4dCc6XHJcbiAgICBjYXNlICdodG1sJzpcclxuICAgIGNhc2UgJ2ZpbGVzaGVsZic6XHJcbiAgICBjYXNlICdmaWxlJzpcclxuICAgIGNhc2UgJ2ZpbGVwYXRoJzpcclxuICAgIGNhc2UgJ2ZpbGVsaW5rJzpcclxuICAgIGNhc2UgJ2ZpbGVkYmxpbmsnOlxyXG4gICAgY2FzZSAnc3ViZm9ybSc6XHJcbiAgICBjYXNlICdpbWFnZSc6XHJcbiAgICBjYXNlICdjdXJ2ZSc6XHJcbiAgICBjYXNlICdza2V0Y2hlcyc6XHJcbiAgICBjYXNlICdjb2RlJzpcclxuICAgIGNhc2UgJ3NpZ25hdHVyZSc6XHJcbiAgICAgIHRhZyA9ICdkaXYnO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2J1dHRvbic6XHJcbiAgICAgIHRhZyA9ICdidXR0b24nO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3Bvc3RmaWxlJzpcclxuICAgICAgdGFnID0gJ2ZpbGUnO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3VzZXInOlxyXG4gICAgICB0YWcgPSAnaW5wdXQnO1xyXG4gICAgICBpZiAoaXRlbS5hdXRvc3VnZ2VzdHVybCA9PSBudWxsKVxyXG4gICAgICAgIGl0ZW0uYXV0b3N1Z2dlc3R1cmwgPSAnQWpheC5hc2h4P2NtZD11c2VyLnN1Z2dlc3QnO1xyXG4gICAgICBicmVhaztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIGlmIChpdGVtdHlwZSAhPSBudWxsKVxyXG4gICAgICAgIHRhZyA9IGl0ZW10eXBlO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS52aWV3b25seSlcclxuICAgICAgdmlld29ubHkgPSBpdGVtLnZpZXdvbmx5O1xyXG5cclxuICAgIC8vaWYgKGl0ZW0udHlwZSA9PSBcIm51bWJlclwiICYmICF2aWV3b25seSAmJiBpdGVtLmFsaWduID09IG51bGwpXHJcbiAgICAvL2l0ZW0uYWxpZ24gPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgaWYgKHZpZXdvbmx5KSB7XHJcbiAgICAgIGlmICh0YWcgPT0gJ3RleHRhcmVhJylcclxuICAgICAgICB0YWcgPSAnZGl2JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIChwYXJlbnQpID09ICdzdHJpbmcnKVxyXG4gICAgICBwYXJlbnQgPSBkb2pvLmJ5SWQocGFyZW50KTtcclxuXHJcbiAgICB2YXIgZmllbGQ7XHJcbiAgICBpZiAoaXRlbXR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICB2YXIgcCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsICdsYWJlbCcsIG51bGwsIHt3aGl0ZVNwYWNlOiAnbm93cmFwJ30pO1xyXG4gICAgICBmaWVsZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwLCB0YWcsIG51bGwsIGl0ZW0uc3R5bGUsIGl0ZW0uYXR0cmlidXRlcyk7XHJcbiAgICAgIGlmIChpdGVtLnN0ciAhPSBudWxsKVxyXG4gICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwLCAnc3BhbicsIGZvcm0ubGFuZy5yZXMoaXRlbS5zdHIpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpZWxkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHBhcmVudCwgdGFnLCBudWxsLCBpdGVtLnN0eWxlLCBpdGVtLmF0dHJpYnV0ZXMpO1xyXG4gICAgICBpZiAodmlld29ubHkgJiYgdGFnID09ICdkaXYnICYmIChpdGVtLnR5cGUgPT0gJ2h0bWx0ZXh0JyB8fCBpdGVtLnR5cGUgPT0gJ3RleHRhcmVhJykgJiZcclxuICAgICAgICBpdGVtLndpZHRoICE9IG51bGwgJiYgKGl0ZW0uc3R5bGUgPT0gbnVsbCB8fCBpdGVtLnN0eWxlLm1heFdpZHRoID09IG51bGwpKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaXRlbS53aWR0aCkgPT0gJ251bWJlcicpXHJcbiAgICAgICAgICBmaWVsZC5zdHlsZS5tYXhXaWR0aCA9IGl0ZW0ud2lkdGggKyAncHgnO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGZpZWxkLnN0eWxlLm1heFdpZHRoID0gaXRlbS53aWR0aDtcclxuXHJcbiAgICAgICAgLy9maWVsZC5zdHlsZS53b3JkQnJlYWsgPVwiYnJlYWstYWxsXCI7XHJcbiAgICAgICAgZmllbGQuc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS50eXBlID09ICdzZWxlY3QnKVxyXG4gICAgICB0aGlzLl9nZXRMaXN0SXRlbXMoaXRlbSk7XHJcblxyXG4gICAgaWYgKHRhZyA9PSAnc2VsZWN0Jykge1xyXG4gICAgICB2YXIgbGlzdCA9IHRoaXMuX2dldExpc3RJdGVtcyhpdGVtKTtcclxuICAgICAgaWYgKGxpc3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBhZGRibGFuayA9IGl0ZW0uYWRkYmxhbms7XHJcbiAgICAgICAgaWYgKGFkZGJsYW5rID09IG51bGwpIHtcclxuICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGFkZGJsYW5rID0gdHJ1ZTtcclxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBsaXN0KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxpc3Rba10gPT0gbnVsbCB8fCBsaXN0W2tdID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBhZGRibGFuayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobGlzdC5sZW5ndGggPT0gMCB8fCBsaXN0WzBdICE9IG51bGwgJiYgbGlzdFswXSAhPSAnJylcclxuICAgICAgICAgICAgICBhZGRibGFuayA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhZGRibGFuaykge1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgc2NpbC5VdGlscy5saXN0T3B0aW9ucyhmaWVsZCwgWycnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNjaWwuVXRpbHMubGlzdE9wdGlvbnMoZmllbGQsIGxpc3QsIHZhbHVlLCBudWxsLCBpdGVtLnNvcnQgIT0gZmFsc2UgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udXJsICE9IG51bGwpIHtcclxuICAgICAgICBzY2lsLkZvcm0ubGlzdE9wdGlvbnMoZmllbGQsIGl0ZW0udXJsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdmlld29ubHkgJiYgaXRlbS5idXR0b24gIT0gbnVsbCkge1xyXG4gICAgICBpZiAoaXRlbS5idXR0b24ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbS5idXR0b24ubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkQnV0dG9uKHBhcmVudCwgaXRlbS5idXR0b25baV0sIGZvcm0sIGZpZWxkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkQnV0dG9uKHBhcmVudCwgaXRlbS5idXR0b24sIGZvcm0sIGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtLmJ1dHRvbjIgIT0gbnVsbClcclxuICAgICAgc2NpbC5VdGlscy5jcmVhdGVCdXR0b24ocGFyZW50LCBpdGVtLmJ1dHRvbjIpO1xyXG5cclxuICAgIGlmICghZm9ydGFibGUgJiYgKGl0ZW0uc3RyICE9IG51bGwgfHwgaXRlbS51bml0ICE9IG51bGwpICYmIGl0ZW10eXBlICE9ICdjaGVja2JveCcpXHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsICdzcGFuJywgJyZuYnNwOycgKyAoaXRlbS5zdHIgfHwgaXRlbS51bml0KSwge3doaXRlU3BhY2U6ICdub3dyYXAnfSk7XHJcbiAgICB2YXIgdyA9IGZvcnRhYmxlICYmIGl0ZW0ubGlzdHdpZHRoICE9IG51bGwgPyBpdGVtLmxpc3R3aWR0aCA6IGl0ZW0ud2lkdGg7XHJcbiAgICBpZiAodyAhPSBudWxsICYmIHcgPiAwKVxyXG4gICAgICBmaWVsZC5zdHlsZS53aWR0aCA9IHcgKyAncHgnO1xyXG5cclxuICAgIGlmIChpdGVtLmhlaWdodCA+IDAgJiYgISh2aWV3b25seSAmJiB0YWcgPT0gJ2RpdicgJiYgKGl0ZW0udHlwZSA9PSAnaHRtbHRleHQnIHx8IGl0ZW0udHlwZSA9PSAndGV4dGFyZWEnKSkpXHJcbiAgICAgIGZpZWxkLnN0eWxlLmhlaWdodCA9IGl0ZW0uaGVpZ2h0ICsgJ3B4JztcclxuXHJcbiAgICBpZiAoaXRlbS5hbGlnbiAhPSBudWxsKVxyXG4gICAgICBmaWVsZC5zdHlsZS50ZXh0QWxpZ24gPSBpdGVtLmFsaWduO1xyXG5cclxuICAgIGlmICh2aWV3b25seSkge1xyXG4gICAgICBpZiAodGFnID09ICdpbnB1dCcgfHwgdGFnID09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICBmaWVsZC5yZWFkT25seSA9IHRydWU7XHJcbiAgICAgICAgZmllbGQuc3R5bGUuYm9yZGVyID0gJ25vbmUnO1xyXG4gICAgICB9IGVsc2UgaWYgKHRhZyA9PSAnY2hlY2tib3gnIHx8IHRhZyA9PSAnc2VsZWN0Jykge1xyXG4gICAgICAgIGZpZWxkLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGl0ZW0ucmVhZG9ubHkgfHwgaXRlbS52aWV3b25seSkge1xyXG4gICAgICAgIGlmICh0YWcgPT0gJ2lucHV0JylcclxuICAgICAgICAgIGZpZWxkLnJlYWRPbmx5ID0gdHJ1ZTtcclxuICAgICAgICBlbHNlIGlmICh0YWcgPT0gJ2NoZWNrYm94JyB8fCB0YWcgPT0gJ3JhZGlvJyB8fCB0YWcgPT0gJ3NlbGVjdCcpXHJcbiAgICAgICAgICBmaWVsZC5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFnICE9ICdkaXYnIHx8IGl0ZW10eXBlID09ICd0ZXh0YXJlYScgfHwgaXRlbXR5cGUgPT0gJ2h0bWwnKVxyXG4gICAgICBmaWVsZC5zdHlsZS5jb2xvciA9IEpTRHJhdzIuU2tpbi5mb3JtLmZpZWxkY29sb3I7XHJcbiAgICBmaWVsZC5zdHlwZSA9IGl0ZW10eXBlO1xyXG5cclxuICAgIC8vIEkjMTAzNzdcclxuICAgIC8vIHZhciBhcmdzID0gaXRlbS5vcHRpb25zID09IG51bGwgPyBzY2lsLmNsb25lKGl0ZW0pIDogaXRlbS5vcHRpb25zO1xyXG4gICAgdmFyIGFyZ3MgPSBzY2lsLmNsb25lKGl0ZW0pO1xyXG4gICAgaWYgKGl0ZW0ub3B0aW9ucyAhPSBudWxsKVxyXG4gICAgICBzY2lsLmFwcGx5KGFyZ3MsIGl0ZW0ub3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHZpZXdvbmx5KVxyXG4gICAgICBhcmdzLnZpZXdvbmx5ID0gdmlld29ubHk7XHJcblxyXG4gICAgaWYgKGl0ZW10eXBlID09ICdqc2RyYXcnIHx8IGl0ZW10eXBlID09ICd4ZHJhdycpIHtcclxuICAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGl0ZW10eXBlID09ICd4ZHJhdycpXHJcbiAgICAgICAgICBmaWVsZC5zdHlsZS5oZWlnaHQgPSAnJztcclxuICAgICAgICBmaWVsZC5qc2QgPSBpdGVtdHlwZSA9PSAnanNkcmF3JyB8fCB2aWV3b25seSA/IG5ldyBKU0RyYXcyLkVkaXRvcihmaWVsZCwgYXJncykgOiBuZXcgc2NpbC5YRHJhdyhmaWVsZCwgYXJncyk7XHJcbiAgICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodmFsdWUpKVxyXG4gICAgICAgICAgc2NpbC5Gb3JtLnNldEZpZWxkRGF0YShmaWVsZCwgaXRlbSwgdmlld29ubHksIHZhbHVlKTtcclxuICAgICAgfTtcclxuICAgICAgaWYgKGltbWVkaWF0ZWx5KVxyXG4gICAgICAgIGZuKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzY2lsLnJlYWR5KGZuKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ2pzZHJhdy50YWJsZScpIHtcclxuICAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgZmllbGQuanNkID0gbmV3IEpTRHJhdzIuVGFibGUobnVsbCwgYXJncywgZmllbGQpO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0ucm93cyA+IDApIHtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSBmaWVsZC5qc2QuZ2V0Um93Q291bnQoKTsgaSA8IGl0ZW0ucm93czsgKytpKVxyXG4gICAgICAgICAgICBmaWVsZC5qc2QuaW5zZXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoaW1tZWRpYXRlbHkpXHJcbiAgICAgICAgZm4oKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHNjaWwucmVhZHkoZm4pO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAncGxhdGUnIHx8IGl0ZW10eXBlID09ICdwbGF0ZXMnKSB7XHJcbiAgICAgIHZhciBmbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChhcmdzLmhpZGV0YWJsZSA9PSBudWxsKVxyXG4gICAgICAgICAgYXJncy5oaWRldGFibGUgPSB0cnVlO1xyXG4gICAgICAgIGlmIChpdGVtdHlwZSA9PSAncGxhdGUnKVxyXG4gICAgICAgICAgZmllbGQuanNkID0gbmV3IEpTRHJhdzIuUGxhdGUoZmllbGQsIGFyZ3MpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGZpZWxkLmpzZCA9IG5ldyBKU0RyYXcyLlBsYXRlcyhmaWVsZCwgYXJncyk7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICBmaWVsZC5qc2Quc2V0WG1sKHZhbHVlKTtcclxuICAgICAgfTtcclxuICAgICAgaWYgKGltbWVkaWF0ZWx5KVxyXG4gICAgICAgIGZuKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzY2lsLnJlYWR5KGZuKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ2pzZHJhdy5zZScpIHtcclxuICAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgZmllbGQuanNkID0gbmV3IEpTRHJhdzIuU2VxdWVuY2VFZGl0b3IoZmllbGQsIGFyZ3MpO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChpbW1lZGlhdGVseSlcclxuICAgICAgICBmbigpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgc2NpbC5yZWFkeShmbik7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdqc2RyYXcuZm0nKSB7XHJcbiAgICAgIHZhciBmbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGZpZWxkLmpzZCA9IG5ldyBKU0RyYXcyLkZvcm11bGF0aW9uKGZpZWxkLCBhcmdzKTtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgICB9O1xyXG4gICAgICBpZiAoaW1tZWRpYXRlbHkpXHJcbiAgICAgICAgZm4oKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHNjaWwucmVhZHkoZm4pO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAndGFibGUnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLlRhYmxlKGFyZ3MpO1xyXG4gICAgICBmaWVsZC5qc2QucmVuZGVyKGZpZWxkLCBpdGVtLmNvbHVtbnMpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICBmaWVsZC5qc2Quc2V0WG1sKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ3RhYnRleHQnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkVGFiVGV4dChmaWVsZCwgYXJncyk7XHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAnY29kZScpIHtcclxuICAgICAgZmllbGQuc3R5bGUubWFyZ2luQm90dG9tID0gJzRweCc7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkQ29kZShmaWVsZCwgYXJncyk7XHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgIGZpZWxkLmpzZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdzaWduYXR1cmUnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkU2lnbmF0dXJlKGZpZWxkLCBhcmdzKTtcclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgZmllbGQuanNkLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xyXG4gICAgICBmaWVsZC5qc2QgPSBuZXcgc2NpbC5GaWVsZFJpY2hUZXh0KGZpZWxkLCBhcmdzKTtcclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdwbGFpbnRleHQnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkUGxhaW5UZXh0KGZpZWxkLCBhcmdzKTtcclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdzdWJmb3JtJykge1xyXG4gICAgICBmaWVsZC5qc2QgPSBuZXcgc2NpbC5GaWVsZFN1YmZvcm0oZmllbGQsIGFyZ3MpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICBmaWVsZC5qc2Quc2V0WG1sKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ2ZpbGUnIHx8IGl0ZW10eXBlID09ICdmaWxlbGluaycgfHwgaXRlbXR5cGUgPT0gJ2ZpbGVkYmxpbmsnIHx8IGl0ZW10eXBlID09ICdmaWxlcGF0aCcgfHwgaXRlbXR5cGUgPT0gJ2ltYWdlJykge1xyXG4gICAgICBpZiAoaXRlbXR5cGUgPT0gJ2ZpbGUnKVxyXG4gICAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkRmlsZShmaWVsZCwgYXJncyk7XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW10eXBlID09ICdpbWFnZScpXHJcbiAgICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuRmllbGRJbWFnZShmaWVsZCwgYXJncyk7XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW10eXBlID09ICdmaWxlbGluaycgfHwgaXRlbXR5cGUgPT0gJ2ZpbGVkYmxpbmsnIHx8IGl0ZW10eXBlID09ICdmaWxlcGF0aCcpIHtcclxuICAgICAgICBhcmdzLmNtZCA9IGl0ZW10eXBlO1xyXG4gICAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkRmlsZUxpbmsoZmllbGQsIGFyZ3MpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLnJlbmRlciAhPSBudWxsKVxyXG4gICAgICAgIHZhbHVlID0gaXRlbS5yZW5kZXIodmFsdWUsIHZhbHVlcyk7XHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAnc2tldGNoZXMnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkU2tldGNoZXMoZmllbGQsIGFyZ3MpO1xyXG4gICAgICBpZiAoaXRlbS5yZW5kZXIgIT0gbnVsbClcclxuICAgICAgICB2YWx1ZSA9IGl0ZW0ucmVuZGVyKHZhbHVlLCB2YWx1ZXMpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICBmaWVsZC5qc2Quc2V0WG1sKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ2ZpbGVzaGVsZicpIHtcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuRmlsZVNoZWxmKGZpZWxkLCBhcmdzKTtcclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgZmllbGQuanNkLmxpc3QodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAnY3VydmUnKSB7XHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkZpZWxkQ3VydmUoZmllbGQsIGFyZ3MpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbClcclxuICAgICAgICBmaWVsZC5qc2Quc2V0WG1sKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbXR5cGUgPT0gJ251bWJlcicpIHtcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuRmllbGROdW1iZXIoZmllbGQsIGFyZ3MpO1xyXG4gICAgICB0aGlzLnNldEZpZWxkRGF0YShmaWVsZCwgaXRlbSwgdmlld29ubHksIHZhbHVlLCB2YWx1ZXMpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtdHlwZSA9PSAnZGF0ZScpIHtcclxuICAgICAgaWYgKCF2aWV3b25seSAmJiAhaXRlbS52aWV3b25seSlcclxuICAgICAgICBuZXcgc2NpbC5EYXRlUGlja2VyKGZpZWxkLCBpdGVtLm9wdGlvbnMpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSAne3RvZGF5fScpXHJcbiAgICAgICAgICB2YWx1ZSA9IHNjaWwuVXRpbHMuZGF0ZVN0cihuZXcgRGF0ZSgpLCB0cnVlLCAneXl5eS1tbS1kZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0RmllbGREYXRhKGZpZWxkLCBpdGVtLCB2aWV3b25seSwgdmFsdWUsIHZhbHVlcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdjb2xvcicpIHtcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuQ29sb3JQaWNrZXIyKGZpZWxkLCB7dmlld29ubHk6IHZpZXdvbmx5fSk7XHJcbiAgICAgIHRoaXMuc2V0RmllbGREYXRhKGZpZWxkLCBpdGVtLCB2aWV3b25seSwgdmFsdWUsIHZhbHVlcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW10eXBlID09ICdidXR0b24nKSB7XHJcbiAgICAgIGZpZWxkLmlubmVySFRNTCA9IGl0ZW0udGV4dDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsIHx8IGl0ZW10eXBlID09ICdodG1sJyAmJiAoaXRlbS50ZW1wbGF0ZSAhPSBudWxsIHx8IGl0ZW0ucmVuZGVyICE9IG51bGwpKVxyXG4gICAgICAgIHRoaXMuc2V0RmllbGREYXRhKGZpZWxkLCBpdGVtLCB2aWV3b25seSwgdmFsdWUsIHZhbHVlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW10eXBlID09ICdpbWcnICYmIGl0ZW0uc3JjICE9IG51bGwpXHJcbiAgICAgIGZpZWxkLnNyYyA9IGl0ZW0uc3JjO1xyXG4gICAgaWYgKGl0ZW0udGl0bGUgIT0gbnVsbClcclxuICAgICAgZmllbGQuc2V0QXR0cmlidXRlKCd0aXRsZScsIGl0ZW0udGl0bGUpO1xyXG4gICAgaWYgKGl0ZW0ub25jbGljayAhPSBudWxsKVxyXG4gICAgICBkb2pvLmNvbm5lY3QoZmllbGQsICdvbmNsaWNrJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaXRlbS5vbmNsaWNrKGZpZWxkLCBpdGVtLCBmb3JtKTtcclxuICAgICAgfSk7XHJcbiAgICBpZiAoZmllbGQudGFnTmFtZSA9PSAnSU5QVVQnKSB7XHJcbiAgICAgIGlmIChpdGVtLm9uZW50ZXIgIT0gbnVsbClcclxuICAgICAgICBkb2pvLmNvbm5lY3QoZmllbGQsICdvbmtleWRvd24nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICBpZiAoZS5rZXlDb2RlID09IDEzKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ub25lbnRlcihmaWVsZCk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgZWxzZSBpZiAoc2NpbC5VdGlscy5pc0lFICYmIHNjaWwuVXRpbHMuaXNJRSA8IDkpIC8vIGZpeCBidWcgSSM2NTU2XHJcbiAgICAgICAgZG9qby5jb25uZWN0KGZpZWxkLCAnb25rZXlkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0uYXV0b3N1Z2dlc3QgIT0gbnVsbCAmJiBpdGVtLmF1dG9zdWdnZXN0ICE9ICcnICYmIGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJylcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuQXV0b0NvbXBsZXRlKGZpZWxkLCBpdGVtLmF1dG9zdWdnZXN0LCBpdGVtLm9wdGlvbnMsIGZvcm0pO1xyXG4gICAgZWxzZSBpZiAoaXRlbS5hdXRvc3VnZ2VzdHVybCAhPSBudWxsICYmIGl0ZW0uYXV0b3N1Z2dlc3R1cmwgIT0gJycgJiYgZmllbGQudGFnTmFtZSA9PSAnSU5QVVQnKVxyXG4gICAgICBmaWVsZC5qc2QgPSBuZXcgc2NpbC5BdXRvQ29tcGxldGUoZmllbGQsIGl0ZW0uYXV0b3N1Z2dlc3R1cmwsIGl0ZW0ub3B0aW9ucywgZm9ybSk7XHJcblxyXG4gICAgdmFyIG9wdGlvbnMgPSBpdGVtLm9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKVxyXG4gICAgICBvcHRpb25zID0ge307XHJcbiAgICBpZiAoaXRlbS5pdGVtcyAhPSBudWxsKVxyXG4gICAgICBvcHRpb25zLml0ZW1zID0gaXRlbS5pdGVtcztcclxuXHJcbiAgICBpZiAoIXZpZXdvbmx5ICYmIGl0ZW10eXBlID09ICdlZGl0YWJsZXNlbGVjdCcpXHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkVkaXRhYmxlU2VsZWN0KGZpZWxkLCBvcHRpb25zKTtcclxuICAgIGVsc2UgaWYgKCF2aWV3b25seSAmJiBpdGVtdHlwZSA9PSAnZHJvcGRvd25pbnB1dCcpXHJcbiAgICAgIGZpZWxkLmpzZCA9IG5ldyBzY2lsLkRyb3Bkb3duSW5wdXQoZmllbGQsIG9wdGlvbnMpO1xyXG4gICAgZWxzZSBpZiAoIXZpZXdvbmx5ICYmIGl0ZW10eXBlID09ICdkcm9wZG93bmNoZWNrJylcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuRHJvcGRvd25DaGVjayhmaWVsZCwgb3B0aW9ucyk7XHJcbiAgICBlbHNlIGlmICghdmlld29ubHkgJiYgaXRlbXR5cGUgPT0gJ211bHRpc2VsZWN0JylcclxuICAgICAgZmllbGQuanNkID0gbmV3IHNjaWwuRHJvcGRvd25DaGVjayhmaWVsZCwgb3B0aW9ucyk7XHJcbiAgICBlbHNlIGlmICghdmlld29ubHkgJiYgaXRlbXR5cGUgPT0gJ2h0bWx0ZXh0Jykge1xyXG4gICAgICBpZiAoYXJncy5idXR0b25zID09IG51bGwpXHJcbiAgICAgICAgYXJncy5idXR0b25zID0gW107XHJcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiAoYXJncy5idXR0b25zKSA9PSAnc3RyaW5nJylcclxuICAgICAgICBhcmdzLmJ1dHRvbnMgPSBbYXJncy5idXR0b25zXTtcclxuICAgICAgYXJncy5idXR0b25zLnB1c2goe1xyXG4gICAgICAgIGljb251cmw6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvdXBsb2FkaW1nLmdpZicpLCB0b29sdGlwczogJ0luc2VydCBJbWFnZScsIG9uY2xpY2s6IGZ1bmN0aW9uKGVkKSB7XHJcbiAgICAgICAgICBzY2lsLlJpY2h0ZXh0Lmluc2VydEltYWdlKGVkKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgYXJncy5idXR0b25zLnB1c2goe1xyXG4gICAgICAgIGljb251cmw6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvYmVuemVuZS5naWYnKSwgdG9vbHRpcHM6ICdJbnNlcnQgU3RydWN0dXJlJywgb25jbGljazogZnVuY3Rpb24oZWQpIHtcclxuICAgICAgICAgIHNjaWwuUmljaHRleHQuaW5zZXJ0U3RydWN0dXJlKGVkKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGFyZ3MuZXh0cmFidXR0b25zICE9IG51bGwpXHJcbiAgICAgICAgYXJncy5idXR0b25zLnB1c2goYXJncy5leHRyYWJ1dHRvbnMpO1xyXG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSA9PSAnJylcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBzY2lsLlJpY2h0ZXh0LmluaXRUaW55TUNFKGZpZWxkLCBhcmdzKTtcclxuICAgIH1cclxuICAgIC8vICAgICAgICBlbHNlIGlmIChpdGVtdHlwZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAvLyAgICAgICAgICAgIGRvam8uY29ubmVjdChmaWVsZCwgXCJvbmNoYW5nZVwiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgdmFyIHMgPSBmaWVsZC52YWx1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgIGlmIChzICE9IFwiXCIgJiYgcyAhPSBudWxsICYmICFzY2lsLlV0aWxzLmlzTnVtYmVyKHMsIGl0ZW0uYWxsb3dvcGVyYXRvcikpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KFwiQSBudW1iZXIgaXMgcmVxdWlyZWQhXCIpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gXCJcIjtcclxuICAgIC8vICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgfSk7XHJcbiAgICAvLyAgICAgICAgfVxyXG5cclxuICAgIC8vIEkjOTEzMlxyXG4gICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJyB8fCBmaWVsZC50YWdOYW1lID09ICdTRUxFQ1QnIHx8IGZpZWxkLnRhZ05hbWUgPT0gJ1RFWFRBUkVBJykge1xyXG4gICAgICBpZiAoaXRlbS5vbmNoYW5nZSAhPSBudWxsKVxyXG4gICAgICAgIGRvam8uY29ubmVjdChmaWVsZCwgJ29uY2hhbmdlJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBpdGVtLm9uY2hhbmdlKGZpZWxkLCBmb3JtKTtcclxuICAgICAgICB9KTtcclxuICAgICAgaWYgKGl0ZW0ub25mb2N1cyAhPSBudWxsKVxyXG4gICAgICAgIGRvam8uY29ubmVjdChmaWVsZCwgJ29uZm9jdXMnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIGl0ZW0ub25mb2N1cyhmaWVsZCwgZm9ybSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGlmIChpdGVtLm9uYmx1ciAhPSBudWxsKVxyXG4gICAgICAgIGRvam8uY29ubmVjdChmaWVsZCwgJ29uYmx1cicsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgaXRlbS5vbmJsdXIoZmllbGQsIGZvcm0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtLnBhZGRpbmcgPj0gMCAmJiAoZmllbGQudGFnTmFtZSA9PSAnSU5QVVQnIHx8IGZpZWxkLnRhZ05hbWUgPT0gJ0RJVicpKVxyXG4gICAgICBmaWVsZC5zdHlsZS5wYWRkaW5nTGVmdCA9IGZpZWxkLnN0eWxlLnBhZGRpbmdSaWdodCA9IGl0ZW0ucGFkZGluZyArICdweCc7XHJcblxyXG4gICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJyAmJiBmaWVsZC5kaXNhYmxlZCAhPSB0cnVlICYmIGl0ZW0udHlwZSAhPSAnY2hlY2tib3gnICYmIGl0ZW0udHlwZSAhPSAncmFkaW8nKVxyXG4gICAgICBkb2pvLmNvbm5lY3QoZmllbGQsICdvbmZvY3VzJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgZmllbGQuc2VsZWN0KCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChmaWVsZC5qc2QgIT0gbnVsbClcclxuICAgICAgZmllbGQuanNkLnBhcmVudGZvcm0gPSBmb3JtO1xyXG5cclxuICAgIHJldHVybiBmaWVsZDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVGaWVsZEJ1dHRvbihwYXJlbnQsIGJ1dHRvbiwgZm9ybSwgZmllbGQpIHtcclxuICAgIHZhciBiID0gc2NpbC5VdGlscy5jcmVhdGVCdXR0b24ocGFyZW50LCBidXR0b24pO1xyXG4gICAgaWYgKGIgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoYnV0dG9uLm9uY2xpY2syICE9IG51bGwpIHtcclxuICAgICAgICBkb2pvLmNvbm5lY3QoYiwgJ29uY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrMihmaWVsZCwgZm9ybSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLmFqYXh1cmwgIT0gbnVsbCkge1xyXG4gICAgICAgIGRvam8uY29ubmVjdChiLCAnb25jbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgc2NpbC5VdGlscy5hamF4KGJ1dHRvbi5hamF4dXJsLCBmdW5jdGlvbihyZXQpIHtcclxuICAgICAgICAgICAgaWYgKGJ1dHRvbi5hcHBlbmQgIT0gbnVsbClcclxuICAgICAgICAgICAgICBmaWVsZC52YWx1ZSArPSByZXQgKyBidXR0b24uYXBwZW5kO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSByZXQ7XHJcbiAgICAgICAgICB9LCB7cTogZmllbGQudmFsdWV9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZpZWxkRGF0YShmaWVsZCwgaXRlbT86IEl0ZW1UeXBlKSB7XHJcbiAgICBpZiAoZmllbGQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKGZpZWxkLnN0eXBlID09ICdqc2RyYXcnKSB7XHJcbiAgICAgIGlmIChpdGVtICE9IG51bGwgJiYgaXRlbS5kYXRhZm9ybWF0ICE9IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkLmpzZC5nZXREYXRhKGl0ZW0uZGF0YWZvcm1hdCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZmllbGQuanNkLmdldFhtbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLnN0eXBlID09ICd4ZHJhdycgfHwgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy5zZScgfHwgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy5mbScgfHxcclxuICAgICAgZmllbGQuc3R5cGUgPT0gJ3RhYmxlJyB8fCBmaWVsZC5zdHlwZSA9PSAncGxhdGUnIHx8IGZpZWxkLnN0eXBlID09ICdwbGF0ZXMnKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5qc2QuZ2V0WG1sKCk7XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdqc2RyYXcudGFibGUnKSB7XHJcbiAgICAgIGlmIChmaWVsZC5qc2QuZ2V0Um93Q291bnQoKSA9PSAwKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICByZXR1cm4gZmllbGQuanNkLmdldFhtbCgpO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09ICdjaGVja2JveCcgfHwgZmllbGQudHlwZSA9PSAncmFkaW8nKVxyXG4gICAgICByZXR1cm4gZmllbGQuY2hlY2tlZDtcclxuICAgIGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdodG1sdGV4dCcpIHtcclxuICAgICAgdmFyIGVkID0gc2NpbC5Gb3JtLmdldEVkKGZpZWxkKTtcclxuICAgICAgcmV0dXJuIGVkID09IG51bGwgPyBmaWVsZC5pbm5lckhUTUwgOiBzY2lsLlJpY2h0ZXh0LmdldEh0bWwoZWQpO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC5zdHlwZSA9PSAnZmlsZScgfHwgZmllbGQuc3R5cGUgPT0gJ2ZpbGVsaW5rJyB8fCBmaWVsZC5zdHlwZSA9PSAnZmlsZWRibGluaycgfHwgZmllbGQuc3R5cGUgPT0gJ2ZpbGVwYXRoJyB8fFxyXG4gICAgICBmaWVsZC5zdHlwZSA9PSAnaW1hZ2UnIHx8IGZpZWxkLnN0eXBlID09ICdjdXJ2ZScgfHwgZmllbGQuc3R5cGUgPT0gJ3NrZXRjaGVzJylcclxuICAgICAgcmV0dXJuIGZpZWxkLmpzZC5nZXRYbWwoKTtcclxuICAgIGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICd0YWJ0ZXh0JyB8fCBmaWVsZC5zdHlwZSA9PSAncmljaHRleHQnIHx8IGZpZWxkLnN0eXBlID09ICdwbGFpbnRleHQnIHx8IGZpZWxkLnN0eXBlID09ICdzdWJmb3JtJylcclxuICAgICAgcmV0dXJuIGZpZWxkLmpzZC5nZXRYbWwoKTtcclxuICAgIGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdjb2RlJylcclxuICAgICAgcmV0dXJuIGZpZWxkLmpzZC5nZXRWYWx1ZSgpO1xyXG4gICAgZWxzZSBpZiAoZmllbGQuc3R5cGUgPT0gJ3NpZ25hdHVyZScpXHJcbiAgICAgIHJldHVybiBmaWVsZC5qc2QuZ2V0VmFsdWUoKTtcclxuICAgIGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdudW1iZXInKVxyXG4gICAgICByZXR1cm4gZmllbGQuanNkLmdldFZhbHVlKCk7XHJcbiAgICBlbHNlIGlmIChmaWVsZC50eXBlID09ICdwYXNzd29yZCcpXHJcbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZSA9PSAnJyA/ICcnIDogKGl0ZW0uZW5jcnlwdCAhPSBmYWxzZSAmJiBKU0RyYXcyLnBhc3N3b3JkICE9IG51bGwgJiYgSlNEcmF3Mi5wYXNzd29yZC5lbmNyeXB0ICYmIHNjaWwuRm9ybS5lbmNyeXB0cGFzc3dvcmQgIT0gbnVsbCA/IHNjaWwuRm9ybS5lbmNyeXB0cGFzc3dvcmQoZmllbGQudmFsdWUpIDogZmllbGQudmFsdWUpO1xyXG4gICAgZWxzZSBpZiAoZmllbGQuc3R5cGUgPT0gJ3Bvc3RmaWxlJyB8fCBmaWVsZC5zdHlwZSA9PSAnYnV0dG9uJylcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGZpZWxkLnZhbHVlID09IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkLmdldEF0dHJpYnV0ZSgnb3JpZ2luYWx2YWx1ZScpO1xyXG4gICAgICByZXR1cm4gZmllbGQudmFsdWUgPT0gJycgPyBudWxsIDogZmllbGQudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0RmllbGREYXRhKGZpZWxkLCBpdGVtLCB2aWV3b25seSwgdmFsdWUsIHZhbHVlcz86IGFueSkge1xyXG4gICAgaWYgKGl0ZW0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBvcmlnaW5hbHZhbHVlID0gdmFsdWU7XHJcbiAgICBpZiAoaXRlbS5yZW5kZXIgIT0gbnVsbClcclxuICAgICAgdmFsdWUgPSBpdGVtLnJlbmRlcih2YWx1ZSwgdmFsdWVzKTtcclxuXHJcbiAgICBpZiAodmlld29ubHkgJiYgaXRlbS5tYXhsZW5ndGggPiAwICYmIHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IGl0ZW0ubWF4bGVuZ3RoKVxyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCBpdGVtLm1heGxlbmd0aCAtIDMpICsgJy4uLic7XHJcblxyXG4gICAgaWYgKGZpZWxkLnN0eXBlID09ICdqc2RyYXcnIHx8IGZpZWxkLnN0eXBlID09ICd4ZHJhdycgfHwgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy50YWJsZScgfHwgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy5zZScgfHxcclxuICAgICAgZmllbGQuc3R5cGUgPT0gJ2pzZHJhdy5mbScgfHwgZmllbGQuc3R5cGUgPT0gJ3BsYXRlJyB8fCBmaWVsZC5zdHlwZSA9PSAncGxhdGVzJykge1xyXG4gICAgICBpZiAoZmllbGQuc3R5cGUgPT0gJ2pzZHJhdycgfHwgZmllbGQuc3R5cGUgPT0gJ3hkcmF3JyB8fCBmaWVsZC5zdHlwZSA9PSAnanNkcmF3LnRhYmxlJyAmJiBpdGVtLm9wdGlvbnMgIT0gbnVsbCAmJiBpdGVtLm9wdGlvbnMuc3ByZWFkc2hlZXQpXHJcbiAgICAgICAgZmllbGQuanNkLmNsZWFyKHRydWUpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZmllbGQuanNkLmNsZWFyKCk7XHJcblxyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICdqc2RyYXcnKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0YWZvcm1hdCAhPSBudWxsKVxyXG4gICAgICAgICAgZmllbGQuanNkLnNldERhdGEodmFsdWUsIGl0ZW0uZGF0YWZvcm1hdCk7XHJcbiAgICAgICAgZWxzZSBpZiAoISh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnICYmIHZhbHVlID09ICcnKSlcclxuICAgICAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLnJvd3MgIT0gbnVsbCAmJiBmaWVsZC5zdHlwZSA9PSAnanNkcmF3LnRhYmxlJylcclxuICAgICAgICAgIGZpZWxkLmpzZC5zZXRKc29uKHZhbHVlKTtcclxuICAgICAgICBlbHNlIGlmICghKHZhbHVlID09IG51bGwgfHwgdHlwZW9mICh2YWx1ZSkgPT0gJ3N0cmluZycgJiYgdmFsdWUgPT0gJycpKVxyXG4gICAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmIChmaWVsZC5zdHlwZSA9PSAnanNkcmF3LnRhYmxlJyAmJiBpdGVtLm9wdGlvbnMgIT0gbnVsbCAmJiBpdGVtLm9wdGlvbnMuc3ByZWFkc2hlZXQpXHJcbiAgICAgICAgICBmaWVsZC5qc2QuY3JlYXRlVGFibGUoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpZWxkLnN0eXBlID09ICdqc2RyYXcudGFibGUnICYmIGl0ZW0ucm93cyA+IDApIHtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSBmaWVsZC5qc2QuZ2V0Um93Q291bnQoKTsgaSA8IGl0ZW0ucm93czsgKytpKVxyXG4gICAgICAgICAgICBmaWVsZC5qc2QuaW5zZXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICd0YWJsZScpIHtcclxuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnIHx8IHR5cGVvZiAodmFsdWUpID09ICdvYmplY3QnICYmIHZhbHVlLnRhZ05hbWUgPT0gJ3RhYmxlJykpXHJcbiAgICAgICAgZmllbGQuanNkLnNldFhtbCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gMClcclxuICAgICAgICBmaWVsZC5qc2Quc2V0RGF0YSh2YWx1ZSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBmaWVsZC5qc2Quc2V0RGF0YShbXSk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAndGFidGV4dCcgfHwgaXRlbS50eXBlID09ICdyaWNodGV4dCcgfHwgaXRlbS50eXBlID09ICdwbGFpbnRleHQnKSB7XHJcbiAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2NoZWNrYm94JyB8fCBpdGVtLnR5cGUgPT0gJ3JhZGlvJykge1xyXG4gICAgICBmaWVsZC5jaGVja2VkID0gc2NpbC5VdGlscy5pc1RydWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ3NlbGVjdCcpIHtcclxuICAgICAgaWYgKHZpZXdvbmx5KSB7XHJcbiAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9nZXRMaXN0SXRlbXMoaXRlbSk7XHJcbiAgICAgICAgaWYgKGxpc3QgIT0gbnVsbCAmJiBsaXN0Lmxlbmd0aCA9PSBudWxsKVxyXG4gICAgICAgICAgdmFsdWUgPSBsaXN0W3ZhbHVlXTtcclxuICAgICAgICB0aGlzLl9zZXRJbm5lckhUTUwoZmllbGQsIHZhbHVlLCBvcmlnaW5hbHZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzY2lsLlV0aWxzLnNlbGVjdE9wdGlvbihmaWVsZCwgdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZScpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnICYmICFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodmFsdWUpICYmICFpc05hTih2YWx1ZSBhcyBhbnkpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpKVxyXG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBzID0gaXRlbS50aW1lZm9ybWF0ID09IG51bGwgPyBzY2lsLlV0aWxzLmRhdGVTdHIodmFsdWUsIHRydWUsIGl0ZW0uZGF0ZWZvcm1hdCkgOiBzY2lsLlV0aWxzLnRpbWVTdHIodmFsdWUsIHRydWUsIGl0ZW0udGltZWZvcm1hdCk7XHJcbiAgICAgIGlmICh2aWV3b25seSkge1xyXG4gICAgICAgIGlmIChmaWVsZC50YWdOYW1lID09ICdJTlBVVCcpXHJcbiAgICAgICAgICBmaWVsZC52YWx1ZSA9IHM7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fc2V0SW5uZXJIVE1MKGZpZWxkLCBzLCBvcmlnaW5hbHZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IHM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdjb2xvcicpIHtcclxuICAgICAgZmllbGQuanNkLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZmllbGQuc3R5cGUgPT0gJ2NvZGUnKSB7XHJcbiAgICAgIGZpZWxkLmpzZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdzaWduYXR1cmUnKSB7XHJcbiAgICAgIGZpZWxkLmpzZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5qc2Quc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC5zdHlwZSA9PSAnaHRtbCcpIHtcclxuICAgICAgdmFyIHMgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgaWYgKGl0ZW0gIT0gbnVsbCAmJiBpdGVtLnRlbXBsYXRlICE9IG51bGwpXHJcbiAgICAgICAgcyA9IHRoaXMucmVuZGVyVGVtcGxhdGUoaXRlbS50ZW1wbGF0ZSwgdmFsdWUsIHZhbHVlcyk7XHJcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiAocykgPT0gJ3N0cmluZycgJiYgcy5tYXRjaCgvXigoaHR0cFtzXT8pfChmdHApKTpbXFwvXXsyfS4rJC9pKSAhPSBudWxsKVxyXG4gICAgICAgIHMgPSAnPGEgdGFyZ2V0PV9ibGFuayBocmVmPVxcJycgKyBzICsgJ1xcJz4nICsgcyArICc8L2E+JztcclxuICAgICAgdGhpcy5fc2V0SW5uZXJIVE1MKGZpZWxkLCBzLCBvcmlnaW5hbHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZmllbGQuc3R5cGUgPT0gJ2ZpbGUnIHx8IGZpZWxkLnN0eXBlID09ICdmaWxlbGluaycgfHwgZmllbGQuc3R5cGUgPT0gJ2ZpbGVkYmxpbmsnIHx8IGZpZWxkLnN0eXBlID09ICdmaWxlcGF0aCcgfHwgZmllbGQuc3R5cGUgPT0gJ2ltYWdlJyB8fCBmaWVsZC5zdHlwZSA9PSAnY3VydmUnIHx8IGZpZWxkLnN0eXBlID09ICdza2V0Y2hlcycgfHwgZmllbGQuc3R5cGUgPT0gJ3N1YmZvcm0nKSB7XHJcbiAgICAgIGZpZWxkLmpzZC5zZXRYbWwodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC5zdHlwZSA9PSAnZmlsZXNoZWxmJykge1xyXG4gICAgICBmaWVsZC5qc2QubGlzdCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnaHRtbHRleHQnKSB7XHJcbiAgICAgIGlmICh2aWV3b25seSkge1xyXG4gICAgICAgIHRoaXMuX3NldElubmVySFRNTChmaWVsZCwgZmllbGQuaW5uZXJIVE1MID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUsIG9yaWdpbmFsdmFsdWUsIHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciBlZCA9IHNjaWwuRm9ybS5nZXRFZChmaWVsZCk7XHJcbiAgICAgICAgaWYgKGVkICE9IG51bGwgJiYgZWQuZG9tICE9IG51bGwpXHJcbiAgICAgICAgICBlZC5zZXRDb250ZW50KHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBmaWVsZC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnN0eXBlID09ICd0ZXh0YXJlYScpIHtcclxuICAgICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ1RFWFRBUkVBJylcclxuICAgICAgICBmaWVsZC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fc2V0SW5uZXJIVE1MKGZpZWxkLCB0aGlzLndyYXBUZXh0YXJlYSh2YWx1ZSksIG9yaWdpbmFsdmFsdWUsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmIChmaWVsZC5zdHlwZSAhPSAnZGl2JyAmJiBmaWVsZC5zdHlwZSAhPSAnYnV0dG9uJykge1xyXG4gICAgICBpZiAoZmllbGQuc3R5cGUgPT0gJ2hpZGRlbicgJiYgdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgKHZhbHVlKSA9PSAnb2JqZWN0JyAmJiB2YWx1ZS50YWdOYW1lICE9IG51bGwpIC8vIEkjMTAzNjFcclxuICAgICAgICB2YWx1ZSA9IHNjaWwuVXRpbHMuZ2V0T3V0ZXJYbWwodmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGZpZWxkLnRhZ05hbWUgPT0gJ0lOUFVUJyB8fCBmaWVsZC50YWdOYW1lID09ICdURVhUQVJFQScpXHJcbiAgICAgICAgZmllbGQudmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgZWxzZSBpZiAoZmllbGQudGFnTmFtZSA9PSAnRElWJylcclxuICAgICAgICB0aGlzLl9zZXRJbm5lckhUTUwoZmllbGQsIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlLCBvcmlnaW5hbHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS5vbnJlbmRlcmVkICE9IG51bGwpXHJcbiAgICAgIGl0ZW0ub25yZW5kZXJlZChmaWVsZCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdyYXBUZXh0YXJlYSh2YWx1ZSkge1xyXG4gICAgdmFyIHdoaXRlc3BhY2UgPSAnd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7IHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7IHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7JztcclxuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiAnPHByZSBzdHlsZT1cXCdtYXJnaW46MDtwYWRkaW5nOjA7JyArIHdoaXRlc3BhY2UgKyAnXFwnPicgKyBzY2lsLlV0aWxzLmVzY2FwZUh0bWwodmFsdWUpICsgJzwvcHJlPic7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgX3NldElubmVySFRNTChmaWVsZCwgdmFsdWUsIG9yaWdpbmFsdmFsdWUsIGNsZWFyPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpXHJcbiAgICAgIHZhbHVlID0gJyc7XHJcbiAgICBlbHNlIGlmIChjbGVhcilcclxuICAgICAgdmFsdWUgKz0gJzxkaXYgc3R5bGU9XFwnY2xlYXI6Ym90aFxcJz48L2Rpdj4nOyAvLyBJIzExOTkwXHJcblxyXG4gICAgZmllbGQuaW5uZXJIVE1MID0gdmFsdWU7XHJcblxyXG4gICAgLy8gdmVyeSB0cmlja3k6IGluIGNocm9tZTpcclxuICAgIC8vICAgICAwID09IFwiXCIgLT4gdHJ1ZVxyXG4gICAgLy8gICAgIDAgIT0gXCJcIiAtPiBmYWxzZVxyXG4gICAgLy8gaWYgKG9yaWdpbmFsdmFsdWUgIT0gbnVsbCAmJiBvcmlnaW5hbHZhbHVlICE9IFwiXCIpXHJcbiAgICBpZiAob3JpZ2luYWx2YWx1ZSAhPSBudWxsICYmIChvcmlnaW5hbHZhbHVlICsgJycpICE9ICcnKVxyXG4gICAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoJ29yaWdpbmFsdmFsdWUnLCBvcmlnaW5hbHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZW5kZXJUZW1wbGF0ZSh0ZW1wbGF0ZSwgdmFsdWUsIHZhbHVlcykge1xyXG4gICAgbGV0IHMgPSB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHtcXD9cXH0vZywgdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUpO1xyXG4gICAgaWYgKHZhbHVlcyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gcztcclxuICAgIHZhciB0b2tlbnMgPSBzLm1hdGNoKC9cXHtcXHtbYS16fDAtOV0rXFx9XFx9L2lnKTtcclxuICAgIGlmICh0b2tlbnMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHM7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XHJcbiAgICAgIHZhciBrID0gdG9rZW4uc3Vic3RyKDIsIHRva2VuLmxlbmd0aCAtIDQpO1xyXG4gICAgICB2YXIgdiA9IHZhbHVlc1trXTtcclxuICAgICAgcyA9IHMucmVwbGFjZSh0b2tlbiwgdiA9PSBudWxsID8gJycgOiB2KTtcclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxpc3RPcHRpb25zKHNlbGVjdCwgdXJsKSB7XHJcbiAgICBzY2lsLlV0aWxzLmFqYXgodXJsLCBmdW5jdGlvbihyZXQpIHtcclxuICAgICAgc2NpbC5VdGlscy5saXN0T3B0aW9ucyhzZWxlY3QsIHJldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGZvcm1cclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iaiB0aGUgZGF0YSBvYmplY3QgdG8gYmUgbG9hZGVkIGludG8gdGhlIHRhYmxlLiBvYmoubG9hZCgpIHdpbGwgYmUgY2FsbGVkXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBwYXJlbnQgcGFyZW50IGVsZW1lbnRcclxuICAgKiBAcGFyYW0ge2FycmF5fSBidXR0b25zIGFuIGFycmF5IG9mIGJ1dHRvbiBkZWZpbml0aW9ucy4gYnV0dG9uOiB7IGNhcHRpb246IHN0cmluZywgb25jbGljazogZnVuY3Rpb24gfVxyXG4gICAqIEBwYXJhbSB7YXJyYXl9IGl0ZW1zIGFuIGFycmF5IG9mIGZpZWxkIGRlZmluaXRpb25zLiBpdGVtOiB7IGlkLCBpc2tleSAuLi4gfVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gdmlld29ubHkgaW5kaWNhdGUgaWYgY3JlYXRpbmcgYSB2aWV3b25seSB0YWJsZVxyXG4gICAqIEByZXR1cm5zIGEgbmV3IFRhYmxlIG9iamVjdFxyXG4gICAqL1xyXG4gIHN0YXRpYyBjcmVhdGUob2JqLCBwYXJlbnQsIGl0ZW1zLCBidXR0b25zLCB2aWV3b25seSkge1xyXG4gICAgaWYgKHR5cGVvZiBwYXJlbnQgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IGRvam8uYnlJZChwYXJlbnQpO1xyXG5cclxuICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnZGl2Jyk7XHJcbiAgICB2YXIgZm9ybSA9IG5ldyBzY2lsLkZvcm0odmlld29ubHkpO1xyXG4gICAgZm9ybS5yZW5kZXIoZGl2LCBpdGVtcyk7XHJcblxyXG4gICAgaWYgKGJ1dHRvbnMgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgdHIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZm9ybS50Ym9keSwgJ3RyJyk7XHJcbiAgICAgIHZhciB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJyk7XHJcbiAgICAgIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnKTtcclxuXHJcbiAgICAgIGlmIChidXR0b25zLmxlbmd0aCA9PSBudWxsKSB7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVCdXR0b24odGQsIGJ1dHRvbnMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQnV0dG9uKHRkLCBidXR0b25zW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmoubG9hZCAhPSBudWxsKVxyXG4gICAgICBzY2lsLm9ubG9hZChmdW5jdGlvbigpIHtcclxuICAgICAgICBvYmoubG9hZCgpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgSFRNTCBmb3JtXHJcbiAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IGNyZWF0ZUZvcm0yXHJcbiAgICogQHBhcmFtIHtET019IHBhcmVudCBwYXJlbnQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSB7YXJyYXl9IGl0ZW1zIGFuIGFycmF5IG9mIGZpZWxkIGRlZmluaXRpb25zLiBpdGVtOiB7IGlkLCBpc2tleSAuLi4gfVxyXG4gICAqIEBwYXJhbSB7ZGljdH0gYnV0dG9ucyBidXR0b24gZGVmaW5pdGlvbjogeyBsYWJlbCwgb25jbGljayB9XHJcbiAgICogQHJldHVybnMgYSBmb3JtIG9iamVjdFxyXG4gICAqIDxwcmU+XHJcbiAgICogPGI+RXhhbXBsZTo8L2I+XHJcbiAgICogICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAgICogICAgICAgIHZhciBwYXJlbnQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQuYm9keSwgXCJkaXZcIik7XHJcbiAgICogICAgICAgIHZhciBpdGVtcyA9IHtcclxuICAgKiAgICAgICAgICAgIG5vdGVzOiB7IHR5cGU6IFwibm90ZVwiLCBsYWJlbDogXCJUaGlzIGlzIGEgdGVzdFwiIH0sXHJcbiAgICogICAgICAgICAgICB1c2VybmFtZTogeyBsYWJlbDogXCJ1c2VybmFtZTpcIiwgdGFnOiBcImlucHV0XCIsIHdpZHRoOiAyMDAgfSxcclxuICAgKiAgICAgICAgICAgIHBhc3N3b3JkOiB7IGxhYmVsOiBcIllvdXIgUGFzc3dvcmQ6XCIsIHRhZzogXCJwYXNzd29yZFwiLCB3aWR0aDogMjAwIH1cclxuICAgKiAgICAgICAgfTtcclxuICAgKiAgICAgICAgdmFyIGZvcm0gPSBzY2lsLkZvcm0uY3JlYXRlRm9ybTIocGFyZW50LCBpdGVtcywgeyBsYWJlbDogXCJMb2dpblwiLCBvbmNsaWNrOiBmdW5jdGlvbiAoKSB7IGFsZXJ0KFwiQmxhaC4uLlwiIH0gfSk7XHJcbiAgICogICAgfSk7XHJcbiAgICogPC9wcmU+XHJcbiAgICovXHJcbiAgc3RhdGljIGNyZWF0ZUZvcm0yKHBhcmVudCwgaXRlbXMsIGJ1dHRvbnMsIG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zID09IG51bGwpXHJcbiAgICAgIG9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICB2YXIgZm9ybSA9IG51bGw7XHJcbiAgICBpZiAoYnV0dG9ucyAhPSBudWxsKVxyXG4gICAgICBvcHRpb25zLmJ1dHRvbnMgPSBidXR0b25zO1xyXG4gICAgaWYgKG9wdGlvbnMudGFicyAhPSBudWxsKSB7XHJcbiAgICAgIGZvcm0gPSBuZXcgc2NpbC5UYWJiZWRGb3JtKG9wdGlvbnMpLnJlbmRlcihwYXJlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybSA9IG5ldyBzY2lsLkZvcm0ob3B0aW9ucyk7XHJcbiAgICAgIGZvcm0ucmVuZGVyKHBhcmVudCwgaXRlbXMsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgZm9yICh2YXIgayBpbiBpdGVtcykge1xyXG4gICAgICAgIGlmIChpdGVtc1trXSA9PSBudWxsKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgaWYgKGl0ZW1zW2tdLnR5cGUgPT0gJ2dyb3VwJyAmJiBpdGVtc1trXS5ncm91cCAhPSBudWxsICYmIGl0ZW1zW2tdLmNvbGxhcHNlZClcclxuICAgICAgICAgIHRoaXMuZXhwYW5kKHt0YXJnZXQ6IGl0ZW1zW2tdLmdyb3VwfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBfY29ubmV0T25DbGljayhlLCBmbikge1xyXG4gICAgZG9qby5jb25uZWN0KGUsICdvbmNsaWNrJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgIGZuKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIEhUTUwgRGlhbG9nIGZvcm1cclxuICAgKiA8cHJlPlxyXG4gICAqIDxiPkV4YW1wbGU6PC9iPlxyXG4gICAqICAgIGRvam8ucmVhZHkoZnVuY3Rpb24gKCkge1xyXG4gICAqICAgICAgICB2YXIgaXRlbXMgPSB7XHJcbiAgICogICAgICAgICAgICBub3RlczogeyB0eXBlOiBcIm5vdGVcIiwgbGFiZWw6IFwiVGhpcyBpcyBhIHRlc3RcIiB9LFxyXG4gICAqICAgICAgICAgICAgdXNlcm5hbWU6IHsgbGFiZWw6IFwidXNlcm5hbWU6XCIsIHRhZzogXCJpbnB1dFwiLCB3aWR0aDogMjAwIH0sXHJcbiAgICogICAgICAgICAgICBwYXNzd29yZDogeyBsYWJlbDogXCJZb3VyIFBhc3N3b3JkOlwiLCB0YWc6IFwicGFzc3dvcmRcIiwgd2lkdGg6IDIwMCB9XHJcbiAgICogICAgICAgIH07XHJcbiAgICogICAgICAgIHZhciBkbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybShcIkxvZ2luXCIsIGl0ZW1zLFxyXG4gICAqICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTG9naW5cIiwgb25jbGljazogZnVuY3Rpb24gKCkgeyBhbGVydChcIkJsYWguLi5cIik7IGRsZy5oaWRlKCk7IH0gfSwgMzUwKTtcclxuICAgKiAgICB9KTtcclxuICAgKiA8L3ByZT5cclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlRGxnRm9ybVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXB0aW9uIGRpYWxvZyBjYXB0aW9uXHJcbiAgICogQHBhcmFtIHthcnJheX0gaXRlbXMgYW4gYXJyYXkgb2YgZmllbGQgZGVmaW5pdGlvbnMuIGl0ZW06IHsgaWQsIGlza2V5IC4uLiB9XHJcbiAgICogQHBhcmFtIHtkaWN0fSBidXR0b25zIGJ1dHRvbiBkZWZpbml0aW9uOiB7IGxhYmVsLCBvbmNsaWNrIH1cclxuICAgKiBAcGFyYW0ge29wdGlvbnN9OiB7IG9uZW50ZXIsIHZpZXdvbmx5IH1cclxuICAgKiBAcmV0dXJucyBhIGRpYWxvZyBvYmplY3RcclxuICAgKi9cclxuICBzdGF0aWMgY3JlYXRlRGxnRm9ybShjYXB0aW9uLCBpdGVtcywgYnV0dG9ucywgb3B0aW9ucz86IGFueSk6IElEaWFsb2cge1xyXG4gICAgY29uc3QgYXJnczogYW55ID0ge307XHJcbiAgICBpZiAodHlwZW9mIChvcHRpb25zKSA9PSAnbnVtYmVyJykge1xyXG4gICAgICBhcmdzLndpZHRoID0gb3B0aW9ucyArICdweCc7XHJcbiAgICAgIG9wdGlvbnMgPSBudWxsO1xyXG4gICAgfSBlbHNlIGlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy53aWR0aCA+IDApIHtcclxuICAgICAgYXJncy53aWR0aCA9IG9wdGlvbnMud2lkdGggKyAncHgnO1xyXG4gICAgfVxyXG4gICAgdmFyIGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChudWxsLCAnZGl2JywgbnVsbCwgYXJncyk7XHJcbiAgICB2YXIgZGxnID0gbmV3IEpTRHJhdzIuRGlhbG9nKGNhcHRpb24sIGRpdiwgb3B0aW9ucyk7XHJcbiAgICBkbGcuc2hvdygpO1xyXG4gICAgZGxnLmZvcm0gPSB0aGlzLmNyZWF0ZUZvcm0yKGRpdiwgaXRlbXMsIGJ1dHRvbnMsIG9wdGlvbnMpO1xyXG4gICAgZGxnLl9zY2lsZm9ybSA9IHRydWU7XHJcbiAgICBkbGcuaGlkZSh0cnVlKTtcclxuICAgIGRsZy5zaG93Mih7b3duZXI6IHRoaXN9KTtcclxuICAgIGlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5vbmNyZWF0ZWQpXHJcbiAgICAgIG9wdGlvbnMub25jcmVhdGVkKGRsZy5mb3JtKTtcclxuICAgIHJldHVybiBkbGc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlRm9ybURsZyhjYXB0aW9uLCBpdGVtcywgYnV0dG9ucywgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGxnRm9ybShjYXB0aW9uLCBpdGVtcywgYnV0dG9ucywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBIVE1MIFRhYmJlZCBEaWFsb2cgZm9ybVxyXG4gICAqIDxwcmU+XHJcbiAgICogPGI+RXhhbXBsZTo8L2I+XHJcbiAgICogICAgJmx0O2J1dHRvbiBvbmNsaWNrPSd0ZXN0KCknJmd0O1Rlc3QmbHQ7L2J1dHRvbiZndDtcclxuICAgKiAgICAmbHQ7c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiZndDtcclxuICAgKiAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHtcclxuICAgKiAgICAgICAgICAgIHZhciBvcHRpb25zID0geyB0YWJzOiB7XHJcbiAgICogICAgICAgICAgICAgICAgYTogeyBjYXB0aW9uOiBcIlRhYiBBXCIsIGZpZWxkczogeyBmaWVsZDE6IHsgbGFiZWw6IFwiRmllbGQxXCJ9fSB9LFxyXG4gICAqICAgICAgICAgICAgICAgIGI6IHsgY2FwdGlvbjogXCJUYWIgQlwiLCBmaWVsZHM6IHsgZmllbGQyOiB7IGxhYmVsOiBcIkZpZWxkMlwiIH0sIGZpZWxkMzogeyBsYWJlbDogXCJGaWVsZDNcIn19IH1cclxuICAgKiAgICAgICAgICAgIH0sIGJ1dHRvbnM6IHsgbGFiZWw6IFwiVGVzdFwiLCBvbmNsaWNrOiBmdW5jdGlvbigpIHsgYWxlcnQoOTk5KTsgfSB9LCBib3JkZXI6IHRydWVcclxuICAgKiAgICAgICAgICAgIH07XHJcbiAgICpcclxuICAgKiAgICAgICAgICAgIHZhciBkbGcgPSBzY2lsLkZvcm0uY3JlYXRlVGFiRGxnRm9ybShcIlRlc3RcIiwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgICogICAgICAgICAgICBkbGcuZm9ybS5zZXREYXRhKHsgZmllbGQxOiBcIkFBQVwiLCBmaWVsZDI6IFwiMTI0XCIgfSk7XHJcbiAgICogICAgICAgIH1cclxuICAgKiAgICAmbHQ7L3NjcmlwdCZndDtcclxuICAgKiA8L3ByZT5cclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlVGFiRGxnRm9ybVxyXG4gICAqIEByZXR1cm5zIGEgZGlhbG9nIG9iamVjdFxyXG4gICAqL1xyXG4gIHN0YXRpYyBjcmVhdGVUYWJEbGdGb3JtKGNhcHRpb24sIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURsZ0Zvcm0oY2FwdGlvbiwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlRm9ybShpdGVtcywgYnRuLCBvbmNsaWNrLCBib3JkZXIsIGV4dHJhLCBlbnRlcikge1xyXG4gICAgY29uc3Qgc3R5bGUxOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge3ZlcnRpY2FsQWxpZ246ICd0b3AnLCB3aGl0ZVNwYWNlOiAnbm93cmFwJ307XHJcbiAgICBjb25zdCBzdHlsZTIgPSB7dGV4dEFsaWduOiAnbGVmdCd9O1xyXG4gICAgaWYgKGJvcmRlcikge1xyXG4gICAgICBzdHlsZTEuYm9yZGVyID0gJ3NvbGlkIDFweCAjZjBmMGYwJztcclxuICAgICAgc3R5bGUxLmJhY2tncm91bmRDb2xvciA9ICcjZjVmNWY1JztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKCk7XHJcblxyXG4gICAgdmFyIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChpdGVtc1tpXS5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgIHZhciB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJyk7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJywgJzxzcGFuIHN0eWxlPVxcJ2NvbG9yOnJlZDtmb250LXdlaWdodDpib2xkXFwnPiogaW5kaWNhdGVzIHJlcXVpcmVkIGZpZWxkPC9zcGFuPicsIHN0eWxlMik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgaXQgPSBpdGVtc1tpXTtcclxuICAgICAgdmFyIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuICAgICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBpdC5sYWJlbCArIChpdC5yZXF1aXJlZCA/ICc8YiBzdHlsZT1cXCdjb2xvcjpyZWRcXCc+KjwvYj4nIDogJycpLCBzdHlsZTEpO1xyXG4gICAgICBpZiAoaXQuY29sc3Bhbikge1xyXG4gICAgICAgIHRkLmNvbFNwYW4gPSAyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCBzdHlsZTIpO1xyXG5cclxuICAgICAgICBpZiAoaXQudGFnICE9IG51bGwpIHtcclxuICAgICAgICAgIHZhciBpbnB1dCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgaXQudGFnKTtcclxuICAgICAgICAgIGlmIChpdC50YWcgPT0gJ3NlbGVjdCcpXHJcbiAgICAgICAgICAgIHNjaWwuVXRpbHMubGlzdE9wdGlvbnMoaW5wdXQsIGl0Lm9wdGlvbnMpO1xyXG4gICAgICAgICAgaWYgKGl0LndpZHRoICE9IG51bGwpXHJcbiAgICAgICAgICAgIGlucHV0LnN0eWxlLndpZHRoID0gaXQud2lkdGggKyAncHgnO1xyXG4gICAgICAgICAgaWYgKGl0LmhlaWdodCAhPSBudWxsKVxyXG4gICAgICAgICAgICBpbnB1dC5zdHlsZS5oZWlnaHQgPSBpdC5oZWlnaHQgKyAncHgnO1xyXG4gICAgICAgICAgaWYgKGl0LmlkICE9IG51bGwpXHJcbiAgICAgICAgICAgIGlucHV0LmlkID0gaXQuaWQ7XHJcbiAgICAgICAgICBpZiAoaXQudGFnID09ICdoaWRkZW4nKVxyXG4gICAgICAgICAgICB0ci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgaWYgKGl0LmFsaWduICE9IG51bGwpXHJcbiAgICAgICAgICAgIGlucHV0LnN0eWxlLnRleHRBbGlnbiA9IGl0LmFsaWduO1xyXG5cclxuICAgICAgICAgIGlmIChpdC5pZCA9PSBlbnRlcilcclxuICAgICAgICAgICAgZG9qby5jb25uZWN0KGlucHV0LCAnb25rZXlkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpIHtcclxuICAgICAgICAgICAgICAgIG9uY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0LnNwYW4gIT0gbnVsbClcclxuICAgICAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZCwgJ3NwYW4nLCBpdC5zcGFuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsICcmbmJzcDsnKTtcclxuXHJcbiAgICB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcpO1xyXG4gICAgdmFyIHRkID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnKTtcclxuICAgIGlmIChidG4gIT0gbnVsbCkge1xyXG4gICAgICBpZiAodHlwZW9mIChidG4pID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdmFyIGIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsICdidXR0b24nLCBidG4pO1xyXG4gICAgICAgIGRvam8uY29ubmVjdChiLCAnb25jbGljaycsIG9uY2xpY2spO1xyXG4gICAgICB9IGVsc2UgaWYgKGJ0biAhPSBudWxsICYmIHR5cGVvZiAoYnRuKSA9PSAnb2JqZWN0JyAmJiBidG4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhciBidXR0b25zID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidG4ubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgIHZhciBibiA9IGJ0bltpXTtcclxuICAgICAgICAgIHZhciBiID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCAnYnV0dG9uJywgYm4uY2FwdGlvbik7XHJcbiAgICAgICAgICBpZiAoYm4uaWQgIT0gbnVsbClcclxuICAgICAgICAgICAgYi5pZCA9IGJuLmlkO1xyXG4gICAgICAgICAgdGhpcy5fY29ubmV0T25DbGljayhiLCBibi5vbmNsaWNrKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXh0cmEgIT0gbnVsbClcclxuICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCAnc3BhbicsIGV4dHJhKTtcclxuICAgIHJldHVybiB0Ym9keS5wYXJlbnROb2RlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpbGxGb3JtKGRhdGEsIHByZWZpeCkge1xyXG4gICAgZm9yIChjb25zdCBrIGluIGRhdGEpIHtcclxuICAgICAgY29uc3QgZmllbGQgPSBkb2pvLmJ5SWQoKHByZWZpeCA9PSBudWxsID8gJycgOiBwcmVmaXgpICsgaykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgaWYgKGZpZWxkICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoZmllbGQudGFnTmFtZSA9PSAnU0VMRUNUJylcclxuICAgICAgICAgIEpzVXRpbHMuc2VsZWN0T3B0aW9uKGZpZWxkLCBkYXRhW2tdKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBmaWVsZC52YWx1ZSA9IGRhdGFba10gPT0gbnVsbCA/ICcnIDogZGF0YVtrXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNvbGxlY3RGb3JtRGF0YShwYXJlbnQpIHtcclxuICAgIHZhciByZXQgPSB7fTtcclxuXHJcbiAgICB2YXIgaW5wdXRzID0gcGFyZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIG4gPSBpbnB1dHNbaV07XHJcbiAgICAgIHZhciB0eXBlID0gKG4uZ2V0QXR0cmlidXRlKCd0eXBlJykgKyAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgIGlmIChuLmNoZWNrZWQpXHJcbiAgICAgICAgICB0aGlzLl9hZGRWYWx1ZShyZXQsIG4uaWQsIG4udmFsdWUgPT0gbnVsbCB8fCBuLnZhbHVlLmxlbmd0aCA9PSAwID8gJ3RydWUnIDogbi52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2J1dHRvbic6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5fYWRkVmFsdWUocmV0LCBuLmlkLCBuLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciB0ZXh0YXJlYXMgPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RleHRhcmVhJyk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRhcmVhcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgbiA9IHRleHRhcmVhc1tpXTtcclxuICAgICAgdGhpcy5fYWRkVmFsdWUocmV0LCBuLmlkLCBuLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgc2VsZWN0cyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIG4gPSBzZWxlY3RzW2ldO1xyXG4gICAgICB0aGlzLl9hZGRWYWx1ZShyZXQsIG4uaWQsIG4udmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgX2FkZFZhbHVlKGRpY3QsIGtleSwgdmFsdWUpIHtcclxuICAgIGlmIChrZXkgPT0gbnVsbCB8fCBrZXkubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgcCA9IGtleS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgaWYgKHAgPiAwKVxyXG4gICAgICBrZXkgPSBrZXkuc3Vic3RyKHAgKyAxKTtcclxuICAgIGRpY3Rba2V5XSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRvQW1vdW50KHYsIGxpcXVpZCkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCB8fCB2ID09IDApXHJcbiAgICAgIHJldHVybiAnLSc7XHJcbiAgICBlbHNlIGlmICh2ID49IDEwMDApXHJcbiAgICAgIHJldHVybiAodiAvIDEwMDApICsgKGxpcXVpZCA/ICdMJyA6ICdrZycpO1xyXG4gICAgZWxzZSBpZiAodiA8IDAuMDAxICYmIGxpcXVpZClcclxuICAgICAgcmV0dXJuICh2ICogMTAwMDAwMCkgKyAndWcnO1xyXG4gICAgZWxzZSBpZiAodiA8IDEpXHJcbiAgICAgIHJldHVybiAodiAqIDEwMDApICsgKGxpcXVpZCA/ICd1TCcgOiAnbWcnKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHYgKyAobGlxdWlkID8gJ21MJyA6ICdnJyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcHJvY2Vzc0Ftb3VudChjKSB7XHJcbiAgICBpZiAoIShjLmFtb3VudCA+IDApKVxyXG4gICAgICBjLmFtb3VudCA9IG51bGw7XHJcbiAgICBpZiAoIShjLmFtb3VudGxlZnQgPiAwKSlcclxuICAgICAgYy5hbW91bnRsZWZ0ID0gbnVsbDtcclxuICAgIHZhciB2ID0gYy5hbW91bnQgPT0gbnVsbCA/IGMuYW1vdW50bGVmdCA6IGMuYW1vdW50O1xyXG4gICAgaWYgKHYgPD0gMClcclxuICAgICAgdiA9IG51bGw7XHJcbiAgICBpZiAodiA9PT0gbnVsbCkge1xyXG4gICAgICBjLnVuaXQgPSBjLmlzbGlxdWlkID8gJ0wnIDogJ2tnJztcclxuICAgIH0gZWxzZSBpZiAodiA+PSAxMDAwKSB7XHJcbiAgICAgIGMuYW1vdW50IC89IDEwMDA7XHJcbiAgICAgIGMuYW1vdW50bGVmdCAvPSAxMDAwO1xyXG4gICAgICBjLnVuaXQgPSBjLmlzbGlxdWlkID8gJ0wnIDogJ2tnJztcclxuICAgIH0gZWxzZSBpZiAodiA8IDAuMDAxICYmICFjLmlzbGlxdWlkKSB7XHJcbiAgICAgIGMuYW1vdW50ICo9IDEwMDAwMDA7XHJcbiAgICAgIGMuYW1vdW50bGVmdCAqPSAxMDAwMDAwO1xyXG4gICAgICBjLnVuaXQgPSAndWcnO1xyXG4gICAgfSBlbHNlIGlmICh2IDwgMSkge1xyXG4gICAgICBjLmFtb3VudCAqPSAxMDAwO1xyXG4gICAgICBjLmFtb3VudGxlZnQgKj0gMTAwMDtcclxuICAgICAgYy51bml0ID0gYy5pc2xpcXVpZCA/ICd1TCcgOiAnbWcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYy51bml0ID0gYy5pc2xpcXVpZCA/ICdtTCcgOiAnZyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzdGF0aWMgc2V0QnV0dG9uVmFsdWVCeUtleShidXR0b25zLCBrZXksIHMpIHtcclxuICAvLyAgIGlmIChidXR0b25zID09IG51bGwpXHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvL1xyXG4gIC8vICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgKytpKSB7XHJcbiAgLy8gICAgIGlmIChidXR0b25zW2ldLmtleSA9PSBrZXkpIHtcclxuICAvLyAgICAgICBidXR0b25zW2ldLmIudmFsdWUgPSBzID09IG51bGwgPyAnJyA6IHM7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHN0YXRpYyBzZXRCdXR0b25WYWx1ZUJ5S2V5KGJ1dHRvbnMsIGtleSwgdmFsdWUpIHtcclxuICAgIGlmIChidXR0b25zID09IG51bGwgfHwgc2NpbC5VdGlscy5pc051bGxPckVtcHR5KGtleSkgfHwgc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHZhbHVlKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYnV0dG9uc1tpXS5rZXkgPT0ga2V5KSB7XHJcbiAgICAgICAgYnV0dG9uc1tpXS5iLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRCdXR0b25WYWx1ZUJ5S2V5KGJ1dHRvbnMsIGtleSkge1xyXG4gICAgaWYgKGJ1dHRvbnMgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGJ1dHRvbnNbaV0ua2V5ID09IGtleSlcclxuICAgICAgICByZXR1cm4gYnV0dG9uc1tpXS5iLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0QnV0dG9uVmFsdWVzQnlLZXkoYnV0dG9ucywga2V5cywgZGljdCkge1xyXG4gICAgaWYgKGRpY3QgPT0gbnVsbClcclxuICAgICAgZGljdCA9IHt9O1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSlcclxuICAgICAgZGljdFtrZXlzW2ldXSA9IHRoaXMuZ2V0QnV0dG9uVmFsdWVCeUtleShidXR0b25zLCBrZXlzW2ldKTtcclxuICAgIHJldHVybiBkaWN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZVRvb2xiYXJCdXR0b25zKHBhcmVudDogSFRNTEVsZW1lbnQsIGJ1dHRvbnM6IEJ1dHRvbkRlc2NbXSwgcGFkZGluZzogbnVtYmVyLCB0YWJsZUFsaWduPzogc3RyaW5nKSB7XHJcbiAgICBpZiAocGFyZW50ID09IG51bGwgfHwgYnV0dG9ucyA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIHRyID0gbnVsbDtcclxuICAgIGlmICh0YWJsZUFsaWduICE9IG51bGwpXHJcbiAgICAgIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlVGFibGUyKHBhcmVudCwgbnVsbCwge2NlbGxTcGFjaW5nOiAwLCBjZWxsUGFkZGluZzogMCwgYWxpZ246IHRhYmxlQWxpZ259KSwgJ3RyJyk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICgoaSA9PSAwIHx8IGJ1dHRvbnNbaSAtIDFdID09ICctJyB8fCBidXR0b25zW2kgLSAxXSA9PSAnfCcpICYmIChidXR0b25zW2ldID09ICctJyB8fCBidXR0b25zW2ldID09ICd8JykpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBpZiAodGFibGVBbGlnbiAhPSBudWxsKVxyXG4gICAgICAgIHBhcmVudCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJyk7XHJcbiAgICAgIHRoaXMuX2NyZWF0ZUJ1dHRvbihwYXJlbnQsIGJ1dHRvbnNbaV0sIHBhZGRpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIF9jcmVhdGVCdXR0b24ocGFyZW50LCBidXR0b246IEJ1dHRvbkRlc2MsIHBhZGRpbmc6IG51bWJlcikge1xyXG4gICAgaWYgKGJ1dHRvbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHR5cGVvZiAocGFkZGluZykgIT0gJ251bWJlcicgfHwgcGFkZGluZyA8PSAwKVxyXG4gICAgICBwYWRkaW5nID0gMztcclxuXHJcbiAgICBpZiAoYnV0dG9uID09ICctJyB8fCBidXR0b24gPT0gJ3wnKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsICdzcGFuJywgJ3wnLCB7bWFyZ2luOiAnMCAnICsgKDIgKiBwYWRkaW5nKSArICdweCAwICcgKyAoMiAqIHBhZGRpbmcpICsgJ3B4J30pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uLmxhYmVsID0gc2NpbC5MYW5nLnJlcyhidXR0b24ubGFiZWwpO1xyXG4gICAgYnV0dG9uLmNhcHRpb24gPSBzY2lsLkxhbmcucmVzKGJ1dHRvbi5jYXB0aW9uKTtcclxuICAgIGJ1dHRvbi50aXRsZSA9IHNjaWwuTGFuZy5yZXMoYnV0dG9uLnRpdGxlKTtcclxuXHJcbiAgICB2YXIgYiA9IG51bGw7XHJcbiAgICBpZiAoYnV0dG9uLnR5cGUgPT0gJ3NlbGVjdCcpIHtcclxuICAgICAgaWYgKGJ1dHRvbi5sYWJlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGwgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnc3BhbicsIGJ1dHRvbi5sYWJlbCArICc6JywgYnV0dG9uLmxhYmVsc3R5bGUpO1xyXG4gICAgICAgIGwuc3R5bGUubWFyZ2luTGVmdCA9IHBhZGRpbmcgKyAncHgnO1xyXG4gICAgICB9XHJcbiAgICAgIGIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnc2VsZWN0JywgbnVsbCwgYnV0dG9uLnN0eWxlcywgYnV0dG9uLmF0dHJpYnV0ZXMpO1xyXG4gICAgICBzY2lsLlV0aWxzLmxpc3RPcHRpb25zKGIsIGJ1dHRvbi5pdGVtcyB8fCBidXR0b24ub3B0aW9ucywgYnV0dG9uLnZhbHVlLCBudWxsLCBidXR0b24uc29ydCk7XHJcbiAgICAgIGlmIChidXR0b24ub25jaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICBkb2pvLmNvbm5lY3QoYiwgJ29uY2hhbmdlJywgZnVuY3Rpb24oYikge1xyXG4gICAgICAgICAgYnV0dG9uLm9uY2hhbmdlKGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBiLnN0eWxlLm1hcmdpblJpZ2h0ID0gcGFkZGluZyArICdweCc7XHJcbiAgICB9IGVsc2UgaWYgKGJ1dHRvbi50eXBlID09ICdpbnB1dCcgfHwgYnV0dG9uLnR5cGUgPT0gJ2RhdGUnIHx8IGJ1dHRvbi50eXBlID09ICdjb2xvcicpIHtcclxuICAgICAgaWYgKGJ1dHRvbi5sYWJlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGwgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnc3BhbicsIGJ1dHRvbi5sYWJlbCArICc6JywgYnV0dG9uLmxhYmVsc3R5bGUpO1xyXG4gICAgICAgIGwuc3R5bGUubWFyZ2luTGVmdCA9IHBhZGRpbmcgKyAncHgnO1xyXG4gICAgICB9XHJcbiAgICAgIGIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnaW5wdXQnLCBudWxsLCBidXR0b24uc3R5bGVzLCBidXR0b24uYXR0cmlidXRlcyk7XHJcbiAgICAgIGlmIChidXR0b24ub25lbnRlciAhPSBudWxsKVxyXG4gICAgICAgIGRvam8uY29ubmVjdChiLCAnb25rZXlkb3duJywgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMykgYnV0dG9uLm9uZW50ZXIoYik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGlmIChidXR0b24ub25jaGFuZ2UgIT0gbnVsbClcclxuICAgICAgICBkb2pvLmNvbm5lY3QoYiwgJ29uY2hhbmdlJywgZnVuY3Rpb24oYikge1xyXG4gICAgICAgICAgYnV0dG9uLm9uY2hhbmdlKGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZiAoYnV0dG9uLmF1dG9zdWdnZXN0dXJsICE9IG51bGwpXHJcbiAgICAgICAgbmV3IHNjaWwuQXV0b0NvbXBsZXRlKGIsIGJ1dHRvbi5hdXRvc3VnZ2VzdHVybCwge29uc3VnZ2VzdDogYnV0dG9uLm9uc3VnZ2VzdH0pO1xyXG4gICAgICBiLnN0eWxlLm1hcmdpblJpZ2h0ID0gcGFkZGluZyArICdweCc7XHJcblxyXG4gICAgICBpZiAoYnV0dG9uLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgICAgIG5ldyBzY2lsLkRhdGVQaWNrZXIoYik7XHJcbiAgICAgIGVsc2UgaWYgKGJ1dHRvbi50eXBlID09ICdjb2xvcicpXHJcbiAgICAgICAgbmV3IHNjaWwuQ29sb3JQaWNrZXIyKGIpO1xyXG5cclxuICAgICAgaWYgKGJ1dHRvbi52YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgIGIudmFsdWUgPSBidXR0b24udmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiID0gc2NpbC5VdGlscy5jcmVhdGVCdXR0b24ocGFyZW50LCBidXR0b24pO1xyXG4gICAgICBiLnN0eWxlLm1hcmdpbiA9IHBhZGRpbmcgKyAncHgnO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmIgPSBiO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEVkKGZpZWxkKSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gdGlueW1jZS5nZXQoZmllbGQuaWQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpY3QyZm9ybXhtbChkaWN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5qc29uMnhtbChkaWN0KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBqc29uMnhtbChkaWN0LCBub3dyYXBwZXI/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGljdCA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgcmV0ID0gbm93cmFwcGVyID8gJycgOiAnPGRhdGE+XFxuJztcclxuICAgIGZvciAodmFyIGsgaW4gZGljdCkge1xyXG4gICAgICB2YXIgdiA9IGRpY3Rba107XHJcbiAgICAgIGlmICh2ICE9IG51bGwgJiYgdiAhPSAnJykge1xyXG4gICAgICAgIHJldCArPSAnPGkgbj1cXCcnICsgc2NpbC5VdGlscy5lc2NYbWxWYWx1ZShrKSArICdcXCc+JztcclxuICAgICAgICByZXQgKz0gc2NpbC5VdGlscy5lc2NYbWxWYWx1ZSh2KTtcclxuICAgICAgICByZXQgKz0gJzwvaT5cXG4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW5vd3JhcHBlcilcclxuICAgICAgcmV0ICs9ICc8L2RhdGE+JztcclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5jcnlwdHBhc3N3b3JkKHMpIHtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHZhciBLZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShKU0RyYXcyLnBhc3N3b3JkICE9IG51bGwgJiYgSlNEcmF3Mi5wYXNzd29yZC5rZXkgIT0gbnVsbCA/IEpTRHJhdzIucGFzc3dvcmQua2V5IDogJ1BTVkpRUms5cVRFcCE2VTFkV1VaJVJWRkc9MVZWVDA9Jyk7XHJcbiAgICB2YXIgSVYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShKU0RyYXcyLnBhc3N3b3JkICE9IG51bGwgJiYgSlNEcmF3Mi5wYXNzd29yZC5pdiAhPSBudWxsID8gSlNEcmF3Mi5wYXNzd29yZC5pdiA6ICchV2xTTFZFMlpVK05hVz89Jyk7XHJcbiAgICB2YXIgZW5jcnlwdGVkVGV4dCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHMsIEtleSwge2l2OiBJViwgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN30pO1xyXG4gICAgcmV0dXJuICcoP3wnICsgZW5jcnlwdGVkVGV4dCArICcpJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyB4bWwySnNvbih4bWwpIHtcclxuICAgIHZhciByb290ID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgeG1sID09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJvb3QgPSB4bWw7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB4bWwgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdmFyIGRvYyA9IHNjaWwuVXRpbHMucGFyc2VYbWwoeG1sKTtcclxuICAgICAgaWYgKGRvYyAhPSBudWxsKVxyXG4gICAgICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50IHx8IGRvYy5maXJzdEVsZW1lbnRDaGlsZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocm9vdCA9PSBudWxsIHx8IHJvb3QuY2hpbGROb2RlcyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgZGF0YSA9IHt9O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb290LmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGUgPSByb290LmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmIChlLnRhZ05hbWUgIT0gJ2knKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdmFyIGlkID0gZS5nZXRBdHRyaWJ1dGUoJ2lkJyk7XHJcbiAgICAgIGlmIChpZCA9PSBudWxsKVxyXG4gICAgICAgIGlkID0gZS5nZXRBdHRyaWJ1dGUoJ24nKTtcclxuICAgICAgdmFyIHYgPSBzY2lsLlV0aWxzLmdldEZpcnN0RWxlbWVudChlKSBhcyBhbnk7XHJcbiAgICAgIGlmICh2ICE9IG51bGwgJiYgc2NpbC5VdGlscy5pc0lFICYmIHNjaWwuVXRpbHMuaXNJRSA8IDkpXHJcbiAgICAgICAgdiA9IHYueG1sO1xyXG4gICAgICBkYXRhW2lkXSA9IHYgIT0gbnVsbCA/IHYgOiAoZS50ZXh0IHx8IGUudGV4dENvbnRlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGV4dDJJY29uKGZpbGVuYW1lKSB7XHJcbiAgICBpZiAoZmlsZW5hbWUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuICd1bmtub3duJztcclxuICAgIHZhciBwID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChwIDwgMClcclxuICAgICAgcmV0dXJuICd1bmtub3duJztcclxuICAgIHZhciBleHQgPSBmaWxlbmFtZS5zdWJzdHIocCArIDEpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBzd2l0Y2ggKGV4dCkge1xyXG4gICAgY2FzZSAnYXZpJzpcclxuICAgIGNhc2UgJ2JtcCc6XHJcbiAgICBjYXNlICdjJzpcclxuICAgIGNhc2UgJ2NhYic6XHJcbiAgICBjYXNlICdjZHgnOlxyXG4gICAgY2FzZSAnY2VyJzpcclxuICAgIGNhc2UgJ2NobSc6XHJcbiAgICBjYXNlICdkbGwnOlxyXG4gICAgY2FzZSAnZG9jJzpcclxuICAgIGNhc2UgJ2Vwcyc6XHJcbiAgICBjYXNlICdleGUnOlxyXG4gICAgY2FzZSAnZmFzdGEnOlxyXG4gICAgY2FzZSAnZmRmJzpcclxuICAgIGNhc2UgJ2dpZic6XHJcbiAgICBjYXNlICdobHAnOlxyXG4gICAgY2FzZSAnaHRtJzpcclxuICAgIGNhc2UgJ2lzbyc6XHJcbiAgICBjYXNlICdqYXInOlxyXG4gICAgY2FzZSAnamF2YSc6XHJcbiAgICBjYXNlICdqZHgnOlxyXG4gICAgY2FzZSAnanBnJzpcclxuICAgIGNhc2UgJ2pzJzpcclxuICAgIGNhc2UgJ2pzZHJhdyc6XHJcbiAgICBjYXNlICdtZGInOlxyXG4gICAgY2FzZSAnbWh0JzpcclxuICAgIGNhc2UgJ21vbGVuZ2luZSc6XHJcbiAgICBjYXNlICdtb3YnOlxyXG4gICAgY2FzZSAnbXAzJzpcclxuICAgIGNhc2UgJ21ydic6XHJcbiAgICBjYXNlICdtc2cnOlxyXG4gICAgY2FzZSAnbXNpJzpcclxuICAgIGNhc2UgJ3BkYic6XHJcbiAgICBjYXNlICdwZGYnOlxyXG4gICAgY2FzZSAncGljJzpcclxuICAgIGNhc2UgJ3BwdCc6XHJcbiAgICBjYXNlICdwcyc6XHJcbiAgICBjYXNlICdweSc6XHJcbiAgICBjYXNlICdweWMnOlxyXG4gICAgY2FzZSAncm0nOlxyXG4gICAgY2FzZSAnc2RmJzpcclxuICAgIGNhc2UgJ3NrYyc6XHJcbiAgICBjYXNlICdzcWwnOlxyXG4gICAgY2FzZSAnc3dmJzpcclxuICAgIGNhc2UgJ3R4dCc6XHJcbiAgICBjYXNlICd2YnMnOlxyXG4gICAgY2FzZSAndnNkJzpcclxuICAgIGNhc2UgJ3hscyc6XHJcbiAgICBjYXNlICd4bWwnOlxyXG4gICAgY2FzZSAneHBzJzpcclxuICAgIGNhc2UgJ3ppcCc6XHJcbiAgICAgIHJldHVybiBleHQ7XHJcbiAgICBjYXNlICdkb2N4JzpcclxuICAgIGNhc2UgJ3J0Zic6XHJcbiAgICAgIHJldHVybiAnZG9jJztcclxuICAgIGNhc2UgJ2R4JzpcclxuICAgICAgcmV0dXJuICdqZHgnO1xyXG4gICAgY2FzZSAnb3hwcyc6XHJcbiAgICAgIHJldHVybiAneHBzJztcclxuICAgIGNhc2UgJ3BwdHgnOlxyXG4gICAgICByZXR1cm4gJ3BwdCc7XHJcbiAgICBjYXNlICd4bHN4JzpcclxuICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgIHJldHVybiAneGxzJztcclxuICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICByZXR1cm4gJ2pwZyc7XHJcbiAgICBjYXNlICdzdmcnOlxyXG4gICAgY2FzZSAndGlmJzpcclxuICAgIGNhc2UgJ3RpZmYnOlxyXG4gICAgICByZXR1cm4gJ3BpYyc7XHJcbiAgICBjYXNlICdtcDQnOlxyXG4gICAgICByZXR1cm4gJ21wMyc7XHJcbiAgICBjYXNlICd3YXYnOlxyXG4gICAgICByZXR1cm4gJ2F2aSc7XHJcbiAgICBjYXNlICdwbmcnOlxyXG4gICAgY2FzZSAnd21mJzpcclxuICAgIGNhc2UgJ2VtZic6XHJcbiAgICAgIHJldHVybiAnYm1wJztcclxuICAgIGNhc2UgJ2h0bWwnOlxyXG4gICAgY2FzZSAnc2h0bWwnOlxyXG4gICAgY2FzZSAneGh0bWwnOlxyXG4gICAgICByZXR1cm4gJ2h0bSc7XHJcbiAgICBjYXNlICdneic6XHJcbiAgICAgIHJldHVybiAnemlwJztcclxuICAgIGNhc2UgJ2NkeG1sJzpcclxuICAgICAgcmV0dXJuICdjZHgnO1xyXG4gICAgY2FzZSAndGdmJzpcclxuICAgICAgcmV0dXJuICdza2MnO1xyXG4gICAgY2FzZSAnbW9sJzpcclxuICAgIGNhc2UgJ3J4bic6XHJcbiAgICBjYXNlICdqc2QnOlxyXG4gICAgY2FzZSAnanNzZGYnOlxyXG4gICAgICByZXR1cm4gJ2pzZHJhdyc7XHJcbiAgICBjYXNlICdjcyc6XHJcbiAgICBjYXNlICd2Yic6XHJcbiAgICBjYXNlICdjcHAnOlxyXG4gICAgY2FzZSAnYyc6XHJcbiAgICBjYXNlICdhc3B4JzpcclxuICAgIGNhc2UgJ2FzcCc6XHJcbiAgICAgIHJldHVybiAnc2NyaXB0JztcclxuICAgIGNhc2UgJ2NvbmZpZyc6XHJcbiAgICAgIHJldHVybiAneG1sJztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiAndW5rbm93bic7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5zY2lsLkZvcm0gPSBGb3JtO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge1NjaWxNb2R1bGVUeXBlfSBmcm9tICcuLi9zcmMvdHlwZXMnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuXHJcbi8qKlxyXG4gKiBMYW5nIGNsYXNzIC0gdHJhbnNsYXRlIHdlYiBwYWdlIGludG8gb3RoZXIgbGFuYWd1ZXNcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLkxhbmdcclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgIHNjaWwuTGFuZy51c2UoJ2NuJyk7XHJcbiAqICAgIHZhciBzID0gc2NpbC5MYW5nLnJlcyhcIlByaW50XCIpO1xyXG4gKiA8L3ByZT5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBMYW5nIHtcclxuICBzdGF0aWMgdG9rZW46IHN0cmluZyA9IFwidHJhbnNsYXRlXCI7XHJcbiAgc3RhdGljIGtleTogc3RyaW5nID0gXCJzY2lsX2xhbmdcIjtcclxuICBzdGF0aWMgY3VycmVudDoge30gfCBudWxsID0gbnVsbDtcclxuICBzdGF0aWMgbGFuZ3VhZ2U6IHt9IHwgbnVsbCA9IG51bGw7XHJcbiAgc3RhdGljIGVuOiB7fSA9IHt9O1xyXG4gIHN0YXRpYyBjbjoge30gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbGFuZzogTGFuZztcclxuXHJcbiAgc3RhdGljIGFkZChkaWN0LCBsYW5nKSB7XHJcbiAgICBpZiAoZGljdCA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIGRlc3QgPSBsYW5nID09IG51bGwgPyB0aGlzLmVuIDogc2NpbC5MYW5nW2xhbmddO1xyXG4gICAgaWYgKGRlc3QgPT0gbnVsbClcclxuICAgICAgc2NpbC5MYW5nW2xhbmddID0ge307XHJcblxyXG4gICAgc2NpbC5hcHBseShkZXN0LCBkaWN0KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzZXRMYW5nKGxhbmcsIHJlbG9hZCkge1xyXG4gICAgaWYgKGxhbmcgPT0gbnVsbCB8fCBsYW5nID09IFwiXCIpXHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQ29va2llKHRoaXMua2V5LCBcIlwiLCAtMSwgdHJ1ZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQ29va2llKHRoaXMua2V5LCBsYW5nLCAxODAsIHRydWUpO1xyXG4gICAgaWYgKHJlbG9hZClcclxuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHVzZShsYW5nKSB7XHJcbiAgICBpZiAobGFuZyA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsYW5nID0gbGFuZy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKGxhbmcgPT0gXCJ6aFwiKVxyXG4gICAgICBsYW5nID0gXCJjblwiO1xyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5nO1xyXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpc1tsYW5nXTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmVuO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBKU0RyYXcyLkxhbmd1YWdlLnVzZShsYW5nKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZXMocywgbGFuZykge1xyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSB8fCB0eXBlb2YgKHMpICE9IFwic3RyaW5nXCIpXHJcbiAgICAgIHJldHVybiBzO1xyXG5cclxuICAgIGlmIChsYW5nICE9IG51bGwpIHtcclxuICAgICAgdmFyIGRpY3QgPSB0aGlzW2xhbmddO1xyXG4gICAgICByZXR1cm4gZGljdCA9PSBudWxsIHx8IGRpY3Rbc10gPT0gbnVsbCA/IHMgOiBkaWN0W3NdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN1cnJlbnQgPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbGFuZyA9IHNjaWwuVXRpbHMucmVhZENvb2tpZSh0aGlzLmtleSwgdHJ1ZSk7XHJcbiAgICAgIGlmIChsYW5nICE9IG51bGwgJiYgbGFuZyAhPSBcIlwiKVxyXG4gICAgICAgIHRoaXMudXNlKGxhbmcpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY3VycmVudCA9PSBudWxsICYmIHRoaXMubGFuZyAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMudXNlKHRoaXMubGFuZyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50ID09IG51bGwpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgbGFuZyA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlO1xyXG4gICAgICAgIGlmIChsYW5nICE9IG51bGwgJiYgbGFuZy5sZW5ndGggPiAyKVxyXG4gICAgICAgICAgdGhpcy51c2UobGFuZy5zdWJzdHIoMCwgMikpO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnQgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmV0ID0gdGhpcy5jdXJyZW50ID09IG51bGwgPyBudWxsIDogdGhpcy5jdXJyZW50W3NdO1xyXG4gICAgaWYgKHJldCA9PSBudWxsIHx8IHJldCA9PSBcIlwiKVxyXG4gICAgICByZXQgPSBKU0RyYXcyLkxhbmd1YWdlLnJlcyhzKTtcclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdHJhbnNsYXRlKHBhcmVudCwgdGFncykge1xyXG4gICAgaWYgKHRhZ3MgPT0gbnVsbCB8fCB0YWdzID09IFwiXCIpIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGUocGFyZW50LCBcInNwYW5cIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgc3MgPSB0YWdzLnNwbGl0KCcsJyk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3MubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUocGFyZW50LCBzc1tpXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdHJhbnNsYXRlMihwYXJlbnQsIHRhZykge1xyXG4gICAgaWYgKHRhZyA9PSBudWxsIHx8IHRhZyA9PSBcIlwiKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdmFyIGxpc3QgPSAocGFyZW50ID09IG51bGwgPyBkb2N1bWVudCA6IHBhcmVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKTtcclxuICAgIGlmIChsaXN0ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGUgPSBsaXN0W2ldO1xyXG4gICAgICBpZiAoZS5nZXRBdHRyaWJ1dGUodGhpcy50b2tlbikgPT0gbnVsbClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdmFyIHMgPSB0aGlzLnJlZyhlLmlubmVySFRNTCk7XHJcbiAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBlLmlubmVySFRNTCA9IHM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5zY2lsLkxhbmcgPSBMYW5nO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge0Rvam9UeXBlfSBmcm9tICcuLi9zcmMvdHlwZXMvZG9qbyc7XHJcbmltcG9ydCB0eXBlIHtTY2lsTW9kdWxlVHlwZX0gZnJvbSAnLi4vc3JjL3R5cGVzJztcclxuXHJcbmRlY2xhcmUgY29uc3QgZG9qbzogRG9qb1R5cGU7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVRhYkVsZW1lbnQgPSBhbnk7XHJcblxyXG4vKipcclxuICogVGFicyBjbGFzcyAtIFRhYnMgQ29udHJvbFxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuVGFic1xyXG4gKiA8cHJlPlxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICZsdDtkaXYgaWQ9XCJkaXYxXCImZ3Q7Jmx0Oy9kaXYmZ3Q7XHJcbiAmbHQ7c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiZndDtcclxuIHNjaWwucmVhZHkoZnVuY3Rpb24gKCkge1xyXG4gdmFyIG9wdGlvbnMgPSB7XHJcbiB0YWJzOiB7XHJcbiBhOiB7IGNhcHRpb246IFwiVGFiIEFcIiB9LFxyXG4gYjogeyBjYXB0aW9uOiBcIlRhYiBCXCIsIGNsb3NhYmxlOiB0cnVlIH1cclxuIH0sXHJcbiBvblJlbW92ZVRhYjogZnVuY3Rpb24gKHRkLCB0YWJzKSB7IGFsZXJ0KFwicmVtb3ZlIHRhYlwiKTsgfSxcclxuIG9uQmVmb3JlU2hvd1RhYjogZnVuY3Rpb24gKHRkLCBvbGQsIHRhYnMpIHsgfSxcclxuIG9uU2hvd1RhYjogZnVuY3Rpb24gKHRkLCBvbGQsIHRhYnMpIHsgfSxcclxuIG9uQ3JlYXRlVGFiOiBmdW5jdGlvbih0ZCwgY2xpZW50YXJlYSwgdGFicykgeyB9LFxyXG4gYm9yZGVyOiB0cnVlXHJcbiB9O1xyXG5cclxuIHZhciB0YWJzID0gbmV3IHNjaWwuVGFicyhcImRpdjFcIiwgb3B0aW9ucyk7XHJcbiB9KTtcclxuICZsdDsvc2NyaXB0Jmd0O1xyXG4gKiA8L3ByZT5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBUYWJzSW50IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IFQ6IHN0cmluZztcclxuICBwcml2YXRlIG9wdGlvbnM6IGFueTtcclxuICBwcml2YXRlIGN1cnJlbnR0YWI6IEhUTUxUYWJsZUNlbGxFbGVtZW50ICYgeyBjbGllbnRhcmVhOiBIVE1MRWxlbWVudCB9O1xyXG4gIHByaXZhdGUgYXJlYTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XHJcbiAgcHVibGljIGRvbTogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB0YWJsZTogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB2ZXJ0aWNhbDogYm9vbGVhbjtcclxuICBwcml2YXRlIHRhYmNvbnRhaW5lcjogSFRNTFRhYmxlRWxlbWVudDtcclxuICBwcml2YXRlIHRyOiBIVE1MVGFibGVSb3dFbGVtZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwYXJlbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuVCA9ICdUQUJTJztcclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuICAgIHRoaXMuY3VycmVudHRhYiA9IG51bGw7XHJcbiAgICB0aGlzLmFyZWEgPSBudWxsO1xyXG5cclxuICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IGRvam8uYnlJZChwYXJlbnQpO1xyXG5cclxuICAgIGxldCB0YWJhcmVhO1xyXG4gICAgY29uc3QgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKHBhcmVudCwgMCwgMCwge3dpZHRoOiAnMTAwJScsIG1hcmdpbkJvdHRvbTogdGhpcy5vcHRpb25zLm1hcmdpbkJvdHRvbSA9PSBudWxsID8gJzIwcHgnIDogdGhpcy5vcHRpb25zLm1hcmdpbkJvdHRvbX0pO1xyXG4gICAgdGhpcy5kb20gPSB0aGlzLnRhYmxlID0gdGJvZHkucGFyZW50RWxlbWVudDtcclxuICAgIHRoaXMudmVydGljYWwgPSB0cnVlO1xyXG4gICAgY29uc3QgdGFiYm9yZGVyID0gdGhpcy5vcHRpb25zLmJvcmRlciA/IG51bGwgOiBzY2lsLlRhYnMua0JvcmRlclN0eWxlO1xyXG4gICAgY29uc3QgYXJlYXBhZGRpbmcgPSB0aGlzLm9wdGlvbnMuYm9yZGVyID8gJzVweCcgOiAwO1xyXG4gICAgY29uc3QgYXJlYWJvcmRlciA9IHRoaXMub3B0aW9ucy5ib3JkZXIgPyBzY2lsLlRhYnMua0JvcmRlclN0eWxlIDogbnVsbDtcclxuICAgIGNvbnN0IHRhZ2dhcCA9IHRoaXMub3B0aW9ucy50YWJnYXAgPT0gbnVsbCA/ICc0cHgnIDogdGhpcy5vcHRpb25zLnRhYmdhcDtcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLnRhYmxvY2F0aW9uKSB7XHJcbiAgICBjYXNlICdsZWZ0Jzoge1xyXG4gICAgICBjb25zdCB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICAgIHRhYmFyZWEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHtib3JkZXJSaWdodDogdGFiYm9yZGVyLCB3aWR0aDogJzElJywgdmVydGljYWxBbGlnbjogJ3RvcCcsIGJvcmRlclJpZ2h0V2lkdGg6IHRhZ2dhcH0pO1xyXG4gICAgICB0aGlzLmFyZWEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHtwYWRkaW5nOiBgJHthcmVhcGFkZGluZ31weGAsIGJvcmRlcjogYXJlYWJvcmRlciwgd2lkdGg6ICc5OSUnLCB2ZXJ0aWNhbEFsaWduOiAndG9wJ30pO1xyXG4gICAgICB0aGlzLnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSAncmlnaHQnOiB7XHJcbiAgICAgIGNvbnN0IHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuICAgICAgdGhpcy5hcmVhID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCB7cGFkZGluZzogYCR7YXJlYXBhZGRpbmd9cHhgLCBib3JkZXI6IGFyZWFib3JkZXIsIHdpZHRoOiAnMSUnLCB2ZXJ0aWNhbEFsaWduOiAndG9wJ30pO1xyXG4gICAgICB0YWJhcmVhID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCAndGQnLCBudWxsLCB7Ym9yZGVyTGVmdDogdGFiYm9yZGVyLCB3aWR0aDogJzk5JScsIHZlcnRpY2FsQWxpZ246ICd0b3AnLCBib3JkZXJMZWZ0V2lkdGg6IHRhZ2dhcH0pO1xyXG4gICAgICB0aGlzLnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSAnYm90dG9tJzoge1xyXG4gICAgICB0aGlzLmFyZWEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKSwgJ3RkJywgbnVsbCwge3BhZGRpbmc6IGAke2FyZWFwYWRkaW5nfXB4YCwgYm9yZGVyOiBhcmVhYm9yZGVyfSk7XHJcbiAgICAgIHRhYmFyZWEgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKSwgJ3RkJywgbnVsbCwge2JvcmRlclRvcDogdGFiYm9yZGVyLCBib3JkZXJUb3BXaWR0aDogdGFnZ2FwfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgZGVmYXVsdDogeyAvLyB0b3BcclxuICAgICAgdGFiYXJlYSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHksICd0cicpLCAndGQnLCBudWxsLCB7Ym9yZGVyQm90dG9tOiB0YWJib3JkZXIsIGJvcmRlckJvdHRvbVdpZHRoOiB0YWdnYXB9KTtcclxuICAgICAgdGhpcy5hcmVhID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyksICd0ZCcsIG51bGwsIHtwYWRkaW5nOiBgJHthcmVhcGFkZGluZ31weGAsIGJvcmRlcjogYXJlYWJvcmRlcn0pO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmNvbnRhaW5lciA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUodGFiYXJlYSwgMCwgMCk7XHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbClcclxuICAgICAgdGhpcy50ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRhYmNvbnRhaW5lciwgJ3RyJyk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93dGFicyA9PSBmYWxzZSlcclxuICAgICAgdGhpcy50ci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgIGNvbnN0IHRhYnMgPSB0aGlzLm9wdGlvbnMudGFicztcclxuICAgIGlmICh0YWJzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIHRoaXMuYWRkVGFiKHRhYnNbaV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoY29uc3QgayBpbiB0YWJzKVxyXG4gICAgICAgICAgdGhpcy5hZGRUYWIodGFic1trXSwgayk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2l6ZUNsaWVudGFyZWEod2lkdGgsIGhlaWdodCkge1xyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMudmVydGljYWwgPyB0aGlzLnRyLmNoaWxkTm9kZXMgOiB0aGlzLnRhYmNvbnRhaW5lci5jaGlsZE5vZGVzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGxldCB0ZDtcclxuICAgICAgaWYgKHRoaXMudmVydGljYWwpXHJcbiAgICAgICAgdGQgPSBsaXN0W2ldO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGQgPSBsaXN0W2ldLmNoaWxkTm9kZXNbMF07XHJcblxyXG4gICAgICBpZiAodGQuY2xpZW50YXJlYSA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgaWYgKHdpZHRoID4gMCkge1xyXG4gICAgICAgIHRkLmNsaWVudGFyZWEuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNsaWVudGFyZWF3aWR0aCA9IHdpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgdGQuY2xpZW50YXJlYS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jbGllbnRhcmVhaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbnJlc2l6ZWNsaWVudGFyZWEgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9ucmVzaXplY2xpZW50YXJlYSh3aWR0aCwgaGVpZ2h0LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGFkZFRhYihvcHRpb25zLCBrZXk/OiBhbnkpOiBGb3JtVGFiRWxlbWVudCB7XHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICBpZiAodGhpcy50ci5jaGlsZE5vZGVzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMudHIsICd0ZCcsICcmbmJzcDsnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGhpcy50YWJjb250YWluZXIsICd0cicpLCAndGQnKSwgJ2RpdicsIG51bGwsIHtoZWlnaHQ6IGA1cHhgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIG1lID0gdGhpcztcclxuICAgIHZhciBjYXB0aW9uID0gb3B0aW9ucy5jYXB0aW9uO1xyXG4gICAgdmFyIGljb24gPSBvcHRpb25zLmljb247XHJcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMub3B0aW9ucy50YWJwYWRkaW5nID09IG51bGwgPyAnNXB4IDEwcHggMXB4IDEwcHgnIDogdGhpcy5vcHRpb25zLnRhYnBhZGRpbmc7XHJcbiAgICB2YXIgdHIgPSB0aGlzLnZlcnRpY2FsID8gdGhpcy50ciA6IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLnRhYmNvbnRhaW5lciwgJ3RyJyk7XHJcbiAgICB2YXIgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB7Ym9yZGVyOiAnc29saWQgMXB4ICNkZGQnLCBwYWRkaW5nOiBwYWRkaW5nLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZWVlJ307XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudGFibG9jYXRpb24pIHtcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICBzdHlsZS5ib3JkZXJSaWdodCA9ICdub25lJztcclxuICAgICAgc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzID0gJzVweCc7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBzdHlsZS5ib3JkZXJMZWZ0ID0gJ25vbmUnO1xyXG4gICAgICBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgIHN0eWxlLmJvcmRlclRvcCA9ICdub25lJztcclxuICAgICAgc3R5bGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cyA9ICc1cHgnO1xyXG4gICAgICBicmVhaztcclxuICAgIGRlZmF1bHQ6IC8vIHRvcFxyXG4gICAgICBzdHlsZS5ib3JkZXJCb3R0b20gPSAnbm9uZSc7XHJcbiAgICAgIHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMgPSAnNXB4JztcclxuICAgICAgc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSAnNXB4JztcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHN0eWxlLCB7a2V5OiBrZXkgfHwgb3B0aW9ucy50YWJrZXksIHNjaWx0YWI6ICcxJ30pIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50ICYgeyBfbGFiZWw6IGFueSwgY2xpZW50YXJlYTogYW55IH07IC8vIFRPRE9cclxuICAgIGNvbnN0IHRib2R5MiA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUyKHRkLCBudWxsLCB7Y2VsbFNwYWNpbmc6IDAsIGNlbGxQYWRkaW5nOiAwfSk7XHJcbiAgICBjb25zdCBzID0gKGljb24gIT0gbnVsbCA/ICc8aW1nIHNyYz1cXCcnICsgaWNvbiArICdcXCc+JyA6ICcnKSArIChjYXB0aW9uID09IG51bGwgPyAnVGFiJyA6IHNjaWwuTGFuZy5yZXMoY2FwdGlvbikpO1xyXG5cclxuICAgIGxldCB0ZDIgPSBudWxsO1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudGFibG9jYXRpb24pIHtcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICB0ZC5fbGFiZWwgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5MiwgJ3RyJyksICd0ZCcsIHMsIG51bGwsIG51bGwsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5zaG93VGFiKHRkKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRkMiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHkyLCAndHInKSwgJ3RkJyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYm90dG9tJzpcclxuICAgIGRlZmF1bHQ6IC8vIHRvcFxyXG4gICAgICB2YXIgdHIyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5MiwgJ3RyJyk7XHJcbiAgICAgIHRkLl9sYWJlbCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0cjIsICd0ZCcsIHMsIG51bGwsIG51bGwsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBtZS5zaG93VGFiKHRkKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRkMiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0cjIsICd0ZCcpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5jbG9zYWJsZSkge1xyXG4gICAgICBjb25zdCBpbWcgPSBzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbih0ZDIsIHtcclxuICAgICAgICBzcmM6IHNjaWwuVXRpbHMuaW1nU3JjKCdpbWcvZGVsMi5naWYnKSwgdGl0bGU6ICdDbG9zZScsIHN0eWxlOiB7fSwgb25jbGljazogZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgbWUuY2xvc2VUYWIodGQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICBpbWcuc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4JztcclxuICAgICAgdGQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzJweCc7XHJcblxyXG4gICAgICBzY2lsLmNvbm5lY3QodGQyLCAnb25tb3VzZW92ZXInLCBmdW5jdGlvbigpIHtcclxuICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcclxuICAgICAgfSk7XHJcbiAgICAgIHNjaWwuY29ubmVjdCh0ZDIsICdvbm1vdXNlb3V0JywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaW1nLnN0eWxlLmJhY2tncm91bmQgPSAnJztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMub25tZW51ICE9IG51bGwpIHtcclxuICAgICAgc2NpbC5jb25uZWN0KHRkLCAnb25tb3VzZXVwJyxcclxuICAgICAgICBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICBpZiAoc2NpbC5VdGlscy5pc1JpZ2h0QnV0dG9uKGUpKVxyXG4gICAgICAgICAgICBvcHRpb25zLm9ubWVudShlKTtcclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgc2NpbC5VdGlscy5kaXNhYmxlQ29udGV4dE1lbnUodGQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wdGlvbnMuY2FwdGlvbiA9IG51bGw7XHJcbiAgICBvcHRpb25zLnZpc2libGUgPSB0aGlzLmN1cnJlbnR0YWIgPT0gbnVsbDtcclxuICAgIG9wdGlvbnMubWFyZ2luQm90dG9tID0gMDtcclxuICAgIG9wdGlvbnMuY2FwdGlvbiA9IGNhcHRpb247XHJcblxyXG4gICAgdGQuY2xpZW50YXJlYSA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLmFyZWEsICdkaXYnLCBudWxsLCB7ZGlzcGxheTogJ25vbmUnLCB3aWR0aDogdGhpcy5vcHRpb25zLmNsaWVudGFyZWF3aWR0aCwgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuY2xpZW50YXJlYWhlaWdodCwgb3ZlcmZsb3dZOiB0aGlzLm9wdGlvbnMuY2xpZW50YXJlYWhlaWdodCA+IDAgPyAnc2Nyb2xsJyA6IG51bGx9KTtcclxuICAgIGlmIChvcHRpb25zLnN0eWxlICE9IG51bGwpXHJcbiAgICAgIGRvam8uc3R5bGUodGQuY2xpZW50YXJlYSwgb3B0aW9ucy5zdHlsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudHRhYiA9PSBudWxsKVxyXG4gICAgICB0aGlzLnNob3dUYWIodGQpO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmh0bWwgIT0gbnVsbClcclxuICAgICAgdGQuY2xpZW50YXJlYS5pbm5lckhUTUwgPSBvcHRpb25zLmh0bWw7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkNyZWF0ZVRhYiAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25DcmVhdGVUYWIodGQsIHRkLmNsaWVudGFyZWEsIHRoaXMpO1xyXG5cclxuICAgIHJldHVybiB0ZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRhYkxhYmVsKGtleSwgcykge1xyXG4gICAgdmFyIHRkID0gdHlwZW9mIChrZXkpID09ICdzdHJpbmcnID8gdGhpcy5maW5kVGFiKGtleSkgOiBrZXk7XHJcbiAgICBpZiAodGQgIT0gbnVsbCAmJiB0ZC5fbGFiZWwgIT0gbnVsbClcclxuICAgICAgdGQuX2xhYmVsLmlubmVySFRNTCA9IHM7XHJcbiAgfVxyXG5cclxuICBjbG9zZVRhYih0ZCkge1xyXG4gICAgdmFyIG1lID0gdGhpcztcclxuICAgIHNjaWwuVXRpbHMuY29uZmlybVllcygnQ2xvc2UgdGhpcyB0YWI/JywgZnVuY3Rpb24oKSB7XHJcbiAgICAgIG1lLnJlbW92ZVRhYih0ZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRUYWJLZXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50dGFiID09IG51bGwgPyBudWxsIDogdGhpcy5jdXJyZW50dGFiLmdldEF0dHJpYnV0ZSgna2V5Jyk7XHJcbiAgfVxyXG5cclxuICBmaW5kVGFiKGtleSkge1xyXG4gICAgdmFyIGxpc3QgPSB0aGlzLnZlcnRpY2FsID8gdGhpcy50ci5jaGlsZE5vZGVzIDogdGhpcy50YWJjb250YWluZXIuY2hpbGROb2RlcztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdGQ7XHJcbiAgICAgIGlmICh0aGlzLnZlcnRpY2FsKVxyXG4gICAgICAgIHRkID0gbGlzdFtpXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRkID0gbGlzdFtpXS5jaGlsZE5vZGVzWzBdO1xyXG5cclxuICAgICAgaWYgKHRkLmdldEF0dHJpYnV0ZSgna2V5JykgPT0ga2V5KVxyXG4gICAgICAgIHJldHVybiB0ZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVGFiKGtleSkge1xyXG4gICAgdmFyIHRkID0gdHlwZW9mIChrZXkpID09ICdzdHJpbmcnID8gdGhpcy5maW5kVGFiKGtleSkgOiBrZXk7XHJcbiAgICBpZiAodGQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vblJlbW92ZVRhYiAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25SZW1vdmVUYWIodGQsIHRoaXMpO1xyXG5cclxuICAgIHZhciBsaXN0ID0gdGhpcy5hbGxUYWJzQXNBcnJheSgpO1xyXG4gICAgdmFyIGkgPSBzY2lsLlV0aWxzLmluZGV4T2YobGlzdCwgdGQpO1xyXG5cclxuICAgIGlmIChpID4gMClcclxuICAgICAgdGhpcy5zaG93VGFiKGxpc3RbaSAtIDFdKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zaG93VGFiKGxpc3RbaSArIDFdKTtcclxuXHJcbiAgICB0ZC5jbGllbnRhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGQuY2xpZW50YXJlYSk7XHJcbiAgICBkZWxldGUgdGQuY2xpZW50YXJlYTtcclxuXHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICB2YXIgdGQwID0gdGQucHJldmlvdXNTaWJsaW5nO1xyXG4gICAgICBpZiAodGQwICE9IG51bGwgJiYgdGQwLmNsaWVudGFyZWEgPT0gbnVsbClcclxuICAgICAgICB0ZDAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZDApO1xyXG4gICAgICB0ZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciB0ciA9IHRkLnBhcmVudE5vZGU7XHJcbiAgICAgIHZhciB0cjAgPSB0ci5wcmV2aW91c1NpYmxpbmc7XHJcbiAgICAgIGlmICh0cjAgIT0gbnVsbClcclxuICAgICAgICB0cjAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0cjApO1xyXG4gICAgICB0ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsbFRhYnNBc0FycmF5KCkge1xyXG4gICAgdmFyIHJldCA9IFtdO1xyXG4gICAgdmFyIGxpc3QgPSB0aGlzLnZlcnRpY2FsID8gdGhpcy50ci5jaGlsZE5vZGVzIDogdGhpcy50YWJjb250YWluZXIuY2hpbGROb2RlcztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdGQ7XHJcbiAgICAgIGlmICh0aGlzLnZlcnRpY2FsKVxyXG4gICAgICAgIHRkID0gbGlzdFtpXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRkID0gbGlzdFtpXS5jaGlsZE5vZGVzWzBdO1xyXG5cclxuICAgICAgaWYgKHRkLmdldEF0dHJpYnV0ZSgnc2NpbHRhYicpID09ICcxJylcclxuICAgICAgICByZXQucHVzaCh0ZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgYWxsVGFicygpIHtcclxuICAgIHZhciByZXQgPSB7fTtcclxuICAgIHZhciBsaXN0ID0gdGhpcy52ZXJ0aWNhbCA/IHRoaXMudHIuY2hpbGROb2RlcyA6IHRoaXMudGFiY29udGFpbmVyLmNoaWxkTm9kZXM7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIHRkO1xyXG4gICAgICBpZiAodGhpcy52ZXJ0aWNhbClcclxuICAgICAgICB0ZCA9IGxpc3RbaV07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0ZCA9IGxpc3RbaV0uY2hpbGROb2Rlc1swXTtcclxuXHJcbiAgICAgIGlmICh0ZC5nZXRBdHRyaWJ1dGUoJ3NjaWx0YWInKSA9PSAnMScpIHtcclxuICAgICAgICB2YXIgayA9IHRkLmdldEF0dHJpYnV0ZSgna2V5Jyk7XHJcbiAgICAgICAgaWYgKGsgIT0gbnVsbCAmJiBrICE9ICcnKVxyXG4gICAgICAgICAgcmV0W2tdID0gdGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBzaG93VGFiKHRkKSB7XHJcbiAgICBpZiAodHlwZW9mICh0ZCkgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGQgPSB0aGlzLmZpbmRUYWIodGQpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgKHRkKSA9PSAnbnVtYmVyJykge1xyXG4gICAgICB2YXIgbGlzdCA9IHRoaXMuYWxsVGFic0FzQXJyYXkoKTtcclxuICAgICAgdGQgPSBsaXN0W3RkXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGQgIT0gbnVsbCAmJiB0ZC50YWdOYW1lICE9ICdURCcpXHJcbiAgICAgIHRkID0gc2NpbC5VdGlscy5nZXRQYXJlbnQodGQsICd0ZCcpO1xyXG5cclxuICAgIGlmICh0ZCA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgb2xkID0gdGhpcy5jdXJyZW50dGFiO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkJlZm9yZVNob3dUYWIgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uQmVmb3JlU2hvd1RhYih0ZCwgb2xkKSA9PSBmYWxzZSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudHRhYiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudHRhYi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2VlZSc7XHJcbiAgICAgIHRoaXMuY3VycmVudHRhYi5zdHlsZS5jb2xvciA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGQgIT0gbnVsbCAmJiBvbGQuY2xpZW50YXJlYSAhPSBudWxsKVxyXG4gICAgICBvbGQuY2xpZW50YXJlYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgIHRkLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHNjaWwuVGFicy5rSGlnaGxpZ2h0Q29sb3I7XHJcbiAgICB0ZC5zdHlsZS5jb2xvciA9ICcjZmZmJztcclxuICAgIHRoaXMuY3VycmVudHRhYiA9IHRkO1xyXG4gICAgaWYgKHRkLmNsaWVudGFyZWEgIT0gbnVsbClcclxuICAgICAgdGQuY2xpZW50YXJlYS5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vblNob3dUYWIgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uU2hvd1RhYih0ZCwgb2xkLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICB0aGlzLnRhYmxlLnN0eWxlLmRpc3BsYXkgPSAnJztcclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLnRhYmxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFicyBleHRlbmRzIFRhYnNJbnQge1xyXG4gIHN0YXRpYyBrSGlnaGxpZ2h0Q29sb3I6IHN0cmluZyA9ICcjODhmJztcclxuICBzdGF0aWMga0JvcmRlclN0eWxlOiBzdHJpbmcgPSAnc29saWQgMXB4ICM4OGYnO1xyXG59XHJcblxyXG5zY2lsLlRhYnMgPSBUYWJzO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIFNjaWxsaWdlbmNlIEpTRHJhd1xyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4uL3NyYy90eXBlcyc7XHJcbmltcG9ydCB0eXBlIHtGaWVsZFR5cGUsIEZvcm0sIEl0ZW1UeXBlfSBmcm9tICcuL0Zvcm0nO1xyXG5pbXBvcnQgdHlwZSB7RG9qb1R5cGV9IGZyb20gJy4uL3NyYy90eXBlcy9kb2pvJztcclxuaW1wb3J0IHR5cGUge0lUYWJzfSBmcm9tICcuLi9zcmMvdHlwZXMvc2NpbC5mb3JtJztcclxuXHJcbmRlY2xhcmUgY29uc3QgZG9qbzogRG9qb1R5cGU7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuLyoqXHJcbiAqIFRhYmJlZEZvcm0gY2xhc3MgLSBUYWJiZWRGb3JtIENvbnRyb2xcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLlRhYmJlZEZvcm1cclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgIGRvam8ucmVhZHkoZnVuY3Rpb24gKCkge1xyXG4gKiAgICAgICAgdmFyIHBhcmVudCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImRpdlwiKTtcclxuICogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHsgdGFiczoge1xyXG4gKiAgICAgICAgICAgICAgICBhOiB7IGNhcHRpb246IFwiVGFiIEFcIiwgZmllbGRzOiB7IGZpZWxkMTogeyBsYWJlbDogXCJGaWVsZDFcIn19IH0sXHJcbiAqICAgICAgICAgICAgICAgIGI6IHsgY2FwdGlvbjogXCJUYWIgQlwiLCBmaWVsZHM6IHsgZmllbGQyOiB7IGxhYmVsOiBcIkZpZWxkMlwiIH0sIGZpZWxkMzogeyBsYWJlbDogXCJGaWVsZDNcIn19IH1cclxuICogICAgICAgICAgICB9LCBidXR0b25zOiB7IGxhYmVsOiBcIlRlc3RcIiwgb25jbGljazogZnVuY3Rpb24oKSB7IGFsZXJ0KDk5OSk7IH0gfSwgYm9yZGVyOiB0cnVlXHJcbiAqICAgICAgICAgICAgfTtcclxuICogICAgICAgIHZhciBmb3JtID0gbmV3IHNjaWwuVGFiYmVkRm9ybShvcHRpb25zKS5yZW5kZXIocGFyZW50KTtcclxuICogICAgfSk7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRhYmJlZEZvcm0ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgVDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogYW55O1xyXG4gIHByaXZhdGUgZm9ybTogRm9ybTtcclxuICBwcml2YXRlIGJ1dHRvbnM6IGFueVtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzOiB7IFtmTmFtZTogc3RyaW5nXTogRmllbGRUeXBlIH07XHJcbiAgcHJpdmF0ZSB0YWJzOiBJVGFicztcclxuICBwcml2YXRlIGl0ZW1zOiB7IFtpTmFtZTogc3RyaW5nXTogSXRlbVR5cGUgfTtcclxuICBwcml2YXRlIHZpZXdvbmx5OiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcclxuICAgIHRoaXMuVCA9ICdUQUJCRURfRk9STSc7XHJcbiAgICB0aGlzLmZvcm0gPSBudWxsO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xyXG4gICAgdGhpcy5maWVsZHMgPSB7fTtcclxuICB9XHJcblxyXG4gIHJlbmRlcihwYXJlbnQpIHtcclxuICAgIGlmICh0eXBlb2YgKHBhcmVudCkgPT0gJ3N0cmluZycpXHJcbiAgICAgIHBhcmVudCA9IGRvam8uYnlJZChwYXJlbnQpO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB0aGlzLm9wdGlvbnMub25TaG93VGFiID0gZnVuY3Rpb24odGQsIG9sZCkge1xyXG4gICAgICBpZiAoIXRkLnJlbmRlcmVkICYmIG9sZCAhPSBudWxsKVxyXG4gICAgICAgIG1lLnJlbmRlclRhYkZvcm0odGQpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLm9wdGlvbnMub25CZWZvcmVTaG93VGFiID0gZnVuY3Rpb24odGQsIG9sZCkge1xyXG4gICAgICBpZiAobWUub3B0aW9ucy5vbmJlZm9yZXNob3d0YWIgIT0gbnVsbCAmJiB0ZCAhPSBvbGQpXHJcbiAgICAgICAgcmV0dXJuIG1lLm9wdGlvbnMub25iZWZvcmVzaG93dGFiKHRkLCBvbGQpO1xyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgZmlyc3QgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIgayBpbiB0aGlzLm9wdGlvbnMudGFicylcclxuICAgICAgdGhpcy5vcHRpb25zLnRhYnNba10udGFia2V5ID0gaztcclxuXHJcbiAgICB0aGlzLnRhYnMgPSBuZXcgc2NpbC5UYWJzKHBhcmVudCwgdGhpcy5vcHRpb25zKTtcclxuICAgIGZvciAodmFyIGsgaW4gdGhpcy5vcHRpb25zLnRhYnMpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnRhYnNba10udGFia2V5ID0gaztcclxuICAgICAgdmFyIHRkID0gdGhpcy50YWJzLmZpbmRUYWIoayk7XHJcbiAgICAgIHRkLmZvcm0gPSBuZXcgc2NpbC5Gb3JtKHRoaXMub3B0aW9ucyk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5kZWxheXJlbmRlciB8fCBmaXJzdCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyVGFiRm9ybSh0ZCk7XHJcbiAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciBidXR0b25zID0gdGhpcy5vcHRpb25zLmJ1dHRvbnM7XHJcbiAgICBpZiAoYnV0dG9ucyAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBkaXYgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQocGFyZW50LCAnZGl2JywgbnVsbCwge21hcmdpblRvcDogJzEwcHgnLCB0ZXh0QWxpZ246ICdjZW50ZXInfSk7XHJcbiAgICAgIGlmIChidXR0b25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICB0aGlzLmJ1dHRvbnMucHVzaChzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbihkaXYsIGJ1dHRvbnNbaV0pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbnMucHVzaChzY2lsLlV0aWxzLmNyZWF0ZUJ1dHRvbihkaXYsIGJ1dHRvbnMpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgZmllbGQgdmFsdWVcclxuICAgKiBAZnVuY3Rpb24gc2V0RmllbGRWYWx1ZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIHRoZSBpZCBvZiB0aGUgZmllbGRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdiAtIHZhbHVlIHRvIGJlIHNldFxyXG4gICAqL1xyXG4gIHNldEZpZWxkVmFsdWUoaWQsIHYsIGRhdGEpIHtcclxuICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGRzW2lkXTtcclxuICAgIHNjaWwuRm9ybS5zZXRGaWVsZERhdGEodGhpcy5maWVsZHNbaWRdLCB0aGlzLml0ZW1zW2lkXSwgdGhpcy52aWV3b25seSwgdiwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBmb2N1cyhrZXkpIHtcclxuICAgIHNjaWwuRm9ybS5mb2N1cyh0aGlzLmZpZWxkcywga2V5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAqIEBmdW5jdGlvbiBjaGVja1JlcXVpcmVkRmllbGRzXHJcbiAgICovXHJcbiAgY2hlY2tSZXF1aXJlZEZpZWxkcyhzdHViOiBudW1iZXIpIHtcclxuICAgIHZhciBuID0gMDtcclxuICAgIHZhciB0YWJzID0gdGhpcy50YWJzLmFsbFRhYnMoKTtcclxuICAgIGZvciAodmFyIGsgaW4gdGFicykge1xyXG4gICAgICB2YXIgZm9ybSA9IHRhYnNba10uZm9ybTtcclxuICAgICAgaWYgKGZvcm0gIT0gbnVsbClcclxuICAgICAgICBuICs9IGZvcm0uY2hlY2tSZXF1aXJlZEZpZWxkcygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCByZXF1aXJlZCBmaWVsZHNcclxuICAgKiBAZnVuY3Rpb24gcmVzZXRSZXF1aXJlZEZpZWxkc1xyXG4gICAqL1xyXG4gIHJlc2V0UmVxdWlyZWRGaWVsZHMoKSB7XHJcbiAgICB2YXIgdGFicyA9IHRoaXMudGFicy5hbGxUYWJzKCk7XHJcbiAgICBmb3IgKHZhciBrIGluIHRhYnMpIHtcclxuICAgICAgdmFyIGZvcm0gPSB0YWJzW2tdLmZvcm07XHJcbiAgICAgIGlmIChmb3JtICE9IG51bGwpXHJcbiAgICAgICAgZm9ybS5yZXNldFJlcXVpcmVkRmllbGRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJUYWJGb3JtKHRkKSB7XHJcbiAgICBpZiAodGQucmVuZGVyZWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB2YXIgayA9IHRkLmdldEF0dHJpYnV0ZSgna2V5Jyk7XHJcbiAgICB2YXIgZmllbGRzID0gbnVsbDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudGFicyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy50YWJzW2tdICE9IG51bGwpXHJcbiAgICAgIGZpZWxkcyA9IHRoaXMub3B0aW9ucy50YWJzW2tdLmZpZWxkcztcclxuXHJcbiAgICB2YXIgZGlzcGxheSA9IHRkLmNsaWVudGFyZWEuc3R5bGUuZGlzcGxheTtcclxuICAgIHRkLmNsaWVudGFyZWEuc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgdGQuZm9ybS5yZW5kZXIodGQuY2xpZW50YXJlYSwgZmllbGRzLCB0aGlzLm9wdGlvbnMudGFic1trXSk7XHJcbiAgICB0ZC5jbGllbnRhcmVhLnN0eWxlLmRpc3BsYXkgPSBkaXNwbGF5O1xyXG5cclxuICAgIHNjaWwuYXBwbHkodGhpcy5maWVsZHMsIHRkLmZvcm0uZmllbGRzKTtcclxuICAgIHRkLnJlbmRlcmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldEN1clRhYkRhdGEoaW5jbHVkZU51bGxWYWx1ZXMpIHtcclxuICAgIGlmICh0aGlzLnRhYnMuY3VycmVudHRhYiA9PSBudWxsIHx8IHRoaXMudGFicy5jdXJyZW50dGFiLmZvcm0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy50YWJzLmN1cnJlbnR0YWIuZm9ybS5nZXREYXRhKGluY2x1ZGVOdWxsVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbGxlY3QgZm9ybSBkYXRhIGluIHhtbCBmb3JtYXRcclxuICAgKiBAZnVuY3Rpb24gZ2V0WG1sXHJcbiAgICogQHJldHVybnMgeG1sIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFhtbChub3dyYXBwZXIpIHtcclxuICAgIHZhciByZXQgPSBub3dyYXBwZXIgPyAnJyA6ICc8ZGF0YT5cXG4nO1xyXG4gICAgdmFyIHRhYnMgPSB0aGlzLnRhYnMuYWxsVGFicygpO1xyXG4gICAgZm9yICh2YXIgayBpbiB0YWJzKSB7XHJcbiAgICAgIHZhciBmb3JtID0gdGFic1trXS5mb3JtO1xyXG4gICAgICBpZiAoZm9ybSAhPSBudWxsKVxyXG4gICAgICAgIHJldCArPSBmb3JtLmdldFhtbCh0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICghbm93cmFwcGVyKVxyXG4gICAgICByZXQgKz0gJzwvZGF0YT4nO1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBmb3JtIGRhdGFcclxuICAgKiBAZnVuY3Rpb24gc2V0WG1sXHJcbiAgICogQHBhcmFtIHt4bWx9IGRhdGEgdGhlIGZvcm0gZGF0YSwgKmlkKiBpcyB0aGUga2V5XHJcbiAgICovXHJcbiAgc2V0WG1sKHhtbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGRhdGEgPSBzY2lsLkZvcm0ueG1sMkpzb24oeG1sKTtcclxuICAgICAgdGhpcy5zZXREYXRhKGRhdGEpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBhbGVydCgnRXJyb3IgcmFpc2VkIHdoZW4gc2V0dGluZyBmb3JtIGRhdGE6ICcgKyBlLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YShpbmNsdWRlTnVsbFZhbHVlcykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXRkYXRhID09ICd0YWInKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDdXJUYWJEYXRhKGluY2x1ZGVOdWxsVmFsdWVzKTtcclxuXHJcbiAgICB2YXIgcmV0ID0ge307XHJcbiAgICB2YXIgdGFicyA9IHRoaXMudGFicy5hbGxUYWJzKCk7XHJcbiAgICBmb3IgKHZhciBrIGluIHRhYnMpIHtcclxuICAgICAgdmFyIGZvcm0gPSB0YWJzW2tdLmZvcm07XHJcbiAgICAgIGlmIChmb3JtICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgZGF0YSA9IGZvcm0uZ2V0RGF0YShpbmNsdWRlTnVsbFZhbHVlcyk7XHJcbiAgICAgICAgc2NpbC5hcHBseShyZXQsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIHNldERhdGEoZGF0YSwgb3ZlcndyaXRlbW9kZT86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2V0ZGF0YSA9PSAndGFiJykge1xyXG4gICAgICBpZiAodGhpcy50YWJzLmN1cnJlbnR0YWIgIT0gbnVsbCAmJiB0aGlzLnRhYnMuY3VycmVudHRhYi5mb3JtICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy50YWJzLmN1cnJlbnR0YWIuZm9ybS5zZXREYXRhKGRhdGEsIG92ZXJ3cml0ZW1vZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHRhYnMgPSB0aGlzLnRhYnMuYWxsVGFicygpO1xyXG4gICAgICBmb3IgKHZhciBrIGluIHRhYnMpIHtcclxuICAgICAgICB2YXIgZm9ybSA9IHRhYnNba10uZm9ybTtcclxuICAgICAgICBpZiAoZm9ybSAhPSBudWxsKVxyXG4gICAgICAgICAgZm9ybS5zZXREYXRhKGRhdGEsIG92ZXJ3cml0ZW1vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5zY2lsLlRhYmJlZEZvcm0gPSBUYWJiZWRGb3JtO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIFNjaWxsaWdlbmNlIEpTRHJhd1xyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gVmVyc2lvbiAxLjAuMC4yMDEzLTExLTA2XHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge1NjaWxNb2R1bGVUeXBlfSBmcm9tIFwiLi4vc3JjL3R5cGVzL3NjaWxcIjtcclxuaW1wb3J0IHR5cGUge0lQYWdlRm9ybSwgUGFnZX0gZnJvbSAnLi9QYWdlJztcclxuaW1wb3J0IHR5cGUge1BhZ2VFeHBsb3JlckZvcm19IGZyb20gJy4vUGFnZS5FeHBsb3JlckZvcm0nO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuXHJcbi8qKlxyXG4gKiBQYWdlLkN1c3RvbSBjbGFzcyAtIFBhZ2UuQ3VzdG9tIENvbnRyb2xcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLlBhZ2UuQ3VzdG9tXHJcbiAqIDxwcmU+XHJcbiAqIDxiPkV4YW1wbGU6PC9iPlxyXG4gKiAgICAgICAgdmFyIHRhYnMgPSB0aGlzLnBhZ2UuYWRkVGFicygpO1xyXG4gKiAgICAgICAgc2NpbC5wbWYuQ29tcGFueS5hbGxGb3Jtcyh0aGlzLCB0YWJzLCB0aGlzLnBhcmVudHRhYmxlLCB0cnVlKTtcclxuICpcclxuICogICAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAqICAgICAgICB0aGlzLmR5bmFtaWNmb3JtID0gdGFicy5hZGRGb3JtKHtcclxuICogICAgICAgICAgICBjYXB0aW9uOiBcIkR5bmFtaWMgRm9ybVwiLFxyXG4gKiAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXHJcbiAqICAgICAgICAgICAgb25jbGVhcjogZnVuY3Rpb24gKCkge1xyXG4gKiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLnJlbW92ZUFsbChtZS5keW5hbWljZm9ybS5mb3JtLmRpdik7XHJcbiAqICAgICAgICAgICAgfSxcclxuICogICAgICAgICAgICBvbnJlZnJlc2g6IGZ1bmN0aW9uIChmcm9tLCBhcmdzKSB7XHJcbiAqICAgICAgICAgICAgICAgIHNjaWwuVXRpbHMucmVtb3ZlQWxsKG1lLmR5bmFtaWNmb3JtLmZvcm0uZGl2KTtcclxuICogICAgICAgICAgICAgICAgdmFyIGZpZWxkcyA9IHtcclxuICogICAgICAgICAgICAgICAgICAgIG1hc3M6IHsgbGFiZWw6IFwiTWFzc1wiLCB0eXBlOiBcIm51bWJlclwiLCB3aWR0aDogMjAwLCB1bml0OiBcImdcIiB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgbmFtZTogeyBsYWJlbDogXCJDb21wb3VuZCBOYW1lXCIsIHR5cGU6IFwiaW5wdXRcIiwgd2lkdGg6IDIwMCwgYnV0dG9uOiB7IGxhYmVsOiBcIlRlc3RcIiwgb25jbGljazogZnVuY3Rpb24gKCkgeyBhbGVydCg5OSk7IH0gfSB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgdmVuZG9yOiB7IGxhYmVsOiBcIlZlbmRvclwiLCB0eXBlOiBcInNlbGVjdFwiLCBvcHRpb25zOiBbXCJDb21wYW55IEFcIiwgXCJDb21wYW55IEJcIl0sIHdpZHRoOiAyMDAgfVxyXG4gKiAgICAgICAgICAgICAgICB9O1xyXG4gKiAgICAgICAgICAgICAgICB2YXIgZm9ybSA9IG5ldyBzY2lsLkZvcm0oeyB2aWV3b25seTogZmFsc2UgfSk7XHJcbiAqICAgICAgICAgICAgICAgIGZvcm0ucmVuZGVyKG1lLmR5bmFtaWNmb3JtLmZvcm0uZGl2LCBmaWVsZHMsIHsgaW1tZWRpYXRlbHk6IHRydWUgfSk7XHJcbiAqICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgfSk7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBhZ2VDdXN0b20gaW1wbGVtZW50cyBJUGFnZUZvcm0ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgVDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVmcmVzaG5lZWRlZDogYm9vbGVhbjtcclxuICBwcm90ZWN0ZWQgcGFnZTogYW55O1xyXG4gIHByaXZhdGUgb3B0aW9uczogYW55O1xyXG4gIHByaXZhdGUgcmVjZWl2ZXJzOiBhbnlbXTtcclxuICBwcml2YXRlIGFyZ3M6IGFueTtcclxuXHJcbiAgcHVibGljIGZvcm06IFBhZ2VFeHBsb3JlckZvcm07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IGFueSwgcGFyZW50OiBhbnkpIHtcclxuICAgIHRoaXMuVCA9ICdQQUdFLkNVU1RPTSc7XHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICB0aGlzLnJlZnJlc2huZWVkZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdlID0gcGFnZTtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICB0aGlzLnJlY2VpdmVycyA9IFtdO1xyXG5cclxuICAgIGxldCBidXR0b25zID0gW107XHJcbiAgICBpZiAob3B0aW9ucy5ub3JlZnJlc2ggPT0gZmFsc2UpXHJcbiAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgc3JjOiBzY2lsLkFwcC5pbWdTbWFsbCgncmVmcmVzaC5wbmcnKSwgdGl0bGU6ICdSZWZyZXNoJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBtZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmJ1dHRvbnMgIT0gbnVsbClcclxuICAgICAgYnV0dG9ucyA9IGJ1dHRvbnMuY29uY2F0KHRoaXMub3B0aW9ucy5idXR0b25zKTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSBuZXcgc2NpbC5QYWdlLkV4cGxvcmVyRm9ybShwYXJlbnQsIHtleHBhbmRhYmxlOiBvcHRpb25zLmV4cGFuZGFibGUsIGNhcHRpb246IG9wdGlvbnMuY2FwdGlvbiwgdmlzaWJsZTogb3B0aW9ucy52aXNpYmxlLCBidXR0b25zOiBidXR0b25zLCBtYXJnaW5Cb3R0b206IG9wdGlvbnMubWFyZ2luQm90dG9tLCBleHBhbmRlZDogdGhpcy5vcHRpb25zLmV4cGFuZGVkLCBvbmV4cGFuZDogdGhpcy5vcHRpb25zLm9uZXhwYW5kfSk7XHJcbiAgICB0aGlzLmZvcm0uaG9zdCA9IHRoaXM7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uY3JlYXRlICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbmNyZWF0ZSh0aGlzLmZvcm0uZGl2LCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIHRoaXMuZm9ybS5zaG93KCk7XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgdGhpcy5mb3JtLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goZnJvbT86IGFueSwgYXJncz86IGFueSkge1xyXG4gICAgaWYgKGFyZ3MgIT0gbnVsbClcclxuICAgICAgdGhpcy5hcmdzID0gYXJncztcclxuXHJcbiAgICBpZiAoIXRoaXMuZm9ybS5pc1Zpc2libGUoKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2huZWVkZWQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNobmVlZGVkID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9ucmVmcmVzaCAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25yZWZyZXNoKGZyb20sIHRoaXMuYXJncywgdGhpcyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25jbGVhciAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25jbGVhcigpO1xyXG4gIH1cclxufVxyXG5cclxuc2NpbC5QYWdlLkN1c3RvbSA9IFBhZ2VDdXN0b207XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxNCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtTY2lsTW9kdWxlVHlwZX0gZnJvbSBcIi4uL3NyYy90eXBlcy9zY2lsXCI7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VFeHBsb3JlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBvcHRpb25zOiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZXNpemluZzogYW55O1xyXG4gIHB1YmxpYyBsZWZ0OiBIVE1MRWxlbWVudDtcclxuICBwdWJsaWMgcmlnaHQ6IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBtaWRkbGU6IEhUTUxFbGVtZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocGFyZW50OiBIVE1MRWxlbWVudCB8IHN0cmluZywgb3B0aW9ucz86IGFueSkge1xyXG4gICAgdGhpcy5UID0gJ1BBR0UuRVhQTE9SRVInO1xyXG4gICAgaWYgKHR5cGVvZiAocGFyZW50KSA9PSAnc3RyaW5nJylcclxuICAgICAgcGFyZW50ID0gc2NpbC5ieUlkKHBhcmVudCk7XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHJcbiAgICB0aGlzLnJlc2l6aW5nID0gbnVsbDtcclxuICAgIGlmIChvcHRpb25zLnJlc2l6YWJsZSA9PSBudWxsKVxyXG4gICAgICBvcHRpb25zLnJlc2l6YWJsZSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKHBhcmVudCwgMCwgMCwge3dpZHRoOiAnMTAwJSd9KTtcclxuICAgIGNvbnN0IHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5sZWZ0ID09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMubGVmdCA9IG51bGw7XHJcbiAgICAgIHRoaXMubWlkZGxlID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHcgPSBvcHRpb25zLmxlZnR3aWR0aCA+IDAgPyBvcHRpb25zLmxlZnR3aWR0aCA6IDIwMDtcclxuICAgICAgY29uc3QgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHt3aWR0aDogJzElJywgcGFkZGluZ1JpZ2h0OiAnMXB4J30sIHt2QWxpZ246ICd0b3AnfSk7XHJcbiAgICAgIGNvbnN0IHRib2R5MiA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUodGQsIDAsIDAsIG9wdGlvbnMucmVzaXphYmxlID8gbnVsbCA6IHt3aWR0aDogd30pO1xyXG4gICAgICBjb25zdCB0cjIgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGJvZHkyLCAndHInKTtcclxuICAgICAgY29uc3QgdGQyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyMiwgJ3RkJyk7XHJcbiAgICAgIHRoaXMubGVmdCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ZDIsICdkaXYnLCBudWxsLCBvcHRpb25zLnJlc2l6YWJsZSA/IHt3aWR0aDogdywgb3ZlcmZsb3c6ICdoaWRkZW4nfSA6IG51bGwpO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMubWlkZGxlICE9IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5taWRkbGUgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcpO1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0aGlzLm1pZGRsZSwgJ2RpdicsIG51bGwsIHt3aWR0aDogYCR7c2NpbC5QYWdlLmtIYW5kbGVXaWR0aH1weGB9KTtcclxuICAgICAgICBzY2lsLlV0aWxzLnVuc2VsZWN0YWJsZSh0aGlzLm1pZGRsZSk7XHJcbiAgICAgICAgc2NpbC5VdGlscy51bnNlbGVjdGFibGUoZGl2KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMucmVzaXphYmxlKSB7XHJcbiAgICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICAgIG5ldyBzY2lsLlJlc2l6YWJsZSh0aGlzLm1pZGRsZSwge1xyXG4gICAgICAgICAgZGlyZWN0aW9uOiAneCcsIG1vdXNlb3ZlcmNvbG9yOiBzY2lsLlBhZ2Uua0hhbmRsZUNvbG9yLCBvbnJlc2l6ZTogZnVuY3Rpb24oZGVsdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lLm9ucmVzaXplKGRlbHRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJpZ2h0ID0gb3B0aW9ucy5yaWdodCA9PSBmYWxzZSA/IG51bGwgOiBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHt3aWR0aDogJzk5JScsIHBhZGRpbmdMZWZ0OiBvcHRpb25zLmxlZnQgPT0gZmFsc2UgPyBudWxsIDogJzFweCd9LCB7dkFsaWduOiAndG9wJ30pO1xyXG4gIH1cclxuXHJcbiAgb25yZXNpemUoZGVsdGEpIHtcclxuICAgIGNvbnN0IHcgPSBzY2lsLlV0aWxzLnBhcnNlUGl4ZWwodGhpcy5sZWZ0LnN0eWxlLndpZHRoKSArIGRlbHRhO1xyXG4gICAgaWYgKHcgPiAyMCkge1xyXG4gICAgICB0aGlzLmxlZnQuc3R5bGUud2lkdGggPSB3ICsgJ3B4JztcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbnJlc2l6ZSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5vbnJlc2l6ZSh3LCB0aGlzKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5zY2lsLlBhZ2UuRXhwbG9yZXIgPSBQYWdlRXhwbG9yZXI7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxNCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtEb2pvVHlwZX0gZnJvbSAnLi4vc3JjL3R5cGVzL2Rvam8nO1xyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4uL3NyYy90eXBlcyc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IGRvam86IERvam9UeXBlO1xyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VFeHBsb3JlckZvcm1JbnQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgVDogc3RyaW5nO1xyXG4gIHByaXZhdGUgb3B0aW9uczogYW55O1xyXG4gIHB1YmxpYyBkb206IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgcm9vdDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB0aXRsZTogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB0YWJsZTogSFRNTFRhYmxlRWxlbWVudDtcclxuXHJcbiAgcHVibGljIG1haW46IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHB1YmxpYyBob3N0OiBhbnk7XHJcbiAgcHVibGljIHRvb2xiYXI6IEhUTUxFbGVtZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocGFyZW50OiBIVE1MRWxlbWVudCB8IHN0cmluZywgb3B0aW9ucykge1xyXG4gICAgdGhpcy5UID0gJ1BBR0UuRVhQTE9SRVJfRk9STSc7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcblxyXG4gICAgaWYgKHR5cGVvZiAocGFyZW50KSA9PSAnc3RyaW5nJylcclxuICAgICAgcGFyZW50ID0gc2NpbC5ieUlkKHBhcmVudCk7XHJcblxyXG4gICAgY29uc3QgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKHBhcmVudCwgMCwgMCwge3dpZHRoOiAnMTAwJScsIGJhY2tncm91bmQ6ICcjZmZmJ30pO1xyXG4gICAgdGhpcy5kb20gPSB0aGlzLnJvb3QgPSB0Ym9keS5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52aXNpYmxlID09IGZhbHNlKVxyXG4gICAgICB0aGlzLnJvb3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHJcbiAgICBpZiAob3B0aW9ucy5jYXB0aW9uID09IG51bGwpIHtcclxuICAgICAgdGJvZHkucGFyZW50RWxlbWVudC8qIHBhcmVudE5vZGUgKi8uc3R5bGUuYm9yZGVyVG9wID0gJ3NvbGlkIDFweCAnICsgc2NpbC5QYWdlLkV4cGxvcmVyRm9ybS5rSGVhZGVyU3R5bGUuYmFja2dyb3VuZDtcclxuICAgICAgdGhpcy50aXRsZSA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRpdGxlID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyksICd0ZCcsIHNjaWwuTGFuZy5yZXMob3B0aW9ucy5jYXB0aW9uKSwgc2NpbC5QYWdlLkV4cGxvcmVyRm9ybS5rSGVhZGVyU3R5bGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sYmFyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyksICd0ZCcsIG51bGwsIHNjaWwuUGFnZS5FeHBsb3JlckZvcm0ua1Rvb2xiYXJTdHlsZSk7XHJcbiAgICBpZiAob3B0aW9ucy50b29sYmFydmlzaWJsZSA9PSBmYWxzZSlcclxuICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB0aGlzLnRvb2xiYXIuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnOyAvL0kjMTE3NjJcclxuXHJcbiAgICB0aGlzLm1haW4gPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKSwgJ3RkJywgbnVsbCwgc2NpbC5QYWdlLkV4cGxvcmVyRm9ybS5rQXJlYVN0eWxlKTtcclxuICAgIHRoaXMuZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMubWFpbiwgJ2RpdicpO1xyXG4gICAgdGhpcy50YWJsZSA9IHRib2R5LnBhcmVudE5vZGUgYXMgSFRNTFRhYmxlRWxlbWVudDtcclxuXHJcbiAgICBzY2lsLkZvcm0uY3JlYXRlVG9vbGJhckJ1dHRvbnModGhpcy50b29sYmFyLCBvcHRpb25zLmJ1dHRvbnMsIG9wdGlvbnMucGFkZGluZyk7XHJcblxyXG4gICAgaWYgKHRoaXMudGl0bGUgIT0gbnVsbCAmJiBvcHRpb25zLmV4cGFuZGFibGUgIT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICBkb2pvLmNvbm5lY3QodGhpcy50aXRsZSwgJ29uY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zdCBmID0gIW1lLmlzRXhwYW5kZWQoKTtcclxuICAgICAgICBtZS5leHBhbmQoZik7XHJcbiAgICAgICAgaWYgKG1lLm9wdGlvbnMub25leHBhbmQgIT0gbnVsbClcclxuICAgICAgICAgIG1lLm9wdGlvbnMub25leHBhbmQoZik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMuZXhwYW5kZWQgPT0gZmFsc2UpXHJcbiAgICAgICAgdGhpcy5leHBhbmQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubWFyZ2luVG9wICE9IG51bGwpXHJcbiAgICAgIHRoaXMudGFibGUuc3R5bGUubWFyZ2luVG9wID0gdGhpcy5vcHRpb25zLm1hcmdpblRvcDtcclxuICAgIHRoaXMudGFibGUuc3R5bGUubWFyZ2luQm90dG9tID0gdGhpcy5vcHRpb25zLm1hcmdpbkJvdHRvbSA9PSBudWxsID8gJzI1cHgnIDogdGhpcy5vcHRpb25zLm1hcmdpbkJvdHRvbTtcclxuICB9XHJcblxyXG4gIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzY2lsLlV0aWxzLmlzQWxsUGFyZW50VmlzaWJsZSh0aGlzLnJvb3QpO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzVmlzaWJsZSgpKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB0aGlzLnJvb3Quc3R5bGUuZGlzcGxheSA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLmhvc3QgIT0gbnVsbCAmJiB0aGlzLmhvc3QucmVmcmVzaCAhPSBudWxsICYmIHRoaXMuaG9zdC5yZWZyZXNobmVlZGVkKVxyXG4gICAgICB0aGlzLmhvc3QucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgaGlkZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucm9vdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgY29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBleHBhbmQoZjogYm9vbGVhbiB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmIChmID09IG51bGwpXHJcbiAgICAgIGYgPSB0cnVlO1xyXG4gICAgdGhpcy50b29sYmFyLnN0eWxlLmRpc3BsYXkgPSBmID8gJycgOiAnbm9uZSc7XHJcbiAgICB0aGlzLm1haW4uc3R5bGUuZGlzcGxheSA9IGYgPyAnJyA6ICdub25lJztcclxuICAgIHRoaXMudGl0bGUuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gc2NpbC5BcHAuaW1nU21hbGwoZiA/ICdleHBhbmQucG5nJyA6ICdjb2xsYXBzZS5wbmcnLCB0cnVlKTtcclxuICAgIHRoaXMudGl0bGUuc3R5bGUuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xyXG4gICAgdGhpcy50aXRsZS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnbGVmdCBjZW50ZXInO1xyXG5cclxuICAgIGlmICh0aGlzLmhvc3QgIT0gbnVsbCAmJiB0aGlzLmhvc3QucmVmcmVzaCAhPSBudWxsICYmIHRoaXMuaG9zdC5yZWZyZXNobmVlZGVkKVxyXG4gICAgICB0aGlzLmhvc3QucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgaXNFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1haW4uc3R5bGUuZGlzcGxheSA9PSAnJztcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlRXhwbG9yZXJGb3JtIGV4dGVuZHMgUGFnZUV4cGxvcmVyRm9ybUludCB7XHJcbiAgc3RhdGljIGtIZWFkZXJTdHlsZSA9IHtiYWNrZ3JvdW5kOiAnIzg4ZicsIGNvbG9yOiAnd2hpdGUnLCBwYWRkaW5nOiAnM3B4IDEwcHggM3B4IDE2cHgnLCB3aGl0ZVNwYWNlOiAnbm93cmFwJywgYm9yZGVyVG9wTGVmdFJhZGl1czogJzVweCcsIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnNXB4J307XHJcbiAgc3RhdGljIGtUb29sYmFyU3R5bGUgPSB7YmFja2dyb3VuZDogJyNmNWY1ZjUnLCBib3JkZXI6ICdzb2xpZCAxcHggI2Y1ZjVmNScsIHBhZGRpbmc6ICcwIDVweCAwIDVweCd9O1xyXG4gIHN0YXRpYyBrQXJlYVN0eWxlID0ge2JvcmRlcjogJ3NvbGlkIDFweCAjZjVmNWY1JywgcGFkZGluZzogJzVweCd9O1xyXG59XHJcblxyXG5zY2lsLlBhZ2UuRXhwbG9yZXJGb3JtID0gUGFnZUV4cGxvcmVyRm9ybTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBTY2lsbGlnZW5jZSBKU0RyYXdcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE0IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIFZlcnNpb24gMS4wLjAuMjAxMy0xMS0wNlxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtTY2lsTW9kdWxlVHlwZX0gZnJvbSAnLi4vc3JjL3R5cGVzJztcclxuaW1wb3J0IHR5cGUge0lQYWdlRm9ybSwgUGFnZX0gZnJvbSAnLi9QYWdlJztcclxuaW1wb3J0IHR5cGUge1BhZ2VFeHBsb3JlckZvcm19IGZyb20gJy4vUGFnZS5FeHBsb3JlckZvcm0nO1xyXG5pbXBvcnQgdHlwZSB7Rm9ybX0gZnJvbSAnLi4vZm9ybS9Gb3JtJztcclxuXHJcbmRlY2xhcmUgY29uc3Qgc2NpbDogU2NpbE1vZHVsZVR5cGU7XHJcblxyXG4vKipcclxuICogUGFnZS5Gb3JtIGNsYXNzIC0gUGFnZS5Gb3JtIENvbnRyb2xcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLlBhZ2UuRm9ybVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBhZ2VGb3JtIGltcGxlbWVudHMgSVBhZ2VGb3JtIHtcclxuICBwcml2YXRlIFQ6IHN0cmluZztcclxuICBwcml2YXRlIHJlY2VpdmVyczogYW55W107XHJcbiAgcHJpdmF0ZSByZWZyZXNobmVlZGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgcGFnZTogUGFnZTtcclxuICBwcml2YXRlIG9wdGlvbnM6IGFueTtcclxuICBwcml2YXRlIHRhYmxlOiBGb3JtO1xyXG4gIHByaXZhdGUgYXJnczogYW55O1xyXG5cclxuICBwdWJsaWMgZm9ybTogUGFnZUV4cGxvcmVyRm9ybTtcclxuXHJcbiAgY29uc3RydWN0b3IocGFnZTogUGFnZSwgb3B0aW9uczogYW55LCBwYXJlbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLlQgPSAnUEFHRS5GT1JNJztcclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIHRoaXMucmVmcmVzaG5lZWRlZCA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMucmVjZWl2ZXJzID0gW107XHJcblxyXG4gICAgbGV0IGJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChvcHRpb25zLm5vcmVmcmVzaCA9PSBmYWxzZSlcclxuICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdyZWZyZXNoLnBuZycpLCB0aXRsZTogJ1JlZnJlc2gnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLnJlZnJlc2goKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYnV0dG9ucyAhPSBudWxsKVxyXG4gICAgICBidXR0b25zID0gYnV0dG9ucy5jb25jYXQodGhpcy5vcHRpb25zLmJ1dHRvbnMpO1xyXG5cclxuICAgIGlmIChvcHRpb25zLnZpZXdvbmx5ID09IG51bGwpXHJcbiAgICAgIG9wdGlvbnMudmlld29ubHkgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IG5ldyBzY2lsLlBhZ2UuRXhwbG9yZXJGb3JtKHBhcmVudCwge2V4cGFuZGFibGU6IG9wdGlvbnMuZXhwYW5kYWJsZSwgY2FwdGlvbjogb3B0aW9ucy5jYXB0aW9uLCB2aXNpYmxlOiBvcHRpb25zLnZpc2libGUsIGJ1dHRvbnM6IGJ1dHRvbnMsIG1hcmdpbkJvdHRvbTogb3B0aW9ucy5tYXJnaW5Cb3R0b20sIGV4cGFuZGVkOiB0aGlzLm9wdGlvbnMuZXhwYW5kZWQsIG9uZXhwYW5kOiB0aGlzLm9wdGlvbnMub25leHBhbmR9KTtcclxuICAgIHRoaXMuZm9ybS5ob3N0ID0gdGhpcztcclxuICAgIHRoaXMudGFibGUgPSBuZXcgc2NpbC5Gb3JtKHthbHRlcm5hdGl2ZWZvcm1zOiB0aGlzLm9wdGlvbnMuYWx0ZXJuYXRpdmVmb3Jtcywgdmlld29ubHk6IG9wdGlvbnMudmlld29ubHksIG9uY2hhbmdlOiB0aGlzLm9wdGlvbnMub25mb3JtY2hhbmdlfSk7XHJcbiAgICB0aGlzLnRhYmxlLnJlbmRlcih0aGlzLmZvcm0uZGl2LCB0aGlzLm9wdGlvbnMuZmllbGRzLCB7aW1tZWRpYXRlbHk6IHRydWUsIGhpZGVsYWJlbDogb3B0aW9ucy5oaWRlbGFiZWx9KTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICB0aGlzLmZvcm0uc2hvdygpO1xyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIHRoaXMuZm9ybS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGZyb20/OiBhbnksIGFyZ3M/OiBhbnkpIHtcclxuICAgIGlmIChhcmdzICE9IG51bGwpXHJcbiAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvcm0uaXNWaXNpYmxlKCkgfHwgIXRoaXMuZm9ybS5pc0V4cGFuZGVkKCkpIHtcclxuICAgICAgdGhpcy5yZWZyZXNobmVlZGVkID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2lsLlV0aWxzLmlzRGljdEVtcHR5KHRoaXMuYXJncykpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICB0aGlzLnJlZnJlc2huZWVkZWQgPSBmYWxzZTtcclxuICAgIGxldCBwYXJhbXMgPSB0aGlzLmFyZ3M7XHJcbiAgICBpZiAocGFyYW1zID09IG51bGwpXHJcbiAgICAgIHBhcmFtcyA9IHt9O1xyXG4gICAgaWYgKG1lLm9wdGlvbnMub25iZWZvcmVyZWZyZXNoICE9IG51bGwpXHJcbiAgICAgIG1lLm9wdGlvbnMub25iZWZvcmVyZWZyZXNoKHBhcmFtcyk7XHJcblxyXG4gICAgdGhpcy5wYWdlLnJlY2VpdmVyQ2xlYXIodGhpcyk7XHJcblxyXG4gICAgc2NpbC5VdGlscy5hamF4KHRoaXMucGFnZS51cmwgKyB0aGlzLm9wdGlvbnMub2JqZWN0ICsgJy5sb2FkJywgZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIGlmIChtZS5vcHRpb25zLm9uc2V0ZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgbWUub3B0aW9ucy5vbnNldGRhdGEobWUudGFibGUsIHJldCk7XHJcbiAgICAgIH0gZWxzZSBpZiAobWUub3B0aW9ucy5zYXZlZG9jICYmIHJldC5kb2MgIT0gbnVsbCAmJiByZXQuZG9jICE9ICcnKSB7XHJcbiAgICAgICAgbWUudGFibGUuc2V0WG1sKHJldC5kb2MpO1xyXG4gICAgICAgIG1lLnRhYmxlLnNldERhdGEocmV0LCB0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtZS50YWJsZS5zZXREYXRhKHJldCk7XHJcbiAgICAgIH1cclxuICAgIH0sIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudGFibGUuc2V0RGF0YSh7fSk7XHJcbiAgICB0aGlzLnBhZ2UucmVjZWl2ZXJDbGVhcih0aGlzKTtcclxuICB9XHJcbn1cclxuXHJcbnNjaWwuUGFnZS5Gb3JtID0gUGFnZUZvcm07XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gU2NpbGxpZ2VuY2UgSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxNCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBWZXJzaW9uIDEuMC4wLjIwMTMtMTEtMDZcclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4uL3NyYy90eXBlcyc7XHJcbmltcG9ydCB0eXBlIHtQYWdlfSBmcm9tICcuL1BhZ2UnO1xyXG5pbXBvcnQgdHlwZSB7VGFic30gZnJvbSAnLi4vZm9ybS9UYWInO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuXHJcbi8qKlxyXG4gKiBQYWdlLlRhYiBjbGFzcyAtIFBhZ2UuVGFiIENvbnRyb2xcclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLlBhZ2UuVGFiXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGFnZVRhYiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYWdlOiBQYWdlO1xyXG4gIHByaXZhdGUgb3B0aW9uczogYW55O1xyXG4gIHByaXZhdGUgb25TaG93VGFiMjogYW55O1xyXG4gIHB1YmxpYyB0YWJzOiBUYWJzO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocGFnZTogUGFnZSwgb3B0aW9uczogYW55LCBwYXJlbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLlQgPSAnUEFHRS5UQUInO1xyXG4gICAgdGhpcy5wYWdlID0gcGFnZTtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPT0gbnVsbCA/IHt9IDogb3B0aW9ucztcclxuICAgIHRoaXMub25TaG93VGFiMiA9IHRoaXMub3B0aW9ucy5vblNob3dUYWI7XHJcblxyXG4gICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5vcHRpb25zLm9uU2hvd1RhYiA9IGZ1bmN0aW9uKHRhYiwgb2xkKSB7XHJcbiAgICAgIGlmIChvbGQgIT0gbnVsbCAmJiBvbGQuZm9ybSAhPSBudWxsKVxyXG4gICAgICAgIG9sZC5mb3JtLmhpZGUoKTtcclxuICAgICAgaWYgKHRhYi5mb3JtICE9IG51bGwpXHJcbiAgICAgICAgdGFiLmZvcm0uc2hvdygpO1xyXG5cclxuICAgICAgaWYgKG1lLm9uU2hvd1RhYjIgIT0gbnVsbClcclxuICAgICAgICBtZS5vblNob3dUYWIyKHRhYiwgb2xkKTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRhYnMgPSBuZXcgc2NpbC5UYWJzKHBhcmVudCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFkZEZvcm0ob3B0aW9uczogYW55LCBsaXN0ZW50bz86IGFueSkge1xyXG4gICAgY29uc3QgdGQgPSB0aGlzLnRhYnMuYWRkVGFiKG9wdGlvbnMpO1xyXG5cclxuICAgIGNvbnN0IGNhcHRpb24gPSBvcHRpb25zLmNhcHRpb25zO1xyXG4gICAgb3B0aW9ucy5jYXB0aW9uID0gbnVsbDtcclxuICAgIHRkLmZvcm0gPSBzY2lsLlBhZ2UuYWRkRm9ybSh0aGlzLnBhZ2UsIG9wdGlvbnMsIGxpc3RlbnRvLCB0ZC5jbGllbnRhcmVhKTtcclxuICAgIG9wdGlvbnMuY2FwdGlvbiA9IGNhcHRpb247XHJcblxyXG4gICAgc2NpbC5QYWdlLnNldEJvcmRlcih0ZC5mb3JtLmZvcm0pO1xyXG4gICAgcmV0dXJuIHRkLmZvcm07XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWIoa2V5KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJzLnJlbW92ZVRhYihrZXkpO1xyXG4gIH1cclxuXHJcbiAgZmluZFRhYihrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYnMuZmluZFRhYihrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RhYih0ZCkge1xyXG4gICAgdGhpcy50YWJzLnNob3dUYWIodGQpO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIHRoaXMudGFicy5zaG93KCk7XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgdGhpcy50YWJzLmhpZGUoKTtcclxuICB9XHJcbn1cclxuXHJcbnNjaWwuUGFnZS5UYWIgPSBQYWdlVGFiO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIFNjaWxsaWdlbmNlIEpTRHJhd1xyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gVmVyc2lvbiAxLjAuMC4yMDEzLTExLTA2XHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge1NjaWxNb2R1bGVUeXBlfSBmcm9tICcuLi9zcmMvdHlwZXMnO1xyXG5pbXBvcnQgdHlwZSB7SVBhZ2VGb3JtLCBQYWdlfSBmcm9tICcuL1BhZ2UnO1xyXG5pbXBvcnQgdHlwZSB7UGFnZUV4cGxvcmVyRm9ybX0gZnJvbSAnLi9QYWdlLkV4cGxvcmVyRm9ybSc7XHJcbmltcG9ydCB0eXBlIHtJVGFibGV9IGZyb20gJy4uL3NyYy90eXBlcy9zY2lsJztcclxuaW1wb3J0IHR5cGUge0lGb3JtRGlhbG9nfSBmcm9tICcuLi9zcmMvdHlwZXMvc2NpbC5mb3JtJztcclxuXHJcbmRlY2xhcmUgY29uc3Qgc2NpbDogU2NpbE1vZHVsZVR5cGU7XHJcblxyXG4vKipcclxuICogUGFnZS5UYWJsZSBjbGFzcyAtIFBhZ2UuVGFibGUgQ29udHJvbFxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuUGFnZS5UYWJsZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBhZ2VUYWJsZSBpbXBsZW1lbnRzIElQYWdlRm9ybSB7XHJcbiAgcHJpdmF0ZSBUOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWZyZXNobmVlZGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgcGFnZTogUGFnZTtcclxuICBwcml2YXRlIG9wdGlvbnM6IGFueTtcclxuICBwcml2YXRlIHJlY2VpdmVyczogYW55W107XHJcbiAgcHJpdmF0ZSB0YWJsZTogSVRhYmxlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFnZXM6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGVkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHByaXZhdGUgYXJnczogYW55O1xyXG4gIHByaXZhdGUgZGxnOiBJRm9ybURpYWxvZztcclxuXHJcbiAgcHVibGljIGZvcm06IFBhZ2VFeHBsb3JlckZvcm07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IGFueSwgcGFyZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5UID0gJ1BBR0UuVEFCTEUnO1xyXG4gICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5yZWZyZXNobmVlZGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5yZWNlaXZlcnMgPSBbXTtcclxuXHJcbiAgICBsZXQgYnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKCFvcHRpb25zLm5vcmVmcmVzaClcclxuICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdyZWZyZXNoLnBuZycpLCB0aXRsZTogJ1JlZnJlc2gnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLnJlZnJlc2goKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmllbGRzICE9IG51bGwpIHtcclxuICAgICAgYnV0dG9ucy5wdXNoKCctJyk7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FuYWRkICE9IGZhbHNlKVxyXG4gICAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdhZGQucG5nJyksIHRpdGxlOiAnTmV3Jywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIG1lLmFkZCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jYW5lZGl0ICE9IGZhbHNlKVxyXG4gICAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdlZGl0LnBuZycpLCB0aXRsZTogJ0VkaXQnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgbWUuZWRpdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYnV0dG9ucyAhPSBudWxsKVxyXG4gICAgICBidXR0b25zID0gYnV0dG9ucy5jb25jYXQodGhpcy5vcHRpb25zLmJ1dHRvbnMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29sdW1uaGlkYWJsZSkge1xyXG4gICAgICBidXR0b25zLnB1c2goJy0nKTtcclxuICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdjb2x1bW5zLnBuZycpLCB0aXRsZTogJ1Nob3cvSGlkZSBDb2x1bW5zJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBtZS50YWJsZS5zaG93SGlkZUNvbHVtbnMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0gPSBuZXcgc2NpbC5QYWdlLkV4cGxvcmVyRm9ybShwYXJlbnQsIHtleHBhbmRhYmxlOiBvcHRpb25zLmV4cGFuZGFibGUsIGNhcHRpb246IG9wdGlvbnMuY2FwdGlvbiwgdmlzaWJsZTogb3B0aW9ucy52aXNpYmxlLCBtYXJnaW5Cb3R0b206IG9wdGlvbnMubWFyZ2luQm90dG9tLCBidXR0b25zOiBidXR0b25zLCBleHBhbmRlZDogdGhpcy5vcHRpb25zLmV4cGFuZGVkLCBvbmV4cGFuZDogdGhpcy5vcHRpb25zLm9uZXhwYW5kfSk7XHJcbiAgICB0aGlzLmZvcm0uaG9zdCA9IHRoaXM7XHJcbiAgICB0aGlzLnBhZ2VzID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZm9ybS5kaXYsICdkaXYnKTtcclxuXHJcbiAgICB0aGlzLnRhYmxlZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZm9ybS5kaXYsICdkaXYnKTtcclxuICAgIHRoaXMucmVjcmVhdGVUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVjcmVhdGVUYWJsZSgpIHtcclxuICAgIHNjaWwuVXRpbHMucmVtb3ZlQWxsKHRoaXMudGFibGVkaXYpO1xyXG5cclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIHRoaXMudGFibGUgPSBuZXcgc2NpbC5UYWJsZSh0cnVlLCBudWxsLCB7XHJcbiAgICAgIG9uQWRkUm93OiB0aGlzLm9wdGlvbnMub25BZGRSb3csIHNlbGVjdHJvdzogdHJ1ZSwgb25zZWxlY3Ryb3c6IGZ1bmN0aW9uKHRyKSB7XHJcbiAgICAgICAgbWUuc2VsZWN0cm93KHRyKTtcclxuICAgICAgfSwgcm93Y2hlY2s6IHRoaXMub3B0aW9ucy5yb3djaGVjaywgZ3JvdXBpbmc6IHRoaXMub3B0aW9ucy5ncm91cGluZywgZ3JvdXBsaW5lc3R5bGU6IHRoaXMub3B0aW9ucy5ncm91cGxpbmVzdHlsZSwgaGlkZWNvbHVtbmNvb2tpZWtleTogdGhpcy5vcHRpb25zLmhpZGVjb2x1bW5jb29raWVrZXksXHJcbiAgICB9KTtcclxuICAgIHRoaXMudGFibGUucmVuZGVyKHRoaXMudGFibGVkaXYsIHRoaXMub3B0aW9ucy5jb2x1bW5zKTtcclxuICAgIHRoaXMudGFibGUudGJvZHkucGFyZW50Tm9kZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uY3JlYXRldGFibGUgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uY3JlYXRldGFibGUodGhpcyk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGaXJzdFJvdygpIHtcclxuICAgIHRoaXMudGFibGUuc2VsZWN0Rmlyc3RSb3coKTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICB0aGlzLmZvcm0uc2hvdygpO1xyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIHRoaXMuZm9ybS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHNjaWwuVXRpbHMucmVtb3ZlQWxsKHRoaXMucGFnZXMpO1xyXG4gICAgdGhpcy50YWJsZS5zZXREYXRhKHt9KTtcclxuICAgIHRoaXMucGFnZS5yZWNlaXZlckNsZWFyKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0cm93KHRyKSB7XHJcbiAgICBjb25zdCBpZCA9IHRyID09IG51bGwgPyBudWxsIDogdHIuZ2V0QXR0cmlidXRlKCdrZXknKTtcclxuICAgIGxldCBhcmdzID0gbnVsbDtcclxuICAgIC8qaWYgKGlkICE9IG51bGwpKi9cclxuICAgIHtcclxuICAgICAgYXJncyA9IHt9O1xyXG4gICAgICBhcmdzW3RoaXMub3B0aW9ucy5rZXldID0gaWQ7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnRhYmxlLmdldFJvd0RhdGEodHIpO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm5hbWUgIT0gbnVsbCAmJiBkYXRhICE9IG51bGwpXHJcbiAgICAgICAgYXJnc1t0aGlzLm9wdGlvbnMubmFtZV0gPSBkYXRhW3RoaXMub3B0aW9ucy5uYW1lXTtcclxuICAgICAgdGhpcy5wYWdlLnJlY2VpdmVyUmVmcmVzaCh0aGlzLCBhcmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uc2VsZWN0cm93ICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbnNlbGVjdHJvdyh0ciwgYXJncyk7XHJcbiAgfVxyXG5cclxuICBsb2FkUGFnZShwYWdlKSB7XHJcbiAgICBpZiAodGhpcy5hcmdzID09IG51bGwpXHJcbiAgICAgIHRoaXMuYXJncyA9IHt9O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmxvYWRwYWdlICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbmxvYWRwYWdlKHRoaXMuYXJncywgcGFnZSwgdGhpcyk7XHJcbiAgICB0aGlzLnJlZnJlc2gobnVsbCwgbnVsbCwgbnVsbCwgcGFnZSk7XHJcbiAgfVxyXG5cclxuICBsaXN0KHJldCkge1xyXG4gICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgaWYgKHJldCA9PSBudWxsKVxyXG4gICAgICByZXQgPSB7fTtcclxuICAgIHRoaXMudGFibGUuc2V0RGF0YShyZXQucm93cyA9PSBudWxsID8gcmV0IDogcmV0LnJvd3MpO1xyXG4gICAgc2NpbC5UYWJsZS5saXN0UGFnZXModGhpcy5wYWdlcywgcmV0LnBhZ2UsIHJldC5wYWdlcywgZnVuY3Rpb24ocGFnZSkge1xyXG4gICAgICBtZS5sb2FkUGFnZShwYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChmcm9tPzogYW55LCBhcmdzPzogYW55LCBzZWxlY3RmaXJzdHJvdz86IGJvb2xlYW4sIHBhZ2U/OiBQYWdlKSB7XHJcbiAgICBpZiAoYXJncyAhPSBudWxsKVxyXG4gICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xyXG4gICAgaWYgKHRoaXMuYXJncyA9PSBudWxsKVxyXG4gICAgICB0aGlzLmFyZ3MgPSB7fTtcclxuICAgIHRoaXMuYXJncy5wYWdlID0gcGFnZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZm9ybS5pc1Zpc2libGUoKSB8fCAhdGhpcy5mb3JtLmlzRXhwYW5kZWQoKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2huZWVkZWQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYWdlLnJlY2VpdmVyQ2xlYXIodGhpcyk7XHJcbiAgICB0aGlzLnJlZnJlc2huZWVkZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5hcmdzO1xyXG4gICAgaWYgKHBhcmFtcyA9PSBudWxsKVxyXG4gICAgICBwYXJhbXMgPSB7fTtcclxuICAgIGlmIChtZS5vcHRpb25zLm9uYmVmb3JlcmVmcmVzaCAhPSBudWxsKVxyXG4gICAgICBtZS5vcHRpb25zLm9uYmVmb3JlcmVmcmVzaChwYXJhbXMpO1xyXG5cclxuICAgIGNvbnN0IGZ1biA9IHRoaXMub3B0aW9ucy5qc29ucCA/IHNjaWwuVXRpbHMuanNvbnAgOiBzY2lsLlV0aWxzLmFqYXg7XHJcbiAgICBmdW4odGhpcy5wYWdlLnVybCArIHRoaXMub3B0aW9ucy5vYmplY3QgKyAnLmxpc3QnLCBmdW5jdGlvbihyZXQpIHtcclxuICAgICAgaWYgKG1lLm9wdGlvbnMub25iZWZvcmVsaXN0aW5nICE9IG51bGwpXHJcbiAgICAgICAgbWUub3B0aW9ucy5vbmJlZm9yZWxpc3RpbmcocmV0LCBtZSk7XHJcblxyXG4gICAgICBpZiAoc2VsZWN0Zmlyc3Ryb3cpIHtcclxuICAgICAgICBtZS5saXN0KHJldCk7XHJcbiAgICAgICAgbWUudGFibGUuc2VsZWN0Rmlyc3RSb3coKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBtZS50YWJsZS5nZXRDdXJyZW50S2V5KCk7XHJcbiAgICAgICAgbWUubGlzdChyZXQpO1xyXG4gICAgICAgIGlmIChrZXkgIT0gbnVsbClcclxuICAgICAgICAgIG1lLnRhYmxlLnNlbGVjdFJvdyhrZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vaWYgKHJldC5sZW5ndGggPT0gMClcclxuICAgICAgLy8gICAgc2NpbC5VdGlscy5hbGVydChcIk5vIHJlY29yZHMgZm91bmQuICBJdCBtaWdodCBiZWNhdXNlIHlvdSBkb24ndCBoYXZlIGFjY2VzcyB0byBpdC5cIik7XHJcbiAgICAgIGlmIChtZS5vcHRpb25zLm9ucmVmcmVzaGVkICE9IG51bGwpXHJcbiAgICAgICAgbWUub3B0aW9ucy5vbnJlZnJlc2hlZChtZSk7XHJcbiAgICB9LCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkKHZhbHVlcz86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkFkZE5ldyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5vbkFkZE5ldyh0aGlzLmFyZ3MpID09IGZhbHNlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5hZGQyKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBhZGQyKHZhbHVlcz86IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGUoKTtcclxuICAgIHRoaXMuZGxnLnNob3coKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMudXNldGFicylcclxuICAgICAgdGhpcy5kbGcuZm9ybS50YWJzLnNob3dUYWIoMCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbnNob3dmb3JtICE9IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbnNob3dmb3JtKHRoaXMuZGxnLCB0aGlzLmFyZ3MpO1xyXG4gICAgY29uc3QgZGF0YSA9IHZhbHVlcyAhPSBudWxsID8gdmFsdWVzIDogKHRoaXMub3B0aW9ucy5kZWZhdWx0dmFsdWVzID09IG51bGwgPyB7fSA6IHRoaXMub3B0aW9ucy5kZWZhdWx0dmFsdWVzKTtcclxuICAgIHRoaXMuYXBwbHlBcmdzKGRhdGEpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5rZXkgIT0gbnVsbClcclxuICAgICAgZGF0YVt0aGlzLm9wdGlvbnMua2V5XSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9ubG9hZGRhdGEpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbmxvYWRkYXRhKGRhdGEsIHRoaXMuYXJncywgdGhpcy5kbGcpO1xyXG4gICAgdGhpcy5kbGcuZm9ybS5zZXREYXRhKGRhdGEpO1xyXG4gICAgdGhpcy5kbGcuZWRpdGtleSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5zaG93RGVsQnV0dG9uKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNvcHlOZXcoa2V5OiBzdHJpbmcpIHtcclxuICAgIGlmIChrZXkgPT0gbnVsbCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5vcHRpb25zLmZpZWxkcykge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmllbGRzW2tdLmlza2V5KSB7XHJcbiAgICAgICAgICBrZXkgPSBrO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICB0aGlzLmVkaXQoZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIHJldFtrZXldID0gJyAnO1xyXG4gICAgICBtZS5kbGcuZWRpdGtleSA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGVkaXQob25zZXRkYXRhPzogRnVuY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLnRhYmxlLmN1cnJvdyA9PSBudWxsKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWxlcnQoJ3BsZWFzZSBzZWxlY3QgYSByb3cgZmlyc3QnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkMigpO1xyXG4gICAgdGhpcy5zaG93RGVsQnV0dG9uKHRydWUpO1xyXG5cclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIGNvbnN0IGRhdGEgPSB7fTtcclxuICAgIGRhdGFbdGhpcy5vcHRpb25zLmtleV0gPSB0aGlzLnRhYmxlLmN1cnJvdy5nZXRBdHRyaWJ1dGUoJ2tleScpO1xyXG4gICAgdGhpcy5kbGcuZWRpdGtleSA9IGRhdGFbdGhpcy5vcHRpb25zLmtleV07XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkVkaXQgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMub25FZGl0KGRhdGEpID09IGZhbHNlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgc2NpbC5VdGlscy5hamF4KHRoaXMucGFnZS51cmwgKyB0aGlzLm9wdGlvbnMub2JqZWN0ICsgJy5sb2FkJywgZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIC8vbWUuYXBwbHlBcmdzKHJldCk7XHJcbiAgICAgIGlmIChtZS5vcHRpb25zLm9ubG9hZGRhdGEpXHJcbiAgICAgICAgbWUub3B0aW9ucy5vbmxvYWRkYXRhKHJldCwgbWUuYXJncywgbWUuZGxnKTtcclxuXHJcbiAgICAgIGlmIChvbnNldGRhdGEgIT0gbnVsbClcclxuICAgICAgICBvbnNldGRhdGEocmV0LCBtZSk7XHJcblxyXG4gICAgICBpZiAobWUub3B0aW9ucy5zYXZlZG9jICYmIHJldC5kb2MgIT0gbnVsbCAmJiByZXQuZG9jICE9ICcnKSB7XHJcbiAgICAgICAgbWUuZGxnLmZvcm0uc2V0WG1sKHJldC5kb2MpO1xyXG4gICAgICAgIG1lLmRsZy5mb3JtLnNldERhdGEocmV0LCB0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtZS5kbGcuZm9ybS5zZXREYXRhKHJldCk7XHJcbiAgICAgIH1cclxuICAgIH0sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlBcmdzKGRhdGEpIHtcclxuICAgIGlmICh0aGlzLmFyZ3MgIT0gbnVsbClcclxuICAgICAgc2NpbC5hcHBseShkYXRhLCB0aGlzLmFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgaWYgKHRoaXMuZGxnICE9IG51bGwpXHJcbiAgICAgIHRoaXMuZGxnLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5kbGcuZm9ybS5jaGVja1JlcXVpcmVkRmllbGRzKCkgPiAwKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWxlcnQoJ1NvbWUgcmVxdWlyZWQgZmllbGQocykgYXJlIGJsYW5rJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kbGcuZm9ybS5nZXREYXRhKCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNhdmVkb2MpXHJcbiAgICAgIGRhdGEuZG9jID0gdGhpcy5kbGcuZm9ybS5nZXRYbWwoKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25iZWZvcmVzYXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMub25iZWZvcmVzYXZlKGRhdGEsIHRoaXMuYXJncywgdGhpcy5kbGcuZm9ybSkgPT0gZmFsc2UpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNjaWwuVXRpbHMuYWpheCh0aGlzLnBhZ2UudXJsICsgdGhpcy5vcHRpb25zLm9iamVjdCArICcuc2F2ZScsIGZ1bmN0aW9uKHJldCkge1xyXG4gICAgICBtZS5kbGcuaGlkZSgpO1xyXG4gICAgICBpZiAocmV0ICE9IG51bGwgJiYgcmV0LnJvd3MgIT0gbnVsbCAmJiByZXQucm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXQucm93cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgaWYgKG1lLmRsZy5lZGl0a2V5ICE9IG51bGwpXHJcbiAgICAgICAgICAgIG1lLnRhYmxlLnVwZGF0ZVJvdyhtZS5kbGcuZWRpdGtleSwgcmV0LnJvd3NbaV0pO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBtZS50YWJsZS5hZGRSb3cocmV0LnJvd3NbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtZS5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtZS5vcHRpb25zLm9uYWZ0ZXJzYXZlKVxyXG4gICAgICAgIG1lLm9wdGlvbnMub25hZnRlcnNhdmUocmV0LCBtZSk7XHJcbiAgICB9LCBkYXRhLCB7c2hvd3Byb2dyZXNzOiB0cnVlfSk7XHJcbiAgfVxyXG5cclxuICBkZWwoKSB7XHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBzY2lsLlV0aWxzLmNvbmZpcm1ZZXMoJ0RlbGV0ZSB0aGlzIHJlY29yZD8nLCBmdW5jdGlvbigpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IG1lLmRsZy5mb3JtLmdldERhdGEoKTtcclxuICAgICAgc2NpbC5VdGlscy5hamF4KG1lLnBhZ2UudXJsICsgbWUub3B0aW9ucy5vYmplY3QgKyAnLmRlbCcsIGZ1bmN0aW9uKHJldCkge1xyXG4gICAgICAgIG1lLmRsZy5oaWRlKCk7XHJcbiAgICAgICAgbWUucmVmcmVzaCgpO1xyXG4gICAgICB9LCBkYXRhKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RlbEJ1dHRvbihmKSB7XHJcbiAgICBpZiAodGhpcy5kbGcgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kbGcuZm9ybS5idXR0b25zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmRsZy5mb3JtLmJ1dHRvbnNbaV07XHJcbiAgICAgIGlmIChiICE9IG51bGwgJiYgYi5nZXRBdHRyaWJ1dGUoJ2tleScpID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgYi5zdHlsZS5kaXNwbGF5ID0gZiA/ICcnIDogJ25vbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5kbGcgIT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIGxldCBidXR0b25zID0gW3tcclxuICAgICAgc3JjOiBzY2lsLkFwcC5pbWdTbWFsbCgnc3VibWl0LnBuZycpLCBsYWJlbDogJ1NhdmUnLCBrZXk6ICdzYXZlJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgbWUuc2F2ZSgpO1xyXG4gICAgICB9LFxyXG4gICAgfV07XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmNhbmRlbGV0ZSAhPSBmYWxzZSlcclxuICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdkZWwucG5nJyksIGxhYmVsOiAnRGVsZXRlJywga2V5OiAnZGVsZXRlJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBtZS5kZWwoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgIHNyYzogc2NpbC5BcHAuaW1nU21hbGwoJ2NhbmNlbC5wbmcnKSwgbGFiZWw6ICdDYW5jZWwnLCBrZXk6ICdjYW5jZWwnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICBtZS5jYW5jZWwoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lZGl0YnV0dG9ucyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZWRpdGJ1dHRvbnMubGVuZ3RoID09IG51bGwpXHJcbiAgICAgICAgYnV0dG9ucy5wdXNoKHRoaXMub3B0aW9ucy5lZGl0YnV0dG9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBidXR0b25zID0gYnV0dG9ucy5jb25jYXQodGhpcy5vcHRpb25zLmVkaXRidXR0b25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZXRhYnMpIHtcclxuICAgICAgdGhpcy5kbGcgPSBzY2lsLkZvcm0uY3JlYXRlVGFiRGxnRm9ybSh0aGlzLm9wdGlvbnMuZm9ybWNhcHRpb24sIHt0YWJzOiB0aGlzLm9wdGlvbnMuZmllbGRzLCBidXR0b25zOiBidXR0b25zLCBib3JkZXI6IHRydWUsIG9uY2hhbmdlOiB0aGlzLm9wdGlvbnMub25mb3JtZGF0YWNoYW5nZX0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybSh0aGlzLm9wdGlvbnMuZm9ybWNhcHRpb24sIHRoaXMub3B0aW9ucy5maWVsZHMsIGJ1dHRvbnMsXHJcbiAgICAgICAge2FsdGVybmF0aXZlZm9ybXM6IHRoaXMub3B0aW9ucy5hbHRlcm5hdGl2ZWZvcm1zLCBoaWRlbGFiZWw6IHRoaXMub3B0aW9ucy5oaWRlbGFiZWwsIG9uY3JlYXRlZDogdGhpcy5vcHRpb25zLm9uY3JlYXRlZm9ybSwgb25jaGFuZ2U6IHRoaXMub3B0aW9ucy5vbmZvcm1kYXRhY2hhbmdlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5zY2lsLlBhZ2UuVGFibGUgPSBQYWdlVGFibGU7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gU2NpbGxpZ2VuY2UgSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxNCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBWZXJzaW9uIDEuMC4wLjIwMTMtMTEtMDZcclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4uL3NyYy90eXBlcyc7XHJcbmltcG9ydCB0eXBlIHtJUGFnZUZvcm0sIFBhZ2V9IGZyb20gJy4vUGFnZSc7XHJcbmltcG9ydCB0eXBlIHtQYWdlRXhwbG9yZXJGb3JtfSBmcm9tICcuL1BhZ2UuRXhwbG9yZXJGb3JtJztcclxuaW1wb3J0IHR5cGUge0lUcmVlfSBmcm9tICcuLi9zcmMvdHlwZXMvc2NpbCc7XHJcbmltcG9ydCB0eXBlIHtJRm9ybURpYWxvZ30gZnJvbSAnLi4vc3JjL3R5cGVzL3NjaWwuZm9ybSc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuLyoqXHJcbiAqIFBhZ2UuVHJlZSBjbGFzcyAtIFBhZ2UuVHJlZSBDb250cm9sXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5QYWdlLlRyZWVcclxuICogPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgICZsdDtkaXYgaWQ9J3BhcmVudCcmZ3Q7Jmx0Oy9kaXYmZ3Q7XHJcbiAqICAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiJmd0O1xyXG4gKiAgICAgICAgc2NpbC5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAqICAgICAgICAgICAgdmFyIHJvb3QgPSB7IG5hbWU6IFwiUm9vdFwiLCBpY29uOiBcIlwiLCBleHBhbmRlZDogdHJ1ZSwgY2hpbGRyZW46IFt7IG5hbWU6IFwiQ2hpbGRcIiwgaWNvbjogXCJcIiwgbGVhZjogdHJ1ZSB9LCB7IG5hbWU6IFwiQ2hpbGQgMlwiLCBpY29uOiBcIlwiLCBsZWFmOiBmYWxzZSB9IF0gfTtcclxuICogICAgICAgICAgICB2YXIgdHJlZSA9IG5ldyBzY2lsLlRyZWUoc2NpbC5ieUlkKFwicGFyZW50XCIpKTtcclxuICogICAgICAgICAgICB0cmVlLmNsZWFyKCk7XHJcbiAqICAgICAgICAgICAgdHJlZS5hZGQobnVsbCwgcm9vdCk7XHJcbiAqICAgICAgICB9KTtcclxuICogICAgJmx0Oy9zY3JpcHQmZ3Q7XHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBhZ2VUcmVlIGltcGxlbWVudHMgSVBhZ2VGb3JtIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IFQ6IHN0cmluZztcclxuICBwcml2YXRlIHJlZnJlc2huZWVkZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBwYWdlOiBQYWdlO1xyXG4gIHByaXZhdGUgb3B0aW9uczogYW55O1xyXG4gIHByaXZhdGUgcmVjZWl2ZXJzOiBhbnlbXTtcclxuICBwcml2YXRlIHRyZWU6IElUcmVlO1xyXG4gIHByaXZhdGUgYXJnczogYW55O1xyXG4gIHByaXZhdGUgZGxnOiBJRm9ybURpYWxvZztcclxuXHJcbiAgcHVibGljIGZvcm06IFBhZ2VFeHBsb3JlckZvcm07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IGFueSwgcGFyZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5UID0gJ1BBR0UuVFJFRSc7XHJcbiAgICB2YXIgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5yZWZyZXNobmVlZGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XHJcbiAgICB0aGlzLnJlY2VpdmVycyA9IFtdO1xyXG5cclxuICAgIHZhciBidXR0b25zID0gW107XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9ucmVuZGVyID09IG51bGwpIHtcclxuICAgICAgYnV0dG9ucy5wdXNoKHtcclxuICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdyZWZyZXNoLnBuZycpLCB0aXRsZTogJ1JlZnJlc2gnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLnJlZnJlc2goKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5maWVsZHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGJ1dHRvbnMucHVzaCgnLScsIHtcclxuICAgICAgICAgIHNyYzogc2NpbC5BcHAuaW1nU21hbGwoJ2FkZC5wbmcnKSwgdGl0bGU6ICdOZXcnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgbWUuYWRkKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgICBzcmM6IHNjaWwuQXBwLmltZ1NtYWxsKCdlZGl0LnBuZycpLCB0aXRsZTogJ0VkaXQnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgbWUuZWRpdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5idXR0b25zICE9IG51bGwpXHJcbiAgICAgIGJ1dHRvbnMgPSBidXR0b25zLmNvbmNhdCh0aGlzLm9wdGlvbnMuYnV0dG9ucyk7XHJcbiAgICB2YXIgYXJncyA9IHRoaXMub3B0aW9ucy5vYmplY3QgPT0gbnVsbCA/IG51bGwgOiB7dXJsOiB0aGlzLnBhZ2UudXJsICsgdGhpcy5vcHRpb25zLm9iamVjdCArICcudHJlZScsIGljb25nYXA6ICczcHgnLCBvbkFkZEl0ZW06IHRoaXMub3B0aW9ucy5vbkFkZEl0ZW19O1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IG5ldyBzY2lsLlBhZ2UuRXhwbG9yZXJGb3JtKHBhcmVudCwge3Rvb2xiYXJ2aXNpYmxlOiBvcHRpb25zLnRvb2xiYXJ2aXNpYmxlLCBleHBhbmRhYmxlOiBvcHRpb25zLmV4cGFuZGFibGUsIGNhcHRpb246IG9wdGlvbnMuY2FwdGlvbiwgdmlzaWJsZTogb3B0aW9ucy52aXNpYmxlLCBtYXJnaW5Ub3A6IG9wdGlvbnMubWFyZ2luVG9wLCBtYXJnaW5Cb3R0b206IG9wdGlvbnMubWFyZ2luQm90dG9tLCBidXR0b25zOiBidXR0b25zLCBleHBhbmRlZDogdGhpcy5vcHRpb25zLmV4cGFuZGVkLCBvbmV4cGFuZDogdGhpcy5vcHRpb25zLm9uZXhwYW5kfSk7XHJcbiAgICB0aGlzLmZvcm0uaG9zdCA9IHRoaXM7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9ucmVuZGVyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9ucmVuZGVyKHRoaXMuZm9ybS5kaXYsIGFyZ3MpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmVlID0gbmV3IHNjaWwuVHJlZSh0aGlzLmZvcm0uZGl2LCBhcmdzKTtcclxuICAgICAgdGhpcy50cmVlLm9uU2VsZWN0SXRlbSA9IGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgICBtZS5zZWxlY3QoaXRlbSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudHJlZS5vbkV4cGFuZEl0ZW0gPSBmdW5jdGlvbihub2RlLCBmKSB7XHJcbiAgICAgICAgaWYgKG1lLm9wdGlvbnMub25leHBhbmQgIT0gbnVsbCkgcmV0dXJuIG1lLm9wdGlvbnMub25leHBhbmQobm9kZSwgZik7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN0YXJ0cmVmcmVzaCAhPSBmYWxzZSlcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0ubWFpbi5zdHlsZS5wYWRkaW5nID0gYDBgO1xyXG4gICAgc2NpbC5QYWdlLnNldEJvcmRlcih0aGlzLmZvcm0pO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIHRoaXMuZm9ybS5zaG93KCk7XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgdGhpcy5mb3JtLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdChub2RlKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uc2VsZWN0aXRlbSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMub25zZWxlY3RpdGVtKG5vZGUpKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXJncyA9IHt9O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbkJ1aWxkQXJncyAhPSBudWxsKSB7XHJcbiAgICAgIGFyZ3MgPSB0aGlzLm9wdGlvbnMub25CdWlsZEFyZ3Mobm9kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobm9kZSAhPSBudWxsICYmIG5vZGUuaXRlbSAhPSBudWxsICYmIG5vZGUuaXRlbVt0aGlzLm9wdGlvbnMua2V5XSAhPSBudWxsKSB7XHJcbiAgICAgICAgYXJnc1t0aGlzLm9wdGlvbnMua2V5XSA9IG5vZGUuaXRlbVt0aGlzLm9wdGlvbnMua2V5XTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5hbWUgIT0gbnVsbClcclxuICAgICAgICAgIGFyZ3NbdGhpcy5vcHRpb25zLm5hbWVdID0gbm9kZS5pdGVtLm5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBhZ2UucmVjZWl2ZXJSZWZyZXNoKHRoaXMsIGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChjdXJyZW50T25seT86IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5mb3JtLmlzVmlzaWJsZSgpKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaG5lZWRlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50cmVlID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoY3VycmVudE9ubHkpIHtcclxuICAgICAgdGhpcy50cmVlLnJlbG9hZEN1cigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNobmVlZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyZWUuY2xlYXIoKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucm9vdCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucm9vdC5zZWxlY3RhYmxlID09IG51bGwpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnJvb3Quc2VsZWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnJvb3Quc2hvd3Jvb3QgPT0gZmFsc2UgJiYgdGhpcy5vcHRpb25zLnJvb3QuY2hpbGRyZW4gIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnJvb3QuY2hpbGRyZW4ubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICB0aGlzLnRyZWUuY3VyID0gdGhpcy50cmVlLmFkZChudWxsLCB0aGlzLm9wdGlvbnMucm9vdC5jaGlsZHJlbltpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50cmVlLmN1ciA9IHRoaXMudHJlZS5hZGQobnVsbCwgdGhpcy5vcHRpb25zLnJvb3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9iamVjdCAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5vYmplY3QgIT0gJycpXHJcbiAgICAgIHRoaXMudHJlZS5yZWxvYWRDdXIoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5QXJncyhkYXRhKSB7XHJcbiAgICBpZiAodGhpcy5hcmdzICE9IG51bGwpXHJcbiAgICAgIHNjaWwuYXBwbHkoZGF0YSwgdGhpcy5hcmdzKTtcclxuICB9XHJcblxyXG4gIGFkZCgpIHtcclxuICAgIHRoaXMuY3JlYXRlKCk7XHJcbiAgICB0aGlzLmRsZy5zaG93KCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uc2hvd2Zvcm0gIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uc2hvd2Zvcm0odGhpcy5kbGcpO1xyXG5cclxuICAgIHRoaXMuZGxnLmZvcm0uc2V0RGF0YSh0aGlzLm9wdGlvbnMuZGVmYXVsdHZhbHVlcyA9PSBudWxsID8ge30gOiB0aGlzLm9wdGlvbnMuZGVmYXVsdHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBlZGl0KCkge1xyXG4gICAgdGhpcy5hZGQoKTtcclxuXHJcbiAgICB2YXIgZGF0YSA9IHt9O1xyXG4gICAgZGF0YVt0aGlzLm9wdGlvbnMua2V5XSA9IHRoaXMudHJlZS5jdXIgPT0gbnVsbCB8fCB0aGlzLnRyZWUuY3VyLml0ZW0gPT0gbnVsbCA/IG51bGwgOiB0aGlzLnRyZWUuY3VyLml0ZW1bdGhpcy5vcHRpb25zLmtleV07XHJcbiAgICBpZiAoZGF0YVt0aGlzLm9wdGlvbnMua2V5XSAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWpheCh0aGlzLnBhZ2UudXJsICsgdGhpcy5vcHRpb25zLm9iamVjdCArICcubG9hZCcsIGZ1bmN0aW9uKHJldCkge1xyXG4gICAgICAgIGlmIChtZS5vcHRpb25zLm9ubG9hZGRhdGEpXHJcbiAgICAgICAgICBtZS5vcHRpb25zLm9ubG9hZGRhdGEocmV0KTtcclxuICAgICAgICBtZS5kbGcuZm9ybS5zZXREYXRhKHJldCk7XHJcbiAgICAgIH0sIGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB2YXIgZGF0YSA9IHRoaXMuZGxnLmZvcm0uZ2V0RGF0YSgpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmJlZm9yZXNhdmUpIHtcclxuICAgICAgdmFyIHNlbCA9IHt9O1xyXG4gICAgICBzZWxbdGhpcy5vcHRpb25zLmtleV0gPSB0aGlzLnRyZWUuY3VyID09IG51bGwgfHwgdGhpcy50cmVlLmN1ci5pdGVtID09IG51bGwgPyBudWxsIDogdGhpcy50cmVlLmN1ci5pdGVtW3RoaXMub3B0aW9ucy5rZXldO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uYmVmb3Jlc2F2ZShkYXRhLCBzZWwpID09IGZhbHNlKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHNjaWwuVXRpbHMuYWpheCh0aGlzLnBhZ2UudXJsICsgdGhpcy5vcHRpb25zLm9iamVjdCArICcuc2F2ZScsIGZ1bmN0aW9uKCkge1xyXG4gICAgICBtZS5kbGcuaGlkZSgpO1xyXG4gICAgICBpZiAobWUub3B0aW9ucy5vblNhdmVkICE9IG51bGwpXHJcbiAgICAgICAgbWUub3B0aW9ucy5vblNhdmVkKG1lLCBkYXRhKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG1lLnJlZnJlc2godHJ1ZSk7XHJcbiAgICB9LCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbCgpIHtcclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB2YXIgZGF0YSA9IHRoaXMuZGxnLmZvcm0uZ2V0RGF0YSgpO1xyXG4gICAgc2NpbC5VdGlscy5hamF4KHRoaXMucGFnZS51cmwgKyB0aGlzLm9wdGlvbnMub2JqZWN0ICsgJy5kZWwnLCBmdW5jdGlvbigpIHtcclxuICAgICAgbWUuZGxnLmhpZGUoKTtcclxuICAgICAgbWUucmVmcmVzaCgpO1xyXG4gICAgfSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5kbGcgIT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBtZSA9IHRoaXM7XHJcbiAgICB2YXIgYnV0dG9ucyA9IFt7XHJcbiAgICAgIHNyYzogc2NpbC5BcHAuaW1nU21hbGwoJ3N1Ym1pdC5wbmcnKSwgbGFiZWw6ICdTYXZlJywgb25jbGljazogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgbWUuc2F2ZSgpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHNyYzogc2NpbC5BcHAuaW1nU21hbGwoJ2RlbC5wbmcnKSwgbGFiZWw6ICdEZWxldGUnLCBvbmNsaWNrOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLmRlbCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH1dO1xyXG4gICAgdGhpcy5kbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybSh0aGlzLm9wdGlvbnMuZm9ybWNhcHRpb24sIHRoaXMub3B0aW9ucy5maWVsZHMsIGJ1dHRvbnMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbmNyZWF0ZWZvcm0gIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uY3JlYXRlZm9ybSh0aGlzLmRsZy5mb3JtKTtcclxuICB9XHJcbn1cclxuXHJcbnNjaWwuUGFnZS5UcmVlID0gUGFnZVRyZWU7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gU2NpbGxpZ2VuY2UgSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxNCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBWZXJzaW9uIDEuMC4wLjIwMTMtMTEtMDZcclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gXCIuLi9zcmMvdHlwZXMvc2NpbFwiO1xyXG5pbXBvcnQgdHlwZSB7UGFnZUN1c3RvbX0gZnJvbSAnLi9QYWdlLkN1c3RvbSc7XHJcbmltcG9ydCB0eXBlIHtQYWdlRXhwbG9yZXJ9IGZyb20gJy4vUGFnZS5FeHBsb3Jlcic7XHJcbmltcG9ydCB0eXBlIHtQYWdlRXhwbG9yZXJGb3JtfSBmcm9tICcuL1BhZ2UuRXhwbG9yZXJGb3JtJztcclxuaW1wb3J0IHR5cGUge1BhZ2VGb3JtfSBmcm9tICcuL1BhZ2UuRm9ybSc7XHJcbmltcG9ydCB0eXBlIHtQYWdlVGFibGV9IGZyb20gJy4vUGFnZS5UYWJsZSc7XHJcbmltcG9ydCB0eXBlIHtQYWdlVHJlZX0gZnJvbSAnLi9QYWdlLlRyZWUnO1xyXG5pbXBvcnQgdHlwZSB7UGFnZVRhYn0gZnJvbSAnLi9QYWdlLlRhYic7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuLyoqXHJcbiAqIFBhZ2UgY2xhc3MgLSBQYWdlIEZyYW1ld29ya1xyXG4gKiBKU0RyYXcuUGFnZSBmcmFtZXdvcmsgaGVscHMgdG8gcXVpY2tseSBidWlsZCBtb2Rlcm4gd2ViIGFwcGxpY2F0aW9uc1xyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuUGFnZVxyXG4gKiA8cHJlPlxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICogICAgJmx0O2RpdiBpZD1cInBsYWNlaG9sZGVyXCImZ3Q7Jmx0Oy9kaXYmZ3Q7XHJcbiAqXHJcbiAqICAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiJmd0O1xyXG4gKiAgICBzY2lsLnJlYWR5KGZ1bmN0aW9uICgpIHsgaW5pdCgpOyB9KTtcclxuICpcclxuICogICAgZnVuY3Rpb24gaW5pdCgpIHtcclxuICogICAgICAgIHZhciB0cmVlID0ge1xyXG4gKiAgICAgICAgICAgIGNhcHRpb246IFwiQW5hbHl0aWNhbCBDYXRlZ29yeVwiLFxyXG4gKiAgICAgICAgICAgIGtleTogXCJjYXRlZ29yeVwiLFxyXG4gKiAgICAgICAgICAgIG5hbWU6IFwiY2F0ZWdvcnlcIixcclxuICogICAgICAgICAgICAvL29iamVjdDogXCJpbnN0cnVtZW50XCIsXHJcbiAqICAgICAgICAgICAgcm9vdDogeyBuYW1lOiBcIkNhdGVnb3JpZXNcIiwgaWNvbjogXCJpbWcvZXh0L2JtcC5naWZcIiwgY2hpbGRyZW46IFtcclxuICogICAgICAgICAgICAgICAgeyBuYW1lOiBcIkNhbWJyaWRnZVwiLCBpY29uOiBcImltZy9leHQvcGRmLmdpZlwiLCBpc2xlYWY6IHRydWUgfSxcclxuICogICAgICAgICAgICAgICAgeyBuYW1lOiBcIkJvc3RvblwiLCBpY29uOiBcImltZy9leHQvZG9jLmdpZlwiLCBpc2xlYWY6IHRydWUgfVxyXG4gKiAgICAgICAgICAgIF1cclxuICogICAgICAgICAgICB9XHJcbiAqICAgICAgICB9O1xyXG4gKiAgICAgICAgdGhpcy5wYWdlID0gbmV3IHNjaWwuUGFnZShzY2lsLmJ5SWQoXCJwbGFjZWhvbGRlclwiKSwgdHJlZSwgeyByZXNpemFibGU6IHRydWUsIGxlZnR3aWR0aDogMzAwIH0pO1xyXG4gKlxyXG4gKiAgICAgICAgdmFyIHdpZHRoID0gMzAwO1xyXG4gKiAgICAgICAgdmFyIGluc3RydW1lbnRzID0gdGhpcy5wYWdlLmFkZEZvcm0oe1xyXG4gKiAgICAgICAgICAgIGNhcHRpb246IFwiQW5hbHl0aWNhbHNcIixcclxuICogICAgICAgICAgICBrZXk6IFwiYW5hbHl0aWNhbGlkXCIsXHJcbiAqICAgICAgICAgICAgbmFtZTogXCJuYW1lXCIsXHJcbiAqICAgICAgICAgICAgb2JqZWN0OiBcImFuYWx5dGljYWxcIixcclxuICogICAgICAgICAgICBjb2x1bW5zOiB7XHJcbiAqICAgICAgICAgICAgICAgIGFuYWx5dGljYWxpZDogeyB0eXBlOiBcImhpZGRlblwiLCBpc2tleTogdHJ1ZSB9LFxyXG4gKiAgICAgICAgICAgICAgICBuYW1lOiB7IGxhYmVsOiBcIkFuYWx5dGljYWwgTmFtZVwiLCB3aWR0aDogMjAwIH0sXHJcbiAqICAgICAgICAgICAgICAgIGNhdGVnb3J5OiB7IGxhYmVsOiBcIkNhdGVnb3J5XCIsIHdpZHRoOiAyMDAgfSxcclxuICogICAgICAgICAgICAgICAgdmVyc2lvbjogeyBsYWJlbDogXCJWZXJzaW9uXCIsIHdpZHRoOiAxMDAgfVxyXG4gKiAgICAgICAgICAgIH0sXHJcbiAqICAgICAgICAgICAgZm9ybWNhcHRpb246IFwiQW5hbHl0aWNhbFwiLFxyXG4gKiAgICAgICAgICAgIGZpZWxkczoge1xyXG4gKiAgICAgICAgICAgICAgICBhbmFseXRpY2FsaWQ6IHsgdHlwZTogXCJoaWRkZW5cIiwgaXNrZXk6IHRydWUgfSxcclxuICogICAgICAgICAgICAgICAgbmFtZTogeyBsYWJlbDogXCJBbmFseXRpY2FsIE5hbWVcIiwgd2lkdGg6IDgwMCB9LFxyXG4gKiAgICAgICAgICAgICAgICBjYXRlZ29yeTogeyBsYWJlbDogXCJDYXRlZ29yeVwiLCB3aWR0aDogODAwIH0sXHJcbiAqICAgICAgICAgICAgICAgIHZlcnNpb246IHsgbGFiZWw6IFwiVmVyc2lvblwiLCB3aWR0aDogMTAwIH0sXHJcbiAqICAgICAgICAgICAgICAgIHJlcXVlc3Rmb3JtOiB7IGxhYmVsOiBcIlJlcXVlc3QgRm9ybVwiLCB0eXBlOiBcInRleHRhcmVhXCIsIGhlaWdodDogMjAwLCB3aWR0aDogODAwIH0sXHJcbiAqICAgICAgICAgICAgICAgIHJlc3VsdGZvcm06IHsgbGFiZWw6IFwiUmVxdWVzdCBGb3JtXCIsIHR5cGU6IFwidGV4dGFyZWFcIiwgaGVpZ2h0OiAyMDAsIHdpZHRoOiA4MDAgfVxyXG4gKiAgICAgICAgICAgIH1cclxuICogICAgICAgIH0sIHRoaXMucGFnZS50cmVlKTtcclxuICpcclxuICogICAgfVxyXG4gKiAgICAmbHQ7L3NjcmlwdCZndDtcclxuICogPC9wcmU+XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGFnZUludCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBvblJlZnJlc2hSZWNlaXZlcnM6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHRyZWU6IFBhZ2VUcmVlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFibGU6IFBhZ2VUYWJsZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IFBhZ2VGb3JtO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IGV4cGxvcmVyOiBQYWdlRXhwbG9yZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogSFRNTEVsZW1lbnQsIHRyZWU6IGFueSwgZm9ybXM6IGFueSwgbWlkZGxlPzogYW55LCBvblJlZnJlc2hSZWNlaXZlcnM/OiBGdW5jdGlvbikge1xyXG4gICAgdGhpcy5UID0gJ1BBR0UnO1xyXG4gICAgbGV0IGFyZ3M7XHJcbiAgICBpZiAoZm9ybXMgIT0gbnVsbCAmJiBmb3Jtcy5sZW5ndGggPiAwIHx8IG1pZGRsZSAhPSBudWxsIHx8IG9uUmVmcmVzaFJlY2VpdmVycyAhPSBudWxsKSB7XHJcbiAgICAgIGFyZ3MgPSB7bWlkZGxlOiBtaWRkbGUsIG9uUmVmcmVzaFJlY2VpdmVyczogb25SZWZyZXNoUmVjZWl2ZXJzLCBmb3JtczogZm9ybXN9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJncyA9IGZvcm1zID09IG51bGwgPyB7fSA6IGZvcm1zO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0cmVlID09IG51bGwgJiYgYXJncy5sZWZ0ID09IG51bGwpXHJcbiAgICAgIGFyZ3MubGVmdCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0cmVlICE9IG51bGwpXHJcbiAgICAgIGFyZ3Mub25yZXNpemUgPSB0cmVlLm9ucmVzaXpldHJlZTtcclxuXHJcbiAgICB0aGlzLm9uUmVmcmVzaFJlY2VpdmVycyA9IGFyZ3Mub25SZWZyZXNoUmVjZWl2ZXJzO1xyXG4gICAgdGhpcy51cmwgPSBzY2lsLlBhZ2UuYWpheHVybCA9PSBudWxsID8gJ2FqYXguYXNoeD9jbWQ9JyA6IHNjaWwuUGFnZS5hamF4dXJsO1xyXG4gICAgdGhpcy5leHBsb3JlciA9IG5ldyBzY2lsLlBhZ2UuRXhwbG9yZXIocGFyZW50LCBhcmdzKTtcclxuXHJcbiAgICBpZiAodHJlZSAhPSBudWxsICYmIHRyZWUucm9vdCAhPSBudWxsICYmIHRyZWUucm9vdC5jaGlsZHJlbiAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZS5yb290LmNoaWxkcmVuLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHRyZWUucm9vdC5jaGlsZHJlbltpXS5uYW1lID0gc2NpbC5MYW5nLnJlcyh0cmVlLnJvb3QuY2hpbGRyZW5baV0ubmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmVlID0gbnVsbDtcclxuICAgIGlmICh0cmVlICE9IG51bGwpIHtcclxuICAgICAgLy8gY29uc3QgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZXhwbG9yZXIubGVmdCwgXCJkaXZcIiwgbnVsbCwgeyB3aWR0aDogdHJlZS53aWR0aCA+IDAgPyB0cmVlLndpZHRoIDogMjQwIH0pO1xyXG4gICAgICBpZiAodHJlZS50eXBlID09ICd0YWJsZScpXHJcbiAgICAgICAgdGhpcy50YWJsZSA9IG5ldyBzY2lsLlBhZ2UuVGFibGUodGhpcywgdHJlZSwgdGhpcy5leHBsb3Jlci5sZWZ0KTtcclxuICAgICAgZWxzZSBpZiAodHJlZS50eXBlID09ICdmb3JtJylcclxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgc2NpbC5QYWdlLkZvcm0odGhpcywgdHJlZSwgdGhpcy5leHBsb3Jlci5sZWZ0KTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMudHJlZSA9IG5ldyBzY2lsLlBhZ2UuVHJlZSh0aGlzLCB0cmVlLCB0aGlzLmV4cGxvcmVyLmxlZnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhcmdzLmZvcm1zICE9IG51bGwpIHtcclxuICAgICAgbGV0IGxhc3Q6IElQYWdlRm9ybSA9IHRoaXMudHJlZSA9PSBudWxsID8gdGhpcy5mb3JtIDogdGhpcy50cmVlO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuZm9ybXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgbGFzdCA9IHRoaXMuYWRkRm9ybShhcmdzLmZvcm1zW2ldLCBsYXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRhYnMob3B0aW9ucyk6IFBhZ2VUYWIge1xyXG4gICAgY29uc3QgdGFicyA9IG5ldyBzY2lsLlBhZ2UuVGFiKHRoaXMsIG9wdGlvbnMsIHRoaXMuZXhwbG9yZXIucmlnaHQpO1xyXG4gICAgaWYgKG9wdGlvbnMgIT0gbnVsbCAmJiBvcHRpb25zLnZpc2libGUgPT0gZmFsc2UgfHwgb3B0aW9ucyA9PSBmYWxzZSlcclxuICAgICAgdGFicy5oaWRlKCk7XHJcbiAgICByZXR1cm4gdGFicztcclxuICB9XHJcblxyXG4gIGFkZERpdih0ZXh0Pzogc3RyaW5nLCBzdHlsZT86IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4pOiBIVE1MRGl2RWxlbWVudCB7XHJcbiAgICByZXR1cm4gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZXhwbG9yZXIucmlnaHQsICdkaXYnLCB0ZXh0LCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICBhZGRGb3JtKG9wdGlvbnM6IGFueSwgbGlzdGVudG8/OiBhbnksIHBhcmVudD86IGFueSwgbGVmdHNpZGU/OiBhbnkpIHtcclxuICAgIHJldHVybiBzY2lsLlBhZ2UuYWRkRm9ybSh0aGlzLCBvcHRpb25zLCBsaXN0ZW50bywgcGFyZW50LCBsZWZ0c2lkZSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNpemVIYW5kbGUob25yZXNpemUsIGhlaWdodCk6IEhUTUxEaXZFbGVtZW50IHtcclxuICAgIGNvbnN0IGRpdiA9IHRoaXMuYWRkRGl2KCk7XHJcbiAgICBkaXYuc3R5bGUuaGVpZ2h0ID0gKGhlaWdodCA+IDAgPyBoZWlnaHQgOiBzY2lsLlBhZ2Uua0hhbmRsZVdpZHRoKSArICdweCc7XHJcbiAgICBkaXYuc3R5bGUubWFyZ2luQm90dG9tID0gJzJweCc7XHJcbiAgICBuZXcgc2NpbC5SZXNpemFibGUoZGl2LCB7ZGlyZWN0aW9uOiAneScsIG1vdXNlb3ZlcmNvbG9yOiBzY2lsLlBhZ2Uua0hhbmRsZUNvbG9yLCBvbnJlc2l6ZTogb25yZXNpemV9KTtcclxuICAgIHJldHVybiBkaXY7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGb3JtKGZvcm0pIHtcclxuICAgIGNvbnN0IHJvb3QgPSBmb3JtLmZvcm0ucm9vdDtcclxuICAgIHJvb3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyb290KTtcclxuICB9XHJcblxyXG4gIHJlY2VpdmVyUmVmcmVzaChmb3JtLCBhcmdzKSB7XHJcbiAgICBpZiAodGhpcy5vblJlZnJlc2hSZWNlaXZlcnMgIT0gbnVsbClcclxuICAgICAgdGhpcy5vblJlZnJlc2hSZWNlaXZlcnMoYXJncywgZm9ybSk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtLnJlY2VpdmVycy5sZW5ndGg7ICsraSlcclxuICAgICAgZm9ybS5yZWNlaXZlcnNbaV0ucmVmcmVzaChmb3JtLCBhcmdzKTtcclxuICB9XHJcblxyXG4gIHJlY2VpdmVyQ2xlYXIoZm9ybSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtLnJlY2VpdmVycy5sZW5ndGg7ICsraSlcclxuICAgICAgZm9ybS5yZWNlaXZlcnNbaV0uY2xlYXIoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2VGb3JtIHtcclxuICBmb3JtOiBQYWdlRXhwbG9yZXJGb3JtO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnZSBleHRlbmRzIFBhZ2VJbnQge1xyXG4gIHN0YXRpYyBrSGFuZGxlV2lkdGg6IDU7XHJcbiAgc3RhdGljIGtIYW5kbGVDb2xvcjogJyNhYWYnO1xyXG5cclxuICAvLyBzdGF0aWMgQ2FsZW5kYXI6IElQYWdlQ2FsZW5kYXI7IC8vIE5vdCBmb3VuZFxyXG4gIHN0YXRpYyBDdXN0b206IHR5cGVvZiBQYWdlQ3VzdG9tO1xyXG4gIHN0YXRpYyBFeHBsb3JlcjogdHlwZW9mIFBhZ2VFeHBsb3JlcjtcclxuICBzdGF0aWMgRXhwbG9yZXJGb3JtOiB0eXBlb2YgUGFnZUV4cGxvcmVyRm9ybTtcclxuICBzdGF0aWMgRm9ybTogdHlwZW9mIFBhZ2VGb3JtO1xyXG4gIHN0YXRpYyBUYWI6IHR5cGVvZiBQYWdlVGFiO1xyXG4gIHN0YXRpYyBUYWJsZTogdHlwZW9mIFBhZ2VUYWJsZTtcclxuICBzdGF0aWMgVHJlZTogdHlwZW9mIFBhZ2VUcmVlO1xyXG5cclxuICBzdGF0aWMgYWpheHVybDogc3RyaW5nO1xyXG5cclxuICBzdGF0aWMgYWRkRm9ybShwYWdlOiBQYWdlLCBvcHRpb25zOiBhbnksIGxpc3RlbnRvOiBhbnksIHBhcmVudDogYW55LCBsZWZ0c2lkZT86IGFueSk6IElQYWdlRm9ybSB8IG51bGwge1xyXG4gICAgaWYgKHBhcmVudCA9PSBudWxsKVxyXG4gICAgICBwYXJlbnQgPSBsZWZ0c2lkZSA/IHBhZ2UuZXhwbG9yZXIubGVmdCA6IHBhZ2UuZXhwbG9yZXIucmlnaHQ7XHJcblxyXG4gICAgbGV0IGZvcm06IElQYWdlRm9ybSB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PSAnZm9ybScpXHJcbiAgICAgIGZvcm0gPSBuZXcgc2NpbC5QYWdlLkZvcm0ocGFnZSwgb3B0aW9ucywgcGFyZW50KTtcclxuICAgIGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PSAnY3VzdG9tJylcclxuICAgICAgZm9ybSA9IG5ldyBzY2lsLlBhZ2UuQ3VzdG9tKHBhZ2UsIG9wdGlvbnMsIHBhcmVudCk7XHJcbiAgICAvKlxyXG4gICAgZWxzZSBpZiAob3B0aW9ucy50eXBlID09ICdjYWxlbmRhcicpXHJcbiAgICAgIGZvcm0gPSBuZXcgc2NpbC5QYWdlLkNhbGVuZGFyKHBhZ2UsIG9wdGlvbnMsIHBhcmVudCk7XHJcbiAgICAqL1xyXG4gICAgZWxzZVxyXG4gICAgICBmb3JtID0gbmV3IHNjaWwuUGFnZS5UYWJsZShwYWdlLCBvcHRpb25zLCBwYXJlbnQpO1xyXG5cclxuICAgIGlmIChsaXN0ZW50byAhPSBudWxsKVxyXG4gICAgICBsaXN0ZW50by5yZWNlaXZlcnMucHVzaChmb3JtKTtcclxuXHJcbiAgICBzY2lsLlBhZ2Uuc2V0Qm9yZGVyKGZvcm0uZm9ybSk7XHJcbiAgICBvcHRpb25zLmZvcm0gPSBmb3JtO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0Qm9yZGVyKGZvcm06IFBhZ2VFeHBsb3JlckZvcm0pIHtcclxuICAgIGZvcm0udG9vbGJhci5zdHlsZS5ib3JkZXJMZWZ0Q29sb3IgPSBzY2lsLlRhYnMua0hpZ2hsaWdodENvbG9yO1xyXG4gICAgZm9ybS50b29sYmFyLnN0eWxlLmJvcmRlclJpZ2h0Q29sb3IgPSBzY2lsLlRhYnMua0hpZ2hsaWdodENvbG9yO1xyXG4gICAgZm9ybS5tYWluLnN0eWxlLmJvcmRlckxlZnRDb2xvciA9IHNjaWwuVGFicy5rSGlnaGxpZ2h0Q29sb3I7XHJcbiAgICBmb3JtLm1haW4uc3R5bGUuYm9yZGVyUmlnaHRDb2xvciA9IHNjaWwuVGFicy5rSGlnaGxpZ2h0Q29sb3I7XHJcbiAgICBmb3JtLm1haW4uc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSBzY2lsLlRhYnMua0hpZ2hsaWdodENvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuc2NpbC5QYWdlID0gUGFnZTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtEb2pvVHlwZSwgRG9qb3hUeXBlfSBmcm9tICcuL3R5cGVzL2Rvam8nO1xyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4vdHlwZXMvc2NpbCc7XHJcbmltcG9ydCB0eXBlIHtPcmdUeXBlfSBmcm9tICcuL3R5cGVzL29yZyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7UG9pbnR9IGZyb20gJy4vUG9pbnQnO1xyXG5pbXBvcnQgdHlwZSB7UmVjdH0gZnJvbSAnLi9SZWN0JztcclxuaW1wb3J0IHR5cGUge0JvbmR9IGZyb20gJy4vQm9uZCc7XHJcbmltcG9ydCB0eXBlIHtNb2x9IGZyb20gJy4vTW9sJztcclxuaW1wb3J0IHR5cGUge0F0b21RdWVyeVR5cGUsIElCaW8sIElSR3JvdXAsIEpTRHJhdzJNb2R1bGVUeXBlfSBmcm9tICcuL3R5cGVzL2pzZHJhdzInO1xyXG5cclxuZGVjbGFyZSBjb25zdCBkb2pvOiBEb2pvVHlwZTtcclxuZGVjbGFyZSBjb25zdCBkb2pveDogRG9qb3hUeXBlO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuZGVjbGFyZSBjb25zdCBKU0RyYXcyOiBKU0RyYXcyTW9kdWxlVHlwZTxhbnk+O1xyXG5cclxuZGVjbGFyZSBjb25zdCBvcmc6IE9yZ1R5cGU8YW55PjtcclxuXHJcbi8qKlxyXG4gKiBBdG9tIGNsYXNzXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5KU0RyYXcyLkF0b21cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBdG9tPFRCaW8+IHtcclxuICAvKipcclxuICAgQHByb3BlcnR5IHtQb2ludH0gcCBBdG9tIENvb3JkaW5hdGVcclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IGNoYXJnZSBBdG9tIGNoYXJnZXNcclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IGlzb3RvcGUgQXRvbSBJc290b3BlXHJcbiAgICovXHJcbiAgLyoqXHJcbiAgIEBwcm9wZXJ0eSB7bnVtYmVyfSByYWRpY2FsIEF0b20gUmFkaWNhbFxyXG4gICAqL1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge3N0cmluZ30gZWxlbSBFbGVtZW50IFN5bWJvbFxyXG4gICAqL1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge3N0cmluZ30gY29sb3IgRGlzcGxheSBDb2xvclxyXG4gICAqL1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge2Jvb2x9IHNlbGVjdGVkIFNlbGVjdGluZyBGbGFnXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IFQ6IHN0cmluZztcclxuICBwdWJsaWMgcDogUG9pbnQ7XHJcbiAgcHVibGljIGNoYXJnZTogbnVtYmVyO1xyXG4gIHB1YmxpYyBpc290b3BlOiBudW1iZXIgfCBudWxsO1xyXG4gIHB1YmxpYyByYWRpY2FsOiBudW1iZXIgfCBudWxsO1xyXG4gIHB1YmxpYyBncm91cDogYW55O1xyXG4gIHB1YmxpYyBhbGlhczogc3RyaW5nO1xyXG4gIHB1YmxpYyBzdXBlcmF0b206IGFueTsgLy8gVE9ETzogP1xyXG4gIHB1YmxpYyBhdHRhY2hwb2ludHM6IGFueVtdO1xyXG4gIHB1YmxpYyByZ3JvdXA6IElSR3JvdXA8VEJpbz47XHJcbiAgcHVibGljIGJpbzogSUJpbzxUQmlvPjtcclxuICBwcml2YXRlIGxvY2tlZDogYm9vbGVhbjtcclxuICBwdWJsaWMgaGlkZGVuOiBib29sZWFuO1xyXG4gIHByaXZhdGUgcmF0aW86IG51bWJlcjtcclxuICBwcml2YXRlIF9yZWN0OiBSZWN0O1xyXG4gIHB1YmxpYyBlbGVtOiBzdHJpbmc7XHJcbiAgcHVibGljIGNvbG9yOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBoY291bnQ6IG51bWJlciB8IG51bGw7XHJcbiAgcHVibGljIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBmOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xyXG4gIHB1YmxpYyBib25kczogQm9uZDxUQmlvPltdO1xyXG4gIHB1YmxpYyBpZDogbnVtYmVyIHwgbnVsbDtcclxuICBwdWJsaWMgYXRvbW1hcGlkOiBudW1iZXIgfCBudWxsO1xyXG4gIHB1YmxpYyBxdWVyeTogQXRvbVF1ZXJ5VHlwZSB8IG51bGw7XHJcbiAgcHVibGljIGhhc0Vycm9yOiBib29sZWFuIHwgbnVsbDtcclxuICBwdWJsaWMgaHM6IG51bWJlciB8IG51bGw7XHJcbiAgcHVibGljIHZhbDogYW55IHwgbnVsbDtcclxuICBwdWJsaWMgdGFnOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICBwdWJsaWMgX2hhc2xhYmVsOiBib29sZWFuO1xyXG4gIHB1YmxpYyBfcGFyZW50OiBNb2w8VEJpbz47XHJcbiAgcHVibGljIGF0b21pZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBfb3V0c2lkZTogYm9vbGVhbjtcclxuICBwdWJsaWMgbW9sOiBNb2w8VEJpbz47XHJcbiAgcHVibGljIGlSOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xyXG4gIHB1YmxpYyBfX2RyYXdzZWxlY3Q6IGJvb2xlYW47XHJcbiAgcHVibGljIHJpbmdjbG9zdXJlczogYW55O1xyXG4gIHB1YmxpYyBhcm9tYXRpYzogYm9vbGVhbjtcclxuICBwdWJsaWMgX2FhaWQ6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIF9fbW9sOiBNb2w8VEJpbz47XHJcblxyXG5cclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3IgQXRvbVxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAgLSBjb29yZGluYXRlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVsZW0gLSBlbGVtZW50IHN5bWJvbFxyXG4gICAqIEBiaW8ge2Jvb2x9IGJpbyAtIGluZGljYXRlIGlmIHRoaXMgaXMgYSBCaW8gb2JqZWN0XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocDogUG9pbnQsIGVsZW0/OiBzdHJpbmcsIGJpbz86IGFueSkge1xyXG4gICAgdGhpcy5UID0gJ0FUT00nO1xyXG4gICAgdGhpcy5wID0gcDtcclxuICAgIHRoaXMuY2hhcmdlID0gMDtcclxuICAgIHRoaXMuaXNvdG9wZSA9IG51bGw7XHJcbiAgICB0aGlzLnJhZGljYWwgPSBudWxsO1xyXG4gICAgdGhpcy5ncm91cCA9IG51bGw7XHJcbiAgICB0aGlzLmFsaWFzID0gbnVsbDtcclxuICAgIHRoaXMuc3VwZXJhdG9tID0gbnVsbDtcclxuICAgIHRoaXMuYXR0YWNocG9pbnRzID0gW107XHJcbiAgICB0aGlzLnJncm91cCA9IG51bGw7XHJcbiAgICB0aGlzLmJpbyA9IGJpbztcclxuICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGRlbiA9IG51bGw7XHJcbiAgICB0aGlzLl9yZWN0ID0gbnVsbDtcclxuICAgIGlmIChiaW8gPT0gbnVsbCkge1xyXG4gICAgICBpZiAoZWxlbSA9PSBudWxsIHx8IGVsZW0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICB0aGlzLmVsZW0gPSAnQyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbSA9PSAnRCcpIHtcclxuICAgICAgICB0aGlzLmVsZW0gPSAnSCc7XHJcbiAgICAgICAgdGhpcy5pc290b3BlID0gMjtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtID09ICdUJykge1xyXG4gICAgICAgIHRoaXMuZWxlbSA9ICdIJztcclxuICAgICAgICB0aGlzLmlzb3RvcGUgPSAzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZWxlbSA9IGVsZW07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWxlbSA9IGVsZW07XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbG9yID0gbnVsbDtcclxuICAgIHRoaXMuaGNvdW50ID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZiA9IG51bGw7XHJcbiAgICB0aGlzLmJvbmRzID0gbnVsbDtcclxuICAgIHRoaXMuaWQgPSBudWxsO1xyXG4gICAgdGhpcy5hdG9tbWFwaWQgPSBudWxsO1xyXG4gICAgdGhpcy5xdWVyeSA9IG51bGw7XHJcbiAgICB0aGlzLmhhc0Vycm9yID0gbnVsbDtcclxuICAgIHRoaXMuaHMgPSBudWxsO1xyXG4gICAgdGhpcy52YWwgPSBudWxsO1xyXG4gICAgdGhpcy50YWcgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvbmUoc2VsZWN0ZWRPbmx5OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBhID0gbmV3IEpTRHJhdzIuQXRvbSh0aGlzLnAuY2xvbmUoKSwgdGhpcy5lbGVtLCBkb2pvLmNsb25lKHRoaXMuYmlvKSk7XHJcbiAgICBhLmNoYXJnZSA9IHRoaXMuY2hhcmdlO1xyXG4gICAgYS5pc290b3BlID0gdGhpcy5pc290b3BlO1xyXG4gICAgYS5yYWRpY2FsID0gdGhpcy5yYWRpY2FsO1xyXG4gICAgYS5oY291bnQgPSB0aGlzLmhjb3VudDtcclxuICAgIGEuaWQgPSB0aGlzLmlkO1xyXG4gICAgYS5jb2xvciA9IHRoaXMuY29sb3I7XHJcbiAgICBhLnRhZyA9IHRoaXMudGFnO1xyXG4gICAgYS5hbGlhcyA9IHRoaXMuYWxpYXM7XHJcbiAgICBhLnN1cGVyYXRvbSA9IHRoaXMuc3VwZXJhdG9tID09IG51bGwgPyBudWxsIDogdGhpcy5zdXBlcmF0b20uY2xvbmUoKTtcclxuICAgIGEuYXR0YWNocG9pbnRzID0gc2NpbC5jbG9uZSh0aGlzLmF0dGFjaHBvaW50cyk7XHJcbiAgICBhLnJncm91cCA9IHRoaXMucmdyb3VwID09IG51bGwgPyBudWxsIDogdGhpcy5yZ3JvdXAuY2xvbmUoc2VsZWN0ZWRPbmx5KTtcclxuICAgIGEuYXRvbW1hcGlkID0gdGhpcy5hdG9tbWFwaWQ7XHJcbiAgICBhLmhhc0Vycm9yID0gdGhpcy5oYXNFcnJvcjtcclxuICAgIGEuaHMgPSB0aGlzLmhzO1xyXG4gICAgYS52YWwgPSB0aGlzLnZhbDtcclxuICAgIGlmICh0aGlzLnF1ZXJ5ICE9IG51bGwpXHJcbiAgICAgIGEucXVlcnkgPSBzY2lsLmNsb25lKHRoaXMucXVlcnkpO1xyXG4gICAgaWYgKHRoaXMuYmlvICE9IG51bGwpXHJcbiAgICAgIGEuYmlvID0gc2NpbC5jbG9uZSh0aGlzLmJpbyk7XHJcbiAgICBhLmxvY2tlZCA9IHRoaXMubG9ja2VkO1xyXG4gICAgYS5oaWRkZW4gPSB0aGlzLmhpZGRlbjtcclxuICAgIGEucmF0aW8gPSB0aGlzLnJhdGlvO1xyXG4gICAgYS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICByZXR1cm4gYTtcclxuICB9XHJcblxyXG4gIGJpb3R5cGUoKTogVEJpbyB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW8gPT0gbnVsbCA/IG51bGwgOiB0aGlzLmJpby50eXBlO1xyXG4gIH1cclxuXHJcbiAgaXNNYXJrZWRTdGVyZW8oKSB7XHJcbiAgICB2YXIgYnMgPSB0aGlzLmJvbmRzO1xyXG4gICAgaWYgKGJzID09IG51bGwgfHwgYnMubGVuZ3RoICE9IDMgJiYgYnMubGVuZ3RoICE9IDQpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChic1tpXS5hMSA9PSB0aGlzICYmIChic1tpXS50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLldFREdFIHx8IGJzW2ldLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUkdyb3VwKCkge1xyXG4gICAgaWYgKHRoaXMucmdyb3VwICE9IG51bGwpXHJcbiAgICAgIHRoaXMucmdyb3VwLnRleHQgPSAodGhpcy5hbGlhcyA9PSBudWxsIHx8IHRoaXMuYWxpYXMgPT0gJycgPyB0aGlzLmVsZW0gOiB0aGlzLmFsaWFzKSArICc9JztcclxuICB9XHJcblxyXG4gIGdldExhYmVsKCkge1xyXG4gICAgaWYgKHRoaXMuYWxpYXMgIT0gbnVsbCAmJiB0aGlzLmFsaWFzICE9ICcnKVxyXG4gICAgICByZXR1cm4gdGhpcy5hbGlhcztcclxuICAgIHJldHVybiB0aGlzLmVsZW07XHJcbiAgfVxyXG5cclxuICBodG1sKHNjYWxlLCBsZW4pIHtcclxuICAgIHZhciBzID0gJzxhIGk9XFwnJyArIHRoaXMuaWQgKyAnXFwnIGU9XFwnJyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodGhpcy5lbGVtKSArICdcXCcgcD1cXCcnICsgdGhpcy5wLnRvU3RyaW5nKHNjYWxlKSArICdcXCcnO1xyXG4gICAgaWYgKHRoaXMuYmlvID09IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuY2hhcmdlICE9IDApXHJcbiAgICAgICAgcyArPSAnIGM9XFwnJyArIHRoaXMuY2hhcmdlICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLnJhZGljYWwgPj0gMSAmJiB0aGlzLnJhZGljYWwgPD0gMylcclxuICAgICAgICBzICs9ICcgcmFkPVxcJycgKyB0aGlzLnJhZGljYWwgKyAnXFwnJztcclxuICAgICAgaWYgKHRoaXMuaXNvdG9wZSA+IDApXHJcbiAgICAgICAgcyArPSAnIGlzbz1cXCcnICsgdGhpcy5pc290b3BlICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLnRhZyAhPSBudWxsICYmIHRoaXMudGFnICE9ICcnKVxyXG4gICAgICAgIHMgKz0gJyB0YWc9XFwnJyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodGhpcy50YWcpICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLmFsaWFzICE9IG51bGwgJiYgdGhpcy5hbGlhcyAhPSAnJylcclxuICAgICAgICBzICs9ICcgYWxpYXM9XFwnJyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodGhpcy5hbGlhcykgKyAnXFwnJztcclxuICAgICAgaWYgKHRoaXMuY29sb3IgIT0gbnVsbClcclxuICAgICAgICBzICs9ICcgY2xyPVxcJycgKyB0aGlzLmNvbG9yICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLmF0b21tYXBpZCA+IDApXHJcbiAgICAgICAgcyArPSAnIGFtaT1cXCcnICsgdGhpcy5hdG9tbWFwaWQgKyAnXFwnJztcclxuICAgICAgaWYgKHRoaXMubG9ja2VkKVxyXG4gICAgICAgIHMgKz0gJyBsb2NrZWQ9XFwnMVxcJyc7XHJcbiAgICAgIGlmICh0aGlzLmF0dGFjaHBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFyIGFwb3MgPSAnJztcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYXR0YWNocG9pbnRzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgYXBvcyArPSAoaSA+IDAgPyAnLCcgOiAnJykgKyB0aGlzLmF0dGFjaHBvaW50c1tpXTtcclxuICAgICAgICBzICs9ICcgYXBvPVxcJycgKyBhcG9zICsgJ1xcJyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaHMgPiAwKVxyXG4gICAgICAgIHMgKz0gJyBocz1cXCcnICsgdGhpcy5ocyArICdcXCcnO1xyXG4gICAgICBpZiAodGhpcy52YWwgPiAwKVxyXG4gICAgICAgIHMgKz0gJyB2YWw9XFwnJyArIHRoaXMudmFsICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwICE9IG51bGwpXHJcbiAgICAgICAgcyArPSAnIGc9XFwnJyArIHRoaXMuZ3JvdXAuaWQgKyAnXFwnJztcclxuICAgICAgaWYgKHRoaXMucXVlcnkgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5LnN1YiAhPSBudWxsKVxyXG4gICAgICAgICAgcyArPSAnIHN1Yj1cXCcnICsgdGhpcy5xdWVyeS5zdWIgKyAnXFwnJztcclxuICAgICAgICBpZiAodGhpcy5xdWVyeS51bnMgIT0gbnVsbClcclxuICAgICAgICAgIHMgKz0gJyB1bnM9XFwnJyArICh0aGlzLnF1ZXJ5LnVucyA/IDEgOiAwKSArICdcXCcnO1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5LnJiYyAhPSBudWxsKVxyXG4gICAgICAgICAgcyArPSAnIHJiYz1cXCcnICsgdGhpcy5xdWVyeS5yYmMgKyAnXFwnJztcclxuICAgICAgICBpZiAodGhpcy5xdWVyeS5hbHMgIT0gbnVsbCAmJiB0aGlzLnF1ZXJ5LnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgcyArPSAnIGFscz1cXCcnICsgdGhpcy5xdWVyeS5hbHMuam9pbignLCcpICsgJ1xcJyc7XHJcbiAgICAgICAgICBzICs9ICcgYWxzX3Q9XFwnJyArICh0aGlzLnF1ZXJ5LnQgPT0gZmFsc2UgPyAwIDogMSkgKyAnXFwnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHMgKz0gJyBiaW89XFwnJyArIHRoaXMuYmlvLnR5cGUgKyAnXFwnJztcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5iaW8uc3VidHlwZSkpXHJcbiAgICAgICAgcyArPSAnIHN1YnR5cGU9XFwnJyArIHRoaXMuYmlvLnN1YnR5cGUgKyAnXFwnJztcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5iaW8uc2VxdWVuY2VzKSlcclxuICAgICAgICBzICs9ICcgc2VxPVxcJycgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMuYmlvLnNlcXVlbmNlcykgKyAnXFwnJztcclxuICAgICAgaWYgKCh0aGlzLmJpby5pZCBhcyBudW1iZXIpID4gMClcclxuICAgICAgICBzICs9ICcgYmlvaWQ9XFwnJyArIHNjaWwuVXRpbHMuZXNjWG1sVmFsdWUodGhpcy5iaW8uaWQgYXMgc3RyaW5nKSArICdcXCcnO1xyXG4gICAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0aGlzLmJpby5hbm5vdGF0aW9uKSlcclxuICAgICAgICBzICs9ICcgYW5uPVxcJycgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMuYmlvLmFubm90YXRpb24pICsgJ1xcJyc7XHJcbiAgICAgIGlmICh0aGlzLmVsZW0gPT0gJz8nICYmICFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5iaW8uYW1iaWd1aXR5KSlcclxuICAgICAgICBzICs9ICcgYW1iPVxcJycgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMuYmlvLmFtYmlndWl0eSkgKyAnXFwnJztcclxuICAgICAgaWYgKHRoaXMuYmlvdHlwZSgpID09IG9yZy5oZWxtLndlYmVkaXRvci5IRUxNLkJMT0IgJiYgIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0aGlzLmJpby5ibG9idHlwZSkpXHJcbiAgICAgICAgcyArPSAnIGJsb2J0eXBlPVxcJycgKyBzY2lsLlV0aWxzLmVzY1htbFZhbHVlKHRoaXMuYmlvLmJsb2J0eXBlKSArICdcXCcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJncm91cCA9PSBudWxsICYmIHRoaXMuc3VwZXJhdG9tID09IG51bGwpIHtcclxuICAgICAgcyArPSAnLz4nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcyArPSAnPlxcbic7XHJcbiAgICAgIGlmICh0aGlzLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgcyArPSAnPHJncm91cD5cXG4nO1xyXG4gICAgICAgIHMgKz0gdGhpcy5yZ3JvdXAuaHRtbChzY2FsZSkgKyAnXFxuJztcclxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMucmdyb3VwLm1vbHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgIHZhciBzMiA9IHRoaXMucmdyb3VwLm1vbHNbal0uX2dldFhtbChudWxsLCBudWxsLCBudWxsLCBudWxsLCBsZW4sIHRydWUpO1xyXG4gICAgICAgICAgaWYgKHMyICE9IG51bGwpXHJcbiAgICAgICAgICAgIHMgKz0gczI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgKz0gJzwvcmdyb3VwPic7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc3VwZXJhdG9tICE9IG51bGwpIHtcclxuICAgICAgICBzICs9ICc8c3VwZXJhdG9tPlxcbic7XHJcbiAgICAgICAgcyArPSB0aGlzLnN1cGVyYXRvbS5fZ2V0WG1sKG51bGwsIG51bGwsIG51bGwsIG51bGwsIGxlbiwgdHJ1ZSk7XHJcbiAgICAgICAgcyArPSAnPC9zdXBlcmF0b20+JztcclxuICAgICAgfVxyXG4gICAgICBzICs9ICc8L2E+JztcclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG4gIH1cclxuXHJcbiAgcmVhZEh0bWwoZSkge1xyXG4gICAgdmFyIGMgPSBlLmdldEF0dHJpYnV0ZSgnYycpO1xyXG4gICAgaWYgKGMgIT0gbnVsbClcclxuICAgICAgdGhpcy5jaGFyZ2UgPSBwYXJzZUludChjKTtcclxuXHJcbiAgICB2YXIgclN0cjogc3RyaW5nIHwgbnVsbCA9IGUuZ2V0QXR0cmlidXRlKCdjbHInKTtcclxuICAgIGlmIChyU3RyICE9IG51bGwpXHJcbiAgICAgIHRoaXMuY29sb3IgPSByU3RyO1xyXG5cclxuICAgIHZhciByYWQgPSBlLmdldEF0dHJpYnV0ZSgncmFkJyk7XHJcbiAgICBpZiAocmFkICE9IG51bGwgJiYgcmFkICE9ICcnKVxyXG4gICAgICB0aGlzLnJhZGljYWwgPSBwYXJzZUludChyYWQpO1xyXG5cclxuICAgIHZhciBpc28gPSBlLmdldEF0dHJpYnV0ZSgnaXNvJyk7XHJcbiAgICBpZiAoaXNvICE9IG51bGwgJiYgaXNvICE9ICcnKVxyXG4gICAgICB0aGlzLmlzb3RvcGUgPSBwYXJzZUludChpc28pO1xyXG5cclxuICAgIHZhciBocyA9IGUuZ2V0QXR0cmlidXRlKCdocycpO1xyXG4gICAgaWYgKGhzICE9IG51bGwgJiYgaHMgIT0gJycpXHJcbiAgICAgIHRoaXMuaHMgPSBwYXJzZUludChocyk7XHJcblxyXG4gICAgdmFyIHZhbCA9IGUuZ2V0QXR0cmlidXRlKCd2YWwnKTtcclxuICAgIGlmICh2YWwgIT0gbnVsbCAmJiB2YWwgIT0gJycpXHJcbiAgICAgIHRoaXMudmFsID0gcGFyc2VJbnQodmFsKTtcclxuXHJcbiAgICB2YXIgdGFnID0gZS5nZXRBdHRyaWJ1dGUoJ3RhZycpO1xyXG4gICAgaWYgKHRhZyAhPSBudWxsICYmIHRhZyAhPSAnJylcclxuICAgICAgdGhpcy50YWcgPSB0YWc7XHJcblxyXG4gICAgdmFyIGFsaWFzID0gZS5nZXRBdHRyaWJ1dGUoJ2FsaWFzJyk7XHJcbiAgICBpZiAoYWxpYXMgIT0gbnVsbCAmJiBhbGlhcyAhPSAnJylcclxuICAgICAgdGhpcy5hbGlhcyA9IGFsaWFzO1xyXG5cclxuICAgIHZhciBhbWkgPSBlLmdldEF0dHJpYnV0ZSgnYW1pJyk7XHJcbiAgICBpZiAoYW1pICE9IG51bGwgJiYgIWlzTmFOKGFtaSkpXHJcbiAgICAgIHRoaXMuYXRvbW1hcGlkID0gcGFyc2VJbnQoYW1pKTtcclxuXHJcbiAgICB2YXIgYXBvOiBzdHJpbmcgfCBudWxsID0gZS5nZXRBdHRyaWJ1dGUoJ2FwbycpO1xyXG4gICAgaWYgKGFwbyAhPSBudWxsICYmIGFwbyAhPSAnJykge1xyXG4gICAgICB2YXIgc3MgPSBhcG8uc3BsaXQoJywnKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIHZhciBzMiA9IHNzW2ldO1xyXG4gICAgICAgIHZhciBhcG9uOiBudW1iZXIgPSBpc05hTihzMiBhcyBhbnkpID8gMCA6IHBhcnNlSW50KHMyKTtcclxuICAgICAgICBpZiAoYXBvbiA+IDApXHJcbiAgICAgICAgICB0aGlzLmF0dGFjaHBvaW50cy5wdXNoKGFwb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHJiYyA9IGUuZ2V0QXR0cmlidXRlKCdyYmMnKTtcclxuICAgIGlmIChyYmMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5xdWVyeSA9PSBudWxsKVxyXG4gICAgICAgIHRoaXMucXVlcnkgPSB7fTtcclxuICAgICAgdGhpcy5xdWVyeS5yYmMgPSBwYXJzZUludChyYmMpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBzdWIgPSBlLmdldEF0dHJpYnV0ZSgnc3ViJyk7XHJcbiAgICBpZiAoc3ViICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMucXVlcnkgPT0gbnVsbClcclxuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XHJcbiAgICAgIHRoaXMucXVlcnkuc3ViID0gc3ViID09ICcqJyA/ICcqJyA6IHBhcnNlSW50KHN1Yik7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHVucyA9IGUuZ2V0QXR0cmlidXRlKCd1bnMnKTtcclxuICAgIGlmICh1bnMgPT0gJzEnIHx8IHVucyA9PSAnMCcpIHtcclxuICAgICAgaWYgKHRoaXMucXVlcnkgPT0gbnVsbClcclxuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XHJcbiAgICAgIHRoaXMucXVlcnkudW5zID0gdW5zID09ICcxJztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYWxzID0gSlNEcmF3Mi5QVC5tYWtlQXRvbUxpc3QoZS5nZXRBdHRyaWJ1dGUoJ2FscycpLCBlLmdldEF0dHJpYnV0ZSgnYWxzX3QnKSk7XHJcbiAgICBpZiAoYWxzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMucXVlcnkgPT0gbnVsbClcclxuICAgICAgICB0aGlzLnF1ZXJ5ID0ge307XHJcbiAgICAgIHRoaXMucXVlcnkuYWxzID0gYWxzLmF0b21zO1xyXG4gICAgICB0aGlzLnF1ZXJ5LnQgPSBhbHMudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5iaW8gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmJpby5zdWJ0eXBlID0gZS5nZXRBdHRyaWJ1dGUoJ3N1YnR5cGUnKTtcclxuICAgICAgdGhpcy5iaW8uc2VxdWVuY2VzID0gZS5nZXRBdHRyaWJ1dGUoJ3NlcScpO1xyXG4gICAgICBjb25zdCBiaW9pZDogbnVtYmVyID0gcGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoJ2Jpb2lkJykpO1xyXG4gICAgICBpZiAoYmlvaWQgPiAwKVxyXG4gICAgICAgIHRoaXMuYmlvLmlkID0gYmlvaWQ7XHJcblxyXG4gICAgICB2YXIgYW5uID0gZS5nZXRBdHRyaWJ1dGUoJ2FubicpO1xyXG4gICAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShhbm4pKVxyXG4gICAgICAgIHRoaXMuYmlvLmFubm90YXRpb24gPSBhbm47XHJcblxyXG4gICAgICB2YXIgYW1iID0gZS5nZXRBdHRyaWJ1dGUoJ2FtYicpO1xyXG4gICAgICBpZiAodGhpcy5lbGVtID09ICc/JyAmJiAhc2NpbC5VdGlscy5pc051bGxPckVtcHR5KGFtYikpXHJcbiAgICAgICAgdGhpcy5iaW8uYW1iaWd1aXR5ID0gYW1iO1xyXG5cclxuICAgICAgdmFyIGJsb2J0eXBlID0gZS5nZXRBdHRyaWJ1dGUoJ2Jsb2J0eXBlJyk7XHJcbiAgICAgIGlmICh0aGlzLmJpb3R5cGUoKSA9PSBvcmcuaGVsbS53ZWJlZGl0b3IuSEVMTS5CTE9CICYmICFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYmxvYnR5cGUpKVxyXG4gICAgICAgIHRoaXMuYmlvLmJsb2J0eXBlID0gYmxvYnR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZWxlbSAhPSBudWxsKSB7XHJcbiAgICAgIHZhciByZ0VsID0gc2NpbC5VdGlscy5nZXRGaXJzdEVsZW1lbnQoZSwgJ3Jncm91cCcpO1xyXG4gICAgICBpZiAocmdFbCkge1xyXG4gICAgICAgIHZhciB0ID0gc2NpbC5VdGlscy5nZXRGaXJzdEVsZW1lbnQocmdFbCwgJ2knKTtcclxuICAgICAgICBpZiAodCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB2YXIgcjogSVJHcm91cCA9IG5ldyBKU0RyYXcyLlJHcm91cCgpO1xyXG4gICAgICAgICAgaWYgKHIucmVhZEh0bWwodCwgbnVsbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yZ3JvdXAgPSByO1xyXG5cclxuICAgICAgICAgICAgci5wb3NpdGlvbiA9IEpTRHJhdzIuUG9pbnQuZnJvbVN0cmluZyhlLmdldEF0dHJpYnV0ZSgncCcpKTtcclxuICAgICAgICAgICAgdmFyIGRpdnMgPSBzY2lsLlV0aWxzLmdldEVsZW1lbnRzKHJnRWwsICdkaXYnKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXZzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgdmFyIG0gPSBuZXcgSlNEcmF3Mi5Nb2woKTtcclxuICAgICAgICAgICAgICBpZiAobS5zZXRYbWwoZGl2c1tpXSkgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHIubW9scy5wdXNoKG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWxpYXMgIT0gbnVsbCB8fCB0aGlzLmJpbyAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBzdXBlcmF0b20gPSBzY2lsLlV0aWxzLmdldEZpcnN0RWxlbWVudChlLCAnc3VwZXJhdG9tJyk7XHJcbiAgICAgIHZhciBkaXYgPSBzdXBlcmF0b20gPT0gbnVsbCA/IG51bGwgOiBzY2lsLlV0aWxzLmdldEZpcnN0RWxlbWVudChzdXBlcmF0b20sICdkaXYnKTtcclxuICAgICAgaWYgKGRpdiAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIG0gPSBuZXcgSlNEcmF3Mi5Nb2woKTtcclxuICAgICAgICBpZiAobS5zZXRYbWwoZGl2KSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAobS5hdG9tcy5sZW5ndGggPT0gMSAmJiBtLmF0b21zWzBdLmVsZW0gPT0gdGhpcy5hbGlhcykge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW0gPSB0aGlzLmFsaWFzO1xyXG4gICAgICAgICAgICB0aGlzLmFsaWFzID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VwZXJhdG9tID0gbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZShwLCB0b3IpIHtcclxuICAgIGlmICh0aGlzLl9yZWN0ICE9IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLl9yZWN0LmNvbnRhaW5zKHApO1xyXG4gICAgcmV0dXJuIHRoaXMucC5kaXN0VG8ocCkgPD0gdG9yO1xyXG4gIH1cclxuXHJcbiAgZHJhd0N1cihzdXJmYWNlOiBhbnksIHI6IG51bWJlciwgY29sb3I6IHN0cmluZywgbT86IE1vbDxUQmlvPikge1xyXG4gICAgY29uc3QgYyA9IHRoaXMuX3JlY3QgPT0gbnVsbCA/IHRoaXMucCA6IHRoaXMuX3JlY3QuY2VudGVyKCk7XHJcbiAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IGMueCwgY3k6IGMueSwgcjogcn0pLnNldEZpbGwoY29sb3IpO1xyXG4gICAgaWYgKHRoaXMuZWxlbSA9PSAnQCcgJiYgbSAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSBtLmdldEFsbEJvbmRzKHRoaXMpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjb25zdCBiID0gbGlzdFtpXTtcclxuICAgICAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZKVxyXG4gICAgICAgICAgYi5vdGhlckF0b20odGhpcykuZHJhd0N1cihzdXJmYWNlLCByICogMC43NSwgY29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZWVkU2hvd0F0b21MYWJlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLmVsZW0gIT0gJ0MnIHx8IHRoaXMuY2hhcmdlICE9IDAgfHwgdGhpcy5pc290b3BlICE9IG51bGwgfHwgdGhpcy5oY291bnQgPT0gNDtcclxuICB9XHJcblxyXG4gIC8vIHNob3dMYWJlbDogZnVuY3Rpb24oKSB7XHJcbiAgLy8gICByZXR1cm4gYS5lbGVtICE9ICdDJyB8fCBhLmNoYXJnZSAhPSAwIHx8IGEuaXNvdG9wZSAhPSBudWxsIHx8IGEuaGNvdW50ID09IDQ7XHJcbiAgLy8gfSxcclxuXHJcbiAgZHJhd0JpbyhzdXJmYWNlLCBsaW5ld2lkdGg6IG51bWJlciwgZm9udHNpemU6IG51bWJlciwgY29sb3IpIHtcclxuICAgIHZhciBhID0gdGhpcztcclxuICAgIHZhciBiaW90eXBlID0gdGhpcy5iaW90eXBlKCk7XHJcbiAgICB2YXIgcCA9IGEucC5jbG9uZSgpO1xyXG4gICAgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQU5USUJPRFkpIHtcclxuICAgICAgY29sb3IgPSAnIzAwZic7XHJcbiAgICAgIHZhciBjb2xvcjIgPSBhLmJpby5zdWJ0eXBlID09IEpTRHJhdzIuQU5USUJPRFkuU2NGdiA/ICcjYmJiJyA6IGNvbG9yO1xyXG4gICAgICB2YXIgY29sb3IzID0gYS5iaW8uc3VidHlwZSA9PSBKU0RyYXcyLkFOVElCT0RZLlNjRnYgfHwgYS5iaW8uc3VidHlwZSA9PSBKU0RyYXcyLkFOVElCT0RZLkZhYiA/ICcjYmJiJyA6IGNvbG9yO1xyXG4gICAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IHAueCwgY3k6IHAueSwgcjogZm9udHNpemV9KVxyXG4gICAgICAgIC5zZXRGaWxsKCd3aGl0ZScpXHJcbiAgICAgICAgLnNldFN0cm9rZSh7Y29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoIC8gMn0pO1xyXG4gICAgICBmb250c2l6ZSAvPSAyO1xyXG4gICAgICBwLm9mZnNldCgwLCAtbGluZXdpZHRoKTtcclxuICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgbmV3IEpTRHJhdzIuUG9pbnQocC54IC0gbGluZXdpZHRoLCBwLnkpLCBuZXcgSlNEcmF3Mi5Qb2ludChwLnggLSBsaW5ld2lkdGggLSBmb250c2l6ZSwgcC55IC0gZm9udHNpemUpLCBjb2xvcjIsIGxpbmV3aWR0aCk7XHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIG5ldyBKU0RyYXcyLlBvaW50KHAueCArIGxpbmV3aWR0aCwgcC55KSwgbmV3IEpTRHJhdzIuUG9pbnQocC54ICsgbGluZXdpZHRoICsgZm9udHNpemUsIHAueSAtIGZvbnRzaXplKSwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIG5ldyBKU0RyYXcyLlBvaW50KHAueCAtIDIgKiBsaW5ld2lkdGgsIHAueSArIGZvbnRzaXplIC8gMS41KSwgbmV3IEpTRHJhdzIuUG9pbnQocC54IC0gMiAqIGxpbmV3aWR0aCAtIGZvbnRzaXplLCBwLnkgLSBmb250c2l6ZSArIGZvbnRzaXplIC8gMS41KSwgY29sb3IyLCBsaW5ld2lkdGgpO1xyXG4gICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBuZXcgSlNEcmF3Mi5Qb2ludChwLnggKyAyICogbGluZXdpZHRoLCBwLnkgKyBmb250c2l6ZSAvIDEuNSksIG5ldyBKU0RyYXcyLlBvaW50KHAueCArIDIgKiBsaW5ld2lkdGggKyBmb250c2l6ZSwgcC55IC0gZm9udHNpemUgKyBmb250c2l6ZSAvIDEuNSksIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBuZXcgSlNEcmF3Mi5Qb2ludChwLnggLSBsaW5ld2lkdGgsIHAueSksIG5ldyBKU0RyYXcyLlBvaW50KHAueCAtIGxpbmV3aWR0aCwgcC55ICsgZm9udHNpemUgKiAyKSwgY29sb3IzLCBsaW5ld2lkdGgpO1xyXG4gICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBuZXcgSlNEcmF3Mi5Qb2ludChwLnggKyBsaW5ld2lkdGgsIHAueSksIG5ldyBKU0RyYXcyLlBvaW50KHAueCArIGxpbmV3aWR0aCwgcC55ICsgZm9udHNpemUgKiAyKSwgY29sb3IzLCBsaW5ld2lkdGgpO1xyXG4gICAgfSBlbHNlIGlmIChiaW90eXBlID09IEpTRHJhdzIuQklPLlBST1RFSU4pIHtcclxuICAgICAgdmFyIGNvbG9ycyA9IFt7b2Zmc2V0OiAwLCBjb2xvcjogJyM0ZWExZmMnfSwge29mZnNldDogbGluZXdpZHRoIC8gMjAsIGNvbG9yOiAnIzAwNzJlNSd9LCB7b2Zmc2V0OiBsaW5ld2lkdGggLyAxMCwgY29sb3I6ICcjMDAzYjgwJ31dO1xyXG4gICAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IHRoaXMucC54LCBjeTogdGhpcy5wLnksIHI6IGZvbnRzaXplfSlcclxuICAgICAgICAuc2V0RmlsbCh7dHlwZTogJ3JhZGlhbCcsIGN4OiB0aGlzLnAueCArIGZvbnRzaXplIC8gNCwgY3k6IHRoaXMucC55ICsgZm9udHNpemUgLyA0LCBjb2xvcnM6IGNvbG9yc30pO1xyXG4gICAgfSBlbHNlIGlmIChiaW90eXBlID09IEpTRHJhdzIuQklPLkdFTkUgfHwgYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5ETkEgfHwgYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5STkEpIHtcclxuICAgICAgY29sb3IgPSAnIzAwZic7XHJcbiAgICAgIHZhciBjb2xvcjIgPSBhLmJpby5zdWJ0eXBlID09IEpTRHJhdzIuQU5USUJPRFkuU2NGdiA/ICcjYmJiJyA6IGNvbG9yO1xyXG4gICAgICB2YXIgY29sb3IzID0gYS5iaW8uc3VidHlwZSA9PSBKU0RyYXcyLkFOVElCT0RZLlNjRnYgfHwgYS5iaW8uc3VidHlwZSA9PSBKU0RyYXcyLkFOVElCT0RZLkZhYiA/ICcjYmJiJyA6IGNvbG9yO1xyXG4gICAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IHAueCwgY3k6IHAueSwgcjogZm9udHNpemV9KVxyXG4gICAgICAgIC5zZXRGaWxsKCd3aGl0ZScpXHJcbiAgICAgICAgLnNldFN0cm9rZSh7Y29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoIC8gMn0pO1xyXG4gICAgICB0aGlzLmRyYXdFbGxpcHNlKHN1cmZhY2UsIHAueCArIGZvbnRzaXplIC8gNiwgcC55ICsgZm9udHNpemUgLyAzLCBmb250c2l6ZSAvIDYsIGZvbnRzaXplIC8gMiwgY29sb3IsIC0yMCk7XHJcbiAgICAgIHRoaXMuZHJhd0VsbGlwc2Uoc3VyZmFjZSwgcC54ICsgZm9udHNpemUgLyA2LCBwLnkgLSBmb250c2l6ZSAvIDMsIGZvbnRzaXplIC8gNiwgZm9udHNpemUgLyAyLCBjb2xvciwgKzIwKTtcclxuICAgICAgdGhpcy5kcmF3RWxsaXBzZShzdXJmYWNlLCBwLnggLSBmb250c2l6ZSAvIDYsIHAueSArIGZvbnRzaXplIC8gMywgZm9udHNpemUgLyA2LCBmb250c2l6ZSAvIDIsIGNvbG9yLCArMjApO1xyXG4gICAgICB0aGlzLmRyYXdFbGxpcHNlKHN1cmZhY2UsIHAueCAtIGZvbnRzaXplIC8gNiwgcC55IC0gZm9udHNpemUgLyAzLCBmb250c2l6ZSAvIDYsIGZvbnRzaXplIC8gMiwgY29sb3IsIC0yMCk7XHJcbiAgICB9IGVsc2UgaWYgKG9yZy5oZWxtLndlYmVkaXRvci5pc0hlbG1Ob2RlKGEpKSB7XHJcbiAgICAgIG9yZy5oZWxtLndlYmVkaXRvci5JbnRlcmZhY2UuZHJhd01vbm9tZXIoc3VyZmFjZSwgYSwgcCwgZm9udHNpemUsIGxpbmV3aWR0aCwgY29sb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGNvbG9yID09IG51bGwpXHJcbiAgICAgICAgY29sb3IgPSBhLmJpby50eXBlID09IEpTRHJhdzIuQklPLkFBID8gJyMwMEYnIDogKGEuYmlvLnR5cGUgPT0gSlNEcmF3Mi5CSU8uQkFTRV9STkEgPyAnIzI3ODkyNScgOiAnI0ZGQUEwMCcpO1xyXG4gICAgICB0aGlzLmRyYXdEaWFtb25kKHN1cmZhY2UsIHAueCwgcC55LCBmb250c2l6ZSAqIDAuNTUsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICBwLm9mZnNldCgwLCAtMSk7XHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMYWJlbChzdXJmYWNlLCBwLCBhLmVsZW0sIGNvbG9yLCBmb250c2l6ZSAqIChhLmVsZW0ubGVuZ3RoID4gMSA/IDIgLyBhLmVsZW0ubGVuZ3RoIDogMS4wKSwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vaWYgKHRoaXMuc2VsZWN0ZWQpXHJcbiAgICAvLyAgICB0aGlzLmRyYXdTZWxlY3Qoc3VyZmFjZSwgbGluZXdpZHRoKTtcclxuICB9XHJcblxyXG4gIGRyYXdEaWFtb25kKHN1cmZhY2UsIHgsIHksIHcsIGNvbG9yLCBsaW5ld2lkdGgpIHtcclxuICAgIHN1cmZhY2UuY3JlYXRlUmVjdCh7eDogeCAtIHcsIHk6IHkgLSB3LCB3aWR0aDogMiAqIHcsIGhlaWdodDogMiAqIHd9KVxyXG4gICAgICAuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnJvdGF0ZWdBdCg0NSwgeCwgeSldKVxyXG4gICAgICAuc2V0RmlsbCgnd2hpdGUnKVxyXG4gICAgICAuc2V0U3Ryb2tlKHtjb2xvcjogY29sb3IsIHdpZHRoOiBsaW5ld2lkdGggLyAyfSk7XHJcbiAgfVxyXG5cclxuICBkcmF3RWxsaXBzZShzdXJmYWNlLCB4LCB5LCByeCwgcnksIGNvbG9yLCBkZWcpIHtcclxuICAgIHN1cmZhY2UuY3JlYXRlRWxsaXBzZSh7Y3g6IHgsIGN5OiB5LCByeDogcngsIHJ5OiByeX0pXHJcbiAgICAgIC5zZXRGaWxsKGNvbG9yKVxyXG4gICAgICAuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnJvdGF0ZWdBdChkZWcsIHgsIHkpXSk7XHJcbiAgfVxyXG5cclxuICBoYXNMYWJlbChtLCBzaG93Y2FyYm9uKSB7XHJcbiAgICB2YXIgYSA9IHRoaXM7XHJcbiAgICByZXR1cm4gYS5iaW8gPT0gbnVsbCAmJiAoYS5lbGVtICE9ICdDJyB8fCBhLmNoYXJnZSAhPSAwIHx8IGEucmFkaWNhbCAhPSBudWxsIHx8XHJcbiAgICAgIGEuZWxlbSA9PSAnQycgJiYgKHNob3djYXJib24gPT0gJ2FsbCcgfHwgc2hvd2NhcmJvbiA9PSAndGVybWluYWwnICYmIG0uZ2V0TmVpZ2hib3JBdG9tcyhhKS5sZW5ndGggPT0gMSkgfHxcclxuICAgICAgYS5pc290b3BlICE9IG51bGwgfHwgYS5oY291bnQgPT0gNCB8fCBhLmhzID4gMCB8fCBhLnZhbCA+IDAgfHwgYS5hbGlhcyAhPSBudWxsICYmIGEuYWxpYXMgIT0gJycgfHxcclxuICAgICAgYS5xdWVyeSAhPSBudWxsICYmIChhLnF1ZXJ5LnN1YiAhPSBudWxsIHx8IGEucXVlcnkudW5zICE9IG51bGwgfHwgYS5xdWVyeS5yYmMgIT0gbnVsbCB8fCBhLnF1ZXJ5LmFscyAhPSBudWxsICYmIGEucXVlcnkudCAhPSBudWxsKSk7XHJcbiAgfVxyXG5cclxuICBoYXNFcnIoKSB7XHJcbiAgICB2YXIgYSA9IHRoaXM7XHJcbiAgICB2YXIgZSA9IGEuYmlvID8gbnVsbCA6IEpTRHJhdzIuUFRbYS5lbGVtXTtcclxuICAgIHJldHVybiAoIWEuYmlvICYmIChlID09IG51bGwgfHwgZS5hID49IDAgJiYgYS5oYXNFcnJvcikpICYmIGEuZWxlbSAhPSAnM1xcJycgJiYgYS5lbGVtICE9ICc1XFwnJztcclxuICB9XHJcblxyXG4gIGRyYXcoc3VyZmFjZSwgbGluZXdpZHRoOiBudW1iZXIsIG06IE1vbDxUQmlvPiwgZm9udHNpemU6IG51bWJlciwgc2hvd0Vycm9yOiBib29sZWFuKSB7XHJcbiAgICB2YXIgYSA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5fcmVjdCA9IG51bGw7XHJcbiAgICB2YXIgZSA9IGEuYmlvID8gbnVsbCA6IEpTRHJhdzIuUFRbYS5lbGVtXTtcclxuICAgIHZhciBoYXNFcnJvciA9IHNob3dFcnJvciAmJiB0aGlzLmhhc0VycigpO1xyXG4gICAgdmFyIGNvbG9yID0gYS5jb2xvcjtcclxuXHJcbiAgICBpZiAoYS5iaW8gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmRyYXdCaW8oc3VyZmFjZSwgbGluZXdpZHRoLCBmb250c2l6ZSwgY29sb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGF0b21jb2xvciA9IGNvbG9yO1xyXG4gICAgaWYgKGNvbG9yID09IG51bGwpIHtcclxuICAgICAgaWYgKHN1cmZhY2UubW9ub2NvbG9yKVxyXG4gICAgICAgIGNvbG9yID0gJ2JsYWNrJztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGNvbG9yID0gZSA9PSBudWxsIHx8IGUuYyA9PSBudWxsID8gJyMwMDAnIDogJyMnICsgZS5jO1xyXG4gICAgICBhdG9tY29sb3IgPSBjb2xvcjtcclxuICAgICAgaWYgKGhhc0Vycm9yKVxyXG4gICAgICAgIGF0b21jb2xvciA9IGUgPT0gbnVsbCB8fCBlLmMgPT0gbnVsbCA/ICcjMDAwJyA6ICcjZmZmJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYS5hdHRhY2hwb2ludHMubGVuZ3RoID4gMClcclxuICAgICAgdGhpcy5kcmF3QXBvKGEsIG0sIHN1cmZhY2UsIGxpbmV3aWR0aCwgZm9udHNpemUsIGNvbG9yKTtcclxuXHJcbiAgICBpZiAoYS5hbGlhcyAhPSBudWxsICYmIGEuYWxpYXMgIT0gJycpIHtcclxuICAgICAgdGhpcy5fcmVjdCA9IEpTRHJhdzIuQXRvbS5kcmF3QWxpYXMobS5jYWxjSERpcihhLCA0ICogbGluZXdpZHRoLCB0cnVlKSwgc3VyZmFjZSwgYS5wLCBhLmFsaWFzLCBoYXNFcnJvciA/ICdyZWQnIDogYXRvbWNvbG9yLCBmb250c2l6ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgZWxlbSA9IGEuZWxlbTtcclxuICAgICAgdmFyIGlzb3RvcGUgPSBhLmlzb3RvcGU7XHJcbiAgICAgIGlmIChlbGVtID09ICdIJykge1xyXG4gICAgICAgIGlmIChpc290b3BlID09IDIpIHtcclxuICAgICAgICAgIGVsZW0gPSAnRCc7XHJcbiAgICAgICAgICBpc290b3BlID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzb3RvcGUgPT0gMykge1xyXG4gICAgICAgICAgZWxlbSA9ICdUJztcclxuICAgICAgICAgIGlzb3RvcGUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChhLnF1ZXJ5ICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgeCA9ICcnO1xyXG4gICAgICAgIHZhciB4MiA9ICcnO1xyXG4gICAgICAgIGlmIChhLnF1ZXJ5LmFscyAhPSBudWxsKVxyXG4gICAgICAgICAgeCA9IChhLnF1ZXJ5LnQgPT0gZmFsc2UgPyAnIScgOiAnJykgKyAnWycgKyBhLnF1ZXJ5LmFscy5qb2luKCcsJykgKyAnXSc7XHJcbiAgICAgICAgaWYgKGEucXVlcnkucmJjICE9IG51bGwpXHJcbiAgICAgICAgICB4MiArPSAoeDIgPT0gJycgPyAnJyA6ICcsJykgKyAncicgKyBhLnF1ZXJ5LnJiYztcclxuICAgICAgICBpZiAoYS5xdWVyeS5zdWIgIT0gbnVsbClcclxuICAgICAgICAgIHgyICs9ICh4MiA9PSAnJyA/ICcnIDogJywnKSArICdzJyArIGEucXVlcnkuc3ViO1xyXG4gICAgICAgIGlmIChhLnF1ZXJ5LnVucylcclxuICAgICAgICAgIHgyICs9ICh4MiA9PSAnJyA/ICcnIDogJywnKSArICd1JztcclxuXHJcbiAgICAgICAgaWYgKHggIT0gJycgfHwgeDIgIT0gJycpXHJcbiAgICAgICAgICBlbGVtID0gKHggPT0gJycgPyBlbGVtIDogeCkgKyAoeDIgPT0gJycgPyAnJyA6ICcoJyArIHgyICsgJyknKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHgybjogbnVtYmVyID0gMDtcclxuICAgICAgdmFyIHkyOiBudW1iZXIgPSAwO1xyXG4gICAgICBpZiAoaGFzRXJyb3IgfHwgdGhpcy5faGFzbGFiZWwpIHtcclxuICAgICAgICB2YXIgdCA9IEpTRHJhdzIuRHJhd2VyLmRyYXdMYWJlbChzdXJmYWNlLCBhLnAsIGVsZW0sIGF0b21jb2xvciwgZm9udHNpemUsIGhhc0Vycm9yID8gJyNmMDAnIDogZmFsc2UpO1xyXG4gICAgICAgIHZhciBjID0gbnVsbDtcclxuICAgICAgICB2YXIgaCA9IG51bGw7XHJcbiAgICAgICAgdmFyIG4gPSBudWxsO1xyXG4gICAgICAgIHZhciBpc28gPSBudWxsO1xyXG5cclxuICAgICAgICB2YXIgcyA9ICcnO1xyXG4gICAgICAgIGlmIChhLmNoYXJnZSAhPSAwKVxyXG4gICAgICAgICAgcyArPSAoTWF0aC5hYnMoYS5jaGFyZ2UpID09IDEgPyAnJyA6IE1hdGguYWJzKGEuY2hhcmdlKSArICcnKSArIChhLmNoYXJnZSA+IDAgPyAnKycgOiAnLScpO1xyXG4gICAgICAgIHN3aXRjaCAoYS5yYWRpY2FsKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgcyArPSAnOic7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBzICs9ICdeJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIHMgKz0gJ15eJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocyAhPSAnJylcclxuICAgICAgICAgIGMgPSBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgYS5wLCBzLCBjb2xvciwgZm9udHNpemUgLyAxLjIsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaWYgKGlzb3RvcGUgIT0gbnVsbClcclxuICAgICAgICAgIGlzbyA9IEpTRHJhdzIuRHJhd2VyLmRyYXdMYWJlbChzdXJmYWNlLCBhLnAsIGlzb3RvcGUgKyAnJywgY29sb3IsIGZvbnRzaXplIC8gMS4xLCBmYWxzZSk7XHJcbiAgICAgICAgaWYgKGEucXVlcnkgPT0gbnVsbCAmJiBhLmhjb3VudCA+IDAgJiYgKHRoaXMuX2hhc2xhYmVsIHx8IGVsZW0gIT0gJ0MnIHx8IGEuY2hhcmdlICE9IDAgfHwgYS5oY291bnQgPT0gNCkpIHtcclxuICAgICAgICAgIGggPSBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgYS5wLCAnSCcsIGNvbG9yLCBmb250c2l6ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgbiA9IGEuaGNvdW50ID09IDEgPyBudWxsIDogSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIGEucCwgYS5oY291bnQgKyAnJywgY29sb3IsIGZvbnRzaXplIC8gMS40LCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdHcgPSB0LmdldFRleHRXaWR0aCgpO1xyXG4gICAgICAgIGlmIChjICE9IG51bGwgfHwgaCAhPSBudWxsIHx8IG4gIT0gbnVsbCB8fCBpc28gIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIGV4dHJhID0gc2NpbC5VdGlscy5pc09wZXJhID8gTWF0aC5yb3VuZChmb250c2l6ZSAvIDQpIDogMDtcclxuICAgICAgICAgIHZhciBodyA9IGggPT0gbnVsbCA/IDAgOiBoLmdldFRleHRXaWR0aCgpICsgZXh0cmE7XHJcbiAgICAgICAgICB2YXIgbncgPSBuID09IG51bGwgPyAwIDogbi5nZXRUZXh0V2lkdGgoKSArIGV4dHJhO1xyXG4gICAgICAgICAgdmFyIGN3ID0gYyA9PSBudWxsID8gMCA6IGMuZ2V0VGV4dFdpZHRoKCkgKyBleHRyYTtcclxuICAgICAgICAgIHZhciBpdyA9IGlzbyA9PSBudWxsID8gMCA6IGlzby5nZXRUZXh0V2lkdGgoKSArIGV4dHJhO1xyXG5cclxuICAgICAgICAgIHZhciBub0FkajogYm9vbGVhbiA9IHRydWU7IC8vc2NpbC5VdGlscy5pc0lFIHx8IHNjaWwuVXRpbHMuaXNUb3VjaDtcclxuICAgICAgICAgIHN3aXRjaCAobS5jYWxjSERpcihhLCA0ICogbGluZXdpZHRoKSkge1xyXG4gICAgICAgICAgY2FzZSBKU0RyYXcyLkFMSUdOLlJJR0hUOlxyXG4gICAgICAgICAgICBpZiAoaXNvICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgaXNvLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUoLSh0dyAvIDIgKyBpdyAvIDIgKyAobm9BZGogPyAwIDogMikpLCAtNCldKTtcclxuICAgICAgICAgICAgaWYgKGggIT0gbnVsbClcclxuICAgICAgICAgICAgICBoLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUodHcgLyAyICsgaHcgLyAyICsgKG5vQWRqID8gMCA6IDIpLCAwKV0pO1xyXG4gICAgICAgICAgICBpZiAobiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIG4uc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSh0dyAvIDIgKyBodyArIG53IC8gMiArIChub0FkaiA/IDAgOiA0KSwgNCldKTtcclxuICAgICAgICAgICAgaWYgKGMgIT0gbnVsbClcclxuICAgICAgICAgICAgICBjLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUodHcgLyAyICsgaHcgKyBudyArIGN3IC8gMiArIChub0FkaiA/IDAgOiAyKSwgLTQpXSk7XHJcbiAgICAgICAgICAgIHgybiA9IHR3IC8gMiArIGh3ICsgbncgKyBjdyArIChub0FkaiA/IDAgOiAyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEpTRHJhdzIuQUxJR04uTEVGVDpcclxuICAgICAgICAgICAgaWYgKGlzbyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGlzby5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXgudHJhbnNsYXRlKC0odHcgLyAyICsgaXcgLyAyICsgKG5vQWRqID8gMCA6IDIpKSwgLTQpXSk7XHJcbiAgICAgICAgICAgIGlmIChuICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgbi5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXgudHJhbnNsYXRlKC0odHcgLyAyICsgaXcgKyBudyAvIDIgKyAobm9BZGogPyAwIDogNCkpLCA0KV0pO1xyXG4gICAgICAgICAgICBpZiAoaCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGguc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgtKHR3IC8gMiArIGl3ICsgbncgKyBodyAvIDIgKyAobm9BZGogPyAwIDogNikpLCAwKV0pO1xyXG4gICAgICAgICAgICBpZiAoYyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGMuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgtKHR3IC8gMiArIGl3ICsgbncgKyBodyArIGN3IC8gMiArICghbm9BZGogPyAwIDogMCkpLCAtNCldKTtcclxuICAgICAgICAgICAgeDJuID0gdHcgLyAyO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgSlNEcmF3Mi5BTElHTi5CT1RUT006XHJcbiAgICAgICAgICAgIGlmIChpc28gIT0gbnVsbClcclxuICAgICAgICAgICAgICBpc28uc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgtKHR3IC8gMiArIGl3IC8gMiArIChub0FkaiA/IDAgOiAyKSksIC00KV0pO1xyXG4gICAgICAgICAgICBpZiAoaCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGguc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgwLCBmb250c2l6ZSldKTtcclxuICAgICAgICAgICAgaWYgKG4gIT0gbnVsbClcclxuICAgICAgICAgICAgICBuLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUoaHcgLyAyICsgbncgLyAyICsgKG5vQWRqID8gMCA6IDIpLCBmb250c2l6ZSArIDQpXSk7XHJcbiAgICAgICAgICAgIGlmIChjICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgYy5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXgudHJhbnNsYXRlKChoID09IG51bGwgPyB0dyAvIDIgOiBodyAvIDIgKyBudykgKyBjdyAvIDIgKyAobm9BZGogPyAwIDogNCksIChoID09IG51bGwgPyAwIDogZm9udHNpemUpIC0gNCldKTtcclxuICAgICAgICAgICAgeDJuID0gKGggPT0gbnVsbCA/IHR3IC8gMiA6IGh3IC8gMiArIG53KSArIGN3ICsgKG5vQWRqID8gMCA6IDQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgSlNEcmF3Mi5BTElHTi5UT1A6XHJcbiAgICAgICAgICAgIGlmIChpc28gIT0gbnVsbClcclxuICAgICAgICAgICAgICBpc28uc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgtKHR3IC8gMiArIGl3IC8gMiArIChub0FkaiA/IDAgOiAyKSksIC00KV0pO1xyXG4gICAgICAgICAgICBpZiAoaCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGguc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSgwLCAtZm9udHNpemUpXSk7XHJcbiAgICAgICAgICAgIGlmIChuICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgbi5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXgudHJhbnNsYXRlKGh3IC8gMiArIG53IC8gMiArIChub0FkaiA/IDAgOiAyKSwgLWZvbnRzaXplICsgNCldKTtcclxuICAgICAgICAgICAgaWYgKGMgIT0gbnVsbClcclxuICAgICAgICAgICAgICBjLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUoKGggPT0gbnVsbCA/IHR3IC8gMiA6IGh3IC8gMiArIG53KSArIGN3IC8gMiArIChub0FkaiA/IDAgOiA0KSwgKGggPT0gbnVsbCA/IDAgOiAtZm9udHNpemUpIC0gNCldKTtcclxuICAgICAgICAgICAgeDJuID0gKGggPT0gbnVsbCA/IHR3IC8gMiA6IGh3IC8gMiArIG53KSArIGN3ICsgKG5vQWRqID8gMCA6IDQpO1xyXG4gICAgICAgICAgICB5MiA9IChoID09IG51bGwgPyAwIDogLWZvbnRzaXplKSAtIDQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4Mm4gPSB0dyAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYS5hdG9tbWFwaWQgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBwID0gYS5wLmNsb25lKCk7XHJcbiAgICAgICAgdmFyIHQgPSBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChzdXJmYWNlLCBwLm9mZnNldCh4Mm4sIHkyIC0gZm9udHNpemUgLSAyKSwgJygnICsgYS5hdG9tbWFwaWQgKyAnKScsICcjZjU1JywgZm9udHNpemUgLyAxLjQpO1xyXG4gICAgICAgIHgybiArPSB0LmdldFRleHRXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYS52YWwgPiAwKSB7XHJcbiAgICAgICAgdmFyIHAgPSBhLnAuY2xvbmUoKTtcclxuICAgICAgICB2YXIgdCA9IEpTRHJhdzIuRHJhd2VyLmRyYXdUZXh0KHN1cmZhY2UsIHAub2Zmc2V0KHgybiwgeTIgLSBmb250c2l6ZSAtIDIpLCAnKCcgKyAoYS52YWwgPT0gMTUgPyAwIDogYS52YWwpICsgJyknLCAnIzAwMCcsIGZvbnRzaXplIC8gMS4yKTtcclxuICAgICAgICB4Mm4gKz0gdC5nZXRUZXh0V2lkdGgoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGEudGFnICE9IG51bGwgJiYgYS50YWcgIT0gJycpIHtcclxuICAgICAgICB2YXIgcCA9IGEucC5jbG9uZSgpO1xyXG4gICAgICAgIHZhciB0ID0gSlNEcmF3Mi5EcmF3ZXIuZHJhd1RleHQoc3VyZmFjZSwgcC5vZmZzZXQoeDJuLCB5MiAtIGZvbnRzaXplIC0gMiksICc8JyArIGEudGFnICsgJz4nLCAnIzAwMCcsIGZvbnRzaXplIC8gMS4yKTtcclxuICAgICAgICB4Mm4gKz0gdC5nZXRUZXh0V2lkdGgoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhLmxvY2tlZClcclxuICAgICAgc3VyZmFjZS5jcmVhdGVDaXJjbGUoe2N4OiBhLnAueCwgY3k6IGEucC55LCByOiBmb250c2l6ZSAqIDAuNn0pLnNldFN0cm9rZSh7Y29sb3I6ICcjMGZmJywgd2lkdGg6IGxpbmV3aWR0aH0pO1xyXG4gIH1cclxuXHJcbiAgZHJhd0FwbyhhLCBtLCBzdXJmYWNlLCBsaW5ld2lkdGgsIGZvbnRzaXplLCBjb2xvcikge1xyXG4gICAgdmFyIGF0dGFjaHBvaW50cyA9IGEuYXR0YWNocG9pbnRzO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRhY2hwb2ludHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdmFyIGFwbyA9IGF0dGFjaHBvaW50c1tpXTtcclxuXHJcbiAgICAgIHZhciBkID0gZm9udHNpemUgKiAxLjU7XHJcbiAgICAgIHZhciBwID0gbS5ndWVzc0JvbmQoYSwgZCwgaSk7XHJcbiAgICAgIGlmIChwID09IG51bGwpIHtcclxuICAgICAgICBwID0gYS5wLmNsb25lKCk7XHJcbiAgICAgICAgcC5vZmZzZXQoZCwgMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBhcCA9IGEucC5jbG9uZSgpO1xyXG4gICAgICBpZiAoYS5faGFzbGFiZWwpXHJcbiAgICAgICAgYXAuc2hyaW5rKHAsIGZvbnRzaXplICogMC42KTtcclxuXHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGFwLCBwLCBjb2xvciwgbGluZXdpZHRoIC8gMiwgYXBvID09IDk5ID8gMiA6IDApO1xyXG4gICAgICBpZiAoYXBvID09IDk5IHx8IGFwbyA9PSA5OCkgeyAvLyBCYXNpc1xyXG4gICAgICAgIHZhciB2ID0gbmV3IEpTRHJhdzIuUG9pbnQoYXAueCAtIHAueCwgYXAueSAtIHAueSkucm90YXRlKDkwKS5zZXRMZW5ndGgoZm9udHNpemUpO1xyXG4gICAgICAgIHZhciBwMSA9IHAuY2xvbmUoKS5vZmZzZXQodi54LCB2LnkpO1xyXG4gICAgICAgIHZhciBwMiA9IHAuY2xvbmUoKS5vZmZzZXQoLXYueCwgLXYueSk7XHJcblxyXG4gICAgICAgIGlmIChhcG8gPT0gOTkpXHJcbiAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3QmFzaXMoc3VyZmFjZSwgcDEsIHAyLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0N1cnZlcyhzdXJmYWNlLCBwMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGggLyAyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRyYXdEaWFtb25kKHN1cmZhY2UsIHAueCwgcC55LCBmb250c2l6ZSAqIDAuMywgY29sb3IsIGxpbmV3aWR0aCAvIDMpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdUZXh0KHN1cmZhY2UsIHAub2Zmc2V0KC1mb250c2l6ZSAqIDAuMiwgLWZvbnRzaXplICogMC42KSwgYXBvICsgJycsIGNvbG9yLCBmb250c2l6ZSAqIDAuNyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYXdTZWxlY3QobGFzc28pIHtcclxuICAgIHZhciBjID0gdGhpcy5fcmVjdCA9PSBudWxsID8gdGhpcy5wIDogdGhpcy5fcmVjdC5jZW50ZXIoKTtcclxuICAgIGxhc3NvLmRyYXcodGhpcywgYyk7XHJcbiAgfVxyXG5cclxuICAvLyAtLSBzdGF0aWMgLS1cclxuXHJcbiAgc3RhdGljIGNhc3Q8VEJpbz4oYSk6IEF0b208VEJpbz4ge1xyXG4gICAgcmV0dXJuIGEgIT0gbnVsbCAmJiBhLlQgPT0gJ0FUT00nID8gYSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWF0Y2goeCwgeSkge1xyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmFyZUxpc3RFcSh4LmF0dGFjaHBvaW50cywgeS5hdHRhY2hwb2ludHMpKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIGUxID0geC5lbGVtO1xyXG4gICAgdmFyIGUyID0geS5lbGVtO1xyXG4gICAgdmFyIGYgPSBKU0RyYXcyLkF0b20ubWF0Y2gyKGUxLCBlMik7XHJcbiAgICBpZiAoZilcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgaWYgKHguaXNvdG9wZSAhPSB5Lmlzb3RvcGUgfHwgeC5jaGFyZ2UgIT0geS5jaGFyZ2UpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoeC5iaW8gIT0gbnVsbCB8fCB5LmJpbyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh4LmJpbyA9PSBudWxsIHx8IHkuYmlvID09IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4geC5iaW8udHlwZSA9PSB5LmJpby50eXBlICYmIGUxID09IGUyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlMSAhPSAnTCcgJiYgZTIgIT0gJ0wnKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdmFyIGxpc3QxID0gW107XHJcbiAgICB2YXIgbGlzdDIgPSBbXTtcclxuICAgIHZhciB0MSA9IHRydWU7XHJcbiAgICB2YXIgdDIgPSB0cnVlO1xyXG4gICAgaWYgKGUxID09ICdMJykge1xyXG4gICAgICBpZiAoeC5xdWVyeSAhPSBudWxsICYmIHgucXVlcnkuYWxzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgucXVlcnkuYWxzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgbGlzdDEucHVzaCh4LnF1ZXJ5LmFsc1tpXSk7XHJcbiAgICAgICAgaWYgKHgucXVlcnkudCA9PSBmYWxzZSlcclxuICAgICAgICAgIHQxID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxpc3QxLnB1c2goZTEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlMiA9PSAnTCcpIHtcclxuICAgICAgaWYgKHkucXVlcnkgIT0gbnVsbCAmJiB5LnF1ZXJ5LmFscyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB5LnF1ZXJ5LmFscy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIGxpc3QyLnB1c2goeS5xdWVyeS5hbHNbaV0pO1xyXG4gICAgICAgIGlmICh5LnF1ZXJ5LnQgPT0gZmFsc2UpXHJcbiAgICAgICAgICB0MiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsaXN0Mi5wdXNoKGUyKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QxLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdDIubGVuZ3RoOyArK2opIHtcclxuICAgICAgICBmID0gSlNEcmF3Mi5BdG9tLm1hdGNoKGxpc3QxW2ldLCBsaXN0MltqXSk7XHJcbiAgICAgICAgaWYgKGYgJiYgdDEgPT0gdDIpXHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0MSAhPSB0MjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYXRjaDIoZTEsIGUyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZTEgPT0gZTIgfHwgZTEgPT0gJyonIHx8IGUxID09ICdBJyB8fCBlMiA9PSAnKicgfHwgZTIgPT0gJ0EnIHx8XHJcbiAgICAgIGUxID09ICdYJyAmJiAoZTIgPT0gJ0YnIHx8IGUyID09ICdDbCcgfHwgZTIgPT0gJ0JyJyB8fCBlMiA9PSAnSScpIHx8XHJcbiAgICAgIGUyID09ICdYJyAmJiAoZTEgPT0gJ0YnIHx8IGUxID09ICdDbCcgfHwgZTEgPT0gJ0JyJyB8fCBlMSA9PSAnSScpIHx8XHJcbiAgICAgIGUxID09ICdRJyAmJiAoZTIgIT0gJ0gnICYmIGUyICE9ICdDJykgfHxcclxuICAgICAgZTIgPT0gJ1EnICYmIChlMSAhPSAnSCcgJiYgZTEgIT0gJ0MnKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkcmF3QWxpYXMoZGlyLCBzdXJmYWNlLCBwLCBzLCBjb2xvciwgZm9udHNpemUpOiBSZWN0IHtcclxuICAgIHJldHVybiBKU0RyYXcyLkRyYXdlci5kcmF3Rm9ybXVsYShzdXJmYWNlLCBwLCBkaXIgPT0gSlNEcmF3Mi5BTElHTi5MRUZULCBzLCBjb2xvciwgZm9udHNpemUpO1xyXG5cclxuICAgIC8vICAgICAgICB2YXIgdCA9IG51bGw7XHJcbiAgICAvLyAgICAgICAgaWYgKGRpciA9PSBKU0RyYXcyLkFMSUdOLkxFRlQpXHJcbiAgICAvLyAgICAgICAgICAgIHQgPSBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgcCwgcywgY29sb3IsIGZvbnRzaXplLCBmYWxzZSwgXCJlbmQtYW5jaG9yXCIpO1xyXG4gICAgLy8gICAgICAgIGVsc2VcclxuICAgIC8vICAgICAgICAgICAgdCA9IEpTRHJhdzIuRHJhd2VyLmRyYXdMYWJlbChzdXJmYWNlLCBwLCBzLCBjb2xvciwgZm9udHNpemUsIGZhbHNlLCBcInN0YXJ0LWFuY2hvclwiKTtcclxuXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHQuX3JlY3Q7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENoaXJhbChjOiBzdHJpbmcpIHtcclxuICAgIGlmIChjID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAvXlJ8U3woYWJzKXwoXFwmWzAtOV0rKXwoYW5kWzAtOV0rKXwob3JbMC05XSspJC8udGVzdChjKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc1N0ZXJlbyhzOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBzICE9IG51bGwgJiYgL14oKGFicyl8KG9yWzAtOV0rKXwoYW5kWzAtOV0rKSkkLy50ZXN0KHMpO1xyXG4gIH1cclxufVxyXG5cclxuSlNEcmF3Mi5BdG9tID0gQXRvbTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtTY2lsTW9kdWxlVHlwZX0gZnJvbSAnLi90eXBlcy9zY2lsJztcclxuaW1wb3J0IHR5cGUge0Rvam9UeXBlLCBEb2pveFR5cGV9IGZyb20gJy4vdHlwZXMvZG9qbyc7XHJcbmltcG9ydCB0eXBlIHtPcmdUeXBlfSBmcm9tICcuL3R5cGVzL29yZyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7UG9pbnR9IGZyb20gJy4vUG9pbnQnO1xyXG5pbXBvcnQgdHlwZSB7UmVjdH0gZnJvbSAnLi9SZWN0JztcclxuaW1wb3J0IHR5cGUge0F0b219IGZyb20gJy4vQXRvbSc7XHJcbmltcG9ydCB0eXBlIHtNb2x9IGZyb20gJy4vTW9sJztcclxuaW1wb3J0IHR5cGUge0JvbmRUeXBlLCBJQmlvLCBJUkdyb3VwLCBKU0RyYXcyTW9kdWxlVHlwZSwgUnhuQ2VudGVyVHlwZX0gZnJvbSAnLi90eXBlcy9qc2RyYXcyJztcclxuXHJcbmRlY2xhcmUgY29uc3QgZG9qbzogRG9qb1R5cGU7XHJcbmRlY2xhcmUgY29uc3QgZG9qb3g6IERvam94VHlwZTtcclxuXHJcbmRlY2xhcmUgY29uc3Qgc2NpbDogU2NpbE1vZHVsZVR5cGU7XHJcbmRlY2xhcmUgY29uc3QgSlNEcmF3MjogSlNEcmF3Mk1vZHVsZVR5cGU8YW55PjtcclxuZGVjbGFyZSBjb25zdCBvcmc6IE9yZ1R5cGU8YW55PjtcclxuXHJcbmV4cG9ydCB0eXBlIFBvc1JUeXBlID0geyBwb3M6IHN0cmluZywgcjogc3RyaW5nIH07XHJcbmV4cG9ydCB0eXBlIEJvbmRBbm5vdGF0aW9uVHlwZSA9IHsgYmExOiBzdHJpbmcsIGJhMjogc3RyaW5nIH07XHJcblxyXG4vKipcclxuICogQm9uZCBjbGFzc1xyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuSlNEcmF3Mi5Cb25kXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQm9uZDxUQmlvPiB7XHJcbiAgLyoqXHJcbiAgIEBwcm9wZXJ0eSB7QXRvbX0gYTEgVGhlIEZpcnN0IEF0b21cclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtBdG9tfSBhMiBUaGUgU2Vjb25kIEF0b21cclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtCT05EVFlQRVN9IHR5cGUgQm9uZCBUeXBlXHJcbiAgICovXHJcbiAgLyoqXHJcbiAgIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2xvciBEaXNwbGF5IENvbG9yXHJcbiAgICovXHJcbiAgLyoqXHJcbiAgIEBwcm9wZXJ0eSB7Ym9vbH0gc2VsZWN0ZWQgU2VsZWN0aW5nIEZsYWdcclxuICAgKi9cclxuICBwcml2YXRlIFQ6IHN0cmluZztcclxuICBwdWJsaWMgaWQ6IG51bWJlcjtcclxuICBwdWJsaWMgYTE6IEF0b208VEJpbz47XHJcbiAgcHVibGljIGEyOiBBdG9tPFRCaW8+O1xyXG4gIHB1YmxpYyBhcG8xOiBudW1iZXI7XHJcbiAgcHVibGljIGFwbzI6IG51bWJlcjtcclxuICBwdWJsaWMgY29sb3I6IHN0cmluZztcclxuICBwdWJsaWMgcmluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgb3JkZXI6IG51bWJlcjtcclxuICBwdWJsaWMgcmNlbnRlcjogUnhuQ2VudGVyVHlwZTtcclxuICBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIHRhZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBmOiBudW1iZXI7XHJcbiAgcHVibGljIHIxOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xyXG4gIHB1YmxpYyByMjogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcclxuICBwdWJsaWMgcmF0aW8xOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xyXG4gIHB1YmxpYyByYXRpbzI6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XHJcbiAgcHVibGljIHR5cGU6IEJvbmRUeXBlO1xyXG5cclxuICBwdWJsaWMgX3BhcmVudDogTW9sPFRCaW8+O1xyXG4gIHByaXZhdGUgejogbnVtYmVyO1xyXG4gIHB1YmxpYyBib25kaWQ6IG51bWJlcjtcclxuICBwdWJsaWMgZ3JvdXA6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIEJvbmRcclxuICAgKiBAcGFyYW0ge0F0b219IGExIC0gdGhlIGZpcnN0IGF0b21cclxuICAgKiBAcGFyYW0ge0F0b219IGEyIC0gdGhlIHNlY29uZCBhdG9tXHJcbiAgICogQHBhcmFtIHtCT05EVFlQRVN9IHR5cGUgLSBib25kIHR5cGVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihhMTogQXRvbTxUQmlvPiwgYTI6IEF0b208VEJpbz4sIHR5cGU/OiBCb25kVHlwZSkge1xyXG4gICAgdGhpcy5UID0gXCJCT05EXCI7XHJcbiAgICB0aGlzLmExID0gYTE7XHJcbiAgICB0aGlzLmEyID0gYTI7XHJcbiAgICB0aGlzLmFwbzEgPSBudWxsO1xyXG4gICAgdGhpcy5hcG8yID0gbnVsbDtcclxuICAgIHRoaXMuY29sb3IgPSBudWxsO1xyXG4gICAgdGhpcy5yaW5nID0gbnVsbDtcclxuICAgIHRoaXMub3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5yY2VudGVyID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudGFnID0gbnVsbDtcclxuICAgIHRoaXMuZiA9IG51bGw7XHJcbiAgICB0aGlzLnIxID0gbnVsbDtcclxuICAgIHRoaXMucjIgPSBudWxsO1xyXG4gICAgdGhpcy5yYXRpbzEgPSBudWxsO1xyXG4gICAgdGhpcy5yYXRpbzIgPSBudWxsO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZSA9PSBudWxsID8gSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFIDogdHlwZTtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgdmFyIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKHRoaXMuYTEsIHRoaXMuYTIsIHRoaXMudHlwZSk7XHJcbiAgICBiLmlkID0gdGhpcy5pZDtcclxuICAgIGIuY29sb3IgPSB0aGlzLmNvbG9yO1xyXG4gICAgYi5vcmRlciA9IHRoaXMub3JkZXI7XHJcbiAgICBiLmFwbzEgPSB0aGlzLmFwbzE7XHJcbiAgICBiLmFwbzIgPSB0aGlzLmFwbzI7XHJcbiAgICBiLnJpbmcgPSB0aGlzLnJpbmc7XHJcbiAgICBiLnJjZW50ZXIgPSB0aGlzLnJjZW50ZXI7XHJcbiAgICBiLl9wYXJlbnQgPSB0aGlzLl9wYXJlbnQ7XHJcbiAgICBiLnIxID0gdGhpcy5yMTtcclxuICAgIGIucjIgPSB0aGlzLnIyO1xyXG4gICAgYi5yYXRpbzEgPSB0aGlzLnJhdGlvMTtcclxuICAgIGIucmF0aW8yID0gdGhpcy5yYXRpbzI7XHJcbiAgICBiLnogPSB0aGlzLno7XHJcbiAgICBiLnRhZyA9IHRoaXMudGFnO1xyXG4gICAgYi5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICByZXR1cm4gYjtcclxuICB9XHJcblxyXG4gIHJlcGxhY2VBdG9tKG9sZDogQXRvbTxUQmlvPiwgbmE6IEF0b208VEJpbz4pOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmExID09IG9sZClcclxuICAgICAgdGhpcy5hMSA9IG5hO1xyXG4gICAgZWxzZSBpZiAodGhpcy5hMiA9PSBvbGQpXHJcbiAgICAgIHRoaXMuYTIgPSBuYTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0JpbygpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSB8fCB0aGlzLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuTlVDTEVPVElERTtcclxuICB9XHJcblxyXG4gIGJvbmRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hMS5wLmRpc3RUbyh0aGlzLmEyLnApO1xyXG4gIH1cclxuXHJcbiAgY2VudGVyKCkge1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlBvaW50KCh0aGlzLmExLnAueCArIHRoaXMuYTIucC54KSAvIDIsICh0aGlzLmExLnAueSArIHRoaXMuYTIucC55KSAvIDIpO1xyXG4gIH1cclxuXHJcbiAgYW5nbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52ZWN0b3IoKS5hbmdsZSgpO1xyXG4gIH1cclxuXHJcbiAgdmVjdG9yKCkge1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMuYTIucC54IC0gdGhpcy5hMS5wLngsIHRoaXMuYTIucC55IC0gdGhpcy5hMS5wLnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBvdGhlciBBdG9tIG9mIHRoZSBCb25kXHJcbiAgICogQGZ1bmN0aW9uIG90aGVyQXRvbVxyXG4gICAqIEBwYXJhbSB7QXRvbX0gYSAtIG9uZSBhdG9tIG9uIHRoZSBib25kXHJcbiAgICogQHJldHVybnMgdGhlIG90aGVyIEF0b21cclxuICAgKi9cclxuICBvdGhlckF0b20oYSkge1xyXG4gICAgaWYgKHRoaXMuYTEgPT0gYSlcclxuICAgICAgcmV0dXJuIHRoaXMuYTI7XHJcbiAgICBlbHNlIGlmICh0aGlzLmEyID09IGEpXHJcbiAgICAgIHJldHVybiB0aGlzLmExO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTd2l0Y2ggdGhlIGF0b21zJyBvcmRlclxyXG4gICAqIEBmdW5jdGlvbiByZXZlcnNlXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHJldmVyc2UoKSB7XHJcbiAgICB2YXIgYSA9IHRoaXMuYTE7XHJcbiAgICB0aGlzLmExID0gdGhpcy5hMjtcclxuICAgIHRoaXMuYTIgPSBhO1xyXG5cclxuICAgIHZhciBhcG8gPSB0aGlzLmFwbzE7XHJcbiAgICB0aGlzLmFwbzEgPSB0aGlzLmFwbzI7XHJcbiAgICB0aGlzLmFwbzIgPSBhcG87XHJcbiAgfVxyXG5cclxuICB2YWxlbmNlKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5XRURHRTpcclxuICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuSEFTSDpcclxuICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuV0lHR0xZOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5OVUNMRU9USURFOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5ESVNVTEZJREU6XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5CT0xEOlxyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5CT0xESEFTSDpcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEOlxyXG4gICAgICByZXR1cm4gMS41O1xyXG4gICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEU6XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkVJVEhFUjpcclxuICAgICAgcmV0dXJuIDI7XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlRSSVBMRTpcclxuICAgICAgcmV0dXJuIDM7XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlVOS05PV046XHJcbiAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZOlxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2NlbnRlckRvdWJsZUJvbmQobSwgYikge1xyXG4gICAgdmFyIGF0b21zMSA9IG0uZ2V0TmVpZ2hib3JBdG9tcyhiLmExLCBiLmEyKTtcclxuICAgIHZhciBhdG9tczIgPSBtLmdldE5laWdoYm9yQXRvbXMoYi5hMiwgYi5hMSk7XHJcbiAgICByZXR1cm4gYXRvbXMxLmxlbmd0aCA9PSAwICYmIGF0b21zMi5sZW5ndGggPT0gMiB8fCBhdG9tczIubGVuZ3RoID09IDAgJiYgYXRvbXMxLmxlbmd0aCA9PSAyO1xyXG4gIH1cclxuXHJcbiAgX3NoaXJmdERpcmVjdGlvbihtLCBiKSB7XHJcbiAgICB2YXIgYTEgPSBudWxsO1xyXG4gICAgdmFyIGEyID0gbnVsbDtcclxuICAgIHZhciBhdG9tczEgPSBtLmdldE5laWdoYm9yQXRvbXMoYi5hMSwgYi5hMiwgdHJ1ZSk7XHJcbiAgICBpZiAoYXRvbXMxLmxlbmd0aCA9PSAxKVxyXG4gICAgICBhMSA9IGF0b21zMVswXTtcclxuXHJcbiAgICBpZiAoYTEgPT0gbnVsbCkge1xyXG4gICAgICB2YXIgYXRvbXMyID0gbS5nZXROZWlnaGJvckF0b21zKGIuYTIsIGIuYTEsIHRydWUpO1xyXG4gICAgICBpZiAoYXRvbXMyLmxlbmd0aCA9PSAxKVxyXG4gICAgICAgIGEyID0gYXRvbXMyWzBdO1xyXG5cclxuICAgICAgaWYgKGEyID09IG51bGwpIHtcclxuICAgICAgICBpZiAoYXRvbXMxLmxlbmd0aCA+PSAyICYmIGF0b21zMi5sZW5ndGggPj0gMikge1xyXG4gICAgICAgICAgaWYgKG0uX2hhc0RvdWJsZUJvbmRzKGF0b21zMVswXSkpXHJcbiAgICAgICAgICAgIGExID0gYXRvbXMxWzBdO1xyXG4gICAgICAgICAgZWxzZSBpZiAobS5faGFzRG91YmxlQm9uZHMoYXRvbXMxWzFdKSlcclxuICAgICAgICAgICAgYTEgPSBhdG9tczFbMV07XHJcblxyXG4gICAgICAgICAgaWYgKG0uX2hhc0RvdWJsZUJvbmRzKGF0b21zMlswXSkpXHJcbiAgICAgICAgICAgIGEyID0gYXRvbXMyWzBdO1xyXG4gICAgICAgICAgZWxzZSBpZiAobS5faGFzRG91YmxlQm9uZHMoYXRvbXMyWzFdKSlcclxuICAgICAgICAgICAgYTIgPSBhdG9tczJbMV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGExICE9IG51bGwpIHtcclxuICAgICAgdmFyIGFuZyA9IGIucDEuYW5nbGVBc09yaWdpbihiLnAyLCBhMS5wKTtcclxuICAgICAgcmV0dXJuIGFuZyA8PSAxODA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGEyICE9IG51bGwpIHtcclxuICAgICAgdmFyIGFuZyA9IGIucDIuYW5nbGVBc09yaWdpbihhMi5wLCBiLnAxKTtcclxuICAgICAgcmV0dXJuIGFuZyA8PSAxODA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sKCkge1xyXG4gICAgdmFyIHMgPSBcIjxiIGk9J1wiICsgdGhpcy5pZCArIFwiJyBhMT0nXCIgKyB0aGlzLmExLmlkICsgXCInIGEyPSdcIiArIHRoaXMuYTIuaWQgKyBcIicgdD0nXCIgKyB0aGlzLnR5cGUgKyBcIidcIjtcclxuICAgIGlmICh0aGlzLnJpbmcgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiByaW5nPSdcIiArICh0aGlzLnJpbmcgPyAxIDogMCkgKyBcIidcIjtcclxuICAgIGlmICh0aGlzLnJjZW50ZXIgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiByY2VudGVyPSdcIiArIHRoaXMucmNlbnRlciArIFwiJ1wiO1xyXG4gICAgaWYgKHRoaXMuY29sb3IgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiBjbHI9J1wiICsgdGhpcy5jb2xvciArIFwiJ1wiO1xyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5yMSBhcyBzdHJpbmcpKVxyXG4gICAgICBzICs9IFwiIHIxPSdcIiArIHRoaXMucjEgKyBcIidcIjtcclxuICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHRoaXMucjIgYXMgc3RyaW5nKSlcclxuICAgICAgcyArPSBcIiByMj0nXCIgKyB0aGlzLnIyICsgXCInXCI7XHJcbiAgICBpZiAodGhpcy5hcG8xID4gMCAmJiB0aGlzLmExLnN1cGVyYXRvbSAhPSBudWxsKVxyXG4gICAgICBzICs9IFwiIGFwbzE9J1wiICsgdGhpcy5hcG8xICsgXCInXCI7XHJcbiAgICBpZiAodGhpcy5hcG8yID4gMCAmJiB0aGlzLmEyLnN1cGVyYXRvbSAhPSBudWxsKVxyXG4gICAgICBzICs9IFwiIGFwbzI9J1wiICsgdGhpcy5hcG8yICsgXCInXCI7XHJcbiAgICBpZiAodGhpcy50YWcgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiB0YWc9J1wiICsgc2NpbC5VdGlscy5lc2NYbWxWYWx1ZSh0aGlzLnRhZykgKyBcIidcIjtcclxuICAgIHMgKz0gXCIvPlwiO1xyXG4gICAgcmV0dXJuIHM7XHJcbiAgfVxyXG5cclxuICByZWFkSHRtbChlKSB7XHJcbiAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlKFwiY2xyXCIpO1xyXG4gICAgaWYgKHIgIT0gbnVsbClcclxuICAgICAgdGhpcy5jb2xvciA9IHI7XHJcblxyXG4gICAgdmFyIHRhZyA9IGUuZ2V0QXR0cmlidXRlKFwidGFnXCIpO1xyXG4gICAgaWYgKHRhZyAhPSBudWxsICYmIHRhZyAhPSBcIlwiKVxyXG4gICAgICB0aGlzLnRhZyA9IHRhZztcclxuICB9XHJcblxyXG4gIHRvZ2dsZShwLCB0b3IpIHtcclxuICAgIHJldHVybiBwLm9uTGluZSh0aGlzLmExLnAsIHRoaXMuYTIucCwgdG9yIC8gNSk7XHJcbiAgfVxyXG5cclxuICBkcmF3Q3VyKHN1cmZhY2UsIHIsIGNvbG9yKSB7XHJcbiAgICB2YXIgcCA9IHRoaXMuY2VudGVyKCk7XHJcbiAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IHAueCwgY3k6IHAueSwgcjogcn0pLnNldEZpbGwoY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgX2RyYXdCb25kKHN1cmZhY2U6IGFueSwgYjogYW55LCBjb2xvcjogc3RyaW5nLCBsaW5ld2lkdGg6IG51bWJlciwgc2hyaW5rPzogbnVtYmVyLCBzaGlmdD86IG51bWJlciwgZG90bGluZT86IG51bWJlciwgZ2FwPzogYW55LCBjYXA/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChzaHJpbmsgPT0gbnVsbCB8fCBzaHJpbmsgPT0gMCkge1xyXG4gICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBiLnAxLCBiLnAyLCBjb2xvciwgbGluZXdpZHRoLCBkb3RsaW5lLCBjYXApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGQgPSBzaGlmdCA9PSAwID8gbmV3IEpTRHJhdzIuUG9pbnQoMCwgMCkgOiBiLnZlY3RvcigpLnNjYWxlKDEuMCAvIE1hdGguYWJzKHNoaWZ0KSk7XHJcbiAgICAgIHZhciB2ID0gYi52ZWN0b3IoKS5yb3RhdGUoc2hyaW5rID4gMCA/IDkwIDogLTkwKS5zZXRMZW5ndGgoZ2FwID09IG51bGwgPyBsaW5ld2lkdGggKiAyIDogZ2FwKTtcclxuICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgYi5wMS5jbG9uZSgpLm9mZnNldChkLnggKyB2LngsIGQueSArIHYueSksIGIucDIuY2xvbmUoKS5vZmZzZXQoLWQueCArIHYueCwgLWQueSArIHYueSksIGNvbG9yLCBsaW5ld2lkdGgsIGRvdGxpbmUsIGNhcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSQ29sb3IoYzogc3RyaW5nLCByOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5jb2xvcikpXHJcbiAgICAgIHJldHVybiBjO1xyXG4gICAgc3dpdGNoIChyKSB7XHJcbiAgICBjYXNlIDE6XHJcbiAgICAgIHJldHVybiBcIiM2NDFFMTZcIjtcclxuICAgIGNhc2UgMjpcclxuICAgICAgcmV0dXJuIFwiIzAwMDBmZlwiO1xyXG4gICAgY2FzZSAzOlxyXG4gICAgICByZXR1cm4gXCIjYWFhYWFhXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJibGFja1wiO1xyXG4gIH1cclxuXHJcbiAgc3BsaXRQb3NSKHMpOiBQb3NSVHlwZSB7XHJcbiAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSkge1xyXG4gICAgICB2YXIgczIgPSBzID09IFwiP1wiID8gXCI/Oj9cIiA6IHMgKyBcIlwiO1xyXG4gICAgICB2YXIgcCA9IHMyLmluZGV4T2YoJzonKTtcclxuICAgICAgaWYgKHAgPj0gMCkge1xyXG4gICAgICAgIHZhciBwb3MgPSBzMi5zdWJzdHIoMCwgcCk7XHJcbiAgICAgICAgdmFyIHIgPSBzMi5zdWJzdHIocCArIDEpO1xyXG4gICAgICAgIHJldHVybiB7cG9zOiAocG9zID09IFwiXCIgPyBcIj9cIiA6IHBvcyksIHI6IChyID09IFwiXCIgPyBcIj9cIiA6IHIpfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7cG9zOiBcIj9cIiwgcjogXCI/XCJ9O1xyXG4gIH1cclxuXHJcbiAgX2ZtdEJvbmRBbm4oKTogQm9uZEFubm90YXRpb25UeXBlIHtcclxuICAgIHZhciBzMSA9IFwiXCI7XHJcbiAgICB2YXIgczIgPSBcIlwiO1xyXG5cclxuICAgIHZhciByMSA9IHRoaXMuc3BsaXRQb3NSKHRoaXMucjEpO1xyXG4gICAgdmFyIHIyID0gdGhpcy5zcGxpdFBvc1IodGhpcy5yMik7XHJcbiAgICBpZiAocjEucG9zICE9IFwiP1wiIHx8IHIyLnBvcyAhPSBcIj9cIikge1xyXG4gICAgICBzMSArPSAoczEgPT0gXCJcIiA/IFwiXCIgOiBcIjsgXCIpICsgXCJQb3M6IFwiICsgcjEucG9zO1xyXG4gICAgICBzMiArPSAoczIgPT0gXCJcIiA/IFwiXCIgOiBcIjsgXCIpICsgXCJQb3M6IFwiICsgcjIucG9zO1xyXG4gICAgfVxyXG4gICAgaWYgKHIxLnIgIT0gXCI/XCIgfHwgcjIuciAhPSBcIj9cIikge1xyXG4gICAgICBzMSArPSAoczEgPT0gXCJcIiA/IFwiXCIgOiBcIjsgXCIpICsgXCJSIzogXCIgKyByMS5yO1xyXG4gICAgICBzMiArPSAoczIgPT0gXCJcIiA/IFwiXCIgOiBcIjsgXCIpICsgXCJSIzogXCIgKyByMi5yO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkZWZhdWx0cmF0aW8gPSBvcmcuaGVsbS53ZWJlZGl0b3IuZGVmYXVsdGJvbmRyYXRpbyA9PSBudWxsID8gXCJcIiA6IG9yZy5oZWxtLndlYmVkaXRvci5kZWZhdWx0Ym9uZHJhdGlvO1xyXG4gICAgdmFyIHJhdGlvMSA9IHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eSh0aGlzLnJhdGlvMSBhcyBzdHJpbmcpID8gZGVmYXVsdHJhdGlvIDogdGhpcy5yYXRpbzE7XHJcbiAgICB2YXIgcmF0aW8yID0gc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHRoaXMucmF0aW8yIGFzIHN0cmluZykgPyBkZWZhdWx0cmF0aW8gOiB0aGlzLnJhdGlvMjtcclxuICAgIGlmIChyYXRpbzEgIT0gZGVmYXVsdHJhdGlvIHx8IHJhdGlvMiAhPSBkZWZhdWx0cmF0aW8gLyogaHR0cHM6Ly9naXRodWIuY29tL1Bpc3RvaWFIRUxNL0hFTE1XZWJFZGl0b3IvaXNzdWVzLzE0OCAqLykge1xyXG4gICAgICBzMSArPSAoczEgPT0gXCJcIiA/IFwiXCIgOiBcIjsgXCIpICsgXCJSYXRpbzogXCIgKyByYXRpbzE7XHJcbiAgICAgIHMyICs9IChzMiA9PSBcIlwiID8gXCJcIiA6IFwiOyBcIikgKyBcIlJhdGlvOiBcIiArIHJhdGlvMjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge2JhMTogczEsIGJhMjogczJ9O1xyXG4gIH1cclxuXHJcbiAgZHJhd0JvbmRBbm5vdGF0aW9uKHN1cmZhY2UsIGZvbnRzaXplLCBiKSB7XHJcbiAgICB2YXIgcyA9IHRoaXMuX2ZtdEJvbmRBbm4oKTtcclxuICAgIHZhciBiYTEgPSBzLmJhMTtcclxuICAgIHZhciBiYTIgPSBzLmJhMjtcclxuICAgIGlmIChiYTEgPT0gXCJcIiAmJiBiYTIgPT0gXCJcIilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBkeCA9IChiLnAxLnggLSBiLnAyLngpIC8gOTA7XHJcbiAgICB2YXIgZHkgPSAoYi5wMS55IC0gYi5wMi55KSAvIDkwO1xyXG4gICAgdmFyIGMxID0gbmV3IEpTRHJhdzIuUG9pbnQoKGIucDEueCArIGIucDIueCkgLyAyLCAoYi5wMS55ICsgYi5wMi55KSAvIDIpO1xyXG4gICAgdmFyIGMyID0gYzEuY2xvbmUoKTtcclxuXHJcbiAgICBpZiAoTWF0aC5hYnMoYi5hMS5wLnggLSBiLmEyLnAueCkgPCBmb250c2l6ZSkge1xyXG4gICAgICAvL3ZlcnRpY2FsXHJcbiAgICAgIGMxLm9mZnNldChmb250c2l6ZSAqIGR4ICsgZm9udHNpemUgKiAwLjIsIGZvbnRzaXplICogZHkgLSBmb250c2l6ZSAqIDAuNSk7XHJcbiAgICAgIGMyLm9mZnNldCgtZm9udHNpemUgKiBkeCArIGZvbnRzaXplICogMC4yLCAtZm9udHNpemUgKiBkeSAtIGZvbnRzaXplICogMC41KTtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYmExKSlcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChzdXJmYWNlLCBjMSwgYmExLCBcImdyZWVuXCIsIGZvbnRzaXplKTtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYmEyKSlcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChzdXJmYWNlLCBjMiwgYmEyLCBcImdyZWVuXCIsIGZvbnRzaXplKTtcclxuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoYi5hMS5wLnkgLSBiLmEyLnAueSkgPCBmb250c2l6ZSkge1xyXG4gICAgICAvL2hvcml6b250YWxcclxuICAgICAgYzEub2Zmc2V0KGZvbnRzaXplICogZHgsIGZvbnRzaXplICogZHkgLSBmb250c2l6ZSAqIDAuOSk7XHJcbiAgICAgIGMyLm9mZnNldCgtZm9udHNpemUgKiBkeCwgLWZvbnRzaXplICogZHkgKyBmb250c2l6ZSAqIDAuNik7XHJcbiAgICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KGJhMSkpXHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xhYmVsKHN1cmZhY2UsIGMxLCBiYTEsIFwiZ3JlZW5cIiwgZm9udHNpemUsIG51bGwsIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYmEyKSlcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgYzIsIGJhMiwgXCJncmVlblwiLCBmb250c2l6ZSwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYzEub2Zmc2V0KGZvbnRzaXplICogZHgsIGZvbnRzaXplICogZHkpO1xyXG4gICAgICBjMi5vZmZzZXQoLWZvbnRzaXplICogZHgsIC1mb250c2l6ZSAqIGR5KTtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYmExKSlcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGFiZWwoc3VyZmFjZSwgYzEsIGJhMSwgXCJncmVlblwiLCBmb250c2l6ZSwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShiYTIpKVxyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMYWJlbChzdXJmYWNlLCBjMiwgYmEyLCBcImdyZWVuXCIsIGZvbnRzaXplLCBudWxsLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmF3KHN1cmZhY2UsIGxpbmV3aWR0aCwgbSwgZm9udHNpemUsIHNpbXBsZWRyYXcpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVkpIHtcclxuICAgICAgaWYgKCh0aGlzLmExLmVsZW0gPT0gXCJAXCIgfHwgdGhpcy5hMi5lbGVtID09IFwiQFwiKSAmJiAhdGhpcy5hMS5wLmVxdWFsc1RvKHRoaXMuYTIucCkpXHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgdGhpcy5hMS5wLCB0aGlzLmEyLnAsIFwiI2VlZVwiLCBsaW5ld2lkdGggLyAyKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmExLnAuZXF1YWxzVG8odGhpcy5hMi5wKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhciBiID0gbmV3IEpTRHJhdzIuQm9uZEIodGhpcyk7XHJcbiAgICBpZiAoIXNpbXBsZWRyYXcpIHtcclxuICAgICAgaWYgKGIuYTEuX2hhc2xhYmVsKVxyXG4gICAgICAgIGIucDEuc2hyaW5rKGIucDIsIGZvbnRzaXplICogMC42KTtcclxuICAgICAgaWYgKGIuYTIuX2hhc2xhYmVsKVxyXG4gICAgICAgIGIucDIuc2hyaW5rKGIucDEsIGZvbnRzaXplICogMC42KTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgY29sb3IgPSBzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkodGhpcy5jb2xvcikgPyBcImJsYWNrXCIgOiB0aGlzLmNvbG9yO1xyXG4gICAgaWYgKHNpbXBsZWRyYXcgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFKSB7XHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGIucDEsIGIucDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5ESVNVTEZJREUpIHtcclxuICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgYi5wMSwgYi5wMiwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLk5VQ0xFT1RJREUpIHtcclxuICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgYi5wMSwgYi5wMiwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMucjEgYXMgbnVtYmVyKSA+IDAgfHwgKHRoaXMucjIgYXMgbnVtYmVyKSA+IDApIHtcclxuICAgICAgdmFyIGMgPSBuZXcgSlNEcmF3Mi5Qb2ludCgoYi5wMS54ICsgYi5wMi54KSAvIDIsIChiLnAxLnkgKyBiLnAyLnkpIC8gMik7XHJcbiAgICAgIHZhciBjb2xvcjEgPSB0aGlzLmdldFJDb2xvcih0aGlzLmNvbG9yLCB0aGlzLnIxIGFzIG51bWJlcik7XHJcbiAgICAgIHZhciBjb2xvcjIgPSB0aGlzLmdldFJDb2xvcih0aGlzLmNvbG9yLCB0aGlzLnIyIGFzIG51bWJlcik7XHJcbiAgICAgIGlmICh0aGlzLnopIHtcclxuICAgICAgICB2YXIgcDEgPSBuZXcgSlNEcmF3Mi5Qb2ludChiLnAxLngsIGMueSk7XHJcbiAgICAgICAgdmFyIHAyID0gbmV3IEpTRHJhdzIuUG9pbnQoYi5wMi54LCBjLnkpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGIucDEsIHAxLCBjb2xvcjEsIGxpbmV3aWR0aCwgbnVsbCwgXCJidXR0XCIpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAxLCBjLCBjb2xvcjEsIGxpbmV3aWR0aCwgbnVsbCwgXCJidXR0XCIpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGMsIHAyLCBjb2xvcjIsIGxpbmV3aWR0aCwgbnVsbCwgXCJidXR0XCIpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAyLCBiLnAyLCBjb2xvcjIsIGxpbmV3aWR0aCwgbnVsbCwgXCJidXR0XCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIGIucDEsIGMsIGNvbG9yMSwgbGluZXdpZHRoLCBudWxsLCBcImJ1dHRcIik7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgYywgYi5wMiwgY29sb3IyLCBsaW5ld2lkdGgsIG51bGwsIFwiYnV0dFwiKTtcclxuICAgICAgICBpZiAodGhpcy5yMSA9PSAxICYmIHRoaXMucjIgPT0gMiB8fCB0aGlzLnIxID09IDIgJiYgdGhpcy5yMiA9PSAxKSB7XHJcbiAgICAgICAgICBKU0RyYXcyLkJvbmQuc2hvd0hlbG1Bbm5vdGF0aW9uPFRCaW8+KHRoaXMuYTEsIHRoaXMuYTIsIHRoaXMucjEpO1xyXG4gICAgICAgICAgSlNEcmF3Mi5Cb25kLnNob3dIZWxtQW5ub3RhdGlvbjxUQmlvPih0aGlzLmEyLCB0aGlzLmExLCB0aGlzLnIyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2ltcGxlZHJhdylcclxuICAgICAgdGhpcy5kcmF3Qm9uZEFubm90YXRpb24oc3VyZmFjZSwgZm9udHNpemUsIGIpO1xyXG5cclxuICAgIHZhciBkaXIgPSA4O1xyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEUgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEIHx8IGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5FSVRIRVIgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRU9SQVJPTUFUSUMpXHJcbiAgICAgIGRpciA9IHRoaXMuX3NoaXJmdERpcmVjdGlvbihtLCBiKSA/IDggOiAtODtcclxuXHJcbiAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRSAmJiB0aGlzLl9jZW50ZXJEb3VibGVCb25kKG0sIGIpKSB7XHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgsIC1kaXIsIDAsIG51bGwsIGxpbmV3aWR0aCk7XHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgsIGRpciwgMCwgbnVsbCwgbGluZXdpZHRoKTtcclxuICAgIH0gZWxzZSBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuQk9MRCB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFIHx8IGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5UUklQTEUgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEKSB7XHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuQk9MRCA/IDMgKiBsaW5ld2lkdGggOiBsaW5ld2lkdGgsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5CT0xEID8gXCJidXR0XCIgOiBcInJvdW5kXCIpO1xyXG5cclxuICAgICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEUgfHwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlRSSVBMRSlcclxuICAgICAgICB0aGlzLl9kcmF3Qm9uZChzdXJmYWNlLCBiLCBjb2xvciwgbGluZXdpZHRoLCBkaXIsIGRpcik7XHJcblxyXG4gICAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlRSSVBMRSlcclxuICAgICAgICB0aGlzLl9kcmF3Qm9uZChzdXJmYWNlLCBiLCBjb2xvciwgbGluZXdpZHRoLCAtZGlyLCAtZGlyKTtcclxuXHJcbiAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuREVMT0NBTElaRUQpXHJcbiAgICAgICAgdGhpcy5fZHJhd0JvbmQoc3VyZmFjZSwgYiwgY29sb3IsIGxpbmV3aWR0aCwgZGlyLCBkaXIsIDQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UpIHtcclxuICAgICAgdmFyIHYgPSBiLnZlY3RvcigpLnJvdGF0ZSg5MCkuc2V0TGVuZ3RoKGxpbmV3aWR0aCAqIDIpO1xyXG4gICAgICBzdXJmYWNlLmNyZWF0ZVBvbHlsaW5lKFtcclxuICAgICAgICBiLnAxLngsIGIucDEueSxcclxuICAgICAgICBiLnAyLnggKyB2LngsIGIucDIueSArIHYueSxcclxuICAgICAgICBiLnAyLnggLSB2LngsIGIucDIueSAtIHYueVxyXG4gICAgICBdKVxyXG4gICAgICAgIC5zZXRTdHJva2Uoe3dpZHRoOiAyfSlcclxuICAgICAgICAuc2V0RmlsbChjb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIIHx8IGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5CT0xESEFTSCkge1xyXG4gICAgICB2YXIgbGVuID0gYi5ib25kTGVuZ3RoKCk7XHJcbiAgICAgIHZhciBuID0gTWF0aC5mbG9vcihsZW4gLyAobGluZXdpZHRoICogMikpO1xyXG4gICAgICB2YXIgZCA9IGIudmVjdG9yKCkuc2NhbGUoMS4wIC8gbik7XHJcbiAgICAgIHZhciB2ID0gYi52ZWN0b3IoKS5yb3RhdGUoOTApO1xyXG4gICAgICBmb3IgKHZhciBrID0gMTsgayA8PSBuOyArK2spIHtcclxuICAgICAgICB2YXIgcCA9IGIucDEuY2xvbmUoKS5vZmZzZXQoZC54ICogaywgZC55ICogayk7XHJcbiAgICAgICAgdmFyIHZsZW4gPSBsaW5ld2lkdGggKiAyO1xyXG4gICAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSClcclxuICAgICAgICAgIHZsZW4gKj0gayAvIG47XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdmxlbiAqPSAwLjY7XHJcbiAgICAgICAgdmFyIHZpID0gdi5jbG9uZSgpLnNldExlbmd0aCh2bGVuKTtcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBwLmNsb25lKCkub2Zmc2V0KHZpLngsIHZpLnkpLCBwLmNsb25lKCkub2Zmc2V0KC12aS54LCAtdmkueSksIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5XSUdHTFkpXHJcbiAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdDdXJ2ZXMoc3VyZmFjZSwgYi5wMSwgYi5wMiwgY29sb3IsIGxpbmV3aWR0aCk7XHJcblxyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5FSVRIRVIpIHtcclxuICAgICAgdmFyIGQgPSBiLnZlY3RvcigpLnNjYWxlKDEuMCAvIE1hdGguYWJzKGRpcikpO1xyXG4gICAgICB2YXIgdiA9IGIudmVjdG9yKCkucm90YXRlKGRpciA+IDAgPyA5MCA6IC05MCkuc2V0TGVuZ3RoKGxpbmV3aWR0aCAqIDIpO1xyXG4gICAgICB2YXIgcDEgPSBiLnAxLmNsb25lKCkub2Zmc2V0KGQueCArIHYueCwgZC55ICsgdi55KTtcclxuICAgICAgdmFyIHAyID0gYi5wMi5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KTtcclxuICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgYi5wMSwgcDIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBiLnAyLCBwMSwgY29sb3IsIGxpbmV3aWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEVPUkFST01BVElDKSB7XHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gICAgICB0aGlzLl9kcmF3Qm9uZChzdXJmYWNlLCBiLCBjb2xvciwgbGluZXdpZHRoLCBkaXIsIGRpciwgMik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEVPUkRPVUJMRSB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFT1JBUk9NQVRJQykge1xyXG4gICAgICB0aGlzLl9kcmF3Qm9uZChzdXJmYWNlLCBiLCBjb2xvciwgbGluZXdpZHRoLCAwLCAwLCAyKTtcclxuXHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgsIGRpciAvIDIsIGRpciAvIDIsIG51bGwsIGxpbmV3aWR0aCAqIDEuNSk7XHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgsIC1kaXIgLyAyLCAtZGlyIC8gMiwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SQVJPTUFUSUMgPyAyIDogbnVsbCwgbGluZXdpZHRoICogMS41KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlVOS05PV04pXHJcbiAgICAgIHRoaXMuX2RyYXdCb25kKHN1cmZhY2UsIGIsIGNvbG9yLCBsaW5ld2lkdGgsIG51bGwsIG51bGwsIGxpbmV3aWR0aCAqIDEuMik7XHJcblxyXG4gICAgaWYgKGIuYi5yaW5nICE9IG51bGwpIHtcclxuICAgICAgdmFyIHAgPSB0aGlzLmNlbnRlcigpO1xyXG4gICAgICBzdXJmYWNlLmNyZWF0ZUNpcmNsZSh7Y3g6IHAueCwgY3k6IHAueSwgcjogbGluZXdpZHRoICogM30pXHJcbiAgICAgICAgLnNldFN0cm9rZSh7Y29sb3I6IGNvbG9yLCB3aWR0aDogbGluZXdpZHRoIC8gMiwgc3R5bGU6IGIuYi5yaW5nID8gXCJTb2xpZFwiIDogXCJEYXNoXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYi5iLnJjZW50ZXIgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcCA9IHRoaXMuY2VudGVyKCk7XHJcbiAgICAgIHZhciBkID0gYi52ZWN0b3IoKS5yb3RhdGUoOTApLnNldExlbmd0aChsaW5ld2lkdGggKiAzKTtcclxuICAgICAgdmFyIHYgPSBiLnZlY3RvcigpLnNldExlbmd0aChsaW5ld2lkdGggKiAoYi5iLnJjZW50ZXIgPT0gSlNEcmF3Mi5SWE5DRU5URVIuQlJFQUtBTkRDSEFOR0UgPyAxLjUgOiAxKSk7XHJcbiAgICAgIGlmIChiLmIucmNlbnRlciA9PSBKU0RyYXcyLlJYTkNFTlRFUi5DRU5URVIpIHtcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBwLmNsb25lKCkub2Zmc2V0KGQueCArIHYueCwgZC55ICsgdi55KSwgcC5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KSwgY29sb3IsIGxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAuY2xvbmUoKS5vZmZzZXQoZC54IC0gdi54LCBkLnkgLSB2LnkpLCBwLmNsb25lKCkub2Zmc2V0KC1kLnggLSB2LngsIC1kLnkgLSB2LnkpLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgZCA9IGIudmVjdG9yKCkucm90YXRlKDkwKS5zZXRMZW5ndGgobGluZXdpZHRoICogMS42KTtcclxuICAgICAgICB2ID0gYi52ZWN0b3IoKS5zZXRMZW5ndGgobGluZXdpZHRoICogMik7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgcC5jbG9uZSgpLm9mZnNldChkLnggKyB2LngsIGQueSArIHYueSksIHAuY2xvbmUoKS5vZmZzZXQoZC54IC0gdi54LCBkLnkgLSB2LnkpLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgcC5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KSwgcC5jbG9uZSgpLm9mZnNldCgtZC54IC0gdi54LCAtZC55IC0gdi55KSwgY29sb3IsIGxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGIuYi5yY2VudGVyID09IEpTRHJhdzIuUlhOQ0VOVEVSLk5PVENFTlRFUikge1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAuY2xvbmUoKS5vZmZzZXQoZC54ICsgdi54LCBkLnkgKyB2LnkpLCBwLmNsb25lKCkub2Zmc2V0KC1kLnggLSB2LngsIC1kLnkgLSB2LnkpLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgcC5jbG9uZSgpLm9mZnNldChkLnggLSB2LngsIGQueSAtIHYueSksIHAuY2xvbmUoKS5vZmZzZXQoLWQueCArIHYueCwgLWQueSArIHYueSksIGNvbG9yLCBsaW5ld2lkdGggLyAyKTtcclxuICAgICAgfSBlbHNlIGlmIChiLmIucmNlbnRlciA9PSBKU0RyYXcyLlJYTkNFTlRFUi5CUkVBSykge1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAuY2xvbmUoKS5vZmZzZXQoZC54ICsgdi54LCBkLnkgKyB2LnkpLCBwLmNsb25lKCkub2Zmc2V0KC1kLnggKyB2LngsIC1kLnkgKyB2LnkpLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgcC5jbG9uZSgpLm9mZnNldChkLnggLSB2LngsIGQueSAtIHYueSksIHAuY2xvbmUoKS5vZmZzZXQoLWQueCAtIHYueCwgLWQueSAtIHYueSksIGNvbG9yLCBsaW5ld2lkdGggLyAyKTtcclxuICAgICAgfSBlbHNlIGlmIChiLmIucmNlbnRlciA9PSBKU0RyYXcyLlJYTkNFTlRFUi5DSEFOR0UpIHtcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBwLmNsb25lKCkub2Zmc2V0KGQueCwgZC55KSwgcC5jbG9uZSgpLm9mZnNldCgtZC54LCAtZC55KSwgY29sb3IsIGxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGIuYi5yY2VudGVyID09IEpTRHJhdzIuUlhOQ0VOVEVSLkJSRUFLQU5EQ0hBTkdFKSB7XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoc3VyZmFjZSwgcC5jbG9uZSgpLm9mZnNldChkLngsIGQueSksIHAuY2xvbmUoKS5vZmZzZXQoLWQueCwgLWQueSksIGNvbG9yLCBsaW5ld2lkdGggLyAyKTtcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShzdXJmYWNlLCBwLmNsb25lKCkub2Zmc2V0KGQueCArIHYueCwgZC55ICsgdi55KSwgcC5jbG9uZSgpLm9mZnNldCgtZC54ICsgdi54LCAtZC55ICsgdi55KSwgY29sb3IsIGxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKHN1cmZhY2UsIHAuY2xvbmUoKS5vZmZzZXQoZC54IC0gdi54LCBkLnkgLSB2LnkpLCBwLmNsb25lKCkub2Zmc2V0KC1kLnggLSB2LngsIC1kLnkgLSB2LnkpLCBjb2xvciwgbGluZXdpZHRoIC8gMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYXdTZWxlY3QobGFzc28pIHtcclxuICAgIGxhc3NvLmRyYXcodGhpcywgdGhpcy5jZW50ZXIoKSk7XHJcbiAgfVxyXG5cclxuICAvLyAtLSBzdGF0aWMgLS1cclxuXHJcbiAgc3RhdGljIGNhc3Q8VEJpbz4oYSk6IEJvbmQ8VEJpbz4gfCBudWxsIHtcclxuICAgIHJldHVybiBhICE9IG51bGwgJiYgYS5UID09ICdCT05EJyA/IGEgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNob3dIZWxtQW5ub3RhdGlvbjxUQmlvPihhMTogQXRvbTxUQmlvPiwgYTI6IEF0b208VEJpbz4sIHIxOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChhMS5iaW8gPT0gbnVsbCB8fCBzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYTEuYmlvLmFubm90YXRpb24pKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHIxID09IDIgJiYgYTEucC54ID4gYTIucC54IHx8IHIxID09IDEgJiYgYTEucC54IDwgYTIucC54KVxyXG4gICAgICBhMS5iaW8uYW5ub3RhdGlvbnNob3dyaWdodCA9IHRydWU7XHJcbiAgICBlbHNlXHJcbiAgICAgIGExLmJpby5hbm5vdGF0aW9uc2hvd3JpZ2h0ID0gbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBCb25kQjxUQmlvPiB7XHJcbiAgcHVibGljIGI6IEJvbmQ8VEJpbz47XHJcbiAgcHVibGljIGExOiBBdG9tPFRCaW8+O1xyXG4gIHB1YmxpYyBhMjogQXRvbTxUQmlvPjtcclxuICBwdWJsaWMgdHlwZTogQm9uZFR5cGU7XHJcbiAgcHVibGljIHAxOiBQb2ludDtcclxuICBwdWJsaWMgcDI6IFBvaW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihiOiBCb25kPFRCaW8+KSB7XHJcbiAgICB0aGlzLmIgPSBiO1xyXG4gICAgdGhpcy5hMSA9IGIuYTE7XHJcbiAgICB0aGlzLmEyID0gYi5hMjtcclxuICAgIHRoaXMudHlwZSA9IGIudHlwZTtcclxuICAgIHRoaXMucDEgPSBiLmExLnAuY2xvbmUoKTtcclxuICAgIHRoaXMucDIgPSBiLmEyLnAuY2xvbmUoKTtcclxuICB9XHJcblxyXG4gIHZlY3RvcigpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5wMi54IC0gdGhpcy5wMS54LCB0aGlzLnAyLnkgLSB0aGlzLnAxLnkpO1xyXG4gIH1cclxuXHJcbiAgYm9uZExlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucDEuZGlzdFRvKHRoaXMucDIpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkpTRHJhdzIuQm9uZCA9IEJvbmQ7XHJcbkpTRHJhdzIuQm9uZEIgPSBCb25kQjtcclxuIiwiLy9cclxuLy8gSlNEcmF3XHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7SlNEcmF3Mk1vZHVsZVR5cGUsIFNjaWxNb2R1bGVUeXBlfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbmltcG9ydCB0eXBlIHtJR3JhcGhpY3MsIFNoYXBlVHlwZX0gZnJvbSAnLi90eXBlcy9qc2RyYXcyJztcclxuaW1wb3J0IHR5cGUge0F0b219IGZyb20gJy4vQXRvbSc7XHJcbmltcG9ydCB0eXBlIHtSZWN0fSBmcm9tICcuL1JlY3QnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzY2lsbGlnZW5jZTogU2NpbE1vZHVsZVR5cGU7XHJcbmRlY2xhcmUgY29uc3Qgc2NpbDogU2NpbE1vZHVsZVR5cGU7XHJcbmRlY2xhcmUgY29uc3QgSlNEcmF3MjogSlNEcmF3Mk1vZHVsZVR5cGU8YW55PjtcclxuXHJcbi8qKlxyXG4gKiBCcmFja2V0IGNsYXNzXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5KU0RyYXcyLkJyYWNrZXRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBCcmFja2V0PFRCaW8+IGltcGxlbWVudHMgSUdyYXBoaWNzIHtcclxuICByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgcHVibGljIGF0b21zOiBBdG9tPFRCaW8+W107XHJcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9yZWN0OiBSZWN0O1xyXG4gIHByaXZhdGUgc2hhcGU6IFNoYXBlVHlwZTtcclxuICBwdWJsaWMgc2dyb3VwdGV4dHM6IHN0cmluZztcclxuICBwdWJsaWMgc3Vic2NyaXB0OiBzdHJpbmc7XHJcbiAgY29ubjogYW55O1xyXG4gIGV4cGFuZGVkYXRvbXM6IEF0b208VEJpbz5bXTtcclxuXHJcbiAgLy8gSUdyYXBoaWNzXHJcbiAgcHVibGljIGlkOiBudW1iZXI7XHJcbiAgcHVibGljIGNvbG9yOiBzdHJpbmc7XHJcbiAgLy8gVE9ETzogSUdyYXBoaWNzXHJcbiAgcmVqZWN0OiBhbnk7IC8vIFRPRE9cclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBncmFwaGljc2lkOiBudW1iZXI7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcih0eXBlLCByZWN0LCBzaGFwZT86IFNoYXBlVHlwZSkge1xyXG4gICAgdGhpcy5UID0gXCJCUkFDS0VUXCI7XHJcbiAgICB0aGlzLmF0b21zID0gW107XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5fcmVjdCA9IHJlY3Q7XHJcbiAgICB0aGlzLmNvbG9yID0gbnVsbDtcclxuICAgIHRoaXMuc2hhcGUgPSBzaGFwZTtcclxuICB9XHJcblxyXG4gIGNsb25lKCk6IElHcmFwaGljcyB7XHJcbiAgICBjb25zdCBiID0gbmV3IEpTRHJhdzIuQnJhY2tldCh0aGlzLnR5cGUsIHRoaXMuX3JlY3QuY2xvbmUoKSwgdGhpcy5zaGFwZSk7XHJcbiAgICBiLmNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgIGIuc2dyb3VwdGV4dHMgPSB0aGlzLnNncm91cHRleHRzO1xyXG4gICAgcmV0dXJuIGIgYXMgSUdyYXBoaWNzO1xyXG4gIH1cclxuXHJcbiAgZ2V0WGJvbmRzKG0pIHtcclxuICAgIHZhciBsaXN0ID0gW107XHJcbiAgICB2YXIgYm9uZHMgPSBtLmJvbmRzO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgYiA9IGJvbmRzW2ldO1xyXG4gICAgICB2YXIgZjEgPSBzY2lsLlV0aWxzLmluZGV4T2YodGhpcy5hdG9tcywgYi5hMSkgPj0gMDtcclxuICAgICAgdmFyIGYyID0gc2NpbC5VdGlscy5pbmRleE9mKHRoaXMuYXRvbXMsIGIuYTIpID49IDA7XHJcbiAgICAgIGlmIChmMSAhPSBmMilcclxuICAgICAgICBsaXN0LnB1c2goYik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBhbGxBdG9tc0luKG0pIHtcclxuICAgIGlmICh0aGlzLmF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKG0uYXRvbXMuaW5kZXhPZih0aGlzLmF0b21zW2ldKSA8IDApXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlTnVtKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHZhciB0eXBlID0gdGhpcy50eXBlICsgXCJcIjtcclxuICAgIGlmICh0eXBlLm1hdGNoKC9eW2NdWzAtOV0rJC8pKVxyXG4gICAgICByZXR1cm4gdHlwZS5zdWJzdHIoMSk7XHJcbiAgICAvLyAgICAgICAgZWxzZSBpZiAodHlwZS5tYXRjaCgvXlswLTldKyQvKSlcclxuICAgIC8vICAgICAgICAgICAgcmV0dXJuIHR5cGU7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09IG51bGwpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgdmFyIHR5cGUgPSB0aGlzLnR5cGUgKyBcIlwiO1xyXG4gICAgaWYgKHR5cGUubWF0Y2goL15bY11bMC05XSskLykpXHJcbiAgICAgIHR5cGUgPSBcImNcIjtcclxuICAgIC8vICAgICAgICBlbHNlIGlmICh0eXBlLm1hdGNoKC9eWzAtOV0rJC8pKVxyXG4gICAgLy8gICAgICAgICAgICB0eXBlID0gXCJtdWxcIjtcclxuICAgIHJldHVybiB0eXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3Vic2NyaXB0KG0pIHtcclxuICAgIGNvbnN0IHQgPSBtLmdldFNncm91cFRleHQodGhpcywgXCJCUkFDS0VUX1RZUEVcIik7XHJcbiAgICByZXR1cm4gdCA9PSBudWxsID8gbnVsbCA6IHQudGV4dDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVN1YnNjcmlwdChtLCBzKSB7XHJcbiAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgdCA9IG0uZ2V0U2dyb3VwVGV4dCh0aGlzLCBcIkJSQUNLRVRfVFlQRVwiKTtcclxuICAgIGlmICh0ICE9IG51bGwpXHJcbiAgICAgIHJldHVybiB0O1xyXG5cclxuICAgIHZhciBnYXAgPSBtLm1lZEJvbmRMZW5ndGgoMS41NikgLyAyO1xyXG4gICAgdCA9IG0uc2V0U2dyb3VwKHRoaXMsIFwiQlJBQ0tFVF9UWVBFXCIsIHMsIHRoaXMuX3JlY3QucmlnaHQoKSArIGdhcCAvIDQsIHRoaXMuX3JlY3QuYm90dG9tKCkgLSBnYXApO1xyXG4gICAgcmV0dXJuIHQ7XHJcbiAgfVxyXG5cclxuICBodG1sKHNjYWxlKSB7XHJcbiAgICAvL2lmICh0aGlzLmF0b21zID09IG51bGwgfHwgdGhpcy5hdG9tcy5sZW5ndGggPT0gMClcclxuICAgIC8vICAgIHJldHVybjtcclxuICAgIHZhciBzcyA9IFwiXCI7XHJcblxyXG4gICAgaWYgKHRoaXMuYXRvbXMgIT0gbnVsbCAmJiB0aGlzLmF0b21zLmxlbmd0aCA+IDApIHtcclxuICAgICAgc3MgPSB0aGlzLmF0b21zWzBdLmlkICsgXCJcIjtcclxuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHNzICs9IFwiLFwiICsgdGhpcy5hdG9tc1tpXS5pZDtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcyA9IFwiPGkgaT0nXCIgKyB0aGlzLmlkICsgXCInIHg9J1wiICsgdGhpcy5UICsgXCInIHQ9J1wiICsgc2NpbGxpZ2VuY2UuVXRpbHMuZXNjWG1sVmFsdWUodGhpcy50eXBlKSArIFwiJ1wiO1xyXG4gICAgaWYgKHRoaXMuY29sb3IgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiBjbHI9J1wiICsgdGhpcy5jb2xvciArIFwiJ1wiO1xyXG4gICAgaWYgKHRoaXMuc2hhcGUgIT0gbnVsbClcclxuICAgICAgcyArPSBcIiBzaGFwZT0nXCIgKyB0aGlzLnNoYXBlICsgXCInXCI7XHJcbiAgICBzICs9IFwiIHI9J1wiICsgdGhpcy5fcmVjdC50b1N0cmluZyhzY2FsZSkgKyBcIidcIjtcclxuICAgIHMgKz0gXCIgYXRvbXM9J1wiICsgc3MgKyBcIic+PC9pPlwiO1xyXG4gICAgcmV0dXJuIHM7XHJcbiAgfVxyXG5cclxuICBmbGlwWSh5KSB7XHJcbiAgfVxyXG5cclxuICBmbGlwWCh4KSB7XHJcbiAgfVxyXG5cclxuICBzY2FsZShzLCBvcmlnaW4pIHtcclxuICAgIHRoaXMuX3JlY3Quc2NhbGUocywgb3JpZ2luKTtcclxuICB9XHJcblxyXG4gIG9mZnNldChkeCwgZHkpIHtcclxuICAgIHRoaXMuX3JlY3Qub2Zmc2V0KGR4LCBkeSk7XHJcbiAgfVxyXG5cclxuICByZWN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY3Q7XHJcbiAgfVxyXG5cclxuICB0b2dnbGUocCwgdG9yKSB7XHJcbiAgICB2YXIgciA9IHRoaXMuX3JlY3Q7XHJcbiAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB2YXIgeDEgPSBwLnggLSByLmxlZnQ7XHJcbiAgICB2YXIgeDIgPSByLnJpZ2h0KCkgLSBwLng7XHJcbiAgICByZXR1cm4gcC55ID49IHIudG9wIC0gdG9yICYmIHAueSA8PSByLmJvdHRvbSgpICsgdG9yICYmICh4MSA+PSAtdG9yIC8gMiAmJiB4MSA8IHRvciB8fCB4MiA+PSAtdG9yIC8gMiAmJiB4MiA8IHRvcik7XHJcbiAgfVxyXG5cclxuICBkcmF3Q3VyKHN1cmZhY2UsIHIsIGNvbG9yLCBtKSB7XHJcbiAgICB2YXIgcjIgPSB0aGlzLl9yZWN0O1xyXG4gICAgaWYgKHIyID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHZhciB5ID0gcjIuY2VudGVyKCkueTtcclxuICAgIHN1cmZhY2UuY3JlYXRlQ2lyY2xlKHtjeDogcjIubGVmdCwgY3k6IHksIHI6IHJ9KS5zZXRGaWxsKGNvbG9yKTtcclxuICAgIHN1cmZhY2UuY3JlYXRlQ2lyY2xlKHtjeDogcjIucmlnaHQoKSwgY3k6IHksIHI6IHJ9KS5zZXRGaWxsKGNvbG9yKTtcclxuXHJcbiAgICBpZiAobSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSlcclxuICAgICAgICB0aGlzLmF0b21zW2ldLmRyYXdDdXIoc3VyZmFjZSwgciAqIDAuNzUsIGNvbG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYXcoc3VyZmFjZSwgbGluZXdpZHRoLCBtLCBmb250c2l6ZSkge1xyXG4gICAgdmFyIHIgPSB0aGlzLl9yZWN0O1xyXG5cclxuICAgIHZhciBjb2xvciA9IHRoaXMuY29sb3IgPT0gbnVsbCA/IFwiZ3JheVwiIDogdGhpcy5jb2xvcjtcclxuICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdCcmFja2V0KHN1cmZhY2UsIHIsIGNvbG9yLCBsaW5ld2lkdGgpO1xyXG4gIH1cclxuXHJcbiAgZHJhd1NlbGVjdChsYXNzbykge1xyXG4gICAgbGFzc28uZHJhdyh0aGlzLCB0aGlzLl9yZWN0LmZvdXJQb2ludHMoKSk7XHJcbiAgfVxyXG5cclxuICBjb3JuZXJUZXN0KHAsIHRvcikge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY3QuY29ybmVyVGVzdChwLCB0b3IpO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplKGNvcm5lciwgZCwgdGV4dHMpIHtcclxuICAgIHRoaXMuX3JlY3QubW92ZUNvcm5lcihjb3JuZXIsIGQpO1xyXG4gICAgaWYgKHRleHRzID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHN3aXRjaCAoY29ybmVyKSB7XHJcbiAgICBjYXNlIFwidG9wbGVmdFwiOlxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLnRvcGxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMudG9wbGVmdFtpXS5fcmVjdC5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLnRvcHJpZ2h0Lmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHRleHRzLnRvcHJpZ2h0W2ldLl9yZWN0Lm9mZnNldCgwLCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLmJvdHRvbWxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMuYm90dG9tbGVmdFtpXS5fcmVjdC5vZmZzZXQoZC54LCAwKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwidG9wcmlnaHRcIjpcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0cy50b3ByaWdodC5sZW5ndGg7ICsraSlcclxuICAgICAgICB0ZXh0cy50b3ByaWdodFtpXS5fcmVjdC5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLnRvcGxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMudG9wbGVmdFtpXS5fcmVjdC5vZmZzZXQoMCwgZC55KTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0cy5ib3R0b21yaWdodC5sZW5ndGg7ICsraSlcclxuICAgICAgICB0ZXh0cy5ib3R0b21yaWdodFtpXS5fcmVjdC5vZmZzZXQoZC54LCAwKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYm90dG9tbGVmdFwiOlxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLmJvdHRvbWxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMuYm90dG9tbGVmdFtpXS5fcmVjdC5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLmJvdHRvbXJpZ2h0Lmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHRleHRzLmJvdHRvbXJpZ2h0W2ldLl9yZWN0Lm9mZnNldCgwLCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLnRvcGxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMudG9wbGVmdFtpXS5fcmVjdC5vZmZzZXQoZC54LCAwKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYm90dG9tcmlnaHRcIjpcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0cy5ib3R0b21yaWdodC5sZW5ndGg7ICsraSlcclxuICAgICAgICB0ZXh0cy5ib3R0b21yaWdodFtpXS5fcmVjdC5vZmZzZXQoZC54LCBkLnkpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHRzLmJvdHRvbWxlZnQubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGV4dHMuYm90dG9tbGVmdFtpXS5fcmVjdC5vZmZzZXQoMCwgZC55KTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0cy50b3ByaWdodC5sZW5ndGg7ICsraSlcclxuICAgICAgICB0ZXh0cy50b3ByaWdodFtpXS5fcmVjdC5vZmZzZXQoZC54LCAwKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVPYmplY3Qob2JqKSB7XHJcbiAgICB2YXIgYSA9IEpTRHJhdzIuQXRvbS5jYXN0KG9iaik7XHJcbiAgICBpZiAoYSA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYXRvbXNbaV0gPT0gYSkge1xyXG4gICAgICAgIHRoaXMuYXRvbXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0cyhtKSB7XHJcbiAgICB2YXIgcmV0ID0ge3RvcGxlZnQ6IFtdLCB0b3ByaWdodDogW10sIGJvdHRvbWxlZnQ6IFtdLCBib3R0b21yaWdodDogW119O1xyXG4gICAgdmFyIGMxID0gdGhpcy5fcmVjdC5jZW50ZXIoKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbS5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KG0uZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAodCA9PSBudWxsIHx8IHQuYW5jaG9ycy5sZW5ndGggIT0gMSB8fCB0LmFuY2hvcnNbMF0gIT0gdGhpcylcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgdmFyIGMgPSB0Ll9yZWN0LmNlbnRlcigpO1xyXG4gICAgICBpZiAoYy54IDwgYzEueCkge1xyXG4gICAgICAgIGlmIChjLnkgPCBjMS55KVxyXG4gICAgICAgICAgcmV0LnRvcGxlZnQucHVzaCh0KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXQuYm90dG9tbGVmdC5wdXNoKHQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjLnkgPCBjMS55KVxyXG4gICAgICAgICAgcmV0LnRvcHJpZ2h0LnB1c2godCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0LmJvdHRvbXJpZ2h0LnB1c2godCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhc3Q8VEJpbz4oZzogSUdyYXBoaWNzKTogQnJhY2tldDxUQmlvPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XHJcbiAgfVxyXG59XHJcblxyXG5KU0RyYXcyLkJyYWNrZXQgPSBCcmFja2V0O1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge0Rvam9UeXBlLCBEb2pveFR5cGV9IGZyb20gJy4vdHlwZXMvZG9qbyc7XHJcbmltcG9ydCB0eXBlIHtKU0RyYXcyTW9kdWxlVHlwZSwgU2NpbE1vZHVsZVR5cGV9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgdHlwZSB7T3JnVHlwZX0gZnJvbSAnLi90eXBlcy9vcmcnO1xyXG5cclxuaW1wb3J0IHR5cGUge1xyXG4gIENvbG9yQXJyYXksIElDb250ZXh0TWVudSwgSURpYWxvZywgSUVkaXRvck9wdGlvbnMsIElPcmdQbHVnaW4sIElTdGFjayxcclxuICBKU0RyYXcyRG9jdW1lbnQsIEpTRHJhdzJXaW5kb3csIFNoYXBlVHlwZVxyXG59IGZyb20gJy4vdHlwZXMvanNkcmF3Mic7XHJcbmltcG9ydCB0eXBlIHtJTW9sSGFuZGxlcn0gZnJvbSAnLi90eXBlcy9tb2wtaGFuZGxlcic7XHJcbmltcG9ydCB0eXBlIHtQb2ludH0gZnJvbSAnLi9Qb2ludCc7XHJcbmltcG9ydCB0eXBlIHtBdG9tfSBmcm9tICcuL0F0b20nO1xyXG5pbXBvcnQgdHlwZSB7TW9sfSBmcm9tICcuL01vbCc7XHJcblxyXG5pbXBvcnQge1NoYXBlVHlwZXN9IGZyb20gJy4vdHlwZXMvanNkcmF3Mic7XHJcblxyXG50eXBlIEV2ZW50UG9pbnQ8VEJpbyA9IGFueT4gPSBQb2ludCAmIHsgdG06IG51bWJlciwgY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIsIGF0b206IEF0b208VEJpbz4gfVxyXG50eXBlIEVkaXRvckNsb25lPFRCaW8gPSBhbnk+ID0ge1xyXG4gIG1vbDogTW9sPFRCaW8+LCBib25kbGVuZ3RoOiBudW1iZXIsIHRvcjogbnVtYmVyLCBsaW5ld2lkdGg6IG51bWJlciwgZm9udHNpemU6IG51bWJlciwgYW5nbGVTdG9wOiBudW1iZXJcclxufVxyXG5cclxuZGVjbGFyZSBjb25zdCBkb2pvOiBEb2pvVHlwZTtcclxuZGVjbGFyZSBjb25zdCBkb2pveDogRG9qb3hUeXBlO1xyXG5kZWNsYXJlIGNvbnN0IHNjaWxsaWdlbmNlOiBTY2lsTW9kdWxlVHlwZTtcclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuZGVjbGFyZSBjb25zdCBvcmc6IE9yZ1R5cGU8YW55PjtcclxuZGVjbGFyZSBjb25zdCBKU0RyYXcyOiBKU0RyYXcyTW9kdWxlVHlwZTxhbnk+O1xyXG5kZWNsYXJlIGNvbnN0IEpTRHJhd1NlcnZpY2VzOiBhbnk7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogSlNEcmF3MldpbmRvdyAmIFdpbmRvdztcclxuZGVjbGFyZSBjb25zdCBkb2N1bWVudDogSlNEcmF3MkRvY3VtZW50ICYgRG9jdW1lbnQ7XHJcblxyXG4vKipcclxuICogRWRpdG9yIGNsYXNzIC0gZGVmaW5lIGFuIEVkaXRvciBvYmplY3QuXHJcbiAqPHByZT5cclxuICogPGI+RXhhbXBsZTo8L2I+XHJcbiAqICAgJmx0O2h0bWwmZ3Q7XHJcbiAqICAgJmx0O2hlYWQmZ3Q7XHJcbiAqICAgJmx0O3NjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2Rvam8vMS4xMS4yL2Rvam8vZG9qby5qc1wiJmd0OyZsdDsvc2NyaXB0Jmd0O1xyXG4gKiAgICZsdDtzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz0naHR0cDovL1tQQVRIXS9TY2lsbGlnZW5jZS5KU0RyYXcyLmpzJyZndDsmbHQ7L3NjcmlwdCZndDtcclxuICogICAmbHQ7L2hlYWQmZ3Q7XHJcbiAqICAgJmx0O2JvZHkmZ3Q7XHJcbiAqICAgJmx0O2RpdiBpZD0nZWQnJmd0OyZsdDsvZGl2Jmd0O1xyXG4gKiAgICZsdDtzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyZndDtcclxuICogICAgIGRvam8ucmVhZHkoZnVuY3Rpb24oKSB7XHJcbiAqICAgICAgIC8vIGNyZWF0ZSBhIEpTRHJhdyBFZGl0b3JcclxuICogICAgICAgdmFyIGVkaXRvciA9IG5ldyBKU0RyYXcyLkVkaXRvcihcImVkXCIsIHsgc2tpbjogXCJ3OFwiLCB3aWR0aDogODAwLCBoZWlnaHQ6IDQwMCB9KTtcclxuICpcclxuICogICAgICAgLy8gY3JlYXRlIGEgSlNEcmF3IHZpZXdlclxyXG4gKiAgICAgICAvL3ZhciBlZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoXCJlZFwiLCB7IHNraW46IFwidzhcIiwgd2lkdGg6IDgwMCwgaGVpZ2h0OiA0MDAsIHZpZXdvbmx5OiB0cnVlIH0pO1xyXG4gKlxyXG4gKiAgICAgICAvLyBjcmVhdGUgYSBKU0RyYXcgcG9wdXAgRWRpdG9yXHJcbiAqICAgICAgIC8vdmFyIGVkaXRvciA9IG5ldyBKU0RyYXcyLkVkaXRvcihcImVkXCIsIHsgc2tpbjogXCJ3OFwiLCB3aWR0aDogODAwLCBoZWlnaHQ6IDQwMCwgcG9wdXA6IHRydWUgfSk7XHJcbiAqICAgICB9KTtcclxuICogICAmbHQ7L3NjcmlwdCZndDtcclxuICogICAmbHQ7L2JvZHkmZ3Q7XHJcbiAqICAgJmx0Oy9odG1sJmd0O1xyXG4gKiA8L3ByZT5cclxuICogQGNsYXNzIHNjaWxsaWdlbmNlLkpTRHJhdzIuRWRpdG9yXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRWRpdG9ySW50PFRCaW8gPSBhbnk+IGltcGxlbWVudHMgSU1vbEhhbmRsZXI8VEJpbz4ge1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge01vbH0gYXRvbXMgTW9sIG9iamVjdFxyXG4gICAqL1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge2Jvb2x9IGNoaXJhbCBNb2xlY3VsZSBDaGlyYWwgRmxhZ1xyXG4gICAqL1xyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgc3RydWN0dXJlIGlzIGNoYW5nZWRcclxuICAgKiBAZXZlbnQge2Jvb2x9IG9uZGF0YWNoYW5nZVxyXG4gICAqIEBwYXJhbSB7RWRpdG9yfSBlZGl0b3IgdGhpcyBFZGl0b3JcclxuICAgKiBAcmV0dXJuIG51bGxcclxuICAgKi9cclxuXHJcbiAgICAvLyAtLSBJTW9sSGFuZGxlciAtLVxyXG4gIHB1YmxpYyBib25kbGVuZ3RoOiBudW1iZXI7XHJcbiAgcHVibGljIG06IE1vbDxUQmlvPjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBkaXNhYmxldW5kbzogYm9vbGVhbjtcclxuICBwdWJsaWMgb3B0aW9uczogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpcmFsOiBhbnk7XHJcbiAgcHJpdmF0ZSBwdEVsZW1lbnQ6IGFueTsgLy8gVE9ETzogP1xyXG4gIHByaXZhdGUgY29ubmVjdEhhbmRsZXJzOiBhbnlbXTtcclxuICBwcml2YXRlIG1haW50YWJsZTogYW55O1xyXG4gIHB1YmxpYyBkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaWQ6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IG1vdmluZ3Jlc29sdXRpb246IG51bWJlcjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRpbWVuc2lvbjogUG9pbnQ7XHJcbiAgcHVibGljIHJlYWRvbmx5IGhlbG06IElPcmdQbHVnaW48VEJpbz47XHJcbiAgcHJpdmF0ZSByZWFkb25seSB1bmRvY2FwYWNpdHk6IG51bWJlcjtcclxuICBwcml2YXRlIHRleHRlZGl0b3I6IGFueTtcclxuICBwcml2YXRlIHRvb2xiYXI6IGFueTtcclxuICBwcml2YXRlIHN1cmZhY2U6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlZDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBhbmdsZVN0b3A6IG51bWJlcjtcclxuICBwcml2YXRlIHRvcjogbnVtYmVyO1xyXG4gIHByaXZhdGUgbGluZXdpZHRoOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBmb250c2l6ZTogbnVtYmVyO1xyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIHN0YXR1czogYW55O1xyXG4gIHByaXZhdGUgbW9kaWZpZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB0b3VjaGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIHN0YXJ0OiBhbnk7XHJcbiAgcHJpdmF0ZSBsYXN0bW92ZTogYW55O1xyXG4gIHByaXZhdGUgZW5kOiBhbnk7XHJcbiAgcHVibGljIGN1ck9iamVjdDogYW55O1xyXG4gIHByaXZhdGUgY3VyQnV0dG9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBtb3ZpbmdDbG9uZTogYW55O1xyXG4gIHByaXZhdGUgcmVzaXppbmc6IGFueTtcclxuICBwcml2YXRlIHJvdGF0aW5nOiBhbnk7XHJcbiAgcHJpdmF0ZSBtb3VzZWRvd25Qb2ludDogUG9pbnQ7XHJcbiAgcHJpdmF0ZSBfbGFzdE1vdXNlZG93blRtOiBhbnk7XHJcbiAgcHJpdmF0ZSBsYXNzb2xhc3Q6IGFueTtcclxuICBwcml2YXRlIGNoYWludG9vbDogYW55O1xyXG4gIHByaXZhdGUgaW5rOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgZnJvemVuOiBib29sZWFuO1xyXG4gIHByaXZhdGUgbGFzdGFjdGlvbjogYW55O1xyXG4gIHByaXZhdGUgX3VuZG9zdGFjazogSVN0YWNrPGFueT47XHJcbiAgcHJpdmF0ZSBfcmVkb3N0YWNrOiBJU3RhY2s8YW55PjtcclxuICBwcml2YXRlIGVyYXNlcmNhY2hlOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgY29udGV4dG1lbnU6IElDb250ZXh0TWVudTtcclxuICBwcml2YXRlIHZpZXdvZmZzZXQ6IFBvaW50O1xyXG4gIHByaXZhdGUgX2NsZWFyaW5nOiBib29sZWFuO1xyXG4gIHByaXZhdGUgc2ltcGxlZHJhdzogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBhcnJvd3Rvb2w6IGFueTtcclxuICBwcml2YXRlIGdyb3VwUHJvcERsZyE6IElEaWFsb2c7XHJcbiAgcHJpdmF0ZSBfa2V5cHJlc3NjaGFyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwb3B1cGxvY2tlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF90ZXN0ZGVhY3RpdmF0aW9uOiBGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX21zQ29udGVudFpvb21pbmc6IHN0cmluZztcclxuICBwcml2YXRlIF9vdmVyZmxvdzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvciBhIEpTRHJhdyBFZGl0b3JcclxuICAgKiBAY29uc3RydWN0b3IgRWRpdG9yXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGR2IC0gdGhlIGlkIG9mIHRoZSBkaXYgcGxhY2Vob2xkZXJcclxuICAgKiBAcGFyYW0ge2RpY3Rpb25hcnl9IG9wdGlvbnMgLSB0aGUgb3B0aW9ucyBmb3IgdGhlIGVkaXRvcjo8dWw+XHJcbiAgICogPGxpPmJhY2tncm91bmQgLSBiYWNrZ3JvdW5kIGNvbG9yIDwvbGk+XHJcbiAgICogPGxpPmJpb2xvZ3kgLSBTZXQgdGhpcyBmbGFnIHRvIGZhbHNlIHRvIGhpZGUgc2VxZW5jZSBidXR0b248L2xpPlxyXG4gICAqIDxsaT5idXR0b25zaGFwZSAtIGNpcmNsZSwgb3Igc3F1YXJlPC9saT5cclxuICAgKiA8bGk+ZGF0YSAtIGFjdHVhbCBkYXRhPC9saT5cclxuICAgKiA8bGk+ZGF0YWZvcm1hdCAtIGRhdGEgZm9ybWF0LiBJdCBjYW4gYmUgbW9sZmlsZSwgcnhuZmlsZSwgaHRtbDwvbGk+XHJcbiAgICogPGxpPmhlaWdodDwvbGk+XHJcbiAgICogPGxpPmZvY3VzYm94IC0gaW5kaWNhdGUgaWYgc2hvdyBmb2N1c2luZyBib3ggaWYgZm9jdXNlZC4gZGVmYXVsdDogdHJ1ZSA8L2xpPlxyXG4gICAqIDxsaT5mb2N1c2NvbG9yIC0gdGhlIGJvcmRlciBjb2xvciB3aGVuIGZvY3VzZWQgPC9saT5cclxuICAgKiA8bGk+aW5rdG9vbHMgLSBzZXQgdGhpcyBmbGFnIHRvIGZhbHNlIHRvIGhpZGUgaW5rIHRvb2xzPC9saT5cclxuICAgKiA8bGk+aGlnaGxpZ2h0ZXJyb3JzIC0gc2V0IHRoaXMgZmxhZyB0byBmYWxzZSBub3QgdG8gaGlnaGxpZ2h0IGVycm9ycyBpbiByZWIgYm94PC9saT5cclxuICAgKiA8bGk+b25kYXRhY2hhbmdlIC0gZGF0YWNoYW5nZSBldmVudCBoYW5kbGVyPC9saT5cclxuICAgKiA8bGk+cGx1Z2lucyAtIHBsdWdpbnMsIGFzIGFuIGFycmF5IFt7aWNvbnVybCwgdG9vbHRpcHMsIG9uY2xpY2t9LCAuLi5dPC9saT5cclxuICAgKiA8bGk+cG9wdXAgLSBDcmVhdGUgYSB2aWV3ZXIsIGFuZCBkb3VibGUtY2xpY2sgdG8gc2hvdyBwb3B1cCBlZGl0b3I8L2xpPlxyXG4gICAqIDxsaT5wb3B1cGhlaWdodCAtIFBvcHVwIEVkaXRvciBoZWlnaHQ8L2xpPlxyXG4gICAqIDxsaT5wb3B1cHdpZHRoIC0gUG9wdXAgRWRpdG9yIHdpZHRoPC9saT5cclxuICAgKiA8bGk+cXVlcnkgLSBTZXQgdGhpcyBmbGFnIHRvIGZhbHNlIHRvIGRpc2FibGUgcXVlcnkgYXRvbXMgKEEsIFIsIFgsIFEsICosIGV0Yy4pIGluIHBlcmlvZGljIHRhYmxlPC9saT5cclxuICAgKiA8bGk+cmVtb3ZlSHlkcm9nZW5zIC0gUmVtb3ZlIGh5ZHJvZ2VuIGF0b21zIGJlZm9yZSBzaG93IHRoZSBzdHJ1Y3R1cmU8L2xpPlxyXG4gICAqIDxsaT5yeG4gLSBTZXQgdGhpcyBmbGFnIHRvIGZhbHNlIHRvIGRpc2FibGUgcmVhY3Rpb24gYnV0dG9ucyBvbiB0b29sYmFyPC9saT5cclxuICAgKiA8bGk+c2NhbGUgLSBBIGZhY3RvcmUgdG8gem9vbSB0aGUgd2hvbGUgZWRpdG9yLCBpbmNsdWRpbmcgdG9vbGJhcnMuIFRoaXMgaXMgdXNlZnVsIGZvciBpUGFkIGFwcGxpY2F0aW9uczwvbGk+XHJcbiAgICogPGxpPnNlbmRxdWVyeSAtIFNldCB0aGlzIGZsYWcgdG8gZmFsc2UgdG8gaGlkZSBQdWJDaGVtLCBDaGVtU3BpZGVyIHNlYXJjaCBidXR0b248L2xpPlxyXG4gICAqIDxsaT5za2luIC0gc2V0IHRoaXMgdG8gXCJ3OFwiIHRvIGRpc3BsYXkgdGhlIGVkaXRvciBpbiBKU0RyYXcyIG1vZGU7IGxlYXZlIHRoaXMgcGFyYW1ldGVyIHRvIGVtcHR5IHRvIGRpc3BsYXkgZWRpdG9yIGluIGNsYXNzaWMgbW9kZSAoMi4wKTwvbGk+XHJcbiAgICogPGxpPnNob3djYXJib24gLSBhbGwgb3IgdGVybWluYWw8L2xpPlxyXG4gICAqIDxsaT5zaG93ZmlsZW1lbnUgLSBzZXQgdGhpcyBmbGFnIHRvIGZhbHNlIHRvIGhpZGUgZmlsZSBtZW51czwvbGk+XHJcbiAgICogPGxpPnNob3dpbXBsaWNpdGh5ZHJvZ2VucyAtIFNldCBmbGFnIHRvIGZhbHNlIHRvIGhpZGUgaW1wbGljaXQgaHlkcm9nZW5zPC9saT5cclxuICAgKiA8bGk+c2hvd3Rvb2xiYXIgLSBzZXQgdGhpcyBmbGFnIHRvIGZhbHNlIG5vdCB0byBzaG93IHRvb2xiYXI8L2xpPlxyXG4gICAqIDxsaT52aWV3b25seTwvbGk+XHJcbiAgICogPGxpPndpZHRoPC9saT5cclxuICAgKiA8L3VsPlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGR2OiBIVE1MRGl2RWxlbWVudCB8IHN0cmluZywgb3B0aW9ucz86IFBhcnRpYWw8SUVkaXRvck9wdGlvbnM+KSB7XHJcbiAgICB0aGlzLmRpc2FibGV1bmRvID0gSlNEcmF3Mi5zcGVlZHVwLmRpc2FibGV1bmRvO1xyXG5cclxuICAgIHRoaXMuVCA9IFwiRFJBV1wiO1xyXG4gICAgSlNEcmF3Mi5FZGl0b3IuQ09MT1JDVVJSRU5UID0gWzAsIDI1NSwgMCwgMC41XTtcclxuICAgIEpTRHJhdzIuRWRpdG9yLkNPTE9SU0VMRUNURUQgPSBbMCwgMCwgMjU1LCAwLjVdO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9PSBudWxsID8ge30gOiBvcHRpb25zO1xyXG4gICAgdGhpcy5jaGlyYWwgPSBudWxsO1xyXG5cclxuICAgIGlmIChKU0RyYXcyLkVkaXRvci5faWQgPT0gbnVsbCkge1xyXG4gICAgICBKU0RyYXcyLkVkaXRvci5faWQgPSAwO1xyXG4gICAgICBKU0RyYXcyLkVkaXRvci5fYWxsaXRlbXMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICArK0pTRHJhdzIuRWRpdG9yLl9pZDtcclxuICAgIGlmICgodHlwZW9mIGR2KSA9PSBcInN0cmluZ1wiKVxyXG4gICAgICBkdiA9IGRvam8uYnlJZChkdiBhcyBzdHJpbmcpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKGR2ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnB0RWxlbWVudCA9IG51bGw7XHJcbiAgICB0aGlzLmNvbm5lY3RIYW5kbGVycyA9IFtdO1xyXG4gICAgdGhpcy5tYWludGFibGUgPSBudWxsO1xyXG4gICAgdGhpcy5kaXYgPSBkdiBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmICh0aGlzLmRpdi5pZCA9PSBudWxsIHx8IHRoaXMuZGl2LmlkLmxlbmd0aCA9PSAwKVxyXG4gICAgICB0aGlzLmRpdi5pZCA9IFwiX19KU0RyYXdfXCIgKyBKU0RyYXcyLkVkaXRvci5faWQ7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5kaXYuaWQ7XHJcblxyXG4gICAgSlNEcmF3Mi5FZGl0b3IuX2FsbGl0ZW1zW3RoaXMuaWRdID0gdGhpcztcclxuICAgIGlmIChKU0RyYXcyLmRlZmF1bHRvcHRpb25zID09IG51bGwpXHJcbiAgICAgIEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBvcHVwID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3B1cCA9IHNjaWwuVXRpbHMuaXNBdHRUcnVlKHRoaXMuZGl2LCBcInBvcHVwXCIpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52aWV3b25seSA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMudmlld29ubHkgPSBzY2lsLlV0aWxzLmlzQXR0VHJ1ZSh0aGlzLmRpdiwgXCJ2aWV3b25seVwiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlaHlkcm9nZW5zID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmVoeWRyb2dlbnMgPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnJlbW92ZWh5ZHJvZ2VucyAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5yZW1vdmVoeWRyb2dlbnMgOiBzY2lsLlV0aWxzLmlzQXR0VHJ1ZSh0aGlzLmRpdiwgXCJyZW1vdmVoeWRyb2dlbnNcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnF1ZXJ5ID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5xdWVyeSA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMucXVlcnkgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMucXVlcnkgOiAhc2NpbC5VdGlscy5pc0F0dEZhbHNlKHRoaXMuZGl2LCBcInF1ZXJ5XCIpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yeG4gPT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLnJ4biA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMucnhuICE9IG51bGwgPyBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnJ4biA6ICFzY2lsLlV0aWxzLmlzQXR0RmFsc2UodGhpcy5kaXYsIFwicnhuXCIpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5iaW9sb2d5ID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5iaW9sb2d5ID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5iaW9sb2d5ICE9IG51bGwgPyBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLmJpb2xvZ3kgOiAhc2NpbC5VdGlscy5pc0F0dEZhbHNlKHRoaXMuZGl2LCBcImJpb2xvZ3lcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlbmRxdWVyeSA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2VuZHF1ZXJ5ID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5zZW5kcXVlcnkgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2VuZHF1ZXJ5IDogIXNjaWwuVXRpbHMuaXNBdHRGYWxzZSh0aGlzLmRpdiwgXCJzZW5kcXVlcnlcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNob3d0b29sYmFyID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zaG93dG9vbGJhciA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2hvd3Rvb2xiYXIgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2hvd3Rvb2xiYXIgOiAhc2NpbC5VdGlscy5pc0F0dEZhbHNlKHRoaXMuZGl2LCBcInNob3d0b29sYmFyXCIpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93Y3VzdG9tdGVtcGxhdGVzID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zaG93Y3VzdG9tdGVtcGxhdGVzID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5zaG93Y3VzdG9tdGVtcGxhdGVzICE9IG51bGwgPyBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnNob3djdXN0b210ZW1wbGF0ZXMgOiAhc2NpbC5VdGlscy5pc0F0dEZhbHNlKHRoaXMuZGl2LCBcInNob3djdXN0b210ZW1wbGF0ZXNcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZWNoZW1kcmF3ID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy51c2VjaGVtZHJhdyA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMudXNlY2hlbWRyYXcgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMudXNlY2hlbWRyYXcgOiBzY2lsLlV0aWxzLmlzQXR0VHJ1ZSh0aGlzLmRpdiwgXCJ1c2VjaGVtZHJhd1wiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd2NhcmJvbiA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2hvd2NhcmJvbiA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2hvd2NhcmJvbjtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGFzdGVjaGVtZHJhdyA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMucGFzdGVjaGVtZHJhdyA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMucGFzdGVjaGVtZHJhdztcclxuICAgIGlmICh0aGlzLm9wdGlvbnMud2lkdGggPiAwKVxyXG4gICAgICB0aGlzLmRpdi5zdHlsZS53aWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aCArIFwicHhcIjtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVpZ2h0ID4gMClcclxuICAgICAgdGhpcy5kaXYuc3R5bGUuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLmhlaWdodCArIFwicHhcIjtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25kYXRhY2hhbmdlID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5vbmRhdGFjaGFuZ2UgPSBkb2pvLmF0dHIodGhpcy5kaXYsIFwib25kYXRhY2hhbmdlXCIpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gZG9qby5hdHRyKHRoaXMuZGl2LCBcImRhdGFcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmRhdGFmb3JtYXQgPT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLmRhdGFmb3JtYXQgPSBkb2pvLmF0dHIodGhpcy5kaXYsIFwiZGF0YWZvcm1hdFwiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd2ltcGxpY2l0aHlkcm9nZW5zID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnMgPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnMgOiAhc2NpbC5VdGlscy5pc0F0dEZhbHNlKHRoaXMuZGl2LCBcInNob3dpbXBsaWNpdGh5ZHJvZ2Vuc1wiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaW5rdG9vbHMgPT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLmlua3Rvb2xzID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5pbmt0b29scyAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5pbmt0b29scyA6ICFzY2lsLlV0aWxzLmlzQXR0RmFsc2UodGhpcy5kaXYsIFwiaW5rdG9vbHNcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmhpZ2hsaWdodGVycm9ycyA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ZXJyb3JzID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5oaWdobGlnaHRlcnJvcnMgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuaGlnaGxpZ2h0ZXJyb3JzIDogIXNjaWwuVXRpbHMuaXNBdHRGYWxzZSh0aGlzLmRpdiwgXCJoaWdobGlnaHRlcnJvcnNcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNraW4gPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMuc2tpbiA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2tpbiAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5za2luIDogZG9qby5hdHRyKHRoaXMuZGl2LCBcInNraW5cIik7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpbiA9PSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5za2luID0gXCJ3OFwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tb25vY29sb3IgPT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm1vbm9jb2xvciA9IHNjaWwuVXRpbHMuaXNBdHRUcnVlKHRoaXMuZGl2LCBcIm1vbm9jb2xvclwiKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZnVsbHNjcmVlbiA9PSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuZnVsbHNjcmVlbiA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuZnVsbHNjcmVlbiAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5mdWxsc2NyZWVuIDogc2NpbC5VdGlscy5pc0F0dFRydWUodGhpcy5kaXYsIFwiZnVsbHNjcmVlblwiKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmJ1dHRvbnNoYXBlID09IG51bGwpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5idXR0b25zaGFwZSA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuYnV0dG9uc2hhcGUgIT0gbnVsbCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuYnV0dG9uc2hhcGUgOiBkb2pvLmF0dHIodGhpcy5kaXYsIFwiYnV0dG9uc2hhcGVcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmJ1dHRvbnNoYXBlID09IG51bGwgfHwgdGhpcy5vcHRpb25zLmJ1dHRvbnNoYXBlID09IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5idXR0b25zaGFwZSA9IHNjaWwuVXRpbHMuaXNJRSA/IFwiY2lyY2xlXCIgOiBcInNxdWFyZVwiO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5idXR0b25zaGFwZSA9PSBcInNxdWFyZVwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuYnV0dG9uc2hhcGUgPSBcImJ0bnJlY1wiO1xyXG4gICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLmJ1dHRvbnNoYXBlID09IFwiY2lyY2xlXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5idXR0b25zaGFwZSA9IFwiYnRuY2lyXCI7XHJcblxyXG4gICAgaWYgKCEodGhpcy5vcHRpb25zLnNjYWxlID4gMCkpIHtcclxuICAgICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2NhbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc2NhbGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgcyA9IGRvam8uYXR0cih0aGlzLmRpdiwgXCJzY2FsZVwiKTtcclxuICAgICAgICBpZiAoIWlzTmFOKHMpKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnNjYWxlID0gcGFyc2VGbG9hdChzKTtcclxuICAgICAgICAvL2lmICghKHRoaXMub3B0aW9ucy5zY2FsZSA+IDApKVxyXG4gICAgICAgIC8vICAgIHRoaXMub3B0aW9ucy5zY2FsZSA9IHRoaXMuaXNTa2luVzgoKSA/IDEuMyA6IDEuMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmJ0bnNpemUgPSB0aGlzLmlzU2tpblc4KCkgPyA0MiA6ICgyMCAqIHRoaXMub3B0aW9ucy5zY2FsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhID09IG51bGwpIHtcclxuICAgICAgY29uc3QgbW9sZmlsZSA9IGRvam8uYXR0cih0aGlzLmRpdiwgXCJtb2xmaWxlXCIpO1xyXG4gICAgICBpZiAobW9sZmlsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSBtb2xmaWxlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5kYXRhZm9ybWF0ID0gXCJtb2xmaWxlXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHJ4bmZpbGUgPSBkb2pvLmF0dHIodGhpcy5kaXYsIFwicnhuZmlsZVwiKTtcclxuICAgICAgaWYgKHJ4bmZpbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gcnhuZmlsZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YWZvcm1hdCA9IFwicnhuZmlsZVwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5za2luID09IFwidzhcIilcclxuICAgICAgSlNEcmF3Mi5Ta2luLmpzZHJhdyA9IHtia2NvbG9yOiBcIiNmZmZcIn07XHJcblxyXG4gICAgdGhpcy5tb3ZpbmdyZXNvbHV0aW9uID0gdGhpcy5vcHRpb25zLm1vdmluZ3Jlc29sdXRpb24gPiAwID8gdGhpcy5vcHRpb25zLm1vdmluZ3Jlc29sdXRpb24gOiA2O1xyXG5cclxuICAgIHRoaXMuYm9uZGxlbmd0aCA9IEpTRHJhdzIuRWRpdG9yLkJPTkRMRU5HVEg7XHJcbiAgICB0aGlzLnRvciA9IEpTRHJhdzIuRWRpdG9yLlRPUjtcclxuICAgIHRoaXMubGluZXdpZHRoID0gSlNEcmF3Mi5FZGl0b3IuTElORVdJRFRIO1xyXG4gICAgdGhpcy5mb250c2l6ZSA9IEpTRHJhdzIuRWRpdG9yLkZPTlRTSVpFO1xyXG4gICAgdGhpcy5hbmdsZVN0b3AgPSBKU0RyYXcyLkVkaXRvci5BTkdMRVNUT1A7XHJcbiAgICBjb25zdCByZWN0ID0gc2NpbC5VdGlscy5zdHlsZVJlY3QodGhpcy5kaXYpO1xyXG4gICAgdGhpcy5kaW1lbnNpb24gPSBuZXcgSlNEcmF3Mi5Qb2ludChyZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XHJcbiAgICBpZiAoISh0aGlzLmRpbWVuc2lvbi54ID4gMCkpXHJcbiAgICAgIHRoaXMuZGltZW5zaW9uLnggPSB0aGlzLmRpdi5vZmZzZXRXaWR0aCA9PSAwID8gNjUwIDogdGhpcy5kaXYub2Zmc2V0V2lkdGg7XHJcbiAgICBpZiAoISh0aGlzLmRpbWVuc2lvbi55ID4gMCkpXHJcbiAgICAgIHRoaXMuZGltZW5zaW9uLnkgPSB0aGlzLmRpdi5vZmZzZXRIZWlnaHQgPT0gMCA/IDMyMCA6IHRoaXMuZGl2Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICB0aGlzLmRpdi5zdHlsZS50ZXh0QWxpZ24gPSBcImxlZnRcIjtcclxuICAgIHRoaXMuZGl2LnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUud2lkdGggPSB0aGlzLmRpbWVuc2lvbi54ICsgXCJweFwiO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuaGVpZ2h0ID0gdGhpcy5kaW1lbnNpb24ueSArIFwicHhcIjtcclxuXHJcbiAgICBpZiAoc2NpbC5oZWxtICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmhlbG0gIT0gZmFsc2UpXHJcbiAgICAgIHRoaXMuaGVsbSA9IG5ldyBzY2lsLmhlbG0uUGx1Z2luKHRoaXMpO1xyXG5cclxuICAgIHRoaXMubSA9IG5ldyBKU0RyYXcyLk1vbCh0aGlzLm9wdGlvbnMuc2hvd2ltcGxpY2l0aHlkcm9nZW5zKTtcclxuICAgIHRoaXMuc3RhdHVzID0gbnVsbDtcclxuICAgIHRoaXMubW9kaWZpZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudG9vbGJhciA9IG51bGw7XHJcblxyXG4gICAgdGhpcy50b3VjaGluZyA9IG51bGw7XHJcbiAgICB0aGlzLnN0YXJ0ID0gbnVsbDtcclxuICAgIHRoaXMubGFzdG1vdmUgPSBudWxsO1xyXG4gICAgdGhpcy5lbmQgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJPYmplY3QgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJCdXR0b24gPSBudWxsO1xyXG4gICAgdGhpcy5tb3ZpbmdDbG9uZSA9IG51bGw7XHJcbiAgICB0aGlzLnJlc2l6aW5nID0gbnVsbDtcclxuICAgIHRoaXMudGV4dGVkaXRvciA9IHtpbnB1dDogbnVsbCwgdGV4dDogbnVsbCwgYXRvbTogbnVsbH07XHJcbiAgICB0aGlzLnJvdGF0aW5nID0gbnVsbCxcclxuICAgICAgdGhpcy5tb3VzZWRvd25Qb2ludCA9IG51bGw7XHJcbiAgICB0aGlzLl9sYXN0TW91c2Vkb3duVG0gPSBudWxsO1xyXG4gICAgdGhpcy5sYXNzb2xhc3QgPSBudWxsO1xyXG4gICAgdGhpcy5jaGFpbnRvb2wgPSBudWxsO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5rID0gbnVsbDtcclxuICAgIEpTRHJhdzIuU2VjdXJpdHkuX2NoZWNrKCk7XHJcblxyXG4gICAgdGhpcy51bmRvY2FwYWNpdHkgPSAxMDtcclxuICAgIHRoaXMuX3VuZG9zdGFjayA9IG5ldyBKU0RyYXcyLlN0YWNrKHRoaXMudW5kb2NhcGFjaXR5KTtcclxuICAgIHRoaXMuX3JlZG9zdGFjayA9IG5ldyBKU0RyYXcyLlN0YWNrKHRoaXMudW5kb2NhcGFjaXR5KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2V0TW9sKHRoaXMub3B0aW9ucy5kYXRhKSkge1xyXG4gICAgICBzd2l0Y2ggKCh0aGlzLm9wdGlvbnMuZGF0YWZvcm1hdCArIFwiXCIpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBcIm1vbFwiOlxyXG4gICAgICBjYXNlIFwibW9sZmlsZVwiOlxyXG4gICAgICAgIHRoaXMuc2V0TW9sZmlsZSh0aGlzLm9wdGlvbnMuZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtb2xiYXNlNjRcIjpcclxuICAgICAgICB0aGlzLnNldE1vbGJhc2U2NCh0aGlzLm9wdGlvbnMuZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyeG5cIjpcclxuICAgICAgY2FzZSBcInJ4bmZpbGVcIjpcclxuICAgICAgICB0aGlzLnNldFJ4bmZpbGUodGhpcy5vcHRpb25zLmRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwicnhuYmFzZTY0XCI6XHJcbiAgICAgICAgdGhpcy5zZXRSeG5iYXNlNjQodGhpcy5vcHRpb25zLmRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiamR4XCI6XHJcbiAgICAgICAgdGhpcy5zZXRKZHgodGhpcy5vcHRpb25zLmRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiaHRtbFwiOlxyXG4gICAgICBjYXNlIFwieG1sXCI6XHJcbiAgICAgIGNhc2UgXCJqc2RyYXdcIjpcclxuICAgICAgICB0aGlzLnNldFhtbCh0aGlzLm9wdGlvbnMuZGF0YSA9PSBudWxsID8gdGhpcy5kaXYgOiB0aGlzLm9wdGlvbnMuZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJoZWxtXCI6XHJcbiAgICAgICAgdGhpcy5zZXRIZWxtKHRoaXMub3B0aW9ucy5kYXRhID09IG51bGwgPyB0aGlzLmRpdiA6IHRoaXMub3B0aW9ucy5kYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1vbHVybFwiOlxyXG4gICAgICAgIHRoaXMuZG93bmxvYWQodGhpcy5vcHRpb25zLmRhdGEsIFwibW9sXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwicnhudXJsXCI6XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZCh0aGlzLm9wdGlvbnMuZGF0YSwgXCJyeG5cIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJ4bWx1cmxcIjpcclxuICAgICAgICB0aGlzLmRvd25sb2FkKHRoaXMub3B0aW9ucy5kYXRhLCBcInhtbFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImpkeHVybFwiOlxyXG4gICAgICAgIHRoaXMuZG93bmxvYWQodGhpcy5vcHRpb25zLmRhdGEsIFwiamR4XCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuc2V0WG1sKHRoaXMuZGl2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc3Rvb2xiYXIgPSAhdGhpcy5vcHRpb25zLnBvcHVwICYmICF0aGlzLm9wdGlvbnMudmlld29ubHk7XHJcbiAgICB0aGlzLmRpdi5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kICE9IG51bGwpXHJcbiAgICAgIHRoaXMuZGl2LnN0eWxlLmJhY2tncm91bmQgPSB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZDtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kaXYuc3R5bGUuYmFja2dyb3VuZCA9IFwiI2ZmZlwiO1xyXG4gICAgaWYgKGhhc3Rvb2xiYXIgJiYgdGhpcy5vcHRpb25zLnNob3d0b29sYmFyKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzU2tpblc4KCkpIHtcclxuICAgICAgICB0aGlzLmRpbWVuc2lvbi55IC09IDcwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGltZW5zaW9uLnggLT0gMjg7XHJcbiAgICAgICAgdGhpcy5kaW1lbnNpb24ueSAtPSAyNDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZG9qby5zdHlsZSh0aGlzLmRpdiwge3dpZHRoOiB0aGlzLmRpbWVuc2lvbi54ICsgXCJweFwiLCBoZWlnaHQ6IHRoaXMuZGltZW5zaW9uLnkgKyBcInB4XCJ9KTtcclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3b25seSB8fCB0aGlzLm9wdGlvbnMucG9wdXAgPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoc2NpbC5VdGlscy5zZXJ2aWNlQXZhaWxhYmxlKCkgJiYgc2NpbC5EbkRGaWxlICE9IG51bGwpIHtcclxuICAgICAgICBuZXcgc2NpbC5EbkRGaWxlKHRoaXMuZGl2LCB7XHJcbiAgICAgICAgICB1cmw6IEpTRHJhd1NlcnZpY2VzLnVybCArIFwiP2NtZD1vcGVuanNkXCIsXHJcbiAgICAgICAgICBvbnVwbG9hZDogZnVuY3Rpb24oYXJncykge1xyXG4gICAgICAgICAgICBpZiAoIXNjaWwuVXRpbHMuaXNDaGVtRmlsZShzY2lsLlV0aWxzLmdldEZpbGVFeHQoYXJncy5maWxlbmFtZSkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKHJldCkge1xyXG4gICAgICAgICAgICBtZS5hY3RpdmF0ZSh0cnVlKTtcclxuICAgICAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlT3BlbjIobWUsIHJldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaGFzdG9vbGJhcikge1xyXG4gICAgICB0aGlzLnRvb2xiYXIgPSBuZXcgSlNEcmF3Mi5Ub29sYmFyKHRoaXMpO1xyXG4gICAgICB0aGlzLnRvb2xiYXIuY3JlYXRlVG9vbGJhcnModGhpcy5kaXYpO1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5zaG93dG9vbGJhcilcclxuICAgICAgICB0aGlzLnRvb2xiYXIuc2hvdyhmYWxzZSk7XHJcblxyXG4gICAgICBpZiAod2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkKSB7XHJcbiAgICAgICAgZG9qby5jb25uZWN0KHRoaXMuZGl2LCBcIm9uc2VsZWN0c3RhcnRcIiwgZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0pO1xyXG5cclxuICAgICAgICAvLyBvbmx5IGNhcHRpb24gbXVsdGktdG91Y2guIG9uZS1wb2ludCB0b3VjaCBpcyBoYW5kbGVyIGJ5IG1vdXNlLWRvd24vbW92ZS91cFxyXG4gICAgICAgIGRvam8uY29ubmVjdCh0aGlzLmRpdiwgXCJvbk1TUG9pbnRlckRvd25cIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgZSA9IHNjaWxsaWdlbmNlLm1zdG91Y2guZG93bihlKTtcclxuICAgICAgICAgIGlmIChlICE9IG51bGwgJiYgZS50b3VjaGVzLmxlbmd0aCA+IDEpIG1lLnRvdWNoU3RhcnQoZSk7IGVsc2UgbWUucmVzZXRHZXN0dXJlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9qby5jb25uZWN0KHRoaXMuZGl2LCBcIm9uTVNQb2ludGVyTW92ZVwiLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICBlID0gc2NpbGxpZ2VuY2UubXN0b3VjaC5tb3ZlKGUpO1xyXG4gICAgICAgICAgaWYgKGUgIT0gbnVsbCAmJiBlLnRvdWNoZXMubGVuZ3RoID4gMSkgbWUudG91Y2hNb3ZlKGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRvam8uY29ubmVjdCh0aGlzLmRpdiwgXCJvbk1TUG9pbnRlclVwXCIsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgIGUgPSBzY2lsbGlnZW5jZS5tc3RvdWNoLnVwKGUpO1xyXG4gICAgICAgICAgaWYgKGUgIT0gbnVsbCAmJiBlLnRvdWNoZXMubGVuZ3RoID4gMSkgbWUudG91Y2hFbmQoZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGRvam8uY29ubmVjdCh0aGlzLmRpdiwgXCJvbk1TR2VzdHVyZUhvbGRcIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgbWUuc2hvd0NvbnRleHRNZW51KGUpO1xyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vdGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcihcIk1TR2VzdHVyZVN0YXJ0XCIsIGZ1bmN0aW9uIChlKSB7IG1lLmdlc3R1cmVTdGFydChlKTsgfSwgZmFsc2UpO1xyXG4gICAgICAgIC8vdGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcihcIk1TR2VzdHVyZUNoYW5nZVwiLCBmdW5jdGlvbiAoZSkgeyBtZS5nZXN0dXJlQ2hhbmdlKGUpOyB9LCBmYWxzZSk7XHJcbiAgICAgICAgLy90aGlzLmRpdi5hZGRFdmVudExpc3RlbmVyKFwiTVNHZXN0dXJlRW5kXCIsIGZ1bmN0aW9uIChlKSB7IG1lLmdlc3R1cmVFbmQoZSk7IH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNjaWwuVXRpbHMuaXNUb3VjaCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUoZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdChkb2N1bWVudC5ib2R5LCAnb250b3VjaHN0YXJ0JywgZnVuY3Rpb24oZSkgeyByZXR1cm4gbWUuYm9keVRvdWNoU3RhcnQoZSk7IH0pKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdCh0aGlzLm1haW50YWJsZSwgJ29uY2xpY2snLCBmdW5jdGlvbihlKSB7IHJldHVybiBtZS50b3VjaENsaWNrKGUpOyB9KSk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbnRvdWNoc3RhcnQnLCBmdW5jdGlvbihlKSB7IHJldHVybiBtZS50b3VjaFN0YXJ0KGUpOyB9KSk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbnRvdWNobW92ZScsIGZ1bmN0aW9uKGUpIHsgcmV0dXJuIG1lLnRvdWNoTW92ZShlKTsgfSkpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KHRoaXMuZGl2LCAnb250b3VjaGVuZCcsIGZ1bmN0aW9uKGUpIHsgcmV0dXJuIG1lLnRvdWNoRW5kKGUpOyB9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZShmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KGRvY3VtZW50LCAnb25tb3VzZWRvd24nLCBmdW5jdGlvbihlOiBNb3VzZUV2ZW50KSB7IHJldHVybiBtZS5ib2R5TW91c2VEb3duKGUpOyB9KSk7XHJcbiAgICAgICAgLy90aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdChkb2N1bWVudCwgJ29uY2xpY2snLCBmdW5jdGlvbiAoZSkgeyBtZS5ib2R5Q2xpY2soZSk7IH0pKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdChkb2N1bWVudCwgJ29ua2V5ZG93bicsIGZ1bmN0aW9uKGU6IEtleWJvYXJkRXZlbnQpIHsgbWUua2V5ZG93bihlKTsgfSkpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KHRoaXMuZGl2LCAnb25tb3VzZWRvd24nLCBmdW5jdGlvbihlOiBNb3VzZUV2ZW50KSB7IG1lLm1vdXNlZG93bihlKTsgfSkpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KHRoaXMuZGl2LCAnb25tb3VzZW1vdmUnLCBmdW5jdGlvbihlOiBNb3VzZUV2ZW50KSB7IG1lLm1vdXNlbW92ZShlKTsgfSkpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KHRoaXMuZGl2LCAnb25tb3VzZXVwJywgZnVuY3Rpb24oZTogTW91c2VFdmVudCkgeyBtZS5tb3VzZXVwKGUpOyB9KSk7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNGaXJlZm94KVxyXG4gICAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbndoZWVsJywgZnVuY3Rpb24oZTogV2hlZWxFdmVudCkgeyBtZS5tb3VzZXdoZWVsKGUpOyB9KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNld2hlZWwnLCBmdW5jdGlvbihlOiBXaGVlbEV2ZW50KSB7IG1lLm1vdXNld2hlZWwoZSk7IH0pKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZG9qby5hdHRyKHRoaXMuZGl2LCAnX19hamF4Zm9ybScsICcxJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvcHVwKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaXNUb3VjaCkge1xyXG4gICAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbnRvdWNoc3RhcnQnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgIGlmICghc2NpbC5VdGlscy5pc1RvdWNoRGJsQ2xpY2soZSkpIHJldHVybjtcclxuICAgICAgICAgICAgbWUuZGJsY2xpY2soKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29ubmVjdEhhbmRsZXJzLnB1c2goZG9qby5jb25uZWN0KHRoaXMuZGl2LCAnb25kYmxjbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgbWUuZGJsY2xpY2soKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghc2NpbC5VdGlscy5pc1RvdWNoKSB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNlZG93bicsIGZ1bmN0aW9uKGU6IE1vdXNlRXZlbnQpIHsgbWUubW91c2Vkb3duKGUsIHRydWUpOyB9KSk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNlbW92ZScsIGZ1bmN0aW9uKGU6IE1vdXNlRXZlbnQpIHsgbWUubW91c2Vtb3ZlKGUsIHRydWUpOyB9KSk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNldXAnLCBmdW5jdGlvbihlOiBNb3VzZUV2ZW50KSB7IG1lLm1vdXNldXAoZSwgdHJ1ZSk7IH0pKTtcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc0ZpcmVmb3gpXHJcbiAgICAgICAgICB0aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdCh0aGlzLmRpdiwgJ0RPTU1vdXNlU2Nyb2xsJywgZnVuY3Rpb24oZTogV2hlZWxFdmVudCkgeyBtZS5tb3VzZXdoZWVsKGUpOyB9KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNld2hlZWwnLCBmdW5jdGlvbihlOiBXaGVlbEV2ZW50KSB7IG1lLm1vdXNld2hlZWwoZSwgdHJ1ZSk7IH0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbnJlc2l6ZScsIGZ1bmN0aW9uKCkgeyBpZiAoIW1lLl9jbGVhcmluZykgbWUub25SZXNpemUoKTsgfSkpO1xyXG5cclxuICAgIGRvam8uc3R5bGUodGhpcy5kaXYsIHt1c2VyU2VsZWN0OiBcIm5vbmVcIiwgb1VzZXJTZWxlY3Q6IFwibm9uZVwiLCBNb3pVc2VyU2VsZWN0OiBcIm5vbmVcIiwga2h0bWxVc2VyU2VsZWN0OiBcIm5vbmVcIiwgd2Via2l0VXNlclNlbGVjdDogXCJub25lXCJ9KTtcclxuXHJcbiAgICAvLyBndWFyYW50ZWUgYWxsIHBhcmVudHMgYXJlIHZpc2libGVcclxuICAgIGxldCBwYXJlbnRzID0gbnVsbDtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzSUUgJiYgKHNjaWwuVXRpbHMuaXNJRSA8IDkgfHwgZG9qb3guZ2Z4LnJlbmRlcmVyICE9IFwic3ZnXCIpKVxyXG4gICAgICBwYXJlbnRzID0gdGhpcy5fc2hvd0FsbFBhcmVudHModGhpcy5kaXYpO1xyXG4gICAgdGhpcy5zdXJmYWNlID0gZG9qb3guZ2Z4LmNyZWF0ZVN1cmZhY2UodGhpcy5kaXYsIHRoaXMuZGltZW5zaW9uLngsIHRoaXMuZGltZW5zaW9uLnkpO1xyXG4gICAgaWYgKHBhcmVudHMgIT0gbnVsbCkge1xyXG4gICAgICAvL3RoaXMuc3VyZmFjZS5yb3dOb2RlLnNldEF0dHJpYnV0ZShcInVuc2VsZWN0YWJsZVwiLCBcIm9uXCIpO1xyXG4gICAgICB0aGlzLl9oaWRlRWxlbWVudHMocGFyZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNTaWx2ZXJsaWdodCA9PSBudWxsKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgc2NpbC5VdGlscy5pc1NpbHZlcmxpZ2h0ID0gdGhpcy5kaXYuZmlyc3RDaGlsZCAhPSBudWxsICYmIHRoaXMuZGl2LnR5cGUgPT0gXCJhcHBsaWNhdGlvbi94LXNpbHZlcmxpZ2h0XCI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNTaWx2ZXJsaWdodCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvcHVwKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jb25uZWN0SGFuZGxlcnMucHVzaChkb2pvLmNvbm5lY3QodGhpcy5kaXYsICdvbm1vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7IG1lLm1vdXNlZG93bjIoZSk7IGUucHJldmVudERlZmF1bHQoKTsgfSkpO1xyXG4gICAgICAgIHRoaXMuZGl2LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xyXG4gICAgICAgIGxldCB6aW5kZXggPSBwYXJzZUludCh0aGlzLmRpdi5zdHlsZS56SW5kZXggKyBcIlwiKTtcclxuICAgICAgICBpZiAoaXNOYU4oemluZGV4KSlcclxuICAgICAgICAgIHppbmRleCA9IDA7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRoaXMuZGl2LCBcImRpdlwiLCBudWxsLCB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCBsZWZ0OiAnMCcsIHRvcDogJzAnLCBiYWNrZ3JvdW5kOiBcIndoaXRlXCIsIGZpbHRlcjogXCJhbHBoYShvcGFjaXR5PTEpXCIsXHJcbiAgICAgICAgICB3aWR0aDogdGhpcy5kaW1lbnNpb24ueCArIFwicHhcIiwgaGVpZ2h0OiB0aGlzLmRpbWVuc2lvbi55ICsgXCJweFwiLCB6SW5kZXg6IGAke3ppbmRleCArIDF9YFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGhhc3Rvb2xiYXIpIHtcclxuICAgICAgICB0aGlzLnN1cmZhY2UuY29ubmVjdChcIm9ua2V5ZG93blwiLCBmdW5jdGlvbihlKSB7IG1lLmtleWRvd24oZSk7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zaG93Y29udGV4dG1lbnUgIT0gZmFsc2UpIHtcclxuICAgICAgc2NpbC5VdGlscy5kaXNhYmxlQ29udGV4dE1lbnUodGhpcy5kaXYpO1xyXG4gICAgICAvL3NjaWwuVXRpbHMuZGlzYWJsZUNvbnRleHRNZW51KHRoaXMuc3VyZmFjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tb2RpZmllZCA9IGZhbHNlO1xyXG4gICAgLy90aGlzLmFjdGl2YXRlKHRydWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGUgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHMgPSAzMCAvIHRoaXMuYm9uZGxlbmd0aCAqIHRoaXMub3B0aW9ucy5zY2FsZTtcclxuICAgICAgaWYgKHMgIT0gMSlcclxuICAgICAgICB0aGlzLnNjYWxlKHRoaXMub3B0aW9ucy5zY2FsZSk7XHJcbiAgICAgIHRoaXMuZml0VG9XaW5kb3coKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKGhhc3Rvb2xiYXIpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy50bGNwbGF0ZSlcclxuICAgICAgICB0aGlzLmRvQ21kKFwidGxjXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5kb0NtZChcInNlbGVjdFwiKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFwcG1vZGUgJiYgIXNjaWwuVXRpbHMuaXNJRSkgLy8gZXhjZXB0IElFLCBJIzEwMjA1XHJcbiAgICAgICAgc2NpbC5jb25uZWN0KGRvY3VtZW50LCBcIm9ucGFzdGVcIiwgZnVuY3Rpb24oZSkgeyBpZiAobWUuZG9QYXN0ZShlKSkgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZG9DbWQoXCJtb3Zldmlld1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvUGFzdGUocykge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlZClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnRleHRlZGl0b3IuZWQgIT0gbnVsbCAmJiB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQgIT0gbnVsbCAmJiB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuc3R5bGUuZGlzcGxheSAhPSBcIm5vbmVcIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IG1heFppbmRleCA9IHNjaWwuVXRpbHMuZ2V0TWF4WmluZGV4KCk7XHJcbiAgICBjb25zdCB6aW5kZXggPSBzY2lsLlV0aWxzLmdldFppbmRleCh0aGlzLmRpdik7XHJcbiAgICBpZiAobWF4WmluZGV4ID4gemluZGV4KVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgY2xpcGJvYXJkID0gcztcclxuICAgIGlmIChjbGlwYm9hcmQgIT0gbnVsbCAmJiBjbGlwYm9hcmQuY2xpcGJvYXJkRGF0YSAhPSBudWxsKVxyXG4gICAgICBzID0gY2xpcGJvYXJkLmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIik7XHJcblxyXG4gICAgbGV0IG0gPSBudWxsO1xyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpIHtcclxuICAgICAgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgICBtLnNldFhtbChzKTtcclxuICAgICAgaWYgKG0uaXNFbXB0eSgpKVxyXG4gICAgICAgIG0gPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtID09IG51bGwpXHJcbiAgICAgIG0gPSBKU0RyYXcyLkVkaXRvci5nZXRDbGlwYm9hcmQoKTtcclxuXHJcbiAgICBpZiAobSA9PSBudWxsKSB7XHJcbiAgICAgIC8vIHRyeSBhamF4IHBhc3RlXHJcbiAgICAgIGlmIChjbGlwYm9hcmQgIT0gbnVsbCAmJiBjbGlwYm9hcmQuY2xpcGJvYXJkRGF0YSAhPSBudWxsICYmIEpTRHJhd1NlcnZpY2VzICE9IG51bGwgJiYgSlNEcmF3U2VydmljZXMudXJsICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBydGYgPSBjbGlwYm9hcmQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9ydGZcIik7XHJcbiAgICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocnRmKSkge1xyXG4gICAgICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICAgICAgc2NpbC5VdGlscy5hamF4KEpTRHJhd1NlcnZpY2VzLnVybCArIFwiP2NtZD1wYXN0ZS5ydGYyanNkcmF3XCIsIGZ1bmN0aW9uKHJldCkge1xyXG4gICAgICAgICAgICBpZiAocmV0ID09IG51bGwgJiYgcmV0LmpzZHJhdyA9PSBudWxsKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgICAgICAgICBpZiAobS5zZXRYbWwocmV0LmpzZHJhdykgPT0gbnVsbClcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGYgPSBtZS5wYXN0ZU1vbChtKTtcclxuICAgICAgICAgICAgaWYgKGYpXHJcbiAgICAgICAgICAgICAgbWUucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSwge3J0ZjogcnRmfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXQgPSB0aGlzLnBhc3RlTW9sKG0pO1xyXG4gICAgaWYgKHJldClcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIF9zaG93QWxsUGFyZW50cyhlKSB7XHJcbiAgICBjb25zdCByZXQgPSB7ZGlzcGxheTogW10sIHZpc2liaWxpdHk6IFtdLCB2aXN2YWx1ZXM6IFtdfTtcclxuICAgIHdoaWxlIChlICE9IG51bGwgJiYgZS5zdHlsZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChlLnN0eWxlLmRpc3BsYXkgPT0gXCJub25lXCIpIHtcclxuICAgICAgICByZXQuZGlzcGxheS5wdXNoKGUpO1xyXG4gICAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUuc3R5bGUudmlzaWJpbGl0eSAhPSBcIlwiICYmIGUuc3R5bGUudmlzaWJpbGl0eSAhPSBudWxsICYmIGUuc3R5bGUudmlzaWJpbGl0eSAhPSBcInZpc2libGVcIikge1xyXG4gICAgICAgIHJldC52aXNpYmlsaXR5LnB1c2goZSk7XHJcbiAgICAgICAgcmV0LnZpc3ZhbHVlcy5wdXNoKGUuc3R5bGUudmlzaWJpbGl0eSk7XHJcbiAgICAgICAgZS5zdHlsZS52aXNpYmlsaXR5ID0gXCJ2aXNpYmxlXCI7XHJcbiAgICAgIH1cclxuICAgICAgZSA9IGUucGFyZW50Tm9kZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBfaGlkZUVsZW1lbnRzKHJldCkge1xyXG4gICAgaWYgKHJldCA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC5kaXNwbGF5Lmxlbmd0aDsgKytpKVxyXG4gICAgICByZXQuZGlzcGxheVtpXS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC52aXNpYmlsaXR5Lmxlbmd0aDsgKytpKVxyXG4gICAgICByZXQudmlzaWJpbGl0eVtpXS5zdHlsZS52aXNpYmlsaXR5ID0gcmV0LnZpc3ZhbHVlc1tpXTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5jbGVhcih0cnVlKTtcclxuICAgIHRoaXMuX3VuZG9zdGFjay5jbGVhcigpO1xyXG4gICAgdGhpcy5fcmVkb3N0YWNrLmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy50bGNwbGF0ZSlcclxuICAgICAgdGhpcy5kb0NtZChcInRsY1wiKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kb0NtZChcInNlbGVjdFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1c2ggdGhlIGN1cnJlbnQgc3RhdHVzIGludG8gdW5kbyBzdGFja1xyXG4gICAqIEBmdW5jdGlvbiBwdXNodW5kb1xyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBwdXNodW5kbyhtPzogRWRpdG9yQ2xvbmU8VEJpbz4sIGFjdGlvbj86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZXVuZG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAobSA9PSBudWxsICYmIGFjdGlvbiAhPSBudWxsICYmIHRoaXMubGFzdGFjdGlvbiA9PSBhY3Rpb24pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxhc3RhY3Rpb24gPSBhY3Rpb247XHJcbiAgICB0aGlzLl9yZWRvc3RhY2suY2xlYXIoKTtcclxuICAgIHRoaXMuX3VuZG9zdGFjay5wdXNoKG0gPT0gbnVsbCA/IHRoaXMuY2xvbmUoKSA6IG0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5kbyBvbmNlXHJcbiAgICogQGZ1bmN0aW9uIHVuZG9cclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgdW5kbygpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGV1bmRvKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbSA9IHRoaXMuX3VuZG9zdGFjay5wb3AoKTtcclxuICAgIGlmIChtID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9yZWRvc3RhY2sucHVzaCh0aGlzLmNsb25lKCkpO1xyXG4gICAgdGhpcy5yZXN0b3JlQ2xvbmUobSk7XHJcbiAgICB0aGlzLnNldE1vZGlmaWVkKHRydWUpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZXN0b3JlQ2xvbmUobSkge1xyXG4gICAgdGhpcy5fc2V0bW9sKG0ubW9sKTtcclxuICAgIHRoaXMucmVzZXRTY2FsZShtKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZWRvIG9uY2VcclxuICAgKiBAZnVuY3Rpb24gcmVkb1xyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZXVuZG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtID0gdGhpcy5fcmVkb3N0YWNrLnBvcCgpO1xyXG4gICAgaWYgKG0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMuX3VuZG9zdGFjay5wdXNoKHRoaXMuY2xvbmUoKSk7XHJcbiAgICB0aGlzLl9zZXRtb2wobS5tb2wpO1xyXG4gICAgdGhpcy5yZXNldFNjYWxlKG0pO1xyXG4gICAgdGhpcy5zZXRNb2RpZmllZCh0cnVlKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29weVxyXG4gICAqIEBmdW5jdGlvbiBjb3B5XHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIGNvcHkobT86IE1vbDxUQmlvPikge1xyXG4gICAgaWYgKG0gPT0gbnVsbCkge1xyXG4gICAgICBtID0gdGhpcy5tLmNsb25lKHRydWUpO1xyXG4gICAgICBtLmJvbmRsZW5ndGggPSB0aGlzLmJvbmRsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBKU0RyYXcyLkVkaXRvci5zZXRDbGlwYm9hcmQobSwgdGhpcy5ib25kbGVuZ3RoKTtcclxuXHJcbiAgICBpZiAoc2NpbC5DbGlwYm9hcmQgIT0gbnVsbCAmJiBtICE9IG51bGwgJiYgIW0uaXNFbXB0eSgpKSB7XHJcbiAgICAgIHNjaWwuQ2xpcGJvYXJkLmNvcHkobS5nZXRYbWwobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdGhpcy5ib25kbGVuZ3RoKSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1dFxyXG4gICAqIEBmdW5jdGlvbiBjdXRcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgY3V0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNvcHkoKSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsU2VsZWN0ZWQoKSA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXN0ZVxyXG4gICAqIEBmdW5jdGlvbiBwYXN0XHJcbiAgICogQHBhcmFtIHtQb2ludH0gcG9zIC0gcGxhY2UgdGhlIHBhc3RlZCBzdHJ1Y3R1cmUgdG8gdGhpcyBsb2NhdGlvblxyXG4gICAqIEByZXR1cm5zIHRoZSBNb2xcclxuICAgKi9cclxuICBwYXN0ZShwb3M/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG0gPSBKU0RyYXcyLkVkaXRvci5nZXRDbGlwYm9hcmQoKTtcclxuICAgIHJldHVybiB0aGlzLnBhc3RlTW9sKG0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFzdGUgYSBtb2xcclxuICAgKiBAZnVuY3Rpb24gcGFzdFxyXG4gICAqIEBwYXJhbSB7TW9sfSBtIC0gbW9sZWN1bGUgdG8gYmUgcGFzdGVkXHJcbiAgICogQHBhcmFtIHtQb2ludH0gcG9zIC0gcGxhY2UgdGhlIHBhc3RlZCBzdHJ1Y3R1cmUgdG8gdGhpcyBsb2NhdGlvblxyXG4gICAqIEByZXR1cm5zIHRoZSBNb2xcclxuICAgKi9cclxuICBwYXN0ZU1vbChtLCBwb3M/OiBQb2ludCwgY2xlYXI/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChtID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAodHlwZW9mIChtKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IG1vbCA9IG5ldyBKU0RyYXcyLk1vbCh0aGlzLm9wdGlvbnMuc2hvd2ltcGxpY2l0aHlkcm9nZW5zKTtcclxuICAgICAgbW9sLnNldE1vbGZpbGUobSk7XHJcbiAgICAgIG0gPSBtb2w7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZW1wdHkgPSB0aGlzLm0uaXNFbXB0eSgpO1xyXG4gICAgdGhpcy5wdXNodW5kbygpO1xyXG5cclxuICAgIGlmICghIWNsZWFyKVxyXG4gICAgICB0aGlzLmNsZWFyKG51bGwsIHRydWUpO1xyXG5cclxuICAgIGxldCBsZW4gPSBudWxsO1xyXG4gICAgaWYgKG0uYm9uZGxlbmd0aCA+IDApIHtcclxuICAgICAgbGVuID0gdGhpcy5ib25kbGVuZ3RoOyAvL0kjOTU0OVxyXG4gICAgICBtLnNjYWxlKHRoaXMuYm9uZGxlbmd0aCAvIG0uYm9uZGxlbmd0aCk7XHJcbiAgICAgIC8vdGhpcy5yZXNldFNjYWxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbGVuMiA9IG0ubWVkQm9uZExlbmd0aCgpO1xyXG4gICAgICBpZiAoIShsZW4yID4gMCkpXHJcbiAgICAgICAgbGVuMiA9IDEuNTY7XHJcbiAgICAgIGxldCBsZW4gPSB0aGlzLm0ubWVkQm9uZExlbmd0aCgpO1xyXG4gICAgICBpZiAoIShsZW4gPiAwKSlcclxuICAgICAgICBsZW4gPSB0aGlzLmJvbmRsZW5ndGg7XHJcbiAgICAgIG0uc2NhbGUobGVuIC8gbGVuMik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvcyA9PSBudWxsKSB7XHJcbiAgICAgIG0ubW92ZUNlbnRlcih0aGlzLmRpbWVuc2lvbi54LCB0aGlzLmRpbWVuc2lvbi55KTtcclxuICAgICAgbS5vZmZzZXQoMTAsIDEwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGMgPSBtLmNlbnRlcigpO1xyXG4gICAgICBtLm9mZnNldChwb3MueCAtIGMueCwgcG9zLnkgLSBjLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIG0uc2hvd2ltcGxpY2l0aHlkcm9nZW5zID0gdGhpcy5vcHRpb25zLnNob3dpbXBsaWNpdGh5ZHJvZ2VucztcclxuICAgIHRoaXMubS5zZXRTZWxlY3RlZCgpO1xyXG4gICAgbS5zZXRTZWxlY3RlZCh0cnVlKTtcclxuICAgIG0uY2FsY0hDb3VudCh0cnVlKTtcclxuXHJcbiAgICAvLyBtYWtlIHJ4blxyXG4gICAgbGV0IHJlYWN0aW9uID0gbnVsbDtcclxuICAgIGNvbnN0IHJ4biA9IHRoaXMubS5wYXJzZVJ4bih0cnVlKTtcclxuICAgIGNvbnN0IHJ4bjIgPSBtLnBhcnNlUnhuKHRydWUpO1xyXG4gICAgaWYgKChjbGVhciA9PSBcInJlYWN0YW50XCIgfHwgY2xlYXIgPT0gXCJwcm9kdWN0XCIpICYmIHJ4bjIgIT0gbnVsbCAmJiByeG4yLmFycm93ID09IG51bGwpIHtcclxuICAgICAgaWYgKGNsZWFyID09IFwicmVhY3RhbnRcIilcclxuICAgICAgICBzY2lsLlV0aWxzLm1lcmdlQXJyYXkocnhuLnJlYWN0YW50cywgcnhuMi5yZWFjdGFudHMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgc2NpbC5VdGlscy5tZXJnZUFycmF5KHJ4bi5wcm9kdWN0cywgcnhuMi5yZWFjdGFudHMpO1xyXG4gICAgICByZWFjdGlvbiA9IHJ4bjtcclxuICAgIH0gZWxzZSBpZiAocnhuICE9IG51bGwgJiYgKHJ4bi5yZWFjdGFudHMubGVuZ3RoID4gMCB8fCByeG4ucHJvZHVjdHMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgaWYgKHJ4bi5hcnJvdyAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJ4bjIuYXJyb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHJ4bi5yZWFjdGFudHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJ4bi5yZWFjdGFudHMgPSByeG4yLnJlYWN0YW50cztcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgc2NpbC5VdGlscy5tZXJnZUFycmF5KHJ4bi5wcm9kdWN0cywgcnhuMi5yZWFjdGFudHMpO1xyXG4gICAgICAgICAgcmVhY3Rpb24gPSByeG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChyeG4yLmFycm93ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChyeG4uYXJyb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAocnhuMi5yZWFjdGFudHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgcnhuMi5yZWFjdGFudHMgPSByeG4ucmVhY3RhbnRzO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgc2NpbC5VdGlscy5tZXJnZUFycmF5KHJ4bjIucHJvZHVjdHMsIHJ4bi5yZWFjdGFudHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVhY3Rpb24gPSByeG4yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZWFjdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubS5zZXRSeG4ocmVhY3Rpb24sIGxlbik7XHJcbiAgICAgIHRoaXMuZml0VG9XaW5kb3coKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHRsY3BsYXRlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gbS5ncmFwaGljcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIGNvbnN0IHQgPSBKU0RyYXcyLlRMQy5jYXN0KG0uZ3JhcGhpY3NbaV0pO1xyXG4gICAgICAgIGlmICh0ICE9IG51bGwpIHtcclxuICAgICAgICAgIG0uZ3JhcGhpY3Muc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgdGxjcGxhdGVzLnNwbGljZSgwLCAwLCB0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubS5tZXJnZU1vbChtKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0bGNwbGF0ZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgdGhpcy5hZGRUbGNQbGF0ZSh0bGNwbGF0ZXNbaV0pO1xyXG5cclxuICAgICAgaWYgKG0uY2hpcmFsICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5tLmNoaXJhbCA9IG0uY2hpcmFsO1xyXG5cclxuICAgICAgaWYgKGVtcHR5KVxyXG4gICAgICAgIHRoaXMuZml0VG9XaW5kb3coKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldE1vZGlmaWVkKHRydWUpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBzY2FsaW5nXHJcbiAgICogQGZ1bmN0aW9uIHJlc2V0U2NhbGVcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgcmVzZXRTY2FsZShzPzogRWRpdG9yQ2xvbmUpOiB2b2lkIHtcclxuICAgIHRoaXMuYm9uZGxlbmd0aCA9IHMgPT0gbnVsbCA/IEpTRHJhdzIuRWRpdG9yLkJPTkRMRU5HVEggOiBzLmJvbmRsZW5ndGg7XHJcbiAgICB0aGlzLnRvciA9IHMgPT0gbnVsbCA/IEpTRHJhdzIuRWRpdG9yLlRPUiA6IHMudG9yO1xyXG4gICAgdGhpcy5saW5ld2lkdGggPSBzID09IG51bGwgPyBKU0RyYXcyLkVkaXRvci5MSU5FV0lEVEggOiBzLmxpbmV3aWR0aDtcclxuICAgIHRoaXMuZm9udHNpemUgPSBzID09IG51bGwgPyBKU0RyYXcyLkVkaXRvci5GT05UU0laRSA6IHMuZm9udHNpemU7XHJcbiAgICB0aGlzLmFuZ2xlU3RvcCA9IHMgPT0gbnVsbCA/IEpTRHJhdzIuRWRpdG9yLkFOR0xFU1RPUCA6IHMuYW5nbGVTdG9wO1xyXG4gIH1cclxuXHJcbiAgY2xvbmUoKTogRWRpdG9yQ2xvbmUge1xyXG4gICAgcmV0dXJuIHttb2w6IHRoaXMubS5jbG9uZSgpLCBib25kbGVuZ3RoOiB0aGlzLmJvbmRsZW5ndGgsIHRvcjogdGhpcy50b3IsIGxpbmV3aWR0aDogdGhpcy5saW5ld2lkdGgsIGZvbnRzaXplOiB0aGlzLmZvbnRzaXplLCBhbmdsZVN0b3A6IHRoaXMuYW5nbGVTdG9wfTtcclxuICB9XHJcblxyXG4gIHNob3dUZXh0RWRpdG9yKG9iajogYW55LCBwPzogUG9pbnQsIHN0cj86IHN0cmluZykge1xyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dGVkaXRvci50ZXh0ID0gSlNEcmF3Mi5UZXh0LmNhc3Qob2JqKTtcclxuICAgIGlmICh0ZXh0ICE9IG51bGwgJiYgdGV4dC5yZWFkb25seSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLnRleHRlZGl0b3IuaGlkZXRpbWUgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCB0bSA9IHRoaXMudGV4dGVkaXRvci5oaWRldGltZTtcclxuICAgICAgdGhpcy50ZXh0ZWRpdG9yLmhpZGV0aW1lID0gbnVsbDtcclxuICAgICAgaWYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdG0gPCA1MDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGEgPSB0aGlzLnRleHRlZGl0b3IuYXRvbSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KG9iaik7XHJcbiAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3Qob2JqKTtcclxuICAgIGNvbnN0IHNocCA9IHRoaXMudGV4dGVkaXRvci5zaGFwZSA9IEpTRHJhdzIuU2hhcGUuY2FzdChvYmopO1xyXG4gICAgY29uc3QgYnIgPSB0ICE9IG51bGwgJiYgdC5hbmNob3JzICE9IG51bGwgJiYgdC5hbmNob3JzLmxlbmd0aCA9PSAxID8gSlNEcmF3Mi5CcmFja2V0LmNhc3QodC5hbmNob3JzWzBdKSA6IG51bGw7XHJcbiAgICBpZiAoYSAhPSBudWxsKSB7XHJcbiAgICAgIHAueCAtPSA2ICogdGhpcy5ib25kbGVuZ3RoIC8gMzA7XHJcbiAgICAgIHAueSAtPSA5ICogdGhpcy5ib25kbGVuZ3RoIC8gMzA7XHJcbiAgICB9IGVsc2UgaWYgKHNocCAhPSBudWxsKSB7XHJcbiAgICAgIHAueCA9IHNocC5fcmVjdC5sZWZ0ICsgc2hwLl9yZWN0LndpZHRoIC8gMTA7XHJcbiAgICAgIHAueSA9IHNocC5fcmVjdC5jZW50ZXIoKS55IC0gOSAqIHRoaXMuYm9uZGxlbmd0aCAvIDMwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIGlmICh0aGlzLnRleHRlZGl0b3IuZWQgPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkb2N1bWVudC5ib2R5LCBcImlucHV0XCIpO1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQgPSBuZXcgc2NpbC5Ecm9wZG93bklucHV0KGlucHV0LCB7b25jbGlja2l0ZW06IGZ1bmN0aW9uKHMpIHsgcmV0dXJuIG1lLmNsaWNrVGV4dEl0ZW0ocyk7IH19KTtcclxuICAgICAgZG9qby5zdHlsZSh0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQsIHtwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCBkaXNwbGF5OiBcIm5vbmVcIiwgekluZGV4OiAnOTk5J30pO1xyXG4gICAgICB0aGlzLmNvbm5lY3RIYW5kbGVycy5wdXNoKGRvam8uY29ubmVjdCh0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQsIFwib25rZXlkb3duXCIsIGZ1bmN0aW9uKGUpIHsgcmV0dXJuIG1lLnR4dEtleXByZXNzKGUpOyB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMudGV4dGVkaXRvci5lZC5vcHRpb25zO1xyXG4gICAgaWYgKGEgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgbGlzdCA9IG51bGw7XHJcbiAgICAgIGlmIChhLmJpbyAhPSBudWxsICYmIHRoaXMuaGVsbSAhPSBudWxsKVxyXG4gICAgICAgIGxpc3QgPSBzY2lsLmhlbG0uTW9ub21lcnMuZ2V0TW9ub21lckxpc3QoYSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBsaXN0ID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5hdG9tbGlzdCAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5hdG9tbGlzdCA6IEpTRHJhdzIuUFQuZ2V0Q29tbW9uVXNlZEVsZW1lbnRzKFwibGlzdFwiKTtcclxuICAgICAgdGhpcy50ZXh0ZWRpdG9yLmVkLnNldEl0ZW1zKGxpc3QpO1xyXG4gICAgICBvcHRpb25zLm9uU2V0VmFsdWUgPSBmdW5jdGlvbihpbnB1dCwgcykgeyBpbnB1dC52YWx1ZSA9IHM7IH07XHJcbiAgICAgIG9wdGlvbnMubWluYXV0b3dpZHRoID0gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5taW5hdXRvd2lkdGgxID4gMCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMubWluYXV0b3dpZHRoMSA6IDEwMDtcclxuICAgICAgaWYgKGEuYmlvICE9IG51bGwpXHJcbiAgICAgICAgb3B0aW9ucy5vbkZpbHRlciA9IG51bGw7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBvcHRpb25zLm9uRmlsdGVyID0gZnVuY3Rpb24ocSkgeyByZXR1cm4gbWUuZmlsdGVyQXRvbVR5cGUocSk7IH07XHJcbiAgICB9IGVsc2UgaWYgKHNocCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudGV4dGVkaXRvci5lZC5zZXRJdGVtcyhudWxsKTtcclxuICAgIH0gZWxzZSBpZiAoYnIgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodC5maWVsZHR5cGUgPT0gXCJCUkFDS0VUX1RZUEVcIikge1xyXG4gICAgICAgIHRoaXMudGV4dGVkaXRvci5lZC5zZXRJdGVtcyhKU0RyYXcyLlNHcm91cCA9PSBudWxsID8gbnVsbCA6IEpTRHJhdzIuU0dyb3VwLmdldERpc3BsYXlUeXBlcygpKTtcclxuICAgICAgICBvcHRpb25zLm9uU2V0VmFsdWUgPSBmdW5jdGlvbihpbnB1dCwgcykge1xyXG4gICAgICAgICAgbGV0IHMyID0gXCJcIjtcclxuICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmVuZHN3aXRoKHMsIFwiKVwiKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwID0gcy5sYXN0SW5kZXhPZignKCcpO1xyXG4gICAgICAgICAgICBpZiAocCA+IDApXHJcbiAgICAgICAgICAgICAgczIgPSBzLnN1YnN0cihwICsgMSwgcy5sZW5ndGggLSBwIC0gMik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9IHMyO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgb3B0aW9ucy5taW5hdXRvd2lkdGggPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLm1pbmF1dG93aWR0aDIgPiAwID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5taW5hdXRvd2lkdGgyIDogMTUwO1xyXG4gICAgICAgIG9wdGlvbnMub25GaWx0ZXIgPSBudWxsO1xyXG4gICAgICB9IGVsc2UgaWYgKHQuZmllbGR0eXBlID09IFwiTU9MX1RZUEVcIikge1xyXG4gICAgICAgIHRoaXMudGV4dGVkaXRvci5lZC5zZXRJdGVtcyhKU0RyYXcyLk1PTEVDVUxFVFlQRVMpO1xyXG4gICAgICAgIG9wdGlvbnMub25TZXRWYWx1ZSA9IGZ1bmN0aW9uKGlucHV0LCBzKSB7XHJcbiAgICAgICAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxyXG4gICAgICAgICAgICB0aGlzLm1vbC5kZWxHcmFwaGljcyh0KTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBzO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgb3B0aW9ucy5taW5hdXRvd2lkdGggPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLm1pbmF1dG93aWR0aDIgPiAwID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5taW5hdXRvd2lkdGgyIDogMTUwO1xyXG4gICAgICAgIG9wdGlvbnMub25GaWx0ZXIgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQuc2V0SXRlbXMoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy50ZXh0bGlzdCAhPSBudWxsID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy50ZXh0bGlzdCA6IEpTRHJhdzIuVEVYVEtFWVdPUkRTKTtcclxuICAgICAgb3B0aW9ucy5vblNldFZhbHVlID0gZnVuY3Rpb24oaW5wdXQsIHMpIHsgaWYgKHNjaWwuVXRpbHMuaW5kZXhPZihvcHRpb25zLml0ZW1zLCBzKSA+PSAwKSBpbnB1dC52YWx1ZSArPSBzOyBlbHNlIGlucHV0LnZhbHVlID0gczsgfTtcclxuICAgICAgb3B0aW9ucy5taW5hdXRvd2lkdGggPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLm1pbmF1dG93aWR0aDMgPiAwID8gSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5taW5hdXRvd2lkdGgzIDogMzAwO1xyXG4gICAgICBvcHRpb25zLmF1dG9zdWdnZXN0ID0gdGhpcy5vcHRpb25zLnJlYWdlbnRzdWdnZXN0O1xyXG4gICAgICBvcHRpb25zLm9uRmlsdGVyID0gb3B0aW9ucy5hdXRvc3VnZ2VzdCAhPSBudWxsID8gbnVsbCA6IGZ1bmN0aW9uKCkgeyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgeiA9IHNjaWwuVXRpbHMuZ2V0WmluZGV4KHRoaXMuZGl2KTtcclxuICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC5zdHlsZS56SW5kZXggPSB6ID4gMCA/ICh6ICsgMSkgOiAxO1xyXG5cclxuICAgIGlmICh0ZXh0ICE9IG51bGwpXHJcbiAgICAgIHAgPSBuZXcgSlNEcmF3Mi5Qb2ludCh0ZXh0Ll9yZWN0LmxlZnQsIHRleHQuX3JlY3QudG9wKTtcclxuICAgIGVsc2VcclxuICAgICAgcC5vZmZzZXQoLTIsIC0yKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHNjaWwuVXRpbHMuZ2V0T2Zmc2V0KHRoaXMuZGl2LCBmYWxzZSk7XHJcbiAgICBkb2pvLnN0eWxlKHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dCwge2ZvbnRTaXplOiB0aGlzLmZvbnRzaXplICsgXCJweFwifSk7XHJcbiAgICBkb2pvLnN0eWxlKHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dCwge2xlZnQ6IChwLnggKyBvZmZzZXQueCkgKyBcInB4XCIsIHRvcDogKHAueSArIG9mZnNldC55KSArIFwicHhcIiwgZGlzcGxheTogXCJcIn0pO1xyXG5cclxuICAgIGxldCBzZWxlY3RhbGwgPSB0cnVlO1xyXG4gICAgaWYgKHRleHQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQudmFsdWUgPSBzdHIgPT0gbnVsbCA/IHRleHQudGV4dCA6IHN0cjtcclxuICAgIH0gZWxzZSBpZiAoYSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBzID0gYS5nZXRMYWJlbCgpO1xyXG4gICAgICBpZiAoYS5jaGFyZ2UgPiAwKSB7XHJcbiAgICAgICAgaWYgKGEuY2hhcmdlID4gMSlcclxuICAgICAgICAgIHMgKz0gYS5jaGFyZ2U7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcyArPSBcIitcIjtcclxuICAgICAgfSBlbHNlIGlmIChhLmNoYXJnZSA8IDApIHtcclxuICAgICAgICBpZiAoYS5jaGFyZ2UgPiAxKVxyXG4gICAgICAgICAgcyArPSBhLmNoYXJnZTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBzICs9IFwiLVwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC52YWx1ZSA9IHM7XHJcbiAgICB9IGVsc2UgaWYgKHNocCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC52YWx1ZSA9IHNocC50ZXh0O1xyXG4gICAgfSBlbHNlIGlmIChzdHIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQudmFsdWUgPSBzdHI7XHJcbiAgICAgIHNlbGVjdGFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gZG9qby5hdHRyKHRoaXMudGV4dGVkaXRvci5lZCwgXCJjaGFuZ2VkXCIsICcnKTtcclxuXHJcbiAgICB0aGlzLnR4dEF1dG9zaXplKCk7XHJcbiAgICBpZiAoc2VsZWN0YWxsKVxyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuc2VsZWN0KCk7XHJcbiAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuZm9jdXMoKTtcclxuICAgIHRoaXMudGV4dGVkaXRvci5zaG93dGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyQXRvbVR5cGUocSkge1xyXG4gICAgaWYgKHRoaXMudGV4dGVkaXRvci5hdG9tID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHJldHVybiBKU0RyYXcyLlN1cGVyQXRvbXMuZmlsdGVyKHEsIEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc3VnZ2VzdGNvdW50ID4gMCA/IEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuc3VnZ2VzdGNvdW50IDogMTApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlSW1hZ2VUbyhwYXJlbnQpIHtcclxuICAgIGlmICghc2NpbC5VdGlscy5zZXJ2aWNlQXZhaWxhYmxlKCkgfHwgcGFyZW50ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodHlwZW9mIChwYXJlbnQpID09IFwic3RyaW5nXCIpXHJcbiAgICAgIHBhcmVudCA9IHNjaWwuYnlJZChwYXJlbnQpO1xyXG5cclxuICAgIGNvbnN0IGpzZHJhdyA9IHRoaXMuZ2V0WG1sKCk7XHJcbiAgICBzY2lsLlV0aWxzLmFqYXgoSlNEcmF3U2VydmljZXMudXJsICsgXCI/Y21kPWpzZHJhdzJpbWdcIiwgZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChwYXJlbnQsIFwiaW1nXCIsIG51bGwsIG51bGwsIHtzcmM6IHJldC5zcmMsIGpzZHJhdzogSlNEcmF3Mi5CYXNlNjQuZW5jb2RlKGpzZHJhdyl9KTtcclxuICAgIH0sIHtqc2RyYXc6IGpzZHJhd30pO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tUZXh0SXRlbShzKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLmF0b20gIT0gbnVsbCkge1xyXG4gICAgICBpZiAocyA9PSBcIi4uLlwiKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVGV4dEVkaXRvcih0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5tLnNldFNlbGVjdGVkKGZhbHNlKTtcclxuICAgICAgICB0aGlzLnRleHRlZGl0b3IuYXRvbS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKGZhbHNlKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuc2hvd1BUKGZ1bmN0aW9uKGVsZW0pIHsgbWUubWVudVNldEF0b21UeXBlMihlbGVtKTsgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVGV4dEVkaXRvcigpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnR4dEF1dG9zaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnNlcnRTeW1ib2woc3ltYm9sKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLmVkID09IG51bGwgfHwgdGhpcy50ZXh0ZWRpdG9yLmVkLmlucHV0LnN0eWxlLmRpc3BsYXkgPT0gXCJub25lXCIpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC5mb2N1cygpO1xyXG5cclxuICAgIGxldCBjYXJldHBvc2l0aW9uID0gSlNEcmF3Mi5TeW1ib2wuZ2V0Q2FyZXRQb3NpdGlvbih0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQpO1xyXG4gICAgY29uc3QgcyA9IHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC52YWx1ZTtcclxuICAgIGlmIChjYXJldHBvc2l0aW9uID4gMCAmJiBjYXJldHBvc2l0aW9uIDwgcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy50ZXh0ZWRpdG9yLmVkLmlucHV0LnZhbHVlID0gcy5zdWJzdHIoMCwgY2FyZXRwb3NpdGlvbikgKyBzeW1ib2wgKyBzLnN1YnN0cihjYXJldHBvc2l0aW9uKTtcclxuICAgICAgKytjYXJldHBvc2l0aW9uO1xyXG4gICAgICBKU0RyYXcyLlN5bWJvbC5zZXRDYXJldFBvc2l0aW9uKHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dCwgY2FyZXRwb3NpdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQudmFsdWUgKz0gc3ltYm9sO1xyXG4gICAgfVxyXG4gICAgdGhpcy50eHRBdXRvc2l6ZSgpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaGlkZVRleHRFZGl0b3IoY2FuY2VsPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMudGV4dGVkaXRvci5lZCA9PSBudWxsIHx8IHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC5zdHlsZS5kaXNwbGF5ID09IFwibm9uZVwiKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMudGV4dGVkaXRvci5zaG93dGltZSAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHRtID0gdGhpcy50ZXh0ZWRpdG9yLnNob3d0aW1lO1xyXG4gICAgICB0aGlzLnRleHRlZGl0b3Iuc2hvd3RpbWUgPSBudWxsO1xyXG4gICAgICBpZiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0bSA8IDUwMClcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0ZWRpdG9yLmVkLmhpZGUoKTtcclxuICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgdGhpcy50ZXh0ZWRpdG9yLmhpZGV0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgbGV0IHMgPSBzY2lsLlV0aWxzLnRyaW0odGhpcy50ZXh0ZWRpdG9yLmVkLmlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC52YWx1ZSA9IFwiXCI7XHJcbiAgICBpZiAoY2FuY2VsID09IHRydWUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9udmFsaWRhdGV0ZXh0ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbnZhbGlkYXRldGV4dChzLCB0aGlzLnRleHRlZGl0b3IsIHRoaXMpID09IGZhbHNlKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoSlNEcmF3Mi5TeW1ib2wgIT0gbnVsbClcclxuICAgICAgSlNEcmF3Mi5TeW1ib2wuaGlkZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnRleHRlZGl0b3IuYXRvbSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzID09IFwiXCIpXHJcbiAgICAgICAgcyA9IFwiQ1wiO1xyXG4gICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcblxyXG4gICAgICBsZXQgZjtcclxuICAgICAgaWYgKHRoaXMudGV4dGVkaXRvci5hdG9tLmJpbyAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsICYmIHNjaWwuaGVsbS5pc0hlbG1Ob2RlKHRoaXMudGV4dGVkaXRvci5hdG9tKSkge1xyXG4gICAgICAgICAgZiA9IHRoaXMuaGVsbS5zZXROb2RlVHlwZUZyb21HdWkodGhpcy50ZXh0ZWRpdG9yLmF0b20sIHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzID0gSlNEcmF3Mi5Gb3JtdWxhUGFyc2VyLnN0cmlwSHMocyk7XHJcbiAgICAgICAgZiA9IHRoaXMubS5zZXRBdG9tQWxpYXModGhpcy50ZXh0ZWRpdG9yLmF0b20sIHMpIHx8IHRoaXMubS5zZXRBdG9tVHlwZSh0aGlzLnRleHRlZGl0b3IuYXRvbSwgcywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmKSB7XHJcbiAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRleHRlZGl0b3Iuc2hhcGUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLnNoYXBlLnRleHQgIT0gcykge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICB0aGlzLnRleHRlZGl0b3Iuc2hhcGUudGV4dCA9IHM7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLnRleHQgPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBvZmZzZXQgPSBzY2lsLlV0aWxzLmdldE9mZnNldCh0aGlzLmRpdiwgZmFsc2UpO1xyXG4gICAgICAgIGNvbnN0IHJlY3QgPSBzY2lsLlV0aWxzLnN0eWxlUmVjdCh0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQpO1xyXG4gICAgICAgIHJlY3Qub2Zmc2V0KC1vZmZzZXQueCwgLW9mZnNldC55KTtcclxuICAgICAgICBjb25zdCB0eHQgPSBuZXcgSlNEcmF3Mi5UZXh0KHJlY3QsIHMpO1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICB0aGlzLm0uYWRkR3JhcGhpY3ModHh0KTtcclxuICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHMgPT0gdGhpcy50ZXh0ZWRpdG9yLnRleHQudGV4dClcclxuICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgIGlmIChzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgdGhpcy50ZXh0ZWRpdG9yLnRleHQuX3BhcmVudC5kZWxPYmplY3QodGhpcy50ZXh0ZWRpdG9yLnRleHQpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMudGV4dGVkaXRvci50ZXh0LnRleHQgPSBzO1xyXG4gICAgICAgIGlmICh0aGlzLnRleHRlZGl0b3IudGV4dC5maWVsZHR5cGUgPT0gXCJCUkFDS0VUX1RZUEVcIiAmJiB0aGlzLnRleHRlZGl0b3IudGV4dC5hbmNob3JzLmxlbmd0aCA9PSAxICYmIEpTRHJhdzIuQnJhY2tldC5jYXN0KHRoaXMudGV4dGVkaXRvci50ZXh0LmFuY2hvcnNbMF0pICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChzY2lsLlV0aWxzLmlzTnVtYmVyKHMpKVxyXG4gICAgICAgICAgICB0aGlzLnRleHRlZGl0b3IudGV4dC5hbmNob3JzWzBdLnR5cGUgPSBcIm11bFwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLnRleHRlZGl0b3IudGV4dC5hbmNob3JzWzBdLnR5cGUgPSBzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRleHRlZGl0b3IudGV4dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93VGVtcGxhdGVzRGxnKCkge1xyXG4gICAgSlNEcmF3Mi5DdXN0b21UZW1wbGF0ZXMuc2hvdyhmYWxzZSwgdGhpcyk7XHJcbiAgfVxyXG5cclxuICBzaG93U3ltYm9sRGxnKCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnRleHRlZGl0b3IgPT0gbnVsbCB8fCB0aGlzLnRleHRlZGl0b3IuZWQgPT0gbnVsbCA/IG51bGwgOiB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQ7XHJcbiAgICBjb25zdCBwdCA9IGlucHV0ID09IG51bGwgfHwgaW5wdXQuc3R5bGUuZGlzcGxheSA9PSBcIm5vbmVcIiA/IG51bGwgOiB7eDogaW5wdXQub2Zmc2V0TGVmdCwgeTogaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0ICsgNX07XHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBKU0RyYXcyLlN5bWJvbC5zaG93KGZhbHNlLCBmdW5jdGlvbihzKSB7IHJldHVybiBtZS5pbnNlcnRTeW1ib2wocyk7IH0sIHB0KTtcclxuICB9XHJcblxyXG4gIHR4dEtleXByZXNzKGUpIHtcclxuICAgIGlmICgoZS5rZXlDb2RlID09IDQwIHx8IGUua2V5Q29kZSA9PSAzOCkgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpICYmIEpTRHJhdzIuU3ltYm9sICE9IG51bGwpIHtcclxuICAgICAgaWYgKGUua2V5Q29kZSA9PSA0MClcclxuICAgICAgICB0aGlzLnNob3dTeW1ib2xEbGcoKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIEpTRHJhdzIuU3ltYm9sLmhpZGUoKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PSAyNyB8fCBlLmtleUNvZGUgPT0gMTMpIHtcclxuICAgICAgdGhpcy5oaWRlVGV4dEVkaXRvcihlLmtleUNvZGUgPT0gMjcpO1xyXG4gICAgICBlLnRpbWUyID0gOTAzO1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMudHh0QXV0b3NpemUoKTtcclxuICB9XHJcblxyXG4gIHR4dEF1dG9zaXplKCkge1xyXG4gICAgY29uc3QgdyA9IHNjaWwuVXRpbHMudGV4dFdpZHRoKHRoaXMudGV4dGVkaXRvci5lZC5pbnB1dC52YWx1ZSkgKiB0aGlzLmZvbnRzaXplICogMC42ICsgdGhpcy5mb250c2l6ZSAqIDM7XHJcbiAgICB0aGlzLnRleHRlZGl0b3IuZWQuaW5wdXQuc3R5bGUud2lkdGggPSAodyA8IDEwMCA/IDEwMCA6IHcpICsgXCJweFwiO1xyXG4gICAgdGhpcy50ZXh0ZWRpdG9yLmVkLnVwZGF0ZURyb3Bkb3duU2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgX3NldG1vbChtKSB7XHJcbiAgICB0aGlzLm0gPSBtO1xyXG4gICAgdGhpcy5tLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyA9IHRoaXMub3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnM7XHJcbiAgICB0aGlzLnN0YXJ0ID0gbnVsbDtcclxuICAgIHRoaXMuZW5kID0gbnVsbDtcclxuICAgIHRoaXMuc3RhdHVzID0gbnVsbDtcclxuICAgIHRoaXMuY3VyT2JqZWN0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjYWxlIHRoZSBtb2xlY3VsZVxyXG4gICAqIEBmdW5jdGlvbiBzY2FsZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzIC0gdGhlIHNjYWxpbmcgZmFjdG9yXHJcbiAgICogQHBhcmFtIHtQb2ludH0gb3JpZ2luIC0gdGhlIHNjYWxpbmcgb3JpZ2luXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHNjYWxlKHMsIG9yaWdpbj86IFBvaW50KSB7XHJcbiAgICBpZiAocyA8PSAwIHx8IHMgPT0gMS4wKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuYm9uZGxlbmd0aCAqIHMgPCBKU0RyYXcyLnNwZWVkdXAubWluYm9uZGxlbmd0aClcclxuICAgICAgcyA9IEpTRHJhdzIuc3BlZWR1cC5taW5ib25kbGVuZ3RoIC8gdGhpcy5ib25kbGVuZ3RoO1xyXG5cclxuICAgIHRoaXMubS5zY2FsZShzLCBvcmlnaW4pO1xyXG4gICAgdGhpcy5ib25kbGVuZ3RoICo9IHM7XHJcbiAgICB0aGlzLnRvciAqPSBzO1xyXG4gICAgdGhpcy5saW5ld2lkdGggKj0gcztcclxuICAgIHRoaXMuZm9udHNpemUgKj0gcztcclxuXHJcbiAgICBpZiAob3JpZ2luID09IG51bGwpXHJcbiAgICAgIHRoaXMubW92ZUNlbnRlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IG1vZGlmaWVkIGZsYWdcclxuICAgKiBAZnVuY3Rpb24gc2V0TW9kaWZpZWRcclxuICAgKiBAcGFyYW0ge2Jvb2x9IGYgLSB0cnVlIG9yIGZhbHNlXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHNldE1vZGlmaWVkKGYpIHtcclxuICAgIHRoaXMubW9kaWZpZWQgPSBmO1xyXG4gICAgaWYgKGYgPT0gZmFsc2UpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uZGF0YWNoYW5nZSAhPSBudWxsICYmIHRoaXMubG9hZGVkKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm9uZGF0YWNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMub25kYXRhY2hhbmdlKHRoaXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBldmFsKHRoaXMub3B0aW9ucy5vbmRhdGFjaGFuZ2UpKHRoaXMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZnJlc2ggdGhlIGRpc3BsYXlcclxuICAgKiBAZnVuY3Rpb24gcmVmcmVzaFxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gbW9kaWZpZWQgLSBtb2RpZmllZCBmbGFnXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHJlZnJlc2gobW9kaWZpZWQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLm0uc3RhdHMgPSBudWxsO1xyXG4gICAgaWYgKG1vZGlmaWVkID09IHRydWUgfHwgbW9kaWZpZWQgPT0gZmFsc2UpXHJcbiAgICAgIHRoaXMuc2V0TW9kaWZpZWQobW9kaWZpZWQpO1xyXG4gICAgdGhpcy5yZWRyYXcoKTtcclxuICB9XHJcblxyXG4gIGNhbGNUZXh0UmVjdCgpIHtcclxuICAgIGlmICh0aGlzLnN1cmZhY2UgPT0gbnVsbCB8fCBzY2lsLlV0aWxzLmlzSUU4TG93ZXIgJiYgdGhpcy5zdXJmYWNlLnJhd05vZGUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGcgPSB0aGlzLmNyZWF0ZUdyb3VwKCk7XHJcbiAgICB0aGlzLm0uZHJhdyhnLCB0aGlzLmxpbmV3aWR0aCwgdGhpcy5mb250c2l6ZSwgdHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnN1cmZhY2UucmVtb3ZlKGcpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlR3JvdXAocGFyZW50PzogYW55KSB7XHJcbiAgICBjb25zdCBnID0gKHBhcmVudCA9PSBudWxsID8gdGhpcy5zdXJmYWNlIDogcGFyZW50KS5jcmVhdGVHcm91cCgpO1xyXG4gICAgaWYgKGRvam94LmdmeC5yZW5kZXJlciA9PSBcInN2Z1wiKVxyXG4gICAgICBnLnJhd05vZGUuc2V0QXR0cmlidXRlKFwiX19zdXJmYWNlX3BhcmVudGlkXCIsIHRoaXMuaWQpO1xyXG4gICAgcmV0dXJuIGc7XHJcbiAgfVxyXG5cclxuICBtb3ZldmlldyhwKSB7XHJcbiAgICB0aGlzLnZpZXdvZmZzZXQgPSBwO1xyXG4gICAgaWYgKHRoaXMudmlld29mZnNldCAhPSBudWxsKVxyXG4gICAgICB0aGlzLnN1cmZhY2Uucm9vdGdyb3VwLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUodGhpcy52aWV3b2Zmc2V0LngsIHRoaXMudmlld29mZnNldC55KV0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnN1cmZhY2Uucm9vdGdyb3VwLnNldFRyYW5zZm9ybShbZG9qb3guZ2Z4Lm1hdHJpeC50cmFuc2xhdGUoMCwgMCldKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZHJhdyB0aGUgbW9sZWN1bGVcclxuICAgKiBAZnVuY3Rpb24gcmVkcmF3XHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHJlZHJhdyhleHRyYU9ubHk/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5zdXJmYWNlID09IG51bGwgfHwgc2NpbC5VdGlscy5pc0lFOExvd2VyICYmIHRoaXMuc3VyZmFjZS5yYXdOb2RlID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5zdXJmYWNlLnJvb3Rncm91cCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc3VyZmFjZS5yb290Z3JvdXAgPSB0aGlzLmNyZWF0ZUdyb3VwKCk7XHJcblxyXG4gICAgICBpZiAoSlNEcmF3Mi5TZWN1cml0eS5lcnJvciAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zdXJmYWNlLmNyZWF0ZVRleHQoe3g6IDUsIHk6IDI1LCB0ZXh0OiBKU0RyYXcyLlNlY3VyaXR5LmVycm9yLCBhbGlnbjogXCJzdGFydFwifSlcclxuICAgICAgICAgIC5zZXRGb250KHtmYW1pbHk6IFwiQXJpYWxcIiwgc2l6ZTogXCIyMHB4XCIsIHdlaWdodDogXCJub3JtYWxcIn0pXHJcbiAgICAgICAgICAuc2V0RmlsbChcIiNmZmUwZTBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZpZXdvZmZzZXQgIT0gbnVsbClcclxuICAgICAgdGhpcy5zdXJmYWNlLnJvb3Rncm91cC5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXgudHJhbnNsYXRlKHRoaXMudmlld29mZnNldC54LCB0aGlzLnZpZXdvZmZzZXQueSldKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zdXJmYWNlLnJvb3Rncm91cC5zZXRUcmFuc2Zvcm0obnVsbCk7XHJcblxyXG4gICAgdGhpcy5fY2xlYXJpbmcgPSB0cnVlO1xyXG4gICAgaWYgKGV4dHJhT25seSkge1xyXG4gICAgICBpZiAodGhpcy5zdXJmYWNlLmV4dHJhICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnN1cmZhY2UuZXh0cmEuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnN1cmZhY2UuZXh0cmEubGFzc28gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN1cmZhY2Uucm9vdGdyb3VwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuc3VyZmFjZS5leHRyYSA9IG51bGw7XHJcbiAgICAgIHRoaXMuX2NsZWFyaW5nID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmNyZWF0ZUdyb3VwKHRoaXMuc3VyZmFjZS5yb290Z3JvdXApO1xyXG4gICAgICBnLm1vbm9jb2xvciA9IHRoaXMub3B0aW9ucy5tb25vY29sb3IgfHwgSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5tb25vY29sb3I7XHJcbiAgICAgIHRoaXMuc2ltcGxlZHJhdyA9IHRoaXMuZm9udHNpemUgPD0gSlNEcmF3Mi5zcGVlZHVwLmZvbnRzaXplO1xyXG4gICAgICB0aGlzLnVwZGF0ZUdyb3VwUmVjdCgpO1xyXG4gICAgICB0aGlzLm0uZHJhdyhnLCB0aGlzLmxpbmV3aWR0aCwgdGhpcy5mb250c2l6ZSwgbnVsbCwgdGhpcy5kaW1lbnNpb24sIHRoaXMub3B0aW9ucy5oaWdobGlnaHRlcnJvcnMsIHRoaXMub3B0aW9ucy5zaG93Y2FyYm9uLCB0aGlzLnNpbXBsZWRyYXcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNtZCA9IHRoaXMuZ2V0Q21kKCk7XHJcbiAgICBpZiAodGhpcy5zdXJmYWNlLmV4dHJhID09IG51bGwpXHJcbiAgICAgIHRoaXMuc3VyZmFjZS5leHRyYSA9IHRoaXMuY3JlYXRlR3JvdXAodGhpcy5zdXJmYWNlLnJvb3Rncm91cCk7XHJcbiAgICBjb25zdCBleHRyYSA9IHRoaXMuc3VyZmFjZS5leHRyYTtcclxuICAgIGlmICh0aGlzLmN1ck9iamVjdCAhPSBudWxsKVxyXG4gICAgICB0aGlzLmN1ck9iamVjdC5kcmF3Q3VyKGV4dHJhLCB0aGlzLmZvbnRzaXplIC8gMiArIDEsIEpTRHJhdzIuRWRpdG9yLkNPTE9SQ1VSUkVOVCwgdGhpcy5tLCBjbWQpO1xyXG5cclxuICAgIGlmICh0aGlzLnN0YXJ0ICE9IG51bGwgJiYgdGhpcy5lbmQgIT0gbnVsbCkge1xyXG4gICAgICBzd2l0Y2ggKGNtZCkge1xyXG4gICAgICBjYXNlIFwiYXJyb3dcIjpcclxuICAgICAgICBpZiAodGhpcy5hcnJvd3Rvb2wgIT0gbnVsbCAmJiB0aGlzLmFycm93dG9vbC5jb25uZWN0b3IgPT0gXCJyZWplY3RvclwiKVxyXG4gICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0Fycm93KGV4dHJhLCB0aGlzLnN0YXJ0LCB0aGlzLmVuZCwgXCJncmF5XCIsIHRoaXMubGluZXdpZHRoLCB0aGlzLmxpbmV3aWR0aCAqIDIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdBcnJvdyhleHRyYSwgdGhpcy5zdGFydCwgdGhpcy5lbmQsIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJjdXJ2ZVwiOlxyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdDdXJ2ZUFycm93KGV4dHJhLCB0aGlzLnN0YXJ0LCB0aGlzLmVuZCwgbnVsbCwgbnVsbCwgXCJncmF5XCIsIHRoaXMubGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3UmVjdChleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCAvIDIsIDUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYXNzYXljdXJ2ZVwiOlxyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdSZWN0KGV4dHJhLCBuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHRoaXMuc3RhcnQsIHRoaXMuZW5kKSwgXCJncmF5XCIsIHRoaXMubGluZXdpZHRoIC8gNCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzcGVjdHJ1bVwiOlxyXG4gICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdSZWN0KGV4dHJhLCBuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHRoaXMuc3RhcnQsIHRoaXMuZW5kKSwgXCJncmF5XCIsIHRoaXMubGluZXdpZHRoIC8gNCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0VsbGlwc2UoZXh0cmEsIG5ldyBKU0RyYXcyLlJlY3QoKS5zZXQodGhpcy5zdGFydCwgdGhpcy5lbmQpLCBcImdyYXlcIiwgdGhpcy5saW5ld2lkdGggLyAyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImRpYW1vbmRcIjpcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3RGlhbW9uZChleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZHJldmVyc2VkXCI6XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0RTaGFwZShleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCAvIDIsIHRydWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZHNoYXBlXCI6XHJcbiAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0RTaGFwZShleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCAvIDIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZG91YmxlYXJyb3dcIjpcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3RG91YmxlQXJyb3coZXh0cmEsIG5ldyBKU0RyYXcyLlJlY3QoKS5zZXQodGhpcy5zdGFydCwgdGhpcy5lbmQpLCBcImdyYXlcIiwgdGhpcy5saW5ld2lkdGgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwidGxjXCI6XHJcbiAgICAgIGNhc2UgXCJlbGVjdHJvcGhvcmVzaXNcIjpcclxuICAgICAgICBpZiAodGhpcy5tb3ZpbmdDbG9uZSA9PSBudWxsKVxyXG4gICAgICAgICAgbmV3IEpTRHJhdzIuVExDLmNyZWF0ZShjbWQsIHRoaXMuc3RhcnQsIHRoaXMuZW5kLCB0aGlzLmZvbnRzaXplIC8gMikuZHJhdyhleHRyYSwgdGhpcy5saW5ld2lkdGgsIG51bGwsIHRoaXMuZm9udHNpemUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJsYXNzb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZnJhZ1wiOlxyXG4gICAgICBjYXNlIFwiem9vbWJveFwiOlxyXG4gICAgICAgIGlmICh0aGlzLm1vdmluZ0Nsb25lID09IG51bGwpXHJcbiAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3UmVjdChleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiI2FhYWFmZlwiLCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImJyYWNrZXRcIjpcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3QnJhY2tldChleHRyYSwgbmV3IEpTRHJhdzIuUmVjdCgpLnNldCh0aGlzLnN0YXJ0LCB0aGlzLmVuZCksIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJjaGFpblwiOiB7XHJcbiAgICAgICAgbGV0IHB0cztcclxuICAgICAgICBpZiAodGhpcy5jaGFpbnRvb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgcHRzID0gdGhpcy5jaGFpbnRvb2wucG9pbnRzO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwdHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdMaW5lKGV4dHJhLCBwdHNbaSAtIDFdLCBwdHNbaV0sIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIShzY2lsLlV0aWxzLmlzSUUgJiYgc2NpbC5VdGlscy5pc0lFIDwgOSAmJiB0aGlzLm9wdGlvbnMuYXBwbW9kZSkpXHJcbiAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChleHRyYSwgcHRzW3B0cy5sZW5ndGggLSAxXSwgcHRzLmxlbmd0aCAtIDEsIFwiZ3JheVwiLCB0aGlzLmZvbnRzaXplKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjbWQgPT0gXCJzZ3JvdXBcIilcclxuICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdBcnJvdyhleHRyYSwgdGhpcy5zdGFydCwgdGhpcy5lbmQsIFwicmVkXCIsIHRoaXMubGluZXdpZHRoIC8gMik7XHJcbiAgICAgICAgZWxzZSBpZiAoY21kICE9IFwicm90YXRlXCIgJiYgY21kICE9IFwiZXJhc2VyXCIgJiYgY21kICE9IFwicGx1c1wiICYmIGNtZCAhPSBcInJ4bm1hcFwiICYmIGNtZCAhPSBcInRleHRcIiAmJlxyXG4gICAgICAgICAgY21kICE9IFwidW5kb1wiICYmIGNtZCAhPSBcInJlZG9cIiAmJiBjbWQgIT0gXCJ6b29taW5cIiAmJiBjbWQgIT0gXCJ6b29tb3V0XCIpXHJcbiAgICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3TGluZShleHRyYSwgdGhpcy5zdGFydCwgdGhpcy5lbmQsIFwiZ3JheVwiLCB0aGlzLmxpbmV3aWR0aCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdGF0dXMgIT0gbnVsbCAmJiB0aGlzLnN0YXR1cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHkgPSB0aGlzLmRpbWVuc2lvbi55IC0gMTA7XHJcbiAgICAgIGV4dHJhLmNyZWF0ZVRleHQoe3g6IDUsIHk6IHksIHRleHQ6IHRoaXMuc3RhdHVzLCBhbGlnbjogXCJib3R0b21cIn0pXHJcbiAgICAgICAgLnNldEZvbnQoe2ZhbWlseTogXCJBcmlhbFwiLCBzaXplOiBcIjE0cHhcIiwgd2VpZ2h0OiBcIm5vcm1hbFwifSlcclxuICAgICAgICAuc2V0RmlsbChcIiMwMDBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaXQgdGhlIG1vbGVjdWxlIHRvIHRoZSB2aWV3IHdpbmRvd1xyXG4gICAqIEBmdW5jdGlvbiBmaXRUb1dpbmRvd1xyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhCb25kTGVuZ3RoIC0gbWF4aW11bSBib25kIGxlbmd0aFxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBmaXRUb1dpbmRvdyhtYXhCb25kTGVuZ3RoPzogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZWN0ID0gdGhpcy5tLnJlY3QoKTtcclxuICAgIGlmIChyZWN0ID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAobWF4Qm9uZExlbmd0aCA9PSBudWxsKSB7XHJcbiAgICAgIG1heEJvbmRMZW5ndGggPSBKU0RyYXcyLkVkaXRvci5CT05ETEVOR1RIO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlID4gMClcclxuICAgICAgICBtYXhCb25kTGVuZ3RoICo9IHRoaXMub3B0aW9ucy5zY2FsZTtcclxuICAgIH1cclxuXHJcbiAgICByZWN0LmluZmxhdGUodGhpcy5ib25kbGVuZ3RoLCB0aGlzLmJvbmRsZW5ndGgpO1xyXG4gICAgY29uc3QgaHMgPSByZWN0LndpZHRoIC8gdGhpcy5kaW1lbnNpb24ueDtcclxuICAgIGNvbnN0IHZzID0gcmVjdC5oZWlnaHQgLyB0aGlzLmRpbWVuc2lvbi55O1xyXG5cclxuICAgIGxldCBzO1xyXG4gICAgaWYgKGhzID09IDApXHJcbiAgICAgIHMgPSB2cztcclxuICAgIGVsc2UgaWYgKHZzID09IDApXHJcbiAgICAgIHMgPSBocztcclxuICAgIGVsc2VcclxuICAgICAgcyA9IE1hdGgubWF4KHZzLCBocyk7XHJcblxyXG4gICAgaWYgKG1heEJvbmRMZW5ndGggPiAwICYmIHRoaXMuYm9uZGxlbmd0aCAvIHMgPiBtYXhCb25kTGVuZ3RoKVxyXG4gICAgICBzID0gdGhpcy5ib25kbGVuZ3RoIC8gbWF4Qm9uZExlbmd0aDtcclxuXHJcbiAgICBpZiAocyA9PSAxLjApXHJcbiAgICAgIHRoaXMubW92ZUNlbnRlcigpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNjYWxlKDEuMCAvIHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW92ZSB0aGUgc3RydWN0dXJlIHRvIGNlbnRlciBvZiB0aGUgdmlldyB3aW5kb3dcclxuICAgKiBAZnVuY3Rpb24gbW92ZUNlbnRlclxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBtb3ZlQ2VudGVyKCkge1xyXG4gICAgdGhpcy5tLm1vdmVDZW50ZXIodGhpcy5kaW1lbnNpb24ueCwgdGhpcy5kaW1lbnNpb24ueSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVHcm91cFJlY3QoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBnID0gSlNEcmF3Mi5Hcm91cC5jYXN0KHRoaXMubS5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChnICE9IG51bGwpXHJcbiAgICAgICAgZy5fdXBkYXRlUmVjdCh0aGlzLm0sIHRoaXMuYm9uZGxlbmd0aCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhbiB1cCByZWFjdGlvblxyXG4gICAqIEBmdW5jdGlvbiBjbGVhbnVwUnhuXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBpdCBpcyBhIHJlYWN0aW9uXHJcbiAgICovXHJcbiAgY2xlYW51cFJ4bihib25kbGVuZ3RoOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLm0uY2xlYW51cFJ4bih0aGlzLmJvbmRsZW5ndGgpO1xyXG4gICAgaWYgKGYpXHJcbiAgICAgIHRoaXMuZml0VG9XaW5kb3codGhpcy5ib25kbGVuZ3RoKTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgc2V0UnhuKHJ4bjogYW55LCByZWRyYXc6IGJvb2xlYW4sIGJvbmRsZW5ndGg/OiBudW1iZXIsIGFkZGxhYmVsPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgaWYgKGJvbmRsZW5ndGggIT0gbnVsbClcclxuICAgICAgdGhpcy5ib25kbGVuZ3RoID0gYm9uZGxlbmd0aDtcclxuXHJcbiAgICBpZiAoYWRkbGFiZWwpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByeG4ucmVhY3RhbnRzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHJ4bi5yZWFjdGFudHNbaV0ucmVtb3ZlVGV4dEJ5RmllbGRUeXBlKFwiUlhOTEFCRUxcIik7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnhuLnByb2R1Y3RzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHJ4bi5wcm9kdWN0c1tpXS5yZW1vdmVUZXh0QnlGaWVsZFR5cGUoXCJSWE5MQUJFTFwiKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm0uc2V0UnhuKHJ4biwgdGhpcy5ib25kbGVuZ3RoKTtcclxuICAgIHRoaXMuY2FsY1RleHRSZWN0KCk7XHJcbiAgICB0aGlzLm0uX2xheW91dFJ4bihyeG4sIHRoaXMuYm9uZGxlbmd0aCk7XHJcblxyXG4gICAgaWYgKGFkZGxhYmVsKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnhuLnJlYWN0YW50cy5sZW5ndGg7ICsraSlcclxuICAgICAgICB0aGlzLm0uX2FkZFJ4bkxhYmVsKHJ4bi5yZWFjdGFudHNbaV0sIHRoaXMuYm9uZGxlbmd0aCAvIDIpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5wcm9kdWN0cy5sZW5ndGg7ICsraSlcclxuICAgICAgICB0aGlzLm0uX2FkZFJ4bkxhYmVsKHJ4bi5wcm9kdWN0c1tpXSwgdGhpcy5ib25kbGVuZ3RoIC8gMik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maXRUb1dpbmRvdyh0aGlzLmJvbmRsZW5ndGgpO1xyXG4gICAgaWYgKHJlZHJhdyAhPSBmYWxzZSlcclxuICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBjb250ZW50c1xyXG4gICAqIEBmdW5jdGlvbiBjbGVhclxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gcmVkcmF3IC0gaW5kaWNhdGUgaWYgcmVkcmF3aW5nIHRoZSB2aWV3IHduZG93XHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIGNsZWFyKHJlZHJhdz86IGJvb2xlYW4sIGZpcmVldmVudHM/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBpc2VtcHR5ID0gdGhpcy5tLmlzRW1wdHkoKTtcclxuXHJcbiAgICB0aGlzLm0uY2xlYXIoKTtcclxuICAgIHRoaXMuY3VyT2JqZWN0ID0gbnVsbDtcclxuICAgIGlmIChyZWRyYXcpXHJcbiAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICB0aGlzLnJlc2V0U2NhbGUoKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGUgPiAwKVxyXG4gICAgICB0aGlzLnNjYWxlKHRoaXMub3B0aW9ucy5zY2FsZSk7XHJcbiAgICBpZiAodGhpcy5pbmsgIT0gbnVsbClcclxuICAgICAgdGhpcy5pbmsuY2xlYXIoKTtcclxuXHJcbiAgICBpZiAoIWlzZW1wdHkpIHtcclxuICAgICAgaWYgKGZpcmVldmVudHMgJiYgdGhpcy5vcHRpb25zLm9uQ2xlYXIgIT0gbnVsbClcclxuICAgICAgICB0aGlzLm9wdGlvbnMub25DbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXRvbShwKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tLnRvZ2dsZUF0b20ocCwgdGhpcy5zaW1wbGVkcmF3ID8gSlNEcmF3Mi5FZGl0b3IuVE9SIDogdGhpcy50b3IpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKHApIHtcclxuICAgIHJldHVybiB0aGlzLm0udG9nZ2xlKHAsIHRoaXMuc2ltcGxlZHJhdyA/IEpTRHJhdzIuRWRpdG9yLlRPUiA6IHRoaXMudG9yKTtcclxuICB9XHJcblxyXG4gIGZpeFdlZGdlRGlyKGIpIHtcclxuICAgIGNvbnN0IGF0b21zMSA9IHRoaXMubS5nZXROZWlnaGJvckF0b21zKGIuYTEsIGIuYTIpO1xyXG4gICAgY29uc3QgYXRvbXMyID0gdGhpcy5tLmdldE5laWdoYm9yQXRvbXMoYi5hMiwgYi5hMSk7XHJcbiAgICBpZiAoKGF0b21zMS5sZW5ndGggPT0gMCB8fCBhdG9tczEubGVuZ3RoID09IDEpICYmIGF0b21zMS5sZW5ndGggPCBhdG9tczIubGVuZ3RoKVxyXG4gICAgICBiLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZnJhZ21lbnQgY29udGFpbmluZyBhIGdpdmVuIGF0b21cclxuICAgKiBAZnVuY3Rpb24gZ2V0RnJhZ21lbnRcclxuICAgKiBAcGFyYW0ge0F0b219IGEgLSB0aGUgZ2l2ZW4gYXRvbVxyXG4gICAqIEByZXR1cm5zIHRoZSBmcmFnZW1lbnQgYXMgYSBNb2wgb2JqZWN0XHJcbiAgICovXHJcbiAgZ2V0RnJhZ21lbnQoYSkge1xyXG4gICAgY29uc3QgZnJhZ3MgPSB0aGlzLm0uc3BsaXRGcmFnbWVudHMoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhZ3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGZyYWdzW2ldLmNvbnRhaW5zQXRvbShhKSlcclxuICAgICAgICByZXR1cm4gZnJhZ3NbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY2VudGVyIG9mIGEgc2V0IG9mIGF0b21zXHJcbiAgICogQGZ1bmN0aW9uIGdldENlbnRlclxyXG4gICAqIEBwYXJhbSB7YXJyYXl9IGF0b21zIC0gYW4gYXJyYXkgb2YgYXRvbXNcclxuICAgKiBAcmV0dXJucyBhIFBvaW50IG9iamVjdFxyXG4gICAqL1xyXG4gIGdldENlbnRlcihhdG9tcz86IEF0b208VEJpbz5bXSkge1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG4gICAgaWYgKGF0b21zID09IG51bGwpXHJcbiAgICAgIGF0b21zID0gdGhpcy5tLmF0b21zO1xyXG4gICAgaWYgKGF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSBhdG9tc1tpXTtcclxuICAgICAgeCArPSBhLnAueDtcclxuICAgICAgeSArPSBhLnAueTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQoeCAvIGF0b21zLmxlbmd0aCwgeSAvIGF0b21zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSb3RhdGUgYXRvbXMgYXJvdW5kIGEgcG9pbnRcclxuICAgKiBAZnVuY3Rpb24gcm90YXRlXHJcbiAgICogQHBhcmFtIHthcnJheX0gYXRvbXMgLSBhbiBhcnJheSBvZiBhdG9tXHJcbiAgICogQHBhcmFtIHtQb2ludH0gb3JpZ2luIC0gcm90YXRpbmcgb3JnaW5cclxuICAgKiBAcGFyYW0ge2RlZ30gYXRvbXMgLSByb3RhdGluZyBkZWdyZWVcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgcm90YXRlKGF0b21zLCBvcmlnaW4sIGRlZykge1xyXG4gICAgaWYgKGF0b21zID09IG51bGwpXHJcbiAgICAgIGF0b21zID0gdGhpcy5tLmF0b21zO1xyXG5cclxuICAgIGlmIChNYXRoLmFicyhkZWcpIDwgMC4xIHx8IGF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSlcclxuICAgICAgYXRvbXNbaV0ucC5yb3RhdGVBcm91bmQob3JpZ2luLCBkZWcpO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gICAgbW91c2Vkb3duMihlKSB7XHJcbiAgLy8gICAgICAgIC8vIHNpbHZlcmxpZ2h0IC0gc2ltdWxhdGUgZG91YmxlLWNsaWNrXHJcbiAgLy8gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9wdXApIHtcclxuICAvLyAgICAgICAgICAgIGNvbnN0IHRtID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgLy8gICAgICAgICAgICBpZiAodGhpcy5fbGFzdE1vdXNlZG93blRtICE9IG51bGwgJiYgdG0gLSB0aGlzLl9sYXN0TW91c2Vkb3duVG0gPCAzMDApXHJcbiAgLy8gICAgICAgICAgICAgICAgdGhpcy5kYmxjbGljaygpO1xyXG4gIC8vICAgICAgICAgICAgdGhpcy5fbGFzdE1vdXNlZG93blRtID0gdG07XHJcbiAgLy8gICAgICAgIH1cclxuICAvLyAgICB9LFxyXG5cclxuICBzdGFydFJlc2l6ZShvYmosIHAsIGN0cmwsIGNtZCkge1xyXG4gICAgaWYgKG9iai5yZXNpemUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvcm5lciA9IG9iai5jb3JuZXJUZXN0KHAsIHRoaXMudG9yLCBjdHJsLCBjbWQpO1xyXG4gICAgaWYgKGNvcm5lciAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5yZXNpemluZyA9IHtjb3JuZXI6IGNvcm5lciwgb2JqOiBvYmosIHN0YXJ0OiBwLCBsaXN0OiBsaXN0fTtcclxuICAgICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdChvYmopO1xyXG4gICAgICBpZiAoYnIgIT0gbnVsbClcclxuICAgICAgICB0aGlzLnJlc2l6aW5nLnRleHRzID0gYnIuZ2V0VGV4dHModGhpcy5tKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbm5lY3RpbmdBdG9tQm9uZHMobGlzdCwgbm90dXNlZD86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGxpbmtzID0gW107XHJcbiAgICBpZiAobGlzdCAhPSBudWxsICYmIGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBtID0gbGlzdFswXS5fcGFyZW50O1xyXG4gICAgICBtLmNsZWFyRmxhZygpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgbGlzdFtpXS5mID0gdHJ1ZTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IG0uYm9uZHNbaV07XHJcbiAgICAgICAgaWYgKGIuYTEuZiAhPSBiLmEyLmYpIHtcclxuICAgICAgICAgIGxpbmtzLnB1c2goe2E6IGIuYTEuZiA/IGIuYTEgOiBiLmEyLCBiOiBifSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlua3M7XHJcbiAgfVxyXG5cclxuICBtb3VzZXdoZWVsKGU6IFdoZWVsRXZlbnQsIHZpZXdvbmx5PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlZCAmJiAhdmlld29ubHkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbWQgPSB0aGlzLmdldENtZCgpO1xyXG4gICAgaWYgKGNtZCAhPSBcIm1vdmV2aWV3XCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBsZXQgZGVsdGEgPSAoLWUuZGV0YWlsIHx8IChNYXRoLmFicyhlLmRlbHRhWSkgPiBNYXRoLmFicyhlLmRlbHRhWCkgPyBlLmRlbHRhWSA6IGUuZGVsdGFYKSk7XHJcbiAgICBpZiAoc2NpbC5VdGlscy5pc0ZpcmVmb3gpXHJcbiAgICAgIGRlbHRhICo9IDIwLjA7XHJcblxyXG4gICAgaWYgKGRlbHRhID4gMCB8fCBkZWx0YSA8IDApIHtcclxuICAgICAgY29uc3QgcCA9IHRoaXMuZXZlbnRQb2ludChlKTtcclxuICAgICAgdGhpcy5zY2FsZSgxLjAgKyBkZWx0YSAvIDUwMC4wLCBwKTtcclxuICAgICAgaWYgKCF2aWV3b25seSkge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8obnVsbCwgXCJtb3Zldmlld1wiKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2lsLlV0aWxzLmlzRmlyZWZveCkge1xyXG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgbW91c2Vkb3duKGU6IE1vdXNlRXZlbnQsIHZpZXdvbmx5PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlZCkge1xyXG4gICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbmV3IEpTRHJhdzIuUG9pbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xyXG4gICAgICBpZiAodmlld29ubHkgJiYgZS5idXR0b24gPT0gMClcclxuICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5ldmVudFBvaW50KGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb250ZXh0bWVudSAhPSBudWxsICYmIHRoaXMuY29udGV4dG1lbnUuaGlkZSgpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgSlNEcmF3Mi5NZW51LmNsb3NlKCk7XHJcbiAgICB0aGlzLmhvbGRpbmcuc3RhcnQoZSwgdGhpcyk7XHJcblxyXG4gICAgLy90aGlzLmRpdi5mb2N1cygpO1xyXG4gICAgaWYgKCFzY2lsLlV0aWxzLmlzVG91Y2ggJiYgZS5idXR0b24gIT0gKHNjaWwuVXRpbHMuaXNJRThMb3dlciA/IDEgOiAwKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc3RhcnQgPSBudWxsO1xyXG4gICAgdGhpcy5lbmQgPSBudWxsO1xyXG4gICAgdGhpcy5tb3ZpbmdDbG9uZSA9IG51bGw7XHJcbiAgICB0aGlzLnJlc2l6aW5nID0gbnVsbDtcclxuICAgIHRoaXMubGFzc29sYXN0ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBjbWQgPSB0aGlzLmdldENtZCgpO1xyXG5cclxuICAgIGNvbnN0IHRtID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCB0bTAgPSB0aGlzLl9sYXN0TW91c2Vkb3duVG07XHJcbiAgICB0aGlzLl9sYXN0TW91c2Vkb3duVG0gPSB0bTtcclxuICAgIGlmICh0bSAtIHRtMCA8IEpTRHJhdzIuRWRpdG9yLmRibGNsaWNrZGVsYXkgJiYgKGNtZCA9PSBcInNlbGVjdFwiIHx8IGNtZCA9PSBcImxhc3NvXCIgfHwgY21kID09IFwic2VsZnJhZ1wiKSkge1xyXG4gICAgICBpZiAodGhpcy5zdXJmYWNlLmV4dHJhICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5zdXJmYWNlLmV4dHJhLmxhc3NvID0gbnVsbDtcclxuICAgICAgdGhpcy5tb3VzZWRibGNsaWNrKGUpO1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwID0gdGhpcy5ldmVudFBvaW50KGUpIGFzIEV2ZW50UG9pbnQ8VEJpbz47XHJcbiAgICBpZiAoY21kID09IFwibW92ZXZpZXdcIikge1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gcDtcclxuICAgICAgdGhpcy52aWV3b2Zmc2V0ID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2lsLlV0aWxzLnN0YXJ0c3dpdGgoY21kLCBcInNwb3QtXCIpKSB7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSBwO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImlua3JlZFwiIHx8IGNtZCA9PSBcImlua2JsdWVcIiB8fCBjbWQgPT0gXCJpbmtncmVlblwiKSB7XHJcbiAgICAgIGlmICh0aGlzLmluayA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zdXJmYWNlLmluayA9IHRoaXMuY3JlYXRlR3JvdXAoKTtcclxuICAgICAgICB0aGlzLmluayA9IG5ldyBKU0RyYXcyLkluayh0aGlzLnN1cmZhY2UuaW5rKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluay5zdGFydChjbWQuc3Vic3RyKDMpLCBwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9iaiA9IHRoaXMudG9nZ2xlKHApO1xyXG4gICAgaWYgKGNtZCA9PSBcImVyYXNlclwiKSB7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSBwO1xyXG4gICAgICB0aGlzLmVyYXNlcmNhY2hlID0ge2NvdW50OiAwLCBjbG9uZWQ6IHRoaXMuY2xvbmUoKSwgc2luZ2xldG9uOiBmYWxzZX07XHJcbiAgICAgIGlmIChvYmogIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlRMQy5jYXN0KG9iaikgIT0gbnVsbCkge1xyXG4gICAgICAgICAgb2JqLmNvcm5lclRlc3QocCwgdGhpcy50b3IsIGZhbHNlLCBcImVyYXNlclwiKTtcclxuICAgICAgICAgIGlmIChvYmouY3Vyc3BvdCAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmVyYXNlcmNhY2hlLnNpbmdsZXRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGVsT2JqZWN0KG9iaik7XHJcbiAgICAgICAgKyt0aGlzLmVyYXNlcmNhY2hlLmNvdW50O1xyXG4gICAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kaXYuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1ck9iamVjdCA9IG9iajtcclxuICAgIHRoaXMuZGl2LnN0eWxlLmN1cnNvciA9IFwiY3Jvc3NoYWlyXCI7XHJcbiAgICBpZiAob2JqICE9IG51bGwpIHtcclxuICAgICAgaWYgKGNtZCA9PSBcInNlbGVjdFwiIHx8IGNtZCA9PSBcImxhc3NvXCIgfHwgY21kID09IFwic2VsZnJhZ1wiIHx8IChjbWQgPT0gXCJ0bGNcIiB8fCBjbWQgPT0gXCJlbGVjdHJvcGhvcmVzaXNcIikgJiYgSlNEcmF3Mi5UTEMuY2FzdChvYmopICE9IG51bGwpIHtcclxuICAgICAgICBpZiAob2JqLnNlbGVjdGVkICYmIG9iai5yZXNpemUgIT0gbnVsbCAmJiB0aGlzLm0uY291bnRTZWxlY3RlZCgpID09IDEpXHJcbiAgICAgICAgICB0aGlzLnN0YXJ0UmVzaXplKG9iaiwgcCwgZS5jdHJsS2V5IHx8IGUubWV0YUtleSwgY21kKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzaXppbmcgPT0gbnVsbCAmJiAhb2JqLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICBsZXQgYSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zdCBnID0gbnVsbDtcclxuICAgICAgICAgIGxldCBicjtcclxuICAgICAgICAgIGlmIChjbWQgPT0gXCJzZWxmcmFnXCIpIHtcclxuICAgICAgICAgICAgYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KG9iaik7XHJcbiAgICAgICAgICAgIGNvbnN0IGIgPSBKU0RyYXcyLkJvbmQuY2FzdDxUQmlvPihvYmopO1xyXG4gICAgICAgICAgICBjb25zdCBnID0gSlNEcmF3Mi5Hcm91cC5jYXN0KG9iaik7XHJcbiAgICAgICAgICAgIGJyID0gSlNEcmF3Mi5CcmFja2V0LmNhc3Qob2JqKTtcclxuICAgICAgICAgICAgaWYgKGIgIT0gbnVsbClcclxuICAgICAgICAgICAgICBhID0gYi5hMTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIWUuc2hpZnRLZXkpXHJcbiAgICAgICAgICAgIHRoaXMubS5zZXRTZWxlY3RlZChmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoYSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIHNlbGZyYWcgdG8gc2VsZWN0IGEgZnJhZ21lbnRcclxuICAgICAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG0gPSBhLl9wYXJlbnQuZ2V0RnJhZ21lbnQoYSwgYS5fcGFyZW50KTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0uYXRvbXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgICAgICBtLmF0b21zW2ldLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0uYm9uZHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICAgICAgICBtLmJvbmRzW2ldLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vbnNlbGVjdGlvbmNoYW5nZWQgIT0gbnVsbClcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25zZWxlY3Rpb25jaGFuZ2VkKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChnICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gc2VsZnJhZyB0byBzZWxlY3QgZ3JvdXAgYXRvbXNcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnLl9wYXJlbnQuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICBpZiAoZy5fcGFyZW50LmF0b21zW2ldLmdyb3VwID09IGcpXHJcbiAgICAgICAgICAgICAgICBnLl9wYXJlbnQuYXRvbXNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGJyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gc2VsZnJhZyB0byBzZWxlY3QgYnJhY2tldCBhdG9tc1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJyLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGJyLmF0b21zW2ldLmdyb3VwID09IGcpXHJcbiAgICAgICAgICAgICAgICBici5hdG9tc1tpXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9iai5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGIgPSBKU0RyYXcyLkJvbmQuY2FzdDxUQmlvPihvYmopO1xyXG4gICAgICAgICAgICBpZiAoYiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIGIuYTEuc2VsZWN0ZWQgPSBiLmEyLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuc3RhcnRSZXNpemUob2JqLCBwLCBlLmN0cmxLZXkgfHwgZS5tZXRhS2V5LCBjbWQgPT0gXCJ0bGNcIiB8fCBjbWQgPT0gXCJlbGVjdHJvcGhvcmVzaXNcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY21kICE9IFwidGxjXCIgJiYgY21kICE9IFwiZWxlY3Ryb3Bob3Jlc2lzXCIgfHwgdGhpcy5yZXNpemluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0ID0gcDtcclxuICAgICAgICAgIHRoaXMubW92aW5nQ2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgICB0aGlzLm1vdmluZ0Nsb25lLnN0YXJ0UHQgPSBwLmNsb25lKCk7XHJcbiAgICAgICAgICB0aGlzLmRpdi5zdHlsZS5jdXJzb3IgPSBcIm1vdmV2aWV3XCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY21kID09IFwidGxjXCIgfHwgY21kID09IFwiZWxlY3Ryb3Bob3Jlc2lzXCIpXHJcbiAgICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGExID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4ob2JqKTtcclxuICAgIGlmIChhMSAhPSBudWxsKSB7XHJcbiAgICAgIHAueCA9IGExLnAueDtcclxuICAgICAgcC55ID0gYTEucC55O1xyXG4gICAgICBwLmF0b20gPSBhMTtcclxuICAgIH1cclxuICAgIHRoaXMubGFzdG1vdmUgPSB0aGlzLnN0YXJ0ID0gcDtcclxuICAgIGlmICh0aGlzLnN0YXJ0LnRtID09IG51bGwpXHJcbiAgICAgIHRoaXMuc3RhcnQudG0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuXHJcbiAgICBpZiAoY21kID09IFwibGFzc29cIiAmJiBvYmogPT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWUuc2hpZnRLZXkgJiYgdGhpcy5tLnNldFNlbGVjdGVkKGZhbHNlKSA+IDApXHJcbiAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgdGhpcy5sYXNzb2xhc3QgPSBwO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImNoYWluXCIpIHtcclxuICAgICAgdGhpcy5jaGFpbnRvb2wgPSB7YTogYTEsIHN0YXJ0OiB0aGlzLnN0YXJ0LCBwMjogbnVsbCwgZW5kOiBudWxsLCBwb2ludHM6IFtdfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjbWQgPT0gXCJyb3RhdGVcIiAmJiBhMSA9PSBudWxsICYmICF0aGlzLm0uaXNFbXB0eSgpKSB7XHJcbiAgICAgIGNvbnN0IGF0b21zID0gdGhpcy5tLmF0b21zO1xyXG5cclxuICAgICAgbGV0IGxpc3QgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGlmIChhdG9tc1tpXS5zZWxlY3RlZClcclxuICAgICAgICAgIGxpc3QucHVzaChhdG9tc1tpXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5nZXRDZW50ZXIobnVsbCk7XHJcbiAgICAgICAgaWYgKGNlbnRlciAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5yb3RhdGluZyA9IHthdG9tczogbnVsbCwgY2VudGVyOiBjZW50ZXJ9O1xyXG4gICAgICB9IGVsc2UgaWYgKGxpc3QubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBjb25zdCBjZW50ZXIgPSBsaXN0WzBdLnAuY2xvbmUoKTtcclxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgY29uc3QgZnJhZyA9IHRoaXMuZ2V0RnJhZ21lbnQobGlzdFswXSk7XHJcbiAgICAgICAgICBpZiAoZnJhZyAhPSBudWxsKVxyXG4gICAgICAgICAgICBsaXN0ID0gZnJhZy5hdG9tcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3RhdGluZyA9IHthdG9tczogbGlzdC5sZW5ndGggPT0gMSA/IG51bGwgOiBsaXN0LCBjZW50ZXI6IGNlbnRlcn07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGlua3MgPSB0aGlzLmdldENvbm5lY3RpbmdBdG9tQm9uZHMobGlzdCwgZmFsc2UpO1xyXG4gICAgICAgIGlmIChsaW5rcy5sZW5ndGggPT0gMSlcclxuICAgICAgICAgIHRoaXMucm90YXRpbmcgPSB7YXRvbXM6IGxpc3QsIGNlbnRlcjogbGlua3NbMF0uYS5wLmNsb25lKCl9O1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMucm90YXRpbmcgPSB7YXRvbXM6IGxpc3QsIGNlbnRlcjogdGhpcy5nZXRDZW50ZXIobGlzdCl9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5yb3RhdGluZyAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMucm90YXRpbmcuY2xvbmVkID0gdGhpcy5jbG9uZSgpO1xyXG5cclxuICAgICAgaWYgKGExICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLm0uc2V0U2VsZWN0ZWQoKTtcclxuICAgICAgICBhMS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImFycm93XCIpIHtcclxuICAgICAgdGhpcy5hcnJvd3Rvb2wgPSB7ZnJvbTogb2JqfTtcclxuICAgICAgaWYgKEpTRHJhdzIuU2hhcGUuY2FzdChvYmopICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjb25uID0gb2JqLmJlc3RDb25uZWN0UG9pbnQodGhpcy5zdGFydCwgdGhpcy50b3IpO1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSBjb25uLnA7XHJcbiAgICAgICAgdGhpcy5hcnJvd3Rvb2wuY29ubmVjdG9yID0gY29ubi5jb25uZWN0b3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kICE9IFwicnhubWFwXCIgJiYgIShlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkge1xyXG4gICAgICBpZiAoIWUuc2hpZnRLZXkgJiYgdGhpcy5tLnNldFNlbGVjdGVkKCkgPiAwKVxyXG4gICAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RDdXJyZW50KG9iaiwgZSkge1xyXG4gICAgaWYgKHRoaXMuY3VyT2JqZWN0ID09IG9iailcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMuY3VyT2JqZWN0ID0gb2JqO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbnNlbGVjdGN1cnJlbnQgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uc2VsZWN0Y3VycmVudChlLCBvYmosIHRoaXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd2hlbG1wb3B1cClcclxuICAgICAgdGhpcy5vbkhlbG1TZWxlY3RDdXJyZW50KGUsIG9iaik7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uSGVsbVNlbGVjdEN1cnJlbnQoZSwgb2JqKSB7XHJcbiAgICBjb25zdCBhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4ob2JqKTtcclxuICAgIGlmIChhID09IG51bGwgfHwgdGhpcy5zdGFydCAhPSBudWxsIHx8IHRoaXMuY29udGV4dG1lbnUgIT0gbnVsbCAmJiB0aGlzLmNvbnRleHRtZW51LmlzVmlzaWJsZSgpKSB7XHJcbiAgICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIuaGlkZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0eXBlID0gYSA9PSBudWxsID8gbnVsbCA6IGEuYmlvdHlwZSgpO1xyXG4gICAgaWYgKHR5cGUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgY29uc3Qgc2V0ID0gb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmdldE1vbm9tZXJTZXQodHlwZSk7XHJcbiAgICBjb25zdCBzID0gYSA9PSBudWxsID8gbnVsbCA6IGEuZWxlbTtcclxuICAgIGNvbnN0IG0gPSBzZXQgPT0gbnVsbCA/IG51bGwgOiBzZXRbcy50b0xvd2VyQ2FzZSgpXTtcclxuICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIuc2hvdyhlLCB0eXBlLCBtLCBzLCB0aGlzLCBhKTtcclxuICB9XHJcblxyXG4gIG1vdXNlbW92ZShlOiBNb3VzZUV2ZW50LCB2aWV3b25seT86IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmF0ZWQpIHtcclxuICAgICAgLy90aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcclxuICAgICAgaWYgKHZpZXdvbmx5ICYmIHRoaXMuc3RhcnQgIT0gbnVsbCAmJiAhdGhpcy5mcm96ZW4pIHtcclxuICAgICAgICBjb25zdCBwID0gdGhpcy5ldmVudFBvaW50KGUpO1xyXG4gICAgICAgIHRoaXMubW92ZXZpZXcobmV3IEpTRHJhdzIuUG9pbnQocC54IC0gdGhpcy5zdGFydC54LCBwLnkgLSB0aGlzLnN0YXJ0LnkpKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ob2xkaW5nLm1vdmUoZSk7XHJcblxyXG4gICAgY29uc3QgY21kID0gdGhpcy5nZXRDbWQoKTtcclxuICAgIGNvbnN0IHAgPSB0aGlzLmV2ZW50UG9pbnQoZSk7XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcIm1vdmV2aWV3XCIpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnQgIT0gbnVsbCAmJiBlLmJ1dHRvbiA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5tb3ZldmlldyhuZXcgSlNEcmF3Mi5Qb2ludChwLnggLSB0aGlzLnN0YXJ0LngsIHAueSAtIHRoaXMuc3RhcnQueSkpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImlua2JsdWVcIiB8fCBjbWQgPT0gXCJpbmtyZWRcIiB8fCBjbWQgPT0gXCJpbmtncmVlblwiKSB7XHJcbiAgICAgIGlmICh0aGlzLmluayAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuaW5rLmFkZChwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGFzdG1vdmUgPSBwO1xyXG4gICAgbGV0IGY6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgb2JqID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnN0YXJ0ID09IG51bGwgfHwgY21kICE9IFwic2VsZWN0XCIgJiYgY21kICE9IFwibGFzc29cIiAmJiBjbWQgIT0gXCJzZWxmcmFnXCIpIHtcclxuICAgICAgb2JqID0gdGhpcy50b2dnbGUocCk7XHJcbiAgICAgIGYgPSB0aGlzLnNlbGVjdEN1cnJlbnQob2JqLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdGFydCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChjbWQgPT0gXCJhcnJvd1wiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5lbmQgPSB0aGlzLmd1ZXNzQXJyb3codGhpcy5zdGFydCwgcCk7XHJcbiAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY21kID09IFwiem9vbWJveFwiIHx8IGNtZCA9PSBcImN1cnZlXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGFydCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCA9IHA7XHJcbiAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY21kID09IFwicm90YXRlXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5yb3RhdGluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3RhdGluZy5hMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm90YXRpbmcuYTAgPSB0aGlzLnJvdGF0aW5nLmExID0gcC5hbmdsZVRvKHRoaXMucm90YXRpbmcuY2VudGVyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGEyID0gcC5hbmdsZVRvKHRoaXMucm90YXRpbmcuY2VudGVyKTtcclxuICAgICAgICAgICAgZiA9IHRoaXMucm90YXRlKHRoaXMucm90YXRpbmcuYXRvbXMsIHRoaXMucm90YXRpbmcuY2VudGVyLCBhMiAtIHRoaXMucm90YXRpbmcuYTEpO1xyXG4gICAgICAgICAgICBpZiAoZilcclxuICAgICAgICAgICAgICBmID0gXCJhbGxcIjtcclxuICAgICAgICAgICAgdGhpcy5yb3RhdGluZy5hMSA9IGEyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjbWQgPT0gXCJzZWxlY3RcIiB8fCBjbWQgPT0gXCJsYXNzb1wiIHx8IGNtZCA9PSBcInNlbGZyYWdcIiB8fCBjbWQgPT0gXCJ0bGNcIiB8fCBjbWQgPT0gXCJlbGVjdHJvcGhvcmVzaXNcIikge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmxhc3NvbGFzdCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCA9IHA7XHJcbiAgICAgICAgICAgIHRoaXMubGFzc29TZWxlY3QodGhpcy5sYXNzb2xhc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmxhc3NvbGFzdCA9IHA7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVzaXppbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzaXppbmcuc3RhcnQuZXF1YWxzVG8ocCkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IHAuY2xvbmUoKS5vZmZzZXQoLXRoaXMucmVzaXppbmcuc3RhcnQueCwgLXRoaXMucmVzaXppbmcuc3RhcnQueSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNpemluZy5vYmoucmVzaXplKHRoaXMucmVzaXppbmcuY29ybmVyLCBkZWx0YSwgdGhpcy5yZXNpemluZy50ZXh0cyk7XHJcbiAgICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgSlNEcmF3Mi5TaGFwZS5jYXN0KHRoaXMucmVzaXppbmcub2JqKSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemluZy5vYmouX3JlY3QuaGVpZ2h0ID0gdGhpcy5yZXNpemluZy5vYmouX3JlY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNpemluZy5zdGFydCA9IHA7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNpemluZy5jaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBmID0gXCJhbGxcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vdmluZ0Nsb25lICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5kID09IG51bGwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCA9IHRoaXMuc3RhcnQ7XHJcbiAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSB0aGlzLm0uY2xvbmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBtLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyA9IHRoaXMub3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW0uaXNFbXB0eSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubS5zZXRTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICAgICAgICBtLnNldFNlbGVjdGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICBtLmNhbGNIQ291bnQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubS5tZXJnZU1vbChtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5lbmQuZXF1YWxzVG8ocCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLm0ub2Zmc2V0KHAueCAtIHRoaXMuZW5kLngsIHAueSAtIHRoaXMuZW5kLnksIHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZW5kID0gcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmID0gXCJhbGxcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kID0gcDtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNtZCA9PSBcInJlY3RhbmdsZVwiIHx8IGNtZCA9PSBcImVsbGlwc2VcIiB8fCBjbWQgPT0gXCJkaWFtb25kXCIgfHwgY21kID09IFwiZHNoYXBlXCIgfHwgY21kID09IFwiZHJldmVyc2VkXCIpIHtcclxuICAgICAgICBpZiAoZS5zaGlmdEtleSlcclxuICAgICAgICAgIHAuZXF1YWxNb3ZlKHRoaXMuc3RhcnQpO1xyXG4gICAgICAgIHRoaXMuZW5kID0gcDtcclxuICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChjbWQgPT0gXCJicmFja2V0XCIgfHwgY21kID09IFwic2dyb3VwXCIgfHwgY21kID09IFwiYXNzYXljdXJ2ZVwiIHx8IGNtZCA9PSBcInNwZWN0cnVtXCIgfHwgY21kID09IFwiZG91YmxlYXJyb3dcIiB8fCBjbWQgPT0gXCJ0bGNcIiB8fCBjbWQgPT0gXCJlbGVjdHJvcGhvcmVzaXNcIikge1xyXG4gICAgICAgIHRoaXMuZW5kID0gcDtcclxuICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChjbWQgPT0gXCJjaGFpblwiKSB7XHJcbiAgICAgICAgdGhpcy5lbmQgPSBwO1xyXG4gICAgICAgIGYgPSB0aGlzLl9tYWtlQ2hhaW4odGhpcy5jaGFpbnRvb2wsIHApO1xyXG4gICAgICB9IGVsc2UgaWYgKGNtZCA9PSBcImVyYXNlclwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXJhc2VyY2FjaGUgIT0gbnVsbCAmJiAhdGhpcy5lcmFzZXJjYWNoZS5zaW5nbGV0b24pIHtcclxuICAgICAgICAgIG9iaiA9IHRoaXMudG9nZ2xlKHApO1xyXG4gICAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsT2JqZWN0KG9iaik7XHJcbiAgICAgICAgICAgICsrdGhpcy5lcmFzZXJjYWNoZS5jb3VudDtcclxuICAgICAgICAgICAgZiA9IFwiYWxsXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHNjaWwuVXRpbHMuc3RhcnRzd2l0aChjbWQsIFwic3BvdC1cIikpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy5jdXJPYmplY3QpICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLmVuZCA9IHRoaXMuY3VyT2JqZWN0LnAuY2xvbmUoKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmVuZCA9IHRoaXMuX2d1ZXNzQm9uZCh0aGlzLnN0YXJ0LCBwKTtcclxuICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChmICE9IGZhbHNlICYmICEodGhpcy5zdGFydCAhPSBudWxsICYmIHAudG0gLSB0aGlzLnN0YXJ0LnRtIDwgSlNEcmF3Mi5FZGl0b3IudW5kb0dlc3R1cmVUaW1lKSlcclxuICAgICAgdGhpcy5yZWRyYXcoZiAhPSBcImFsbFwiKTtcclxuICB9XHJcblxyXG4gIG1vdXNldXAoZTogTW91c2VFdmVudCwgdmlld29ubHk/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhvbGRpbmcuZW5kKCk7XHJcblxyXG4gICAgbGV0IGI7XHJcbiAgICBpZiAoIXNjaWwuVXRpbHMuaXNUb3VjaCAmJiBlLmJ1dHRvbiA9PSAyKSB7IC8vIHJpZ2h0IGNsaWNrXHJcbiAgICAgIGlmICghdmlld29ubHkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZhdGVkKVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZSh0cnVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudG91Y2guc3RhcnQxID09IG51bGwpIC8vIFdpbmRvd3M4IGlzc3VlXHJcbiAgICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUoZSwgdmlld29ubHkpO1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuYWN0aXZhdGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vdXNlZG93blBvaW50ICE9IG51bGwgJiYgdGhpcy5tb3VzZWRvd25Qb2ludC54ID09IGUuY2xpZW50WCAmJiB0aGlzLm1vdXNlZG93blBvaW50LnkgPT0gZS5jbGllbnRZKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUodHJ1ZSk7XHJcbiAgICAgIGlmICh2aWV3b25seSAmJiBlLmJ1dHRvbiA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lbmRNb3ZlKGUsIHZpZXdvbmx5KTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNtZCA9IHRoaXMuZ2V0Q21kKCk7XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcIm1vdmV2aWV3XCIpIHtcclxuICAgICAgdGhpcy5lbmRNb3ZlKGUsIHZpZXdvbmx5KTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImlua3JlZFwiIHx8IGNtZCA9PSBcImlua2JsdWVcIiB8fCBjbWQgPT0gXCJpbmtncmVlblwiKSB7XHJcbiAgICAgIGlmICh0aGlzLmluayAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuaW5rLmVuZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcblxyXG4gICAgY29uc3QgcDEgPSB0aGlzLnN0YXJ0O1xyXG4gICAgbGV0IHAyID0gdGhpcy5sYXN0bW92ZSA9PSBudWxsID8gcDEuY2xvbmUoKSA6IHRoaXMubGFzdG1vdmU7XHJcbiAgICB0aGlzLmxhc3Rtb3ZlID0gbnVsbDtcclxuICAgIHRoaXMuc3RhcnQgPSBudWxsO1xyXG5cclxuICAgIC8vIGRldGVjdCB1bmRvIGdlc3R1cmVcclxuICAgIGNvbnN0IGR4ID0gTWF0aC5hYnMocDEueCAtIHAyLngpO1xyXG4gICAgaWYgKChwMi50bSAtIHAxLnRtIDwgSlNEcmF3Mi5FZGl0b3IudW5kb0dlc3R1cmVUaW1lKSAmJiBNYXRoLmFicyhkeCkgPiAyICogMTAgJiYgZHggPiA1ICogTWF0aC5hYnMocDEueSAtIHAyLnkpICYmIHRoaXMudG9nZ2xlKHAxKSA9PSBudWxsICYmIHRoaXMudG9nZ2xlKHAyKSA9PSBudWxsKSB7XHJcbiAgICAgIGlmIChwMS54ID4gcDIueClcclxuICAgICAgICB0aGlzLnVuZG8oKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucmVkbygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2goZmFsc2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGYgPSBudWxsO1xyXG4gICAgaWYgKGNtZCA9PSBcInRleHRcIikge1xyXG4gICAgICB0aGlzLnNob3dUZXh0RWRpdG9yKHRoaXMuY3VyT2JqZWN0LCBuZXcgSlNEcmF3Mi5Qb2ludChwMi54LCBwMi55KSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwic2dyb3VwXCIpIHtcclxuICAgICAgaWYgKHAxLmVxdWFsc1RvKHAyKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1RleHRFZGl0b3IodGhpcy5jdXJPYmplY3QsIG5ldyBKU0RyYXcyLlBvaW50KHAyLngsIHAyLnkpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBvYmoxID0gcDEuYXRvbSAhPSBudWxsID8gcDEuYXRvbSA6IHRoaXMudG9nZ2xlKHAxKTtcclxuICAgICAgICBjb25zdCBvYmoyID0gdGhpcy50b2dnbGUocDIpO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlRleHQuY2FzdChvYmoxKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgICBpZiAob2JqMS5hdHRhY2gob2JqMikpXHJcbiAgICAgICAgICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwiZXJhc2VyXCIpIHtcclxuICAgICAgaWYgKHRoaXMuZXJhc2VyY2FjaGUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVyYXNlcmNhY2hlLmNvdW50ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbyh0aGlzLmVyYXNlcmNhY2hlLmNsb25lZCk7XHJcbiAgICAgICAgICB0aGlzLmN1ck9iamVjdCA9IG51bGw7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWxtICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuaGVsbS5yZXNldElEcygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVyYXNlcmNhY2hlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcInBsdXNcIikge1xyXG4gICAgICBpZiAodGhpcy5jdXJPYmplY3QgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICB0aGlzLm0uYWRkR3JhcGhpY3MobmV3IEpTRHJhdzIuUGx1cyhwMikpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcInJ4bm1hcFwiKSB7XHJcbiAgICAgIHRoaXMuZG9SeG5NYXAodGhpcy5jdXJPYmplY3QpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZCA9IHAxLmRpc3RUbyhwMik7XHJcbiAgICBpZiAoY21kID09IFwiYXJyb3dcIiB8fCBjbWQgPT0gXCJjdXJ2ZVwiKSB7XHJcbiAgICAgIGlmICh0aGlzLmFycm93dG9vbCAhPSBudWxsICYmIHRoaXMuYXJyb3d0b29sLmZyb20gIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGZyb20gPSBKU0RyYXcyLlNoYXBlLmNhc3QodGhpcy5hcnJvd3Rvb2wuZnJvbSk7XHJcbiAgICAgICAgbGV0IHRvID0gSlNEcmF3Mi5TaGFwZS5jYXN0KHRoaXMuY3VyT2JqZWN0KTtcclxuICAgICAgICBjb25zdCBjb25uZWN0b3IgPSB0aGlzLmFycm93dG9vbC5jb25uZWN0b3I7XHJcbiAgICAgICAgdGhpcy5hcnJvd3Rvb2wgPSBudWxsO1xyXG4gICAgICAgIGlmIChmcm9tICE9IG51bGwgJiYgZnJvbSAhPSB0bykge1xyXG4gICAgICAgICAgaWYgKGNvbm5lY3RvciA9PSBcInJlamVjdG9yXCIpIHtcclxuICAgICAgICAgICAgaWYgKGZyb20ucmVqZWN0ICE9IGZyb20pIHtcclxuICAgICAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGZyb20ucmVqZWN0ID09IHRvKVxyXG4gICAgICAgICAgICAgICAgZnJvbS5yZWplY3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGZyb20ucmVqZWN0ID0gdG87XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgICAgICBpZiAodG8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBmcm9tLnJlY3QoKTtcclxuICAgICAgICAgICAgICBjb25zdCBkeCA9IDA7XHJcbiAgICAgICAgICAgICAgY29uc3QgZHkgPSAwO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBwMiA9IHAyLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHAyLnggPCBwMS54KVxyXG4gICAgICAgICAgICAgICAgcHAyLnggLT0gcmVjdC53aWR0aDtcclxuICAgICAgICAgICAgICBpZiAocDIueSA8IHAxLnkpXHJcbiAgICAgICAgICAgICAgICBwcDIueSAtPSByZWN0LmhlaWdodDtcclxuICAgICAgICAgICAgICB0byA9IHRoaXMubS5hZGRHcmFwaGljcyhuZXcgSlNEcmF3Mi5TaGFwZShuZXcgSlNEcmF3Mi5SZWN0KHBwMi54LCBwcDIueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpLCBcInJlY3RhbmdsZVwiKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0byAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzU2hhcGVDb25uZWN0ZWQoZnJvbSwgdG8pKSB7XHJcbiAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmRlbEZyb21BcnJheSh0by5mcm9tcywgZnJvbSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2hhcGVDb25uZWN0ZWQodG8sIGZyb20pKVxyXG4gICAgICAgICAgICAgICAgICBzY2lsLlV0aWxzLmRlbEZyb21BcnJheShmcm9tLmZyb21zLCB0byk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHAxLnkgLSBwMi55KSA8IHRoaXMudG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXNvbGF0ZWRTaGFwZSh0bykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkeSA9IGZyb20uX3JlY3QuY2VudGVyKCkueSAtIHRvLl9yZWN0LmNlbnRlcigpLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgdG8uX3JlY3Qub2Zmc2V0KDAsIGR5KTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSXNvbGF0ZWRTaGFwZShmcm9tKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGR5ID0gdG8uX3JlY3QuY2VudGVyKCkueSAtIGZyb20uX3JlY3QuY2VudGVyKCkueTtcclxuICAgICAgICAgICAgICAgICAgICBmcm9tLl9yZWN0Lm9mZnNldCgwLCBkeSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMocDEueCAtIHAyLngpIDwgdGhpcy50b3IpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJc29sYXRlZFNoYXBlKHRvKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGR4ID0gZnJvbS5fcmVjdC5jZW50ZXIoKS54IC0gdG8uX3JlY3QuY2VudGVyKCkueDtcclxuICAgICAgICAgICAgICAgICAgICB0by5fcmVjdC5vZmZzZXQoZHgsIDApO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJc29sYXRlZFNoYXBlKGZyb20pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHggPSB0by5fcmVjdC5jZW50ZXIoKS54IC0gZnJvbS5fcmVjdC5jZW50ZXIoKS54O1xyXG4gICAgICAgICAgICAgICAgICAgIGZyb20uX3JlY3Qub2Zmc2V0KGR4LCAwKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRvLmZyb21zLnB1c2goZnJvbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgaWYgKGQgPj0gdGhpcy5ib25kbGVuZ3RoKVxyXG4gICAgICAgIHAyID0gdGhpcy5ndWVzc0Fycm93KHAxLCBwMik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwMiA9IHAxLmNsb25lKCkub2Zmc2V0KDMgKiB0aGlzLmJvbmRsZW5ndGgsIDApO1xyXG5cclxuICAgICAgaWYgKGNtZCA9PSBcImFycm93XCIpXHJcbiAgICAgICAgdGhpcy5tLmFkZEdyYXBoaWNzKG5ldyBKU0RyYXcyLkFycm93KHAxLCBwMikpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5tLmFkZEdyYXBoaWNzKG5ldyBKU0RyYXcyLkN1cnZlKHAxLCBwMikpO1xyXG4gICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChjbWQgPT0gXCJyZWN0YW5nbGVcIiB8fCBjbWQgPT0gXCJlbGxpcHNlXCIgfHwgY21kID09IFwiZG91YmxlYXJyb3dcIiB8fCBjbWQgPT0gXCJkaWFtb25kXCIgfHwgY21kID09IFwiZHNoYXBlXCIgfHwgY21kID09IFwiZHJldmVyc2VkXCIpIHtcclxuICAgICAgaWYgKGQgPCB0aGlzLmJvbmRsZW5ndGggLyA4KVxyXG4gICAgICAgIHAyID0gbmV3IEpTRHJhdzIuUG9pbnQocDEueCArIHRoaXMuYm9uZGxlbmd0aCwgcDEueSArIHRoaXMuYm9uZGxlbmd0aCk7XHJcbiAgICAgIGVsc2UgaWYgKGQgPCB0aGlzLmJvbmRsZW5ndGggLyAyKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgaWYgKGNtZCA9PSBcInJlY3RhbmdsZVwiKVxyXG4gICAgICAgIHRoaXMubS5hZGRHcmFwaGljcyhuZXcgSlNEcmF3Mi5TaGFwZShuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMiksIFwicmVjdGFuZ2xlXCIpKTtcclxuICAgICAgZWxzZSBpZiAoY21kID09IFwiZWxsaXBzZVwiKVxyXG4gICAgICAgIHRoaXMubS5hZGRHcmFwaGljcyhuZXcgSlNEcmF3Mi5TaGFwZShuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMiksIFwiZWxsaXBzZVwiKSk7XHJcbiAgICAgIGVsc2UgaWYgKGNtZCA9PSBcImRpYW1vbmRcIilcclxuICAgICAgICB0aGlzLm0uYWRkR3JhcGhpY3MobmV3IEpTRHJhdzIuU2hhcGUobmV3IEpTRHJhdzIuUmVjdCgpLnNldChwMSwgcDIpLCBcImRpYW1vbmRcIikpO1xyXG4gICAgICBlbHNlIGlmIChjbWQgPT0gXCJkc2hhcGVcIilcclxuICAgICAgICB0aGlzLm0uYWRkR3JhcGhpY3MobmV3IEpTRHJhdzIuU2hhcGUobmV3IEpTRHJhdzIuUmVjdCgpLnNldChwMSwgcDIpLCBcImRzaGFwZVwiKSk7XHJcbiAgICAgIGVsc2UgaWYgKGNtZCA9PSBcImRyZXZlcnNlZFwiKVxyXG4gICAgICAgIHRoaXMubS5hZGRHcmFwaGljcyhuZXcgSlNEcmF3Mi5TaGFwZShuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMiksIFwiZHJldmVyc2VkXCIpKTtcclxuICAgICAgZWxzZSBpZiAoY21kID09IFwiZG91YmxlYXJyb3dcIilcclxuICAgICAgICB0aGlzLm0uYWRkR3JhcGhpY3MobmV3IEpTRHJhdzIuU2hhcGUobmV3IEpTRHJhdzIuUmVjdCgpLnNldChwMSwgcDIpLCBcImRvdWJsZWFycm93XCIpKTtcclxuICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoY21kID09IFwiYXNzYXljdXJ2ZVwiKSB7XHJcbiAgICAgIGlmIChkIDwgdGhpcy5ib25kbGVuZ3RoIC8gOCAmJiB0aGlzLm0uaXNFbXB0eSgpKVxyXG4gICAgICAgIHAyID0gbmV3IEpTRHJhdzIuUG9pbnQocDEueCArIHRoaXMuYm9uZGxlbmd0aCAqIDgsIHAxLnkgKyB0aGlzLmJvbmRsZW5ndGggKiA2KTtcclxuICAgICAgZWxzZSBpZiAoTWF0aC5hYnMocDEueCAtIHAyLngpIDwgdGhpcy5ib25kbGVuZ3RoICogMiB8fCBNYXRoLmFicyhwMS55IC0gcDIueSkgPCB0aGlzLmJvbmRsZW5ndGggKiAyKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgdGhpcy5tLmFkZEdyYXBoaWNzKG5ldyBKU0RyYXcyLkFzc2F5Q3VydmUobmV3IEpTRHJhdzIuUmVjdCgpLnNldChwMSwgcDIpKSk7XHJcbiAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGNtZCA9PSBcInNwZWN0cnVtXCIpIHtcclxuICAgICAgaWYgKGQgPCB0aGlzLmJvbmRsZW5ndGggLyA4ICYmIHRoaXMubS5pc0VtcHR5KCkpXHJcbiAgICAgICAgcDIgPSBuZXcgSlNEcmF3Mi5Qb2ludChwMS54ICsgdGhpcy5ib25kbGVuZ3RoICogMTQsIHAxLnkgKyB0aGlzLmJvbmRsZW5ndGggKiA2KTtcclxuICAgICAgZWxzZSBpZiAoTWF0aC5hYnMocDEueCAtIHAyLngpIDwgdGhpcy5ib25kbGVuZ3RoICogMiB8fCBNYXRoLmFicyhwMS55IC0gcDIueSkgPCB0aGlzLmJvbmRsZW5ndGggKiAyKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgdGhpcy5tLmFkZEdyYXBoaWNzKG5ldyBKU0RyYXcyLlNwZWN0cnVtKG5ldyBKU0RyYXcyLlJlY3QoKS5zZXQocDEsIHAyKSkpO1xyXG4gICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChjbWQgPT0gXCJ0bGNcIiB8fCBjbWQgPT0gXCJlbGVjdHJvcGhvcmVzaXNcIikge1xyXG4gICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMubW92aW5nQ2xvbmUgPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChkIDwgdGhpcy5ib25kbGVuZ3RoIC8gMilcclxuICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgIGNvbnN0IHRsYyA9IG5ldyBKU0RyYXcyLlRMQy5jcmVhdGUoY21kLCBwMSwgcDIsIHRoaXMuZm9udHNpemUgLyAyKTtcclxuICAgICAgICBpZiAodGxjLnJlY3QoKS5oZWlnaHQgPiAyICogdGhpcy5ib25kbGVuZ3RoICYmIHRsYy5zcG90cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFRsY1BsYXRlKHRsYyk7XHJcbiAgICAgICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmcmVzaChtb2RpZmllZCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKGNtZCwgXCJzcG90LVwiKSkge1xyXG4gICAgICBjb25zdCB0bGMgPSBKU0RyYXcyLlRMQy5jYXN0KHRoaXMuY3VyT2JqZWN0KTtcclxuICAgICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgIGlmICh0bGMgIT0gbnVsbCAmJiB0bGMuYWRkU3BvdChjbWQuc3Vic3RyKDUpLCBwMiwgdGhpcy50b3IpKSB7XHJcbiAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwicm90YXRlXCIgJiYgdGhpcy5yb3RhdGluZyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLnJvdGF0aW5nLmExICE9IHRoaXMucm90YXRpbmcuYTApIHtcclxuICAgICAgICB0aGlzLnB1c2h1bmRvKHRoaXMucm90YXRpbmcuY2xvbmVkKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3RhdGluZyA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwic2VsZWN0XCIgfHwgY21kID09IFwibGFzc29cIiB8fCBjbWQgPT0gXCJzZWxmcmFnXCIgfHwgY21kID09IFwicm90YXRlXCIgfHwgY21kID09IFwidGxjXCIgfHwgY21kID09IFwiZWxlY3Ryb3Bob3Jlc2lzXCIpIHtcclxuICAgICAgaWYgKHRoaXMubGFzc29sYXN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLmxhc3NvbGFzdCA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVzaXppbmcuY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5fYnJhY2tldFJlc2VsZWN0QXRvbXMoKTtcclxuICAgICAgICAgIHRoaXMucHVzaHVuZG8odGhpcy5tb3ZpbmdDbG9uZSk7XHJcbiAgICAgICAgICB0aGlzLm1vdmluZ0Nsb25lID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMucmVzaXppbmcgPSBudWxsO1xyXG4gICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubW92aW5nQ2xvbmUgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5tb3ZpbmdDbG9uZS5zdGFydFB0LmVxdWFsc1RvKHAyKSkge1xyXG4gICAgICAgICAgdGhpcy5fYnJhY2tldFJlc2VsZWN0QXRvbXMoKTtcclxuICAgICAgICAgIHRoaXMucHVzaHVuZG8odGhpcy5tb3ZpbmdDbG9uZSk7XHJcbiAgICAgICAgICB0aGlzLm1lcmdlT3ZlcmxhcHMoKTtcclxuICAgICAgICAgIHRoaXMubW92aW5nQ2xvbmUgPSBudWxsO1xyXG4gICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChkIDwgdGhpcy5ib25kbGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jdXJPYmplY3QgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5jdXJPYmplY3Quc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEluUmVjdChuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZnJlc2goZik7XHJcblxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uc2VsZWN0aW9uY2hhbmdlZCAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5vbnNlbGVjdGlvbmNoYW5nZWQodGhpcyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwiem9vbWJveFwiKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSBuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMik7XHJcbiAgICAgIGlmIChyZWN0LndpZHRoID4gMTAgJiYgcmVjdC5oZWlnaHQgPiAxMCkge1xyXG4gICAgICAgIGNvbnN0IHMgPSBNYXRoLm1pbih0aGlzLmRpbWVuc2lvbi54IC8gcmVjdC53aWR0aCwgdGhpcy5kaW1lbnNpb24ueSAvIHJlY3QuaGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBjID0gcmVjdC5jZW50ZXIoKTtcclxuICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgdGhpcy5zY2FsZShzICogMC45LCBjKTtcclxuICAgICAgICB0aGlzLm0ub2Zmc2V0KHRoaXMuZGltZW5zaW9uLnggLyAyIC0gYy54LCB0aGlzLmRpbWVuc2lvbi55IC8gMiAtIGMueSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVjdC53aWR0aCA8IDUgJiYgcmVjdC5oZWlnaHQgPCA1KSB7XHJcbiAgICAgICAgdGhpcy5maXRUb1dpbmRvdygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwiY2hhaW5cIikge1xyXG4gICAgICBpZiAodGhpcy5jaGFpbnRvb2wgIT0gbnVsbCAmJiB0aGlzLmNoYWludG9vbC5wb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGYgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgY29uc3QgcHRzID0gdGhpcy5jaGFpbnRvb2wucG9pbnRzO1xyXG4gICAgICAgIGxldCBtID0gbnVsbDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHB0cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgbGV0IGExID0gdGhpcy50b2dnbGVBdG9tKHB0c1tpIC0gMV0pO1xyXG4gICAgICAgICAgbGV0IGEyID0gdGhpcy50b2dnbGVBdG9tKHB0c1tpXSk7XHJcbiAgICAgICAgICBpZiAobSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChhMSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIG0gPSBhMS5fcGFyZW50O1xyXG4gICAgICAgICAgICBlbHNlIGlmIChhMiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIG0gPSBhMi5fcGFyZW50O1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgbSA9IHRoaXMubTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChhMSAhPSBudWxsICYmIGExLl9wYXJlbnQgIT0gbSlcclxuICAgICAgICAgICAgYTEgPSBudWxsO1xyXG4gICAgICAgICAgaWYgKGEyICE9IG51bGwgJiYgYTIuX3BhcmVudCAhPSBtKVxyXG4gICAgICAgICAgICBhMiA9IG51bGw7XHJcblxyXG4gICAgICAgICAgaWYgKGExID09IG51bGwpIHtcclxuICAgICAgICAgICAgYTEgPSBuZXcgSlNEcmF3Mi5BdG9tKHB0c1tpIC0gMV0pO1xyXG4gICAgICAgICAgICBtLmFkZEF0b20oYTEpO1xyXG4gICAgICAgICAgICB0aGlzLl9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKGEyLCBbYTFdKTtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYTIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBhMiA9IG5ldyBKU0RyYXcyLkF0b20ocHRzW2ldKTtcclxuICAgICAgICAgICAgbS5hZGRBdG9tKGEyKTtcclxuICAgICAgICAgICAgdGhpcy5fYWRkTmV3QXRvbUluRXhpc3RpbmdHcm91cChhMSwgW2EyXSk7XHJcbiAgICAgICAgICAgIGYgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtLmZpbmRCb25kKGExLCBhMikgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBtLmFkZEJvbmQobmV3IEpTRHJhdzIuQm9uZChhMSwgYTIpLCBudWxsLCB0cnVlKTtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhaW50b29sID0gbnVsbDtcclxuICAgICAgICBpZiAoZilcclxuICAgICAgICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goZik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNtZCA9PSBcImJyYWNrZXRcIikge1xyXG4gICAgICBsZXQgYnI7XHJcbiAgICAgIHRoaXMubS5zZXRTZWxlY3RlZChmYWxzZSk7XHJcbiAgICAgIGNvbnN0IHIgPSBuZXcgSlNEcmF3Mi5SZWN0KCkuc2V0KHAxLCBwMik7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLm0uYnJhY2tldFNlbGVjdChyKTtcclxuICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICBiciA9IG5ldyBKU0RyYXcyLkJyYWNrZXQobnVsbCwgcik7XHJcbiAgICAgICAgYnIuYXRvbXMgPSBsaXN0O1xyXG4gICAgICAgIGxpc3RbMF0uX3BhcmVudC5hZGRHcmFwaGljcyhicik7XHJcbiAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoKGYpO1xyXG5cclxuICAgICAgaWYgKGJyICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB0ID0gYnIuY3JlYXRlU3Vic2NyaXB0KHRoaXMubSwgXCIjXCIpO1xyXG4gICAgICAgIGlmICh0ICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLnNob3dUZXh0RWRpdG9yKHQsIG51bGwsIFwiXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHQgPSBKU0RyYXcyLlRleHQuY2FzdCh0aGlzLmN1ck9iamVjdCk7XHJcbiAgICAgICAgaWYgKHQgIT0gbnVsbCAmJiB0LmZpZWxkdHlwZSA9PSBcIkJSQUNLRVRfVFlQRVwiICYmIHQuYW5jaG9ycy5sZW5ndGggPT0gMSAmJiBKU0RyYXcyLkJyYWNrZXQuY2FzdCh0LmFuY2hvcnNbMF0pICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLnNob3dUZXh0RWRpdG9yKHQsIG51bGwsIHQudGV4dCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0b20gcHJvcGVydGllc1xyXG4gICAgaWYgKGNtZCA9PSBcIiYjOTY3OTtcIikge1xyXG4gICAgICBsZXQgYTtcclxuICAgICAgaWYgKChhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy5jdXJPYmplY3QpKSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuc2hvd0F0b21EbGcoYSk7XHJcbiAgICAgIGVsc2UgaWYgKChhID0gSlNEcmF3Mi5Cb25kLmNhc3Q8VEJpbz4odGhpcy5jdXJPYmplY3QpKSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuc2hvd0JvbmREbGcoYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY21kID09IFwidW5kb1wiIHx8IGNtZCA9PSBcInJlZG9cIiB8fCBjbWQgPT0gXCJ6b29taW5cIiB8fCBjbWQgPT0gXCJ6b29tb3V0XCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBpZiAoZCA8PSB0aGlzLnRvcikge1xyXG4gICAgICAvLyBubyBtb3VzZSBkcmFnLCB0aGlzIGlzIGp1c3QgYSBjbGljayBldmVudFxyXG4gICAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKGNtZCwgXCJ0ZW1wbGF0ZS5cIikpIHtcclxuICAgICAgICB0aGlzLnB1c2h1bmRvKGNsb25lZCk7XHJcbiAgICAgICAgdGhpcy5hZGRUZW1wbGF0ZShjbWQuc3Vic3RyKDkpLCB0aGlzLmN1ck9iamVjdCwgcDIpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhO1xyXG4gICAgICBpZiAoKGEgPSBKU0RyYXcyLkF0b20uY2FzdDxUQmlvPih0aGlzLmN1ck9iamVjdCkpICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBlID0gSlNEcmF3Mi5QVFtjbWRdO1xyXG4gICAgICAgIGlmIChjbWQgPT0gXCJhbnRpYm9keVwiIHx8IGNtZCA9PSBcInByb3RlaW5cIiB8fCBjbWQgPT0gXCJnZW5lXCIpXHJcbiAgICAgICAgICBmID0gdGhpcy5tLnNldEF0b21UeXBlKGEsIGNtZCk7XHJcbiAgICAgICAgZWxzZSBpZiAoZSAhPSBudWxsKVxyXG4gICAgICAgICAgZiA9IHRoaXMubS5zZXRBdG9tVHlwZShhLCBjbWQpO1xyXG4gICAgICAgIGVsc2UgaWYgKGNtZCA9PSBcIi4uLlwiIHx8IGNtZCA9PSBcIm1vcmVcIilcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0QXRvbVR5cGUoYSwgdGhpcy5wdEVsZW1lbnQpO1xyXG4gICAgICAgIGVsc2UgaWYgKGNtZCA9PSBcImNoYXJnZXBcIiB8fCBjbWQgPT0gXCJjaGFyZ2VuXCIpXHJcbiAgICAgICAgICBmID0gdGhpcy5pbmNyZWFzZU51bShhLCBjbWQgPT0gXCJjaGFyZ2VwXCIgPyArMSA6IC0xKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmhlbG0gIT0gbnVsbCAmJiB0aGlzLmhlbG0gIT0gbnVsbCAmJiB0aGlzLmhlbG0uaXNIZWxtQ21kKGNtZCkpIHtcclxuICAgICAgICAgIGlmIChzY2lsLmhlbG0uaXNIZWxtTm9kZShhKSlcclxuICAgICAgICAgICAgdGhpcy5oZWxtLmNoYW5nZU1vbm9tZXIoYSwgY2xvbmVkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsICYmIHNjaWwuaGVsbS5pc0hlbG1Ob2RlKGEpKVxyXG4gICAgICAgICAgICB0aGlzLmhlbG0uY2hhbmdlTW9ub21lcihhLCBjbG9uZWQpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBmID0gdGhpcy5fYWRkQXV0b0JvbmQoYSwgY21kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgoYiA9IEpTRHJhdzIuQm9uZC5jYXN0PFRCaW8+KHRoaXMuY3VyT2JqZWN0KSkgIT0gbnVsbCkge1xyXG4gICAgICAgIHN3aXRjaCAoY21kKSB7XHJcbiAgICAgICAgY2FzZSBcImRvdWJsZVwiOlxyXG4gICAgICAgICAgZiA9IHRoaXMubS5zZXRCb25kVHlwZShiLCBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInRyaXBsZVwiOlxyXG4gICAgICAgICAgZiA9IHRoaXMubS5zZXRCb25kVHlwZShiLCBKU0RyYXcyLkJPTkRUWVBFUy5UUklQTEUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInVua25vd25cIjpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuVU5LTk9XTik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiZHVtbXlcIjpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImVpdGhlclwiOlxyXG4gICAgICAgICAgZiA9IHRoaXMubS5zZXRCb25kVHlwZShiLCBKU0RyYXcyLkJPTkRUWVBFUy5FSVRIRVIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIndpZ2dseVwiOlxyXG4gICAgICAgICAgZiA9IHRoaXMubS5zZXRCb25kVHlwZShiLCBKU0RyYXcyLkJPTkRUWVBFUy5XSUdHTFkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImJvbGRcIjpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuQk9MRCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiYm9sZGhhc2hcIjpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuQk9MREhBU0gpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRlbG9jYWxpemVkXCI6XHJcbiAgICAgICAgICBmID0gdGhpcy5tLnNldEJvbmRUeXBlKGIsIEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJzaW5nbGVkb3VibGVcIjpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFT1JET1VCTEUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInNpbmdsZWFyb21hdGljXCI6XHJcbiAgICAgICAgICBmID0gdGhpcy5tLnNldEJvbmRUeXBlKGIsIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SQVJPTUFUSUMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRvdWJsZWFyb21hdGljXCI6XHJcbiAgICAgICAgICBmID0gdGhpcy5tLnNldEJvbmRUeXBlKGIsIEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRU9SQVJPTUFUSUMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInVwXCI6XHJcbiAgICAgICAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLldFREdFKSB7XHJcbiAgICAgICAgICAgIGIucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UpO1xyXG4gICAgICAgICAgICB0aGlzLmZpeFdlZGdlRGlyKGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRvd25cIjpcclxuICAgICAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSCkge1xyXG4gICAgICAgICAgICBiLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmID0gdGhpcy5tLnNldEJvbmRUeXBlKGIsIEpTRHJhdzIuQk9ORFRZUEVTLkhBU0gpO1xyXG4gICAgICAgICAgICB0aGlzLmZpeFdlZGdlRGlyKGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSA/IEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRSA6IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZiAmJiB0aGlzLmN1ck9iamVjdCA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWxtdG9vbGJhciAmJiAhdGhpcy5oZWxtLmlzSGVsbUNtZChjbWQpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBib25kdHlwZSA9IHRoaXMuQ21kMkJvbmRUeXBlKGNtZCk7XHJcbiAgICAgICAgaWYgKGJvbmR0eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGExID0gdGhpcy5tLmFkZEF0b20obmV3IEpTRHJhdzIuQXRvbShwMikpO1xyXG4gICAgICAgICAgY29uc3QgcCA9IHAyLmNsb25lKCkub2Zmc2V0KHRoaXMuYm9uZGxlbmd0aCwgMCkucm90YXRlQXJvdW5kKHAyLCAtMzApO1xyXG4gICAgICAgICAgbGV0IGEyID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy50b2dnbGUocCkpO1xyXG4gICAgICAgICAgaWYgKGEyID09IG51bGwpXHJcbiAgICAgICAgICAgIGEyID0gdGhpcy5tLmFkZEF0b20obmV3IEpTRHJhdzIuQXRvbShwKSk7XHJcbiAgICAgICAgICB0aGlzLm0uYWRkQm9uZChuZXcgSlNEcmF3Mi5Cb25kKGExLCBhMikpO1xyXG4gICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBkcmF3IGlzb2xhdGVkIGF0b21cclxuICAgICAgaWYgKCFmICYmIHRoaXMuY3VyT2JqZWN0ID09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBzID0gY21kID09IFwibW9yZVwiIHx8IGNtZCA9PSBcIi4uLlwiID8gdGhpcy5wdEVsZW1lbnQgOiBjbWQ7XHJcbiAgICAgICAgY29uc3QgZSA9IEpTRHJhdzIuUFRbc107XHJcbiAgICAgICAgaWYgKGUgIT0gbnVsbCAmJiBlLmEgPiAwIHx8IGNtZCA9PSBcImFudGlib2R5XCIgfHwgY21kID09IFwicHJvdGVpblwiIHx8IGNtZCA9PSBcImdlbmVcIiB8fCB0aGlzLmhlbG0gIT0gbnVsbCAmJiB0aGlzLmhlbG0uaXNIZWxtQ21kKGNtZCkpIHtcclxuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLm0uYWRkQXRvbShuZXcgSlNEcmF3Mi5BdG9tKHAyKSk7XHJcbiAgICAgICAgICBpZiAoY21kID09IFwiYW50aWJvZHlcIikge1xyXG4gICAgICAgICAgICBhLmJpbyA9IHt0eXBlOiBKU0RyYXcyLkJJTy5BTlRJQk9EWSBhcyBUQmlvfTtcclxuICAgICAgICAgICAgYS5lbGVtID0gXCJYXCI7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNtZCA9PSBcInByb3RlaW5cIikge1xyXG4gICAgICAgICAgICBhLmJpbyA9IHt0eXBlOiBKU0RyYXcyLkJJTy5QUk9URUlOIGFzIFRCaW99O1xyXG4gICAgICAgICAgICBhLmVsZW0gPSBcIlhcIjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY21kID09IFwiZ2VuZVwiKSB7XHJcbiAgICAgICAgICAgIGEuYmlvID0ge3R5cGU6IEpTRHJhdzIuQklPLkdFTkUgYXMgVEJpb307XHJcbiAgICAgICAgICAgIGEuZWxlbSA9IFwiWFwiO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhlbG0gIT0gbnVsbCAmJiB0aGlzLmhlbG0uY3JlYXRlSXNvbGF0ZWRNb25vbWVyKGNtZCwgYSkpIHtcclxuICAgICAgICAgICAgO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tLnNldEF0b21UeXBlKGEsIHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZikge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goZik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBhMSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KHAxLmF0b20gIT0gbnVsbCA/IHAxLmF0b20gOiB0aGlzLnRvZ2dsZShwMSkpO1xyXG4gICAgbGV0IGEyID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy50b2dnbGUocDIpKTtcclxuICAgIGlmIChhMSAhPSBudWxsICYmIGEyICE9IG51bGwpIHtcclxuICAgICAgaWYgKGExLl9wYXJlbnQgIT0gYTIuX3BhcmVudCkge1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJDYW5ub3QgY3JlYXRlIGJvbmQgYmV0d2VlbiB0aGUgdHdvIGF0b21zXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVsbXRvb2xiYXIpIHtcclxuICAgICAgaWYgKHRoaXMuaGVsbS5jb25ubmVjdEdyb3VwKHAxLCB0aGlzLmN1ck9iamVjdCkpIHtcclxuICAgICAgICB0aGlzLnB1c2h1bmRvKGNsb25lZCk7XHJcbiAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgoYTEgPT0gbnVsbCB8fCBhMiA9PSBudWxsKSAmJiB0aGlzLmhlbG0gIT0gbnVsbCAmJiAhdGhpcy5oZWxtLmlzSGVsbUNtZChjbWQpKSB7XHJcbiAgICAgICAgaWYgKGNtZCA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWxtLmNvbm5uZWN0R3JvdXAocDEsIHRoaXMuY3VyT2JqZWN0KSlcclxuICAgICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsICYmIHRoaXMuaGVsbS5pc0hlbG1DbWQoY21kKSkge1xyXG4gICAgICAgIGlmIChhMSAhPSBudWxsICYmIGEyID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuaGVsbS5leHRlbmRDaGFpbihhMSwgY21kLCBwMSwgcDIsIGNsb25lZCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmIChhMSA9PSBudWxsICYmIGEyID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbSA9IGExICE9IG51bGwgPyBhMS5fcGFyZW50IDogKGEyICE9IG51bGwgPyBhMi5fcGFyZW50IDogdGhpcy5tKTtcclxuICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgIGNvbnN0IGMxID0gdGhpcy5fY291bnRBQUJvbmRzKGExKTtcclxuICAgIGNvbnN0IGFvMSA9IGExO1xyXG4gICAgaWYgKGExID09IG51bGwpIHtcclxuICAgICAgaWYgKGMxICE9IG51bGwpIHtcclxuICAgICAgICAvLyBhZGQgSCBvciBPSCBvbiBwZXB0aWRlIHRlcm1pbmFsIEFtaW5vIEFjaWRcclxuICAgICAgICBpZiAoYzEucGVwdGlkZU4gPT0gMCAmJiBjMS5vdGhlcnMgPT0gMClcclxuICAgICAgICAgIGExID0gbS5hZGRBdG9tKG5ldyBKU0RyYXcyLkF0b20ocDEsIFwiSFwiKSk7XHJcbiAgICAgICAgZWxzZSBpZiAoYzEucGVwdGlkZUMgPT0gMCAmJiBjMS5vdGhlcnMgPT0gMClcclxuICAgICAgICAgIGExID0gbS5hZGRBdG9tKG5ldyBKU0RyYXcyLkF0b20ocDEsIFwiT1wiKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYTEgPSBtLmFkZEF0b20obmV3IEpTRHJhdzIuQXRvbShwMSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYzIgPSB0aGlzLl9jb3VudEFBQm9uZHMoYTIpO1xyXG4gICAgY29uc3QgYW8yID0gYTI7XHJcbiAgICBpZiAoYTIgPT0gbnVsbCkge1xyXG4gICAgICBwMiA9IHRoaXMuX2d1ZXNzQm9uZChwMSwgcDIpO1xyXG4gICAgICBpZiAoYzEgIT0gbnVsbCkge1xyXG4gICAgICAgIC8vIGFkZCBIIG9yIE9IIG9uIHBlcHRpZGUgdGVybWluYWwgQW1pbm8gQWNpZFxyXG4gICAgICAgIGlmIChjMS5wZXB0aWRlTiA9PSAwICYmIGMxLm90aGVycyA9PSAwKVxyXG4gICAgICAgICAgYTIgPSBtLmFkZEF0b20obmV3IEpTRHJhdzIuQXRvbShwMiwgXCJIXCIpKTtcclxuICAgICAgICBlbHNlIGlmIChjMS5wZXB0aWRlQyA9PSAwICYmIGMxLm90aGVycyA9PSAwKVxyXG4gICAgICAgICAgYTIgPSBtLmFkZEF0b20obmV3IEpTRHJhdzIuQXRvbShwMiwgXCJPXCIpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhMiA9IG0uYWRkQXRvbShuZXcgSlNEcmF3Mi5BdG9tKHAyKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYTEgIT0gbnVsbCAmJiBhMiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2FkZE5ld0F0b21JbkV4aXN0aW5nR3JvdXAoYW8xLCBbYTJdKTtcclxuICAgICAgdGhpcy5fYWRkTmV3QXRvbUluRXhpc3RpbmdHcm91cChhbzIsIFthMV0pO1xyXG5cclxuICAgICAgbGV0IGIgPSB0aGlzLm0uZmluZEJvbmQoYTEsIGEyKTtcclxuICAgICAgaWYgKGIgPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBib25kdHlwZTtcclxuICAgICAgICBpZiAoYW8xICE9IG51bGwgJiYgYW8yICE9IG51bGwgJiYgYW8xLl9wYXJlbnQgIT0gYW8yLl9wYXJlbnQpIHtcclxuICAgICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJDYW5ub3QgY3JlYXRlIGJvbmQgYmV0d2VlbiB0aGUgdHdvIGF0b21zXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oZWxtICE9IG51bGwgJiYgKHNjaWwuaGVsbS5pc0hlbG1Ob2RlKGExKSB8fCBzY2lsLmhlbG0uaXNIZWxtTm9kZShhMikpKSB7XHJcbiAgICAgICAgICB0aGlzLmhlbG0uY29ubmVjdEZyYWdtZW50KGExLCBhMiwgIXNjaWwuaGVsbS5pc0hlbG1Ob2RlKGExKSB8fCAhc2NpbC5oZWxtLmlzSGVsbU5vZGUoYTIpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYm9uZHR5cGUgPSB0aGlzLkNtZDJCb25kVHlwZShjbWQpO1xyXG4gICAgICAgICAgaWYgKGJvbmR0eXBlID09IG51bGwpXHJcbiAgICAgICAgICAgIGJvbmR0eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRTtcclxuICAgICAgICAgIGlmIChjMSAhPSBudWxsICYmIGMyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gY29ubmVjdCB0d28gYW1pbm8gYWNpZHNcclxuICAgICAgICAgICAgaWYgKGMxLnBlcHRpZGVOID09IDAgJiYgYzIucGVwdGlkZUMgPT0gMClcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMSwgYTIsIEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUpOyAvLyBwZXB0aWRlIGJvbmRcclxuICAgICAgICAgICAgZWxzZSBpZiAoYzIucGVwdGlkZU4gPT0gMCAmJiBjMS5wZXB0aWRlQyA9PSAwKVxyXG4gICAgICAgICAgICAgIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGEyLCBhMSwgSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSk7IC8vIHJldmVyc2VkIHBlcHRpZGUgYm9uZFxyXG4gICAgICAgICAgICBlbHNlIGlmIChhbzEuZWxlbSA9PSBcIkNcIiAmJiBhbzIuZWxlbSA9PSBcIkNcIiAmJiBjMS5kaXN1bGZpZGUgPT0gMCAmJiBjMi5kaXN1bGZpZGUgPT0gMClcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMSwgYTIsIEpTRHJhdzIuQk9ORFRZUEVTLkRJU1VMRklERSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGFvMS5lbGVtID09IFwiS1wiICYmIGMxLmFtaWRlID09IDAgJiYgYzIucGVwdGlkZUMgPT0gMClcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMSwgYTIsIEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFKTsgLy8gYW1pZGUgYm9uZCB0byBLXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGFvMi5lbGVtID09IFwiS1wiICYmIGMyLmFtaWRlID09IDAgJiYgYzEucGVwdGlkZUMgPT0gMClcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMiwgYTEsIEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFKTsgLy8gcmV2ZXJzZWQgYW1pZGUgYm9uZCB0byBLXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGMxICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gY29ubmVjdCBvbmUgYW1pbm8gYWNpZCB0byBzdHJ1Y3R1cmVcclxuICAgICAgICAgICAgaWYgKGMxLnBlcHRpZGVOICsgYzEucGVwdGlkZUMgKyBjMS5vdGhlcnMgPCAyKVxyXG4gICAgICAgICAgICAgIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGExLCBhMiwgYTIuZWxlbSA9PSBcIkhcIiA/IEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUgOiBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChhbzEuZWxlbSA9PSBcIkNcIiAmJiBjMS5kaXN1bGZpZGUgPT0gMClcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMSwgYTIsIEpTRHJhdzIuQk9ORFRZUEVTLkRJU1VMRklERSk7IC8vIHVzaW5nIHN1bGZpZGUgYm9uZCB0byBDXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGFvMS5lbGVtID09IFwiS1wiICYmIGMxLmFtaWRlID09IDApXHJcbiAgICAgICAgICAgICAgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTEsIGEyLCBKU0RyYXcyLkJPTkRUWVBFUy5BTUlERSk7IC8vIHVzaW5nIGFtaWRlIGJvbmQgdG8gS1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjMiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbm5lY3Qgb25lIGFtaW5vIGFjaWQgdG8gc3RydWN0dXJlXHJcbiAgICAgICAgICAgIGlmIChjMi5wZXB0aWRlTiArIGMyLnBlcHRpZGVDICsgYzIub3RoZXJzIDwgMilcclxuICAgICAgICAgICAgICBiID0gbmV3IEpTRHJhdzIuQm9uZChhMiwgYTEsIGExLmVsZW0gPT0gXCJIXCIgPyBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFIDogSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoYW8yLmVsZW0gPT0gXCJDXCIgJiYgYzIuZGlzdWxmaWRlID09IDApXHJcbiAgICAgICAgICAgICAgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYTIsIGExLCBKU0RyYXcyLkJPTkRUWVBFUy5ESVNVTEZJREUpOyAvLyB1c2luZyBzdWxmaWRlIGJvbmQgdG8gQ1xyXG4gICAgICAgICAgICBlbHNlIGlmIChhbzIuZWxlbSA9PSBcIktcIiAmJiBjMi5hbWlkZSA9PSAwKVxyXG4gICAgICAgICAgICAgIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGEyLCBhMSwgSlNEcmF3Mi5CT05EVFlQRVMuQU1JREUpOyAvLyB1c2luZyBhbWlkZSBib25kIHRvIEtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGExLCBhMiwgYm9uZHR5cGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGIgIT0gbnVsbClcclxuICAgICAgICAgIG0uYWRkQm9uZChiLCBib25kdHlwZSAhPSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWSwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0YXJ0ID0gbnVsbDtcclxuICAgIHRoaXMucmVmcmVzaChiICE9IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgX2JyYWNrZXRSZXNlbGVjdEF0b21zKCkge1xyXG4gICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdCh0aGlzLmN1ck9iamVjdCk7XHJcbiAgICBpZiAoYnIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLm0uYnJhY2tldFNlbGVjdChici5yZWN0KCkpO1xyXG4gICAgaWYgKGxpc3QgIT0gbnVsbCAmJiBsaXN0Lmxlbmd0aCA+IDApXHJcbiAgICAgIGJyLmF0b21zID0gbGlzdDtcclxuICB9XHJcblxyXG4gIF9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKG9sZGEsIGF0b21zKSB7XHJcbiAgICBpZiAob2xkYSA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBhdG9tcy5sZW5ndGg7ICsraykge1xyXG4gICAgICBjb25zdCBhID0gYXRvbXNba107XHJcbiAgICAgIGlmIChhID09IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAvLyBhdHRhY2ggdG8gZXhpc3RpbmcgZ3JvdXBzXHJcbiAgICAgIGlmIChvbGRhLmdyb3VwICE9IG51bGwgJiYgYS5ncm91cCA9PSBudWxsKVxyXG4gICAgICAgIGEuZ3JvdXAgPSBvbGRhLmdyb3VwO1xyXG5cclxuICAgICAgLy8gYXR0YWNoIHRvIGV4aXN0aW5nIGJyYWNrZXRzXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdCh0aGlzLm0uZ3JhcGhpY3NbaV0pO1xyXG4gICAgICAgIGlmIChiciA9PSBudWxsIHx8IGJyLmF0b21zID09IG51bGwpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaW5kZXhPZihici5hdG9tcywgb2xkYSkgPj0gMCAmJiBzY2lsLlV0aWxzLmluZGV4T2YoYnIuYXRvbXMsIGEpIDwgMClcclxuICAgICAgICAgIGJyLmF0b21zLnB1c2goYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdXNlZGJsY2xpY2soZSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52aWV3b25seSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHAgPSB0aGlzLmV2ZW50UG9pbnQoZSk7XHJcbiAgICBjb25zdCBvYmogPSB0aGlzLnRvZ2dsZShwKTtcclxuICAgIGlmIChvYmogPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCBhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4ob2JqKTtcclxuICAgIGlmIChhID09IG51bGwpIHtcclxuICAgICAgY29uc3QgYiA9IEpTRHJhdzIuQm9uZC5jYXN0PFRCaW8+KG9iaik7XHJcbiAgICAgIGlmIChiICE9IG51bGwpXHJcbiAgICAgICAgYSA9IGIuYTE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGEgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMubS5zZXRTZWxlY3RlZChmYWxzZSk7XHJcbiAgICBjb25zdCBtID0gYS5fcGFyZW50LmdldEZyYWdtZW50KGEsIGEuX3BhcmVudCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0uYXRvbXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIG0uYXRvbXNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmJvbmRzLmxlbmd0aDsgKytpKVxyXG4gICAgICBtLmJvbmRzW2ldLnNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZW5kTW92ZShlLCB2aWV3b25seSkge1xyXG4gICAgaWYgKHRoaXMuc3RhcnQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHAgPSB0aGlzLmV2ZW50UG9pbnQoZSk7XHJcbiAgICBjb25zdCBkID0gbmV3IEpTRHJhdzIuUG9pbnQocC54IC0gdGhpcy5zdGFydC54LCBwLnkgLSB0aGlzLnN0YXJ0LnkpO1xyXG4gICAgdGhpcy5zdGFydCA9IG51bGw7XHJcbiAgICB0aGlzLm1vdmV2aWV3KG51bGwpO1xyXG5cclxuICAgIGlmIChkLnggIT0gMCB8fCBkLnkgIT0gMCkge1xyXG4gICAgICBpZiAoIXZpZXdvbmx5KVxyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgdGhpcy5tLm9mZnNldChkLngsIGQueSk7XHJcbiAgICAgIGlmICh2aWV3b25seSlcclxuICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNJc29sYXRlZFNoYXBlKG4pIHtcclxuICAgIGlmIChuLmZyb21zLmxlbmd0aCA+IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBzID0gSlNEcmF3Mi5TaGFwZS5jYXN0KHRoaXMubS5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChzICE9IG51bGwgJiYgc2NpbC5VdGlscy5pbmRleE9mKHMuZnJvbXMsIG4pID49IDApXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNTaGFwZUNvbm5lY3RlZChmcm9tLCB0bykge1xyXG4gICAgaWYgKGZyb20gPT0gbnVsbCB8fCB0byA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0by5mcm9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodG8uZnJvbXNbaV0gPT0gZnJvbSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIF9jb3VudEFBQm9uZHMoYSkge1xyXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBhLmJpb3R5cGUoKSAhPSBKU0RyYXcyLkJJTy5BQSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgcmV0ID0ge3BlcHRpZGVOOiAwLCBwZXB0aWRlQzogMCwgZGlzdWxmaWRlOiAwLCBhbWlkZTogMCwgb3RoZXJzOiAwfTtcclxuICAgIGNvbnN0IGxpc3QxID0gdGhpcy5tLmdldEFsbEJvbmRzKGEpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0MS5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAobGlzdDFbaV0udHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFKSB7XHJcbiAgICAgICAgaWYgKGxpc3QxW2ldLmExID09IGEpXHJcbiAgICAgICAgICArK3JldC5wZXB0aWRlTjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICArK3JldC5wZXB0aWRlQztcclxuICAgICAgfSBlbHNlIGlmIChsaXN0MVtpXS50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRJU1VMRklERSkge1xyXG4gICAgICAgICsrcmV0LmRpc3VsZmlkZTtcclxuICAgICAgfSBlbHNlIGlmIChsaXN0MVtpXS50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFKSB7XHJcbiAgICAgICAgKytyZXQuYW1pZGU7XHJcbiAgICAgIH0gZWxzZSBpZiAobGlzdDFbaV0udHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpIHtcclxuICAgICAgICBjb25zdCBvYSA9IGxpc3QxW2ldLm90aGVyQXRvbShhKTtcclxuICAgICAgICBpZiAob2EuYmlvID09IG51bGwpXHJcbiAgICAgICAgICArK3JldC5vdGhlcnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBhZGRUbGNQbGF0ZSh0bGMpIHtcclxuICAgIGlmICh0bGMgPT0gbnVsbCB8fCAhKHRsYy5zcG90cy5sZW5ndGggPiAwKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCB0bGNzZXR0aW5nID0gbnVsbDtcclxuICAgIGlmIChKU0RyYXcyLmRlZmF1bHRvcHRpb25zICE9IG51bGwgJiYgSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy50bGMgIT0gbnVsbCAmJiB0bGMudHlwZSAhPSBcImVsZWN0cm9waG9yZXNpc1wiKSB7XHJcbiAgICAgIHRsY3NldHRpbmcgPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnRsYztcclxuICAgICAgY29uc3Qgc2NhbGUgPSB0bGMuc3BvdHNpemUgLyAoSlNEcmF3Mi5FZGl0b3IuRk9OVFNJWkUgLyAyKTtcclxuICAgICAgaWYgKHRsY3NldHRpbmcud2lkdGggPiAwKVxyXG4gICAgICAgIHRsYy5fcmVjdC53aWR0aCA9IHRsY3NldHRpbmcud2lkdGggKiBzY2FsZTtcclxuICAgICAgaWYgKHRsY3NldHRpbmcuaGVpZ2h0ID4gMClcclxuICAgICAgICB0bGMuX3JlY3QuaGVpZ2h0ID0gdGxjc2V0dGluZy5oZWlnaHQgKiBzY2FsZTtcclxuXHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEFsbFRsY1BsYXRlcyh0cnVlKTtcclxuICAgICAgaWYgKGxpc3QgIT0gbnVsbCAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBwcmV2ID0gbGlzdFtsaXN0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGNvbnN0IGdhcCA9IHRsY3NldHRpbmcuZ2FwID4gMCA/IHRsY3NldHRpbmcuZ2FwIDogdGxjc2V0dGluZy53aWR0aCAvIDU7XHJcbiAgICAgICAgdGxjLl9yZWN0LmxlZnQgPSBwcmV2Ll9yZWN0LnJpZ2h0KCkgKyBnYXA7XHJcbiAgICAgICAgdGxjLl9yZWN0LnRvcCA9IHByZXYuX3JlY3QudG9wO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm0uYWRkR3JhcGhpY3ModGxjKTtcclxuICAgIGlmICh0bGNzZXR0aW5nICE9IG51bGwgJiYgdGxjc2V0dGluZy5hdXRvbnVtYmVyaW5nKVxyXG4gICAgICB0aGlzLm51bWJlclRsY1BsYXRlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25BZGRUTEMgIT0gbnVsbClcclxuICAgICAgdGhpcy5vcHRpb25zLm9uQWRkVExDKHRsYyk7XHJcblxyXG4gICAgdGhpcy5tb3ZlQ2VudGVyKCk7XHJcbiAgfVxyXG5cclxuICBoaWRlQ2hpcmFybGl0aWVzKHNlbGVjdG9ubHk/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCB0ZXh0cyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm0uZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KHRoaXMubS5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmICh0ICE9IG51bGwgJiYgdC5hbmNob3JzICE9IG51bGwgJiYgdC5hbmNob3JzLmxlbmd0aCA9PSAxICYmIHQuZmllbGR0eXBlID09IFwiQ0hJUkFMXCIpIHtcclxuICAgICAgICBjb25zdCBhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odC5hbmNob3JzWzBdKTtcclxuICAgICAgICBpZiAoIXNlbGVjdG9ubHkgfHwgYS5zZWxlY3RlZClcclxuICAgICAgICAgIHRleHRzLnB1c2godCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGV4dHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIHRoaXMubS5kZWxHcmFwaGljcyh0ZXh0c1tpXSk7XHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hpcmFsaXRpZXMoc2VsZWN0b25seT86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIEpTRHJhdzIuSlNEcmF3SU8uY2FsbFdlYnNlcnZpY2UoXCJtb2wuZ2V0Y2hpcmFsYXRvbXNcIiwge21vbDogdGhpcy5nZXRYbWwoKSwgZm9ybWF0OiBcInhtbFwifSwgZnVuY3Rpb24ocmV0KSB7XHJcbiAgICAgIGxldCBuID0gMDtcclxuICAgICAgY29uc3QgY2xvbmVkID0gbWUuY2xvbmUoKTtcclxuICAgICAgZm9yIChjb25zdCBrIGluIHJldCkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcGFyc2VJbnQoayk7XHJcbiAgICAgICAgY29uc3QgYSA9IG1lLm0uZ2V0T2JqZWN0QnlJZChpZCk7XHJcbiAgICAgICAgaWYgKCghc2VsZWN0b25seSB8fCBhLnNlbGVjdGVkKSAmJiBtZS5tLm1hcmtDaGlyYWxpdHkoYSwgcmV0W2tdLCBtZS5ib25kbGVuZ3RoKSlcclxuICAgICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgICBpZiAobiA+IDApIHtcclxuICAgICAgICBtZS5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgIG1lLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5jcmVhc2VOdW0oYSwgZGVsdGEpIHtcclxuICAgIGlmIChkZWx0YSAhPSAxICYmIGRlbHRhICE9IC0xKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgZiA9IGZhbHNlO1xyXG4gICAgaWYgKGEuZWxlbSA9PSBcIlJcIikge1xyXG4gICAgICBjb25zdCByID0gc2NpbC5VdGlscy5wYXJzZUluZGV4KGEuYWxpYXMpO1xyXG4gICAgICBpZiAociA9PSBudWxsIHx8IHIuaW5kZXggPT0gbnVsbCkge1xyXG4gICAgICAgIGYgPSBhLl9wYXJlbnQuc2V0QXRvbUFsaWFzKGEsIChyID09IG51bGwgfHwgci5wcmVmaXggPT0gbnVsbCA/IFwiUlwiIDogci5wcmVmaXgpICsgXCIxXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChkZWx0YSA+IDApIHtcclxuICAgICAgICAgIGYgPSBhLl9wYXJlbnQuc2V0QXRvbUFsaWFzKGEsIHIucHJlZml4ICsgKHIuaW5kZXggKyAxKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyLmluZGV4ID4gMSlcclxuICAgICAgICAgICAgZiA9IGEuX3BhcmVudC5zZXRBdG9tQWxpYXMoYSwgci5wcmVmaXggKyAoci5pbmRleCAtIDEpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGYgPSBhLl9wYXJlbnQuc2V0QXRvbUNoYXJnZShhLCBhLmNoYXJnZSArIGRlbHRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgbWVyZ2VPdmVybGFwcygpIHtcclxuICAgIGNvbnN0IG92ZXJsYXBzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5tLmF0b21zW2ldLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgY29uc3QgYTEgPSB0aGlzLm0uYXRvbXNbaV07XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB0aGlzLm0uYXRvbXMubGVuZ3RoOyArK2spIHtcclxuICAgICAgICAgIGNvbnN0IGEyID0gdGhpcy5tLmF0b21zW2tdO1xyXG4gICAgICAgICAgaWYgKCFhMi5zZWxlY3RlZCAmJiBhMi50b2dnbGUoYTEucCwgdGhpcy50b3IpKSB7XHJcbiAgICAgICAgICAgIG92ZXJsYXBzLnB1c2goe2ExOiBhMSwgYTI6IGEyfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvbmRzID0gW107XHJcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG92ZXJsYXBzLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgIGNvbnN0IGExID0gb3ZlcmxhcHNba10uYTE7XHJcbiAgICAgIGNvbnN0IGEyID0gb3ZlcmxhcHNba10uYTI7XHJcbiAgICAgIGxldCBiID0gdGhpcy5tLmZpbmRCb25kKGExLCBhMik7XHJcbiAgICAgIGlmIChiICE9IG51bGwpIHtcclxuICAgICAgICBib25kcy5wdXNoKGIpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGIgPSB0aGlzLm0uYm9uZHNbaV07XHJcbiAgICAgICAgaWYgKGIuYTEgPT0gYTEpIHtcclxuICAgICAgICAgIGlmIChiLmEyICE9IGEyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLm0uZmluZEJvbmQoYi5hMiwgYTIpO1xyXG4gICAgICAgICAgICBiLmExID0gYTI7XHJcbiAgICAgICAgICAgIGlmICh0ICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgYm9uZHMucHVzaChiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGIuYTIgPT0gYTEpIHtcclxuICAgICAgICAgIGlmIChiLmExICE9IGEyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLm0uZmluZEJvbmQoYi5hMSwgYTIpO1xyXG4gICAgICAgICAgICBiLmEyID0gYTI7XHJcbiAgICAgICAgICAgIGlmICh0ICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgYm9uZHMucHVzaChiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvbmRzLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLm0uZGVsQm9uZChib25kc1tpXSwgZmFsc2UpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdmVybGFwcy5sZW5ndGg7ICsraSlcclxuICAgICAgdGhpcy5tLmRlbEF0b20ob3ZlcmxhcHNbaV0uYTEsIGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gYm9uZHMubGVuZ3RoICsgb3ZlcmxhcHMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgb25EZWwoKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLmVkICE9IG51bGwgJiYgdGhpcy50ZXh0ZWRpdG9yLmVkLmlucHV0LnN0eWxlLmRpc3BsYXkgIT0gXCJub25lXCIpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBpZiAodGhpcy5kZWxPYmplY3QodGhpcy5jdXJPYmplY3QpIHx8IHRoaXMuZGVsU2VsZWN0ZWQoKSA+IDApIHtcclxuICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICBpZiAodGhpcy5oZWxtICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5oZWxtLnJlc2V0SURzKCk7XHJcbiAgICAgIHRoaXMuY3VyT2JqZWN0ID0gbnVsbDtcclxuICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93Q29udGV4dE1lbnUoZSwgdmlld29ubHk/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNob3djb250ZXh0bWVudSA9PSBmYWxzZSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGl0ZW1zID0gb3JnLmhlbG0ud2ViZWRpdG9yLkludGVyZmFjZS5vbkNvbnRleHRNZW51KHRoaXMsIGUsIHZpZXdvbmx5KTtcclxuICAgIGlmIChpdGVtcyA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgaWYgKHRoaXMuY29udGV4dG1lbnUgPT0gbnVsbClcclxuICAgICAgdGhpcy5jb250ZXh0bWVudSA9IG5ldyBKU0RyYXcyLkNvbnRleHRNZW51KGl0ZW1zLCBmdW5jdGlvbihjbWQsIG9iaikgeyBtZS5tZW51Q2FsbGJhY2soY21kLCBvYmopOyB9KTtcclxuICAgIGNvbnN0IHNjcm9sbG9mZnNldCA9IHNjaWwuVXRpbHMuc2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICB0aGlzLmNvbnRleHRtZW51LnNob3coZS5jbGllbnRYICsgc2Nyb2xsb2Zmc2V0LngsIGUuY2xpZW50WSArIHNjcm9sbG9mZnNldC55LCB0aGlzLmN1ck9iamVjdCwgaXRlbXMpO1xyXG4gICAgdGhpcy5jb250ZXh0bWVudS5wb3MgPSB0aGlzLmV2ZW50UG9pbnQoZSk7XHJcbiAgfVxyXG5cclxuICBtZW51U2V0U3RlcmVvY2hlbWlzdHJ5KGNtZCkge1xyXG4gICAgaWYgKGNtZCA9PSBcImFic1wiKVxyXG4gICAgICBjbWQgPSBudWxsO1xyXG5cclxuICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgIGlmICh0aGlzLm0uY2hpcmFsID09IGNtZClcclxuICAgICAgdGhpcy5tLmNoaXJhbCA9IG51bGw7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubS5jaGlyYWwgPSBjbWQ7XHJcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBtZW51Q2FsbGJhY2soY21kLCBvYmopIHtcclxuICAgIGxldCBtb2RpZmllZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgY2xvbmVkID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgc3dpdGNoIChjbWQpIHtcclxuICAgICAgLy8gICAgICAgICAgICBjYXNlIFwiQ2hpcmFsXCI6XHJcbiAgICAgIC8vICAgICAgICAgICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgLy8gICAgICAgICAgICAgICAgdGhpcy5tLmNoaXJhbCA9ICF0aGlzLm0uY2hpcmFsO1xyXG4gICAgICAvLyAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIC8vICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImN1cnZlbGluZVwiOlxyXG4gICAgICBvYmouc2V0QXNzYXlDdXJ2ZUxpbmUodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImN1cnZlb25seVwiOlxyXG4gICAgICBvYmouc2V0QXNzYXlDdXJ2ZU9ubHkodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIm92ZXJsYXljdXJ2ZXNcIjpcclxuICAgICAgdGhpcy5vdmVybGF5Q3VydmVzMihvYmopO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJzZXRyYXdhc3NheWRhdGFcIjpcclxuICAgICAgb2JqLnNldEFzc2F5Q3VydmVSYXdEYXRhKHRoaXMpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJzcGVjdHJ1bV9zZXRkYXRhXCI6XHJcbiAgICAgIG9iai5zZXRTcGVjdHJ1bURhdGEodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNwZWN0cnVtX3NldGRhdGFmcm9tZmlsZVwiOlxyXG4gICAgICBvYmouc2V0U3BlY3RydW1EYXRhRnJvbUZpbGUodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNwZWN0cnVtX2F0dHJpYnV0ZXNcIjpcclxuICAgICAgb2JqLnZpZXdBdHRyaWJ1dGVzKHRoaXMpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJtYXNrYXNzYXlzYW1wbGVwb2ludFwiOlxyXG4gICAgICBtb2RpZmllZCA9IG9iai5tYXNrU2FtcGxlUG9pbnQob2JqLmN1cnNwb3QpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJwYXN0ZWNoZW1kcmF3XCI6XHJcbiAgICAgIEpTRHJhdzIuQ2hlbURyYXcucGFzdGUodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInBhc3RlY2hlbWRyYXdhc3Byb2R1Y3RcIjpcclxuICAgICAgSlNEcmF3Mi5DaGVtRHJhdy5wYXN0ZSh0aGlzLCBcInByb2R1Y3RcIik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInBhc3RlY2hlbWRyYXdhc3JlYWN0YW50XCI6XHJcbiAgICAgIEpTRHJhdzIuQ2hlbURyYXcucGFzdGUodGhpcywgXCJyZWFjdGFudFwiKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY29weWNoZW1kcmF3XCI6XHJcbiAgICAgIEpTRHJhdzIuQ2hlbURyYXcuY29weSh0aGlzKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY29weW1vbGZpbGVcIjpcclxuICAgICAgdGhpcy5jb3B5QXMoXCJtb2xmaWxlXCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJjb3B5bW9sZmlsZTIwMDBcIjpcclxuICAgICAgdGhpcy5jb3B5QXMoXCJtb2xmaWxlMjAwMFwiKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY29weW1vbGZpbGUzMDAwXCI6XHJcbiAgICAgIHRoaXMuY29weUFzKFwibW9sZmlsZTMwMDBcIik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImNvcHlzbWlsZXNcIjpcclxuICAgICAgdGhpcy5jb3B5QXMoXCJzbWlsZXNcIik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInBhc3RlbW9sZmlsZVwiOlxyXG4gICAgICB0aGlzLnBhc3RlQXMoXCJtb2xmaWxlXCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJhYm91dFwiOlxyXG4gICAgICBKU0RyYXcyLkVkaXRvci5zaG93QWJvdXQoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYWJvdXRoZWxtXCI6XHJcbiAgICAgIHNjaWwuaGVsbS5hYm91dCgpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJyZW1vdmVhdG9tdmFsdWVzXCI6XHJcbiAgICAgIHRoaXMucmVtb3ZlQXRvbVZhbHVlcygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJ2aWV3bGFyZ2VcIjpcclxuICAgICAgdGhpcy52aWV3TGFyZ2UoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwibW92ZWNlbnRlclwiOlxyXG4gICAgICB0aGlzLm1vdmVDZW50ZXIoKTtcclxuICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYXRvbV9wcm9wXCI6IHtcclxuICAgICAgbGV0IGE7XHJcbiAgICAgIGlmICgoYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KG9iaikpICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5zaG93QXRvbURsZyhhKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjYXNlIFwiYXRvbV90YWdcIjpcclxuICAgICAgbGV0IHMgPSBvYmouYmlvID09IG51bGwgPyBcIkF0b20gXCIgKyBvYmouZWxlbSA6IG9iai5iaW8udHlwZTtcclxuICAgICAgaWYgKG9iai5iaW8gIT0gbnVsbCAmJiBvYmouYmlvLnN1YnR5cGUgIT0gbnVsbClcclxuICAgICAgICBzICs9IFwiIFwiICsgb2JqLmJpby5zdWJ0eXBlO1xyXG4gICAgICB0aGlzLmFkZFRhZyhvYmosIG9iai5wLCBzLCB0cnVlKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiaGVsbV9zZXRfc2Vuc2VcIjpcclxuICAgICAgaWYgKG9iai5iaW8uYW5ub3RhdGlvbiAhPSBcIjUnc3NcIikge1xyXG4gICAgICAgIG9iai5iaW8uYW5ub3RhdGlvbiA9IFwiNSdzc1wiO1xyXG4gICAgICAgIG1vZGlmaWVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoZWxtX3NldF9hbnRpc2Vuc2VcIjpcclxuICAgICAgaWYgKG9iai5iaW8uYW5ub3RhdGlvbiAhPSBcIjUnYXNcIikge1xyXG4gICAgICAgIG9iai5iaW8uYW5ub3RhdGlvbiA9IFwiNSdhc1wiO1xyXG4gICAgICAgIG1vZGlmaWVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoZWxtX3NldF9jbGVhclwiOlxyXG4gICAgICBpZiAob2JqLmJpby5hbm5vdGF0aW9uICE9IFwiNSdcIikge1xyXG4gICAgICAgIG9iai5iaW8uYW5ub3RhdGlvbiA9IFwiNSdcIjtcclxuICAgICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiaGVsbV9jb21wbGVtZW50YXJ5X3N0cmFuZFwiOlxyXG4gICAgICBpZiAoc2NpbC5VdGlscy5zdGFydHN3aXRoKG9iai5iaW8uYW5ub3RhdGlvbiwgXCI1J1wiKSlcclxuICAgICAgICBtb2RpZmllZCA9IHRoaXMuaGVsbS5tYWtlQ29tcGxlbWVudGFyeVN0cmFuZChvYmopICE9IG51bGw7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImhlbG1fY3JlYXRlX2dyb3VwXCI6XHJcbiAgICAgIG1vZGlmaWVkID0gdGhpcy5oZWxtLmNyZWF0ZUdyb3VwKG9iaiwgbnVsbCwgdHJ1ZSkgIT0gbnVsbDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiaGVsbV9ncm91cF9jb2xsYXBzZVwiOlxyXG4gICAgICBtb2RpZmllZCA9IHRoaXMuaGVsbS5jb2xsYXBzZUdyb3VwKG9iaiwgdHJ1ZSkgIT0gbnVsbDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiaGVsbV9ib25kX3Byb3BcIjpcclxuICAgICAgdGhpcy5oZWxtLnNldEJvbmRQcm9wKG9iaik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImhlbG1fYXRvbV9wcm9wXCI6XHJcbiAgICAgIHRoaXMuaGVsbS5zZXRBdG9tUHJvcChvYmopO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJncm91cF9zZXRwcm9wZXJ0aWVzXCI6XHJcbiAgICAgIHRoaXMuc2V0R3JvdXBQcm9wZXJ0aWVzKG9iaik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImRldGVjdHN0ZXJlb2NoZW1pc3RyeVwiOlxyXG4gICAgICB0aGlzLmRldGVjdENoaXJhbGl0aWVzKHRydWUpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoaWRlc3RlcmVvY2hlbWlzdHJ5XCI6XHJcbiAgICAgIHRoaXMuaGlkZUNoaXJhcmxpdGllcyh0cnVlKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiZGV0ZWN0c3RlcmVvY2hlbWlzdHJ5MlwiOlxyXG4gICAgICB0aGlzLmRldGVjdENoaXJhbGl0aWVzKCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImhpZGVzdGVyZW9jaGVtaXN0cnkyXCI6XHJcbiAgICAgIHRoaXMuaGlkZUNoaXJhcmxpdGllcygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJib25kX3Byb3BcIjoge1xyXG4gICAgICBjb25zdCBiID0gSlNEcmF3Mi5Cb25kLmNhc3Q8VEJpbz4ob2JqKTtcclxuICAgICAgaWYgKGIgIT0gbnVsbClcclxuICAgICAgICB0aGlzLnNob3dCb25kRGxnKGIpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgXCJib25kX3RhZ1wiOlxyXG4gICAgICB0aGlzLmFkZFRhZyhvYmosIG9iai5jZW50ZXIoKSwgXCJbTm9uZV1cIiwgdHJ1ZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImJvbmRfbG9jYW50XCI6XHJcbiAgICAgIHRoaXMuYWRkVGFnKG9iaiwgb2JqLmNlbnRlcigpLCBcIlUgPSBVbmtub3duIExvY2FudFwiKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYmlvX3Nob3dzZXF1ZW5jZVwiOlxyXG4gICAgICB0aGlzLnNob3dTZXF1ZW5jZXMob2JqKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwicmdyb3VwX2RlZmluZVwiOlxyXG4gICAgICB0aGlzLnJncm91cERlZmluZShvYmopO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJyZ3JvdXBfcmVtb3ZlXCI6IHtcclxuICAgICAgY29uc3QgYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KG9iaik7XHJcbiAgICAgIGlmIChhICE9IG51bGwgJiYgYS5yZ3JvdXAgIT0gbnVsbCkge1xyXG4gICAgICAgIGEucmdyb3VwID0gbnVsbDtcclxuICAgICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjYXNlIFwicmdyb3VwX2FkZHN0cnVjdHVyZVwiOlxyXG4gICAgICB0aGlzLmFkZFJncm91cFN0cnVjdHVyZShvYmopO1xyXG4gICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNldGJyYWNrZXRzdWJzY3JpcHRpb25cIjpcclxuICAgICAgdGhpcy5zZXRCcmFja2V0U3Vic2NyaXB0aW9uKG9iaik7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNldGJyYWNrZXRyYXRpb1wiOlxyXG4gICAgICB0aGlzLnNldEJyYWNrZXRSYXRpbyhvYmopO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJzZXRicmFja2V0bXdcIjpcclxuICAgICAgdGhpcy5zZXRCcmFja2V0RGF0YShvYmosIFwiUE9MWU1FUl9NV1wiLCBcIk1XPVwiLCAxKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwicmVnaXN0cmF0aW9ucGFyZW50XCI6XHJcbiAgICAgIHRoaXMuc2V0QnJhY2tldERhdGEob2JqLCBcIlJFR19QQVJFTlRcIiwgXCJQYXJlbnQ9XCIsIDIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJncmFwaGljc19icmluZzJmcm9udFwiOlxyXG4gICAgICBtb2RpZmllZCA9IHRoaXMubS5zZXRaT3JkZXIob2JqLCAtMSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImdyYXBoaWNzX3NldDJiYWNrXCI6XHJcbiAgICAgIG1vZGlmaWVkID0gdGhpcy5tLnNldFpPcmRlcihvYmosIDApO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJ0bGNfYWRkbGFuZVwiOlxyXG4gICAgICBtb2RpZmllZCA9IEpTRHJhdzIuVExDLmNhc3Qob2JqKSAhPSBudWxsICYmIG9iai5hZGRMYW5lKCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInRsY19kdXBsaWNhdGVzcG90XCI6XHJcbiAgICAgIG1vZGlmaWVkID0gSlNEcmF3Mi5UTEMuY2FzdChvYmopICE9IG51bGwgJiYgb2JqLmR1cGxpY2F0ZVNwb3Qob2JqLmN1cnNwb3QpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJ0bGNfZHVwbGljYXRlbGFuZVwiOlxyXG4gICAgICBtb2RpZmllZCA9IEpTRHJhdzIuVExDLmNhc3Qob2JqKSAhPSBudWxsICYmIG9iai5kdXBsaWNhdGVMYW5lKG9iai5jdXJzcG90KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwidGxjX3Nob3dsYW5lbGFiZWxcIjpcclxuICAgICAgbW9kaWZpZWQgPSBKU0RyYXcyLlRMQy5jYXN0KG9iaikgIT0gbnVsbCAmJiBvYmouc2hvd0xhbmVMYWJlbCghb2JqLnNob3dsYW5lbGFiZWwpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJ0bGNfcmVtb3Zlc3BvdFwiOlxyXG4gICAgICBtb2RpZmllZCA9IEpTRHJhdzIuVExDLmNhc3Qob2JqKSAhPSBudWxsICYmIG9iai5yZW1vdmVTcG90KG9iai5jdXJzcG90KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwidGxjX3NldHJmdmFsdWVcIjpcclxuICAgICAgbW9kaWZpZWQgPSBKU0RyYXcyLlRMQy5jYXN0KG9iaikgIT0gbnVsbCAmJiBvYmouc2V0UmZWYWx1ZShvYmouY3Vyc3BvdCwgdGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInRsY19zZXRsYW5lbGFiZWxzXCI6XHJcbiAgICAgIEpTRHJhdzIuVExDLnNldExhbmVMYWJlbHModGhpcywgb2JqKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiQ29weVwiOlxyXG4gICAgICB0aGlzLmNvcHkoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiU2VsZWN0IEFsbFwiOlxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RBbGwoKSlcclxuICAgICAgICB0aGlzLnJlZnJlc2goZmFsc2UpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJjb3B5LXZpZXdvbmx5XCI6XHJcbiAgICAgIHRoaXMuY29weShjbG9uZWQgPT0gbnVsbCA/IG51bGwgOiBjbG9uZWQubW9sKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiQ3V0XCI6XHJcbiAgICAgIGlmICh0aGlzLmN1dCgpKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaChmYWxzZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImVkaXQtcG9wdXBcIjpcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3B1cClcclxuICAgICAgICB0aGlzLmRibGNsaWNrKCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIkV4cGFuZFwiOlxyXG4gICAgICB0aGlzLmV4cGFuZFN1cGVyYXRvbSgpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJQYXN0ZVwiOlxyXG4gICAgICBpZiAodGhpcy5wYXN0ZSh0aGlzLmNvbnRleHRtZW51LnBvcykpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKGZhbHNlKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiRGVsZXRlXCI6XHJcbiAgICAgIG1vZGlmaWVkID0gdGhpcy5kZWxTZWxlY3RlZCgpID4gMDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwibXVsdGktY2VudGVyXCI6XHJcbiAgICAgIG1vZGlmaWVkID0gdGhpcy5jcmVhdGVNdWx0aWNlbnRlcigpICE9IG51bGw7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIkNsZWFyXCI6XHJcbiAgICAgIHRoaXMuY2xlYXIoZmFsc2UsIHRydWUpO1xyXG4gICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIlVuZG9cIjpcclxuICAgICAgaWYgKHRoaXMudW5kbygpKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaChmYWxzZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIlJlZG9cIjpcclxuICAgICAgaWYgKHRoaXMucmVkbygpKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaChmYWxzZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIndvcmtmbG93X3Byb3BlcnRpZXNcIjpcclxuICAgICAgSlNEcmF3Mi5TaGFwZS5zaG93UHJvcGVydGllcyh0aGlzLCBKU0RyYXcyLlNoYXBlLmNhc3Qob2JqKSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtb2RpZmllZCkge1xyXG4gICAgICB0aGlzLnB1c2h1bmRvKGNsb25lZCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaChtb2RpZmllZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVybGF5Q3VydmVzMihjdXJ2ZSkge1xyXG4gICAgY3VydmUgPSBKU0RyYXcyLkFzc2F5Q3VydmUuY2FzdChjdXJ2ZSk7XHJcbiAgICBpZiAoY3VydmUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGMgPSBKU0RyYXcyLkFzc2F5Q3VydmUuY2FzdCh0aGlzLm0uZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAoYyAhPSBudWxsICYmIGMuc2VsZWN0ZWQpXHJcbiAgICAgICAgbGlzdC5wdXNoKGMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vdmVybGF5Q3VydmVzKGxpc3QsIGN1cnZlKTtcclxuICB9XHJcblxyXG4gIG92ZXJsYXlDdXJ2ZXMobGlzdCwgY3VydmUpIHtcclxuICAgIGlmIChzY2lsLlV0aWxzLmluZGV4T2YobGlzdCwgY3VydmUpIDwgMClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICBsaXN0W2ldLmN1cnZlbGluZSA9IGZhbHNlO1xyXG4gICAgICBpZiAobGlzdFtpXSA9PSBjdXJ2ZSkge1xyXG4gICAgICAgIGxpc3RbaV0uY3VydmVvbmx5ID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGlzdFtpXS5fcmVjdCA9IGN1cnZlLl9yZWN0LmNsb25lKCk7XHJcbiAgICAgICAgbGlzdFtpXS5jdXJ2ZW9ubHkgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0R3JvdXBQcm9wZXJ0aWVzKG9iaikge1xyXG4gICAgY29uc3QgZyA9IEpTRHJhdzIuR3JvdXAuY2FzdChvYmopO1xyXG4gICAgaWYgKGcgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIGlmICh0aGlzLmdyb3VwUHJvcERsZyA9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgICAgY29uc3QgZmllbGRzID0ge3JhdGlvOiB7bGFiZWw6IFwiUmF0aW9cIiwgdHlwZTogXCJudW1iZXJcIiwgYWNjZXB0czogXCIoYW5kKXwob3IpfFsqfD9dXCIsIHdpZHRoOiAxMDB9LCB0YWc6IHtsYWJlbDogXCJBbm5vdGF0aW9uXCIsIHdpZHRoOiAzMDB9fTtcclxuICAgICAgdGhpcy5ncm91cFByb3BEbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybShcIkdyb3VwIFByb3BlcnRpZXNcIiwgZmllbGRzLCB7bGFiZWw6IFwiU2F2ZVwiLCBvbmNsaWNrOiBmdW5jdGlvbigpIHsgbWUuc2V0R3JvdXBQcm9wZXJ0aWVzMigpOyB9fSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwUHJvcERsZy5zaG93KCk7XHJcbiAgICB0aGlzLmdyb3VwUHJvcERsZy5mb3JtLnNldERhdGEoe3JhdGlvOiBnLnJhdGlvLCB0YWc6IGcudGFnfSk7XHJcbiAgICB0aGlzLmdyb3VwUHJvcERsZy5nID0gZztcclxuICB9XHJcblxyXG4gIHNldEdyb3VwUHJvcGVydGllczIoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ncm91cFByb3BEbGcuZm9ybS5nZXREYXRhKCk7XHJcbiAgICBjb25zdCBnID0gdGhpcy5ncm91cFByb3BEbGcuZztcclxuICAgIGlmIChkYXRhLnJhdGlvICE9IFwiXCIgJiYgdGhpcy5oYXNHcm91cEJvbmQoZykpXHJcbiAgICAgIGRhdGEucmF0aW8gPSBcIlwiO1xyXG5cclxuICAgIGlmICgoZy5yYXRpbyA9PSBudWxsID8gXCJcIiA6IGcucmF0aW8gKyBcIlwiKSAhPSBkYXRhLnJhdGlvIHx8IGcudGFnICE9IGRhdGEudGFnKSB7XHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgZy5yYXRpbyA9IGRhdGEucmF0aW87XHJcbiAgICAgIGcudGFnID0gZGF0YS50YWc7XHJcbiAgICAgIHRoaXMuZ3JvdXBQcm9wRGxnLmhpZGUoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzR3JvdXBCb25kKGcpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBnLmEgPT0gbnVsbCA/IG51bGwgOiB0aGlzLm0uZ2V0QWxsQm9uZHMoZy5hKTtcclxuICAgIHJldHVybiBsaXN0ICE9IG51bGwgJiYgbGlzdC5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgY29weUFzKGZtdCkge1xyXG4gICAgbGV0IHMgPSBudWxsO1xyXG4gICAgc3dpdGNoIChmbXQpIHtcclxuICAgIGNhc2UgXCJtb2xmaWxlXCI6XHJcbiAgICAgIHMgPSB0aGlzLmdldE1vbGZpbGUoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwibW9sZmlsZTIwMDBcIjpcclxuICAgICAgcyA9IHRoaXMuZ2V0TW9sZmlsZShmYWxzZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIm1vbGZpbGUzMDAwXCI6XHJcbiAgICAgIHMgPSB0aGlzLmdldE1vbGZpbGUodHJ1ZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNtaWxlc1wiOlxyXG4gICAgICBzID0gdGhpcy5nZXRTbWlsZXModHJ1ZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpIHtcclxuICAgICAgc2NpbC5VdGlscy5hbGVydChcIk5vdGhpbmcgcGxhY2VkIG9uIGNsaXBib2FyZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHNjaWwuQ2xpcGJvYXJkLmNvcHkocyk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUFzKGZtdCkge1xyXG4gIH1cclxuXHJcbiAgcmdyb3VwRGVmaW5lKG9iaikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVNdWx0aWNlbnRlcigpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgdmlld0xhcmdlKCkge1xyXG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLm9wdGlvbnMudmlld29ubHkgPyBcIkRpc21pc3NcIiA6IFwiU2F2ZVwiO1xyXG4gICAgSlNEcmF3Mi5FZGl0b3Iuc2hvd1BvcHVwKFwiVmlldyBTdHJ1Y3R1cmVcIiwgbGFiZWwsIG51bGwsIHt2YWx1ZTogdGhpcy5jbG9uZSgpLCBmb3JtYXQ6IFwiY2xvbmVcIn0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQXRvbVZhbHVlcygpIHtcclxuICAgIGxldCBjbG9uZWQgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm0uYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMubS5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEudGFnICE9IG51bGwgJiYgYS50YWcgIT0gXCJcIikge1xyXG4gICAgICAgIGlmIChjbG9uZWQgPT0gbnVsbClcclxuICAgICAgICAgIGNsb25lZCA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICBhLnRhZyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2xvbmVkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVkICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYWxsIG9iamVjdFxyXG4gICAqIEBmdW5jdGlvbiBzZWxlY3RBbGxcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgc2VsZWN0QWxsKCkge1xyXG4gICAgY29uc3QgZiA9IHRoaXMubS5zZXRTZWxlY3RlZCh0cnVlKSA+IDA7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uc2VsZWN0aW9uY2hhbmdlZCAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25zZWxlY3Rpb25jaGFuZ2VkKHRoaXMpO1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICBhZGRSZ3JvdXBTdHJ1Y3R1cmUocmdyb3VwKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG1lbnVUTENTZXRTcG90U2hhcGUob2JqLCBzaGFwZSwgc2l6ZSkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51VExDU2V0U3BvdFNpemUob2JqLCBzaXplKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG1lbnVUTENMYWJlbChvYmosIGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51VExDU2V0TGFiZWwob2JqLCBjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVRMQ0ZpbGwob2JqLCBjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNoYXBlVHlwZShvYmosIGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51QWxpZ25TaGFwZXMob2JqLCBjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNoYXBlRmlsbChvYmosIGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51QW50aWJveVR5cGUob2JqLCBjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1NlcXVlbmNlcyhvYmopIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNldEZvbnRzaXplKGNtZCwgb2JqKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG1lbnVTZXRDb2xvcihjbWQsIG9iaikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBhZGRUYWcob2JqLCBwLCBzLCBlZGl0PzogYW55KSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIHNldEJyYWNrZXREYXRhKGJyLCBmaWVsZHR5cGUsIHByZWZpeCwgeXBvcykge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBzZXRCcmFja2V0U3Vic2NyaXB0aW9uKGJyKSB7XHJcbiAgICBpZiAoYnIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCB0ID0gdGhpcy5tLmdldFNncm91cFRleHQoYnIsIFwiQlJBQ0tFVF9UWVBFXCIpO1xyXG4gICAgaWYgKHQgPT0gbnVsbClcclxuICAgICAgdCA9IGJyLmNyZWF0ZVN1YnNjcmlwdCh0aGlzLm0sIFwiI1wiKTtcclxuICAgIHRoaXMuc2hvd1RleHRFZGl0b3IodCwgbnVsbCwgdC50ZXh0KTtcclxuICB9XHJcblxyXG4gIHNldEJyYWNrZXRSYXRpbyhicikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51QnJhY2tldChjbWQsIHN1YiwgY2hlY2tlZCwgb2JqKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG1lbnVTZXRUZXh0RmllbGQoY21kLCB0eHQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNldEF0dGFjaFBvaW50KGNtZCwgb2JqKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIGxvY2tBdG9tQ29ubmVjdGlvbihmKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG1lbnVTZXRBdG9tUXVlcnkoY21kLCBzdWIsIGNoZWNrZWQsIG9iaikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51U2V0QXRvbVF1ZXJ5MihrZXksIHZhbCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51U2V0QXRvbVR5cGUoY21kLCBvYmopIHtcclxuICAgIGlmIChjbWQgPT0gXCIuLi5cIiB8fCBjbWQgPT0gXCJtb3JlXCIpIHtcclxuICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICB0aGlzLnNob3dQVChmdW5jdGlvbihlbGVtKSB7IG1lLm1lbnVTZXRBdG9tVHlwZTIoZWxlbSwgb2JqKTsgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1lbnVTZXRBdG9tVHlwZTIoY21kLCBvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWVudVNldEF0b21UeXBlMihlbGVtLCBvYmo/OiBhbnkpIHtcclxuICAgIGxldCBuID0gMDtcclxuICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuY2xvbmUoKTtcclxuXHJcbiAgICBjb25zdCBhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4ob2JqKTtcclxuICAgIGlmIChhICE9IG51bGwgJiYgIWEuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKGEuX3BhcmVudC5zZXRBdG9tVHlwZShhLCBlbGVtKSlcclxuICAgICAgICArK247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBhdG9tcyA9IHRoaXMubS5hbGxBdG9tcygpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IGF0b21zW2ldO1xyXG4gICAgICAgIGlmIChhLnNlbGVjdGVkICYmIGEuX3BhcmVudC5zZXRBdG9tVHlwZShhLCBlbGVtKSlcclxuICAgICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChuID4gMCkge1xyXG4gICAgICB0aGlzLnB1c2h1bmRvKGNsb25lZCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1lbnVTZXRBdG9tQ2hhcmdlcyhjbWQpIHtcclxuICAgIGNvbnN0IGNoYXJnZXMgPSBwYXJzZUludChjbWQpO1xyXG4gICAgaWYgKGlzTmFOKGNoYXJnZXMpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IG4gPSAwO1xyXG4gICAgY29uc3QgY2xvbmVkID0gdGhpcy5jbG9uZSgpO1xyXG5cclxuICAgIGNvbnN0IGF0b21zID0gdGhpcy5tLmFsbEF0b21zKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSBhdG9tc1tpXTtcclxuICAgICAgaWYgKGEuc2VsZWN0ZWQgJiYgYS5fcGFyZW50LnNldEF0b21DaGFyZ2UoYSwgY2hhcmdlcykpXHJcbiAgICAgICAgKytuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuID4gMCkge1xyXG4gICAgICB0aGlzLnB1c2h1bmRvKGNsb25lZCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1lbnVTZXRBdG9tSXNvdG9wZShjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNldEF0b21SYWRpY2FsKGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51U2V0RWhuU3RlcmVvY2hlbWlzdHJ5KGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBtZW51U2V0Qm9uZFRvcChjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNldFJ4bkNlbnRlcihjbWQpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNldEJvbmRUeXBlKGNtZCkge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgZ2V0QWxsVGxjUGxhdGVzKHNvcnRpbmcpOiBhbnlbXSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIG51bWJlclRsY1BsYXRlcygpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kU3VwZXJhdG9tKCkge1xyXG4gICAgaWYgKCF0aGlzLmhlbG0uZXhwYW5kU3VwZXJBdG9tKHRoaXMuY3VyT2JqZWN0KSlcclxuICAgICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBfc2V0U2VsZWN0ZWRCb25kVHlwZShidCkge1xyXG4gICAgbGV0IG4gPSAwO1xyXG4gICAgY29uc3QgYm9uZHMgPSB0aGlzLm0uYWxsQm9uZHMoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IGJvbmRzW2ldO1xyXG4gICAgICBpZiAoYi5zZWxlY3RlZCAmJiBiLl9wYXJlbnQuc2V0Qm9uZFR5cGUoYm9uZHNbaV0sIGJ0KSlcclxuICAgICAgICArK247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbjtcclxuICB9XHJcblxyXG4gIGRvUnhuTWFwKGN1cm9iaikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBDbWQyQm9uZFR5cGUoY21kKSB7XHJcbiAgICBzd2l0Y2ggKGNtZCkge1xyXG4gICAgY2FzZSBcInNpbmdsZVwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFO1xyXG4gICAgY2FzZSBcImRvdWJsZVwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFO1xyXG4gICAgY2FzZSBcInRyaXBsZVwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuVFJJUExFO1xyXG4gICAgY2FzZSBcInVua25vd25cIjpcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQk9ORFRZUEVTLlVOS05PV047XHJcbiAgICBjYXNlIFwiZHVtbXlcIjpcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZO1xyXG4gICAgY2FzZSBcImVpdGhlclwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuRUlUSEVSO1xyXG4gICAgY2FzZSBcIndpZ2dseVwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuV0lHR0xZO1xyXG4gICAgY2FzZSBcImJvbGRcIjpcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQk9ORFRZUEVTLkJPTEQ7XHJcbiAgICBjYXNlIFwiYm9sZGhhc2hcIjpcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQk9ORFRZUEVTLkJPTERIQVNIO1xyXG4gICAgY2FzZSBcImRlbG9jYWxpemVkXCI6XHJcbiAgICAgIHJldHVybiBKU0RyYXcyLkJPTkRUWVBFUy5ERUxPQ0FMSVpFRDtcclxuICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0U7XHJcbiAgICBjYXNlIFwiZG93blwiOlxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZGVsT2JqZWN0KG9iaikge1xyXG4gICAgaWYgKG9iaiA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdChvYmopO1xyXG4gICAgaWYgKGJyICE9IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm0uZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3QodGhpcy5tLmdyYXBoaWNzW2ldKTtcclxuICAgICAgICBpZiAodCAhPSBudWxsICYmIHNjaWwuVXRpbHMuaW5kZXhPZih0LmFuY2hvcnMsIGJyKSA+PSAwKVxyXG4gICAgICAgICAgdGhpcy5tLmRlbE9iamVjdCh0KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm0uZGVsT2JqZWN0KGJyKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGxjID0gSlNEcmF3Mi5UTEMuY2FzdChvYmopO1xyXG4gICAgaWYgKHRsYyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0bGMucmVtb3ZlU3BvdCh0bGMuY3Vyc3BvdCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcmdyb3VwID0gSlNEcmF3Mi5SR3JvdXAuY2FzdChvYmopO1xyXG4gICAgaWYgKHJncm91cCAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KG9iaik7XHJcbiAgICBpZiAoYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlbEFBKGEpKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuZGVsaGV0ZXJvYXRvbSAhPSBmYWxzZSAmJiBhLmJpbyA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGEuZWxlbSAhPSBcIkNcIiB8fCBhLmFsaWFzICE9IG51bGwgJiYgYS5hbGlhcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBhLmVsZW0gPSBcIkNcIjtcclxuICAgICAgICAgIGEuYWxpYXMgPSBudWxsO1xyXG4gICAgICAgICAgYS5fcGFyZW50LnNldEhDb3VudChhKTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGYgPSBvYmouX3BhcmVudC5kZWxPYmplY3Qob2JqKTtcclxuICAgIGlmIChmKSB7XHJcbiAgICAgIGlmICh0bGMgIT0gbnVsbClcclxuICAgICAgICB0aGlzLm51bWJlclRsY1BsYXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgZGVsU2VsZWN0ZWQoKSB7XHJcbiAgICBsZXQgaGFzVGNsID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoSlNEcmF3Mi5UTEMuY2FzdCh0aGlzLm0uZ3JhcGhpY3NbaV0pICE9IG51bGwpIHtcclxuICAgICAgICBoYXNUY2wgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbjogbnVtYmVyID0gdGhpcy5tLmRlbFNlbGVjdGVkKCk7XHJcbiAgICBpZiAobiA+IDAgJiYgaGFzVGNsKVxyXG4gICAgICB0aGlzLm51bWJlclRsY1BsYXRlcygpO1xyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG4gPSB0aGlzLm0uaGFzU2VsZWN0ZWQoKSBhcyBhbnkgYXMgbnVtYmVyO1xyXG4gICAgaWYgKG4gPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuVExDLmNhc3QodGhpcy5tLmdyYXBoaWNzW2ldKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLm51bWJlclRsY1BsYXRlcygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICBsYXNzb1NlbGVjdChsYXN0KSB7XHJcbiAgICBpZiAodGhpcy5zdGFydCA9PSBudWxsIHx8IHRoaXMuZW5kID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleHRyYSA9IHRoaXMuc3VyZmFjZS5leHRyYTtcclxuICAgIGlmIChleHRyYS5sYXNzbyA9PSBudWxsKVxyXG4gICAgICBleHRyYS5sYXNzbyA9IG5ldyBKU0RyYXcyLkxhc3NvKGV4dHJhLCB0aGlzLmxpbmV3aWR0aCwgdHJ1ZSk7XHJcblxyXG4gICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd0xpbmUoZXh0cmEsIGxhc3QsIHRoaXMuZW5kLCBcIiNhYWZcIiwgdGhpcy5saW5ld2lkdGggLyAyKTtcclxuICAgIHRoaXMubS5sYXNzb1NlbGVjdChleHRyYSwgdGhpcy5zdGFydCwgdGhpcy5lbmQsIGxhc3QsIHRoaXMubGluZXdpZHRoLCB0aGlzLnRvciAvIDgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0SW5SZWN0KHIpIHtcclxuICAgIHJldHVybiB0aGlzLm0uc2VsZWN0SW5SZWN0KHIpO1xyXG4gIH1cclxuXHJcbiAgYWRkVGVtcGxhdGUoa2V5LCBvYmosIHApIHtcclxuICAgIGNvbnN0IGEgPSBKU0RyYXcyLkF0b20uY2FzdDxUQmlvPihvYmopO1xyXG4gICAgY29uc3QgYiA9IEpTRHJhdzIuQm9uZC5jYXN0PFRCaW8+KG9iaik7XHJcblxyXG4gICAgY29uc3QgbTIgPSBrZXkgPT0gXCJbY3VzdG9tXVwiID8gSlNEcmF3Mi5DdXN0b21UZW1wbGF0ZXMuZ2V0KGtleSkgOiBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0VGVtcGxhdGUoa2V5KTtcclxuICAgIGlmIChtMiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCBtID0gbTIuY2xvbmUoKTtcclxuICAgIG0uc2V0Qm9uZExlbmd0aChiID09IG51bGwgPyB0aGlzLmJvbmRsZW5ndGggOiBiLmJvbmRMZW5ndGgoKSk7XHJcblxyXG4gICAgaWYgKGEgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKGEsIG0uYXRvbXMpO1xyXG4gICAgICBjb25zdCBhMCA9IG0uYXRvbXNbMF07XHJcbiAgICAgIGlmIChKU0RyYXcyLlN1cGVyQXRvbXMuX2FsaWduTW9sKGEuX3BhcmVudCwgYSwgbSwgbS5hdG9tc1swXSkpXHJcbiAgICAgICAgbS5yZXBsYWNlQXRvbShhMCwgYSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKGIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKGIuYTEsIG0uYXRvbXMpO1xyXG4gICAgICB0aGlzLl9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKGIuYTIsIG0uYXRvbXMpO1xyXG4gICAgICBsZXQgYjAgPSBudWxsO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0uYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBpZiAobS5ib25kc1tpXS50eXBlICE9IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSkge1xyXG4gICAgICAgICAgYjAgPSBtLmJvbmRzW2ldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChiMCA9PSBudWxsKVxyXG4gICAgICAgIGIwID0gbS5ib25kc1swXTtcclxuICAgICAgbS5vZmZzZXQoYi5hMS5wLnggLSBiMC5hMS5wLngsIGIuYTEucC55IC0gYjAuYTEucC55KTtcclxuICAgICAgY29uc3QgZGlyID0gdGhpcy5fY2FjbEJvbmREaXIodGhpcy5tLCBiKTtcclxuICAgICAgY29uc3QgZGlyMCA9IHRoaXMuX2NhY2xCb25kRGlyKG0sIGIwKTtcclxuICAgICAgaWYgKGRpciA+IDAgJiYgZGlyMCA+IDAgfHwgZGlyIDwgMCAmJiBkaXIwIDwgMClcclxuICAgICAgICBtLmZsaXBYKGIuYTEucC54KTtcclxuXHJcbiAgICAgIGNvbnN0IGRlZyA9IGIuYW5nbGUoKTtcclxuICAgICAgY29uc3QgZGVnMCA9IGIwLmFuZ2xlKCk7XHJcbiAgICAgIG0ucm90YXRlKGIwLmExLnAuY2xvbmUoKSwgZGVnIC0gZGVnMCk7XHJcblxyXG4gICAgICBtLnJlcGxhY2VCb25kKGIwLCBiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGEwID0gbS5hdG9tc1swXTtcclxuICAgICAgbS5vZmZzZXQocC54IC0gYTAucC54LCBwLnkgLSBhMC5wLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbS5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhMCA9IG0uYXRvbXNbaV07XHJcbiAgICAgIGNvbnN0IGEyID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy50b2dnbGUoYTAucCkpO1xyXG4gICAgICBpZiAoYTIgIT0gbnVsbCAmJiBhICE9IGEwKVxyXG4gICAgICAgIG0ucmVwbGFjZUF0b20oYTAsIGEyKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhdHRhY2ggdG8gZXhpc3RpbmcgZ3JvdXBcclxuICAgIGxldCBncm91cCA9IG51bGw7XHJcbiAgICBpZiAoYSAhPSBudWxsICYmIGEuZ3JvdXAgIT0gbnVsbClcclxuICAgICAgZ3JvdXAgPSBhLmdyb3VwO1xyXG4gICAgaWYgKGIgIT0gbnVsbCAmJiBiLmExLmdyb3VwICE9IG51bGwgJiYgYi5hMi5ncm91cCAhPSBudWxsICYmIGIuYTEuZ3JvdXAgPT0gYi5hMi5ncm91cClcclxuICAgICAgZ3JvdXAgPSBiLmExLmdyb3VwO1xyXG4gICAgaWYgKGdyb3VwICE9IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIG0uYXRvbXNbaV0uZ3JvdXAgPSBncm91cDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSBhICE9IG51bGwgPyBhLl9wYXJlbnQgOiAoYiAhPSBudWxsID8gYi5fcGFyZW50IDogbnVsbCk7XHJcbiAgICBpZiAocGFyZW50ICE9IG51bGwpXHJcbiAgICAgIHBhcmVudC5tZXJnZU1vbChtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5tLm1lcmdlTW9sKG0pO1xyXG4gIH1cclxuXHJcbiAgX2NhY2xCb25kRGlyKG0sIGIpIHtcclxuICAgIGxldCBuID0gMDtcclxuICAgIGxldCBhdG9tcyA9IG0uZ2V0TmVpZ2hib3JBdG9tcyhiLmExLCBiLmEyKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGIuYTEucC5hbmdsZUFzT3JpZ2luKGIuYTIucCwgYXRvbXNbaV0ucCkgPiAxODApXHJcbiAgICAgICAgKytuO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgLS1uO1xyXG4gICAgfVxyXG5cclxuICAgIGF0b21zID0gbS5nZXROZWlnaGJvckF0b21zKGIuYTIsIGIuYTEpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYi5hMi5wLmFuZ2xlQXNPcmlnaW4oYXRvbXNbaV0ucCwgYi5hMS5wKSA+IDE4MClcclxuICAgICAgICArK247XHJcbiAgICAgIGVsc2VcclxuICAgICAgICAtLW47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICBrZXlkb3duKGUpIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmF0ZWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLmVkICE9IG51bGwgJiYgdGhpcy50ZXh0ZWRpdG9yLmVkLmlucHV0LnN0eWxlLmRpc3BsYXkgPT0gXCJcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaGVsbS5jYW5jZWxEbkQoKTtcclxuICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbFZpZXdlci5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjaWwuVXRpbHMuZ2V0WmluZGV4KHRoaXMuZGl2KSA8IHNjaWwuVXRpbHMuZ2V0TWF4WmluZGV4KCkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9rZXlwcmVzc2NoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XHJcblxyXG4gICAgaWYgKGUucHJldmVudERlZmF1bHQgPT0gbnVsbClcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCkgeyB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbnRleHRtZW51ICE9IG51bGwpXHJcbiAgICAgIHRoaXMuY29udGV4dG1lbnUuaGlkZSgpO1xyXG5cclxuICAgIGlmIChlLmtleUNvZGUgPT0gMjcpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnQgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBjdHJsXHJcbiAgICBpZiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkge1xyXG4gICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xyXG4gICAgICBjYXNlIDg5OiAvLyBZXHJcbiAgICAgIGNhc2UgMTIxOlxyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmFwcG1vZGUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJlZG8oKSlcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA5MDogLy8gWlxyXG4gICAgICBjYXNlIDEyMjpcclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcHBtb2RlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy51bmRvKCkpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjc6IC8vIENcclxuICAgICAgY2FzZSA5OTpcclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcHBtb2RlKVxyXG4gICAgICAgICAgdGhpcy5jb3B5KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODY6IC8vIFZcclxuICAgICAgY2FzZSAxMTg6XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYXBwbW9kZSAmJiBzY2lsLlV0aWxzLmlzSUUpIHsgLy8gZXhjZXB0IElFLCBJIzEwMjA1XHJcbiAgICAgICAgICAvLyBJRSB1c2VzIHRoaXM7ICBBbGwgb3RoZXIgYnJvd3NlcnMgdXNlIGRvY3VtZW50Lm9ucGFzdGUgZXZlbnRcclxuICAgICAgICAgIGlmICh0aGlzLnBhc3RlKCkpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODg6IC8vIFhcclxuICAgICAgY2FzZSAxMjA6XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYXBwbW9kZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3V0KCkpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjU6IC8vIEFcclxuICAgICAgY2FzZSA5NzpcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RBbGwoKSlcclxuICAgICAgICAgIHRoaXMucmVmcmVzaChmYWxzZSk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhID0gSlNEcmF3Mi5BdG9tLmNhc3Q8VEJpbz4odGhpcy5jdXJPYmplY3QpO1xyXG4gICAgaWYgKGUua2V5Q29kZSA9PSA4IHx8IGUua2V5Q29kZSA9PSA0NikgeyAvLyBkZWxcclxuICAgICAgaWYgKHRoaXMub25EZWwoKSlcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBtb3ZlIHNlbGVjdGVkIG9iamVjdHNcclxuICAgIGlmICh0aGlzLm0uaGFzU2VsZWN0ZWQoKSkge1xyXG4gICAgICBsZXQgZHggPSAwO1xyXG4gICAgICBsZXQgZHkgPSAwO1xyXG4gICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xyXG4gICAgICBjYXNlIDM3OiAvLyBsZWZ0XHJcbiAgICAgICAgZHggPSAtMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzODogLy8gdXBcclxuICAgICAgICBkeSA9IC0xO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM5OiAvLyByaWdodFxyXG4gICAgICAgIGR4ID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA0MDogLy8gZG93blxyXG4gICAgICAgIGR5ID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGR4ICE9IDAgfHwgZHkgIT0gMCkge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICAvL3RoaXMubS5vZmZzZXQoZS5zaGlmdEtleSA/IGR4IDogZHggKiB0aGlzLmJvbmRsZW5ndGggLyAyLCBlLnNoaWZ0S2V5ID8gZHkgOiBkeSAqIHRoaXMuYm9uZGxlbmd0aCAvIDIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMubS5vZmZzZXQoZS5zaGlmdEtleSA/IGR4IDogZHggKiAyMCwgZS5zaGlmdEtleSA/IGR5IDogZHkgKiAyMCwgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgYztcclxuICAgIGlmICh0aGlzLmN1ck9iamVjdCA9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmdldENtZCgpID09IFwic2VxXCIpIHtcclxuICAgICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0QUEoYykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVBQSh0aGlzLmxhc3Rtb3ZlLCBjLCBKU0RyYXcyLkJJTy5BQSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0Q21kKCkgPT0gXCJoZWxpeFwiKSB7XHJcbiAgICAgICAgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTtcclxuICAgICAgICBpZiAoSlNEcmF3Mi5TdXBlckF0b21zLmdldEROQShjKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUFBKHRoaXMubGFzdG1vdmUsIGMsIEpTRHJhdzIuQklPLkJBU0VfRE5BKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRDbWQoKSA9PSBcInJuYVwiKSB7XHJcbiAgICAgICAgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTtcclxuICAgICAgICBpZiAoSlNEcmF3Mi5TdXBlckF0b21zLmdldFJOQShjKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUFBKHRoaXMubGFzdG1vdmUsIGMsIEpTRHJhdzIuQklPLkJBU0VfUk5BKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhICE9IG51bGwpIHtcclxuICAgICAgaWYgKGEuYmlvKSB7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICAgICAgdGhpcy5zaG93VGV4dEVkaXRvcihhLCBhLnAuY2xvbmUoKSk7XHJcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5oZWxtICE9IG51bGwgJiYgc2NpbC5oZWxtLmlzSGVsbU5vZGUoYSkpIHtcclxuICAgICAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XHJcbiAgICAgICAgICBpZiAoc2NpbC5oZWxtLk1vbm9tZXJzLmdldE1vbm9tZXIoYSwgYykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICAgIGEuZWxlbSA9IGM7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkFBICYmIEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRBQShjKSAhPSBudWxsIHx8IGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkJBU0VfRE5BICYmIEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRETkEoYykgIT0gbnVsbCB8fCBhLmJpb3R5cGUoKSA9PSBKU0RyYXcyLkJJTy5CQVNFX1JOQSAmJiBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0Uk5BKGMpICE9IG51bGwpIHtcclxuICAgICAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XHJcbiAgICAgICAgICBpZiAoYS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAoYS5lbGVtICE9IGMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICAgICAgYS5lbGVtID0gYztcclxuICAgICAgICAgICAgICB0aGlzLl9zZXRTdXBlcmF0b20oYSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydEFBKGEsIGMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBpZiAoYS5lbGVtID09IFwiUlwiKSB7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA+PSA0OSAmJiBlLmtleUNvZGUgPD0gNTcpIHtcclxuICAgICAgICAgIGNvbnN0IHJsYWJlbCA9IFwiUlwiICsgKGUua2V5Q29kZSAtIDQ4KTtcclxuICAgICAgICAgIGlmIChhLmFsaWFzICE9IHJsYWJlbCkge1xyXG4gICAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICAgIHRoaXMubS5zZXRBdG9tQWxpYXMoYSwgcmxhYmVsKTtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcclxuICAgICAgICAvL2Nhc2UgMTY6IC8vICpcclxuICAgICAgY2FzZSA1NjpcclxuICAgICAgICBjID0gJyonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDUwOlxyXG4gICAgICAgIGMgPSAnQCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTg3OlxyXG4gICAgICBjYXNlIDEwNzpcclxuICAgICAgICBjID0gJysnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE4OTpcclxuICAgICAgY2FzZSAxMDk6XHJcbiAgICAgICAgYyA9ICctJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA2MTpcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc0ZpcmVmb3gpXHJcbiAgICAgICAgICBjID0gJysnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE3MzpcclxuICAgICAgICBpZiAoc2NpbC5VdGlscy5pc0ZpcmVmb3gpXHJcbiAgICAgICAgICBjID0gJy0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDY1OlxyXG4gICAgICBjYXNlIDk3OlxyXG4gICAgICAgIGMgPSAnQSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODE6XHJcbiAgICAgIGNhc2UgMTEzOlxyXG4gICAgICAgIGMgPSAnUSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjY6XHJcbiAgICAgIGNhc2UgOTg6XHJcbiAgICAgICAgYyA9ICdCcic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjc6XHJcbiAgICAgIGNhc2UgOTk6XHJcbiAgICAgICAgYyA9ICdDJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA2ODpcclxuICAgICAgY2FzZSAxMDA6XHJcbiAgICAgICAgYyA9ICdEJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3MDpcclxuICAgICAgY2FzZSAxMDI6XHJcbiAgICAgICAgYyA9ICdGJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3MjpcclxuICAgICAgY2FzZSAxMDQ6XHJcbiAgICAgICAgYyA9ICdIJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3MzpcclxuICAgICAgY2FzZSAxMDU6XHJcbiAgICAgICAgYyA9ICdJJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA3NjpcclxuICAgICAgY2FzZSAxMDg6XHJcbiAgICAgICAgYyA9ICdDbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNzg6XHJcbiAgICAgIGNhc2UgMTEwOlxyXG4gICAgICAgIGMgPSAnTic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNzk6XHJcbiAgICAgIGNhc2UgMTExOlxyXG4gICAgICAgIGMgPSAnTyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODA6XHJcbiAgICAgIGNhc2UgMTEyOlxyXG4gICAgICAgIGMgPSAnUCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODI6XHJcbiAgICAgIGNhc2UgMTE0OlxyXG4gICAgICAgIGMgPSAnUic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODM6XHJcbiAgICAgIGNhc2UgMTE1OlxyXG4gICAgICAgIGMgPSAnUyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODQ6XHJcbiAgICAgIGNhc2UgMTE2OlxyXG4gICAgICAgIGMgPSAnVCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgODg6XHJcbiAgICAgIGNhc2UgMTIwOlxyXG4gICAgICAgIGMgPSAnWCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNzc6XHJcbiAgICAgIGNhc2UgMTA5OlxyXG4gICAgICAgIGMgPSAnTSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjk6XHJcbiAgICAgICAgYyA9IFwiTWVcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxMzpcclxuICAgICAgICB0aGlzLnNob3dUZXh0RWRpdG9yKGEsIGEucC5jbG9uZSgpKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYyA9PSAnKycgfHwgYyA9PSAnLScpIHtcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5jcmVhc2VOdW0oYSwgYyA9PSAnKycgPyArMSA6IC0xKSkge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjID09IFwiTWVcIikge1xyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICBpZiAodGhpcy5tLnNldEF0b21BbGlhcyhhLCBjKSkge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubS5zZXRBdG9tVHlwZShhLCBjKSkge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2hwID0gSlNEcmF3Mi5TaGFwZS5jYXN0KHRoaXMuY3VyT2JqZWN0KTtcclxuICAgIGlmIChzaHAgIT0gbnVsbCAmJiBlLmtleUNvZGUgPT0gMTMpIHtcclxuICAgICAgdGhpcy5zaG93VGV4dEVkaXRvcihzaHAsIHNocC5fcmVjdC5jZW50ZXIoKSk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGIgPSBKU0RyYXcyLkJvbmQuY2FzdDxUQmlvPih0aGlzLmN1ck9iamVjdCk7XHJcbiAgICBpZiAoYiAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChiLmlzQmlvKCkpIHtcclxuICAgICAgICBsZXQgZiA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBjbG9uZWQgPSBudWxsO1xyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gODMgJiYgYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUpIHtcclxuICAgICAgICAgIGNsb25lZCA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICAgIGYgPSB0aGlzLm0uc2V0Qm9uZFR5cGUoYiwgSlNEcmF3Mi5CT05EVFlQRVMuRElTVUxGSURFKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUua2V5Q29kZSA9PSA0OSAmJiBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRElTVUxGSURFKSB7XHJcbiAgICAgICAgICBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgICBmID0gdGhpcy5tLnNldEJvbmRUeXBlKGIsIEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZikge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgYyA9IC0xO1xyXG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTg5IHx8IGUua2V5Q29kZSA9PSAxMDkpXHJcbiAgICAgICAgICBjID0gMTA7XHJcbiAgICAgICAgZWxzZSBpZiAoZS5rZXlDb2RlID09IDE4NyB8fCBlLmtleUNvZGUgPT0gMTA3KVxyXG4gICAgICAgICAgYyA9IDExO1xyXG4gICAgICAgIGVsc2UgaWYgKGUua2V5Q29kZSA9PSAxOTIpXHJcbiAgICAgICAgICBjID0gMTM7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYyA9IGUua2V5Q29kZSAtIDQ4O1xyXG5cclxuICAgICAgICBpZiAoYyA+PSBKU0RyYXcyLkJPTkRUWVBFUy5VTktOT1dOICYmIGMgPD0gSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVkgJiYgdGhpcy5jdXJPYmplY3QudHlwZSAhPSBjKSB7XHJcbiAgICAgICAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5tLnNldEJvbmRUeXBlKGIsIGMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgICAgICAgICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5XRURHRSB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSClcclxuICAgICAgICAgICAgICB0aGlzLmZpeFdlZGdlRGlyKGIpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGMgPT0gOSAmJiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLldFREdFIHx8IGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIKSkge1xyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgICAgYi5yZXZlcnNlKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0eHQgPSBKU0RyYXcyLlRleHQuY2FzdCh0aGlzLmN1ck9iamVjdCk7XHJcbiAgICBpZiAodHh0ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zaG93VGV4dEVkaXRvcih0eHQpO1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0ID0gSlNEcmF3Mi5UTEMuY2FzdCh0aGlzLmN1ck9iamVjdCk7XHJcbiAgICBpZiAodCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0LmN1cnNwb3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSAxODc6XHJcbiAgICAgICAgY2FzZSAxODk6XHJcbiAgICAgICAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICAgIGlmICh0LmN1cnNwb3QubW92ZSgoZS5rZXlDb2RlID09IDE4NyA/IDAuMSA6IC0wLjEpICogKGUuc2hpZnRLZXkgPyAwLjEgOiAxKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTkwOiAvLyA+XHJcbiAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICB0LmNoYW5nZVNpemUodC5jdXJzcG90LCBcIjExMCVcIik7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE4ODogLy8gPFxyXG4gICAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgICAgdC5jaGFuZ2VTaXplKHQuY3Vyc3BvdCwgXCI5MCVcIik7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDgyOiAvLyBSXHJcbiAgICAgICAgY2FzZSA3NjogLy8gTFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICAgIC8vaWYgKE1hdGguYWJzKHQuY3Vyc3BvdC5yeTEpIDw9IDEpXHJcbiAgICAgICAgICB0LmN1cnNwb3QucnggKz0gZS5zaGlmdEtleSA/IC0wLjIgOiAwLjI7XHJcbiAgICAgICAgICBpZiAodC5jdXJzcG90LnJ4IDwgMC4xKVxyXG4gICAgICAgICAgICB0LmN1cnNwb3QucnggPSAwLjE7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA4NTogLy8gVVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgICAgIC8vaWYgKE1hdGguYWJzKHQuY3Vyc3BvdC5yeTEpIDw9IDEpXHJcbiAgICAgICAgICB0LmN1cnNwb3QucnkxICs9IGUuc2hpZnRLZXkgPyAtMC4yIDogMC4yO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNjg6IC8vIERcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICAvL2lmIChNYXRoLmFicyh0LmN1cnNwb3QucnkxKSA8PSAxKVxyXG4gICAgICAgICAgdC5jdXJzcG90LnJ5MiArPSBlLnNoaWZ0S2V5ID8gLTAuMiA6IDAuMjtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvQ2hhckFycmF5KHMsIG0/OiBudW1iZXIpIHtcclxuICAgIGlmICghKG0gPiAwKSlcclxuICAgICAgbSA9IDE7XHJcblxyXG4gICAgY29uc3Qgc3MgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSlcclxuICAgICAgc3MucHVzaChzLnN1YnN0cihpLCBtKSk7XHJcbiAgICByZXR1cm4gc3M7XHJcbiAgfVxyXG5cclxuICBzcGxpdFN0cmluZyhzLCBwYXQpIHtcclxuICAgIGNvbnN0IHNzID0gW107XHJcblxyXG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKFwiXlwiICsgcGF0KTtcclxuICAgIGxldCByZXQ7XHJcbiAgICB3aGlsZSAoKHJldCA9IHJlLmV4ZWMocykpICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgYyA9IHJldCArIFwiXCI7XHJcbiAgICAgIHNzLnB1c2goYyk7XHJcbiAgICAgIGlmIChzLmxlbmd0aCA9PSBjLmxlbmd0aClcclxuICAgICAgICByZXR1cm4gc3M7XHJcbiAgICAgIHMgPSBzLnN1YnN0cihjLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFBMihzLCBiaW90eXBlLCBleHBhbmQsIGFzcnhuLCBudGVybWluYWwsIGN0ZXJtaW5hbCwgc2VsZWN0ZWQpIHtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkocykpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXhwYW5kKVxyXG4gICAgICBzID0gcy5yZXBsYWNlKC9bPnxcXF5dL2csIFwiXCIpO1xyXG5cclxuICAgIGlmIChuZXcgUmVnRXhwKFwiXlthLXp8Xnw+XSskXCIpLnRlc3QocykpXHJcbiAgICAgIHMgPSBzY2lsLlV0aWxzLnRyaW0ocykudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICBsZXQgc3MgPSBudWxsO1xyXG4gICAgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQkFTRV9ETkEpIHtcclxuICAgICAgaWYgKG5ldyBSZWdFeHAoXCJeW0F8R3xUfENdKyRcIikudGVzdChzKSkge1xyXG4gICAgICAgIHNzID0gdGhpcy50b0NoYXJBcnJheShzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0MihcIkludmFsaWQgRE5BIHNlcXVlbmNlLlwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChiaW90eXBlID09IEpTRHJhdzIuQklPLkJBU0VfUk5BKSB7XHJcbiAgICAgIGlmIChuZXcgUmVnRXhwKFwiXltBfEd8VHxDfFVdKyRcIikudGVzdChzKSkge1xyXG4gICAgICAgIHNzID0gdGhpcy50b0NoYXJBcnJheShzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0MihcIkludmFsaWQgUk5BIHNlcXVlbmNlLlwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5BQSkge1xyXG4gICAgICBzID0gcy5yZXBsYWNlKC9bXFwuXS9nLCBcIi1cIik7XHJcbiAgICAgIGlmIChzLmluZGV4T2YoJy0nKSA+IDApXHJcbiAgICAgICAgc3MgPSBzLnNwbGl0KCctJyk7XHJcbiAgICAgIGVsc2UgaWYgKG5ldyBSZWdFeHAoXCJeKFtBLVpdW2EtenwwLTldezJ9W1xcXFxeXT8pK1s+XT8kXCIpLnRlc3QocykpXHJcbiAgICAgICAgc3MgPSB0aGlzLnNwbGl0U3RyaW5nKHMsIFwiW0EtWl1bYS16fDAtOV17Mn1bXFxcXF58Pl0/XCIpO1xyXG4gICAgICBlbHNlIGlmIChuZXcgUmVnRXhwKFwiXihbQS1aXVtcXFxcXl0/KStbPl0/JFwiKS50ZXN0KHMpKSB7XHJcbiAgICAgICAgc3MgPSB0aGlzLnNwbGl0U3RyaW5nKHMsIFwiW0EtWl1bXFxcXF58Pl0/XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzcyA9PSBudWxsKSB7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydDIoXCJJbnZhbGlkIHBlcHRpZGUgc2VxdWVuY2UuXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzcy5sZW5ndGggPj0gMyAmJiBzY2lsLlV0aWxzLmVuZHN3aXRoKHNzW3NzLmxlbmd0aCAtIDFdLCBcIj5cIikgJiYgcy5pbmRleE9mKCdeJykgPD0gMClcclxuICAgICAgc3NbMF0gKz0gXCJeXCI7XHJcblxyXG4gICAgbGV0IG07XHJcbiAgICBpZiAoZXhwYW5kICYmIGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQUEpXHJcbiAgICAgIG0gPSB0aGlzLl9jcmVhdGVFeHBhbmRlZEFBKHNzLCBiaW90eXBlLCBudGVybWluYWwsIGN0ZXJtaW5hbCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIG0gPSB0aGlzLl9jcmVhdGVDb2xsYXBzZWRBQShzcywgYmlvdHlwZSwgbnRlcm1pbmFsLCBjdGVybWluYWwpO1xyXG4gICAgaWYgKG0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChudGVybWluYWwgPT0gbnVsbCB8fCBudGVybWluYWwgPT0gXCJcIilcclxuICAgICAgbnRlcm1pbmFsID0gXCJIXCI7XHJcbiAgICBpZiAoY3Rlcm1pbmFsID09IG51bGwgfHwgY3Rlcm1pbmFsID09IFwiXCIpXHJcbiAgICAgIGN0ZXJtaW5hbCA9IFwiT0hcIjtcclxuXHJcbiAgICBjb25zdCBzZXEgPSAobnRlcm1pbmFsICE9IG51bGwgPyBudGVybWluYWwgKyBcIi1cIiA6IFwiXCIpICsgcyArIChjdGVybWluYWwgIT0gbnVsbCA/IFwiLVwiICsgY3Rlcm1pbmFsIDogXCJcIik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm9uQWRkU2VxdWVuY2UgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9uQWRkU2VxdWVuY2UobSwgc2VxLCBhc3J4bikpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tLnNldFNlbGVjdGVkKGZhbHNlKTtcclxuICAgIGlmIChzZWxlY3RlZCAhPSBmYWxzZSlcclxuICAgICAgbS5zZXRTZWxlY3RlZCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICBpZiAoYXNyeG4gPT0gXCJyZWFjdGFudFwiIHx8IGFzcnhuID09IFwicHJvZHVjdFwiKSB7XHJcbiAgICAgIGNvbnN0IHJ4biA9IHRoaXMubS5wYXJzZVJ4bigpO1xyXG4gICAgICBpZiAoYXNyeG4gPT0gXCJyZWFjdGFudFwiKVxyXG4gICAgICAgIHJ4bi5yZWFjdGFudHMucHVzaChtKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJ4bi5wcm9kdWN0cy5wdXNoKG0pO1xyXG4gICAgICB0aGlzLnNldFJ4bihyeG4sIGZhbHNlLCB0aGlzLmJvbmRsZW5ndGgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tLm1lcmdlTW9sKG0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZml0VG9XaW5kb3coKTtcclxuXHJcbiAgICAvLyAgICAgICAgY29uc3QgdCA9IG51bGw7XHJcbiAgICAvLyAgICAgICAgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQUEpIHtcclxuICAgIC8vICAgICAgICAgICAgY29uc3QgYyA9IG0ucmVjdCgpLmNlbnRlckJvdHRvbSgpO1xyXG4gICAgLy8gICAgICAgICAgICBjb25zdCByID0gbmV3IEpTRHJhdzIuUmVjdChjLnggLSBzLmxlbmd0aCAqIHRoaXMuZm9udHNpemUgLyAzLCBjLnkgKyB0aGlzLmJvbmRsZW5ndGggLyAyLCAwLCAwKTtcclxuICAgIC8vICAgICAgICAgICAgdCA9IG5ldyBKU0RyYXcyLlRleHQociwgc2VxKTtcclxuICAgIC8vICAgICAgICAgICAgdC5maWVsZHR5cGUgPSBcIlNFUVVFTkNFXCI7XHJcbiAgICAvLyAgICAgICAgICAgIHQuYW5jaG9ycyA9IHNjaWwuY2xvbmUobS5hdG9tcyk7XHJcbiAgICAvLyAgICAgICAgICAgIHRoaXMubS5hZGRHcmFwaGljcyh0KTtcclxuICAgIC8vICAgICAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgLy8gICAgICAgIGlmICh0ICE9IG51bGwpIHtcclxuICAgIC8vICAgICAgICAgICAgY29uc3QgYyA9IG0ucmVjdCgpLmNlbnRlckJvdHRvbSgpO1xyXG4gICAgLy8gICAgICAgICAgICB0Ll9yZWN0Lm9mZnNldChjLnggLSB0Ll9yZWN0LmNlbnRlcigpLngsIDApO1xyXG4gICAgLy8gICAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIF9jcmVhdGVDb2xsYXBzZWRBQShzcywgYmlvdHlwZSwgbnRlcm1pbmFsLCBjdGVybWluYWwpIHtcclxuICAgIGlmIChudGVybWluYWwgPT0gbnVsbCB8fCBudGVybWluYWwgPT0gXCJcIilcclxuICAgICAgbnRlcm1pbmFsID0gXCJIXCI7XHJcbiAgICBpZiAoY3Rlcm1pbmFsID09IG51bGwgfHwgY3Rlcm1pbmFsID09IFwiXCIpXHJcbiAgICAgIGN0ZXJtaW5hbCA9IFwiT0hcIjtcclxuXHJcbiAgICBjb25zdCBoZWFkID0gW107XHJcbiAgICBsZXQgY2lyY2xlID0gbnVsbDtcclxuICAgIGxldCB0YWlsID0gbnVsbDtcclxuICAgIGNvbnN0IGFsbCA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgbGV0IGMgPSBzc1tpXTtcclxuICAgICAgY29uc3QgaXNjaXJjbGUgPSBjLmxlbmd0aCA+IDEgJiYgKGMuc3Vic3RyKGMubGVuZ3RoIC0gMSkgPT0gXCJeXCIgfHwgYy5zdWJzdHIoYy5sZW5ndGggLSAxKSA9PSBcIj5cIik7XHJcbiAgICAgIGlmIChpc2NpcmNsZSlcclxuICAgICAgICBjID0gYy5zdWJzdHIoMCwgYy5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgIGNvbnN0IGEgPSBuZXcgSlNEcmF3Mi5BdG9tKG51bGwsIGMsIHt0eXBlOiBiaW90eXBlfSk7XHJcbiAgICAgIHN3aXRjaCAoYmlvdHlwZSkge1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQklPLkFBOlxyXG4gICAgICAgIGEuc3VwZXJhdG9tID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldEFBKGMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQklPLkJBU0VfRE5BOlxyXG4gICAgICAgIGEuc3VwZXJhdG9tID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldEROQShjKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBKU0RyYXcyLkJJTy5CQVNFX1JOQTpcclxuICAgICAgICBhLnN1cGVyYXRvbSA9IEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRSTkEoYyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGEuc3VwZXJhdG9tID09IG51bGwpIHtcclxuICAgICAgICBzY2lsLlV0aWxzLmFsZXJ0KFwiSXQgY2Fubm90IHBhcnNlOiBcIiArIGMpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBhbGwucHVzaChhKTtcclxuXHJcbiAgICAgIGlmIChpc2NpcmNsZSkge1xyXG4gICAgICAgIGlmIChjaXJjbGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgY2lyY2xlID0gW2FdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNpcmNsZS5wdXNoKGEpO1xyXG4gICAgICAgICAgICB0YWlsID0gW107XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0YWlsLnB1c2goYSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0YWlsICE9IG51bGwpXHJcbiAgICAgICAgICB0YWlsLnB1c2goYSk7XHJcbiAgICAgICAgZWxzZSBpZiAoY2lyY2xlICE9IG51bGwpXHJcbiAgICAgICAgICBjaXJjbGUucHVzaChhKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBoZWFkLnB1c2goYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgYm9uZHR5cGUgPSBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEU7XHJcbiAgICBpZiAoYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5BQSlcclxuICAgICAgYm9uZHR5cGUgPSBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFO1xyXG4gICAgZWxzZSBpZiAoYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5ETkEgfHwgYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5STkEpXHJcbiAgICAgIGJvbmR0eXBlID0gSlNEcmF3Mi5CT05EVFlQRVMuTlVDTEVPVElERTtcclxuXHJcbiAgICBpZiAoY2lyY2xlICE9IG51bGwgJiYgY2lyY2xlLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGhlYWQucHVzaChjaXJjbGVbMF0pO1xyXG4gICAgICBjaXJjbGUgPSBudWxsO1xyXG4gICAgICBpZiAodGFpbCAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWlsLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgaGVhZC5wdXNoKHRhaWxbaV0pO1xyXG4gICAgICAgIHRhaWwgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG50ZXJtID0gbnVsbDtcclxuICAgIGxldCBjdGVybSA9IG51bGw7XHJcbiAgICBjb25zdCBtID0gbmV3IEpTRHJhdzIuTW9sKHRoaXMub3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnMpO1xyXG4gICAgaWYgKGhlYWQubGVuZ3RoID4gMCkge1xyXG4gICAgICBudGVybSA9IG5ldyBKU0RyYXcyLkF0b20obnVsbCwgXCJDXCIpO1xyXG4gICAgICBtLmFkZEF0b20obnRlcm0pO1xyXG4gICAgICBoZWFkLnNwbGljZSgwLCAwLCBudGVybSk7XHJcblxyXG4gICAgICBjb25zdCBiID0gbmV3IEpTRHJhdzIuQm9uZChoZWFkWzFdLCBudGVybSwgYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5BQSA/IEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREUgOiBKU0RyYXcyLkJPTkRUWVBFUy5OVUNMRU9USURFKTtcclxuICAgICAgYi5hcG8xID0gMTtcclxuICAgICAgbS5hZGRCb25kKGIpO1xyXG4gICAgfVxyXG5cclxuICAgIG0uYWRkQXRvbShhbGxbMF0pO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhbGwubGVuZ3RoOyArK2kpIHtcclxuICAgICAgbS5hZGRBdG9tKGFsbFtpXSk7XHJcbiAgICAgIGNvbnN0IGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGFsbFtpXSwgYWxsW2kgLSAxXSwgYm9uZHR5cGUpO1xyXG4gICAgICBiLmFwbzEgPSAxO1xyXG4gICAgICBiLmFwbzIgPSAyO1xyXG4gICAgICBtLmFkZEJvbmQoYik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNpcmNsZSA9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG8gPSBuZXcgSlNEcmF3Mi5BdG9tKG51bGwsIGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQUEgPyAnTycgOiBcIjMnXCIpO1xyXG4gICAgICBtLmFkZEF0b20obyk7XHJcbiAgICAgIGhlYWQucHVzaChvKTtcclxuICAgICAgY3Rlcm0gPSBvO1xyXG5cclxuICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQobywgaGVhZFtoZWFkLmxlbmd0aCAtIDJdLCBiaW90eXBlID09IEpTRHJhdzIuQklPLkFBID8gSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSA6IEpTRHJhdzIuQk9ORFRZUEVTLk5VQ0xFT1RJREUpO1xyXG4gICAgICBiLmFwbzIgPSAyO1xyXG4gICAgICBtLmFkZEJvbmQoYik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoaGVhZC5sZW5ndGggPT0gMCAmJiAodGFpbCA9PSBudWxsIHx8IHRhaWwubGVuZ3RoID09IDApKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQoY2lyY2xlWzBdLCBjaXJjbGVbY2lyY2xlLmxlbmd0aCAtIDFdLCBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFKTtcclxuICAgICAgICBiLmFwbzEgPSAxO1xyXG4gICAgICAgIGIuYXBvMiA9IDI7XHJcbiAgICAgICAgbS5hZGRCb25kKGIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNpcmNsZVswXS5lbGVtID09ICdDJyAmJiBjaXJjbGVbY2lyY2xlLmxlbmd0aCAtIDFdLmVsZW0gPT0gJ0MnKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQoY2lyY2xlWzBdLCBjaXJjbGVbY2lyY2xlLmxlbmd0aCAtIDFdLCBKU0RyYXcyLkJPTkRUWVBFUy5ESVNVTEZJREUpO1xyXG4gICAgICAgIGIuYXBvMSA9IDM7XHJcbiAgICAgICAgYi5hcG8yID0gMztcclxuICAgICAgICBtLmFkZEJvbmQoYik7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2lyY2xlWzBdLmVsZW0gPT0gJ0snICYmICh0YWlsID09IG51bGwgfHwgdGFpbC5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgICBjb25zdCBiID0gbmV3IEpTRHJhdzIuQm9uZChjaXJjbGVbMF0sIGNpcmNsZVtjaXJjbGUubGVuZ3RoIC0gMV0sIEpTRHJhdzIuQk9ORFRZUEVTLkFNSURFKTtcclxuICAgICAgICBiLmFwbzEgPSAzO1xyXG4gICAgICAgIGIuYXBvMiA9IDI7XHJcbiAgICAgICAgbS5hZGRCb25kKGIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGFpbCAhPSBudWxsICYmIHRhaWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGN0ZXJtID0gbmV3IEpTRHJhdzIuQXRvbShudWxsLCBcIkNcIik7XHJcbiAgICAgICAgbS5hZGRBdG9tKGN0ZXJtKTtcclxuICAgICAgICB0YWlsLnB1c2goY3Rlcm0pO1xyXG5cclxuICAgICAgICBjb25zdCBiID0gbmV3IEpTRHJhdzIuQm9uZCh0YWlsW3RhaWwubGVuZ3RoIC0gMl0sIGN0ZXJtLCBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpO1xyXG4gICAgICAgIGIuYXBvMSA9IDE7XHJcbiAgICAgICAgbS5hZGRCb25kKGIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNpcmNsZSA9PSBudWxsIHx8IGNpcmNsZS5sZW5ndGggPT0gMSkge1xyXG4gICAgICBsZXQgbGFzdCA9IG51bGw7XHJcbiAgICAgIHRoaXMubGF5b3V0QXRvbXMoaGVhZCwgU2hhcGVUeXBlcy5MSU5FLCB0aGlzLmJvbmRsZW5ndGgsIGxhc3QpO1xyXG4gICAgICBpZiAoaGVhZC5sZW5ndGggPiAwKVxyXG4gICAgICAgIGxhc3QgPSBoZWFkW2hlYWQubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChjaXJjbGUgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMubGF5b3V0QXRvbXMoY2lyY2xlLCBTaGFwZVR5cGVzLkxJTkUsIHRoaXMuYm9uZGxlbmd0aCwgbGFzdCk7XHJcbiAgICAgICAgaWYgKGNpcmNsZS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgbGFzdCA9IGNpcmNsZVtjaXJjbGUubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgaWYgKHRhaWwgIT0gbnVsbClcclxuICAgICAgICAgIHRoaXMubGF5b3V0QXRvbXModGFpbCwgU2hhcGVUeXBlcy5MSU5FLCB0aGlzLmJvbmRsZW5ndGgsIGxhc3QpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjZW50ZXIgPSBuZXcgSlNEcmF3Mi5Qb2ludCgwLCAwKTtcclxuICAgICAgdGhpcy5sYXlvdXRBdG9tcyhjaXJjbGUsIFNoYXBlVHlwZXMuQ0lSQ0xFLCB0aGlzLmJvbmRsZW5ndGgsIGNlbnRlci5jbG9uZSgpLm9mZnNldCgxLCAwKSwgY2VudGVyKTtcclxuICAgICAgaWYgKGhlYWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGhlYWQucHVzaChudWxsKTtcclxuICAgICAgICBoZWFkLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLmxheW91dEF0b21zKGhlYWQsIFNoYXBlVHlwZXMuTElORSwgdGhpcy5ib25kbGVuZ3RoLCBjaXJjbGVbMF0ucCwgY2VudGVyKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGFpbCAhPSBudWxsICYmIHRhaWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRhaWwuc3BsaWNlKDAsIDAsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0QXRvbXModGFpbCwgU2hhcGVUeXBlcy5MSU5FLCB0aGlzLmJvbmRsZW5ndGgsIGNpcmNsZVtjaXJjbGUubGVuZ3RoIC0gMV0ucCwgY2VudGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChudGVybSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChiaW90eXBlID09IEpTRHJhdzIuQklPLkFBKSB7XHJcbiAgICAgICAgaWYgKG50ZXJtaW5hbCA9PSBcIkhcIilcclxuICAgICAgICAgIG50ZXJtLmVsZW0gPSBcIkhcIjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBtLnNldEF0b21BbGlhcyhudGVybSwgbnRlcm1pbmFsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBudGVybS5lbGVtID0gXCI1J1wiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGN0ZXJtICE9IG51bGwpIHtcclxuICAgICAgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQUEpIHtcclxuICAgICAgICBpZiAoY3Rlcm1pbmFsID09IFwiT0hcIilcclxuICAgICAgICAgIGN0ZXJtLmVsZW0gPSBcIk9cIjtcclxuICAgICAgICBlbHNlIGlmIChjdGVybWluYWwgPT0gXCJOSDJcIilcclxuICAgICAgICAgIGN0ZXJtLmVsZW0gPSBcIk5cIjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBtLnNldEF0b21BbGlhcyhjdGVybSwgY3Rlcm1pbmFsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjdGVybS5lbGVtID0gXCIzJ1wiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG07XHJcbiAgfVxyXG5cclxuICBfY3JlYXRlRXhwYW5kZWRBQShzcywgYmlvdHlwZSwgbnRlcm1pbmFsLCBjdGVybWluYWwpIHtcclxuICAgIGlmIChudGVybWluYWwgPT0gbnVsbCB8fCBudGVybWluYWwgPT0gXCJcIilcclxuICAgICAgbnRlcm1pbmFsID0gXCJIXCI7XHJcbiAgICBpZiAoY3Rlcm1pbmFsID09IG51bGwgfHwgY3Rlcm1pbmFsID09IFwiXCIpXHJcbiAgICAgIGN0ZXJtaW5hbCA9IFwiT0hcIjtcclxuXHJcbiAgICBsZXQgbW9sID0gbnVsbDtcclxuICAgIGxldCBsYXN0ID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYyA9IHNzW2ldO1xyXG4gICAgICBsZXQgbSA9IEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRBQShjKTtcclxuICAgICAgaWYgKG0gPT0gbnVsbCkge1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJVbmtub3cgQW1pbm8gQWNpZDogXCIgKyBjKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBtID0gbS5jbG9uZSgpO1xyXG4gICAgICBtLnNldEJvbmRMZW5ndGgodGhpcy5ib25kbGVuZ3RoKTtcclxuICAgICAgY29uc3QgYXR0YWNocyA9IEpTRHJhdzIuU3VwZXJBdG9tcy5fZ2V0QXR0YWNoQXRvbXMobSk7XHJcbiAgICAgIGZvciAobGV0IGsgPSAyOyBrIDwgYXR0YWNocy5sZW5ndGg7ICsraylcclxuICAgICAgICBhdHRhY2hzW2tdLmEuYXR0YWNocG9pbnRzID0gW107XHJcblxyXG4gICAgICBpZiAoaSA9PSAwKSB7XHJcbiAgICAgICAgbW9sID0gbTtcclxuXHJcbiAgICAgICAgYXR0YWNoc1swXS5hLmF0dGFjaHBvaW50cyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAobnRlcm1pbmFsICE9IFwiSFwiKSB7XHJcbiAgICAgICAgICBjb25zdCBwID0gdGhpcy5fZ3Vlc3NBdXRvQm9uZChhdHRhY2hzWzBdLmEpO1xyXG4gICAgICAgICAgY29uc3QgYSA9IG5ldyBKU0RyYXcyLkF0b20ocCwgXCJDXCIpO1xyXG4gICAgICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYXR0YWNoc1swXS5hLCBhLCBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpO1xyXG4gICAgICAgICAgbW9sLmFkZEF0b20oYSk7XHJcbiAgICAgICAgICBtb2wuYWRkQm9uZChiKTtcclxuXHJcbiAgICAgICAgICBtb2wuc2V0QXRvbUFsaWFzKGEsIG50ZXJtaW5hbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsYXN0ID0gYXR0YWNoc1sxXS5hO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaSAlIDIgPT0gMSkge1xyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbS5hdG9tcy5sZW5ndGg7ICsraylcclxuICAgICAgICAgIG0uYXRvbXNba10ucC55ICo9IC0xO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG0uYm9uZHMubGVuZ3RoOyArK2spIHtcclxuICAgICAgICAgIGlmIChtLmJvbmRzW2tdLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UpXHJcbiAgICAgICAgICAgIG0uYm9uZHNba10udHlwZSA9IEpTRHJhdzIuQk9ORFRZUEVTLkhBU0g7XHJcbiAgICAgICAgICBlbHNlIGlmIChtLmJvbmRzW2tdLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSClcclxuICAgICAgICAgICAgbS5ib25kc1trXS50eXBlID0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwMCA9IGF0dGFjaHNbMF0uYS5wO1xyXG4gICAgICBjb25zdCBwID0gdGhpcy5fZ3Vlc3NBdXRvQm9uZChsYXN0KTtcclxuICAgICAgbS5vZmZzZXQocC54IC0gcDAueCwgcC55IC0gcDAueSk7XHJcbiAgICAgIG1vbC5tZXJnZU1vbChtKTtcclxuXHJcbiAgICAgIGxhc3QuYXR0YWNocG9pbnRzID0gW107XHJcbiAgICAgIGF0dGFjaHNbMF0uYS5hdHRhY2hwb2ludHMgPSBbXTtcclxuICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQobGFzdCwgYXR0YWNoc1swXS5hLCBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpO1xyXG4gICAgICBtb2wuYWRkQm9uZChiKTtcclxuXHJcbiAgICAgIGxhc3QgPSBhdHRhY2hzWzFdLmE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxhc3QgIT0gbnVsbCkge1xyXG4gICAgICBsYXN0LmF0dGFjaHBvaW50cyA9IFtdO1xyXG5cclxuICAgICAgaWYgKGN0ZXJtaW5hbCAhPSBcIkhcIikge1xyXG4gICAgICAgIGNvbnN0IHAgPSB0aGlzLl9ndWVzc0F1dG9Cb25kKGxhc3QpO1xyXG4gICAgICAgIGNvbnN0IGEgPSBuZXcgSlNEcmF3Mi5BdG9tKHAsIFwiQ1wiKTtcclxuICAgICAgICBjb25zdCBiID0gbmV3IEpTRHJhdzIuQm9uZChsYXN0LCBhLCBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEUpO1xyXG4gICAgICAgIG1vbC5hZGRBdG9tKGEpO1xyXG4gICAgICAgIG1vbC5hZGRCb25kKGIpO1xyXG5cclxuICAgICAgICBpZiAoY3Rlcm1pbmFsID09IFwiT0hcIilcclxuICAgICAgICAgIGEuZWxlbSA9IFwiT1wiO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIG1vbC5zZXRBdG9tQWxpYXMoYSwgY3Rlcm1pbmFsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vbDtcclxuICB9XHJcblxyXG4gIGxheW91dEF0b21zKGF0b21zOiBBdG9tPFRCaW8+W10sIHNoYXBlOiBTaGFwZVR5cGUsIGQ6IG51bWJlciwgcDE6IFBvaW50LCBwMj86IFBvaW50KSB7XHJcbiAgICBpZiAoYXRvbXMgPT0gbnVsbCB8fCBhdG9tcy5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChwMiA9PSBudWxsKVxyXG4gICAgICBwMiA9IG5ldyBKU0RyYXcyLlBvaW50KDAsIDApO1xyXG4gICAgaWYgKHAxID09IG51bGwpXHJcbiAgICAgIHAxID0gcDIuY2xvbmUoKS5vZmZzZXQoZCwgMCk7XHJcblxyXG4gICAgc3dpdGNoIChzaGFwZSkge1xyXG4gICAgY2FzZSBcImxpbmVcIjoge1xyXG4gICAgICBpZiAoYXRvbXNbMF0gIT0gbnVsbClcclxuICAgICAgICBhdG9tc1swXS5wID0gcDEuY2xvbmUoKTtcclxuICAgICAgY29uc3QgcyA9IGQgLyBwMS5kaXN0VG8ocDIpO1xyXG4gICAgICBjb25zdCBkeCA9IChwMS54IC0gcDIueCkgKiBzO1xyXG4gICAgICBjb25zdCBkeSA9IChwMS55IC0gcDIueSkgKiBzO1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIGF0b21zW2ldLnAgPSBwMS5jbG9uZSgpLm9mZnNldChkeCAqIGksIGR5ICogaSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSBcImNpcmNsZVwiOiB7XHJcbiAgICAgIGNvbnN0IGRlZyA9IDM2MCAvIGF0b21zLmxlbmd0aDtcclxuICAgICAgY29uc3QgciA9IGQgLyAyIC8gTWF0aC5zaW4oZGVnIC8gMiAqIE1hdGguUEkgLyAxODApO1xyXG4gICAgICBjb25zdCBzID0gciAvIHAxLmRpc3RUbyhwMik7XHJcbiAgICAgIHAxID0gbmV3IEpTRHJhdzIuUG9pbnQocDIueCArIChwMS54IC0gcDIueCkgKiBzLCBwMi55ICsgKHAxLnkgLSBwMi55KSAqIHMpO1xyXG4gICAgICBpZiAoYXRvbXNbMF0gIT0gbnVsbClcclxuICAgICAgICBhdG9tc1swXS5wID0gcDEuY2xvbmUoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSlcclxuICAgICAgICBhdG9tc1tpXS5wID0gcDEuY2xvbmUoKS5yb3RhdGVBcm91bmQocDIsIGRlZyAqIGkpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUFBKHAsIGMsIGJpb3R5cGUpIHtcclxuICAgIGlmIChwID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICBjb25zdCBoID0gbmV3IEpTRHJhdzIuQXRvbShwLmNsb25lKCkub2Zmc2V0KC10aGlzLmJvbmRsZW5ndGgsIDApLCBiaW90eXBlID09IEpTRHJhdzIuQklPLkFBID8gJ0gnIDogXCI1J1wiKTtcclxuICAgIGNvbnN0IGEgPSBuZXcgSlNEcmF3Mi5BdG9tKHAuY2xvbmUoKSwgYywge3R5cGU6IGJpb3R5cGV9KTtcclxuICAgIGEuc3VwZXJhdG9tID0gbnVsbDtcclxuICAgIGlmIChiaW90eXBlID09IEpTRHJhdzIuQklPLkFBKVxyXG4gICAgICBhLnN1cGVyYXRvbSA9IEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRBQShjKTtcclxuICAgIGVsc2UgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQkFTRV9ETkEpXHJcbiAgICAgIGEuc3VwZXJhdG9tID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldEROQShjKTtcclxuICAgIGVsc2UgaWYgKGJpb3R5cGUgPT0gSlNEcmF3Mi5CSU8uQkFTRV9STkEpXHJcbiAgICAgIGEuc3VwZXJhdG9tID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldFJOQShjKTtcclxuICAgIGNvbnN0IG8gPSBuZXcgSlNEcmF3Mi5BdG9tKHAuY2xvbmUoKS5vZmZzZXQodGhpcy5ib25kbGVuZ3RoLCAwKSwgYmlvdHlwZSA9PSBKU0RyYXcyLkJJTy5BQSA/ICdPJyA6IFwiMydcIik7XHJcbiAgICB0aGlzLm0uYWRkQXRvbShoKTtcclxuICAgIHRoaXMubS5hZGRBdG9tKGEpO1xyXG4gICAgdGhpcy5tLmFkZEF0b20obyk7XHJcblxyXG4gICAgbGV0IGIgPSBuZXcgSlNEcmF3Mi5Cb25kKGgsIGEsIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSk7XHJcbiAgICBiLmFwbzIgPSAyO1xyXG4gICAgdGhpcy5tLmFkZEJvbmQoYik7XHJcblxyXG4gICAgYiA9IG5ldyBKU0RyYXcyLkJvbmQoYSwgbywgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFKTtcclxuICAgIGIuYXBvMSA9IDE7XHJcbiAgICB0aGlzLm0uYWRkQm9uZChiKTtcclxuXHJcbiAgICB0aGlzLmN1ck9iamVjdCA9IGE7XHJcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBkZWxBQShhKSB7XHJcbiAgICBpZiAoYSA9PSBudWxsIHx8IGEuYmlvdHlwZSgpICE9IEpTRHJhdzIuQklPLkFBICYmIGEuYmlvdHlwZSgpICE9IEpTRHJhdzIuQklPLkJBU0VfRE5BICYmIGEuYmlvdHlwZSgpICE9IEpTRHJhdzIuQklPLkJBU0VfUk5BKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZE5leHRBQShhLCBmYWxzZSk7XHJcbiAgICBpZiAobmV4dCA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5tLmRlbEJvbmQobmV4dC5iLCBmYWxzZSk7XHJcbiAgICBjb25zdCBtbSA9IHRoaXMubS5nZXRGcmFnbWVudChuZXh0LmEpO1xyXG4gICAgbW0ub2Zmc2V0KGEucC54IC0gbmV4dC5hLnAueCwgYS5wLnkgLSBuZXh0LmEucC55KTtcclxuXHJcbiAgICBjb25zdCBib25kcyA9IHRoaXMubS5nZXROZWlnaGJvckJvbmRzKGEpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLmExID09IGEpXHJcbiAgICAgICAgYi5hMSA9IG5leHQuYTtcclxuICAgICAgZWxzZSBpZiAoYi5hMiA9PSBhKVxyXG4gICAgICAgIGIuYTIgPSBuZXh0LmE7XHJcbiAgICB9XHJcbiAgICBhLl9wYXJlbnQuZGVsQXRvbShhKTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIF9zZXRTdXBlcmF0b20oYSkge1xyXG4gICAgYS5zdXBlcmF0b20gPSBudWxsO1xyXG4gICAgY29uc3QgYyA9IGEuZWxlbTtcclxuICAgIHN3aXRjaCAoYS5iaW90eXBlKCkpIHtcclxuICAgIGNhc2UgSlNEcmF3Mi5CSU8uQkFTRV9ETkE6XHJcbiAgICAgIGEuc3VwZXJhdG9tID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldEROQShjKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIEpTRHJhdzIuQklPLkJBU0VfUk5BOlxyXG4gICAgICBhLnN1cGVyYXRvbSA9IEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRSTkEoYyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBKU0RyYXcyLkJJTy5BQTpcclxuICAgICAgYS5zdXBlcmF0b20gPSBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0QUEoYyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zZXJ0QUEoYSwgYykge1xyXG4gICAgaWYgKGEgPT0gbnVsbCB8fCAhYS5iaW8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoYS5iaW90eXBlKCkgPT0gSlNEcmF3Mi5CSU8uQUEgJiYgSlNEcmF3Mi5TdXBlckF0b21zLmdldEFBKGMpID09IG51bGwgfHwgYS5iaW90eXBlKCkgPT0gSlNEcmF3Mi5CSU8uQkFTRV9ETkEgJiYgSlNEcmF3Mi5TdXBlckF0b21zLmdldEROQShjKSAhPSBudWxsIHx8IGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkJBU0VfUk5BICYmIEpTRHJhdzIuU3VwZXJBdG9tcy5nZXRSTkEoYykgIT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGR4ID0gdGhpcy5ib25kbGVuZ3RoO1xyXG4gICAgY29uc3QgcmlnaHQgPSB0cnVlO1xyXG4gICAgY29uc3QgbGlzdCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZE5leHRBQShhLCB0cnVlKTtcclxuICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgIGNvbnN0IG5hID0gbmV3IEpTRHJhdzIuQXRvbShhLnAuY2xvbmUoKS5vZmZzZXQoZHgsIDApLCBjLCBkb2pvLmNsb25lKGEuYmlvKSk7XHJcbiAgICBjb25zdCBuYiA9IG5ldyBKU0RyYXcyLkJvbmQobmEsIGEsIGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkFBID8gSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSA6IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRSk7XHJcbiAgICB0aGlzLm0uYWRkQXRvbShuYSk7XHJcbiAgICB0aGlzLm0uYWRkQm9uZChuYik7XHJcblxyXG4gICAgdGhpcy5fc2V0U3VwZXJhdG9tKG5hKTtcclxuICAgIG5iLmFwbzEgPSAxO1xyXG4gICAgbmIuYXBvMiA9IDI7XHJcblxyXG4gICAgaWYgKG5leHQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm0uZGVsQm9uZChuZXh0LmIsIGZhbHNlKTtcclxuICAgICAgY29uc3QgbW0gPSB0aGlzLm0uZ2V0RnJhZ21lbnQobmV4dC5hKTtcclxuICAgICAgbW0ub2Zmc2V0KGR4LCAwKTtcclxuICAgICAgY29uc3QgYiA9IG5ldyBKU0RyYXcyLkJvbmQobmV4dC5hLCBuYSwgYS5iaW90eXBlKCkgPT0gSlNEcmF3Mi5CSU8uQUEgPyBKU0RyYXcyLkJPTkRUWVBFUy5QRVBUSURFIDogSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFLyosIHRydWUgKi8pOyAvLyBUT0RPOiBjaGVjayBsYXN0IHRydWVcclxuICAgICAgYi5hcG8xID0gMTtcclxuICAgICAgYi5hcG8yID0gMjtcclxuICAgICAgdGhpcy5tLmFkZEJvbmQoYik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJPYmplY3QgPSBuYTtcclxuICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGZpbmROZXh0QUEoYSwgZm9yaW5zZXJ0KSB7XHJcbiAgICBjb25zdCBib25kcyA9IHRoaXMubS5nZXROZWlnaGJvckJvbmRzKGEpO1xyXG4gICAgaWYgKGJvbmRzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGVsc2UgaWYgKGJvbmRzLmxlbmd0aCA9PSAxKVxyXG4gICAgICByZXR1cm4ge2E6IGJvbmRzWzBdLm90aGVyQXRvbShhKSwgYjogYm9uZHNbMF19O1xyXG5cclxuICAgIGxldCBiYWNrdXAgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IGJvbmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgIGNvbnN0IG9hID0gYm9uZHNbaV0ub3RoZXJBdG9tKGEpO1xyXG4gICAgICBpZiAoTWF0aC5hYnMoYS5wLnkgLSBvYS5wLnkpIDwgdGhpcy50b3IgLyAyKSB7XHJcbiAgICAgICAgaWYgKG9hLnAueCA8IGEucC54KSB7XHJcbiAgICAgICAgICBiYWNrdXAgPSBib25kc1tpXTtcclxuICAgICAgICAgIGJvbmRzLnNwbGljZShpLCAxKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9hLnAueCA+PSBhLnAueCkge1xyXG4gICAgICAgICAgcmV0dXJuIHthOiBvYSwgYjogYm9uZHNbaV19O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXQgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gYm9uZHNbaV07XHJcbiAgICAgIGNvbnN0IG9hID0gYi5vdGhlckF0b20oYSk7XHJcbiAgICAgIGlmIChyZXQgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldCA9IHthOiBvYSwgYjogYn07XHJcbiAgICAgIH0gZWxzZSBpZiAoIWZvcmluc2VydCAmJiBiLmlzQmlvKCkgJiYgIXJldC5iLmlzQmlvKCkpIHtcclxuICAgICAgICByZXQgPSB7YTogb2EsIGI6IGJ9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvYS5wLnggPCBhLnAueCAmJiByZXQuYS5wLnggPCBhLnAueCB8fCBvYS5wLnggPiBhLnAueCAmJiByZXQuYS5wLnggPiBhLnAueCkge1xyXG4gICAgICAgICAgaWYgKG9hLnAueSA+IHJldC5hLnAueSlcclxuICAgICAgICAgICAgcmV0ID0ge2E6IG9hLCBiOiBifTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9hLnAueCA+IGEucC54KSB7XHJcbiAgICAgICAgICByZXQgPSB7YTogb2EsIGI6IGJ9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4ge2E6IGJhY2t1cC5vdGhlckF0b20oYSksIGI6IGJhY2t1cH07XHJcbiAgICB9IGVsc2UgaWYgKCFmb3JpbnNlcnQgJiYgIXJldC5hLmJpbykge1xyXG4gICAgICBjb25zdCBvYSA9IGJhY2t1cC5vdGhlckF0b20oYSk7XHJcbiAgICAgIGlmIChvYS5iaW8pXHJcbiAgICAgICAgcmV0dXJuIHthOiBvYSwgYjogYmFja3VwfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgZmluZE5leHRBQXMoYSwgcmlnaHQpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIHdoaWxlIChhICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgciA9IHRoaXMuX2ZpbmROZXh0QUEoYSwgcmlnaHQpO1xyXG4gICAgICBpZiAociAhPSBudWxsKSB7XHJcbiAgICAgICAgbGlzdC5wdXNoKHIpO1xyXG4gICAgICAgIGEgPSByLmE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgX2ZpbmROZXh0QUEoYSwgcmlnaHQpIHtcclxuICAgIGNvbnN0IGJvbmRzID0gdGhpcy5tLmJvbmRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBvYSA9IGJvbmRzW2ldLm90aGVyQXRvbShhKTtcclxuICAgICAgaWYgKG9hICE9IG51bGwgJiYgTWF0aC5hYnMob2EucC55IC0gYS5wLnkpIDwgdGhpcy50b3IgLyAyICYmIChyaWdodCAmJiBvYS5wLnggPiBhLnAueCB8fCAhcmlnaHQgJiYgb2EucC54IDwgYS5wLngpKVxyXG4gICAgICAgIHJldHVybiB7YjogYm9uZHNbaV0sIGE6IG9hfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSB2aWV3IHdpbmRvdyBzaXplXHJcbiAgICogQGZ1bmN0aW9uIHNldFNpemVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGggLSBuZXcgd2lkdGhcclxuICAgKiBAcGFyYW0ge251bWJlciBoZWlnaHQgLSBuZXcgaGVpZ2h0XHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHNldFNpemUod2lkdGgsIGhlaWdodCkge1xyXG4gICAgaWYgKHRoaXMubWFpbnRhYmxlICE9IG51bGwpIHtcclxuICAgICAgaWYgKHdpZHRoID4gMClcclxuICAgICAgICB0aGlzLm1haW50YWJsZS5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJweFwiO1xyXG4gICAgICBpZiAoaGVpZ2h0ID4gMClcclxuICAgICAgICB0aGlzLm1haW50YWJsZS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcInB4XCI7XHJcblxyXG4gICAgICBpZiAodGhpcy5pc1NraW5XOCgpKVxyXG4gICAgICAgIHRoaXMucmVzaXplKHdpZHRoLCBoZWlnaHQgLSAyNCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnJlc2l6ZSh3aWR0aCAtIDI4LCBoZWlnaHQgLSAyNCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKHdpZHRoPzogbnVtYmVyLCBoZWlnaHQ/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25yZXNpemUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm9ucmVzaXplKCkpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNpemUod2lkdGggPiAwID8gd2lkdGggOiB0aGlzLmRpdi5vZmZzZXRXaWR0aCwgaGVpZ2h0ID4gMCA/IGhlaWdodCA6IHRoaXMuZGl2Lm9mZnNldEhlaWdodCk7XHJcbiAgfVxyXG5cclxuICByZXNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChzY2lsLlV0aWxzLmlzSXBhZCkge1xyXG4gICAgICAvLyB0aGlzIG9uZSBjYXVzZSBFTE4gcHJvYmxlbSBvbiBpUGFkXHJcbiAgICAgIGlmIChzY2lsLmVsbiAhPSBudWxsIC8qIEVMTiAyLjAgKi8gfHwgc2NpbC5BcHAgIT0gbnVsbCAmJiBzY2lsLkFwcC5BY2NvdW50VHlwZXMgIT0gbnVsbCAvKiBFTE4gMS54ICovKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zZXRTdXJmYWNlU2l6ZShuZXcgSlNEcmF3Mi5Qb2ludCh3aWR0aCwgaGVpZ2h0KSkpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTa2luVzgoKSAmJiB0aGlzLnRvb2xiYXIgIT0gbnVsbClcclxuICAgICAgICB0aGlzLnRvb2xiYXIucmVjcmVhdGVUb3BUb29sYmFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfc2V0U3VyZmFjZVNpemUoc3opIHtcclxuICAgIGlmIChNYXRoLmFicyhzei54IC0gdGhpcy5kaW1lbnNpb24ueCkgPCA2ICYmIE1hdGguYWJzKHN6LnkgLSB0aGlzLmRpbWVuc2lvbi55KSA8IDYpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoc3oueCA+IDApXHJcbiAgICAgIHRoaXMuZGltZW5zaW9uLnggPSBzei54O1xyXG4gICAgaWYgKHN6LnkgPiAwKVxyXG4gICAgICB0aGlzLmRpbWVuc2lvbi55ID0gc3oueTtcclxuXHJcbiAgICB0aGlzLmRpdi5zdHlsZS53aWR0aCA9IHRoaXMuZGltZW5zaW9uLnggKyBcInB4XCI7XHJcbiAgICB0aGlzLmRpdi5zdHlsZS5oZWlnaHQgPSB0aGlzLmRpbWVuc2lvbi55ICsgXCJweFwiO1xyXG4gICAgdGhpcy5zdXJmYWNlLnNldERpbWVuc2lvbnModGhpcy5kaW1lbnNpb24ueCwgdGhpcy5kaW1lbnNpb24ueSk7XHJcbiAgICB0aGlzLmZpdFRvV2luZG93KCk7XHJcbiAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBkYmxjbGljaygpIHtcclxuICAgIGlmICh0aGlzLnBvcHVwbG9ja2VkKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJFZGl0aW5nIGlzIGN1cnJlbnRseSBsb2NrZWRcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBjb25zdCBmbiA9IGZ1bmN0aW9uKGpzZCkge1xyXG4gICAgICBtZS5yZXN0b3JlQ2xvbmUoanNkLmNsb25lKCkpO1xyXG4gICAgICBtZS5maXRUb1dpbmRvdygpO1xyXG4gICAgICBtZS5yZWZyZXNoKHRydWUpO1xyXG4gICAgICBpZiAobWUub3B0aW9ucy5vbnBvcHVwc2F2ZWQgIT0gbnVsbClcclxuICAgICAgICBtZS5vcHRpb25zLm9ucG9wdXBzYXZlZChtZSk7XHJcbiAgICB9O1xyXG4gICAgSlNEcmF3Mi5FZGl0b3Iuc2hvd1BvcHVwKFwiSlNEcmF3MiBQb3B1cCBFZGl0b3JcIiwgXCJTYXZlXCIsIGZuLCB7dmFsdWU6IHRoaXMuY2xvbmUoKSwgZm9ybWF0OiBcImNsb25lXCJ9KTtcclxuICB9XHJcblxyXG4gIF9tYWtlQ2hhaW4oY2hhaW4sIGVuZCkge1xyXG4gICAgaWYgKGNoYWluID09IG51bGwgfHwgY2hhaW4uZW5kICE9IG51bGwgJiYgY2hhaW4uZW5kLmRpc3RUbyhlbmQpIDwgdGhpcy50b3IpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChlbmQuZGlzdFRvKGNoYWluLnN0YXJ0KSA8IHRoaXMuYm9uZGxlbmd0aCAqIDIpXHJcbiAgICAgIGNoYWluLnAyID0gZW5kO1xyXG4gICAgY2hhaW4uZW5kID0gZW5kO1xyXG4gICAgY2hhaW4ucG9pbnRzID0gW107XHJcblxyXG4gICAgY29uc3QgZCA9IGNoYWluLnN0YXJ0LmRpc3RUbyhlbmQpO1xyXG4gICAgbGV0IHAxID0gY2hhaW4uc3RhcnQ7XHJcbiAgICBsZXQgcDI7XHJcbiAgICBpZiAoY2hhaW4uYSA9PSBudWxsKSB7XHJcbiAgICAgIGlmIChNYXRoLmFicyhlbmQueSAtIHAxLnkpIC8gTWF0aC5hYnMoZW5kLnggLSBwMS54KSA8IDAuMSkgLy8gaG9yaXpvbnRhbGx5XHJcbiAgICAgICAgcDIgPSBwMS5jbG9uZSgpLm9mZnNldCh0aGlzLmJvbmRsZW5ndGggKiAoZW5kLnggPiBwMS54ID8gMSA6IC0xKSwgMCkucm90YXRlQXJvdW5kKHAxLCAzMCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwMiA9IHRoaXMuX2d1ZXNzQm9uZChwMSwgY2hhaW4ucDIsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcDIgPSB0aGlzLl9ndWVzc0F1dG9Cb25kKGNoYWluLmEsIGVuZCk7XHJcbiAgICB9XHJcbiAgICBpZiAocDIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgY2hhaW4ucG9pbnRzID0gW2NoYWluLnN0YXJ0XTtcclxuICAgIGNoYWluLnBvaW50cy5wdXNoKHAyKTtcclxuXHJcbiAgICBsZXQgYW5nbGU7XHJcbiAgICBsZXQgZDIgPSBjaGFpbi5zdGFydC5kaXN0VG8ocDIpO1xyXG4gICAgd2hpbGUgKGQyICE9IDAgJiYgZDIgPCBkKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHAyO1xyXG4gICAgICBpZiAoY2hhaW4ucG9pbnRzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgY29uc3QgdDEgPSBwMS5jbG9uZSgpLnJvdGF0ZUFyb3VuZChvcmlnaW4sIDEyMCk7XHJcbiAgICAgICAgY29uc3QgdDIgPSBwMS5jbG9uZSgpLnJvdGF0ZUFyb3VuZChvcmlnaW4sIC0xMjApO1xyXG4gICAgICAgIGlmICh0MS5kaXN0VG8oZW5kKSA8IHQyLmRpc3RUbyhlbmQpKSB7XHJcbiAgICAgICAgICBwMiA9IHQxO1xyXG4gICAgICAgICAgYW5nbGUgPSAxMjA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHAyID0gdDI7XHJcbiAgICAgICAgICBhbmdsZSA9IC0xMjA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFuZ2xlID0gLWFuZ2xlO1xyXG4gICAgICAgIHAyID0gcDEuY2xvbmUoKS5yb3RhdGVBcm91bmQob3JpZ2luLCBhbmdsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcDEgPSBvcmlnaW47XHJcbiAgICAgIGNoYWluLnBvaW50cy5wdXNoKHAyKTtcclxuICAgICAgZDIgPSBjaGFpbi5zdGFydC5kaXN0VG8ocDIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBfZ3Vlc3NBdXRvQm9uZChhLCBlbmQ/OiBQb2ludCkge1xyXG4gICAgaWYgKGEgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoZW5kID09IG51bGwpXHJcbiAgICAgIHJldHVybiBhLl9wYXJlbnQuZ3Vlc3NCb25kKGEsIHRoaXMuYm9uZGxlbmd0aCk7XHJcblxyXG4gICAgbGV0IHAgPSBudWxsO1xyXG4gICAgY29uc3QgYXRvbXMgPSBhLl9wYXJlbnQuZ2V0TmVpZ2hib3JBdG9tcyhhKTtcclxuICAgIGlmIChhdG9tcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBwID0gYS5wLmNsb25lKCkub2Zmc2V0KHRoaXMuYm9uZGxlbmd0aCwgMCk7XHJcbiAgICAgIGlmIChlbmQgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGRlZyA9IE1hdGgucm91bmQoZW5kLmFuZ2xlVG8oYS5wKSAvIDMwKSAqIDMwO1xyXG4gICAgICAgIHAucm90YXRlQXJvdW5kKGEucCwgZGVnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChhdG9tcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICBjb25zdCBhMSA9IGF0b21zWzBdO1xyXG4gICAgICBwID0gYTEucC5jbG9uZSgpLnJvdGF0ZUFyb3VuZChhLnAsIC0xMjApO1xyXG4gICAgICBpZiAoZW5kICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB0ID0gYTEucC5jbG9uZSgpLnJvdGF0ZUFyb3VuZChhLnAsIDEyMCk7XHJcbiAgICAgICAgaWYgKHQuZGlzdFRvKGVuZCkgPCBwLmRpc3RUbyhlbmQpKVxyXG4gICAgICAgICAgcCA9IHQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoYXRvbXMubGVuZ3RoID09IDIpIHtcclxuICAgICAgY29uc3QgYTEgPSBhdG9tc1swXTtcclxuICAgICAgY29uc3QgYTIgPSBhdG9tc1sxXTtcclxuICAgICAgY29uc3QgYW5nMSA9IGExLnAuYW5nbGVUbyhhLnApO1xyXG4gICAgICBjb25zdCBtaWQgPSBhLnAubWlkZGxlQW5nbGUoYTEucCwgYTIucCk7XHJcbiAgICAgIHAgPSBhMS5wLmNsb25lKCkucm90YXRlQXJvdW5kKGEucCwgbWlkIC0gYW5nMSArIDE4MCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcDtcclxuICB9XHJcblxyXG4gIF9hZGRBdXRvQm9uZChhLCBjbWQpIHtcclxuICAgIGNvbnN0IG0gPSBhLl9wYXJlbnQ7XHJcbiAgICBjb25zdCBwID0gdGhpcy5fZ3Vlc3NBdXRvQm9uZChhKTtcclxuICAgIGlmIChwID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBsZXQgZWxlbSA9IG51bGw7XHJcbiAgICBjb25zdCBjID0gdGhpcy5fY291bnRBQUJvbmRzKGEpO1xyXG4gICAgbGV0IGJvbmR0eXBlID0gdGhpcy5DbWQyQm9uZFR5cGUoY21kKTtcclxuICAgIGlmIChjICE9IG51bGwpIHtcclxuICAgICAgLy8gYWRkIEggb3IgT0ggb24gcGVwdGlkZSB0ZXJtaW5hbCBBbWlubyBBY2lkXHJcbiAgICAgIGlmIChjLnBlcHRpZGVOID09IDAgJiYgYy5vdGhlcnMgPT0gMCkge1xyXG4gICAgICAgIGVsZW0gPSBcIkhcIjtcclxuICAgICAgICBib25kdHlwZSA9IEpTRHJhdzIuQk9ORFRZUEVTLlBFUFRJREU7XHJcbiAgICAgIH0gZWxzZSBpZiAoYy5wZXB0aWRlQyA9PSAwICYmIGMub3RoZXJzID09IDApXHJcbiAgICAgICAgZWxlbSA9IFwiT1wiO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KHRoaXMudG9nZ2xlKHApKTtcclxuICAgIGlmIChuYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChuYS5fcGFyZW50ICE9IGEuX3BhcmVudClcclxuICAgICAgICBuYSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5hID09IG51bGwpIHtcclxuICAgICAgbmEgPSBuZXcgSlNEcmF3Mi5BdG9tKHAsIGVsZW0pO1xyXG4gICAgICB0aGlzLl9hZGROZXdBdG9tSW5FeGlzdGluZ0dyb3VwKGEsIFtuYV0pO1xyXG4gICAgICBtLmFkZEF0b20obmEpO1xyXG4gICAgICAvLyBhdHRhY2ggdG8gZXhpc3RpbmcgZ3JvdXBcclxuICAgICAgaWYgKGEuZ3JvdXAgIT0gbnVsbClcclxuICAgICAgICBuYS5ncm91cCA9IGEuZ3JvdXA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobS5maW5kQm9uZChhLCBuYSkgIT0gbnVsbClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmIgPSBuZXcgSlNEcmF3Mi5Cb25kKGEsIG5hLCBib25kdHlwZSk7XHJcbiAgICBtLmFkZEJvbmQobmIsIG51bGwsIHRydWUpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBfZ3Vlc3NCb25kKHAxOiBQb2ludCwgcDI6IFBvaW50LCBub3Rvcj86IGJvb2xlYW4pOiBQb2ludCB7XHJcbiAgICBpZiAoIW5vdG9yICYmIHAxLmRpc3RUbyhwMikgPCB0aGlzLnRvcilcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IGEgPSBwMi5hbmdsZVRvKHAxKTtcclxuICAgIGNvbnN0IG0gPSBNYXRoLmFicyhhKSAlIHRoaXMuYW5nbGVTdG9wO1xyXG4gICAgaWYgKGEgPiAwKVxyXG4gICAgICBhID0gYSAtIG0gKyAobSA+ICh0aGlzLmFuZ2xlU3RvcCAvIDIpID8gdGhpcy5hbmdsZVN0b3AgOiAwKTtcclxuICAgIGVsc2VcclxuICAgICAgYSA9IC0oLWEgLSBtICsgKG0gPiAodGhpcy5hbmdsZVN0b3AgLyAyKSA/IHRoaXMuYW5nbGVTdG9wIDogMCkpO1xyXG5cclxuICAgIHJldHVybiBuZXcgSlNEcmF3Mi5Qb2ludCh0aGlzLmJvbmRsZW5ndGgsIDApLnJvdGF0ZShhKS5vZmZzZXQocDEueCwgcDEueSk7XHJcbiAgfVxyXG5cclxuICBndWVzc0Fycm93KHAxLCBwMikge1xyXG4gICAgaWYgKHAxLmRpc3RUbyhwMikgPCB0aGlzLmJvbmRsZW5ndGgpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IGEgPSBwMi5hbmdsZVRvKHAxKTtcclxuICAgIGNvbnN0IG0gPSBhICUgOTA7XHJcbiAgICBpZiAobSA9PSAwKVxyXG4gICAgICByZXR1cm4gcDI7XHJcblxyXG4gICAgbGV0IHMgPSAwO1xyXG4gICAgaWYgKG0gPCA1KVxyXG4gICAgICBzID0gLW07XHJcbiAgICBlbHNlIGlmICg5MCAtIG0gPCA1KVxyXG4gICAgICBzID0gOTAgLSBtO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gcDI7XHJcblxyXG4gICAgcmV0dXJuIHAyLmNsb25lKCkucm90YXRlQXJvdW5kKHAxLCBzKTtcclxuICB9XHJcblxyXG4gIGZyYW1lb2Zmc2V0OiBQb2ludCA9IG5ldyBKU0RyYXcyLlBvaW50KDAsIDApO1xyXG5cclxuICBzZXRGcmFtZW9mZnNldCh4LCB5KSB7XHJcbiAgICB0aGlzLmZyYW1lb2Zmc2V0LnggPSB4O1xyXG4gICAgdGhpcy5mcmFtZW9mZnNldC55ID0geTtcclxuICB9XHJcblxyXG4gIGV2ZW50UG9pbnQoZSk6IEV2ZW50UG9pbnQge1xyXG4gICAgY29uc3QgZiA9IHRydWU7XHJcbiAgICAvL2lmIChzY2lsLlV0aWxzLmlzSXBhZClcclxuICAgIC8vICAgIGYgPSBmYWxzZTtcclxuICAgIGNvbnN0IG9iam9mZnNldCA9IHNjaWwuVXRpbHMuZ2V0T2Zmc2V0KHRoaXMuZGl2LCBmKTtcclxuICAgIC8vb2Jqb2Zmc2V0ID0gbmV3IEpTRHJhdzIuUG9pbnQoMCwgMCk7XHJcbiAgICBjb25zdCBwdCA9IG5ldyBKU0RyYXcyLlBvaW50KGUuY2xpZW50WCAtIG9iam9mZnNldC54IC0gdGhpcy5mcmFtZW9mZnNldC54LCBlLmNsaWVudFkgLSBvYmpvZmZzZXQueSAtIHRoaXMuZnJhbWVvZmZzZXQueSkgYXMgRXZlbnRQb2ludDtcclxuICAgIHB0LnRtID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBwdC5jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgcHQuY2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgIHJldHVybiBwdDtcclxuICB9XHJcblxyXG4gIGdldENtZCh0ZD86IGFueSkge1xyXG4gICAgaWYgKHRkID09IG51bGwpXHJcbiAgICAgIHRkID0gdGhpcy5jdXJCdXR0b247XHJcbiAgICBsZXQgcyA9IHRkID09IG51bGwgPyBcInNlbGVjdFwiIDogdGQuZ2V0QXR0cmlidXRlKCdjbWQnKTtcclxuICAgIGlmIChzLmxlbmd0aCA+IDIgJiYgcy5zdWJzdHIoMCwgMikgPT0gXCJlLVwiKVxyXG4gICAgICBzID0gcy5zdWJzdHIoMik7XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIG9uU2VsQnRuKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGxldCB0ZCA9IChlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xyXG4gICAgaWYgKHRkLmdldEF0dHJpYnV0ZSgnY21kJykgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm9uQ21kKHRkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7XHJcbiAgICAgIHRkID0gdGQucGFyZW50RWxlbWVudCBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcclxuICAgICAgaWYgKHRkID09IG51bGwgfHwgdGQudGFnTmFtZSAhPSBcIlREXCIpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKHRkLmdldEF0dHJpYnV0ZSgnY21kJykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMub25DbWQodGQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG8gYSB0b29sYmFyIGNvbW1hbmRcclxuICAgKiBAZnVuY3Rpb24gZG9DbWRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY21kIC0gdGhlIGNvbW1hbmQgbmFtZVxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBkb0NtZChjbWQpIHtcclxuICAgIGlmICh0aGlzLnRvb2xiYXIgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLnRvb2xiYXIuZ2V0QnV0dG9ucygpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGxldCBwID0gbGlzdFtpXTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIilcclxuICAgICAgICBwID0gcC5wYXJlbnROb2RlO1xyXG4gICAgICBpZiAocC5nZXRBdHRyaWJ1dGUoXCJjbWRcIikgPT0gY21kKSB7XHJcbiAgICAgICAgdGhpcy5vbkNtZChwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbWQodGQpIHtcclxuICAgIGxldCB1c2VvbmNlID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhcnQgPSBudWxsO1xyXG4gICAgY29uc3QgY21kID0gdGhpcy5nZXRDbWQodGQpO1xyXG4gICAgSlNEcmF3Mi5NZW51LmNsb3NlKCk7XHJcbiAgICBzd2l0Y2ggKGNtZCkge1xyXG4gICAgY2FzZSBcImFib3V0XCI6XHJcbiAgICBjYXNlIFwianNkcmF3XCI6XHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLnNob3dBYm91dCgpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJpbmtjbGVhcmFsbFwiOlxyXG4gICAgICBpZiAodGhpcy5pbmsgIT0gbnVsbClcclxuICAgICAgICB0aGlzLmluay5jbGVhcigpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJpbmtjbGVhclwiOlxyXG4gICAgICBpZiAodGhpcy5pbmsgIT0gbnVsbClcclxuICAgICAgICB0aGlzLmluay5jbGVhckxhc3RPbmUoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY2VudGVyXCI6XHJcbiAgICAgIHRoaXMucHVzaHVuZG8oKTtcclxuICAgICAgdGhpcy5maXRUb1dpbmRvdygpO1xyXG4gICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJ6b29taW5cIjpcclxuICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICB0aGlzLnNjYWxlKDEuMjUsIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMuZGltZW5zaW9uLnggLyAyLCB0aGlzLmRpbWVuc2lvbi55IC8gMikpO1xyXG4gICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICB1c2VvbmNlID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInpvb21vdXRcIjpcclxuICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICB0aGlzLnNjYWxlKDAuNzUsIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMuZGltZW5zaW9uLnggLyAyLCB0aGlzLmRpbWVuc2lvbi55IC8gMikpO1xyXG4gICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICB1c2VvbmNlID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIm5ld1wiOlxyXG4gICAgICBpZiAoIXRoaXMubS5pc0VtcHR5KCkpIHtcclxuICAgICAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICAgICAgc2NpbC5VdGlscy5jb25maXJtWWVzKFwiQ2xlYXIgYWxsIGNvbnRlbnRzP1wiLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1lLnB1c2h1bmRvKCk7XHJcbiAgICAgICAgICBtZS5jbGVhcihudWxsLCB0cnVlKTtcclxuICAgICAgICAgIG1lLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICBpZiAobWUub3B0aW9ucy5maWxlbmV3ICE9IG51bGwpXHJcbiAgICAgICAgICAgIG1lLm9wdGlvbnMuZmlsZW5ldyhtZSk7XHJcbiAgICAgICAgfSwgdGhpcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5rICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLmluay5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNhdmVcIjpcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5maWxlc2F2ZSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWxlc2F2ZSh0aGlzKTtcclxuICAgICAgZWxzZSBpZiAoc2NpbC5VdGlscy5zZXJ2aWNlQXZhaWxhYmxlKCkpXHJcbiAgICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlU2F2ZSh0aGlzKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXMub25TaG93U2F2ZUZpbGVEbGcoKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJvcGVuXCI6XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmlsZW9wZW4gIT0gbnVsbClcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZW9wZW4odGhpcyk7XHJcbiAgICAgIGVsc2UgaWYgKHNjaWwuVXRpbHMuc2VydmljZUF2YWlsYWJsZSgpKVxyXG4gICAgICAgIEpTRHJhdzIuSlNEcmF3SU8uanNkRmlsZU9wZW4odGhpcyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLm9uU2hvd09wZW5GaWxlRGxnKCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInVuZG9cIjpcclxuICAgICAgaWYgKHRoaXMudW5kbygpKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgdXNlb25jZSA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInJlZG9cIjpcclxuICAgICAgaWYgKHRoaXMucmVkbygpKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgdXNlb25jZSA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInJ4blwiOiB7XHJcbiAgICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgaWYgKHRoaXMuY2xlYW51cFJ4bih0aGlzLmJvbmRsZW5ndGgpKSB7XHJcbiAgICAgICAgdGhpcy5wdXNodW5kbyhjbG9uZWQpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgXCJjb3B5cHJvZFwiOlxyXG4gICAgICBjb25zdCByeG4gPSB0aGlzLm0ucGFyc2VSeG4odHJ1ZSk7XHJcbiAgICAgIGlmIChyeG4gIT0gbnVsbCAmJiByeG4ucmVhY3RhbnRzLmxlbmd0aCA+IDAgJiYgcnhuLnByb2R1Y3RzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnhuLnJlYWN0YW50cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgcnhuLnByb2R1Y3RzLnB1c2gocnhuLnJlYWN0YW50c1tpXS5jbG9uZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRSeG4ocnhuLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJJdCdzIGFscmVhZHkgYSByZWFjdGlvblwiKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJyeG5tYXAyXCI6IHtcclxuICAgICAgY29uc3QgY2xvbmVkID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgICBpZiAodGhpcy5tLmNsZWFyQXRvbU1hcCgpID4gMCkge1xyXG4gICAgICAgIHRoaXMucHVzaHVuZG8oY2xvbmVkKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydChcIk5vIHJlYWN0aW9uIG1hcCBmb3VuZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgXCJzZXFcIjpcclxuICAgICAgSlNEcmF3Mi5TZXF1ZW5jZUJ1aWxkZXIuc2hvdyh0aGlzLCBKU0RyYXcyLkJJTy5BQSwgXCJQZXB0aWRlXCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoZWxpeFwiOlxyXG4gICAgICBKU0RyYXcyLlNlcXVlbmNlQnVpbGRlci5zaG93KHRoaXMsIEpTRHJhdzIuQklPLkJBU0VfRE5BLCBcIkROQVwiKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwicm5hXCI6XHJcbiAgICAgIEpTRHJhdzIuU2VxdWVuY2VCdWlsZGVyLnNob3codGhpcywgSlNEcmF3Mi5CSU8uQkFTRV9STkEsIFwiUk5BXCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJuMnNcIjpcclxuICAgICAgSlNEcmF3Mi5KU0RyYXdJTy5uYW1lMnN0cnVjdHVyZSh0aGlzKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY2xlYW51cFwiOlxyXG4gICAgICBKU0RyYXcyLkpTRHJhd0lPLmNsZWFudXAodGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNlbGVjdGFsbFwiOlxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RBbGwoKSlcclxuICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJjb3B5XCI6XHJcbiAgICAgIHRoaXMuY29weSgpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJjdXRcIjpcclxuICAgICAgaWYgKHRoaXMuY3V0KCkpXHJcbiAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwicGFzdGVcIjpcclxuICAgICAgaWYgKHRoaXMucGFzdGUoKSlcclxuICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJmbGlwaFwiOlxyXG4gICAgICB0aGlzLmZsaXAoXCJob3JpXCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJmbGlwdlwiOlxyXG4gICAgICB0aGlzLmZsaXAoXCJ2ZXJ0XCIpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJyZWF4eXNcIjpcclxuICAgIGNhc2UgXCJzY2lmaW5kZXJcIjpcclxuICAgIGNhc2UgXCJwdWJjaGVtXCI6XHJcbiAgICBjYXNlIFwiY2hlbXNwaWRlclwiOlxyXG4gICAgICB0aGlzLnNlbmRRdWVyeShjbWQpO1xyXG4gICAgICB1c2VvbmNlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiY2hlbWRyYXdcIjpcclxuICAgICAgSlNEcmF3Mi5DaGVtZHJhd1BvcHVwLnNob3codGhpcyk7XHJcbiAgICAgIHVzZW9uY2UgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJlcmFzZXJcIjpcclxuICAgICAgaWYgKCF0aGlzLm9uRGVsKCkpXHJcbiAgICAgICAgdXNlb25jZSA9IGZhbHNlO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCIuLi5cIjpcclxuICAgIGNhc2UgXCJtb3JlXCI6XHJcbiAgICAgIHRoaXMuc2hvd1BUKCk7XHJcbiAgICAgIHVzZW9uY2UgPSBmYWxzZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwicGFzdGVjaGVtZHJhd1wiOlxyXG4gICAgICBKU0RyYXcyLkNoZW1EcmF3LnBhc3RlKHRoaXMpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJjb3B5Y2hlbWRyYXdcIjpcclxuICAgICAgSlNEcmF3Mi5DaGVtRHJhdy5jb3B5KHRoaXMpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJzeW1ib2xcIjpcclxuICAgICAgdGhpcy5zaG93U3ltYm9sRGxnKCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInRlbXBsYXRlLltjdXN0b21dXCI6XHJcbiAgICAgIHRoaXMuc2hvd1RlbXBsYXRlc0RsZygpO1xyXG4gICAgICB1c2VvbmNlID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInRsY3RlbXBsYXRlXCI6XHJcbiAgICAgIEpTRHJhdzIuVExDVGVtcGxhdGVzLnNob3codHJ1ZSwgdGhpcyk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInRsY251bWJlclwiOlxyXG4gICAgICB0aGlzLm51bWJlclRsY1BsYXRlcygpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJmdWxsc2NyZWVuXCI6XHJcbiAgICBjYXNlIFwiZnVsbHNjcmVlbjJcIjpcclxuICAgICAgaWYgKEpTRHJhdzIuRnVsbHNjcmVlbiAhPSBudWxsKVxyXG4gICAgICAgIEpTRHJhdzIuRnVsbHNjcmVlbi5zaG93KHRoaXMpO1xyXG4gICAgICB1c2VvbmNlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiaGVsbV9pbXBvcnRcIjpcclxuICAgICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuaGVsbS5zaG93SW1wb3J0RGxnKCk7XHJcbiAgICAgIHVzZW9uY2UgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoZWxtX2ZpbmRcIjpcclxuICAgICAgaWYgKHRoaXMuaGVsbSAhPSBudWxsKVxyXG4gICAgICAgIHRoaXMuaGVsbS5zaG93RmluZFJlcGxhY2VEbGcoKTtcclxuICAgICAgdXNlb25jZSA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImhlbG1fbWV4XCI6XHJcbiAgICAgIGlmICh0aGlzLmhlbG0gIT0gbnVsbClcclxuICAgICAgICBzY2lsLmhlbG0uTW9ub21lckV4cGxvcmVyLnNob3dEbGcodGhpcyk7XHJcbiAgICAgIHVzZW9uY2UgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJoZWxtX2xheW91dFwiOlxyXG4gICAgICBpZiAodGhpcy5oZWxtICE9IG51bGwpXHJcbiAgICAgICAgdGhpcy5oZWxtLmNsZWFuKG51bGwsIHRydWUpO1xyXG4gICAgICB1c2VvbmNlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICB1c2VvbmNlID0gZmFsc2U7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdXNlb25jZSlcclxuICAgICAgdGhpcy5vbkNtZDIodGQpO1xyXG4gIH1cclxuXHJcbiAgb25DbWQyKHRkKSB7XHJcbiAgICBjb25zdCBjbWQgPSB0aGlzLmdldENtZCh0ZCk7XHJcbiAgICBpZiAoY21kID09IFwicnhubWFwXCIpIHtcclxuICAgICAgY29uc3QgcnhuID0gdGhpcy5tLnBhcnNlUnhuKCk7XHJcbiAgICAgIGlmIChyeG4gPT0gbnVsbCB8fCByeG4ucmVhY3RhbnRzLmxlbmd0aCA9PSAwIHx8IHJ4bi5wcm9kdWN0cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJQbGVhc2UgZHJhdyBhIGNvbXBsZXRlZCByZWFjdGlvbiBmaXJzdC5cIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBwaWQgPSBkb2pvLmF0dHIodGQsIFwicGFyZW50XCIpO1xyXG4gICAgY29uc3QgcGFyZW50ID0gcGlkID09IG51bGwgPyBudWxsIDogZG9qby5ieUlkKHBpZCk7XHJcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy50b29sYmFyLmV4Y2hhbmdlQnV0dG9uKHBhcmVudCwgdGQpO1xyXG4gICAgICB0ZCA9IHBhcmVudDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1ckJ1dHRvbiAhPSB0ZCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNraW4gPT0gXCJ3OFwiKSB7XHJcbiAgICAgICAgY29uc3QgbWUgPSB0aGlzO1xyXG4gICAgICAgIGlmICh0aGlzLmN1ckJ1dHRvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICBkb2pvLnN0eWxlKHRoaXMuY3VyQnV0dG9uLCB7YmFja2dyb3VuZEltYWdlOiBzY2lsLlV0aWxzLmltZ1NyYyhcInc4L1wiICsgbWUub3B0aW9ucy5idXR0b25zaGFwZSArIFwiLnBuZ1wiLCB0cnVlKX0pO1xyXG4gICAgICAgICAgdGhpcy5jdXJCdXR0b24ucmVtb3ZlQXR0cmlidXRlKFwicHVzaGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZC5zZXRBdHRyaWJ1dGUoXCJwdXNoZWRcIiwgMSk7XHJcbiAgICAgICAgZG9qby5zdHlsZSh0ZCwge2JhY2tncm91bmRJbWFnZTogc2NpbC5VdGlscy5pbWdTcmMoXCJ3OC9cIiArIG1lLm9wdGlvbnMuYnV0dG9uc2hhcGUgKyBcIjAucG5nXCIsIHRydWUpfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLnNraW4gPT0gXCJzaVwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VyQnV0dG9uICE9IG51bGwpIHtcclxuICAgICAgICAgIGRvam8uc3R5bGUodGhpcy5jdXJCdXR0b24sIHtiYWNrZ3JvdW5kOiBcIlwifSk7XHJcbiAgICAgICAgICB0aGlzLmN1ckJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoXCJwdXNoZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRkLnNldEF0dHJpYnV0ZShcInB1c2hlZFwiLCAxKTtcclxuICAgICAgICBkb2pvLnN0eWxlKHRkLCB7YmFja2dyb3VuZDogSlNEcmF3Mi5Ta2luLmpzZHJhdy5idG5zZWxjb2xvcn0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmN1ckJ1dHRvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICBkb2pvLnN0eWxlKHRoaXMuY3VyQnV0dG9uLCB7Ym9yZGVyOiBcIm5vbmVcIiwgcGFkZGluZzogXCIycHhcIn0pO1xyXG4gICAgICAgICAgLy90aGlzLmN1ckJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoXCJwdXNoZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vdGQuc2V0QXR0cmlidXRlKFwicHVzaGVkXCIsIDEpO1xyXG4gICAgICAgIGRvam8uc3R5bGUodGQsIHtib3JkZXI6IFwic29saWQgMXB4XCIsIGJvcmRlckNvbG9yOiBcIiNjMGMwYzAgI2Y1ZjVmNSAjZjVmNWY1ICNjMGMwYzBcIiwgcGFkZGluZzogXCIxcHhcIn0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VyQnV0dG9uID0gdGQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmbGlwKGRpcikge1xyXG4gICAgaWYgKHRoaXMubS5pc0VtcHR5KCkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBsZXQgbGlzdCA9IFtdO1xyXG4gICAgY29uc3QgYXRvbXMgPSB0aGlzLm0uYXRvbXM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChhdG9tc1tpXS5zZWxlY3RlZClcclxuICAgICAgICBsaXN0LnB1c2goYXRvbXNbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoaWNzID0gdGhpcy5tLmdyYXBoaWNzO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKGdyYXBoaWNzW2ldLnNlbGVjdGVkICYmIEpTRHJhdzIuQ3VydmUuY2FzdChncmFwaGljc1tpXSkgIT0gbnVsbClcclxuICAgICAgICAgIGxpc3QucHVzaChncmFwaGljc1tpXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChsaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgdGhpcy5wdXNodW5kbygpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIGxpc3RbaV0uZmxpcCgpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmxpcEJvbmQgPSBudWxsO1xyXG4gICAgbGV0IGZsaXBheGlzID0gbnVsbDtcclxuICAgIGxldCBjZW50ZXIgPSBudWxsO1xyXG4gICAgaWYgKGxpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgY2VudGVyID0gdGhpcy5nZXRDZW50ZXIoKTtcclxuICAgICAgbGlzdCA9IGF0b21zO1xyXG4gICAgfSBlbHNlIGlmIChsaXN0Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGNlbnRlciA9IGxpc3RbMF0ucC5jbG9uZSgpO1xyXG5cclxuICAgICAgY29uc3QgZnJhZyA9IHRoaXMuZ2V0RnJhZ21lbnQobGlzdFswXSk7XHJcbiAgICAgIGlmIChmcmFnICE9IG51bGwpXHJcbiAgICAgICAgbGlzdCA9IGZyYWcuYXRvbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobGlzdC5sZW5ndGggPT0gMiAmJiAoZmxpcEJvbmQgPSB0aGlzLm0uZmluZEJvbmQobGlzdFswXSwgbGlzdFsxXSkpICE9IG51bGwpIHtcclxuICAgICAgICBjZW50ZXIgPSBmbGlwQm9uZC5jZW50ZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZnJhZyA9IHRoaXMuZ2V0RnJhZ21lbnQobGlzdFswXSk7XHJcbiAgICAgICAgaWYgKGZyYWcgIT0gbnVsbClcclxuICAgICAgICAgIGxpc3QgPSBmcmFnLmF0b21zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRDb25uZWN0aW5nQXRvbUJvbmRzKGxpc3QpO1xyXG4gICAgICAgIGlmIChsaW5rcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgZmxpcEJvbmQgPSBsaW5rc1swXS5iO1xyXG4gICAgICAgICAgY2VudGVyID0gKGZsaXBCb25kLmExLmYgPyBmbGlwQm9uZC5hMSA6IGZsaXBCb25kLmEyKS5wLmNsb25lKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsaW5rcy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgZmxpcGF4aXMgPSB7YTE6IGxpbmtzWzBdLmEsIGEyOiBsaW5rc1sxXS5hfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2VudGVyID0gdGhpcy5nZXRDZW50ZXIobGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZsaXBCb25kICE9IG51bGwpXHJcbiAgICAgIGZsaXBheGlzID0ge2ExOiBmbGlwQm9uZC5hMSwgYTI6IGZsaXBCb25kLmEyfTtcclxuXHJcbiAgICB0aGlzLnB1c2h1bmRvKCk7XHJcbiAgICBpZiAoZmxpcGF4aXMgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBkZWcgPSBmbGlwYXhpcy5hMi5wLmFuZ2xlVG8oZmxpcGF4aXMuYTEucCk7XHJcbiAgICAgIGNlbnRlciA9IGZsaXBheGlzLmExLnAuY2xvbmUoKTtcclxuICAgICAgdGhpcy5yb3RhdGUobGlzdCwgY2VudGVyLCAtZGVnKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IGxpc3RbaV0ucDtcclxuICAgICAgICBwLnkgPSBjZW50ZXIueSAtIChwLnkgLSBjZW50ZXIueSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3RhdGUobGlzdCwgY2VudGVyLCBkZWcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRpciA9PSBcInZlcnRcIikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgcCA9IGxpc3RbaV0ucDtcclxuICAgICAgICAgIHAueSA9IGNlbnRlci55IC0gKHAueSAtIGNlbnRlci55KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICBjb25zdCBwID0gbGlzdFtpXS5wO1xyXG4gICAgICAgICAgcC54ID0gY2VudGVyLnggLSAocC54IC0gY2VudGVyLngpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5faW52ZXJ0U3RlcmVvQm9uZHMobGlzdCk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgX2ludmVydFN0ZXJlb0JvbmRzKGxpc3QpIHtcclxuICAgIGNvbnN0IGFsbCA9IGxpc3QubGVuZ3RoID09IHRoaXMubS5hdG9tcy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubS5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5tLmJvbmRzW2ldO1xyXG4gICAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLldFREdFIHx8IGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIKSB7XHJcbiAgICAgICAgaWYgKHNjaWwuVXRpbHMuaW5kZXhPZihsaXN0LCBiLmExKSA+PSAwIHx8IHNjaWwuVXRpbHMuaW5kZXhPZihsaXN0LCBiLmEyKSA+PSAwKSB7XHJcbiAgICAgICAgICBiLnR5cGUgPSBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuV0VER0UgPyBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIIDogSlNEcmF3Mi5CT05EVFlQRVMuV0VER0U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZW5kUXVlcnkoY21kKSB7XHJcbiAgICBjb25zdCBzbWlsZXMgPSB0aGlzLmdldFNtaWxlcygpO1xyXG4gICAgaWYgKHNtaWxlcyA9PSBudWxsIHx8IHNtaWxlcyA9PSBcIlwiKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJObyBxdWVyeSBzdHJ1Y3R1cmUgZHJhd25cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB1cmw7XHJcbiAgICBzd2l0Y2ggKGNtZC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICBjYXNlIFwicHViY2hlbVwiOlxyXG4gICAgICB1cmwgPSBcImh0dHA6Ly9wdWJjaGVtLm5jYmkubmxtLm5paC5nb3Yvc2VhcmNoL3NlYXJjaC5jZ2k/Y21kPXNlYXJjaCZxX3R5cGU9ZHQmc2ltcF9zY2h0cD1mcyZxX2RhdGE9XCI7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImNoZW1zcGlkZXJcIjpcclxuICAgICAgdXJsID0gXCJodHRwOi8vd3d3LmNoZW1zcGlkZXIuY29tL1NlYXJjaC5hc3B4P3E9XCI7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInJlYXh5c1wiOlxyXG4gICAgICB1cmwgPSBcImh0dHBzOi8vd3d3LnJlYXh5cy5jb20vcmVheHlzL3NlY3VyZWQvaG9waW50by5kbz9jb250ZXh0PVMmcXVlcnk9XCI7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcInNjaWZpbmRlclwiOlxyXG4gICAgICB1cmwgPSBcImh0dHBzOi8vd3d3LnJlYXh5cy5jb20vcmVheHlzL3NlY3VyZWQvaG9waW50by5kbz9jb250ZXh0PVMmcXVlcnk9XCI7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdXJsICs9IGVzY2FwZShzbWlsZXMpO1xyXG4gICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICB9XHJcblxyXG4gIG9uU2hvd09wZW5GaWxlRGxnKCkge1xyXG4gICAgY29uc3QgbWUgPSBKU0RyYXcyLkVkaXRvcjtcclxuICAgIGlmIChtZS5vcGVuZmlsZWRsZyA9PSBudWxsKSB7XHJcbiAgICAgIGxldCBmaWxlZm9ybWF0cyA9IG51bGw7XHJcbiAgICAgIGlmIChKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uID09IFwiTGl0ZVwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWxtdG9vbGJhcilcclxuICAgICAgICAgIGZpbGVmb3JtYXRzID0ge2hlbG06IFwiSEVMTVwiLCB4aGVsbTogXCJ4SEVMTVwifTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBmaWxlZm9ybWF0cyA9IHttb2w6IFwiTW9sIEZpbGVcIiwgc21pbGVzOiBcIlNNSUxFU1wifTtcclxuICAgICAgfSBlbHNlIGlmIChtZS5vcGVuZmlsZWRsZz8uanNkLm9wdGlvbnMudGxjcGxhdGUpIC8vIFRPRE86IGNoZWNrIGpzZFxyXG4gICAgICAgIGZpbGVmb3JtYXRzID0gSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlczI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBmaWxlZm9ybWF0cyA9IEpTRHJhdzIuSlNEcmF3SU8uanNkRmlsZXM7XHJcblxyXG4gICAgICBjb25zdCBmaWVsZHMgPSB7ZmlsZXR5cGU6IHtsYWJlbDogXCJGaWxlIFR5cGVcIiwgdHlwZTogXCJzZWxlY3RcIiwgaXRlbXM6IGZpbGVmb3JtYXRzfSwgY29udGVudHM6IHtsYWJlbDogXCJDb250ZW50c1wiLCB0eXBlOiBcInRleHRhcmVhXCIsIHdpZHRoOiA4MDAsIGhlaWdodDogNDAwfX07XHJcbiAgICAgIG1lLm9wZW5maWxlZGxnID0gc2NpbC5Gb3JtLmNyZWF0ZURsZ0Zvcm0oXCJJbXBvcnQgRmlsZVwiLCBmaWVsZHMsIHtsYWJlbDogXCJJbXBvcnRcIiwgb25jbGljazogZnVuY3Rpb24oKSB7IG1lLm9uT3BlbkZpbGUoKTsgfX0pO1xyXG4gICAgfVxyXG4gICAgbWUub3BlbmZpbGVkbGcuc2hvdygpO1xyXG4gICAgbWUub3BlbmZpbGVkbGcuZm9ybS5zZXREYXRhKHt9KTtcclxuICAgIG1lLm9wZW5maWxlZGxnLmpzZCA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBvblNob3dTYXZlRmlsZURsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWUgPSBKU0RyYXcyLkVkaXRvcjtcclxuICAgIGlmIChtZS5zYXZlZmlsZWRsZyA9PSBudWxsKSB7XHJcbiAgICAgIGxldCBmaWxlZm9ybWF0cyA9IG51bGw7XHJcbiAgICAgIGlmIChKU0RyYXcyLlNlY3VyaXR5LmtFZGl0aW9uID09IFwiTGl0ZVwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWxtdG9vbGJhcilcclxuICAgICAgICAgIGZpbGVmb3JtYXRzID0ge2hlbG06IFwiSEVMTVwiLCB4aGVsbTogXCJ4SEVMTVwifTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBmaWxlZm9ybWF0cyA9IHttb2w6IFwiTW9sIEZpbGVcIiwgc21pbGVzOiBcIlNNSUxFU1wifTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgLy8gQCB0cy1pZ25vcmVcclxuICAgICAgaWYgKG1lLnNhdmVmaWxlZGxnPy5qc2Qub3B0aW9ucy50bGNwbGF0ZSkgLy8gVE9ETzogY2hlY2sganNkXHJcbiAgICAgICAgZmlsZWZvcm1hdHMgPSBKU0RyYXcyLkpTRHJhd0lPLmpzZEZpbGVzMjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGZpbGVmb3JtYXRzID0gSlNEcmF3Mi5KU0RyYXdJTy5qc2RGaWxlcztcclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHtmaWxldHlwZToge2xhYmVsOiBcIkZpbGUgVHlwZVwiLCB0eXBlOiBcInNlbGVjdFwiLCBpdGVtczogZmlsZWZvcm1hdHN9LCBjb250ZW50czoge2xhYmVsOiBcIkNvbnRlbnRzXCIsIHR5cGU6IFwidGV4dGFyZWFcIiwgd2lkdGg6IDgwMCwgaGVpZ2h0OiA0MDB9fTtcclxuICAgICAgbWUuc2F2ZWZpbGVkbGcgPSBzY2lsLkZvcm0uY3JlYXRlRGxnRm9ybShcIkV4cG9ydCBGaWxlXCIsIGZpZWxkcywgbnVsbCwge1xyXG4gICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbihmaWVsZCkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkID09IG1lLnNhdmVmaWxlZGxnLmZvcm0uZmllbGRzLmZpbGV0eXBlKSBtZS5vblNhdmVGaWxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIG1lLnNhdmVmaWxlZGxnLnNob3coKTtcclxuICAgIG1lLnNhdmVmaWxlZGxnLmZvcm0uc2V0RGF0YSh7fSk7XHJcbiAgICBtZS5zYXZlZmlsZWRsZy5qc2QgPSB0aGlzO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uUFQoZWxlbSk6IHZvaWQge1xyXG4gICAgSlNEcmF3Mi5FZGl0b3IucGVyaW9kaWN0YWJsZS5oaWRlKCk7XHJcbiAgICBpZiAoZWxlbSAhPSBudWxsKVxyXG4gICAgICB0aGlzLnB0RWxlbWVudCA9IGVsZW07IC8vIFRPRE86ID9cclxuICB9XHJcblxyXG4gIHNob3dQVChjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XHJcbiAgICBKU0RyYXcyLm5lZWRQcm8oKTtcclxuICB9XHJcblxyXG4gIHNob3dBdG9tRGxnKGEpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgc2V0QXRvbVByb3BzKGEpIHtcclxuICAgIEpTRHJhdzIubmVlZFBybygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0JvbmREbGcoYikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICBzZXRCb25kUHJvcHMoYikge1xyXG4gICAgSlNEcmF3Mi5uZWVkUHJvKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgU2VjcHRydW0gSkRYIGRhdGFcclxuICAgKiBAZnVuY3Rpb24gc2V0SmR4XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBKRFggc3RyaW5nXHJcbiAgICovXHJcbiAgc2V0SmR4KGRhdGEpIHtcclxuICAgIGNvbnN0IG0gPSBuZXcgSlNEcmF3Mi5Nb2woKTtcclxuICAgIG0uc2V0SmR4KGRhdGEsIHRoaXMuYm9uZGxlbmd0aCk7XHJcblxyXG4gICAgdGhpcy5zZXRNb2wobSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKGZvcm1hdCkge1xyXG4gICAgaWYgKGZvcm1hdCA9PSBcIm1vbFwiKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRNb2xmaWxlKCk7XHJcbiAgICBlbHNlIGlmIChmb3JtYXQgPT0gXCJtb2wzMDAwXCIpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldE1vbGZpbGUodHJ1ZSk7XHJcbiAgICBlbHNlIGlmIChmb3JtYXQgPT0gXCJyeG5cIilcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UnhuZmlsZSgpO1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0ID09IFwicnhuMzAwMFwiKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSeG5maWxlKG51bGwsIHRydWUpO1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0ID09IFwieG1sXCIpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldFhtbCgpO1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0ID09IFwiaGVsbVwiKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRIZWxtKCk7XHJcbiAgICBlbHNlIGlmIChmb3JtYXQgPT0gXCJ4aGVsbVwiKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRYSGVsbSgpO1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0ID09IFwic21pbGVzXCIpXHJcbiAgICAgIHJldHVybiB0aGlzLm0uZ2V0U21pbGVzKCk7XHJcbiAgICBlbHNlIGlmIChmb3JtYXQgPT0gXCJoZWxtXCIpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEhlbG0oKTtcclxuICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBcInhoZWxtXCIpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldFhIZWxtKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YShkYXRhLCBmb3JtYXQpIHtcclxuICAgIHRoaXMuc2V0RmlsZShkYXRhLCBmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBmaWxlIGRhdGFcclxuICAgKiBAZnVuY3Rpb24gc2V0RmlsZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gdGhlIGZpbGUgY29udGVudHNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXR5cGUgLSB0aGUgZmlsZSB0eXBlOiBtb2wsIHJ4biwgeG1sLiAgT3RoZXIgZmlsZSB0eXBlcyBjYW4gYmUgbG9hZGVkIHdpdGggSlNEcmF3LldlYlNlcnZpY2VzXHJcbiAgICogQHJldHVybnMgdGhlIE1vbCBvYmplY3QgbG9hZGVkXHJcbiAgICovXHJcbiAgc2V0RmlsZShkYXRhLCBmaWxldHlwZSkge1xyXG4gICAgbGV0IG0gPSBudWxsO1xyXG4gICAgaWYgKGZpbGV0eXBlID09IFwibW9sXCIpXHJcbiAgICAgIG0gPSB0aGlzLm0uc2V0TW9sZmlsZShkYXRhKTtcclxuICAgIGVsc2UgaWYgKGZpbGV0eXBlID09IFwicnhuXCIpXHJcbiAgICAgIG0gPSB0aGlzLm0uc2V0UnhuZmlsZShkYXRhKTtcclxuICAgIGVsc2UgaWYgKGZpbGV0eXBlID09IFwieG1sXCIpXHJcbiAgICAgIG0gPSB0aGlzLm0uc2V0WG1sKGRhdGEpO1xyXG4gICAgZWxzZSBpZiAoZmlsZXR5cGUgPT0gXCJoZWxtXCIpIHtcclxuICAgICAgdGhpcy5zZXRIZWxtKGRhdGEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKGZpbGV0eXBlID09IFwieGhlbG1cIikge1xyXG4gICAgICB0aGlzLnNldFhIZWxtKGRhdGEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKGZpbGV0eXBlID09IFwiamR4XCIpXHJcbiAgICAgIG0gPSB0aGlzLm0uc2V0SmR4KGRhdGEsIHRoaXMuYm9uZGxlbmd0aCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAobSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIodHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldE1vbChtKTtcclxuICAgIHJldHVybiB0aGlzLm07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGEgTW9sIG9iamVjdFxyXG4gICAqIEBmdW5jdGlvbiBzZXRNb2xcclxuICAgKiBAcGFyYW0ge01vbH0gbW9sIC0gdGhlIE1vbCBvYmplY3QgdG8gYmUgbG9hZGVkXHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIHNldE1vbChtb2wpIHtcclxuICAgIGlmIChtb2wgIT0gbnVsbCAmJiB0eXBlb2YgKG1vbCkgPT0gXCJvYmplY3RcIiAmJiBtb2wuVCA9PSBcIk1PTFwiKSB7XHJcbiAgICAgIHRoaXMubSA9IG1vbDtcclxuICAgICAgdGhpcy5tLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyA9IHRoaXMub3B0aW9ucy5zaG93aW1wbGljaXRoeWRyb2dlbnM7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlaHlkcm9nZW5zKVxyXG4gICAgICAgIHRoaXMubS5yZW1vdmVIeWRyb2dlbnMoKTtcclxuICAgICAgdGhpcy5tLmNhbGNIQ291bnQoKTtcclxuICAgICAgdGhpcy5tLnRvU2NyZWVuKHRoaXMuYm9uZGxlbmd0aCk7XHJcbiAgICAgIHRoaXMuZml0VG9XaW5kb3coKTtcclxuICAgICAgdGhpcy5fc2V0bW9sKHRoaXMubSk7XHJcbiAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGEgbW9sZmlsZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRNb2xGaWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vbGZpbGUgLSB0aGUgbW9sIGZpbGUgY29udGVudHNcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgc2V0TW9sZmlsZShtb2xmaWxlKSB7XHJcbiAgICB0aGlzLnNldEZpbGUobW9sZmlsZSwgXCJtb2xcIik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGEgcnhuZmlsZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRSeG5GaWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJ4bmZpbGUgLSB0aGUgcnhuIGZpbGUgY29udGVudHNcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgc2V0UnhuZmlsZShyeG5maWxlKSB7XHJcbiAgICB0aGlzLnNldEZpbGUocnhuZmlsZSwgXCJyeG5cIik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbW9sZmlsZSBkYXRhXHJcbiAgICogQGZ1bmN0aW9uIGdldE1vbGZpbGVcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHYzMDAwIC0gaW5kaWNhdGUgaWYgcmVuZGVyaW5nIGl0IGluIG1vbCB2MzAwMCBmb3JtYXRcclxuICAgKiBAcmV0dXJucyB0aGUgbW9sZmlsZSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRNb2xmaWxlKHYzMDAwPzogYm9vbGVhbiwgZXhjbHVkZUR1bW15Qm9uZHM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIHRoaXMubS5ib25kbGVuZ3RoID0gdGhpcy5ib25kbGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMubS5nZXRNb2xmaWxlKGZhbHNlLCB2MzAwMCwgZXhjbHVkZUR1bW15Qm9uZHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFNWRyBkYXRhXHJcbiAgICogQGZ1bmN0aW9uIGdldFN2Z1xyXG4gICAqIEByZXR1cm5zIHRoZSBzdmcgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0U3ZnKCkge1xyXG4gICAgY29uc3QgZyA9IGRvam94LmdmeDtcclxuICAgIGlmIChnLnJlbmRlcmVyICE9IFwic3ZnXCIpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IHIgPSB0aGlzLm0ucmVjdCgpO1xyXG4gICAgci5pbmZsYXRlKDIwLCAyMCk7XHJcbiAgICBjb25zdCBndSA9IGRvam94LmdmeC51dGlscztcclxuICAgIHRoaXMubS5vZmZzZXQoLXIubGVmdCwgLXIudG9wKTtcclxuICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICBsZXQgeG1sID0gZ3UuX2NsZWFuU3ZnKGd1Ll9pbm5lclhNTCh0aGlzLnN1cmZhY2UucmF3Tm9kZSkpO1xyXG4gICAgdGhpcy5tLm9mZnNldChyLmxlZnQsIHIudG9wKTtcclxuICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICB4bWwgPSB4bWwucmVwbGFjZSgvIHdpZHRoPVwiWzAtOV0rXCIvLCBcIiB3aWR0aD1cXFwiXCIgKyBNYXRoLnJvdW5kKHIud2lkdGgpICsgXCJcXFwiXCIpO1xyXG4gICAgeG1sID0geG1sLnJlcGxhY2UoLyBoZWlnaHQ9XCJbMC05XStcIi8sIFwiIGhlaWdodD1cXFwiXCIgKyBNYXRoLnJvdW5kKHIuaGVpZ2h0KSArIFwiXFxcIlwiKTtcclxuICAgIHJldHVybiB4bWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgSlNEcmF3IFhtbCBkYXRhXHJcbiAgICogQGZ1bmN0aW9uIGdldFhtbFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIHRoZSB2aWV3IHdpZHRoXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAtIHRoZSB2aWV3IGhlaWdodFxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gdmlld29ubHkgLSBpbmRpY2F0ZSBpZiBpdCBpcyB2aWV3b25seSBtb2RlXHJcbiAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRYbWwod2lkdGg/OiBudW1iZXIsIGhlaWdodD86IG51bWJlciwgdmlld29ubHk/OiBib29sZWFuLCB3aXRoc3ZnPzogYm9vbGVhbikge1xyXG4gICAgbGV0IHN2ZyA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICBzdmcgPSB3aXRoc3ZnID8gdGhpcy5nZXRTdmcoKSA6IG51bGw7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tLmJvbmRsZW5ndGggPSB0aGlzLmJvbmRsZW5ndGg7XHJcbiAgICByZXR1cm4gdGhpcy5tLmdldFhtbCh3aWR0aCA+IDAgPyB3aWR0aCA6IHRoaXMuZGltZW5zaW9uLngsIGhlaWdodCA+IDAgPyBoZWlnaHQgOiB0aGlzLmRpbWVuc2lvbi55LCB2aWV3b25seSwgc3ZnLCB0aGlzLmJvbmRsZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SHRtbCh3aWR0aCwgaGVpZ2h0LCB2aWV3b25seSwgd2l0aHN2Zykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0WG1sKHdpZHRoLCBoZWlnaHQsIHZpZXdvbmx5LCB3aXRoc3ZnKTtcclxuICB9XHJcblxyXG4gIGdldFNlcXVlbmNlKGhpZ2hsaWdodHNlbGVjdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVsbSA9PSBudWxsID8gbnVsbCA6IHRoaXMuaGVsbS5nZXRTZXF1ZW5jZShoaWdobGlnaHRzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGVsbShoaWdobGlnaHRzZWxlY3Rpb24/OiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWxtID09IG51bGwgPyBudWxsIDogdGhpcy5oZWxtLmdldEhlbG0oaGlnaGxpZ2h0c2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHNldEhlbG0ocykge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVsbSA9PSBudWxsID8gbnVsbCA6IHRoaXMuaGVsbS5zZXRIZWxtKHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0WEhlbG0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWxtID09IG51bGwgPyBudWxsIDogdGhpcy5oZWxtLmdldFhIZWxtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRYSGVsbShzKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWxtID09IG51bGwgPyBudWxsIDogdGhpcy5oZWxtLnNldFhIZWxtKHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IEpTRHJhdyBYbWwgZGF0YVxyXG4gICAqIEBmdW5jdGlvbiBzZXRYbWxcclxuICAgKiBAcGFyYW0ge3N0cmluZ30geG1sIC0gdGhlIEpTRHJhdyBYbWwgc3RyaW5nXHJcbiAgICogQHJldHVybnMgdGhlIE1vbCBvYmplY3QgbG9hZGVkXHJcbiAgICovXHJcbiAgc2V0WG1sKHhtbDogc3RyaW5nIHwgTm9kZSwgc2V0bW9kaWZpZWQ/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkb2MgPSB0eXBlb2YgKHhtbCkgPT0gXCJzdHJpbmdcIiA/IHNjaWwuVXRpbHMucGFyc2VYbWwoeG1sKSA6IHhtbDtcclxuICAgIGlmIChkb2MgPT0gbnVsbCkge1xyXG4gICAgICBpZiAodHlwZW9mICh4bWwpID09IFwic3RyaW5nXCIgJiYgeG1sLmluZGV4T2YoXCJNICBFTkRcIikgPiAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldE1vbGZpbGUoeG1sKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlbG0gIT0gbnVsbCAmJiB0aGlzLmhlbG0uaXNYSGVsbShkb2MpKSB7XHJcbiAgICAgIHRoaXMuc2V0WEhlbG0oZG9jKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIGxldCByb290ID0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgKHhtbCkgPT0gXCJzdHJpbmdcIilcclxuICAgICAgcm9vdCA9IGRvYyA9PSBudWxsID8gbnVsbCA6IChkb2MuZG9jdW1lbnRFbGVtZW50IHx8IGRvYy5maXJzdEVsZW1lbnRDaGlsZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJvb3QgPSB4bWw7XHJcbiAgICB0aGlzLm0uc2V0WG1sKHJvb3QpO1xyXG5cclxuICAgIHRoaXMubS5jYWxjSENvdW50KCk7XHJcbiAgICBpZiAodGhpcy5tLmJvbmRsZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubS5zY2FsZShKU0RyYXcyLkVkaXRvci5CT05ETEVOR1RIIC8gdGhpcy5tLmJvbmRsZW5ndGgpO1xyXG4gICAgICB0aGlzLnJlc2V0U2NhbGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubS50b1NjcmVlbih0aGlzLmJvbmRsZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maXRUb1dpbmRvdygpO1xyXG4gICAgdGhpcy5fc2V0bW9sKHRoaXMubSk7XHJcbiAgICB0aGlzLnJlZnJlc2goc2V0bW9kaWZpZWQgPT0gbnVsbCA/IHRydWUgOiBzZXRtb2RpZmllZCk7XHJcbiAgICByZXR1cm4gdGhpcy5tO1xyXG4gIH1cclxuXHJcbiAgc2V0SHRtbCh4bWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNldFhtbCh4bWwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFJ4bmZpbGVcclxuICAgKiBAZnVuY3Rpb24gZ2V0UnhuZmlsZVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gZ3JvdXBieXBsdXMgLSBpbmRpY2F0ZSBpZiBncm91cGluZyByZWFjdGFudHMvcHJvZHVjdHMgYmFzZWQgb24gZXhwbGljaXQgcGx1cyBzaWduc1xyXG4gICAqIEBwYXJhbSB7Ym9vbH0gdjMwMDAgLSBpbmRpY2F0ZSBpZiByZW5kZXJpbmcgaW4gdjMwMDAgZm9ybWF0XHJcbiAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRSeG5maWxlKGdyb3VwYnlwbHVzPzogYm9vbGVhbiwgdjMwMDA/OiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tLmdldFJ4bmZpbGUoZ3JvdXBieXBsdXMsIHYzMDAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBTTUlMRVNcclxuICAgKiBAZnVuY3Rpb24gZ2V0U21pbGVzXHJcbiAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRTbWlsZXMobm90dXNlZD86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLm0uZ2V0U21pbGVzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNb2xiYXNlNjQobW9sZmlsZSkge1xyXG4gICAgY29uc3QgcyA9IEpTRHJhdzIuQmFzZTY0LmRlY29kZShtb2xmaWxlKTtcclxuICAgIHRoaXMuc2V0TW9sZmlsZShzKTtcclxuICB9XHJcblxyXG4gIHNldFJ4bmJhc2U2NChyeG5maWxlKSB7XHJcbiAgICBjb25zdCBzID0gSlNEcmF3Mi5CYXNlNjQuZGVjb2RlKHJ4bmZpbGUpO1xyXG4gICAgdGhpcy5zZXRSeG5maWxlKHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9sYmFzZTY0KCkge1xyXG4gICAgY29uc3QgcyA9IHRoaXMubS5nZXRNb2xmaWxlKCk7XHJcbiAgICByZXR1cm4gSlNEcmF3Mi5CYXNlNjQuZW5jb2RlKHMpO1xyXG4gIH1cclxuXHJcbiAgaGFzSGVsbU5vZGVzKCkge1xyXG4gICAgaWYgKHRoaXMuaGVsbSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm0uYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHNjaWwuaGVsbS5pc0hlbG1Ob2RlKHRoaXMubS5hdG9tc1tpXSkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IEZvcm11bGFcclxuICAgKiBAZnVuY3Rpb24gZ2V0Rm9ybXVsYVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gaHRtbCAtIGluZGljYXRlIGlmIHJlbmRlcmluZyBGb3JtdWxhIGluIEhUTUwgZm9ybWF0XHJcbiAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRGb3JtdWxhKGh0bWwpIHtcclxuICAgIGlmICh0aGlzLmhhc0hlbG1Ob2RlcygpKVxyXG4gICAgICByZXR1cm4gdGhpcy5oZWxtLmdldE1GKGh0bWwpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5tLmdldEZvcm11bGEoaHRtbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbW9sZWN1bGFyIHdlaWdodFxyXG4gICAqIEBmdW5jdGlvbiBnZXRNb2xXZWlnaHRcclxuICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAqL1xyXG4gIGdldE1vbFdlaWdodCgpIHtcclxuICAgIGlmICh0aGlzLmhhc0hlbG1Ob2RlcygpKVxyXG4gICAgICByZXR1cm4gdGhpcy5oZWxtLmdldE1XKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLm0uZ2V0TW9sV2VpZ2h0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgRXh0aW5jdGlvbiBDb2VmZmljaWVudFxyXG4gICAqIEBmdW5jdGlvbiBnZXRFeHRpbmN0aW9uQ29lZmZpY2llbnRcclxuICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAqL1xyXG4gIGdldEV4dGluY3Rpb25Db2VmZmljaWVudCgpIHtcclxuICAgIGlmICh0aGlzLmhhc0hlbG1Ob2RlcygpKVxyXG4gICAgICByZXR1cm4gdGhpcy5oZWxtLmdldEV4dGluY3Rpb25Db2VmZmljaWVudCgpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBleGFjdCBtYXNzXHJcbiAgICogQGZ1bmN0aW9uIGdldEV4YWN0TWFzc1xyXG4gICAqIEByZXR1cm5zIGEgbnVtYmVyXHJcbiAgICovXHJcbiAgZ2V0RXhhY3RNYXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubS5nZXRFeGFjdE1hc3MoKTtcclxuICB9XHJcblxyXG4gIHNldEFueShzLCBmbXQpIHtcclxuICAgIGlmICghc2NpbC5VdGlscy5zZXJ2aWNlQXZhaWxhYmxlKCkgfHwgcyA9PSBudWxsIHx8IHMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICBjb25zdCB4aHJBcmdzID0ge1xyXG4gICAgICB1cmw6IHNjaWwuVXRpbHMuc2NyaXB0VXJsKCkgKyBcIlNlcnZpY2UuYXNweD9jbWQ9dG9tb2xmaWxlXCIsXHJcbiAgICAgIHBvc3REYXRhOiBcImlucHV0PVwiICsgZXNjYXBlKHMpICsgXCImZm10PVwiICsgZXNjYXBlKGZtdCksXHJcbiAgICAgIGhhbmRsZUFzOiBcImpzb25cIixcclxuICAgICAgbG9hZChyZXQpIHtcclxuICAgICAgICBpZiAocmV0LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIG1lLnB1c2h1bmRvKG1lLmNsb25lKCkpO1xyXG4gICAgICAgICAgbWUuc2V0TW9sZmlsZShyZXQucmVzdWx0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2NpbC5VdGlscy5hbGVydChyZXQuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3IocmV0KSB7XHJcbiAgICAgICAgc2NpbC5VdGlscy5hbGVydChyZXQubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGVmZXJyZWQgPSBkb2pvLnJhd1hoclBvc3QoeGhyQXJncyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIaWdobGlnaHQgYSBxdWVyeSBzdHJ1Y3R1cmVcclxuICAgKiBAZnVuY3Rpb24gaGlnaGxpZ2h0XHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgTW9sfSBxdWVyeSAtIHRoZSBxdWVyeSBzdHJ1Y3R1cmVcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0KHF1ZXJ5KSB7XHJcbiAgICBsZXQgcSA9IG51bGw7XHJcbiAgICBpZiAodHlwZW9mIHF1ZXJ5ID09IFwic3RyaW5nXCIpXHJcbiAgICAgIHEgPSBuZXcgSlNEcmF3Mi5Nb2wodGhpcy5vcHRpb25zLnNob3dpbXBsaWNpdGh5ZHJvZ2Vucykuc2V0TW9sZmlsZShxdWVyeSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHEgPSBxdWVyeS5UID09IFwiTU9MXCIgPyBxdWVyeSA6IHF1ZXJ5Lm07XHJcbiAgICBpZiAocSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcztcclxuICAgIGNvbnN0IG1hcCA9IHEuYWFtYXAodGFyZ2V0Lm0sIGZhbHNlLCB0cnVlKTtcclxuICAgIHRhcmdldC5yZWRyYXcoKTtcclxuICAgIHJldHVybiBtYXAgIT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm0gYSBzdWItc3RydWN0dXJlIHNlYXJjaCB1c2luZyB0aGlzIG1vbGVjdWxlIGFzIHRoZSBxdWVyeVxyXG4gICAqIEBmdW5jdGlvbiBoaWdobGlnaHRcclxuICAgKiBAcGFyYW0ge0VkaXRvcn0gdGFyZ2V0IC0gdGhlIHRhcmdldCBzdHJ1Y3R1cmVcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgc3NzKHRhcmdldCkge1xyXG4gICAgcmV0dXJuIHRhcmdldC5oaWdobGlnaHQodGhpcyk7XHJcbiAgfVxyXG5cclxuICByZXMocykge1xyXG4gICAgcmV0dXJuIEpTRHJhdzIuTGFuZ3VhZ2UucmVzKHMpO1xyXG4gIH1cclxuXHJcbiAgaXNTa2luVzgoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNraW4gPT0gXCJ3OFwiIHx8IHRoaXMub3B0aW9ucy5za2luID09IFwic2lcIjtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkKHVybCwgZmlsZXR5cGUpIHtcclxuICAgIGNvbnN0IG1lID0gdGhpcztcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICBpZiAoZGF0YS5yZXQgIT0gbnVsbClcclxuICAgICAgICBtZS5zZXRGaWxlKGRhdGEucmV0Lm1vbGZpbGUsIGZpbGV0eXBlKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG1lLnNldEZpbGUoZGF0YSwgZmlsZXR5cGUpO1xyXG4gICAgfTtcclxuICAgIHNjaWwuVXRpbHMuZG93bmxvYWQodXJsLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZSB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgaW50byBhIGNvb2tpZSwgc28gaXQgY2FuIGJlIHJlbG9hZGVkIG5leHQgdGltZVxyXG4gICAqIEBmdW5jdGlvbiB3cml0ZUNvb2tpZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gY29va2llIG5hbWVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZGF5cyAtIGNvb2tpZSB2YWxpZCBkYXlzXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHdyaXRlQ29va2llKG5hbWUsIGRheXMpIHtcclxuICAgIGlmIChuYW1lID09IG51bGwgfHwgbmFtZS5sZW5ndGggPT0gMClcclxuICAgICAgbmFtZSA9IFwiX19qc2RyYXdfY29va2llX3N0cnVjdHVyZVwiO1xyXG4gICAgaWYgKCEoZGF5cyA+IDApKVxyXG4gICAgICBkYXlzID0gMzA7XHJcbiAgICBjb25zdCBodG1sID0gdGhpcy5nZXRYbWwoKTtcclxuICAgIHNjaWwuVXRpbHMuY3JlYXRlQ29va2llKG5hbWUsIGh0bWwsIGRheXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhZCB0aGUgc3RydWN0dXJlIGZyb20gYSBzYXZlZCBjb29raWVcclxuICAgKiBAZnVuY3Rpb24gcmVhZENvb2tpZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gY29va2llIG5hbWVcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgcmVhZENvb2tpZShuYW1lKSB7XHJcbiAgICBpZiAobmFtZSA9PSBudWxsIHx8IG5hbWUubGVuZ3RoID09IDApXHJcbiAgICAgIG5hbWUgPSBcIl9fanNkcmF3X2Nvb2tpZV9zdHJ1Y3R1cmVcIjtcclxuICAgIGNvbnN0IGh0bWwgPSBzY2lsLlV0aWxzLnJlYWRDb29raWUobmFtZSk7XHJcbiAgICB0aGlzLnNldFhtbChodG1sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3RvcnkgdGhlIGVkaXRvclxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5kaXYgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJPYmplY3QgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJCdXR0b24gPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0ZWRpdG9yID0ge2lucHV0OiBudWxsLCB0ZXh0OiBudWxsLCBhdG9tOiBudWxsfTtcclxuICAgIHRoaXMubWFpbnRhYmxlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnRvb2xiYXIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnRvb2xiYXIuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLnRvb2xiYXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3VyZmFjZSAhPSBudWxsKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5zdXJmYWNlLmRlc3Ryb3koKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3VyZmFjZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29ubmVjdEhhbmRsZXJzLmxlbmd0aDsgKytpKVxyXG4gICAgICBkb2pvLmRpc2Nvbm5lY3QodGhpcy5jb25uZWN0SGFuZGxlcnNbaV0pO1xyXG4gICAgdGhpcy5jb25uZWN0SGFuZGxlcnMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgYm9keU1vdXNlRG93bihlKSB7XHJcbiAgICBjb25zdCBzcmMgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy50ZXh0ZWRpdG9yLmVkICE9IG51bGwgJiYgdGhpcy50ZXh0ZWRpdG9yLmVkLmlzVmlzaWJsZSgpICYmICEodGhpcy50ZXh0ZWRpdG9yLmVkLmlzQ2hpbGRPZihzcmMpIHx8IEpTRHJhdzIuU3ltYm9sICE9IG51bGwgJiYgSlNEcmF3Mi5TeW1ib2wuaXNGcm9tKHNyYykpKSB7XHJcbiAgICAgIHRoaXMuaGlkZVRleHRFZGl0b3IoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRleHRlZGl0b3IuZWQgIT0gbnVsbCAmJiB0aGlzLnRleHRlZGl0b3IuZWQuaXNDaGlsZE9mKHNyYykgfHwgdGhpcy5jb250ZXh0bWVudSAhPSBudWxsICYmIHRoaXMuY29udGV4dG1lbnUuaXNGcm9tKHNyYykpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkbGcgPSBzY2lsLkRpYWxvZy5nZXREaWFsb2coc3JjKTtcclxuICAgIGlmIChkbGcgIT0gbnVsbCAmJiBkbGcub3duZXIgPT0gdGhpcylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLl90ZXN0ZGVhY3RpdmF0aW9uICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuX3Rlc3RkZWFjdGl2YXRpb24oZSwgdGhpcykpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGYgPSBzY2lsLlV0aWxzLmhhc0Fuc2VzdG9yKHNyYywgdGhpcy5zdXJmYWNlLmNoaWxkcmVuWzBdLnJhd05vZGUpIHx8IHRoaXMuaXNGcm9tU3ZnR3JvdXAoc3JjKSB8fCBzY2lsLlV0aWxzLmhhc0Fuc2VzdG9yKHNyYywgdGhpcy5tYWludGFibGUpO1xyXG4gICAgLy9jb25zdCBmID0gc3JjLl9fZ2Z4T2JqZWN0X18gIT0gbnVsbCB8fCBzY2lsLlV0aWxzLmhhc0Fuc2VzdG9yKHNyYywgdGhpcy5tYWludGFibGUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZhdGVkKSB7XHJcbiAgICAgIGlmICghZilcclxuICAgICAgICB0aGlzLmFjdGl2YXRlKGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChmKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0Zyb21TdmdHcm91cChzcmMpIHtcclxuICAgIGlmIChkb2pveC5nZngucmVuZGVyZXIgIT0gXCJzdmdcIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZyA9IHNjaWwuVXRpbHMuZ2V0UGFyZW50KHNyYywgXCJnXCIpO1xyXG4gICAgcmV0dXJuIGcgIT0gbnVsbCAmJiBnLmdldEF0dHJpYnV0ZShcIl9fc3VyZmFjZV9wYXJlbnRpZFwiKSA9PSB0aGlzLmlkO1xyXG4gIH1cclxuXHJcbiAgYm9keVRvdWNoU3RhcnQoZSkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZhdGVkICYmIGUudG91Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHRlID0gZS50b3VjaGVzWzBdO1xyXG4gICAgICBjb25zdCBzcmMgPSB0ZS50YXJnZXQgfHwgdGUuc3JjRWxlbWVudDtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmhhc0Fuc2VzdG9yKHNyYywgdGhpcy5tYWludGFibGUpKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ib2R5TW91c2VEb3duKGUpO1xyXG4gIH1cclxuXHJcbi8vICAgIGJvZHlDbGljayAoZSkge1xyXG4vLyAgICB9LFxyXG5cclxuICB0b3VjaENsaWNrKGUpIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmF0ZWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZSh0cnVlKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvdWNoOiBhbnkgPSB7XHJcbiAgICByZXNldDogZnVuY3Rpb24oanNkOiBhbnkpIHtcclxuICAgICAgaWYgKHRoaXMuY2xvbmVkICE9IG51bGwpIHtcclxuICAgICAgICBqc2QucHVzaHVuZG8odGhpcy5jbG9uZWQpO1xyXG4gICAgICAgIGpzZC5zZXRNb2RpZmllZCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNlbnRlciA9IG51bGw7XHJcbiAgICAgIHRoaXMuc3RhcnQxID0gbnVsbDtcclxuICAgICAgdGhpcy5zdGFydDIgPSBudWxsO1xyXG4gICAgICB0aGlzLmVuZDEgPSBudWxsO1xyXG4gICAgICB0aGlzLmVuZDIgPSBudWxsO1xyXG4gICAgICB0aGlzLmdlc3R1cmUgPSBudWxsO1xyXG4gICAgICB0aGlzLmRlZyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2NhbGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmNsb25lZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcmVzZXRHZXN0dXJlKCkge1xyXG4gICAgdGhpcy50b3VjaC5yZXNldCh0aGlzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaG9sZGluZyA9IG5ldyBjbGFzcyB7XHJcbiAgICBkZWxheTogbnVtYmVyID0gMTAwMDtcclxuICAgIHRvcjogbnVtYmVyID0gMjtcclxuICAgIGU6IGFueSA9IG51bGw7XHJcbiAgICB0bTogYW55ID0gbnVsbDtcclxuICAgIHRpbWVyOiBhbnkgPSBudWxsO1xyXG4gICAgJyc7XHJcbiAgICBqc2Q6IEVkaXRvcjxUQmlvPiA9IG51bGw7XHJcblxyXG4gICAgc3RhcnQoZSwganNkKSB7XHJcbiAgICAgIGlmICghc2NpbC5VdGlscy5pc1RvdWNoICYmICF3aW5kb3cubmF2aWdhdG9yLm1zUG9pbnRlckVuYWJsZWQpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB0aGlzLmVuZCgpO1xyXG4gICAgICB0aGlzLmUgPSB7Y2xpZW50WDogZS5jbGllbnRYLCBjbGllbnRZOiBlLmNsaWVudFl9O1xyXG4gICAgICB0aGlzLnRtID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuanNkID0ganNkO1xyXG4gICAgICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBtZS50aW1lb3V0KCk7IH0sIHRoaXMuZGVsYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuZCgpIHtcclxuICAgICAgaWYgKHRoaXMudGltZXIgPT0gbnVsbClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIHRoaXMuZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudG0gPSBudWxsO1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRpbWVvdXQoKSB7XHJcbiAgICAgIGlmICh0aGlzLmUgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuanNkLnN0YXJ0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmpzZC5zaG93Q29udGV4dE1lbnUodGhpcy5lLCB0aGlzLmpzZC5vcHRpb25zLnZpZXdvbmx5KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vdmUoZSkge1xyXG4gICAgICBpZiAodGhpcy5lICE9IG51bGwgJiYgKE1hdGguYWJzKGUuY2xpZW50WCAtIHRoaXMuZS5jbGllbnRYKSA+IHRoaXMudG9yIHx8IE1hdGguYWJzKGUuY2xpZW50WSAtIHRoaXMuZS5jbGllbnRZKSA+IHRoaXMudG9yKSlcclxuICAgICAgICB0aGlzLmVuZCgpO1xyXG4gICAgfVxyXG4gIH0oKTtcclxuXHJcbiAgdG91Y2hTdGFydChlKSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZhdGVkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKEpTRHJhdzIuTWVudS5pc09wZW4oKSkge1xyXG4gICAgICBKU0RyYXcyLk1lbnUuY2xvc2UoKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICB0aGlzLm1vdXNlZG93bihlLnRvdWNoZXNbMF0pO1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgIHRoaXMubGFzdG1vdmUgPSBudWxsO1xyXG4gICAgICB0aGlzLnJlc2V0R2VzdHVyZSgpO1xyXG5cclxuICAgICAgdGhpcy50b3VjaC5zdGFydDEgPSB0aGlzLmV2ZW50UG9pbnQoZS50b3VjaGVzWzBdKTtcclxuICAgICAgdGhpcy50b3VjaC5zdGFydDIgPSB0aGlzLmV2ZW50UG9pbnQoZS50b3VjaGVzWzFdKTtcclxuICAgICAgdGhpcy50b3VjaC5jZW50ZXIgPSBuZXcgSlNEcmF3Mi5Qb2ludCgodGhpcy50b3VjaC5zdGFydDEueCArIHRoaXMudG91Y2guc3RhcnQyLngpIC8gMiwgKHRoaXMudG91Y2guc3RhcnQxLnkgKyB0aGlzLnRvdWNoLnN0YXJ0Mi55KSAvIDIpO1xyXG5cclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b3VjaE1vdmUoZSkge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09IDEpIHtcclxuICAgICAgdGhpcy5tb3VzZW1vdmUoZS50b3VjaGVzWzBdKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlc2V0R2VzdHVyZSgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ob2xkaW5nLmVuZCgpO1xyXG4gICAgaWYgKHRoaXMuaW5rICE9IG51bGwpXHJcbiAgICAgIHRoaXMuaW5rLmNhbmNlbCgpO1xyXG5cclxuICAgIHRoaXMuc3RhcnQgPSBudWxsO1xyXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT0gMikge1xyXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZXZlbnRQb2ludChlLnRvdWNoZXNbMF0pO1xyXG4gICAgICBjb25zdCBwMiA9IHRoaXMuZXZlbnRQb2ludChlLnRvdWNoZXNbMV0pO1xyXG4gICAgICBpZiAodGhpcy50b3VjaC5zdGFydDEgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudG91Y2guc3RhcnQxID0gcDE7XHJcbiAgICAgICAgdGhpcy50b3VjaC5zdGFydDIgPSBwMjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChwMS5lcXVhbHNUbyh0aGlzLnRvdWNoLmVuZDEpICYmIHAyLmVxdWFsc1RvKHRoaXMudG91Y2guZW5kMikpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB0aGlzLnRvdWNoLmVuZDEgPSBwMTtcclxuICAgICAgdGhpcy50b3VjaC5lbmQyID0gcDI7XHJcblxyXG4gICAgICBpZiAodGhpcy50b3VjaC5nZXN0dXJlID09IG51bGwgJiYgdGhpcy50b3VjaC5zdGFydDEgIT0gbnVsbCAmJiB0aGlzLnRvdWNoLnN0YXJ0MiAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZDEgPSB0aGlzLnRvdWNoLmVuZDEuZGlzdFRvKHRoaXMudG91Y2guc3RhcnQxKTtcclxuICAgICAgICBjb25zdCBkMiA9IHRoaXMudG91Y2guZW5kMi5kaXN0VG8odGhpcy50b3VjaC5zdGFydDIpO1xyXG4gICAgICAgIGlmIChkMSA+IDI1IHx8IGQyID4gMjUpIHtcclxuICAgICAgICAgIGNvbnN0IGExID0gdGhpcy50b3VjaC5lbmQxLmFuZ2xlVG8odGhpcy50b3VjaC5zdGFydDEpO1xyXG4gICAgICAgICAgY29uc3QgYTIgPSB0aGlzLnRvdWNoLmVuZDIuYW5nbGVUbyh0aGlzLnRvdWNoLnN0YXJ0Mik7XHJcbiAgICAgICAgICBjb25zdCBkYSA9IE1hdGguYWJzKGExIC0gYTIpO1xyXG4gICAgICAgICAgaWYgKGQxID4gOCAmJiBkMiA+IDggJiYgKGRhIDwgMzAgfHwgTWF0aC5hYnMoZGEgLSAzNjApIDwgMzApKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2guZ2VzdHVyZSA9IFwibW92aW5nXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBhMyA9IGQxID4gMjUgPyB0aGlzLnRvdWNoLnN0YXJ0MS5hbmdsZUFzT3JpZ2luKHRoaXMudG91Y2guZW5kMSwgdGhpcy50b3VjaC5zdGFydDIpIDogdGhpcy50b3VjaC5zdGFydDIuYW5nbGVBc09yaWdpbih0aGlzLnRvdWNoLmVuZDIsIHRoaXMudG91Y2guc3RhcnQxKTtcclxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGEzIC0gMTgwKSA8IDQ1IHx8IE1hdGguYWJzKGEzIC0gMzYwKSA8IDQ1KVxyXG4gICAgICAgICAgICAgIHRoaXMudG91Y2guZ2VzdHVyZSA9IFwiem9vbWluZ1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy50b3VjaC5nZXN0dXJlID0gXCJyb3RhdGluZ1wiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9kb2pvLmJ5SWQoXCJUZXh0YXJlYTFcIikudmFsdWUgKz0gXCJkMT1cIiArIGQxICsgXCIsIGQyPVwiICsgZDIgKyBcIiwgXCIgKyBhMSArIFwiLCBcIiArIGEyICsgXCIsIFwiICsgYTMgKyBcIlxcclxcblwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudG91Y2guZ2VzdHVyZSAhPSBudWxsICYmICghdGhpcy50b3VjaC5lbmQxLmVxdWFsc1RvKHRoaXMudG91Y2guc3RhcnQxKSB8fCAhdGhpcy50b3VjaC5lbmQyLmVxdWFsc1RvKHRoaXMudG91Y2guc3RhcnQyKSkpIHtcclxuICAgICAgICBpZiAodGhpcy50b3VjaC5nZXN0dXJlID09IFwiem9vbWluZ1wiKSB7XHJcbiAgICAgICAgICBjb25zdCBkeCA9IHRoaXMudG91Y2guZW5kMS54IC0gdGhpcy50b3VjaC5zdGFydDEueDtcclxuICAgICAgICAgIGNvbnN0IGR5ID0gdGhpcy50b3VjaC5lbmQyLnkgLSB0aGlzLnRvdWNoLnN0YXJ0MS55O1xyXG4gICAgICAgICAgaWYgKE1hdGguYWJzKGR4KSA+PSB0aGlzLm1vdmluZ3Jlc29sdXRpb24gfHwgTWF0aC5hYnMoZHkpID49IHRoaXMubW92aW5ncmVzb2x1dGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoLnNjYWxlID0gdGhpcy50b3VjaC5lbmQxLmRpc3RUbyh0aGlzLnRvdWNoLmVuZDIpIC8gdGhpcy50b3VjaC5zdGFydDEuZGlzdFRvKHRoaXMudG91Y2guc3RhcnQyKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudG91Y2guY2xvbmVkID09IG51bGwpXHJcbiAgICAgICAgICAgICAgdGhpcy50b3VjaC5jbG9uZWQgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2NhbGUodGhpcy50b3VjaC5zY2FsZSwgdGhpcy50b3VjaC5jZW50ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoLnN0YXJ0MSA9IHRoaXMudG91Y2guZW5kMTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaC5zdGFydDIgPSB0aGlzLnRvdWNoLmVuZDI7XHJcbiAgICAgICAgICAgIHRoaXMucmVkcmF3KCk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5zdXJmYWNlLnJvb3Rncm91cC5zZXRUcmFuc2Zvcm0oW2Rvam94LmdmeC5tYXRyaXguc2NhbGVBdCh0aGlzLnRvdWNoLnNjYWxlLCB0aGlzLnRvdWNoLnNjYWxlLCB0aGlzLnRvdWNoLmNlbnRlci54LCB0aGlzLnRvdWNoLmNlbnRlci55KV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50b3VjaC5nZXN0dXJlID09IFwibW92aW5nXCIpIHtcclxuICAgICAgICAgIGNvbnN0IGR4ID0gdGhpcy50b3VjaC5lbmQxLnggLSB0aGlzLnRvdWNoLnN0YXJ0MS54O1xyXG4gICAgICAgICAgY29uc3QgZHkgPSB0aGlzLnRvdWNoLmVuZDEueSAtIHRoaXMudG91Y2guc3RhcnQxLnk7XHJcbiAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID49IHRoaXMubW92aW5ncmVzb2x1dGlvbiB8fCBNYXRoLmFicyhkeSkgPj0gdGhpcy5tb3ZpbmdyZXNvbHV0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRvdWNoLmNsb25lZCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgIHRoaXMudG91Y2guY2xvbmVkID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm0ub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2guc3RhcnQxID0gdGhpcy50b3VjaC5lbmQxO1xyXG4gICAgICAgICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgICAgICAgICAvL3RoaXMuc3VyZmFjZS5yb290Z3JvdXAuc2V0VHJhbnNmb3JtKFtkb2pveC5nZngubWF0cml4LnRyYW5zbGF0ZSh0aGlzLnRvdWNoLmVuZDEueCAtIHRoaXMudG91Y2guc3RhcnQxLngsIHRoaXMudG91Y2guZW5kMS55IC0gdGhpcy50b3VjaC5zdGFydDEueSldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudG91Y2guZ2VzdHVyZSA9PSBcInJvdGF0aW5nXCIpIHtcclxuICAgICAgICAgIGxldCBhMSA9IHRoaXMudG91Y2guc3RhcnQyLmFuZ2xlQXNPcmlnaW4odGhpcy50b3VjaC5zdGFydDEsIHRoaXMudG91Y2guZW5kMSk7XHJcbiAgICAgICAgICBsZXQgYTIgPSB0aGlzLnRvdWNoLnN0YXJ0MS5hbmdsZUFzT3JpZ2luKHRoaXMudG91Y2guc3RhcnQyLCB0aGlzLnRvdWNoLmVuZDIpO1xyXG4gICAgICAgICAgaWYgKGExID4gMTgwKVxyXG4gICAgICAgICAgICBhMSAtPSAzNjA7XHJcbiAgICAgICAgICBpZiAoYTIgPiAxODApXHJcbiAgICAgICAgICAgIGEyIC09IDM2MDtcclxuICAgICAgICAgIGlmICgoTWF0aC5hYnMoYTEpID49IDEgfHwgTWF0aC5hYnMoYTIpID49IDEpICYmIE1hdGguYWJzKGExKSA8IDMwICYmIE1hdGguYWJzKGEyKSA8IDMwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHMgPSBNYXRoLmFicyhhMikgLyAoTWF0aC5hYnMoYTEpICsgTWF0aC5hYnMoYTIpKTtcclxuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMudG91Y2guc3RhcnQxLnggKyAodGhpcy50b3VjaC5zdGFydDIueCAtIHRoaXMudG91Y2guc3RhcnQxLngpICogcztcclxuICAgICAgICAgICAgY29uc3QgeSA9IHRoaXMudG91Y2guc3RhcnQxLnkgKyAodGhpcy50b3VjaC5zdGFydDIueSAtIHRoaXMudG91Y2guc3RhcnQxLnkpICogcztcclxuICAgICAgICAgICAgdGhpcy5tLnJvdGF0ZShuZXcgSlNEcmF3Mi5Qb2ludCh4LCB5KSwgTWF0aC5hYnMoYTEpID4gTWF0aC5hYnMoYTIpID8gYTEgOiBhMik7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2guc3RhcnQxID0gdGhpcy50b3VjaC5lbmQxO1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoLnN0YXJ0MiA9IHRoaXMudG91Y2guZW5kMjtcclxuICAgICAgICAgICAgdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNldEdlc3R1cmUoKTtcclxuICB9XHJcblxyXG4gIHRvdWNoRW5kKGUpIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmF0ZWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnJlc2V0R2VzdHVyZSgpO1xyXG4gICAgdGhpcy5tb3VzZXVwKGUpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgdGhlIGVkaXRvciBhbmQgc2V0IGZvY3VzXHJcbiAgICogQGZ1bmN0aW9uIGFjdGl2YXRlXHJcbiAgICogQHBhcmFtIHtib29sfSBmIC0gaW5kaWNhdGUgc2V0dGluZyBmb2N1cyBvciBuYW1lXHJcbiAgICogQHBhcmFtIHtib29sfSBzaG93IC0gaW5kaWNhdGUgaWYgcmVkcmF3aW5nIHRoZSBzdHJ1Y3R1cmVcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgYWN0aXZhdGUoZjogYm9vbGVhbiwgc2hvdz86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZCA9PSBmIHx8IHRoaXMubWFpbnRhYmxlID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjdGl2YXRlZCA9IGY7XHJcbiAgICBpZiAoZikge1xyXG4gICAgICBpZiAoSlNEcmF3Mi5fX2N1cnJlbnRhY3RpdmVkICE9IHRoaXMgJiYgSlNEcmF3Mi5fX2N1cnJlbnRhY3RpdmVkICE9IG51bGwpXHJcbiAgICAgICAgSlNEcmF3Mi5fX2N1cnJlbnRhY3RpdmVkLmFjdGl2YXRlKGZhbHNlKTtcclxuICAgICAgSlNEcmF3Mi5fX2N1cnJlbnRhY3RpdmVkID0gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkKSB7XHJcbiAgICAgIGlmIChmKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgIT0gXCJoaWRkZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5fbXNDb250ZW50Wm9vbWluZyA9IGRvY3VtZW50LmJvZHkuc3R5bGUubXNDb250ZW50Wm9vbWluZztcclxuICAgICAgICAgIHRoaXMuX292ZXJmbG93ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztcclxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubXNDb250ZW50Wm9vbWluZyA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ICE9IHRoaXMuX292ZXJmbG93KSB7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1zQ29udGVudFpvb21pbmcgPSB0aGlzLl9tc0NvbnRlbnRab29taW5nO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IHRoaXMuX292ZXJmbG93O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghZiAmJiB0aGlzLmNvbnRleHRtZW51ICE9IG51bGwpXHJcbiAgICAgIHRoaXMuY29udGV4dG1lbnUuaGlkZSgpO1xyXG5cclxuICAgIGlmIChzaG93ID09IGZhbHNlKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5mb2N1c2JveCAhPSBmYWxzZSlcclxuICAgICAgdGhpcy5tYWludGFibGUuc3R5bGUuYm9yZGVyQ29sb3IgPSBmID8gKHRoaXMub3B0aW9ucy5mb2N1c2NvbG9yID09IG51bGwgPyBcIiM1NTU1ZmZcIiA6IHRoaXMub3B0aW9ucy5mb2N1c2NvbG9yKSA6IFwiI2NjY2NjY1wiO1xyXG4gICAgaWYgKCFmICYmIHRoaXMuY3VyT2JqZWN0ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5jdXJPYmplY3QgPSBudWxsO1xyXG4gICAgICB0aGlzLnJlZHJhdygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25mb2N1cyAhPSBudWxsKVxyXG4gICAgICB0aGlzLm9wdGlvbnMub25mb2N1cyhmKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3I8VEJpbyA9IGFueT4gZXh0ZW5kcyBFZGl0b3JJbnQ8VEJpbz4ge1xyXG4gIHN0YXRpYyBfaWQ6IG51bWJlcjtcclxuICBzdGF0aWMgX2FsbGl0ZW1zOiBhbnk7XHJcblxyXG4gIHN0YXRpYyBfX3hjb2RlOiBudW1iZXIgPSA5MTtcclxuICBzdGF0aWMgdW5kb0dlc3R1cmVUaW1lOiBudW1iZXIgPSAzMDA7XHJcbiAgc3RhdGljIGRibGNsaWNrZGVsYXk6IG51bWJlciA9IDMwMDtcclxuICBzdGF0aWMgQk9ORExFTkdUSDogbnVtYmVyID0gMzAuMDtcclxuICBzdGF0aWMgQU5HTEVTVE9QOiBudW1iZXIgPSAzMC4wO1xyXG4gIHN0YXRpYyBMSU5FV0lEVEg6IG51bWJlciA9IDIuMDtcclxuICBzdGF0aWMgVE9SOiBudW1iZXIgPSAxMC4wO1xyXG4gIHN0YXRpYyBGT05UU0laRTogbnVtYmVyID0gMTQuMDtcclxuXHJcbiAgc3RhdGljIENPTE9SQ1VSUkVOVDogQ29sb3JBcnJheTtcclxuICBzdGF0aWMgQ09MT1JTRUxFQ1RFRDogQ29sb3JBcnJheTtcclxuICBzdGF0aWMgcG9wdXBkbGc6IGFueTtcclxuICBzdGF0aWMgb3BlbmZpbGVkbGc6IElEaWFsb2c7XHJcbiAgc3RhdGljIHNhdmVmaWxlZGxnOiBJRGlhbG9nO1xyXG4gIHN0YXRpYyBwZXJpb2RpY3RhYmxlOiBJRGlhbG9nO1xyXG4gIHN0YXRpYyBhYm91dDogSURpYWxvZztcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBFZGl0b3Igb2JqZWN0IGJ5IGl0cyBJRFxyXG4gICAqIEBmdW5jdGlvbiB7c3RhdGljfSBnZXRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGUgRWRpdG9yIElEXHJcbiAgICogQHJldHVybnMgdGhlIEVkaXRvciBvYmplY3RcclxuICAgKi9cclxuICBzdGF0aWMgZ2V0KGlkKSB7XHJcbiAgICBpZiAoSlNEcmF3Mi5FZGl0b3IuX2FsbGl0ZW1zID09IG51bGwpXHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLl9hbGxpdGVtcyA9IHt9O1xyXG4gICAgcmV0dXJuIGlkID09IG51bGwgPyBudWxsIDogSlNEcmF3Mi5FZGl0b3IuX2FsbGl0ZW1zW2lkXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRDbGlwYm9hcmQoKSB7XHJcbiAgICBsZXQgZGF0YSA9IHNjaWwuVXRpbHMucmVhZENvb2tpZShcIl9fanNkcmF3Y2xpcGJvYXJkXCIpO1xyXG4gICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IFwiXCIpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGRhdGEgPSBKU0RyYXcyLkJhc2U2NC5kZWNvZGUoZGF0YSk7XHJcbiAgICBjb25zdCBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICBpZiAobS5zZXRYbWwoZGF0YSkgPT0gbnVsbCB8fCBtLmlzRW1wdHkoKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy9zY2lsLlV0aWxzLmNyZWF0ZUNvb2tpZShcIl9fanNkcmF3Y2xpcGJvYXJkXCIsIFwiXCIpO1xyXG4gICAgcmV0dXJuIG07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0Q2xpcGJvYXJkKG0sIGJvbmRsZW5ndGgpIHtcclxuICAgIGlmIChtICE9IG51bGwgJiYgIW0uaXNFbXB0eSgpKSB7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlQ29va2llKFwiX19qc2RyYXdjbGlwYm9hcmRcIiwgSlNEcmF3Mi5CYXNlNjQuZW5jb2RlKG0uZ2V0WG1sKG51bGwsIG51bGwsIG51bGwsIG51bGwsIGJvbmRsZW5ndGgpKSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNjaWwuVXRpbHMuYWxlcnQoXCJOb3RoaW5nIHBsYWNlZCBvbiBjbGlwYm9hcmQuXCIpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBKU0RyYXcgQWJvdXQgYm94XHJcbiAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHNob3dBYm91dFxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBzdGF0aWMgc2hvd0Fib3V0KCkge1xyXG4gICAgaWYgKEpTRHJhdzIuRWRpdG9yLmFib3V0ID09IG51bGwpIHtcclxuICAgICAgY29uc3QgZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KG51bGwsIFwiZGl2XCIsIG51bGwsIHt3aWR0aDogXCI0MzBweFwiLCBjb2xvcjogXCJibGFja1wifSk7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChkaXYsIFwiaW1nXCIsIG51bGwsIG51bGwsIHtzcmM6IHNjaWwuVXRpbHMuaW1nU3JjKFwiaW1nL2pzZHJhdzIuanBnXCIpfSk7XHJcblxyXG4gICAgICBsZXQgbGljO1xyXG4gICAgICBpZiAoSlNEcmF3Mi5TZWN1cml0eS5rRWRpdGlvbiA9PSBcIkxpdGVcIikge1xyXG4gICAgICAgIGxpYyA9IFwiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+SlNEcmF3IExpdGUgZm9yIEhFTE08L3NwYW4+XCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZXhwID0gSlNEcmF3Mi5TZWN1cml0eS5saWMgPT0gbnVsbCA/IG51bGwgOiBKU0RyYXcyLlNlY3VyaXR5LmxpYy5leHBpcmF0aW9uO1xyXG4gICAgICAgIGxpYyA9IEpTRHJhdzIuU2VjdXJpdHkuZXJyb3IgIT0gbnVsbCA/IEpTRHJhdzIuU2VjdXJpdHkuZXJyb3IgOiBcIkxpY2Vuc2VkIHRvIDxiPlwiICsgSlNEcmF3Mi5TZWN1cml0eS5saWMubGljZW5zb3IgKyBcIjwvYj4sIGV4cGlyZXMgb24gXCIgKyBleHAuZ2V0RnVsbFllYXIoKSArIFwiLVwiICsgKGV4cC5nZXRNb250aCgpICsgMSkgKyBcIi1cIiArIGV4cC5nZXREYXRlKCk7XHJcbiAgICAgICAgaWYgKCFKU0RyYXcyLlNlY3VyaXR5LnZhbGlkKVxyXG4gICAgICAgICAgbGljID0gXCI8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5cIiArIGxpYyArIFwiPC9zcGFuPlwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2LCBcImRpdlwiLCBsaWMsIHt0ZXh0QWxpZ246IFwicmlnaHRcIn0pO1xyXG4gICAgICBjb25zdCB0Ym9keSA9IHNjaWwuVXRpbHMuY3JlYXRlVGFibGUoZGl2LCBudWxsLCBudWxsLCB7Ym9yZGVyVG9wOiBcInNvbGlkIDFweCBncmF5XCIsIHdpZHRoOiBcIjEwMCVcIn0pO1xyXG4gICAgICBjb25zdCB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgXCJ0clwiKTtcclxuICAgICAgc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRyLCBcInRkXCIsIEpTRHJhdzIudmVyc2lvbik7XHJcbiAgICAgIHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgXCJ0ZFwiLCBcIjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwOi8vd3d3LmpzZHJhdy5jb20nPmh0dHA6Ly93d3cuanNkcmF3LmNvbTwvYT5cIiwge3RleHRBbGlnbjogXCJyaWdodFwifSk7XHJcbiAgICAgIGNvbnN0IGJ0biA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudChzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQoZGl2LCBcImRpdlwiLCBudWxsLCB7dGV4dEFsaWduOiBcImNlbnRlclwifSksIFwiYnV0dG9uXCIsIFwiT0tcIiwge3dpZHRoOiBzY2lsLlV0aWxzLmJ1dHRvbldpZHRoICsgXCJweFwifSk7XHJcblxyXG4gICAgICBKU0RyYXcyLkVkaXRvci5hYm91dCA9IG5ldyBKU0RyYXcyLkRpYWxvZyhKU0RyYXcyLkxhbmd1YWdlLnJlcyhcIkFib3V0IEpTRHJhd1wiKSwgZGl2KTtcclxuICAgICAgc2NpbC5jb25uZWN0KGJ0biwgXCJvbmNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBKU0RyYXcyLkVkaXRvci5hYm91dC5oaWRlKCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIEpTRHJhdzIuRWRpdG9yLmFib3V0LnNob3coKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBvbkNsaWNrUFQoZWxlbSwgaWQpIHtcclxuICAgIEpTRHJhdzIuRWRpdG9yLmdldChpZCkub25QVChlbGVtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBvblNhdmVGaWxlKCkge1xyXG4gICAgY29uc3QgZmllbGRzID0gSlNEcmF3Mi5FZGl0b3Iuc2F2ZWZpbGVkbGcuZm9ybS5maWVsZHM7XHJcbiAgICBjb25zdCBmbXQgPSBmaWVsZHMuZmlsZXR5cGUudmFsdWU7XHJcbiAgICBjb25zdCB0eHQgPSBmaWVsZHMuY29udGVudHM7XHJcbiAgICB0eHQudmFsdWUgPSBKU0RyYXcyLkVkaXRvci5zYXZlZmlsZWRsZy5qc2QuZ2V0RGF0YShmbXQpO1xyXG4gICAgdHh0LnNlbGVjdCgpO1xyXG4gICAgdHh0LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgb25PcGVuRmlsZSgpIHtcclxuICAgIGNvbnN0IGZpZWxkcyA9IEpTRHJhdzIuRWRpdG9yLm9wZW5maWxlZGxnLmZvcm0uZmllbGRzO1xyXG5cclxuICAgIGNvbnN0IHMgPSBmaWVsZHMuY29udGVudHMudmFsdWU7XHJcbiAgICBjb25zdCBmbXQgPSBmaWVsZHMuZmlsZXR5cGUudmFsdWU7XHJcbiAgICBKU0RyYXcyLkVkaXRvci5vcGVuZmlsZWRsZy5qc2Quc2V0RGF0YShzLCBmbXQpO1xyXG4gICAgSlNEcmF3Mi5FZGl0b3Iub3BlbmZpbGVkbGcuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGluaXROb0RlbGF5KCkge1xyXG4gICAgY29uc3QgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGl2XCIpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGUgPSBsaXN0W2ldO1xyXG4gICAgICBpZiAoZG9qby5oYXNDbGFzcyhlLCAnSlNEcmF3JykpIHtcclxuICAgICAgICBuZXcgSlNEcmF3Mi5FZGl0b3IoZSk7XHJcbiAgICAgICAgZG9qby5yZW1vdmVDbGFzcyhlLCAnSlNEcmF3Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgYWxsIERJViBIVE1MIGVsZW1lbnRzIGFuZCB0aGVpciBjbGFzcyBtYXJrZWQgYXMgSlNEcmF3LCBhbmQgY29udmVydCBhbGwgb2YgdGhlbSBpbnRvIEpTRHJhdyBFZGl0b3I8YnI+XHJcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGJlZm9yZSBkb2N1bWVudC5vbmxvYWQoKS48YnI+XHJcbiAgICogbmV3IEpTRHJhdzIuRWRpdG9yKCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBvciBhZnRlciBkb2N1bWVudC5vbmxvYWQoKS5cclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gaW5pdFxyXG4gICAqL1xyXG4gIHN0YXRpYyBpbml0KCkge1xyXG4gICAgc2NpbC5vbmxvYWQoZnVuY3Rpb24oKSB7XHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLmluaXROb0RlbGF5KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIEpTRHJhdyBFZGl0b3I8YnI+XHJcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGJlZm9yZSBkb2N1bWVudC5vbmxvYWQoKS48YnI+XHJcbiAgICogbmV3IEpTRHJhdzIuRWRpdG9yKCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBvciBhZnRlciBkb2N1bWVudC5vbmxvYWQoKS5cclxuICAgKiBAZnVuY3Rpb24ge3N0YXRpY30gY3JlYXRlXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgb3IgRE9NfSBpZCAtIHRoZSBJRCBvZiBESVYgcGxhY2Vob2xkLCBvciB0aGUgRElWIERPTSBvYmplY3RcclxuICAgKiBAcGFyYW0ge2RpY3RvbmFyeX0gb3B0aW9ucyAtIGNyZWF0aW5nIG9wdGlvbnMuIFBsZWFzZSBjaGVjayBFZGl0b3IgY29udHJ1Y3RvciBmb3IgZGV0YWlsc1xyXG4gICAqL1xyXG4gIHN0YXRpYyBjcmVhdGUoaWQsIG9wdGlvbnMpIHtcclxuICAgIGRvam8ucmVhZHkoZnVuY3Rpb24oKSB7IG5ldyBKU0RyYXcyLkVkaXRvcihpZCwgb3B0aW9ucyk7IH0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdyaXRlKGlkLCBvcHRpb25zKSB7XHJcbiAgICBkb2N1bWVudC53cml0ZWxuKFwiPGRpdiBpZD0nXCIgKyBpZCArIFwiJz48L2Rpdj5cIik7XHJcbiAgICBzY2lsLm9ubG9hZChmdW5jdGlvbigpIHsgbmV3IEpTRHJhdzIuRWRpdG9yKGlkLCBvcHRpb25zKTsgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2hvd1BvcHVwSWZyYW1lKHRpdGxlLCBidG5UZXh0LCBidG5GbiwgdmFsdWUpIHtcclxuICAgIGNvbnN0IG5ld2NyZWF0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHBhcmVudFdpbmRvdzogYW55ID0gc2NpbC5VdGlscy5nZXRUb3BXaW5kb3coKTtcclxuICAgIHBhcmVudFdpbmRvdy5KU0RyYXcyLkVkaXRvci5zaG93UG9wdXAodGl0bGUsIGJ0blRleHQsIGJ0bkZuLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0UG9wdXBTaXplKHdpbj86IGFueSkge1xyXG4gICAgY29uc3QgYXJncyA9IHt3aWR0aDogODAwLCBoZWlnaHQ6IDQwMH07XHJcbiAgICBpZiAoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHcgPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnBvcHVwd2lkdGg7XHJcbiAgICAgIGNvbnN0IGggPSBKU0RyYXcyLmRlZmF1bHRvcHRpb25zLnBvcHVwaGVpZ2h0O1xyXG4gICAgICBjb25zdCBkID0gc2NpbC5VdGlscy5nZXRTY3JlZW5TaXplKHdpbik7IC8vIGRvam8ud2luZG93LmdldEJveCgpO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiAodykgPT0gXCJzdHJpbmdcIiAmJiB3LnN1YnN0cih3Lmxlbmd0aCAtIDEsIDEpID09IFwiJVwiKVxyXG4gICAgICAgIGFyZ3Mud2lkdGggPSBkLncgKiBwYXJzZUludCh3LnN1YnN0cigwLCB3Lmxlbmd0aCAtIDEpKSAvIDEwMDtcclxuICAgICAgZWxzZSBpZiAodHlwZW9mICh3KSA9PSAnbnVtYmVyJylcclxuICAgICAgICBhcmdzLndpZHRoID0gdztcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgKGgpID09IFwic3RyaW5nXCIgJiYgdy5zdWJzdHIoaC5sZW5ndGggLSAxLCAxKSA9PSBcIiVcIilcclxuICAgICAgICBhcmdzLmhlaWdodCA9IGQuaCAqIHBhcnNlSW50KGguc3Vic3RyKDAsIGgubGVuZ3RoIC0gMSkpIC8gMTAwO1xyXG4gICAgICBlbHNlIGlmICh0eXBlb2YgKGgpID09ICdudW1iZXInKVxyXG4gICAgICAgIGFyZ3MuaGVpZ2h0ID0gaDtcclxuICAgIH1cclxuICAgIHJldHVybiBhcmdzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBKU0RyYXcgUG91cCBFZGl0b3I8YnI+XHJcbiAgICogQGZ1bmN0aW9uIHtzdGF0aWN9IHNob3dQb3B1cFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRoZSB0aXRsZSBvZiB0aGUgUG9wdXAgZGlhbG9nXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJ0blRleHQgLSB0aGUgYnV0dG9uIHRleHQgb2YgdGhlIFBvcHVwIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZWRpdG9yKX0gYnRuRm4gLSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiB1c2VyIGNsaWNrcyBvbiB0aGUgYnV0dG9uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHppbmRleCAtIHRoZSB6SW5kZXggb2YgdGhlIGRpYWxvZyBET01cclxuICAgKi9cclxuICBzdGF0aWMgc2hvd1BvcHVwKHRpdGxlOiBzdHJpbmcsIGJ0blRleHQ6IHN0cmluZywgYnRuRm46IEZ1bmN0aW9uLCB2YWx1ZSwgemluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBsZXQgYXJncyA9IG51bGw7XHJcbiAgICBpZiAoSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcgPT0gbnVsbCkge1xyXG4gICAgICBhcmdzID0gdGhpcy5nZXRQb3B1cFNpemUoKTtcclxuICAgICAgY29uc3QgdGJvZHkgPSBzY2lsLlV0aWxzLmNyZWF0ZVRhYmxlKCk7XHJcbiAgICAgIGxldCB0ciA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0Ym9keSwgJ3RyJyk7XHJcbiAgICAgIGxldCB0ZCA9IHNjaWwuVXRpbHMuY3JlYXRlRWxlbWVudCh0ciwgJ3RkJyk7XHJcbiAgICAgIGFyZ3MuZGl2ID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImRpdlwiLCBudWxsLCB7d2lkdGg6IGFyZ3Mud2lkdGggKyBcInB4XCIsIGhlaWdodDogYXJncy5oZWlnaHQgKyBcInB4XCJ9KTtcclxuXHJcbiAgICAgIHRyID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRib2R5LCAndHInKTtcclxuICAgICAgdGQgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodHIsICd0ZCcsIG51bGwsIHt0ZXh0QWxpZ246IFwiY2VudGVyXCJ9KTtcclxuICAgICAgY29uc3QgYnV0dG9uID0gc2NpbC5VdGlscy5jcmVhdGVFbGVtZW50KHRkLCBcImJ1dHRvblwiLCBudWxsLCB7d2lkdGg6IHNjaWwuVXRpbHMuYnV0dG9uV2lkdGggKyBcInB4XCJ9KTtcclxuICAgICAgLy9jb25zdCBjYW5jZWwgPSBzY2lsLlV0aWxzLmNyZWF0ZUVsZW1lbnQodGQsIFwiYnV0dG9uXCIsIHNjaWwuVXRpbHMuaW1nVGFnKCdjYW5jZWwuZ2lmJywgXCJDYW5jZWxcIiwgeyB3aWR0aDogc2NpbC5VdGlscy5idXR0b25XaWR0aCArIFwicHhcIiB9KTtcclxuXHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnID0gbmV3IEpTRHJhdzIuRGlhbG9nKHRpdGxlLCB0Ym9keS5wYXJlbnROb2RlKTtcclxuICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuYnV0dG9uID0gYnV0dG9uO1xyXG4gICAgICAvL0pTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmNhbmNlbCA9IGNhbmNlbDtcclxuICAgIH1cclxuXHJcbiAgICBKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5zaG93KHRpdGxlLCB6aW5kZXgpO1xyXG4gICAgaWYgKGFyZ3MgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoSlNEcmF3Mi5kZWZhdWx0b3B0aW9ucy5wb3B1cHhkcmF3LyogJiYgc2NpbC5VdGlscy5pc0lFICovKSB7XHJcbiAgICAgICAgYXJncy5oZWlnaHQgLT0gNDA7XHJcbiAgICAgICAgYXJncy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZCA9IG5ldyBzY2lsbGlnZW5jZS5YRHJhdyhhcmdzLmRpdiwgYXJncyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXJncy5kaXYuc3R5bGUuYm9yZGVyID0gXCJzb2xpZCAxcHggI2RkZFwiO1xyXG4gICAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZCA9IG5ldyBKU0RyYXcyLkVkaXRvcihhcmdzLmRpdik7XHJcbiAgICAgICAgdGhpcy5fbG9hZFBvcHVwRGF0YSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghc2NpbC5VdGlscy5pc0lFIHx8IHNjaWwuVXRpbHMuaXNJRSA+IDgpXHJcbiAgICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcudXBkYXRlV2lkdGgoKTtcclxuICAgICAgLy9kaXYgPSBudWxsO1xyXG4gICAgICBjb25zdCBmbiA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBsZXQgZiA9IHRydWU7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmNhbGxiYWNrICE9IG51bGwpIHtcclxuICAgICAgICAgIGYgPSBKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5jYWxsYmFjayhKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5qc2QpO1xyXG4gICAgICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuY2FsbGJhY2sgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZiAhPSBmYWxzZSlcclxuICAgICAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmhpZGUoKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH07XHJcbiAgICAgIGRvam8uY29ubmVjdChKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5idXR0b24sIFwib25jbGlja1wiLCBmbik7XHJcbiAgICAgIC8vY29uc3QgZm4yID0gZnVuY3Rpb24gKGUpIHsgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuaGlkZSgpOyBlLnByZXZlbmREZWZhdWx0KCk7IH07XHJcbiAgICAgIC8vZG9qby5jb25uZWN0KEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmNhbmNlbCwgXCJvbmNsaWNrXCIsIGZuMik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9sb2FkUG9wdXBEYXRhKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5idXR0b24uaW5uZXJIVE1MID0gc2NpbC5VdGlscy5pbWdUYWcoXCJ0aWNrLmdpZlwiLCBidG5UZXh0KTtcclxuICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmNhbGxiYWNrID0gYnRuRm47XHJcblxyXG4gICAgcmV0dXJuIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBfbG9hZFBvcHVwRGF0YSh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuanNkLmNsZWFyKHRydWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlLmZvcm1hdCA9PSBcImpzZHJhd1wiIHx8IHZhbHVlLmZvcm1hdCA9PSBcImh0bWxcIiB8fCB2YWx1ZS5mb3JtYXQgPT0gXCJ4bWxcIilcclxuICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuanNkLnNldFhtbCh2YWx1ZS52YWx1ZSk7XHJcbiAgICBlbHNlIGlmICh2YWx1ZS5mb3JtYXQgPT0gXCJtb2xcIiB8fCB2YWx1ZS5mb3JtYXQgPT0gXCJtb2xmaWxlXCIpXHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZC5zZXRNb2xmaWxlKHZhbHVlLnZhbHVlKTtcclxuICAgIGVsc2UgaWYgKHZhbHVlLmZvcm1hdCA9PSBcImpkeFwiKVxyXG4gICAgICBKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5qc2Quc2V0SmR4KHZhbHVlLnZhbHVlKTtcclxuICAgIGVsc2UgaWYgKHZhbHVlLmZvcm1hdCA9PSBcImNsb25lXCIpIHtcclxuICAgICAgSlNEcmF3Mi5FZGl0b3IucG9wdXBkbGcuanNkLnJlc3RvcmVDbG9uZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZC5maXRUb1dpbmRvdygpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIEpTRHJhdzIuRWRpdG9yLnBvcHVwZGxnLmpzZC5jbGVhcih0cnVlKTtcclxuXHJcbiAgICBKU0RyYXcyLkVkaXRvci5wb3B1cGRsZy5qc2QucmVmcmVzaCgpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1TVG91Y2gge1xyXG4gIHN0YXRpYyBwb2ludGVyczoge307XHJcblxyXG4gIHN0YXRpYyBkb3duKGUpIHtcclxuICAgIGNvbnN0IG1lID0gTVNUb3VjaDtcclxuICAgIHRoaXMucG9pbnRlcnNbZS5wb2ludGVySWRdID0ge2NsaWVudFg6IGUuY2xpZW50WCwgY2xpZW50WTogZS5jbGllbnRZLCB0YXJnZXQ6IGUudGFyZ2V0LCBidXR0b246IGUuYnV0dG9uLCBwb2ludGVySWQ6IGUucG9pbnRlcklkLCBfdG06IG5ldyBEYXRlKCkuZ2V0VGltZSgpfTtcclxuICAgIGUudG91Y2hlcyA9IG1lLnRvVG91Y2hlcygpO1xyXG4gICAgLy9kb2pvLmJ5SWQoXCJERUJVR1wiKS52YWx1ZSA9IFwiZG93bjogXCIgKyBlLnRvdWNoZXMubGVuZ3RoICsgXCJcXHJcXG5cIjtcclxuICAgIHJldHVybiBlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1vdmUoZSkge1xyXG4gICAgY29uc3QgbWUgPSBNU1RvdWNoO1xyXG4gICAgY29uc3QgdCA9IHRoaXMucG9pbnRlcnNbZS5wb2ludGVySWRdO1xyXG4gICAgaWYgKHQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdC5jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgdC5jbGllbnRZID0gZS5jbGllbnRZO1xyXG4gICAgdC5fdG0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGUudG91Y2hlcyA9IG1lLnRvVG91Y2hlcygpO1xyXG4gICAgLy9kb2pvLmJ5SWQoXCJERUJVR1wiKS52YWx1ZSArPSBcIm1vdmU6IFwiICsgZS50b3VjaGVzLmxlbmd0aCArIFwiXFxyXFxuXCI7XHJcbiAgICByZXR1cm4gZTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB1cChlKSB7XHJcbiAgICBjb25zdCBtZSA9IE1TVG91Y2g7XHJcbiAgICBkZWxldGUgbWUucG9pbnRlcnNbZS5wb2ludGVySWRdO1xyXG4gICAgZS50b3VjaGVzID0gdGhpcy50b1RvdWNoZXMoKTtcclxuICAgIC8vZG9qby5ieUlkKFwiREVCVUdcIikudmFsdWUgKz0gXCJ1cDogXCIgKyBlLnRvdWNoZXMubGVuZ3RoICsgXCJcXHJcXG5cIjtcclxuICAgIHJldHVybiBlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRvVG91Y2hlcygpIHtcclxuICAgIGNvbnN0IG1lID0gTVNUb3VjaDtcclxuICAgIGNvbnN0IHRvdWNoZXMgPSBbXTtcclxuICAgIGNvbnN0IHRtID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGsgaW4gbWUucG9pbnRlcnMpIHtcclxuICAgICAgaWYgKG1lLnBvaW50ZXJzW2tdLl90bSA+IHRtIC0gNTAwMClcclxuICAgICAgICB0b3VjaGVzLnB1c2gobWUucG9pbnRlcnNba10pO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbGlzdC5wdXNoKGspO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKVxyXG4gICAgICBkZWxldGUgbWUucG9pbnRlcnNbbGlzdFtpXV07XHJcbiAgICB0b3VjaGVzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS5wb2ludGVySWQgLSBiLnBvaW50ZXJJZDsgfSk7XHJcbiAgICByZXR1cm4gdG91Y2hlcztcclxuICB9XHJcbn1cclxuXHJcbnNjaWxsaWdlbmNlLm1zdG91Y2ggPSBNU1RvdWNoO1xyXG5KU0RyYXcyLkVkaXRvciA9IEVkaXRvcjtcclxuXHJcbi8vQHRzLWlnbm9yZVxyXG52YXIgSlNEcmF3ID0gSlNEcmF3Mi5FZGl0b3I7XHJcblxyXG4iLCIvLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge0pTRHJhdzJNb2R1bGVUeXBlfSBmcm9tICcuL3R5cGVzL2pzZHJhdzInO1xyXG5pbXBvcnQgdHlwZSB7U2NpbE1vZHVsZVR5cGV9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHR5cGUge01vbEhhbmRsZXJPcHRpb25zfSBmcm9tICcuL3R5cGVzL21vbC1oYW5kbGVyJztcclxuXHJcbmltcG9ydCB7ZGVmYXVsdE1vbEhhbmRsZXJPcHRpb25zfSBmcm9tICcuL3R5cGVzL21vbC1oYW5kbGVyJztcclxuXHJcbmRlY2xhcmUgY29uc3QgSlNEcmF3MjogSlNEcmF3Mk1vZHVsZVR5cGU8YW55PjtcclxuZGVjbGFyZSBjb25zdCBzY2lsOiBTY2lsTW9kdWxlVHlwZTtcclxuXHJcbkpTRHJhdzIuTW9sSGFuZGxlciA9IHNjaWwuZXh0ZW5kKHNjaWwuX2Jhc2UsIHtcclxuICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24ob3B0aW9ucz86IE1vbEhhbmRsZXJPcHRpb25zKSB7XHJcbiAgICB0aGlzLlQgPSAnTU9MSEFORExFUic7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZmF1bHRNb2xIYW5kbGVyT3B0aW9ucykpO1xyXG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvbnMgPz8ge30pO1xyXG5cclxuICAgIHRoaXMuYm9uZGxlbmd0aCA9IEpTRHJhdzIuRWRpdG9yLkJPTkRMRU5HVEg7XHJcbiAgICB0aGlzLm0gPSBuZXcgSlNEcmF3Mi5Nb2wodGhpcy5vcHRpb25zLnNob3dpbXBsaWNpdGh5ZHJvZ2Vucyk7XHJcbiAgfVxyXG59KTtcclxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vL1xyXG4vLyBKU0RyYXcuTGl0ZVxyXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTggU2NpbGxpZ2VuY2UgQ29ycG9yYXRpb25cclxuLy8gaHR0cDovL3d3dy5zY2lsbGlnZW5jZS5jb20vXHJcbi8vXHJcbi8vIChSZWxlYXNlZCB1bmRlciBMR1BMIDMuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMClcclxuLy9cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuLy8gQHRzLW5vY2hlY2tcclxuXHJcbmltcG9ydCB0eXBlIHtJbmRleFR5cGUsIFNjaWxNb2R1bGVUeXBlLCBJRGVidWd9IGZyb20gJy4vdHlwZXMvc2NpbCc7XHJcbmltcG9ydCB0eXBlIHtJR3JhcGhpY3MsIEpTRHJhdzJNb2R1bGVUeXBlfSBmcm9tICcuL3R5cGVzL2pzZHJhdzInO1xyXG5cclxuaW1wb3J0IHR5cGUge0F0b219IGZyb20gJy4vQXRvbSc7XHJcbmltcG9ydCB0eXBlIHtCb25kfSBmcm9tICcuL0JvbmQnO1xyXG5pbXBvcnQgdHlwZSB7UmVjdH0gZnJvbSAnLi9SZWN0JztcclxuaW1wb3J0IHR5cGUge1BsdXMsIFBvaW50fSBmcm9tICcuL1BvaW50JztcclxuXHJcbmltcG9ydCB7Qm9uZFR5cGVzfSBmcm9tICcuL3R5cGVzL2pzZHJhdzInO1xyXG5cclxuZGVjbGFyZSBjb25zdCBKU0RyYXcyOiBKU0RyYXcyTW9kdWxlVHlwZTxhbnk+O1xyXG5kZWNsYXJlIGNvbnN0IHNjaWw6IFNjaWxNb2R1bGVUeXBlO1xyXG5cclxuZGVjbGFyZSBjb25zdCBERUJVRzogSURlYnVnO1xyXG5cclxuZXhwb3J0IGVudW0gQ2hpcmFsVHlwZXMge1xyXG4gIEFORCA9ICdhbmQnLFxyXG4gIE9SID0gJ29yJyxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2hpcmFsVHlwZSA9IHR5cGVvZiBDaGlyYWxUeXBlc1trZXlvZiB0eXBlb2YgQ2hpcmFsVHlwZXNdO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNb2wgY2xhc3MgLSBkZWZpbmUgYSBNb2xlY3VsZSBvYmplY3RcclxuICo8cHJlPlxyXG4gKiA8Yj5FeGFtcGxlOjwvYj5cclxuICogICAgdmFyIG1vbGZpbGUgPSBcIlxcblwiO1xyXG4gKiAgICBtb2xmaWxlICs9IFwiTW9sRW5naW5lMDIwMjEzMTIzNzJEXFxuXCI7XHJcbiAqICAgIG1vbGZpbGUgKz0gXCJcXG5cIjtcclxuICogICAgbW9sZmlsZSArPSBcIiAgMiAgMSAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMDk5OSBWMjAwMFxcblwiO1xyXG4gKiAgICBtb2xmaWxlICs9IFwiICAgIDAuMDAwMCAgICAwLjAwMDAgICAgMC4wMDAwIEMgICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwXFxuXCI7XHJcbiAqICAgIG1vbGZpbGUgKz0gXCIgICAgMS4zNTEwICAgIDAuNzgwMCAgICAwLjAwMDAgTyAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDBcXG5cIjtcclxuICogICAgbW9sZmlsZSArPSBcIiAgMSAgMiAgMSAgMCAgMCAgMCAgMFxcblwiO1xyXG4gKiAgICBtb2xmaWxlICs9IFwiTSAgRU5EXFxuXCI7XHJcbiAqXHJcbiAqICAgIHZhciBtID0gbmV3IEpTRHJhdzMuTW9sKCk7XHJcbiAqICAgIG0uc2V0TW9sZmlsZShtb2xmaWxlKTtcclxuICpcclxuICogICAgdmFyIHNtaWxlcyA9IG0uZ2V0U21pbGVzKCk7XHJcbiAqIDwvcHJlPlxyXG4gKiBAY2xhc3Mgc2NpbGxpZ2VuY2UuSlNEcmF3Mi5Nb2xcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNb2w8VEJpbyA9IGFueT4ge1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge2FycmF5fSBhdG9tcyBBcnJheSBvZiBBdG9tIE9iamVjdHNcclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHthcnJheX0gYm9uZHMgQXJyYXkgb2YgQm9uZCBPYmplY3RzXHJcbiAgICovXHJcbiAgLyoqXHJcbiAgIEBwcm9wZXJ0eSB7YXJyYXl9IGdyYXBoaWNzIEFycmF5IG9mIEdyYXBoaWNzIChub3QgQXRvbSBhbmQgQm9uZCkgT2JqZWN0c1xyXG4gICAqL1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IFQ6IHN0cmluZztcclxuICBwcml2YXRlIG5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgYXRvbXM6IEF0b208VEJpbz5bXTtcclxuICBwdWJsaWMgYm9uZHM6IEJvbmQ8VEJpbz5bXTtcclxuICBwdWJsaWMgZ3JhcGhpY3M6IElHcmFwaGljc1tdO1xyXG4gIHB1YmxpYyBzdGF0czogYW55O1xyXG4gIHB1YmxpYyBzaG93aW1wbGljaXRoeWRyb2dlbnM6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBwcm9wczogYW55O1xyXG4gIHB1YmxpYyBib25kbGVuZ3RoOiBudW1iZXI7XHJcbiAgcHVibGljIGNoaXJhbDogQ2hpcmFsVHlwZSB8IGJvb2xlYW4gfCBudWxsO1xyXG4gIHByaXZhdGUgbXc6IG51bWJlcjtcclxuICBwcml2YXRlIGF0dGFjaHBvaW50czogYW55W10gfCBudWxsO1xyXG4gIHB1YmxpYyBfYWRkUnhuTGFiZWw6IEZ1bmN0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3IgTW9sXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Ioc2hvd2ltcGxpY2l0aHlkcm9nZW5zPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5UID0gJ01PTCc7XHJcbiAgICB0aGlzLm5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5hdG9tcyA9IFtdO1xyXG4gICAgdGhpcy5ib25kcyA9IFtdO1xyXG4gICAgdGhpcy5ncmFwaGljcyA9IFtdO1xyXG4gICAgdGhpcy5zdGF0cyA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyA9IHNob3dpbXBsaWNpdGh5ZHJvZ2VucyAhPSBmYWxzZTtcclxuICAgIHRoaXMucHJvcHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2FkZEF0b20oYTogQXRvbTxUQmlvPiwgcGFyZW50PzogTW9sPFRCaW8+KSB7XHJcbiAgICB0aGlzLmF0b21zLnB1c2goYSk7XHJcbiAgICBhLl9wYXJlbnQgPSBwYXJlbnQgIT0gbnVsbCA/IHBhcmVudCA6IHRoaXM7XHJcbiAgfVxyXG5cclxuICBfYWRkQm9uZChhOiBCb25kPFRCaW8+LCBwYXJlbnQ/OiBNb2w8VEJpbz4pIHtcclxuICAgIHRoaXMuYm9uZHMucHVzaChhKTtcclxuICAgIGEuX3BhcmVudCA9IHBhcmVudCAhPSBudWxsID8gcGFyZW50IDogdGhpcztcclxuICB9XHJcblxyXG4gIF9hZGRHcmFwaGljcyhhOiBJR3JhcGhpY3MsIHBhcmVudD86IE1vbDxUQmlvPikge1xyXG4gICAgdGhpcy5ncmFwaGljcy5wdXNoKGEpO1xyXG4gICAgYS5fcGFyZW50ID0gcGFyZW50ICE9IG51bGwgPyBwYXJlbnQgOiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgb2JqZWN0IElEcyBpbmNsdWRpbmcgYXRvbXMsIGJvbmRzLCBhbmQgb3RoZXIgZ3JhcGhpY3NcclxuICAgKiBAZnVuY3Rpb24gcmVzZXRJZHNcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgcmVzZXRJZHMoa2VlcG9sZGlkPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaWRnID0gbmV3IEpTRHJhdzIuSURHZW5lcmF0b3Ioa2VlcG9sZGlkID8gdGhpcy5fZ2V0TWF4SUQoKSA6IDApO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhOiBBdG9tPFRCaW8+ID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgYS5pZCA9IGlkZy5uZXh0KGEuaWQpO1xyXG4gICAgICBhLmF0b21pZCA9IGkgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhOiBCb25kPFRCaW8+ID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgYS5pZCA9IGlkZy5uZXh0KGEuaWQpO1xyXG4gICAgICBhLmJvbmRpZCA9IGkgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhOiBJR3JhcGhpY3MgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBhLmlkID0gaWRnLm5leHQoYS5pZCk7XHJcbiAgICAgIGEuZ3JhcGhpY3NpZCA9IGkgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwpXHJcbiAgICAgICAgYS5yZ3JvdXAuaWQgPSBpZGcubmV4dChhLnJncm91cC5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZ2V0TWF4SUQoKSB7XHJcbiAgICBsZXQgbWF4ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEuaWQgPiBtYXgpXHJcbiAgICAgICAgbWF4ID0gYS5pZDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChhLmlkID4gbWF4KVxyXG4gICAgICAgIG1heCA9IGEuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoYS5pZCA+IG1heClcclxuICAgICAgICBtYXggPSBhLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoYS5yZ3JvdXAuaWQgPiBtYXgpXHJcbiAgICAgICAgICBtYXggPSBhLnJncm91cC5pZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtYXg7XHJcbiAgfVxyXG5cclxuICBnZXRPYmplY3RCeUlkKGlkKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYXRvbXNbaV0uaWQgPT0gaWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXRvbXNbaV07XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYm9uZHNbaV0uaWQgPT0gaWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9uZHNbaV07XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JhcGhpY3NbaV0uaWQgPT0gaWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhpY3NbaV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9uZSB0aGUgTW9sIG9iamVjdFxyXG4gICAqIEBmdW5jdGlvbiBjbG9uZVxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZWN0ZWRPbmx5IC0gaW5kaWNhdGUgaWYgY2xvbmluZyBvbmx5IHNlbGVjdGVkIG9iamVjdHNcclxuICAgKiBAcmV0dXJuIGEgbmV3IE1vbCBvYmplY3RcclxuICAgKi9cclxuICBjbG9uZShzZWxlY3RlZE9ubHk/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICBtLmJvbmRsZW5ndGggPSB0aGlzLmJvbmRsZW5ndGg7XHJcbiAgICBtLm5hbWUgPSB0aGlzLm5hbWU7XHJcbiAgICBtLmNoaXJhbCA9IHRoaXMuY2hpcmFsO1xyXG4gICAgbS5wcm9wcyA9IHNjaWwuY2xvbmUodGhpcy5wcm9wcyk7XHJcbiAgICBtLnNob3dpbXBsaWNpdGh5ZHJvZ2VucyA9IHRoaXMuc2hvd2ltcGxpY2l0aHlkcm9nZW5zO1xyXG4gICAgbS5tdyA9IHRoaXMubXc7XHJcbiAgICBtLmF0dGFjaHBvaW50cyA9IHRoaXMuYXR0YWNocG9pbnRzO1xyXG5cclxuICAgIGNvbnN0IG1hcDogKEF0b208VEJpbz4gfCBCb25kPFRCaW8+IHwgSUdyYXBoaWNzKVtdID0gW107XHJcbiAgICB0aGlzLnJlc2V0SWRzKHRydWUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPbmx5ICYmICFhLnNlbGVjdGVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgYTEgPSBhLmNsb25lKHNlbGVjdGVkT25seSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZE9ubHkpXHJcbiAgICAgICAgYTEuYXRvbW1hcGlkID0gbnVsbDtcclxuICAgICAgbS5fYWRkQXRvbShhMSk7XHJcbiAgICAgIG1hcFthLmlkXSA9IGExO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgaWYgKHNlbGVjdGVkT25seSAmJiAhKGIuc2VsZWN0ZWQgJiYgYi5hMS5zZWxlY3RlZCAmJiBiLmEyLnNlbGVjdGVkKSlcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IGIxID0gYi5jbG9uZSgpO1xyXG4gICAgICBtLl9hZGRCb25kKGIxKTtcclxuICAgICAgbWFwW2IuaWRdID0gYjE7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPbmx5ICYmICFnLnNlbGVjdGVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgZzEgPSBnLmNsb25lKG1hcCk7XHJcbiAgICAgIG0uX2FkZEdyYXBoaWNzKGcxKTtcclxuICAgICAgbWFwW2cuaWRdID0gZzE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZml4IHJlZmVyZW5jZXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgY29uc3QgYjEgPSBtYXBbYi5pZF0gYXMgQm9uZDxUQmlvPjtcclxuICAgICAgaWYgKGIxID09IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIGIxLmExID0gbWFwW2IuYTEuaWRdIGFzIEF0b208VEJpbz47XHJcbiAgICAgIGIxLmEyID0gbWFwW2IuYTIuaWRdIGFzIEF0b208VEJpbz47XHJcbiAgICAgIGlmIChiMS5hMSA9PSBudWxsIHx8IGIuYTIgPT0gbnVsbClcclxuICAgICAgICBpID0gaTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZ3JhcGhpY3NbaV07XHJcbiAgICAgIGNvbnN0IGcxID0gbWFwW2cuaWRdIGFzIElHcmFwaGljcztcclxuICAgICAgaWYgKGcxID09IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBpZiAoSlNEcmF3Mi5Hcm91cC5jYXN0KGcpICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2pdO1xyXG4gICAgICAgICAgaWYgKGEuZ3JvdXAgPT0gZylcclxuICAgICAgICAgICAgKG1hcFthLmlkXSBhcyBBdG9tPFRCaW8+KS5ncm91cCA9IGcxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZy5hICE9IG51bGwpXHJcbiAgICAgICAgICBnMS5hID0gbWFwW2cuYS5pZF07XHJcblxyXG4gICAgICAgIGlmIChnLmdyb3VwICE9IG51bGwpXHJcbiAgICAgICAgICBnMS5ncm91cCA9IG1hcFtnLmdyb3VwLmlkXTtcclxuICAgICAgfSBlbHNlIGlmIChKU0RyYXcyLkJyYWNrZXQuY2FzdChnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgZzEuYXRvbXMgPSB0aGlzLl9nZXRNYXBwZWRBcnJheShnLmF0b21zLCBtYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKEpTRHJhdzIuVGV4dC5jYXN0KGcpICE9IG51bGwpIHtcclxuICAgICAgICBnMS5hbmNob3JzID0gdGhpcy5fZ2V0TWFwcGVkQXJyYXkoZy5hbmNob3JzLCBtYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKEpTRHJhdzIuU2hhcGUuY2FzdChnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgZzEuZnJvbXMgPSB0aGlzLl9nZXRNYXBwZWRBcnJheShnLmZyb21zLCBtYXApO1xyXG4gICAgICAgIGlmIChnMS5yZWplY3QgIT0gbnVsbClcclxuICAgICAgICAgIGcxLnJlamVjdCA9IG1hcFtnMS5yZWplY3QuaWRdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbS5fc2V0UGFyZW50KG0pO1xyXG4gICAgcmV0dXJuIG07XHJcbiAgfVxyXG5cclxuICBfZ2V0TWFwcGVkQXJyYXkobGlzdCwgbWFwKSB7XHJcbiAgICBjb25zdCByZXQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBkID0gbGlzdFtpXTtcclxuICAgICAgaWYgKGQgIT0gbnVsbCAmJiBtYXBbZC5pZF0gIT0gbnVsbClcclxuICAgICAgICByZXQucHVzaChtYXBbZC5pZF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIGd1ZXNzQm9uZChhOiBBdG9tPFRCaW8+LCBsZW46IG51bWJlciwgZXh0cmE6IG51bWJlcikge1xyXG4gICAgbGV0IHAgPSBhLnAuY2xvbmUoKTtcclxuICAgIGNvbnN0IGJvbmRzID0gdGhpcy5nZXRBbGxCb25kcyhhKTtcclxuICAgIHN3aXRjaCAoYm9uZHMubGVuZ3RoICsgKGV4dHJhID4gMCA/IGV4dHJhIDogMCkpIHtcclxuICAgIGNhc2UgMDpcclxuICAgICAgcC5vZmZzZXQoMSwgMCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAxOlxyXG4gICAgICBwID0gYm9uZHNbMF0ub3RoZXJBdG9tKGEpLnAuY2xvbmUoKS5yb3RhdGVBcm91bmQoYS5wLCAxMjApO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgMjoge1xyXG4gICAgICBjb25zdCBwMSA9IGJvbmRzWzBdLm90aGVyQXRvbShhKS5wO1xyXG4gICAgICBjb25zdCBwMiA9IGJvbmRzWzFdLm90aGVyQXRvbShhKS5wO1xyXG4gICAgICBjb25zdCBhbmdsZSA9IGEucC5hbmdsZUFzT3JpZ2luKHAxLCBwMik7XHJcbiAgICAgIGlmIChNYXRoLmFicyhhbmdsZSAtIDE4MCkgPD0gMSkge1xyXG4gICAgICAgIHAgPSBwMS5jbG9uZSgpO1xyXG4gICAgICAgIHAucm90YXRlQXJvdW5kKGEucCwgOTApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHAueCA9IChwMS54ICsgcDIueCkgLyAyO1xyXG4gICAgICAgIHAueSA9IChwMS55ICsgcDIueSkgLyAyO1xyXG4gICAgICAgIHAucm90YXRlQXJvdW5kKGEucCwgMTgwKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgMzoge1xyXG4gICAgICBjb25zdCBwMSA9IGJvbmRzWzBdLm90aGVyQXRvbShhKS5wO1xyXG4gICAgICBjb25zdCBwMiA9IGJvbmRzWzFdLm90aGVyQXRvbShhKS5wO1xyXG4gICAgICBjb25zdCBwMyA9IGJvbmRzWzJdLm90aGVyQXRvbShhKS5wO1xyXG4gICAgICBsZXQgYTEgPSBwLmFuZ2xlQXNPcmlnaW4ocDEsIHAyKTtcclxuICAgICAgbGV0IGEyID0gcC5hbmdsZUFzT3JpZ2luKHAyLCBwMyk7XHJcbiAgICAgIGxldCBhMyA9IHAuYW5nbGVBc09yaWdpbihwMywgcDEpO1xyXG4gICAgICBpZiAoYTEgPiAxODApXHJcbiAgICAgICAgYTEgPSAzNjAgLSBhMTtcclxuICAgICAgaWYgKGEyID4gMTgwKVxyXG4gICAgICAgIGEyID0gMzYwIC0gYTI7XHJcbiAgICAgIGlmIChhMyA+IDE4MClcclxuICAgICAgICBhMyA9IDM2MCAtIGEzO1xyXG4gICAgICBpZiAoYTEgPiBhMiAmJiBhMSA+IGEzKVxyXG4gICAgICAgIHAgPSBwMy5jbG9uZSgpO1xyXG4gICAgICBlbHNlIGlmIChhMiA+IGExICYmIGEyID4gYTMpXHJcbiAgICAgICAgcCA9IHAxLmNsb25lKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwID0gcDIuY2xvbmUoKTtcclxuICAgICAgcC5yb3RhdGVBcm91bmQoYS5wLCAxODApO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcC5zZXRMZW5ndGgobGVuLCBhLnApO1xyXG4gICAgcmV0dXJuIHA7XHJcbiAgfVxyXG5cclxuICBnZXRNYXhSSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmIChpbmRleCA9PSBudWxsKVxyXG4gICAgICBpbmRleCA9IDA7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoYS5lbGVtICE9ICdSJylcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgY29uc3QgcjogSW5kZXhUeXBlID0gc2NpbC5VdGlscy5wYXJzZUluZGV4KGEuYWxpYXMpO1xyXG4gICAgICBpZiAociA9PSBudWxsIHx8IHIuaW5kZXggPT0gbnVsbClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGlmIChyLmluZGV4ID4gaW5kZXgpXHJcbiAgICAgICAgaW5kZXggPSByLmluZGV4O1xyXG4gICAgICBpZiAoYS5yZ3JvdXAgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYS5yZ3JvdXAubW9scy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgY29uc3QgcjIgPSBhLnJncm91cC5tb2xzW2pdLmdldE1heFJJbmRleChpbmRleCk7XHJcbiAgICAgICAgICBpZiAocjIgPiBpbmRleClcclxuICAgICAgICAgICAgaW5kZXggPSByMjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBjb2xvciB0byBhbGwgb2JqZWN0c1xyXG4gICAqIEBmdW5jdGlvbiBzZXRDb2xvclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIGEgY29sb3IsIHN1Y2ggYXMgcmVkLCBibHVlLCAjZmZlLCAjZjBmMGYwXHJcbiAgICogQHBhcmFtIHtib29sfSBzZWxlY3RlZE9ubHkgLSBpbmRpY2F0ZSBpZiBvbmx5IHNldCB0aGUgY29sb3IgdG8gc2VsZWN0ZWQgb2JqZWN0c1xyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBzZXRDb2xvcihjb2xvciwgc2VsZWN0ZWRPbmx5KSB7XHJcbiAgICBsZXQgbiA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmNvbG9yICE9IGNvbG9yICYmICghc2VsZWN0ZWRPbmx5IHx8IGEuc2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgYS5jb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICsrbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoYS5yZ3JvdXAuY29sb3IgIT0gY29sb3IgJiYgKCFzZWxlY3RlZE9ubHkgfHwgYS5yZ3JvdXAuc2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgICBhLnJncm91cC5jb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICAgKytuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGEucmdyb3VwLm1vbHMubGVuZ3RoOyArK2opXHJcbiAgICAgICAgICBuICs9IGEucmdyb3VwLm1vbHNbal0uc2V0Q29sb3IoY29sb3IsIHNlbGVjdGVkT25seSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgaWYgKGIuY29sb3IgIT0gY29sb3IgJiYgKCFzZWxlY3RlZE9ubHkgfHwgYi5zZWxlY3RlZCkpIHtcclxuICAgICAgICBiLmNvbG9yID0gY29sb3I7XHJcbiAgICAgICAgKytuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZ3JhcGhpY3NbaV07XHJcbiAgICAgIGlmIChnLmNvbG9yICE9IGNvbG9yICYmICghc2VsZWN0ZWRPbmx5IHx8IGcuc2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgZy5jb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBvYmplY3RcclxuICAgKiBAZnVuY3Rpb24gY2xlYXJcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jaGlyYWwgPSBudWxsO1xyXG4gICAgdGhpcy5hdG9tcyA9IFtdO1xyXG4gICAgdGhpcy5ib25kcyA9IFtdO1xyXG4gICAgdGhpcy5ncmFwaGljcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVzdCBpZiB0aGUgTW9sIG9iamVjdCBpcyBlbXB0eSAtIHdpdGhvdXQgYW55IGF0b20sIGJvbmQsIG9yIGdyYXBoaWNzXHJcbiAgICogQGZ1bmN0aW9uIGlzRW1wdHlcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmF0b21zLmxlbmd0aCA9PSAwICYmIHRoaXMuYm9uZHMubGVuZ3RoID09IDAgJiYgdGhpcy5ncmFwaGljcy5sZW5ndGggPT0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBzZWxlY3RpbmcgZmxhZ3MgdG8gYWxsIG9iamVjdHNcclxuICAgKiBAZnVuY3Rpb24gc2V0U2VsZWN0ZWRcclxuICAgKiBAcGFyYW0ge2Jvb2x9IGYgLSB0cnVlIG9yIGZhbHNlXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkKGY/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoZiA9PSBudWxsKVxyXG4gICAgICBmID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IG4gPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoYS5zZWxlY3RlZCAhPSBmKSB7XHJcbiAgICAgICAgYS5zZWxlY3RlZCA9IGY7XHJcbiAgICAgICAgKytuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGEucmdyb3VwLnNlbGVjdGVkICE9IGYpIHtcclxuICAgICAgICAgIGEucmdyb3VwLnNlbGVjdGVkID0gZjtcclxuICAgICAgICAgICsrbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgbiArPSBhLnJncm91cC5tb2xzW2pdLnNldFNlbGVjdGVkKGYpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmJvbmRzW2ldO1xyXG4gICAgICBpZiAoYi5zZWxlY3RlZCAhPSBmKSB7XHJcbiAgICAgICAgYi5zZWxlY3RlZCA9IGY7XHJcbiAgICAgICAgKytuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoZy5zZWxlY3RlZCAhPSBmKSB7XHJcbiAgICAgICAgZy5zZWxlY3RlZCA9IGY7XHJcbiAgICAgICAgKytuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICBsYXNzb1NlbGVjdChleHRyYSwgc3RhcnQsIGVuZCwgbGFzdCwgbGluZXdpZHRoLCB0b3IpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEucC5pblRyaWFuZ2xlKHN0YXJ0LCBlbmQsIGxhc3QpKVxyXG4gICAgICAgIGV4dHJhLmxhc3NvLmhpdChhKTtcclxuXHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZyA9IGEucmdyb3VwO1xyXG4gICAgICAgIGNvbnN0IHIyID0gZy5yZWN0KCk7XHJcbiAgICAgICAgaWYgKHIyLmNlbnRlcigpLmluVHJpYW5nbGUoc3RhcnQsIGVuZCwgbGFzdCkpXHJcbiAgICAgICAgICBleHRyYS5sYXNzby5oaXQoZyk7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgYS5yZ3JvdXAubW9sc1tqXS5sYXNzb1NlbGVjdChleHRyYSwgc3RhcnQsIGVuZCwgbGFzdCwgbGluZXdpZHRoLCB0b3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmJvbmRzW2ldO1xyXG4gICAgICBpZiAoYi5jZW50ZXIoKS5pblRyaWFuZ2xlKHN0YXJ0LCBlbmQsIGxhc3QpKVxyXG4gICAgICAgIGV4dHJhLmxhc3NvLmhpdChiKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZ3JhcGhpY3NbaV07XHJcbiAgICAgIGNvbnN0IHIyID0gZy5yZWN0KCk7XHJcbiAgICAgIGlmIChyMi5jZW50ZXIoKS5pblRyaWFuZ2xlKHN0YXJ0LCBlbmQsIGxhc3QpKVxyXG4gICAgICAgIGV4dHJhLmxhc3NvLmhpdChnKTtcclxuICAgIH1cclxuXHJcbiAgICBleHRyYS5sYXNzby5lbmRIaXRzKHN0YXJ0LCBlbmQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRBdG9tSW5Nb2woKSB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgbGlzdC5wdXNoKGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKGEucmdyb3VwICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGEucmdyb3VwLm1vbHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgIGNvbnN0IHIgPSBhLnJncm91cC5tb2xzW2pdLmdldFNlbGVjdGVkQXRvbUluTW9sKCk7XHJcbiAgICAgICAgICBpZiAoci5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgYnJhY2tldFNlbGVjdChyKSB7XHJcbiAgICBsZXQgcmV0OiBBdG9tPFRCaW8+W10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKHIuY29udGFpbnMoYS5wKSlcclxuICAgICAgICByZXQucHVzaChhKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmaW5kIG9wZW4gY29ubmVjdGVkIGJvbmRzXHJcbiAgICBjb25zdCB4Ym9uZHM6IHsgYjogQm9uZDxUQmlvPiwgYTogQXRvbTxUQmlvPiB9W10gPSBbXTtcclxuICAgIGNvbnN0IGJvbmRzID0gc2NpbC5jbG9uZSh0aGlzLmJvbmRzKTtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLmJvbmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgIGNvbnN0IGI6IEJvbmQ8VEJpbz4gPSB0aGlzLmJvbmRzW2ldO1xyXG4gICAgICBjb25zdCBmMSA9IHNjaWwuVXRpbHMuaW5kZXhPZihyZXQsIGIuYTEpID49IDA7XHJcbiAgICAgIGNvbnN0IGYyID0gc2NpbC5VdGlscy5pbmRleE9mKHJldCwgYi5hMikgPj0gMDtcclxuICAgICAgaWYgKGYxICE9IGYyKSB7XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuUG9pbnQuaW50ZXJzZWN0KGIuYTEucCwgYi5hMi5wLCByLnRvcGxlZnQoKSwgci5ib3R0b21sZWZ0KCkpIHx8XHJcbiAgICAgICAgICBKU0RyYXcyLlBvaW50LmludGVyc2VjdChiLmExLnAsIGIuYTIucCwgci50b3ByaWdodCgpLCByLmJvdHRvbXJpZ2h0KCkpKSB7XHJcbiAgICAgICAgICB4Ym9uZHMucHVzaCh7YjogYiwgYTogZjIgPyBiLmExIDogYi5hMn0pO1xyXG4gICAgICAgICAgYm9uZHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIG9ubHkgaGFuZGxlIG9uZSBvciB0d28gb3BlbiBjb25uZWN0ZWQgYm9uZHNcclxuICAgIGlmICh4Ym9uZHMubGVuZ3RoID09IDIgfHwgeGJvbmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGNvbnN0IG9sZGJvbmRzID0gdGhpcy5ib25kcztcclxuICAgICAgdGhpcy5ib25kcyA9IGJvbmRzO1xyXG4gICAgICBjb25zdCBmcmFncyA9IHRoaXMuc3BsaXRGcmFnbWVudHMoKTtcclxuICAgICAgdGhpcy5ib25kcyA9IG9sZGJvbmRzO1xyXG5cclxuICAgICAgaWYgKGZyYWdzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYWdzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICBpZiAoc2NpbC5VdGlscy5hcnJheUNvbnRhaW5zQXJyYXkoZnJhZ3NbaV0uYXRvbXMsIHJldCkpIHtcclxuICAgICAgICAgICAgLy8gYXZvaWQgY2lyY2xlXHJcbiAgICAgICAgICAgIGlmICh4Ym9uZHMubGVuZ3RoID09IDEgJiYgc2NpbC5VdGlscy5pbmRleE9mKGZyYWdzW2ldLmF0b21zLCB4Ym9uZHNbMF0uYSkgPCAwIHx8XHJcbiAgICAgICAgICAgICAgeGJvbmRzLmxlbmd0aCA9PSAyICYmIHNjaWwuVXRpbHMuaW5kZXhPZihmcmFnc1tpXS5hdG9tcywgeGJvbmRzWzBdLmEpIDwgMCAmJiBzY2lsLlV0aWxzLmluZGV4T2YoZnJhZ3NbaV0uYXRvbXMsIHhib25kc1sxXS5hKSA8IDApIHtcclxuICAgICAgICAgICAgICByZXQgPSBmcmFnc1tpXS5hdG9tcztcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKVxyXG4gICAgICByZXRbaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIHNlbGVjdEluUmVjdChyKSB7XHJcbiAgICBsZXQgbiA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChyLmNvbnRhaW5zKGEucCkpIHtcclxuICAgICAgICBhLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICArK247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZyA9IGEucmdyb3VwO1xyXG4gICAgICAgIGNvbnN0IHIyID0gZy5yZWN0KCk7XHJcbiAgICAgICAgaWYgKHIyICE9IG51bGwgJiYgci5jb250YWlucyhyMi5jZW50ZXIoKSkpIHtcclxuICAgICAgICAgIGcuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgKytuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgbiArPSBhLnJncm91cC5tb2xzW2pdLnNlbGVjdEluUmVjdChyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgaWYgKHIuY29udGFpbnMoYi5jZW50ZXIoKSkpIHtcclxuICAgICAgICBiLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICArK247XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZ3JhcGhpY3NbaV0gYXMgSUdyYXBoaWNzO1xyXG4gICAgICBjb25zdCByMiA9IGcucmVjdCgpO1xyXG4gICAgICBpZiAocjIgIT0gbnVsbCAmJiByLmNvbnRhaW5zKHIyLmNlbnRlcigpKSkge1xyXG4gICAgICAgIGcuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuICBoYXNBdG9tKGEpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5hdG9tc1tpXSA9PSBhKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaGFzR3JhcGhpY3MoZykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzW2ldID09IGcpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBoYXNCb25kKGIpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5ib25kc1tpXSA9PSBiKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FsY0hDb3VudChyZWNhbGM/OiBib29sZWFuKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChyZWNhbGMgfHwgYS5oY291bnQgPT0gbnVsbClcclxuICAgICAgICB0aGlzLnNldEhDb3VudChhKTtcclxuXHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgYS5yZ3JvdXAubW9sc1tqXS5jYWxjSENvdW50KHJlY2FsYyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEhDb3VudChhKSB7XHJcbiAgICBhLmhjb3VudCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5zaG93aW1wbGljaXRoeWRyb2dlbnMgPT0gZmFsc2UgfHwgYS5iaW8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBsZXQgZXJyb3IgPSBmYWxzZTtcclxuICAgIGxldCB2ID0gbnVsbDtcclxuXHJcbiAgICBpZiAoYS5lbGVtICE9ICdSJyAmJiBhLmFsaWFzICE9IG51bGwgJiYgYS5hbGlhcyAhPSAnJykge1xyXG4gICAgICBpZiAoYS5zdXBlcmF0b20gPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChhLmVsZW0gIT0gJyMnKVxyXG4gICAgICAgICAgZXJyb3IgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGEuc3VwZXJhdG9tICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBib25kcyA9IHRoaXMuZ2V0TmVpZ2hib3JCb25kcyhhLCB0cnVlKTtcclxuICAgICAgICBpZiAoYm9uZHMubGVuZ3RoID4gYS5zdXBlcmF0b20uYXR0YWNocG9pbnRzKSB7XHJcbiAgICAgICAgICBpZiAoYS5zdXBlcmF0b20uYXRvbXMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgZXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChib25kc1tpXS52YWxlbmNlKCkgIT0gMSkge1xyXG4gICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChhLmhzID4gMCkge1xyXG4gICAgICB2ID0gYS5ocyAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBlID0gSlNEcmF3Mi5QVFthLmVsZW1dO1xyXG4gICAgICBpZiAoZSAhPSBudWxsICYmIGUudiAhPSBudWxsICYmIGUuZSAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgYm9uZHMgPSB0aGlzLmdldE5laWdoYm9yQm9uZHMoYSk7XHJcbiAgICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgICAgbGV0IG5hcm9tYXRpYyA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gYm9uZHNbaV0udmFsZW5jZSgpO1xyXG4gICAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBpZiAodmFsID09IDEuNSkge1xyXG4gICAgICAgICAgICArK25hcm9tYXRpYztcclxuICAgICAgICAgICAgaWYgKG5hcm9tYXRpYyA+IDIpIC8vIHR3byBiZW56ZW5lLXJpbmdzXHJcbiAgICAgICAgICAgICAgc3VtICs9IDE7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBzdW0gKz0gMS41O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3VtICs9IGJvbmRzW2ldLnZhbGVuY2UoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoZSB0d28gYm9uZHMgY29ubmVjdCB0byBPIGFuZCBTIG9uIGMxY29jYzEgc2hvdWxkIGJlIHNpbmdsZSBib25kXHJcbiAgICAgICAgLy8gVE9ETzogTml0cm9nZW4gb24gYzFuY25jMTogb25lIE4gc2hvdWxkIGJlIE5ILCBhbmQgb25lIHNob3VsZCBOXHJcbiAgICAgICAgaWYgKGJvbmRzLmxlbmd0aCA9PSAyICYmIChhLmVsZW0gPT0gJ08nIHx8IGEuZWxlbSA9PSAnUycpICYmXHJcbiAgICAgICAgICBib25kc1swXS50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEICYmIGJvbmRzWzFdLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuREVMT0NBTElaRUQpIHtcclxuICAgICAgICAgIC0tc3VtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY2hhcmdlc1xyXG4gICAgICAgIGxldCBleHRyYSA9IDA7XHJcbiAgICAgICAgY29uc3QgcGFpcl9lID0gZS5lIDw9IDQgPyAwIDogZS5lICUgNDtcclxuICAgICAgICBjb25zdCBzaW5nbGVfZSA9IGUuZSA8PSA0ID8gZS5lIDogNCAtIChlLmUgJSA0KTtcclxuICAgICAgICBpZiAoYS5jaGFyZ2UgPiAwKSB7XHJcbiAgICAgICAgICBpZiAocGFpcl9lID4gMCkge1xyXG4gICAgICAgICAgICBpZiAocGFpcl9lID49IGEuY2hhcmdlKVxyXG4gICAgICAgICAgICAgIGV4dHJhID0gYS5jaGFyZ2U7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHNpbmdsZV9lID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoc2luZ2xlX2UgPj0gYS5jaGFyZ2UpXHJcbiAgICAgICAgICAgICAgZXh0cmEgLT0gYS5jaGFyZ2U7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChhLmNoYXJnZSA8IDApIHtcclxuICAgICAgICAgIGlmIChzaW5nbGVfZSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHNpbmdsZV9lID4gLWEuY2hhcmdlKVxyXG4gICAgICAgICAgICAgIGV4dHJhID0gYS5lbGVtID09ICdCJyB8fCBhLmVsZW0gPT0gJ1AnIHx8IGEuZWxlbSA9PSAnU2knID8gLWEuY2hhcmdlIDogYS5jaGFyZ2U7IC8vIEkjODcwMlxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmFkaWNhbFxyXG4gICAgICAgIGlmIChhLnJhZGljYWwgPT0gMSB8fCBhLnJhZGljYWwgPT0gMylcclxuICAgICAgICAgIHN1bSArPSAyO1xyXG4gICAgICAgIGVsc2UgaWYgKGEucmFkaWNhbCA9PSAyKVxyXG4gICAgICAgICAgKytzdW07XHJcblxyXG4gICAgICAgIC8vIGF0dGFjaCBwb2ludHNcclxuICAgICAgICBpZiAoYS5hdHRhY2hwb2ludHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmF0dGFjaHBvaW50cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBpZiAoYS5hdHRhY2hwb2ludHNbaV0gIT0gOTkpXHJcbiAgICAgICAgICAgICAgKytzdW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdW0gPSBNYXRoLmNlaWwoc3VtKTtcclxuICAgICAgICBlcnJvciA9IHRydWU7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlLnYubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgIGlmIChzdW0gPD0gZS52W2ldICsgZXh0cmEpIHtcclxuICAgICAgICAgICAgdiA9IGUudltpXSArIGV4dHJhIC0gc3VtO1xyXG4gICAgICAgICAgICBlcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhLmhhc0Vycm9yID0gZXJyb3I7XHJcbiAgICByZXR1cm4gYS5oY291bnQgPSB2O1xyXG4gIH1cclxuXHJcbiAgaGFzRXJyb3IoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmhhc0Vycm9yKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaGFzR2VuZXJpY0F0b20oKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmVsZW0gPT0gJ1InICYmIGEuYmlvID09IG51bGwgfHwgYS5zdXBlcmF0b20gIT0gbnVsbCAmJiBhLnN1cGVyYXRvbS5hdG9tcy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBib25kXHJcbiAgICogQGZ1bmN0aW9uIGZpbmRCb25kXHJcbiAgICogQHBhcmFtIHtBdG9tfSBhMSAtIHRoZSBmaXJzdCBhdG9tXHJcbiAgICogQHBhcmFtIHtBdG9tfSBhMiAtIHRoZSBzZWNvbmQgYXRvbVxyXG4gICAqIEByZXR1cm5zIHRoZSBib25kXHJcbiAgICovXHJcbiAgZmluZEJvbmQoYTEsIGEyKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLmExID09IGExICYmIGIuYTIgPT0gYTIgfHwgYi5hMSA9PSBhMiAmJiBiLmEyID09IGExKVxyXG4gICAgICAgIHJldHVybiBiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIGFsbCBvYmplY3RzIHRvIHRoZSBjZW50ZXJcclxuICAgKiBAZnVuY3Rpb24gbW92ZUNlbnRlclxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIHRoZSB3aWR0aCBvZiB0aGUgdmlld1xyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3XHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIG1vdmVDZW50ZXIod2lkdGgsIGhlaWdodCkge1xyXG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2VudGVyID0gdGhpcy5jZW50ZXIoKTtcclxuICAgIHRoaXMub2Zmc2V0KHdpZHRoID4gMCA/ICh3aWR0aCAvIDIgLSBjZW50ZXIueCkgOiAwLFxyXG4gICAgICBoZWlnaHQgPiAwID8gKGhlaWdodCAvIDIgLSBjZW50ZXIueSkgOiAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFuIHVwIHRoZSByZWFjdGlvbiwgYW5kIG1ha2UgaXQgbG9va3MgbmljZXJcclxuICAgKiBAZnVuY3Rpb24gY2xlYW51cFJ4blxyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBjbGVhbnVwUnhuKGRlZmF1bHRib25kbGVuZ3RoKSB7XHJcbiAgICBjb25zdCByeG4gPSB0aGlzLnBhcnNlUnhuKHRydWUpO1xyXG4gICAgaWYgKHJ4biA9PSBudWxsIHx8IHJ4bi5yZWFjdGFudHMubGVuZ3RoID09IDEgJiYgcnhuLnByb2R1Y3RzLmxlbmd0aCA9PSAwICYmIHJ4bi5hcnJvdyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgbGV0IGJvbmRsZW5ndGggPSB0aGlzLm1lZEJvbmRMZW5ndGgoKTtcclxuICAgIGlmICghKGJvbmRsZW5ndGggPiAwKSlcclxuICAgICAgYm9uZGxlbmd0aCA9IGRlZmF1bHRib25kbGVuZ3RoID4gMCA/IGRlZmF1bHRib25kbGVuZ3RoIDogSlNEcmF3Mi5FZGl0b3IuQk9ORExFTkdUSDtcclxuICAgIHJldHVybiB0aGlzLl9sYXlvdXRSeG4ocnhuLCBib25kbGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIF9sYXlvdXRSeG4ocnhuLCBib25kbGVuZ3RoKSB7XHJcbiAgICBjb25zdCBwbHVzZXM6IFBsdXNbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzW2ldLlQgPT0gJ1BMVVMnKVxyXG4gICAgICAgIHBsdXNlcy5wdXNoKHRoaXMuZ3JhcGhpY3NbaV0gYXMgdW5rbm93biBhcyBQbHVzKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgeCA9IG51bGw7XHJcbiAgICBsZXQgeSA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5yZWFjdGFudHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgciA9IHJ4bi5yZWFjdGFudHNbaV0ucmVjdCgpO1xyXG4gICAgICBpZiAoci53aWR0aCA9PSAwKVxyXG4gICAgICAgIHIuaW5mbGF0ZShib25kbGVuZ3RoLCAwKTtcclxuICAgICAgaWYgKHIuaGVpZ2h0ID09IDApXHJcbiAgICAgICAgci5pbmZsYXRlKDAsIGJvbmRsZW5ndGgpO1xyXG5cclxuICAgICAgaWYgKHggPT0gbnVsbCkge1xyXG4gICAgICAgIHggPSByLnJpZ2h0KCk7XHJcbiAgICAgICAgeSA9IHIuY2VudGVyKCkueTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB4ICs9IGJvbmRsZW5ndGg7XHJcbiAgICAgICAgaWYgKHBsdXNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBwbHVzID0gcGx1c2VzLnBvcCgpO1xyXG4gICAgICAgICAgcGx1cy5wID0gbmV3IEpTRHJhdzIuUG9pbnQoeCwgeSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBsdXMgPSBuZXcgSlNEcmF3Mi5QbHVzKG5ldyBKU0RyYXcyLlBvaW50KHgsIHkpKTtcclxuICAgICAgICAgIHRoaXMuX2FkZEdyYXBoaWNzKHBsdXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCArPSBib25kbGVuZ3RoO1xyXG4gICAgICAgIHJ4bi5yZWFjdGFudHNbaV0ub2Zmc2V0KHggLSByLmxlZnQsIHkgLSByLmNlbnRlcigpLnkpO1xyXG4gICAgICAgIHggKz0gci53aWR0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFycm93ID0gcnhuLmFycm93O1xyXG4gICAgaWYgKGFycm93ICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgYW5nID0gYXJyb3cucDIuYW5nbGVUbyhhcnJvdy5wMSk7XHJcbiAgICAgIGFycm93LnAyLnJvdGF0ZUFyb3VuZChhcnJvdy5wMSwgLWFuZyk7XHJcbiAgICAgIGNvbnN0IHIgPSBhcnJvdy5yZWN0KCk7XHJcbiAgICAgIGlmICh4ID09IG51bGwpIHtcclxuICAgICAgICB4ID0gci5yaWdodCgpO1xyXG4gICAgICAgIHkgPSByLmNlbnRlcigpLnk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeCArPSBib25kbGVuZ3RoO1xyXG4gICAgICAgIGFycm93Lm9mZnNldCh4IC0gci5sZWZ0LCB5IC0gci5jZW50ZXIoKS55KTtcclxuICAgICAgICB4ICs9IHIud2lkdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGFkanVzdCBhcnJvdyB3aWR0aFxyXG4gICAgICBsZXQgd2lkdGggPSAwO1xyXG4gICAgICBpZiAocnhuLmFib3ZlICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5hYm92ZS5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgdyA9IHJ4bi5hYm92ZVtpXS5fcmVjdC53aWR0aDtcclxuICAgICAgICAgIGlmICh3ID4gd2lkdGgpXHJcbiAgICAgICAgICAgIHdpZHRoID0gdztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJ4bi5iZWxvdyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByeG4uYmVsb3cubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgIGNvbnN0IHcgPSByeG4uYmVsb3dbaV0uX3JlY3Qud2lkdGg7XHJcbiAgICAgICAgICBpZiAodyA+IHdpZHRoKVxyXG4gICAgICAgICAgICB3aWR0aCA9IHc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh3aWR0aCA+IDAgJiYgd2lkdGggKyBib25kbGVuZ3RoID4gci53aWR0aCkge1xyXG4gICAgICAgIGNvbnN0IGQgPSB3aWR0aCArIGJvbmRsZW5ndGggLSByLndpZHRoO1xyXG4gICAgICAgIGFycm93LnAyLm9mZnNldChkLCAwKTtcclxuICAgICAgICB4ICs9IGQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGxheW91dCByZWFjdGlvbiBjb25kaXRpb25zIGFib3ZlL2JlbG93IGFycm93XHJcbiAgICAgIGNvbnN0IGQgPSBib25kbGVuZ3RoIC8gMTA7XHJcbiAgICAgIGNvbnN0IGNlbnRlciA9IGFycm93LnJlY3QoKS5jZW50ZXIoKTtcclxuXHJcbiAgICAgIGlmIChyeG4uYWJvdmUgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCB5MSA9IGNlbnRlci55IC0gZCAqIDI7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJ4bi5hYm92ZS5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgY29uc3QgdCA9IHJ4bi5hYm92ZVtpXTtcclxuICAgICAgICAgIHQub2Zmc2V0KGNlbnRlci54IC0gdC5fcmVjdC5jZW50ZXIoKS54LCB5MSAtIHQuX3JlY3QuYm90dG9tKCkpO1xyXG4gICAgICAgICAgeTEgPSB0Ll9yZWN0LnRvcCAtIGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocnhuLmJlbG93ICE9IG51bGwpIHtcclxuICAgICAgICBsZXQgeTIgPSBjZW50ZXIueSArIGQgKiAyO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnhuLmJlbG93Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICBjb25zdCB0ID0gcnhuLmJlbG93W2ldO1xyXG4gICAgICAgICAgdC5vZmZzZXQoY2VudGVyLnggLSB0Ll9yZWN0LmNlbnRlcigpLngsIHkyIC0gdC5fcmVjdC50b3ApO1xyXG4gICAgICAgICAgeTIgPSB0Ll9yZWN0LmJvdHRvbSgpICsgZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5wcm9kdWN0cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCByID0gcnhuLnByb2R1Y3RzW2ldLnJlY3QoKTtcclxuICAgICAgaWYgKHIud2lkdGggPT0gMClcclxuICAgICAgICByLmluZmxhdGUoYm9uZGxlbmd0aCwgMCk7XHJcbiAgICAgIGlmIChyLmhlaWdodCA9PSAwKVxyXG4gICAgICAgIHIuaW5mbGF0ZSgwLCBib25kbGVuZ3RoKTtcclxuXHJcbiAgICAgIGlmICh4ID09IG51bGwpIHtcclxuICAgICAgICB4ID0gci5yaWdodCgpO1xyXG4gICAgICAgIHkgPSByLmNlbnRlcigpLnk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgICB4ICs9IGJvbmRsZW5ndGg7XHJcbiAgICAgICAgICBpZiAocGx1c2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1cyA9IHBsdXNlcy5wb3AoKTtcclxuICAgICAgICAgICAgcGx1cy5wID0gbmV3IEpTRHJhdzIuUG9pbnQoeCwgeSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwbHVzID0gbmV3IEpTRHJhdzIuUGx1cyhuZXcgSlNEcmF3Mi5Qb2ludCh4LCB5KSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkZEdyYXBoaWNzKHBsdXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCArPSBib25kbGVuZ3RoO1xyXG4gICAgICAgIHJ4bi5wcm9kdWN0c1tpXS5vZmZzZXQoeCAtIHIubGVmdCwgeSAtIHIuY2VudGVyKCkueSk7XHJcbiAgICAgICAgeCArPSByLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbHVzZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuZGVsT2JqZWN0KHBsdXNlc1tpXSk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGNlbnRlciBjb29yaW5kYXRlIG9mIGFsbCBvYmplY3RzXHJcbiAgICogQGZ1bmN0aW9uIGNlbnRlclxyXG4gICAqIEByZXR1cm5zIHRoZSBjZW50ZXIgYXMgYSBQb2ludCBvYmplY3RcclxuICAgKi9cclxuICBjZW50ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWN0KCkuY2VudGVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIFJlY3Qgb2YgYSBHcm91cFxyXG4gICAqIEBmdW5jdGlvbiBnZXRHcm91cFJlY3RcclxuICAgKiBAcGFyYW0ge0dyb3VwfSBnIC0gdGhlIGlucHV0IGdyb3VwXHJcbiAgICogQHJldHVybnMgYSBSZWN0IG9iamVjdFxyXG4gICAqL1xyXG4gIGdldEdyb3VwUmVjdChnLCBib25kbGVuZ3RoKSB7XHJcbiAgICBsZXQgciA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmdyb3VwICE9IGcgfHwgYS5oaWRkZW4pXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCBwID0gYS5wO1xyXG4gICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgIHIgPSBuZXcgSlNEcmF3Mi5SZWN0KHAueCwgcC55LCAwLCAwKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHIudW5pb25Qb2ludChwKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgZzIgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoZzIuZ3JvdXAgIT0gZylcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IHJlY3QgPSBKU0RyYXcyLkdyb3VwLmNhc3QoZzIpICE9IG51bGwgPyB0aGlzLmdldEdyb3VwUmVjdChnMiwgYm9uZGxlbmd0aCkgOiBnMi5yZWN0KCk7XHJcbiAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgciA9IHJlY3QuY2xvbmUoKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHIudW5pb24ocmVjdCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHIgIT0gbnVsbCAmJiBnLmdhcCA+IDApXHJcbiAgICAgIHIuaW5mbGF0ZShnLmdhcCAqIGJvbmRsZW5ndGggLyAxNS4wLCBnLmdhcCAqIGJvbmRsZW5ndGggLyAxNS4wKTtcclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBSZWN0IG9mIHNlbGVjdGVkIGF0b21zXHJcbiAgICogQGZ1bmN0aW9uIGdldFNlbGVjdGVkUmVjdFxyXG4gICAqIEByZXR1cm5zIGEgUmVjdCBvYmplY3RcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZFJlY3QoKSB7XHJcbiAgICBsZXQgciA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKCF0aGlzLmF0b21zW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgcCA9IHRoaXMuYXRvbXNbaV0ucDtcclxuICAgICAgaWYgKHIgPT0gbnVsbClcclxuICAgICAgICByID0gbmV3IEpTRHJhdzIuUmVjdChwLngsIHAueSwgMCwgMCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByLnVuaW9uUG9pbnQocCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgUmVjdCBvZiBhbGwgb2JqZWN0XHJcbiAgICogQGZ1bmN0aW9uIHJlY3RcclxuICAgKiBAcmV0dXJucyBhIFJlY3Qgb2JqZWN0XHJcbiAgICovXHJcbiAgcmVjdCh3aXRob3V0Umdyb3Vwcz86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmF0b21zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICBjb25zdCByOiBSZWN0ID0gdGhpcy5ncmFwaGljc1swXS5yZWN0KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSlcclxuICAgICAgICByLnVuaW9uKHRoaXMuZ3JhcGhpY3NbaV0ucmVjdCgpKTtcclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHgxID0gbnVsbDtcclxuICAgIGxldCB5MSA9IG51bGw7XHJcbiAgICBsZXQgeDIgPSBudWxsO1xyXG4gICAgbGV0IHkyID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmhpZGRlbilcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IHAgPSBhLnA7XHJcbiAgICAgIGlmICh4MSA9PSBudWxsKSB7XHJcbiAgICAgICAgeDEgPSB4MiA9IHAueDtcclxuICAgICAgICB5MSA9IHkyID0gcC55O1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocC54IDwgeDEpXHJcbiAgICAgICAgeDEgPSBwLng7XHJcbiAgICAgIGVsc2UgaWYgKHAueCA+IHgyKVxyXG4gICAgICAgIHgyID0gcC54O1xyXG5cclxuICAgICAgaWYgKHAueSA8IHkxKVxyXG4gICAgICAgIHkxID0gcC55O1xyXG4gICAgICBlbHNlIGlmIChwLnkgPiB5MilcclxuICAgICAgICB5MiA9IHAueTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByOiBSZWN0ID0gbmV3IEpTRHJhdzIuUmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoSlNEcmF3Mi5Hcm91cC5jYXN0KGcpICE9IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIHIudW5pb24oZy5yZWN0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghd2l0aG91dFJncm91cHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgICAgaWYgKGEucmdyb3VwID09IG51bGwpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICByLnVuaW9uKGEucmdyb3VwLnJlY3QoKSk7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgci51bmlvbihhLnJncm91cC5tb2xzW2pdLnJlY3QoKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgYWxsIG9iamVjdHNcclxuICAgKiBAZnVuY3Rpb24gb2Zmc2V0XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGR4IC0geCBvZmZzZXRcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZHkgLSB5IG9mZnNldFxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gc2VsZWN0ZWRPbmx5IC0gaW5kaWNhdGVkIGlmIG1vdmluZyBvbmx5IHNlbGVjdGVkIG9iamVjdHNcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgb2Zmc2V0KGR4LCBkeSwgc2VsZWN0ZWRPbmx5PzogYm9vbGVhbikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPbmx5ICE9IHRydWUgfHwgYS5zZWxlY3RlZClcclxuICAgICAgICBhLnAub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT25seSAhPSB0cnVlIHx8IGEucmdyb3VwLnNlbGVjdGVkKVxyXG4gICAgICAgICAgYS5yZ3JvdXAub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgYS5yZ3JvdXAubW9sc1tqXS5vZmZzZXQoZHgsIGR5LCBzZWxlY3RlZE9ubHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPbmx5ICE9IHRydWUgfHwgZy5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuZ3JhcGhpY3NbaV0ub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT25seSAmJiAhZy5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgY29uc3QgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KGcpO1xyXG4gICAgICAgICAgaWYgKHQgIT0gbnVsbCAmJiB0LmFuY2hvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgYWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0LmFuY2hvcnMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgICAgICBpZiAoIXQuYW5jaG9yc1tqXS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFsbCkge1xyXG4gICAgICAgICAgICAgIHQuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHQub2Zmc2V0KGR4LCBkeSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJvdGF0ZSBhbGwgb2JqZWN0cyBhcm91bmQgYSBwb2ludFxyXG4gICAqIEBmdW5jdGlvbiByb3RhdGVcclxuICAgKiBAcGFyYW0ge1BvaW50fSBvcmlnaW4gLSB0aGUgcG9zaXRpb24gdG8gYmUgcm90YXRlZCBhcm91bmRcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVnIC0gZGVncmVlcyB0byBiZSByb3RhdGVkXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHJvdGF0ZShvcmlnaW4sIGRlZykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmF0b21zW2ldLnAucm90YXRlQXJvdW5kKG9yaWdpbiwgZGVnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhbiBvYmplY3RcclxuICAgKiBAZnVuY3Rpb24gZGVsT2JqZWN0XHJcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iaiAtIEF0b20sIGJvbmQsIG9yIGdyYXBoaWNzIHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgZGVsT2JqZWN0KG9iaikge1xyXG4gICAgaWYgKG9iaiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYSA9IEpTRHJhdzIuQXRvbS5jYXN0KG9iaik7XHJcbiAgICBpZiAoYSAhPSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5kZWxBdG9tKGEpO1xyXG5cclxuICAgIGNvbnN0IGIgPSBKU0RyYXcyLkJvbmQuY2FzdChvYmopO1xyXG4gICAgaWYgKGIgIT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuZGVsQm9uZChiKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kZWxHcmFwaGljcyhvYmopO1xyXG4gIH1cclxuXHJcbiAgZGVsR3JhcGhpY3Mob2JqKSB7XHJcbiAgICBjb25zdCBncm91cCA9IEpTRHJhdzIuR3JvdXAuY2FzdChvYmopO1xyXG4gICAgaWYgKGdyb3VwICE9IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXRvbXNbaV0uZ3JvdXAgPT0gZ3JvdXApXHJcbiAgICAgICAgICB0aGlzLmF0b21zW2ldLmdyb3VwID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JhcGhpY3NbaV0uZ3JvdXAgPT0gZ3JvdXApXHJcbiAgICAgICAgICB0aGlzLmdyYXBoaWNzW2ldLmdyb3VwID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5ncmFwaGljc1tpXSA9PSBvYmopIHtcclxuICAgICAgICB0aGlzLmdyYXBoaWNzLnNwbGljZShpLCAxKTtcclxuICAgICAgICB0aGlzLm9iamVjdFJlbW92ZWQob2JqKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsQXRvbShhOiBBdG9tPFRCaW8+LCBjaGVja0JvbmRzPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgYXRvbXMgPSBbXTtcclxuICAgIGF0b21zLnB1c2goYSk7XHJcblxyXG4gICAgaWYgKGNoZWNrQm9uZHMgIT0gZmFsc2UpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IHRoaXMuYm9uZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgICBpZiAoYi5hMSA9PSBhIHx8IGIuYTIgPT0gYSkge1xyXG4gICAgICAgICAgdGhpcy5ib25kcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICB0aGlzLm9iamVjdFJlbW92ZWQoYik7XHJcbiAgICAgICAgICBhdG9tcy5wdXNoKGIub3RoZXJBdG9tKGEpKTtcclxuICAgICAgICAgIGlmIChhLmF0b21tYXBpZCAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQXRvbU1hcChhLmF0b21tYXBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG4gPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhMSA9IGF0b21zW2ldO1xyXG4gICAgICBpZiAoYSA9PSBhMSB8fCAhYTEuYmlvKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVsTG9uZUF0b20oYXRvbXNbaV0pKVxyXG4gICAgICAgICAgKytuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbiA+IDA7XHJcbiAgfVxyXG5cclxuICBkZWxCb25kKGIsIGRlbExvbmVBdG9tPzogYm9vbGVhbikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmJvbmRzW2ldID09IGIpIHtcclxuICAgICAgICB0aGlzLmJvbmRzLnNwbGljZShpLCAxKTtcclxuICAgICAgICBpZiAoZGVsTG9uZUF0b20gIT0gZmFsc2UpIHtcclxuICAgICAgICAgIGlmICghYi5hMS5iaW8pXHJcbiAgICAgICAgICAgIHRoaXMuZGVsTG9uZUF0b20oYi5hMSk7XHJcbiAgICAgICAgICBpZiAoIWIuYTIuYmlvKVxyXG4gICAgICAgICAgICB0aGlzLmRlbExvbmVBdG9tKGIuYTIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9iamVjdFJlbW92ZWQoYik7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZWxMb25lQXRvbShhKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNMb25lQXRvbShhKSkge1xyXG4gICAgICB0aGlzLnNldEhDb3VudChhKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5hdG9tc1tpXSA9PSBhKSB7XHJcbiAgICAgICAgdGhpcy5hdG9tcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgaWYgKGEuYXRvbW1hcGlkICE9IG51bGwpXHJcbiAgICAgICAgICB0aGlzLmNsZWFyQXRvbU1hcChhLmF0b21tYXBpZCk7XHJcbiAgICAgICAgdGhpcy5vYmplY3RSZW1vdmVkKGEpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0UmVtb3ZlZChvYmopIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBnID0gdGhpcy5ncmFwaGljc1tpXTtcclxuICAgICAgaWYgKGcucmVtb3ZlT2JqZWN0ICE9IG51bGwpXHJcbiAgICAgICAgZy5yZW1vdmVPYmplY3Qob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAodGhpcy5hdG9tc1tpXS5zZWxlY3RlZClcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoYS5yZ3JvdXAuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGEucmdyb3VwLm1vbHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgICAgaWYgKGEucmdyb3VwLm1vbHNbal0uaGFzU2VsZWN0ZWQoKSlcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYm9uZHNbaV0uc2VsZWN0ZWQpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbFNlbGVjdGVkKCkge1xyXG4gICAgbGV0IG4gPSAwO1xyXG5cclxuICAgIGNvbnN0IGF0b21zID0gc2NpbC5jbG9uZSh0aGlzLmF0b21zKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IGF0b21zW2ldO1xyXG4gICAgICBpZiAoYS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuZGVsQXRvbShhdG9tc1tpXSk7XHJcbiAgICAgICAgKytuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYS5yZ3JvdXAgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChhLnJncm91cC5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgYS5yZ3JvdXAgPSBudWxsO1xyXG4gICAgICAgICAgKytuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGEucmdyb3VwLm1vbHMubGVuZ3RoOyArK2opXHJcbiAgICAgICAgICAgIG4gKz0gYS5yZ3JvdXAubW9sc1tqXS5kZWxTZWxlY3RlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvbmRzID0gc2NpbC5jbG9uZSh0aGlzLmJvbmRzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGJvbmRzW2ldLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5kZWxCb25kKGJvbmRzW2ldKTtcclxuICAgICAgICArK247XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBncmFwaGljcyA9IHNjaWwuY2xvbmUodGhpcy5ncmFwaGljcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChncmFwaGljc1tpXS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuZGVsT2JqZWN0KGdyYXBoaWNzW2ldKTtcclxuICAgICAgICArK247XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbjtcclxuICB9XHJcblxyXG4gIHNldEJvbmRMZW5ndGgoZCkge1xyXG4gICAgY29uc3QgcyA9IGQgLyB0aGlzLm1lZEJvbmRMZW5ndGgoKTtcclxuICAgIGlmIChpc05hTihzKSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5zY2FsZShzKTtcclxuICB9XHJcblxyXG4gIGdldFNrZXRjaFR5cGUoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYXRvbXNbaV0uYmlvICE9IG51bGwpXHJcbiAgICAgICAgcmV0dXJuICdiaW9sb2dpY3MnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaXNSeG4oKSA/ICdyZWFjdGlvbicgOiAnbW9sZWN1bGUnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2UgYW5vdGhlciBNb2xlY3VsZVxyXG4gICAqIEBmdW5jdGlvbiBtZXJnZU1vbFxyXG4gICAqIEBwYXJhbSB7TW9sfSBtIC0gdGhlIE1vbGVjdWxlIHRvIGJlIG1lcmdlZFxyXG4gICAqL1xyXG4gIG1lcmdlTW9sKG0sIF9wYXJlbnQ/OiBhbnksIGdyb3VwPzogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0uYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdGhpcy5hZGRBdG9tKG0uYXRvbXNbaV0pO1xyXG4gICAgICBpZiAoZ3JvdXAgIT0gbnVsbClcclxuICAgICAgICBtLmF0b21zW2ldLmdyb3VwID0gZ3JvdXA7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSBtLmJvbmRzW2ldO1xyXG4gICAgICBpZiAodGhpcy5maW5kQm9uZChiLmExLCBiLmEyKSA9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuYWRkQm9uZChiLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmdyYXBoaWNzLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmFkZEdyYXBoaWNzKG0uZ3JhcGhpY3NbaV0pO1xyXG5cclxuICAgIHRoaXMuX3NldFBhcmVudCh0aGlzKTtcclxuICB9XHJcblxyXG4gIHJlcGxhY2VBdG9tKG9sZCwgbmV3YSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmF0b21zW2ldID09IG9sZCkge1xyXG4gICAgICAgIHRoaXMuYXRvbXNbaV0gPSBuZXdhO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmJvbmRzW2ldO1xyXG4gICAgICBpZiAoYi5hMSA9PSBvbGQpXHJcbiAgICAgICAgYi5hMSA9IG5ld2E7XHJcbiAgICAgIGlmIChiLmEyID09IG9sZClcclxuICAgICAgICBiLmEyID0gbmV3YTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldEhDb3VudChuZXdhKTtcclxuICB9XHJcblxyXG4gIHJlcGxhY2VCb25kKG9sZCwgbmV3Yikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmJvbmRzW2ldID09IG9sZCkge1xyXG4gICAgICAgIHRoaXMuYm9uZHNbaV0gPSBuZXdiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXBsYWNlQXRvbShvbGQuYTEsIG5ld2IuYTEpO1xyXG4gICAgdGhpcy5yZXBsYWNlQXRvbShvbGQuYTIsIG5ld2IuYTIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZ3JhcGhpY3NcclxuICAgKiBAZnVuY3Rpb24gYWRkR3JhcGhpY3NcclxuICAgKiBAcGFyYW0ge0dyYXBoaWNzfSBnIC0gdGhlIGdyYXBoaWNzIHRvIGJlIGFkZGVkXHJcbiAgICogQHJldHVybnMgdGhlIEdyYXBoaWNzIGFkZGVkXHJcbiAgICovXHJcbiAgYWRkR3JhcGhpY3MoZykge1xyXG4gICAgaWYgKHRoaXMuaGFzR3JhcGhpY3MoZykpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHRoaXMuX2FkZEdyYXBoaWNzKGcpO1xyXG4gICAgcmV0dXJuIGc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYW4gQXRvbVxyXG4gICAqIEBmdW5jdGlvbiBhZGRBdG9tXHJcbiAgICogQHBhcmFtIHtBdG9tfSBhIC0gdGhlIGF0b20gdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyB0aGUgQXRvbSBhZGRlZFxyXG4gICAqL1xyXG4gIGFkZEF0b20oYSkge1xyXG4gICAgaWYgKHRoaXMuaGFzQXRvbShhKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgdGhpcy5fYWRkQXRvbShhKTtcclxuICAgIHJldHVybiBhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgQm9uZFxyXG4gICAqIEBmdW5jdGlvbiBhZGRCb25kXHJcbiAgICogQHBhcmFtIHtCb25kfSBiIC0gdGhlIGJvbmQgdG8gYmUgYWRkZWRcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHJlc2V0Y2hhcmdlIC0gaW5kaWNhdGUgaWYgcmVzZXQgYXRvbXMnIGNoYXJnZXMgb2YgYm9uZGVkIGF0b21zXHJcbiAgICogQHJldHVybnMgdGhlIEJvbmQgYWRkZWRcclxuICAgKi9cclxuICBhZGRCb25kKGI6IEJvbmQ8VEJpbz4sIHJlc2V0Y2hhcmdlPzogYm9vbGVhbiwgYWRkMnJncm91cD86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmhhc0JvbmQoYikpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmIChiLmExLm1vbCAhPSBiLmEyLm1vbCkge1xyXG4gICAgICBpZiAoYWRkMnJncm91cCkge1xyXG4gICAgICAgIHRoaXMuX2FkZEJvbmQyUkdyb3VwTW9sKGIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjaWwuVXRpbHMuYWxlcnQoJ0Nhbm5vdCBjcmVhdGUgdGhpcyBib25kJyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9hZGRCb25kKGIpO1xyXG4gICAgaWYgKHJlc2V0Y2hhcmdlICE9IGZhbHNlICYmIGIudHlwZSAhPSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWSlcclxuICAgICAgYi5hMS5jaGFyZ2UgPSBiLmEyLmNoYXJnZSA9IDA7XHJcblxyXG4gICAgaWYgKGIuYTEuYWxpYXMgPT0gJ01lJylcclxuICAgICAgYi5hMS5hbGlhcyA9IG51bGw7XHJcbiAgICBpZiAoYi5hMi5hbGlhcyA9PSAnTWUnKVxyXG4gICAgICBiLmEyLmFsaWFzID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldEhDb3VudChiLmExKTtcclxuICAgIHRoaXMuc2V0SENvdW50KGIuYTIpO1xyXG4gICAgcmV0dXJuIGI7XHJcbiAgfVxyXG5cclxuICBfYWRkQm9uZDJSR3JvdXBNb2woYikge1xyXG4gICAgY29uc3QgbSA9IGIuYTEuX3BhcmVudCB8fCBiLmEyLl9wYXJlbnQ7XHJcbiAgICBpZiAobSA9PSBudWxsIHx8IGIuYTEuX3BhcmVudCA9PSBiLl9wYXJlbnQgJiYgYi5hMi5fcGFyZW50ID09IGIuYTEuX3BhcmVudClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChiLmExLl9wYXJlbnQgPT0gbnVsbCkge1xyXG4gICAgICBtLmFkZEF0b20oYi5hMSk7XHJcbiAgICAgIGIuYTEuX3BhcmVudCA9IG07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGIuYTIuX3BhcmVudCA9PSBudWxsKSB7XHJcbiAgICAgIG0uYWRkQXRvbShiLmEyKTtcclxuICAgICAgYi5hMi5fcGFyZW50ID0gbTtcclxuICAgIH1cclxuXHJcbiAgICBtLmFkZEJvbmQoYik7XHJcbiAgICBiLl9wYXJlbnQgPSBtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGF0b20gYWxpYXNcclxuICAgKiBAZnVuY3Rpb24gc2V0QXRvbUFsaWFzXHJcbiAgICogQHBhcmFtIHtBdG9tfSBhIC0gdGhlIHRhcmdldCBhdG9tXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWFzIC0gYWxpYXMgbmFtZVxyXG4gICAqIEByZXR1cm5zIHRydWUgb2YgZmFsc2VcclxuICAgKi9cclxuICBzZXRBdG9tQWxpYXMoYSwgYWxpYXMsIGxlbj86IG51bWJlcikge1xyXG4gICAgaWYgKGFsaWFzID09IG51bGwgfHwgYWxpYXMgPT0gJycpXHJcbiAgICAgIHJldHVybiB0aGlzLnNldEF0b21UeXBlKGEsIGFsaWFzKTtcclxuXHJcbiAgICBpZiAoYS5hbGlhcyA9PSBhbGlhcylcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGxldCBlbGVtID0gJyonO1xyXG4gICAgbGV0IG0gPSBKU0RyYXcyLlN1cGVyQXRvbXMuZ2V0KGFsaWFzKTtcclxuICAgIGlmIChtID09IG51bGwpIHtcclxuICAgICAgY29uc3QgYWxpYXMyID0gYWxpYXMucmVwbGFjZSgvXltcXCt8XFwtXS8sICcnKS5yZXBsYWNlKC9bXFwrfFxcLV0kLywgJycpO1xyXG4gICAgICBpZiAoSlNEcmF3Mi5QVFthbGlhczJdICE9IG51bGwgfHwgKC9eUlswLTldKyQvKS50ZXN0KGFsaWFzKSlcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRBdG9tVHlwZShhLCBhbGlhcyk7XHJcblxyXG4gICAgICBjb25zdCBzID0gSlNEcmF3Mi5TdXBlckF0b21zLmd1ZXNzT25lKGFsaWFzKTtcclxuICAgICAgaWYgKHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGFsaWFzID0gcztcclxuICAgICAgICBtID0gSlNEcmF3Mi5TdXBlckF0b21zLmdldChhbGlhcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gbGVhZGluZyBPIG9yIFNcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXROZWlnaGJvckJvbmRzKGEpO1xyXG4gICAgICAgIGNvbnN0IG9ycGhhbiA9IGxpc3QgPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA9PSAwIHx8IGxpc3QubGVuZ3RoID09IDEgJiYgbGlzdFswXS50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZO1xyXG4gICAgICAgIG0gPSBKU0RyYXcyLkZvcm11bGFQYXJzZXIucGFyc2UoYWxpYXMsIG9ycGhhbiwgbGlzdC5sZW5ndGgpO1xyXG4gICAgICAgIGlmIChtICE9IG51bGwgJiYgbS5hdG9tcy5sZW5ndGggPT0gMClcclxuICAgICAgICAgIHJldHVybiB0aGlzLnNldEF0b21UeXBlKGEsIG0uYXRvbXNbMF0uZWxlbSk7XHJcblxyXG4gICAgICAgIGlmIChvcnBoYW4pIHtcclxuICAgICAgICAgIGNvbnN0IHNhbHQgPSBKU0RyYXcyLkZvcm11bGFQYXJzZXIucGFyc2VTYWx0KGFsaWFzKTtcclxuICAgICAgICAgIGlmIChzYWx0ICE9IG51bGwpXHJcbiAgICAgICAgICAgIGVsZW0gPSAnIyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYS5pc290b3BlID0gbnVsbDtcclxuICAgIGEucXVlcnkgPSBudWxsO1xyXG4gICAgYS5oY291bnQgPSBudWxsO1xyXG4gICAgYS5yYWRpY2FsID0gbnVsbDtcclxuICAgIGEuY2hhcmdlID0gMDtcclxuICAgIGEuYWxpYXMgPSBhbGlhcztcclxuICAgIGlmIChtICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgYXR0YWNoID0gSlNEcmF3Mi5TdXBlckF0b21zLl9nZXRGaXJzdEF0dGFjaEF0b20obSk7XHJcbiAgICAgIGlmIChhdHRhY2ggIT0gbnVsbClcclxuICAgICAgICBKU0RyYXcyLlN1cGVyQXRvbXMuX2FsaWduTW9sKGEuX3BhcmVudCwgYSwgbSwgYXR0YWNoLCBsZW4gIT0gbnVsbCA/IGxlbiA6IHRoaXMubWVkQm9uZExlbmd0aCgxLjU2KSk7XHJcbiAgICAgIGEuc3VwZXJhdG9tID0gbTtcclxuICAgICAgYS5yZ3JvdXAgPSBudWxsO1xyXG4gICAgICBhLmVsZW0gPSBlbGVtO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCFzY2lsLlV0aWxzLmlzTnVsbE9yRW1wdHkoYWxpYXMpKVxyXG4gICAgICAgIGEuZWxlbSA9IGVsZW07XHJcblxyXG4gICAgICBpZiAoYS5lbGVtID09ICdSJylcclxuICAgICAgICBhLnVwZGF0ZVJHcm91cCgpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYS5yZ3JvdXAgPT0gbnVsbDtcclxuICAgICAgYS5zdXBlcmF0b20gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRIQ291bnQoYSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNldEF0dGFjaFBvaW50KGEsIGFwbykge1xyXG4gICAgaWYgKGFwbyA+IDAgJiYgIShhLmF0dGFjaHBvaW50cy5sZW5ndGggPT0gMSAmJiBhLmF0dGFjaHBvaW50c1swXSA9PSBhcG8pKSB7XHJcbiAgICAgIGEuYXR0YWNocG9pbnRzID0gW2Fwb107XHJcbiAgICAgIGEuX3BhcmVudC5zZXRIQ291bnQoYSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGF0b20gdHlwZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRBdG9tVHlwZVxyXG4gICAqIEBwYXJhbSB7QXRvbX0gYSAtIHRoZSB0YXJnZXQgYXRvbVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbGVtIC0gZWxlbWVudCBzeW1ib2wgb2YgYXRvbVxyXG4gICAqIEByZXR1cm5zIHRydWUgb2YgZmFsc2VcclxuICAgKi9cclxuICBzZXRBdG9tVHlwZShhOiBBdG9tPFRCaW8+LCBlbGVtOiBzdHJpbmcsIHNldENoYXJnZT86IGJvb2xlYW4pIHtcclxuICAgIGlmIChlbGVtID09ICdhbnRpYm9keScgfHwgZWxlbSA9PSAncHJvdGVpbicgfHwgZWxlbSA9PSAnZ2VuZScgfHwgZWxlbSA9PSAnZG5hJyB8fCBlbGVtID09ICdybmEnKSB7XHJcbiAgICAgIGlmIChhLmJpb3R5cGUoKSA9PSBKU0RyYXcyLkJJTy5BTlRJQk9EWSB8fCBhLmJpb3R5cGUoKSA9PSBKU0RyYXcyLkJJTy5QUk9URUlOIHx8IGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkdFTkUgfHwgYS5iaW90eXBlKCkgPT0gSlNEcmF3Mi5CSU8uRE5BIHx8IGEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLlJOQSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHN3aXRjaCAoZWxlbSkge1xyXG4gICAgICBjYXNlICdhbnRpYm9keSc6XHJcbiAgICAgICAgYS5iaW8gPSB7dHlwZTogSlNEcmF3Mi5CSU8uQU5USUJPRFkgYXMgVEJpb307XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb3RlaW4nOlxyXG4gICAgICAgIGEuYmlvID0ge3R5cGU6IEpTRHJhdzIuQklPLlBST1RFSU4gYXMgVEJpb307XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dlbmUnOlxyXG4gICAgICAgIGEuYmlvID0ge3R5cGU6IEpTRHJhdzIuQklPLkdFTkUgYXMgVEJpb307XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RuYSc6XHJcbiAgICAgICAgYS5iaW8gPSB7dHlwZTogSlNEcmF3Mi5CSU8uRE5BIGFzIFRCaW99O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdybmEnOlxyXG4gICAgICAgIGEuYmlvID0ge3R5cGU6IEpTRHJhdzIuQklPLlJOQSBhcyBUQmlvfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBhLmVsZW0gPSAnWCc7XHJcbiAgICAgIGEuaXNvdG9wZSA9IG51bGw7XHJcbiAgICAgIGEucXVlcnkgPSBudWxsO1xyXG4gICAgICBhLmhjb3VudCA9IG51bGw7XHJcbiAgICAgIGEucmFkaWNhbCA9IG51bGw7XHJcbiAgICAgIGEuY2hhcmdlID0gMDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNoYXJnZSA9IG51bGw7XHJcbiAgICBpZiAoZWxlbS5sZW5ndGggPiAxICYmIC9bXFwrfFxcLV1bMC05XT8kLy50ZXN0KGVsZW0pKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBlbGVtLnJlcGxhY2UoL1tcXCt8XFwtXVswLTldPyQvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGNzID0gZWxlbS5zdWJzdHIocy5sZW5ndGgpO1xyXG4gICAgICBlbGVtID0gcztcclxuICAgICAgaWYgKGNzID09ICcrJylcclxuICAgICAgICBjaGFyZ2UgPSAxO1xyXG4gICAgICBlbHNlIGlmIChjcyA9PSAnLScpXHJcbiAgICAgICAgY2hhcmdlID0gLTE7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjaGFyZ2UgPSBwYXJzZUludChjcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGEuZWxlbSA9PSBlbGVtICYmIChlbGVtID09ICdIJyAmJiBhLmlzb3RvcGUgPT0gbnVsbCkgfHwgYS5iaW8pXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBhbGlhcyA9IG51bGw7XHJcbiAgICBsZXQgZSA9IGVsZW0gPT0gJ0QnIHx8IGVsZW0gPT0gJ1QnID8gJ0gnIDogZWxlbTtcclxuICAgIGlmICgoL15SWzAtOV0rJC8pLnRlc3QoZWxlbSkpIHtcclxuICAgICAgZSA9ICdSJztcclxuICAgICAgYWxpYXMgPSBlbGVtO1xyXG4gICAgfVxyXG4gICAgaWYgKEpTRHJhdzIuUFRbZV0gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IG9sZGVsZW0gPSBhLmVsZW07XHJcbiAgICBhLmVsZW0gPSBlO1xyXG4gICAgaWYgKGUgIT0gJ1InKVxyXG4gICAgICBhLnJncm91cCA9IG51bGw7XHJcbiAgICBhLmFsaWFzID0gYWxpYXM7XHJcbiAgICBhLnN1cGVyYXRvbSA9IG51bGw7XHJcbiAgICBpZiAoZWxlbSA9PSAnRCcpXHJcbiAgICAgIGEuaXNvdG9wZSA9IDI7XHJcbiAgICBlbHNlIGlmIChlbGVtID09ICdUJylcclxuICAgICAgYS5pc290b3BlID0gMztcclxuICAgIGVsc2VcclxuICAgICAgYS5pc290b3BlID0gbnVsbDtcclxuICAgIGEucXVlcnkgPSBudWxsO1xyXG5cclxuICAgIGlmIChjaGFyZ2UgPiAwIHx8IGNoYXJnZSA8IDApXHJcbiAgICAgIGEuY2hhcmdlID0gY2hhcmdlO1xyXG4gICAgZWxzZSBpZiAoc2V0Q2hhcmdlKVxyXG4gICAgICBhLmNoYXJnZSA9IDA7XHJcblxyXG4gICAgaWYgKG9sZGVsZW0gPT0gJ0AnKSB7XHJcbiAgICAgIGEuYWxpYXMgPSBudWxsO1xyXG4gICAgICBhLmJpbyA9IG51bGw7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEFsbEJvbmRzKGEpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjb25zdCBiID0gbGlzdFtpXTtcclxuICAgICAgICBpZiAoYi50eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZKVxyXG4gICAgICAgICAgc2NpbC5VdGlscy5yZW1vdmVBcnJheUl0ZW0odGhpcy5ib25kcywgYik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhLl9wYXJlbnQuc2V0SENvdW50KGEpO1xyXG4gICAgaWYgKGUgPT0gJ1InKVxyXG4gICAgICBhLnVwZGF0ZVJHcm91cCgpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgYXRvbSBjaGFyZ2VzXHJcbiAgICogQGZ1bmN0aW9uIHNldEF0b21DaGFyZ2VcclxuICAgKiBAcGFyYW0ge0F0b219IGEgLSB0aGUgdGFyZ2V0IGF0b21cclxuICAgKiBAcGFyYW0ge251bWJlcn0gY2hhcmdlIC0gY2hhcmdlc1xyXG4gICAqIEByZXR1cm5zIHRydWUgb2YgZmFsc2VcclxuICAgKi9cclxuICBzZXRBdG9tQ2hhcmdlKGEsIGNoYXJnZSkge1xyXG4gICAgaWYgKGNoYXJnZSA9PSBudWxsIHx8IGlzTmFOKGNoYXJnZSkgfHwgYS5iaW8pXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGNoYXJnZSA9IE1hdGgucm91bmQoY2hhcmdlKTtcclxuICAgIGlmIChhLmNoYXJnZSA9PSBjaGFyZ2UpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGEuY2hhcmdlID0gY2hhcmdlO1xyXG4gICAgYS5fcGFyZW50LnNldEhDb3VudChhKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGJvbmQgdHlwZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRCb25kVHlwZVxyXG4gICAqIEBwYXJhbSB7Qm9uZH0gYiAtIHRoZSB0YXJnZXQgYm9uZFxyXG4gICAqIEBwYXJhbSB7Qk9ORFRZUEVTfSB0eXBlIC0gcHJlZGVmaW5lZCBib25kIHR5cGVcclxuICAgKiBAcmV0dXJucyB0cnVlIG9mIGZhbHNlXHJcbiAgICovXHJcbiAgc2V0Qm9uZFR5cGUoYiwgdHlwZSkge1xyXG4gICAgaWYgKGIuYTEuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkFBICYmIGIuYTIuYmlvdHlwZSgpID09IEpTRHJhdzIuQklPLkFBKSB7XHJcbiAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRElTVUxGSURFICYmIHR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERSAmJiB0eXBlID09IEpTRHJhdzIuQk9ORFRZUEVTLkRJU1VMRklERSkge1xyXG4gICAgICAgIGIudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlIDwgSlNEcmF3Mi5CT05EVFlQRVMuVU5LTk9XTiAmJiB0eXBlID4gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFT1JBUk9NQVRJQyB8fCBiLmExLmJpbyB8fCBiLmEyLmJpbylcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGIudHlwZSA9IHR5cGU7XHJcbiAgICAgIGIuX3BhcmVudC5zZXRIQ291bnQoYi5hMSk7XHJcbiAgICAgIGIuX3BhcmVudC5zZXRIQ291bnQoYi5hMik7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNMb25lQXRvbShhKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLmExID09IGEgfHwgYi5hMiA9PSBhKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG1lZEJvbmRMZW5ndGgoZGVmYXVsdFZhbHVlPzogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmJvbmRzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG5cclxuICAgIGxldCBzdGVwID0gTWF0aC5mbG9vcih0aGlzLmJvbmRzLmxlbmd0aCAvIDEwKTtcclxuICAgIGlmIChzdGVwID09IDApXHJcbiAgICAgIHN0ZXAgPSAxO1xyXG5cclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7IGkgKz0gc3RlcCkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgbGlzdC5wdXNoKGIuYTEucC5kaXN0VG8oYi5hMi5wKSk7XHJcbiAgICB9XHJcbiAgICBpZiAobGlzdC5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuIDEuNTtcclxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAxKVxyXG4gICAgICByZXR1cm4gbGlzdFswXSA8PSAwID8gMS41IDogbGlzdFswXTtcclxuXHJcbiAgICBsaXN0LnNvcnQoKTtcclxuICAgIGNvbnN0IGQgPSBsaXN0W01hdGgucm91bmQobGlzdC5sZW5ndGggLyAyKV07XHJcbiAgICByZXR1cm4gZCA8PSAwID8gMS41IDogZDtcclxuICB9XHJcblxyXG4gIF9oYXNEb3VibGVCb25kcyhhKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFICYmIChiLmExID09IGEgfHwgYi5hMiA9PSBhKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldE5laWdoYm9yQXRvbXMoYTogQXRvbTxUQmlvPiwgb2E/OiBBdG9tPFRCaW8+LCBleGNsdWRlRHVtbXlCb25kPzogYm9vbGVhbik6IEF0b208VEJpbz5bXSB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChleGNsdWRlRHVtbXlCb25kICYmIGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWSlcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGlmIChiLmExID09IGEpIHtcclxuICAgICAgICBpZiAoYi5hMiAhPSBvYSlcclxuICAgICAgICAgIGxpc3QucHVzaChiLmEyKTtcclxuICAgICAgfSBlbHNlIGlmIChiLmEyID09IGEpIHtcclxuICAgICAgICBpZiAoYi5hMSAhPSBvYSlcclxuICAgICAgICAgIGxpc3QucHVzaChiLmExKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXROZWlnaGJvckJvbmRzKGEsIGV4Y2x1ZGVEdW1teUJvbmRzPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmJvbmRzW2ldO1xyXG4gICAgICBpZiAoKGIuYTEgPT0gYSB8fCBiLmEyID09IGEpICYmXHJcbiAgICAgICAgKCFleGNsdWRlRHVtbXlCb25kcyB8fCBiLnR5cGUgIT0gSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVkgJiYgYi50eXBlICE9IEpTRHJhdzIuQk9ORFRZUEVTLlVOS05PV04pKVxyXG4gICAgICAgIGxpc3QucHVzaChiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBoeWRyb2dlbiBhdG9tc1xyXG4gICAqIEBmdW5jdGlvbiByZW1vdmVIeWRyb2dlbnNcclxuICAgKiBAcmV0dXJucyB0aGUgY291bnQgb2YgcmVtb3ZlZCBhdG9tc1xyXG4gICAqL1xyXG4gIHJlbW92ZUh5ZHJvZ2VucygpIHtcclxuICAgIGNvbnN0IGhzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmVsZW0gPT0gJ0gnICYmIGEuaXNvdG9wZSA9PSBudWxsKVxyXG4gICAgICAgIGhzLnB1c2goaSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgayA9IGhzLmxlbmd0aCAtIDE7IGsgPj0gMDsgLS1rKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2hzW2tdXTtcclxuICAgICAgZm9yIChsZXQgaSA9IHRoaXMuYm9uZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgICBpZiAoYi5hMSA9PSBhIHx8IGIuYTIgPT0gYSlcclxuICAgICAgICAgIHRoaXMuYm9uZHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmF0b21zLnNwbGljZShoc1trXSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGRyYXcoc3VyZmFjZSwgbGluZXdpZHRoLCBmb250c2l6ZSwgdGV4dG9ubHksIGRpbWVuc2lvbiwgaGlnaGxpZ2h0ZXJyb3JzLCBzaG93Y2FyYm9uPzogYm9vbGVhbiwgc2ltcGxlZHJhdz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChsaW5ld2lkdGggPT0gbnVsbClcclxuICAgICAgbGluZXdpZHRoID0gMjtcclxuICAgIGlmIChmb250c2l6ZSA9PSBudWxsKVxyXG4gICAgICBmb250c2l6ZSA9IDE0O1xyXG5cclxuICAgIGlmICh0ZXh0b25seSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBpZiAodGhpcy5ncmFwaGljc1tpXS5UID09ICdURVhUJylcclxuICAgICAgICAgIHRoaXMuZ3JhcGhpY3NbaV0uZHJhdyhzdXJmYWNlLCBsaW5ld2lkdGgsIHRoaXMsIGZvbnRzaXplKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgICAgYS5fb3V0c2lkZSA9IGEucC54IDwgLUpTRHJhdzIuc3BlZWR1cC5nYXAgfHwgYS5wLnggPiBkaW1lbnNpb24ueCArIEpTRHJhdzIuc3BlZWR1cC5nYXAgfHwgYS5wLnkgPCAtSlNEcmF3Mi5zcGVlZHVwLmdhcCB8fCBhLnAueSA+IGRpbWVuc2lvbi55ICsgSlNEcmF3Mi5zcGVlZHVwLmdhcDtcclxuICAgICAgICBhLl9oYXNsYWJlbCA9IGEuaGFzTGFiZWwodGhpcywgc2hvd2NhcmJvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGRyYXcgYm9uZHMgY29ubmVjdCB0byBoaWRkZW4gZ3JvdXAgYXRvbVxyXG4gICAgICBjb25zdCBib25kcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgICBpZiAoYi5hMS5fb3V0c2lkZSAmJiBiLmEyLl9vdXRzaWRlICYmICFiLmExLmhpZGRlbiAmJiAhYi5hMi5oaWRkZW4pXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgaWYgKCFzaW1wbGVkcmF3IHx8ICFiLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb3ZlSGlkZGVuQXRvbVRvR3JvdXBCb3JkZXIoYi5hMSwgYi5hMikgfHwgdGhpcy5tb3ZlSGlkZGVuQXRvbVRvR3JvdXBCb3JkZXIoYi5hMiwgYi5hMSkpXHJcbiAgICAgICAgICAgIGIuZHJhdyhzdXJmYWNlLCBsaW5ld2lkdGgsIHRoaXMsIGZvbnRzaXplLCBzaW1wbGVkcmF3KTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgYm9uZHMucHVzaChiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSlcclxuICAgICAgICB0aGlzLmdyYXBoaWNzW2ldLmRyYXcoc3VyZmFjZSwgbGluZXdpZHRoLCB0aGlzLCBmb250c2l6ZSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvbmRzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgIGJvbmRzW2ldLmRyYXcoc3VyZmFjZSwgbGluZXdpZHRoLCB0aGlzLCBmb250c2l6ZSwgc2ltcGxlZHJhdyk7XHJcblxyXG4gICAgICBjb25zdCB0b3IgPSBsaW5ld2lkdGggKiAyO1xyXG4gICAgICBpZiAoc2ltcGxlZHJhdykge1xyXG4gICAgICAgIC8vIEkjOTA2OVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgICAgICBpZiAoYS5fb3V0c2lkZSB8fCAhYS5oYXNFcnIoKSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgY29uc3QgdyA9IDg7XHJcbiAgICAgICAgICBjb25zdCByID0gbmV3IEpTRHJhdzIuUmVjdChhLnAueCAtIHcgLyAyLCBhLnAueSAtIHcgLyAyLCB3LCB3KTtcclxuICAgICAgICAgIEpTRHJhdzIuRHJhd2VyLmRyYXdSZWN0KHN1cmZhY2UsIHIsICdyZWQnLCBsaW5ld2lkdGgpLnNldEZpbGwoJ3JlZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICAgICAgaWYgKGEuX291dHNpZGUpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgIC8vIGNoZWNrIG92ZXJsYXBwaW5nXHJcbiAgICAgICAgICBmb3IgKGxldCBrID0gaSArIDE7IGsgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGExID0gdGhpcy5hdG9tc1trXTtcclxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGEucC54IC0gYTEucC54KSA8IHRvciAmJiBNYXRoLmFicyhhLnAueSAtIGExLnAueSkgPCB0b3IpIHtcclxuICAgICAgICAgICAgICBjb25zdCByID0gbmV3IEpTRHJhdzIuUmVjdChhLnAueCAtIGZvbnRzaXplIC8gMiwgYS5wLnkgLSBmb250c2l6ZSAvIDIsIGZvbnRzaXplLCBmb250c2l6ZSk7XHJcbiAgICAgICAgICAgICAgSlNEcmF3Mi5EcmF3ZXIuZHJhd1JlY3Qoc3VyZmFjZSwgciwgJ3JlZCcsIGxpbmV3aWR0aCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBhLmRyYXcoc3VyZmFjZSwgbGluZXdpZHRoLCB0aGlzLCBmb250c2l6ZSwgaGlnaGxpZ2h0ZXJyb3JzKTtcclxuICAgICAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChhLnJncm91cC50ZXh0ICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgYS5yZ3JvdXAuZHJhdyhzdXJmYWNlLCBsaW5ld2lkdGgsIHRoaXMsIGZvbnRzaXplKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgICAgIGEucmdyb3VwLm1vbHNbal0uZHJhdyhzdXJmYWNlLCBsaW5ld2lkdGgsIGZvbnRzaXplLCB0ZXh0b25seSwgZGltZW5zaW9uLCBoaWdobGlnaHRlcnJvcnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kcmF3U2VsZWN0KG5ldyBKU0RyYXcyLkxhc3NvKHN1cmZhY2UsIGxpbmV3aWR0aCAqIChzaW1wbGVkcmF3ID8gNSA6IDEpLCBmYWxzZSksIHNpbXBsZWRyYXcpO1xyXG5cclxuICAgICAgbGV0IHMgPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5jaGlyYWwgPT0gJ2FuZCcpXHJcbiAgICAgICAgcyA9ICdbQU5EIEVuYW50aW9tZXJdJztcclxuICAgICAgZWxzZSBpZiAodGhpcy5jaGlyYWwgPT0gJ29yJylcclxuICAgICAgICBzID0gJ1tPUiBFbmFudGlvbWVyXSc7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuY2hpcmFsID09IHRydWUpXHJcbiAgICAgICAgcyA9ICdDaGlyYWwnO1xyXG5cclxuICAgICAgaWYgKHMgIT0gbnVsbClcclxuICAgICAgICBKU0RyYXcyLkRyYXdlci5kcmF3VGV4dChzdXJmYWNlLCBuZXcgSlNEcmF3Mi5Qb2ludChkaW1lbnNpb24ueCAtIGZvbnRzaXplICogNCwgZm9udHNpemUgKiAxKSwgcywgJ2dyYXknLCBmb250c2l6ZSwgJ3JpZ2h0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlSGlkZGVuQXRvbVRvR3JvdXBCb3JkZXIoYSwgYTIpIHtcclxuICAgIGlmICghYS5oaWRkZW4pXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBnID0gdGhpcy5fZmluZEdyb3VwKGEpO1xyXG4gICAgaWYgKGcgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHIgPSBnLnJlY3QoKTtcclxuICAgIGlmICghYTIuaGlkZGVuKSB7XHJcbiAgICAgIC8vIGdyb3VwIHRvIGF0b206IHVzZSB0aGUgY2xvc2VzdCBib3JkZXJcclxuICAgICAgY29uc3QgcCA9IGEyLnA7XHJcbiAgICAgIGlmIChwLnggPCByLmxlZnQpXHJcbiAgICAgICAgYS5wLnggPSByLmxlZnQ7XHJcbiAgICAgIGVsc2UgaWYgKHAueCA+IHIucmlnaHQoKSlcclxuICAgICAgICBhLnAueCA9IHIucmlnaHQoKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGEucC54ID0gcC54O1xyXG5cclxuICAgICAgaWYgKHAueSA8IHIudG9wKVxyXG4gICAgICAgIGEucC55ID0gci50b3A7XHJcbiAgICAgIGVsc2UgaWYgKHAueSA+IHIuYm90dG9tKCkpXHJcbiAgICAgICAgYS5wLnkgPSByLmJvdHRvbSgpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYS5wLnkgPSBwLnk7XHJcblxyXG4gICAgICBhLl9vdXRzaWRlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBncm91cCB0byBncm91cFxyXG4gICAgICBjb25zdCBnMiA9IHRoaXMuX2ZpbmRHcm91cChhMik7XHJcbiAgICAgIGlmIChnMiA9PSBudWxsKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHIyID0gZzIucmVjdCgpO1xyXG4gICAgICBpZiAoci5sZWZ0ID49IHIyLmxlZnQgJiYgci5sZWZ0IDw9IHIyLnJpZ2h0KCkgfHwgci5yaWdodCgpID49IHIyLmxlZnQgJiYgci5yaWdodCgpIDw9IHIyLnJpZ2h0KCkgfHwgcjIubGVmdCA+PSByLmxlZnQgJiYgcjIubGVmdCA8PSByLnJpZ2h0KCkgfHwgcjIucmlnaHQoKSA+PSByLmxlZnQgJiYgcjIucmlnaHQoKSA8PSByLnJpZ2h0KCkpIHtcclxuICAgICAgICAvLyB2ZXJ0aWNhbGx5IG92ZXJsYXBwZWQ6IHZlcnRpY2FsIGNlbnRlclxyXG4gICAgICAgIGNvbnN0IHggPSAoTWF0aC5tYXgoci5sZWZ0LCByMi5sZWZ0KSArIE1hdGgubWluKHIucmlnaHQoKSwgcjIucmlnaHQoKSkpIC8gMjtcclxuICAgICAgICBhLnAueCA9IGEyLnAueCA9IHg7XHJcbiAgICAgICAgYS5wLnkgPSByLmJvdHRvbSgpIDwgcjIudG9wID8gci5ib3R0b20oKSA6IHIudG9wO1xyXG4gICAgICAgIGEyLnAueSA9IHIyLnRvcCA+IHIuYm90dG9tKCkgPyByMi50b3AgOiByMi5ib3R0b20oKTtcclxuICAgICAgfSBlbHNlIGlmIChyLnRvcCA+PSByMi50b3AgJiYgci50b3AgPD0gcjIuYm90dG9tKCkgfHwgci5ib3R0b20oKSA+PSByMi50b3AgJiYgci5ib3R0b20oKSA8PSByMi5ib3R0b20oKSB8fCByMi50b3AgPj0gci50b3AgJiYgcjIudG9wIDw9IHIuYm90dG9tKCkgfHwgcjIuYm90dG9tKCkgPj0gci50b3AgJiYgcjIuYm90dG9tKCkgPD0gci5ib3R0b20oKSkge1xyXG4gICAgICAgIC8vIGhvcml6b250YWxseSBvdmVybGFwcGVkOiBob3Jpem9udGFsIGNlbnRlclxyXG4gICAgICAgIGNvbnN0IHkgPSAoTWF0aC5tYXgoci50b3AsIHIyLnRvcCkgKyBNYXRoLm1pbihyLmJvdHRvbSgpLCByMi5ib3R0b20oKSkpIC8gMjtcclxuICAgICAgICBhLnAueSA9IGEyLnAueSA9IHk7XHJcbiAgICAgICAgYS5wLnggPSByLnJpZ2h0KCkgPCByMi5sZWZ0ID8gci5yaWdodCgpIDogci5sZWZ0O1xyXG4gICAgICAgIGEyLnAueCA9IHIyLmxlZnQgPiByLnJpZ2h0KCkgPyByMi5sZWZ0IDogcjIucmlnaHQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGVuIGNvcm5lciB0byBjb3JuZXJcclxuICAgICAgICBpZiAoci5yaWdodCgpIDwgcjIubGVmdCkge1xyXG4gICAgICAgICAgaWYgKHIuYm90dG9tKCkgPCByMi50b3ApIHtcclxuICAgICAgICAgICAgYS5wID0gci5ib3R0b21yaWdodCgpO1xyXG4gICAgICAgICAgICBhMi5wID0gcjIudG9wbGVmdCgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYS5wID0gci50b3ByaWdodCgpO1xyXG4gICAgICAgICAgICBhMi5wID0gcjIuYm90dG9tbGVmdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoci5ib3R0b20oKSA8IHIyLnRvcCkge1xyXG4gICAgICAgICAgICBhLnAgPSByLmJvdHRvbWxlZnQoKTtcclxuICAgICAgICAgICAgYTIucCA9IHIyLnRvcHJpZ2h0KCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhLnAgPSByLnRvcGxlZnQoKTtcclxuICAgICAgICAgICAgYTIucCA9IHIyLmJvdHRvbXJpZ2h0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBhLl9vdXRzaWRlID0gZmFsc2U7XHJcbiAgICAgIGEyLl9vdXRzaWRlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBfZmluZEdyb3VwKGEpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBnID0gSlNEcmF3Mi5Hcm91cC5jYXN0KHRoaXMuZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAoZyAhPSBudWxsICYmIGcuYSA9PSBhKVxyXG4gICAgICAgIHJldHVybiBnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZHJhd1NlbGVjdChsYXNzbywgc2ltcGxlZHJhdykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgIHRoaXMuZ3JhcGhpY3NbaV0uZHJhd1NlbGVjdChsYXNzbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmF0b21zW2ldLl9fZHJhd3NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgaWYgKGIuc2VsZWN0ZWQpIHtcclxuICAgICAgICBiLmRyYXdTZWxlY3QobGFzc28pO1xyXG4gICAgICAgIGlmIChzaW1wbGVkcmF3KSB7XHJcbiAgICAgICAgICBiLmExLl9fZHJhd3NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgICBiLmEyLl9fZHJhd3NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoYS5zZWxlY3RlZCAmJiAhYS5fX2RyYXdzZWxlY3QpXHJcbiAgICAgICAgYS5kcmF3U2VsZWN0KGxhc3NvKTtcclxuXHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgYS5yZ3JvdXAubW9sc1tqXS5kcmF3U2VsZWN0KGxhc3NvLCBzaW1wbGVkcmF3KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Wk9yZGVyKGcsIHopIHtcclxuICAgIGNvbnN0IGkgPSBzY2lsLlV0aWxzLmluZGV4T2YodGhpcy5ncmFwaGljcywgZyk7XHJcbiAgICBpZiAoaSA8IDAgfHwgdGhpcy5ncmFwaGljcy5sZW5ndGggPT0gMSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh6ID09IDApIHtcclxuICAgICAgaWYgKHogIT0gaSkge1xyXG4gICAgICAgIHRoaXMuZ3JhcGhpY3Muc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIHRoaXMuZ3JhcGhpY3Muc3BsaWNlKDAsIDAsIGcpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHogPT0gLTEpIHtcclxuICAgICAgaWYgKGkgIT0gdGhpcy5ncmFwaGljcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgdGhpcy5ncmFwaGljcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgdGhpcy5ncmFwaGljcy5wdXNoKGcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjYWxjSERpcihhLCB0b3IsIGRyYXdhbGlhcykge1xyXG4gICAgY29uc3QgYXRvbXMgPSB0aGlzLmdldE5laWdoYm9yQXRvbXMoYSk7XHJcbiAgICBpZiAoYXRvbXMubGVuZ3RoID09IDAgJiYgYS5jaGFyZ2UgPT0gMClcclxuICAgICAgcmV0dXJuIGRyYXdhbGlhcyA/IEpTRHJhdzIuQUxJR04uUklHSFQgOiBKU0RyYXcyLkFMSUdOLkxFRlQ7XHJcblxyXG4gICAgbGV0IHIgPSBmYWxzZTtcclxuICAgIGxldCBiID0gZmFsc2U7XHJcbiAgICBsZXQgbCA9IGZhbHNlO1xyXG4gICAgbGV0IHQgPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3Qgb2EgPSBhdG9tc1tpXTtcclxuICAgICAgY29uc3QgZHggPSBvYS5wLnggLSBhLnAueDtcclxuICAgICAgY29uc3QgZHkgPSBvYS5wLnkgLSBhLnAueTtcclxuICAgICAgaWYgKGR4ID4gdG9yKVxyXG4gICAgICAgIHIgPSB0cnVlO1xyXG4gICAgICBlbHNlIGlmIChkeCA8IC10b3IpXHJcbiAgICAgICAgbCA9IHRydWU7XHJcbiAgICAgIGlmIChkeSA+IHRvcilcclxuICAgICAgICBiID0gdHJ1ZTtcclxuICAgICAgZWxzZSBpZiAoZHkgPCAtdG9yKVxyXG4gICAgICAgIHQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcilcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQUxJR04uUklHSFQ7XHJcbiAgICBlbHNlIGlmICghbClcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQUxJR04uTEVGVDtcclxuICAgIGVsc2UgaWYgKCFiKVxyXG4gICAgICByZXR1cm4gSlNEcmF3Mi5BTElHTi5CT1RUT007XHJcbiAgICBlbHNlIGlmICghdClcclxuICAgICAgcmV0dXJuIEpTRHJhdzIuQUxJR04uVE9QO1xyXG4gICAgcmV0dXJuIEpTRHJhdzIuQUxJR04uUklHSFQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgbW9sZmlsZVxyXG4gICAqIEBmdW5jdGlvbiBzZXRNb2xmaWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vbGZpbGUgLSB0aGUgaW5wdXQgbW9sZmlsZVxyXG4gICAqIEByZXR1cm5zIHRoZSBNb2wgb2JqZWN0XHJcbiAgICovXHJcbiAgc2V0TW9sZmlsZShtb2xmaWxlLCByeG4/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBtID0gdGhpcy5zZXRNb2xmaWxlMihtb2xmaWxlLCByeG4pO1xyXG4gICAgaWYgKG0gIT0gbnVsbClcclxuICAgICAgdGhpcy5ndWVzc1N1cGVyQXRvbXMoKTtcclxuICAgIHJldHVybiBtO1xyXG4gIH1cclxuXHJcbiAgZ3Vlc3NTdXBlckF0b21zKCkge1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICBzZXRNb2xmaWxlMihtb2xmaWxlLCByeG4/OiBib29sZWFuKSB7XHJcbiAgICBpZiAobW9sZmlsZSAhPSBudWxsICYmIG1vbGZpbGUubGVuZ3RoID4gNCkge1xyXG4gICAgICBpZiAobW9sZmlsZS5zdWJzdHIoMCwgNCkgPT0gJyRSWE4nKVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFJ4bmZpbGUobW9sZmlsZSk7XHJcbiAgICAgIGlmIChtb2xmaWxlLnN1YnN0cigwLCA0KSA9PSAnJE1ETCcpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0UmdmaWxlKG1vbGZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIGlmIChtb2xmaWxlID09IG51bGwgfHwgbW9sZmlsZS5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IGxpbmVzID0gbnVsbDtcclxuICAgIGlmIChtb2xmaWxlLmluZGV4T2YoJ1xcbicpID49IDApXHJcbiAgICAgIGxpbmVzID0gbW9sZmlsZS5zcGxpdCgnXFxuJyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGxpbmVzID0gbW9sZmlsZS5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IE1hdGgubWluKDMsIGxpbmVzLmxlbmd0aCAtIDEpOyArK2kpIHtcclxuICAgICAgaWYgKGxpbmVzW2ldLnRvVXBwZXJDYXNlKCkuaW5kZXhPZignIFYyMDAwJykgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb2xWMjAwMChsaW5lcywgaSwgcnhuKTtcclxuICAgICAgICBpZiAoaSA9PSAzKVxyXG4gICAgICAgICAgdGhpcy5uYW1lID0gc2NpbC5VdGlscy50cmltKGxpbmVzWzBdKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgfSBlbHNlIGlmIChsaW5lc1tpXS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoJyBWMzAwMCcpID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2V0TW9sVjMwMDAobGluZXMsIGkgKyAxLCByeG4pO1xyXG4gICAgICAgIGlmIChpICsgMSA9PSAzKVxyXG4gICAgICAgICAgdGhpcy5uYW1lID0gc2NpbC5VdGlscy50cmltKGxpbmVzWzBdKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRNb2xWMjAwMChsaW5lcywgc3RhcnQsIHJ4bjogYm9vbGVhbiwgckF0b21zPzogQXRvbTxUQmlvPltdKSB7XHJcbiAgICBjb25zdCBuYXRvbXMgPSBwYXJzZUZsb2F0KGxpbmVzW3N0YXJ0XS5zdWJzdHIoMCwgMykpO1xyXG4gICAgY29uc3QgbmJvbmRzID0gcGFyc2VGbG9hdChsaW5lc1tzdGFydF0uc3Vic3RyKDMsIDMpKTtcclxuICAgIGNvbnN0IGNoaXJhbCA9IGxpbmVzW3N0YXJ0XS5zdWJzdHIoMTIsIDMpO1xyXG4gICAgaWYgKCFKU0RyYXcyLmRlZmF1bHRvcHRpb25zLmFuZF9lbmFudGlvbWVyKVxyXG4gICAgICB0aGlzLmNoaXJhbCA9IGNoaXJhbCA9PSAnICAxJztcclxuICAgIGlmIChpc05hTihuYXRvbXMpIHx8IGlzTmFOKG5ib25kcykpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgKytzdGFydDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBuYXRvbXMgKyBzdGFydDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHM6IHN0cmluZyA9IGxpbmVzW2ldO1xyXG4gICAgICBjb25zdCB4ID0gcGFyc2VGbG9hdChzLnN1YnN0cigwLCAxMCkpO1xyXG4gICAgICBjb25zdCB5ID0gLXBhcnNlRmxvYXQocy5zdWJzdHIoMTAsIDEwKSk7XHJcbiAgICAgIGxldCBlID0gc2NpbC5VdGlscy50cmltKHMuc3Vic3RyKDMxLCAzKSk7XHJcbiAgICAgIGNvbnN0IGMgPSBzLmxlbmd0aCA+PSAzOSA/IHBhcnNlSW50KHMuc3Vic3RyKDM2LCAzKSkgOiAwO1xyXG4gICAgICBjb25zdCBhbWkgPSByeG4gJiYgcy5sZW5ndGggPj0gNjMgPyBwYXJzZUludChzLnN1YnN0cig2MCwgMykpIDogMDtcclxuICAgICAgY29uc3QgaHMgPSBzLmxlbmd0aCA+PSA0NSA/IHBhcnNlSW50KHMuc3Vic3RyKDQyLCAzKSkgOiAwO1xyXG4gICAgICBjb25zdCB2YWwgPSBzLmxlbmd0aCA+PSA1MSA/IHBhcnNlSW50KHMuc3Vic3RyKDQ4LCAzKSkgOiAwO1xyXG5cclxuICAgICAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpIHx8IGlzTmFOKGMpKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgbGV0IGFsaWFzID0gbnVsbDtcclxuICAgICAgaWYgKCgvXlJbMC05XSskLykudGVzdChlKSkge1xyXG4gICAgICAgIGFsaWFzID0gZTtcclxuICAgICAgICBlID0gJ1InO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGEgPSBuZXcgSlNEcmF3Mi5BdG9tKG5ldyBKU0RyYXcyLlBvaW50KHgsIHkpLCBlID09ICdSIycgPyAnUicgOiBlKTtcclxuICAgICAgYS5hbGlhcyA9IGFsaWFzO1xyXG4gICAgICBpZiAoYW1pID4gMClcclxuICAgICAgICBhLmF0b21tYXBpZCA9IGFtaTtcclxuICAgICAgaWYgKGhzID4gMCAmJiBocyA8PSA1KVxyXG4gICAgICAgIGEuaHMgPSBocztcclxuICAgICAgaWYgKHZhbCA+IDAgJiYgdmFsIDw9IDE1KVxyXG4gICAgICAgIGEudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLl9hZGRBdG9tKGEpO1xyXG4gICAgICBzd2l0Y2ggKGMpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGEuY2hhcmdlID0gMztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGEuY2hhcmdlID0gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIGEuY2hhcmdlID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA1OlxyXG4gICAgICAgIGEuY2hhcmdlID0gLTE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNjpcclxuICAgICAgICBhLmNoYXJnZSA9IC0yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDc6XHJcbiAgICAgICAgYS5jaGFyZ2UgPSAtMztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICs9IG5hdG9tcztcclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IChuYm9uZHMgKyBzdGFydCk7IGkrKykge1xyXG4gICAgICBjb25zdCBsaW5lID0gbGluZXNbaV07XHJcbiAgICAgIGNvbnN0IHNJOiBudW1iZXIgPSBwYXJzZUZsb2F0KGxpbmUuc3Vic3RyKDAsIDMpKSAtIDE7XHJcbiAgICAgIGNvbnN0IGVJOiBudW1iZXIgPSBwYXJzZUZsb2F0KGxpbmUuc3Vic3RyKDMsIDMpKSAtIDE7XHJcbiAgICAgIGNvbnN0IG9yZGVyID0gcGFyc2VJbnQobGluZS5zdWJzdHIoNiwgMykpO1xyXG4gICAgICBjb25zdCBzdGVyZW8gPSBwYXJzZUludChsaW5lLnN1YnN0cig5LCAzKSk7XHJcbiAgICAgIGNvbnN0IHJpbmcgPSBsaW5lLmxlbmd0aCA+PSAxOCA/IHBhcnNlSW50KGxpbmUuc3Vic3RyKDE1LCAzKSkgOiBudWxsO1xyXG4gICAgICBjb25zdCByY2VudGVyID0gbGluZS5sZW5ndGggPj0gMjEgPyBsaW5lLnN1YnN0cigxOCwgMykgOiBudWxsO1xyXG4gICAgICBpZiAoaXNOYU4oc0kpIHx8IGlzTmFOKGVJKSB8fCBpc05hTihvcmRlcikpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBjb25zdCBhMSA9IHRoaXMuYXRvbXNbc0ldO1xyXG4gICAgICBjb25zdCBhMiA9IHRoaXMuYXRvbXNbZUldO1xyXG4gICAgICBsZXQgYjogQm9uZFR5cGVzO1xyXG4gICAgICBzd2l0Y2ggKG9yZGVyKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICBiID0gSlNEcmF3Mi5CT05EVFlQRVMuVU5LTk9XTjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHN3aXRjaCAoc3RlcmVvKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLldFREdFO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLldJR0dMWTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNjpcclxuICAgICAgICAgIGIgPSBKU0RyYXcyLkJPTkRUWVBFUy5IQVNIO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGIgPSBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBiID0gc3RlcmVvID09IDMgPyBKU0RyYXcyLkJPTkRUWVBFUy5FSVRIRVIgOiBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgICBiID0gSlNEcmF3Mi5CT05EVFlQRVMuVFJJUExFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDU6XHJcbiAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SRE9VQkxFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SQVJPTUFUSUM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNzpcclxuICAgICAgICBiID0gSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFT1JBUk9NQVRJQztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA4OlxyXG4gICAgICAgIGIgPSBKU0RyYXcyLkJPTkRUWVBFUy5VTktOT1dOO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgYiA9IEpTRHJhdzIuQk9ORFRZUEVTLkRVTU1ZO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGJvbmQgPSBuZXcgSlNEcmF3Mi5Cb25kKGExLCBhMiwgYik7XHJcbiAgICAgIGlmIChyaW5nID09IDEpXHJcbiAgICAgICAgYm9uZC5yaW5nID0gdHJ1ZTtcclxuICAgICAgZWxzZSBpZiAocmluZyA9PSAyKVxyXG4gICAgICAgIGJvbmQucmluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAocnhuKVxyXG4gICAgICAgIHRoaXMucmVhZFJ4bkNlbnRlcihib25kLCByY2VudGVyKTtcclxuICAgICAgdGhpcy5fYWRkQm9uZChib25kKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZ3JvdXBzID0gW107XHJcbiAgICBzdGFydCArPSBuYm9uZHM7XHJcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBzID0gc2NpbC5VdGlscy5ydHJpbShsaW5lc1tpXSk7XHJcbiAgICAgIGNvbnN0IHRva2VuID0gcy5sZW5ndGggPj0gNiA/IHMuc3Vic3RyKDAsIDYpIDogbnVsbDtcclxuICAgICAgY29uc3QgdG9rZW4zID0gcy5sZW5ndGggPj0gNiA/IHMuc3Vic3RyKDAsIDMpIDogbnVsbDtcclxuICAgICAgaWYgKHRva2VuID09ICdNICBJU08nKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cigxMCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCB2ID0gcGFyc2VJbnQocy5zdWJzdHIoMTQgKyBrICogOCwgMykpO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKGFpKSB8fCBpc05hTih2KSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICB0aGlzLmF0b21zW2FpIC0gMV0uaXNvdG9wZSA9IHY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBSQUQnKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cigxMCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCB2ID0gcGFyc2VJbnQocy5zdWJzdHIoMTQgKyBrICogOCwgMykpO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKGFpKSB8fCBpc05hTih2KSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICBpZiAodiA+PSAxICYmIHYgPD0gMylcclxuICAgICAgICAgICAgdGhpcy5hdG9tc1thaSAtIDFdLnJhZGljYWwgPSB2O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgQ0hHJykge1xyXG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChzLnN1YnN0cig2LCAzKSk7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyArK2spIHtcclxuICAgICAgICAgIGNvbnN0IGFpID0gcGFyc2VJbnQocy5zdWJzdHIoMTAgKyBrICogOCwgMykpO1xyXG4gICAgICAgICAgY29uc3QgdiA9IHBhcnNlSW50KHMuc3Vic3RyKDE0ICsgayAqIDgsIDMpKTtcclxuICAgICAgICAgIGlmIChpc05hTihhaSkgfHwgaXNOYU4odikpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgdGhpcy5hdG9tc1thaSAtIDFdLmNoYXJnZSA9IHY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBBTFMnKSB7XHJcbiAgICAgICAgLy9NICBBTFMgICA3ICA0IEYgQyAgIE4gICBTICAgT1xyXG4gICAgICAgIGNvbnN0IGFpID0gcGFyc2VJbnQocy5zdWJzdHIoNywgMykpO1xyXG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChzLnN1YnN0cigxMCwgMykpO1xyXG4gICAgICAgIGNvbnN0IGYgPSBzLnN1YnN0cigxNCwgMSkgPT0gJ0YnO1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgZWwgPSBzY2lsLlV0aWxzLnRyaW0ocy5zdWJzdHIoMTYgKyBrICogNCwgNCkpO1xyXG4gICAgICAgICAgaWYgKEpTRHJhdzIuUFQuaXNWYWxpZEF0b21MaXN0KGVsKSlcclxuICAgICAgICAgICAgbGlzdC5wdXNoKGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbYWkgLSAxXTtcclxuICAgICAgICBpZiAoYS5xdWVyeSA9PSBudWxsKVxyXG4gICAgICAgICAgYS5xdWVyeSA9IHt9O1xyXG4gICAgICAgIGEucXVlcnkudCA9IGY7XHJcbiAgICAgICAgYS5xdWVyeS5hbHMgPSBsaXN0O1xyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBTVUInKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cig5ICsgOCAqIGsgKyAxLCAzKSk7XHJcbiAgICAgICAgICBjb25zdCB2ID0gcGFyc2VJbnQocy5zdWJzdHIoOSArIDggKiBrICsgNSwgMykpO1xyXG4gICAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbYWkgLSAxXTtcclxuICAgICAgICAgIGlmIChhLnF1ZXJ5ID09IG51bGwpXHJcbiAgICAgICAgICAgIGEucXVlcnkgPSB7fTtcclxuICAgICAgICAgIGlmICh2ID09IC0xKVxyXG4gICAgICAgICAgICBhLnF1ZXJ5LnN1YiA9IDA7XHJcbiAgICAgICAgICBlbHNlIGlmICh2ID09IC0yKVxyXG4gICAgICAgICAgICBhLnF1ZXJ5LnN1YiA9ICcqJztcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgYS5xdWVyeS52ID0gdjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFVOUycpIHtcclxuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQocy5zdWJzdHIoNiwgMykpO1xyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgKytrKSB7XHJcbiAgICAgICAgICBjb25zdCBhaSA9IHBhcnNlSW50KHMuc3Vic3RyKDkgKyA4ICogayArIDEsIDMpKTtcclxuICAgICAgICAgIGNvbnN0IHYgPSBwYXJzZUludChzLnN1YnN0cig5ICsgOCAqIGsgKyA1LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1thaSAtIDFdO1xyXG4gICAgICAgICAgaWYgKGEucXVlcnkgPT0gbnVsbClcclxuICAgICAgICAgICAgYS5xdWVyeSA9IHt9O1xyXG4gICAgICAgICAgYS5xdWVyeS51bnMgPSB2ID09IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBSQkMnKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cig5ICsgOCAqIGsgKyAxLCAzKSk7XHJcbiAgICAgICAgICBjb25zdCB2ID0gcGFyc2VJbnQocy5zdWJzdHIoOSArIDggKiBrICsgNSwgMykpO1xyXG4gICAgICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbYWkgLSAxXTtcclxuICAgICAgICAgIGlmICh2ID09IC0xIHx8IHYgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChhLnF1ZXJ5ID09IG51bGwpXHJcbiAgICAgICAgICAgICAgYS5xdWVyeSA9IHt9O1xyXG4gICAgICAgICAgICBhLnF1ZXJ5LnJiYyA9IHYgPT0gLTEgPyAwIDogdjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFJHUCcpIHtcclxuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQocy5zdWJzdHIoNiwgMykpO1xyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgKytrKSB7XHJcbiAgICAgICAgICBjb25zdCBhaSA9IHBhcnNlSW50KHMuc3Vic3RyKDEwICsgayAqIDgsIDMpKTtcclxuICAgICAgICAgIGNvbnN0IHJyID0gcGFyc2VJbnQocy5zdWJzdHIoMTQgKyBrICogOCwgMykpO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKGFpKSB8fCBpc05hTihycikpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXRvbXNbYWkgLSAxXS5lbGVtID09ICdSJykge1xyXG4gICAgICAgICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1thaSAtIDFdO1xyXG4gICAgICAgICAgICBpZiAoYS5hbGlhcyA9PSBudWxsIHx8IGEuYWxpYXMgPT0gJycpXHJcbiAgICAgICAgICAgICAgYS5hbGlhcyA9ICdSJyArIHJyO1xyXG4gICAgICAgICAgICBpZiAockF0b21zICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgckF0b21zW3JyXSA9IGE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBBUE8nKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cigxMCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCByciA9IHBhcnNlSW50KHMuc3Vic3RyKDE0ICsgayAqIDgsIDMpKTtcclxuICAgICAgICAgIGlmICghaXNOYU4oYWkpICYmICFpc05hTihycikgJiYgdGhpcy5hdG9tc1thaSAtIDFdICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuYXRvbXNbYWkgLSAxXS5hdHRhY2hwb2ludHMucHVzaChycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBTVFknKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3Qgc2kgPSBwYXJzZUludChzLnN1YnN0cigxMCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCBzbiA9IHMuc3Vic3RyKDE0ICsgayAqIDgsIDMpO1xyXG4gICAgICAgICAgbGV0IGJyID0gbnVsbDtcclxuICAgICAgICAgIGlmIChzbiA9PSAnREFUJykge1xyXG4gICAgICAgICAgICBiciA9IG5ldyBKU0RyYXcyLlRleHQoKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoc24gPT0gJ1NVUCcpIHtcclxuICAgICAgICAgICAgYnIgPSB7dHlwZTogJ1NVUEVSQVRPTScsIGF0b21zOiBbXX07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHR5IGluIEpTRHJhdzIuU0dyb3VwLnN0eXMpIHtcclxuICAgICAgICAgICAgICBpZiAoSlNEcmF3Mi5TR3JvdXAuc3R5c1t0eV0gPT0gc24pIHtcclxuICAgICAgICAgICAgICAgIGJyID0gbmV3IEpTRHJhdzIuQnJhY2tldCh0eSA9PSAnJyA/IG51bGwgOiB0eSwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGJyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgYnIgPSBuZXcgSlNEcmF3Mi5CcmFja2V0KG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGJyICE9IG51bGwpXHJcbiAgICAgICAgICAgIHNncm91cHNbc2ldID0gYnI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBTTVQnKSB7XHJcbiAgICAgICAgY29uc3Qgc2kgPSBwYXJzZUludChzLnN1YnN0cig3LCAzKSk7XHJcbiAgICAgICAgbGV0IHNhID0gcy5zdWJzdHIoMTEpO1xyXG4gICAgICAgIGlmIChzYS5sZW5ndGggPiAwICYmIHNhLnN1YnN0cigwLCAxKSA9PSAnXicpXHJcbiAgICAgICAgICBzYSA9IHNhLnN1YnN0cigxKTtcclxuICAgICAgICBzZ3JvdXBzW3NpXS5zdWJzY3JpcHQgPSBzYTtcclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgU0NMJykge1xyXG4gICAgICAgIGNvbnN0IHNpID0gcGFyc2VJbnQocy5zdWJzdHIoNywgMykpO1xyXG4gICAgICAgIHNncm91cHNbc2ldLmNscyA9IHMuc3Vic3RyKDExKTtcclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgU1BMJykge1xyXG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChzLnN1YnN0cig2LCAzKSk7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyArK2spIHtcclxuICAgICAgICAgIGNvbnN0IGNpID0gcGFyc2VJbnQocy5zdWJzdHIoMTAgKyBrICogOCwgMykpO1xyXG4gICAgICAgICAgY29uc3QgcGkgPSBwYXJzZUludChzLnN1YnN0cigxNCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBpZiAoSlNEcmF3Mi5UZXh0LmNhc3Qoc2dyb3Vwc1tjaV0pICE9IG51bGwgJiYgSlNEcmF3Mi5CcmFja2V0LmNhc3Qoc2dyb3Vwc1twaV0pICE9IG51bGwpXHJcbiAgICAgICAgICAgIHNncm91cHNbY2ldLmFuY2hvcnMgPSBbc2dyb3Vwc1twaV1dOyAvLyB0ZXh0IGF0dGFjaGVkIHRvIGJyYWNrZXRcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFNDTicpIHtcclxuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQocy5zdWJzdHIoNiwgMykpO1xyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgKytrKSB7XHJcbiAgICAgICAgICBjb25zdCBzaSA9IHBhcnNlSW50KHMuc3Vic3RyKDEwICsgayAqIDgsIDMpKTtcclxuICAgICAgICAgIGNvbnN0IGNvbm4gPSBzLnN1YnN0cigxNCArIGsgKiA4LCAyKTtcclxuICAgICAgICAgIGlmIChKU0RyYXcyLkJyYWNrZXQuY2FzdChzZ3JvdXBzW3NpXSkgIT0gbnVsbClcclxuICAgICAgICAgICAgc2dyb3Vwc1tzaV0uY29ubiA9IGNvbm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBTTkMnKSB7XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDYsIDMpKTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgICAgY29uc3Qgc2kgPSBwYXJzZUludChzLnN1YnN0cigxMCArIGsgKiA4LCAzKSk7XHJcbiAgICAgICAgICBjb25zdCBudW0gPSBzY2lsLlV0aWxzLnRyaW0ocy5zdWJzdHIoMTQgKyBrICogOCwgMikpO1xyXG4gICAgICAgICAgaWYgKEpTRHJhdzIuQnJhY2tldC5jYXN0KHNncm91cHNbc2ldKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChzZ3JvdXBzW3NpXS50eXBlID09ICdjJylcclxuICAgICAgICAgICAgICBzZ3JvdXBzW3NpXS50eXBlID0gJ2MnICsgbnVtO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChzZ3JvdXBzW3NpXS50eXBlID09ICdtdWwnKVxyXG4gICAgICAgICAgICAgIHNncm91cHNbc2ldLnR5cGUgPSBudW0gKyAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFNBTCcpIHtcclxuICAgICAgICBjb25zdCBzaSA9IHBhcnNlSW50KHMuc3Vic3RyKDcsIDMpKTtcclxuICAgICAgICBjb25zdCBzZyA9IHNncm91cHNbc2ldO1xyXG4gICAgICAgIGlmIChzZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQocy5zdWJzdHIoMTAsIDMpKTtcclxuICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgKytrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFpID0gcGFyc2VJbnQocy5zdWJzdHIoMTQgKyBrICogNCwgMykpO1xyXG4gICAgICAgICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1thaSAtIDFdO1xyXG4gICAgICAgICAgICBpZiAoYSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHNnLnR5cGUgPT0gJ1NVUEVSQVRPTScpXHJcbiAgICAgICAgICAgICAgICBzZy5hdG9tcy5wdXNoKGEpO1xyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKEpTRHJhdzIuQnJhY2tldC5jYXN0KHNnKSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgc2cuYXRvbXMucHVzaChhKTtcclxuICAgICAgICAgICAgICBlbHNlIGlmIChKU0RyYXcyLlRleHQuY2FzdChzZykgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHNnLmFuY2hvcnMucHVzaChhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgU1BBJykge1xyXG4gICAgICAgIGNvbnN0IHNpID0gcGFyc2VJbnQocy5zdWJzdHIoNywgMykpO1xyXG4gICAgICAgIGNvbnN0IHNnID0gc2dyb3Vwc1tzaV07XHJcbiAgICAgICAgaWYgKEpTRHJhdzIuQnJhY2tldC5jYXN0KHNnKSAhPSBudWxsICYmIHNnLnR5cGUgPT0gJ211bCcpIHtcclxuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChzLnN1YnN0cigxMCwgMykpO1xyXG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyArK2spIHtcclxuICAgICAgICAgICAgY29uc3QgYWkgPSBwYXJzZUludChzLnN1YnN0cigxNCArIGsgKiA0LCAzKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2FpIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBpZiAoc2cuc3BhID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBzZy5zcGEgPSBbXTtcclxuICAgICAgICAgICAgICBzZy5zcGEucHVzaChhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgU0JMJykge1xyXG4gICAgICAgIGNvbnN0IHNpID0gcGFyc2VJbnQocy5zdWJzdHIoNywgMykpO1xyXG4gICAgICAgIGNvbnN0IHNnID0gc2dyb3Vwc1tzaV07XHJcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHMuc3Vic3RyKDEwLCAzKSk7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyArK2spIHtcclxuICAgICAgICAgIGNvbnN0IGJpID0gcGFyc2VJbnQocy5zdWJzdHIoMTQgKyBrICogNCwgMykpO1xyXG4gICAgICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbYmkgLSAxXTtcclxuICAgICAgICAgIGlmIChiICE9IG51bGwgJiYgSlNEcmF3Mi5UZXh0LmNhc3Qoc2cpICE9IG51bGwpXHJcbiAgICAgICAgICAgIHNnLmFuY2hvcnMucHVzaChiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFNESScpIHtcclxuICAgICAgICBjb25zdCBzaSA9IHBhcnNlSW50KHMuc3Vic3RyKDcsIDMpKTtcclxuICAgICAgICBjb25zdCBzZyA9IHNncm91cHNbc2ldO1xyXG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChzLnN1YnN0cigxMCwgMykpO1xyXG4gICAgICAgIGlmIChzZyAhPSBudWxsICYmIG4gPT0gNCkge1xyXG4gICAgICAgICAgY29uc3QgcDEgPSBuZXcgSlNEcmF3Mi5Qb2ludChwYXJzZUZsb2F0KHMuc3Vic3RyKDEzLCAxMCkpLCAtcGFyc2VGbG9hdChzLnN1YnN0cigyMywgMTApKSk7XHJcbiAgICAgICAgICBjb25zdCBwMiA9IG5ldyBKU0RyYXcyLlBvaW50KHBhcnNlRmxvYXQocy5zdWJzdHIoMzMsIDEwKSksIC1wYXJzZUZsb2F0KHMuc3Vic3RyKDQzLCAxMCkpKTtcclxuICAgICAgICAgIGlmIChwMS5pc1ZhbGlkKCkgJiYgcDIuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChzZy5fcmVjdCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgIHNnLl9yZWN0ID0gbmV3IEpTRHJhdzIuUmVjdCgpLnNldChwMSwgcDIpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgc2cuX3JlY3QudW5pb25Qb2ludChwMSkudW5pb25Qb2ludChwMik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRva2VuID09ICdNICBTRFQnKSB7XHJcbiAgICAgICAgY29uc3Qgc2kgPSBwYXJzZUludChzLnN1YnN0cig3LCAzKSk7XHJcbiAgICAgICAgY29uc3Qgc2cgPSBzZ3JvdXBzW3NpXTtcclxuICAgICAgICBpZiAoSlNEcmF3Mi5UZXh0LmNhc3Qoc2cpICE9IG51bGwpXHJcbiAgICAgICAgICBzZy5maWVsZHR5cGUgPSBzY2lsLlV0aWxzLnRyaW0ocy5zdWJzdHIoMTEsIDMwKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFNERCcpIHtcclxuICAgICAgICBjb25zdCBzaSA9IHBhcnNlSW50KHMuc3Vic3RyKDcsIDMpKTtcclxuICAgICAgICBjb25zdCBzZyA9IHNncm91cHNbc2ldO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlRleHQuY2FzdChzZykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgcCA9IG5ldyBKU0RyYXcyLlBvaW50KHBhcnNlRmxvYXQocy5zdWJzdHIoMTEsIDEwKSksIC1wYXJzZUZsb2F0KHMuc3Vic3RyKDIxLCAxMCkpKTtcclxuICAgICAgICAgIGlmIChwLmlzVmFsaWQoKSlcclxuICAgICAgICAgICAgc2cuX3JlY3QgPSBuZXcgSlNEcmF3Mi5SZWN0KHAueCwgcC55LCAwLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4gPT0gJ00gIFNFRCcpIHtcclxuICAgICAgICBjb25zdCBzaSA9IHBhcnNlSW50KHMuc3Vic3RyKDcsIDMpKTtcclxuICAgICAgICBjb25zdCBzZyA9IHNncm91cHNbc2ldO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLlRleHQuY2FzdChzZykgIT0gbnVsbClcclxuICAgICAgICAgIHNnLnRleHQgPSBzY2lsLlV0aWxzLnRyaW0ocy5zdWJzdHIoMTEpKTtcclxuICAgICAgfSBlbHNlIGlmICh0b2tlbjMgPT0gJ0EgICcpIHtcclxuICAgICAgICBjb25zdCBhaSA9IHBhcnNlSW50KHMuc3Vic3RyKDMsIDMpKTtcclxuICAgICAgICArK2k7XHJcbiAgICAgICAgdGhpcy5hdG9tc1thaSAtIDFdLmFsaWFzID0gc2NpbC5VdGlscy50cmltKGxpbmVzW2ldKTtcclxuICAgICAgfSBlbHNlIGlmICh0b2tlbjMgPT0gJ1YgICcpIHtcclxuICAgICAgICBjb25zdCBhaSA9IHBhcnNlSW50KHMuc3Vic3RyKDMsIDMpKTtcclxuICAgICAgICBjb25zdCB2ID0gc2NpbC5VdGlscy50cmltKHMuc3Vic3RyKDcpKTtcclxuICAgICAgICB0aGlzLmF0b21zW2FpIC0gMV0udGFnID0gdjtcclxuICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnTSAgRU5EJykge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3VwZXJhdG9tcyA9IFtdO1xyXG4gICAgY29uc3QgYnJhY2tldHMgPSBbXTtcclxuICAgIGNvbnN0IGdhcCA9IHRoaXMubWVkQm9uZExlbmd0aCgxLjU2KSAvIDI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNncm91cHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgLy8gcG9zdC1wcm9jZXNzIHNncm91cHNcclxuICAgICAgY29uc3Qgc2cgPSBzZ3JvdXBzW2ldO1xyXG4gICAgICBpZiAoc2cgPT0gbnVsbClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdDxUQmlvPihzZyk7XHJcbiAgICAgIGlmIChzZy5fcmVjdCAhPSBudWxsICYmIChiciAhPSBudWxsIHx8IHNnLnRleHQgIT0gbnVsbCAmJiBzZy50ZXh0ICE9ICcnKSkge1xyXG4gICAgICAgIHRoaXMuYWRkR3JhcGhpY3Moc2cpO1xyXG4gICAgICAgIGlmIChiciAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAoYnIuZ2V0VHlwZSgpICE9ICcnKSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5zZXRTZ3JvdXAoYnIsIFwiQlJBQ0tFVF9UWVBFXCIsIGJyLmdldFR5cGUoKSwgYnIuX3JlY3QucmlnaHQoKSArIGdhcCAvIDQsIGJyLl9yZWN0LmJvdHRvbSgpIC0gZ2FwKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTZ3JvdXAoYnIsICdCUkFDS0VUX1RZUEUnLCBici5zdWJzY3JpcHQgfHwgYnIuZ2V0VHlwZSgpLCBici5fcmVjdC5yaWdodCgpICsgZ2FwIC8gNCwgYnIuX3JlY3QuYm90dG9tKCkgLSBnYXApO1xyXG4gICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgIGJyYWNrZXRzLnB1c2goYnIpO1xyXG4gICAgICAgICAgaWYgKGJyLmNvbm4gIT0gbnVsbCAmJiBici5jb25uICE9ICcnKVxyXG4gICAgICAgICAgICB0aGlzLnNldFNncm91cChiciwgJ0JSQUNLRVRfQ09OTicsIGJyLmNvbm4udG9Mb3dlckNhc2UoKSwgYnIuX3JlY3QucmlnaHQoKSArIGdhcCAvIDQsIGJyLl9yZWN0LnRvcCAtIGdhcCAvIDQpO1xyXG4gICAgICAgICAgSlNEcmF3Mi5TdXBlckF0b21zLmNvbGxhcHNlUmVwZWF0KHRoaXMsIGJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHNjaWwuVXRpbHMuZW5kc3dpdGgoc2cuZmllbGR0eXBlLCAnX1RZUEUnKSAmJiBzZy5maWVsZHR5cGUgIT0gJ0JSQUNLRVRfVFlQRScpXHJcbiAgICAgICAgICAgIHNnLmZpZWxkdHlwZSA9ICdCUkFDS0VUX1NVQlRZUEUnO1xyXG4gICAgICAgICAgZWxzZSBpZiAoc2NpbC5VdGlscy5lbmRzd2l0aChzZy5maWVsZHR5cGUsICdfTU9EJykpXHJcbiAgICAgICAgICAgIHNnLmZpZWxkdHlwZSA9ICdCUkFDS0VUX01PRCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHNnLnR5cGUgPT0gJ1NVUEVSQVRPTScpIHtcclxuICAgICAgICBjb25zdCBuYSA9IG5ldyBKU0RyYXcyLkF0b20obnVsbCwgJ0MnKTtcclxuICAgICAgICBjb25zdCBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICAgICAgc3VwZXJhdG9tcy5wdXNoKHthOiBuYSwgbTogbX0pO1xyXG4gICAgICAgIG0uYXRvbXMgPSBzZy5hdG9tcztcclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG0uYXRvbXMubGVuZ3RoOyArK2spXHJcbiAgICAgICAgICBzY2lsLlV0aWxzLnJlbW92ZUFycmF5SXRlbSh0aGlzLmF0b21zLCBtLmF0b21zW2tdKTtcclxuXHJcbiAgICAgICAgbGV0IHAgPSBudWxsO1xyXG4gICAgICAgIGxldCBhcG8gPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGogPSB0aGlzLmJvbmRzLmxlbmd0aCAtIDE7IGogPj0gMDsgLS1qKSB7XHJcbiAgICAgICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tqXTtcclxuICAgICAgICAgIGNvbnN0IGYxID0gc2NpbC5VdGlscy5pbmRleE9mKG0uYXRvbXMsIGIuYTEpO1xyXG4gICAgICAgICAgY29uc3QgZjIgPSBzY2lsLlV0aWxzLmluZGV4T2YobS5hdG9tcywgYi5hMik7XHJcbiAgICAgICAgICBpZiAoZjEgPj0gMCAmJiBmMiA+PSAwKSB7XHJcbiAgICAgICAgICAgIG0uYm9uZHMuc3BsaWNlKDAsIDAsIGIpO1xyXG4gICAgICAgICAgICB0aGlzLmJvbmRzLnNwbGljZShqLCAxKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZjEgPj0gMCkge1xyXG4gICAgICAgICAgICBpZiAocCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgIHAgPSBiLmExLnAuY2xvbmUoKTtcclxuICAgICAgICAgICAgYi5hMS5hdHRhY2hwb2ludHMucHVzaCgrK2Fwbyk7XHJcbiAgICAgICAgICAgIGIuYXBvMSA9IGFwbztcclxuICAgICAgICAgICAgYi5hMSA9IG5hO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmMiA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChwID09IG51bGwpXHJcbiAgICAgICAgICAgICAgcCA9IGIuYTIucC5jbG9uZSgpO1xyXG4gICAgICAgICAgICBiLmEyLmF0dGFjaHBvaW50cy5wdXNoKCsrYXBvKTtcclxuICAgICAgICAgICAgYi5hcG8yID0gYXBvO1xyXG4gICAgICAgICAgICBiLmEyID0gbmE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuYS5wID0gcCAhPSBudWxsID8gcCA6IG0uYXRvbXNbMF0ucC5jbG9uZSgpO1xyXG4gICAgICAgIG5hLnN1cGVyYXRvbSA9IG07XHJcbiAgICAgICAgbmEuYWxpYXMgPSBzZy5zdWJzY3JpcHQ7XHJcbiAgICAgICAgc3dpdGNoIChzZy5jbHMpIHtcclxuICAgICAgICBjYXNlICdBbWlub0FjaWQnOlxyXG4gICAgICAgIGNhc2UgJ0FBJzpcclxuICAgICAgICAgIG5hLmJpbyA9IHt0eXBlOiBKU0RyYXcyLkJJTy5BQX07XHJcbiAgICAgICAgICBuYS5lbGVtID0gbmEuYWxpYXM7XHJcbiAgICAgICAgICBuYS5hbGlhcyA9IG51bGw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdCQVNFJzpcclxuICAgICAgICBjYXNlICdETkEnOlxyXG4gICAgICAgICAgbmEuYmlvID0ge3R5cGU6IEpTRHJhdzIuQklPLkJBU0VfRE5BfTtcclxuICAgICAgICAgIG5hLmVsZW0gPSBuYS5hbGlhcztcclxuICAgICAgICAgIG5hLmFsaWFzID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1JOQSc6XHJcbiAgICAgICAgICBuYS5iaW8gPSB7dHlwZTogSlNEcmF3Mi5CSU8uQkFTRV9STkF9O1xyXG4gICAgICAgICAgbmEuZWxlbSA9IG5hLmFsaWFzO1xyXG4gICAgICAgICAgbmEuYWxpYXMgPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2FkZEF0b20obmEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBicmFja2V0cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiciA9IGJyYWNrZXRzW2ldO1xyXG4gICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZ3JvdXBUZXh0KGJyLCAnQlJBQ0tFVF9UWVBFJyk7XHJcbiAgICAgIGlmICh0ICE9IG51bGwpXHJcbiAgICAgICAgYnJhY2tldHNbaV0udHlwZSA9IHQudGV4dDtcclxuXHJcbiAgICAgIGlmIChici5hdG9tcyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdXBlcmF0b21zLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgICBjb25zdCBhID0gc3VwZXJhdG9tc1trXS5hO1xyXG4gICAgICAgICAgY29uc3QgbSA9IHN1cGVyYXRvbXNba10ubTtcclxuICAgICAgICAgIGlmIChzY2lsLlV0aWxzLnJlbW92ZUFycmF5SXRlbXMoYnIuYXRvbXMsIG0uYXRvbXMpID4gMClcclxuICAgICAgICAgICAgYnIuYXRvbXMucHVzaChhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgUiBncm91cHM6IHNvbWUgUiBncm91cHMgYXJlIG9ubHkgbWFya2VkIHVzaW5nIGFsaWFzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmVsZW0gPT0gJ0MnICYmIGEuYWxpYXMgIT0gbnVsbCAmJiAoL15SWzAtOV0rJC8pLnRlc3QoYS5hbGlhcykpIHtcclxuICAgICAgICBjb25zdCBhbGlhcyA9IGEuYWxpYXM7XHJcbiAgICAgICAgYS5hbGlhcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZXRBdG9tQWxpYXMoYSwgYWxpYXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKEpTRHJhdzIuZGVmYXVsdG9wdGlvbnMuYW5kX2VuYW50aW9tZXIpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzU3RlcmVvQ2VudGVyKCkgJiYgY2hpcmFsID09ICcgIDAnKVxyXG4gICAgICAgIHRoaXMuY2hpcmFsID0gQ2hpcmFsVHlwZXMuQU5EO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBoYXNSR3JvdXAoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLmVsZW0gPT0gJ1InKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IG1vbGZpbGVcclxuICAgKiBAZnVuY3Rpb24gZ2V0TW9sZmlsZVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gcnhuIC0gZ2V0IGl0IGFzIGEgUnhuIGZpbGVcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHYzMDAwIC0gcmVuZGVyIGl0IGluIE1vbGZpbGUgVjMwMDAgZm9ybWF0XHJcbiAgICogQHJldHVybnMgYSBzdHJpbmdcclxuICAgKi9cclxuICBnZXRNb2xmaWxlKHJ4bj86IGFueSwgdjMwMDA/OiBib29sZWFuLCBleGNsdWRlRHVtbXlCb25kcz86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKHYzMDAwID09IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMubmVlZFYzMDAwKCkpXHJcbiAgICAgICAgdjMwMDAgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2MzAwMClcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9sVjMwMDAocnhuKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9sVjIwMDAocnhuLCBleGNsdWRlRHVtbXlCb25kcyk7XHJcbiAgfVxyXG5cclxuICBuZWVkVjMwMDAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdG9tcy5sZW5ndGggPiA5OTkgfHwgdGhpcy5ib25kcy5sZW5ndGggPiA5OTkgfHwgdGhpcy5oYXNFbmhhbmNlZFN0ZXJlb2NoZW1pc3RyeSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmdmaWxlKHJ4biwgcmdyb3Vwcywgc3VwZXJhdG9tcykge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBfZ2V0Umdyb3VwcyhyZ3JvdXBzPzogYW55KSB7XHJcbiAgICBpZiAocmdyb3VwcyA9PSBudWxsKVxyXG4gICAgICByZ3JvdXBzID0ge246IDAsIGxpc3Q6IFtdfTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGEuaVIgPSBudWxsO1xyXG4gICAgICBpZiAoYS5lbGVtID09ICdSJyAmJiAoYS5hbGlhcyAhPSBudWxsICYmIGEuYWxpYXMgIT0gJycgfHwgYS5yZ3JvdXAgIT0gbnVsbCkpIHtcclxuICAgICAgICBhLmlSID0gKytyZ3JvdXBzLm47XHJcbiAgICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwgJiYgYS5yZ3JvdXAubW9scy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgcmdyb3Vwcy5saXN0LnB1c2goYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZ3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3ViTW9sKGF0b21zKSB7XHJcbiAgICBjb25zdCBtID0gdGhpcztcclxuICAgIGNvbnN0IHNldCA9IHthdG9tczogc2NpbC5jbG9uZShhdG9tcyksIGJvbmRzOiBbXSwgb3BlbmJvbmRzOiBbXX07XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG0uYm9uZHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgY29uc3QgYiA9IG0uYm9uZHNbal07XHJcbiAgICAgIGNvbnN0IGYxID0gc2NpbC5VdGlscy5pbmRleE9mKGF0b21zLCBiLmExKSA+PSAwO1xyXG4gICAgICBjb25zdCBmMiA9IHNjaWwuVXRpbHMuaW5kZXhPZihhdG9tcywgYi5hMikgPj0gMDtcclxuICAgICAgaWYgKGYxICYmIGYyKSB7XHJcbiAgICAgICAgLy9pZiAoc2NpbC5VdGlscy5pbmRleE9mKHNldC5hdG9tcywgYi5hMSkgPCAwKVxyXG4gICAgICAgIC8vICAgIHNldC5hdG9tcy5wdXNoKGIuYTEpO1xyXG4gICAgICAgIC8vaWYgKHNjaWwuVXRpbHMuaW5kZXhPZihzZXQuYXRvbXMsIGIuYTIpIDwgMClcclxuICAgICAgICAvLyAgICBzZXQuYXRvbXMucHVzaChiLmEyKTtcclxuICAgICAgICBzZXQuYm9uZHMucHVzaChiKTtcclxuICAgICAgfSBlbHNlIGlmIChmMSkge1xyXG4gICAgICAgIC8vaWYgKHNjaWwuVXRpbHMuaW5kZXhPZihzZXQuYXRvbXMsIGIuYTEpIDwgMClcclxuICAgICAgICAvLyAgICBzZXQuYXRvbXMucHVzaChiLmExKTtcclxuICAgICAgICBzZXQub3BlbmJvbmRzLnB1c2goe2I6IGIsIG9hOiBiLmEyfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZjIpIHtcclxuICAgICAgICAvL2lmIChzY2lsLlV0aWxzLmluZGV4T2Yoc2V0LmF0b21zLCBiLmEyKSA8IDApXHJcbiAgICAgICAgLy8gICAgc2V0LmF0b21zLnB1c2goYi5hMik7XHJcbiAgICAgICAgc2V0Lm9wZW5ib25kcy5wdXNoKHtiOiBiLCBvYTogYi5hMX0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHNldDtcclxuICB9XHJcblxyXG4gIGV4cGFuZFN1cGVyQXRvbXMoc3VwZXJhdG9tczI/OiBhbnlbXSkge1xyXG4gICAgY29uc3Qgc3VwZXJhdG9tcyA9IFtdO1xyXG5cclxuICAgIGNvbnN0IG0gPSB0aGlzLmNsb25lKG51bGwpO1xyXG4gICAgY29uc3QgbGlzdCA9IHNjaWwuY2xvbmUobS5hdG9tcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IGxpc3RbaV07XHJcbiAgICAgIGlmIChhLnN1cGVyYXRvbSAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgbTIgPSBKU0RyYXcyLlN1cGVyQXRvbXMuYWRkVG9Nb2wobSwgYSwgYS5zdXBlcmF0b20pO1xyXG4gICAgICAgIHN1cGVyYXRvbXMucHVzaCh7YTogYSwgbTogbTJ9KTtcclxuICAgICAgICBpZiAoc3VwZXJhdG9tczIgIT0gbnVsbClcclxuICAgICAgICAgIHN1cGVyYXRvbXMyLnB1c2goe2E6IGEsIG06IG0yfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYS5lbGVtID09ICc1XFwnJykge1xyXG4gICAgICAgIG0uc2V0QXRvbVR5cGUoYSwgJ0gnKTtcclxuICAgICAgfSBlbHNlIGlmIChhLmVsZW0gPT0gJzNcXCcnKSB7XHJcbiAgICAgICAgbS5zZXRBdG9tVHlwZShhLCAnTycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGJyID0gSlNEcmF3Mi5CcmFja2V0LmNhc3QobS5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChiciA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgaWYgKGJyLmF0b21zICE9IG51bGwgJiYgc3VwZXJhdG9tcyAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgYXRvbXMgPSBbXTtcclxuICAgICAgICBsZXQgbTI6IE1vbDxUQmlvPiA9IG51bGw7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBici5hdG9tcy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdXBlcmF0b21zLmxlbmd0aDsgKytqKSB7XHJcbiAgICAgICAgICAgIGlmIChici5hdG9tc1trXSA9PSBzdXBlcmF0b21zW2pdLmEpIHtcclxuICAgICAgICAgICAgICBtMiA9IHN1cGVyYXRvbXNbal0ubTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG0yID09IG51bGwpIHtcclxuICAgICAgICAgICAgYXRvbXMucHVzaChici5hdG9tc1trXSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG0yLmF0b21zLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgICAgIGF0b21zLnB1c2gobTIuYXRvbXNbal0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBici5hdG9tcyA9IGF0b21zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBKU0RyYXcyLlN1cGVyQXRvbXMuZXhwYW5kUmVwZWF0KG0sIGJyKTtcclxuICAgIH1cclxuXHJcbiAgICBtLmNhbGNIQ291bnQodHJ1ZSk7XHJcbiAgICByZXR1cm4gbTtcclxuICB9XHJcblxyXG4gIGdldE1vbFYyMDAwKHJ4biwgZXhjbHVkZUR1bW15Qm9uZHMpIHtcclxuICAgIGNvbnN0IHN1cGVyYXRvbXMgPSBbXTtcclxuICAgIGNvbnN0IG0gPSB0aGlzLmV4cGFuZFN1cGVyQXRvbXMoc3VwZXJhdG9tcyk7XHJcbiAgICBtLmNoaXJhbCA9IHRoaXMuY2hpcmFsO1xyXG5cclxuICAgIGlmIChleGNsdWRlRHVtbXlCb25kcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gbS5ib25kcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIGNvbnN0IGIgPSBtLmJvbmRzW2ldO1xyXG4gICAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVkpXHJcbiAgICAgICAgICBtLmJvbmRzLnNwbGljZShpLCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc1Jncm91cCA9IGZhbHNlO1xyXG4gICAgY29uc3Qgcmdyb3VwcyA9IG0uX2dldFJncm91cHMoKTtcclxuICAgIGlmIChyZ3JvdXBzLmxpc3QubGVuZ3RoID4gMClcclxuICAgICAgcmV0dXJuIG0uZ2V0UmdmaWxlKHJ4biwgcmdyb3Vwcywgc3VwZXJhdG9tcyk7XHJcblxyXG4gICAgbGV0IHMgPSAobS5uYW1lID09IG51bGwgPyAnJyA6IG0ubmFtZSkgKyAnXFxuJztcclxuICAgIHMgKz0gbS5fZ2V0TW9sSGVhZGVyKCk7XHJcbiAgICBzICs9ICdcXG4nO1xyXG4gICAgcyArPSBtLl9nZXRNb2xWMjAwMChyeG4sIG51bGwsIHN1cGVyYXRvbXMpO1xyXG4gICAgcmV0dXJuIHM7XHJcbiAgfVxyXG5cclxuICBhbGxBdG9tcyhsaXN0PzogQXRvbTxUQmlvPltdKTogQXRvbTxUQmlvPltdIHtcclxuICAgIGlmIChsaXN0ID09IG51bGwpXHJcbiAgICAgIGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgbGlzdC5wdXNoKGEpO1xyXG4gICAgICBpZiAoYS5yZ3JvdXAgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYS5yZ3JvdXAubW9scy5sZW5ndGg7ICsrailcclxuICAgICAgICAgIGEucmdyb3VwLm1vbHNbal0uYWxsQXRvbXMobGlzdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgYWxsQm9uZHMobGlzdD86IEJvbmQ8VEJpbz5bXSk6IEJvbmQ8VEJpbz5bXSB7XHJcbiAgICBpZiAobGlzdCA9PSBudWxsKVxyXG4gICAgICBsaXN0ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpXHJcbiAgICAgIGxpc3QucHVzaCh0aGlzLmJvbmRzW2ldKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhLnJncm91cC5tb2xzLmxlbmd0aDsgKytqKVxyXG4gICAgICAgICAgYS5yZ3JvdXAubW9sc1tqXS5hbGxCb25kcyhsaXN0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBfZ2V0TW9sVGltZSgpIHtcclxuICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IHlyID0gZHQuZ2V0RnVsbFllYXIoKSArICcnO1xyXG4gICAgcmV0dXJuIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGR0LmdldE1vbnRoKCkgKyAxLCAyLCAwKS5yZXBsYWNlKCcgJywgJzAnKSArXHJcbiAgICAgIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGR0LmdldERhdGUoKSwgMiwgMCkucmVwbGFjZSgnICcsICcwJykgK1xyXG4gICAgICB5ci5zdWJzdHIoMikgK1xyXG4gICAgICBzY2lsLlV0aWxzLmZvcm1hdFN0cihkdC5nZXRIb3VycygpLCAyLCAwKS5yZXBsYWNlKCcgJywgJzAnKSArXHJcbiAgICAgIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGR0LmdldE1pbnV0ZXMoKSwgMiwgMCkucmVwbGFjZSgnICcsICcwJyk7XHJcbiAgfVxyXG5cclxuICBfZ2V0TW9sSGVhZGVyKCkge1xyXG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgeXIgPSBkdC5nZXRGdWxsWWVhcigpICsgJyc7XHJcbiAgICByZXR1cm4gJyAgIEpTRHJhdzInICsgdGhpcy5fZ2V0TW9sVGltZSgpICsgJzJEXFxuJztcclxuICB9XHJcblxyXG4gIF9nZXRNb2xWMjAwMChyeG4sIHJncm91cHMsIHN1cGVyYXRvbXMpIHtcclxuICAgIGlmIChyZ3JvdXBzICE9IG51bGwpXHJcbiAgICAgIHRoaXMuX2dldFJncm91cHMocmdyb3Vwcyk7XHJcblxyXG4gICAgY29uc3QgbGVuID0gdGhpcy5ib25kbGVuZ3RoID4gMCA/IHRoaXMuYm9uZGxlbmd0aCA6IHRoaXMubWVkQm9uZExlbmd0aCgpO1xyXG4gICAgY29uc3Qgc2NhbGUgPSBsZW4gPiAwID8gKDEuNTYgLyBsZW4pIDogMS4wO1xyXG5cclxuICAgIGxldCBzID0gJyc7XHJcbiAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKHRoaXMuYXRvbXMubGVuZ3RoLCAzLCAwKTtcclxuICAgIHMgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIodGhpcy5ib25kcy5sZW5ndGgsIDMsIDApO1xyXG4gICAgcyArPSAnICAwICAwJztcclxuICAgIGlmICh0aGlzLmhhc1N0ZXJlb0NlbnRlcigpICYmIHRoaXMuY2hpcmFsICE9ICdhbmQnKVxyXG4gICAgICBzICs9ICcgIDEnO1xyXG4gICAgZWxzZVxyXG4gICAgICBzICs9ICcgIDAnO1xyXG4gICAgcyArPSAnICAwICAgICAgICAgICAgICAwIFYyMDAwXFxuJztcclxuXHJcbiAgICBsZXQgaXNvdG9wZXMgPSAnJztcclxuICAgIGxldCByYWRpY2FscyA9ICcnO1xyXG4gICAgbGV0IHRhZ3MgPSAnJztcclxuICAgIGxldCBxdWVyeSA9ICcnO1xyXG4gICAgbGV0IHJncCA9ICcnO1xyXG4gICAgbGV0IGFwbyA9ICcnO1xyXG4gICAgbGV0IGFzdHIgPSAnJztcclxuICAgIHRoaXMucmVzZXRJZHMoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgaWYgKGEuaXNvdG9wZSAhPSBudWxsKVxyXG4gICAgICAgIGlzb3RvcGVzICs9ICdNICBJU08nICsgJyAgMScgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihpICsgMSwgNCwgMCkgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihhLmlzb3RvcGUsIDQsIDApICsgJ1xcbic7XHJcbiAgICAgIGlmIChhLnJhZGljYWwgPj0gMSAmJiBhLnJhZGljYWwgPD0gMylcclxuICAgICAgICByYWRpY2FscyArPSAnTSAgUkFEICAxJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGkgKyAxLCA0LCAwKSArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEucmFkaWNhbCwgNCwgMCkgKyAnXFxuJztcclxuICAgICAgaWYgKGEudGFnICE9IG51bGwgJiYgYS50YWcgIT0gJycpXHJcbiAgICAgICAgdGFncyArPSAnViAgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGkgKyAxLCAzLCAwKSArICcgJyArIGEudGFnICsgJ1xcbic7XHJcbiAgICAgIGlmIChhLmFsaWFzICE9IG51bGwgJiYgYS5hbGlhcyAhPSAnJylcclxuICAgICAgICBhc3RyICs9ICdBICAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaSArIDEsIDMsIDApICsgJ1xcbicgKyBhLmFsaWFzICsgJ1xcbic7XHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgYS5hdHRhY2hwb2ludHMubGVuZ3RoOyArK2spXHJcbiAgICAgICAgYXBvICs9ICdNICBBUE8gIDEnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaSArIDEsIDQsIDApICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoYS5hdHRhY2hwb2ludHNba10sIDQsIDApICsgJ1xcbic7XHJcbiAgICAgIGlmIChhLnF1ZXJ5ICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoYS5xdWVyeS5hbHMgIT0gbnVsbCAmJiBhLnF1ZXJ5LmFscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBxdWVyeSArPSAnTSAgQUxTICcgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihpICsgMSwgMywgMCkgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihhLnF1ZXJ5LmFscy5sZW5ndGgsIDMsIDApICsgKGEucXVlcnkudCA9PSBmYWxzZSA/ICcgVCAnIDogJyBGICcpO1xyXG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBhLnF1ZXJ5LmFscy5sZW5ndGg7ICsraylcclxuICAgICAgICAgICAgcXVlcnkgKz0gc2NpbC5VdGlscy5wYWRSaWdodChhLnF1ZXJ5LmFsc1trXSwgNCwgJyAnKTtcclxuICAgICAgICAgIHF1ZXJ5ICs9ICdcXG4nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS5xdWVyeS5yYmMgIT0gbnVsbClcclxuICAgICAgICAgIHF1ZXJ5ICs9ICdNICBSQkMgIDEnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaSArIDEsIDQsIDApICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoYS5xdWVyeS5yYmMgPT0gMCA/IC0xIDogYS5xdWVyeS5yYmMsIDQsIDApICsgJ1xcbic7XHJcbiAgICAgICAgaWYgKGEucXVlcnkudW5zICE9IG51bGwpXHJcbiAgICAgICAgICBxdWVyeSArPSAnTSAgVU5TICAxJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGkgKyAxLCA0LCAwKSArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEucXVlcnkudW5zID8gMSA6IDAsIDQsIDApICsgJ1xcbic7XHJcbiAgICAgICAgaWYgKGEucXVlcnkuc3ViICE9IG51bGwpXHJcbiAgICAgICAgICBxdWVyeSArPSAnTSAgU1VCICAxJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGkgKyAxLCA0LCAwKSArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEucXVlcnkuc3ViID09IDAgPyAtMSA6IChhLnF1ZXJ5LnN1YiA9PSAnKicgPyAtMiA6IGEucXVlcnkuc3ViKSwgNCwgMCkgKyAnXFxuJztcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGVsZW0gPSBhLmVsZW07XHJcbiAgICAgIGlmIChhLmVsZW0gPT0gJ1InKSB7XHJcbiAgICAgICAgaWYgKGEuaVIgPiAwKSB7XHJcbiAgICAgICAgICBlbGVtID0gJ1IjJztcclxuICAgICAgICAgIHJncCArPSAnTSAgUkdQICAxJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGkgKyAxLCA0LCAwKSArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKHBhcnNlSW50KGEuaVIgYXMgc3RyaW5nKSwgNCwgMCkgKyAnXFxuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbSA9ICdSJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbSA9PSAnSCcpIHtcclxuICAgICAgICBpZiAoYS5pc290b3BlID09IDIpXHJcbiAgICAgICAgICBlbGVtID0gJ0QnO1xyXG4gICAgICAgIGVsc2UgaWYgKGEuaXNvdG9wZSA9PSAzKVxyXG4gICAgICAgICAgZWxlbSA9ICdUJztcclxuICAgICAgfVxyXG5cclxuICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihhLnAueCAqIHNjYWxlLCAxMCwgNCk7XHJcbiAgICAgIHMgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIoLWEucC55ICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cigwLCAxMCwgNCk7XHJcbiAgICAgIHMgKz0gJyAnO1xyXG4gICAgICBzICs9IHNjaWwuVXRpbHMucGFkUmlnaHQoZWxlbSwgMiwgJyAnKTtcclxuICAgICAgcyArPSAnICAwJztcclxuICAgICAgbGV0IGMgPSAwO1xyXG4gICAgICBzd2l0Y2ggKGEuY2hhcmdlKSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBjID0gMztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGMgPSAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgYyA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgLTE6XHJcbiAgICAgICAgYyA9IDU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgLTI6XHJcbiAgICAgICAgYyA9IDY7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgLTM6XHJcbiAgICAgICAgYyA9IDc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihjLCAzLCAwKTtcclxuXHJcbiAgICAgIHMgKz0gJyAgMCc7XHJcbiAgICAgIGlmIChhLmhzID4gMClcclxuICAgICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEuaHMsIDMsIDApO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcyArPSAnICAwJztcclxuXHJcbiAgICAgIHMgKz0gJyAgMCAgMCc7XHJcbiAgICAgIGlmIChhLnZhbCA+IDApXHJcbiAgICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihhLnZhbCwgMywgMCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzICs9ICcgIDAnO1xyXG5cclxuICAgICAgcyArPSAnICAwICAwJztcclxuICAgICAgaWYgKHJ4biAmJiBhLmF0b21tYXBpZCA+IDApXHJcbiAgICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihhLmF0b21tYXBpZCwgMywgMCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzICs9ICcgIDAnO1xyXG4gICAgICBzICs9ICcgIDAgIDBcXG4nO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuXHJcbiAgICAgIHMgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIoYi5hMS5pZCwgMywgMCk7XHJcbiAgICAgIHMgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIoYi5hMi5pZCwgMywgMCk7XHJcblxyXG4gICAgICBsZXQgb3JkZXIgPSAwO1xyXG4gICAgICBsZXQgc3RlcmVvID0gMDtcclxuICAgICAgc3dpdGNoIChiLnR5cGUpIHtcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5VTktOT1dOOlxyXG4gICAgICAgIG9yZGVyID0gODtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5EVU1NWTpcclxuICAgICAgICBvcmRlciA9IDk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFT1JBUk9NQVRJQzpcclxuICAgICAgICBvcmRlciA9IDc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFT1JBUk9NQVRJQzpcclxuICAgICAgICBvcmRlciA9IDY7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuU0lOR0xFT1JET1VCTEU6XHJcbiAgICAgICAgb3JkZXIgPSA1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRTpcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5ET1VCTEU6XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuVFJJUExFOlxyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRFTE9DQUxJWkVEOlxyXG4gICAgICAgIG9yZGVyID0gYi50eXBlO1xyXG4gICAgICAgIHN0ZXJlbyA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuUEVQVElERTpcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5OVUNMRU9USURFOlxyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRJU1VMRklERTpcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5BTUlERTpcclxuICAgICAgICBvcmRlciA9IDE7XHJcbiAgICAgICAgc3RlcmVvID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5XRURHRTpcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5CT0xEOlxyXG4gICAgICAgIG9yZGVyID0gMTtcclxuICAgICAgICBzdGVyZW8gPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkhBU0g6XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuQk9MREhBU0g6XHJcbiAgICAgICAgb3JkZXIgPSAxO1xyXG4gICAgICAgIHN0ZXJlbyA9IDY7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuV0lHR0xZOlxyXG4gICAgICAgIG9yZGVyID0gMTtcclxuICAgICAgICBzdGVyZW8gPSA0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkVJVEhFUjpcclxuICAgICAgICBvcmRlciA9IDI7XHJcbiAgICAgICAgc3RlcmVvID0gMztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKG9yZGVyLCAzLCAwKTtcclxuICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihzdGVyZW8sIDMsIDApO1xyXG4gICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKDAsIDMsIDApO1xyXG4gICAgICBpZiAoYi5yaW5nICE9IG51bGwpXHJcbiAgICAgICAgcyArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihiLnJpbmcgPyAxIDogMiwgMywgMCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKDAsIDMsIDApO1xyXG4gICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKGIucmNlbnRlciA9PSBudWxsID8gMCA6IGIucmNlbnRlciwgMywgMCk7XHJcbiAgICAgIHMgKz0gJ1xcbic7XHJcbiAgICB9XHJcblxyXG4gICAgcyArPSBpc290b3BlcztcclxuICAgIHMgKz0gcmFkaWNhbHM7XHJcbiAgICBzICs9IHRhZ3M7XHJcbiAgICBzICs9IGFzdHI7XHJcbiAgICBzICs9IHF1ZXJ5O1xyXG4gICAgcyArPSByZ3A7XHJcbiAgICBzICs9IGFwbztcclxuXHJcbiAgICBsZXQgblNUWSA9IDA7XHJcbiAgICBpZiAoc3VwZXJhdG9tcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VwZXJhdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGNvbnN0IGEgPSBzdXBlcmF0b21zW2ldLmE7XHJcbiAgICAgICAgY29uc3QgbSA9IHN1cGVyYXRvbXNbaV0ubTtcclxuICAgICAgICBpZiAobSA9PSBudWxsKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICsrblNUWTtcclxuICAgICAgICBjb25zdCBzdHkgPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihuU1RZLCAzLCAwKTtcclxuICAgICAgICBzICs9ICdNICBTVFkgIDEgJyArIHN0eSArICcgU1VQXFxuJztcclxuICAgICAgICBzICs9IHRoaXMud3JpdGVMaXN0KCdNICBTQUwgJyArIHN0eSwgbS5hdG9tcywgJ2lkJywgNCwgOCk7XHJcbiAgICAgICAgcyArPSB0aGlzLndyaXRlTGlzdCgnTSAgU0JMICcgKyBzdHksIG0uYm9uZHMsICdib25kaWQnLCA0LCA4KTtcclxuXHJcbiAgICAgICAgcyArPSAnTSAgU01UICcgKyBzdHkgKyAnICcgKyAoYS5hbGlhcyA9PSBudWxsID8gYS5lbGVtIDogYS5hbGlhcykgKyAnXFxuJztcclxuICAgICAgICBpZiAoYS5iaW8gIT0gbnVsbClcclxuICAgICAgICAgIHMgKz0gJ00gIFNDTCAnICsgc3R5ICsgJyAnICsgYS5iaW90eXBlKCkgKyAnXFxuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRleHRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KHRoaXMuZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAodCAhPSBudWxsKVxyXG4gICAgICAgIHRleHRzLnB1c2godCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU0dyb3VwXHJcbiAgICBsZXQgc2dyb3VwZGF0YSA9ICcnO1xyXG4gICAgY29uc3QgaWQgPSB7azogblNUWX07XHJcbiAgICBjb25zdCBicmFja2V0cyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGJyID0gSlNEcmF3Mi5CcmFja2V0LmNhc3Q8VEJpbz4odGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChiciA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBicmFja2V0cy5wdXNoKGJyKTtcclxuICAgICAgY29uc3QgciA9IGJyLl9yZWN0O1xyXG5cclxuICAgICAgbGV0IGJyYWNrZXRhdG9tcyA9IG51bGw7XHJcbiAgICAgIGxldCBicmFja2V0Ym9uZHMgPSBudWxsO1xyXG4gICAgICBpZiAoYnIuYXRvbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGJyYWNrZXRhdG9tcyA9IHRoaXMuZ2V0RXhwYW5kZWRBdG9tcyhici5leHBhbmRlZGF0b21zID09IG51bGwgPyBici5hdG9tcyA6IGJyLmV4cGFuZGVkYXRvbXMpO1xyXG4gICAgICAgIGJyYWNrZXRib25kcyA9IGJyLmdldFhib25kcyh0aGlzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgayA9ICsraWQuaztcclxuICAgICAgbGV0IGNvbm5lY3Rpdml0eSA9IG51bGw7XHJcbiAgICAgIGNvbnN0IHNncm91cDogYW55ID0ge3N0eTogJycsIHNwbDogJycsIGRhdGE6ICcnLCBpZDogaWR9O1xyXG4gICAgICBjb25zdCB0cCA9IGJyLmdldFR5cGUoKTtcclxuICAgICAgY29uc3Qgc25jID0gYnIuZ2V0VHlwZU51bSgpO1xyXG4gICAgICBzZ3JvdXAuc3Vic2NyaXB0ID0gdHA7XHJcblxyXG4gICAgICBsZXQgdHlwZSA9IEpTRHJhdzIuU0dyb3VwLnN0eXNbdHBdO1xyXG4gICAgICBpZiAodHlwZSA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGJyYWNrZXRib25kcyAhPSBudWxsICYmIGJyYWNrZXRib25kcy5sZW5ndGggPT0gMilcclxuICAgICAgICAgIHR5cGUgPSAnU1JVJztcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0eXBlID0gJ0dFTic7XHJcbiAgICAgIH1cclxuICAgICAgc2dyb3VwLnN0eSArPSAnICcgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihrLCAzLCAwKSArICcgJyArIHR5cGU7XHJcbiAgICAgIGxldCBmaWVsZHR5cGUgPSBKU0RyYXcyLlNHcm91cC5maWVsZHR5cGVzW3RwXTtcclxuICAgICAgaWYgKGZpZWxkdHlwZSA9PSBudWxsKVxyXG4gICAgICAgIGZpZWxkdHlwZSA9ICdCUkFDS0VUJztcclxuICAgICAgY29uc3QgY3VzdG9tID0gdHlwZSA9PSBudWxsO1xyXG5cclxuICAgICAgbGV0IHN1YnNjcmlwdCA9IG51bGw7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGV4dHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICBjb25zdCB0ID0gdGV4dHNbal07XHJcbiAgICAgICAgaWYgKHQgIT0gbnVsbCAmJiB0LmFuY2hvcnMubGVuZ3RoID09IDEgJiYgdC5hbmNob3JzWzBdID09IGJyKSB7XHJcbiAgICAgICAgICBpZiAodC5maWVsZHR5cGUgPT0gJ0JSQUNLRVRfQ09OTicpIHtcclxuICAgICAgICAgICAgY29ubmVjdGl2aXR5ID0gdC50ZXh0O1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0LmZpZWxkdHlwZSAhPSAnQlJBQ0tFVF9UWVBFJyB8fCB0LnRleHQgIT0gdHAgJiYgdHAgIT0gJ211bCcgfHwgY3VzdG9tKSB7XHJcbiAgICAgICAgICAgIGxldCBmdCA9IHQuZmllbGR0eXBlO1xyXG4gICAgICAgICAgICBpZiAoZmllbGR0eXBlICE9IG51bGwgJiYgZnQgIT0gbnVsbCAmJiBmdC5sZW5ndGggPiA4ICYmIGZ0LnN1YnN0cigwLCA4KSA9PSAnQlJBQ0tFVF8nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZ0ID09ICdCUkFDS0VUX1NVQlRZUEUnKVxyXG4gICAgICAgICAgICAgICAgZnQgPSBmaWVsZHR5cGUgKyAnX1RZUEUnO1xyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGZ0ID0gZmllbGR0eXBlICsgZnQuc3Vic3RyKDcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnU1JVJylcclxuICAgICAgICAgICAgICBzZ3JvdXAuc3Vic2NyaXB0ID0gdC50ZXh0O1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5nZXREYXRhR3JvdXAodC50ZXh0LCBmdCwgdC5fcmVjdC5sZWZ0ICogc2NhbGUsIC10Ll9yZWN0LnRvcCAqIHNjYWxlLCBrLCBzZ3JvdXApO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0LmZpZWxkdHlwZSA9PSAnQlJBQ0tFVF9UWVBFJyAmJiB0cCA9PSAnbXVsJykge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHQgPSB0LnRleHQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0ZXh0c1tqXSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzZ3JvdXBkYXRhICs9ICdNICBTVFknICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoc2dyb3VwLnN0eS5sZW5ndGggLyA4LCAzLCAwKSArIHNncm91cC5zdHkgKyAnXFxuJztcclxuICAgICAgLy9zZ3JvdXBkYXRhICs9IFwiTSAgU0xCICAxICAgMSAgIDFcXG5cIjtcclxuXHJcbiAgICAgIGlmIChjb25uZWN0aXZpdHkgPT0gJ2h0JyB8fCBjb25uZWN0aXZpdHkgPT0gJ2hoJyB8fCBjb25uZWN0aXZpdHkgPT0gJ2V1JylcclxuICAgICAgICBzZ3JvdXBkYXRhICs9ICdNICBTQ04nICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoMSwgMywgMCkgKyAnICcgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihrLCAzLCAwKSArICcgJyArIGNvbm5lY3Rpdml0eS50b1VwcGVyQ2FzZSgpICsgJyBcXG4nO1xyXG4gICAgICBpZiAoc25jICE9IG51bGwpXHJcbiAgICAgICAgc2dyb3VwZGF0YSArPSAnTSAgU05DJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKDEsIDMsIDApICsgJyAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaywgMywgMCkgKyAnICcgKyBzY2lsLlV0aWxzLnBhZExlZnQoc25jLCAzLCAnICcpICsgJyBcXG4nO1xyXG4gICAgICBpZiAoc2dyb3VwLnNwbCAhPSAnJylcclxuICAgICAgICBzZ3JvdXBkYXRhICs9ICdNICBTUEwnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoc2dyb3VwLnNwbC5sZW5ndGggLyA4LCAzLCAwKSArIHNncm91cC5zcGwgKyAnXFxuJztcclxuICAgICAgaWYgKGJyLmF0b21zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzZ3JvdXBkYXRhICs9IHRoaXMud3JpdGVMaXN0KCdNICBTQUwgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGssIDMsIDApLCBicmFja2V0YXRvbXMsICdpZCcsIDQsIDgpO1xyXG4gICAgICAgIHNncm91cGRhdGEgKz0gdGhpcy53cml0ZUxpc3QoJ00gIFNCTCAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaywgMywgMCksIGJyYWNrZXRib25kcywgJ2lkJywgNCwgOCk7XHJcblxyXG4gICAgICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHNncm91cC5zdWJzY3JpcHQpICYmIC8qIEkjMTA3NzMgKi8gISh0eXBlID09ICdNVUwnICYmIHNncm91cC5zdWJzY3JpcHQgPT0gJ211bCcpKVxyXG4gICAgICAgICAgc2dyb3VwZGF0YSArPSAnTSAgU01UICAgMSAnICsgc2dyb3VwLnN1YnNjcmlwdCArICdcXG4nO1xyXG5cclxuICAgICAgICBjb25zdCBhdG9tcyA9IGJyLmF0b21zO1xyXG4gICAgICAgIGlmIChici50eXBlICE9ICduJyB8fCB0eXBlID09ICdTUlUnKVxyXG4gICAgICAgICAgc2dyb3VwZGF0YSArPSB0aGlzLndyaXRlTGlzdCgnTSAgU1BBICcgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihrLCAzLCAwKSwgYXRvbXMsICdpZCcsIDQsIDgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzZ3JvdXBkYXRhICs9ICdNICBTREkgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGssIDMsIDApICsgJyAgNCc7XHJcbiAgICAgIHNncm91cGRhdGEgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIoYnIuX3JlY3QubGVmdCAqIHNjYWxlLCAxMCwgNCk7XHJcbiAgICAgIHNncm91cGRhdGEgKz0gc2NpbC5VdGlscy5mb3JtYXRTdHIoLWJyLl9yZWN0LmJvdHRvbSgpICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihici5fcmVjdC5sZWZ0ICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cigtYnIuX3JlY3QudG9wICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSAnXFxuJztcclxuXHJcbiAgICAgIHNncm91cGRhdGEgKz0gJ00gIFNESSAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaywgMywgMCkgKyAnICA0JztcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihici5fcmVjdC5yaWdodCgpICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cigtYnIuX3JlY3QudG9wICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cihici5fcmVjdC5yaWdodCgpICogc2NhbGUsIDEwLCA0KTtcclxuICAgICAgc2dyb3VwZGF0YSArPSBzY2lsLlV0aWxzLmZvcm1hdFN0cigtYnIuX3JlY3QuYm90dG9tKCkgKiBzY2FsZSwgMTAsIDQpO1xyXG4gICAgICBzZ3JvdXBkYXRhICs9ICdcXG4nO1xyXG5cclxuICAgICAgaWYgKHN1YnNjcmlwdCAhPSBudWxsICYmIHN1YnNjcmlwdCAhPSAnJykge1xyXG4gICAgICAgIHNncm91cGRhdGEgKz0gJ00gIFNNVCAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaywgMywgMCkgKyAnICcgKyBzdWJzY3JpcHQ7XHJcbiAgICAgICAgc2dyb3VwZGF0YSArPSAnXFxuJztcclxuICAgICAgfVxyXG5cclxuICAgICAgc2dyb3VwZGF0YSArPSBzZ3JvdXAuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IHQgPSB0ZXh0c1tpXTtcclxuICAgICAgaWYgKHQgPT0gbnVsbClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBrID0gaWQuaztcclxuICAgICAgY29uc3Qgc2dyb3VwID0ge3N0eTogJycsIHNwbDogJycsIGRhdGE6ICcnLCBpZDogaWR9O1xyXG4gICAgICB0aGlzLmdldERhdGFHcm91cCh0LnRleHQsIHQuZmllbGR0eXBlLCB0Ll9yZWN0LmxlZnQgKiBzY2FsZSwgLXQuX3JlY3QudG9wICogc2NhbGUsIG51bGwsIHNncm91cCk7XHJcbiAgICAgIHNncm91cGRhdGEgKz0gJ00gIFNUWScgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihzZ3JvdXAuc3R5Lmxlbmd0aCAvIDgsIDMsIDApICsgc2dyb3VwLnN0eSArICdcXG4nO1xyXG5cclxuICAgICAgLy8gSSMxMTYwNFxyXG4gICAgICBpZiAoaWQuayA9PSBrKVxyXG4gICAgICAgICsraWQuaztcclxuICAgICAgayA9IGlkLms7XHJcblxyXG4gICAgICBsZXQgc2FsID0gJyc7XHJcbiAgICAgIGxldCBzYmwgPSAnJztcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0LmFuY2hvcnMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICBjb25zdCBhID0gdC5hbmNob3JzW2pdO1xyXG4gICAgICAgIGlmIChKU0RyYXcyLkF0b20uY2FzdChhKSAhPSBudWxsKVxyXG4gICAgICAgICAgc2FsICs9ICcgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEuYXRvbWlkLCAzLCAwKTtcclxuICAgICAgICBlbHNlIGlmIChKU0RyYXcyLkJvbmQuY2FzdChhKSAhPSBudWxsKVxyXG4gICAgICAgICAgc2JsICs9ICcgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEuYm9uZGlkLCAzLCAwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoc2FsICE9ICcnKVxyXG4gICAgICAgIHNncm91cGRhdGEgKz0gJ00gIFNBTCAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoaywgMywgMCkgKyBzY2lsLlV0aWxzLmZvcm1hdFN0cihzYWwubGVuZ3RoIC8gNCwgMywgMCkgKyBzYWwgKyAnXFxuJztcclxuICAgICAgaWYgKHNibCAhPSAnJylcclxuICAgICAgICBzZ3JvdXBkYXRhICs9ICdNICBTQkwgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGssIDMsIDApICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoc2JsLmxlbmd0aCAvIDQsIDMsIDApICsgc2JsICsgJ1xcbic7XHJcblxyXG4gICAgICBzZ3JvdXBkYXRhICs9IHNncm91cC5kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHMgKz0gc2dyb3VwZGF0YTtcclxuICAgIHMgKz0gJ00gIEVORFxcbic7XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIGdldEV4cGFuZGVkQXRvbXMoYXRvbXM6IEF0b208VEJpbz5bXSk6IEF0b208VEJpbz5bXSB7XHJcbiAgICBjb25zdCByZXQ6IEF0b208VEJpbz5bXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhID0gYXRvbXNbaV07XHJcbiAgICAgIGlmIChhLnN1cGVyYXRvbSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0LnB1c2goYSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBhLnN1cGVyYXRvbS5hdG9tcy5sZW5ndGg7ICsraylcclxuICAgICAgICAgIHJldC5wdXNoKGEuc3VwZXJhdG9tLmF0b21zW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIHdyaXRlTGlzdChwcmVmaXgsIGxpc3QsIGtleSwgY2hhcnMsIGNvdW50cGVybGluZSkge1xyXG4gICAgaWYgKGxpc3QgPT0gbnVsbCB8fCBsaXN0Lkxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gJyc7XHJcblxyXG4gICAgbGV0IHMgPSAnJztcclxuICAgIGxldCBjb3VudGxhc3RsaW5lID0gbGlzdC5sZW5ndGggJSBjb3VudHBlcmxpbmU7XHJcbiAgICBpZiAoY291bnRsYXN0bGluZSA9PSAwKVxyXG4gICAgICBjb3VudGxhc3RsaW5lID0gY291bnRwZXJsaW5lO1xyXG4gICAgY29uc3QgbGluZXMgPSAobGlzdC5sZW5ndGggLSBjb3VudGxhc3RsaW5lKSAvIGNvdW50cGVybGluZSArIDE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lczsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGNvdW50dGhpc2xpbmUgPSBpICsgMSA9PSBsaW5lcyA/IGNvdW50bGFzdGxpbmUgOiBjb3VudHBlcmxpbmU7XHJcbiAgICAgIHMgKz0gcHJlZml4O1xyXG4gICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKGNvdW50dGhpc2xpbmUsIDMpO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvdW50dGhpc2xpbmU7ICsrailcclxuICAgICAgICBzICs9IHNjaWwuVXRpbHMuZm9ybWF0U3RyKGxpc3RbaSAqIGNvdW50cGVybGluZSArIGpdW2tleV0sIGNoYXJzKTtcclxuICAgICAgcyArPSAnXFxuJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIGdldE1vbFYzMDAwKHJ4bikge1xyXG4gICAgY29uc3Qgc3VwZXJhdG9tcyA9IFtdO1xyXG4gICAgY29uc3QgbSA9IHRoaXMuZXhwYW5kU3VwZXJBdG9tcyhzdXBlcmF0b21zKTtcclxuICAgIG0uY2hpcmFsID0gdGhpcy5jaGlyYWw7XHJcbiAgICByZXR1cm4gbS5fZ2V0TW9sVjMwMDAoKTtcclxuICB9XHJcblxyXG4gIF9nZXRNb2xWMzAwMChyeG4/OiBhbnkpIHtcclxuICAgIGNvbnN0IGxlbiA9IHRoaXMuYm9uZGxlbmd0aCA+IDAgPyB0aGlzLmJvbmRsZW5ndGggOiB0aGlzLm1lZEJvbmRMZW5ndGgoKTtcclxuICAgIGNvbnN0IHNjYWxlID0gbGVuID4gMCA/ICgxLjU2IC8gbGVuKSA6IDEuMDtcclxuXHJcbiAgICB0aGlzLnJlc2V0SWRzKCk7XHJcblxyXG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgeXIgPSBkdC5nZXRGdWxsWWVhcigpICsgJyc7XHJcblxyXG4gICAgbGV0IHMgPSAnJztcclxuICAgIGlmICghcnhuKSB7XHJcbiAgICAgIHMgKz0gKHRoaXMubmFtZSA9PSBudWxsID8gJycgOiB0aGlzLm5hbWUpICsgJ1xcbic7XHJcbiAgICAgIHMgKz0gJyAgIEpTRHJhdyAnICsgc2NpbC5VdGlscy5mb3JtYXRTdHIoZHQuZ2V0TW9udGgoKSArIDEsIDIsIDApLnJlcGxhY2UoJyAnLCAnMCcpICtcclxuICAgICAgICBzY2lsLlV0aWxzLmZvcm1hdFN0cihkdC5nZXREYXRlKCksIDIsIDApLnJlcGxhY2UoJyAnLCAnMCcpICtcclxuICAgICAgICB5ci5zdWJzdHIoMikgK1xyXG4gICAgICAgIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGR0LmdldEhvdXJzKCksIDIsIDApLnJlcGxhY2UoJyAnLCAnMCcpICtcclxuICAgICAgICBzY2lsLlV0aWxzLmZvcm1hdFN0cihkdC5nZXRNaW51dGVzKCksIDIsIDApLnJlcGxhY2UoJyAnLCAnMCcpICsgJzJEXFxuJztcclxuICAgICAgcyArPSAnXFxuJztcclxuICAgICAgcyArPSAnICAwICAwICAgICAgICAwICAgICAgICAgICAgICAgOTk5IFYzMDAwXFxuJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbmhhbmNlZHN0ZXJlb2NoZW1pc3RyeSA9IHRoaXMuZ2V0RW5oYW5jZWRTdGVyZW9jaGVtaXN0cnkoKTtcclxuICAgIGNvbnN0IGNoaXJhbCA9IHRoaXMuaGFzU3RlcmVvQ2VudGVyKCkgfHwgIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShlbmhhbmNlZHN0ZXJlb2NoZW1pc3RyeSk7XHJcblxyXG4gICAgcyArPSAnTSAgVjMwIEJFR0lOIENUQUJcXG4nO1xyXG4gICAgcyArPSAnTSAgVjMwIENPVU5UUyAnICsgdGhpcy5hdG9tcy5sZW5ndGggKyAnICcgKyB0aGlzLmJvbmRzLmxlbmd0aCArICcgMCAwICcgKyAoY2hpcmFsID8gMSA6IDApICsgJ1xcbic7XHJcblxyXG4gICAgcyArPSAnTSAgVjMwIEJFR0lOIEFUT01cXG4nO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBsZXQgZWxlbSA9IGEuZWxlbTtcclxuICAgICAgaWYgKGVsZW0gPT0gJ1InKSB7XHJcbiAgICAgICAgaWYgKGEuaVIgPiAwKVxyXG4gICAgICAgICAgZWxlbSA9ICdSIyc7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgZWxlbSA9ICdSJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtID09ICdIJykge1xyXG4gICAgICAgIGlmIChhLmlzb3RvcGUgPT0gMilcclxuICAgICAgICAgIGVsZW0gPSAnRCc7XHJcbiAgICAgICAgZWxzZSBpZiAoYS5pc290b3BlID09IDMpXHJcbiAgICAgICAgICBlbGVtID0gJ1QnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzICs9ICdNICBWMzAgJyArIGEuaWQgKyAnICcgKyBlbGVtO1xyXG4gICAgICBzICs9ICcgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKGEucC54ICogc2NhbGUsIDAsIDQpO1xyXG4gICAgICBzICs9ICcgJyArIHNjaWwuVXRpbHMuZm9ybWF0U3RyKC1hLnAueSAqIHNjYWxlLCAwLCA0KTtcclxuICAgICAgcyArPSAnIDAgJyArIChyeG4gJiYgYS5hdG9tbWFwaWQgPiAwID8gYS5hdG9tbWFwaWQgOiAwKTtcclxuICAgICAgaWYgKGEuY2hhcmdlICE9IG51bGwgJiYgYS5jaGFyZ2UgIT0gMClcclxuICAgICAgICBzICs9ICcgQ0hHPScgKyBhLmNoYXJnZTtcclxuICAgICAgaWYgKGEucmFkaWNhbCA+PSAxICYmIGEucmFkaWNhbCA8PSAzKVxyXG4gICAgICAgIHMgKz0gJyBSQUQ9JyArIGEucmFkaWNhbDtcclxuXHJcbiAgICAgIC8vaWYgKGNoaXJhbGF0b21zW2EuaWRdICE9IG51bGwpXHJcbiAgICAgIC8vICAgIHMgKz0gXCIgQ0ZHPVwiICsgY2hpcmFsYXRvbXNbYS5pZF07XHJcblxyXG4gICAgICBzICs9ICdcXG4nO1xyXG4gICAgfVxyXG4gICAgcyArPSAnTSAgVjMwIEVORCBBVE9NXFxuJztcclxuICAgIHMgKz0gJ00gIFYzMCBCRUdJTiBCT05EXFxuJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgbGV0IG9yZGVyID0gMDtcclxuICAgICAgbGV0IHN0ZXJlbyA9IDA7XHJcbiAgICAgIHN3aXRjaCAoYi50eXBlKSB7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuVU5LTk9XTjpcclxuICAgICAgICBvcmRlciA9IDg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuRFVNTVk6XHJcbiAgICAgICAgb3JkZXIgPSA5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkRPVUJMRU9SQVJPTUFUSUM6XHJcbiAgICAgICAgb3JkZXIgPSA3O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SQVJPTUFUSUM6XHJcbiAgICAgICAgb3JkZXIgPSA2O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlNJTkdMRU9SRE9VQkxFOlxyXG4gICAgICAgIG9yZGVyID0gNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5TSU5HTEU6XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuRE9VQkxFOlxyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLlRSSVBMRTpcclxuICAgICAgY2FzZSBKU0RyYXcyLkJPTkRUWVBFUy5ERUxPQ0FMSVpFRDpcclxuICAgICAgICBvcmRlciA9IGIudHlwZTtcclxuICAgICAgICBzdGVyZW8gPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLldFREdFOlxyXG4gICAgICAgIG9yZGVyID0gMTtcclxuICAgICAgICBzdGVyZW8gPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkhBU0g6XHJcbiAgICAgICAgb3JkZXIgPSAxO1xyXG4gICAgICAgIHN0ZXJlbyA9IDM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSlNEcmF3Mi5CT05EVFlQRVMuV0lHR0xZOlxyXG4gICAgICAgIG9yZGVyID0gMTtcclxuICAgICAgICBzdGVyZW8gPSAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEpTRHJhdzIuQk9ORFRZUEVTLkVJVEhFUjpcclxuICAgICAgICBvcmRlciA9IDI7XHJcbiAgICAgICAgc3RlcmVvID0gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBzICs9ICdNICBWMzAgJyArIChpICsgMSkgKyAnICcgKyBvcmRlciArICcgJyArIGIuYTEuaWQgKyAnICcgKyBiLmEyLmlkO1xyXG4gICAgICBpZiAoc3RlcmVvID4gMClcclxuICAgICAgICBzICs9ICcgQ0ZHPScgKyBzdGVyZW87XHJcbiAgICAgIGlmIChiLnJpbmcgIT0gbnVsbClcclxuICAgICAgICBzICs9ICcgVE9QTz0nICsgKGIucmluZyA/IDEgOiAyKTtcclxuICAgICAgaWYgKHJ4biAmJiBiLnJjZW50ZXIgPiAwKVxyXG4gICAgICAgIHMgKz0gJyBSWENUUj0nICsgYi5yY2VudGVyO1xyXG4gICAgICBzICs9ICdcXG4nO1xyXG4gICAgfVxyXG5cclxuICAgIHMgKz0gJ00gIFYzMCBFTkQgQk9ORFxcbic7XHJcbiAgICBzICs9IGVuaGFuY2Vkc3RlcmVvY2hlbWlzdHJ5O1xyXG4gICAgcyArPSAnTSAgVjMwIEVORCBDVEFCXFxuJztcclxuICAgIHMgKz0gJ00gIEVORFxcbic7XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIGhhc1N0ZXJlb0NlbnRlcigpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgaWYgKGIudHlwZSA9PSBKU0RyYXcyLkJPTkRUWVBFUy5XRURHRSB8fCBiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuSEFTSClcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBoYXNFbmhhbmNlZFN0ZXJlb2NoZW1pc3RyeSgpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldEVuaGFuY2VkU3RlcmVvY2hlbWlzdHJ5KCkge1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9sVjMwMDAobGluZXMsIHN0YXJ0LCByeG4sIHBvcz86IGFueSwgZW5kdG9rZW4/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcmVhZFYzMENvbGxlY3Rpb25zKGxpbmVzLCBpLCBhdG9tbWFwKSB7XHJcbiAgfVxyXG5cclxuICByZWFkVjMwQm9uZHMobGluZXMsIGksIGF0b21tYXAsIHJ4bikge1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpcmFsQXRvbSh0KTogQXRvbTxUQmlvPiB8IG51bGwge1xyXG4gICAgaWYgKHQgPT0gbnVsbCB8fCB0LmFuY2hvcnMgPT0gbnVsbCB8fCB0LmFuY2hvcnMubGVuZ3RoICE9IDEgfHwgdC5maWVsZHR5cGUgIT0gJ0NISVJBTCcpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgYSA9IEpTRHJhdzIuQXRvbS5jYXN0PFRCaW8+KHQuYW5jaG9yc1swXSk7XHJcbiAgICBpZiAoYSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBKU0RyYXcyLkF0b20uaXNWYWxpZENoaXJhbCh0LnRleHQpID8gYSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBtYXJrQ2hpcmFsaXR5KGEsIGMsIGJvbmRsZW5ndGgpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGZpbmRCZXN0UG9zdGlvbihhLCBib25kbGVuZ3RoKSB7XHJcbiAgICBjb25zdCBhdG9tcyA9IGEuX3BhcmVudC5nZXROZWlnaGJvckF0b21zKGEpO1xyXG4gICAgY29uc3QgcCA9IGEucC5jbG9uZSgpO1xyXG4gICAgaWYgKGF0b21zICE9IG51bGwgJiYgYXRvbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkZWcgPSBhdG9tc1swXS5wLmFuZ2xlVG8oYS5wKTtcclxuICAgICAgcC5vZmZzZXQoYm9uZGxlbmd0aCAqIDAuMzcsIDApO1xyXG4gICAgICBwLnJvdGF0ZUFyb3VuZChhLnAsIGRlZyAtIDYwKTtcclxuXHJcbiAgICAgIHAueCAtPSBib25kbGVuZ3RoICogMC4yNTtcclxuICAgICAgcC55IC09IGJvbmRsZW5ndGggKiAwLjI1O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcC54IC09IGJvbmRsZW5ndGggKiAwLjI1O1xyXG4gICAgICBwLnkgLT0gYm9uZGxlbmd0aCAqIDAuNzU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcDtcclxuICB9XHJcblxyXG4gIHJlYWRSeG5DZW50ZXIoYm9uZCwgcykge1xyXG4gICAgY29uc3QgcmNlbnRlciA9IHMgPT0gbnVsbCA/IG51bGwgOiBwYXJzZUludChzKTtcclxuICAgIHN3aXRjaCAocmNlbnRlcikge1xyXG4gICAgY2FzZSAtMTpcclxuICAgICAgYm9uZC5yY2VudGVyID0gSlNEcmF3Mi5SWE5DRU5URVIuTk9UQ0VOVEVSO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgMTpcclxuICAgICAgYm9uZC5yY2VudGVyID0gSlNEcmF3Mi5SWE5DRU5URVIuQ0VOVEVSO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgMTI6XHJcbiAgICBjYXNlIDEzOlxyXG4gICAgICBib25kLnJjZW50ZXIgPSBKU0RyYXcyLlJYTkNFTlRFUi5CUkVBS0FORENIQU5HRTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIDQ6XHJcbiAgICBjYXNlIDU6XHJcbiAgICAgIGJvbmQucmNlbnRlciA9IEpTRHJhdzIuUlhOQ0VOVEVSLkJSRUFLO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgODpcclxuICAgIGNhc2UgOTpcclxuICAgICAgYm9uZC5yY2VudGVyID0gSlNEcmF3Mi5SWE5DRU5URVIuQ0hBTkdFO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlYWRWMzBBdG9tcyhsaW5lcywgaSwgYXRvbW1hcCwgcnhuKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVhZFYzMENvdW50cyhsaW5lcywgaSwgY291bnRzKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcGFyc2VWMzBBdHRyaWJ1dGVzKHNzLCBzdGFydCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhR3JvdXAoZGF0YSwga2V5LCB4LCB5LCBrMiwgc2dyb3VwKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgY29udGFpbnNXb3JkKHdvcmQpIHtcclxuICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KHRoaXMuZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAodCAhPSBudWxsICYmIHNjaWwuVXRpbHMuY29udGFpbnNXb3JkKHQudGV4dCwgd29yZCwgdHJ1ZSkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb250YWluc1RleHQocykge1xyXG4gICAgcyA9IHMudG9Mb3dlckNhc2UoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3QodGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmICh0ICE9IG51bGwgJiYgdC50ZXh0ICE9IG51bGwgJiYgdC50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzKSA+PSAwKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IE1vbCBwcm9wZXJ0eVxyXG4gICAqIEBmdW5jdGlvbiBnZXRQcm9wXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGsgLSB0aGUgcHJvcGVydHkgbmFtZVxyXG4gICAqIEByZXR1cm5zIHRoZSBwcm9wZXJ0eVxyXG4gICAqL1xyXG4gIGdldFByb3Aoaykge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvcHMgPT0gbnVsbCA/IG51bGwgOiB0aGlzLnByb3BzW2tdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IE1vbCBwcm9wZXJ0eVxyXG4gICAqIEBmdW5jdGlvbiBzZXRQcm9wXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGsgLSB0aGUgcHJvcGVydHkgbmFtZVxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2IC0gdGhlIHByb3BlcnR5IHZhbHVlXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIHNldFByb3Aoaywgdikge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcyAhPSBudWxsKVxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnByb3BzW2tdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMgPT0gbnVsbClcclxuICAgICAgICB0aGlzLnByb3BzID0ge307XHJcbiAgICAgIHRoaXMucHJvcHNba10gPSB2ICsgJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgUkdmaWxlXHJcbiAgICogQGZ1bmN0aW9uIHNldFJnZmlsZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZ2ZpbGUgLSB0aGUgaW5wdXQgcmdmaWxlXHJcbiAgICogQHJldHVybnMgdGhlIE1vbCBvYmplY3RcclxuICAgKi9cclxuICBzZXRSZ2ZpbGUocmdmaWxlKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIF9zZXRQYXJlbnQobSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmF0b21zW2ldLl9wYXJlbnQgPSBtO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmJvbmRzW2ldLl9wYXJlbnQgPSBtO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmdyYXBoaWNzW2ldLl9wYXJlbnQgPSBtO1xyXG4gIH1cclxuXHJcbiAgX3NldEdyb3VwKGc6IGFueSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICB0aGlzLmF0b21zW2ldLmdyb3VwID0gZztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSlcclxuICAgICAgdGhpcy5ib25kc1tpXS5ncm91cCA9IGc7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdG9tKHAsIHRvcikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoYS50b2dnbGUocCwgdG9yKSlcclxuICAgICAgICByZXR1cm4gYTtcclxuXHJcbiAgICAgIGlmIChhLnJncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IGEucmdyb3VwLm1vbHM7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgKytqKSB7XHJcbiAgICAgICAgICBjb25zdCByID0gbGlzdFtqXS50b2dnbGVBdG9tKHAsIHRvcik7XHJcbiAgICAgICAgICBpZiAociAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKHAsIHRvcikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICBpZiAoYS50b2dnbGUocCwgdG9yKSlcclxuICAgICAgICByZXR1cm4gYTtcclxuXHJcbiAgICAgIGlmIChhLnJncm91cCA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgaWYgKGEucmdyb3VwLnRvZ2dsZShwLCB0b3IpKVxyXG4gICAgICAgIHJldHVybiBhLnJncm91cDtcclxuXHJcbiAgICAgIGNvbnN0IGxpc3QgPSBhLnJncm91cC5tb2xzO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyArK2opIHtcclxuICAgICAgICBjb25zdCByID0gbGlzdFtqXS50b2dnbGUocCwgdG9yKTtcclxuICAgICAgICBpZiAociAhPSBudWxsKVxyXG4gICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLnRvZ2dsZShwLCB0b3IpKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmJvbmRzW2ldO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSB0aGlzLmdyYXBoaWNzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdyYXBoaWNzW2ldO1xyXG4gICAgICBpZiAoZy50b2dnbGUocCwgdG9yKSlcclxuICAgICAgICByZXR1cm4gdGhpcy5ncmFwaGljc1tpXTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IFJ4bmZpbGVcclxuICAgKiBAZnVuY3Rpb24gc2V0UnhuZmlsZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByeG5maWxlIC0gdGhlIGlucHV0IHJ4bmZpbGVcclxuICAgKiBAcmV0dXJucyB0aGUgTW9sIG9iamVjdFxyXG4gICAqL1xyXG4gIHNldFJ4bmZpbGUocnhuZmlsZSkge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRSeG5WMzAwMChsaW5lcykge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICByZWFkQ3RhYnMobGluZXMsIGksIG4sIGxpc3QsIGVuZHRva2VuKSB7XHJcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICBjb25zdCBtID0gbmV3IEpTRHJhdzIuTW9sKCk7XHJcbiAgICAgIGNvbnN0IHBvczogYW55ID0ge307XHJcbiAgICAgIG0uc2V0TW9sVjMwMDAobGluZXMsIGksIHRydWUsIHBvcywgZW5kdG9rZW4pO1xyXG4gICAgICBpID0gcG9zLmk7XHJcbiAgICAgIGlmICghbS5pc0VtcHR5KCkpXHJcbiAgICAgICAgbGlzdC5wdXNoKG0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGk7XHJcbiAgfVxyXG5cclxuICBzZXRSeG5WMjAwMChsaW5lcykge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRSeG4ocnhuLCBib25kbGVuZ3RoKSB7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBSeG5maWxlXHJcbiAgICogQGZ1bmN0aW9uIGdldFJ4bmZpbGVcclxuICAgKiBAcGFyYW0ge2Jvb2x9IGdyb3VwYnlwbHVzIC0gaW5kaWNhdGUgaWYgZ3JvdXBpbmcgcmVhY3RhbnRzL3Byb2R1Y3RzIGJ5IGV4cGxpY2l0IHBsdXMgc2lnbnNcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHYzMDAwIC0gaW5kaWNhdGUgaWYgcmVuZGVyaW5nIHRoZSByeG5maWxlIGluIFYzMDAwIGZvcm1hdFxyXG4gICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0UnhuZmlsZShncm91cGJ5cGx1cywgdjMwMDApIHtcclxuICAgIGNvbnN0IHJ4biA9IHRoaXMucGFyc2VSeG4odHJ1ZSwgZ3JvdXBieXBsdXMpO1xyXG4gICAgaWYgKHJ4biA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAodjMwMDApXHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJ4blYzMDAwKHJ4bik7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJ4blYyMDAwKHJ4bik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxCcmFja2V0cygpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraikge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ncmFwaGljc1tqXTtcclxuICAgICAgaWYgKEpTRHJhdzIuQnJhY2tldC5jYXN0KGIpICE9IG51bGwpXHJcbiAgICAgICAgbGlzdC5wdXNoKGIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxUZXh0cygpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraikge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ncmFwaGljc1tqXTtcclxuICAgICAgaWYgKEpTRHJhdzIuVGV4dC5jYXN0KGIpICE9IG51bGwpXHJcbiAgICAgICAgbGlzdC5wdXNoKGIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRSeG5WMjAwMChyeG4pIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0UnhuVjMwMDAocnhuLCBncm91cGJ5cGx1cz86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IEpTRHJhdyB4bWwgZmlsZSBmb3JtYXRcclxuICAgKiBAZnVuY3Rpb24gZ2V0WG1sXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSB2aWV3XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdcclxuICAgKiBAcGFyYW0ge2Jvb2x9IHZpZXdvbmx5IC0gaW4gdmlld29ubHkgbW9kZVxyXG4gICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0WG1sKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB2aWV3b25seTogYm9vbGVhbiwgc3ZnOiBhbnksIGxlbjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0WG1sKHdpZHRoLCBoZWlnaHQsIHZpZXdvbmx5LCBzdmcsIGxlbik7XHJcbiAgfVxyXG5cclxuICBnZXRIdG1sKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB2aWV3b25seTogYm9vbGVhbiwgc3ZnOiBhbnksIGxlbjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRYbWwod2lkdGgsIGhlaWdodCwgdmlld29ubHksIHN2ZywgbGVuKTtcclxuICB9XHJcblxyXG4gIF9nZXRYbWwod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHZpZXdvbmx5OiBib29sZWFuLCBzdmc6IGFueSwgbGVuOiBudW1iZXIsIGluc2lkZT86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IFNlY3B0cnVtIEpEWCBkYXRhXHJcbiAgICogQGZ1bmN0aW9uIHNldEpkeFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gSkRYIHN0cmluZ1xyXG4gICAqIEByZXR1cm5zIGEgTW9sIG9iamVjdFxyXG4gICAqL1xyXG4gIHNldEpkeChkYXRhLCBib25kbGVuZ3RoKSB7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBKU0RyYXcgeG1sIGZpbGUgZm9ybWF0XHJcbiAgICogQGZ1bmN0aW9uIHNldFhtbFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB4bWwgLSB0aGUgaW5wdXQgSlNEcmF3IGh0bWwveG1sIHN0cmluZ1xyXG4gICAqIEByZXR1cm5zIGEgTW9sIG9iamVjdFxyXG4gICAqL1xyXG4gIHNldFhtbCh4bWwpIHtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgc2V0SHRtbCh4bWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNldFhtbCh4bWwpO1xyXG4gIH1cclxuXHJcbiAgdG9TY3JlZW4oc2NyZWVuQm9uZExlbmd0aCk6IG51bWJlciB7XHJcbiAgICBsZXQgbGVuID0gdGhpcy5tZWRCb25kTGVuZ3RoKCk7XHJcbiAgICBpZiAoIShsZW4gPiAwKSlcclxuICAgICAgbGVuID0gMS41NjtcclxuXHJcbiAgICBjb25zdCBzY2FsZSA9IHNjcmVlbkJvbmRMZW5ndGggLyBsZW47XHJcbiAgICB0aGlzLnNjYWxlKHNjYWxlKTtcclxuICAgIHJldHVybiBzY2FsZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjYWxlIHRoZSBtb2xlY3VsZVxyXG4gICAqIEBmdW5jdGlvbiBzY2FsZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAtIHRoZSBzY2FsaW5nIGZhY3RvclxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IG9yaWdpbiAtIHRoZSBvcmlnaW4gb2Ygc2NhbGluZ1xyXG4gICAqIEByZXR1cm5zIG51bGxcclxuICAgKi9cclxuICBzY2FsZShzY2FsZSwgb3JpZ2luPzogUG9pbnQpOiB2b2lkIHtcclxuICAgIGlmICghKHNjYWxlID4gMCkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGEucC5zY2FsZShzY2FsZSwgb3JpZ2luKTtcclxuICAgICAgaWYgKGEucmdyb3VwICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoYS5yZ3JvdXAgIT0gbnVsbClcclxuICAgICAgICAgIGEucmdyb3VwLnNjYWxlKHNjYWxlLCBvcmlnaW4pO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYS5yZ3JvdXAubW9scy5sZW5ndGg7ICsrailcclxuICAgICAgICAgIGEucmdyb3VwLm1vbHNbal0uc2NhbGUoc2NhbGUsIG9yaWdpbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuZ3JhcGhpY3NbaV0uc2NhbGUoc2NhbGUsIG9yaWdpbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGbGlwIHRoZSBtb2xlY3VsZSBhcm91bmQgYW4gWCBheGlzXHJcbiAgICogQGZ1bmN0aW9uIGZsaXBYXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSB0aGUgeCBheGlzXHJcbiAgICogQHJldHVybnMgbnVsbFxyXG4gICAqL1xyXG4gIGZsaXBYKHg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IHAgPSB0aGlzLmF0b21zW2ldLnA7XHJcbiAgICAgIHAueCA9IHggLSAocC54IC0geCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuZ3JhcGhpY3NbaV0uZmxpcFgoeCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGbGlwIHRoZSBtb2xlY3VsZSBhcm91bmQgYSBZIGF4aXNcclxuICAgKiBAZnVuY3Rpb24gZmxpcFlcclxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIHRoZSB5IGF4aXNcclxuICAgKiBAcmV0dXJucyBudWxsXHJcbiAgICovXHJcbiAgZmxpcFkoeTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgcCA9IHRoaXMuYXRvbXNbaV0ucDtcclxuICAgICAgcC55ID0geSAtIChwLnkgLSB5KTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSlcclxuICAgICAgdGhpcy5ncmFwaGljc1tpXS5mbGlwWSh5KTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmxhZygpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB0aGlzLmF0b21zW2ldLmYgPSBudWxsO1xyXG4gICAgICB0aGlzLmF0b21zW2ldLnJpbmdjbG9zdXJlcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuYm9uZHNbaV0uZiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBfY29ubmVjdEZyYWdzQnlQbHVzKGZyYWdzLCBib25kbGVuKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIF9zcGxpdEZyYWdzKGZyYWdzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYWdzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IHNzID0gZnJhZ3NbaV0uc3BsaXRGcmFnbWVudHMoKTtcclxuICAgICAgaWYgKHNzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmcmFncy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzcy5sZW5ndGg7ICsraylcclxuICAgICAgICAgIGZyYWdzLnNwbGljZShpLCAwLCBzc1trXSk7XHJcbiAgICAgICAgaSArPSBzcy5sZW5ndGggLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfY29ubmVjdE5leHRMaW5lKGZyYWdzLCByZWN0LCBhYm92ZSwgYXJyb3csIGJvbmRsZW4pIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0UnhuKGFycm93KSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIF9maW5kQ2xvc2VUZXh0cyh0LCB0ZXh0cywgZHksIHJldCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCB0ZXh0cy5sZW5ndGg7ICsraykge1xyXG4gICAgICBjb25zdCB4ID0gdGV4dHNba107XHJcbiAgICAgIGlmICh4ID09IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCByMSA9IHQucmVjdCgpO1xyXG4gICAgICBjb25zdCByMiA9IHgucmVjdCgpO1xyXG4gICAgICBpZiAoTWF0aC5hYnMocjEudG9wIC0gcjIudG9wKSA8IGR5IHx8IE1hdGguYWJzKHIxLnRvcCAtIHIyLmJvdHRvbSgpKSA8IGR5IHx8XHJcbiAgICAgICAgTWF0aC5hYnMocjEuYm90dG9tKCkgLSByMi50b3ApIDwgZHkgfHwgTWF0aC5hYnMocjEuYm90dG9tKCkgLSByMi5ib3R0b20oKSkgPCBkeSkge1xyXG4gICAgICAgIGNvbnN0IG92ZXJsYXAgPSBNYXRoLm1pbihyMS5yaWdodCgpLCByMi5yaWdodCgpKSAtIE1hdGgubWF4KHIxLmxlZnQsIHIyLmxlZnQpO1xyXG4gICAgICAgIGlmIChvdmVybGFwID49IE1hdGgubWluKHIxLndpZHRoLCByMi53aWR0aCkgLyAyKSB7XHJcbiAgICAgICAgICByZXQucHVzaCh4KTtcclxuICAgICAgICAgIHRleHRzW2tdID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhcnNlUnhuMigpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVzdCBpZiB0aGUgbW9sZWN1bGUgaXMgYSByZWFjdGlvblxyXG4gICAqIEBmdW5jdGlvbiBpc1J4blxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBpc1J4bigpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2dyb3VwQnlQbHVzKHJ4bikge1xyXG4gICAgaWYgKHJ4biA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gcnhuO1xyXG5cclxuICAgIGNvbnN0IHBsdXNlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyYXBoaWNzW2ldLlQgPT0gJ1BMVVMnKVxyXG4gICAgICAgIHBsdXNlcy5wdXNoKHRoaXMuZ3JhcGhpY3NbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwbHVzZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgaWYgKHJ4bi5yZWFjdGFudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcnhuLnJlYWN0YW50cy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIHJ4bi5yZWFjdGFudHNbMF0ubWVyZ2VNb2wocnhuLnJlYWN0YW50c1tpXSk7XHJcbiAgICAgICAgcnhuLnJlYWN0YW50cyA9IFtyeG4ucmVhY3RhbnRzWzBdXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocnhuLnByb2R1Y3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHJ4bi5wcm9kdWN0cy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIHJ4bi5wcm9kdWN0c1swXS5tZXJnZU1vbChyeG4ucHJvZHVjdHNbaV0pO1xyXG4gICAgICAgIHJ4bi5wcm9kdWN0cyA9IFtyeG4ucHJvZHVjdHNbMF1dO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBvcmRlciBieSB4XHJcbiAgICAgIGNvbnN0IHh4ID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGx1c2VzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgeCA9IHBsdXNlc1tpXS5wLng7XHJcbiAgICAgICAgbGV0IHAgPSB4eC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB4eC5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgaWYgKHggPCB4eFtrXSkge1xyXG4gICAgICAgICAgICBwID0gaztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4eC5zcGxpY2UocCwgMCwgeCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJ4bi5yZWFjdGFudHMgPSB0aGlzLl9ncm91cEJ5UGx1czIoeHgsIHJ4bi5yZWFjdGFudHMpO1xyXG4gICAgICByeG4ucHJvZHVjdHMgPSB0aGlzLl9ncm91cEJ5UGx1czIoeHgsIHJ4bi5wcm9kdWN0cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcnhuO1xyXG4gIH1cclxuXHJcbiAgX2dyb3VwQnlQbHVzMihwbHVzZXMsIG1vbHMpOiBNb2w8VEJpbz5bXSB7XHJcbiAgICBjb25zdCBsaXN0OiBNb2w8VEJpbz5bXSA9IFtdO1xyXG4gICAgY29uc3QgbiA9IHBsdXNlcy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgbSA9IG1vbHNbaV07XHJcbiAgICAgIGNvbnN0IGN4ID0gbW9sc1tpXS5jZW50ZXIoKS54O1xyXG4gICAgICBsZXQgZiA9IGZhbHNlO1xyXG4gICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47ICsraykge1xyXG4gICAgICAgIGlmIChjeCA8IHBsdXNlc1trXSkge1xyXG4gICAgICAgICAgaWYgKGxpc3Rba10gPT0gbnVsbClcclxuICAgICAgICAgICAgbGlzdFtrXSA9IG07XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGxpc3Rba10ubWVyZ2VNb2wobSk7XHJcbiAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFmKSB7XHJcbiAgICAgICAgaWYgKGxpc3Rbbl0gPT0gbnVsbClcclxuICAgICAgICAgIGxpc3Rbbl0gPSBtO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGxpc3Rbbl0ubWVyZ2VNb2wobSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXQ6IE1vbDxUQmlvPltdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGxpc3RbaV0gIT0gbnVsbClcclxuICAgICAgICByZXQucHVzaChsaXN0W2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZSB0aGUgbW9sZWN1bGUgYXMgYSByZWFjdGlvblxyXG4gICAqIEBmdW5jdGlvbiBwYXJzZVJ4blxyXG4gICAqIEByZXR1cm5zIGEgUmVhY3Rpb24gb2JqZWN0OiB7IHJlYWN0YW50cywgcHJvZHVjdHMsIGFycm93LCBhYm92ZSwgYmVsb3cgfVxyXG4gICAqL1xyXG4gIHBhcnNlUnhuKGNvcHlncmFwaGljcz86IGJvb2xlYW4sIGdyb3VwYnlwbHVzPzogYm9vbGVhbikge1xyXG4gICAgbGV0IHJ4biA9IHRoaXMuX3BhcnNlUnhuKCk7XHJcbiAgICBpZiAoZ3JvdXBieXBsdXMpXHJcbiAgICAgIHJ4biA9IHRoaXMuX2dyb3VwQnlQbHVzKHJ4bik7XHJcblxyXG4gICAgLy8gICAgICAgIGlmIChyeG4gIT0gbnVsbCAmJiBjb3B5Z3JhcGhpY3MpIHtcclxuICAgIC8vICAgICAgICAgICAgdmFyIGJyYWNrZXRzID0gdGhpcy5nZXRBbGxCcmFja2V0cygpO1xyXG4gICAgLy8gICAgICAgICAgICB2YXIgdGV4dHMgPSB0aGlzLmdldEFsbFRleHRzKCk7XHJcbiAgICAvLyAgICAgICAgICAgIHRoaXMuX2FkZEdyYXBoaWNzUnhuTW9sKHJ4bi5yZWFjdGFudHMsIGJyYWNrZXRzLCB0ZXh0cyk7XHJcbiAgICAvLyAgICAgICAgICAgIHRoaXMuX2FkZEdyYXBoaWNzUnhuTW9sKHJ4bi5wcm9kdWN0cywgYnJhY2tldHMsIHRleHRzKTtcclxuICAgIC8vICAgICAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJ4bjtcclxuICB9XHJcblxyXG4gIF9hZGRHcmFwaGljc1J4bk1vbChtb2xzLCBicmFja2V0cywgdGV4dHMpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9scy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBtID0gbW9sc1tpXTtcclxuICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBicmFja2V0cy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgIGNvbnN0IGIgPSBicmFja2V0c1trXTtcclxuICAgICAgICBpZiAoYiAhPSBudWxsICYmIGIuYWxsQXRvbXNJbihtKSkge1xyXG4gICAgICAgICAgbS5ncmFwaGljcy5wdXNoKGIpO1xyXG4gICAgICAgICAgYnJhY2tldHNba10gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBrID0gMDsgayA8IHRleHRzLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IHRleHRzW2tdO1xyXG4gICAgICAgIGlmIChiICE9IG51bGwgJiYgYi5hbGxBbmNob3JzSW4obSkpIHtcclxuICAgICAgICAgIG0uZ3JhcGhpY3MucHVzaChiKTtcclxuICAgICAgICAgIGJyYWNrZXRzW2tdID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9wYXJzZVJ4bigpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2hhc092ZXJsYXAobGVmdCwgcmlnaHQsIHJlY3QpIHtcclxuICAgIGNvbnN0IGwgPSByZWN0LmxlZnQ7XHJcbiAgICBjb25zdCByID0gcmVjdC5yaWdodCgpO1xyXG4gICAgcmV0dXJuIGwgPCByaWdodCAmJiByID4gbGVmdDtcclxuICB9XHJcblxyXG4gIF9zb3J0VGV4dEJ5VG9wKHRleHRzKSB7XHJcbiAgICBpZiAodGV4dHMgPT0gbnVsbCB8fCB0ZXh0cy5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuIHRleHRzO1xyXG5cclxuICAgIGNvbnN0IHl5ID0gW107XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgeSA9IHRleHRzW2ldLl9yZWN0LnRvcDtcclxuICAgICAgbGV0IHAgPSB5eS5sZW5ndGg7XHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgeXkubGVuZ3RoOyArK2spIHtcclxuICAgICAgICBpZiAoeSA8IHl5W2tdKSB7XHJcbiAgICAgICAgICBwID0gaztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgeXkuc3BsaWNlKHAsIDAsIHkpO1xyXG4gICAgICBzb3J0ZWQuc3BsaWNlKHAsIDAsIHRleHRzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc29ydGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB3aG9sZSBmcmFnbWVudCBjb250YWluaW5nIGFuIGlucHV0IGF0b21cclxuICAgKiBAZnVuY3Rpb24gZ2V0RnJhZ21lbnRcclxuICAgKiBAcGFyYW0ge0F0b219IGEgLSB0aGUgaW5wdXQgYXRvbVxyXG4gICAqIEByZXR1cm5zIGEgTW9sIG9iamVjdFxyXG4gICAqL1xyXG4gIGdldEZyYWdtZW50KGE6IEF0b208VEJpbz4sIHBhcmVudD86IE1vbDxUQmlvPikge1xyXG4gICAgdGhpcy5zZXRBdG9tQm9uZHMoKTtcclxuICAgIHRoaXMuY2xlYXJGbGFnKCk7XHJcblxyXG4gICAgY29uc3QgdHJlZSA9IHRoaXMuX2dldFRyZWUoYSkudHJlZTtcclxuICAgIGNvbnN0IHBhdGggPSBbXTtcclxuICAgIHRyZWUubGlzdChwYXRoLCAnYnJlYWR0aGZpcnN0Jyk7XHJcblxyXG4gICAgY29uc3QgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBwYXRoLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgIGNvbnN0IGIgPSBwYXRoW2tdO1xyXG4gICAgICBpZiAoYi5hICE9IG51bGwgJiYgYi5yaW5nY2xvc3VyZSA9PSBudWxsKVxyXG4gICAgICAgIG0uX2FkZEF0b20oYi5hLCBwYXJlbnQpO1xyXG4gICAgICBpZiAoYi5iICE9IG51bGwpXHJcbiAgICAgICAgbS5fYWRkQm9uZChiLmIsIHBhcmVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwbGl0IGl0IGludG8gZnJhZ21lbnRzXHJcbiAgICogQGZ1bmN0aW9uIHNwbGl0RnJhZ21lbnRzXHJcbiAgICogQHJldHVybnMgYW4gYXJyYXkgb2YgTW9sXHJcbiAgICovXHJcbiAgc3BsaXRGcmFnbWVudHMoc2tpcEhpZGRlbkF0b21zPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jbGVhckZsYWcoKTtcclxuXHJcbiAgICBsZXQgZnJhZ2lkID0gLTE7XHJcbiAgICBjb25zdCBib25kczogQm9uZDxUQmlvPltdID0gc2NpbC5VdGlscy5jbG9uZUFycmF5KHRoaXMuYm9uZHMpO1xyXG4gICAgd2hpbGUgKGJvbmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgYjogQm9uZDxUQmlvPiA9IGJvbmRzWzBdO1xyXG4gICAgICBpZiAoc2tpcEhpZGRlbkF0b21zKSB7XHJcbiAgICAgICAgaWYgKGIuYTEuaGlkZGVuIHx8IGIuYTIuaGlkZGVuKSB7XHJcbiAgICAgICAgICBib25kcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgYi5mID0gYi5hMS5mID0gYi5hMi5mID0gKytmcmFnaWQ7XHJcbiAgICAgIGJvbmRzLnNwbGljZSgwLCAxKTtcclxuXHJcbiAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgbGV0IG4gPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBib25kcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgY29uc3QgYiA9IGJvbmRzW2ldO1xyXG4gICAgICAgICAgaWYgKGIuYTEuaGlkZGVuIHx8IGIuYTIuaGlkZGVuKSB7XHJcbiAgICAgICAgICAgIGJvbmRzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGIuZiA9PSBudWxsICYmIChiLmExLmYgPT0gZnJhZ2lkIHx8IGIuYTIuZiA9PSBmcmFnaWQpKSB7XHJcbiAgICAgICAgICAgIGIuZiA9IGIuYTEuZiA9IGIuYTIuZiA9IGZyYWdpZDtcclxuICAgICAgICAgICAgYm9uZHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICArK247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobiA9PSAwKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmcmFncyA9IFtdO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPD0gZnJhZ2lkOyArK2spIHtcclxuICAgICAgY29uc3QgbSA9IG5ldyBKU0RyYXcyLk1vbCgpO1xyXG4gICAgICBmcmFncy5wdXNoKG0pO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXRvbXNbaV0uZiA9PSBrKVxyXG4gICAgICAgICAgbS5fYWRkQXRvbSh0aGlzLmF0b21zW2ldLCB0aGlzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYm9uZHNbaV0uZiA9PSBrKVxyXG4gICAgICAgICAgbS5fYWRkQm9uZCh0aGlzLmJvbmRzW2ldLCB0aGlzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5hdG9tc1tpXS5mID09IG51bGwpIHtcclxuICAgICAgICBpZiAoc2tpcEhpZGRlbkF0b21zICYmIHRoaXMuYXRvbXNbaV0uaGlkZGVuKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGNvbnN0IG0gPSBuZXcgSlNEcmF3Mi5Nb2woKTtcclxuICAgICAgICBmcmFncy5wdXNoKG0pO1xyXG4gICAgICAgIG0uX2FkZEF0b20odGhpcy5hdG9tc1tpXSwgdGhpcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBicmFja2V0c1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGJyID0gSlNEcmF3Mi5CcmFja2V0LmNhc3QodGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChiciA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBmcmFncy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgIGlmIChici5hdG9tcyA9PSBudWxsIHx8IGJyLmF0b21zLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgaWYgKGZyYWdzW2tdLmNvbnRhaW5zQWxsQXRvbXMoYnIuYXRvbXMpKSB7XHJcbiAgICAgICAgICBmcmFnc1trXS5ncmFwaGljcy5wdXNoKGJyKTtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3QodGhpcy5ncmFwaGljc1tqXSk7XHJcbiAgICAgICAgICAgIGlmICh0ICE9IG51bGwgJiYgdC5hbmNob3JzICE9IG51bGwgJiYgdC5hbmNob3JzLmxlbmd0aCA9PSAxICYmIHQuYW5jaG9yc1swXSA9PSBicilcclxuICAgICAgICAgICAgICBmcmFnc1trXS5ncmFwaGljcy5wdXNoKHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0dGFjaGVkIHRleHRzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgdCA9IEpTRHJhdzIuVGV4dC5jYXN0KHRoaXMuZ3JhcGhpY3NbaV0pO1xyXG4gICAgICBpZiAodCA9PSBudWxsIHx8IHQuYW5jaG9ycyA9PSBudWxsIHx8IHQuYW5jaG9ycy5sZW5ndGggPT0gMClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgZnJhZ3MubGVuZ3RoOyArK2spIHtcclxuICAgICAgICBpZiAoZnJhZ3Nba10uY29udGFpbnNBbGxBdG9tcyh0LmFuY2hvcnMpKVxyXG4gICAgICAgICAgZnJhZ3Nba10uZ3JhcGhpY3MucHVzaCh0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBzZXQgY2hpcmFsIGZsYWdzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYWdzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IGZyYWcgPSBmcmFnc1tpXTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBmcmFnLmF0b21zLmxlbmd0aDsgKytqKSB7XHJcbiAgICAgICAgY29uc3QgZyA9IGZyYWcuYXRvbXNbal0uZ3JvdXA7XHJcbiAgICAgICAgaWYgKGcgIT0gbnVsbCAmJiBnLnR5cGUgPT0gJ2NoaXJhbCcpIHtcclxuICAgICAgICAgIGZyYWcuY2hpcmFsID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhZ3MubGVuZ3RoOyArK2kpXHJcbiAgICAgIGZyYWdzW2ldLmJvbmRsZW5ndGggPSB0aGlzLmJvbmRsZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIGZyYWdzO1xyXG4gIH1cclxuXHJcbiAgY29udGFpbnNBbGxBdG9tcyhhdG9tcykge1xyXG4gICAgaWYgKGF0b21zID09IG51bGwgfHwgYXRvbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHNjaWwuVXRpbHMuaW5kZXhPZih0aGlzLmF0b21zLCBhdG9tc1tpXSkgPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoZSBNb2wgY29udGFpbnMgYW4gYXRvbVxyXG4gICAqIEBmdW5jdGlvbiBjb250YWluc0F0b21cclxuICAgKiBAcGFyYW0ge0F0b219IGEgLSB0aGUgaW5wdXQgYXRvbVxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBjb250YWluc0F0b20oYSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmF0b21zW2ldID09IGEpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRBdG9tQm9uZHMoY2xlYXI/OiBib29sZWFuKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuYXRvbXNbaV0uYm9uZHMgPSBudWxsO1xyXG5cclxuICAgIGlmIChjbGVhcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuXHJcbiAgICAgIGlmIChiLmExLmJvbmRzID09IG51bGwpXHJcbiAgICAgICAgYi5hMS5ib25kcyA9IFtdO1xyXG4gICAgICBiLmExLmJvbmRzLnB1c2goYik7XHJcblxyXG4gICAgICBpZiAoYi5hMi5ib25kcyA9PSBudWxsKVxyXG4gICAgICAgIGIuYTIuYm9uZHMgPSBbXTtcclxuICAgICAgYi5hMi5ib25kcy5wdXNoKGIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Qm9uZE9yZGVycygpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gdGhpcy5ib25kc1tpXTtcclxuICAgICAgYi5vcmRlciA9IGIudmFsZW5jZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChERUJVRy5lbmFibGUpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgICAgREVCVUcucHJpbnQoYi5hMS5pZCArICctJyArIGIuYTIuaWQgKyAnICcgKyBiLm9yZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJpbmdzID0gdGhpcy5fZ2V0UmluZ3MoKTtcclxuICAgIGNvbnN0IGFycyA9IFtdO1xyXG4gICAgd2hpbGUgKHJpbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG4gPSAwO1xyXG4gICAgICBmb3IgKGxldCBpID0gcmluZ3MubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICBjb25zdCByID0gcmluZ3NbaV07XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBcm9tYXRpY1JpbmcocikpIHtcclxuICAgICAgICAgICsrbjtcclxuICAgICAgICAgIGFycy5wdXNoKHIpO1xyXG4gICAgICAgICAgcmluZ3Muc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCByLmxlbmd0aDsgKytrKVxyXG4gICAgICAgICAgICByW2tdLm9yZGVyID0gMS41O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG4gPT0gMClcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge2FycmluZ3M6IGFycywgcmluZ3M6IHJpbmdzfTtcclxuICB9XHJcblxyXG4gIGlzQXJvbWF0aWNSaW5nKHI6IEJvbmQ8VEJpbz5bXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHIubGVuZ3RoID09IDYpIHtcclxuICAgICAgbGV0IGIxID0gclswXTtcclxuICAgICAgZm9yIChsZXQgayA9IDE7IGsgPD0gci5sZW5ndGg7ICsraykge1xyXG4gICAgICAgIGNvbnN0IGIyID0gcltrID09IHIubGVuZ3RoID8gMCA6IGtdO1xyXG4gICAgICAgIGlmICghKGIxLm9yZGVyID09IDEgJiYgYjIub3JkZXIgPT0gMiB8fFxyXG4gICAgICAgICAgYjEub3JkZXIgPT0gMiAmJiBiMi5vcmRlciA9PSAxIHx8XHJcbiAgICAgICAgICBiMS5vcmRlciA9PSAxLjUgJiYgYjIub3JkZXIgPj0gMSAmJiBiMi5vcmRlciA8PSAyIHx8XHJcbiAgICAgICAgICBiMi5vcmRlciA9PSAxLjUgJiYgYjEub3JkZXIgPj0gMSAmJiBiMS5vcmRlciA8PSAyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiMSA9IGIyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoci5sZW5ndGggPT0gNSkge1xyXG4gICAgICBsZXQgYjEgPSByWzBdO1xyXG4gICAgICBmb3IgKGxldCBrID0gMTsgayA8PSByLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgY29uc3QgYjIgPSByW2sgPT0gci5sZW5ndGggPyAwIDoga107XHJcbiAgICAgICAgaWYgKGIxLm9yZGVyID09IDEgJiYgYjIub3JkZXIgPT0gMSkge1xyXG4gICAgICAgICAgbGV0IHY7XHJcbiAgICAgICAgICBpZiAoYjEuYTEgPT0gYjIuYTEgfHwgYjEuYTEgPT0gYjIuYTIpXHJcbiAgICAgICAgICAgIHYgPSBiMS5hMTtcclxuICAgICAgICAgIGVsc2UgaWYgKGIxLmEyID09IGIyLmExIHx8IGIxLmEyID09IGIyLmEyKVxyXG4gICAgICAgICAgICB2ID0gYjEuYTI7XHJcblxyXG4gICAgICAgICAgaWYgKHYgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAoclsoayArIDEpICUgNV0ub3JkZXIgPT0gMiB8fCByWyhrICsgMSkgJSA1XS5vcmRlciA9PSAxLjUpICYmXHJcbiAgICAgICAgICAgIHJbKGsgKyAyKSAlIDVdLm9yZGVyID09IDEgJiZcclxuICAgICAgICAgICAgKHJbKGsgKyAzKSAlIDVdLm9yZGVyID09IDIgfHwgclsoayArIDMpICUgNV0ub3JkZXIgPT0gMS41KSkge1xyXG4gICAgICAgICAgICBpZiAodi5lbGVtID09ICdOJyB8fCB2LmVsZW0gPT0gJ08nIHx8IHYuZWxlbSA9PSAnUycgfHwgdi5lbGVtID09ICdQJykge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYuZWxlbSA9PSAnQycpIHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gdi5ib25kc1tpXS5vcmRlcjtcclxuICAgICAgICAgICAgICAgIGlmIChvcmRlciA9PSAxLjUgfHwgb3JkZXIgPT0gMilcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiMSA9IGIyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJlcGFyZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IGF0b21zID0gSlNEcmF3Mi5Gb3JtdWxhUGFyc2VyLmdldEF0b21TdGF0cyh0aGlzKS5lbGVtZW50cztcclxuICAgIGNvbnN0IGFsbHJpbmdzID0gdGhpcy5zZXRCb25kT3JkZXJzKCk7XHJcblxyXG4gICAgY29uc3QgYm9uZHMgPSB7MDogMCwgMTogMCwgMS41OiAwLCAyOiAwLCAzOiAwfTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ib25kcy5sZW5ndGg7ICsraSlcclxuICAgICAgKytib25kc1t0aGlzLmJvbmRzW2ldLm9yZGVyXTtcclxuXHJcbiAgICBjb25zdCByaW5ncyA9IHtuNTogMCwgYTU6IDAsIG42OiAwLCBhNjogMH07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbHJpbmdzLmFycmluZ3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGFsbHJpbmdzLmFycmluZ3NbaV0ubGVuZ3RoID09IDUpXHJcbiAgICAgICAgKytyaW5ncy5hNTtcclxuICAgICAgZWxzZSBpZiAoYWxscmluZ3MuYXJyaW5nc1tpXS5sZW5ndGggPT0gNilcclxuICAgICAgICArK3JpbmdzLmE2O1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxyaW5ncy5yaW5ncy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYWxscmluZ3MucmluZ3NbaV0ubGVuZ3RoID09IDUpXHJcbiAgICAgICAgKytyaW5ncy5uNTtcclxuICAgICAgZWxzZSBpZiAoYWxscmluZ3MucmluZ3NbaV0ubGVuZ3RoID09IDYpXHJcbiAgICAgICAgKytyaW5ncy5uNjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge2F0b21zOiBhdG9tcywgYm9uZHM6IGJvbmRzLCByaW5nczogcmluZ3N9O1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBdG9tTWFwKGFpPzogbnVtYmVyKSB7XHJcbiAgICBsZXQgbiA9IDA7XHJcbiAgICBpZiAoYWkgPT0gbnVsbCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBpZiAodGhpcy5hdG9tc1tpXS5hdG9tbWFwaWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgKytuO1xyXG4gICAgICAgICAgdGhpcy5hdG9tc1tpXS5hdG9tbWFwaWQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgaWYgKGFpID09IHRoaXMuYXRvbXNbaV0uYXRvbW1hcGlkKSB7XHJcbiAgICAgICAgICArK247XHJcbiAgICAgICAgICB0aGlzLmF0b21zW2ldLmF0b21tYXBpZCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbjtcclxuICB9XHJcblxyXG4gIGdldE1heE1hcElkKCkge1xyXG4gICAgbGV0IG1heGlkID0gMDtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmF0b21zO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmIChsaXN0W2ldLmF0b21tYXBpZCAhPSBudWxsICYmIGxpc3RbaV0uYXRvbW1hcGlkID49IG1heGlkKVxyXG4gICAgICAgIG1heGlkID0gbGlzdFtpXS5hdG9tbWFwaWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWF4aWQgKyAxO1xyXG4gIH1cclxuXHJcbiAgc2NyZWVuKHRhcmdldCwgZnVsbHN0cnVjdHVyZSkge1xyXG4gICAgaWYgKHRoaXMuc3RhdHMgPT0gbnVsbClcclxuICAgICAgdGhpcy5zdGF0cyA9IHRoaXMucHJlcGFyZVNjcmVlbigpO1xyXG4gICAgaWYgKHRhcmdldC5zdGF0cyA9PSBudWxsKVxyXG4gICAgICB0YXJnZXQuc3RhdHMgPSB0YXJnZXQucHJlcGFyZVNjcmVlbigpO1xyXG5cclxuICAgIGNvbnN0IGF0b21zcSA9IHRoaXMuc3RhdHMuYXRvbXM7XHJcbiAgICBjb25zdCBhdG9tc3QgPSB0YXJnZXQuc3RhdHMuYXRvbXM7XHJcbiAgICBsZXQgYXQgPSBhdG9tc3RbJyonXSA9PSBudWxsID8gMCA6IGF0b21zdFsnKiddO1xyXG4gICAgYXQgKz0gYXRvbXN0WydBJ10gPT0gbnVsbCA/IDAgOiBhdG9tc3RbJ0EnXTtcclxuICAgIGF0ICs9IGF0b21zdFsnWCddID09IG51bGwgPyAwIDogYXRvbXN0WydYJ107XHJcbiAgICBhdCArPSBhdG9tc3RbJ1EnXSA9PSBudWxsID8gMCA6IGF0b21zdFsnUSddO1xyXG4gICAgYXQgKz0gYXRvbXN0WydMJ10gPT0gbnVsbCA/IDAgOiBhdG9tc3RbJ0wnXTtcclxuICAgIGZvciAoY29uc3QgZSBpbiBhdG9tc3EpIHtcclxuICAgICAgaWYgKGUgPT0gJ0gnIHx8IGUgPT0gJyonIHx8IGUgPT0gJ0EnIHx8IGUgPT0gJ1gnIHx8IGUgPT0gJ1EnIHx8IGUgPT0gJ0wnKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgaWYgKGZ1bGxzdHJ1Y3R1cmUgJiYgIShhdG9tc3FbZV0gPT0gYXRvbXN0W2VdKSB8fCAhZnVsbHN0cnVjdHVyZSAmJiAhKGF0b21zcVtlXSA8PSBhdG9tc3RbZV0gKyBhdCkpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvbmRzcSA9IHRoaXMuc3RhdHMuYm9uZHM7XHJcbiAgICBjb25zdCBib25kc3QgPSB0YXJnZXQuc3RhdHMuYm9uZHM7XHJcbiAgICBmb3IgKGNvbnN0IGUgaW4gYm9uZHNxKSB7XHJcbiAgICAgIGlmIChmdWxsc3RydWN0dXJlICYmICEoYm9uZHNxW2VdID09IGJvbmRzdFtlXSkgfHwgIWZ1bGxzdHJ1Y3R1cmUgJiYgIShib25kc3FbZV0gPD0gYm9uZHN0W2VdKSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxzdHJ1Y3R1cmUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5hNSA9PSB0YXJnZXQuc3RhdHMucmluZ3MuYTUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5uNSA9PSB0YXJnZXQuc3RhdHMucmluZ3MubjUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5hNiA9PSB0YXJnZXQuc3RhdHMucmluZ3MuYTYgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5uNiA9PSB0YXJnZXQuc3RhdHMucmluZ3MubjYgfHxcclxuICAgICAgIWZ1bGxzdHJ1Y3R1cmUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5hNSA8PSB0YXJnZXQuc3RhdHMucmluZ3MuYTUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5uNSA8PSB0YXJnZXQuc3RhdHMucmluZ3MubjUgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5hNiA8PSB0YXJnZXQuc3RhdHMucmluZ3MuYTYgJiZcclxuICAgICAgdGhpcy5zdGF0cy5yaW5ncy5uNiA8PSB0YXJnZXQuc3RhdHMucmluZ3MubjY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGEgZnVsbC1zdHJ1Y3R1cmUgc2VhcmNoXHJcbiAgICogQGZ1bmN0aW9uIGZ1bGxzdHJ1Y3R1cmVNYXRjaFxyXG4gICAqIEBwYXJhbSB7TW9sfSB0YXJnZXQgLSB0aGUgdGFyZ2V0IG1vbFxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBmdWxsc3RydWN0dXJlTWF0Y2godGFyZ2V0OiBNb2w8VEJpbz4sIG1hdGNoc3RlcmVvYm9uZHM/OiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRhcmdldCA9PSBudWxsIHx8IHRoaXMuYXRvbXMubGVuZ3RoICE9IHRhcmdldC5hdG9tcy5sZW5ndGggfHxcclxuICAgICAgdGhpcy5ib25kcy5sZW5ndGggIT0gdGFyZ2V0LmJvbmRzLmxlbmd0aCB8fCB0aGlzLmdldE1vbFdlaWdodCgpICE9IHRhcmdldC5nZXRNb2xXZWlnaHQoKVxyXG4gICAgKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5hYW1hcCh0YXJnZXQsIHRydWUsIG51bGwsIG1hdGNoc3RlcmVvYm9uZHMpICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRCcmFja2V0cygpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBiID0gSlNEcmF3Mi5CcmFja2V0LmNhc3QodGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmIChiICE9IG51bGwpIHtcclxuICAgICAgICBsaXN0LnB1c2goYik7XHJcbiAgICAgICAgYi5zZ3JvdXB0ZXh0cyA9IHRoaXMuZ2V0U2dyb3VwVGV4dHMoYik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8gdG9kbzogbWF0Y2ggaW5jbHVkZWQgYXRvbXMgYXMgd2VsbFxyXG4gIG1hdGNoQnJhY2tldHModGFyZ2V0KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsaXN0MSA9IHRoaXMuZ2V0QnJhY2tldHMoKTtcclxuICAgIGNvbnN0IGxpc3QyID0gdGFyZ2V0ID09IG51bGwgPyBbXSA6IHRhcmdldC5nZXRCcmFja2V0cygpO1xyXG4gICAgaWYgKGxpc3QxLmxlbmd0aCAhPSBsaXN0Mi5sZW5ndGgpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QxLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGxldCBmID0gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGlzdDIubGVuZ3RoOyArK2spIHtcclxuICAgICAgICBpZiAobGlzdDFbaV0uc2dyb3VwdGV4dHMgPT0gbGlzdDJba10uc2dyb3VwdGV4dHMpIHtcclxuICAgICAgICAgIGYgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChmICE9IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBhIHN1Yi1zdHJ1Y3R1cmUgc2VhcmNoIHVzaW5nIHRoZSBNb2wgYXMgYSBxdWVyeVxyXG4gICAqIEBmdW5jdGlvbiBzdWJzdHJ1Y3R1cmVNYXRjaFxyXG4gICAqIEBwYXJhbSB7TW9sfSB0YXJnZXQgLSB0aGUgdGFyZ2V0IG1vbFxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBzdWJzdHJ1Y3R1cmVNYXRjaCh0YXJnZXQpIHtcclxuICAgIHJldHVybiB0aGlzLmFhbWFwKHRhcmdldCwgZmFsc2UpICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGF0b20tYnktYXRvbSBtYXBwaW5nIHVzaW5nIHRoZSBNb2wgYXMgYSBxdWVyeVxyXG4gICAqIEBmdW5jdGlvbiBhYW1hcFxyXG4gICAqIEBwYXJhbSB7TW9sfSB0YXJnZXQgLSB0aGUgdGFyZ2V0IG1vbFxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gZnVsbHN0cnVjdHVyZSAtIGluZGljYXRlIGlmIHBlcmZvcm1pbmcgYSBmdWxsLXN0cnVjdHVyZSBzZWFyY2hcclxuICAgKiBAcGFyYW0ge2Jvb2x9IGhpZ2hsaWdodGluZyAtIGluZGljYXRlIGlmIGhpZ2hsaWdodGluZyBtYXBwZWQgYXRvbXMgYW5kIGJvbmRzXHJcbiAgICogQHJldHVybnMgdGhlIG1hcCByZXN1bHQgYXMgYSBkaWN0aW9uYXJ5XHJcbiAgICovXHJcbiAgYWFtYXAodGFyZ2V0LCBmdWxsc3RydWN0dXJlLCBoaWdobGlnaHRpbmc/OiBib29sZWFuLCBtYXRjaHN0ZXJlYm9uZHM/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBtYXAgPSB0aGlzLmFhbWFwMih0YXJnZXQsIGZ1bGxzdHJ1Y3R1cmUsIG1hdGNoc3RlcmVib25kcyk7XHJcblxyXG4gICAgaWYgKGhpZ2hsaWdodGluZykge1xyXG4gICAgICB0YXJnZXQuc2V0Q29sb3IobWFwID09IG51bGwgPyBudWxsIDogJ2JsYWNrJyk7XHJcbiAgICAgIGlmIChtYXAgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFwLmF0b21zLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgbWFwLmF0b21zW2ldLnQuY29sb3IgPSAncmVkJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcC5ib25kcy5sZW5ndGg7ICsraSlcclxuICAgICAgICAgIG1hcC5ib25kc1tpXS50LmNvbG9yID0gJ3JlZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgYWFtYXAyKHRhcmdldCwgZnVsbHN0cnVjdHVyZSwgbWF0Y2hzdGVyZWJvbmRzKSB7XHJcbiAgICBpZiAoREVCVUcuZW5hYmxlKSB7XHJcbiAgICAgIERFQlVHLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNjcmVlbih0YXJnZXQsIGZ1bGxzdHJ1Y3R1cmUpKSB7XHJcbiAgICAgIGlmIChERUJVRy5lbmFibGUpXHJcbiAgICAgICAgREVCVUcucHJpbnQoJ3NjcmVlbiBmYWlsZWQnKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuX2JmUGF0aCgpO1xyXG4gICAgdGFyZ2V0LnNldEF0b21Cb25kcygpO1xyXG4gICAgdGFyZ2V0LmNsZWFyRmxhZygpO1xyXG4gICAgdGhpcy5jbGVhckZsYWcoKTtcclxuXHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICB3aGlsZSAoaSA8IHBhdGgubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBmID0gZmFsc2U7XHJcbiAgICAgIGxldCBuID0gcGF0aFtpXTtcclxuXHJcbiAgICAgIGlmIChuLmIgPT0gbnVsbCkgeyAvLyBzdGFydCBvZiBuZXcgZnJhZ21lbnRcclxuICAgICAgICBmb3IgKGxldCBqID0gKG4uZiA9PSBudWxsID8gMCA6IChuLmYgKyAxKSk7IGogPCB0YXJnZXQuYXRvbXMubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgIGNvbnN0IHQgPSB0YXJnZXQuYXRvbXNbal07XHJcbiAgICAgICAgICBuLmYgPSBqO1xyXG4gICAgICAgICAgaWYgKHQuZiA9PSBudWxsICYmIEpTRHJhdzIuQXRvbS5tYXRjaCh0LCBuLmEpKSB7XHJcbiAgICAgICAgICAgIGYgPSB0cnVlO1xyXG4gICAgICAgICAgICBuLmEuZiA9IHQ7XHJcbiAgICAgICAgICAgIHQuZiA9IG4uYTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKG4ucmluZ2Nsb3N1cmUgIT0gbnVsbCkgeyAvLyByaW5nIGNsb3N1cmVcclxuICAgICAgICBjb25zdCBiID0gdGFyZ2V0LmZpbmRCb25kKG4uYi5hMS5mLCBuLmIuYTIuZik7XHJcbiAgICAgICAgaWYgKGIgIT0gbnVsbCAmJiBuLmIub3JkZXIgPT0gYi5vcmRlciAmJiAoIW1hdGNoc3RlcmVib25kcyB8fCBuLmIudHlwZSA9PSBiLnR5cGUpKSB7XHJcbiAgICAgICAgICBmID0gdHJ1ZTtcclxuICAgICAgICAgIGIuZiA9IG4uYjtcclxuICAgICAgICAgIG4uYi5mID0gYjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3QgPSBuLmYgPT0gbnVsbCA/IDAgOiBuLmYgKyAxO1xyXG4gICAgICAgIGNvbnN0IHQgPSBuLnN0YXJ0QXRvbSgpLmY7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IHN0OyBrIDwgdC5ib25kcy5sZW5ndGg7ICsraykge1xyXG4gICAgICAgICAgbi5mID0gaztcclxuICAgICAgICAgIGNvbnN0IGIgPSB0LmJvbmRzW2tdO1xyXG4gICAgICAgICAgY29uc3Qgb2EgPSBiLm90aGVyQXRvbSh0KTtcclxuICAgICAgICAgIGlmIChiLmYgPT0gbnVsbCAmJiBvYS5mID09IG51bGwgJiYgbi5iLm9yZGVyID09IGIub3JkZXIgJiYgKCFtYXRjaHN0ZXJlYm9uZHMgfHwgbi5iLnR5cGUgPT0gYi50eXBlKSAmJiBKU0RyYXcyLkF0b20ubWF0Y2gobi5hLCBvYSkpIHtcclxuICAgICAgICAgICAgZiA9IHRydWU7XHJcbiAgICAgICAgICAgIG4uYS5mID0gb2E7XHJcbiAgICAgICAgICAgIG9hLmYgPSBuLmE7XHJcbiAgICAgICAgICAgIG4uYi5mID0gYjtcclxuICAgICAgICAgICAgYi5mID0gbi5iO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmKSB7XHJcbiAgICAgICAgLy8gc3RlcCBuZXh0XHJcbiAgICAgICAgKytpO1xyXG4gICAgICAgIGlmIChERUJVRy5lbmFibGUpIHtcclxuICAgICAgICAgIGxldCBzID0gJyc7XHJcbiAgICAgICAgICBpZiAobi5hICE9IG51bGwpXHJcbiAgICAgICAgICAgIHMgKz0gbi5hLmlkICsgJyAtPiAnICsgbi5hLmYuaWQgKyAnICc7XHJcbiAgICAgICAgICBpZiAobi5iICE9IG51bGwpXHJcbiAgICAgICAgICAgIHMgKz0gbi5iLmExLmlkICsgJy0nICsgbi5iLmEyLmlkICsgJyAtPiAnICsgbi5iLmYuYTEuaWQgKyAnLScgKyBuLmIuZi5hMi5pZDtcclxuICAgICAgICAgIERFQlVHLnByaW50KHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGVuIGJhY2stdHJhY2VcclxuICAgICAgICBpZiAobi5iICE9IG51bGwgJiYgbi5iLmYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbi5iLmYuZiA9IG51bGw7XHJcbiAgICAgICAgICBuLmIuZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuLmEgIT0gbnVsbCAmJiBuLmEuZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICBuLmEuZi5mID0gbnVsbDtcclxuICAgICAgICAgIG4uYS5mID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbi5mID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKC0taSA8IDApIHtcclxuICAgICAgICAgIGlmIChERUJVRy5lbmFibGUpXHJcbiAgICAgICAgICAgIERFQlVHLnByaW50KCdmYWlsZWQnKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuID0gcGF0aFtpXTtcclxuICAgICAgICBpZiAobi5iICE9IG51bGwgJiYgbi5iLmYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbi5iLmYuZiA9IG51bGw7XHJcbiAgICAgICAgICBuLmIuZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuLmEgIT0gbnVsbCAmJiBuLmEuZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICBuLmEuZi5mID0gbnVsbDtcclxuICAgICAgICAgIG4uYS5mID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChERUJVRy5lbmFibGUpXHJcbiAgICAgICAgICBERUJVRy5wcmludCgndHJhY2UgYmFjaycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKERFQlVHLmVuYWJsZSlcclxuICAgICAgREVCVUcucHJpbnQoJ3N1Y2NlZWQnKTtcclxuXHJcbiAgICBjb25zdCBhdG9tbWFwID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIGF0b21tYXAucHVzaCh7cTogdGhpcy5hdG9tc1tpXSwgdDogdGhpcy5hdG9tc1tpXS5mfSk7XHJcblxyXG4gICAgY29uc3QgYm9uZG1hcCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKVxyXG4gICAgICBib25kbWFwLnB1c2goe3E6IHRoaXMuYm9uZHNbaV0sIHQ6IHRoaXMuYm9uZHNbaV0uZn0pO1xyXG5cclxuICAgIHJldHVybiB7YXRvbXM6IGF0b21tYXAsIGJvbmRzOiBib25kbWFwfTtcclxuICB9XHJcblxyXG4gIF9zZXRBcm9tYXRpY0ZsYWcoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRoaXMuYXRvbXNbaV0uYXJvbWF0aWMgPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYiA9IHRoaXMuYm9uZHNbaV07XHJcbiAgICAgIGlmIChiLnR5cGUgPT0gSlNEcmF3Mi5CT05EVFlQRVMuREVMT0NBTElaRUQpXHJcbiAgICAgICAgYi5hMS5hcm9tYXRpYyA9IGIuYTIuYXJvbWF0aWMgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFNNSUxFU1xyXG4gICAqIEBmdW5jdGlvbiBnZXRTbWlsZXNcclxuICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFNtaWxlcygpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2dldFNtaWxlcygpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgX2dldFJpbmdzKCkge1xyXG4gICAgLy8gICAgICAgIGlmIChERUJVRy5lbmFibGUpIHtcclxuICAgIC8vICAgICAgICAgICAgREVCVUcuY2xlYXIoKTtcclxuICAgIC8vICAgICAgICB9XHJcblxyXG4gICAgY29uc3QgcmluZ3MgPSBbXTtcclxuXHJcbiAgICB0aGlzLnNldEF0b21Cb25kcygpO1xyXG4gICAgdGhpcy5jbGVhckZsYWcoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB0aGlzLmNsZWFyRmxhZygpO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7ICsrailcclxuICAgICAgICB0aGlzLmF0b21zW2pdLmYgPSAnZXgnO1xyXG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMuYXRvbXNbaV07XHJcbiAgICAgIGNvbnN0IHJldCA9IHRoaXMuX2dldFRyZWUoc3RhcnQpO1xyXG4gICAgICBpZiAocmV0LnJpID09IDApXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCBwYXRoID0gW107XHJcbiAgICAgIHJldC50cmVlLmxpc3QocGF0aCwgJ2JyZWFkdGhmaXJzdCcpO1xyXG5cclxuICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBwYXRoLmxlbmd0aDsgKytrKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IHBhdGhba107XHJcbiAgICAgICAgaWYgKGIuZGVwdGggPiAzKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGlmIChiLnJpbmdjbG9zdXJlICE9IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IHJpbmcgPSBbYi5iXTtcclxuICAgICAgICAgIHJpbmdzLnB1c2gocmluZyk7XHJcblxyXG4gICAgICAgICAgbGV0IGEgPSBiLnN0YXJ0QXRvbSgpO1xyXG4gICAgICAgICAgbGV0IG4gPSBrO1xyXG4gICAgICAgICAgd2hpbGUgKGEgIT0gc3RhcnQpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IG4gLSAxOyBqID4gMDsgLS1qKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdCA9IHBhdGhbal07XHJcbiAgICAgICAgICAgICAgaWYgKHQuYSA9PSBhKSB7XHJcbiAgICAgICAgICAgICAgICByaW5nLnB1c2godC5iKTtcclxuICAgICAgICAgICAgICAgIGEgPSB0LnN0YXJ0QXRvbSgpO1xyXG4gICAgICAgICAgICAgICAgbiA9IGo7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBhID0gYi5hO1xyXG4gICAgICAgICAgbiA9IGs7XHJcbiAgICAgICAgICB3aGlsZSAoYSAhPSBzdGFydCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gbiAtIDE7IGogPiAwOyAtLWopIHtcclxuICAgICAgICAgICAgICBjb25zdCB0ID0gcGF0aFtqXTtcclxuICAgICAgICAgICAgICBpZiAodC5hID09IGEpIHtcclxuICAgICAgICAgICAgICAgIHJpbmcuc3BsaWNlKDAsIDAsIHQuYik7XHJcbiAgICAgICAgICAgICAgICBhID0gdC5zdGFydEF0b20oKTtcclxuICAgICAgICAgICAgICAgIG4gPSBqO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gICAgICAgIGlmIChERUJVRy5lbmFibGUpIHtcclxuICAgIC8vICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaW5ncy5sZW5ndGg7ICsraSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgREVCVUcucHJpbnQoXCJyaW5nOlwiICsgaSk7XHJcbiAgICAvLyAgICAgICAgICAgICAgICB2YXIgciA9IHJpbmdzW2ldO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByLmxlbmd0aDsgKytqKSB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBcIiBcIiArIHJbal0uYTEuaWQgKyBcIi1cIiArIHJbal0uYTIuaWQ7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgREVCVUcucHJpbnQocyk7XHJcbiAgICAvLyAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICB9XHJcbiAgICByZXR1cm4gcmluZ3M7XHJcbiAgfVxyXG5cclxuICBfYmZQYXRoKCkge1xyXG4gICAgY29uc3Qgc3MgPSBbXTtcclxuICAgIGNvbnN0IHRyZWVzID0gdGhpcy5fZ2V0VHJlZXMoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgIHRyZWVzW2ldLmxpc3Qoc3MsICdicmVhZHRoZmlyc3QnKTtcclxuICAgIHJldHVybiBzcztcclxuICB9XHJcblxyXG4gIF9nZXRUcmVlcygpIHtcclxuICAgIHRoaXMuc2V0QXRvbUJvbmRzKCk7XHJcbiAgICB0aGlzLmNsZWFyRmxhZygpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0cyA9IFtdO1xyXG4gICAgbGV0IHJpID0gMDtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIGxldCBzdGFydCA9IG51bGw7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdG9tcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLmF0b21zW2ldO1xyXG4gICAgICAgIGlmIChhLmYgPT0gbnVsbCAmJiAhYS5pc01hcmtlZFN0ZXJlbygpKSB7XHJcbiAgICAgICAgICBzdGFydCA9IGE7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzdGFydCA9PSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0b21zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICBjb25zdCBhID0gdGhpcy5hdG9tc1tpXTtcclxuICAgICAgICAgIGlmIChhLmYgPT0gbnVsbC8qICYmICFhLmlzTWFya2VkU3RlcmVvKCkgKi8pIHtcclxuICAgICAgICAgICAgc3RhcnQgPSBhO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzdGFydCA9PSBudWxsKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY29uc3QgcmV0ID0gdGhpcy5fZ2V0VHJlZShzdGFydCwgcmkpO1xyXG4gICAgICBzdGFydHMucHVzaChyZXQudHJlZSk7XHJcbiAgICAgIHJpID0gcmV0LnJpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGFydHM7XHJcbiAgfVxyXG5cclxuICAvLyBicmVhZHRoZmlyc3RcclxuICBfZ2V0VHJlZShhOiBBdG9tPFRCaW8+LCByaT86IG51bWJlcikge1xyXG4gICAgaWYgKHJpID09IG51bGwpXHJcbiAgICAgIHJpID0gMDtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBKU0RyYXcyLkJBKG51bGwsIGEsIG51bGwpO1xyXG4gICAgc3RhcnQuZGVwdGggPSAwO1xyXG5cclxuICAgIHN0YXJ0LmEuZiA9IHRydWU7XHJcbiAgICBjb25zdCBzdGFjayA9IG5ldyBKU0RyYXcyLlN0YWNrKCk7XHJcbiAgICBzdGFjay5wdXNoKHN0YXJ0KTtcclxuXHJcbiAgICBsZXQgYmE7XHJcbiAgICB3aGlsZSAoKGJhID0gc3RhY2sucG9wSGVhZCgpKSAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGJvbmRzID0gYmEuYS5ib25kcztcclxuICAgICAgaWYgKGJvbmRzID09IG51bGwpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgY29uc3QgYiA9IGJvbmRzW2ldO1xyXG4gICAgICAgIGlmIChiLmYpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBiLmYgPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgbmV4dCA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgb2EgPSBiLm90aGVyQXRvbShiYS5hKTtcclxuICAgICAgICBpZiAob2EuZiA9PSAnZXgnKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGlmIChvYS5mID09IG51bGwpIHtcclxuICAgICAgICAgIG9hLmYgPSB0cnVlO1xyXG4gICAgICAgICAgbmV4dCA9IG5ldyBKU0RyYXcyLkJBKGIsIG9hLCBudWxsKTtcclxuICAgICAgICAgIHN0YWNrLnB1c2gobmV4dCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICsrcmk7XHJcbiAgICAgICAgICBpZiAob2EuZiA9PSB0cnVlICYmIG9hLnJpbmdjbG9zdXJlcyA9PSBudWxsKVxyXG4gICAgICAgICAgICBvYS5yaW5nY2xvc3VyZXMgPSBbXTtcclxuICAgICAgICAgIG9hLnJpbmdjbG9zdXJlcy5wdXNoKHtyaTogcmksIG5leHQ6IG5ldyBKU0RyYXcyLkJBKGIsIGJhLmEsIHJpKX0pO1xyXG4gICAgICAgICAgbmV4dCA9IG5ldyBKU0RyYXcyLkJBKGIsIG9hLCByaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJhLmFkZE5leHQobmV4dCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge3RyZWU6IHN0YXJ0LCByaTogcml9O1xyXG4gIH1cclxuXHJcbiAgLy8gZGVwdGgtZmlyc3RcclxuICBfZ2V0UGF0aChiKSB7XHJcbiAgICBjb25zdCBzdGFjayA9IG5ldyBKU0RyYXcyLlN0YWNrKCk7XHJcbiAgICBzdGFjay5wdXNoKHtiOiBiLCBhOiBiLmExLmJvbmRzLmxlbmd0aCA+IGIuYTIuYm9uZHMubGVuZ3RoID8gYi5hMSA6IGIuYTJ9KTtcclxuXHJcbiAgICBiLmExLmYgPSB0cnVlO1xyXG4gICAgY29uc3QgcGF0aCA9IFtdO1xyXG4gICAgd2hpbGUgKChiID0gc3RhY2sucG9wKCkpICE9IG51bGwpIHtcclxuICAgICAgaWYgKGIuYi5mKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgcGF0aC5wdXNoKGIpO1xyXG4gICAgICBpZiAoYi5hLmYpXHJcbiAgICAgICAgYi5yaW5nY2xvc3VyZSA9IHRydWU7XHJcbiAgICAgIGIuYi5mID0gYi5hLmYgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3QgYm9uZHMgPSBiLmEuYm9uZHM7XHJcbiAgICAgIGZvciAobGV0IGkgPSBib25kcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIGlmICghYm9uZHNbaV0uZilcclxuICAgICAgICAgIHN0YWNrLnB1c2goe2I6IGJvbmRzW2ldLCBhOiBib25kc1tpXS5vdGhlckF0b20oYi5hKX0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbW9sZWN1bGFyIGZvcm11bGFcclxuICAgKiBAZnVuY3Rpb24gZ2V0Rm9ybXVsYVxyXG4gICAqIEBwYXJhbSB7Ym9vbH0gaHRtbCAtIGluZGljYXRlIGlmIHJlbmRlcmluZyB0aGUgZm9ybXVsYSBpbiBIVE1MIGZvcm1hdFxyXG4gICAqIEByZXR1cm5zIGEgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0Rm9ybXVsYShodG1sOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJ4biA9IHRoaXMucGFyc2VSeG4oKTtcclxuICAgIGlmIChyeG4gPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2dldEZvcm11bGEoaHRtbCk7XHJcblxyXG4gICAgbGV0IHMgPSAnJztcclxuICAgIGlmIChyeG4uYXJyb3cgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5yZWFjdGFudHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgcyArPSAoaSA+IDAgPyAnICsgJyA6ICcnKSArIHJ4bi5yZWFjdGFudHNbaV0uX2dldEZvcm11bGEoaHRtbCk7XHJcbiAgICAgIHMgKz0gaHRtbCA/ICcgJnJhcnI7ICcgOiAnIC0tLT4gJztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByeG4ucHJvZHVjdHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgcyArPSAoaSA+IDAgPyAnICsgJyA6ICcnKSArIHJ4bi5wcm9kdWN0c1tpXS5fZ2V0Rm9ybXVsYShodG1sKTtcclxuICAgICAgcmV0dXJuIHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJ4bi5yZWFjdGFudHMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgcyArPSAoaSA+IDAgPyAnICsgJyA6ICcnKSArIHJ4bi5yZWFjdGFudHNbaV0uX2dldEZvcm11bGEoaHRtbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIF9nZXRGb3JtdWxhKGh0bWwpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbSA9IHRoaXMuZXhwYW5kU3VwZXJBdG9tcygpO1xyXG4gICAgY29uc3Qgc3RhdHMgPSBKU0RyYXcyLkZvcm11bGFQYXJzZXIuZ2V0QXRvbVN0YXRzKG0pO1xyXG4gICAgcmV0dXJuIEpTRHJhdzIuRm9ybXVsYVBhcnNlci5zdGF0czJtZihzdGF0cywgaHRtbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbW9sZWN1bGFyIHdlaWdodFxyXG4gICAqIEBmdW5jdGlvbiBnZXRNb2xXZWlnaHRcclxuICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAqL1xyXG4gIGdldE1vbFdlaWdodCgpIHtcclxuICAgIGNvbnN0IG13ID0gdGhpcy5nZXRNaXh0dXJlTVcoKTtcclxuICAgIGlmIChtdyA+IDApXHJcbiAgICAgIHJldHVybiBtdztcclxuXHJcbiAgICBpZiAodGhpcy5oYXNHZW5lcmljQXRvbSgpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtID0gdGhpcy5leHBhbmRTdXBlckF0b21zKCk7XHJcbiAgICBjb25zdCBzdGF0cyA9IEpTRHJhdzIuRm9ybXVsYVBhcnNlci5nZXRBdG9tU3RhdHMobSk7XHJcbiAgICBjb25zdCBzdW0gPSBKU0RyYXcyLkZvcm11bGFQYXJzZXIuc3RhdHMybXcoc3RhdHMpO1xyXG4gICAgcmV0dXJuIHN1bSA9PSBudWxsID8gbnVsbCA6IE1hdGgucm91bmQoc3VtICogMTAwMDApIC8gMTAwMDA7XHJcbiAgfVxyXG5cclxuICBnZXRNaXh0dXJlTVcoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JhcGhpY3MubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYnIgPSBKU0RyYXcyLkJyYWNrZXQuY2FzdCh0aGlzLmdyYXBoaWNzW2ldKTtcclxuICAgICAgaWYgKGJyID09IG51bGwgfHwgIShici50eXBlID09ICcnIHx8IGJyLnR5cGUgPT0gbnVsbCkpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZ3JvdXBUZXh0KGJyLCAnUE9MWU1FUl9NVycpO1xyXG4gICAgICBpZiAodCA9PSBudWxsKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgcyA9IHNjaWwuVXRpbHMudHJpbSh0LnRleHQpO1xyXG4gICAgICBpZiAocyAhPSBudWxsICYmIHNjaWwuVXRpbHMuc3RhcnRzd2l0aChzLCAnbXc9JykpIHtcclxuICAgICAgICBjb25zdCBuID0gcy5zdWJzdHIoMyk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGV4YWN0IG1hc3NcclxuICAgKiBAZnVuY3Rpb24gZ2V0RXhhY3RNYXNzXHJcbiAgICogQHJldHVybnMgYSBudW1iZXJcclxuICAgKi9cclxuICBnZXRFeGFjdE1hc3MoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNHZW5lcmljQXRvbSgpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtID0gdGhpcy5leHBhbmRTdXBlckF0b21zKCk7XHJcbiAgICBjb25zdCBzdGF0cyA9IEpTRHJhdzIuRm9ybXVsYVBhcnNlci5nZXRBdG9tU3RhdHMobSk7XHJcbiAgICBjb25zdCBzdW0gPSBKU0RyYXcyLkZvcm11bGFQYXJzZXIuc3RhdHMyZW0oc3RhdHMpO1xyXG4gICAgcmV0dXJuIHN1bSA9PSBudWxsID8gbnVsbCA6IE1hdGgucm91bmQoc3VtICogMTAwMDApIC8gMTAwMDA7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxCb25kcyhhKSB7XHJcbiAgICBjb25zdCByZXQgPSBbXTtcclxuICAgIGNvbnN0IGJvbmRzID0gdGhpcy5ib25kcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKGJvbmRzW2ldLmExID09IGEgfHwgYm9uZHNbaV0uYTIgPT0gYSlcclxuICAgICAgICByZXQucHVzaChib25kc1tpXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQm9uZEF0b21zKGE6IEF0b208VEJpbz4pOiBBdG9tPFRCaW8+W10ge1xyXG4gICAgY29uc3QgcmV0OiBBdG9tPFRCaW8+W10gPSBbXTtcclxuICAgIGNvbnN0IGJvbmRzOiBCb25kPFRCaW8+W10gPSB0aGlzLmJvbmRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib25kcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYm9uZHNbaV0uYTEgPT0gYSlcclxuICAgICAgICByZXQucHVzaChib25kc1tpXS5hMik7XHJcbiAgICAgIGVsc2UgaWYgKGJvbmRzW2ldLmEyID09IGEpXHJcbiAgICAgICAgcmV0LnB1c2goYm9uZHNbaV0uYTEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIGNvdW50U2VsZWN0ZWQoKSB7XHJcbiAgICBsZXQgbiA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXRvbXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgaWYgKHRoaXMuYXRvbXNbaV0uc2VsZWN0ZWQpXHJcbiAgICAgICAgKytuO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvbmRzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGlmICh0aGlzLmJvbmRzW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgICsrbjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAodGhpcy5ncmFwaGljc1tpXS5zZWxlY3RlZClcclxuICAgICAgICArK247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbjtcclxuICB9XHJcblxyXG4gIHNldFNncm91cChiciwgZmllbGR0eXBlLCB2LCB4LCB5KSB7XHJcbiAgICBpZiAodiA9PSAnJylcclxuICAgICAgdiA9IG51bGw7XHJcblxyXG4gICAgaWYgKGZpZWxkdHlwZSA9PSAnQlJBQ0tFVF9UWVBFJyAmJiB2ID09ICdtdWwnICYmIGJyLnN1YnNjcmlwdCAhPSBudWxsICYmIGJyLnN1YnNjcmlwdCAhPSAnJykge1xyXG4gICAgICB2ID0gYnIuc3Vic2NyaXB0O1xyXG4gICAgICBici5zdWJzY3JpcHQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0ID0gdGhpcy5nZXRTZ3JvdXBUZXh0KGJyLCBmaWVsZHR5cGUpO1xyXG4gICAgaWYgKHYgPT0gbnVsbCkge1xyXG4gICAgICBpZiAodCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5kZWxHcmFwaGljcyh0KTtcclxuICAgICAgICByZXR1cm4gdDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0LnRleHQgIT0gdikge1xyXG4gICAgICAgICAgdC50ZXh0ID0gdjtcclxuICAgICAgICAgIHJldHVybiB0O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByID0gbmV3IEpTRHJhdzIuUmVjdCh4LCB5LCAwLCAwKTtcclxuICAgICAgICB0ID0gbmV3IEpTRHJhdzIuVGV4dChyLCB2KTtcclxuICAgICAgICB0LmZpZWxkdHlwZSA9IGZpZWxkdHlwZTtcclxuICAgICAgICB0LmFuY2hvcnMucHVzaChicik7XHJcbiAgICAgICAgYnIuX3BhcmVudC5hZGRHcmFwaGljcyh0KTtcclxuICAgICAgICByZXR1cm4gdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2dyb3VwVGV4dChiciwgZmllbGR0eXBlKTogYW55IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncmFwaGljcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3QodGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmICh0ICE9IG51bGwgJiYgdC5maWVsZHR5cGUgPT0gZmllbGR0eXBlICYmIHQuYW5jaG9ycy5sZW5ndGggPT0gMSAmJiB0LmFuY2hvcnNbMF0gPT0gYnIpXHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFNncm91cFRleHRzKGJyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNzOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyYXBoaWNzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IHQgPSBKU0RyYXcyLlRleHQuY2FzdCh0aGlzLmdyYXBoaWNzW2ldKTtcclxuICAgICAgaWYgKHQgIT0gbnVsbCAmJiB0LmFuY2hvcnMubGVuZ3RoID09IDEgJiYgdC5hbmNob3JzWzBdID09IGJyKVxyXG4gICAgICAgIHNzLnB1c2godC50ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3MubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHNzLnNvcnQoKTtcclxuICAgIHJldHVybiBzY2lsLlV0aWxzLmFycmF5MnN0cihzcywgJzsgJyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWdzKGJyLCBmaWVsZHR5cGVzKSB7XHJcbiAgICBsZXQgbiA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gdGhpcy5ncmFwaGljcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICBjb25zdCB0ID0gSlNEcmF3Mi5UZXh0LmNhc3QodGhpcy5ncmFwaGljc1tpXSk7XHJcbiAgICAgIGlmICh0ICE9IG51bGwgJiYgdC5hbmNob3JzLmxlbmd0aCA9PSAxICYmIHQuYW5jaG9yc1swXSA9PSBiciAmJiBmaWVsZHR5cGVzLmluZGV4T2YodC5maWVsZHR5cGUgKyAnLCcpID49IDApIHtcclxuICAgICAgICB0aGlzLmRlbEdyYXBoaWNzKHQpO1xyXG4gICAgICAgICsrbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG59XHJcblxyXG5KU0RyYXcyLk1vbCA9IE1vbDtcclxuXHJcbnZhciBKc01vbDogKHR5cGVvZiBNb2wpID0gTW9sO1xyXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vXHJcbi8vIEpTRHJhdy5MaXRlXHJcbi8vIENvcHlyaWdodCAoQykgMjAxOCBTY2lsbGlnZW5jZSBDb3Jwb3JhdGlvblxyXG4vLyBodHRwOi8vd3d3LnNjaWxsaWdlbmNlLmNvbS9cclxuLy9cclxuLy8gKFJlbGVhc2VkIHVuZGVyIExHUEwgMy4wOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wKVxyXG4vL1xyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG4vLyBAdHMtbm9jaGVja1xyXG5cclxuaW1wb3J0IHR5cGUge0pTRHJhdzJNb2R1bGVUeXBlfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHR5cGUge0lHcmFwaGljc30gZnJvbSAnLi90eXBlcy9qc2RyYXcyJztcclxuaW1wb3J0IHR5cGUge1JlY3R9IGZyb20gJy4vUmVjdCc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IEpTRHJhdzI6IEpTRHJhdzJNb2R1bGVUeXBlPGFueT47XHJcblxyXG4vKipcclxuICogUG9pbnQgY2xhc3MgLSBkZWZpbmUgYSBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5KU0RyYXcyLlBvaW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUG9pbnRJbnQge1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge251bWJlcn0geFxyXG4gICAqL1xyXG5cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IHlcclxuICAgKi9cclxuXHJcbiAgcHVibGljIHg6IG51bWJlcjtcclxuICBwdWJsaWMgeTogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3IgUG9pbnRcclxuICAgKiBAcGFyYW0ge251bWJlcn0geFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcclxuICAgIHRoaXMueCA9IGlzTmFOKHgpID8gMCA6IHg7XHJcbiAgICB0aGlzLnkgPSBpc05hTih5KSA/IDAgOiB5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhlIHgsIHkgdmFsdWVzIGFyZSB2YWxpZCBudW1iZXJcclxuICAgKiBAZnVuY3Rpb24gaXNWYWxpZFxyXG4gICAqIEByZXR1cm5zIHRydWUgb3IgZmFsc2VcclxuICAgKi9cclxuICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICFpc05hTih0aGlzLngpICYmICFpc05hTih0aGlzLnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgUG9pbnQgdG8gdGhlIG9yaWdpbiAoMCwgMClcclxuICAgKiBAZnVuY3Rpb24gbGVuZ3RoXHJcbiAgICogQHJldHVybnMgYSBudW1iZXJcclxuICAgKi9cclxuICBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZGlzdGFuY2UgZnJvbSB0aGlzIFBvaW50IHRvIGFub3RoZXIgUG9pbnQgKHApXHJcbiAgICogQGZ1bmN0aW9uIGRpc3RUb1xyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAgLSB0aGUgb3RoZXIgcG9pbnRcclxuICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAqL1xyXG4gIGRpc3RUbyhwOiBQb2ludCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkeCA9IHRoaXMueCAtIHAueDtcclxuICAgIGNvbnN0IGR5ID0gdGhpcy55IC0gcC55O1xyXG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXN0IGlmIHRoaXMgcG9pbnQgaXMgb24gdGhlIGxpbmUgY29tcG9zaW5nIG9mIHAxLXAyXHJcbiAgICogQGZ1bmN0aW9uIG9uTGluZVxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAxIC0gdGhlIGZpcnN0IHBvaW50IG9mIHRoZSBsaW5lXHJcbiAgICogQHBhcmFtIHtQb2ludH0gcDIgLSB0aGUgc2Vjb25kIHBvaW50IG9mIHRoZSBsaW5lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRvciAtIHRoZSB0b2xlcmFuY2VcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgb25MaW5lKHAxOiBQb2ludCwgcDI6IFBvaW50LCB0b3I6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZDIgPSBwMS5kaXN0VG8ocDIpO1xyXG4gICAgY29uc3QgZCA9IHAxLmRpc3RUbyh0aGlzKSArIHAyLmRpc3RUbyh0aGlzKSAtIGQyO1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKGQpIDw9IHRvciAqICg1MCAvIGQyKTtcclxuICB9XHJcblxyXG4gIGluVHJpYW5nbGUodjE6IFBvaW50LCB2MjogUG9pbnQsIHYzOiBQb2ludCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYjEgPSBKU0RyYXcyLlBvaW50LnNpZ24odGhpcywgdjEsIHYyKSA8IDAuMDtcclxuICAgIGNvbnN0IGIyID0gSlNEcmF3Mi5Qb2ludC5zaWduKHRoaXMsIHYyLCB2MykgPCAwLjA7XHJcbiAgICBjb25zdCBiMyA9IEpTRHJhdzIuUG9pbnQuc2lnbih0aGlzLCB2MywgdjEpIDwgMC4wO1xyXG4gICAgcmV0dXJuIGIxID09IGIyICYmIGIyID09IGIzO1xyXG4gIH1cclxuXHJcbiAgZmxpcChwMTogUG9pbnQsIHAyOiBQb2ludCk6IFBvaW50IHtcclxuICAgIGNvbnN0IGEwID0gcDIuYW5nbGVUbyhwMSk7XHJcbiAgICBjb25zdCBhID0gdGhpcy5hbmdsZVRvKHAxKSAtIGEwO1xyXG4gICAgcmV0dXJuIHRoaXMucm90YXRlQXJvdW5kKHAxLCAtMiAqIGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW92ZSB0aGUgUG9pbnRcclxuICAgKiBAZnVuY3Rpb24gb2Zmc2V0XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGR4IC0gb2Zmc2V0IHhcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZHkgLSBvZmZzZXQgeVxyXG4gICAqIEByZXR1cm5zIHRoZSBQb2ludCBpdHNlbGZcclxuICAgKi9cclxuICBvZmZzZXQoZHg6IG51bWJlciwgZHk6IG51bWJlcikge1xyXG4gICAgdGhpcy54ICs9IGR4O1xyXG4gICAgdGhpcy55ICs9IGR5O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBvZmZzZXQyKGQ6IFBvaW50KSB7XHJcbiAgICB0aGlzLnggKz0gZC54O1xyXG4gICAgdGhpcy55ICs9IGQueTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NhbGUgdGhlIHBvaW50IGFyb3VuZCBhbiBvcmlnaW5cclxuICAgKiBAZnVuY3Rpb24gb2Zmc2V0XHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNjYWxlIC0gdGhlIHNjYWxlIGZhY3RvclxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IG9yaWdpbiAtIHRoZSBvcmlnaW5cclxuICAgKiBAcmV0dXJucyB0aGUgUG9pbnQgaXRzZWxmXHJcbiAgICovXHJcbiAgc2NhbGUoczogbnVtYmVyLCBvcmlnaW4/OiBQb2ludCk6IFBvaW50IHtcclxuICAgIGlmIChvcmlnaW4gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnggPSAodGhpcy54IC0gb3JpZ2luLngpICogcyArIG9yaWdpbi54O1xyXG4gICAgICB0aGlzLnkgPSAodGhpcy55IC0gb3JpZ2luLnkpICogcyArIG9yaWdpbi55O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy54ICo9IHM7XHJcbiAgICAgIHRoaXMueSAqPSBzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXZlcnNlIHRoZSBwb2ludFxyXG4gICAqIEBmdW5jdGlvbiByZXZlcnNlXHJcbiAgICogQHJldHVybnMgdGhlIFBvaW50IGl0c2VsZlxyXG4gICAqL1xyXG4gIHJldmVyc2UoKTogUG9pbnQge1xyXG4gICAgdGhpcy54ID0gLXRoaXMueDtcclxuICAgIHRoaXMueSA9IC10aGlzLnk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lIHRoZSBwb2ludFxyXG4gICAqIEBmdW5jdGlvbiBjbG9uZVxyXG4gICAqIEByZXR1cm5zIGEgbmV3IFBvaW50IG9iamVjdFxyXG4gICAqL1xyXG4gIGNsb25lKCk6IFBvaW50IHtcclxuICAgIHJldHVybiBuZXcgSlNEcmF3Mi5Qb2ludCh0aGlzLngsIHRoaXMueSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXN0IGlmIHRoaXMgUG9pbnQgZXF1YWxzIHRvIHRoZSBvdGhlciBvbmVcclxuICAgKiBAZnVuY3Rpb24gZXF1YWxzVG9cclxuICAgKiBAcGFyYW0ge1BvaW50fSBwIC0gdGhlIG90aGVyIFBvaW50XHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIGVxdWFsc1RvKHA6IFBvaW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcCAhPSBudWxsICYmIHRoaXMueCA9PSBwLnggJiYgdGhpcy55ID09IHAueTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgYW5nbGUgb2YgdGhlIHBvaW50IGZyb20gWCBheGlzXHJcbiAgICogQGZ1bmN0aW9uIGFuZ2xlXHJcbiAgICogQHJldHVybnMgYSBudW1iZXIgaW4gZGVncmVlXHJcbiAgICovXHJcbiAgYW5nbGUoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGEgPSBNYXRoLmF0YW4yKHRoaXMueSwgdGhpcy54KSAqIDE4MCAvIE1hdGguUEk7XHJcbiAgICByZXR1cm4gYSA8IDAgPyAoYSArIDM2MCkgOiBhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBhbmdsZSB3aXRoIGEgUG9pbnQgYXMgdGhlIG9yaWdpblxyXG4gICAqIEBmdW5jdGlvbiBhbmdsZVRvXHJcbiAgICogQHBhcmFtIHtQb2ludH0gb3JpZ2luIC0gdGhlIG9yaWdpblxyXG4gICAqIEByZXR1cm5zIGEgbnVtYmVyIGluIGRlZ3JlZVxyXG4gICAqL1xyXG4gIGFuZ2xlVG8ob3JpZ2luOiBQb2ludCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBhID0gTWF0aC5hdGFuMih0aGlzLnkgLSBvcmlnaW4ueSwgdGhpcy54IC0gb3JpZ2luLngpICogMTgwIC8gTWF0aC5QSTtcclxuICAgIHJldHVybiBhIDwgMCA/IChhICsgMzYwKSA6IGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGFuZ2xlIG9mIHAxLSh0aGlzKS1wMlxyXG4gICAqIEBmdW5jdGlvbiBhbmdsZUFzT3JpZ2luXHJcbiAgICogQHBhcmFtIHtQb2ludH0gcDEgLSB0aGUgZmlyc3QgcG9pbnRcclxuICAgKiBAcGFyYW0ge1BvaW50fSBwMiAtIHRoZSBzZWNvbmQgcG9pbnRcclxuICAgKiBAcmV0dXJucyBhIG51bWJlciBpbiBkZWdyZWVcclxuICAgKi9cclxuICBhbmdsZUFzT3JpZ2luKHAxOiBQb2ludCwgcDI6IFBvaW50KTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHYxID0gcDEuY2xvbmUoKS5vZmZzZXQoLXRoaXMueCwgLXRoaXMueSk7XHJcbiAgICBjb25zdCB2MiA9IHAyLmNsb25lKCkub2Zmc2V0KC10aGlzLngsIC10aGlzLnkpO1xyXG4gICAgY29uc3QgYSA9IHYyLmFuZ2xlKCkgLSB2MS5hbmdsZSgpO1xyXG4gICAgcmV0dXJuIGEgPCAwID8gKGEgKyAzNjApIDogYTtcclxuICB9XHJcblxyXG4gIG1pZGRsZUFuZ2xlKHAxOiBQb2ludCwgcDI6IFBvaW50KTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGExID0gcDEuYW5nbGVUbyh0aGlzKTtcclxuICAgIGNvbnN0IGEyID0gcDIuYW5nbGVUbyh0aGlzKTtcclxuICAgIGxldCBtaWQgPSAoYTEgKyBhMikgLyAyO1xyXG4gICAgaWYgKE1hdGguYWJzKGExIC0gYTIpID4gMTgwKSB7XHJcbiAgICAgIG1pZCArPSAxODA7XHJcbiAgICAgIGlmIChtaWQgPj0gMzYwKVxyXG4gICAgICAgIG1pZCAtPSAzNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUm90YXRlIHRoZSBwb2ludCBhcm91bmQgdGhlIG9yaWdpblxyXG4gICAqIEBmdW5jdGlvbiByb3RhdGVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVnIC0gdGhlIGRlZ3JlZSB0byBiZSByb3RhdGVkXHJcbiAgICogQHJldHVybnMgdGhlIFBvaW50IGl0c2VsZlxyXG4gICAqL1xyXG4gIHJvdGF0ZShkZWc6IG51bWJlcik6IFBvaW50IHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLmxlbmd0aCgpO1xyXG4gICAgaWYgKGQgPT0gMClcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICBjb25zdCBhID0gdGhpcy5hbmdsZSgpO1xyXG4gICAgdGhpcy54ID0gZCAqIE1hdGguY29zKChhICsgZGVnKSAqIE1hdGguUEkgLyAxODApO1xyXG4gICAgdGhpcy55ID0gZCAqIE1hdGguc2luKChhICsgZGVnKSAqIE1hdGguUEkgLyAxODApO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSb3RhdGUgdGhlIHBvaW50IGFyb3VuZCBhIHBvaW50XHJcbiAgICogQGZ1bmN0aW9uIHJvdGF0ZUFyb3VuZFxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IG9yaWdpbiAtIHRoZSBvcmlnaW5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVnIC0gdGhlIGRlZ3JlZSB0byBiZSByb3RhdGVkXHJcbiAgICogQHJldHVybnMgdGhlIFBvaW50IGl0c2VsZlxyXG4gICAqL1xyXG4gIHJvdGF0ZUFyb3VuZChvcmlnaW46IFBvaW50LCBkZWc6IG51bWJlciwgbGVuPzogbnVtYmVyKTogUG9pbnQge1xyXG4gICAgdGhpcy5vZmZzZXQoLW9yaWdpbi54LCAtb3JpZ2luLnkpXHJcbiAgICAgIC5yb3RhdGUoZGVnKVxyXG4gICAgICAub2Zmc2V0KG9yaWdpbi54LCBvcmlnaW4ueSk7XHJcbiAgICBpZiAobGVuID4gMClcclxuICAgICAgdGhpcy5zZXRMZW5ndGgobGVuLCBvcmlnaW4pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRMZW5ndGgobGVuOiBudW1iZXIsIG9yaWdpbj86IFBvaW50KTogUG9pbnQge1xyXG4gICAgaWYgKG9yaWdpbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5zY2FsZShsZW4gLyB0aGlzLmxlbmd0aCgpKTtcclxuXHJcbiAgICB0aGlzLm9mZnNldCgtb3JpZ2luLngsIC1vcmlnaW4ueSk7XHJcbiAgICB0aGlzLnNjYWxlKGxlbiAvIHRoaXMubGVuZ3RoKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0KG9yaWdpbi54LCBvcmlnaW4ueSk7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZyhzY2FsZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghKHNjYWxlID4gMCkpXHJcbiAgICAgIHNjYWxlID0gMS4wO1xyXG4gICAgcmV0dXJuICh0aGlzLnggKiBzY2FsZSkudG9GaXhlZCgzKSArIFwiIFwiICsgKC10aGlzLnkgKiBzY2FsZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHNocmluayhvcmlnaW46IFBvaW50LCBkZWx0YTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5kaXN0VG8ob3JpZ2luKTtcclxuICAgIGNvbnN0IHMgPSAoZCAtIGRlbHRhKSAvIGQ7XHJcbiAgICB0aGlzLnggPSAodGhpcy54IC0gb3JpZ2luLngpICogcyArIG9yaWdpbi54O1xyXG4gICAgdGhpcy55ID0gKHRoaXMueSAtIG9yaWdpbi55KSAqIHMgKyBvcmlnaW4ueTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZXF1YWxNb3ZlKHN0YXJ0OiBQb2ludCk6IHZvaWQge1xyXG4gICAgY29uc3QgZCA9IE1hdGguYWJzKHRoaXMueCAtIHN0YXJ0LngpO1xyXG4gICAgaWYgKHRoaXMueSA+IHN0YXJ0LnkpXHJcbiAgICAgIHRoaXMueSA9IHN0YXJ0LnkgKyBkO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnkgPSBzdGFydC55IC0gZDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQb2ludCBleHRlbmRzIFBvaW50SW50IHtcclxuICBzdGF0aWMgZnJvbVN0cmluZyhzOiBzdHJpbmcpOiBQb2ludCB7XHJcbiAgICBjb25zdCBzcyA9IHMuc3BsaXQoJyAnKTtcclxuICAgIGlmIChzcy5sZW5ndGggIT0gMilcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCB4ID0gcGFyc2VGbG9hdChzc1swXSk7XHJcbiAgICBjb25zdCB5ID0gLXBhcnNlRmxvYXQoc3NbMV0pO1xyXG4gICAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQoeCwgeSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2VudGVyT2YocDE6IFBvaW50LCBwMjogUG9pbnQpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQoKHAxLnggKyBwMi54KSAvIDIsIChwMS55ICsgcDIueSkgLyAyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzaWduKHAxOiBQb2ludCwgcDI6IFBvaW50LCBwMzogUG9pbnQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChwMS54IC0gcDMueCkgKiAocDIueSAtIHAzLnkpIC0gKHAyLnggLSBwMy54KSAqIChwMS55IC0gcDMueSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgX29uU2VnbWVudChwOiBQb2ludCwgcTogUG9pbnQsIHI6IFBvaW50KTogYm9vbGVhbiB7XHJcbiAgICBpZiAocS54IDw9IE1hdGgubWF4KHAueCwgci54KSAmJiBxLnggPj0gTWF0aC5taW4ocC54LCByLngpICYmIHEueSA8PSBNYXRoLm1heChwLnksIHIueSkgJiYgcS55ID49IE1hdGgubWluKHAueSwgci55KSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIF9vcmllbnRhdGlvbihwOiBQb2ludCwgcTogUG9pbnQsIHI6IFBvaW50KTogbnVtYmVyIHtcclxuICAgIC8vIFNlZSAxMHRoIHNsaWRlcyBmcm9tIGZvbGxvd2luZyBsaW5rIGZvciBkZXJpdmF0aW9uIG9mIHRoZSBmb3JtdWxhXHJcbiAgICAvLyBodHRwOi8vd3d3LmRjcy5nbGEuYWMudWsvfnBhdC81MjIzMy9zbGlkZXMvR2VvbWV0cnkxeDEucGRmXHJcbiAgICBjb25zdCB2YWwgPSAocS55IC0gcC55KSAqIChyLnggLSBxLngpIC0gKHEueCAtIHAueCkgKiAoci55IC0gcS55KTtcclxuXHJcbiAgICBpZiAodmFsID09IDApXHJcbiAgICAgIHJldHVybiAwOyAvLyBjb2xpbmVhclxyXG5cclxuICAgIHJldHVybiAodmFsID4gMCkgPyAxIDogMjsgLy8gY2xvY2sgb3IgY291bnRlcmNsb2NrIHdpc2VcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbnRlcnNlY3QocDE6IFBvaW50LCBxMTogUG9pbnQsIHAyOiBQb2ludCwgcTI6IFBvaW50KTogYm9vbGVhbiB7XHJcbiAgICAvLyBGaW5kIHRoZSBmb3VyIG9yaWVudGF0aW9ucyBuZWVkZWQgZm9yIGdlbmVyYWwgYW5kXHJcbiAgICAvLyBzcGVjaWFsIGNhc2VzXHJcbiAgICBjb25zdCBvMSA9IHRoaXMuX29yaWVudGF0aW9uKHAxLCBxMSwgcDIpO1xyXG4gICAgY29uc3QgbzIgPSB0aGlzLl9vcmllbnRhdGlvbihwMSwgcTEsIHEyKTtcclxuICAgIGNvbnN0IG8zID0gdGhpcy5fb3JpZW50YXRpb24ocDIsIHEyLCBwMSk7XHJcbiAgICBjb25zdCBvNCA9IHRoaXMuX29yaWVudGF0aW9uKHAyLCBxMiwgcTEpO1xyXG5cclxuICAgIC8vIEdlbmVyYWwgY2FzZVxyXG4gICAgaWYgKG8xICE9IG8yICYmIG8zICE9IG80KVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAvLyBTcGVjaWFsIENhc2VzXHJcbiAgICAvLyBwMSwgcTEgYW5kIHAyIGFyZSBjb2xpbmVhciBhbmQgcDIgbGllcyBvbiBzZWdtZW50IHAxcTFcclxuICAgIGlmIChvMSA9PSAwICYmIHRoaXMuX29uU2VnbWVudChwMSwgcDIsIHExKSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgLy8gcDEsIHExIGFuZCBwMiBhcmUgY29saW5lYXIgYW5kIHEyIGxpZXMgb24gc2VnbWVudCBwMXExXHJcbiAgICBpZiAobzIgPT0gMCAmJiB0aGlzLl9vblNlZ21lbnQocDEsIHEyLCBxMSkpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIC8vIHAyLCBxMiBhbmQgcDEgYXJlIGNvbGluZWFyIGFuZCBwMSBsaWVzIG9uIHNlZ21lbnQgcDJxMlxyXG4gICAgaWYgKG8zID09IDAgJiYgdGhpcy5fb25TZWdtZW50KHAyLCBwMSwgcTIpKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAvLyBwMiwgcTIgYW5kIHExIGFyZSBjb2xpbmVhciBhbmQgcTEgbGllcyBvbiBzZWdtZW50IHAycTJcclxuICAgIGlmIChvNCA9PSAwICYmIHRoaXMuX29uU2VnbWVudChwMiwgcTEsIHEyKSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBEb2Vzbid0IGZhbGwgaW4gYW55IG9mIHRoZSBhYm92ZSBjYXNlc1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBsdXMgaW1wbGVtZW50cyBJR3JhcGhpY3Mge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHA6IFBvaW50XHJcbiAgKSB7fVxyXG5cclxuICByZWN0KCk6IFJlY3Qge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIC8vIElHcmFwaGljc1xyXG5cclxuICBbcDogc3RyaW5nXTogYW55O1xyXG5cclxuICByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgY29sb3I6IHN0cmluZztcclxuICBncmFwaGljc2lkOiBudW1iZXI7XHJcbiAgaWQ6IG51bWJlcjtcclxuICByZWplY3Q6IGFueTtcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuXHJcbiAgY2xvbmUobWFwOiBhbnlbXSk6IElHcmFwaGljcyB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgZHJhdyhzdXJmYWNlOiBhbnksIGxpbmV3aWR0aDogbnVtYmVyLCBtOiBhbnksIGZvbnRzaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XHJcbiAgfVxyXG59XHJcblxyXG5KU0RyYXcyLlBvaW50ID0gUG9pbnQ7XHJcbkpTRHJhdzIuUGx1cyA9IFBsdXM7XHJcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy9cclxuLy8gSlNEcmF3LkxpdGVcclxuLy8gQ29weXJpZ2h0IChDKSAyMDE4IFNjaWxsaWdlbmNlIENvcnBvcmF0aW9uXHJcbi8vIGh0dHA6Ly93d3cuc2NpbGxpZ2VuY2UuY29tL1xyXG4vL1xyXG4vLyAoUmVsZWFzZWQgdW5kZXIgTEdQTCAzLjA6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjApXHJcbi8vXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbi8vIEB0cy1ub2NoZWNrXHJcblxyXG5pbXBvcnQgdHlwZSB7SlNEcmF3Mk1vZHVsZVR5cGV9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHR5cGUge1BvaW50fSBmcm9tICcuL1BvaW50JztcclxuXHJcbmRlY2xhcmUgY29uc3QgSlNEcmF3MjogSlNEcmF3Mk1vZHVsZVR5cGU8YW55PjtcclxuXHJcbmV4cG9ydCBlbnVtIENvcm5lclR5cGVzIHtcclxuICBUT1BMRUZUID0gXCJ0b3BsZWZ0XCIsXHJcbiAgVE9QUklHSFQgPSBcInRvcHJpZ2h0XCIsXHJcbiAgQk9UVE9NTEVGVCA9IFwiYm90dG9tbGVmdFwiLFxyXG4gIEJPVFRPTVJJR0hUID0gXCJib3R0b21yaWdodFwiLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb3JuZXJUeXBlID0gdHlwZW9mIENvcm5lclR5cGVzW2tleW9mIHR5cGVvZiBDb3JuZXJUeXBlc107XHJcblxyXG4vKipcclxuICogUmVjdCBjbGFzcyAtIGRlZmluZSBhIFJlY3RhbmdsZSBvbiB0aGUgc2NyZWVuXHJcbiAqIEBjbGFzcyBzY2lsbGlnZW5jZS5KU0RyYXcyLlJlY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZWN0IHtcclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IGxlZnRcclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IHRvcFxyXG4gICAqL1xyXG4gIC8qKlxyXG4gICBAcHJvcGVydHkge251bWJlcn0gd2lkdGhcclxuICAgKi9cclxuICAvKipcclxuICAgQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsZWZ0OiBudW1iZXI7XHJcbiAgcHVibGljIHRvcDogbnVtYmVyO1xyXG4gIHB1YmxpYyB3aWR0aDogbnVtYmVyO1xyXG4gIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIFJlY3RcclxuICAgKiBAcGFyYW0ge251bWJlcn0gbGVmdFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b3BcclxuICAgKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IobGVmdD86IG51bWJlciwgdG9wPzogbnVtYmVyLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxlZnQgPSBpc05hTihsZWZ0KSA/IDAgOiBsZWZ0O1xyXG4gICAgdGhpcy50b3AgPSBpc05hTih0b3ApID8gMCA6IHRvcDtcclxuICAgIHRoaXMud2lkdGggPSBpc05hTih3aWR0aCkgPyAwIDogd2lkdGg7XHJcbiAgICB0aGlzLmhlaWdodCA9IGlzTmFOKGhlaWdodCkgPyAwIDogaGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IFJlY3QgYmFzZWQgb24gdHdvIHBvaW50c1xyXG4gICAqIEBmdW5jdGlvbiBzZXRcclxuICAgKiBAcGFyYW0ge1BvaW50fSBwMSAtIHRoZSBmaXJzdCBwb2ludFxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAyIC0gdGhlIHNlY29uZCBwb2ludFxyXG4gICAqIEByZXR1cm5zIHRoZSBSZWN0IGl0ZWxmXHJcbiAgICovXHJcbiAgc2V0KHAxOiBQb2ludCwgcDI6IFBvaW50KTogUmVjdCB7XHJcbiAgICB0aGlzLmxlZnQgPSBNYXRoLm1pbihwMS54LCBwMi54KTtcclxuICAgIHRoaXMudG9wID0gTWF0aC5taW4ocDEueSwgcDIueSk7XHJcbiAgICB0aGlzLndpZHRoID0gTWF0aC5hYnMocDEueCAtIHAyLngpO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBNYXRoLmFicyhwMS55IC0gcDIueSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBSZWN0XHJcbiAgICogQGZ1bmN0aW9uIHRvcGxlZnRcclxuICAgKiBAcmV0dXJucyBhIFBvaW50IG9iamVjdFxyXG4gICAqL1xyXG4gIHRvcGxlZnQoKTogUG9pbnQge1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMubGVmdCwgdGhpcy50b3ApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIHRoZSBSZWN0XHJcbiAgICogQGZ1bmN0aW9uIHRvcHJpZ2h0XHJcbiAgICogQHJldHVybnMgYSBQb2ludCBvYmplY3RcclxuICAgKi9cclxuICB0b3ByaWdodCgpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5yaWdodCgpLCB0aGlzLnRvcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiB0aGUgUmVjdFxyXG4gICAqIEBmdW5jdGlvbiBib3R0b21sZWZ0XHJcbiAgICogQHJldHVybnMgYSBQb2ludCBvYmplY3RcclxuICAgKi9cclxuICBib3R0b21sZWZ0KCk6IFBvaW50IHtcclxuICAgIHJldHVybiBuZXcgSlNEcmF3Mi5Qb2ludCh0aGlzLmxlZnQsIHRoaXMuYm90dG9tKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBib3R0b20tcmlnaHQgY29ybmVyIG9mIHRoZSBSZWN0XHJcbiAgICogQGZ1bmN0aW9uIGJvdHRvbXJpZ2h0XHJcbiAgICogQHJldHVybnMgYSBQb2ludCBvYmplY3RcclxuICAgKi9cclxuICBib3R0b21yaWdodCgpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5yaWdodCgpLCB0aGlzLmJvdHRvbSgpKTtcclxuICB9XHJcblxyXG4gIGZvdXJQb2ludHMoKTogW1BvaW50LCBQb2ludCwgUG9pbnQsIFBvaW50XSB7XHJcbiAgICByZXR1cm4gW3RoaXMudG9wbGVmdCgpLCB0aGlzLnRvcHJpZ2h0KCksIHRoaXMuYm90dG9tbGVmdCgpLCB0aGlzLmJvdHRvbXJpZ2h0KCldO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvbmUgdGhpcyBSZWN0XHJcbiAgICogQGZ1bmN0aW9uIGNsb25lXHJcbiAgICogQHJldHVybnMgYSBuZXcgUmVjdCBvYmplY3RcclxuICAgKi9cclxuICBjbG9uZSgpOiBSZWN0IHtcclxuICAgIHJldHVybiBuZXcgSlNEcmF3Mi5SZWN0KHRoaXMubGVmdCwgdGhpcy50b3AsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoZSBSZWN0IGlzIGVtcHR5XHJcbiAgICogQGZ1bmN0aW9uIGlzRW1wdHlcclxuICAgKiBAcmV0dXJucyB0cnVlIG9yIGZhbHNlXHJcbiAgICovXHJcbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhKHRoaXMud2lkdGggPiAwICYmIHRoaXMuaGVpZ2h0ID4gMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXN0IGlmIHRoZSBSZWN0IGFyZWEgY29udGFpbnMgYSBQb2ludFxyXG4gICAqIEBmdW5jdGlvbiBjb250YWluc1xyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAgLSB0aGUgcG9pbnQgdG8gYmUgdGVzdGVkXHJcbiAgICogQHJldHVybnMgdHJ1ZSBvciBmYWxzZVxyXG4gICAqL1xyXG4gIGNvbnRhaW5zKHA6IFBvaW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcC54ID49IHRoaXMubGVmdCAmJiBwLnggPD0gdGhpcy5yaWdodCgpICYmIHAueSA+PSB0aGlzLnRvcCAmJiBwLnkgPD0gdGhpcy5ib3R0b20oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgcmlnaHQgY29vcmRpbmF0ZVxyXG4gICAqIEBmdW5jdGlvbiByaWdodFxyXG4gICAqIEByZXR1cm5zIGEgbnVtYmVyXHJcbiAgICovXHJcbiAgcmlnaHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmxlZnQgKyB0aGlzLndpZHRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBib3R0b20gY29vcmRpbmF0ZVxyXG4gICAqIEBmdW5jdGlvbiBib3R0b21cclxuICAgKiBAcmV0dXJucyBhIG51bWJlclxyXG4gICAqL1xyXG4gIGJvdHRvbSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG9wICsgdGhpcy5oZWlnaHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGNlbnRlciBvZiB0aGUgUmVjdFxyXG4gICAqIEBmdW5jdGlvbiBjZW50ZXJcclxuICAgKiBAcmV0dXJucyB0aGUgY2VudGVyIGFzIGEgUG9pbnQgb2JqZWN0XHJcbiAgICovXHJcbiAgY2VudGVyKCk6IFBvaW50IHtcclxuICAgIHJldHVybiBuZXcgSlNEcmF3Mi5Qb2ludCh0aGlzLmxlZnQgKyB0aGlzLndpZHRoIC8gMiwgdGhpcy50b3AgKyB0aGlzLmhlaWdodCAvIDIpO1xyXG4gIH1cclxuXHJcbiAgY2VudGVyTGVmdCgpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5sZWZ0LCB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0IC8gMik7XHJcbiAgfVxyXG5cclxuICBjZW50ZXJSaWdodCgpOiBQb2ludCB7XHJcbiAgICByZXR1cm4gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5yaWdodCgpLCB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0IC8gMik7XHJcbiAgfVxyXG5cclxuICBjZW50ZXJUb3AoKTogUG9pbnQge1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMubGVmdCArIHRoaXMud2lkdGggLyAyLCB0aGlzLnRvcCk7XHJcbiAgfVxyXG5cclxuICBjZW50ZXJCb3R0b20oKTogUG9pbnQge1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlBvaW50KHRoaXMubGVmdCArIHRoaXMud2lkdGggLyAyLCB0aGlzLmJvdHRvbSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9mZnNldCB0aGUgcmVjdFxyXG4gICAqIEBmdW5jdGlvbiBvZmZzZXRcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZHggLSB0aGUgeCBvZmZzZXRcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZHkgLSB0aGUgeSBvZmZzZXRcclxuICAgKiBAcmV0dXJucyB0aGUgcmVjdCBpdHNlbGZcclxuICAgKi9cclxuICBvZmZzZXQoZHgsIGR5KTogUmVjdCB7XHJcbiAgICB0aGlzLmxlZnQgKz0gZHg7XHJcbiAgICB0aGlzLnRvcCArPSBkeTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NhbGUgdGhlIHJlY3RcclxuICAgKiBAZnVuY3Rpb24gc2NhbGVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gcyAtIHRoZSBzY2FsaW5nIGZhY3RvclxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IG9yaWdpbiAtIHRoZSBiYXNlIFBvaW50XHJcbiAgICogQHJldHVybnMgdGhlIHJlY3QgaXRzZWxmXHJcbiAgICovXHJcbiAgc2NhbGUoczogbnVtYmVyLCBvcmlnaW46IFBvaW50KTogUmVjdCB7XHJcbiAgICBpZiAob3JpZ2luICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5sZWZ0ID0gKHRoaXMubGVmdCAtIG9yaWdpbi54KSAqIHMgKyBvcmlnaW4ueDtcclxuICAgICAgdGhpcy50b3AgPSAodGhpcy50b3AgLSBvcmlnaW4ueSkgKiBzICsgb3JpZ2luLnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxlZnQgKj0gcztcclxuICAgICAgdGhpcy50b3AgKj0gcztcclxuICAgIH1cclxuICAgIHRoaXMud2lkdGggKj0gcztcclxuICAgIHRoaXMuaGVpZ2h0ICo9IHM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuaW9uIGFub3RoZXIgUG9pbnRcclxuICAgKiBAZnVuY3Rpb24gdW5pb25Qb2ludFxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHAgLSB0aGUgUG9pbnQgdG8gYmUgdW5pb25lZFxyXG4gICAqIEByZXR1cm5zIHRoZSByZWN0IGl0c2VsZlxyXG4gICAqL1xyXG4gIHVuaW9uUG9pbnQocDogUG9pbnQpOiBSZWN0IHtcclxuICAgIGlmIChwLnggPCB0aGlzLmxlZnQpIHtcclxuICAgICAgdGhpcy53aWR0aCArPSB0aGlzLmxlZnQgLSBwLng7XHJcbiAgICAgIHRoaXMubGVmdCA9IHAueDtcclxuICAgIH0gZWxzZSBpZiAocC54ID4gdGhpcy5yaWdodCgpKSB7XHJcbiAgICAgIHRoaXMud2lkdGggKz0gcC54IC0gdGhpcy5yaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwLnkgPCB0aGlzLnRvcCkge1xyXG4gICAgICB0aGlzLmhlaWdodCArPSB0aGlzLnRvcCAtIHAueTtcclxuICAgICAgdGhpcy50b3AgPSBwLnk7XHJcbiAgICB9IGVsc2UgaWYgKHAueSA+IHRoaXMuYm90dG9tKCkpIHtcclxuICAgICAgdGhpcy5oZWlnaHQgKz0gcC55IC0gdGhpcy5ib3R0b20oKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5pb24gYW5vdGhlciBSZWN0XHJcbiAgICogQGZ1bmN0aW9uIHVuaW9uXHJcbiAgICogQHBhcmFtIHtSZWN0fSByIC0gdGhlIFJlY3QgdG8gYmUgdW5pb25lZFxyXG4gICAqIEByZXR1cm5zIHRoZSByZWN0IGl0c2VsZlxyXG4gICAqL1xyXG4gIHVuaW9uKHI6IFJlY3QpOiBSZWN0IHtcclxuICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5yaWdodCgpO1xyXG4gICAgY29uc3QgYm90dG9tID0gdGhpcy5ib3R0b20oKTtcclxuXHJcbiAgICBpZiAoci5sZWZ0IDwgdGhpcy5sZWZ0KVxyXG4gICAgICB0aGlzLmxlZnQgPSByLmxlZnQ7XHJcbiAgICBpZiAoci50b3AgPCB0aGlzLnRvcClcclxuICAgICAgdGhpcy50b3AgPSByLnRvcDtcclxuXHJcbiAgICB0aGlzLndpZHRoID0gTWF0aC5tYXgocmlnaHQsIHIucmlnaHQoKSkgLSB0aGlzLmxlZnQ7XHJcbiAgICB0aGlzLmhlaWdodCA9IE1hdGgubWF4KGJvdHRvbSwgci5ib3R0b20oKSkgLSB0aGlzLnRvcDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5mbGF0ZSB0aGUgUmVjdFxyXG4gICAqIEBmdW5jdGlvbiBpbmZsYXRlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGR4IC0gdGhlIGRlbHRhIGluIHggZGlyZWN0aW9uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGR5IC0gdGhlIGRlbHRhIGluIHkgZGlyZWN0aW9uXHJcbiAgICogQHJldHVybnMgdGhlIHJlY3QgaXRzZWxmXHJcbiAgICovXHJcbiAgaW5mbGF0ZShkeDogbnVtYmVyLCBkeTogbnVtYmVyKTogUmVjdCB7XHJcbiAgICBpZiAoZHkgPT0gbnVsbClcclxuICAgICAgZHggPSBkeTtcclxuICAgIGlmICh0aGlzLndpZHRoICsgMiAqIGR4IDwgMClcclxuICAgICAgZHggPSAtdGhpcy53aWR0aCAvIDI7XHJcbiAgICBpZiAodGhpcy5oZWlnaHQgKyAyICogZHkgPCAwKVxyXG4gICAgICBkeSA9IC10aGlzLmhlaWdodCAvIDI7XHJcblxyXG4gICAgdGhpcy5vZmZzZXQoLWR4LCAtZHkpO1xyXG4gICAgdGhpcy53aWR0aCArPSAyICogZHg7XHJcbiAgICB0aGlzLmhlaWdodCArPSAyICogZHk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBkaXN0YW5jZTJQb2ludChwOiBQb2ludCk6IG51bWJlciB7XHJcbiAgICBjb25zdCByID0gdGhpcy5yaWdodCgpO1xyXG4gICAgY29uc3QgYiA9IHRoaXMuYm90dG9tKCk7XHJcbiAgICBsZXQgZCA9IG5ldyBKU0RyYXcyLlBvaW50KHRoaXMubGVmdCwgdGhpcy50b3ApLmRpc3RUbyhwKTtcclxuICAgIGQgPSB0aGlzLl9taW5EaXN0KGQsIHAsIHRoaXMubGVmdCArIHRoaXMud2lkdGggLyAyLCB0aGlzLnRvcCk7XHJcbiAgICBkID0gdGhpcy5fbWluRGlzdChkLCBwLCByLCB0aGlzLnRvcCk7XHJcbiAgICBkID0gdGhpcy5fbWluRGlzdChkLCBwLCByLCB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0IC8gMik7XHJcbiAgICBkID0gdGhpcy5fbWluRGlzdChkLCBwLCByLCBiKTtcclxuICAgIGQgPSB0aGlzLl9taW5EaXN0KGQsIHAsIHRoaXMubGVmdCArIHRoaXMud2lkdGggLyAyLCBiKTtcclxuICAgIGQgPSB0aGlzLl9taW5EaXN0KGQsIHAsIHRoaXMubGVmdCwgYik7XHJcbiAgICBkID0gdGhpcy5fbWluRGlzdChkLCBwLCB0aGlzLmxlZnQsIHRoaXMuaGVpZ2h0IC8gMik7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIF9taW5EaXN0KGQ6IG51bWJlciwgcDogUG9pbnQsIHg6IG51bWJlciwgeTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLm1pbihkLCBuZXcgSlNEcmF3Mi5Qb2ludCh4LCB5KS5kaXN0VG8ocCkpO1xyXG4gIH1cclxuXHJcbiAgY3Jvc3MocDE6IFBvaW50LCBwMjogUG9pbnQpIHtcclxuICAgIGNvbnN0IGMxID0gdGhpcy5jb250YWlucyhwMSk7XHJcbiAgICBjb25zdCBjMiA9IHRoaXMuY29udGFpbnMocDIpO1xyXG4gICAgaWYgKGMxICYmIGMyKVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIGVsc2UgaWYgKGMxICYmICFjMilcclxuICAgICAgcmV0dXJuIC0yO1xyXG4gICAgZWxzZSBpZiAoIWMxICYmIGMyKVxyXG4gICAgICByZXR1cm4gMjtcclxuXHJcbiAgICBjb25zdCBhID0gcDIuYW5nbGVUbyhwMSk7XHJcbiAgICBjb25zdCBhYSA9IFtdO1xyXG4gICAgYWFbMF0gPSBuZXcgSlNEcmF3Mi5Qb2ludCh0aGlzLmxlZnQsIHRoaXMudG9wKS5hbmdsZVRvKHAxKSAtIGE7XHJcbiAgICBhYVsxXSA9IG5ldyBKU0RyYXcyLlBvaW50KHRoaXMucmlnaHQoKSwgdGhpcy50b3ApLmFuZ2xlVG8ocDEpIC0gYTtcclxuICAgIGFhWzJdID0gbmV3IEpTRHJhdzIuUG9pbnQodGhpcy5yaWdodCgpLCB0aGlzLmJvdHRvbSgpKS5hbmdsZVRvKHAxKSAtIGE7XHJcbiAgICBhYVszXSA9IG5ldyBKU0RyYXcyLlBvaW50KHRoaXMubGVmdCwgdGhpcy5ib3R0b20oKSkuYW5nbGVUbyhwMSkgLSBhO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhYS5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYWFbaV0gPCAwKVxyXG4gICAgICAgIGFhW2ldICs9IDM2MDtcclxuICAgIH1cclxuICAgIGFhLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pO1xyXG5cclxuICAgIGlmIChhYVswXSA8IDkwICYmIGFhWzNdID4gMjcwKVxyXG4gICAgICByZXR1cm4gMTtcclxuICAgIGlmIChhYVswXSA+IDkwICYmIGFhWzBdIDwgMTgwICYmIGFhWzNdID4gMTgwICYmIGFhWzNdIDwgMjcwKVxyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnQgdGhlIFJlY3QgaW50byBhIHN0cmluZ1xyXG4gICAqIEBmdW5jdGlvbiB0b1N0cmluZ1xyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAtIHRoZSBzY2FsZSBmYWN0b3JcclxuICAgKiBAcmV0dXJucyBhIHN0cmluZ1xyXG4gICAqL1xyXG4gIHRvU3RyaW5nKHNjYWxlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCEoc2NhbGUgPiAwKSlcclxuICAgICAgc2NhbGUgPSAxLjA7XHJcbiAgICByZXR1cm4gKHRoaXMubGVmdCAqIHNjYWxlKS50b0ZpeGVkKDMpICsgXCIgXCIgK1xyXG4gICAgICAoLXRoaXMuYm90dG9tKCkgKiBzY2FsZSkudG9GaXhlZCgzKSArIFwiIFwiICtcclxuICAgICAgKHRoaXMud2lkdGggKiBzY2FsZSkudG9GaXhlZCgzKSArIFwiIFwiICtcclxuICAgICAgKHRoaXMuaGVpZ2h0ICogc2NhbGUpLnRvRml4ZWQoMyk7XHJcbiAgfVxyXG5cclxuICBjb3JuZXJUZXN0KHA6IFBvaW50LCB0b3I6IG51bWJlcik6IENvcm5lclR5cGUge1xyXG4gICAgaWYgKE1hdGguYWJzKHAueCAtIHRoaXMubGVmdCkgPCB0b3IgJiYgTWF0aC5hYnMocC55IC0gdGhpcy50b3ApIDwgdG9yKVxyXG4gICAgICByZXR1cm4gQ29ybmVyVHlwZXMuVE9QTEVGVDtcclxuICAgIGlmIChNYXRoLmFicyhwLnggLSB0aGlzLnJpZ2h0KCkpIDwgdG9yICYmIE1hdGguYWJzKHAueSAtIHRoaXMudG9wKSA8IHRvcilcclxuICAgICAgcmV0dXJuIENvcm5lclR5cGVzLlRPUFJJR0hUO1xyXG4gICAgaWYgKE1hdGguYWJzKHAueCAtIHRoaXMubGVmdCkgPCB0b3IgJiYgTWF0aC5hYnMocC55IC0gdGhpcy5ib3R0b20oKSkgPCB0b3IpXHJcbiAgICAgIHJldHVybiBDb3JuZXJUeXBlcy5CT1RUT01MRUZUO1xyXG4gICAgaWYgKE1hdGguYWJzKHAueCAtIHRoaXMucmlnaHQoKSkgPCB0b3IgJiYgTWF0aC5hYnMocC55IC0gdGhpcy5ib3R0b20oKSkgPCB0b3IpXHJcbiAgICAgIHJldHVybiBDb3JuZXJUeXBlcy5CT1RUT01SSUdIVDtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbW92ZUNvcm5lcihjb3JuZXI6IENvcm5lclR5cGUsIGQ6IFBvaW50KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGNvcm5lcikge1xyXG4gICAgY2FzZSBcInRvcGxlZnRcIjpcclxuICAgICAgdGhpcy5zZXQodGhpcy50b3BsZWZ0KCkub2Zmc2V0KGQueCwgZC55KSwgdGhpcy5ib3R0b21yaWdodCgpKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwidG9wcmlnaHRcIjpcclxuICAgICAgdGhpcy5zZXQodGhpcy50b3ByaWdodCgpLm9mZnNldChkLngsIGQueSksIHRoaXMuYm90dG9tbGVmdCgpKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwiYm90dG9tbGVmdFwiOlxyXG4gICAgICB0aGlzLnNldCh0aGlzLmJvdHRvbWxlZnQoKS5vZmZzZXQoZC54LCBkLnkpLCB0aGlzLnRvcHJpZ2h0KCkpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJib3R0b21yaWdodFwiOlxyXG4gICAgICB0aGlzLnNldCh0aGlzLmJvdHRvbXJpZ2h0KCkub2Zmc2V0KGQueCwgZC55KSwgdGhpcy50b3BsZWZ0KCkpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIC0tIHN0YXRpYyAtLVxyXG5cclxuICBzdGF0aWMgZnJvbVN0cmluZyhzOiBzdHJpbmcpOiBSZWN0IHtcclxuICAgIGlmIChzID09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgY29uc3Qgc3MgPSBzLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3MubGVuZ3RoICE9IDQpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgbGVmdCA9IHBhcnNlRmxvYXQoc3NbMF0pO1xyXG4gICAgY29uc3QgdG9wID0gcGFyc2VGbG9hdChzc1sxXSk7XHJcbiAgICBjb25zdCB3ZCA9IHBhcnNlRmxvYXQoc3NbMl0pO1xyXG4gICAgY29uc3QgaHQgPSBwYXJzZUZsb2F0KHNzWzNdKTtcclxuICAgIGlmIChpc05hTihsZWZ0KSB8fCBpc05hTih0b3ApIHx8IGlzTmFOKHdkKSB8fCBpc05hTihodCkpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIG5ldyBKU0RyYXcyLlJlY3QobGVmdCwgLXRvcCAtIGh0LCB3ZCwgaHQpO1xyXG4gIH07XHJcbn1cclxuXHJcbkpTRHJhdzIuUmVjdCA9IFJlY3Q7XHJcbiIsImltcG9ydCB0eXBlIHtJTW9sSGFuZGxlcn0gZnJvbSAnLi9tb2wtaGFuZGxlcic7XHJcbmltcG9ydCB0eXBlIHtQbHVzLCBQb2ludH0gZnJvbSAnLi4vUG9pbnQnO1xyXG5pbXBvcnQgdHlwZSB7RWRpdG9yfSBmcm9tICcuLi9KU0RyYXcuRWRpdG9yJztcclxuaW1wb3J0IHR5cGUge0F0b219IGZyb20gJy4uL0F0b20nO1xyXG5pbXBvcnQgdHlwZSB7UmVjdH0gZnJvbSAnLi4vUmVjdCc7XHJcbmltcG9ydCB0eXBlIHtCb25kLCBCb25kQn0gZnJvbSAnLi4vQm9uZCc7XHJcbmltcG9ydCB0eXBlIHtNb2x9IGZyb20gJy4uL01vbCc7XHJcbmltcG9ydCB0eXBlIHtCcmFja2V0fSBmcm9tICcuLi9CcmFja2V0JztcclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIEJvbmRUeXBlcyB7XHJcbiAgVU5LTk9XTiA9IDAsXHJcbiAgU0lOR0xFID0gMSxcclxuICBET1VCTEUgPSAyLFxyXG4gIFRSSVBMRSA9IDMsXHJcbiAgREVMT0NBTElaRUQgPSA0LFxyXG4gIFdFREdFID0gNSxcclxuICBIQVNIID0gNixcclxuICBXSUdHTFkgPSA3LFxyXG4gIEVJVEhFUiA9IDgsXHJcbiAgU0lOR0xFT1JET1VCTEUgPSA5LFxyXG4gIFNJTkdMRU9SQVJPTUFUSUMgPSAxMCxcclxuICBET1VCTEVPUkFST01BVElDID0gMTEsXHJcbiAgUVVBRFJVUExFID0gMTIsXHJcbiAgRFVNTVkgPSAxMyxcclxuICBCT0xEID0gMTQsXHJcbiAgQk9MREhBU0ggPSAxNSxcclxuICBQRVBUSURFID0gMjEsXHJcbiAgTlVDTEVPVElERSA9IDIyLFxyXG4gIERJU1VMRklERSA9IDIzLFxyXG4gIEFNSURFID0gMjQsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEJvbmRUeXBlID0gdHlwZW9mIEJvbmRUeXBlc1trZXlvZiB0eXBlb2YgQm9uZFR5cGVzXTtcclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIFJ4bkNlbnRlclR5cGVzIHtcclxuICBOT1RDRU5URVIgPSAtMSxcclxuICBDRU5URVIgPSAxLFxyXG4gIEJSRUFLID0gNCxcclxuICBDSEFOR0UgPSA4LFxyXG4gIEJSRUFLQU5EQ0hBTkdFID0gMTJcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUnhuQ2VudGVyVHlwZSA9IHR5cGVvZiBSeG5DZW50ZXJUeXBlc1trZXlvZiB0eXBlb2YgUnhuQ2VudGVyVHlwZXNdO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1vbGVjdWxlVHlwZXMgPSBbXCJTbWFsbE1vbGVjdWxlXCIsIFwiUG9seW1lclwiLCBcIlBlcHRpZGVcIiwgXCJETkFcIiwgXCJSTkFcIiwgXCJBRENcIiwgXCJDaGVtaWNhbFJlYWdlbnRcIl07XHJcblxyXG5leHBvcnQgY29uc3QgVGV4dEtleXdvcmRzID0gW1wiwrBDXCIsIFwicnRcIiwgXCJyZWZsdXhcIiwgXCJoclwiLCBcIm1pblwiLCBcInNlY1wiLCBcInBzaVwiLCBcImF0bVwiLCBcIm92ZXJuaWdodFwiLCBcIm1pY3Jvd2F2ZVwiLCBcIs6UXCJdO1xyXG5cclxuLy8gZXhwb3J0IHR5cGUgQm9uZFR5cGUgPSBgJHtCb25kVHlwZXN9YDtcclxuXHJcbmNvbnN0IEFsaWduVHlwZXMgPSBuZXcgY2xhc3Mge1xyXG4gIFJJR0hUID0gMDtcclxuICBCT1RUT00gPSAxO1xyXG4gIExFRlQgPSAyO1xyXG4gIFRPUCA9IDM7XHJcbn0oKTtcclxuXHJcbmNvbnN0IEFudGlib2R5VHlwZXMgPSBuZXcgY2xhc3Mge1xyXG4gIElnRyA9ICdJZ0cnO1xyXG4gIEZhYiA9ICdGYWInO1xyXG4gIFNjRnYgPSAnU2NGdic7XHJcbn0oKTtcclxuXHJcbmNvbnN0IEJpb1R5cGVzID0gbmV3IGNsYXNzIHtcclxuICBBQTogQmlvVHlwZSA9ICdBQSc7XHJcbiAgLy9CQVNFOiAnQkFTRSc7XHJcbiAgQU5USUJPRFk6IEJpb1R5cGUgPSAnQU5USUJPRFknO1xyXG4gIFBST1RFSU46IEJpb1R5cGUgPSAnUFJPVEVJTic7XHJcbiAgR0VORTogQmlvVHlwZSA9ICdHRU5FJztcclxuICBETkE6IEJpb1R5cGUgPSAnRE5BJztcclxuICBSTkE6IEJpb1R5cGUgPSAnUk5BJztcclxuICBCQVNFX0ROQSA9ICdCQVNFRE5BJztcclxuICBCQVNFX1JOQSA9ICdCQVNFUk5BJztcclxufSgpO1xyXG5cclxuZXhwb3J0IHR5cGUgQmlvVHlwZSA9IGtleW9mIHR5cGVvZiBCaW9UeXBlcztcclxuXHJcbi8vIGNvbnN0IEJpb1R5cGVzID0gbmV3IGNsYXNzIHtcclxuLy8gICBBQSA9ICdBQSc7XHJcbi8vICAgLy9CQVNFPSAnQkFTRScsXHJcbi8vICAgQU5USUJPRFkgPSAnQU5USUJPRFknO1xyXG4vLyAgIFBST1RFSU4gPSAnUFJPVEVJTic7XHJcbi8vICAgR0VORSA9ICdHRU5FJztcclxuLy8gICBETkEgPSAnRE5BJztcclxuLy8gICBSTkEgPSAnUk5BJztcclxuLy8gICBCQVNFX0ROQSA9ICdCQVNFRE5BJztcclxuLy8gICBCQVNFX1JOQSA9ICdCQVNFUk5BJztcclxuLy8gfSgpO1xyXG5cclxuZXhwb3J0IGVudW0gU2hhcGVUeXBlcyB7XHJcbiAgTElORSA9ICdsaW5lJyxcclxuICBSRUNUID0gJ3JlY3QnLFxyXG4gIENJUkNMRSA9ICdjaXJjbGUnLFxyXG4gIFNRVUFSRSA9ICdzcXVhcmUnLFxyXG4gIEVMTElQU0UgPSAnZWxsaXBzZScsXHJcbiAgUE9MWUdPTiA9ICdwb2x5Z29uJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb21tYW5kVHlwZXMge1xyXG4gIEFCT1VUID0gJ2Fib3V0JyxcclxuICBKU0RSQVcgPSAnanNkcmF3JyxcclxuICBJTktDTEVBUkFMTCA9ICdpbmtjbGVhcmFsbCdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU2hhcGVUeXBlID0gdHlwZW9mIFNoYXBlVHlwZXNba2V5b2YgdHlwZW9mIFNoYXBlVHlwZXNdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FzdDxUPiB7XHJcbiAgY2FzdChvYmo6IGFueSk6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoaWNzIHtcclxuICByZWFkb25seSBUOiBzdHJpbmc7XHJcbiAgY29sb3I6IHN0cmluZztcclxuICAvLyBhdG9tczogQXRvbTxhbnk+W107XHJcbiAgLy8gX3BhcmVudDogTW9sPGFueT47XHJcbiAgLy8gYW5jaG9yczogYW55W107XHJcbiAgLy8gZnJvbXM6IGFueVtdO1xyXG5cclxuICAvLyBhOiBhbnk7IC8vIFRPRE9cclxuICAvLyBncm91cDogYW55OyAvLyBUT0RPXHJcbiAgcmVqZWN0OiBhbnk7IC8vIFRPRE9cclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBpZDogbnVtYmVyO1xyXG4gIGdyYXBoaWNzaWQ6IG51bWJlcjtcclxuICByZWN0KCk6IFJlY3Q7XHJcbiAgY2xvbmUobWFwOiBhbnlbXSk6IElHcmFwaGljcztcclxuICBkcmF3KHN1cmZhY2U6IGFueSwgbGluZXdpZHRoOiBudW1iZXIsIG06IGFueSwgZm9udHNpemU6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIFtwOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUJyYWNrZXQ8VEJpbz4gZXh0ZW5kcyBJR3JhcGhpY3M8VEJpbz4sIElDYXN0PElCcmFja2V0PFRCaW8+PiB7XHJcbi8vICAgYXRvbXM6IEF0b208VEJpbz5bXTtcclxuLy8gICBjb2xvcjogc3RyaW5nO1xyXG4vLyAgIHNoYXBlOiBJU2hhcGU7XHJcbi8vICAgY29ubjogc3RyaW5nIHwgbnVsbDtcclxuLy8gICBleHBhbmRlZGF0b21zOiBhbnkgfCBudWxsO1xyXG4vLyAgIHNncm91cHRleHRzOiBzdHJpbmc7XHJcbi8vICAgc3Vic2NyaXB0OiBzdHJpbmcgfCBudWxsO1xyXG4vLyAgIHR5cGU6IHN0cmluZyB8IG51bGw7XHJcbi8vXHJcbi8vICAgX3JlY3Q6IFJlY3Q7XHJcbi8vXHJcbi8vICAgbmV3KHR5cGU6IHN0cmluZywgcmVjdDogUmVjdCB8IG51bGwsIHNoYXBlPzogSVNoYXBlKTogSUJyYWNrZXQ8VEJpbz47XHJcbi8vXHJcbi8vICAgY2xvbmUoKTogSUJyYWNrZXQ8VEJpbz47XHJcbi8vXHJcbi8vICAgZ2V0VGV4dHMobTogTW9sPFRCaW8+KTogYW55O1xyXG4vLyAgIGdldFR5cGUoKTogc3RyaW5nO1xyXG4vLyAgIGdldFN1YnNjcmlwdChtOiBNb2w8VEJpbz4pOiBzdHJpbmc7XHJcbi8vICAgZ2V0WGJvbmRzKG06IE1vbDxUQmlvPik6IGFueTtcclxuLy8gICBnZXRUeXBlTnVtKCk6IHN0cmluZztcclxuLy8gICBjcmVhdGVTdWJzY3JpcHQobW9sOiBNb2w8VEJpbz4sIHJlcGVhdD86IHN0cmluZyk6IHZvaWQ7XHJcbi8vIH1cclxuXHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgSU1vbDxUQmlvID0gYW55PiB7XHJcbi8vICAgYXRvbXM6IEF0b208VEJpbz5bXTtcclxuLy8gICBib25kczogQm9uZDxUQmlvPltdO1xyXG4vLyAgIGdyYXBoaWNzOiBJR3JhcGhpY3NbXTtcclxuLy9cclxuLy8gICBib25kbGVuZ3RoOiBudW1iZXI7XHJcbi8vICAgbmFtZTogc3RyaW5nO1xyXG4vLyAgIGNoaXJhbDogYW55O1xyXG4vLyAgIHByb3BzOiBhbnk7XHJcbi8vICAgc2hvd2ltcGxpY2l0aHlkcm9nZW5zOiBib29sZWFuO1xyXG4vLyAgIG13OiBudW1iZXI7XHJcbi8vICAgYXR0YWNocG9pbnRzOiBhbnk7XHJcbi8vXHJcbi8vICAgbmV3KHNob3dpbXBsaWNpdGh5ZHJvZ2Vucz86IGJvb2xlYW4pOiBJTW9sPFRCaW8+O1xyXG4vL1xyXG4vLyAgIGlzRW1wdHkoKTogYm9vbGVhbjtcclxuLy8gICBjbG9uZShzZWxlY3RlZE9ubHk/OiBib29sZWFuKTogSU1vbDxUQmlvPjtcclxuLy8gICBnZXRTZ3JvdXBUZXh0cyhicjogSUJyYWNrZXQ8VEJpbz4pOiBzdHJpbmc7XHJcbi8vXHJcbi8vICAgZ2V0WG1sKHdpZHRoPzogbnVtYmVyLCBoZWlnaHQ/OiBudW1iZXIsIHZpZXdvbmx5PzogYm9vbGVhbiwgc3ZnPzogYW55LCBsZW4/OiBudW1iZXIpOiBzdHJpbmc7XHJcbi8vICAgc2V0WG1sKGVsOiBIVE1MRWxlbWVudCB8IHN0cmluZyk6IGFueTtcclxuLy8gICBzZXRNb2xWMzAwMChsaW5zZXM6IHN0cmluZ1tdLCBzdGFydDogbnVtYmVyLCByeG46IGFueSwgcG9zPzogYW55LCBlbmR0b2tlbj86IGFueSk6IHZvaWQ7XHJcbi8vICAgc2V0SmR4KGRhdGE6IGFueSwgYm9uZGxlbmd0aDogbnVtYmVyKTogSU1vbDxUQmlvPjtcclxuLy9cclxuLy8gICBzZXRNb2xmaWxlKG1vbGZpbGU6IHN0cmluZyk6IElNb2w8VEJpbz47XHJcbi8vICAgYWRkR3JhcGhpY3MoRzogSUdyYXBoaWNzKTogSUdyYXBoaWNzO1xyXG4vLyAgIGdldEZyYWdtZW50KGE6IEF0b208VEJpbz4sIHBhcmVudD86IElNb2w8VEJpbz4pOiBJTW9sPFRCaW8+O1xyXG4vLyAgIG1lcmdlTW9sKG06IElNb2w8VEJpbz4pOiB2b2lkO1xyXG4vL1xyXG4vLyAgIGFkZEF0b20oYTogQXRvbTxUQmlvPik6IEF0b208VEJpbz4gfCBudWxsO1xyXG4vLyAgIGFkZEJvbmQoYjogQm9uZDxUQmlvPiwgcmVzZXRjaGFyZ2U/OiBib29sZWFuLCBhZGQyZ3JvdXA/OiBib29sZWFuKTogQm9uZDxUQmlvPiB8IG51bGw7XHJcbi8vICAgc2V0QXRvbVR5cGUoYTogQXRvbTxUQmlvPiwgZWxlbTogc3RyaW5nLCBzZXRDaGFyZ2U/OiBib29sZWFuKTogYm9vbGVhbjtcclxuLy8gICBzZXRIQ291bnQoYTogQXRvbTxUQmlvPik6IHZvaWQ7XHJcbi8vICAgc2V0QXRvbUFsaWFzKGE6IEF0b208VEJpbz4sIGFsaWFzOiBzdHJpbmcsIGxlbj86IG51bWJlcik6IGJvb2xlYW47XHJcbi8vICAgc2V0Qm9uZExlbmd0aChib25kbGVuZ3RoOiBudW1iZXIpOiB2b2lkO1xyXG4vL1xyXG4vLyAgIF9hZGRBdG9tKGExOiBBdG9tPFRCaW8+LCBwYXJlbnQ/OiBJTW9sPFRCaW8+KTogdm9pZDtcclxuLy8gICBfYWRkQm9uZChiMTogQm9uZDxUQmlvPiwgcGFyZW50PzogSU1vbDxUQmlvPik6IHZvaWQ7XHJcbi8vICAgX2FkZEdyYXBoaWNzKGcxOiBhbnkpOiB2b2lkO1xyXG4vLyAgIF9zZXRQYXJlbnQocGFyZW50OiBJTW9sPFRCaW8+KTogdm9pZDtcclxuLy9cclxuLy8gICBvZmZzZXQoZHg6IG51bWJlciwgZHk6IG51bWJlciwgc2VsZWN0ZWRPbmx5PzogYm9vbGVhbik6IHZvaWQ7XHJcbi8vICAgZ2V0TmVpZ2hib3JBdG9tcyhhOiBBdG9tPFRCaW8+LCBvYTogQXRvbTxUQmlvPiwgZXhjbHVkZUR1bW15Qm9uZD86IGJvb2xlYW4pOiBBdG9tPFRCaW8+W107XHJcbi8vICAgZ2V0TWF4UkluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgW3A6IHN0cmluZ106IGFueTtcclxuLy8gfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29sb3JBcnJheSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3JnUGx1Z2luPFRCaW8+IHtcclxuICBuZXcoanNkOiBJTW9sSGFuZGxlcjxUQmlvPik6IElPcmdQbHVnaW48VEJpbz47XHJcblxyXG4gIFtwOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvck9wdGlvbnMge1xyXG4gIHVzZXhkcmF3OiBib29sZWFuO1xyXG4gIHhkcmF3OiBzdHJpbmc7XHJcbiAgcG9wdXB3aWR0aDogc3RyaW5nO1xyXG4gIHBvcHVwaGVpZ2h0OiBzdHJpbmc7XHJcbiAgcG9wdXB4ZHJhdzogYm9vbGVhbjtcclxuICBqZHJhd3BhdGg6IHN0cmluZztcclxuXHJcbiAgcXVlcnk6IGJvb2xlYW47XHJcbiAgcnhuOiBib29sZWFuO1xyXG4gIGJpb2xvZ3k6IGJvb2xlYW47XHJcbiAgc2VuZHF1ZXJ5OiBib29sZWFuO1xyXG4gIHNob3d0b29sYmFyOiBib29sZWFuO1xyXG4gIHNob3djdXN0b210ZW1wbGF0ZXM6IGJvb2xlYW47XHJcbiAgdXNlY2hlbWRyYXc6IGJvb2xlYW47XHJcblxyXG4gIHNob3djYXJib246IGJvb2xlYW47XHJcbiAgcGFzdGVjaGVtZHJhdzogYm9vbGVhbjtcclxuICByZW1vdmVoeWRyb2dlbnM6IGJvb2xlYW47XHJcblxyXG4gIHdpZHRoOiBudW1iZXI7XHJcbiAgaGVpZ2h0OiBudW1iZXI7XHJcbiAgdmlld29ubHk6IGJvb2xlYW47XHJcblxyXG4gIG9uZGF0YWNoYW5nZTogYW55O1xyXG4gIGRhdGE6IHN0cmluZztcclxuICBkYXRhZm9ybWF0OiBzdHJpbmc7XHJcblxyXG4gIHNob3dpbXBsaWNpdGh5ZHJvZ2VuczogYm9vbGVhbjtcclxuICBpbmt0b29sczogYm9vbGVhbjtcclxuICBoaWdobGlnaHRlcnJvcnM6IGJvb2xlYW47XHJcbiAgc2tpbjogc3RyaW5nO1xyXG5cclxuICBtb25vY29sb3I6IGJvb2xlYW47XHJcbiAgZnVsbHNjcmVlbjogYm9vbGVhbjtcclxuXHJcbiAgYnV0dG9uc2hhcGU6IHN0cmluZztcclxuICBzY2FsZTogbnVtYmVyO1xyXG5cclxuICBhbmRfZW5hbnRpb21lcjogYm9vbGVhbjtcclxuICBkZWxoZXRlcm9hdG9tOiBib29sZWFuO1xyXG4gIG1pbmF1dG93aWR0aDE6IG51bWJlcjtcclxuICBtaW5hdXRvd2lkdGgyOiBudW1iZXI7XHJcbiAgbWluYXV0b3dpZHRoMzogbnVtYmVyO1xyXG5cclxuICBzdWdnZXN0Y291bnQ6IG51bWJlcjtcclxuXHJcbiAgYXRvbWxpc3Q6IGFueTtcclxuICB0ZXh0bGlzdDogYW55O1xyXG5cclxuICB0bGM6IGFueTtcclxuXHJcbiAgcG9wdXA6IGJvb2xlYW4gfCBudWxsO1xyXG4gIGFwcG1vZGU6IGFueTtcclxuICBidG5zaXplOiBudW1iZXI7XHJcbiAgbW92aW5ncmVzb2x1dGlvbjogYW55O1xyXG59XHJcblxyXG4vLyBleHBvcnQgaW50ZXJmYWNlIElFZGl0b3I8VEJpbz4gZXh0ZW5kcyBJTW9sSGFuZGxlcjxUQmlvPiB7XHJcbi8vICAgQk9ORExFTkdUSDogbnVtYmVyO1xyXG4vLyAgIEFOR0xFU1RPUDogbnVtYmVyO1xyXG4vLyAgIExJTkVXSURUSDogbnVtYmVyO1xyXG4vLyAgIFRPUjogbnVtYmVyO1xyXG4vLyAgIEZPTlRTSVpFOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgQ09MT1JDVVJSRU5UOiBDb2xvckFycmF5VHlwZTtcclxuLy8gICBDT0xPUlNFTEVDVEVEOiBDb2xvckFycmF5VHlwZTtcclxuLy9cclxuLy8gICBkYmxjbGlja2RlbGF5OiBudW1iZXI7XHJcbi8vICAgaGVsbTogSU9yZ1BsdWdpbjxUQmlvPjtcclxuLy9cclxuLy8gICBfaWQ6IG51bWJlciB8IG51bGw7XHJcbi8vICAgX2FsbGl0ZW1zOiB7fTtcclxuLy9cclxuLy8gICB1bmRvR2VzdHVyZVRpbWU6IG51bWJlcjtcclxuLy9cclxuLy8gICBnZXQgb3B0aW9ucygpOiBJRWRpdG9yT3B0aW9ucztcclxuLy9cclxuLy8gICBnZXQgZGl2KCk6IEhUTUxEaXZFbGVtZW50O1xyXG4vL1xyXG4vLyAgIGdldCBtKCk6IElNb2w8VEJpbz47XHJcbi8vXHJcbi8vICAgYWJvdXQ6IGFueSB8IG51bGw7XHJcbi8vICAganNkOiBhbnkgfCBudWxsO1xyXG4vLyAgIHBlcmlvZGljdGFibGU6IGFueSB8IG51bGw7XHJcbi8vICAgcG9wdXBkbGc6IGFueSB8IG51bGw7XHJcbi8vICAgb3BlbmZpbGVkbGc6IGFueSB8IG51bGw7XHJcbi8vICAgc2F2ZWZpbGVkbGc6IGFueSB8IG51bGw7XHJcbi8vXHJcbi8vICAgbmV3KGhvc3Q6IEhUTUxFbGVtZW50LCBvcHRpb25zPzogUGFydGlhbDxJRWRpdG9yT3B0aW9ucz4pOiBJRWRpdG9yPFRCaW8+O1xyXG4vL1xyXG4vLyAgIGluaXROb0RlbGF5KCk6IHZvaWQ7XHJcbi8vICAgZGVzdHJveSgpOiB2b2lkO1xyXG4vLyAgIHNldFNpemUodzogbnVtYmVyLCBoOiBudW1iZXIpOiB2b2lkO1xyXG4vLyAgIHJlc2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHZvaWQ7XHJcbi8vXHJcbi8vICAgLyoqIENsZWFyIGFsbCBjb250ZW50cyAqLyBjbGVhcihyZWRyYXc6IGJvb2xlYW4sIGZpcmVldmVudHM6IGJvb2xlYW4pOiB2b2lkO1xyXG4vLyAgIC8qKiBSZXNldHMgYW5kIGNsZWFycyB1bmRvIGFuZCByZWRvIGJ1ZmZlcnMgKi8gcmVzZXQoKTogdm9pZDtcclxuLy8gICBzZXREYXRhKGRhdGE6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiB2b2lkO1xyXG4vLyAgIHNldEhlbG0oaGVsbTogc3RyaW5nKTogdm9pZDtcclxuLy9cclxuLy8gICBnZXRDbGlwYm9hcmQoKTogSU1vbDxUQmlvPjtcclxuLy8gICBzZXRDbGlwYm9hcmQobTogSU1vbDxUQmlvPiwgYm9uZGxlbmd0aDogbnVtYmVyKTogdm9pZDtcclxuLy9cclxuLy8gICBnZXRNb2xmaWxlKCk6IHN0cmluZztcclxuLy8gICBzZXRNb2xmaWxlKG06IElNb2w8VEJpbz4pOiB2b2lkO1xyXG4vL1xyXG4vLyAgIGdldEZvcm11bGEoYjogYm9vbGVhbik6IHN0cmluZztcclxuLy8gICBnZXRNb2xXZWlnaHQoKTogbnVtYmVyO1xyXG4vLyAgIGdldEV4dGluY3Rpb25Db2VmZmljaWVudCgpOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgc2hvd1BvcHVwKHRpdGxlOiBzdHJpbmcsIGJ0blRleHQ6IHN0cmluZywgYnRuRm46IEZ1bmN0aW9uLCB2YWx1ZT86IGFueSwgemluZGV4PzogbnVtYmVyKTogYW55O1xyXG4vLyAgIHNob3dBYm91dCgpOiB2b2lkO1xyXG4vL1xyXG4vLyAgIGdldChpZDogc3RyaW5nKTogSUVkaXRvcjxUQmlvPjtcclxuLy8gICBvblBUKGVsZW06IEhUTUxFbGVtZW50KTogdm9pZDtcclxuLy8gICBvblNhdmVGaWxlKCk6IHZvaWQ7XHJcbi8vXHJcbi8vICAgW3A6IHN0cmluZ106IGFueTtcclxuLy8gfVxyXG5cclxuZXhwb3J0IHR5cGUgSVNoYXBlID0gYW55O1xyXG5cclxuLy8gZXhwb3J0IGludGVyZmFjZSBJUmVjdCB7XHJcbi8vICAgbGVmdDogbnVtYmVyO1xyXG4vLyAgIHRvcDogbnVtYmVyO1xyXG4vLyAgIHdpZHRoOiBudW1iZXI7XHJcbi8vICAgaGVpZ2h0OiBudW1iZXI7XHJcbi8vXHJcbi8vICAgbmV3KGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogSVJlY3Q7XHJcbi8vICAgbmV3KCk6IElSZWN0O1xyXG4vL1xyXG4vLyAgIGNvbnRhaW5zKHA6IFBvaW50KTogYm9vbGVhbjtcclxuLy8gICByaWdodCgpOiBudW1iZXI7XHJcbi8vICAgYm90dG9tKCk6IG51bWJlcjtcclxuLy8gICBjZW50ZXIoKTogUG9pbnQ7XHJcbi8vXHJcbi8vICAgc2V0KHAxOiBQb2ludCwgcDI6IFBvaW50KTogSVJlY3Q7XHJcbi8vXHJcbi8vICAgb2Zmc2V0KGR4OiBudW1iZXIsIGR5OiBudW1iZXIpOiBJUmVjdDtcclxuLy8gICB1bmlvbihyOiBJUmVjdCk6IElSZWN0O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTdGFjazxUID0gYW55PiB7XHJcbiAgbmV3PFQgPSBhbnk+KGxlbmd0aD86IG51bWJlcik6IElTdGFjazxUPjtcclxuICBwdXNoKGl0ZW06IFQpOiB2b2lkO1xyXG4gIHBvcCgpOiBUIHwgbnVsbDtcclxuICBwb3BIZWFkKCk6IFQgfCBudWxsO1xyXG5cclxuICBjbGVhcigpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQaXN0b2lhQmFzZSB7XHJcbiAgZ2V0IFQoKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElCaW88VEJpbz4ge1xyXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgdHlwZTogVEJpbztcclxuICBzdWJ0eXBlPzogc3RyaW5nIHwgbnVsbDtcclxuICBibG9idHlwZT86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGFtYmlndWl0eT86IHN0cmluZyB8IG51bGw7XHJcbiAgYW5ub3RhdGlvbj86IHN0cmluZyB8IG51bGw7XHJcbiAgYW5ub3RhdGlvbnNob3dyaWdodD86IGJvb2xlYW4gfCBudWxsO1xyXG5cclxuICBzZXF1ZW5jZXM/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElKc0F0b208VEJpbz4gZXh0ZW5kcyBJUGlzdG9pYUJhc2Uge1xyXG4gIGdldCBUKCk6ICdBVE9NJztcclxuXHJcbiAgcDogUG9pbnQ7XHJcblxyXG4gIGdldCBlbGVtKCk6IHN0cmluZztcclxuXHJcbiAgYmlvOiBJQmlvPFRCaW8+O1xyXG5cclxuICAvLyBbcHJvcE5hbWU6IHN0cmluZ106IGFueTtcclxuXHJcbiAgLy8gZ2V0IGNoYXJnZSgpOiBudW1iZXI7XHJcbiAgLy9cclxuICAvLyBnZXQgaXNvdG9wZSgpOiBzdHJpbmcgfCBudWxsO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IHJhZGljYWwoKTogc3RyaW5nIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIGdldCBncm91cCgpOiBzdHJpbmcgfCBudWxsO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IGFsaWFzKCk6IHN0cmluZyB8IG51bGw7XHJcbiAgLy9cclxuICAvLyBnZXQgc3VwZXJhdG9tKCk6IHN0cmluZyB8IG51bGw7XHJcbiAgLy9cclxuICAvLyBnZXQgYXR0YWNocG9pbnRzKCk6IFtdO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IHJncm91cCgpOiBzdHJpbmcgfCBudWxsO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IGxvY2tlZCgpOiBib29sZWFuO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IGhpZGRlbigpOiBib29sZWFuIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIHByaXZhdGUgZ2V0IF9yZWN0KCk6IG9iamVjdCB8IG51bGw7XHJcbiAgLy9cclxuICAvLyBnZXQgY29sb3IoKTogc3RyaW5nIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIGdldCBoY291bnQoKTogbnVtYmVyIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIGdldCBzZWxlY3RlZCgpOiBib29sZWFuO1xyXG4gIC8vXHJcbiAgLy8gZ2V0IGYoKTogbnVtYmVyIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIGdldCBib25kcygpOiBbXSB8IG51bGw7XHJcbiAgLy9cclxuICAvLyBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcclxuICAvL1xyXG4gIC8vIGdldCBhdG9tbWFwaWQoKTogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQXRvbVF1ZXJ5VHlwZSA9IHtcclxuICB0PzogYm9vbGVhbjtcclxuICBzdWI/OiBudW1iZXIgfCAnKic7XHJcbiAgdW5zPzogYm9vbGVhbiB8IG51bGw7XHJcbiAgcmJjPzogbnVtYmVyIHwgbnVsbDtcclxuICBhbHM/OiBzdHJpbmdbXSB8IG51bGw7XHJcbiAgdj86IG51bWJlcjtcclxufTtcclxuXHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUF0b208VEJpbyA9IGFueT4gZXh0ZW5kcyBJSnNBdG9tPFRCaW8+IHtcclxuLy8gICBlbGVtOiBzdHJpbmc7XHJcbi8vICAgY2hhcmdlOiBudW1iZXI7XHJcbi8vICAgaXNvdG9wZTogc3RyaW5nO1xyXG4vLyAgIHJhZGljYWw6IHN0cmluZztcclxuLy8gICBoY291bnQ6IG51bWJlcjtcclxuLy8gICBpZDogbnVtYmVyO1xyXG4vLyAgIGNvbG9yOiBzdHJpbmc7XHJcbi8vICAgdGFnOiBzdHJpbmc7XHJcbi8vICAgYWxpYXM6IHN0cmluZztcclxuLy8gICBzdXBlcmF0b206IElNb2w8VEJpbz47Ly9JU3VwZXJBdG9tczxUQmlvPiB8IG51bGw7XHJcbi8vICAgYXR0YWNocG9pbnRzOiBhbnlbXTtcclxuLy8gICBhdG9tbWFwaWQ6IG51bWJlcjtcclxuLy8gICByZ3JvdXA6IElSR3JvdXA8VEJpbz47XHJcbi8vICAgaGFzRXJyb3I6IGJvb2xlYW47XHJcbi8vICAgaHM6IG51bWJlcjtcclxuLy8gICB2YWw6IGFueTtcclxuLy8gICBxdWVyeTogYW55O1xyXG4vLyAgIGxvY2tlZDogYm9vbGVhbjtcclxuLy8gICBoaWRkZW46IGJvb2xlYW47XHJcbi8vICAgcmF0aW86IG51bWJlcjtcclxuLy8gICBzZWxlY3RlZDogYm9vbGVhbjtcclxuLy8gICBmOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgZ3JvdXA6IEF0b21Hcm91cFR5cGU7XHJcbi8vXHJcbi8vICAgX2FhaWQ6IG51bWJlciB8IG51bGw7XHJcbi8vICAgX3BhcmVudDogSU1vbDxUQmlvPjtcclxuLy8gICBfaGVsbWdyb3VwOiBhbnk7XHJcbi8vXHJcbi8vICAgbmV3KHA6IFBvaW50LCBlbGVtPzogc3RyaW5nLCBiaW8/OiBJQmlvPFRCaW8+KTogSUF0b208VEJpbz47XHJcbi8vICAgLy9jb25zdHJ1Y3RvcihwOiBJUG9pbnQsIGVsZW06IHN0cmluZywgYmlvPzogSUJpbzxUQmlvPik6IElBdG9tPFRCaW8+O1xyXG4vL1xyXG4vLyAgIGJpb3R5cGUoKTogVEJpbztcclxuLy8gICBjYXN0KG9iajogYW55KTogSUF0b208VEJpbz47XHJcbi8vICAgZ2V0TGFiZWwoKTogc3RyaW5nO1xyXG4vLyAgIGRyYXdBbGlhcyguLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XHJcbi8vICAgaXNWYWxpZENoaXJhbChjOiBzdHJpbmcpOiBib29sZWFuO1xyXG4vLyAgIGlzU3RlcmVvKGM6IHN0cmluZyk6IGJvb2xlYW47XHJcbi8vICAgbWF0Y2goeDogSUF0b208VEJpbz4sIHk6IElBdG9tPFRCaW8+KTogYm9vbGVhbjtcclxuLy8gICBtYXRjaDIoZTE6IHN0cmluZywgZTI6IHN0cmluZyk6IGJvb2xlYW47XHJcbi8vIH1cclxuXHJcbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUJvbmQ8VEJpbyA9IGFueT4gZXh0ZW5kcyBJQ2FzdDxJQm9uZDxUQmlvPj4ge1xyXG4vLyAgIGdldCBhMSgpOiBBdG9tPFRCaW8+O1xyXG4vLyAgIGdldCBhMigpOiBBdG9tPFRCaW8+O1xyXG4vL1xyXG4vLyAgIGFwbzE6IG51bWJlcjtcclxuLy8gICBhcG8yOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgcmF0aW8xOiBudW1iZXI7XHJcbi8vICAgcmF0aW8yOiBudW1iZXI7XHJcbi8vXHJcbi8vICAgcmluZzogYm9vbGVhbjtcclxuLy8gICBzZWxlY3RlZDogYm9vbGVhbjtcclxuLy8gICB0eXBlOiBudW1iZXI7XHJcbi8vICAgdGFnOiBzdHJpbmc7XHJcbi8vICAgZjogbnVtYmVyO1xyXG4vL1xyXG4vLyAgIF9wYXJlbnQ6IElNb2w8VEJpbz47XHJcbi8vXHJcbi8vICAgbmV3KGExOiBBdG9tPFRCaW8+LCBhMjogQXRvbTxUQmlvPiwgYnQ/OiBCb25kVHlwZXMpOiBJQm9uZDxUQmlvPjtcclxuLy9cclxuLy8gICBpc0JpbygpOiBib29sZWFuO1xyXG4vLyAgIGFuZ2xlKCk6IG51bWJlcjtcclxuLy8gICBib25kTGVuZ3RoKCk6IG51bWJlcjtcclxuLy9cclxuLy8gICByZXZlcnNlKCk6IHZvaWQ7XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJHcm91cDxUQmlvID0gYW55PiBleHRlbmRzIElDYXN0PElSR3JvdXA8VEJpbz4+IHtcclxuICBjb2xvcjogc3RyaW5nO1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgcG9zaXRpb246IFBvaW50O1xyXG4gIG1vbHM6IE1vbDxUQmlvPltdO1xyXG4gIHRleHQ6IHN0cmluZztcclxuXHJcbiAgbmV3KCk6IElSR3JvdXA8VEJpbz47XHJcblxyXG4gIHJlYWRIdG1sKHQ6IEhUTUxFbGVtZW50LCB2OiBhbnkpOiBhbnk7XHJcbiAgaHRtbChzY2FsZTogbnVtYmVyKTogc3RyaW5nO1xyXG4gIGNsb25lKHNlbGVjdGVkT25seTogYm9vbGVhbik6IElSR3JvdXA8VEJpbz47XHJcblxyXG4gIFtwOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNydUdlblR5cGUgPSAnU1JVJyB8ICdHRU4nIHwgJ01VTCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTR3JvdXAge1xyXG4gIGZpZWxkdHlwZXM6IGFueVtdO1xyXG4gIHN0eXM6IFNydUdlblR5cGVbXTtcclxuXHJcbiAgZ2V0RGlzcGxheVR5cGVzKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJU3VwZXJBdG9tczxUQmlvPiB7XHJcbiAgYWRkVG9Nb2wobTogTW9sPFRCaW8+LCBhOiBBdG9tPFRCaW8+LCBzdXBlcmF0b206IE1vbDxUQmlvPik6IHZvaWQ7XHJcbiAgZ2V0KG5hbWU6IHN0cmluZyk6IGFueSB8IG51bGw7XHJcbiAgZ3Vlc3NPbmUobmFtZTogc3RyaW5nKTogYW55IHwgbnVsbDtcclxuXHJcbiAgY29sbGFwc2VSZXBlYXQobTogTW9sPFRCaW8+LCBicjogQnJhY2tldDxUQmlvPik6IHZvaWQ7XHJcbiAgZXhwYW5kUmVwZWF0KG06IE1vbDxUQmlvPiwgYnI6IEJyYWNrZXQ8VEJpbz4pOiB2b2lkO1xyXG5cclxuICBfZ2V0Rmlyc3RBdHRhY2hBdG9tKG06IGFueSk6IGFueTtcclxuICBfYWxpZ25Nb2woZGVzdDogTW9sPFRCaW8+LCBhOiBBdG9tPFRCaW8+LCBzcmM6IE1vbDxUQmlvPiwgYTA6IEF0b208VEJpbz4sIGxlbj86IG51bWJlcik6IGJvb2xlYW47XHJcblxyXG4gIGdldEFBKG5hbWU6IHN0cmluZyk6IE1vbDxUQmlvPjtcclxuICBnZXRSTkEobmFtZTogc3RyaW5nKTogTW9sPFRCaW8+O1xyXG4gIGdldEROQShuYW1lOiBzdHJpbmcpOiBNb2w8VEJpbz47XHJcbiAgW3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJU3BlZWR1cCB7XHJcbiAgZm9udHNpemU6IG51bWJlcixcclxuICBnYXA6IG51bWJlcixcclxuICBkaXNhYmxldW5kbzogYm9vbGVhbjtcclxuICBtaW5ib25kbGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElDb250ZXh0TWVudSA9IGFueTtcclxuXHJcbmV4cG9ydCB0eXBlIElEaWFsb2cgPSBhbnk7XHJcblxyXG5leHBvcnQgdHlwZSBKU0RyYXcyTW9kdWxlVHlwZTxUQmlvPiA9IHtcclxuICBwYXNzd29yZDogYW55O1xyXG5cclxuICBkZWZhdWx0b3B0aW9uczogUGFydGlhbDxJRWRpdG9yT3B0aW9ucz47XHJcbiAgdmVyc2lvbjogc3RyaW5nO1xyXG5cclxuICBfX3RvdWNobW9sYXBwOiBib29sZWFuO1xyXG4gIF9fY3VycmVudGFjdGl2ZWQ6IGFueTtcclxuXHJcblxyXG4gIHNwZWVkdXA6IElTcGVlZHVwO1xyXG5cclxuICBBTElHTjogdHlwZW9mIEFsaWduVHlwZXM7XHJcbiAgQU5USUJPRFk6IHR5cGVvZiBBbnRpYm9keVR5cGVzO1xyXG4gIEJJTzogdHlwZW9mIEJpb1R5cGVzO1xyXG4gIEJPTkRUWVBFUzogdHlwZW9mIEJvbmRUeXBlcztcclxuICBSWE5DRU5URVI6IHR5cGVvZiBSeG5DZW50ZXJUeXBlcztcclxuICBNT0xFQ1VMRVRZUEVTOiB0eXBlb2YgTW9sZWN1bGVUeXBlcztcclxuICBURVhUS0VZV09SRFM6IHR5cGVvZiBUZXh0S2V5d29yZHM7XHJcblxyXG4gIEF0b206IHR5cGVvZiBBdG9tPFRCaW8+O1xyXG4gIEJvbmQ6IHR5cGVvZiBCb25kPFRCaW8+O1xyXG4gIEJvbmRCOiB0eXBlb2YgQm9uZEI8VEJpbz47IC8vIFRPRE86IEhpZGVcclxuICBCcmFja2V0OiB0eXBlb2YgQnJhY2tldDxUQmlvPjtcclxuICBEcmF3ZXI6IGFueTtcclxuXHJcbiAgRWRpdG9yOiB0eXBlb2YgRWRpdG9yO1xyXG4gIE1vbEhhbmRsZXI6IElNb2xIYW5kbGVyPFRCaW8+O1xyXG5cclxuICBGb3JtdWxhdGlvbjogYW55O1xyXG4gIEdyb3VwOiBhbnk7XHJcbiAgTW9sOiB0eXBlb2YgTW9sO1xyXG4gIFBvaW50OiB0eXBlb2YgUG9pbnQ7XHJcbiAgUmVjdDogdHlwZW9mIFJlY3Q7XHJcbiAgUGxhdGU6IGFueTtcclxuICBQbGF0ZXM6IGFueTtcclxuICBQbHVzOiB0eXBlb2YgUGx1cztcclxuICBTaGFwZTogYW55O1xyXG4gIFRleHQ6IGFueTtcclxuICBTZXF1ZW5jZUVkaXRvcjogYW55O1xyXG4gIExhc3NvOiBhbnk7XHJcbiAgU2tpbjogYW55O1xyXG4gIFNlY3VyaXR5OiBhbnk7XHJcblxyXG4gIEFzc2F5Q3VydmU6IGFueTtcclxuICBTcGVjdHJ1bTogYW55O1xyXG4gIFN0YWNrOiBJU3RhY2s7XHJcbiAgUFQ6IGFueTtcclxuICBUTEM6IGFueTtcclxuICBCYXNlNjQ6IGFueTtcclxuICBKU0RyYXdJTzogYW55O1xyXG4gIFN5bWJvbDogYW55O1xyXG4gIFRhYmxlOiBhbnk7XHJcblxyXG4gIFJHcm91cDogSVJHcm91cDxUQmlvPjtcclxuICBTR3JvdXA6IElTR3JvdXA7XHJcbiAgU3VwZXJBdG9tczogSVN1cGVyQXRvbXM8VEJpbz47XHJcblxyXG4gIEJBOiBhbnk7XHJcbiAgSURHZW5lcmF0b3I6IGFueTtcclxuICBDaGVtRHJhdzogYW55O1xyXG4gIENoZW1kcmF3UG9wdXA6IGFueTtcclxuICBGb3JtdWxhUGFyc2VyOiBhbnk7XHJcbiAgRnVsbHNjcmVlbjogYW55O1xyXG4gIEN1c3RvbVRlbXBsYXRlczogYW55O1xyXG4gIFRMQ1RlbXBsYXRlczogYW55O1xyXG4gIExhbmd1YWdlOiBhbnk7XHJcbiAgU2VxdWVuY2VCdWlsZGVyOiBhbnk7XHJcbiAgSW5rOiBhbnk7XHJcblxyXG4gIEFycm93OiBhbnk7XHJcbiAgQ3VydmU6IGFueTtcclxuICBDb250ZXh0TWVudTogSUNvbnRleHRNZW51O1xyXG4gIERpYWxvZzogSURpYWxvZztcclxuICBNZW51OiBhbnk7XHJcbiAgVG9vbGJhcjogYW55O1xyXG5cclxuICBuZWVkUHJvKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEpTRHJhdzJXaW5kb3cgPSB7XHJcbiAgbmF2aWdhdG9yOiB7XHJcbiAgICBtc1BvaW50ZXJFbmFibGVkOiBib29sZWFuLFxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSlNEcmF3MkRvY3VtZW50ID0ge1xyXG4gIGJvZHk6IHsgc3R5bGU6IHsgbXNDb250ZW50Wm9vbWluZzogc3RyaW5nIH0gfVxyXG59XHJcbiIsImltcG9ydCB0eXBlIHtNb2x9IGZyb20gJy4uL01vbCc7XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdE1vbEhhbmRsZXJPcHRpb25zID0gbmV3IGNsYXNzIHtcclxuICBzaG93aW1wbGljaXRoeWRyb2dlbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgTW9sSGFuZGxlck9wdGlvbnMgPSB0eXBlb2YgZGVmYXVsdE1vbEhhbmRsZXJPcHRpb25zO1xyXG5cclxuLyoqIE1vbGVjdWxhciBoYW5kbGVyIGZvciBwYXJzZXIgcGx1Z2luLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElNb2xIYW5kbGVyPFRCaW8+IHtcclxuICBib25kbGVuZ3RoOiBudW1iZXI7XHJcbiAgbTogTW9sPFRCaW8+O1xyXG5cclxuICBuZXcoKTogSU1vbEhhbmRsZXI8VEJpbz47XHJcbn1cclxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgdHlwZSB7RG9qb1R5cGUsIERvam9XaW5kb3d9IGZyb20gJy4vdHlwZXMvZG9qbyc7XHJcbmltcG9ydCB0eXBlIHtKU0RyYXcyV2luZG93fSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHtlcnJJbmZvLCB0aW1lb3V0fSBmcm9tICcuL2RnLXV0aWxzL2luZGV4JztcclxuXHJcbmRlY2xhcmUgY29uc3Qgd2luZG93OiBXaW5kb3cgJiBEb2pvV2luZG93ICYgSlNEcmF3MldpbmRvdztcclxuZGVjbGFyZSBjb25zdCBkb2pvOiBEb2pvVHlwZTtcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0SnNEcmF3TGl0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICBjb25zdCBsb2dQcmVmaXg6IHN0cmluZyA9ICdKU0RyYXdMaXRlOiBfcGFja2FnZS5pbml0SnNEcmF3TGl0ZSgpJztcclxuICBjb25zb2xlLmRlYnVnKGAke2xvZ1ByZWZpeH0sIHN0YXJ0YCk7XHJcbiAgd2luZG93LmpzRHJhdzIkID0gd2luZG93LmpzRHJhdzIkIHx8IHt9O1xyXG4gIGlmICghd2luZG93LmpzRHJhdzIkLmluaXRQcm9taXNlKSB7XHJcbiAgICB3aW5kb3cuanNEcmF3MiQuaW5pdFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGAke2xvZ1ByZWZpeH0sIElOYCk7XHJcblxyXG4gICAgICAvLyBjb25zb2xlLmRlYnVnKGAke2xvZ1ByZWZpeH0sIGRvam8ucmVhZHkoKSwgYmVmb3JlYCk7XHJcbiAgICAgIC8vIGF3YWl0IHRpbWVvdXQ8dm9pZD4obmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyAgIHRyeSB7XHJcbiAgICAgIC8vICAgICBpZiAod2luZG93LmRvam8uY29uZmlnLmFmdGVyT25Mb2FkKSB7XHJcbiAgICAgIC8vICAgICAgIGNvbnNvbGUuZGVidWcoYCR7bG9nUHJlZml4fSwgZG9qby5jb25maWcuYWZ0ZXJPbkxvYWQgYWxyZWFkeWApO1xyXG4gICAgICAvLyAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vICAgICBkb2pvLnJlcXVpcmUoJ2Rvam8vcmVhZHknKSgoKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnNvbGUuZGVidWcoYCR7bG9nUHJlZml4fSwgZG9qby5yZWFkeSgpLCBjYWxsYmFja2ApO1xyXG4gICAgICAvLyAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICAvLyAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9KSwgMjAwMDAsICdkb2pvLnJlYWR5KCkgY2FsbGJhY2sgdGltZW91dCAyMDAwMCBtcycpO1xyXG5cclxuICAgICAgY29uc29sZS5kZWJ1ZyhgJHtsb2dQcmVmaXh9LCBsb2FkTW9kdWxlcygpLCBiZWZvcmVgKTtcclxuICAgICAgYXdhaXQgbG9hZE1vZHVsZXMoKTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhgJHtsb2dQcmVmaXh9LCBsb2FkTW9kdWxlcygpLCBhZnRlcmApO1xyXG5cclxuICAgICAgY29uc29sZS5kZWJ1ZyhgJHtsb2dQcmVmaXh9LCBPVVRgKTtcclxuICAgIH0pKCk7XHJcbiAgfVxyXG5cclxuICBjb25zb2xlLmRlYnVnKGAke2xvZ1ByZWZpeH0sIGVuZGApO1xyXG4gIHJldHVybiB3aW5kb3cuanNEcmF3MiQuaW5pdFByb21pc2U7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gIC8vIEJhc2VkIG9uIF9tZXJnZS5saXRlLmJhdFxyXG4gIHJlcXVpcmUoJy4vQ29yZS5qcycpOyAvLyBkZWZpbmVzIHdpbmRvdy5zY2lsbGlnZW5jZSAoc2NpbClcclxuICByZXF1aXJlKCcuL1V0aWxzLmpzJyk7XHJcbiAgcmVxdWlyZSgnLi9KU0RyYXcuQ29yZS5qcycpO1xyXG4gIHJlcXVpcmUoJy4vSlNEcmF3LkxpdGUuanMnKTtcclxuICByZXF1aXJlKCcuL1BULkxpdGUuanMnKTtcclxuXHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4vQXRvbScpO1xyXG4gIHJlcXVpcmUoJy4vQkEuanMnKTtcclxuICByZXF1aXJlKCcuL0Jhc2U2NC5qcycpO1xyXG4gIGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovICcuL0JvbmQnKTtcclxuICByZXF1aXJlKCcuL0pTRHJhd0lPLmpzJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4vTW9sJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4vUG9pbnQnKTtcclxuICBhd2FpdCBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyAnLi9SZWN0Jyk7XHJcbiAgcmVxdWlyZSgnLi9TdGFjay5qcycpO1xyXG4gIHJlcXVpcmUoJy4vU3VwZXJBdG9tcy5qcycpO1xyXG4gIHJlcXVpcmUoJy4vRm9ybXVsYVBhcnNlci5qcycpO1xyXG4gIHJlcXVpcmUoJy4vVG9vbGJhci5qcycpO1xyXG4gIHJlcXVpcmUoJy4vTGFzc28uanMnKTtcclxuICByZXF1aXJlKCcuL0RyYXdlci5qcycpO1xyXG4gIHJlcXVpcmUoJy4vTGFuZ3VhZ2UuanMnKTtcclxuICByZXF1aXJlKCcuL0lER2VuZXJhdG9yLmpzJyk7XHJcbiAgcmVxdWlyZSgnLi9Ta2luLmpzJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4vSlNEcmF3LkVkaXRvcicpO1xyXG4gIGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovICcuL0pTRHJhdy5Nb2xIYW5kbGVyJyk7XHJcbiAgcmVxdWlyZSgnLi9KU0RyYXcuVGFibGUuanMnKTtcclxuICBhd2FpdCBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyAnLi9CcmFja2V0Jyk7IC8vIEZpbGUgbm90IGZvdW5kXHJcbiAgcmVxdWlyZSgnLi9Hcm91cC5qcycpO1xyXG4gIHJlcXVpcmUoJy4vVGV4dC5qcycpO1xyXG5cclxuICBhd2FpdCBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyAnLi4vZm9ybS9MYW5nJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9NZW51LmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9Db250ZXh0TWVudS5qcycpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vRGlhbG9nLmpzJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL2Zvcm0vRm9ybScpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vQXV0b0NvbXBsZXRlLmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9Qcm9ncmVzcy5qcycpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vVGFibGUuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL1RyZWUuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL0Ryb3Bkb3duSW5wdXQuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL1BvcHVwLmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9VcGxvYWRGaWxlLmpzJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL2Zvcm0vVGFiJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL2Zvcm0vVGFiYmVkRm9ybScpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vRmllbGROdW1iZXIuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL0NoYXJ0LmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9DbGlwYm9hcmQuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL0FjY29yZGlvbi5qcycpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vRG5ELmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9SZXNpemFibGUuanMnKTtcclxuICByZXF1aXJlKCcuLi9mb3JtL0Zhdm9yaXRlLmpzJyk7XHJcbiAgcmVxdWlyZSgnLi4vZm9ybS9Ecm9wZG93bkJ1dHRvbi5qcycpO1xyXG4gIHJlcXVpcmUoJy4uL2Zvcm0vQXBwLkxpdGUuanMnKTtcclxuXHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL3BhZ2UvUGFnZScpO1xyXG4gIGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovICcuLi9wYWdlL1BhZ2UuQ3VzdG9tJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL3BhZ2UvUGFnZS5FeHBsb3JlcicpO1xyXG4gIGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovICcuLi9wYWdlL1BhZ2UuRXhwbG9yZXJGb3JtJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL3BhZ2UvUGFnZS5Gb3JtJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL3BhZ2UvUGFnZS5UYWInKTtcclxuICBhd2FpdCBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyAnLi4vcGFnZS9QYWdlLlRhYmxlJyk7XHJcbiAgYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gJy4uL3BhZ2UvUGFnZS5UcmVlJyk7XHJcblxyXG4gIHJlcXVpcmUoJy4uL1NjaWxsaWdlbmNlLkpTRHJhdzIuUmVzb3VyY2VzLmpzJyk7XHJcbn1cclxuXHJcbi8vIC8vbmFtZTogZW5zdXJlTG9hZEpzRHJhd0xpdGVcclxuLy8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUxvYWRKc0RyYXdMaXRlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4vLyAgIF9wYWNrYWdlLmxvZ2dlci5kZWJ1ZyhgUGFja2FnZSAnJHtfcGFja2FnZS5mcmllbmRseU5hbWV9JyBlbnN1cmUgbG9hZC5gKTtcclxuLy8gfVxyXG5cclxud2luZG93LmpzRHJhdzIkID0gd2luZG93LmpzRHJhdzIkIHx8IHt9O1xyXG53aW5kb3cuanNEcmF3MiQuaW5pdFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xyXG4gIGF3YWl0IGluaXRKc0RyYXdMaXRlKCk7XHJcbn0pKCk7XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/HELM/source/vendor/js-draw-lite.production.js b/HELM/source/vendor/js-draw-lite.production.js deleted file mode 100644 index 97db473..0000000 --- a/HELM/source/vendor/js-draw-lite.production.js +++ /dev/null @@ -1,2 +0,0 @@ -var jsdrawlite;(()=>{var __webpack_modules__={1721:()=>{scil.Utils.imgSrc=function(A,g){var C=null;null!=A&&(A=A.toLowerCase());var I=JSDraw2.Resources[A];if(null!=I){var t=A.lastIndexOf(".");C="data:image/"+A.substr(t+1)+";base64,"+I}else C=scil.Utils._imgBase()+A;return g&&(C="url("+C+")"),C},scil.App.imgSmall=function(A,g){null!=A&&(A=A.toLowerCase());var C=JSDraw2.Resources["small/"+A];if(null!=C){var I=A.lastIndexOf("."),t=A.substr(I+1);s="data:image/"+t+";base64,"+C}else s="small/"+A,g&&(s="url("+s+")");return s},JSDraw2.Resources={"":"","small/adc.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznFUN5AFT8I9CI0YeTQ5BygTRD9AD0sWHMkmAIgNoBGiADUYBuqhNEj+ALQMGEKRwkKEmgVI+dyR7gU1QIABABwOZ1KEUe+OAAAAAElFTkSuQmCC","small/add.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTE6MjA6NTgtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDExOjIwOjU4LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjM1MGJhOTFlLTQ1ZjktNDgxOC04MGMyLTA4ZDhmYjY5M2JlMDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MzUwYmE5MWUtNDVmOS00ODE4LTgwYzItMDhkOGZiNjkzYmUwPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+gqQvdwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABI0lEQVR42qyVzW3DMAyFPzUeICPklLPvBQJ5hG7QTpBmA21Sd4J0AxtdoL6012iDaAP2IgGMrLo2YgI0aFB64M8jZUSENaUCMMZMndkCdbR91KKISPyUQV6BCyCZXgAXz4wAjYjkEdbAGdgBOOd+ksN7v2/btoq/AXgC+qkIa+CqIxIRknZddyhEbDXgQxb1WymVf+Ss72jAZ1X8JZLqPQI83sGW422ro+mc+9Y1m6PW2lTLWtfQrsDpbZ7yepOSuOS93/d9f9AHrLWfyQ4hbIZheNT+EAKKlzc1/CpwbA4PJXJ3xMP3OzL9KNGmnRr8CQnAqQSYZjMsBHzRd6rMOQCNXg5N00ihAcXlkDcl55T7Y31dl66vXHYp2jkL1qz9BPwOAEtJyFBGN+mjAAAAAElFTkSuQmCC","small/addannotation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAStJREFUeNpiYBhxgBFEaGpp/qeGYdevXQebBzaQUgBzFAvM9ISEBKp4GWag46nTp6hq4H5qxQncy9euXsOqoqOjg+HGjRsMpmamDNJS0gzOzs4MvLy8GOq0tLUYiApDUFBIS0szmALh3n17Gdo72hk0NTQJJhsHPN7IB+KDwCQxAaoWZPN8IF4AxAvRks0BYtPhBaBiQxgHqN4AGu4CZKVDM3MzUDrrR9YMMhSIz1dWVaKkQ7gLzUzNcDrv6bOnDE+fPmWAerMQ6JIPUH0gF54HhrECSB7kQmLCEBnAXOkIMhSqbz0QHwBiB6CYILl5+QEQN0ItKATiDUD8HogNycrLU6ZOAYcZEM+H6p9PUhhiLVluXGf4/PkzOAUAsQEslqmRlw2g3qYNAAgwADHcAPBQR2cRAAAAAElFTkSuQmCC","small/addbybarcode.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBgFlAJGTS3NBCAdTyXzFrIACQUg3gjEFyg0DOQoBRYoB2TYfiA+AMQHgbgeiBuB2B5NkwMQO0Llwfzr166DfLkfqo+BhUyXGMA4QMMCkCVJMVABSidkZ2eDGadPnWY4dfrUeiRffmQi0jABJAMZsrOywdjUzBRZTQGIINZAA2K9wUKk6xgqKioYNDU0USQC/AMYzEzNwOz2jnaGGzdu6LMQ6zqQYaamKF5kkJaWBmMQ4OPlA1tOjIEfQAqv37gOF4AZ/PTpU4Znz56B2Z8+fyLay6DYc+jo6IALXLt6DUxv2LiBYerUqShqiY2UD0Sq+8iCFE6OSBIH0GhQkumHRdDUaVPh6RDdUnIKBwOYwVDwAIrBhQMjOaUA0BEOMMOAefkBTctDgAADAO98Twss7PUHAAAAAElFTkSuQmCC","small/addbyemail.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZdJREFUeNq0lLFuwkAMht0oaxE7CyN0CkNYC0/A5Q1gLUPFE6BOdEMdMpc3oG8ArGSAqTCy0JlH6P+fHHQFQoLaWjJ3Mb4v9tmOyB/LHX/qD/UAS/kXnMPmc7PmxlfDGNqC0ni4EcZzc2jbBYrCKBHelgtFVszo3TlnxXP2A/1zpleQB5tBq2lkl4CCyHoafiYU9qrC1vBvnGbjnR6Aw0CjPYPq80phvUsv9C4Z4TxR6AqQrgNjZC9ZsNOinEEB2WE7xfqI1RDG9sLzzHFdFAIqdI7DvPQp9A06JNAYI5VKRZJlIstkybY5MAP2opfXHtqwDehz2vyRiaT/1JewGaZuZc2k7BVs3m6BSWL1jV8Q2GGajIxSq9XsajpGmmHT7kevI9lutx0XOEbIWRMS8M7CMPxhpI1KKd2XbOq+MyXXUhqiAK1Y4mNktiiJLYq17b/2XHa+c/HXRq3KaqaHmSaBfI7j2HVdFCqKNvo6x43TM/Fv+Ey1dVICFoB3pmmKzn90/MDeIkifE8PJCTTqBSL7kP+SbwEGAFABlnh5iPjhAAAAAElFTkSuQmCC","small/addchain.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNrMVD1SwkAU3jC2zNDTQElssAh1PIHhBMFWCuUEwAmQIrYmJ0BPADcgldiJBbbmBvi9+G1mXYxOmHHGnfnmzdufb9/73ttV6r8P59iDHbczgAmBLTDfPG1Sma8dSXYPcw0kwCuwxFxX1k6OJJPD54gq45zYBdB2KhA1JBK6BZmxvsecUyXlmSYDWhaZD5NV1VCK0AcCYA2SG4NM0h1VqjIOvsPEgBCljFTIRdNLpBv/WhSdClsiJZmkNgfGjLogK42QLbCg2yBJoVsQBKrZbKooisRdiRS6SLUSsiWbtQ37YBehH/TV8GqoXd+o/ldCg2wEslv23IDaqZ7Xy1Gv15Xld7E3OIhMhOeT0v6epHmflY0wDGXfxC6KiDzVAkshsOmMNieN7qJPDS+oIf3d2+7wc8ChNVNdlTy1jHqpJE6U53nKPXXNrfnlZoRb/h4r46nN9LtlYdZ59M8bu5ax/m0c662+kDChBMr6BHzjEqV7EuuTb/uQpGMeeJRK//BRtHRUfzo+BBgA+YW5Ud+XhtQAAAAASUVORK5CYII=","small/addcodingregion.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWRJREFUeNrsVDFWg0AQ3eRxAHoaSoKFUJA2eAKXE0BOoHaUOYIW2BpOED2B5ASmEkubWPMeB4h/4ixvjRH2PbVz3ps3w+zfP7MzuwjxLz+VkXIm/uQOpqyf6wq+C3/FSw+ILRiTwbja96Paj9gZ2TEvECDQEl1A5wCFsDOs21AJP9UKkJyMiNb8/UEIuaZFjTAAcMP+mpNVjJlxAZS0YUylCrK43AagvtYQmFriSimF4zgxBYuiiLGPiEsFtL4h2ACoqjyFSrWQyEREUSSYUCUjnfcR3tBQuOrAcMDU3+WoD8GNXk2jaRfL81x4nrf3syzr4vVLLdq2DcUA4QK6M5E0TXfAXo5/+V7blgmquC06X57vp/wlvn3bkmmGekgDedJj5bLspuyf+Idbwt4j87WpDI9bEd7kyFdQerO2muYRoReTfPo5DBzd5ZcSH6uMyOi1GRMe9DTmaongHkSvf/o/fBdgAP7jmdHCBQ/sAAAAAElFTkSuQmCC","small/addcomment.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNpiYBjsgBGXhKaWpgKQygdiByA2gAp/AOIDQLzx+rXrC4g2EGhYA5CqJ+AYkMGBQIM/IAsyYTFsPrphCxcsZLh29RpDdnY2sjDI5fuB6gVwGgiUBClKICHIQEHRjyzAgqYgH8bg5eVl0NTQhLNBQFpKmsHM1AzMvn7jOsPnz58ZoA5IxBqGQBe+B1JgL4A0LliwAKfTEhISGE6dPgXjOgLD8gC2MBSgNNmgG3gBxgDZrqWtBcanT58Gi02dNhUuhuQ6FH3oBm4kw1EHkJMOM7KMqKgoyKYMIOZA13Xj5g2G06dOMzx99hRdKvDN6zcvcCZsYMSAksJ+IsIT5KpEoOs2IAsyo6sC2QZ0qQZSdkMHD4B4AdSwE+iSLDg0XUTjF0ID/gHQkAf4nM2CJ5/CQCKugoAkAAzL/0CcQLVyDVp8DUMAEGAAqgdmjgBYz3EAAAAASUVORK5CYII=","small/addfile.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOhJREFUeNpiZIACTS3NBgbywYLr164/ADGYkATryTQsHogVYBwWZBmgLSS7Eugze2Q+C5rkfix6GoEWHSDWAhY0vgMWNQpAiwyBhn4gxkBGoGKQ/xMIhOEGIL6IJwxBPngIihyQgSBX7WegDnBkIUaVmakZmH767CnD06dP8aplIiqRLVgAxgEBAQTVMjFQGbAQ8iYykJaSJuh9nJFy7eo1vC6ZOm0qw9SpUzEihX5eTkhIQIkUcGLcsAGMYV4mycBTp09hiIEMwSY+MLGMzfu4vEmygYS8iW4gqKRtpJKPH1A7CBkAAgwAekhN2H1dYu8AAAAASUVORK5CYII=","small/addfiletolink.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNrUU9ttwkAQdBAFkArgF35yqSB0QFIBSgXGFUA6SCqIUwFQgZ0KYn7wZ1yC00FmpDm0upwUB/ggK43usbdzc7t7SXLpduUn48l4gGEROfNc7+u2K2HPzEl2F/i5fv2TQihzGO+BOZBBzSZQ/QnkwNcvXBVjeyKjkjdLRtNTHzuQDYHUq1gRpxQC8VOgCHN4FusHN7Ewg+BMjqc3yucScMbXAC9RQgSsMYyArfHfAAV8txjpZ06fjH9KP/AQU8jiXPue8znRJYWUlVLJbqi4xrmZiH/0Yatgb1RaaV7K3+qJjS51imliCjPgA4dKs+eUwwz7OzU5CVKsR5pnUUIE5SKzKls9zfs3pigHH9smWmVW094WmvJbdv3LZ+3DoZV9hDlLWOkvL08U9578C/sWYAAOEG0vSWG3+QAAAABJRU5ErkJggg==","small/addfolder.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhxgBGZo6mluR+Lmsbr164fINlAoGEJQGo+FjUPgNgQaOgHogwEGqQApEGG+QOxAQ51G4D4IhHmLQAZ6ABk7KdSEDqyEKPKzNQMTD999pTh6dOneNUyEWPgggULwDggIICgWiZqJxsWQt5EBtJS0gS9jzNSrl29htclU6dNZZg6dSpGpNDPywkJCSiRAk6MGzaAMczLJBl46vQpDDGQIdjEByaWsXkflzdJNpCQN9ENBJUmjVTy8QOqF7AAAQYAhIpDjfvz/ZMAAAAASUVORK5CYII=","small/addnote.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBjsgBHG0NTS/E+JQdevXWdEEaDEQGS9TNT2MtUNZMHifAcg5UCk/gPAsDtAUxdSPVJYyNCsAKQMgFgB6uULeMOQgGENQKo+ICCAQVpammHq1KkgMfLCEKgxAGQYiB0YEMiQnZUNk3Ig14X9ZqZmYAYvLy+YhvGv37gOthDo/Q1ERwpIHheIj4//Dw0O0sJw6rSpYDrAHxqGUP7TZ0/J8vIBYCQ4wLwKixQksAHDQJizcYAP8JIFGGZYSpsL6MVXA5Eu9YemQ5glC4D4I9DABkpylQAQG9ClxAYIMAD8qWGJiIe3+QAAAABJRU5ErkJggg==","small/addtoplate.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNrsVLFSwkAQPdDCRqRhhhma2BErLJJW+QLCF6A1lR2dWGEnFtGS8AVCaQW2UkgjiR0WSQ34Afg2s8dsGAtGsHNnXvbucvf23e7dKfVv21qKPuaJ2dwRn5fmxvUOyGqAsS8GjoALoAoMgFP2N8AZz3nh4GXgTcy5B6Y0QRL22dMPj30PGIs5NJYFOmJnM2Cog+7RJ5fLNVnJhz/xA/Tn7D8xFjBRHngEDur1et62bRQgVQyjkAIYHOhZF2XJahzgkhXQ1p/Els+1zMn7JPbug6tc15V5LKdF54pzQ8RVKOwxeZujb2KJotCiEuesBNVDMVZqNBrKLJqJ1U7FUbZlx+3WbUsFQVCRhA4nebzmZ3FaQGZZVoKwUCjEIMscZmJRK0JssQlVHvwU/pj9mBM+8AN/RaSJwzBUURTF7cXXInFTllyEGueyw/m7A7rcz25QlHb6hxzKY2AwvA2L0pc5NFiNI3yfiedyFSkjG72Otn4c9PXMrt2ern4cUr95BSBAH/IpFe9P38NvAQYAUFGBBkc6AEAAAAAASUVORK5CYII=","small/admintools.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzA4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNkY4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBDNUIzQ0NCODRDQTExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBDNUIzQ0NDODRDQTExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ysxYlwAAAfFJREFUeNqs1F9IU1EcwPF7N6m1FENY3bdGxMRtDz4M9iSYsLcIioKEIDA2wR4CIaFBUqE9hJpwexH789rfl6Eg0osvaWypiA8D3wp6EWxa7N6Jbn0P/tQpOnetAx8O97D72/n9zj0/vVQqaf9z6IlEovz5AgYwhxf4VenlQqGgJZNJLRAI7Ab0+/1qvoExnMRnzOI8bmH5sID5fF5LpVJaNBrdWavxer13mPtQj5cYgYEv6Eei0i5dLtfeZ3ThIa7Dgze4JGmfwxknNazBKaThwytZn8d3VSaUnAacQAfuSS0tqedNtMkfrVYbUKXci9Nyut8k1du4hvt4jatOdvgHd/EAQ7LDVgxKPWdg4qwc2JEBNanVo7L1BozKmnIZ79GEbhQrpXzQWEE7LuItNnEF6/iEWqcBNXlZfdhfMS7fZg+m8AGNTgNuj+dyMB/RgmGp5TvEPB7Pnh+7fT5fNYe3iCUJtibBp4rF4rNcLrcZi8UW3G731l0OBoNOvltDrueMXNc67vNYKBSywuFwJh6Pm04DanKzVCey1U51XX/KLptpg78Nw1ioNuXysYEUInhs23aDaZqdzD+y2Wyz6x966RNMq08qnU7XMZ9Q/XO7Hx53tJDyoGVZtbSxHCn/3N+xHY8II5PJROjeNrEm/wowAPpcj7DNWN/gAAAAAElFTkSuQmCC","small/advancedsearch.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzQ4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNzM4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M2ZmMWNmLTE3N2MtNDViMy04ZWNjLWRlYTYwNTVjNTQ5YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MEUwRUJGMTc0NEYxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Phbys3gAAAM2SURBVHjarJRdSJNRGMfPXre5cJupZEWmpWTSTJxNXHixoryQIRHdGmirsSQqISLWRNmFGNoohaBcF3mTLCKZLjIiDIu01BIxZG00G4IkWzWduM1t/Y+dZHMLITrwg/ec85znfb550WiU/M/FT3bocDj29vT0VM3Nzcn5fH4YRxz4CJ4D1x+5QCBA9Ho9KSwsXH/Li7UwFAqRpqYm3cDAwImFhQV6lC0SiYQpKSlU7jv2QfAQmOnl8vIysVqtpKKiItHClZUV0tjY2NDX13dcIpHMq1SqL1qt9kV3d3dofHw8FasKYkpwBgjBHfqO47jkLg8ODpZAmSYzM9MH5btzcnIeyWSydxkZGatYBApfQ+wouAZqwXtG3FpzeXh4WKDT6R5HIpEauufxeCEoFWRlZU1BUb3X6x2PseQ0uAJeweWLFouFlJeXryvkIExMJpMBlzU0hmVlZU/lcnkb4kaWlpYOejweC5RtjzHCBubBHrB1o4XcyMjIgZmZmXNUgc/nI2KxOAh+0m/qKs7zIVcX88YLvtKEMeJjiAcyuLkTmWpDRj/DOgfOv4XD4R9wexsS0goZFc5usDepzLJFRkJSVkEEHAYy8BLYwQmWzbUiiHmjAPvAGHM9XiEsGYNrjtHRURV1E9bQH/D6+/trpFIpzS6VszJ5CWgAAvAWJLQZp1Qq3Wq1upXWIbJKpqens0Ex/WbKnoEn4Ai4C2iCnEANdgkEgngLUXeko6PjAdpIhKrX+/3+SpxXCoVCqvATi9NtFg6OuXoBVIP7brf7VGlpqT+h9WjJIAHZcLXY5XLloYyqsRempaXlomw8tMVZhnPB2d+tHNDl5+cfs9lstbA0kNDLsSsYDJKJiYm89vZ26eTkpA/WzrKryywx9bQBUGItRUVFO9CiOuo+97cxRF1GfGfT09OnkLjZmKtbwA1u0rh3dXW1YCJFNRqNke65zeYb2jHZ8XUgRnXoMUiI2Wy+ZLfb9zc3N9dy/zhH6V/Ow7JDnZ2dGoQtaDAYrjqdzpP8zV7SIUrnXrIrxLCut7fXAoVbEJaSgoKCN5sqVCgUa/XIanLjWsS9dmho6B7G3Qej0Wj6JcAAvIJmB12Vo0EAAAAASUVORK5CYII=","small/allused.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzUwM0ZCQ0U4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzUwM0ZCQ0Q4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0NTM4RjJEODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM0NTM4RjJFODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VggtCgAAAtVJREFUeNqslE1o0mEcxx+d5mbY2IsbLCi9yHCtlE3YQcJ2CYlyw7LVqLl0h5UYqxgUBYGES+Y2mgRhRofYxKJGB6ncHKN26LKOimJbOwgJjjnDTadb38c8rKnlYA984Pk/z/P/Ps/vlbG9vU32czDJPg/W/w74/X6yurpKysrKCm1XbmxsHGtra5tns9l/VqjJO/H5fI1dXV0fwOPFxUVGT08PqaurIwKBIA+hUGiXSCRhvV7/IJVKZf/PMzkWiwm9Xi8HNMTj8Qoul0uKcITJZJ7s6+u7iIvFOp3uNl6bbzIObeJwDNM1zNNFPCEFz9Lp9L329vbPcrl8XqVSvTGZTMuFfJihvgGR3Hz3OAWGwV0Wi/WJ+nd6elrNYDBqQqHQ2UKCm6Ahk8n83Nra2i3YAe6D6+BreXk5GRgYuLWysnKmtbX1VX9/v7uQ4HeIJfh8frC6unrnuh5cA2rwI2tKJjPE4/HEZrO5U6FQrBVMG7zqcCKRaIQJPtxMotEoTZk72FLmXigC9CY9glBptVrPNzc3p4omtlgs9hkMhsGmpqbxpaUlGvVhBEeeE4zk/PsFJMAViKb+mdgw4RcYr62tZU1OTj4PBoMH4KsL2DoNOIDOTWCo5NJD9Lgej8cJ0QSq4GoymaSBqgCvwUwxsTxBWmZzc3M1Y2Njb1taWr6Njo4aaRLD+SewfTMXEHvJzSEcDgs0Gs0UkvW9w+F4ROsXYgpsvciZ+a7kboNSO240Gl3d3d1P7Hb7U7rmcrlUCwsLVvjwBj4/ltxtAoHAod7eXsvIyMhDtVrtRuoQ1KhudnZWV19ffwk+DOypH0YikaNVVVVMpVKZFdNqtYNut/vyxMREp1QqDdCi31M/RHvyr6+vL+N1L6kg5gedTmcHIhxHgAgSveDPdJ2ezxMUiUSbeJHBZrOdw2faYrFMoWFmT8pkMkJrlsPh5AnCFQSW/bX2W4ABAMF/N/eC5G8oAAAAAElFTkSuQmCC","small/antibody.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMtJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznGjBg5CA1mIULMAKZ870r2gBggwACiBVWlAdAbpAAAAAElFTkSuQmCC","small/approval.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARlJREFUeNpiYBhxgJlSAzS1NANERUU53rx+84JiA0GGAan1QBwBNPQl0NALjBQYZgCk9gOxAJKwIQuZhoEMmY9m2ILr165fYCLTgf1AbIDEvwA0LBHEYCLDdQVAKgFJ6AMQO8I4jGgKGYA2TSAQbufRhB2Beg6gGAhU6AANYHBYAHEhUNEHLOF2Hy3cCtEdwARUqACNehgAeWc/1DXIYD+WSMDwDRM0DDagiRtADQ2Aug4jEkCuwxYsyGGYAE0K6ABkWQB6JICSCF4DkQId5H0FPBEdCDRsAy5JlGQDtdUQiA/gUD8Bn2FY8zIwP/4A4oXAvAlyvQOS1AGgYZGE0inOhA3U3ADyHjTMHkDZlANQssKShOgHAAIMAPnmYKqiF/NOAAAAAElFTkSuQmCC","small/assay.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNrMlMFNw0AQRRdEAaSDcAynTQV2KoipAKggSgVABZQQUkGcCuxUEHMhV3cQl8Af6a20GBsSHxCWvlae3fn+M/PXzv3352Jo4uR24rVcC9Xh49CE+OVAsmcte6EQNvHeVU+CfTkV5sJaCspob6zlXsiFd2HRScjBTEhYK6EhueSMxVeQPYSSY8K45AXYCiOpmmpdotTIXiGz2BiiHe/fh0KTNyK6aZV/RKlhLTwJb8JLPIzOKZM808Eq+kgBgaPMR+3nfQNrDyWnxNCXjP6lvE9FVv/kgLZttgzB1O0pz/rlUV7/Zqk2oanx2MYTW6I8O8WjXwhpcki+MzI8uMOT7lyFLiTT+FJq06i3gwjj5AJY+TXGPo+QxjckhyHU9DcZojCoTLgtIxT6UwbTR2j2ybDOkYFYbDb4fyiyFSRl1xX7s+dTgAEA2pJ1FjzBnicAAAAASUVORK5CYII=","small/assayviewer.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNrsVL1OAkEQHtDChngNjddgQgFWWByt4j2AxwPIzwNgYosFUojXIQK24BMID0CEmkIqOTsaLMmFewCd2cydE2IiUeycZO5jZ2e/nW93FoB/+62F6JM8SF5tiK8b5h+VDZDl0WPbIrCLXkDPoj+hHzJW0Y84Z8SbZ9CfRU4DfUYJkrDPSBNdxh76RORQTEPvCGUu+tDfNLyS/DB9mfro8s4TJnYFUYrRIplMrMlLeedFlFDkhST9UUg+9nfWdR30PR2W3hIcx5HnmJEVXvDZEHEWK+wx+a2/eyKRgNp1DcwTE/xx866pkC0mCTUhJYVVayKWokWWZUH7vg2GYYCRNiBtpNU4d5ZTc2inkpAidSaosETCTiQSUYts21ZSnVcnkEzx8mVZkcfjcS0gRInU3PuIQ8Yet0XR8zyVQ8REQkhG8fnbPBgvFovPW0aJqkJEurUOY51luzf2DbSaLXUh4/E4IBkMBupcaR4JJ1+docat4CN5l6rJF/KKiM6QKiMzTRNK5yVgFX3ZNtVvntY6zzOzRd9oNBpaI3nETU49srPyIBo8Pwz95F8AFflNPuOX9Xf2IcAAZ3WZ5SSvUo8AAAAASUVORK5CYII=","small/average.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AqgOoGshAZvgJAKgCIP1y/dn0DRS6EGrYfiOOBuB/In0+pl/uB+AHQZY5A2hDkUqChAWQZCE1GIM2JID7Q0A9AqhCI63HpYUTS3ABlXkCSzweFGxAvRNO3HmrJB6hFG/BFCrKBBkAcCPIymhqQASDXLwBiAbyxDLTtAZJ3QfwDWIJiIyiSgHINpIShAxAfwCF3AepCkiIFpOEiNgmgy8gyUB4W6DjAA2yFCXosxyNFgAGUjctQZPlCqKtRImUBnjAjBB7QrFwFCDAAXmlDSKfTkVIAAAAASUVORK5CYII=","small/barcode.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpiYBgFwx8wgghNLc39QMqBQrMOXL923ZEFSSARiBWA+AEUgyw4AKUXQGkFJDZIjQAQX4CK14MMQTYQJggy5CBMARJtj2RJPBK7Edl3TNQOw1EDRw2kMOuBUv5DCsyyB2U9mAsXUmgYzAzqA4AAAwBHOht9muDc5QAAAABJRU5ErkJggg==","small/batchregister.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNqUVD12gkAQXnwcgDo0WmqKSIFt5ATiCZA2FOoJjCdQC9OqJzA3iLakkCqW0pBWbmBmeN/y9hFIcN6bN7uzw7ff/CyaqCHtTtsg0604Ts9f50hutJqACzIuaVxyzBe1CDStBCQADjKwZbsn9VVAAjggdoO9XwpIAU0yF9LDH6Q5ZkUgS8SfSB1OvQzwg0xEh9MC27xW5OuDdZYq7V9p/UxrRyuA5YGkvF6AjZRYYbbHJT6axiynRUBOdU76RDphn+u6YugOs3Nv5MnQLeI43mLmspa6Asa0U7DYSL9pmsK27WJlRqRHgC7oWx++lq7M2Zh0CFtHOM6B5brPiWks2W0kZbJXz/Nuf0kYhjeKuyF+xGuQEg3c1kcKQpm/uvKujFJewylqwYdR8p1012/r7KBn9/IaSl+SJAL1FpiErRwpTWnKlUcC25n0B0EggpcgW3ceOyoz7vQOY2bJ+jUANkF3x0gh/ifNFB2eYS7zeA3FvKDDctBWGJ0uj435YGbO8DOUYA5+CjMCa6k36fiLZI+dwCOA72hvcQepXgNSA0BHpCqQ6rRIXUPKJ4As5btESlUyYIb8dqsAi499j/Fhf6R0VBVfrd2vHyxAmsrHBkph3TOUunpjyW8+vnPIxY8AAwAOC+mvZoH9IwAAAABJRU5ErkJggg==","small/benzene.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrUVEFSwjAUpXgBNt3XJa7wBNITACegPYFwAuQE4gnEE4gnEJeu6Erc0b3MyNad740vTtpJQnXc+GfeZJrkv7z3f9JW648jck12z7pDDL0jueX2ZbusT544yDoYHoFX4CNAOIvj+Hn/ti+DCkF4jSEB7vgNFSvHgRnAcYD1c3u9XdtMmxNgDtwCB586YE1S5GRehVik1Sd9XuD01FNjHjoGpsA9cIq9h4pCNYJWV1KQ+4qH5IUs01EhV1WFINzJKk8ukDQNtRj7+1JHFxupLCMtXtGiCCsWjpByr+lygpyRsTwAHmQhb0KmoIuhcvsV+cC7rsSPg82Uy6+mQNFaxZ39gsw0c1FvCid3prgNyTpqyNw8w7Z1FUrrQjeNSf1NR44TqXIkG2MPEctzI3UpCIvQW85Uy1SkruAtuJSzvMnva2Ml+qLnuq8+wiSg7lulbfX/xKcAAwDtIIJtByesEwAAAABJRU5ErkJggg==","small/biologicalreagent.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNrMVMFxwjAQFIz/UQnmSV5QQUwHUEFCBZlUEKggSQdQAaYC3EH8ip+4BHdAdmfWGYWxJDzw4GaWs9F4tbcnnTE3jgF/xo/jDCnrWK+rn2rTh3CovAMeOtY/sNmkl0R+AJw8awdg7rxnwEtQIUoqkctzUpIhUV3ZbkzFQBotGaRTz/oCaEC2ki2W7yHCJOJIJqI2bKs41hRfFMAIWAJf+o++HqkasEFCmf7PI9jRADmwUrmF8hPJYwrfPefRLdmobG6c6gx3ewgVs4gFtXIqlU2s5JM66os3kVmRT4JdhsJBSB69xIZ8fBZZo9tE8j2vadL38pMUKVfzvqWWz6/senLFYHGbscVGn5ccbBPpOLu94NHyNcV2HBFfsPS1S/Y3D0W2c4ZBa/js/IOLBqx7U2QwB2th7iF+BRgAK2xs2L70ZfQAAAAASUVORK5CYII=","small/biology.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUE5OThFNTg4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUE5OThFNTc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjllZTBlODY0LTc3OTgtNDI5MC1iNjU1LWY3ZGNmZDk0ZWQ0MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRkE0RkU0OTdEQjUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpY5RckAAAKaSURBVHjajNRfaFJRHAfw67xepaZYJFLEIsJogimUW+Xsj5DCiEWjJRRWo/ClWEQPQUVE5l7CgoqgggV7MYWeKvrzUL3YpLBoRheSynqIEmoT0tSZ63vkd+XOmXrgA5577/l5zvn9zlGYzWauSTsH3+Cm7NlyGIQr+Xyei0ajnN1ur73kueZNhFOgASV8hiH4LX2g0WjmDKgPuAgK8If676ALdsEHOAjdUF2WUqnkEomEgKAzJpNplj1TyJYswAMYhWf0Z0/gMVym92zQdfgFx9mgbDY7YrFYOrH0Ua1Wy3XUzW4FfKf+ElgD22ACXlPwVbBFGqTX6/OTk5P9yWSy2pcH/Ak/YAf1j9G+xSBE787AW1gJe9hHhUKhz2azJTHLeXtYhpNwG3phLc3uPaymRDwnj+AqbM/lchv9fn8/W26jpLyA03AHeigYa2paDZvxX7gHxmKxeCsUCvV6PJ6PUoCOBqWyAcZpz5q1sXK5PJFOp7vkpdMooAvCXOtW4Xn+fiwWGyqVSnPq0A0GKotlVMRiGwE5tVr9MpVKHfZ6vQewh2okaJanYl1KBa2lfcpz7bUpQRCM8Xh8WKfTFaxW6zQLuFf2gREeQicVb6tmQJbFYDC41el0cjgt87I8xU4PFfTXVtGQ5XU4aZ98Ph+nUqkaJqVENbavjdkpkeUBh8MRloI1CqigfdwP61sEPIQs92QymW4k478BT8AmOA93wUrP2YgKFTVru+EssnwkEokMBwKBnbVpGwwG6TdLxDUKOkb9S7CYSqkPvrBAcJTO+jiCCqIoDrpcrjCLxbNbV7orSZb6F+ApjMAAvbtIx3MzVI9bpVJh9Vg7Krzb7ZbfNjfokpCfbWYhLIBpmKnL9BvcNq+ke/WfAAMA4BrC0xGyYsUAAAAASUVORK5CYII=","small/calendar.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMDc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMDY4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBiYTljYTJiLWIzMzQtNGJkYy1hYTRmLWNhZTU2Y2I2ZjhiMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMUJERDM3MzdEMTAxMUU2OTQwOEM3RTYwM0IxMTZDRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvxstMkAAAJcSURBVHjarJW9ixNRFMXn48Ww6iYiJKAJ6rIQMIigElIJIhIDmkIwWIid/4ConSCoiKCFiGghFrpqI2IKtRVUMGmDbuFoRAWzRVLoYtxkMjOeu5yBW2gQ14Ff5t157503996TxC4Wi28ty5oFY2Bb/3gNBoOpSqUyZzAWkmSlV8Kx/vPlrCTN31y2Ye2+gpGe4D36y9jyfV+0hvLRBcfBG+By3uXiUAlINoGOIRLU63Url8uFGGfb7fYhEVwSZXAJbOHG02AHOEqBZ+A1OMeDPFmfSCSuNBqNdZJlNps9WygUFg0XTIEDYBMFroLtoMK4z0z2M5aDb4GDYFoeeJ53A4KhmVTgP4x1bA+HQysIAisMl6sTGdZLUp4DG7n4E1O8w40vwHvGIef7ELpdLpdT6XQ66Ha7C4hnDWsmgg2QouACn32j4BfQA/dYokXOPRIzS7NKpVK/0+kYEfQpdBfMUKAK9oFTjO/zwIeM58ER13WftFqtlKSM1Ku1Wu2nUX4aqxpFyiIWx5GKfd5HyWRS77F1U5a40KbAWAmN1bOIX4KQZZE9AXy43BURXAW+g8NgDQU9pvWYAj3WrMx4II2BSBXGNjR2D8beFn/1VoOTrKEIngA7wTFl7FfgIgXfgQsw9nkYe728JYx9Bj4cGb66dGoP2EyBDCiA3arLH1ScYSP38i7GvgzBwEwwsjPhVymec5Sx7djYDutzUxl7nhviFr4EbXCdKX+Wt4bQNRh7Woydz+c/woczIrgW7ALP1cnyl/CD/oubtwE8UG8oe55CNAJhs9ncijpmfgkwAGS26xQUWIDTAAAAAElFTkSuQmCC","small/cancel.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczOUQ4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczOUM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmE1ZjdhMWExLTUyYmEtNDA3Yi1iMDAyLTYxYTBjYzJlMDQ2YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRDYwQ0ZFMzdDNDUxMUU2OEY5RkNCNTdCQzZEQzY0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgUGWlQAAAKrSURBVHjalNRdaFJhGAfwV48rJ61IG7jCwmosBruQ6UWNyCYEWhSsD2zgYBfCJhERfZBBErWRoCBrkjEsCroZJSv6QDGHV8EwcIwuBjJYjBj0tRSczpT+LzyOw0lle+CHeHjPc96v55F1dnayOmEDF1hgBQqggRw8hif5fH5pcnKSmUym9ZcUNRIdAg+9/AF88B1KsAN2wxl4DlNKpXJM/LJMMsOL4IZxmIAKqx8dlUplVKfTCW63e8BsNmf5Q7lowAW4CedpSY2S8ZgXBOFsNpudGxwcjCwuLjbzh0Jrayv/5dMMUrJ5tsEoFossHA5P53I5YzQaPWm1Wt8qaJZ3wC9KthX2wjIdgjT0sFoul5dVKhXzeDzXDAZDMhaLHeHJToCaNrka2+ApfIKDkmRemIEe/gcnzbRa7ZrD4RgPhUIunvAyneZf0Us/YRja4DXsoud8j2/Qob0Sf8Vut7+fnZ3V8ITHIVVjWXNghf3wApzwAB7CXeng9vb230ajcVVBl/ZXnX2foQ9+pK2ZoBX9Fy0tLUytVi/JqQJKDQ5zTXSFyo1OHYeUV1BFbK8zpgsS8Ble0nKLcKXWYNzLNgVdiz019lEHb+AH9MM3+vAIleKIePDCwoIslUppeMIQnKLTrMY+eEe1e5SS8RgFXgn3aasC1W1Ip9NdpVJJkNN965DctwO01F74Ipn5VbITlFgmQyIWCASG+vr6EtXmcAnMcI5tIviljsfjLJPJ9DidzrFkMtlbbQ4hamX3NpMQrYtFIhG9y+V6hBne0uv1f6oJeZU44DDw/ta8kYRY7jGv1ztlsVj8NpstJm1f/LRPwxaYhgFRyUnDyLtToVDw+3y+68Fg8Bmfba2OnYchKvxhamd89l95d6HaVtN7CVzk293d3StNTU3rCf4JMADW29FLcwK/QQAAAABJRU5ErkJggg==","small/cart.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFNzc4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFNzY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmFkMmIzYzM1LTk2MjItNDgyMi1hNmI2LTFjMjhjMWZlMDY0MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMkI1NTM3MDc0MzkxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjQJmmcAAAGoSURBVHjazJS7S8NQFMab2ohNkWhBLEIhBB9dhA4d3Ir6BxjEioODgt3EQUTEpSA4Kbi42jGL7jqJ4FhEHFwcJFjfVaSotSEm8TtwKWlJIIEOXvhx7j1JPu55hbNtO9TOFQ61eUVKpdIIrED7gN9a4ME0zaSu6/3Ym+TkJEl6gr0H36AjgFjcsqwbURQTqVSKfDqwI4IgnGBzDfYA71OQbjNeq9UKmUzmslgsLjdCBvtgnZ3rAUKOgg/cMtpalAsmNBYwh0lQAS9uVT4GMwEFZRAzDENzEzwFw6AngCC924eilt0EX6kFKNE+xTjwS3nM5XJfXo19CKZ9CoqsxaoI+dNL8Bz0ggEfgjE2DHetRXFOR53lcpPZTg8xCnUI0HRUwZuXYJw9nASL1PUsArKGw1pM6BZ08zxveAlSTuaBxPbUn1dsesLMx7GbT4Fn8mualkyn02U3wQpjASTAGth2CXkUDAIFrKqqOqcoyk5DEPPofPkHzLIqvnvkkPxdYAXfTsiyvNsUcjabdZ4L4ABQKyx5CD6CDbCF39ZRPp8/a2rQf//H/hNgAKeXe4sDiF6hAAAAAElFTkSuQmCC","small/categories.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBgIoKml6QDCxKhlItJMBygmCBgJuGw/FoMOXL923ZESFzoCDWAEYRCbWl4mGrAQoaYf6PUPULYAEH+gxMCFQKwAxPZQ/kYgfkCJgfForvKHshdQEoaFoFiFxmwhNcLQABiGcDalBl6AejMfyn8AFRs8ycYAGrMXkPj+lIbhBWCEHIBmRQZqGBiPVNLIU+pl9IR9EIopLg8bQJhaeRlcZDEMFAAIMADBDy2LwOzX7AAAAABJRU5ErkJggg==","small/cellline.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaxJREFUeNqsVDtSwzAQNZADuHHvktDEnCBxR4cpqYATJJwg9glwTmDnBDEllZ2O0hVp0zKkMB10vB3eMrLGGQMTzezos6unt28lOc6B21FfwPBs6KILON1uXjbbPwMS5BY2hfmwiq6JgMKWsBTgTS8gwITNihsX2FRYfgGdk/UV/NVeQIKVsASBKdeEYQRzeUghzLAuGWSw0AQ9tghmZJUaayWBhNWY7B3E5OjuZE6J2oA8sUFgbB1yTh0T2Br+UB0EFXYzXRsYG6fcpDpdUqdHWN5VALaEWcR2yoEUgJo9wN5Z1ZEyEJ9kAouZkbCsJTPq/w1IRjUDRK+QqYQsUGzo2VDPEfZlej9ZtFbKjqFNY9w9s4WseMJLntsBAwJUSrlDQ5fgCdmnHQf5ZN7SsAZQxLGrKTDQ5SZnz0NwqWUr5SUrXfB12C8k4oE/l5uuuRlrMhQ9pIqzDhYrpj9m1Uu5zKy0yHOvsSc62L3tPjzPW8trQf+J+bP6MH9Cdwp7pUlRLviyrjXd/34OAdOc9H4O1vclqd+wIMpAb8Li199XB7hvVLj3gz14+xJgAFXpv7eDizErAAAAAElFTkSuQmCC","small/changelabel.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUVEQTFGMzA4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUVEQTFGMkY4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkMzA1YzAzLTI4N2QtNGVhMy05NTZmLWQ4MTMyNDZlODQ2YSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3OTBDN0NFNzc0NDMxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr593qAAAAMvSURBVHjajJRhSFNRGIbvZrbZaIISBbVcE0qGtAlKorVghLH+aa2tWbqaYZQI0iSISBosQbc2B6WxXxZztEAopUJpTmUhpmPkHw0RQS0JNnVTm4qu98i9sjGXHnh2d8757nvec+73HSoajVIMOp2ums/nR10uVzEzVllZSQmFQkosFidAxoeHh6lYDTZFt42NDSoQCBRXVFQ0dHR06EifNDZ7J2RfbTvabDafUygUL/1+fy5W6Zufny9sbW192N/ffz4YDEpTUlKO7VeQRWxqtdqBiYmJoVAoVBqJRGYLCgomWSzW8c3NTdb09PTfcDhMnK4g/i6IMC+vrq5SOB4K8fEOORzOEpfLPYK/4a2trfzy8nKr0+m8gmBFbm5uGRa5jblJ8B4c2nPLaMtweAYrLoMI4DEBWIA8lsAz4KFFeckED5CftbW1JYlEMmkwGGzY5ppUKh1LEm8GC7SoGoR2FYSL2fT09CKcxcgeZ34QCMF38BZoU1NTFxK2jBSZwkdg7SHGAV3gFGgAbuJ0ZmYmI0FQrVaP+Xy+5fHx8WRiXNANZsAtoAcn8CGt9fX1TrfbfTROMCsr6/fc3NxhnGXCYSMHydhn8BNUgUf0+TWBHzKZbEiv17t6e3sFO4LZ2dkBpVI50tTU9Abb5zBiHo+HPzo6+gVOfOg+AE/BNXARiJBO31B+3S0tLc0QbYdTyXZiM6WHsjPir9jhcCi9Xm8G+h+Q0F/T0tKeIO455mTgEsgH75Be9zo7O7vy8vIok8nUPDg4WLgjGCNq4PF4p1F+fpFIxFpcXGyE+Au4JCJycAE4yPYh+Kmnp4dCrLKmpua+xWKpi7spCOvr65RGo3mMvPyIQLZKpTJBuA+3CxuUgF/0k8rJyaGMRqMaDr0QPknej3MY67S2trYOV9NluOjCtl9juATY6a/spvP3JgxU2e3263K5/E9s6cU1JCtls9ksqJhPOPgiDJ0FJnCDESNJjbk7Vqu1jBFLKsiItrW12bB1D9LpFS02QE9XAw0oEwgEwYTS+59oZmamHfW9jm4jLaoCpXT6hJiLeF+CpEGMPNrpe5A4nAJXwcpu8f8EGABNC5YSPXyFMwAAAABJRU5ErkJggg==","small/changelocation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNrcU8sNgkAQXa1AO/CqJ6xA7MAOhArQCsQKFivQDtAKpAM4yZUO1Ar0TfI2mYMi68lI8rI7w8zb+Rrz61/Px3g8GVscEVABu/pSH78mBNkKxxJYAyNgAxQig/jm7PoeAc6AE5wL4ID7FAiAvTbyIWyABJEKiWFUcyB0us6EdJCUpWZnyJFXU+AgNUqYkuG5RVQZ/i1wt8pcShC/JeTrUpdMasZGjOA0VzY5r9Lp4lN6VyBUckhd4B6kPOg6Ho8XupQk1p3v/F81pRACrUBaKcfkLrXkcHce4IBRRG1ZsHGfI0Q0FefLtqR2895ltbfiHLtusmE55KHPHEpHS7VeG7UtIR84+BCW3NtUj48jhb7xbUpu/vZ7CjAAtCZyYE38EqEAAAAASUVORK5CYII=","small/chart.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=","small/chart2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBgWQFNL04BYtUxImvrj4+MdcKg7D5SfD8QCRBsIBAbp6enr////j8s1CUBcQIqBDCwsLCAX7Mdi6AIgfgDEH0gyEAQ2bNggEBoWuh/oPRDuB4ldv3Y9EUgFAnE9UKwBn4Es6AJPnz1luHr1KsilKOEJNPQC0DBHIBMUlvFAeiEQHwC5GiSH00BkoK2tbeDu7t6/c+dOWBBcAGo2BBoYAGT7g1wMEoNiwgZyc3ELqKioFAANZEBz7QZQ6BAVhpQCFjISOSj5xCMFQSHZBoLClJ+f/8OxY8cciE42hMLU0NAwgKR0SCkYXAaCwhQ9mzIixd5+DQ0Nh8+fPzM8ffoULMbLy8vAx8eHly8nJ/cBmLMcYbmFEa3MEyDTsaDk84GBFgAgwACrZ2hcmZdNWQAAAABJRU5ErkJggg==","small/check.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==","small/chemicalreagent.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNqsVLFOAkEQHdGE6hQLEhMasAIbscISww+g1nJnj9EaGyikVf/AYC0ePQRqLKSRo6Q5GkkkXEdzzmx2L+tlIYthk8nM7EzevtmdWYANry3ZyRxlsqiKoZwZiu0MnbEOYCQE1kXZC+Uco3yuTRUB8yjdJTFfFyci2VRSNgzKwQZrA/I7OlclYezkPww3snZ07xeViZKUXr6FzF/WAkSgGDdVj1XE+C3qMwSerSo5iYlVFGLzThvNtyYMv4ZQuiqFc1mrSQcrAcd4YhV1nguk02kWKBQKqkII9E4423IkHo8TKwv1Pr+zA9o3dg2IRqOwWCxg4k5g7s2ZTYxThykYjUbJ6ff0eWVzo/6hHhRSvin7YjmO47fb7cA3TdPXaZuY7Iiyhe15XuATYx3AP9PR6XQC27ZtqNxXwLIsuLi8oJK12qbFL5w9Rv2hzljlTnNBQv+jH5yxiqEo9Yk3MLt8wzCYJBIJ1eG1ZQwHvA/pu+qJzcZrg4ERI9d1w2DX2GYD5QcrTUeej1mPs3xUfLwUqyFYb+mPrTGGWVGJPG7y+hVgAGUlpMVlUj+IAAAAAElFTkSuQmCC","small/chemistry.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMEI4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMEE4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdlZWE2MWVlLWE3MjAtNDYyNi04YWRjLWFmNzQ0ZDNmNTcwYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MTc5RjE0QzdEQkIxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuWygSsAAAJOSURBVHjanJRPiBJRHMefY66TrsEibASbiRBe1sjDHIrILl0EITu0RELGItOlg5cQPMTmqYQMKYg9FhgrzCUW85LhxYsZmJBeI2GWtsF/ZaOzjn0nxtBqR5sffJj5vfd73/d77/3eM4zHY6Jl4XCYFItFYrFYduGmwJtJX7/fJ9lsljAM8zueInPMaDQqn0tgG+zPiz+i1dnr9YggCA6IrsNdAafBB60xmhnWarVT5XL5JU3TZ+E6wAZgdAt6PB4B+8OLongP7kPQBLxuQZvN9s1ut++NRqOLcCXwCXzVvYeKQUzE5wqQwRDQQNSVoWoW8BjsgOV5SSxSNpKaFVGzpHQL4jCUslmB6A+1aQkc0y2Yy+Wuomw6KJt3cOPgPLilS7BQKDiSyeSm0+m8fwBDk5LlU3AUBP9LEEul4vH4ViQSeQJBAXoGND8Cz9R63AQnFhaMxWIRr9e77/P5XjcajWsmk2l5qntPvddbCwliqeulUulCMBi82263icvl2hkOh70/wl6BL+A6JpvpMEw/X5IkLfn9/u1Wq3US/0ae5024KQOKogyTeDUJZdABni86nU5vBAKB5l+CSolEo1E2n8/fhnsmlUqxlUpFzGQyL3DK/zyAwWDw2e1273Icdwcxo5klo0QYdNy0Wq1ryIiCWB/N34Fw2ImazebjeJEuJxKJGzMZ1uv1VZZlH+DeulHI55RHVclYMczc1SpmWZabiH8fCoWe4zC5X/ey0+msdbvdVbwubyd7BKHpfZMPu5lYzEeMlavVqh8+91OAAQASUuiWqlbvbwAAAABJRU5ErkJggg==","small/cherrypick.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARVJREFUeNrsVNENgkAMPQkD3Aj84te5ARu4giPoBOIEsokygWzgfekvIzCCLXk1T9TECD8mNnnQ65X2tdfDub+MlZk+8nleThHsermWKfSlYDMy3l5QJlh0gEoL9LpkbYhBQ3sR3xSku4QyeHyQKUgfiu0FsNoK1rbJAaP0soBzrxMbRxV02Ito005QPaQUh5PAw/Er0Rj6TskWlB2CesFBGYitEttKmYl+pKQttaR7VbKDc8e9U+aweW4P1p70Z7oflqatCbQOL0sWQwZmOiqtHQr0DFMQbSJ4OlDFU8n3UaHTttL7RGCjo6KHuCa/8HZsbLCpnyYFGNaCxoZ56Gd3+TzF1ZOEC+thjSs0Rurf+B/eBBgA8J99m4JyNcoAAAAASUVORK5CYII=","small/clear.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATJJREFUeNrMVDsSwVAUjc8CNOkpqWQHsgNWQFZAVmCUqpRKrACdTnaQVJQoDTMswbkz5828ecPLoyEzZx7J/Zx7z73P8/79KRUZNFvNGo45IGd82B9ym33ZIakKtgEyJBh9zZDOQyAAswf+t/F7BaRk+3AOCOcOnUO9TLZgRdZRUQuUUx24AwOLTUKbmksPhcEa2ReWvBOedWtAZBQRPASLHMRKzZKrRjApsQs0HMQSgYK3Y0MFE+BklvFCrDHQe6VyRVNuB0yBMzDzff9yu95yUyzaychsrSUAmc6CCiaGXaZ6bB1sbeZipSzZyDspq8d2tPE9KFw9GKXKSVNZehmyp0eKFX50OWisPG6IWrcdRUi/um3IUhhFLFUCLQti5ULAtssyk/0PrsLYaa9//jwFGABIBXzXH9oR+AAAAABJRU5ErkJggg==","small/closednotebooks.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczQTE4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczQTA4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE1NkUxQjg1ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE1NkUxQjg2ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IjNeSAAAAlJJREFUeNqUlM1rE0EYxiebaGIg0BoaRASjxSqiSBeXWPUUvQiKuYiICAFB8ST6F/gHqOClHloPKiKJeAvqQS0REVIlFqV+hXhQsBpJEYkxMezG5yXP2nHbNO3Aj8y8k3n2/ZrxtdttJSOdTm/K5/PHw+FwHcuOcWnDqNfrf7LZ7HXLsmYD2sZG0QXrlinoAy3wGMwa2sZrcBf4QWAZyP9XuCK6h/vAef3Ttm07+HH8fr9PM4v3BtFtnfg140NwyV04jqOi0ehlYGE+ApOLBS50i/+fh81m04JHJ9x1o9FQpml+xHQql8spFEs/t7lrhdxJIpH4FovFpiH6X9Rdztk9PcT4DX64i1AopIrF4lFMhzDXUyN53d5TsFAoDFYqlWQkEum4bhiqWq0mMU2iKN5z8uE7YA9Yu2DIwWBwEgev6Zsi5BF7A8bBLVZ2YrGQ93rbRkvFc/BSMkGvtnHvJpgBa+Z5mEqlnsbj8YutVss1zbDRR8FXcAScptg0uAF28mO+eR5mMpmRcrl8BjkUoXvgJxgGh8BK/u0LyIHPLM5h3rDvvDFzgmib96VSaaJWq8nNWAXTSW59oLh4MgVW8yNb2D7iwDspgzeH0rn9YCt4AH6BZ8xdhY/HKWCCT+A+7Ttoa3jbJoa2GUTI/QzxFTF5M/qA3JyrPLILHGMdHDIniLZ5gVBvY3qOIpPgrDxJ9PItGAAHwAZPJzgLtc1+iikeeALG+NYN8a3s6/U46oKPwBV6JeMgczW8hEc24LaOLihe7GbVFNtgvbZebNiMRP0VYAA/katMiUCR9QAAAABJRU5ErkJggg==","small/collapse.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEFSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIKobCBBAVDcQIICobiBAAFHdQIAAwmrgwoUL/1dWVv7/8+cPK7I4iA8SX7RoEc60BhBAGAb+/fuX6fr16wzHjh1jqK2t/QUzFESD+CBxkDxIHTYDAQKIAZSw0fGvX784Kioq/tvZ2f0vLy///+3bN0kYH0T//v2bFZs+EAYIIEZcOQXmoqNHjzLw8fExfP78mcHKyoqhubmZjYWF5TcuLwMEEAMum0AY5BJkl+JzGQwDBBADIQUgQ0CRAAoGQmpBGCCAGKldOAAEENXTIUAAUd1AgACiuoEAAUR1AwECiOoGAgQQ1Q0ECDAAofjtyp2qbOUAAAAASUVORK5CYII=","small/columns.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABKklEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzIHEZGRnR5UAAzEhJDjgeAAMLlwv9QzIBEM6CJYY1NgADCZSAjkisY0cTR5VEAQAARCkNGIsXgACCAqB4pAAGEEimzZs36//XrV4ZXr14xgOjbt28zbN++HcVFEyZMAIfdy5cvGb59+8Zw69YtFFcDBBALug2ZmZkMnz9/BrNjY2MxXMDFxQUW//LlCzhVoKsBCCAUL4uIiIBpHh4eXMmIQUhICEUNOgAIICb09MTKygrn//v3DzNGgJaws7NjpD8YAAggFmwa2NjYGHh5ebG6ECQOMghkKDZ5gABCcSHIGzBbcZVC6PLo6gACiJHaxRdAAFE9HQIEENUNBAggqhsIEEBUNxAgwABfdlLE0WdCHwAAAABJRU5ErkJggg==","small/container.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUx4DDwIxPlAAwyQDEsAUiB8AZcmnAZCXfYBiAWQhBWAeAFQbgPJBkLBByxiH/FpYCEi4gyg3vaHhl0jpQb2k5JsCHmZITs7myEgIIBoAwm6cOrUqQwjzIWkgqFv4AMicw/RkVKIlIfBBQZ66TP0AECAAQDIDSl9p328ngAAAABJRU5ErkJggg==","small/containercopy.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMxJREFUeNpiZCACaGppJgCpeDThwuvXrl9AV8vCQBwAGbYRiGEG+ANxPRAHoitkItLADyBDgC46AMJAdgEQX8SmkFgDJ6ILAA1uoMRAogELjkhwgIYRDAiAMChygC5bQLKBUMMuQCMCBAygYbiAkAtxefkgKOCRIqEfiBWgyYd0A3EE+ANKXEg2YCKQQxqoEss4vG4AtGA9KCyRcgxFLjSExnojEDuSHBZAw/5jYw+uSKFa1oOCC0CvnkcqbSg20BGa5RjwxerQAwABBgA690BBA387sgAAAABJRU5ErkJggg==","small/containerempty.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUzInP1yegJA7ADECkDuQSDOBxpggGRYApAC4Qu4XMGExgdp3g/SBHXZByAWQJIHWbQAKLeBWAPRwQcsYh/xaWCidiwzEeEi8g10fHQJFtjIgR4PjQyiALZkY4hkMAgsxJXmiEk2oFg+D0o65LoQm5cD0bwMcuECsr0MNHQDNWOZ6smGYsBCQP4BENcDI4UBmgX9QWFKVvEFLQxAhvRD8zAIHARGUAPDkAYAAQYAdlJBHbXYt6IAAAAASUVORK5CYII=","small/containeruse.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNpiYBhyQFNL0wCIHcjVz4hm2HwglQDlXgDiwOvXrj8gy0Coq/ajyX8A4kSgoRuINZAJiY3NmwJAvB5oWT+xBrKguQYD8PLyMjg7OxdALSQYBMwwxpvXb06IioqCXGSBrCA1NZVhw4YNDEA5CQF+gQQ2drabQLU3iIoUaFgGAKn5UO/CweRJkxmqqqsYPn/+DOJOALq0kCgDoYYqgMIOiA2wSF9ACl+Q9w8CDW/A8DIyAHrpAxDPxBYEQMABNEARKAey9CYQxwPZD2HBwIQvgKHeCkSLMAFQEoPKTcCXbHAZCkqDhkheBQF/KA1KTg+Q0ykzMWkLKQhAYaoB8jaQzQmkI4DYESj3A1s6JAZsBOIAaGSBsCHQdR+wpkMiXXoB6DJQygBFSCO2LMlEamkCTSIP0NMp2QZCwUG0SBpCACDAAEU2dViv3fGXAAAAAElFTkSuQmCC","small/copy.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNpiYBhxgBFdQFNL04GAngfXr11/gEuSBYvYfiA+gEO9ABBvBOIGUgwEgUQgTsAiDrIIrw9wGfgBjysZyDFQAYdLDpATKf+BlCKSofbIEQIVPwgTAEYQSngyYbMFFItAjOyag1D8ENkwIKhH18tERLAchIYpUd5nonbCxhopwHCEhYs91IUClBjYiCVMG3BYTNhAZM1ILiUaUD0M6RMpaCAe6HV7ahm4gEB2a6R5AQsQYAAmay1GRWP+RQAAAABJRU5ErkJggg==","small/costcontrol.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNpiYBgFgw4wwhiaWpr7KTRr4fVr1xewIAk4ALEjmYbFA7ECiIFsIAPQhgPIfKCrBYBUPxAHSEtLCzx9+vQB1CUNaOocYGwmXFZCDQMFQ0J2drbAgvkLGAICAkCuqMcXPEx4vFEAxAYaGhoMAf4BDKdPn2aorKhkALoUHDxAQxNINRAULgyfP39m4OPjY+Dl5WVwcXVhAHobJu9PqoHgQAYZUFVdBXbZnt17wAZDgQCpBoIjyNnZmQHk7b379jLcuHGDQVNDEyZ/AZsmFnzpChRWp06dYmhrbWP49OkT2OvXb1xHlifehaBECqQWgMIQFHagSAHRID4QJALlL5DqZZChiaDEDjRkAjAcDwDpRiBfEWoZwaz3H0g1kplT7IH4ICjBM8NEREVFGSnIxw9Bkfjm9ZsHg7/4AggwAA8Qb1oirmhxAAAAAElFTkSuQmCC","small/costsheets.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBjsgBFdQFNL0wFIORCp/8D1a9cPIAswYVEEMsyeCMPssVnMgkPxQaDNDfhMA/oEqzwTtcOQKAOBrgkAYaoYCPXafBAmxlAWIgN/ARA/BGIBanh5IhAXALE/EF+ghoEfgNgRStdTw8v1UMOoFsuF0LAD4UaKDQQmcFC4JYIwlE2xl0GGPqBqwiYF4HKhPLTUwQfkoWmToIEPoIm5nggHHWQYcgAgwABVTCeiPU7edwAAAABJRU5ErkJggg==","small/create.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGM0NGOEIwRjhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGM0NGOEIwRThGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzIzMWQ3YTktZmZhMC00NzA1LWJlZjktNzAzMTVkOTBjMzBlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N9BRpQAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=","small/create2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCM0U4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCM0Q4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmMzOTk4ZmYzLWUwYTktNGEyMS05ZGY0LWIyYjA2MTI3ODIzYyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBM0EzMzA4MTdGNDExMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkJ38rUAAAJ3SURBVHjapJNPaJJxGMff6eafSQzykASzwizzkEMcOnfIRlgeCoQOdbBLXmbScBLNSx4MDxWjpRCJh9Vl5KFRpvRnsKhDhCLWhgedxfyTTAKDiTrnn74/eI2wzU38wof3/T3Pj+/ved/n+fU1m02qk4xG48jS0tI1Ho/3DMtvoNHKlUolyufzUaOjo3/3M9oNUqkU5XQ6j21vb1Pr6+u8cDjs4HK5FqRu/Gu2m/4zFAqFVDQavavVahfj8fhBiUQSgfkPpLJADmRdGRLh88orKytyi8XyMpPJbAwMDDxH+CL4Ao52bVitVitqtdqt1+tnisWiGSExWADfweeuDMm/y+Vyh1gs1rDD4Xgnl8tHKpXKZaR+g1WQ37dhIpFgm0ymhzA8aTab50ms0WhU6fQ58GuvpvS3XoLB4OnJycmn5XJZaLVaz2g0mtW2vTPgDbhAPztXGAqF+pVK5bJIJIp4PJ7HOp1uIZvNHuBwOBTdXSE5F7yg150rtNvtETwis7Ozh/1+/6V8Pj/l9Xon0OEc4m8Bcd4Ay2CM7O1o2BKMxmOx2HmpVDoXCASmYchElTWk3GAckAaVd6uwr/3qoaMsDDZ7a2tryGAwpDGT8wwG4xVSNrBG/6Yr+756qKaqUqk2FQpFBlXewwFOhBfpkSFfdARc72qw6dtCuVyu2zKZLIFqSWgKHAdhcAuc6MqQSCwWU3w+n6rX62S5CabBWfARPNqpB4y9BpU2a+kDeA2GAZvMJprWneEOugMGQQxcTafTY70akqt4E0yggZ9sNtv9ZDLJ7cWQ6Ct4wmQyTxUKhUG32/2gV0OiuVqt9lMgEAyB963gHwEGANSF5XEpsxcrAAAAAElFTkSuQmCC","small/createcontainers.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQyODU1NEQ4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQyODU1NEM4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjY4ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjY5ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DkCOfAAAAsdJREFUeNrMlM1rE1EUxTOTGc1HJalSW2MlMV1oK0VKSBQhoC4CJVBU1IIKEXFZ8C8RQV0JLnSlGHVj3EhFGomV2FJ0IZrStNVabZoYbZqkmZnUc8sJdOFKunDgx7x5M3PfOfedGWV9fd22lYdq2+JDy2azXpzbgPIvBer1uq3ZbG6M7Xa7pQQCgUmMs6Asc3zOAjowuZDKsQbkbemTZlmWEQqF7B6PR94xS6WST3O5XNtxcQtcAqNgBZwBN8AFsAhk0avgDjgCdoFHUHett7f3sdfrbc/lcpFoNPpQ6evrS+PmA3AS1KhCp1IHFamcW6NiGa8qiqIWCgULLo1wONxMJpNzUnCK6s6D11R4CtwGZ8ESFV4Bd0EEtIMnUDgyPDz8lApDwWBwUuWK0p9lUGTBAqiwr62xnH+CX5vmliORSInvLPX09KyJwjFZDRwD1b9Ybm2QzBub7K/Asg7LTViWVqnI9LQ85AZvgR+k2bPj4B44DebBNDgH7oOjwAlewPJlHM9geXc+nz/Y3d09IQVll79QpVieYSw+sLgLjAPJxic+EwRTpmk+j8fjn91u90QqlVqKxWKGWM7g5k1wkT1ybspia0elX9t4XWErKgh0m67rv3F2lstl3e/311sKW7Ykc99AFLwEB7jAOxBja+Sr2g/GDMM4MTQ09BEBb6TT6cOdnZ0zGleblaCC7yBPpSlwiAolWnXpG9jDgq9geXVwcPB9V1dXDQGfBXWx/AY3r4MEMye2OsAC2MndFeX7GC1phXz/c7C6F5blHQ1FO2q12qLGGHylunkWlV2W3g6woGxKnNY9TMQE2NHf35+TTSwWiwMOh2NGq1arsmMBscCGrzDos/wUFSoc5ZyL6hcQm3FY/uHz+axMJlNBwXYlkUiMMIsm1aoMsE57Nv6FWnNNoiHYJmxu/KGcTqfVaDRU5b//Y/8RYAAD1xfIfFZ4LwAAAABJRU5ErkJggg==","small/crystal.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASpJREFUeNrslM1twkAQhW0rBbgEfHROpgKgAkgFMRWEDiIqgFSAO8AdmFQQn8KRdBB3kLwXvZWGxTji54QY6Wk82t1v52flILjb1Sx9TGOodynnwXzn0ALQczjT7ee24Eek7JjZKzTCQgifaGPC2IqHoS8T95UIEwpClgpfQQ00F+gZ6pnYtzX0Bm0Uj1XhE0seQhlvVZaB4sbEvnHtBRoo5uWx/F/JOfQNTUy86xjghysRPtPZ3N9EyI/ZWEGzFtjQXWZgK7ce+lC4lWu8esXBNGYP+/0OLSGCS6xP3XpkgRr9iFNTP2poZmCZ+ltokHuwgwy9g5UO5i5LldZokLUPOwr0oLRST2gnYNkG6wR60FhvjpkVx2D/AlugnbBTfhx8Hovb+A3+CjAAWet3QwOXINUAAAAASUVORK5CYII=","small/cut.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVVJREFUeNpiYBgFMKCppakAxA5YxAWA2ACXPkYchoEM2g/ED4D4AxA7Xr92/QNQPAHIng8VWwAUK0TXy4TDIpCBjUANilBDE0AuhhpmCMQg8QJsGnEZCHKBPpR9EIjtgRhk4AWgJReAtAHUIgzAgsPABUAcD3TVeZhBUNoAKLYfamAh0WGIFJYBUG8KQF0tALUMFBwPyI1tAxdXl/85uTn/gez5hNQzEWGmwqdPn+BsQoqZCaVFILX9169fP+7fv78DyPYQFRVlfPP6zQFyXQgLv0QoBkVOPb6EzYTHdQ3Q9DgBGAEbQAkbaiiIXg/KMUR7GeqC5UB8AGhQJEwc6NUXQC/fBDIzgFgCyN9I0ECozfuhXEugph/I8kD+DaChIDUZQPoiiE/Iy/3Q2AyEehMDQPMwKDznQyMOr4GgAqAQqOkAgQhzhNIBBBMyKUUczctRgAADAB+aeWFKXujmAAAAAElFTkSuQmCC","small/del.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAhfqWrl+X7rS9peXZ8d/ZuYd//79Y0AP5f8szCws7z93MkuK7TCb1rcbWQ4ggDBcyPT8ZbvMxvX5wvuOrvn3/78rAzOqkv/sbCysD58ukdiwtojrxNkWdP0AAYRh4D8hgR2fxeS+SDy7xy2y7+i6f/8QhoIMY7n3aInU/kPhTAysDD/kZU6i6wcIIMww5GDf/srZNuiZjMoX8Sd3eET2HVn3/+8/63+c7Awgw6SBhoGUPbG3W/lbWb4UXTtAAGGEIePffwxMTIy7XztZB/3b93+d+JObPH9Oc0/9LCt1W2bfwZD/jIwMTxztVv5RkIlh//n7D7p+gABiwRpVwIhgYmXZ/cbR2uf3Bf46/mu3nfhv3NT/Lir85Y2hwZQ/slK1jD9+/GHg4sbQChBAGF7+C8X/gC79z8lx8LOExGuGv78Z2Bl+M3xj5/z7U0Zi8/+/f/78g6pDBwABhDMdgmPzzoMVcnv3hv/m4/v9XErhh+iTu/yCuw5uA0aU839m7FoBAgir6D82SGyCIuD/f0aGVxYmfe89HNxfyyh/En5yh59/32FgRP13ZsBiKEAAYYj8Z2PlZEWOTVAEyEnWM//7d+iDk00QyFChJ3f4+ECG/vnjgK4fIIAwrXj8rE3q8D6EYUpyMYw/f/9kgMT+3o9OtkFvZFQ+CT6/ycd5/EwnunaAAMKMZX6+7R81tA2+S8lc/qMkW8T48xciaYAMZWba+9ne2v/veZ5aBlmZPejaAQKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD36PbiZl38lwAAAABJRU5ErkJggg==","small/deliver.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUeNrsVDFOw0AQdAwFpRv3dpdQhRfE/CC8IOIFERUtfkHgBckPAiUV5xckFSljuiBSUKbMTDRIi5SzLkSiykoj27dzu7O7vouikx1rZ4eQO5edIk3TZP21Xvk454GBMjxGQB9wwLWPG4OcMLMnEH0PeF0qGK3AWt9y7J4WFqaGXAu0J4Dk8Z5cE6CUaorJF++L710P0ZNPPD+ACngRWsA9SLfwc0NmEt7JTyFt4IJAX18jOXx9e1MSp81UTBVDk8AaVdZxwyxKbZ5rCD2VmHn4RaNCqZxKFcuceYLN5e+GBMw04VwK7IB+EtVa3303lRyxJyp9bILQHtWGgfpbgnsFuDjgv3ZGXaISE7Wg0jAmh5yUoZTdqE8jfeeq4PdJCQhINTXL0Q9Nq/YFCw3Isrqa+My04W+3DU6A4w2j47nhJKHu+d/uw60AAwC5mm4X4tK98wAAAABJRU5ErkJggg==","small/delselected.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKCSURBVHjaYvz//z8DNQFAADExUBkABBALMsfT09MeSCUAsS6aukdAvG/79u1TCBkIEECMMC8DDfMGUlsIqJ8FNDQdnwKAAEI28AaQUmdlYmJwYWJnuM30n+HOrx/Y9ChVSSo8Znn/uZNZUmyH2bS+3ciSAAGEHIaKYIP5hBlCt2xjyDh3i0GJjQPDNHYmJnXWh0+XSGxYW8R14mwLujxAACEbeBxE3Pz7i+GNhAKD3JO7DOkX7jAoIhnKxMD4q/AHc6bU/kPhTAysDD/kZU6iGwgQQMgGFgDx05ufPzJMN9VguC+nyiD36DZD2oXbDDKs7CD5v2m/mS8p7j/kB+I8sbdb+VtZvhTdQIAAYkROh8Bw5AdSgUBsrM/BrRR99oar9OMbrDe1TZ59kxK/orb7gNt/RkaGJ45AwxRkYuznTvuDbiBAADGADMSFD8Wm2l/Utdz7gFnk/0MGvv83RRU/H3ULbD+YnM2CSw9AAOFN2LaLZh38LCHxmuHvbwZ2ht8M39g5//6UkdhsN2fKH1x6AAIIt+tSslmOOfmueMTE9/82n+yv81Ka358wsP8/L6P1YV9cmjMufQABhNWFBxMyWFjuPVoiDYzN//8ZGV5ZmPS993Bwfy2j/En4yR1+/n2H1+2LSXXGphcggDBsONPYznnU1nPFQ0b+/yB8FOjKgylZ7CC5/UCXnZXR/HifgfX/aUn1j4ezixzQ9QMEEKaBKbn994FeQxiGGgEg754GGnqHgeH/GSO7k+j6AQKIBcPJ/HzbP2poG3yXkrn8R0m2yG42agQ4Lpy5d39Mqv/f8zy1DLIye9C1AwQQI7XLQ4AAonp5CBBAVDcQIICobiBAgAEAmxdipemnE5IAAAAASUVORK5CYII=","small/doc.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=","small/document.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=","small/down.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMJJREFUeNpiYBhxgBGfpKaWZj+QMkATXnj92vUFuPSwELAQZJgDmthBfBqYqO3lEWggC5aYVQBSClCuABY98kA1sIh6AIzxB4RiGWTYfjyOSIBiEFBEl2RGF3jz+s0DUVFRBSzpDx1MALpuJbFh2AjEH/AY9gGqhoGgC6Gu/AB0JSeWRA0DmUDXnSAn691HiiAYuAA0zJDcZFNIpBhxLoS6cj+S1zcAXRdIacIuJNZ1RAOgK+cDcQNZOYWEsMQKAAIMAFkoLxHVkhqkAAAAAElFTkSuQmCC","small/downloadcsv - copy.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTlCNTdERkU4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTlCNTdERkQ4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkMxODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkMyODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qE9KjgAAAxJJREFUeNrMlFtIk2EYx79vzh0aU1rM6UaMXMZSYtCFWirTm4rQDhTShaJdTC0RjLXQwQIpELvJGgixixER1oTAEDympgiKcwmRjVTCtsXWErW5w4c79H/lMzxgV174wI/t2/u8z/s8//f/jU4kEtRBBoc64Dj8BbnT09NFZrP5ZiQS+Y3nJERCIBCEoG0MzwLA228zTdNUOByOMwxzNC8vb66pqcnCXVpaOunz+RxGo/ENh8PhYpEyGAwXFxYWFLW1tR9mZma+zs/PJyP2FCS5ra2t8WAwmDM4OHhjs0N0Es3IyAhrtVomFosxer2+QS6XizUazaeRkZG7oVDoaWpqqnO/LgsLCynkBEdHR5nNgqTteDxOk4epqSmJxWJRzc7ONmZlZVEDAwPrNTU1l0UikfN/um1sbND/NNy+IJFIQjKZjBofH89eW1ub6+7uzsWBbnb5BPCC8FY+9BY7HA5GKpWGIEl8T0G1Wh2xWq2W6upq3erqaqygoMCtUCi6lpeXz0Lfe0jpAu9BLmjk8/lSXASTnp4eSEtL+4aL3VmQBLT8MjQ0dN/r9aag4EpdXZ2yr6+vEWM3s7f+GOjBOngBRyj9fn+Fy+XytLW1vd3hQ9xUTn19fXNmZibpbmVsbCxlcnLyoVAofI5lMnoINIAgsAIl4GPcJziQ19PT82yzIFpPeDweCjapHB4ePtPS0nIBVqKqqqoeBQIBG7Sys2deASnAB4hvK0ARcEESDnLPcWAbmsfjBTs6Oq6WlJT8tNlst3t7e6+Vl5eby8rK7Pn5+f1EGzbk7Gc2OAXmwAS4Do7h4GQuWo3AvEpYR93Z2WlSqVRMaWnpa3R8vr29/RW6puDPrYLftylEjGwEJ9nvJC/IRcSwuVKn091BsQBZMJlME+zJ24uReAcM4DSxH9CA40QCeFEmFov7udFoNAnjC+12uxZjXtp9606nkxifvA0UW+QzUIEf7OhBHPoHk/ox0QMaHhMtLi4qoNMRsnF3QE/K7XZTmGTrJ1JZBG6xHUax9yPs9bK4uPgXfej/sf8KMAAfNV74L2cQHAAAAABJRU5ErkJggg==","small/downloadcsv.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNq0VMERgjAQDAwF0IF+8SNWIB1oB2gHUoFagVqB2oEdYAm+9EsJ6UD3nGUmo4kE1JvZ4cIdm83dBaV+bIG5SAbJDI9+W5Lb9baq/fAllgO9lnxLZwQKSyBrw4b8u7mOHElCKjgBFSCliIED359dpQkt7yRxD1xYggUw4VpiQ5Lm3MSLsEKhT0ABf0uVG8aOwFh8yfEhfCrBsTdSU+NocswxSCSecpM3s9VQAyN+tAaBBvFOjgf/zJw587wIZa40FdU2NVQqqlS+TXHN2tInMfSYs9Tmf6Nw6vA7E27ZgMq8s50J2aCCnW20yKN+cT1zvJL6U5ejhg1Ty52tOPxe/8OSinSLH04GxYFLYWG78A22Vv+0hwADAPUDVtbIQ74+AAAAAElFTkSuQmCC","small/downloadexcel.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASdJREFUeNpiYKAyYETmaGppJgApBVINuX7tegOMzYQmFw/E8iSaV4/MYcGiYCHQxgNQFwv8dRRcz/jgeyPT/R8PfoeLzWdd+aoQKH8ByVcEDUT2ygc1R6uDf50F+/9+/vsBKnYBnx4mQv5h3v9+AsPP/wIM3MwOQNclElLPQlQocYLtfUCMUoIuBIZhAcO//x8Y3/6+8CdYtJ8iA4EBbvBfgKWeee/7Qpa1rwv/szA6aDjoJ5DtZXAEXLvOCDQYnM7u1B8UpNjLSGmtniphCPI2NjYlLgzAwSbbwAlADErUD5DzLNkGgnILkCoE4kRiwpCFiPATgCVqIN8B5Fp82Y9QTjHAUpyBDL9AbHm4H+qiDyQUXw5AFzPicmEh1EBSQCMDLQFAgAEALFJj1+b/ZJQAAAAASUVORK5CYII=","small/downloadimage.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNrsVLFugzAQNSgrEnNZGEknMmRvxA84f9DMDC1rOjT5grQDXcMflB9AoSsMZWoY24EdKT/Qd+RcubSKEmWq1EMn353x87vz2UL8y7liDC+HVxg3Z+JMtm/bnIwBB3IEJmRgAx/DPceXiFeHkPD/NzJmb9Jmti+sG44dLWbPJ3YtWD2Qks2xo2XQ8yk9G6wW7BO7Cv6KHGwSnQSIBS0WUy1vVLGhEnpNbDH3gTHhGvtaVu6vgHwgLoBn7FMHrBiY5JXBbCmlcBxHlEUpirJY418ilPRTXtOOmByx/wyN1EkjXilmUzkV4/FYxPgA2K3FfD7Q2N1yzZYMTPYj7aqx78CImWVZ3TrnYm/vdjtypakVn1KZAWCh9eZCY//VPgTgeV5nB0GgZ2ibWmFT1e0YR6qOmrTKqOtaxE9xZ8/v5ordj0Px+11/SOJ4D5hlmR5ODb4Jxzavy/UVYRh2gaZpRJqmZNJliIxTXwHtrksOvfOdT/7Ge/gpwAC8hYlAB6pQ3AAAAABJRU5ErkJggg==","small/downloadpdf.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNq0lMENgjAUhqHhLhvIFS8yAiO4gTgCEwgTiBOoIzgBsgEnuZYNOoL/Sx4JqSVtib7kTwu0X//3aBsEP45w/pDu0gJN4gsZ3kM19YX27QhtPXnn+UNkGPDAii/TTM6AoocuNFYfE1kmUvoNFEMFux85E4qvhcVCGjRhD23YSQvJWX0lS7kCKZ4sgiQowx1tx9/I5Yh3yillrdgdl+GGJjfVzRV4pbTgomcgwWrbL18CkoseMMmwSt9vXkCulyl9K1DYBsBdZuqvBiIOC/3VwIb3m3SpoXA4+AQroZPLwY4c6hfzqZi2jpq2kjcQkRmuM8mXg9N92LIj5XF95XAcLjksGegTdfDP+AgwAPYEUNx4yC23AAAAAElFTkSuQmCC","small/downloadsdf.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFlSURBVHjaYvz//z8DNQFAADEiG6ilrZUApBRINeTa1WsNMDZAADGhycUDsTyJ5tUjcwACiAWLgrVA/AXEuH7t+gFNLU0FJFc/AIo9AIo54DIQIIDQvbwfSGkC8Q8gFgDiDSBD0DQ5AvF+NC8zwtgAAcSExYUsSN5+gCSuCKVhrnsIxI3omgECCN1ADiC+A8QbofwCJLkPxAQoQAChGwjyqhKSKy4gyb2H0gdgrkeOXRgACCBskRKGxL4ADUtkQx4Aw9oRl4sBAgibgeDYRfYqMFYToOINjIyMcFeC2EA5FL0AAcREQlqrJ0YhQAARNBDoAgNsbFwAIICIcWEADjZWABBAxBg4ARoBoFzSQEgxQAARNBBoCMiwQiBOJCYMAQKIhYjwE4DlGGge/gC05AIuPQABxELAQgMsxdkDtASPAgACCFvhIEBsNoPlbeTCASCA0F1YCDWQFIBSQAAEECO1qwCAAAMAyAFhLkqF94gAAAAASUVORK5CYII=","small/duplicatepackage.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUY0MjcyRkE4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUY0MjcyRjk4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhlYjI3NDQ1LTZhZDktNDk2My04NTJjLTZkNWY1NGVhZjcyNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDNCMjUxRDc0NDUxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpTZCLAAAAJMSURBVHjarJRPiBJhGMbnm2ZWN1fpICxJa6IoIive8lCQG12EDhK0EFRHb+EhpLI9mBDLCoX059AhOgZ1kehiHoq6ePASxZJRLcFmsKegRmYcnen55B13ksbdpf3gx/dnZh6/932fV2aaprCfg+Xz+UeYD4IZMMvPrGcTa/twg/uapj0tlUpCLBbbFgyFQvyKKrgDXpM4PzMIKwR7KB5wUVGUVrPZXEulUuNnLJFIbGG+Bk6S4ONdRnfAMIxb4XB4vlgsrmQyme+WoIL5OPgIboMw+ABkClUk7GuRbq/1er3Tsiy/r9fry9ASJPo1Ps+DJDhKeyt0cyIFgu2MC2+5XK6+x+MZC/ExAEfAYfAV3AXr9NGA0MGQGIkPh0O9UCicajQaK+12+0wgEHjBQ+7h4QngA4vgEyiAh2DTFq4wOaPKrFKp8LAjtVqtHAwGn9sF58ASuAki4BkJag5FUVEUA98zv9/flyRp0Gq1zkoOPvsCXoHroO8geJmcoeCmc4yxdbfb/VKyvWAlWaAKz5LfnASXdF1/ksvlOvF4nJXL5SvdbndBmtIRO/XkAHa5BLv88Hq9MxA7hP0vidpIo9aT99C2V3HDSDabNaPRqAjrbFar1RsS2eMcePOPXE4bG7DNRjqdFpLJ5OjA5/OJPGdpnlhwb0q+HIeqquM1ij4y9m+wRsZd+N+/L9G2fge8+yn4GYTAMt3W2GNO/+plPr6B8+ABiFHlf+4kADNv304Udd56k+9w66yCC+DtNDFeBJhagA9H206nc+yPAAMAEMbEHs1AaF8AAAAASUVORK5CYII=","small/edit.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNpiYBgFlAJGUhRramkmAKl4IL4AxI3Xr13/gK6GiQTDDIBUPxBvBGIQez9UjHQXAjUKAKnzQPwA6CpHqBjIcJCLFZFdSqyB66FMBSgdCMQgQ+4DsSPQwAtEexloWAPUoESgRkMgfQDqWpAlB5ANAwFmAoYFAKl2kIuAGh+AxN68frNTVFRUAxqOnkD+D2Q9LHgMA7lqPhAXIrsCKO4ApAKgXv1AVKRAI2E/1EuFaJach1qyAJteXGEIir0PyIZBASjcNuAyDJ+B9kC8EM3VIO8zAA1LxBfuuMIQ5OUHaDkEFG6KhFIFLgMdkMIsH5psArFFArEGfoAaCqIn4gszYg1UhIbXh+FXHgIEGAC7omSO085dLwAAAABJRU5ErkJggg==","small/editannotation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAURJREFUeNrUVDtuwkAUdBwO4MY9LVRwAuAEsU+Ac4LIJwicgNyA5AShTAeUqXAVWvcgxWXKzKBZ9LLKb600edLIu8874/fZ5yj6Y7tsQ+r1e4s0TZ+ABHg+Ho5v7l3cQqzAg5gAA2ANX9JKEEQKLIAaaPYve4pWwNKd6QSIMYpHYA4kiqzUugkWlNgGUd3pAxv5KDYMShnkmSIpP3md4yNNSN0y4FX1O6cvX+Gf/02ELPg1oqiMbw2s4LsPvSJjYOf5lr7P2k9N+dBBpZjZJoQKsm6MkmmP5Zsg1bqtYKVLTCshtAqt2Qzo2hRZR6+mxXec2B7G40pz6iZjCtwaPtdTN7s+x782JOfASHsW/4EpMwJFUcuXfcGJLkw0OxESzeuNV0vXpPOE+BzWODYHS/09cu233Mt3MrPfquuW043+hb0LMAAhZ3QNix8n0QAAAABJRU5ErkJggg==","small/email.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPdJREFUeNrslMENgkAQRdcNBdCBesSTdgAVqBWoFRg6oAPpQKzAUAF2IF7kaglbgn+SL9kQEBS9GCf5biAzzz8fUal//X4N5MObeGsco56sW3EtEocXK8iHcih9ETSHptAJKoFSMSROFb4p6kLCZhE3iwlVNlCcHaAjGoc4Q4BNA8jFsScsgNwHUNuNAMjKMzZmGBzVwGQw42XAmbJ0dUBcQQEzOQPgW7AFYSl6lnUbOE35oDkE4EKnG7reMoqkac55FroMApbTlalbsVq67UkSMJZs22CtDu1cu/4o9adfPdvhDnmZNzkuMy6BIW/2KfOVf5u7AAMA6KFU32Vzs8wAAAAASUVORK5CYII=","small/expand.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA9klEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQFQ3ECCA8Bp45coVlUOHDnn9+/ePaAMBAgivge/evVN7/vy56+HDh4k2FCCA8BpoY2OzTVJScjcphgIEEF4DmZiYSDYUIIAIRgrIUCsrq21sbGxvQYbeuHFDEZ96gAAiaCDIRcePH/f69euXsJSU1G4NDY37+NQDBBATIcOOHDniBXIZyDCQ90EuxgcAAgivLMiwZ8+euUpISBBlGAgABBALPkkhIaFboMLD1taWKMNAACCAGKld2gAEENWzHkAAUd1AgACiuoEAAUR1AwECiOoGAgQYABhXW0H6uHwSAAAAAElFTkSuQmCC","small/export.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNpiYBiMQFNLUwHGZqHAEAEglQDE8UAMYiuiGAhU4ACkHHDoX3D92vUHUHUgQ/yBOABJfgM2F4IMswfigzhcBDJgPtQ16OAiLi8fBLqkAYcrHwAN9Yd6Ex1cgDGYSAy6g7gsI9lAoOsMoF7GAEBfXSAplqHJYj8ubyIDYpONAVpkgAxzhLJRwpQoLwO9BEoWgUD8AYoTgWIfQBhkODTJkRaGUENBrnJEDjNocnMgK6egGYQVMFE7X49AA9EjJR6YBOxJNAOU6BdiM3ABEB8g02EPaFZ6AwQYAAOKOvO1iJNCAAAAAElFTkSuQmCC","small/exportcsv.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVBJREFUeNrMVDFOw0AQNJAHpHFBZ7qEhvwA5wWBji7kBREvwN+gwqkoMRWiIn4BpknaoyZF8gNmpDnpcuQiHwiJlUZ7cc5zs7N7TpL/GP3TfmbXnV+QdJGugTHA9ckWITbkSHng/XK5WBrtI8kIuHD+r3YpJNk5UAcUkeBeavx4D5VcQ0kRUGlAOlKZfjR2cRhpXR06LJoQ6gYq+VugqiaqyxqL11CZbrQdm4HXDJINtd7ytFXJKIljcQmshQmerQmSa+TiPBQpVQ1dzzRu+d6S5RnRUIUaYruZ+dfNjSO7SNM0V2Z6tP7g9zHyFLgCNsADnt0hPwMvQI8bV5+reahkEs+g7Aagb3OpMmpGpWvX9UoPesgXz3hngTeRVc5hT8AtD201Nji1BFEioonj24c+EtbTchfhgdOIQp8iE3kdM1lU+ApL+fWTMMlfxZcAAwClpWybOw2M9gAAAABJRU5ErkJggg==","small/file.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==","small/filter.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDE6MTEtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQxOjExLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjJjMzVlNDIzLWYzZTEtNGU1MC05NzIxLTJiOGIxYTdhYWRmMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MmMzNWU0MjMtZjNlMS00ZTUwLTk3MjEtMmI4YjFhN2FhZGYzPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+8nsm0wAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAxElEQVR42uyUsQ3CMBBFnxEDsMaZig2CsgBtyozACBmBDdggIyQjpMHuECNELGCaRAqWiR0pBRJ8yc2d/8lP3zrlnGNNbVhZPzhw6xf0XmdAluhvzc20swOBDqiBXWRYD1yjyNbYHigTXldZYx9+Ufn/UCkFgGipgdMnVGvsEcD3z4VyHrBCqOXilAecKtC6hFCjyKNESzNJvbPGHqb9Jcijygl6PCzn3NsJSbQ0osWl+P/LIayiKO55nj9T7qqv39ivAQCf2VZ0sPgj3AAAAABJRU5ErkJggg==","small/finance.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVhYTg4YmJlLTA5MTAtNDEzOS1hMDMzLTFjNGRlNTNhZGRlYiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MzYwNEYxMzdEQjMxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiHLPpAAAAJlSURBVHjarNRLaBNhEAfwzWa1eRjSIpESTAyapGmgIGrIIR68iOKh9RIP6kXFgNqCB9tCFDwIUi+GVRFEUIScfPSw9HFRvFiKEC9aJNqCEkipRDQGiVmCm/5HZusm5tGCCz/C5vt2spmZb0y1Wk34n5cpkUg0frcfXkOV73fDKGhwAxb0jaqqCslkUggGg38D+ny+xoAv4ROcBgcH8PLaIkThO92Uy2VBURQhGo2uPSzZbLbGgLT5IFyFHkMwugKwB17oX4iiWPew2CQNm+Ek/9VtsGJY+w0yXON9gsViqXvY7HK5jPfDMATX4REUYQt8hc8wDxOwC86bzWbFbrf3plIpOZfLqbFYbMkUDof1YEfhHCThzToKOk7pQGF63G63UCgUutPp9BH9DTfBHRjhxHv1xLe55uCYJEmHnU7nQiAQWMpmsxYKeAgLDznQU3gFZ7jSHzsEpZQM5vP5flTcXiqVtkqck0Vulz7OzxSnYKpdtGq1uoK/Oy/L8kWr1TqAl5uTeO0D9SS8g1vcHhOdkoiiaMViUfT7/cvo5+U/fQjTcBxmIQ1X1nvMKpVKbyQSqTscIgegvhsA1waP7gmPx6M0a2zqr0m4uYFg1K/eeDz+uNVJuQ0/4T5s7xBsJ1yGCyjMr1YBNW7sLv6UeBBQgXbAXjgFB+ALH8lK4y9JzboBFB5jd+EtFZR/vMaHYIiPYgyetAtI48rPp+QsXIIZfmuV90zyaLOC+583pJlmuCiHz+A5fIMxfZYa9lDh7tHwwLMPNE2rn9iZTKZZ0vfR/IT3LYrihB8ULBQKCQ6HY21hVYABAMWFqCT+eBw1AAAAAElFTkSuQmCC","small/folde.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==","small/folder.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==","small/forms.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDY4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDU4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk3MURERjc0ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk3MURERjc1ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EQQ27AAAAw1JREFUeNqMVV1IWmEY/o4ef2K5NkPKNsuUNjOFEoxi7IcuYhdddDF2NbwMLTZoEAS7yF1sCyG6cjBG5E1jC2JdDEIvBg1huSgKoQViJYK4ZU5ooaV29nxO3Zkdtz548Jz3O+c57/O+z/vJcBxH6Eomk2RlZUUpFotrcfs7eL4lyufzBz09PT+VSiVhS9FwOGxxOBzPRSLRLm7FpbhcLieIVWXLZDIkm82qFhYWHoEwyvI2rphMpu8ul8tBvwqc0rjT6STr6+sF4sp1fHxMpqamiMfj8eJajdAfQqwsIAE6FhcXZTs7O88gRRqNRjmpVCqYHfYZKBuvr6//getCAmXCmpqazObmpqGvr+9TZ2fnK4lEwk1MTDgnJydJIpEgMplMiPPB9vZ2P8iypUCZMJfLSVQqVby3t9eNBp3u7e3dn52dHY3H4xzLstVKeA0fDqCG7WcIEWSbmpoSIyMjH1CTjkAg0Lq0tKShtUPnqxHSWiT5Ab7kNCQbIXmtu7vb09bW9n5wcPAp6skiW4JMKslywBDQLkgIySwkH0Dy2/39/XgoFLrndrunscUIkJGiC65SIwCmapIPINmXSqWUNptNAanNlLCKXGr+C3zPCkmmXf48NjY2rdfr1yD5CbUQJHMCWZ4ANsDMnyyW5yk5nL5rt9sfKhSKWvjPBslv/iP5EjAONJ8hTKfTrNls/jY8POzf2NjoOjo64iD5EF1mMHpCsvNUGFD712CXmVk2D/9dXl1dtcZisesg/zI/P3/TaDTewVjdxiOVuAW8LnaZO0OITNLBYNAwMDDwEbVsb2xsPLRarbm6uroMypGh416BXDHLnGBT6NyihjGLxfICvxdxrz3H0XVS6QL+aSOFvCim5J3f7++fm5sbWl5evkvPyX9MShfslhLscjFY2GhpaQnqdLoQZtlOZ7lKlwvLYDC83NraGhUiZNCMVmR1A109hcFdpfMwEolUPQ/VarXU6/XqSsmUCbER1mq1JzMzM4/5L2F6iEajIaW/Cv5iGIb4fD5xQ0PDV7wfobFfAgwAOuBX9pndZCcAAAAASUVORK5CYII=","small/formulation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNrUVMENwjAMDFEHYAS+sETLBIwATFCYgHYCYALKCExAugF86JcRGIE75EeInBJ+YMlN4p5Pju3YmF+XwXgyHmLdQkfBv7a7dZXmBB/a88B8h64zfBZQktYB4ABHB1IXkBE/hy4DPINaWCGjGjqHBBF5xPAk3Mm+8OzcXzRy2BohDPG0NRYAblolimtPhBqeOX/YlMohbwU1BWsTu6EIrphOGGkJTXKp+JtkStIrISX52Y8M5w0WJzlspUDpEcJhCh1Ij9bc09YXodUijFRRq2rz8coRcalvOYkw8fV81Tbm2wj5Wkok+S7nkpOjx4+4rYfnsNi/xpdX3RWWmRyPWsIjU4dyAn5n/kKeAgwAkKhuznfrOsQAAAAASUVORK5CYII=","small/gene.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNq8lDFuwkAURJfERTpI4ZpQkibkBqajyxHinCBwgogTRJwg4gSQE+CSDtOEltQgxWXKzEiz0soSxt9I+dLYK9t6nj/7becqqn/f71DOUFdn7i+ggQUYnXKG0xhKoOlFDgEjZAW1oUKqXa3A0QbKIa4/oTfe233tbi3Aax6Oh+NvHMffWKbKbAStoRtc30IFn6ntsNQygXfQu9z6XV5CEzjem4ABeCXwBHrWmhoCmjcZG27OXFnOJSfnjeaQrXWhF+hV65le1AiYq8UPuWO2Dxwj5WwGejdZ0DZdd6oybJ35llNl5t36Ygw5wIUJGAx9qgxTfTkeTvdTgLPawBL8J4jDabNYj34+IwMskbuZQMy0V247MhhM1OqThntf+/dVMZcZQEPz//BELQX93/oTYADSQlwAijoTdAAAAABJRU5ErkJggg==","small/geneconstruct.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAItJREFUeNpiYBgFo2AUDABgBBGaWpoKQCoBi/wBIHYgQozh+rXrDSCaCcoHGRiPpqYeqtEeScweKlaPRS3EhUDXgUz2hxp6AUkRSOMDKPsBksUw+gCaWhD/IAuQWADEH6AubMSiCAQWQmmYLxKwqAXxP8DCECSwH0sYNmLxHjYxUBgyjiZJ6gCAAAMA8hgdAsaGv4sAAAAASUVORK5CYII=","small/geneid.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX9JREFUeNq8kzFOwzAYhV1UdSXMSBDGspCcgGRgROUENJygdGQijEwlJ4ByAVJ1rRTfgEx0YUBIzGRhYuH90rNkRcKpGbD05L+q+/n5/X+Vcqzh4TAQKY+11fH9ExSZD3vLj/BPQDrLUSYWbMYL/IAACaSCtqFGBNgldlGIOncBe8YRtmeohqReQNfy3fplvQNIQLfHBMfvp7v1r0BCz7DJs0xOmvWFXPR1uwqtSxWAsRNogSOCZnRrulx+n5wXr8WVhmMBLwDNO4EWuCJ4Co1Zi1K4VXSreXxqInCNjWQ2Z5ZzStG5YsMK5l0xZyfwDdpnhhPWBS+SvDVcldAdz0ddwJpPvKc7+cGROBusHuWyBK4yjpQ57wQaN9p6toACNOaBzsccpRROG2dT2JiMmdXWOCkzSpjRZuMu239DbBkzzNgMe1ZvANYbA1vwTysOxWbJigGVOFTfA5ZYozJhpgftZ/c9DCZ86kiaYBy1lw9QABqg1HXIB1gS+r/rR4ABAABIg5v1NUUgAAAAAElFTkSuQmCC","small/giveownership.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NTg4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NTc4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmI4NWU2ZTFkLWQ2OTEtNGViMS1iZDI0LTQ4MTNlOGM1ZTUwNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDZGM0Q5QzdFRTkxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhDhHmEAAALWSURBVHjalJVdaFJhGMfP8Qsnm9rYpkVDk+hjfcHItEGji2IwhhAjyAZjIULNkkY30m5aaBlBWWIw6KJdGGgXM4kKHeRFsbaSIi8aCc7mYlAEDT/wc/Z/x9mYB0/kC78Ln+ec/3ne5/m/r3S1WqW4VqFQoGZmZk4IBIJ9+JkDQZDeyFcqFUqv11Otra2b7wi4xEqlkshqtdpDodAhiUTyHSEpGAI3wDx5JpfLUX6/v0aQV08snU5TJpPJgQraenp6zqDSiwifB/fBI6DiKqSuYCwW00QiEa3dbrfKZLI82RqzwuAZMDUkWCwW9/T29v5RKpWZbDbLTr8D2oYEaZr+vbKyIl5bW6NEIhE7vRP8aEiwu7v7E8SyGMo50ng+n7+RagKj4AmXYN0pt7S0lMfHx0eNRuOcXC7XicXiV7CXAqnr4DF421CFsAzl8/ksCoVivqOjYxFDuYDwAfAS6IHsvwXz+TyxzO1MJrM/GAwOd3V1PUTMiJQNXAOz4ClYb65QKPy34MTExGA4HNY6nc4hjUaTJ9Wy1j3wBTjBjlQqxS2YSCSkXq/3qsfjGVOpVEWOXR0FB8EYevsRvX5js9kMGx+uEXS73Qa1Wh3v7++PcYidBu/BwPrLPN52CJ2cmpoKwBGXSbtqppxMJgcsFosXX64nJgeTzHaFTJVElJxlOhAI3Glvb/9cI4gGN3V2dnKZlpwOYh0zqDLTHgZ7SRJFSJaXly+xfUgObZlDcBvj2wfAB06BD+A1894xFNQmYPmPj6m1cQimGKsQP97cEvcD4tU4biW6ZigYyHOXy3UlHo9vmov0iFmzTDXsNYhjqpdKpYdHRkbu0ltvbExJiKHcwi2t1el0iwj9WlhYoFZXV6HLIzbaDc6yFXEjFc1m86DD4XhBs/8CiJ+i0eiR6enpXUtLS9Lm5uYqLgc8VqVJGvwExxl45XL5q8FgmOzr6/tG3PFXgAEAw7wZJeKAK7sAAAAASUVORK5CYII=","small/help.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDMyOEQwNzQ4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDMyOEQwNzM4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGN0I2RTEzOEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGN0I2RTE0OEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uAaTwQAAAyRJREFUeNp8lW1IU2EUx++u043NUW1ILya+fjBT5iaoYSEoJMyFIejA+UEEi+GEiV8GyzJS2CeVSO9gWH4QSSUoxYHBLkhJsNjmK30IFBGpiBGRyTZT+z9y7+3u6jrwY5znued/zz3POc9kx8fH1FkWjUYpv99/Ti6X34R7mVv+At6Dn8Q5PDykKisrKa1WK8TJpUIHBweUz+e76PV67WtrazdUKlWMpuk9bjsddIMP4Nn+/v636enpBEFaKtbZ2Wm2Wq0sMtQwDNOj1+vrY7GYBduEetADNIAFZqVSmZAQLf5EiDUuLCwM2u32LmTpMJlMK8jw5NNEtgIcoCslJWXQ4/E0kthTghC6Nj4+7m6Fud1uNi0t7WT96OiISmKsQqFonZqacpPYBMGtrS3K4XD0t7W1Mb29vQFxFLIgP1Xc516ViAaKi4sZp9PZv7m5+U9weXlZj8JnulwuRlwTlmW1oVDoNdZewn0CPoL7/D7JHmViUlNTM4PBoEEQxEndNhgMi9nZ2VHx60dHRx9HIpEGvOwuXCPwg6fgCl/3kpKSaGlp6eLk5KRJEMQbDFlZWe+kRSooKJDh5wUIipZJcc/zDjkwEgsNo/hQ1E1NTRGpYF9fn91oNLajbYjrAlbwHHwWP8fFpp/qQ6mReup0OpLFHbj9XLY20rLJYnjB3zMzM7qzHuB6sB18B/dAXPoMF7snCGJCwjs7O7f+k+wr8Aj8kW6QtiKx0AgJgs3NzW/D4XD19va2MokguRzKgUJaEsy7Em1X3dLS4hMEcewr6KndgYEBm3iMREZmV3WqXjRNjYyM2JDdbllZWVi4bXJzc6nh4eEHOK03GRkZSxAOSGIfJsm8fH193TY2NtaQl5eXOMt1dXWfMHrOCRhGqSYejwtZJLEatNOExWJxklhhlVywPESko6PDrFarN2pra4fm5+f1CKDy8/OpoqIiHj0YAhs5OTnm1dXVBA2Z9MYmd+Lc3NwljF03il0F8ThO8hf3nIablCUwhAv26+zsLFVRUSHEy5L9BRBhnLwaYtfhXuCWf4AN0rf85VBYWEhpNBoh7q8AAwDXV1bc+qUyxAAAAABJRU5ErkJggg==","small/history.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKqSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIBZcEi9fvvx/+/Zthu/fv4P5f//+Zfjz5w8DJycng46ODoO4uDgjNn0AAcSILQzPnz////379wwyMjIMvLy8DNzc3AwgdR8+fGB48uQJw/379xnU1NQYzMzMMAwFCCAWbIb9+/ePQU9Pj+HLly8MV69eZQAZDnIhyHBlZWUGERERhmPHjoEs+W9ubo5iKEAAoRj46tWr/8+fP2cwNjZmePjwIdhFIJfw8fGB5T9+/Mhw7do1Bg4ODgYDAwOGffv2MSgoKPxH9j5AAKFEypUrVxikpKQYvn37xvD27VsGZ2dnsGGfP38G07Kysgyurq4Mnz59AqsHqT1y5AiKDwECCMVAkAuEhIQYrl+/zqChocHw+/dvBjY2NoadO3eC5X7+/Mmwe/dusKtBQQHyPihMkQFAAKF4GaSBi4sL7DqQwbBYffz4McOePXsYLl26xODm5gYOQ5AaEP3161cUAwECCMWFv379YgBFCMhgUCSA2KAIAcUyyDB/f39QzIItAmFQzKOnEoAAQnEhSBKY/sAGPHv2DBxmTExMDCYmJuC0BwrHHz9+MLx48QKuhpWVFcVAgABCcSHICzdv3gSHHzD5MLCzs4Nj1NbWlkFYWBhsOCgILly4wKCtrQ0OR2lpaRQDAQIIxUCQS0CJFuRdkGtWr14NDnSQ90DBAArLlStXgsMZFGEgOQcHBxQDAQIII6ccPXr0//HjxxlsbGzgSQmUwEHhCXKdlpYW2IIDBw6ADQMmLZSEDRBAWLPewYMH/x8+fJhBTEwMnDQkJCTA4QsKM1DCfvfuHTgYgGkSI+sBBBAjrvIQ6B2woY8ePYIXEKDwBEWUnZ0diMZaOAAEECO1C1iAAKJ6eQgQQFQ3ECDAAOM8PGxdt3IBAAAAAElFTkSuQmCC","small/import.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALpJREFUeNpiYBgWQFNL0wGEiVHLQqSZ9VD6ACGFzES4LgFIFQCxgqio6MM3r99cwKeekYBhAkDqPMgwqNADIDa8fu36B1x6mAg4sADJMAYou4AsFwJdpwB1nQAWaUWgKx+Q6sJ+HIbB5Ih3ITSJ7CcQHI5AVx4gNtmAXNaIlmRgYAEQP8TlekYiks1/YlxGbCyTDAa/gcTkZfTw+kDXkokRR2EQT6T+hcAYX0DIyweghQAx4AHNvQwQYADHWSwYOF++nwAAAABJRU5ErkJggg==","small/importprojects.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCODg4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCODc4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjExQjYzNTk0ODZBQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU2NDREQzBFODZBRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XI8ejAAAAidJREFUeNrMlD9oE1Ecx+9faBo8ldKrihWCg4REOZvQxSmLIEgW0cnFSTlEHDIoAZfiVDcHCaWdHDpkiMEhroKLiRalQyEuIgZFbOFac8Zez/P7g+/F41AomMEHH3jvcff9/X7v931PDcNQGefQlDGPsQsa3W43mlvg1F+++wnWwbf4ZhAESqFQUEzTHO2p2Ww2mj8Ep8EHEJJonASPwQoDyzr0PG+j3W7vFIvF3xlmMploLmHugg7XE8xMuEKRHFgELtDlm36/70Dwy0gwXoFkDK6Ci/xJ5f40z3sOPALP5Id0On29Wq2uouSFcrn8PCn4A5wF58EtsEUREfWjIwK7o45q2lKlUll3HOd2s9l8kcvlAi1x8FNgE3xigO/Ao6AfF4sGmrI2GAy2XdedSGYYL3u/I9Pr9Wxd1zX0wkv6cI9Z7O1TzAGvGo1GG4KX6/X6gu/7hmR4CZwD8yAPDoIHiUwnwRJ4y/UNNkdJpVIvpfutVuueYRiams/nn/L83sSsMhkT22WwDXATHACveQk+SrPpiOxwONySku/TFmLIFEWDGFLFGkWPgRlwgsYXwUNs4HvYaFq3LKvPUi+AbXCYZUeYzFgccBQ8Ade4DmkvCTyLqzgQQSnrMzgjUcAOheO43LfpVRE7zvIlSwu2mbJtezl+l02W+6cHMjK3ymwDNkYyPYLMNuHHVq1Wu6N2Op1/ea1m5Twh+LVUKr1DxxX1v3+xfwkwAN6PqutHQDy6AAAAAElFTkSuQmCC","small/importuser.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCOEM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCOEI4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkREM0EyRUM2ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkREM0EyRUM3ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6f29eAAAAyVJREFUeNqUlV1Ik1Ecxs/mBpsolhPtYmsyoibicLBKCW1XhkY34oUfELbKhBLKYBdRKKlkqfRBKiSOESUpZIkXBkXLHO1iiIEXidLa2CRmza/VNje39Rw5r71O+/DAj7Hznj3v8/84/wni8TjZaYXDYTI2NnZcJBIdFIvFMzg3kXgmGo2SgoICkp6evrkn2knMarWmtLS0tHu9XnlycrJ3aWnplFAoLMejayDInQsEAmRoaGiLoDBRzOFwCGpqau5mZWUtDw8PV+Tm5l4IhUIV1BC4Q/6xtglOTk5qEaYCDq+rVKr1SCSykQFgBAdB3q4EzWazurCw0KFUKhMfxYAbKHcliBC/2Gw2ucvl2un8PvB1V4L19fX2pKQkf1tb21laRVSYe3QRLIKpvwluqzLNm9FobG9sbHzn8XhOoMJuiUSiwqPDQMdC/3+H4+Pj++Hufm1t7Q2NRtMTDAapowfABG4mmuBFsN0hxFIqKytNZWVl5q6ursf08MLCArFYLAT9aMGRp+AlWAM/wYTb7X6en5+/yGkIuJuCXiMlJSUd2dnZgf7+/ibuzXBKXySCYDu+GsBe4AHyWCxGHc7AwPnm5mYrUvM75NHR0UPz8/NH0H8diWFgdYCrTMwPikErbg9Bn6pNJtML/C5vSw4HBgbKtVrtK/TfD74SKn4MH5d5Wz2gCnwEM1RUJpNljIyM3JqdnRUKecnVKBQKG1/M7/cTn89XDlFuizb2B1acM6BzwxVkVldXi1dWVpT8Kkuqq6t9fMHp6Wlit9tVNDdsNYEDgCb+KPgEnrFIUiEs4wtGMRhS+YJ0imRmZgZog7MlB2/Ba3Cb6oDvvKsZ2RREcqe6u7tPsmGwsdRqNdHpdG/Qi9wWDfUKE6RXcBBcYrPRhaq7NvuwoaGhr66u7klpaWknnFEXIbrvdDrXpFIpVZSCb6yQ79mQ+AwyMBfFmAGPYGBZwJ/Yc3NzaXBZhcGgRpGoQByCYRQniPycw/dl8JBdCPqSNIi1IseDvb29p/V6fVjwp78AbhkMBu6maFhR9GAPWEeYzpycnD7c+3tFRUXr9PwvAQYAIww/DYr+MukAAAAASUVORK5CYII=","small/insertafter.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgFlAJGEKGppbmfDL0Lr1+7vgBdkAVKO5Bh4EFsgkzU9jLMhY1k6D1A10j5T4beRmCkNNA8DJlo5WVyks0DIBYAYgWg1zegx7ICFOONVaDGA1AHgAwqAOJ6IF4A5H8AiYPkYQbGE5m4D0B9Mx/JAQlQDPYxSWEINEwB6ioFqkQK0EsPgNgRyCwE4g9IYXkAltAZyY1NaDj2A/FDbOlx8AKAAAMA4KcwMCZAAk4AAAAASUVORK5CYII=","small/insertbefore.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpiYBgFVAWaWpoGQBxAiRmMUIMcoHwDIO4H4g1AXHj92vUHSPIOhAwDqm+AGfgfi/wHIJ4IUgSUbwCy64kwkJEJj7wAENsDDVMgxcssUPoAkiEGUNc1Am2cAPXBAyQ1JEWKAxCvB2IBiiIFi8EJQCqeVMOAPnJkwSGnQEysYgNM1E7LuFx4gNoGPiDXUFwGJhCTkLFFMtXDkIlhxAGAAAMAyO0oNwUTYyQAAAAASUVORK5CYII=","small/instrument.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQVJREFUeNrUlOEJglAUhS0Ef+YIbpBtYBOEE1Qb1AZuIE1gThBO8NwgN8gNtJ9CYOfCER6G8hT/9ODjXZ94vPfcq5b118t2HA8ES4n5oAUv8DB9bj1yzwM1sZYQPGhxIBmbCK6GysWmwJWZbmT/NE0417+A3lXiH+OW14k0a07J3fI1LwXp+nPIgiHBrhF7cAYpKLi7jBVE3SllJyxVsdRAG6eK59FUL7s5THrnMZCy1VQP76AEWe/8PXU+JYuIGXbE2j3FDH++IHtEc8vsSjbCo9iFnZd1Mx1sMTsHR3BinPHa40ssDPrOVLBiVvoq6ZvLOIRgbVpyMXAuQimE8v/9KX8FGADy1EvPx8oQwAAAAABJRU5ErkJggg==","small/issue.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNzE4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNzA4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU3M0E5OTAxNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3M0E5OTAyNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KTvmbAAAAv5JREFUeNqElF9IU1Ecx8/u/pppTZ2DIaQiy5cRKvgyWAY9ZCH10tjjktJB4svo0quuHpyNEqEyNw3BJ1mEYcQ08cFgDcwYpj7MEau1NWg+qAv3R/uecWa3y9V+8IF7zu+e7/md3zm/n+zw8JAIbWZmhjidTlJRUXEFw9ugHVQxdxqEgBe8oxPZbJY0NDSQubk5olQqiYKILJ1ON8tksmF86kEAvAA/mNsALGAQ3AX3wKZw/T+CIyMjXaOjo8/Ly8ufYegBv0X7rbFNHgIneA8c4E3pB6704fP5Ojwez0RLS4v94ODggUhMxigZ9dF/7GCC47gOhULxV3Bra0vrcrkm3W63w263z2cyGWFUfSxvH8ETUcTzEOpNJBKTkUik6kgQx+RbW1uDNpvNv7e3J05rMxN7CUxiJ6J7tb29HRwfH79fHMdisaqlpaWrPM/TRJNCoSBeQ4/3FayDDJGwsrKywUAg0JVMJs9wfr//mlar/dnW1rZBpG0fnAKnQV7spAHo9foNlUqVXFhYuKgIhUKXTCbTZ/qGThBUM7JSgtXV1USn030Kh8PtSAF3rq6u7hs53qiICmikBKnJ5XJCNaBloJcixzMp/EdQyZAUpNXGNOQcQk7t7u7qThDcZ/k7C3LHCe7s7Ogg+ourr68Prq6umsQ1LbAE6AB3BCUofDYEAZGVlZULBoMhzOHtzcbjcWM0Gq05RvAteEorAjwWO2mFYH1NKpUydnZ2LnK44UhTU9OXsbGxvmKNyWTiNTeBDVjBdakdUVl9KIw16MQ4ekP9/f2u6enpXly7sbKykoiObwQpxnmJ/Blp+fX09AxQrWLpWSyWdavVOow6nl1eXq7VaDTCNbTrfAdx9i202lwuN4t7eGQ2m9eKJyxFQ2vY4XC48dpv4KHewvwHcrKZwSQa7OvGxkaeNliaz6P2hR5IvF4v393dPQRx2gimwGWgFbQvLZubYs1iCPA0qFJgnHBLtVpNUNO+fD5Pu3IUDIBFEGQssrko69w+cdh/BBgAi5QqRZD5d30AAAAASUVORK5CYII=","small/key.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQNJREFUeNpiYBjsgJFYhZpamgJAqh+IE6BCD4C48Pq16xuQ1TGRYPl+JMNAQAGI1wMtCiDZQKgmAyD+AMSGQFeBfLYAKl1PjgsNoPQCoGEXoOxCNDmSDHwApZG95wClPyArZCHSwA3QCFEAev8+1AKYgRPJMRAUAQJIbAWYRcAgaCAp2UCTy32ogRugLgIZeAEpPEly4XqoYSDNiUBDPuBTzETAdf3QsPpAjGF4DYSmvQJYEsHmPaINBBoGSlvzkZLFA7LzMjQS9iPlDFjsKgJdSdBgbJFSj5T6H0ANvUCMYSDAjC4gKir6EkhZADEHUvJIpLhcA3kdiEGliQLDsAIAAQYAia5NJ99y8TQAAAAASUVORK5CYII=","small/lab.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNqsVDFuwkAQBGIJyssP7gnkB6aixD8IdOlIqpQ4LwDKVCEvQLwgSUmFfwB5gUkXSxAyE22xWD6fIZw0utXeenZvd8612oVXvewwaDbb2KKce7vLsslZ2UAYA4c8/lPhCysCFso9B25Q5eacCt+A0OfTq1FCZrFZx7E9tbI+kPLKgHGdVSWL5IOwJMYAKy+pBJIsqpCYsWtWrP1XRw0NgjtsvGIL9vJnv/92EfIMMV8wh7Cfy6Y6Fr2lYltPpQfd56IpM+s70JFq1zIcV08Z2/bKRqRhhfiTgpYb9HNxpooOQwn8y4xXEQPXMF+BkQwjlnYwJnENhR91gY0QdeAL0fREBpEAU/j4ZB+BjIkRN/XJJlZDcQn7vkhi9SJhY6Ngn4CeutJWNZ8V3dKP6gbev40i5QQ/pAVGYQjMQPZwyns2cvWV+hemHgldfv0KMADs9Hi1l7uGXAAAAABJRU5ErkJggg==","small/labfunctions.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYyRDk1NDU4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDQ4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQxYmIyZGY2LTA4ZjQtNDdlZi1hZWQ3LTJjNTAwZDE0YmM4MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5RTBFN0U3NDdGNjIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pm9gsI4AAARsSURBVHjafJR7TFt1FMdvL+Ux6IMVK9hWoKUYEIIKUtiAjJUYNNCVx9AQ8fGHJRqTIQm4EN0CBE0ElIQ4sixAMC6BQCARWICAVQtZkEqLiIJS3EpxCC1pKQUK5eH3Ry4EzPQmn/R3e8899zy+57AODw+p/7smJiYENpvtspeX1z3cHoAXgAF49vf3qeTkZEogEJzYsx/nZHh4mN/a2qopLS2909bWFjswMFDq7+//Bx4FgxrwBjBtbW1xOzs7nf/p0O12UzRNUzs7O7Le3t5Mp9PJDwwMZCG6Jjx+D2wDLXgOqIECz97Hr/XYB318cDgcVHFx8TW1Wl0/OTkpzc3NHY+NjR3T6XSHfn5+xM4NVsA8UJL04cyyubm5Nj4+LiDBnHEYEBBAIS0fsVjsPT09rcDZYbfbL+HeiVqJYTJCSgqeAk5g88VVVVV1Izs7+25FRUXsicORkRFJZWXl1bS0tEWj0bjp4+MztrCwICoqKrqjUChWtre3FTB7EXwPPgW3AXFgEQqFc2FhYX/m5eUtEV8s0uXCwkJNX1/flaysLCOfz1+dnZ2N0Gq119ls9i5SL5uZmbmKYH6BveZUyUn9byBVd0JCAi86OlrL5XIXj5pSV1fXFozLYrEYEFka0vjc29t7t6enJ8ZgMMhgeAtmMvAu6CAlB3vgS9T35sbGhqGlpaUYditsvV4f2dzcnOtyuc7jY8+GhITYlUrlUfgdHR1PovBCpgk+4FWQCdrAN6S7Ho9nHllyRSLRQnV19Wf08vKyvLu7Wx0aGnofurLm5ORMHeckk8m80JAHOBIN/gyM4BEoB5eJTUFBwU/z8/NSZHQOUnuFTk9PH8DhdchDOTc3J4+JiXEeO9RoNL8HBQVxDg4OyEdIpF+AMvAXeI3YhIeH70dFRdnh50dkVE2bTCZpY2Pjm3jwGyTyAA3hHTuMiIiwxMfH/4pSFOL2HDNyRNwzIAz4ms3m/ampqWC8lzI6OppFLy0tidHRJBaLJcLL7q6uroR/TaKR0d7iqf9EwA522tvbL5SXl9/f29vbbWhoENGpqaljg4ODb8nlchsWgcRqtXLQaeKAwi+FLr+NTp5nRi0dvAOimRHkADlsAqGQMJRNTZPBRp14iOxSUlLSMtKcrKmp+RB1o7EglKurqyp0OhAvSsAnTO1+AHdJPaHhWXw4pr6+/iMskY+PdIjuOjkczkM4iYSIyfToS0pKquPi4nQSieT2+vq6C069GO2R8XsIbkIyG1DJAX5FQ0NDvNraWteRQ6jc1t/f/wFm+JmmpqZrmGM3xPoI0/MSpsXM1JFMP3F6AeSAIXzjolQqpRGQKSMj4+8zywEzScHpE2jQ04goYm1tLRL1/Rojx4dwn4eJCrxMSgtc4CIZBGynYTSmLDMz03wyy6f3IVaXkMfjWfPz82+hGX44e+Bcjz3pC5M4ptsBpCmITIUFW5mYmOh47ILF+1RKSooV6VIqlaoP2mRDX1oU+zuUQQeT68wsfwW+ZThz/SPAAEBa/RwAsPq9AAAAAElFTkSuQmCC","small/language.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrMUzFOw0AQvAR6QuHedISG5AWEjo74BSQvCLzASUkFP4C8AFFS2bwAuyFt6JCIhHkBzEpz0eqIzwcSEieNvL7dHc3u3hrz30+rztE96I7wOQUGQEe5cmC+eF7cBhGCSJLvgBiYCQGSl8o3BM7oT+AragmZkAESdIHgylPBOT4pcKxJXUJRZhCQwM4a2jVnKyaI37OXbUUWs19jXg1Y8j0TZwrSghhE18wdfiNkb3JdJuyc5VdiW+D/xVHasz/byiEqSqcFn2qyQUcTirJD7YSaVgDHDvCxiVBUpFC1ni7saQ3JEfCoWpVYx5Y1Vm+r1yiKTmDuw36A7VMnPcwRk7KSy00KDSf8BGUlgqaeNyj9vqK6ftOmyMQyEO46dx1Cyh1x+mO7Rd5dBsG73QDYN3yTNrHgLhdNUzbOgHogm/CN9X1rGEJYskdLKq1C32Hbo/DHZD7C4jdkf3K+BBgAWHuTbQKZ3H0AAAAASUVORK5CYII=","small/left.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpiYBgFgw4wE6tQU0uzQFRU9Meb129e4FPHQoRBDkBqPhArALEjIfUseAxSgBrkQIqXGbEYJACk6oG4AIv6C0D8AYv4wuvXri/AcCHQsAQg1Q/EAjgcYIBD/CCKl4EGGUC9Z0BpLDNB6QdAvBGHd0g3EOj/D0DcAGQaAvEGSgxkxJNU+rEEASjgH2LRcgDooAM4DcQTSY4wjYTCECuAJgVFIJ5A9TwKSujQNDoKUAFAgAEAnrsu4NHvnJEAAAAASUVORK5CYII=","small/listadd.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQ3SURBVHjaYvz//z8DPpCQkCBy8ODBtVxcXAJA7iQgnguT+/btG8OqVasYTE1N4eoBAoiJgQBgYmLKB1KLgdgbioWR5Tk4OFDUAwQQI8yFN2/eVKitra0DMkECjMzMzP9ZWVn/X79+XeLLly9pQIOfAcUbgFgTiEFs/n9AICcnx+Ho6Hi8oqJiKsgcgACCu/DFixfqQKyVnZ09F4hnm5mZnX79+rWqmppawO/fv59BlYEM3AXEGkA8H2jJQiUlpTMXL14MhJkDEEAsSK79LyUl9cDe3v4YiCMvL399y5Ytlnfv3u0AuvQ3yNVA/A+IlaDheBikTkND4/v58+edYIYABBCygQxAHzDD2EBX/ZKQkNj08+fPL2/evPnLzs4O89FGID6JpA4lEAECiAUtgH/fvn1bfO7cuXZv37511NLS2gX09s4zZ84wQA0kCAACiAnNhYzc3Nxf169fX3/q1KmfdnZ25x89eqTOwsKiDpRGxqAwVIXqR0l3AAGE4kJGRkaGP3/+/LW0tNwFSmMZGRk1vLy8f4FhiO4QUNB8BeJaIP6LLAEQQCgGAg1jEhAQYGpubq6aMWOGj6qqqvCnT59mAiOHAZiwcfkSxQyAAELhAF3yBxhmfDExMUuASeL+xo0bc+vq6lB0X7t2DeS6UCC2BmmZN2/eK2NjY3jQAQQQioHARM7Mxsb2HugqRlAOKCkpqb569SoXLDcAY5wbKO8D5EuGh4dfB4b3M6CB6U+fPv0IDC4FoP4HAAHEhGYgUJzxf3FxcU1ISMiRQ4cOGQEjZA1QavXfv3/XPXjwwPzXr19SwPB9ffTo0URgLgkAhvEXoAP4gWo2A/WyAwQQE3qkANPV76VLl/rv2bPHa+3ataUmJibHvn//fvzWrVtCwOwIit1HwLC+C6RPAbMcB9DwF0AXf4fKRQEEEHosg8A/oEv4gN7hnzlzpvOFCxdCOTk5GYB8L09Pz1vAIFgHzTWt0dHR06qqqmKuXLlSDVTHfenSJXuAAEIxEOg4RlFRUQagy/qAhYU0MNn4APk7gOH2Dyinr6KiIvvjx49zwMhjvnHjxmegli8iIiJCwBTAqqenxwXM038BAgg1yllY/gELCLbNmzebvH//XiMlJeUmkL/n2LFjoAjhmzx58noeHp45wAzwHGiQPtBi4YiIiFnAXCX27t07NqAR8wACCCNSgN77tWTJEo9du3ZZA714BmiQETAYjIBp8jkwvK4CLRAFJi1xoHKTrq6uv0A2/5MnT9iAcjeAYssAAgjZhYxAF/4BYgYbG5tDwIBWBhocBsx6TKCcAkyXDIqKigceP34sAGRLA8N0PTCsX37+/JmXj4/vIzCmfYAO+goQQCxIBcOfs2fPKpSVlfkC2W+AMfkKaBAjyCBYIQwqIICG7gW60gYYAdogMWFh4XVOTk4cixcvBsU8A0CAAQCBc8YuiRCcBwAAAABJRU5ErkJggg==","small/listall.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhjOTk0MWViLTBkYzItNDVhYy1hMGMxLWM3NjMzYWRmYTA4OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDA0OTU1RjdFN0ExMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pjb1IHAAAALqSURBVHjalFVRSFNRGD73bs45UQcmGxPUFptr9BQpjGRj9SJkVA/t2QcJwYcQp0i5ChTqqYdB4RgzKn0RhpQGJT1owSKbTB/WGCIMH0RzYzDmYu7e3b4Dd7Ld7mb98LFz7jn32/d/5//PZQRBILVicHDw3Pr6elCj0Wgx9QKB0loulyOLi4ukp6fndD9LzgiWZe/j5y1wQ0Rr+bpara7Yz5QUxuPxLo/H8whD+oBRKBRCXV2dEIvF9Nls9h6I9/H8CXARoOOWIqKjo0PtdDq/TU5OvqhQeHBw0A1YR0ZGAoC/t7f3x9HRkclsNt8uFAr74jZKuApYgFf4k9dGozG8vb19p8SjLFMrGAyGhMPhCNFJZ2dnbGVlxba7u/sMSgtUNVAEjKKPX+k+i8XyOxKJXJMjJMhAURpD1Yler3+fz+ezyWSSr6+vL2X0Dvhetq/CRKXE4MLOzo4uEAjYU6mU02q1riLtT+FwmIiEZwYrUcg0NjYeLy0tPd7Y2Mjb7fbI3t5et1Kp7MZyOaiHJvF9oapChmEIx3G8zWZbpTU2PDw81dTUxMNDqRBqzTHgAfiqhCBjtVotOz09/WB2dnbAZDK1ZjIZHw6HoLCrZamsmjKUcPCs2eVyfVhbW+sfHR19w/M8+Z+oYEeRK1QqVRqqGNoBbrf7YTQa1Ui7QRSSA2ZqpgxC2MgIY2NjU4eHh2a/3+/S6XQzUuPFmuSAE2mWfx0K6qqwsLBwC9PzwWBwfG5uLrq8vExw+v9UKVJCGsVEItEMghafz3d9a2vrbkNDA5FRSN99KaqUJ4Q4pq2tjUDZc1wW7SibAcw/wteizDVHlWVrKkQBF3FBqJDilXQ6bRkaGopj/jkUChGZg5HnkB4K0juZn5/vRwm1e73ecdTjZeqtTMoUP2udMgOFHED6+vq+QNEFELvQeqxMp5Q8fIq1jCwhCLjNzc2uiYmJmxgn0TW/sJnBnUeqfCbow6v4BFxCR536+EeAAQBI0C7G3S+NuwAAAABJRU5ErkJggg==","small/listannotationpatterns.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzM4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzI4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkJEODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkJFODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B7gfeAAAAcVJREFUeNrs1MGLElEcwPGZxslR8RA6gdNWEoikgQc7dCiYS106tazUrdtCUBEt5GE79gd4qIvHhUXY22KHIigSotKog8WGlBPEkkERBDmSO85+X7yBuQ7uYQ89+KDvN8PP33vv91R931f2chxQ9nj8Tzj/iPV6veB7Cn9Cz3So+BuKJTEOJp7nxTOZjFcoFHaCmJrP58XnMTzCdTyVz+4jiytyfhprqOGDCEwmk1alUvnabrfv6Lr+7yXNsiyFyVUUkMVDHMUyTHTxHbeQg4FnuJxIJFZHo1FpMBi8KxaLQ6pV1FKpFCfxY7zBRZzDIpbk8t7jHl7hCc5jCxfQF9swHo9PGIbRajabK5ppmrcJnsJbHMYRmXSIbZyVSz8uf9SGhQ18hkO1X1zXveQ4TlJUeJPgS4jTWZDV/cS63LuaTLCJXzLJJ3mArtg2cbjiHQ7JEAmjdIWovIPXcitmMj6Tz3KxiG0mKvRl//qhhAdFjAonURN+xAscwu9QQmM6nabS6fTzqDdFNPANfJO9e1LglC1N0/qNRuNu0NhRh0h2DWdY5qxcLnfq9foD27Z/qN1ud667S0KlWq0qwU1R9/0/9q4AAwBgS4W4ETBmTQAAAABJRU5ErkJggg==","small/listmoleculesbydate.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODA4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwN0E4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyNjJmZDgzLWNjNmItNGQ1ZS04NzgxLWRhNzE1MDAwM2JlNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzY1QTQyNTdFNzgxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlUfev4AAANHSURBVHjajJVfSFNRHMfvnRv752wOttZSZ25Q9BDzwZ4WRQQb6NyionrwwT1kRpMofLA9pcmK7KU5CYqBLyXKoMlw+pKJEFpNCAzKzZZMFkwkt3Q65+76HrlXzDbtB5/tnnPuvud3fr/f+Y3O5/NUMRsaGjrX3t7eIZVKNzG8A+Z3r6fTaWpwcJCqq6vbmeNzD/Pz89Ty8jK/BIZhXqvV5vr7+6/RNH0bYy24Be5RB9i24Nzc3HGLxfIAgmGiB0r1ev2RysrKaRBOJBLfMXcGr3pBAmSBCKyBLpDjBHnkAz+ogEfqYDD4KBAIdHd2dgZXVlbWHA6HW6PRlGWzWQleewzKgB88BU+ACpT+4yHZQaFQJBELsiOlVCrf+3y+042NjV1yuTwnFospxFqIpXfgI9gCNFgteGRiDMPQ3HN1dfXq8PDww9nZWcrlclGhUIgSiURkfXcGS1jRv4xXLLgCgYDKZDI6JKsFz8I9YkWNt9+i2+22Ly0tGZGQNxheADZw+MAsFzIkgkqlUscglsEwAFzgFyBF52TjyPyXhzimuL6+vgPeKVE2LblczoNpK/hA6h0cBadIhhHb9IGCvb29TfBMKRQKv2C4yU7HWbH74BOYhliT0+l8hYowkBMVFTSbzdORSIQUeFQikZxFBZDp6yAErgA1KWysy2ZmZi63trZOtbW1WTY2NgoLmkymz6Ojo3fLy8uF4XC4GVl+iWmCD9QCA/leX1839PX11cKBkYGBgddjY2M1RZOi0+koxO4kILVmAuS2VIGbbA0y2IiHBpJdWFhQy2Qyqd/vby4oCNdpr9d7KRaLVcHsuJo1OF4Flk6A3+AQSJI7Dy9TWNeTHoANDAUFEeirk5OTZgT9KzxcRMeRc1eUbQxcM2AgmIEYNy7ZiSGPx9u5CUhEDC/RaBhRsIUMhnftx7C3hmHJcbcI7y1yHvLi8bhiYmJCQ56NRmOEz+e/QA3+RHLI3Ai4uEeMfOeRtDyOSpMMW61W77agSqWKqdXqHx6Px0EESTxw3E2UDj8ajdL4ATnmW3AeWNhjc3dekEwmKZvN1o3qmKL3+wsgZrfbqfHxcRIGmu3YN4Ce7TQMPPvW0NDwrKen5zlpKH8EGAC/f0ohwunqawAAAABJRU5ErkJggg==","small/locations.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NUM4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUI4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxOTcyMTczODZCODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxOTcyMTc0ODZCODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PTdd4QAAAxZJREFUeNqElVtIk2EYx7+d3LRs5SQJL5xiOk2TJEGDSNaohMowVMjsAC66sEGOjqg3UldlQlCK2KQaTu1ijWgQNtiVI2UhOyAMh7VAanlYy81l2/q/8To+xvb5wI/xnv7f+5ze8eLxOMNldrudWVpa2imEYRgAiQPRaJSpra1lcnJyEvuF6YQWFhZEQ0ND6qmpqXPhcPgnn8//hWk5+Aqeg8+hUIiZmJjYXtBqtUrb29vflJWVRcRi8RMIujC9BhTgKHgFxsCD5LP85ImNjQ1BT0/PaH19vdtsNp+uqKgwY47citzwE3gMjoNzoFMkEnEL9vb2nlpcXMzv6+u7CTf/xwm2A+xnbfsOLhBB7JVzCiJ2l5qbm0cLCgpiwWCQWVlZUQkEAguWngITyKNbPWB6cnKyJa3g/Pw8z+l0Fra1tTnI2O125yHLDxFHEqvz5HvU5S17D5ePpRUMBAKZy8vLEbgZoFMHQIjebJ1mN591xA9EXC7/ARkwCRlIpVK7TCbLiMViVzEsAXfpLbdMDHhpBcvLy/9WVlZ+0ev1h8lYoVCsVVdXa5Hl6xgaaHK6WEdObm5uzqYVzM7OJpWvMxgMl71er5B2wzR+joCzoJWWDzFSzQ1IoJ4zy2q1+gOJ1/DwsJo1TWrnW9LWe2BWLpc7OQWLioqiAwMDt+F2l81mK8zKykrVTHWgkYjCZe7CJtbU1DRbVVU10tHRMTY3NyeUSCTsZeLqS3CH3HrbTvF4PLu1Wu0jdMCJ1dVVmd/vH0Fh81lZfU2r4Qa45fP5BGkFLRbLXpVK9Q4iGYhhp9FoPIisS5HlF1jOpZn2gkPgPj6kHBwcHEFHiVMK9vf3nyktLXXodDoNsu2uqakJoxZbkOlM8lwBH+lfekMbOqjB4XCUoKPqUgoWFxevI8j7koqVHL5IXdQkRWgP9pMA/04pqNFo3sKNiFKptI6PjzfOzMzkoh0ZzJFUGllbC8G1SCQyjQQa0RCJ4uYl/wWQMuju7r4CV1pdLlccZcPDM/YDS0EgA7sAScQ6XuxnJpPpI+KcOP9PgAEAQLc6rX2E4XgAAAAASUVORK5CYII=","small/lock.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE1OjQzOjUyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDg6MjQtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ4OjI0LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjU4MzI2MGU4LWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmFkZDIxYzNkLTg4NDctNGE5OS04MmVhLTM5ZWFkYjcxZjU4NjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDphZGQyMWMzZC04ODQ3LTRhOTktODJlYS0zOWVhZGI3MWY1ODY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTU6NDM6NTItMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0ODoyNC0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnzHpYIAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAQpJREFUeNqslMFxwjAQRZ8ZCqCD+L4H6ADSQToIVJChAkMFKSFOBSYdmArw5d9JB3RgLqsZTSYoduR/k2b19CV9bdH3PVNqPqTIzFbAAugk3VK1Rcqhgxof3oAS2EuqRwPNrAQuwDGCdcAHsJN0+m3dLOG+Ak7AEngDngIMeH+0KAXcAF/AC/AsaecblNF1pI9sZhsHBYe1jz99bgkEUAt8A0g6PAIegDVwHpGUSlKRis053jF6oBXQ/oyNmVVD7zCGNe68+at+NuBIJXD1+CyygZJah16ix8lyGLSfxGGkzmOTB4wawzbKYFa3ufp3C2HOA3ru2px++Gpm66kabD3Gjes4uMH+R/cBALm0WdocheKLAAAAAElFTkSuQmCC","small/log.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQpJREFUeNrMlMENglAMhpFw1w3kihdxA5xAmECYQJlANhAnECdAJ2AFTnIUJxAn0L9JSRpCyINg4kt++tL0fbSvBU0beU2GHLIW1gwmg2woLu5F2ApEYKTIXEIEJdAZqiAP4EpvBB4UYBvI5X0JrXm/p4fRjMZboo5SHZgdQ7bQAwogE7q0Hfh03Rv0gnzh8+kMlNY+vUcvqAlXVJAIn8n21AuIDI58HYHwuVx+KWN1BRiNBpXpCZ/J3Q17A7mjCbIrxQym7EuawSrAKfQWMCq/ksMsl6EApJIdwOacbS7LHwK8sX1Cq7r0wUAAYvpeVWdLH/tv8/9Ao2WQs54Muwu4HphYrv1qfQUYAFOlScpWjN20AAAAAElFTkSuQmCC","small/lothistory.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NjA4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUY4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxMDk1Y2U1LTA0NjctNDI0Mi1hNDk4LTc4OGVlYTE0YTk1MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMERBMzAwNzdFRUQxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkc9OyIAAAM+SURBVHjafNRrSJNRGAfwublU2GoJK3KBugjToMtsMUJoEPlphky/daEGRjUqCQTFCLO21sWyQc6t0oIIt5Zzy5WXsDLQCX1YkJJdRoKJNtJkYZubW/8jz2Qu6YUfe9n2Pu85z/mfk9LV1cX5z6WALcCHGEzAK/jDflxYWOAoFApOZmbm0gMpBQUFyUW4cBiOgABmqEAqrKXPbjDNzc1N2mw2jlwuX3o4NalYHrTCKrgCQ3S/BkLwCzaCFjxQnZ6e3pY8mvhVCH30diVsgKfQDhZ4BJ1wEGrgGI/Ha2xubj4dDAb/GaEY7HABXPCaRlMNIxBhLaPRHYVBOJOWlrbHarUOikQin06ncyf20EKNPwkf4AE0wHEauZ/6xxblFi1UBxttVlZWdHx83OJ2uwulUukMm/JuKIJKKvQcrkMb9U5PbTDAN5rJb1CHQqEWrVY7lJ2dPdLU1FQR72EV9MN6kNM0zdSzevgIGpr2PXrxDbZgkUikr7e3t1KpVDbY7fbysbGxxYKl8AzKgYUyn7UCniQsGIsNj+7fwwv2koyMDKPX6y3Jycn5Eg6HV/f39+/k0sJMgoxGWkQvSLwE1OP49RIOcLncS36/X4Bi87m5ucO1tbWd8dhEKW8sayKYpe9ZdBrp+4mEgvPsOxSSYFG61Gr1lEajaREKhTGeWCyuw48PQUp/HoWtVEwHA1Ab32507YJ1yOG56elpfSwWmzWbzVVlZWV6FhsffrxJK8gWREUBZqt9H6ZW2OM2aGJ5xVSLPB5Ph0wmc7hcrgo25du0ID0U8B1wjUaZskIv2f8/w1tMWa9SqX44HI7NJpPpBLbhYrAFtDPOUy9bKZtskU7BV/BSS7bBGwr9Y9geCATC6OEdg8FgZgW5FNLLcJe9Fa7CO8roIYrPTyqkob3dQzsnH0X8Tqdzv8/nW7aXO+hAGKDPUQpvkEb/iQqcpZFa4WI0GjXy+XyhxWIpjR+DicdXJUVkmO4VtHP20n2A0tBHxbtxygiMRmMJdkpg6bTBIclJKsrCXUdHlJPaEKQW5NF+38SONjxbL5FIQokFUouLi5Mj0U6x2UcRqkk4N9mp46Ct9x2HA0cgECx7+K8AAwDnGhxWw/x4LQAAAABJRU5ErkJggg==","small/mapping.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEBSURBVHjaYvz//z8DNQFAALHAGI2NjXCT6+vrGQlpxKUeIICYsCk+evQo2c4GCCCsBlpbWzOSayhAADGAwhAbPnLkyH9ccvgwQADhlSTHUIAAwhspjIyMJEcKQAAx4QsOKysrxmPHjmGEJTYxGAAIICZiwhg59kEYZBEu9QABxEhMwgYZAvI+PoNgACCAmIgxDOZ9YlINQADhjBSYq0BpEmYwjI0vUgACiAWXq5A1k5KTAAIIZ07BlXsIWQYQQIzEljagpAJSi88wEAAIIIIpH5RbQK4iNvcABBDRkQL3EjT34IoUgAAiOVJw5R4YAAggoiMF3VBccgABxEjtKgAgwADfKS5UGWV+HQAAAABJRU5ErkJggg==","small/markclosed.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTkwNUQ4QkI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QkE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDNFODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDNGODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NxLYkQAAAilJREFUeNqslT2IE0EYhmezm2QTjYWFiIoG1BCikCJoVK7yUM5GURAVlETUQq08m3QhjRCEgFdoJ6JY+NcEFAWtwzVaqNyCCEoQ0UILNT+eu/GZ8F0ut9wld5CBh8xkv3ln5nu/2TU6nY4aZQuoETcjl8stJ04HbYQp+D33Z7vdVsViUSWTyXnBeDw+TOwIXAcHvsGFuQeNRkNVq1WVzWZ7wVY0Gh0kNga34Sv8gTPwDm70chZYmDVrgNhhuAmXYDVsg/1wC7bA5GKTlhI8C9fgNLzyPTsAz+COjgsGg51hLl+EKzC+iJhu32EXrIG79Xo9tMDlVCp1jt9jEISI5G0GPkJ4iRO4Ot7zvHHTNGfQqDM2bdv+oQWfinvPJQUNEQ8NcR89r0HJRDi2yXjWcZyrWkDn4CU8XGkRN5tNVS6XVSKR6I7z+fxEQARtX+wqydHAZlmWqtVqEXYWky1bflN0aeyF43Ae9NK7xbw9sFnyvE8Hh8PhZKFQmCqVSif8ZfMXNsE9KdzPsBMmdLLhNVyGR/BPn0766zBiA8Jv/IKeFK+eXIMdssAv+CI7c2SRkCywVhvRarXec6dtv6AtE8qwHR6LSfqir5fdnIRP8AEOwX1yNpbJZLam0+kX/YKGlIpuT3w5ne7rV/r6b8XlB5VKpecy93pWv22qIjotR152Y4eKOlaxWNdkF7dP6ffhUQYHpZhX9jI1DEUOleu63SEG/TRG/Qn4L8AAqCGZMDJlqdwAAAAASUVORK5CYII=","small/markfixed.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAadJREFUeNrUU7tOAlEQnV1rkm1ITGgoF6u1kFYorcQ/kC9QvgCoLDVSaMdSGSuxUiu3EyoWClk7GoxGik1oDJVnklmzTlgexsabnMx9zD135sxcoj8eG+teyG3lnHQ6fQHkJh8TT5+ba5IdwvSAEXCE9fGvCXG5BnMKFIfPwwpboCqPrJcyLjVhSsAeyDq8h3TfkPYLppz+A6+XEoLIgvMTppvAPXCLi5/ROeYBzt8xvYK9xjo0F4kP8yh68WC9brQfInZh2kAzUUNFlgWcbqfLRwVJX48++8xNWUS+Ay5Zt1QqlZ3NZjToD2j8OmYXbhsjahnxPwEq2PPNpErKliWRkeu6ZNs2Nc4bJNUtSbRR5Tl1MlQlOewyDn3Z60Wp8EC0lMlkKAiCkchhAQfwH/3oQ2lQR17yY0FzpH5+J08tt0XT6ZTJuABhdB4n+45QdKgC23AIEwrE0XjycBt+5XkFNWOl9+SibgtfIm0LWT2JTLdNJaalHkxUYB+QnS36DIb+GfL5W7hYU99O67ucUGlWB3alsYta21VS1prtSzVXJvsf40uAAQAbSLkTAMga1QAAAABJRU5ErkJggg==","small/marknotfixed.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDQ0E4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QzI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmNjMDk5ODBmLWRiN2MtNGNiYi05ZWZkLWRmYTg3NDcxN2Y4YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMEUwOTc4NzdEQzUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ps1gnXMAAAJxSURBVHjarJVdaFJhGMffc45OcTjWRCop2EUXYniRfVxFdGW1rODQ7rqQQu+iQXSxi64G08H6MIK+sY8RCUHkKKRkFJGYLQiKQJhB1JAJitD8ntr/kWd0oEUpe+CHvpzz/t/3ed7/8x4pFosdF0IMAFl0GZIkiVKpJJrNZmdsMpkqksPh+In/L0CR3ulGsNVqCbvdLsxmc2eYTqf3kOB3DPaCb93usFwui2g0KpxOZ2fs9XqDMqfaL3qMarWq3bFBFusc3QhSXn3/K9ji36PAssZ7R8BLcI8OU/tAUZQ/BFdADZwDIfAQDGneOQSC4DAfHDliy6oYbKMkk0l7vV4XsiwLxWq1nsGzXWAr72QQTIInYCe4RgcI3oM4II9cBB/0ev1iKpWaCAaDNzGeh+hGHa/2hidR6lPsybeAHOsD78A4eMxZfAXXYegv+Xx+IBAIqJFIZKJWq0kkuBt85IJfBTPgBqiDRfAaTHPKx8BpMAuWKpXKWCgU8rrd7gK8WPD5fM/I2FSOTeABWAbD4CyY4xpOcklGwAFwiev9lDoFZt6Qy+VOXkBkMpnNJEgrnwePwGWwn9IBY4BWU8FBXkyweBjcQi/fLhaLMxaLZYfL5ZoLh8OnZC7+FRajeAVO8GGMcprLmlOf552OoEs+q6q6EI/HtzcaDT1SvkM7/IGH+7jQ2tgG6OJY+ouH+9HLo+jl+6hfC4KSx+N5ruMbxrjGhIV/NEUJ3F3tZViobbPZPq1rL8NGehJsc6f0FEbj7+TQKSs61GGQT26o2wsWRhaJREIUCoXOfZDNZoclv98/yyZu9/IJoBqSH2m+wWDo+yXAAPMw3kRKlHogAAAAAElFTkSuQmCC","small/markvoided.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDczOTc4NzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDg4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcxZmNiMTcyLTNiYWItNDVjNi05ODFkLTE2OWVmNzc4ZDE5ZiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDVBMDdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pq3908gAAAJySURBVHjajJRNiFJhFIbv1SwzHIUwgihRaxiEAhvERUVGtShKc0qQnMVsDPqlYoQ2LoICKaUa6MecwJiosObGbASTosXsxo3QYkgCwyDH0oWK4+DP9H5wHET8uQceLveec9/vu/e83+GNRiPXJ06Cq8De9fw3eAFmq9XqSjQa5cxm80ZyUw+hveAe2AeWwAVQAE2wGRwAp+n5rFwuf9r5Mt+1Q1b0CMzR9S/XP060Wq27er3+j9frnbJarZVuQQcIAzeIcyKC5/npQqFwX6lUfkkkEg6tVrsmodwo/ReXWDHEZK1WuzYzM2MyGAwNn8/3BPcbO/wAfoI7IsWOsXfQlHPxeHyxWCzudDgcS6FQ6LxUo9EcZ6sBD1gVIcZ2sAAu1+v1uM1m4ywWSyWfz4/EYrGz7JNvgkVQFCG2HQjUMKEz4XK53qdSqVEJWSAhQkwGPoFv4GF3UqFQ/MDXlpkg458IwTegBK70So6Nja2bTKYSM/Y6aA0Re0CGPzyktsEEebBlQNEl4ARHBjWtXC5z6PY2CZ3N/X3qTtExdFJd30in06pkMqligs/BmR41B8FrMAWSw35wNps9pFarm0zwFdhBZm3HLvAR+EBskJBUKuXgRy4YDN622+3zTHAFPCNv8WSPBfJZaNjOVCoV5/f7JzOZzG6Px/OyPb7C5Mc56voymB4mhtHFCYJwNBKJPEY4dTpdpXPabKXBwKyhA79ETJupXC7nn5iYuIUh8Y4t0DlgV2lKs65+Bm/BPPjepaOmRW9guuwJBAIX3W73V5lM1nNirwEvNeQ6NaxGJ6TBThgYIXMLzWYzPD4+XmqLsfgvwAB2R8ap45DnpAAAAABJRU5ErkJggg==","small/meeting.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNqsVN0NgkAMBsMAt4G84gs6gTiBuAEj6ASEEdzADcAJvBF4gkcZgRFskyNpmvbIRZoQ7qf38fXrd8SREtkhK5StfhzGOQoJD5h3DyNZAU7hlbJlA+tGY5mskE3hoFVYWunALto4REBkBSzuWF4ooK/knjUBdetgXsJ40g7FTBtkVDlmHQD0gnbGASIwNuZFG8QBP/BaGGHSCZInofNfsoQfvmkaUo8Zx4JHxealrylcG8kaVtJaA2wY+KQ0i5r66QOsqanhaQXAltmpFrvs7NAqJb7d+Mp0XuKy3Cjqw6NirYKUWHhyLC85V5IbtIWzRqPk5JKG5o8rbEJ+DnsyPofc5YfCcg7M2TZ+AgwAadBRsznoNgYAAAAASUVORK5CYII=","small/memberusers.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NjAyMTE5MjczODUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzM5Nzg3ODhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzM5Nzg3NzhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZGVmODg0MDktNWU0Ny00OGMwLTliZWQtNWMzMmFiYThjNWMzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MDIxMTkyNzM4NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uaRV8QAAAqVJREFUeNqslF1okmEUx9/Xj2k2aQUGlRdDpYbMCyHQi6IRlrDIktFVXkkb0SBiVti6CCTyRqqNKBZEUY2a0o1BoTPwLqRV0AdBYQxbBa2kcoloav8j5xXnfOumB37o8z7n/Dkfz3nEer0u/M8ljoyMSP9VYBL0gzvgyj981aIoThQKhX6j0TgdCoWmNBqNIPb29jYOwXk2TIAjLHpLTgxcqNVqVb/fP5tOp0edTud0OBy+LVqtVjJwghNgiB02cIQ+sNRBcDs4WiwWD6RSKaFarW50u92XEomET8EG+jbHb6AMNDIRdoMfzVqpVItY5Xw+36U0GAz07QvYD7SgBo6Bz+ChjCDZDyFltdlsrkej0TG73f7J5/MlpAirYBU4BE4BL1hoEbCAXRyZZK9Vq9XDsVhsPJlM7lMoFAvYNzrbxd2dBZfZYTWYAe+AkWtZBKNgHIxR9KVSaSoSiQhItdvr9c64XK55SjnAAqGWiCrgCbjOggfBTbAI7oFn4FylUhE8Ho/gcDjKJpPpRTAYPE4pH2bH9kXRvQZvWxrwiEux4joNDg6+slgsX0nwA3gvU3xqyk7Qw/u93LSX7YZarVZAtk+phuuAQkaQGrUZ3AcfwTbwk+2rkpC0cB97SHAenAQP+O41RhLouPh3wUVu3jVO9zRIKZXK35lMhpoi5nK59dlsdoAmhaIYBjs4Hem12MSd3d3yTUr7KgniHmrpHup0OhU6/j0QCExKo9dpTXCqqfYHhaM8g9HLxuNxwWazNQ/lakejSCP0vMNZnZu4lTaIbNmhnGAX//6SOV/ihq1YcoJ5Tm1Ph7M1YAC86eSoQh0EmbTO8nQEeXKkANaCGyBDvmjM8gLPzc397VWm13dLS5cp6gJ4TN9IrK+vT9Dr9U2HPwIMAMmq3eljTdOIAAAAAElFTkSuQmCC","small/merge.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBgIoKmlKQDCxKhlIdLMfiidSEghIxGucwBS+6Fcw+vXrl/Ap56JCNfVY3EpTsBMwHUJQKoASUhBVFT04ZvXby6Q7GVoJJwHGYIm9QDq9Q+ketkBqvkBmmEPoHJkJ5kGIP4PxQ2E1DNRO80ODwP1kdj2FOUUaNK5D8TI+VgRmGQekOvCAqhhIAMOQMXyyXIhNJfMRyoUHiDl6USgKxcQZSDQIAVo/k2ACm0Aag6Eys1HEj8ANfgBIS8rIGlagFxkATWD2BOQcpICsS4MALkAV1GFpGYDvgiiCgAIMAAMj0aUTd7tKgAAAABJRU5ErkJggg==","small/mixture.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFDQTQyNTM4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFDQTQyNTI4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhmZTRkMzNmLTRjYTQtNGU0OS04MGJhLTk3NjI0ZDY0NDNmNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Mzc5ODJENjdGNDMxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnZx3D4AAAG/SURBVHjatJQ/S8NAGMZz+deYonRQcBAsuJRIoSCKg64Obh0UKTjpUnDyG3QMLi5VcBK/g6tbqSAtnbqog4ggKFhBatKYxOfqG4mhpK3VF35c7nI89753zx3zfV/4y5BrtdoK2g+g0ZgXwSUcmudGxrtjHiKVSr2ydDp9g4E5cAk6JMxIXOKLUp+L/CiHMSZYluW7ruuj1fL5/IWs6/oy/plgAmwDi+aLQAEqtVIU27Yl0zSlTCYj1uv1pWq1uslXfwa74Aycgq1Q6TbRM5CZkMvlhGw2K6DiZKVS6Yj0j5dyAmaHPQSUGrRqUFYQGm38SCEKfxz/LsiGFdC0L/tKkuQJ5LFwcJOOA4NOOViERRZkJMIajYaIA+m0Wq2kKIpeVLANVsH5INklEgmhVCpx+1jFYnEffVuO2YYr8ATW+4lydyC7bua9BIPrdQCuwQyZezFG9/tKyjGTjsAbmA7t50i2mSTBQ6D/VtCPZM1foZ0BdBTS8uWIB3n/luzDv8eIfnGnKMoDryQs2KQD4A/EApgn0bgnnTmO0y4UCk08XXvw5SMzDCM8YQ0cg3vwPuDN4Q/slKqqL+VyeeNTgAEApJORZujlk1EAAAAASUVORK5CYII=","small/modifiedantibody.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc9JREFUeNqslLFSwkAQQC/0zGCbNNglNtIY7AwG+8ReSA9+ADZWgh8AthD8AHqBwZomNJJYoTMkNQMfcO6eSSaGKJkxO7Ozd8nty+7tZglJIZTSIqhGshKA9UFXWcFK2+2WrtdrWFIjC+Cs2+vS1l2L/jtKACgYnVyWqXQipYoyd4B5P3wekt1uxza9px6a+l8OXPSuwBRAA3sBIKV6VQ2BKOOXMREEYQDLT9BX0A3HcYsQiBUEa7iuSzzPI2hdzyWO47A12qiIokjkM5nwAk8kUSI8z+MH8BVCPxCI0czAsVQ36mE0qqqS6XSamFb8XfuhTTRN28CykoNw2QK+vDAHJsnn899Olyoe2oPVbmosyhgMozvG1FlR4lB0wDTiUHTGVDHlGKziM/bapABq2bZN9WudTiYTij3YvG1Sc2gync/nrI1GoxG2kOVf2X6Vo9WGe7TK52WWfqPRCO9V4AXSeeyw/fJtiY+O4pEl9WEhqCw6RlsGqx/s/TOlNI2t2I794wFGFhQrhENLgRTTAE+DCKOF0TWdFSMAO+9OIjCpMFZQBF/6/jxUcFDgv42DAs/gPg2QolMAShoY+FH/zOrgdPkNlHDWyGzo/iVfAgwAu/ZNbJxtCZcAAAAASUVORK5CYII=","small/modifiedprotein.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNq8VL1SwkAQXoiFFmS0YMYZGspgRSOtP3mB8ABBfAIfwfEJhAJbkTwAsbRghhoKUwkdNMzoSMGQF3DX2Qt7l1iEwp3ZS7KX++67b/fWAmG1s1q7XC7D+nv9CXvagfFdRX9E4FsVmH3Mwr0AEeQYHxfo9Bxy+Covw6I6Kj4W6JdiLkJ247yAFg2oWYTafTHgIc+dYuw1r56WemHQIwbtoL+hOxjPxbJgZlkk515MkZYb9HcjFgm9yboFcwdOzoKTA43zBkymE1p8g942AGnjZxE7KWaw9hQYme/7wN8JmOd56lWeoo9J3GQB3smFtm1rsVKpBO61C6x1VR43KRtxXPqprr5bfku9JuXU9JqpTdDGyC5KAbJOoLRzHAdWq5X2A0sAUha0F62wmV01S6cw3N0813WhUqnAaDSSeyyRXT8FaGTwd+F8PqcMJzFiHMcxDENZKTt2JqCmCQ2DYKAxoYHYEaiwzl93WdNku91qx0V7oKH31AOzVLIYSnakxzIIAvkfLQqnk6mZpG6qfSG7uiwVpYnULouJLBWzH25k36OWxddP9sIooz8u4T/sR4ABAJKFlVhez7PTAAAAAElFTkSuQmCC","small/molecularlist.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARtJREFUeNrMVMsNgkAQRUMBdABXPEEFSgXSgVKBUoFagVoBUAIViBWIF7muHVCCb5IhIRtkF4iJm7zsZGd4+5jPGsa/r5kqwF24IbYdUFavKlbFzzUuTYAcCJlcXyE+WGG7STGkzIfvDHsv+Qr4ApVCCqKLfKAGYr6IVBbAif1Bl0Lzm3R8VILoCvPQOqYL0r5fNvucID2CdAvTgn3RqbKpEbPm/C5Z4R3k6ShCkDjYCBGTJbwPV8gtsgEyyiefRbDF2D60ACHlVIxubM4TVdmGskR39FRVFiDz+HcffJxT9UeNHuexpmmgaaGpmVIUGjOb2qSlOJryOJTcMmLI89Wl0IG6JkdPwGvyKC1bh5DUZJpi3u10/Gx9BBgAHz5kD0WpcgIAAAAASUVORK5CYII=","small/money.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUhJREFUeNrMVNERwUAUDKOA60B++ToVoALpABWgAjpABaECVEAH8sWndCAdsM9sZp5I5IwZIzM7l+Te7b19b+8879+fSllAo9m4YZgAK2AOBEDrfDrHefFVx42nwAUwQAL4RYE1BzLJZA1sSbgBom8J+0AbsCIdcpOi4GpJ/TqUJ+gwQ4v//seEWDSnvDWbIA3sMuMj5gPn1iN4BlwBWzA/kO5TQSmZz2CrpQOhJsD7GLi4SBaLLCAxSjfAMOLcKK0f5hdiIcm2rMsP46pvwzEByTATuwR6NP1rhpSZ6FPATGWhyN4DRi05sPuFkg27+FRTGnlH4rHaLFYKnI3t09jy1Ensufow5mnwVBYHelGId/jequyDrKI820idwjw7ZU8RvRq8vb7YmDBTz/QysKoMMj9Bxiun+5DERp3ltCQxnRD95Ma+CzAAOBxvUVsPplgAAAAASUVORK5CYII=","small/more.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOTRDOTYwRjczOEYxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDOTQ3RENDRThGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDOTQ3RENDRDhGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzdjY2UwYmYtYTM3OC00OTVmLWI0NzktYjYzOThkN2FjZGI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5NEM5NjBGNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LLm41wAAAodJREFUeNqc1G1o0kEcB/DTvxMztkqxoGVlEpVoQSHECDMMgl4VvQksog2CBhUGUdgIe9GoZFRWFD1ILXwxQSFjtIRiMihMCKG96EkHlRSE4QLNh7S+N36ry2ZMDz4vDu++/zvvdyczmUysQTPDAdgOS0EOX+Ax+OFJoVBgwWCQWa3W35MUMwTNg5OwGV7DWXgPVVgEG+EMpOCUSqVKi5MlnU4n9lfDCBThENyGFzR5Al7CQ4jAmlqtNpDL5VIOh+ONQqH4J3AFDb4DR+Era9wKfMsIeRuPx6/k8/lxhE6tVC5s/SYE4RybfRs2m81HQqHQ9Vgs1ikG7oa50NdEGCuVSszr9d43Go2jHo+nr1gsTgVKsA/OQ62ZwGq1ytrb25nL5epPJpO2aDTayQN3gQoesRYaLx2bzZZG6aSGhoa28sD98AHywrhVsFboLwGr0NdAF//v+SqVSiXTarVjkiStl9PECWFwFx3OPdgGndTnJdQLc2AQrkG/sP2P/MNy2m5RCNxAJfOOVrUMOuAp2GE+GKjEeF9G88r8PHjgJ1goBA7SivkB3YLnVMjL4TSNv0E35gT8pHkL4JuCDkO80JPQXfffu+v6l8ifKydJ5kql8oqv8CptY2Urp4y7zDKZjDKRSGxCPY7xwDTd14OtBKrVaub3+3eUy+VST0/Ps+mbchF2wrpmVxcOhzsCgYDH6XReMBgMP2TCe3iYVrkFPs8mUCaTSdlsNmixWCYjkUg3/4Bc+N1HpzlaV8SN2mLU3rBGo2lzu929PGymB/Y48AINQBTuwjh8nz5MukX8uu7BYzDi8/mO2e328v9e7MvwgLY/ABUK5C+2GtroIPfyGtXr9X9N/iXAAOlhxif7ttXtAAAAAElFTkSuQmCC","small/move.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC","small/my.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODg4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTUyMEI3ODc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmEwNjg3MmJhLTNhY2YtNDMyOS1hMmUyLTVkYTBhZjI1NTFjZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMjA5QjQxNzc2QkQxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plu9u0cAAANSSURBVHjarJRdSJNRGMfffTmdWEsjhrUlUbqkwI/pJEXWhZCXwyFJ1l2bNEZoEzZrrC6WiaAwYrE0CLxI3NxCgyLS3LxZuMSkzPxAJoKgbq6UOV26/mdsMmWmRC/82N7znvN/nvM8/3No4XCY+p8P86APoVCIcrlc+Ww2O8RkMr9GAyeDUuAAv3d2diihUEilpaX9XXBycjK9tbVVPTc3l7+6unrS5/N10en0dXy6Bs6BKWAMBAKuvr4+SiwW766lJxKsr69/PjU1xRgcHKzEZDmNRgtwOBwmsAERaAEvwWUE2rM2oWBDQ8OLjY2N842NjXVer1eOLQsxLABSoAIKYAGeI9WwoqLiLZ/Pd5tMJs3MzMw8i8VqxjADXAQ68BQMR4qanJw4Q2wvWyqV3sHvcfKOYi8bjcZ7IpHIhmy7MPQM1IFbMTEGg0GNjY2xhoeHS1D3E2SMFrNNbW1tx+zsrITH47XY7fZOMob3MzKZrDMYDLahVp+jWy6NCm+SOZubm3dRS2Vubu5gd3d3XSRDRMgYHx/P53K5LpVK1RfLGlsWo4afIPYer15AAhGPFEannN3e3r6h0WiuLywspFut1qvMkZERkVKp1MNLyz09PTfjPVVcXBywWCzp+0rMAn6yY2T3SK/XN1dVVY1mZmbq5XK5ib64uMj3+/08eC51aGiIHb+yurr6Q1FRERdb1pJegQ4wCibAKWQXKikpscP8lEQi+V5eXu6jl5WVvent7VWhId+0Wq2zpqbGPDAwwCOCDofjAuqYmpSUxI/Wj7SUfEsBK4AzPT1dGW1qltPpzNhtitvtTlEoFDZsg3S4o729/R2C2GHqx+vr6444A9+P1lGDo3cJnX6Qk5PDxg6ppqYm067g2toaZTAYKuG7K2q12mCz2XQQmcfxMvf391PoZEyQ+NEKHiL4F51Ox4BnC1HDH0jkJ0UE9wNRbl5e3iuPx3MMWVNZWVkUbBGPDBjIONyxZ23CowehbESjCQSCXzB1oikLIIf8QcMOP8uoy9bS0hJFric0JNEUGggf+T4sKCiYwH0YNJvNt1dWVlyo1VacCDd6ObxGfSNB90Q66MaGZU6j009g9BTcNgHMiwkSo38EbQgUhrEjl+yhgv/6/BFgALyijRYrrwspAAAAAElFTkSuQmCC","small/mymolecules.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg4QUZDOTk4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg4QUZDOTg4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwRjFBODlEODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwRjFBODlFODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+De0EogAAArVJREFUeNqslV9I2lEUx+9Pi5qG+DCiBY4erIY4hImwEVIYEcnENmGJNAfbw1oie7BgNnprZLBZi0CIKWNzkxk0ldhLGbEnYSOUiWvkg4OxaCwXI7XIP/teZ01j5QZe+IC/cy/nnvM951yZXC5HKrlYpMKr4g6ryh2wWCwkFAqRmpqao1vN+/v7FzUazbpSqQzU1tb+tlINU6kUGR4e7sVaUKlUbr/fL6N2ilarJfX19aSpqakYKXgLxvl8vn9kZER3cD6f8tjYmMLpdBp0Ot1D8HJoaMi6uLjYTPdoZBwO5ygmMAnMRqPxzvz8vD4SiTCHKUej0Rs2m21CrVav0G+Px9NqtVoVXV1d68coEQMN9Ecmk2kBqZKiMAwT8/l8F7LZLD1A4vH4WYlEEjtB2p/gEc6/npubM87Ozo6LRKLcYYQDAwOP9Xr9856eHgmbzT61urqqNplMr45xdg48APd2d3dXpqenox0dHT9Kqtze3h5fWlrSTk1NKeRyeUIoFKZwicflcrVBp49FzqhONvCORgiyAoGg5Dbmb5MSi8WqOjs733C53FYej9e2tbX1hcXKq3MLPAHnQTiZTBK3201kMtnJjY12SDscjitIaXNjY8MLGRQwXweTYJQ6++9JgQwJu91+GX12Op1OW2BqA1Srp8XnDhv6X0avsbHxGyr5Hl3QT2sHrIWCtNB9RE6CwWBdIBBowNSUd7i3t8dkaB8RcgnwgRhcBR/AAqK7azabnd3d3Q6DwXB7Z2fnZIe0tyD4KLTsxecz8L3g9Ca9ACNrmZmZmfB6vf3Ly8vXwuGwqOzjgAA/FaI6A74WzJ/BC+ADHPokHGRb1iHSJmiPXJGzPz3HMJbBwcH7iUQi19fX5xaLxRGm3Iu9trZGtre38wU4ZtUhC65UKt2srq4mTKX/An4JMACs2R5AsSgHKQAAAABJRU5ErkJggg==","small/mypackages.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBgFlAJGEKGppZkApOJJ1PsBiBuvX7t+AVmQCUqDDDOAYmxAAYqRAUjteaBjGrC5cD2QOgjE+UAsAMQTsRjqD8QPgPgikpg+EAcAMciVgUDXPmCBSlyEGrQQ6pV8KBsZbARie6ghAkjiB5B8ADcQGYBsewC0rQFdAuo9e6iBH6DCDlBDwYCFzMhcCLUYZiADJQZegIanP5KXyTcQGBSFWIJiP3qyoRqgqYH81DRwAxAnYEljJAMWaEBfAAasIpAJyjHzQekQyHfAol4eh7gAStbDkXhJBYXoBcXgBAABBgArODfT13L+AAAAAABJRU5ErkJggg==","small/myreagents.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBJREFUeNqsVEtOwzAQTQN7usmasCyrcALCDcINkhO0nCD0BM0NUk5AewJyBLOhS8KaSoQTwBvpWRpZzqdSRxo5sWeen9+MfRFMsMXtIo2iKIcHx+9jOxQ7GwGaY3iDy9jAE34/Hj4OxpdzOULuFW6QXKhNnjl/E5xiwg7+R5bu2qfI4MsLBzDleA3YdZ61Xh2HAEWj1McQFsO7kwDJrJKiaFB81wI2uSjUxgK8w1fwH8zrKj+Mtg0SMgwbR6OEY8EjisuGpYD6WM4IlhOsoHax0lEYLjUA4u3cnVu0EIuSXDNhx90tuxXmpO/W7D2rb8VTlL6iyE5bRV8Eb6hVpQA6niRQMuRuF4Rk8qLmfhGUqEpb2yspZK0ly3RK2yQ989fO/96NtYBzT1O7dgX/GruyIXdZOk1tPK9OxhdH2717DQVwK7SV4AbfGwZbk/+WxbIPR01Nd74+TPjuyeKagttbU1J4o+5vytgnG+u7KTGTM6Vpyw5wj2p6XqHz278AAwDPkJfDoDPfpwAAAABJRU5ErkJggg==","small/myrecents.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNq0VD1PwkAYvhoZMcjKApPgVEnAtQYcYNE/YAszg7AihjAxqgmuqIizjHQgYEgwoQmtizQBQhNZiST8gPpec2gpLR9GL3ny9t67e/q8H3cI/fGgVm3w7fuuwMQADoACuOm+d6+t9m+tILsDwwAOgAT/PA7Igj+5sXQ45AZ8AhwGP4P9v1HoBkigbKJ3wrxBwt88ZLODRsVrE86UAEHMsISLVLE6t71CYQrwDKQc2BcAR1R71mobVVWTgiCcdOUu49x1KjabzVHlqxLP8w+znOIqk9zGLWUAkaPT6Ygcx6mgRg0fhzWLUbgtwLIa0+cQIJL+NB+9fq8ePAzOkcy+MfL5PCY9NWkpeqEosJEpFovMdDq1/GHpsYREUczqCqbdGMC5WZWZSqWystFbry0ap0bnuidXcnnbuFwu5N3zLhAKbQEb2qBSMYattY3dbtcmLMtq3+mL9AJhIBhApMr6oRibHxM2QqFQdse+g2q1GpJl2TTkaCQqURQ1MbhpQvpDCJsa4/G4EYlGLAvDnrHI4/GkDFcQ529CQp9vbJzs4XBYz+VydFtofy/i8BOJBBp9jJTyU1kiamgSJm70IyCUlt2UWH/Q5wb9gTb3+/1K5jLz1mw2Z4+rm1jF7CX6l/ElwABd/9TPhANNWQAAAABJRU5ErkJggg==","small/needmoredetails.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDRDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qzk0N0RDRDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDM2ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDM3ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+X63NJwAAAoJJREFUeNqclV9oUlEcx8+9ep1RtlVIK8HCoECEoNIoIhz0B0LLokjYoDfbyyjfehlCEDGStloZ+dar9VBBD5FPhTEiyxVkGClhI2rLJYFJN13fn/zuOMi2XD/4gOfce7739zu/7zkqbrdbLBL7wTkQAjNABWvBXTAGJmq1mkilUsLr9c4vMi8gtAEMg83gMS/+ARTQA3bz8w/gkqZp0/JidYGs7oP3nNk18Ay8BW/AU3AFnAJfwMNyueyVBRSp5F3gNhgCz0UH0Ww2DzQajZFkMjng9/vzcoYr+MsXOhWjMJlM6WAweDESiYwWi8UuWfAsmARPxDKiXq+LcDj8wOVyfU4kEmcMwVWgD1wXywyUK2w2m4hGo+Po9rFSqaSR4BHwCxTFf4Su68Lj8UxaLBYll8ttJ8GDINf2nh/4pLGP54xwcyIKle1wOMiLH5Gli3zoYKsYcQKcB128t4K9qIPLgLp5iyoGLqvVeoPLf43fK42mzEmCveArb0M3WE37z3Pr2BH07AW6vCWbzbb2EgbXW5232+2H+OsTLJjjhRnwCHwCvwGdiDvgG5c/ZDabe9Pp9EAmk9lUKBS2Op3OPBmb2k2i/R32YYzNr8r2oebEYjEfZTiFuZN8rH7+Q+w4GOVzLfism5DpGpQs8vm8SeWb5BWIdJDdYNv4HnjXMrSqikqlctRIexwcBjuXEKN317fN9fDBMI5ityE4y1fSTbLCIoJzbBU59vI1N/8O7aExoJPynY/gDF9h7bEN7JHGZKGNlBw3pyALChZ5CaLgNJdJBv/DpWncQCOmuGytWq2KUCg0rCzxF9DHFyllUOPOKmzwfWCHZJvpQCBwNR6Pj/wVYABTaL+YYe0jZQAAAABJRU5ErkJggg==","small/new.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC0klEQVR42mL8//8/AzUBQAAxMVAZAAQQC4g4cOAA96dPn0oFBQWb3rx5s05ISCji69evnmxsbFd5eXnv/vv37y/IJ0xMTAwgGoQZGRnBBsB8COJbWloyAAQQ2ECgxq9///41ePXq1aGfP39qvX37dvPv378VRUREbIEGiwE1saNrBoKfIHEuLq4HID5MDiCAwAYCNXOwsLAc/v79e5K0tLTs+/fvZwEtefXx48dFz58/d0HWgBFmQFfr6uoyA+l/ID5AAIEN/PPnjyDQZVHMzMzvgQZ/BdK3v3z5kiksLOzr7Oy8HahYGmjgZ3TDWFlZLbZt2+b++fNnNwEBgR0gMYAAAhvIycn5/MePH7OAEjWPgQDoop/s7OzHgVI/rl275gn1LieQ+g5iA8NUCCi/WV1d/QTQAe5AC7/BLAEIIJiXuYEGhkhKSqoCw/EsMHK8gYa3Al2u9+vXLxAWBnkJ5m2ggSxAzA9kLkHyOihg/wMEEDjZcHBw/AAaqgf06i+goTofPnxYAgo3oCXxoOAAsv8hxyxSxMBjHWYZQACBXQg0iBMYEWLAMFORkpLSBPJtoDZiTatAzf+A8ixAQzuQDAebCBBALDABoCEQG1hYDIEBLI4v8YLUA738BcaGuh7sZYAAYkGyFWToZ2BSaQUmckUgnwMY0+VAdV+B+AvMi0CDeIAUNzBZrVFRUYEncqA42IUAAcSCnGBBCRWYFMSBsX4LyGYEeqsEiH8jp0GoZlagT94DuTboYQoQQCxovvkJVPwDGBEcQEOYgRGlD1T4DmoZB5raR8gGwQBAAMENBBoEwqLAfDyZn5//MVQxF4Gw5AJaDrKMC+YLgAACGwjMx98lJCSWXQSCW7duIQc0PHyRxWCaQYaBIpObm3sXzBKAAIJlvb9AA6OBsZsFNFwQ2RvIBQI2g4Hh/QBkKEwdQAAxUruABQggqhewAAFEdQMBAgwACF1tPAAsFuUAAAAASUVORK5CYII=","small/newmolecules.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNrUU7FxAjEQfGRy7OBj5BAnxhXYdAAdmAqeDjAVYCrA7gBXwDvyEAGJCRGxCegA9jwrRvPo58+hb2ZHmjvdau9OShKFte5aT4nSrhRk11i+0jRd7H/2ruq8UVw64DrUKDQKdRnQA6ymdKNQt9p8b3KsE41Ko1A3ousNaFeprDGxDcjBBveWyKGugzMWq8P6QpUHUQ7IkHbcSyXOE06BLvAKfEgCgisqtYw7+PqBz/Jy34aO5NSCEqc8IIFDkDSmAqmg5y8Kcrqe7LfkQt/OpCTasZQZYuKfAzNRGiO7ICyQvgNNGYooDmLeztVovtqRisriy7Jpm5LnkoRlRMyxvxdWj/hEWR5cIInPfELevwbu/0LoqHTAxy1EGXyius+pZ9qf0iTpFngEHqBM/vIt8AksSRbtcWzKc25HQYnFHo/ZhpvKKbNnmpdg/QD/l50EGAB3roumMiDUfQAAAABJRU5ErkJggg==","small/newproducts.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REI5MzNCMUI4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REI5MzNCMUE4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjc1ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjc2ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N2KS3AAAAihJREFUeNqc1T9oE1EcB/BLrxcSbEhPCa0Fo0ZUiN3alNKhQym0CAoOKgQUBAUtBSUOBnEwoFk6tbjYQpulBG4I7dKlDUWDk/HvUKpTNOigECxoLsaL5/fB98JxXDDNwQfu3r33e+/93u8STzQalXjFQQNDavOqVquSpmlSLBZrtnXZ3l+BeRiGm9AvdXBZAQfhDMzAS7gMe50GfATP4YitfRX0TgMuwXX4wjYT7sAhPp9jKq6Bp52AnyAHr2AbRiAFCpyCW/ACzsLU/wJ22+6fwjuutMi2w/CNpy8mkvcTcMPl/U84yPsB+N3uKbea7C4U+CxWmYDeTgNOgApzfF6DHbjEcaMw5IzR7QgyDtPwHY67pEGU1xgcg0Wm4CKUWq1QlMtXCMNV+OF4b7B0AvCMh9jTasunIQRPuL2gSxqsOqyzrLoURfnjFvAky2aFz29hEw64BKxzByJdgXK5rDoDCveYk2W273FLXkdAsZqjLPYFn8+3mkwm75dKJcUe8ARXojkGe/kZ2i+dp7wO72VZXqtUKrvpdPphrVZrBhQD/7r8Drp9t2LiLSs1jUZDSiQSD/L5/FAqlTpvBfzIzpMuq3FOIib+0Oyg61I8Hq9nMpnZbDZ7u1AohOVQKCQ6fYbH8Iv5E5/ZBRbva5ZJH8yyr6i7XtM0g5FIJKiqql4sFn25XO6Gx/YXMMgBfpbEGx7CKFfqZdCy2K2VEubO9Pv9pmEYyj8BBgD+/pOBndj9rQAAAABJRU5ErkJggg==","small/next.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC","small/nosequence.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa1JREFUeNrMVDFSwzAQNAk9pkhvOkKlH+C8wKGDiuQF4B+EFyR0dE4HVE5eEP8gpiEloYMhM5iSCvaYFXPRyIGCAs3sWNbd7Z1WJwXBH4+tTcb2QTvGJ1ZLS6BY3C+WdTHNGqJeq9XKMe2S5J2mQ+AKtgi4W72sKje24RCFgBBlQIpK9oAU8wmQYH6E7y4gRHP4djcSkigCxsCZY4tAMMfXMIkgx5rxEso2xRno0FmqHYoNBCWrkmQz7iKwpN5DgdMDPhcIHvNfyGdAX8hZsRAWwFT5rcU1VfAxFvs2AQR/gvDPmF6z8n3gBj4nsJXWDz5voi/WbvWWY2Z2x6nVj6dtPD6Fbi1LKFt69DjHJKoU8dpgT4a+U97xEFoyeyClp2dD3ymXzo3Q2zEk/PJx24Rx34m2VaD0VMRgaZeeqlJOcQL7OdtGGt7KkGj9G9ShYjMPmbEiUalaRfxGvDW56g5JfOnTMCVZyJvQURoax882fcbql3WviwFegYFay1zd5FYBH2L78flicMZWkK2UqKCgvoaa9VjZ4NfvIV+ShDJE6vCmouOmN/F/j08BBgCFXrBIXlgzPAAAAABJRU5ErkJggg==","small/notebook.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0Mzk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0Mzg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmViMjFkN2Q3LTc0YzgtNGUwYy05ZWYwLTUzODU1OTYxNTY2ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3N0NFNTRERjdGNEQxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptz5sIAAAAFdSURBVHjarJS9SsRAFIUnJmsw2AlpAhJ/QJEtJDDY+xCxsrXRXgRBLC208wnsYuUjWAfyAMpCLGKRxcVCA9lNNp4JG7gMriTrHPjIzd+ZM5mb0aqqYkJhGO75vv9kWdYYpyVrLz3Lsq8gCI4457FBbkzAEByAJdZNOVhl0osf4BlMWXdVTUETboFzoDUXyrLMcPjWdZ0OLAZcaRLJog++gAswrueQ58zzvHvAUXNcotzMi0oTboMrsCxOiqJgtm2PUL6J2jRN+t5wniFN+A4ehFc9kmGwNE2noK4llW0Siu+y0QwiEkVRdIxyH3VP6oadNoZiTut0UbAYfRz6XZZbnvJjx6b+03ATnEmpFzd0HGfguu71BFJimCTJbhzHdz1I1ZQH4Ha2ikoM18ChWFxVhoy2jArD0T92m18NXXCqrG2gV3C5YEK9+Vw0jfjtTsAn3TBbSJvt2HV3/AgwADY2XrGVgBZhAAAAAElFTkSuQmCC","small/olignonucleotide.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhSQFNLM4BSM5jQ+OspNZARzYX/gZQjEMcD8cHr164voNSFH4B4PhArQA2lzIVILu0HUh+BGOxCoEsfkOtCGAAZVg/E54H4PjVjPQGI71PsZSQD9wMpkHcPAvEFoNcvEDKQhYD8RCDOB2IDIBYAYkVqeX0+CFPsZbT0eQGarEDps4FcL8NAIDRtgrxtT7ELkVwKcpk8lAuyIBDo2g/EpENcAKQZVoAIQCOLaml0PxA7EJtTiAEHoRE1xABAgAEA78kxVfmnVpkAAAAASUVORK5CYII=","small/ongoingprojects.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE5MDk5Njg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE5MDk5Njc4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRiNzc2MzIyLWE2NzgtNDFmMy1iZjQ2LWI5M2Q0ZTUyNjdjOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkf5cvYAAAHESURBVHja7NRBKENxHAfw92wxo1nWxGFrUWuN1YjJaWs5SDnJgWJTK+U0aSWl3dwcKHLi4OCyOTnolTS5IFlOakYpmpRRJvN48/3Vb8M7OTgo/vXpv73/+3//b///700sFArCT7Yy4YfbHwwUA4EA9f3QDZfwymMKtMEU3EI7vMBBcXI+nxei0ajgcDhKgdpEIkG9CzZhD7o4jIKHYIDHTVAOFzAJT2hCOBz+8oRavV5PfQ7MsAhV8Mzjp+CDbZjna9Qvwzg88vxS05jNlCN0QAvdAKMQZxuwDvuf5mzBMC2m0Wiuk8mkTxTFZrvdnsL3UqAHajhw5xt73wd3CDJlMplxhLbGYjGP0Wg8Lwb6oY5v3gUde+P9VLdeOkhZlhWr1Xocj8enDAbDQygUWhGdTqdEpw0VPPmKtoIn0iJjkFIFrvK+v+JgmoLBoJROpxstFktKi4udXAr3XJfFJ5XBDiMwowqkxZcURTl0uVwD2WzWH4lE5vD5TLTZbLMYHOQa/Fzo9LSVUAs9cMO/hLZiDaZzudyRJEmC2+3+KBuv17uAvp7D1PtFtdgAE3xg1KqBiveEClun0319U/7/vn5f4LsAAwDQ04UBKGtvIgAAAABJRU5ErkJggg==","small/onhold.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEE4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQwNmY1NzE3LTViZjYtNDc1MC04Yjk4LWQxYTRhZmNjNjY2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDU5QzdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgImVfsAAAKpSURBVHjapNRbaNJRHAfw8/dCzpwUTShEyaCHbJFBsqIgSe2hFvSiMCrqoQeRKKIIN5DoQjcwK7pAQSOiCzKkLHIRWRA5gnLRQ0FS+dJlVCrespza94yfcTKtwQ582P7nv/9v5/zO7/wks9nM2gwn7IBeKEMVpsNzOAVXSqUSC4VCzGq1/v5I0SKQHg7DfHgEpyEHNeiEJbANNoNfpVI9FT+W63Q68XkV3IQn4IW78A4+wEd4DyNwGVS1Wu1kNpst2e32hEKh+CsgX/cN2Ann4Qf790golcr78Xj8TKFQyDocjpd8UkYv1XARfBBhkxzVavWVz+dzx2KxA9AtBtwOb+EaPUs09wC2CDH4Lu7QoXSWy2XmcrlGnU7nBb/ff4g/84AzYAMcET7cBFtp63thNfDcXIJbMJOCsmKxyLxe79mxsbF50Wi0m2dyN5+nchBLZhCG6FRXUk4zlJpEIyBflV6vz1ksljhKaK2MSuAF1IWA402/10mV5qbBTzGfBoPhHg5pOQ84G960yLkk/Kz/74CQS776jsahVNjUx8QOZLSNWVONlkqllLyuecDHsLTpvULIEV+9nEqsLsxJ4gfhcHhhpVJJ8T/aD3OpFBqDX7NlVPA98Bm+Ub67YEGjhuVyOUMglslk1huNxmEZNQAeoE8IyEvCAA+pKVyH11SDw7ALDk5cMbWa4Zb0JJNJncfjiTW6zTG4CiH4Cp+obS2CUaFc+uk2feGr5qvL5/NSMBg86na7B00mU04S+uFxWAzrmuqw7ZAkiWk0mhNardYciUR60crGZcL7fspTFOZMIp4KzeFcOp1eMTAw0MeDic2B0bY2wjNqCnvA1CJQFzXXOK6dLhAIrLHZbJl2HbtOKx2ivsjz+B3S9A95sA66+/vgNq7cHwF+CTAAH3Hb4QGy+asAAAAASUVORK5CYII=","small/open.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==","small/organism.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU9JREFUeNpiYBhxgJlSA9w87AuUVRQ47t55+ADEZ6KCowSA2AHGYaHAZSBD9gPxByAOpNhAIDAA4gW7dhxMRBYkaKCmlibIJflAHIAkfOHTx68b+fi5FdDVMxEwrB9IrQfii0CseP3adUYQBrIXfvz4tf7L5+8bifYP0LD5QHweiBVwyBcA8X6iXAhSDA2jiUB8H2QwFmULkGOXkJdBYVYITRKOUMNRANDrH7BpZMERCSANB4DUAaiYI5ROAFLxUMseEJVTREVFQbHJAaQ1gfjBm9dvPgDxA6hcPZB6AcQeQAyKHAWg3ExCXhaA0vVIbJg3A6FiG6EunUhsGF6EJpELWMIOZqgCkL2AGANBhtgjhakBEP8H0UgpoB45uxEKwx9AagKQNgDil6DwBLkGiDmB/H5oUvHE5noGaMDiSof+MK9BXQ1KJhuxeZOmACDAAGX+bdXwvJtFAAAAAElFTkSuQmCC","small/organism2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDkyRkQxNzY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDkyRkQxNzU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVjYjczZGU4LTE5YzUtNDAxNS05Y2Q5LTk3OWZhZmYwYTFkOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZFMTc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlQ91ycAAAMBSURBVHjajNRrSJNhFAfwd87VwJqGLaMya0mIuA8hFrSiNCK7N6IPBS0NohVFdJOgyKiEmtCFJrVumlLCojBisg8WRUUFI6ZSH1zTLitGtra1trHWWP9H/pOpI3rgx/bq3vOe5znnvLLS0lJp1JoFH9KulWCA3bAUAvy7ORKJtFitVkdFRcXwj7OksesgdMJMXk+B03A+LZhYGhqxMgWshzfQDnL4BFbYlvb7MpgBjv8J+AOOQQiuwB3ePB/OwFQ4Dreh/18BxWHO4XeRmQwmwUnYALO5ZfGAZdyBpFQqRwSUq9Vq8amAmzy/FtgHSW5zHZzgmd6CVsgWRZLL5T1Op3Oew+HQaTSaL/n5+ZFUQHGzHebCIW6xBq7CdD5E7GY/C3EKPstksster7cmEAgUmM3mHdFo1Ccb1TYT4QULIzIqgV383xJYADoYD1thWigUsplMpsrCwkKlSqWKji6KKMQ7VnYFA0vcssjcD78hDBehB4Ea7XZ7rU6n69Vqte9TASfDKtgOEciBn/CNx7AQ9HANjsAvHtNig8HQ0d3dXeJ2u4erLDJ5AIfhKIOJFeTnOEjAH15HueUB0fSJRGLQ5/Nl9fb2FqQCdrLClbCaN4qnFzDAW+iDNljDLB+J84PvCoUiF61TXldX11VfX18tqvyVPRUHH2yBx3yAOE8vdHEEq1nx5zyesy6Xa2VxcXHYaDSea2hoaJRleDm0M6tnLMZGTk/6MNj4u9ZgMHi/ubnZVFVV9Uqv19/LNHpqnqeHjfwQdnI6RFZP4QkbXPSqDuc4gCaXcnJyYqMz3Mw5vgSbOCmiKEa+EEQhLKJdOI57cGSvPR7PIpvNtjaZTOamJkViE7cwSAcnRGTxEW5wakQBVXBAZB2LxWosFstdv99fXlRU1I/3ois7Lbs4e+wlr7VwgRPTxiny8gyXw3pstQ9VlpqamvaGw+Ghm9IDuklilmXcqmjwCeBke11n28SGsojHJRE0Ly9vTMDUymW/1TKYxFfXIAdA4oMGM9wr/RVgAIc88hiXRGe6AAAAAElFTkSuQmCC","small/overdue.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowM0JCN0IzNTczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTkwOTk3MDhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTkwOTk2RjhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTY5NTNjYjUtNWVmNy00NWVlLWFjM2YtNDAzYjYwOGZiNmI5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAzQkI3QjM1NzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4ZuOPQAAAppJREFUeNqE1FuIUkEYB/Cjx0wsuygWtBmYdFnRgsroIcxwqYgeil6C3YoSghYqDCKwJSQoKtkKKwgiqQcfNJQyok0qVvZhMaGEluiCBpUUlGGFrpdV+o98xul0jjvwY3Fn5j9zzvlmFFarlZNpNjgE22EJKOEbPIUQPKtUKlw0GuUcDsffSSqJoLlwCjbBWzgPH6EJC2EDnIUcnNZoNHnhZN5oNAp/r4QRqMIRuAUvaPIHeAWPIAG9rVZruFQq5dxu9zuVSvVf4FIafBuOww9OvlXYIyPkfTqdvlYulycQ2t6pUvDoNyEKF0STd8ATFgCX2CYEfQ9tNtuxWCx2I5VK9QgD98AsGJLYTS/U4R70CeZwtVqNCwQC9y0Wy6jf7x+qVqvtTrbifrgILYlAFvaa3u1v+jjt1mw2OZ1Ox3m93nPZbNaZTCZ7WOBu0MBjmffVgNn09ZviRVnpOJ3OPEonF4lE+ljgAfgE5S6BM0ENU+JOtku1Ws0ZDIYxnufXsMBVVBJyrUZhGgqXbAj+jD+LlTSw2iWQvcMZtMvGNON4FvgFFkw3kBbu1ubDLxV9DGuXgd9hPSyHl3KD8P5sjUbjDdvhdZgHy2TGjsMZuAs+cSfOMlcoFNSZTGYj6nGMBebpvB6WCVxLlbANtog7tVotFwqFdtbr9ZrH4xnvVP0V2AWrJQLXUUmxRbeKdxePx+eEw2F/f3//ZbPZPKUQ3IdHaZeb4atgHnsdQWBndZCutHZTKBR8sViM2u32n4lE4iBbQHgfdiaNwl7I0P9LsE9i54tQeyG9Xl/3+XyDLEzqgj0JrEDDkIQ7MAGTnY8JK+i4DuAyGAkGgydcLle92419FR7Q4w9TMU/SOdZSkefpKZ6bTKZ/Jv8RYABxoM9ehi5YsQAAAABJRU5ErkJggg==","small/pack.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIlSURBVHjaYvz//z8DNQFAADFS20CAAMIwcMOGDSgCnJycDBISEgxfvnwB4+/fv6OoDwgIYETmAwSgYo5NAAZAKIh+LFTs3M01nU0rsUvAIpDueMX9hpn5iAjMDO5+RkRgZnT3+cxAVVFV17uLiPimrwCCG7hy5cr/zMzMYIMYGSHyINcICQnBLQQZ9PTpU7DBMPDq1Suw+vDwcLAmgABiQfaavLw82DUsLCxgRb9//wZrBlkKswhmAUgOhIWFhRnu3r0LtwAggOAG/vv3D4xBXgABkJdAAKQBZOjr16/B/M+fP4MNBlkCot+9ewfWBwMAAQQ38O/fv5AwACp6+/Yt3Nsw78EMgLFBFmJLIQABBDcQpghmKDyQgeyvX78ycHNzg2mQi9DlkQFAAMEN/PPnD9wVyPTDhw/hrkaXhxkG8x0IAAQQC7LpNjY2DD9//gS7BhTj6AAUVgcOHGBA9hXMAhgACCAmGANkEEgSFJsgw2C2w2iQGMi7MDGYISAapBcGAAIIxYWsrKwoMYbsMj4+PhQ59LCDAYAAgrvw169fWBWBcgrMZSA2yEXIroPphQGAAGJCjhRkkJaWBnZRQkICPNBhiRrZYpChoAQOAwABhJJskOnp06eDXdbW1gbOOaBYBrkQlvCRAbKBAAGEkmw2btwIth3ERnYxKEJA4YuekEEuR/cZQADBDQRlrevXr5NVBvLz88PZAAFE9QIWIICobiBAgAEAJ8MfJdqsPYcAAAAASUVORK5CYII=","small/packagehistory.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAddJREFUeNrslD9PwkAUwK+GlQRJmIVIYsGFRTrShIGQkFg3DAmEmUHYBDGtwaGODszgJxBHJmqYoEMLgzCR+g0QPgC+11wRSgXU1Ze8XK/37nfv3x0h//JXYayPUDjE/2BfhI7N0dtougGksA79p2yB6PTbAPWA4r48QFuWkWtlAxpNqREaDGxAna690Pk7tWmAQzEY79BbO/CVbhBBhR3hrkoR9ANUctlX4BQJThRhZOxrNDUIPLct+Z1CJpIkHQX8gU5f7ZPgcbCTSCQwzEeGYYwVMw/VEp3naCq+gNGzKBEEgW+1WgRhbrebzOdzHka+fF0uLhaLPECbNo9Eu3dLYPW2KmYyGYSYP7PZLKnX6+a8clMhs/msAVAjfBq2inNhCzm3BIKhAJt4C+YksiwTLspdYfjYCZBfxSG3phyAxjDUXdLr94R9Ov6g3W6vtQHmjz1hNwy3RbCWQ1pJ0+VCoWAC5Qf513cZizKIx+OEZVmi9lWzyk4CBytYqL0eh8lkoqUv05HvwkLPh8Oh0e12rYdg6tDYT3gpTCBU2q9p2nPtvhYZj8dr+cQWSqVSpWQyqe9wzgCgsbxeAMXuL6qqGhuNR7z30GtwHKf4fD68Kfq+OfwUYACcVLXPhB12eAAAAABJRU5ErkJggg==","small/packforshipping.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RTg4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RTc4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmJhZGMyMTcxLWVkMjItNGE4Zi05YzJlLWM1ZDliNzhhOTVjMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjBDODMxRTdFRUIxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIGkRAAAAGTSURBVHja7NO/SwJhGMBxf1wenFHW9WMJDOmHQYSQDTWIDQ0tUn+Bg0RU0NQgYRS0CC1GU1CtgUtN0WBam9DUYj/IIaiGLGiwUq6y78mzFI0NQb3w4b07nve553nvPWulUrH85LD+J/yFCcPhcCOzHfWYgnmfxRYMiVPQj1p8qqBYLFr8fv9JNBp9qAYeMZhVCeySuDGEsIRj9GAOp18Kene5XG2qqvZxnagm1DSt+iKc41AWt6IDq5iBC/vY/NpiJBLpzmQyU9lsttPn813aeFbGJZYxiTW84gxNWMEEGr7bM5vN9pbL5cZDodBRKpXyKtJqjbRtkb1cxCBesI1HzGMPF+beS7zZmerxeA7cbrcRi8WWFKniWhZbpDpzr3axjlnc4AoL8oGs8oEW8/m8hgFFUe7L5bJmdzqdrYZhDOAOGgLQYYUXq9jBKEbgQTtaSqVSs8Ph0EnUWygUvLqu35jHxqwqgGE5JhWpwKzkFhtSudliHM/SRR0JY4lE4imZTA6l0+npYDAY//+X/0LCDwEGAF2AvdgbBikNAAAAAElFTkSuQmCC","small/partialuse.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RUM4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RUI4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3MDM0QUZCODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3MDM0QUZDODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+h4nltAAAAeJJREFUeNqs1L9rE2EYwPHL3clh0KDSW8xSBzOk0ClQRJAMNUZoF4s6CBFJSc1QOpSiZquC1MlBow6iKbVQEBEhJCSKhlJQMVvBP8CApLQOFhou5le/L7wnSSnkrvrAh+SeI0/ufe99Hk+n01H+Z3gSiUT39SiG8Bw7/X5cr9eVVCqlBAKBvzm9WCza38dwCQP4gbf9CtZqNSWZTPbkdK/XKz7PYhIxXMAVfMTvfkVVVe29xgjiuIltvEZWLtvvdg9FwXM4Ip9Ok/llvMATBN0WfCQLHMczHJX38riPBZxxU9DCO9zBmlzqSXn/K2ZxW740RwW7YxFLeIrTMvdL7q/Ykuv9Cur75LKyyD1x1PAK73EDj3ECD50+oR2fcRenxOGXuUOYwiDm3RYU8R2XcQ0vcRV/MCPONB6IPyEcFxSxgWkcg08eq2GYmEOmUqkc7unlYNDRMdPlEYpCNK4hku12W3RKPp1Ox8Lh8JaTJ7SjiVvI2cXstms0Ghfp51ypVBL7rWimabpphA/YxHm7qzRNU5rNpr9QKESr1eonp0veGxOyNX12Qizfsqxv6gHn6BuM42f38g3DCOhiph0wVuVLWhEDpNVqKWzfFz0SifzLxF8PhUKj5XI5zvRuMP0zuwIMALihevTdQ008AAAAAElFTkSuQmCC","small/paste.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAyVDEzOjI3OjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDY6MjItMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQ2OjIyLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjNjM2ZWU2LWUxZmEtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjMxZjA1YjBlLWJmZTctNDViNC04YjgxLTU4OTc3MjM0ZWU5ZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozMWYwNWIwZS1iZmU3LTQ1YjQtOGI4MS01ODk3NzIzNGVlOWU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTEtMDJUMTM6Mjc6MzctMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNTo0NjoyMi0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PhIHZTYAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAOZJREFUeNrclLFtw0AMRZ8CD6AR1P9G3kAbJJpAyQSBJ/AIWSGZwM4E1ga55tfRCN5AaVgEBs4+BSoCszkcP++DR/KzmueZNe2BlW11ws01UFINnIAWSLa3twiryxpKaoE6ro9AZ3sr6Rs4Ap+BJdvnkgzfgrAGzsBL+HfAHngKrAfG0i/v4tEB+JL0G+uB18U1tH0EqkxtlxNKaoDnDNwAg6TJ9lQ6Ng0wZLAPoIuYRXM4ASnjn/6NUurVlBLdfs80bbiv5XCKc1xKWOUWrKQupJcyb1ugtz2WNiWFbrkRU5bhX+1nAIK9QJnwry0CAAAAAElFTkSuQmCC","small/pdf.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBjsgBGZo6ml+R5ICRCp9wIQO16/dv0DsiALmiIBoAJGQiYBLe4HUgVADKITkeWYyPSZA5ROABqeQA0DDZDY84GGKuDyMlEAOViAhu0HUiADH1DiQpwA7sKtaqoO0///Z+gB0qQYMP//fwHV//8NgPoueN+6/YERycD/FDrOEWjgAZQwFDYzZ5AOCmT4/vQpmP/9yVMGThlpuDwrLx/D/YULGGSCglBMuj15Ms50yPB03XqGt6dOgtmqubkYGrCJ4UvYYBcKmZuB2Z+uX2fg09TEqhFm8LuTp+AOIOhCEMBlINEuxOcaEHiybh1GGGItHGgRy47TmZn3Z/7960hSOmRm7gemw4U2//5dwFZ8gVx5gIx8HQjMjgewhaEhCeUhct4+wEArABBgAF8jbESEGlPXAAAAAElFTkSuQmCC","small/pendingrequests.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MzBFQkY5ODRCRjExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE3MzBFQkZBODRCRjExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ryxvLAAAAkZJREFUeNqU1E1oE0EUwPHdTXGzIdtDNfGrgoIfGMUaMIIYEZHe4kcQ9OBBvEVQ8KAm0oMGQTyooB48KAFBBGMVoZ5EaPGyogbx4EEDWlH8OKSgwRjbJvU/5QXGJVHz4Eeym5k3O+9N1ozFYkab6MF5bEIdM3BwDddbg2q1mlEsFo1EIvHHxHbRh7k4jobcUytv1BN2epI5MrkXJiYRwQ881sZ+wzasxjh+dkp4DnsxJoOWYxWe+MbWsB45uDiJ1+0SrsELqZVKPg83sAD7YMm2+6UUD/BeaqySv/InDOI0bFzGJ7zDUpzVxjYxgRN4iijuSBm++puitvBQJl3EMUxJTfWYkTm2JDuDZe0S6k/xVur5P/GlXQ31MLV7auX5KEujKtKYRXguYwL/SqjHJSyR47IQN6WBpnwfwXQwGKzrk6y/JAxjMX7Jwn2SeFwa0R8IBKKlUileLpcdPaElDfCHKvoROWtj0tlb2Iyk2rZt21vz+XwhnU57uVxusF6vz648jZUYlaa04qp83vYtNIBD8v1zKBRyG43GQKFQGEkmk4OBSCTi8cMB+a9+QBx3O5RhFy5o17vVX9Y0zbWO4/R4nrdCPeEbHMQQruA7tnQ4g4d99yZaLw/Lsoxqtbqh1WX1QjgltVLbOSoJ/Gc07rtn6QvTJNt/bEZFpxjGHu16p5zX2aCWk5bRXQz7rnvleBnNZtNwXfdltwnv4b52vU69S1WySqUylUqlhrpNqGq9X15dH7GdbUbD4fCzTCazI5vNPvotwADssJjnpcOpnQAAAABJRU5ErkJggg==","small/peptide.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMhJREFUeNpiYBjsgBFdQFNL8z6QegDEF4D44vVr1xeQYiALmmEOQEoBikHsA0BMkoFMBOQvkOpldAMd0PgfKQ5DJK8bAHE/1NsfgHgjMeGJ1ctAjQeQvAsyPACI7SkNQ3TvP6TUwA/kRBAjIQXA8BQAUgnQ8PwANXghrvAklGxA4YnsUgFoUCiQmw6RDUIGDyg1kB/NEAFgUCiQFYZYwhQUlgVIQoXAYJlAqgvx5Z4P5HgZGdjjC08WMgxcCHUVLMYvMAwpABBgAMpzMqJsoqujAAAAAElFTkSuQmCC","small/pivot.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMVSURBVHjaYvz//z8DNQFAADFS20CAAIIbyM/PD2awsLAw/P37lwEmzsjIyMDGxgamf/z4AdfIw8PD8OXLFzD76NGjDDo6OowgNkAAGsbYBIAohKEb2Lr/HM7iAJZWIgq5i/CLRxJCckMiIuhu7C5mBlWF//jITLj7efbM1IiAqsLM8H4+AcQCsxFoIMOvX78Yenp6wHyg4Qw2NjYMBw8eZODg4GDg5eVleP/+PRjLysqC1dbW1jIALWYQFhaGuxwggJhgjE+fPjFwcXExfP78mcHBwYFh4cKFYBoEgoODGRQVFRnc3d0ZkpKSGIyNjRn6+/vBwQAC3759gxsIEEBwFzIxMYGdDPQuQ3R0NMPXr18ZWFlZwWFqb28PlgMZAAxrhg8fPqBEBNDbcDZAAMHDEBQpoDACevE/MLD/A10M5gNdDA87oCX/X7x48V9JSQlMg8RAYX/48GF4GAIEENyFzMzM4PDZtm0bw549e8Axm5CQwCAlJcXw9u1bsMtA4aalpcUANIhBTU0NrB4EhISE4A4ECCB4GIKSiqCgIAMnJyeDi4sLQ3d3N4OkpCQDMEbBgQ7yuoqKCtgwkOUg74PUgwByEAAEENxAkIY3b96AwxIUcyANsDADGQLyzpUrV8CuAhkIUvvgwQMGdnZ2BuTMARBAcANBkSEiIgJ2KciVsDABAVFRUbABIBoWcdDMAE5eyJECEEBwA0GGgFwGyg3v3r0Du/jx48cMYmJiYJeCLIOFFyhMQWKglACi79y5AzcQIIDgkQIyDJQWZWRkwOkR5FJQOoR5FxbwT58+hac9kDqQHCjiYAAggOAuBNkEcjpIQ2hoKDiWjxw5Ag9LUNg9fPgQrpabmxvsE1BaheVpEAAIIJR0+OrVq/9AA+HpDpYWQWkNJgYMEjANSquwdHju3Dl4OgQIIBZkgy0sLMCBDwo/kFdBLoFFDMjLIDYoT4NcBFMDCltQmMIAQADBDTxw4ADYW6A0BzIUVFiAkgQoRv/9+wdO1KB0B9IMCg5Q8gLJg/I+qPCAAYAAonoBCxBAVDcQIMAAPPvm0EOMlY4AAAAASUVORK5CYII=","small/plasmid.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNqsVMFRwzAQNKnAqQDzDC9TAaYC4gpiKkg6IFSAXYFIBTYVyB3gV/JMSnAHyR6sZg5HYMFEMzexc6f1rm5PUXThdTVWMLudxfhJ+XrYbXeHPwMSpEAsEQmiZSoTUMQGUQK8HwUEmLCpubHCpmaQF9Bnss6Rb38EJJhFvKCwxHtCpvcs6YQdch1y8r9BPGjQyYCgISsBW+N5j7imxIo1FjmpE+ZPooZHdCa1QFg+rxEfZHx2vszVfK/58e+SpUikUpYwuxNpvzRN11vUTodFR8XOBNipUCz3Ts1Edc6xkQa8B3i4pY0iOiL2NcWtPgCwdyB6fQKy7amyxmMAYKYMnzgSvqb0NPaNbxJUveXRtLopWrJ4bUm2wtJ4/fUFZsjqjVPT+GzjrFCxsOYmYd0IW9TM1XznPKZXrWZs9GS8FqqbHWWWiDknK9fz/p/LIaXMbPRyGMhfkV2sPOqcUAVfXx7whGcWdMFefJ0EGAD1L6fXSywGXwAAAABJRU5ErkJggg==","small/plates.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrsUzFWwkAQDWhhR5q8p91aQkM4gXIDOAHmBDxOADlB4ATEytJ4AkJlaWikhRukpcI/vj+8IdKZwsJ97+dvdv7O7Mzset7/+O1oyKfdac9q8pc2OZnW4GwEuGuz0AKegCGwAnrkGHigZs3gfeDDaBbATgTW4RtZDCk5AwqjKbhWUqOca9CmEYuD5+3nVrlkZHWizhdG88026JV8giCQpjhgjvke/AreMJ0DMAYGwB3wApukviK/AzfArZTEpjwxJyoRPUP3I54sN1nsqInIQ/KymrIPhJyHcOZzzZF91bEcavPMvrOmDNjBosJdbn5kxxMEE4cJsxrbGp5OiKhSx3twTs54LSZMr4e1OTk1/33az17KkbUY0cGSooRdDHlP1zxRRE3MPXtem/hSDW3dHNEy9XKVuqr9xwnjGp5epPewUcNb3pjr9YfHlwADAOz5d1RE9mYCAAAAAElFTkSuQmCC","small/playtutorial.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkZTA5ZWJmLTUzNWEtNDJlNi04ZTMwLTA0YzE0ZDg0NzI5YyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEOTRBODUxNDdGNEYxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PveewvAAAAEuSURBVHjaYvz//z8DNQHL2bNnTYE0HxAzk6qZkZGR4cePHwz//v0Dc9nZ2b8wKigogJx4BohfgARJMRBkkJaWFgMvLy+I+//GjRs2jEABkIF2QHyYVBd++/aNYdOmTQy6urpgfkJCwk4mqBwnuWEG8jKSi5mZGKgMCBnoB8TpQMxKLQO1gHgGEB8B4lAi1BNU8BNKmwHxKiA+CMT++JIYqWFoA8QbgHgTNO1iJmwSDfwFxKuhwfCVHANhPvgLxGuBuAeIT+PNekSE4S4gbgTiY0TlZQLyC4F4CjXT4WdyE/YfcnMGBwcHwjAmpv8soAwOBHJALE9qMvr58yfDsWPHGN69ewfOys+fPxdijI+P3wnkvAcVHqQaCCsP//79CzYQ6FoxRmqX2FQvbQACDAAzgVhXMJKjAAAAAABJRU5ErkJggg==","small/polymer.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPFJREFUeNpiYBgFlAJGZI6mlmYAkDLAom7D9WvXLxCSBzGY0CTWY1GsD8T1RMojXAi0HWTzeaBN6K52AFLzgXghSCMB+QvILgygQhAKILuwAer0A2iKFEBiQJclAtW8B7kClzyIw4ImuQDqdHQAM8QQagAueQwDcQEDoOvwysN8xoJmiz1yjJEAHNCTIEUA6Pr/GF4GCoLCJgGbBmCAN+CTRwbIySYB6mV0EA9NazjlkTksQMUFQNofGnsLQa5B8w7IkH5QGsMjL4Ds5QXQCInH45OF0CyGCyRiy3oJ0CyEDj5A058DPnmgyx8MjfIQIMAAdOZKn6Ho7/IAAAAASUVORK5CYII=","small/previous.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTQ4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQUM4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRhYjQxNDkwLTQwMjctNDY2YS05YTY2LTE2YmU4ZGVmZGQyMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMUI4MDNDOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppngo+AAAAHpSURBVHjazJRLSEJBFIZn7rUSS3ohBLkIhBJFcBNEmyCIHusem1AMgoIWghVID4MgooggaB9ERLSToG1uioRIKIjWPXbKLdI09d7+ibl2DTMjFx34EGeOv3P+c2aooiiknCGQMkfZBanb7S41tw74QD2YYgupVIoEAgFitVpzSbpQKFSK2DgYA8zwrLqYSCSI1+vNS9QZDIZiQj1gDryCCVADFvI8E/Jd030jZANLoAWsg0O+3gdi2kS9Xl9UsAnMgG6wD1wgqdmvBl1gi1kIsbjf739BlU/JZDLu8/kuqM3GDkOquNGj4ISf6rHAydkf9gPmE5VlmVosFgpBQzabbY5Gox1M0IPNQV7KGrgqte2sKcFgkDgcjo/vLpdrlZU8y0sZANd/GmpBkHS8ASNgF5yBFXD/zW9qWR94NYooinIkEpHh38dmLBZrVz1k0cAb0gsOwCZ4+yI4CabBHWsopZRIkqSk0+kMPKwym80PWkE12sAyMPPTHmn2FkEj2AEVuCkCboqImyJCkJpMpvNCc3gLhnk354GHf96ASm7LJUuECHE6nbmm/PQ4HPOZOwV7fNBbgaRNUv3LDTZrfZHIgA0+5MyGIbCtHRvMYv5rEw6HfzMZnXy0ntWS7XY7MRqNn4L//sV+F2AAWuKYZ8kkGZcAAAAASUVORK5CYII=","small/printbarcode.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFZSURBVHjaYvz//z8DMtDS1lIAUgoMxIEP165eu4AsABBALFgUJcjIyCSrKKu8xmfSm7dvOK9cufICyHREFgcIIAaQC5GxppZmw5atW/b9JwDevXt3Dqh2P7p+gABiYqAyAAggqhsIEEBUNxAggFiAsSoApA2QxOTv3r3L8v79+/P4NN68efMjkBIA6ndAEr4AEECMwIAFCewn10W8vLwMfHx8DE+fPgVxHQECCO5lYHpCoYkVa2ttY1i3dh1cHiCAWCgNs6nTpjJs2LgBzgcIIIoNvHHjBhjDAEAAUT2WAQKI6gYCBBDFsYwGHAECCBSGF9AyeHxnRye/mZmZCD6dp06delNeUa4IZBYip0OAAMJaOLx48eIQocIBpAZb4QAQQFQPQ4AAwpps6hvqPxoZGq3Dp/Hc+XNsQIoHXRwggLAZeODQoUMMIEwEeIAuABBAjOhVAKUAIMAAJ7nZ02UnmLkAAAAASUVORK5CYII=","small/printer.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiZEADmlqaCkBKgYE48OH6tesXkAVYsChKAOJ4IH5AwDABkIFA7EjIQBBYCLS5AZ9pQJ84AKl6dHEmBiqDwW8gIzAsQIFrgCQWDwtHAnoNoGoLkcQusEAl9uOIbYKAl5d3Px8fH8PTp09BXEeKvdzW2sawbu06gsmGaDB12lSGDRs3UM/AGzdugPEIToegMLyAlsFBaesiVJzkdIgt0zdAMz4DocIBiPfTxcvYQDwRrpQnNlIOAPFDIhzzkIj8TjkACDAAwyUvNEvm770AAAAASUVORK5CYII=","small/product.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MThGQ0Y5ODg4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MThGQ0Y5ODc4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYyQjUyNTNDODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYyQjUyNTNEODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+i8u4UAAAAhtJREFUeNqk1D9IG1EcB/B3Sc6LlphBRCuIQTrICaVUs4iDDtIiCiIEsgTsYukoCg46tASCiIJEhICzEiIuokgHhwwBkyGgDi0dqhJobR3UVmPujHf9PvilnOHlD/qDD9x77+7He+/33kmqqjJB1EMOdFYmstksi8VizOv1/u9zgARm0bt/BX1Vha3Eh9a+5zAAL6pJ6CjRL5EGWIZbep6Go0ozZCVmaEA7XEMADkCtZsnl4hcViEcrHD814SBc0PMX8Ff6ptxgJ/hgltoLNMu31FagplJCvvG98BKGYAt+0pgGm9ADTbANG9BYrspz4Kb+DpgpGr8CGZrhjGbIk5+LEvIX22AY+mGXKi1a0T384cuWZfle9ALfjxU4oev2HX5Qf3EYNBEXPwGZTMYQJZzkVxPe0xn8BqtQKzifdhiHz3a7/TASiYzlcrkHCfkevIZPVdzfG3hHBVpTFGU+nU6/CgaDI9aELXS1LgTXrzhqqAAfqa0HAoGJaDQ6GY/H2wtF4ae/Djy0h9bl3QmKskfVZpqmMZ/P9xVLXvH7/UvJZHKUJ7yEHViED/DbcgK6Yd2SkN/l00Ijn88zl8vFwuFwVNd1NRQKTUkej6cwPgFv6P46qMIKbYdGz32wT8uWDMNg/AftdrtNzPZZIpHolFKplHVJLXSgecXTdN66LD/iW9pHufABrzBPbLPZTKfTeS6Z5qN+zCXjnwADAPdMmHNk5mkAAAAAAElFTkSuQmCC","small/progress.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNq0VDtSwzAQdUwaKkLhGqUMDblBwg1yBHKCkBMkPoGTijLcIOlS2j4BoiElpiaFSzp4O/M8s6OxZArQzI488tPbj95uFP3x6nUBRrejqXNUnd5OVQvOyHm/g+wRW+YSwoYKM8C2h5Wwdb8jQAEXBMu6gs0U2RjbDiZ7LWddhEJQIpW1E3VDltNpRNIoDqQrQKmfbasXI9o2kWEZuRN7yMTbC8Eu4YH/poxcMEvYRkh7Hu9yIcWFTeDl94xwAdx16GVzWPYLOc1g37CdPo9bopN00y5CRHVguq/63H1lSaUAuHacrGAfrGeN/wXrLA93FyI02qMSbUXCBV/TKJGbEKGsG0UmOrOIaO5RgmQ08daQkmh6N2ffzj01tEy3DA4HeH5XYr3X9fRodaiHRVvKlv0aIhuwh1N38lw4wIwpi2yekiS5hNnz5/lLYR6wHamGpXceilDpVSKz7IaV6uea3xUjew4O2EYKbgpMbxwarv+6fgQYAHnamFRD9X5cAAAAAElFTkSuQmCC","small/project.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E3QkM0NTk4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0E3QkM0NTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjY4OWRlZTc1LTBmYzMtNGQyZi1iZTQ4LTA2NmU1ZTc1OWY0MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMjk5MkVBMzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoCCSZkAAAHsSURBVHjazNQxSBtRGAfw95JLzRFDoSAEHZLS2kIkIA1KCk5uRVALNUMlgUL34mAX6yA2QTJJ1kCW0q1TQCWDWxcTyKBTTCl0sGIggZx6XtFc/L/yvXAELwk2Qx/8yF24+9973333eKvVYoMcDjbgoRSLRXn8DJ4At7lWLKUCP+QfzWaThcNh5nK52hfxQCAgj3dhHM5sAn1wBK/p3GkYhieRSLRisdi5DOXBYNAauAEHNoGT8AnewCyscc71Wq3GQ6GQlslk3vv9fl3pWNIDqusylaApVwfP4QWsw1tYxQwP0+k0z2azK9Fo9EsqlfponeEObMIC3ZwXy7I88Jp44RS+6brO8vk8q9frajKZ/KBp2ivrDG9gjMLeQaOft9poNFgkErnK5XJb8Xjc09k2orIX/9A1muOO1uBdWqdnX1sDReH/UJ0u793YMAMeeAwvqbnnbUKP4WevwD3qwQKMQJkCeUcpnsJvWOr1LddhCExarrjZgCsLg8Ii1AVdA7dhAmq0TDtlCp7r6M/2cDqd1yLwKz19imbqtvEI9iEOD2WI2+3++1upVFi1Wg3LzeEzLMJJH9vdNPwSszZNk4kvzev18lKpNKyqaokXCuJdsFEI9dF/sr6q3EvxPTMRrCiK6fP5vvP/fse+FWAA2SacfAT6ekkAAAAASUVORK5CYII=","small/projectdetail.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEY4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEU4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjcxODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjcyODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5fxVxAAAA3NJREFUeNqMlF1Ik1EYx1+n+xRtZi0JFSUUkkRyirCxyAtnSTgSDRKjaTqxJWRiGWNdBKJggkp0URfOhIJVI7dQQyolQkMhtqZIanNguAtd0Zzso2n/M86W6bQO/HZ4z875n+c5z0fU1tYWs99QKpXM+Pg4IxAIyGccUIBTwON2u0c7OztNFRUV4f0xzP8PObgLTgIOWeDxeDXt7e3vkpKSNDKZzELWWP9SYbGCW84DEygIiZERHR0du76+fk6lUr0ZGxvLI2tRkVzu6OhINpvN12NiYg7Pzc35cagMwgl7Xer3+4n49NDQkCyiyxCTmUymy2lpaVahUJgDwYT9vGCz2YzL5crr6+sr3Mvl01VVVVd6enoKfT7fBPUiAOx0dlICsO4b5i1YyCwvLxdHFIRAnFqtdqWkpDAOh+Mo2YzxGeSCWdAI7oBPlZWVEswOamkSa+dbtLS0KCYmJsSbm5tOr9dLlt3070zwFKSD26ABHJ+amtJhTqTnf4Tf0OPxMLBKOzw8LIWrlRkZGWbiam5u7rTVapVyuVwBTR0yToTOzc/PF5I3DAQCTHJy8tuwoEajUS4uLmZNTk6Wpqam+kLriYmJD7G5nqTdXgGBN0x8fLyturp6NOiyzWYTDQ4OquRy+RN8+rYfgNgsdTHiIGJra2s+hULRkJ6e/j0oiHBL4P9BnU53o6SkpK+5ufkCXGFvS+xuGojVnWKwcKmmpqZcq9W+DlcKwi3BQZ5UKtXDIhfcLi8uLja1trbWbWxsxNIo3wekGtTgGfiCd1e2tbXloxBMKMM/tYxbhJh+Ibo3kaCcsrKySxKJZLWrq6vRbrdf5PP5RgSon+bhAzBA58dIrb9KjUXDvQrLAiKR6IVYLB7Cd3RRUZFlZGSkLjs7+xosOYZtBnALkKo5BA6QciaptksQ4X6PQ2zc5u3t7a1D/eYsLCywORwOifIs7iLvpwLx4DmoJS9FvNrVTMgPwj0J65bQMc5aLJYzRqPxXlZWlp9GOZxy4BFpKKAU9EfsTuSHhBth74b5XEQLKampR2CERIzkGW1ZCvpufPASfIwkGG5fpFKamppqDQbDVUQVOuyv+fn5zpWVFcbpdMYiC9JImYMPNC+9yABGr9cz2LdbMFTL6GkFAwMDypmZmUx0miMQ3sQFP/H3InhFUyY4Ign+FmAAwneQ60a8FCAAAAAASUVORK5CYII=","small/projectdetail2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTI2QTA2Qzk4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTI2QTA2Qzg4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQwRkFDQzk2N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQwRkFDQzk3N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g++K6QAAAqFJREFUeNrklF1IU2EYx9/zMc/cmWuri0G4D+mqlOaUCqGbeSdEXgTiZUhBdJXSXbfLdZurbvrQDBTszlVDRlDQltAkRAO9sCDY5xGmWztnZ1+n/2tnOlPsxrte+G2H9zzPf8/7PP93jKZp5DgXS455HbsgTz8kSeJfz83dLJVKJoPBoLW0tBCy1woDWAVvDxOo1evkhNVKhoeHCcdxfwQTiYQtND/fOTo2FlyKx5Wpycm6sbWVvqKqTjCgC46AXn0/CmYrlQpxud1kaGhoT5A+mM1mydffv/45FrvSZrG4jUajpifawHngp6EgqBd3C5yG4ENRFKv7jkwXBJRX09OD4XD4Ep7f6cl01cF7GgLi4Je+fxfcBtfBswOCNLFYLJ7zer3zy8vLiyx75Lw4/egy6GMYZhq9L++bMvUjRCr4Fv4xyLPgA1gET3meH0kmk7HZmZneXUH0oCAIgorpqhCVjxA7BULgcmMD1ZFatdr7aGIitL625uS6PZ6BSCRydSuXu7gpSa5UKtUuy/IZBF5APKVPz02Ae2DwgJnRnpKitKXSaZE7abM9gAhrFsUfDMtuliuVGsRtCLIg1gzcekW0sgCdLPgEaGtWAPXXEmgXjEYz63Q4PkrZbAcGwcWiUeH7xgaHvjQsw4AsDQbdTZN/Ar7SHoJv4DFQYT8Ds7qyYvX7/S95jktiUrnt7W0GFZOmKTfMnQEucO2w5lKDuzs6YmxnV9eWw+F4k5WkYr5QUBVFUdE/lf5iEz+BXffkoUuRZeLxeJ4z1C6ZTIbk83keQkxkYYEEg0FiMpma4xstwCUn4+BO88tyuUx8Pt/U/UDgxo6x7XY7Zef6pHFcb0/P34K7hYBR8EW/IdZarVawWCwz44HAC+RozP/3B/tbgAEAgE77MuqeX+0AAAAASUVORK5CYII=","small/projectdetails2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQTc4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2ODRhNmI3LTk2NzUtNDk0OC04ZmZiLTk0MTJmMGRhZTI4MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMEZBQ0M5MzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtW6bvMAAAIySURBVHjazNQ/aBNxFAfw311yMf9Q6rWlWAUHA2mgDpHEOGStVEuhg6uBnmCkYwntFjt0sKB2KQkZpCp0aQmCmCkq6VIIlApxVWkxgnA6RJs/TXPx++SlnuGQUjL4gw935O733vu9X+4ntdtt0cshix6PngeUYrFY5/4BXIF61zsueAOL3ZMbjYZIJpPC7/cf/WYvFAp0dcM5eATfoWWaNwwTfH8TbvH9ZrVafZJIJP5KYne73Z2l65CDy3ANDA7cDz5YgFFY4WfTVES5XF4KBoMHVj2kpV6HeajAT6jBLizDB5iF1/AWNJvN5kin0/P1+p8u2U0BKUsENiB7jP5flGV5q1Kp3CmVSo5QKHRgtcuHXUmsxll4CjuKouR0XZ/SNK2QzWavUqWdgPu85JrFLpvHKViH27yRAlVKzWYzEo/HX+Xz+REpEAhMcuPHudlfYYsrlfj6HopwF9JWmQzDEF6vN0cB25z1IyjcBge/R7s8yMukv8wLuMEbREV8gwEu4kKr1ZJp8ipcgjOgQh942Gn4QS9DiBPSWIJteEzXcDj8ENcv2HWFKqTsa5yNMtksNooS7vFXo3GfKXiTV9MAJyqsyvxlvOQHMvfNjCZ+hhE4z0mcnNjJc1zYGMnj8TyjCgU/HPrHYWFwpRRgDu6ZHyKYwHJ3MpnMmB3fY6f55WMeKDPwCe7TXwfLFKjseSqVmo1Go7pULBZPelLR0lQErKmq+s7n8x3+Pr7++xP7lwADAH2iqjewvXObAAAAAElFTkSuQmCC","small/projectprogress2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATlJREFUeNrsVMFNw0AQPEcuIHTgPMMr6QAqIFQQqADoACqIqCBJBaSDmA6cD/leB5gKYAbNSevVJQjiJyuN1r7zzu7e7DmEf/uLjc/Hj8CCz6VZ3B6JWe/f9qsDZEu4G6DuEMIugMtMzByoEDiBf+Ez0AK3wJ3iaNwPhcn0CXcGMOPQEFauUrbHitgiq/4QMWNGpavmXv7pQOuN/AaISp6+X/mWk+1QRX1MBOyz5RqVRrW80VoY9CByA7KYXvogXNuXQgc8V+kpU8wEvmo98kgQRxHeORn2iEqpOExzlLFKIOGVGaGsDTgGbjRyZN8i4NtrYApw3KZG9WArpD0re2v2UhW1OlhKVZ+ws1ZoqCtX5UL+4QdBolW4c1Pc3ZzosNvfSl70Seb/NjO42SlkfrBbkTWnTPmXAAMAt5Jt80LUQ1oAAAAASUVORK5CYII=","small/projects.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxOEVFQjNGMjczODMxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOEZDRjk4QzhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOEZDRjk4QjhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NmQwMGNhYTYtMDQxZC00YjlhLWFlZTItOGRlM2YyMDQ5ZjcyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4RUVCM0YyNzM4MzExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Yd8ucQAAAzRJREFUeNqMVF1IU2EYPsdNmBN/2oxIoa2ENpu7UJHA3SlLCKFwEKJtoFkgOhxa+LMxNESzaYxAkiJBaQ7nLmoX3czEkOhKiHJzbEQLmzRjgemcOrf1fGOtuTzSBw+Hc97ve87zvu/zvXQsFqOYVmtr6/TCwoIqOzs7PXQNsO3u7lIWi4WqrKxMBthMZNvb21QgEMhisVgzePUBLOAQuAycZjrHSOh0OvNXVlaCOTk5t/AaTQnJgNvA8+POZTARcjgcPh50JBKJpoXCQBbTOUbCtbW1YolEwquoqKD29/dTQyRt/n8ThsNhSq1WdwwNDfXU1tbO5eXlUVCZusWVwBxwITMzk5lwb2+PVqlUBr/fX261Wm9oNBoT6WTaIh86ADOp4/r6ejkjoU6na2ez2fkmk6lFLBYHqJPXS9RZ193d/dDr9fL+IVxaWhJA1dWmpqae9DSYFiz1jsfjvRoeHr6L7P4Sut3ujLa2NiXUeTo7O2e7uroGXC5XcXxDBmPf4rWFwqnl5WWJXq8vSRJubW2Jg8Egcf9Z/G0K7+7m5uZRhULxaHV19RJSO5aQqJJKpcGqqiqfx+O5lySEiiLIP4TCnyhywcbGRk1paalVKBR+QNdHsOUJUM6kEniPMolSa0iT2wDCX2NjY43YcAZE18fHx2fKysoUUPIGcS0wlbgp6SuUFJf4ECTuB1ER6veMz+d/haHNqOMpmqaJka2AIvFUA7PAlcSNIs25SK5/kjAajTqhwgvshEKhU2azud1utxf39fXVpNXvNdAAPAUaQfRicnJSurm5WYKM5uKpkvFFJsv8/Lx8cHDwJpfLZU9MTOgFAsEXbGIZDIbw4uIihe/HldCKBn5GvXlGo/EOvBuLK8REoZRK5VuRSHQgk8l+aLXa+z6frwAbwifMSw3gR5nOwXIWQnbE2OjSQW9v76jD4RBWV1f7+vv7HwMNUM9DaqlEZJoaARGGBqe+vt6BO2//E6TTFaB2Uph0AETfYKes3NzcAwxadsLgZHSR8f0dOI97/tFmsz2AF2OM00Yul3+anp5uqaur8xUWFkbQMC5+SubXDkmEWI9UKeHNETTyiKLfAgwA/RJmmB4ORZwAAAAASUVORK5CYII=","small/properties.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVHjaYvz//z8DNQFAADFS20CAAKK6gQABBDeQkZERLggU+79s2TIGNjY2BjU1NYbbt28zvH79Giz3/ft3MP38+XMGKysrMPv9+/cMiYmJYAMAAogFqy1AsG3btv/KysoMPT09DK2trXC5nz9/Mvz48YPhyZMnDEA1DJKSkgw6OjpweYAAYsLldD09PYbe3l6GtrY2ho0bN6IYBsJcXFwMfn5+DLy8vGDDYQAggOAunD17NjwwbWxsGPbv389QU1PDMGfOHIaUlBSGsLAwhlmzZoEN/fbtG8Pv378ZPn36xPD27VsUhwAEEBNSuDGoq6szJCUlMZw5c4bB3t6eoaWlhcHNzY2hqKiIYdWqVQyZmZkM9+/fZ7h69SrDrVu3wC5/8OABioEAAYQShhoaGgygyDAwMGBobm4G0zNmzGBIS0tjSE1NZZg0aRKDl5cXXL2trS0DNzc3w8ePH+FiAAEEdhkInzp1ChS5/x8/fvy/tLT0PzBcwPyTJ0/+Bxr2f/Pmzf8VFBT+x8bG/p82bRo8eKZMmfI/KirqP8wcgADCMPDv379gDAMg9urVq/8DXfn/+vXr/4Gu+Q+MDIzECzMHIIBY8CVSoGFgRd7e3uCwhKVZfJkBIIAwDASlLZAGX19fMBspbYLFHR0dUTIBOgAIIAwDYYEOcp2npyc4zf379w8sxsrKCjcYFwAIIAwDt27dCjd4x44dGJpB4vhcCBBA8MC8cOECOBKArgFHxJ8/f+AYmH/BkQHD+CIFIIDghQMoqdy5cwdFAcx76C4CBcGmTZsY0Q0EAYAAonrxBRBAVDcQIICobiBAgAEAz2h+Z3eyQxgAAAAASUVORK5CYII=","small/protein.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAipJREFUeNrsVD1TGlEUvcmEhnF3qLNxxhkoMJUNdhiSLdDGgKMlfrUWamFmTKP5CRamjZFmY5hhU1AiNjRskYUiSycFbMOgzO4PwHteeJsF2lSZ3OrumXvPPfe895bof/z78Wzx9eJuNpvdwUez2bRrt7Vjxs6XU8tnwJy2Q77vv+V0mMvlfmqaRlbDoobVAGYnEolyPB6nx4dHYF8JzaNxHB0f1UBy8uHkHt/dbneU38iPuCaz8mbli+d5ok5iEOM4jsBOP54CO38+LRlFW5tbC8jNHyZtF7aRxtZW13YVRSHLsiiZTIradDp9hpw3IFVRBTZDyCvspFIpkfd6PcKKHIeFQkFg1WqV9Hc60gwPEYPLZpnYjllCXmlpf28/I9SZJuVzeYHrup4BMQYgVFWl+Vfzh5Kk3W4HqicIo9FojJt/K7mtEpSCZLy2sEAqXX+/HpOK+QADjoAQPmgvNZI+jdfCydG0BSCRQzBYKp0gvC5eB9PhCRqxipwOC4BhMAKDMcDtuRNn8Eeh55P0iZttSSItML4ZHbmiVHT5+ZLmlDl7hjDcCJ84LviAAiWwoNVqfZIWyKtSr9evIpHIcIYw7JNhGGDsFIvFwIJKpYImEy9EWgBb+v3+xfS1eyGuAV9KqADxYDAQRZ7vkeu6wseb7zdXzi9nCLUH2oGoLZVKd4zZGIDv8FvG5VyQABfdMYYrsRQabIMQzy2EdRjrMIa6mMT++t/mSYABAMjpI4kziGlnAAAAAElFTkSuQmCC","small/protocol.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpiYBjsgBGZo6mlaQCkBAjoeXD92vUHBA0EGtYPpAJAGnCoNYDSIAsDgYZuwKaIBYmdAMQgRQ9xGOgAxIZQg/OhajEAExL7AxAr4PFqI1TNA3zhgezChSAC6JUGfBqAQaNArIHIGhJwqD9AKJaZqJ1sWLCIfcDiEnhSAfrAgVQDQV6uRxMDhe8CslwIdMkFIOVINS9DvbQfllQIxToxLjyAniVJAXSJZWKAAjBoYEFxAOorilwIK5H8oXkcpwvjgTbbE2mgPzSJbcBVfCkQKBywgQtA736gaYkNEGAAzbE5tdbgAwYAAAAASUVORK5CYII=","small/query.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrMVMtNw0AQNZbvMRWQazglFQQqwKmAuAKggogKoAM7FcRUkHTA+kKu7gCXwHvorTSsvCYgITHSk+2dmTffdZL8dzmLKWaXszUeN8AVkBvVAdge3471SYQgovMOmAKPJIBzZ3QFcCv9CjoXJZTDHqDRA4x7nM1F0gONIb/HYwNcW9I0SLACOhiUIiPRKzABlnzHGTNLoH9WBTtLkJrspupXafS5MiVW+l57pUgTBf6UzDgX6ldvHGoTsDJDsbIF2JYmLJnR28jEKwXkEA5ja2MJmdlFxI5l1iBrBnSTGCEjF5p0KGz+SyRY4cv9QqjRO61CKBsNbKgVnV2bLLAptRqtHQjeh/b1SdktvrspnNgeJOfBWS4s1VNmVfpFH73LIHj3N0BlsVzv6HSX3ZBvFmk0BzQH2Z12bGH3c0xihK161CnT/tTfVzqS4Y/Jxgjdb8j+RD4EGABg/JdlqbF6EwAAAABJRU5ErkJggg==","small/receive.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM1JREFUeNpiYBgFo2AUEAaMIEJTSzMBSNUD8QMkOQMg/gDECkDceP3a9QZiDGSC0iBNC4FYAEnuAxQ3ArE+0NL1yBqBfAUgxrCEBUpfAOJ8IN6I7BKghv1ASh7JpSAxAahvCkA+AvJhyh8A9S5gQXINNgAKgodIFgQAqflIPlGAGg4CB4B4AROBIHkIcjHU1Q+hmibicQDcy0QBoMEggxqALl0ApPtBLgWKOeIKQ5A39Ik0GBQUgaCIwZpskMKoAC2mUcITFOhDP6cABBgA6tQ+fjF0IXYAAAAASUVORK5CYII=","small/redo.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjQ5OjAxLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6MTktMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjE5LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjdhMDM4MTFmLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk1ZWMzMDIwLWRjNTAtNDZmOS1iMDc0LWJkN2IxMzBlMjNiNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5NWVjMzAyMC1kYzUwLTQ2ZjktYjA3NC1iZDdiMTMwZTIzYjY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6NDk6MDEtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OToxOS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnRK6F8AAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAATdJREFUeNrElMFRwmAUhD8c76aE3PdCB0oFaAVCBZAKMBUIFaAViBWAHeSyZymBDvDywvxGIKLMsDO5/HnZvN19/+tst1vOiSvOjJMIJQ0kjY/VdE6RLGkJdIEKGNpe/5pQUgaMgX6Q1CiBG2AAlLanrYSS7oE5sAJegZXtTaPmLmoWtov6/PoI2dD2Is5ySXWX65BaxQ/T7r8Thsw5UNheBMlz4lsXKCWtEwXDg4ThS2X7RVIOLIGZ7V4SyihqdwqOEfbDM4BJ+POUvP+ITsumpwc9BOpRyCPRHRrkl7kpm+isljf6L+F7eAcwBXJJb8nItOLHYEv6jGSnMUaTSD/b833P9qotlAdgKSmLEIp49t3r9pRtV5J6wFzSIzCLUWkiO3nbSBoAt0lQTRS2qz+vr4ts7K8BAGgkhkLbhmsAAAAAAElFTkSuQmCC","small/refresh.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACSUlEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCAWZM7nz58ZGBkZGUDB8PXrV6aDBw+mnT9/vuTRo0fyIHl5efmHampqqz09Pat5eHj+gdQtWrRocXZ2dizMDIAAYkQOwy9fvoANO3nypNXKlSt3AQ1lB1kAAiBxGJuLi+tnWFiY282bNzOPHz8esXTpUlaYGQABhGIgyIUnTpywWrBgwUGQuJWV1QoXF5ccaWnpjyD5J0+e8O/du3fKsWPHImA+AdHIBgIEEIqXQd5ctWrVLhA7KSnJ3sLC4hjMQpBGGRmZj/Hx8bFv377VBrpOF1sYAgQQSqQcOHAg7du3b+wgl4EMgxkE8zIILFy4cDHIMJA4TA4ZAAQQioEXLlwoBdHOzs45IAPQ0ygoAkBhhmwQuhqAAEIJw6ioqN8gxTNmzGBFdx0218DEgTEOFwMIIBQXwjQhGwSzENliXOIgABBAKAbKyso+Ail4/PgxPzZLkDUDw5oJ6JOdW7duzUA2AyCAUAw0NDTsBtGgpIHuRXSXrFmzZiEw0Tu9efPGGlkcIIBQDHRwcJgFTLS/QAEPSo/YDAIBkBwsLfr4+KQgywEEEIqBQMP+RUREuILY8+fPPwiM1QWgxAyTv337tjRIDCQH4icmJtoLCwv/RDYDIIAwcgoIXLx4UROYW84Aw4kN3XUgV3Fycv4KDw93tbS0BCd8Xl5euDxAAGE1EJZroIVDKTCS5ECGACPtpoaGxixo0PyDRRSygQABxEjtAhYggKheHgIEENUNBAgwACVHK8TrKNSjAAAAAElFTkSuQmCC","small/register.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXtJREFUeNrUVDFygzAQVDx5QJ4AHSYNLuI2yQsSvyDwA9zRMXR09g9wXpAvkNYp4iaYzjyBJ+SWWWk0cjCTLtHMjYSk29vbO6TUXx9XP23Ow7knkzfh2x2bY+duXo9cfuPcj5zfcF5MAgq7FA4S3ed3ZAEYVrJ/EovlezeaslyA40lsRXYbsQcnZi2WUBJk4guoyWTmXM7pgPEJsOXdUjVfzWBYMwDOwPQgltoAM4tdxMPC0lBd0LAi05xFPNNwQ7BBM7JRQRCYC/Z6/7HXUmzpuzIaSoRnbi7IMkeKl0Z4GyqC1Fp30bLWKUesYP/LPvbo0xHDpAzaL2Q6gMZxbNLMsmxYl2Wp2ra1AQ/0gaY7A4goclAw7UfMotEZHYBZ+7rKqHihszNVZoPiUkzGU2NNvTu7ud0/RbeMz+8UjFgAZf2Oa7KrmNH44yCpV2ScsL/A+J5A79CKEiFwj3tTgB51SS48Dh719t3OGHu+oM3ThIav7sPwP8a3AAMAbXqWfZoiCI0AAAAASUVORK5CYII=","small/relationship.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNrklNENgkAMhpH4zo3ACGwgG8gIbCBO4G2gTuAI6ATiBOgE6ATgBNiS/5KzHnhPvtjkj1q/a3v9CUHwdzETvzVpQepIe3xmpIikSA/SEewGuQtpB/YttqSalJIKUk8qUTCFMuR6MCnOHFzTMhSLBtrBaVFA4ewQoYA7z1V5cdz1TEpIOanFlWTEmCgHW+LcEHMHzH/eJyZRyK/wXVlGfRiirBwvvRG5GJPnokED/g2KHdOUwpgDmstIUEOZ6bYjezWg7aYaYbl5EeLQaQS6WgWYqyYcvjEbWt19wovTGNcFG2NMsalHqTZmKSy7d6jGVU1kaCC5dsKHoUFtPwaOyFE4+fa2sYtywSWMeCIf4cps1tpl0Mxjx3Jn1U9fsC8BBgCAwVC5hcjLwAAAAABJRU5ErkJggg==","small/reminder.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNrElDFOw0AQRePAAZzCNaYjVOYE8RHgBPgIoUtHTYWoKJOSjtzATpkKaAhdSImIFJd08AaNJbPYq92AlJG+xprd+Tvemb+dzi6sf9xPwdBl754DWYx7AEdRFK3W7+uXrQkhu8bdgQKUYARpCOYQfzTl7FvIxrgE9BbPi1JjIS7XLRdNeUELWaKJhxVZbU1Il+CEtVczt9tS4DmYmGRiGpuCrCmxjVAqnFmuV9YGPoQpeLQQyq+GPnP3ue2ertkMkHscnOuc/iZkIdPOzrj4wIGvp3e51NwfJ2Vgo+PiK8tEc7N6UALpH7W+sXXZ18qq699aRptvuHt8DJ7QaelYmeh6xOctuCKvCIxX5RKc6onyIKzU1y1WDHReRTU3NLKwaTlVtRyAoQ55NcjVQRIrTHkGDr811kqkqjMIpv/xYifmALfZlwADANrWbfLoYoFGAAAAAElFTkSuQmCC","small/reminders.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNrEVMsRgjAUFMYCoALxqCesQErQCqQErUCpQK0AS7ADsANPclQr0A5038wyAxFCogczs5OZl7zNy75Pr/ePNRqPImBpctcxIAuwXYEbsCouxfFrQpBtsUlkOU0RsAMSED+bfPoashRbCPilM2wetoxXVsYRwjGk41CNhKQiwQRnN9XXbQlwARyavkWb6Bg3ObYRSoQnjbxyNrUhFPHPGkL5qmdTd69v77hqMoDM4uGMdfpJiIOYmT1BeMeAz6eWV/rWXoqBB8vFti1D+sZVoxiiH3v9ocuy7XqWWXcrbSQCp6rIHZF5wIbaJ7XWI9EamPFFGQj3ymAoV0BMWa/SNXskMtf1csRuGXDanCuFXD4ktlxtT5N5mDISiWreNQ9tSsNI27cAAwAHVWSC59xGrgAAAABJRU5ErkJggg==","small/removeannotation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbxJREFUeNrMVKFSw0AQDRRRFDGdqQyymAZXR/iCFIdMPqFfQOtwAYdrUQyq4KjLJwRDB0XQdIZIcLzXeVeumSYgENzMm0329nZv973Ecf54bdVtdg46AUxguXIgnT/N86ozjYpEUavVmuKxrySf2joCrrDnAY+Lt0VRe0MkcmHGSnSCm9xtKMaYMyAC4nJMOSFv5QEZLYKPa8YRqfgh4jLj3y4F+ACTDAAXvqQqIZJMFDetqviipObdB96B/g/ErZ1rmMMwp6gak1kMvCCTsCQjgZ0BH0APROTmDN6beHwFQvhv7ZYpjRRBnkUKVxco5FvOTDFcichJbWmZhK4qMRFZC+X3DUE6zL2+OmIhX5p011rG1VlhT5WegZ7abUuHhZI3lbwtH8/usghaHtk3zJRsgIpDalA+6oxMXsrHpNeE/LFut5LNjmwq+gtJIi9JJBURA81uX/4Cvq7Of8+QGzATBTs12rvQHKeWOiJ1sC5siTSwNVWxbNGT/ZHd0erngKFSZzM83nDQeE83ZVMcCTsHHjTL6t+X2hhr2Gwl4wylP1+SinSz4a//h/rkQrHvWeTdc451/8T/vb4EGAAgQ7tFhdCRHQAAAABJRU5ErkJggg==","small/removechain.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNrMlMttwkAQhtcoBVCCOZITdOB0QCowqSChAkgFhApiKiCpAJ/tg32KcwtUgEUKcP6x/kXLhjWypUgZaTTa17fz2lXqv4vX9eDwdjiFCaE76Kr4KHKZ73WEvcI8QtfQPXSLuZGs3XSEyeE7eFVyTuwGOvBagPriCYcnmLFeYc5rE/JSw6C+BQtgyrY5lCLcQyfQDJAnAybhzlpVGQcPMBFUQDk9Fbjk9AHhRleLokNhS+SESWgr6Jxen2BOD9kCGw77hPiOe2NJhS5SzwHbslkHsG8NMJHAqP450IDNAHthz02ZuyYZYe/kl2eSeD4pPa4IrfssDMPKliRJKu5b2EWRJD/rBEshsGlMW0OP30eVpumZI8VncflzwKGMocaOp1YyXy6pLzc93PH3iI2nttTvloXJHLBI/zae9Va/CFwzBcr6BALjEqV7EuuLi31I6JwH3qXSDR+Fr736U/kRYACTjKj1Xd6tugAAAABJRU5ErkJggg==","small/rename.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNpiYBgFlAJGUjVoamk6ACl/IG4E4gIgfnD92vUFFLkCaKgAEJ8H4gSqeQ1o2H5s4ixACQUgrUCieR+ghhoAKQEk8QcsQALk7HgQhwQDL0BpkD4DKBvkqIUsUM5CqIGEXHoAGAEHYF4GsguRgqAB7GUkxSDbHIhw3QF8kkzUTodUN5AFS0DjAwQjjhEamPZAfJAEhzyAhnkjUriDzWAhFMgkgIMUmQXNegLUKBwUoJnhA7SQKASmxwuUxvICoCETgHQgzctDgAADAKWHMhBMlz9fAAAAAElFTkSuQmCC","small/request.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNkQ4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNkM4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE2QjI2MTFFODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE2QjI2MTFGODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hHGqHwAAAlZJREFUeNqMlctrE1EUxu+dh2SkGGtIoVgFH4khJe0sDEFQgsWFIkhXgcZ1Vm6yMG66kSAB/4FCd+PCoHGhKBV1J0HpMtKCigsfpaErSUITEucRvxvOtOnQZnLgR+Zx7zffPfecGx6Px9mIuAHuAcXz3AEvO52OUalUWDKZ3HuhsNGxAJrg09BYGyTAIjC8E/wEJbAGXnieXwP3xUUgEDjwQg6Hw9fxexZcIi7S/Qy4BX6ADY/gBeHQcZytRqMRiUajf0KhkHDOOHLYp0HfwRYIg1lgCQPgNnjrEdTBOud8vdVqzciy/MswjMV0Or0r0YBN0AGPaPADyp342By46uGKeGdZ1lomk5lLpVLbuVzuQ7VanXId3gTToET5Esm+C5Yoz7LHoVjev263q2GHl/P5/EahUFhtNpuWK3gHvAHnwFMwD76QQ37EhvWxZN5utycgzDRN21UURXd32Z30k9wt0YbIo0pACBWLRRaLxQauS6XSk8PK5jgwxXifkmK2bTNd11kikRjcB4NBWzpiLGdjhmma++3jOFwZc95pcr5DeRblpaJcVJTNtli6W+DjChbBBNXlX/BedAtEnHK5vFqv1zez2exea/mFWP4pcAacpNxOAg3Ojqmqet7N4bDDvo/oM9Cjw2KHSuoENmUBLff7MEFzhJj42HO6fjX0/DN4DDHZe5p8pQ6ZH9PtgYhEIrZXUJyOr8E7kBMtRQfDWIGd3heTJFssuQ0ego9gBUyBb/QhX7FarTboGBHo5Wnu+QuYpOVfJqe+Bd7r9QYdI1KFMlL/CzAALlC6L9WzNAsAAAAASUVORK5CYII=","small/resetsearch.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYtJREFUeNrEVM1Kw0AQjkHw4GU9eE+P9RTvQpMnMHmC6hOEnAVJfYHWJ7C5C3oSPJmCV2mDYq9RRDyVVKiCP+A3MgtL3E2xB10YJsnOft98M5O1rL9Y+5dtAesucnZJA5bARTAB88+Ta+f58XUbz4ESVsBSWG98Oy6NgAAbwrlVkqebaZEf33cAXPAnIvCYNAToyATowB1R8PvLp/U2+yhX11cEb9Mh/2Ar/c6oudEk4jZsB9aQmdoqIIILmP9wNelN7mbl2V6+SyAskQBOZCxndchEXWMNmZ0OEmNMzJz5UNYVpJkSGzDRGsXahmZRfQZSBmUO11f21EUxmay9CVCwTHXl7Ft1Y7Ncsycq76dMUi4CSBJaqE+myJbSdMSuVGSSnPIgu3XZgNDhmRyB2AyITdmACIe8GrCI5zCeNzaU2QXLIZmDilzBmQU8Wv15gLpfsFA673GTOupvp20KwBIN2Gal82H1UqjrcnXOfmRRt3RNiZVZo7FJfnMf2poOUzYNvhRC67/XlwADANRPoC6nHryOAAAAAElFTkSuQmCC","small/return.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCQ0U4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCQ0Q4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVlNDY2NzVlLTM1YzUtNGExZi1hMjZhLTk0ZGViZjgxN2YyOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDlCNjc0NDdFOTkxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiajKLcAAAHbSURBVHjazJS/S0JRFMevvyAsp0SQBAcdHr6kqSGCloZ+LLnUFlJE0CA4RdIgLf2ChiKMWvoLgpAIiiJsaHjUHBRBU+TLxArUh+jre+Rqz4eWgkMHPjx4777vPed8z70GVVVZO8PI2hxtFzQEg8Fm1glgkycwA97opaIoLBqNMkEQqgvNiUTiL7FFMAcOwCQYBMf0IZvNsnA4XLPYbLVaGwn1gj1QAhPgHniBU7tI/7+5XhvAEi9tH2xpvn2BIS7egTBFIhGTxWJxut1uYygUOjL4fD6tWB/PKgcWwINus3GwQu2jjUsIj8ejIMuPdDrdmUwmSxVBavYymAa7YKcZp6iH8Xic+f1+VigUWCAQuKaS+8EqKIIx8NTKmOTz+fITZTOHwyFTZhI4B6OtitWJdxK8BSM8u5YDxpSfVLIsy3bqIZU9xectA9bAWYP/ae0AcIEueOKCKT0wpRum2GGKqnXZwgeY3JXBOrjQCYrgEtyBFARfIJhC/z4xNhmMzY1+bMpVgFkwD17BBrjSCNIEDOtd/u1yINtivLQTsA1O+ZF75pV49S5Xe0K7NIgcn8lDnm2MjxYppCoZouzaYyZJUrOG2vixe6ycoGKxyERRZDab7Ufw39/Y3wIMAHQPmgiAphc/AAAAAElFTkSuQmCC","small/right.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpiYBgFQw9oamkaAHECseqZiFAjAMTzgYaeB2IHahgIAwZAvB9o6HogVsCliBHJa/1QTdhciC7+AYgnAvGE69euf8Bl4H4g5UBiED8A4kagoQvI8TI2oAAN3/2wYGCiQkIAefkg0JUg1zKwUGgYyKuFyOGIbOBCkE1YNMkDMXo6PAANuwM4YxlPwgZF1H5ckYAOWEgIJ6zJhBwDLwCxISzQRwEGAAgwAK8HNpBUnvJaAAAAAElFTkSuQmCC","small/rna.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATRJREFUeNrMVDFOw0AQNIQiruLGEl3chip5ge0uHU9wXFIRXoDygihlyvwgLqlwXhBXuDUdEpFiOkpmpQFtcRHeFIiRxnc623NzO3fnef8dF67B0c0oQDMH4/qlTi2Clw6xBM0zOAA3VodXytEerMCAQvfgzirYk8fh/fAZhuErujNwDE7BLehj3ANb+easGsKtCEYUjsGEr2SCB9S0MYdC4RmXvQAzTiJMIVp1DkVBnBTgI2v6HdDSlLJCxqRzOh2CK1WC06G4gBAKhOHT0ZpByQ64xvgT3r+ZBAX4UZL16VDc9cUhanh3zpI9JqqXHXGv2lN2HMWAAbXgBydacOLWJKiEj+yuVHA5BMtOS3ac8VbtS8FEi/2c5Y5IWMNbbu7m5OXQESJQ/nadWQS3FP1bfAkwABjJWe3VXXMTAAAAAElFTkSuQmCC","small/save.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBhxgBHG0NTSFABSBWSaM+H6tesfQAwmJMEEIPYnwzB9IJ4P47AgSYBcuBFoUwPUteeBWAGPQYFAtRuAah2A7HqYIBMOxQZA/AGogRGGQXwgLgTiB0C8AIjzsWlkIsFrIFdvgBqME7DgEL8A8i7QO//RxO8j+SCQFAMZcGlAAg9IMXA+NEI+4PE+CCsSayBIcSEwMg7gch6W4CA5UogCowZSDpBjGZRE/KF5ExTL/UA2vmTzAao2Hjl5McMYoqKiN4CUBRAHAPEPKMYFQHIvgNgBym988/rNC5oUsAABBgD9fztxPZ/YRQAAAABJRU5ErkJggg==","small/scan.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==","small/scatterplot.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=","small/search.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrMVNENgjAQFcIAHUE+8QsnQCcAJlAnIGyAG+gE6gSygTCBfMkvIziC75Jr0tS2aDTRS14aruX1Xu+1k8m/hze2IJpFGYYVkCnpATgBu/7W318mBNkBwwKogRaQP6ecF0AO0m6UUCErgUavBPMxV74GQjnvWciI6AxssLB2bDrFQBsPWLehnG9ZW7DMxnUkIKGz3FOVIBcuQqqw1WVa4s4bxy5CwZ18O3zHnPgmIUlI5LmMhGC5g4vwxEaOR3w6ZU923CAzISaPsttsIRtZwT4sncZm015YTsO3pNFkpqyiVAqwEl4Ncgel8/I6btVrRxEYyCoD2VzrfG7zaGDIJdr3UxXv2qZUXhV6FKqPfMjVhMCSpP38xX4IMADIQ2O+fdKktwAAAABJRU5ErkJggg==","small/searchstructure.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrMVMFtAjEQNIgCnA6OJ3ndVQCpAKgAqCC5DqADUkFCBUcqyFFB8grPXAmUkBlpLFnG9pFXstLI8t56dva8a2P+uw36Aib3kwWWFbDw3B1wAPbnr/PlZkKQvWCZAUfgBLjDc/ktsATpZy+hR1YDPFBwdYrwvZTyNTB2/kGCjEQNsEHgEfsmKJn2oNKZuEPcJkfYqDyqo5L3SBjVVvrHjL+jymGi4pn+mZGCmJUgWytxq8QmRWhVTiGkbBU6hplgq9trMzFvtxKSZIqSqHSXikHCvaopVVGS8KBbLXGoTaiskbBQT/KCur4+/Fb/PYvU+Qup4mU8Ak9A5Zo71TauVazUnQKVVspYRQ2y1+ykgPDDtUEwv53XVhzHnT92tFGEbBshqzxlRvN7iYkZRXzTYH+lImexW669V4Wtsf3Ne3hFKDVjDf/yz1/sHwEGAIXFfjZSagb1AAAAAElFTkSuQmCC","small/setsignalsequence.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCRDI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCRDE4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjcwODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjZFODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+maj/NQAAAbNJREFUeNqs1UFIwmAYBuB/04EIHgqCDhZ2E3bsIEHhRShYFBgEHUoIu0g3gyRiHrpGdBqUtpsdIgYtAvHSoUOwU7AOsVJGpyCEvCwV1N7JqKh0W/jDw3D/fHHb931SnU6HDHLRZMCLSiQSdtdEwbxoFDTIw7250Wg0SDabJeFw+CswFAr1C9uCdTiGR5iEFdgG2TAMIssyiUQin1/w+v3+XmGzsGEddevcFVzDEdzBM03Tjp4hA7z1S/QfezdQhLSblzIPdbjosS/ADIw4DVyDAvSqqSfzdmHOSeAEjMOlzduXIM4wjG0gBw/wahNYgqCu62P9AilYgHMHNfwCFUmS5vsFsjBklYbt8vl8p6qqLpXLZapX4CrcwpujvqXpUrVaDYiiOP1X4LBVxDkXrfvu8XgKuO10pVL5Fbhp9ajqNK3dbpNUKpXHxArmcjmu23rfnp3Zo4tuJku9XifxeNzAcVcQhAOO4xQzcAoOYd+aJq5WrVYjmUymiPKJJpNJ0YuJsYzzZ3DiNsycNs1mk5jFzfP8TiwW26MURfn3MG21WoRlWRIIBLqfNU0j1KD/Aj4EGACuJYfgvqMnEgAAAABJRU5ErkJggg==","small/sharedrecipes.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNq8lMFNw0AQRb3IBdBBzDGcXIJ9gSNxB04FxKIAkgIQooKkg3BCSi64A3wiRwwVpAT+l/5KK8se4wsjjSa78b79Mzu7UWTY7fEhiSbahQFbIXwhPluA+fU8g68ZTSDsTvHSgJUIe/iMkdB4QN0WoYXn8MaAUX1++jw1GHPj1AUQThDEutWHm6dqRFkI8+MiVJjCF/pdGLA1wn0AI4jAAuO6q5B/nuGZUuVc69Vi8Vab5irJXt8QxnHkjFMuVYIIQCdYKvWEvMNf4RVgZ7/OjfQhId8/q7eZYLkUcn4J0K67xo01akfZo0+Z9ev7PjZAPi3aUvVialdhiiYQkIUOJtFiFnoj8A6gaiwj19NbhNRKzd+Sqq9egwoBS8NGDVIuNVdPfRwIe+kU2tepnfLaxFKSDdyO1jfsn4E6gNafHDZIwvaY+h46QT46d5oHsJmqLmybXCBaY/XZv9uvAAMAoTuReOrsCY0AAAAASUVORK5CYII=","small/sharedtemplates.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNpiYBgRwH1XsQKMzUQFwwqA1H0g3U8VA4HAH0oLgAgWEKGppbmfREMUrl+7rgh01Xwg+wEQOwLxBbiBUAASMCBkEjMPG4NYnuUHOTGv80DugZ1uvYXI8sgGGgBtdSRkoHGU035WMW6YxYHo8oxIXibehTkWDKwSPCD1DlB9oPB7AHItCwH9IO/0Iwv8/fLrwvOOQx+BvmmAxnICkJoPU4/Ty0BXN8BiDk0c5JuDMD7QVQuAhtoDmQ/Rw5BsADQ0kWoJGx2MQANRIgUtC4JKkAOg2Ccla+JzISiP1sPyKBqIH7qFLUCAAQAD+0YnNrcLcAAAAABJRU5ErkJggg==","small/ship.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNrslDEOgkAQRREsKDkCdpaUduoJ9AZwBU+gNzCeAC2tPILYaaWlndhpBXZ0+if5JJtViYI2xkledoGZv8PfBcP4x+9HDQTAL1E7A1P9Zh24IGbCq+GzzngkKHEE0RuCnWcPzE97WEVwCK4k0F+5TOS+t1U/zYqCI7ACad6l3qEHHCbHNN/lhsUFwpLTAztVMKRATOGIo1yPQVcKlHyH9x12OJDjZFFEfOjzoNpKd2uQsaAJLuxGzmELzDmeQENqLeWLybvJKCor7zm3mbdR8lPOM3IGE9WLJThwTDjf0oqEC+p+h9yYBRu4i4AJnnbtFuy299W/zU2AAQBLfDh6cMxs6gAAAABJRU5ErkJggg==","small/shoppingcart.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQZJREFUeNpiYBgFgw4wgghNLU0HIOVAot4DQOwPZX8E4gfXr11fwAQVEADiehIMiwdiBSAugBqGCYCuvA/EBsSYBlS3H+QrIP6PLseExN4AxPlEutAA6sIH+AycCMQBRBooADUMt4HAAAUrAHojgYB3FaBMEP0BnwtBYCFSzOECCtAYBtEXCRm4AORtoCsEiPA2P850iOal9USE5QRoxDQCg+oAsgQLmmEO0MiZSIQLsWYEFjR+PTQGYekRFOgXsIShAlLyOUDIyyCb+4G4EIj3A73EiCbfAKTkgfggKMcA5R3xRQoDNG2BXDAf3XakPBwAlT/IQGTWUoC6FJe8AFJ6pC0ACDAA5CY8Nu7AdukAAAAASUVORK5CYII=","small/shortcuts.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFDRjczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4OUNBREE5NDhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4OUNBREE5MzhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjBkMzI4MWMtNzg4My00ZGJlLThhNzEtZDIxYWE4YjZmOTI0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUNGNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IvU3tQAAAeRJREFUeNrk1L1LQlEYBvBz86MURQuyKAxpaFAEc6jBoMFA6GswgiZpKvoHWqQiWoJwMTCCUkokmgxqyZqiJDQ0QkIaKqegwShQNL96TpxKQ+oGbh34oZx77sM9733P5UqlEqnlqCM1HjUPFIbDYb5r20AEiY+JQqFAdDodkcvln4s4jUbDN9AGK7AKJ3CeSqVeA4EAMRgMX08olUr5BobgEVphkZZLIBDcRSKRvUwmEzUajQmxWEw4rVb7lxJdwhQL7+Y4rlepVA7H43GZyWR6VigUB3wD6TZc7Ols7ElJNpslbrebILTJ7/fPeb3eMT5vuQuO6P0w8hFGRz6fJyqViv6VezyefofDMfFb4CjswzZMQ678okQiIbFYrMFqte6YzeY1i8US/GnLCzDOahYsm2+HerhFDYlMJvPp9foXl8s1IxKJiLBKUCNs0JaCHkhDB/SBFTohCQPow9lkMtlst9snadh723wL07M+O4ZdFjBBawRPbC7C1iyiXYacTucgevmzFOWB9OZNoEeH1mGdvYAtOIWHsrVRmKc7UKvVjxVHD8QwC0twDTdwCGdsa9WGj/ViOJfLVZ7ldDq9jN8WVqML1h6/jSsK95JisVhxgQuFQnR796z4fxpVPw7/7wP7JsAAwsSU61omF+kAAAAASUVORK5CYII=","small/showhideannotations.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3OUY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3OUU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkJCMTdGODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkJCMTgwODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+H6X5lgAAAZ5JREFUeNrs1D9IAlEcB/B3liVnxhUYLZE0hHgdHRkIBS0tNhYZ1BBEEF2NUQcRbrcEFY1BQzlIBf3hIByKoEadggJxSRpaghsaLhP1+l489YgoK7d68OHwef5+7/1+78kYhkGqOWykyuMPBqxNJBI/+R0DRj6fJzzPE5fLVf7C4/F8JxALG6DAva7rRFVVEggEyitkWdaadRSGoQHOYQeeLAH7QYCHUs1stg9r2AFnMANRWAceLqDX8v4k7ELus6YMQAT2IAgizMMK3Zq5yh5ohE44/arLYbiFbbqqaWihQY9BhUWa+A7qYLUYwOFwvD2z2SyRZVmqcbvdl/g8AW1wCM9QD8swRhPMwhLdyQ1swkihUHgUBIFLpVKiJElb6XS6j/H5fGaCZrq1Jlo/sxFz0ErrqsEJDEI73dURTKHT3V6v95rjuGgymQwWAxbHEIzTBAewDy+wAF1mAHDSppjzRNM0ORaLrYmimMNKnZWewwit8ZV1MpPJEEVRSCgUKh1uJh6PV3qg9feT5k3x+/3EbreXb8r//+Gvx6sAAwDJBXHVqKW7rwAAAABJRU5ErkJggg==","small/showproperties.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3QTM4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3QTI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjZDODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjZEODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yNA+OAAAAmVJREFUeNqslE2IUlEUx+/7MEyYBptqUYTSpKF9EFFqO2FAWlm7lrrJRSAibsLF1CAMLexjWVRQGxdBQSq0qhYtSohWgW0GjMqyb4dwnja+1/8M59bTFBS68OM+3n33/849/3OuYlmW+J9DSaVSfszzYNMU+/qg0e12X+XzeeH3+/8Ker3ee5jpzUugTiBmgj2g1+l0FsrlsgiHw38WdZfL5cB8G1yaIsLjYJEesH9gQQeURAXsBHeAxu9o9BiLo/8BzvK3HqfTeTKXy21LJBKNUCj0yOfzCSUYDD7A4nNwBRzhjVIwAA4CJ9gF9oHP8iemaX6CSBu5DNTr9W+lUikhBZ+CErhsy5PGkbwFH8E7YPCpKO/vkUNRrVZFIBAQyWTyaqvVmlVtR2+DW+AmuA4eghmwysIL4AQ4DH7KnJGoqqqiUCicazabnmFXt4LtLLAGnoA5cICdvQ8+APewSx6Px4Dbbd12RHL70JAp38EXLily9jy4C35JIU3TNuZGo6HUarVZKajwRy/GlAmtbQHH2Bgf5ZDEer2eqFQqwWKxSD9bsUdIG05xdKP6kZxd4RRQIxxF2ezNZrPzMGMmHo8/TqfTS7rNFKqxGxztyDYFO9iY0xSlYRjLmUymGo1Gn6F8vkohGuscYZpzaY4Q1DinZyg6cKHf71+LRCKCCtreKXJe5eIWY46sch1aXE4bbiDKf1pP5oeOc5GjGyXo4AJP8m0zckjBzeANiE54OejjFlRO9tqU9+jY73W0zjq7tlvmZYLLlcrGQW2HC2JQMBaLLWHeP+WNTZ3zGreMcLsHu/C3AAMAldy/L/9Zc1wAAAAASUVORK5CYII=","small/sites.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFN0I4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFN0E4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1YzhjYzdkLWUwYWYtNDEyNy1iZThhLTQxNWM4Y2VhYzNlNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OTc1NzREQTc0M0MxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqu1RVkAAAMhSURBVHjafJVfSFNRHMevmxNhLamRghQzHCUjobZmwVzCUjEzlZFK+RCNpgNBTAmyWghTonxqg1mtXtYC21ik7EGSFNFwZY7QhzZhQ5nFsja3CcNhm30v3I3rvOvCh7Pfub/zPef3557l7O7uEkzPwsLCyd7e3uH19fUrXC7XAz82poVgFDwA3lgsRlitVkIqlabXsZjEpqamajUajaWystIF56rt7e1LmK4DCuADr8FlprW5DGLSrq4uo16vv1FTU/NJpVIRiUQi9doLpsFpYAY5wEFfv+eEW1tbbK1WqwMPSTFyLplMMh3kG+gEOg6Hw88quLy8LMnPz+cplUprao7NZssxfARzoJnmPk8K22y21qyCSLCosLDQC9G/VPhil8v1ArYJ5hBVjDraEtvq6mpT1hyura2dQQiLKdtoNN4MBoMmHo83Sk3lgTtggrIj8OdkPSG1QTxlCIXC3xiO0d4LwC+anaBgFhQIBJ+RM1nKVqvVz/h8vhSFeQVTnyoEbcnhnZ2dZFbB9vZ2Jxr6hM/nO0japaWlG2KxuBl9SFbVD+rBd9qSayUlJfasgmVlZStFRUUrBoNBnY4pkfiDwQCGyTTT3EXgVEtLS3ZBJJ/Q6XSDk5OTHajwUSL7Qzb0E/AcIYf+VxRCoVB4GhoajAMDA09xOnZGEVMPmUsyd6bMF4zfMnL5JhwOn+vu7h4iLwAUiv76IngMHpEZydxwjyCOz+rp6dE2Nja+Q0G+zMzM1Dudzlto7JSLhKr2JBgkQ/b7/YcYBT0eD7e6utocCoXOWiyWDrvdrhwZGalFXjsR+nXq6rKA++AqWWFsFOzv73/rdrsL9gkGAoELLBbrvNlsbpLJZG78JuRyeUAikZBto4HLB3AXvKeWbMDnXjQajUUikap9gshFGN9l3uzsbDE9BJzuB4ZWirGMdOchTUcwRvcJlpeXz6PCura2tom+vj4VcldM3oNU0gPgK03oAGiKx+PTuJkWRSLRXLqf6H8B2I1wOBxSk8l0e2lpqaCioiIXqfi5ubnpRXgJ6rs+TrVMEh3wcnx8fAyHSWv8E2AAcpM7D9W0DFoAAAAASUVORK5CYII=","small/smallmolecule.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUVBM0JGNjQ4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUVBM0JGNjM4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwMzlhZTIzLWI3OTgtNDkwZC05Yjg1LTkyYjYzM2M3Yzk2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZERDc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlrzuNgAAAG2SURBVHjazNRNKARhGAfwd+zskMOw2YtsKOWw7luzB2VJLpMbBzk4iORCwoGLIykHbOOiOCi7nJSycvMVe3FZUZKbIu0yTTv75f/q2Vo1w9r24Klfzczb/mf2eZ8ZIZfLsXJWBStziaFQyG6tDvqgCg7g/qegVCrFFEVhgsfjsVrnF5fgBt6hAxbh0i4wkUgwTdOYKMuy1foI7EGYzo9h5qdAQRCY0+m07aGLni5ft9AGu6DSer4qwQ8tkiQx0SaQB3TBHZ33gA71oMEz9TVKN9AdDocci8VOBa/XaxXYDNdwCC9QC7MQh3bohW7qdSec8Q3OZrNBuyccBgO24AOuIE1rR6QVFiiMVxp9jFr1sAlGYRUicF4QVli8HQ8wQJviwuj4rQInaVQ2ipjjZVBg2zCMdVVVw4V/uRF4QwdhDt6KCHyFcf5b0zTjgUAgzgNrYJpGgb8dJuz/8Y174nOYTCa/5jAIjzAG/TBFxyV/HPhsbRZc24EGqC41UCL54seizc7+/rXB7pzQJqzRtQm4oF4WXchhmUyGiT6fbx7nQ7BCa5EiR+Zb6brO3G43E/79F/tTgAEA1QN2F9CFBYUAAAAASUVORK5CYII=","small/solvent.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARZJREFUeNpiYBgooKmlqUCMOiYiDSsAUvOJUctMhGECQGo9EEuIioq+fPP6zQVKXdgPxBuAOBGI6ynyMtB1DkAqAIgLr1+7DjL0AVAsgRIXglw0EWjYByi/kZArmQi4zgCIJ8DEgAYfAFIf8LkSnwvz0VwHAxOhcsQbCE1zAciuQwKgsFTAlS6xJhtg8gB56QUQWwDZlsCkcgAmB2T/AIpZAJmcQPYJYr1sD3IFEIMStDwW+YNArE9KGApADQSBh1jkLyDJEx0pCuTI4TPwAQEDD5Ji4EaogR+g4YkO4qHeJtrABdBEvQCah5GTFKjU+QDNihiAEU9OMYCWMsjeV4C62hFLgsdvIJrBAlAuyGUX6FqyAwQYAA9rT69Hk8tJAAAAAElFTkSuQmCC","small/split.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHpSURBVHjaYvz//z8DNQFAADExUBkABBDYQC1tLVYozQTEjMRqBukD6UEWAwggRpCXgYKGQLYpEL8D4hdA/Oba1Ws3oJoYgez/SIawASlFIBYAYhEg/gfEv4D4JxDfAAggFqg6biBOBmJjIH4MxNeBGi8C6X1Q/BdqmBCQ8gbiUCCWBmJhKP4AxEuB+AFAAMEMfArEL4GYGYgVoNgTiDWA+DPQoLPQ4AG5hgeIbaEuhAGQ654B8VuAAIL5/z0Qn0ULIpDYaSB+AsQc169dB2n6AnXxCajhMHAMiI8Dg+Y7QADBDPwK9epHJEWC0LB6ATTsM1QM5LpKIPZASiE/oRbfAnEAAggsCDT5N5C6CXXNN6jzQSAFiGcjWTIfiOOh7CtQF4PCei8QfwIJAgQQIyxhA8OJE0hVALEMEHcCsRXUABBwhIYrjJ8IDaIcID4HxAuAjgK5lAEggBiRcwrQUEkgBRJ4A/TmH00tzX4guwCIDyBFViNQrgEoB4pQfqgP38LMAAggFrSIAIUXcl6cCDXQAcoHJY8JIAbIQlCsAg1GyQgAAcSInpcZGVEzClDDfiQDNwANCkSWR9cPEEDE5OWDSOyLhBQDBBDVCweAAKK6gQABRHUDAQKIkdoFLEAAUd2FAAFEdQMBAgwAo6CPSnTlJ8sAAAAASUVORK5CYII=","small/statistics.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpiYBhxgBFEaGppJgApBSTxB9evXV9AjoEsUDoeiB2QxA8AMVkGMlHby1Q3kAWfJDBsBYCUAZrwBWD4fiDLQKhh+9HEHKFhPETDkL6RQiDCsGYGFgocgzUzjMBIoVksFwKxAJI4LGtdgOYMlKxHQA91AUCAAQDMshndocOCDAAAAABJRU5ErkJggg==","small/status.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrUU0sOwVAUfT5zNWjCjCEjXYHaAUuwEroC7IAViBXUDtREhwwlJAwNnSvnJVdTQlLBS07eud9371HGfOo0mg0HWAG1N+u2QMvaeRWbA1G8iXfJpmLrIvqsPWHt7eRsAa4tUAaEh2hcZmyIa8D8HdDho5IfgE/Je+CRnVCaLOE44+4CUzXFQA0meSPyGW37kJNc2UnhTops1ldK0zSnNDnh8mjKCnXyVaLxWFZlTk90B6S2LlLoCbW4ngQF4H0WGUoRUBqP/lAeYa4p2G7Hw3Hpum5V9BBxrR++Pa41NVsgtmf+GbEKqCCAfblb+cl35nMKw+mGz/LzWf9BXmmof5BSFg1bD/jvrJx5w7bi/v+vXHwhJzLfPFcBBgBq9WgSF2oXlQAAAABJRU5ErkJggg==","small/stocksample.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTk5OEU1MDhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTY0RjFDODhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWM5MjhhYTgtMGNjOS00ZjMyLTk4NWEtZTk0ZGJmMGJjMjRmIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RI/E7wAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=","small/submit.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjU4OURBRjY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjU4OURBRjU4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlDNDQ0RjMyODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjlDNDQ0RjMzODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AZrThQAAAhtJREFUeNqs1U2IEmEcx/GZZSXLaog6bWJ66SBUWF2kWsHLHrYMhCIQggK3YqjDsof2tLIRbENzkN5I2U4hdrDd9hAIdYiUKJCQEGqJDILuFbm+bLrfBx5hFJVwd+CD48wzv3nm+T/zjNpqtZSt3EYLhcKmAlwul6NcLh/0+XwfbTaborrd7qHDVFVVnE7nvWKxeCkcDt9KJBKG6vV6hw5sNpsX+Jk2TTOayWRMevh7M4HHK5XKm3g8PhEKhXLs7/b7/asjQ4btwENEPR5PrtFoKLqupwhcHh0ycBmfkXI4HEosFpsqlUpaPp8/Zw3U8Os/wq7LHl6x2+1KOp2ezGaztw3DOMoYrrXHcBfe4x2uod4n7DSe4Bh+UJQ99Xq9kEwmZ4LB4HPRQIzhTjxDGvvwCmM9wvbigeiZCMO2arW6EolEFtth7cCX+It5nJX/8zhjCbPLcUtgSR4z8I/5d6fjTcF+/MF2rGEBq3iEA7iPu1hH++LzGMcJKrxuDRQ9PIQvyMlGYhOPcFL2+JNsMylDj8hxvIFK97iMyIPTMJHBRXnuuwwRhZqV7cRTPMZVvO25OFj2U/gqH/EUdFntKcvNX+AbnvabU91vygcExCKC113V1uX8uzxw+epxTBRmAjdltaOimpjDYVQHBvJS9zu3IIu1aOnZT2sDcS2TuzMwEAgMuuGSLEYYK90na7Waomla5xq51Z+ADQEGAItOp94TaMWvAAAAAElFTkSuQmCC","small/subscript.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrsVL0OwWAUrZ/BaOnOyMIbYLPxCLyBTmKiT4AnqDfAE9DNppPaGIkOX0ebc5Mj+dIILQuJm5x8t/l6z73n3KaG8Y+vi1TSglK5lMfRBgrAzN/5R/0++8YQPaAFCNEKKH5KuAAmzA/Ry3RSNkj0mI6B6UsP4dEIR42PNiAEcz4rwAKGkoPcikMoZm8BMX8NuCSQ6AIVoMNGMnFDr89ECYNLoEzTvCJtcpNVICfeoXiAuzPyJRu5eP8Y67PBpLLBuia1CEL1yuNnS3G13ItD9lCy5qNDqRIFSA0hb/PuhA6XorgYiSEbJSNEUU/zzuZmDTZwEkuGtD6OE32zuPXwLp/S97/7+7oJMADFjlXZtLH+rwAAAABJRU5ErkJggg==","small/superscript.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPhJREFUeNpiYBgFgw4wogtoamk2ACl7KLcRiC8A8Xoo/wMQJ16/dv0DLgNZsIgtAOJ8IBaA8g8CsQOUjdcwEGBGF3jz+s0HUVHRn0CmBxArALEBEHMA8QagYZWEvMyETRCocQKQOgDlCsC8SkwYMuGRO4jEvkDIqzi9DI0YkFfnQ70KAgrAYPgIDI4T5LpwPpJXYV6vh1pEmoFATQVIsdqIFHYCUItAahKA+D0UFxBKNvZQV32ARg7IgEIg5Q9lBwApfSAOhKoHpdEJVMkVINcB8XpCLiTWsAQgFQ/EjsQmG0KG9UPD2IAaLtSH5vF8KP/A0Cm+AAIMAEwyQyPhuw/2AAAAAElFTkSuQmCC","small/swap.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNpiYBiSQFNLUwGIHcjRy4RmkAAQ9wOZ94E4nhwDGZEMCwBS84FYAE3NBiBuvH7t+gViDGSGMd68fnNDVFSUE8iEefUDEHMAsQYQZwDlHgLVXCDahUguNYC6dCHUdaAgCIBKGxLrUmwRI4DEXg/E/0E0yS7EFevQiGIAupCR6FgmkHwuQMUcyDYQCBKAeD+UTgTiQiB+gE8DCwEDP0BpfaBXG2CupMSFG6B0ADT2GSgyEOiqB0iG7oeFHzTWC8iKZWjyAYUjzIUPoLkJhA+AwhZqMWpOwQWAueMHMJesBDJ/Qg2VgOYgEAAlJweQPEgd0ekQzcUOSHl+IhBPALrwA6XF23xoYh+CACDAADQxUgKtN3rqAAAAAElFTkSuQmCC","small/sync.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrkVNFRAjEQzV0FdODxiV9HBR4VcFQAViBU4FGBWMFhBUAFQAXyJZ+XDqADfasvzroTvNEvZ9yZx4bs5mXzsjnn/rolP0nuXfdyuA5wOL4cz78mBFEJ98C/HiiABUhnrYRYLBVMQiWAVLIFbkGwZE4GtwJ2ljRGuOVwD9xxPMfCRWTjBugj5sN8GtFIMEJSJZ6hpd2YGq6BMlohyCasqIPk7gU5c0rguUY2vQJm4ZJSBmq4e+BRVeUo/jPwSohutYrvuEnDgj4qAxpqok2OcuIFOfpAXBqpCuD0Lhl+Vp/sX60xC7OW1qrkpCnbw5t4xvm1mtM508gGcvwspcg2GHrwkt3YY+u22ciFGA2FbPANYc6KtI3lFIm6ZUmas/tD1bVq8orjmrGB0m/KLuknZnIIPIUnxjYpqZ8nkWdrneVCWYjjYzi0fRfCmy2I3L4svq7/bG8CDAAStHeIzovtmAAAAABJRU5ErkJggg==","small/table.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM9JREFUeNpiYBjsgBHG0NTSVABSCmSa8+D6tesPQAwWJMEEIK4n08BGIG4AMZio7eXBbyALlrDYAMQCoICGioEi6gMUw9ggOQOovAMhF/YD8X5oJCVA2f1obAMoez/dvQwChWhePoDk5QNIXnYcPl5eCMQHod6DZy2kIICxG4k1UB/qJZgB9kDMj8a+AGUzQC3Ha6ABNKAPogX6RyT2RiQ2QQMvIHkNFssXoHwY+wNakOA0MB7JoHg0VxtgYcPULcRm4AJcthJTHtKsxAYIMAC9Bz03MXZ4VAAAAABJRU5ErkJggg==","small/task.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANxJREFUeNpiYBjsgJGQAk0tzQQgFQ/EF65fu15IkYFAwxSA1H4gVoAKBQIN3UC0gUADHKAGEAsOAC1wRBZgwqEIZNECHIZ8gMo7YpNkwWM7KLweYhG/gM/JOA0EuuIDkGogNZaZSFEMDGMDIF5PtoFAzQIgjBbjGylxIciQ+1DDQC7bAAyKBWQbCNQMigBQursPTdiJhIKFhYigA8X2RaBhE4gJZxYcYQcKKwc0sX40ZcSnQ/TUj8NSB4qTDdXTIblhqAD0DjE5RJ4YAx8A8UIiHQPK5wdpXmIDBBgAwCU/jAlLjQQAAAAASUVORK5CYII=","small/taskdetail.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXRJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/6BkHoWAoYJAKnzQCwgJCTkv2PHjoV37t4BWcCQnZW9gZGR8QJeFwINSABS8UhCIM0KvLy8DNLS0gw3btyAS4DE4uLiGnOycxqQzWBCswBkwAMg3gjEDlA+g6aGJophIPD582eGRYsW1Z86dcoBn4Eg8BAYVhOA9AEQB+Syp8+eYg0SkKFbt26NJyoMgYY6guhrV685aGlr7Q8ICGDg4+Vj0NDQYFi0eBFDW2sbQ1BwEMPHTx8ViI4UKHgAcuWGDRvA4QZzWXwCxGHsbOwfCHkZNdYYGR/o6OgcgBkEwjA2CDg6Om4kyUAQ8HD3KJSVkcVIg2GhYQs8PDwWkOplBqCmC////zfs7OrMf/HihQHIm+8/vDdYtXrVQpISNrrXgVQhUprdT3ROgSp2wGN+I0lZD5ZkCGRLrC5konZpQ3UDsXnZHuidBiL0KhBj4AESHLMQWpDQFgAEGADtF3fap2ucdQAAAABJRU5ErkJggg==","small/tasklog.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/4ByAex7YF4I5B/AF09MwHDBIDUdaiBFqKioh+B9HwgvgDEHUD+yzev31zA6UKgAQlAKh5JSAGKkcEHIHaEss8DXYliBguaYpDmB0B8EYj7sTh6AhA/BBkECgKo4Qz4DASBh0BbJwBd6w9kOyCJHwCKF0J98gHq9UB0zUy4wg+o2RHqnUSoSwKRwjUfyfsEXYgewyCXGIJiGCo8HxosH7DpYSKQahKgyeUC1IIGIGUAdTUDOQYyQCMBZFgB1KuBSK5lIMnLQKAPihigYflQbybCXEuugY3QJLSBkEF4DQS6aD9akqkHiqFbRLyBoCRDRB7fT26kkASobiA2L9tD0xshoECMgQdIcMxCaFKiLQAIMADT6l0ikc8pMAAAAABJRU5ErkJggg==","small/taskprogress.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNFMTJERDY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZEOEMzMzI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU4QzYxMDFBODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU4QzYxMDFCODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jWiW1wAAArlJREFUeNqklF1oklEYx4/fZvhRIzKbH9VFDHGGNYhuKohWMRG6CKEWy7oSgliMGtEHGqOiG70YK7cr6W4KDiJ24ZaB22ATIh0JTrZJdqeb0+bMqf1feS3zq40O/C58nsf/Oc9z/u9hlEol0mr19fURn89HBAJBozRnc3Nz2OPxPOjs7ExSASb5v/UKXF9eXlZUAjsVZIFuIK+KWcA9sMflcnXvWJDJZFZO8gg4wX5wFzymEnw+nwSDwZ5wOFwuZNcKRCKRjng8rmIwGNBi5lOplILFYp1D6iR4CV6A9+AduITcPtSfSSaTHfi9+JcgdiEGg8GmVCo3JBJJNJ1Oq6PR6HEej3eVLnkGRsApcCOfzy8Yjcb7iUTiu1AoTNWdEKchSGbHx8efajSaRYfDccJqtb7hcDjnke4BWcAAInAM8aLT6dROTEzMov5b3QypeaEFsrW1VfYIdv+s0+me5HI5qu4HXfYRPARakAYHUX+kosFudSFog7S1tU0WCoXJBmnq1EEgBoXd2qbR0oDZ2mDLE66srPACgcBNWINDt5wBG/T/jlK3Ci7/U5CaI26QDA0NPYcdekUi0Rd8onuR4tEmpzpbAF/pWEtBhlgsTk9NTZ31er235HL5aYgu0Qb/XQNKVV8RaTpDtJdzu93K/v7+YbPZfKerq2spm83WljV9UdgN2s3bbDa7TCb7qdVqszMzM1fY7IaToUQ/Vd9wnaBKpSLt7e2H1tfX2Wq1emR0dPRiLBYjMHDdWMA2fcvFpoJzc3MafH66sbGxa3q9vuw9k8lEpqenm72H5Tex4QxXV1e5AwMDb7lcLl+hUEQq8WKxuCtzlgUzmQzTYrHYML+MVCr9AIvwa56vVmubHsGflkOh0AG/3y8fHBy8bbfbX8/Pz1/AJoep3NraWtmXTRYlRNXlK4FfAgwA4/DyMw0KxFwAAAAASUVORK5CYII=","small/timesheet.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATtJREFUeNqsVLsRwjAMDZ8B0qRPC1VGYAQoqQgTABMAG8AEkAlgA0JHmQpK0sMdlFDB090zZ0xCTA7d6ezI9oukJ8lx/iyVoguNZsPFEvAzPewP6c+ABAmhA6gPjXnUElBoBJ0B/FoICDDxZsWHczxaG+cCOqbXHZzH38ILoBfo0LBvCKTbQujDtFcNzAW9mhXlFneWWPoSDVP0Dih/xHLFxYktowSVkIdZHgoB8xKVMuXbD8DAJMDSy0QiI5lOXWMuySHKJ6MD7LOupFT3BWgpAcvFlCivZB5l2w1vjypkPYcJjO0SYALkMpdvgJHO1g8iaVhnsSw15ZtdUuBdyP4eKVtNbc6n883zvK10C9Y7vncWYNJZXRVu2eGg2G5lDYdv40tC77G+Eq10HHaU3fjKKWzfdsD+XZ4CDABHRHfnHd4hFgAAAABJRU5ErkJggg==","small/touchmol.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPGSURBVHjaYvz//z8DNQFAADERUvD+7w+G2e/PGVS+2qfy6PdHggYCBBAjLhe++/udYfOX20ILP1xsv//7Q9qXf7++q7IKtSYKGHQH82n8EmTmZGDEog8ggDAM/P7/D8Pmz7cYgAal3fn9vv3P/39C/8FeYWT49f8vCF8z5pBMrxa1OWLJKQ0URTUWIIDgBn7795vh2PfHDLPenzO7+OPlzN8M/wyAmOH3v38MrIwgTRCN7IzMDF///wbSLAs8uZWLMwVN3mmxizCwMEJCDyCA4Aa2vjkitPjjpa7P/34lczCyMHwDapJk5mFIEzRiAGkAgas/XzPM/XCB4dWfr2ADvv77/VqChac4W9BkMUgdCAAEENxAg3szD3z499OehQHkgl8M/jzqDOUiVgzPf39huPXrLViNBpsIgzgrN0PHm6MMW77cZuAEWgwKIlkWvoITikkTQWoAAggey3xMHF9g4STPws/QLOrAoMAqAAyGJwxZL7aD8VFgkIDEQHJAQxh+/gcFBzMDFxMbJ8wcgABigTH+g0OJERhq/xiKhC0YRFm4GN7+/caQDvTKp38/gTL/wd4Hxb4YCzdYTd6LXQzMQAP/IUUsQACxIMcQyPs8jKwMyqyCDMBkwiDAxMHwF2hQtYgNkPwPjmkuoDdBcipsggw8TCwMv4GuZGZEJGeAAGJCMKBMYGQyAmN12rszDKs/3WBgA7oAhIGxCqZBYiA5sH8YIYnm7/+/8BQPEEDIOeUjUAXQ9t8MD359YNDmEGVIf7GFYQMwTcLAJiAbJKbLKcZwH6jmy9/fYEP/MiC8DBBACBcyQkKSGWhnz7vjDIpAb+cImjKs+ngVHBQgvALIBonJMPOB1YCSDnpuAQggpDD8z/AHqIkNqAiY1RimvDvNkCCgzyAOjAAmRnDKZmgXd/r/ApgGp70/w/Dk9ycGbiZWYFr8AwrTXzBTAAIIbqACm8CmR78/efz8/1eICxgxG77cYDjz4xlDPNBQORb+/yALH/35xDD/w0WG538+M3AD1Xz+++uXGCtXnz+v+kqYOQABBE/Yb4BJZNfXezzzPlzIufvrXcX//4z8oCT0G5rWkL0G0sHKyLTPglM6t1LE+poKmxADKHeBAEAAYRQOwOzEsP7zDX6gS4oe/P5Q9I/hPw8jtAiAqnyhyy5ekClktNKBSx5uEAwABBDO4ustMAFv+XxbaMmnyxXXfr7JAbqWDVjKTIzn16t35Vb6IsDMgVUfQAAxEiqxQS6e/O6UBNCNQrlCpte4gBGBDwAEECO1qwCAAAMAGRmPAZHf6o4AAAAASUVORK5CYII=","small/translate.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR1JREFUeNrMk80NgkAQhdVwFyuQK56gArUCsQKhArUCYwXagVIBdgAdCBc5SgdSgm+SIdksLC4YEzd52WRn9sv8Dgb/foYqgz2zfVwraAGZgimBwvyRX7WAANHnCLKgIwHwuRBsHrRh+xq2VAnkDzFETns4ly0Z7HAdoKUMFZ0ikm69CAo9xbeRYLS4XoEuEJGd+a9XA3JtkrY0FSeEnCYg1S/7dmxEIEU27cEYq4A0Xx53usuhUt1qQG59yqOg2+ULrkIcG0PyoQ7f4ZipNkGY1xNH537aFOpYDOBEejNZc8jnbIJqi1p3GYBXtQGcFs1n9THlXW7cDkORFTXIAWzLM+bqzqcKmHGNCo607DOHcoSdYW3AtA/sJ+ctwABl3Wx6tCQ7pAAAAABJRU5ErkJggg==","small/trip.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNrMVMFtwkAQtBEF0AHkCR9MBTEVmFSQUAF0AFRACZgKsCuwU4GdT3gGOrgSmEFzElgWnJ1HctLorN1jdm72Fs/7izUcDQdA4HK240C2w1YAmb7bE0rVDHgRQsQ+Hv2m+6QgyZLj99GowB7b4DdXLp8RNPawsl6BU+Mr42o9bEtgVUkxvmPXYcPaSSEOh+oq1UxuCnAFikWIFXVPqVN5awd8EhsomAL0MCcR8zzHGEDSlIURv1Pqi4zBBRCTTDkqjdTpOWBUjGdSkOZSaN/mG2InX5V/dNCIKJCyT6APnNWMd3V+Jj8TKaU9fJ8Tq3AroisJKiU3VrA5Y5F6thlSF6oIv2Pk5r7D6IXqttFV47pZZ54D0HV8f7ab+7okvbtrygN19CmTb19SarvfalIymX/WXupfJ2hMaH2pjJppM9//a10EGABEznV5GITLngAAAABJRU5ErkJggg==","small/undo.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjM4OjA2LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6NDUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjQ1LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhjZGM1MDEzLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjdkZjlmYTFkLWQ5ZTMtNGE5OC04MDM0LWVkZThiZjI0MzI1YzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZGY5ZmExZC1kOWUzLTRhOTgtODAzNC1lZGU4YmYyNDMyNWM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6Mzg6MDYtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OTo0NS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pp8aElQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAUtJREFUeNrMlMFNw0AQRR8oBbgEc51/cToIFQQ6CBWQVECoIKICUgJUEFMBufxzUoI7MJexFKw4BCkSjLSyNDN+uzP7Z6/atuWSds2F7SRQUiVpdRGgpDnwCcx/A7zq91BSCbwCJXCf0M4aoAZebNc/AhP2CayBZ9tNvwXABHhK8EM/Z9TboMzve5coadIF81RbSeusYgOMfyp5Bqy6EwA7YH+w4YvtpaQige+2l4OXYnsN3GS/dule2B5nT6eSVlnBAnj8BmjbdnBFxCQiNhFRHvjKiGg7X0TsIqLq4qNTEsie1T3fXlKd5e9zFX8zKQOCnwAVsE1Xlf0+KptToAK4SwUsbDepiMb29iRQ0iYF3LcauLdd5warlBbnnPB2aLxyYl6BN9tv5wIrSX1fAUyBWY7msp8wBNzmj9MjsQ/gxvb+rNfm373YXwMAoZiruV3mBv8AAAAASUVORK5CYII=","small/up.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgWQFNL0wCIFYhRy0Kkmf1Q2pGQQkYiXJcApObDDLx+7foBsg0EGiYApM4DMcy7D4AGKuLTw0TAgQVIhoGAAtCSArJcCI0EkOsE0KQ+ALEi0KUfSHVhPxbDGKBi9SS5EOg6ByC1n0BwGAJdeYFYF/aTkJTwuxAtmRACgUBXbiAl2YC87YAm3Ag0pIHcZEMyGDWQckCo+FoIxAfRxA7QtTAGCDAAUG8nQUUWYkYAAAAASUVORK5CYII=","small/upload.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUeNpiYBjsgJkYRZpamg2ioqIKb16/uUBILSMRhikAqfNA/AGIDa9fu/4Bn3omIhxYD8QCQAwyuIAiFwJd5wCk9iMJwVz5gFwX1qPxBbCIEWcg0HUJQMoBi1QC1OXEGwjUAHJJPx6H9JPqQpALLkAxOjgACktcriQ1UhiAEcJIabIhCQx+A1kIyH+ARsLAAUa0WDUgkP6wgUJgzF/A5WUBHLkDHxBgGFIAIMAAvi8mebj7/9cAAAAASUVORK5CYII=","small/upload2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNrMVDFOw0AQtB03dG4spcOUoSIviFPRhheQdHRJXmD8gpiSCv8g8IKYjg5XpMxRk8JPYFaak06nuyRQIFYa3fl2d3Zvd31B8N8l/Inx4HJwhSUB2u3Htvs1IYgmWFb8VEAOVCBdHiWEs2Qw1ZkAkskGmIGgpk2GZQ00NqmLcMPtKzDnvoRj5Qi8A4bQKX0eOWokuIHRvaxU1XZg1vAZmDgzBNmUGSUwvjixthL0HFjqJkVUPGEpgAcjK9MxFzg4G95ox4SCkJuCteg8mbzzmkOPPmeTxr00TYXsEcZvHmMJeAf0Yfu5/9q3tg3OFHRn2F5HHA/lIUuM+RNZ8SzwXD+LOGeZx2jBgFoSnnlFCF+khnZkfo+s7OW6I0+Wt2IbGl2WbpWc/s4ajYKfY+gaR2kWurExuzfj4ZzXqk+cwzUT0cFUbEy+/FqVw0+x4AHrbUpJ3/boa2P80y5pXS+NSHzAqTyg6/7sxf4WYABv3ohEFCc4KgAAAABJRU5ErkJggg==","small/uploadimage.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVpJREFUeNpiYKAyYCRWoaaWpgCQOg/EhtevXf+ASx0TCZavB2IFIN6PTxEzka5rAFIJUK6EqKiowJvXb3ZS6sIDSPRHigMb5Eog/g91Lf0AI5GucwBS9VAuKIYLgTH9AJtaFiyaQUnDAMoFaZwApOdDY5gBydBEgi4EGgZKGgEk+nID0NJAXLEMSrwMcbFxDOvWrsPQaWZqxiAtLc2ATQ/eZHPjxg2GRYsXwfkBAQEMJ0+cZCgoKGDYvWs3Q0VFBQNJOeXU6VMMGzZsALNBLiorLWPw8/NjMDQ0ZBAUFGTQ09UD+4KshA1yHcjwAwcg6frDhw8MjY2NDM7OzuQZ+PnTZwwxAQEBBrILh7379jIEBwczJCRAsrKBgQFDfX09w/oN68kz8OnTpwxV1VUMLS0tDP///2c4dOgQw9ZtW+FhTDBhY3Xl3r1gTAxANzARLUcQAx7QtHAACDAAq61o6iTixvUAAAAASUVORK5CYII=","small/user.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxQkI5MEE2MTczQTAxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBOEEyRkJERjhFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBOEEyRkJERThFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE5MWMwOWEtNjRhZi00YzI2LWI2NjYtMTk4ODFhZDUzODc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFCQjkwQTYxNzNBMDExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0bUDagAAAmlJREFUeNqUlUuIUlEYx6+ajzESH4smWlgLaRAGBsTeqwhkKAiERpHARasGxEx7gIuxcGACoYUJNm3TQlDSygjaSBQ6goqQiUMUNJAoaiGaclP7n8EZTK7OnQ9+m/P43fud7zsczmAwoCZFNpvlO51Od6lUui4UCmcw9AXYQYLMt9ttKhQKUVqtdnfPgUmyRCIhsFqt661WawYyE4Z+gVPAAx6AV0z7Jgq9Xu+t2dnZgwqF4moqlaIgJcMbIAXWSQJga3wfl0lWLBaF+Xx+0W63r8nlcqrX641OE2kGXGLayyis1+uHqtXqH5VKtTUm24nP4AhrIf7qt1QqFW1ubh7j8XhMSxbAD9bCubk52mg0Ri0Wy71MJsMTiUSj0+eBGrxhLSSBCj+CiK5UKgkul2vA0AWwAp6Dm6DMusqdTodU+Wy/3z86rOoikIHvw1TPgQ+shW63+7TH43m6vLx8G38YH2kbEgrwEpDDXd0zZTT04UAg8MRsNt+FNC4Wi8fbpgaWgBFcnCokqbpcrhWlUvnO5/O9JhWmaZopiZ/gDrgvGqvYf8J4PK7K5XInbTbbGp/Pp/aIt/hgze/3X2k2m8zCYDB4GRf9k06nq1MsAuf6IhKJmAuFgoBRiPbQSCSSj2NZTIsNrD2BfccnFUVmMBjKFPsgmZCKyScJ/6bTadE+hIJh+9CMQlT0K2JhH0IVOqOFC/CNUWgymZ7h7l6LRqNnksnkdv9Nqbay2+2u6vX6x2q1urYzyBl9ArCAcjgcS+Fw+AZEDY1G0yyXy/1Go4Fz3/42WcwB5DmQ4Ql4H4vFHs7Pz+86/gkwAFBM6JNkNOVGAAAAAElFTkSuQmCC","small/user2.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO9JREFUeNpiYKAyYCSkQFNLsx9IJQCxABA/AOKJ169dn4BLPTMBw+YDqQwg5oAKgQz1EBUV/fjm9ZsTJLkQaJgCkLqPQ/oD0JWC2CSY8DhQAY+cAC4JJmpHCk4DgV46AI0EbGADuS4sxBZ+QJxIsoHASDEAUvNxhF8/SckGaBhI03k8gW8ATDoCwKSzk1gX9uOLSSgogPoCv4HQ9JdAZKTmE+PCABJSSQIxBtqTku7Qvc1ESi4gJtdgM/ABiQY+IGTgQVIMA+Yo/AYCFSwAUguIMAyUYwJJKb4MoOFjgFS4KkBpEL4AtPwDA60BQIABAOjcOIMmKxJvAAAAAElFTkSuQmCC","small/view.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrsVMFRw0AMPLsCuwL8TT5ABYQKSCqIXQG4ggwVkFRgU4HTgU0H5kOepAR3ALuZPUYcxAMPZnhEM5qzJXm10kl27iT/TqIx52Q6yXDMoJlMA3S7e9ntfwUIIIKsoBfQDvos1xl0Du2h9wDuRgEBlOCoxKrEB/U3yRiTK2Et4OELIALJpmVJAhtkW4mVM8y2akcj+7UHjQMwBhcGrFW5KWxMvmEF8OXsI/RSSVoxd7EeGoGtTXUPtKmHr4h7w3kOXch3EBLwoIeSEcieJXAsgl4RIFWymXGl+rj0lyJStHXxyNSwJ4nOD5t6lQX2TPoUGfRe9D3DSoCFSkzUQ7K9Uf8+sYOtjAIjB9ZfirfxfFSeK80mb7XXxVWWTBTMVyPqhelPHmxKrYRzgfG9PLopCLzT7PHmNpy5wE+gWzEtQv+x1fPbsDTr5/Q8qAVruyE/+jkEu03Zj/0Y/kTeBRgAWiiuVs9VQyEAAAAASUVORK5CYII=","small/void.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsVMtxwjAUJK7AJZgjOZEOoAOoIKECoAJIBdgVGCoIHcSpAJ/gCCW4g2Q3s5oRsmQBw5vZ8Vh6Wr3P6vV6T7aXmMPgdZDiM9Tv5XQ8Xe4mFMkHMAcyoNLWiKTADshB3kQJQcZovnSwwKG9s0/SlaKeYr8KEorsG6iBFM5vHaVgBiUwtkkTx69UVGMdKkOE8NniM2M2KtE1oW5s4LjWEkknWu8iZXQLX4RsQGE5s+BTYKNShOxTZ1s1+Q3UagGc7bQ8PmdzaWJ1rg6klWuv7IiSikh9TQkZi5/h4nXMMVEUlfUafFE2Ip0rG9co/saNsIbzpIOUaS8lk8zRbqr9K8Kdt1ttmWz1kozx1exbL0VdPEjYeWRgHNSoH8oK6Jt3nXh0t6JUIrX/F706P7OHxCPDYag0R9Hh4KTPKN+lL6NRo4Ti5vHlIc8ki5sG7NPtT4ABAECilGSW3KE3AAAAAElFTkSuQmCC","small/weighstation.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWFJREFUeNrEkzFOw0AQRRNDTxrXuCQ0uKQjnABzgjgnCCnpaCl9A+cEhBPEnIBNQ+gIdSJhbsAM+mu+VrvGSJEYabQ73ufZmZ2ZXu8/ZHg6HHRlo45cJk6zfTocQ//uUCIZieZkJ7KMEGVC31PmrPTpJ3t4Iapv9gj7TJ1hvxBdEaf/ze3Z+mVtDmHUWI8QjdrHou9wsHIC8XE/EVIaN7hZwVpunAWqnuNNjWYj3CT0hlOkUNAT+IS5zNtWKMYb2c++R0cxPkJc5LTGnGzdXwWiK8kuuKUimoTcAUtPqwxQ8YI4rXxqORthjrJvLCX7Gk45bXVmPNwCkTcOp066nPbYUwxXmiL2tRiyLkUvcWOF8G2qenaNVmo42zLEPYjO1OESTdomlejml1b65qJACq480Si2iTnYbXcmjuNPMU6QAoumeS/PcCfcq3A6guct3K07einBOnomMHqduL3IlwADAE9LflJ/XEBdAAAAAElFTkSuQmCC","small/witnessing.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QThBMkZCRTM4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QThBMkZCRTI4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODQ3OGY2LWQ3YzgtNDgxZS04N2M4LWE1ZTEzYmU1NWMzZCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyM0EyQTNGNzdGNTUxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIiEaIAAAK/SURBVHjalNR7qIthHAfw57yvMbeVsXDsaPMHmtYWOnaQ5RJyyCW5/LHDUrSS5NLWojhYLiWRW/4QITqyYx1z/MMSuR+XkOOUszXKUnOmdmE2vj/93vWeNY7z1Kd377vn+b3P8/x+71PV2toq/tH6wgQYwvcZeAdddFMoFITD4RB6vb40oMpisVQKNArWQD2YYBA//w5xiMC5TCbzKhgMCrvdXhooVQjmgWewD6ZCNeiYASbCFngAh+LxeH/14PKAB+EEDBc9twFarXabz+drikQiukoBvbBd9KJJkiTy+Xy9x+M5FY1GZXomGwy0CmGDi9Cnwrh2uAQheEozg5HKn7Isi2w2a00kEp1Op/OFkpSzsLYs0AfYAZehH2/DV/gGK2n/oEbpnEwm34bD4Vpa8mSYUxasGSbBDTjMmY1CDI5BC9TCQ2UA9tMSCoXqKOAG9RLQrsJSsMJrWA9HYRUveSNfh8E87GGbMjAWi02XuAxkfvYS1sF8uAlGWMEzpBLaBLdgPF9HmEymBlw/02CNRlMjqYJRu8N7tBcGwif4CEc42Cy4zX2rMbsDfr//DYJewe8/OaKAOVXAxfRW2MyBaYZ1tDRo4Beu5r5fMKOdgUBgLEpmGX7Ts7zEb/zBncyc1UewiJdyEraChZNE31knLIQOBDuvZBuzbKeApzmDSnNCGJ5zfZ7hGfpgKN9TZXTQPmNmU/igKBqNxrsSl8K1srKhMnoCDs7yaE7EGL6nBD2GmdS5WCwKnU53z+12tylfxnE+XdTlMw6uc4mEefl0jC2Aaeq3p9PpXy6Xq9FsNv9UH19LuAbl3nzPqVRKWK3WXTjGdqO4ux0OzVyDmf8NRku12Wz7vV5vIwX72wFLywnAjB7ivccBuwef2wXMsPSw0ulyH2bDXFjOWR9ML+eapcO3iUuoK5fLdRv8W4ABAHMd0qXV5tNLAAAAAElFTkSuQmCC","img/add.gif":"R0lGODlhEAAQANU/AIq7eLXcqkSNOVSZSLvitO3163O5XLzVuZbTin3EbMzixZXGg326bNfr0YrMfobKeo3Be328ZmurWrrdr43Mg6TOlLTZpWejWnetaMXduePu4qfJocrexW+1WKvUnWSgVkmPQJjMiK/fpqDZlpvBmIS2b3a9YJO/f6bQlnXBZMrpxd7y2rnWsGGeWHi0ZH+yal6cVo7Sg4HMdZfMhZPNiJ3YkpXAgmWrVT2GNWirU6Xbm+fw5ejx5nC4Wf///////yH5BAEAAD8ALAAAAAAQABAAAAatwJ9wSCwWCxlbqQRgFYy/xqmiaqgmDIyi2ABMVgTdSKSCXDjDwimwqtEoCEQMe+EJM4vGCOHw+R4JCQEDG0I2ASIUDwx+EiYGCAstQiUECA9+mT49CR4gQi8BDjKafj0RHgJCACEICSk3pj0GMxADQiw5ASkmJqYdBhYCJEIFGAwBjz0dwBYSIBpDCh8uASERETPOOAdFHB8DECgoAAIg3UY7GzAgAgMk0VDyREEAOw==","img/addcodingregion.gif":"R0lGODlhFAAUAPePACOheE7PgmPmhz2+flnbhery6F7ghnn9jFPVg/b69P3+/fz9/GrtiGWzTZDShJC8g5PKf+/17mnriGayTpLIfvD27Gm0UcDZuI/Df2CvToG5cqLLkYW7daTTlarNmVacTqbSlVKZSu726s7ixGmxT3jIarrdrlybUsLbu7jfr3ayZNXv0JLGgXu7ZabSk4q+erncraXLlZXMh1OXSFiZTn6/eKbWmaXRlLnbrs3ryI/PhGukZb/mu0uhRvL38ev06W25VWWhXTOye0XGgPT483zCaYPLdoy/fKnanYfJe0ydTmq2Umu3U4PMdmWxTYTJemSkVrbirpTPhPD173+3b8blwZLShavboLTgrVSaSYy5gXa+aqPbmeTu45jCiazco7LUo27xivT49GixVrLQrff59ojNe6bIpLTcqoa1e8vqxmXFeZPLgKHPj/P48rjisGqiZKbTlpbAhKzfoyyse+z06qrPm3mzaO737fL38Pf79vj89mioWVa+aGvAW2SkVafJpEPDf3G4anCoaMznxKHNjtPtzcPkvmmzUKnMmLncrsbowIa2fIi7eJK+gf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI8ALAAAAAAUABQAAAjYAB8JHEiwoMGDCBMqXMiwocOBCUbEkOPICwo3Cyt4sEMoxyI0HB4USJggEZgVWHQ4mBOFCiMfAyUIocMg0JoNhrgkqaKmiRkkfPoAEBgAAYIhA2qk+PJkix4xY4BIYaFk6KMABggEENDojZFDeBQsqANjSYcPVgUMGGBAgIYrJXj8WKBAhCILN0JYPUCAwIEwgmRY8ZOhzJ4GEyAc6RHg4AUVNoowMYHDSQsQWc4gJKLlThw2iEhQcAEFzpSEBdL8wdCm0IsZO7oszENm0AkaQQBFeMi7N++AADs=","img/alignbottom.gif":"R0lGODlhEAAQALMIANzm797n8Nbh7dji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ7EMlJq70YmW3yNMfReVo4EgXxbaUooaoEdqCLwJ9bd2kv6yZEYTj80YIDokDG4owCBQAJ46xWp9isJwIAOw==","img/aligncenter.gif":"R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAImlI+pBuvtDpgULhBytgrrwCUVFUnliIrfGnrrpr4wgo5nKeK6UAAAOw==","img/alignheight.gif":"R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM0eLrc/q7ISQu8jSpAwiuGYQlEOUShVa6ouBAQ6Crwl77xvZatNayCyEQRIAAwyENlmXwkAAA7","img/alignleft.gif":"R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAM1aLrcS4bI6RQkJRdY75RVFHbR9zWXpnJPpGqsVZogE4+yEQwDDgE8XETAKwYdv+OIs+sJnwkAOw==","img/alignmiddle.gif":"R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAIrlI+pywj/mgGhAgUvtZjvcCWbVoHOY6FpOHkle4zCB0/Q/Eo4J2W1DgxKCgA7","img/alignright.gif":"R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAMzaLrcTjAa4hQpuFBao+TV03jkNGbodqKYypCeGYrVMATvbAMLqNhAm8CiG/CItVtuNksAADs=","img/aligntop.gif":"R0lGODlhEAAQALMIANrk7uDp8d7n8Nji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ+EMlJq73V6M05/sgWiohQBJNxGOGxIkMhA5LKqq+s1y/OFgRggXdzsRBBQkrTeiGBF58kGTWCaqSrdsudRAAAOw==","img/alignwidth.gif":"R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM8eLrc/q3AJZUsOOdTOTdgaFzUJ4KkxWmap06uOxALIbxeQNDKDsSSnXAIPAB2NUKgeBDwDoQBDkatWg8JADs=","img/animator.gif":"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","img/animatorsmall.gif":"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","img/annadd.gif":"R0lGODlhFAAUANU4AP/3Xq22NNzcTbm/OqizMv///7/FPbO8N+fkUvPtWMrNQ9bXSvnyW7LSlY26ZJSwhMXKQEFzJaKuL+3pVVOMKMDN3+LgT4+8ZzdrGc3QRdDSR9/m77HWks/a57TUldLTSISgMY+7atDmumGJQrbUnIe6YD1wHIu6Yoe5YFePLT9xIoGrYT1wIKe5R4y8ZbHTkGaOT5GugXKXV7PDWEx7MZywTZeyiGKKRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAUABQAAAagQJxwSCwaj8ikcslsOp84gHRKrU6FAM1iOphIEYapFiBkBAhSQQAiNRAQAAYBLRQoDALAwBJgJAICYQIQeEIHBwEDCRIDBAILBAMSCYeJOB0BUgEKCgAIAQFeNTIwIy0BGxVwABYZCVIZHwAzKx4iISkgFVFWVDcvHAUuFyZYvVM0JAXLDRhNKiclBSgXLE02FA4NDhQxTg8RGBEPUOVJQQA7","img/annauto.gif":"R0lGODlhFAAUAOYAAPPz85qamsjIyLi4uPDw8LOzs6Ojo42NjbW1tcfHx8vLy9zc3JOTk7KysqqqquXl5b6+vvv7+7m5uaurq7e3t/X19ePj44aGhr29vbS0tefn525ubpmZmZeXmN7e3qSkpNHR0fj4+J+fn5KSknR0dIiHiMTExMfGx4qKiomJicPDw9XV1c7OzuLi4sLCwrSztKioqKKiourq6rGxs7CwsLu6u35+fv39/aCgoOzs7KmpqczMzPn5+cXFxZiYmMDAwJiYmdbW1oyMjKamppybnN3d3Xx8fHp6eqenp////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAeHgEmCg4SFhoeIiYqLghY7AguMhAoPFhCSgwkaDxKYgi4DBQiYLBgDCScwBjSMHgIqFC8UDQqeQziegyIBjC0QRYMcDIMCKCaGBTUZBgBJIwdJBEY+RBuHDjMgBBVCFwA5P0AkiEFIEwwIHzETRx02PYoNAToSAwYlATKMCwUHKQ4rcgkcmCsQADs=","img/annautoadd.gif":"R0lGODlhFAAUAPcAALOzs/Dw8KOjo8jIyOXl5dzc3OPj48fHx7i4uL6+vqHZl8PDw4HBbNnp0svLy6urq+Hx3cLCwqioqGulYVWZSlisPuLi4pLAgYTIc7zVuX+9a5bOhHWTbczMzMbcwYHJcZbLgr3Wu6PLkpnOirfjsPn8+ZvBmG6rX57Qj6bYnKqqqpu9jdvt2M3oxpnYj5nCilmvRYDAbJfLiZSnj7/muHTAaNbW1n+3cN7s2c7OzuTx4rCwsJTHhZPJf7HQqnGnaaenp8/iyqrOm5PIfrW1tbS0tX6xdX+ydPn5+aDYlt7e3r29vWumWpqamrm5uZHDgpzTk36/Z9/v2YHDa7e3t7Kysn/Aaefn5/n8+JvFi+Hv3XSvY/39/YzQgfv7+7Gxs6DHk2O0UNHR0WeiXKbMlvj4+J7DjsfGx22nY8jdxKvdot3d3aa1nru6u6LYmff69/Pz83Koa5HEg+Lw4IHAbVeaSp3Mi5XRipvWkL7hteLx4M/syJevi2ikX5OTk4Oudff69rPdqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIIALAAAAAAUABQAAAjBAAUJHEiwoMGDCBMqXCjQQIcBBRgSdEDAQAKJAw9cIeAEo8AICAAQwZhjCYIDZyQI2MFQyYAFVNisMPMCTBCJfMi0oEEi0A0fCxuI2OMGigIXKU6kKWghwRqBQvIkqaFjThgMMo4UBNCmiAA4WdTc0VPiDQ4GG9AYVPFFTIALeLqwAIRFSgwQfQzaAPLAz58RH2BogVDBipwfCKs0mbEFxRQ6GqLYoRAiYQEAHJjw6DHkSR0TEj0YmTAmTgaPqCUGBAA7","img/anndel.gif":"R0lGODlhFAAUANU+AP/3Xq22NNzcTaizMrm/Or/FPbO8N/PtWOfkUsrNQ9bXSvnyW////9DSR+LgT8DN3+3pVcXKQLxDBM3QRcFZH92mhqKuL8ttLsFcFO52ANF2OcJcENLTSP7Nrs/a591kAbxDBeFoA9/m78BZHvSdY9GdLrxCBMFZDsJbD75PB/e1jeGrjMWUMf+GIfh2AO9/GMJcI+uKQOSsQP7WuP+STd6jNMpmKPWocup5BeOwleZ3If93Ef9/GPa1jf///wAAACH5BAEAAD4ALAAAAAAUABQAAAagQJ9wSCwaj8ikcslsOp8+gHRKrU6FgIZiSoBIEYWpFiBcBAZSQSAiLQwQgMUALRQkCgIAwRFYHAICYQIReEIGBgEEBxYEAwIKAwQWB4eJPh4BUgEJCQAIAQFeLBgmJzUBIg9wAA4TB1ITHAAyGiozNxclD1FWVBs9NDstMShYvVMSHQzLLxJNFCQ8LhkhI00rNjo4HykVTjkwIBTeUOVIQQA7","img/annedit.gif":"R0lGODlhFAAUAOZoAP/3Xq22NLm/OtzcTfPtWMrNQ+LgT+fkUr/FPfnyW7O8N/71XcDN39bXSqizMvjndcSnNPvtV//t2Pvvo/bdrPTeUf7zXcXKQKKuL/bw59utUt6ZTOi6ZqmKRd+kQr2JS+e4YYhiLc2wiOK3hdi7Ofbhf9ylQNi4O9CdQPjdUfXZTK60MPjndOK5W83QRdDSR+KlQ7R1M/vpctufTc/a5/71Xv7zqfnwwvvunPjtvOPGRPXYS+bBl/jrtvTXSPDRrsiTVcaoPLqEOfbt4/jllfDbZOfJS//2Xr6fPdGgZ82qcuTNo31fKOizRV1GHNShafvz69/m7/zuVtS5U//w4dC1MvvvoeO+bP/q08mJR/jMmda2QOCyfuXCkfLjr6+2NOS3ZOrBbL9yF/rgw86bQNvDjvPAi+3pVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAe/gGiCg4SFhoeIiYqLjI2Oj2gAkpOUkxEaSSgVggAvDZMCZ5IHCFItPFRdZIIJAQ6SAwEXkggrRhQ/Y1hPggMFCAMAAgYBCQRfOjdEYFwjU4IKCgECBBgCDgMNJDk4OyUzSAJoNAGSAQUFAAcBVT1WPg8gTQsBUQwHkgYuBAALEF4TVLDgYOIIAAMMIlWqcaKMjRQywsCgxKlSkCUithS54sECxUMdJGwQIwQIlEZMzGjJEmOIIychPijJAKnmo0AAOw==","img/annrules.gif":"R0lGODlhFAAUAOYAALW1tcPDw7Ozs/Dw8MvLy8fHx+Tk5L6+vqnB6b29vaOjo7i4uJqams7Ozqurq9zc3JmZmZOTk8jIyPPz88zMzOPj47Kysre3t+Xl5cbGxrGxs6K86ODp+PX19crJxnae3v39/a+vr5W055245oCk36ioqH+j38zOztDV3J665+jo6LTK7N3d3dbW1t7e3qqqqtjY2MLCwqKiovv7+9LS0p2dneHp99HR0Z+fn5SUlKenp+fn59LX35qsx7SztMfGx7vO76CgoO3t7Yedvru6u7S0tbu7u/n5+Z+758vKx6ysrLCwsPHx8XOc3IyMjKnA56ampqK96JKSkq2treLi4uDg4Pj4+F+N2Lm5uZWVlf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAUABQAAAefgFqCg4SFhoeIiYqLghUUEg+MhAQYFQeSgwU7GFiYgjELAgCYDQkLBT8lCkuMLhIBFz4XFgSeUEGCNFMhA4w4DFoTAgYAMEKFVAcsgxARWipGBDlKMoUCREUKE1pSEFpJAaUUWYYvGjcDHU48Tz0nAA41GYYtOg4RAChRCCJDHlVMEllgEGAEEiAbTEh6YODDihQkOHhCcKWJDU8YMQYCADs=","img/antibody.gif":"R0lGODlhFAAUAPddAAAAAFJSUk9PT3h4ePn5+fT09Pz8/O/v705OTnp6enBwcENDQ5ubm1NTUzAwMLOzs1FRUT8/P/b29v///4WFhW1tbXNzc3Z2dnd3d7u7u/X19SkpKTc3N3R0dBsbG8DAwODg4Onp6URERC8vLyUlJXx8fGJiYkBAQIiIiHV1dVdXV7GxsS4uLpWVlZGRkQICAgMDA1RUVFhYWLa2trS0tIaGhigoKCwsLLq6uvv7++zs7BwcHPDw8JKSkqOjo1VVVSQkJGxsbLm5ue7u7m5ubkxMTH19fUVFRZycnFlZWfHx8Xt7e39/f2hoaElJSa6urouLi0JCQkdHR3JyckhISAQEBEtLS/f397i4uHFxcQYGBv39/RYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAF0ALAAAAAAUABQAAAjfALsIHEiwoMGDCBN2WdEhQoAAESo8UNhFRREUBFEgSJLQgQ2EGxwclDHiHxGDCv45CFDwg4ouGP4pIHjh35QuAYQQdMGFQ5cE/7IITPEvRRcOOygQFNBFC4suJf4J/DegC4sXOAlC6ILj34YuCwSK6FKSRpetA1l2mQGjSwSBR7pUmdilAcGxAjN0kbq3i94uBqQQXNKD4AmBhwcyqEDwQwyCdusSRICFoAEBJgReFshUYAcqEgpOWNBEIALOAhU4KXBQggArLX4IDNACAQTWCVeUIBFlAZALdCkKH44wIAA7","img/arrow-default.gif":"R0lGODlhQQAUAOZYAOTk5ODg4I+Pj/r6+sjIyP///wUFBXFxcYODg9vb2xsbGw4ODvn5+fj4+BEREenp6efn5/v7+7Ozs4KCgjU1NbKysvb29kpKSigoKMHBwfX19SwsLPz8/MfHxy8vL9fX12NjY0xMTDw8PJiYmJSUlAoKCjk5OT4+PszMzM/PzwEBAQ0NDe/v7xYWFh0dHTIyMh8fH+Hh4TMzM/Hx8SoqKkhISIqKiv39/dPT05eXlzAwMFFRUXh4eAICAiMjI0BAQOzs7CsrK9jY2BkZGUVFRQsLC0FBQYuLi/7+/j8/P9/f36CgoLi4uHx8fAkJCRQUFKWlpebm5qurq+Li4tnZ2ScnJxISEgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFgALAAAAABBABQAAAfmgFiCg4SFhoeIiYqLjI2Oj5CRkocMEZOXmIIaEzwVMZmgjwMyVwonEjOhqoocNg4lBhskQAWrtoUAAi4GVxQEUbfBghAdIVdXIkwBhwUJVM/Q0dLT1NXWz0oBADgCNccvBxKFIFbl5ufo6err7OgOT0MLKsdXC0uECFX6+/z9/v8AA/LDoIOGBwU96MGQgmuKw4cQI0qcSJGitgAPAKD4gODHMSJHMghTJUSAiWMXUkAYCQpJgwMrilxJkoAFy0wFGjRxcqWFESgMboIa4ONKkB0EBggNZWFEDgIPlq6KcEOq1atCAwEAOw==","img/arrow-double.gif":"R0lGODlhQQAUAOZ/AP7+/vj4+Pn5+fb29vX19QICAvPz8+Li4ufn593d3UNDQ5SUlJCQkPr6+gkJCenp6fz8/PLy8sjIyDU1NUBAQFRUVOvr69/f32ZmZpqamtPT02dnZ5KSkuzs7PDw8PHx8VxcXDAwMBgYGFpaWjs7O0lJSQcHBw4ODru7u/39/QYGBs/PzxISEoSEhKWlpYyMjHJycpubm25ubi0tLQsLC2RkZHp6em1tbRwcHHZ2dsrKyp2dnV9fX0RERO3t7QgICBsbGx0dHU5OTl5eXoGBgYmJieTk5Nvb29nZ2ZOTkxYWFoODg729vWJiYsLCwqampuXl5bKyshoaGurq6i8vL5iYmOjo6Do6OnNzc6+vr////1tbW4uLi1FRUVlZWe7u7lJSUgEBAdHR0SQkJIaGhsHBwVdXV8fHx9TU1Gtra4WFhebm5gMDA76+vt7e3jg4OE1NTQQEBCwsLD09PdDQ0NjY2Kenp2VlZU9PT5aWlvf39/v7+5GRkYKCggAAAP///yH5BAEAAH8ALAAAAABBABQAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CHABYaA5GNAGsIBBCXhgYHTkF+TJ6LDVt+JBkIAKYDGjIhfip3B6aKAHUKfn5damiXKENvvVh0BLiMCFVgvRN9Bo4WICJ+BRsPycqOVjFCfiYzRAGIew8PeCYOQDwJegIB8nr09fb3+Pn38gJ6AxJwWMRRYgNJB0ICoszp5UdKGi59IkqcSLGixYsXW5CpcKIXmxFnXP35MoGhyZMoU6pcyTLlhj2CGrRREKYXDhh5FnBgwKenz59AgwoVypMnhyQL+Izo6MdBDTEi/6QgEAGDCAc/zNiZoiXFnq9gw4odS3YshD0QAAgw8uRKARUhXl5AsYTow40xvUAk8MDNUYIivGhQWACzkY4cJXp5QRGhb6ILWSj06pGB7qMGbpaQuFbiiONCACRQ6YVhxwVcATqskOOnzGeETQpUcMHXMSgBrwn5+JC7t+/fwIO/DgQAOw==","img/arrow-dual.gif":"R0lGODlhQQAUAOZpAP39/Wtra+Li4vf39/7+/hAQEEFBQfPz8////+bm5unp6S8vL/z8/BgYGG1tbWxsbLOzs7e3t8TExBEREfn5+bS0tPb29snJyRMTE76+viIiIu7u7isrKxYWFuDg4Orq6iAgIHR0dMfHx2lpaXd3dyoqKtHR0W9vbzQ0NN7e3tjY2MbGxqysrBsbG/Hx8YuLi7y8vFJSUjY2Nh8fHwwMDAcHB7GxsWZmZmJiYiEhIRwcHDw8PDc3N4+Pjx4eHgoKCp+fn52dnVhYWIyMjCYmJpGRkV9fX5aWlmRkZA0NDcvLyzU1NcPDw6+vrwgICNra2lxcXJOTkw4ODvLy8jMzMykpKT8/P5iYmGdnZ5mZmfj4+NPT09zc3HJycj09PcXFxbCwsMjIyCMjI2hoaPv7+zs7Ow8PD7KysgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGkALAAAAABBABQAAAf/gGmCg4SFhoeIiYMbQx+Kj5CRkmkUWU4TJAIDk5ydjxsPRGhoARAKnqipaQAqQCVoP0JgAqq1nF8hC2gdXkEAiGTBwsPExcbHyMK/AwpFOWgFBhUMhAgpWGPZ2tvc3d7f4Nk3IwEOD0hUo2gTFwSCBDBmUmb09fb3+Pn6+/kYDQ0Y0Dg4MMhChTMIEypcyLChw4cQIbA4ksCWRVUAMhRYYMCAlR1lQoocSbKkyZMoTS4xgUCQhRfqoFUBocPHDDE4c+rcybOnz584NWi4QmGQiwg4aKBpESNCgidbJIRZcSGM1atYs2rdypWrCC2GppyBMopHFIIX0x460CRADTRJLIx42KS27iAmJziM6qKEml27AnrIGGWDzF+7ALhIQJHh12G7CBK4e0y5cqRAADs=","img/arrow-none.gif":"R0lGODlhQQAUAMQYAAwMDOnp6SgoKPX19fb29nZ2dtLS0vr6+uLi4vj4+CYmJv39/fT09Pf39+Tk5D8/PxMTE9zc3Pz8/FNTU+Xl5Q0NDdXV1ScnJ////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABgALAAAAABBABQAAAViICaOZGmeaKqubOu+cCzPdG3feK7vfO//OgmCQiwaj8ikcsl0BBakxkNxqVqv2Kx2y+1eBAXCiAEBVM7otHrNbrvf5smAlDBY7vi8fs/v+/8WEQdAhIWGh4iJiouMjY6PPSEAOw==","img/arrow-reversible.gif":"R0lGODlhQQAUAOZvAN/f3zo6OtfX1/7+/tbW1uPj4+zs7P39/fT09PLy8t7e3pCQkDMzM9zc3DExMW1tbSAgIHBwcCEhITg4OPn5+QcHB+3t7c7OzkxMTIyMjDc3N7Gxsbe3t6mpqWdnZx0dHcrKymVlZeDg4CkpKfv7+0RERBYWFubm5n5+fgEBAcnJySoqKvr6+sPDwxsbG5qamry8vPb29icnJ1FRUeXl5bKyshAQEAYGBg0NDW5ubk5OTigoKE9PTxoaGkpKSvPz84uLiywsLDY2NqampkFBQerq6tDQ0J2dnS4uLiYmJtjY2F1dXaenp7i4uAUFBcXFxREREQMDAyUlJXFxcdLS0u/v79PT05GRkXNzc+np6VlZWQsLCwICAszMzPX19UBAQOfn5/Hx8fj4+L6+vhgYGPDw8DU1NS0tLSIiIu7u7tnZ2U1NTevr6xkZGQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAABBABQAAAf/gG+Cg4SFhoeIiYqLjI2OhwdPESIUj5aXjD9Tbm4oF2yYoaKCJxkanEsdDaOsjwcKYytuUA5HAK24jAVADm42QS8kh2JsxcbHyMnKy8zGBmlsNAs7W1wfMGCEA0wYa97f4OHi4+Tl4jo8EpxuOF0DggNXZG309fb3+Pn6+/k9EFJJ2qQY8k4QAiVqEipcyLChQ4cEIgqYSLGiRYpUQLAgRCGLhTQgQ4ocSbLkSAS5BMXAUgENkjMy0MicSbOmzZtoIPgokjLBg3VuJBBhYIbBhABIkypdyjTphBmgUhpo8OCGGxMYjFgoUwCA169gw4r9qiBqSkFeOISoEMWFhzAFLM/KFdQiwghOWlQkmMvXyoIvnHJsiMs3ZYEaQtw4aVJ47oEqF0oYaEy5sqNAADs=","img/arrow-solid.gif":"R0lGODlhQQAUANU7AAICAhUVFQwMDPPz8/f39////9ra2uLi4hAQEHV1dQ4ODmVlZenp6QoKCpWVlfDw8NXV1cHBwQUFBXx8fGZmZufn52JiYp2dnQkJCa+vr7+/v+Dg4AsLC6CgoAMDAx4eHvT09Gpqavz8/JaWlm5ubhwcHF5eXtzc3Lq6ulRUVBoaGvLy8vn5+Xp6emtra+3t7RISEhkZGVhYWOzs7B8fHykpKeHh4dvb2xcXFyIiIgAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAABBABQAAAagwJ1wSCwaj8ikcslsOp/QqHRKrVqvWGUrku0yBbDFSuQtFwM6nSTEGJjNpXQakNCwkoWDbc/v+/+AgYAbLypycgIUHQZHEzmPkJGSk5SVljkeh4cINRcgRS44oqOkpaanqKk4AJpyHDQjbkQFJze2t7i5uru8uwYVMa0YMg4Qb1gfmhYZBMdZaGkmBw/OXQoNKTPN1V0kKNzg4eLj5OVOQQA7","img/arrow.gif":"R0lGODlhFAAUAOMOAAAAAAcHBwkJCRAQECEhISwsLDg4OEBAQEZGRmhoaHh4eIeHh8fHx9fX1////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQp8MlJq7046827/2AoJYxIFMp0AGzrvgMirW/tBiCgGA0oLKKgcEgsCiMAOw==","img/assaycurve.gif":"R0lGODlhFAAUAMQcAK2trYyMjKGhoY6Ojrm5ufv7+7i4uJmZmbS0tMjIyMTExHV1daioqPDw8O3t7dbW1sfHx39/f4SEhG1tbb+/v+zs7GlpafHx8ZeXl4KCgrOzs////////wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVbICeOZGmeaKqubClocCzDgklseK7jiDkElMJOpzEdAAML5jHcFEsGnIMxSQyfJI3uIoHssCOtrpJRCHEGk1jXWEQA8IO6uUkE7gMTgq4jmF4zgTUthIWGh4gpIQA7","img/assayplate.gif":"R0lGODlhFAAUAOYAAKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAUABQAAAfYgHaCg4SFhoeIiYqLjIUJJjQwAVFdCAUBBQMDVQSEAysQdBkGPjEdUgYgABUOHoQBFlMYYwpYAmAQCksNDCRehC5vEzIAbQIpW3B1HwocHXOEZigzWklNDiQVTAwZC2sjV68nHDkMF1k9OyJGEkQaOAiEQGphOhsNTgcsTw0OXxYqIhBC8OEHjwNCAExQsuCFmBpxKCQgNISKgBsHNACQgGFBGgpuDIQoQehMCyQCghwBIYfMCBFlQnDZIHAQAQ9FrLAZAOVCARtoHiQo8aBTo6NIkypdiigQADs=","img/barcode.gif":"R0lGODlhEAAQAIABAAAAAP///yH5BAEAAAEALAAAAAAQABAAAAIdjI+py+0PDwhgWnpzxrTbXXkeCHKa+KFbxLbuixQAOw==","img/benzene.gif":"R0lGODlhFAAUAOZnAA4ODllZWf7+/gcHBwICAgEBAQUFBfr6+oWFhePj483Nzfj4+G1tbVNTU9zc3JeXl3Jycu7u7iMjI7i4uBkZGQQEBAkJCQMDA7e3t/v7+1RUVPz8/KmpqWhoaOTk5LS0tJ6ennd3d29vbwwMDDQ0NJWVlcLCwlpaWsXFxXV1dWVlZQoKChYWFpOTk/Ly8pKSkt/f3yAgIBgYGDo6Oqenp7GxsWZmZmpqatHR0VtbW2FhYRMTE7u7u0VFRYODg39/fwYGBh8fHw8PDyUlJevr6zMzM6qqqvT09KOjo0BAQAgICEpKSnt7e9fX12tra11dXURERBwcHDExMTAwMJiYmF5eXsfHx8DAwA0NDTc3N3BwcD8/P1xcXFZWVi8vL1dXV5SUlJqamqKiooeHhxUVFWBgYAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAUABQAAAfmgGeCg4I4Gl1NhIqKBwxAFhYDEBmLii1kZhoJCQ1mMg+VZxhTZlITZw4fol5mRTyEEZ0sYGcbKQNkgy9kBV9HgjYXIpRUFGZJKIQHTgQMggG5DiRmEjSKSyVnAGXPuQ87CAKLA9zb3aGDBuXcZ9DoghXr5+8X8u25EwgblQX27mNmKIQZ10EbO3dnkMQwk+UKoRoLDAq6QaCMizMCfowgoAUWlwIQBC3QQUBIuDNEnpwQJMAHlgoqDhAyMcPMECOEOEgws8VKKBBRzPRQoACKmSBi3mEMocSAgRVMxCkVBCNHFQ+hAgEAOw==","img/blank.gif":"R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==","img/bold.gif":"R0lGODlhFAAUAMQcAAAAANnZ2T8/P0JCQjs7O1hYWNjY2D09PSwsLDw8PNfX10BAQD4+Pt3d3dvb21ZWVjY2Ntra2jAwMDQ0NCoqKi4uLjIyMtXV1dTU1C0tLVVVVVBQUP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVSICeOZGmeaKqurFlsQTsWB3DEcgIRgGDIF8IkAVjgWJiEhcc4rhQEiaD3aykEmalRdq0wbE5VgIEYUGWRQbkYTjnU5oGM0xhQNIU5/ZHX+/8tIQA7","img/boldhash.gif":"R0lGODlhFAAUAIABAICAgP///yH5BAEAAAEALAAAAAAUABQAAAIjjI+py+0O3gJRImqqPXjnqnmdCHpcaHVouj6q+cEjTNc2UwAAOw==","img/bracket.gif":"R0lGODlhFAAUAJECACkpKYeHh////wAAACH5BAEAAAIALAAAAAAUABQAAAIulI+py+0PEZhqAnZbrm4nzy3gh3WldmLBGkjdKrTHKMmyQc+2RH3THgkKh0RFAQA7","img/butane.gif":"R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==","img/calc.gif":"R0lGODlhEAAQAOZWAP///01yp7u8vKOjo1Z7sOfn56CgoOPj49zc3Pv7+5GRka2trYaGh6ioqKSkpOjo6JWVlcHCws7OzoiIiKmpqYeIiIiIiebm5uvr656enry8vNPT09fX16urq2uSyOLi4mmQxqysrGyUyrS0tIqKipGRkttYUuXl5ZOTk4+Pj6qqqmSLwY2NjeDg4IWGh+np6cnJyZ+gocLCwpmamtHR0ZmZmpSUlIeHh7KysrCwsJGSkrOzs7GxsW6Vyp2dnrW1tWeNw+Hh4WiPxcXFxfz8/NjY2NLS0uh0c4qLi46Ojpydntvb22aNw6WlpZeXl9/f37+/v9ra2oyNjmePxYuMjIiJif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAQABAAAAeygFaCg4SFgzsUDR0hCyEdDQ4DP4QqAJaXmAOEAwABnp+eABmEDgAEK0xTIB4iBAAGm6ZAQqsiPa4xm0RRHEYSMEMyUK+EBgALSUVNJBJHJgmjgz4AB0EISxwbGzQASoQzADwKHwspCBQsCTWEEAAPBScHHy1PCAAQhCUAIzYFOCgHcihIoIMQFQAYMLx4V+DCBQBSCE2IoEGDgIsYIyAhpMACgxsVqliYUIGBCyeGUhYKBAA7","img/cancel.gif":"R0lGODlhEAAQANU/AP/s7P7Ly/0wMP0tLfcSEvIbFfc0MvokHv5mWfdDM/k6Ov5iVf7q6vYODvgWFvlNPv5RUfpSQ/9qXe8AAPhJOfxLS//x8fUKCvo+Pv4TE/wpKf1dT/1HQ/gTE/8UFP8rJu8XF/3Fxf/z8/hFNf/Pz/9oW/xISPMAAO4SEvsAAPsoI/YUFP1fUvYdGP40NP9bWPovKvw8OPhHOPs3MvsNDftMSPtYSvUgGvITE/hLPP/t7f0AAPEAAP/y8v8AAP///yH5BAEAAD8ALAAAAAAQABAAAAakwJ9wSCwWM77kbpkx/jwfSQmBWCxUtCJUwnG5BIPY5tAZbl8kCLgSqNkOK6GvxCGJdJUKoBeARU5yCC4QOnc6PQAYDg88QjsIa4eIih05jT87CwMaJpIACgQNMpc7LJx7AAAWDAYXIxNCKRszAT0MCgoMFiEtCbA/HQc2HAEKHQ0GIQYJBSBDwREqoRcXBczORCs3ORQyIwnXTjg85BPmKE7pRUEAOw==","img/cds.gif":"R0lGODlhFAAUAJEAAKNJpDNmzP///////yH5BAEAAAMALAAAAAAUABQAAAJOnI+pyxsPY0xB2ItxQDV7ux0dAAhkaZFCaFSomcIgJ8vlyw7uhd5XvovBcLRXTwisHWNJoxDW5D1LUaEzabqpsjPR55PTScaPhvmMHhQAADs=","img/center.gif":"R0lGODlhFAAUAKU9AE9PTwUFBT4+PoSEhElJSRsbG1tbW21tbTY2NiIiInd3d5iYmBISEldXVwkJCYiIiF5eXmVlZSYmJgwMDBYWFjw8PAICArm5ubi4uPPz89DQ0Pv7+9nZ2cjIyPz8/OXl5aioqLGxscnJyTMzM6mpqYyMjKGhoTs7O8HBwcDAwKCgoFNTU9HR0fLy8nFxcS8vL5CQkJOTk5ycnHt7e7CwsLKysnx8fKurq4CAgKKiok1NTa2trWFhYf///wAAAP///yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEAAD8ALAAAAAAUABQAAAZuwJ9wSCwaj8ikEukbKHsWSzHg8wUyRUTV1yvStr6XsAD2HasBI6MqOVJ/mCLGYT72QsLLMP6TLuGAeX9CMINyPxp/GWmBiEJ+Rm98Qxo3dUZbXUQZVQRGJWCMPVRbRhZoHEUnpUU+Ck8BjIazS0EAOw==","img/chain.gif":"R0lGODlhFAAUAOYAAP////v7+/r6+vf39+zs7OHh4djY2IWFhd/f393d3dXV1fb29klJScPDw7m5uZycnJ6ensLCwvPz8+vr68jIyM7Ozufn59TU1E1NTeTk5H5+fmFhYcbGxmJiYlRUVEdHR3t7e1paWrS0tO/v75SUlNbW1omJiZ2dnXd3d3h4ePT09MzMzGhoaMvLy+np6dnZ2be3t5ubm8fHx+Pj409PT7y8vL29vVVVVZGRkZOTk6GhocnJyZmZmerq6isrK1BQUG9vbzMzM1ZWVjAwMKysrF9fXzExMaenp7+/v4ODg3FxcV5eXtPT08/Pz7u7u5eXl8rKyouLi0hISLGxsZiYmJ+fnzw8PISEhM3NzTc3N2VlZV1dXUZGRlNTU4iIiDk5OcTExDs7O66urtHR0aOjo////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGUALAAAAAAUABQAAAd0gGWCg4SFhoeIiYqLjI2Oj4IghkA3hkkkgyEahFVBPimEZBgPgwc0hB0bID+EWkuFXSiCJFJHZSFKgg8fT4VXDIJFHYJRH4IsW4ceBxAYPIMeGjgMOYcHYVYbhF5fQ0KJXEYQhQxZMYknJoY6VJDu7/Dxj4EAOw==","img/chainadd.gif":"R0lGODlhFAAUAOZUAP///56ennFxcd3d3ZGRkY2NjdPT00VFRcHBwc/Pz/f394+8Z8DAwPr6+pSwhPj4+E1NTUZGRru7uz1wIIiIiJCQkHt7e1FRUUFzJTdrGYaGhoGBgampqY26ZJeXl7LSlZGugUhISGVlZVOMKNDmunBwcHl5eYu6Ys7Ozoy8ZWKLSmaOT7CwsJKSkoe5YD9xIrKyslmDQpWsiGtra4+7amlpaYGrYXKVXbTUlcTExIuLi22AYr29vbHWko+hhXh4eGFhYdjY2Ex7MZubm+jo6Nvb2/Hx8VePLfz8/LbUnN/f35SUlJeyiNra2rHTkK2trcLCwoe6YK6urm5ubv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFQALAAAAAAUABQAAAejgFSCg4SFhoeIiYqLjI2Oj4QKEgUBOkpGlAUSCocNAQREAwgEQ00DOQQBDYYMFkEUECItJiIQFDAWDIYVGgYPITwoUE8hDwYaFYYcAgkbBxEXFxEHGwkCHIYDNUssUh4CPx4+NysxMoZIRUAzJVMIBjs2OCQ0RyCNKk49ACkLE41CkgAY+CFDoxcnogBw4a8RkxEdPnQYca+RAwwZMDiAxFFRIAA7","img/chaindel.gif":"R0lGODlhFAAUAOZbAJ6enrxDBf///5GRkdPT03Fxcd3d3Y2NjcFZH0ZGRnt7e0VFRYiIiJeXl/j4+Pr6+oaGhs/Pz8DAwGVlZbu7u/f3992mhpCQkIGBgUhISMHBwU1NTampqVFRUa2trb29vcpmKP7WuMxtL/7Nrnl5ebxCBeZ3Iejo6Pa1jfh2APe1jfWocpKSkv93EcJcJLFKD8uVdmtra89zOf+GIeGrjMJcI+p5Bd1kAcBZHtvb287OzsJdJWlpacTExP+STZubm/9/GOKvlOuKQJllS/SdY+OwlZSUlO9/GHBwcIuLi9/f366uruFoA7iGavHx8W5ubu52AL5PB8LCwtra2tjY2Pz8/LKysrCwsL9YIWFhYXh4eP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFsALAAAAAAUABQAAAekgFuCg4SFhoeIiYqLjI2Oj4QVFAcASUpOlAcUFYcPAAMnBhoDP1MGPQMAD4YSClQMGxMsJBMbDFYKEoYXEAQOGR86Uh4ZDgQQF4YcBREYCwkdHQkLGBEFHIYGPEZXSw0FWg1NWCUvMIZVOVkxSE8aBEMyKiErIkGNOyg+LTNCLo0BRggYeCRAIwREgKSAwgRHIxogTNi4EcWCoyI1AiCwCKljokAAOw==","img/chargen.gif":"R0lGODlhFAAUANU7APX19T09PQoKChISEgwMDOTk5M/Pz7Ozs62trZOTk9/f33Fxcdzc3KioqHp6en5+fuHh4UNDQz8/P4qKigQEBLGxsYWFhUZGRvz8/D4+Pn19fYSEhAkJCaqqquPj47KyskFBQX9/f8vLy3Jycm9vb6+vr/j4+A4ODjk5OTs7O0JCQmlpaXl5eaysrDc3NwUFBQEBAfT09NXV1e7u7v7+/jU1NY+Pj+bm5jw8PDMzMwAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAUABQAAAa1wJ1wSCwajYDD5FHBHIuMi246pQQMz51FQHAgIIDGYiBIHBO6iMJYCOgsRYMgkN1FBAxiYFCoKwgXQxgUI3VCDjoAQhU6HYY7CDoHQiEwJjsaNS4oKTgZEiAkOxA6E0IbOjOYOaytrCs7ADoPQiU6LY8NOhVCMTosjwsUTkISJx51BQN0QzIcKnUBAlhEqBI3RgoROmZGNhwDCw0AEAgOBAJwTyIZL1RTF3mGNB8PEweKj/o7QQA7","img/chargep.gif":"R0lGODlhFAAUANU8APX19T09PQoKCn19fT8/PxISEoqKiuHh4X5+ft/f37Ozsz4+Ptzc3K2traioqOTk5IWFhXp6enFxcbGxsQwMDENDQwQEBM/Pz5OTk0ZGRvz8/Dc3N0FBQW9vbwkJCWlpaTk5OTU1NQ0NDYSEhAUFBQsLC4+Pj/j4+A4ODgEBAePj4w8PD+bm5tXV1fT09Kqqqq+vr3l5ef7+/n9/f3JycrKysu7u7svLy6ysrEJCQjMzMwAAAP///wAAAAAAAAAAACH5BAEAADwALAAAAAAUABQAAAbNQJ5wSCwajQCFATHRHIuMzG46tQQuTx5EQIk0DgCHpCDAHDG7SsL4COwgxYsgQOx8iBUBgxgoPIgcOkQJFBlDGhY0RQSCRBE7AEITOy9FC41DDTsKQjMpJzwDIRsgKyILBBwdPAc7BkIjOzahOrUiJbU6dwA7CEIwOzhFIJhCDjsTQi47MUUbxTwSFk5CBCgqRCHFDwV0Qy0eOUQDA3wCWESxBCxGCRU7ZkYmHgUSDgAHDREUAnBPNwtIUJmSYU8WITJqIDCgINLBh0WCAAA7","img/chart.gif":"R0lGODlhFAAUANU/AP6YlpW57UWE3RZNzPlXVxEyw5TCl1aO3/6tqhxm1KjG8SFKerLXt/60sXSk6Gyd5FmlUGSzWmaZ5Iuy6l2T4YSt6TByK3wzfP51cfxsanSi5f1mY3y4gnim6JzIoGKW4Tp82nKxeKHC76rRr/54dKTNqCt02P5wbVGM33yo5/6gnv6kov5+ef6FgU2WRfM9QYO9iv6BfIBEhzyANX4/g67Ts2+g6ESLPWqrcGy8YPVHSv5gXBpBdP64tf67uP///yH5BAEAAD8ALAAAAAAUABQAAAazwJ9wSCwaj8ikcvnrOGwPCYUptCmuogP1J1EEJgHBliKaVAKgJImEOWVQgUpqYlL7eo2GINDRVBJJGD0tMQggEw8PKYBIGQ0sJAgmFRIfDgM5EREQEEQbCG0rCSkUBw8DDAw1Iy5EBAgnGyoJGigoEqgwHCU3risbOwADDwICFAUjHCEeM0Q6KjsEwh8CIAcFJSE4BhZELwDgwqUHKAUeHgbcRDI0F+4F8PEL8zw8W/f4+UEAOw==","img/chembl.gif":"R0lGODlhFAAUANU/AITNdWm3Wbrcs5bWib7otVuqS3O7ZLbhrsHiuqbYnKvYobLbqvT583XCZf/+/2OvVNj109nr1M2PlPlpdnjFadHsy8rlxe0pO5DNhPr9+pzXkP3+/O3268a0tsvww3zJbVKjQeEUKIjPeuHx3oDIcePx4c3myXrAbOn55YjBfFeoRsbiwfn//1+sT5DSg//9//H67p3Mk7rxr6/rom+/X//7/9DwxvGgqVmoSd8CFuUEGfmdp+r05+uFjv///////yH5BAEAAD8ALAAAAAAUABQAAAb/wJ/Qt/H5Bq2WxrgRagoPkpChASx+goao4qgmfJYTQPBzEHCPxuiX2TgQqkeAXHSUPY+CiOGrrHwmAS0UKz8QCEI/Pgcpfwc0Hws+CCkCiw0UMYl2LxsuSQM+Qz4aaFI/GwknlgcNYz4TFxKTHx8Jih5QJByGESw7OiEXHT4oJqJmBXo8Pyg8LDc5wsQwI6KoCgNXjxQIPj0TEhsrDQ0KiUZEny2hPixGT1FDBCkWPgkB5j42lT4LNAE0TaLxYM+GCvYqEKSQ0JuiA3EolGCT4QUcOXR82PnBYMYJSQgw2ZNh4IuJD3NGcVDX4gEGIwycoDmRCJ0MFQUU+IhwIIIPMAIqVGioOSRDjAM7P6gwUCKDggMZiKLz8QICiAABrhipIbWmjwwaWmDYUELEiRVBAAA7","img/chemdraw.gif":"R0lGODlhFAAUAIABAAV6NP///yH5BAEAAAEALAAAAAAUABQAAAIpjI+py+0Po5x0gXsuMDt0noEe94lIh5ZjgpJsuG6aqmVYXOX6zve+UQAAOw==","img/chemene.gif":"R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==","img/chemspider.gif":"R0lGODlhFAAUAIABAAAA/////yH5BAEAAAEALAAAAAAUABQAAAI1jI+pyw38WoiISoCzO9bQ/kSZOC1dcnoluiqh27Lna8ZqarOwqJUgB1NBRjhdRZITIpfMRQEAOw==","img/cleanup.gif":"R0lGODlhFAAUAOZXAJGRkWFhYWlpaV1dXZKSkqioqPHx8XV1dYGBgVpaWnl5eX5+fi4uLm5ubktLS2dnZ3Z2dmZmZl5eXo+Pj39/f2BgYFlZWZycnE9PT4iIiJ2dnfr6+pSUlJqamvDw8O3t7ScnJ7KyspCQkKampoqKipubm1NTU1hYWKqqqvX19YSEhPj4+N/f30JCQvPz88/Pz9TU1I6OjsLCwq+vr8HBwYyMjIKCgp+fn2xsbI2NjYWFhYuLi3t7e9DQ0HJycmtra4eHh4ODg8jIyDw8PLS0tHNzc8TExGpqam1tbUxMTHd3d6Ojo2RkZE5OTjo6OklJSVRUVOfn55mZmZ6enj4+PsXFxZaWlv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAergFeCg4SFhoeIiYo7DkKKhgAnIASPhFUJDEcflR8pLJg1G48GAEUCEhgtMyuKMhkQB6dJTg82iB5LCQ0ICw0DVAEUTIc0EwsBOAIRCggIEUMvhQYXGhpAMQA8Oko/CgNEhhNSHVZTBTcXBDkcPiiHRgpIBxAUAAUFIyILiR4ZFgMVKggIwuEAJUU9HpjAAKWJhQAhKm2AUSLAEwcqXFQaZKADiSgbQ4ocmSgQADs=","img/collapse.gif":"R0lGODlhEAAQANUAANLh87/U7rrR7aPA57HK6qXC597p9qC/5tHm/OPs+Njr/////87d8svi9rzX9pO459Xp/8rh+qnJ6tDl/MTd+Nvu+5C25eDy/8Da9v3+/+38/5u85Z7B6q/I6rPM6+j4/8/k++/9/+Hz/1p6zur5/9ns/9bq/+b2/9To/jJVsv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACoALAAAAAAQABAAAAZuQJVwSCwaBYdBIWAkHhKLRcawaaoCoaxWIzEWSOAw+DMgCiqn9GmkPjUYQ4JoLhqlRvSLJw7q21N3fSAEQx0ICH+AdwgThEICESiSk5MOcEMFJpqbmhAPRgEloqMKHFYDFKIKGBZWj0lLrrKzVkEAOw==","img/copy.gif":"R0lGODlhFAAWANU/ALjM8IKs55mrxfv8/ihSqCRKmNLd8qvC76O77iFEi2ua2L3K4pquy/f5/Nff666/1Km5z6Kxx/Dz+StXspemu1GD0TVJY5Oit7LC2HOh3lyM2q7E78fO1JGz7oqu/HOS0Zy1526X58zX6fX2+5Cq4IKf2Nvk98XT8s7U3aOyyDVlxbra/5ywzlV5wWSFyWaCpb/L3brF1JepxJ/F+uDm8ebq83+n8+vv+a7Q/1tyj0duumCO53Ka6sfS4f///////yH5BAEAAD8ALAAAAAAUABYAAAaewJ9wSCwaj8ikcslsMjGYxwOSQjUxvqwv8uIwH9oBJZbzKiG+Fc5w2RwOiE5HdExlG5LaRusLqBZGAj4zHQEZCHw8ABOARBQDIzc0DiA+Hh4GOxMEBEUXDYYKCiRaEiYnDAWeEg4iPTAlPjYhGhUVqZ4WurofPgM3BgAbAqpKLj61thUCCUstDSwMDAICMs1KOpwEBQUJ3k7g4eLjQkEAOw==","img/copychemdraw.gif":"R0lGODlhFAAUAPcAAP////j7//v7+////kppq5m17IW4n1JxrVJyrXWzhtnr6FFxrPT59ymQYiuTYkyggpO53yiTU8TW9FyV6SSKV8DV/SaQUYGYv2aX16O97fv7+XOxkonA+4W696XC7Pz7+YW480ifd3CwhJ/HsYi7p/v9/dfo/bfM8lCkeYGTuESecWCqkCmOa/D49K/T/JS8/7fN94S++5e9+VN3spq5qUSI31ud8IS6+JGx65jE94CzmN/u/q/G45i0687l/Wyo8dXl+eDs+vz+/5fBrimPYLHF+MjX9X+h4fjz8oCumTOab9Ph3X24sofEqWyvsmCU4CCLVZq48nqPtsne+3639/v9/8HV+Y247rXQ+lB5t5XC/r3ZzrPZwqC871SgfjGSdKzP8qvD8qjNtjKUfHmq4pKy7Pz794us7oCu7Ian5nu7l3CinT2dch+QVp667/r8/3WxhU2ihIKZvsPW9v3+/VCO54G6+Gaa2oW+o43A+rzR+aPA7xCFRjJ2157NtXug5qrPw4GXvGerkzWD5R2PV6q/68HV/nO1mD5/38ri/p7B8dDg/+XlzZPHpF+mdYG29D+dbz+ZZKnA7pe17b7gzsDV/73S9cbY80p4vrfO+S2NcIu28R+QWXu2nsfh/Mzg9zydc5rHsp+57UeN4vz+/KbUvFifcHe0kae/8BqIW1R7uIGUuWqriiiGif/+/8ze1aXC49zo4rbO7qbRtv39/7jcxoim4sTT+BWJTM/i/bPL+L7S/JTBy7PK+Mfd/Mrk1MTS5zyYgnG3hGym7mGsjYO7vKvB+ZKz7ZW09aSvxZK173W0wa3TsWeu+kukcoS08zyL6pOx6lGfdv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAUABQAAAj/AKcJHEiwoMGDCA9yaGaHyqMf0MgkHBhjB4CLQBRtwjBx2g0TAN4EyGFDy6A7n4Ig7JBrzok9eXx4SuRr2ChYB0FM0WUMmQsArmgBuIKlBg+DzxbJYuIEDIAqAQCgkfGiD7CCEJYReeCFTTEPRQo9qTMBEaaCphxsQaIjAYtUvG4ZkXDJUhaCfDppuMgsjgE4ms6kOWLLiiqChJQ0McNFwaxQpYKFQZVBkp4ZBNtEUCNCEAoKYih9iTIpWg8YCAhyanBqBQ1i0l7VGtPFTQFRvQ4QxCXsF6kWHwAlGQGqkqFdFTItIOgs0pIBQkg4whOilbJjOMr8IVDQDxRWsYZsF1CxRs6FQClWSUl28JAFSI06yp9Pf1pAADs=","img/copyprod.gif":"R0lGODlhFAAUAMIFAAAAAEBAwICAgICgwKCgpP///////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAAM0eLrc/jDKSau9uIlNZPiDsm3eF4ijAyzmeYzCAcz0erQo2di3mccR3CsVGYAyyKRyyWQkAAA7","img/curve.gif":"R0lGODlhEAAQANU/AFFRUbu7u+7u7mdnZ/j4+PPz81dXV1ZWVv7+/k1NTefn5+Pj47e3t4iIiEZGRlJSUpOTk/Hx8UBAQPX19cXFxc7Ozv39/aqqqo6Ojr+/v97e3oKCgvf390JCQjQ0NOnp6ezs7HFxcW1tbaKiokhISNLS0rGxsU9PT1NTU9DQ0EVFRZaWlsTExL6+voeHh5mZmVVVVXNzc5KSkk5OTkdHR2lpaXV1dcLCwtbW1ra2tomJifr6+tnZ2T09Pfn5+f///yH5BAEAAD8ALAAAAAAQABAAAAZlwJ9wSCwaj8dIqgE41S6842Rw2OQCKwOgYiH6DiIFsRDoMIY7W4xzXEhAQk1CgPy5MIifDFInjAwvCg8tdSwzJB44OnRIBSgqDhl1QyY9CTeTQgs0ACWZPwQDMB+fPxQheaWqREEAOw==","img/curvemap.gif":"R0lGODlhFAAUAOZoAIqqAN3d3dDQ0Ful4/p7VPx7Uk6p8MXp/12k5Y+qAKOK//94R/7NsU6o8F2k4Vyl4/17U93kt+jryP/bxNPx/5ra//94Rs/Pz+6Uc/p8VfXFmfx7Udzc3Fil5erj/4yqAJeuD4uqAKyV/9zjp02p8f2miqSI/9zko6GK//LGm1qm5Weo5PKzfE6p8ae+OpGuDZuM/72z//93Ru6Tb/iEXpmM/46rAHq25pHE7rLHUl6l4a+g7pHD7e+Uc5PC7tDbgfymi9bw/5LE7/6nirPj//C0fv97UPp8Vlut7ojG9feEYP2cfHS26Vul56mP+6zAPJKyEbXIU9XP/+Lc/4itAJjb/9HahHi25eTa///awv+lg/96T7Hk/3q25YnG9k+p8P57UJCxD6WH//+ni7Hl//SzeomtAMzMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAfggGiCg4SFhoeIiYqILgAhT2g+DgNJaCUEBECGABESCWgIBxQNaAUMEwSbJz82aE1cVSRoRhosEIZhVGZQaDcGLUxoGAsLPYYCZ2cCaAHJAczJHIYiCigxaEMFW1poOAMDPIYKWB41aBsMWTJoAwdBDuJTUjBoYBplFmgqZBUPhk5iTOwQtsDCDDRXDHzpcswZtDPPmp2RVigHAABR0AgZ0MELmjEFNizZ1OlTqFGlTqUqBGCEFZNEKhhAAyFFkQyGXgD4AALNCh0PkKChkeGIEkMXki1DpgwN0wuLoko9FAgAOw==","img/cut.gif":"R0lGODlhFAAWANU/AKy815+tx9LV2FeG46Sst7W9yVhhcIOm683Z7IyVozVSjDRDYVeE3k94zVN+1d7i58zX6UxmnFheaTlWkT9iq3iBjmx3hyUoMWCQ7snT47C/2pmmvH2Bhs7P0UFmsDVQhmyP19Da7uns7l1sg0971Sk8Y2qLz4abwn6c1rnH3+Dj6Obp6y5DbK61v0JhoZSdq9fc4LK5w4ei2bm+xKy0wKe31T1KZ9rh7J2lsGp/qnWAjlJ4wsbM1DZHaUVruf///yH5BAEAAD8ALAAAAAAUABYAAAZ3wJ9wSCwaj8ikcslM8ghDFa4JSzyErVnz94oJLZ0tLSE0CLaFBKEi2f4EupGE4/5ZDKPCNnQYoBoOMilLCBgMLhE7JD4nS30eEzkNNwATSwMIGQoPDhABLEsMEDUfIiYUJRdLIBQKNisAPQsBSxoRPRt1uru8vUEAOw==","img/del.gif":"R0lGODlhEAAQANUpANVdTN5tXeHNy/G8s+iupufT0cVYS+auptWUjN9UQOKck+YsEOOknu7EvvOOf+zPzd1yY8hbS9R7btq/vOa4sdIhBckzHePV0+XY1vC7s+jY1t17beiBc9/BvtgLANuRh9IqFNS1s95VQPHU0eHHxOKgmejKxuB2Z9yDd////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZHwJRwSCwaj8ikcdAwPiZGQcZxEI5KgqRisWEAlMKPB1QApyAGAAWciAgDyoBlqJEgCRUEsUM6ckQmRSFHKCdmQhcYh4uMKUEAOw==","img/del2.gif":"R0lGODlhEAAQAIABAO0cJP///yH5BAEAAAEALAAAAAAQABAAAAIYjI+py+1vQJKNBlsvjFtjZn3T2JXmiSIFADs=","img/delocalized.gif":"R0lGODlhFAAUAMIEAEBAQFBQUHBwcM/Pz////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAMsSLrc/vCJSAegbhKLGd+dd4XNR4zhZ3Yqyo4Dqayy6WJtDd/VrsueAHDYSQAAOw==","img/demo.gif":"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","img/dev.gif":"R0lGODlhLAEYAff/AOeorPv09fnq7Pfk5uy6veu0uPzy8/LO0P35+fXa3O/BxPrt7vfg4vjm5/DHyvTT1uWeo+Wdoumtseahpueip+iorOqvs+y3u+WfpPTW2O/Ex+uzt+27vvHKzfnq6+6/wuu1ueemq/PT1eekqemssOemquqxteagpequsuiqrvTX2e6+weinrOqwtPDIy/LO0fDJzOaip/TY2vvv8Oiprffj5PXb3ffh4+7BxO/FyOmrr+ekqPbf4ey5veajqOqytuirr+29weahpe28wPrw8Ou2ufnp6vHLzvrs7fLR0/HMzuejqPbh4uy5vPz29vPS1O7AxPvz8/Xc3uelqfnn6Oy2uvLQ0vHNz+/DxumusvDGyeenq/HMz/fi5O28v+ipruiorfXZ2/bd3/z19u7Aw/fk5eagpO7Bxe6+wuinq+issO2+wu27v+u1uOmvs/PU1vTZ2/PR1Oy7v+aipuy4vOmtsvru7/PW2Pnt7equs/PP0uiqr+26vvDKzfDJy/jn6Pz39/HIzPrv8Pbc3vbe3/HLzfHO0Pjo6e/Cxe2/wu7Cxvz4+Pbe4Pfi4/jl5vjl5+u2uuy6vvHN0Oy7vuqxtvLP0eqzt/fh4vTZ2vPR0+qxtPDKzOelqvPS1fnp6+69wOy4u+irsO7Dxu/Cxvjn6fnq6vbf4Pvy8vPV1/TV1+afpOWhpumwtPbg4e/GyfXe3/v29uuxte/Dx/DHyeq0t/no6fns7OiprOmxte2+wOmqrvLN0eenrPTY2fPS0/TX2PHQ0e/Bxeajp+y1ufDHy/XZ2vz19eamqvns7vvx8fHKzPLS1fzz8+y3uu25vPLQ0/PQ0+q0uPns7fPX2vDGyvbg4umvsvfg4frs7uy8wPnr7O29wPXe4Pjj5fvz9Pjm6Pbj5Pz29/zz9PHP0frw8fvw8fLU1fry8vXX2umus/vx8vjp6vno6vDFyPTU1+mtsPDLzuWgpfHKzumssfjk5vXc3e7Cxe/Hyu7Dxe/Dxe/EyPXc3/LP0vbi4+Wcof///yH5BAEAAP8ALAAAAAAsARgBAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27sQEjvdka+M0geNrh5YzcMH52uAE7RroxJ+uchwp+SQwdmR7W+YwJ/sKH/+cO1rkD8ejJfzWABAJ68eq9Gjj/fnx8ruFY1Yd/f+uo/fb1l5UHAPojoFYIuLefBAdmlQKAFTSIlRxm7FeChFitsUN9MXSCoVUwZPBEDxuGh0EQH1YVxyPOhWECfylO5dxwBaQXo1Qz8lCFjTdC5Z0G7/WIowFc7CekjzcoGOSRTs1AAoBMyrQARwWyEaVL4UlwxgsaAThBGVeyVJ8QRWS03wYIIBBmSl7qgJELe9TXgZprmlQgjxMxYMMGctZZ0p31VcQAGftx6WdIIAAaaJ4d1FeBHoeGRAcNqii6JETYDFIfGQ9EKtIBLqDRjAQsTAAeoBHNh14eD7TqqUgJxP+aARdkRABoCAU8NNyL/mBATaudvgprrAnweWcMBYDg0HBhuHcBsMEKG1Ksz3gB6Ak76MCBAg0N54AEgUAbrbQgfRDJLZZigMIn3CpkxDXFJCLuuOSCBICSgKp7gUIH9HsANOLW+6el4ZWAgrII+asBImeQ0cMweQhMEsHhnQBGHUMc5K+xeEocEnqr4PuegiGUWdABRRjpcUlKmNJAL18oGoEJBX1gq8orE9TAzjzvjNHONXhx851TaDDQHAXm/I8CTEvRc88qFCC1RTtjUYHMoAyUtMdMd11IGU9XLfXYFe28yTxTKMrnP3cK3PXbCrignR/m8NDAGyCMPbYKFdX/QEwWaOTQQwgULyot3F2voLfUWNizeAHNON1ARUmwR48KDvBa+AhECBseJ+y+/UHej8sxyeJrMMGzRTMawIMDKBAcwR10RvpeGiAwLUo2jxdARw4HaHG61K6oDvRFrRswiANV0HCnGh1E4SmAPuTwgAa94+Bv8F4UcEQXDUiBwwkGsp48FTAE8YXI4k0w56EFlqBHq2cs3oMS2/ebgyFYuLFFxxNp3SWsIINGeMADrvDBfjrgpzvpAFgeOln++nUBKGFkON/olwpqsIAF2ECBOLsSAk61nwLQS2Pb08HWMGKFfmWgDB0kBRAsGCYEcKw+fHDI9pZQIBJopF8i+EMH/xfwAxpGKU1oMKIOD3CnEIRhI1bwwBA/EEImpQkBjTJcRFxxpwn0wQAcGWKiLiXCNInAHyOQQAFewECKwABQRvNIByowBQUdCgnGQIAVUtGFRwhAHYugCBNcwEMAhUAkFTiGEA7FAEbwgBQMiOQN/mAHinggA1mgQAgqAIA6imcDSstIAjIgAhlE8pQekMgCPCACOZyAAhRAgTOYtoIL5DCUGKlEv95wykiqcgEw+EEMJgBLMFThbbjEyPaS0MviQGQBjhiCgogJy1gwLZkZyV8zIeIBJYAwPNSkAAvahRAYYTMh+RvEKSGiAiq+B5bwVMjQzrmQ/IVhnd0ywAvYF//OhMiABWSkpwT9lQF8LmQ4M3hQfaiZEA7MMKACHUj+UFELJCSDIXFgBxVuiB5ilnOFKRpiB4sIwIrk7xKAuKI8MUAJ5ymxIHeyBIbQ8wMRSDED+4nAB8hJEV9s7xRXrJ1BLLWQO2miQQC6gDw09x5kUkQKhPjFAQgRVKFq7T0V0mJCCsQCARUOPTqF20RKcYhqwKEUTqgqTOvDCxoMrXwMaVt8gPRV8ZwgCzt92woiEoBTCAIP4GBCDRxhBFt0biAt2I8iNBAJCdjqIXIlTwJk8Na6RkAHVVgB03pgAQtABAGwQEY9jgADB4gCCkOAhECGEI/60MABsHVARCI7HWL/WaCu9YlAGixQhTZ01rMOcQIeGvAKHDzuH1IrEXpSEFuJ0DY4xIoVFCIQAQhEAAO4NVEasvBb4DJkHTtrxDh6J7WrvccEsJ3Ic3kT3Vj5QRNqKEEJdiCE7IaHBp3dAA7e4JCdMQEO8CCvedGjCC5QZL26aW8C7lAIDXDAGhWowBaEUVmwSqBAJ0hBEXJxDyakiSE7a0UGJBGE3g04PKpARUUKFAHjKPgDH+iXFjiQgghXoATkK0gboHCAJzShPuQLjxk4kUZa4CMaICaECGBb4sWdGK4Hfilu/LEBGcSqD6TyRwr80K9CcCDCDUkAB8KzBzYQ4Lb7WYIEvIuQBthA/xKxbfLYTnwRBNtGPCwAwHsikI/tReQJp8xEnACEXzYfJAOxZbLekBagFYN0yoAChb8oEkkRgKFAE+hsAhTChUQ7AAY58EIosNtoijzp0XdWVAoOcBEGqGAELN4CK7SxkERvAn8HIJw5J+IJ5WrVNuzLqUaCLZ4lJEIQVi1IbDtwBX8pdNcRQQIJfz0bA1BB16jaSBf7EIAPJ8QFuPbXhal9UAPMgNi5Gc4NTh2eYHukQGbYRj9scAXZonN7V+iBlBMyo33Hxjn70IV41AADDVwAhB/bDwZgXVKJ+ssBCkgDqg/iHRXgCwI/+ABuYLsGEwwNAnAQqSNGIh4JXGAFJv9gXz0PAHEFrCAGdp4BEqhwg0qggQQhmEAJgDAEJYihC5AGEAxE+qcL9JKjpTZIy5nGhwoDig8KKAC+VpEKKXbwNor6wRBP0sxM+FsgcHuyotiNngvcYOu2GeOdICDFlDRT3+QmyNtiZ9/wPOsBh5iSbRbwAqKqpJk2CDJEDdI1utv37g9Ax22G+NCJm6SXNmBDFRHCNMPXFQOIx40ghjgLO3M9kisgddzlbvnCleAC8zuhbKJghyF6AN0wYcAKuArZr2LgCxcIl26iINIFnOHrJ5l9gTiw6doTjAYXaEdvei+G/dgbJnfiQvEhwvA7YeAdzBFpFwB0B5kASAfEqjP/tLPfwWUACAI4iEmBJBCrennDCcDI9ks40AaAvocE/K0XAoigKJgk4AmF9B4TgAj6hwA/Jn8tQVkAEgMCgwA20H8vkQAFAgESgwDVd34voYDA5yc4dScSkGwpEYD1MTkSowZ30gTexhL2tx8kKDHE5g84oFIsIQE7UGEQUAMr8x8AEoMyuBIF4AaCFx4xYAo5AwkakGgd9yRscAMpqBJS8wPf5A9TIAVKwwwzQgUOgG0bgAkgWBJ68z/hgQs8EEozMgMOIDJAIAI+qDc+gAEtUAOHgEszQh/vgYJOKDWWUAHYdQFXJ4fesh8QQARdGBJSkwUwFx5g0Idk+If70QQZ/zCIHlFe9dEFeueHdLggJyEBjPYeIlCJcpgDEDgxABJH56R2nqdtBYIw9GQpDCISd2IoAqUoRQCJF3EDbgAgbRRRiqIBTcgRCeACI9MCNgAIEXVVBWIFPbgRxCIBMUACXpAENdAA2uAExWiM+8EIyShKsQKKlNAKT1ONBOElfxBUyhgrWiAeL/CN4GiN4tECgkiOGBFdtxgeLdAz67hW6EEH7wiPFRFdwIgeSeAz9xiO7+EAUVBVvQgR7TVu7diCAzkQRSABIzACE1AHeICQY0CNEtFe//geSfCQBhEFZZABV3AER4AJIlBvb+AcETENCoZmgweSVyQN0+YPccCSDv8xAMrAATzJk4k1eg+ZJtxQHyTgCTi5EOTQd6EIkgiBAPqwHxowIwuxAGKQDkvJlAiBdOHBA84xBgkhBhrQAi/oDxeClQvxbO+BAgYgDmOwCCAoTX5nlkUFIDIwBillVT+JHvU1eXL5UfuRAefQgwCSBxKgAyVQX4vUl8ZXHxDQAWmlJsRWB8EgC4GwC6qnmArRRR3gAQdYQtCCmc51J2AIIFgALKAZmnUlAVqgAu5wmac5lxQjAS4Qfq8ZZZYSCk9Am7Vpm4ASAQfQfrtpEQQDBdMXnI4GKG1gnBgRl8ppES/YnBtxgeMHnRXBVBhAnR2RATP0BdjpEQsABd0ZnuJqOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/yOZ/0WZ/2eZ/4mZ/6uZ/82Z/++Z8AGqACOqAEWqAGeqAImqAKuqAM2qAO+qAQGqESOqEUWqEWeqEYmqEauqEc2qEe+qEgGqIiOqIkWqImWp4BAQA7","img/diamond.gif":"R0lGODlhFAAUANU2APDw8Pv7+3l5ee3t7a6urn9/f+jo6Lq6uuHh4dvb28fHx2pqanNzc97e3uLi4mZmZqenp4qKiu7u7qioqHFxcfb29vLy8snJyd/f33V1ddfX142NjdbW1qqqqszMzIiIiHp6erGxsbKysqKiotTU1JOTk/n5+evr64WFhXt7e56enpqampKSkv39/XJycnh4eGVlZcLCwoGBgZiYmG5ubn5+fv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAUABQAAAZkQJtwSCwaj8ikcslsOoeGwkLjDIQWjUGBBViSKB3TUPEQtY6A0QthHMxqbOJBFlNyUATiCpZQSj4pRQ4CEF1FAQcZHkcBBDQXRBgMJRZKJxEbBgAqLn1NCgIgExVPpaanqKlCQQA7","img/dilute.gif":"R0lGODlhFAAUANUnAE1afDNCaCo6YneBm7zAzdja4oqSqPX2+HV/mS8+Zd7g5mt2kra7ye7w83yFnlNfgGdyjvDx9NHU3UpXeZScsEZTdkdVdyo5YSw7Y5qitaetvtbZ4XaAmYyVqtnc49nb47q/zCQ0XX+IoZ2ktz5McL3CziAwWv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAUABQAAAZWwJNwSCwaj8ikcjmkDJhFT8JUgg4XJpMlYgVlswboAfA1YTbMUTmLWDZIa9Plo9TEsx3l5G56KAN8FUocfBBKCoBxBEsMAmUhGVAFIgAADhJWmZqbRUEAOw==","img/dit.gif":"R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==","img/dlgclose.gif":"R0lGODlhCwALAIABAP///////yH5BAEAAAEALAAAAAALAAsAAAIXDBCZZ4frIpJNMkhVvcq+TYXeFzWaWQAAOw==","img/dlgclose.jpg":"/9j/4AAQSkZJRgABAQEAYABgAAD/4QNSRXhpZgAATU0AKgAAAAgABVEAAAQAAAABAAAAAFEBAAMAAAABAAEAAFECAAEAAAMAAAAASlEDAAEAAAABAAAAAFEEAAEAAAAB/AAAAAAAAAAAAAAAADMAAGYAAJkAAMwAAP8AKwAAKzMAK2YAK5kAK8wAK/8AVQAAVTMAVWYAVZkAVcwAVf8AgAAAgDMAgGYAgJkAgMwAgP8AqgAAqjMAqmYAqpkAqswAqv8A1QAA1TMA1WYA1ZkA1cwA1f8A/wAA/zMA/2YA/5kA/8wA//8zAAAzADMzAGYzAJkzAMwzAP8zKwAzKzMzK2YzK5kzK8wzK/8zVQAzVTMzVWYzVZkzVcwzVf8zgAAzgDMzgGYzgJkzgMwzgP8zqgAzqjMzqmYzqpkzqswzqv8z1QAz1TMz1WYz1Zkz1cwz1f8z/wAz/zMz/2Yz/5kz/8wz//9mAABmADNmAGZmAJlmAMxmAP9mKwBmKzNmK2ZmK5lmK8xmK/9mVQBmVTNmVWZmVZlmVcxmVf9mgABmgDNmgGZmgJlmgMxmgP9mqgBmqjNmqmZmqplmqsxmqv9m1QBm1TNm1WZm1Zlm1cxm1f9m/wBm/zNm/2Zm/5lm/8xm//+ZAACZADOZAGaZAJmZAMyZAP+ZKwCZKzOZK2aZK5mZK8yZK/+ZVQCZVTOZVWaZVZmZVcyZVf+ZgACZgDOZgGaZgJmZgMyZgP+ZqgCZqjOZqmaZqpmZqsyZqv+Z1QCZ1TOZ1WaZ1ZmZ1cyZ1f+Z/wCZ/zOZ/2aZ/5mZ/8yZ///MAADMADPMAGbMAJnMAMzMAP/MKwDMKzPMK2bMK5nMK8zMK//MVQDMVTPMVWbMVZnMVczMVf/MgADMgDPMgGbMgJnMgMzMgP/MqgDMqjPMqmbMqpnMqszMqv/M1QDM1TPM1WbM1ZnM1czM1f/M/wDM/zPM/2bM/5nM/8zM////AAD/ADP/AGb/AJn/AMz/AP//KwD/KzP/K2b/K5n/K8z/K///VQD/VTP/VWb/VZn/Vcz/Vf//gAD/gDP/gGb/gJn/gMz/gP//qgD/qjP/qmb/qpn/qsz/qv//1QD/1TP/1Wb/1Zn/1cz/1f///wD//zP//2b//5n//8z///8AAAAAAAAAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAUAC0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDDooor+fz+zDR/4RHVv+ET/t7+y9R/sP7X9g/tH7M/2T7Ts8zyfNxs8zZ82zO7bzjFHiHwjq3hH7D/AGtpeo6X/alpHf2f2u2eH7XbSZ2TR7gN8bYOHXKnBwa9l/ZA+N3hn9njQPEuueIZv+Eqi1TydOPgBrcNZ64FYSi7vZJoZIVjgIJiEYaYyn+CPeX4z9qXxHp/jj41ar4h03xfqPjS38RbdR+2albNb6halx/x6XC7Vj8yEAR5gzCVVNm0fInbUw9JYdVVL3n00031+dtt110tfy6WMxEsZKhKnaCvaVnrtptpa+97P7N2pKPnlFFFcR6gUUUUAFFFFABRRRQB/9k=","img/dlgheader-blue.gif":"R0lGODlhAQAkAKIAAIu2zI64zpa8z4+5zoy3zZG4zpS7z9vb3CH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==","img/dlgheader-green.gif":"R0lGODlhAQAkAKIAAJXQnJjSn6DUppbRnZnSn5vSop7TpOTl5CH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==","img/dlgheader-red.gif":"R0lGODlhAQAkAKIAAOem3+mq4euy5Oin4Omr4umt4eqw4/79/iH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==","img/dlgheader-yellow.gif":"R0lGODlhAQAkAKIAAMi6j8q8ksy/msq8k8m7kMq+lcu+mNzc2yH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==","img/dlgheader.gif":"R0lGODlhAQAkAMQAALTX8bLX77HW7rDX7cLZ8LPX8bfV6r/W7rHY7bnR6bzS6rLW7rTS7LfQ6LTQ6dPk8bTV8LTV77XW67HY7LPX8L7U7LTQ6rPX7LLY7MHY77TU7bTY8f3+/rbV6rbP6AAAACH5BAAAAAAALAAAAAABACQAAAUdIPcYnXRhEzIMgrAEAVVsQA1FGmM5XpMolUOGEAIAOw==","img/double.gif":"R0lGODlhFAAUAMQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAUABQAAAVaYCaOZGmeaKqqxhOs5oAdL5y1C4FdiS0fEpmgpoLoLjlMgZiKCBmXXW+F0BWgmCEMEb1MCjMmiptVAKSwAPhgzopPlPOlDbBVzgKLw2DLNM51fSINe4KGh4chADs=","img/doublearomatic.gif":"R0lGODlhFAAUAIQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///////////////////////////yH5BAEAAB8ALAAAAAAUABQAAAVT4CeOZGmeaKqurBq0n/Es4pW0A3ZIufCuEALmshAWfqpIj3HBwBBGxgiZQjQvk4+OirJiBArA8LYKFHRhZ4sivihgoopYYIF/GmKA/e4w7P+AKyEAOw==","img/doublearrow.gif":"R0lGODlhFAAUAOZLANbW1gYGBlRUVAAAAAEBAdXV1WNjY15eXlVVVf7+/p2dnWFhYQUFBQcHB+jo6NHR0dPT09ra2qqqqgMDA9LS0gICAklJSWRkZNnZ2e7u7u3t7Xp6equrq/z8/Lq6ui0tLc3Nzb6+vlNTU8HBwT8/PyIiIvb29q+vrwQEBGJiYgkJCcfHx7a2tkhISFhYWKenpxUVFfT09IaGhmVlZRcXF/Ly8iAgIP///xISEm9vb6CgoEpKSl1dXX19fcDAwDExMYqKijIyMmhoaCwsLEBAQJycnPn5+TQ0NHd3d3x8fNDQ0P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAemgEuCg4SFhoeIiYqICRAAj48QFJAASkaFHBMNAZwBDJyfDRMXhQoWGI8FBQ8PqgARRCKlC4suAoVFB4sIt4QKuooCCIIeKUs6uixChSYUSwK3HSsDEicGSzA7hS8VNTzD1z00SDkbOBmFCT8zCws+FYItBCUEI4cxQUckKkmCESgDriGSMYCAjQSDDBDQkAjEAGqEQgBRdOPDkEWHHDjAyLGjR0SBAAA7","img/down.gif":"R0lGODlhFAAUANU5AP7+/uPj4wQEBPj4+Pf396CgoM/PzxAQEAMDAzAwMHt7e9HR0bS0tBkZGaamplpaWt/f35mZmf///8PDw1FRUZubm2pqag0NDa+vr6urq1ZWVmNjY42NjUpKSrW1tZqamlVVVUBAQMfHx21tbbOzs729vcDAwOHh4UlJSb+/v+Tk5IWFhT8/PxYWFiIiIl5eXj09PW9vb/T09JycnExMTMTExGVlZbCwsAAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZzwNxkkCsaj0gj7pFsIjklp9RIYommzRgOg00SArmFgtg1Qlq4W9mYwb2KhLWEKEtcAOsiDBfKFykgAAAbNn4AKDgJfgo4LmAOBmUVGmAjODR+FjgHJnkGmyk5Hw0MXQQrNTkRCAIeeTOsBX4dArJ+KidGQQA7","img/dreversed.gif":"R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOkcECGUwCAREAyUhM2F0EBLDQaDUDDhFQEDZ2BgB5KRD8V4nPYl3HBnB1JUKCwBpdkgEIQUWCRcIYnuGHw8FAgIVIFlPmZqbnJxBADs=","img/dropdown.gif":"R0lGODlhEAAKALMMACEhIf//vHUhISF1vCFNmer/////3plNIXVNmXV1vN3/vJmZvP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAQAAoAAAQqkMlJ6wyoWBYSDQKhfcJAAuIlAOaZguwGE8rabsYB7PfG5DEfxbAQGikRADs=","img/dshape.gif":"R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOgeiQGAwoEAIS8HBIEF0GJMMNhkAFDkDjVJgLm4ayrJR4Vi3iQlP/D7ERPZFAAsKa1sIFwkWBSFjSAMgFQICBQ8fjU6YmZqbnERBADs=","img/dummy.gif":"R0lGODlhFAAUAKIHAP///+7u7uHh4ebm5urq6vPz8/f39////yH5BAEAAAcALAAAAAAUABQAAAM2eLrc/tCBGSEQAVQ5sN4M0GVgOH7lARBeqqytC5NyEKeATeM6WgKF2y+4+xmEIMDR96O4npUEADs=","img/either.gif":"R0lGODlhFAAUAIQcABMTExgYGB4eHigoKC0tLS8vLzY2Njg4OEhISE9PT1BQUFFRUVRUVFhYWGVlZWhoaHBwcHh4eIeHh5eXl6enp6ysrLe3t8fHx8/Pz9fX19/f3+fn5////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVR4CeOZGme6AmlLNWw5oN9DQWT2TF9w3aTj0YF8SNRDoxdUZQxBDTL0QIQHSUEs2qBoFxiDI5XVBI5ZouHS6570wxEweXkIaIolghL9bM57E8hADs=","img/electrophoresis.gif":"R0lGODlhEAAQANUpAP///+Hh4cPDw+Li4t7e3v7+/u7u7vb29uDg4P39/d/f383NzcHBwfT09Li4uMLCwvLy8vDw8Nzc3MXFxcTExM7OzqysrLm5uefn57q6uu3t7dDQ0OPj4/f3993d3cDAwMfHx8jIyOnp6aqqqvr6+sbGxuTk5NjY2Ly8vP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZ1wJRwSCwaj8gkcST4kCyCUMrxWCweFyEIsNFQAKjOAMBgAERCAQCRQQBKAkNhMikM0oC8fp8P4BsYDQkmAwcABAQAdylqEAEQCQgeBwWIingREhEJChKUCgqXjAAGJwZ8en4pX6h8HEIOAbKztLIVSri5ukNBADs=","img/ellipse.gif":"R0lGODlhEAAQAOYAAP3+/uzx9am+0vv8/f////r7/Jy1y7jK26G5zvj6/IKivmyRsqzB1H+gvJu0y77P3fL1+PX3+qm/0m6Ss/D097DD1pGsxe7y9uju81+Hq4qnw/7//+ft8miNsFuEqpKux+Lq8JOuyMDQ3pexyX2du/n7/G2Rs4ChvdXf6bzN3fj6+6O70P7+/+3y9lyGqmGJraS6z5GtxnKWtqG5z7jK2q7C1fb4+sLS387b5tHd526StNvk7IelwMjW4qK6z5Csxf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAQABAAAAdTgECCg4SFhoeIgiMyCyE4iSs6EoIHCg2HDCSGDy+GJogCNIQCFYkfhBOJQAaEHaoIhDE9iRaEKDyIOTCFJyKHHocZPoQ3LimINRoOBj8zqs/QhIEAOw==","img/eraser.gif":"R0lGODlhFAAUAOZgAAEBAf7+/vr6+m9vb+bm5gcHBzw8PLy8vCYmJhMTE5OTkxAQEAMDAycnJ4aGhpeXlxUVFQgICD8/PwUFBQYGBqurq////wICAvj4+N/f38HBwc/PzwQEBLq6ur6+viQkJE1NTfLy8q6ursTExFxcXOnp6VNTU3Nzc8PDw4iIiPf396+vr3V1dc3NzQoKCjo6OiAgIImJiWlpaUxMTA4ODi0tLbW1tWZmZh4eHhoaGnR0dBkZGbCwsDY2NhQUFICAgJqamo6Ojr+/v6enp3BwcNra2r29vQ0NDZCQkLu7u1RUVF5eXpWVlZubmx0dHZSUlAkJCdHR0aGhoaWlpZ2dnS4uLkhISGhoaCoqKpycnFhYWHZ2disrK5mZmQsLCwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAUABQAAAfYgGCCgwFJAoOIiYlKX1wlipCCMl8SEzgbkYk/XyBgFS4+RpmCTAAGAYIHCV4imRoXDYeDG04TTZFIXxEriQRYAA6QQF8QFFSJGC9fRIpdX1MNFzGJAQZfW4kPXx0qPV86iCM0XzeJQV9ZYAFWX0sWYBk7C18DiVEFCR5gFiRfMwQIoPCgp+jAgiM2BJ34UoDDEAEEFaGAEKGCoCsMUsArUA9SixwUpIBR8EWDgBochGQqAoPBE5IHDAB4MAoMQAAmKH0JVhNMiCpfgrLoOQjDhy9aiCbqECkQADs=","img/expand.gif":"R0lGODlhEAAQAMQAALHK6qPA5+Hz/7/U7qXC59Lh87rR7ePs+KC/5tns/////97p9s7d8pO455C25Zu85Z7B6rPM66nJ6q/I6srh+u/9/9bq/lp6ztLm/Or6/zJVsub2/9To/c/k+////wAAACH5BAEAAB4ALAAAAAAQABAAAAVfoCeOZGkaSEAMJhkcSnw4rTdUeF5BJpH9QGCDZKBsjkgkhTGaCASXqPTyBIwAnaxmu812rCKsl+vtREZFjBqjWWOWJAJnTqcHTAOLfm+R1BAUCYIUDzUiKCoshouMLSEAOw==","img/filelink.gif":"R0lGODlhEAAQAOYAAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAeagG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJhCQAX1mCAC4oUBhggzAOagdaPkVVB0Jia1GCSDpUJ24EDiEEZSk4I0q5ExUFDxkzFz0PBRUTAIIGARAUCwIDAwILFBABBoMlPyIMLAFtVDA4QmZIoggJFOQY80GDggQRXEmcSFFiIAA7","img/find.gif":"R0lGODlhFAAUANUAAN7EkKlhOeLKlt/EpfTr29u9hOLLuejx+cGOV/r28/f6/fH2++TOq8OSWOz0+te2fr+KU+/1+/Hm2MmbYenWpNKthNKsd/jy7ufSur6GTfbv5Nm6jPn7/c+oZLyFUs2mYty/pdKubebRr/Tr4uzz+tSwcPP4/Pr8/suplJdhRsyicOfToMugZsWVa/z6+ffx7ffw5ezcv7mASLuBTLyET/z597FyRbNzS75zQODHts+oadKrb9a0eery+uvz+v///yH5BAEAAD8ALAAAAAAUABQAAAavwJ9wSCwaj0gkARDqdHQbSVIYKz1EMA3DwsIkCSWGItLzLTiDifQIeCh8h548wlFVkCHRIi73+UwDDUgdGj5yZT4kESMQSB8aJH2JDosZSDoMC34+Dp0mII1HGxYcEZ2dCyc0LUgSLAMcJhERJicNOzgGSBgTKgMjIyAIPAIANC+tFQgZGR4zBRQUBQHIU0IGCAArABMpNdbXHg8PDTYJ4EI5ATI3F+hDCSgu7/T0QQA7","img/fliph.gif":"R0lGODlhFAAUANU9AEBQYLCwwJCowMDAwIBgwNDQ0JB40JCYoJ6Sz5CgsGBAoHBIoGBwgJCAwKCQ0ICIkJB4wFBgcKCI0NLS0lBYYGAwoPf3+4BwsKCYwHBgsJ6Mz4BowJBwwKCosL663rC4wFBYcLCo0MCw0Obo9e7u+HB4gFAogKCY0HBQsIBgsLCwsKCgoMi54HBAsKCIwMDI0JyO1VAokJCA0KCQwEAgcPDv+LCg0EAogGBocGBAsJCQoHBYsGA4kP///wAAAAAAACH5BAEAAD0ALAAAAAAUABQAAAZ2wJ5wSCwaj8ikcslUJoQnVrMXeAgdMEtTULpKPMxAgSGUhAijpeCFE8pEEIRSPIgIDbYZqpYUDDoUdxgNO3JHYioHAEIcLhcpLSRHfis6iz0bDRkLChpGARMfBw+XBBCcPBVGCQwRIAClOTEmNzRTt7i5urtEQQA7","img/flipv.gif":"R0lGODlhFAAUANU+AEBQYKCowKCQwGBIkL6+y6CQ0GBAkJCYoLCo0MDAwJCAwHB4gPDv9oCIkHBYoFA4gHBgoPn5+rCg0NDQ0IBgwObk8vT19mBogFBYYL+41IBYwFBgcPr7+7+11O/x8mBocJB40JCIwFBYcO/v8oBooJB4sGBQkNDI0NvW6qCI0MfH07CwsLm5x3BQsJBw0KCosGBIoIBosJCQoJBwwJCgsNLS0quyubC4wJCA0MDIwKCgoLau1uzr9a6kzP///wAAACH5BAEAAD4ALAAAAAAUABQAAAZzQJ9wSCwaj8ikclnkjAg05tCjCtQWUgsrMEncPssIgZtY6Q6ipDhwyiVeB1kDkLQdGovLBgPo06WAgUYFhCk4IC4zFBQaSSghAgiSEhICCi1KFT0OJAqWJTEwTDwZAyYQEA4GgAwdAwMGD4IMO7GCt7iAQQA7","img/fullscreen.gif":"R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py40AGQSGumCt07f7y0lVl0XL9KXqehQAOw==","img/fullscreen2.gif":"R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py62w4IsJ2Hid3hxZWWUH6FFTh6ZqUgAAOw==","img/gene.gif":"R0lGODlhEAAQAOZOAAAA//7+/8bG//X1//f3/2tr/7+//9DQ//Ly/ygo/4eH/w8P/8fH/4SE/3Fx/wEB//n5/3V1/yws/+Hh/46O/35+/97e/42N/8zM/8/P/yYm/xIS//Dw/2Nj//Pz/9PT//39/+bm/7y8/////9HR/5+f/4iI/4GB/3Nz/0xM/wIC/319/wMD/4+P/2ho/0ZG/4yM/5WV/9nZ/4uL/+Pj/3x8/+Dg/4mJ/9/f/9XV/3Z2/wwM/6am/wsL/9TU//T0/9jY/4OD/5SU/5qa/6en/w4O/3R0/+Li/3p6/5mZ/5aW/3h4/3l5/5OT/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAQABAAAAe6gE6CTiIUCgUFJk0Gg4MIJ0wrA4IISDoXBIMDDgIkOw0gARELOQYoEE4BChlOAgsPHxYAGwdODDEBJDCCPwkAKS8ACRyCQTIUIYMuAMwAHYMTJRWZggIqzCwYgx4rRI02GswSNIMjQzyNOOEAEkflSdODDNcA2ds1LcmCy83PgtEHdjkZ4AuYMGJOGgBRxYrBq1izaglQEmAgpwM9QIkq4sMUKkonlsyY5ATBDSOYGgkS0eJQIiGMBgUCADs=","img/gray.gif":"R0lGODlhIAAgAOYAAH5+fnd3d8jIyMfHx8XFxXh4eMTExH19fXl5eXZ2dnx8fHp6eoCAgMnJyXt7e76+vqGhoXFxcXV1dYGBgYWFhcDAwLq6uqysrLS0tLu7u6qqqm9vb4KCgnNzc4mJiZeXl6+vr4qKipKSkpGRkYiIiLa2tqampnJycp6enpycnI+Pj4SEhIeHh5iYmKKioqWlpZ+fn5aWlre3t52dnaOjo5WVlaenp7i4uI6OjrCwsHBwcJOTk4aGhrW1tb+/v5ubm7m5uZSUlL29vZmZmYyMjI2Nja6urry8vKioqLGxscbGxsHBwcLCwsPDw39/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAf/gE2Cg4RLTIcGBAQGh4ZMhJCRgodKSgJNQhkWFQMDSgaGkpGHTEoDPjYiJCsTHDxEPyWWTYeig0tNDQ8wCgEJAQgLCAW/ASEYnqGiTARKIE4RCgcATtXWAAcJHR8PA7WjixAFBdbl5k4HJyEyA7SQjwQQCA7n9dUAAR43Ao+ETA1GAtCzZw/fiCWMbgl4cAABwYcAIrjgN4iJgBQnHmpcsOCIAFzMHiwYqNEeAx0QlNBaMoBGAWolCS5gYKBmEwE4EsR82AsDAYQVKJDbaa/hCyVLCFhgsIBowQIzvCnpAYCk03L4PlxSUqLq1XP4WlwikIFD069YA6DwJohFALTlphoiQXpzRwKYcHtZ+LlEyYUAeNEWINGEwKFFDBzCdbLhQoN+FjVsWCyBQl/Ihj1IQKsggeN+gpYIAJI4cMkDagck9Dfg2cudnWNcHtVkQA4KEQ5oZFBAQorZkh4JyBCkgwRpAGAmbxhhgoZktmgx8YRBRIACvoqNm2CiQoMmymwhEqDkgYkhI4qoqAEhCYFOjqL7w1VJgP1O5A1/k++PiSNSjewnSSAAOw==","img/green.gif":"R0lGODlhIAAgAPcAAMLCwsHDwSOxTMLDwyOxTcPCwyGwSxCuPsHCwc7Dy8XDxcnDxxCuP8/DzMvDyMzDysvDycbDxCCwStDEzNHEzcDCwMLDwcHDwhSuQcrDyCSxTR6vScHCwhevQyKwTBKuPxevRMjDxs3CysbCxc3Dy8fDxcXDxMXCxH+6kBSvQsbCxsbDxhKuQc/EzMPCwtHEzs/Dy8TDw8TCwxGuPxOuQBKuQBCtP8zDyc3CycDDwSiwUdLEzhCtPhuvRrLAts7EyxmvRRGuQCGxSxqvRRywSKzAshuwRsLBwgisNQ2uOz6yYQWsNg+tPiCwScTBwxOvQYm8mMPBwtLEzZG9ns3DySyxUiqxU7jAvIi7lmu3gh+vSai/r4q7mI69mxWuQ0e0Z2W3fRGtP2K2fBWvQsLBwcfDxrrAug+uPpC7m123d7i/usTBwi+yVrvBvCCwSxOvQDeyXM3EyzOyWB2wSiGwSgCtMs3DytDDy73BvZW7odDDzkCzYne5ix+wSVe1cjuzX6q/sEOzYwesNRquRae+rSCvSs3Eyl62dwCrNNPDzpu9piGuS8jDxyCvS1m2dbLAtx6vSKK+qnG4hh+vSnW5iSixUDyzYKO/qheuRFC1bsvDyiiwT9DDzNDDzTiyW4S7lKe+rny5jtHDzCmxUFO1b8XBwwCsMwStNSOvTW+5hEy0a8HBwQ6uPpO9nyGwTBKuPgutOwKtNMzDyB+wStHEzMvCyWm3gcHBwiOxTsbDxXa5ijGxV9DEzQetNiKxSzSxWE+0bpm9o1u2dcvEyRyvRxauQ6+/s8jDxa/AtM/Ey8XCw7bAuqG+qcnCx87Cy0CzYXu4ikO0ZQKrNA+uPMrCyE+1biewUM/CyxOtQZW9oSKwS77Cwc/DzQesNiSwTDSyWB2wSMPBwxivRAuuPCawT7vBvcfDxxOuQc7DzM7DyrG/tbXBuGC3esDBwQ+vPqy/sr/Cv0m0aMHAwWq4gGi3gHC5h4K6k8jDyBKtQA6uPSaxTsLDwsPDwyKxTAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAj/APkJHDgQQIAjBSKUWGAulzIXAQDsI0ixIr99FWRQi9PgxDJjPvA84AZBRUSLFfftC5BgwrZPwDyxqWTlWyAwhB68KMEBAMqBAUwkalNvw4wzBzqI65CCxwcWz5iRMITAJ8p9Cxzk8RbLiAQPBPqJ7UfAwBx33Q6Va1FgYkULC1ToqvEG19i7dwlsQLIHUIsYbgfuiyCLkhcgeBPfNcDgTxEYgQXe2tGKAWLFmPu5OaBK3oIAA3MkMDMLQ+bTEgRB0xNO4IBSnGydCnsas4AOg9Y1yMEvQIYrPYjVPq1BGp8fawbscxbqQ6PhpzFZOxZin5MJXw4IgJ5ZC75IEAIo/6jw68l27ooLYUAhYt89ZKNAoMdsgMa8BPscgFo0ZL5iITOkcccAGWyBSn/+4SXEB+zAMAAjPlQhX4KL1ZDKNQMooAAcNpxHYT+TjIFFezF0QsoBvnwoFiRhqJNBABbc0AUDEqgoAAuWlLGCSiGMsEkxHvqnASJo8DLRAFFQwEUdHwrAihxk3OBWAA7IoMQ4riTYQz5TSHEBQe288A45KRgwHzgHZJGOApHxU0AD2ehDgwfQEUCEDcKs4sCXFO1jQgLB7NLLBrRhpkEQsNBTgR1tDnTBCaI84scSSRDRhAFgCaANHX2AYIoOUOAwDAcD/FTVD5pckgkG5wTBwzRMMEyAzSs6oADPDhEg0ChB+wCAwAoU1KKGPWJUE008jkiiSAjJUKHrrhYZNAIEOKAzAS0UNEDCA80AwAG0P/UawD4uFGBuAQBYAIBVKAUEADs=","img/hbg-blue.gif":"R0lGODlhAQAoALMAANHU7tbY8NLW79DS7dnc8dXX8Nvd8c3Q7Nfb8c7R7fT2/N/i9N3e8gAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUJmwCGHFGItQ+EFRCAIAkCUwrOaaJMcRAQA7","img/hbg-green.gif":"R0lGODlhAQAoALMAAMzw4s7x49Hy5crw4dXz58/x5Nbz6Mfu38jv4NPy5tj06dz16/T8+QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZkBmxCFHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7","img/hbg-red.gif":"R0lGODlhAQAoALMAAO7R3/DW4u/T4O3Q3vHZ5e/V4fLb5vHY5O3O3ezN3PTg6fv1+PLc5wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZcJmgCGHFGHtO+EFRCAIAkCUwrOaKIEkSAQA7","img/hbg-yellow.gif":"R0lGODlhAQAoALMAAO7u0u/v1PDw1+3t0fHx2u/v1fHx3Ozszezsz/Hx2fz89vPz4fLy3QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUBmxCGHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7","img/hbg.gif":"R0lGODlhAQAoALMAAOzs7Pn5+erq6uHh4eDg4Ofn5+Xl5enp6ejo6OTk5OLi4ubm5uPj4wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZMJwFEBLmHFvK+othJAnDkCWjrOY6DAQRAQA7","img/hbg.jpg":"/9j/4AAQSkZJRgABAgEASABIAAD/4QNuRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodpAAQAAAABAAAAnAAAAMgAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDExOjAzOjE4IDIwOjU1OjUzAAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAACgAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQAAAABAAABJgICAAQAAAABAAACQAAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIACgAAQMBIgACEQEDEQH/3QAEAAH/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APR97/3j96Sikkp//9D0OUk0pJKf/9H0GUl80pJKf//Z/+0IGlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQABAEgAAAABAAE4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAThCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAAThCSU0EAgAAAAAABAAAAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADOwAAAAYAAAAAAAAAAAAAACgAAAABAAAAAwBoAGIAZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACgAAAAAUmdodGxvbmcAAAABAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAAoAAAAAFJnaHRsb25nAAAAAQAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAjhCSU0EDAAAAAACXAAAAAEAAAABAAAAKAAAAAQAAACgAAACQAAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAKAABAwEiAAIRAQMRAf/dAAQAAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9H3v/eP3pKKSSn//0PQ5STSkkp//0fQZSXzSkkp//9k4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAANwAuADAAAAABADhCSU0EBgAAAAAABwABAAAAAQEA/+ESSGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPD9hZG9iZS14YXAtZmlsdGVycyBlc2M9IkNSIj8+Cjx4OnhhcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eGFwdGs9J1hNUCB0b29sa2l0IDIuOC4yLTMzLCBmcmFtZXdvcmsgMS41Jz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJyB4bWxuczppWD0naHR0cDovL25zLmFkb2JlLmNvbS9pWC8xLjAvJz4KCiA8cmRmOkRlc2NyaXB0aW9uIGFib3V0PSd1dWlkOjI5MWVhMDQ5LTUxYzMtMTFlMC05OWQ3LWY3YTAxZjNmNDhkMCcKICB4bWxuczp4YXBNTT0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyc+CiAgPHhhcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI5MWVhMDQ2LTUxYzMtMTFlMC05OWQ3LWY3YTAxZjNmNDhkMDwveGFwTU06RG9jdW1lbnRJRD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eGFwbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAoAAEDASIAAhEBAxEB/90ABAAB/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwD0fe794/ekoykkp//Q9DlJNKSSn//R9BlJfNKSSn//2Q==","img/hbk.gif":"R0lGODlhGgACALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAAaAAIAAAQcEIAgxBikFGMOQkmiLAvTOE8qURamcR4okiaaRgA7","img/header-bg.gif":"R0lGODlhAgAXAOMIAOvs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+f///////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAACABcAAAQT8MhJazXYlM2JJ8MgjEIQACgQAQA7","img/header-bgblue.gif":"R0lGODlhAgAXAKIAAPX1/OXn+ODh9ufo+dzf9uPl+OHj99/g9iH5BAAAAAAALAAAAAACABcAAAMRCLrcPXCESYstxogtziEgkQAAOw==","img/header-bggreen.gif":"R0lGODlhAgAXAKIAAO/999j678z46Nb57tD469v68M746tP57CH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYcd55BNjBGgkAAAOw==","img/header-bgred.gif":"R0lGODlhAgAXAKIAAP3v9/nb7/rd8PjO6PjT6/nY7fjQ6fjW7CH5BAAAAAAALAAAAAACABcAAAMRCLrcLVCESYst55BNjBngkAAAOw==","img/header-bgyellow.gif":"R0lGODlhAgAXAKIAAPz89fb36vX25fT04fb26Pf47PT14/b25yH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYkl54gtjBngkAAAOw==","img/heatmap.gif":"R0lGODlhFAAUAOZ0AEPL/vr8/Iju/4bS7OXpZ/X5+emsUKi5ucfY2Pf8/Pb29unp6ULK/fH394qbm+T09Pz+/jS877rKyrjJyT3F+On29uv39+b19ZLWVczY2DjA8/T7+6W2tvn9/cna2p6wsK6/v+n5+f7//6u8vFOkPcPU1MLT0+74+PH5+bPExMXW1rDBwaKzs7XGxu719ZqkpJmqqr+4VLfGWIPQ6cGWRn3j9IO3XcFxNkHJ/L63U2TO9cW+VnrH4LiyUXnG39De3pvFVLptNbyTRLxuNVmtQMDR0TzD9si/V5vEU4HO58S8Vn7L5Da+8XzJ4pa/UbltNINvPIXS63K0R8NyNz/H+oTq+7q0UjW98LiQQ1OjPcO8VaDJVXjF3rhsNIXr/LzKWnrg8TrC9bzNzZfAUqPNV7mzUYDM5YOUTbPCVn/l9sVzN3CwRnje75a+UUTM/+Xl5eLz87vMzH6Pj////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAfvgHSCg4SFhoeIhhlxjI2OjhmEEnOUlZaWEoQTIm4ADDhUFEZhGkxXESIThC0QbgIMXlUUaTUaYGwREC2EKR2dOlEzSWZLTTw+XB0phCsJrgMBASrRRdFiCSuEIBudAx4IPyUmRCQkWRsghCMozwUFKu5SGBhrKCOEByfd32RASFtjnLQ5cYAQBwvPGjT4QoCAjIZoLHAgxKJCJxs7tByJkUOJlTI9KrAg9OGCqzMGDNBw4UJISiwXPhCC8aATFDVTbogbEuRJlwcwCDkIAaeo0aNFQzgg9EKO06dQob4gpGDBm6tYs15doCCR169gAwEAOw==","img/helix.gif":"R0lGODlhFAAUAPcAAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAiEAB8IHEiwoMGDCBMOXMBggUKCCRQ4mKjgoUAGFBkwQPAgwUMFBw4WYJBwQciDCA4AQAgggEeDBwhY7JiAQYABDhwiXEAA58SJAnQaTPlTgQIDC1YmDOBg48yBDAQcbCnUIAOZBwdULQigwMuBBZrOZKBAwMQDHC1KdKBgq0IEX5/KnRsQADs=","img/helm.png":"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","img/helm_aa.gif":"R0lGODlhFAAUAOZNAM/Pz8bGxsvLy9DQ0HBwcM3NzcjIyIyMjM7OzsrKytbW1ouLi9HR0X9/f29vb66urr6+vqKiovf394SEhPr6+rKysoWFhbS0tJKSkre3t4mJiejo6NXV1V9fX05OTv39/aGhobu7u42NjXt7e9zc3JOTk4eHh6SkpENDQ6amprq6und3d3Z2dri4uIGBgY6OjvX19XJycnp6etvb23FxccnJyXh4eGFhYX19fYCAgERERFdXV5iYmFhYWKurq6ysrKioqOHh4ZqamoKCgn5+fvb29qqqqk1NTXV1dZeXl62trcfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfRgE2Cg4SFhoeIiYqKHB0EDgSPBB0ciRIjFwoMmwwKFyMSiBATA0tLBgamAxMQh0U0IQkBS0wFpgkhMTCGERgAswMrNgCmABgghUFIATW0LR4oKgKnASwzhC4gpUsDQwsyGqUBCCdAhD8vvwYCRzc7HgKpAAetgx9EGQIIST0pETpCAAjIgONDoQANADBZwEOBAg0mEABoEMAQhRxGCiSYRisBEx8NKBwiQQBBASYoaxVwQCJRCREVHih58KCCiBKKNlhYcKDngQUWNiwaSrSo0UAAOw==","img/helm_base.gif":"R0lGODlhFAAUAOZCANTU1GBgYPj4+KioqKenp6qqqnl5edLS0vn5+ZGRkaampnp6epCQkK+vr52dna6urqysrJ6enqGhoY+Pj9XV1a2trV9fX7GxsZ+fn2NjY0JCQl1dXXt7e/r6+o2NjXJycmZmZjo6OrOzs0FBQZqampubm9bW1nV1dYmJiVFRUYyMjJKSkoCAgLCwsKKiom5ubn5+fmdnZ3h4eHd3d3Nzczg4OGhoaKSkpHZ2dpOTk0lJSYGBgaCgoEpKSnR0dLKysqurq////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAe8gEKCg4SFhoeIiYMCJQ4CioUCEzIzDI+QQpIGEBALCZeJCBMLQAQDQAYMCKEMpKcVpwYJq4YdCRwQAw8gMbBAnh2RKxylBSQaNQ4FsTmgQh4fDQQKDy8nNjQPCgQNHx6EBxkYxSMpOhoFBEAYGQeFAAERFzA9KighLBcRARSHFBYuDOz4IcIHjhsBACAKAsCChAYKFLSQkDBIIoYBlAHZB8CiIow8KHbEJCSIiQ0bKHgkGeTAgZUkY8ocFAgAOw==","img/helm_blob.gif":"R0lGODlhFAAUAOZQAMvLy8nJye/v7/n5+SkpKXR0dD09PUVFRUdHRzs7O5aWli0tLdTU1IuLi6OjozExMTc3N6KiouDg4PHx8PDw7/n4+O/u7szQ0ert8evt7vj6++7u7aSrtO7v7tjc3Ozr67y5vaarqrq2sPj6/bW6vPPs46+vo7yyq9XT0+jr7rOtovDx8ZqlqvDw8fDv7/Hw8PHx8bGxrvj5/O3t77vAx+7v7/Tp3r+6tbKztcS/uuvx8ujo5/Dw8Ovs7efn6KGutuzx8ubo6Li2rerp6bq+xu3u7srFyObd2fTu5+3t7fj4+PX19SwsLO7u7v///8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFAALAAAAAAUABQAAAfhgFCCg4SFhoeIiBINBgQLTEwLBAYNEocMDwgRAU8AAE8BEQgPDIUCCQVLTgNKrUoDTksFCQKECgdLS0lNvL1JuQcKhBAOTkk8FL2+Tg4QhAQBA00fPS8CExQwFEkDAQSETE8aSCo/KB4pRxcYFkpPTOAAIzYmLCAiJCchRDoVAPCDmACQUUIIByM5cNyIQQOIP4CCwinpMCRIjQ0+ZuzI0O7ds2hFWkwQcE3AChfcvA0rtkvZsma2cOly2eTXkmCETqVa5epVrFm1CGHSxMkTKFGkDi1q9CjSpEqJokqdKigQADs=","img/helm_chem.gif":"R0lGODlhFAAUANUoAPf396SkpPn5+fv7+6GhodTU1J6envz8/PLy8v7+/p+fn5qaml9fX/r6+u3t7ZiYmODg4JycnIiIiN7e3peXl9zc3JmZme/v76amppGRkdXV1ZOTk/Pz8/j4+ImJie7u7ujo6LOzs/Hx8fT09KOjo6Kiovb29vX19f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAaFQJRwSCwaj8ikcsk0SggBknRKIniQgcRhMGhwB4dEAEkyjUYngJlzMpGQJdPp5JhAziM3XC6IYAIhAm0leycdDxoFFIImhEdxJwIbCwwVAnlvj3IAAR8FGWh6micjFwgAIAh5jkYkAKRyaXMAmUYWIri5ugtICgYlwATAwAYKTcfIycpJQQA7","img/helm_cterm.gif":"R0lGODlhFAAUAOZNAM7Ozs/Pz4yMjNHR0dDQ0G9vb8nJyaurq5KSknBwcL6+vsjIyMrKyr+/v4WFhX9/f4CAgHNzc319fXZ2dvf39/r6+tXV1YuLi+jo6MvLy42NjdbW1re3t66urv39/bS0tNzc3LKysqKioq2trXJycqOjo19fX+Hh4WZmZr29vYGBgfX19Y6OjpaWlqmpqWlpaYiIiH5+fqGhoYaGhsLCwqysrHV1daqqql5eXqWlpZOTk7u7u/b29rW1tby8vHt7e9vb24SEhHx8fKampnFxcWJiYqSkpLOzs2tra83NzcbGxsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfMgE2Cg4SFhoeIiYqKFjgJBZAJCSYWiRQ/HxsDmwMbH0IUiApBBEumpwQOCoc8JD4MS0pKDEkGBjtEK4YiCAGyShkNQw0LAQgyhSc2SgDNBClILxOzShNAhCoiAzAkETMtEQQHNAsARi6ENSwEIQcHPTlFJRLEAQKrgx4xHAFMSbUCUCAwkIGDBA+FlDzwdQrAvyUBHigxVAHCjSSnTiU5AKHCIRAFHDIZ6Q9AARCJdGgIMWJEhw5HNCBQhMHBBQE4BVxwgGGRz59AgwYCADs=","img/helm_find.gif":"R0lGODlhFAAUAOZCANnZ2fz8/NjY2JiYmJqamvPz89fX14SEhJmZmf7+/qWlpcDAwPDw8PX19Zubm/n5+ZSUlIKCguXl5YmJibS0tLa2tv39/ZycnPf397u7u5+fn7W1taysrK6urt3d3cHBwc/Pz35+fu7u7u3t7fb29tzc3Nra2qamps3NzczMzJOTk9vb29DQ0MjIyMPDw6KiooeHh3Z2dqGhoa+vr+jo6Onp6Y6OjsnJyX19faCgoJKSkurq6uvr64qKipCQkJWVlZaWlv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAeNgEKCg4SFhoeIiYqKNBQEEzkfIotBACozEgUeLxAjigVAAAGDDwsyo4gZFQmFARoAiT88hywniT0FhyYDiQgShkEtHYk3CqiDGAg7iQ8XCw2CCQwKBCRBiTUEDikrLgMONjoG14gNIBwDGyUMEDERAuSLQhYAETgHBvKDQQIHITD69gnwgSKgwYMIhQQCADs=","img/helm_import.gif":"R0lGODlhFAAUAOZAAISEhIuLi4WFhe7u7srKyoyMjPLy8sjIyHp6evz8/PHx8bi4uMfHx9/f3+Tk5MvLy4KCgu/v7+vr67a2ttDQ0JmZmcHBwcbGxoaGhpKSkqysrPf395+fn4+Pj+zs7Ht7e2pqatbW1sXFxWlpafPz87CwsI2Njaurq25ubvb29qGhoaKioqqqqpOTk9nZ2YiIiM/Pz97e3re3t/Dw8GxsbHl5eWFhYeXl5czMzKCgoObm5t3d3ZiYmKOjo4qKiv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeOgECCg4SFhoeIiYqLjI2Oj4IQCAIAlZSVlgIIEIQFEj+goaEJCT8SBYQBNxQUMD0lLTIsFgoDJA0BnQ4fIBkVHBUvOQsDEQYxuYMdBCgjNDY8EysCKsUGuIQmO7UhFjoeMwwuKQYbDqiDNQs4BwQPBwcMDwQiFwQTCIQnAgEBPv8AA2LQAKmgwYMIEy4KBAA7","img/helm_layout.gif":"R0lGODlhFAAUAOZLAOfn5/7+/t3d3ezs7JqampSUlM/Pz319fbKysqSkpLu7u729vYWFhe/v7/T09MHBwaGhoampqdPT06ioqPr6+uDg4Pb29vPz8/39/Z+fn8bGxsTExNjY2LOzs+bm5oCAgOLi4tLS0tHR0crKyp2dnfDw8IaGhujo6OTk5MjIyIKCgri4uPHx8fn5+fz8/K6urvf398fHx5WVlcDAwKWlpeXl5ZmZme3t7erq6rCwsIODg4SEhIqKiouLi8XFxeHh4fLy8tra2t7e3o+Pj7a2tqysrMnJybq6ut/f3+np6dXV1f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeggEuCg4SFhoeIiYqLhwMMJ4yFGBMEA5GFHxuXhD8ZQIVGBhoNg0kKLoIBCQKEJQsqMhmkAUELFIMPBYQPRywOCDyCECOEIR2EMSCCLSsbHikAhDcmhAQVgxYkNhqFQjSECgaDAAQQSoQWEkWEKDocNQJEBRI7OKlIPayEF0MIBzMOAgBgEKGCiBcHLBW6QAEAhkE+ckxIEAHGposYM2IMBAA7","img/helm_linker.gif":"R0lGODlhFAAUAOZTAKqqqqenp5aWlpOTk4GBgZeXl6SkpIODg6CgoKGhoX19fWlpaYqKinp6et/f32hoaGtra62trYyMjF5eXrq6uvz8/M7OzoKCgoSEhHFxcYmJidTU1JKSkvf392xsbPb29sDAwPr6+vj4+KOjo2pqamNjY1hYWKKionl5eUtLS0pKSo2NjXBwcHZ2dl9fXz4+PtbW1srKyrCwsJubm7W1tZSUlHd3d05OTpmZmdXV1YCAgJycnI+Pj7a2tpCQkFZWVlRUVH5+fouLi0lJSVtbW8nJyU1NTby8vG9vb729vV1dXW5ublNTU6urq6mpqaioqKysrKWlpaampv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAfxgFOCg4SFhoeIiVMbTg0eECgAG4ofFCUKAwYGNQolFB+HIQwPARFOAQFOUFIPGiGGPSRNT1K1tk9NCzSFHRAJT1FSs7gBUU8JJB2EIDZQxggmTEAeTwFSUC0ghBwMAFJOBSoCBjcKzgAMA4RBAsBOOCkaHEMHzk4COoQEA05RTjMvfhBp4C0KgAEECCXAsOqekREyVtWCggEBoRgZVj3ZsQQBrVpRImQoQkgECx5NogQoKCVKFCg+kIgoBMPFiZS2gjUZMSHHoSQThKhq0gQKAAlKjiSyQGDBAQkrDiwgYEHRlAoOCly4UMBBBatgwyoKBAA7","img/helm_mex.gif":"R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7","img/helm_nterm.gif":"R0lGODlhFAAUAOZKAMbGxs3NzYyMjM/Pz3BwcMnJycvLy6urq9DQ0NHR0b6+voWFhbu7u7S0tG9vb42Njc7OzsjIyNXV1crKypOTk39/f35+fnJycqGhoa2trXZ2dvr6+nx8fNzc3K6urvf397Kysl9fX5KSkujo6P39/Xp6eoCAgFFRUfX19aOjo8TExNbW1o6OjrGxsbi4uKioqIGBgaenp4KCgtvb24SEhNLS0jAwMFZWVldXV7Ozs4uLi6ampr+/v319faysrKCgoLe3t5mZmaSkpHFxceHh4XNzc/b29sLCwsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEoALAAAAAAUABQAAAfRgEqCg4SFhoeIiYqKEiEEDgSRBCESiR8cDRIJmwkrDRwfiAo0AwBIp6cICwqHRhcMAUgTEagTDEMohikUEAwFCkdIpgADIhiFRBpISTdBDzE1ARAGEQAaM4QwGAgFJzgOPzJFFwIFA0IvhD4PAyoEJjY7DQcHOREDAqyDJBYuExQ8SrRAkCSAAQNAepAoBMDCAAMFuJ0CQKwCAEMbKhxIggpVgAMVNhzqQABCgCRJDBQM4KBDIgosQHjwkCEDiAciFI1YIKBnTx0LRiwaSrSo0UAAOw==","img/helm_nucleotide.gif":"R0lGODlhFAAUAOYAAP7+/p2dnYWFhZ6enq6urqOjo////6SkpIODg4mJiYCAgJycnKmpqYGBgaGhoYuLi5qamqampoKCgsrKyoaGhoqKiszMzPj4+O/v7+bm5pmZmaioqHh4eJKSktXV1aCgoJeXl/b29vr6+re3t9jY2Jubm+Li4o2NjWJiYmxsbH9/f3x8fGtra8nJyXt7e3Z2duTk5Lm5udPT03R0dMDAwPPz84iIiKWlpXl5eYSEhPz8/M7OzmNjY8fHx4yMjHd3d6ysrFRUVI+Pj8/Pz5WVlff394eHh+Pj47CwsPDw8Ozs7P39/Z+fn1tbW////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAUABQAAAeggE6Cg4SFhoeIiYqLjIcCAhQIHYM9SDGICAJGAhU4BE4EEAUfGocNFSkoKwoMMhAHEkIOn4UIDzxBPwIKHQcaLA0bAYYNCRwzLgoFNAMBCTcHBYYUKjk2CC8jTgsOGxEgHoYkJw8SPiWCGREBAS2KTIZKi0ADE42DDA5EAfaNDAcgmiwYEI7RjgLGHnzIcG9IAAIDjtwTZGEBjIkYMw4KBAA7","img/helm_sugar.gif":"R0lGODlhFAAUANUzAIqKinZ2dnd3d3JycmhoaKCgoIeHh21tbYyMjPPz82tra/Dw8LW1tY2NjUpKSn5+fm5ubmNjY09PT7Ozs/Hx8Y+Pj3V1dUdHR/T09Ds7O4KCgl1dXS4uLllZWbS0tHR0dFBQUEZGRnBwcEVFRVNTU3h4eG9vb+/v70hISICAgGdnZ4uLi3FxcXt7e3Nzc4mJiXp6eoiIiIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADMALAAAAAAUABQAAAbGwJlwSCwaj8jjqQBjuZ5QFqywKCZikABsy23BBIdYgjghIF6xGDqdfiEIDGJA8JLZ7/iXQEBkteoyBgBpAHcvLSxEAzAxMjEPKCMhEQZ2hwNEIjB1AC4kGikOLIUxMCZEKpsyAB8gcxIWdS8wCkQKqgAlGQ4cEQiWMAeKjKsuHRUQFw+NpZhDi42zBDErGwp1zX0tjYHcAJUyh4lDc4B4eXNEHgQNa2xtLw1wRFcHAV5cWy0BYRhFCwUQQYkyhUKSgwgTzggCADs=","img/helpbottom.gif":"R0lGODlhAQB2AOYAALS0/66u/7Cw/+Dg/+Xl/83N/62t//r6//39//j4//f3/+/v//v7/8bG/87O//Tz/9TU/9nZ/9vb/9/f/+Li/+bm/6uq/8jH/9XV/7Gx/7e3/769/7e2/8HB/8DB/8DA/+7u/+fn/8rJ/8PD//38//z8/7q6/+3u/7m5//n5/+vr/8rL/+Tj/729/9LT/9zd//Hx//3+//Ly/+no/8XF/8/P/9ra/9jY/+Pj/6ur/9bW/7W1/7y8/7i4///+/7Ky/+zr/7q5/8zL//Py/+nq/7+//7u8/9PT/8LC/9zc/97e/9fX/8fH/8TE/6+v/7Kx/9HR/+jo//7+/6qq/7a2/8nJ/9HQ/+zs//Dx/7Oz//X1/6ys/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAHYAAAdxgFMWOVuFBgYBAU4CAhlPP1kAADtUHBo9KEEmRjwtG0UfHh1II000DUwXVSIrQgUFDjVWUC5HEBg6SzcRNhJJL0oTAwMUOCwEBBUhUTNEKkBXJyALC1gwMkMPWtsKCgkJKQcHDAwlJAgIMVI+XO3u7oEAOw==","img/heptane.gif":"R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7","img/hexane.gif":"R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=","img/hidecols.gif":"R0lGODlhFAAUAPcPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhhAB8IHEiwoMGDCBMqXMiwoUOB/whGXPiv4kSLExVmfLDxoceHAAIYGNCAYACRJA0CYKBAQcmBK1u+JCiAAcuZD2reNChgwc6BPX/SXOAT5wGiDHAKPFqUINOkH6NKnZowIAA7","img/import.gif":"R0lGODlhEAAQAPeRAFV+sPv8//D2/k6bQu/1/vj7//T4/+ry/+zz/lyNwPH3/16Qw/P4//X4/7rzrFaAsmSd0fb6//b5//j8/06ZP+jx/u31/1CbQUuSRYKtime5UW6o5FuLvluLvfn7/6rlm1eDtff7//D1/2uyX+Pu/lCcQIKvjvP3/nnIZfP3/63qn2OazrPS8rLR8On0/2OmV/////r8/2/BWv7//+Dt/4jVd+3z/oHRcN/s//T6/9vp/22/V4jce4y0k2KmV8nc3PX5//H2/47dgG2yYVCdQozafMLd9ejy/n/ObJrO7b3a9FmHubHP8HXGYmObz+fv/q/Q8GCUyO72/1GbQ/P4/nyz5ZXjiKzlnVqIu1GQVmGWyqLcjWW3TliEt/L3/1yDs7HQ8Kfbl8rl94fZeVCbRFqfTebv/orZenOs5fT4/m6p5LfV8afblvv+/+73/6PU74uzk1+SxVieTZPiiGCVyFSTV26o4/f6/7Huo/L3/qHbjGih1JDF6+Hv/+z4/2KZzG+p5F+Sxvn8/+nx/1iFuEyXPcfj9mKYy+vy/vr7/+z0/1eCtOv2/4W76e70/lqJvM/f3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjwAPdAWHGITqAFCTpgIQTiwZdIkSAEmEix4kQAEJ0EeJOET6MqaOxsUAMoAMZIfwKIMWREyRoWYFowgWISopYAeU5QSWOgARADKUR4OBmlAAEBSJEScISggpeTcYwmFRCBAYIjZtycXCBVQBAYGQYoeEJC0ckEUnvWCTMgkYUDOU5ymEAgBiQMV/AMITNlAAUicgY8mnCnhw8HVngIOXMDhQwNWwYsESQBzgsHc8YUqYGkyQ4uegZ0CWFDwg8MH1SMuHCBQqESZQYsioCowoFBWdgMOIBDh4uTD2YwUCDFQhsTAxj1oeHnJIDn0KNHhxgQADs=","img/information.gif":"R0lGODlhMgAyANU/AMfX+pO6/kN4+Dpq8enp6uPs/bHV/3Wo/lOL/FqS/Pr7/LPK+2Oa/Xib5om4/vDx8tfY2UuD+4is95nB/uvx/oam7cbK09Pi/Gih/q7S/6i316rN/6G796DG/7na/7XY/3Sb8TJd6qXK//P1+tHe+6vC+b3S/Nnc47TC4djk/LrC1crf/t7o/Xyw//b4+8PO5Yej4H6i787Q1uDm9JWz9Nfp/3CX6n6e4WeG74Kg4NDW5OHh4r/N9I6s7P///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqNQ1Gj2uI5d0+1MUeLRYrEKuiGm82YjLdAF6oBhtYQLYAaZFGFR5PXxsRgoAMSAcJiQXiouKKSkXABxxfoCBPxQ0hgCKKysen6CfnY4kkj0zCoEzMRKbF54eH6GzohcpABIxOlpbJIaJnh/Cw7K0oCuOHDYva1G+HCTBxNPUxB62JcvNTjOGrx8G1eLV2DY620sFMRzfBu7u1B41FBQ1seAGGfoZyBwNu0wU0JDQ7p1BgzV8KPSxIl+GDRBFSFzBggaMHamUAACxCd/Bgx8oLPRRA+IGiSI6qBSRwheKB0pGrEvh4aNNAwVGrkCpssOE/58TMrAo0eAEryMboznMcHOfBxcKR2ToCbTqBGQgXiJx0YMDzX1gw5oUYeDVVKs/A6gNsKBAiRwYj3QDsCKs3YgpVaJdy1etAwAkbMg4SoRHjAsbJoi4ezKvT6B9IwdwcIDBhAIVNMA0QoNdBwcOFIvAS3VCh9EbMpjoINmBhMoJEhxgwQEGgUpDZC4gMQG079BWRbCg4EKBAh8KRPx20OIAhtjQGZAAUDTjkAcxAHjw3aJ78wPeWwTIkHNhAdcHnDOADh0BggQmLjSAgO7HgwokTDD3nt45hv//MdDBSAswsB577bnn3gIpxCBDfQT0cEEG3fXnH4AYGMiACQspIP8BgrEpKGIEJbBQgQybDUFABRP2h2GAGjKAQXk+sHBggiIiEMGOJWCGYhEr5nchgDEamIADxym0AI457ujkAiw4mKIQ2K1gwotFapjAAh1KkKOCToYZgQkpNPAjEdiZsEJlWRoZGwMsLGTjl2KGicB089XHFQcstJAliAdApeSIdYYpAANuXUSYEChUUMAEMYKYAAIBdHhABDoWuqMAnApAAwUSaECAdUOcAMJ0N4LoHocKsZCAppt2yikALNhgAQFHPABDiR8iKCKiCy0QQQIMiClrpwOAQMECN0Aw5RAuoBADCyaw16QESXpIYgBOHsvpAAMIsAAFMWiww6JCKLD/QwNtefmljlwqRAEDNACAgLffgpssBSaYiSsSI6AAQgorMEAopiQs5EYKDHirr74CkFAACBo4m4QCBMDw6ZKFsipvDMc+DG4IA5QwAgc5yDCqEi7o0ECPJWQaJgMMrsBBw/k+HMLOA3AwAlEW7FBfri/YMG7MhnIaAbIiD7Dz0xy4YIINKlgcEAEqGL1sAvgK0PTTT5c8wtRVr9wExlmXQAEJMSzNtM5g74wDCS4sQDUEZjvhAgEWNEBDAcuC4DXccYeAwwIjUOBP2aQ6gbEMOYBgAj0A0ICD14XjUAEAFIwNQg4W4N34ExhDoEEDMUCZOAk8lMABByXwQELnBSwQZ0MDGsiwwwOjQ+HDAwTIoMENNkhQgsT00FMACQtIAMINGoQutCVDKAA8BBZoAEMDDZRRAfcwaKCCDBDs3nsgClhBwA4QyGDB+++TvwMBD4yAG/VHKODCFQT03/8VxcGfFO4nwAJGIQgAOw==","img/insertafter.gif":"R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARP8MlJq70463uEB8A2LSTDBKJUMoqRPqYiD29j3+/RCQCakguTT7RqvWKz2s320oACgQFN45AAFIUCgUB1eANZQgKxqT4M2zE5NVg2mvBNBAA7","img/insertafterv.gif":"R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARS8MlJq70440EQalrFJV9IBQWRgKaEpmwLKHArAUBgDPbk9JQf8OEoDomX3K4R0A1iSYZC0QBIqRoBQ9rQcrMLriCMzYzDjcMCrVGj3QzocW6JAAA7","img/insertbefore.gif":"R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARM8MlJq704620BCMEwbI4EKEVBEJrjOkFKJAgpGStdc8/Q/D/KQUD08B6LJIMROCoZCsNxqaiOeEDg8TAUfJzPJu8ZnUKtx2zwyG5bIgA7","img/jsdraw-to-draw-helm.png":"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","img/jsdraw.gif":"R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==","img/jsdraw2.jpg":"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","img/key.gif":"R0lGODlhEAAQANU/ANG3hfTZV/LTPNzEk/LWReS0TvjpvNyUMfvxvPjnjO7HKfz1rPbhf82jXfrsrPHOOu/LM8abVdeDK/flgf///s+TQPbhg9Z9Kfbfiv788fz43vvvhdawa/z1zvjplOvMi9ahSvbfaeXQouOrQPXbTPnrntCZQ9+hOcuPPcyRP/frxP787vTYQvDSKOrEb+rFdv34wffkZcKUT/v0xvfmn/rusPzzoPz31fnsofTVOPfihee8Z/fkfu/RkeOwRP///yH5BAEAAD8ALAAAAAAQABAAAAaSwJ9wKOz5fD2isujTaJDLobFTQlB8n+g0gTtSTpxlM8HzGHyj1SFM9CF4vIkHgSHBDkrfjQyfEB4LF0QUPS4TAgEhARAbFxFMPi8OOSQxD4wSj0I+GW8tORYjNgsSDZAOJAoCGBUyF6VDnDUsCiw6FQBRBQgCCiS3uVE+MwQkFijBUTsqDDQpA1FDIiAmFdDRQkEAOw==","img/lasso.gif":"R0lGODlhFAAUAOZMAGdnZ5eXl4uLi3d3d5OTk5iYmM7OzoKCglpaWltbW2pqal5eXoWFhZmZmVVVVbKysoeHh4yMjIODg3p6eoaGhpaWltfX16qqqt3d3ZWVlc3NzX19fcfHx8HBwXZ2dqSkpNbW1u7u7mlpaWxsbE5OTtDQ0ICAgLOzs6Kiont7e2NjY11dXZSUlGVlZYiIiHx8fI+Pj4mJiWJiYpycnLW1taGhoZubm76+vlBQULu7u2hoaFNTU4SEhHJycoqKip6ennV1dXR0dGRkZMrKynNzc9HR0dnZ2Xh4eNXV1evr66ioqDc3N////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeggEyCg4SFhoeIiUxGLAATJAQGioIUBC4DShIHDAcdiQ0RMkMYgkUCKQQahxYKFUmGEBJEhzcrIIgiHpKFMwCJFwgFhjQID4gnI8aGCECICwkhhxUCAoYGEwOJECrCgyUACUiJCkI/MYIBAQwBihQ9Dj4NJkcLOZMwGS8DGwkRFpMHeODQsSRIjUlMAjgoIABAix0fEDLhMAiFDYkYMyIKBAA7","img/matrix.gif":"R0lGODlhFAAUAKIEAL6+vr+/v39/f////////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANCSLrc/jDKSZ24OGer+21BCIgkuVzAoK7sCpxC0M5qAKd0ayuXnLM7Qu8HhPmIg+AQOXjxBICRdBoKjCrYrHbLjSQAADs=","img/mergeplate.gif":"R0lGODlhFAAUAOZrAK7CwJW1soyvrKnAvoqtqqS+vJKyr5u4tpq3ta3NlKrLkdjV1bjJyLnKybmxscbAwEaPJrrLymKdN8S+vpa2s9fT06qfn8rExI66b9rX12alSF6fOom4a2ehM2ujN2GdL/39/nyvVYi1X+Hf34W2ZoCzYYW2arWrq4K1Z4GzWs3IyK6jo1eWL1ubKZC8dMC4uM7IyLivr7CmpZbJkk2SQJKzraHGitbT06HHisS9vajLkMfAwKyhoaabm5bBgLKnp1+hQ3SrT8vFxWehOHeqSFygPJ7FiOTj4zyLEKnKkNDLy1KXInilTR57A3GlPbLGxLetrZfCgjqMHy2CBTeJG2OfMbOqqjuLI9DRy5+6uN3i2ratrZjCgyqCCmilRkSPFrDOlmKjRqPAucfBwcrGxqXIjUqRHJS0saG7uZCwrYmsqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAUABQAAAfXgGuCg4SFhodLLVUeRIeOZkkJYE6Oh19lGAkdlYZINhwKHzMgnGtdUxtGJDohQyKHPzEwPU1APiYlLgopTBaGLxMVW1pUYVEoOEESZA6GKkojOUdYUhpcXiwZC2OGPFZqagFqYldFEGkU4ARqhDcL4GhqaDU0WfLhBuyDMlABCABqGKQpMCCggAEFBBDaIQQcuDQO1UB0SOjBhQMHGhBogKDAEwER0gAAkIbQihPg8k1cl49iIYnxACKIVxCNOENpzhQEQOBATHnxDD1UIyDiRHClkio1FAgAOw==","img/minus.gif":"R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAIjnI+py70BY3yiWhHorVmFzVHAOGLa1iUfmCIr+kiSQ9f2vRQAOw==","img/movedown.gif":"R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVZ4CWOZGlaaGqSllEUhrWOliMIjjxfVoMgDd3MklAoEsKV5bFYPJKiSMrCCAQY04jIUul2IRBvV2ihmCmHw5kCtUjeg8FbAt1O7vg6DcAH6FkEBH8lKDuGJCEAOw==","img/moveup.gif":"R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVY4CWOZGmKlnWaFkGoKwrMAHxaU67bpCX9g8FPwrtYKEjK4ZCk2CyVaBQCkUZhkVSKEQgwtJYI67FYPIolS0KhSKB7DQSi8R5ZHAKBo44yFAoGfEZggjEiIQA7","img/moveview.gif":"R0lGODlhEAAQANUsAB0dHUBAQCcnJzs7Ox4eHgkJCQwMDAoKCiMjIyQkJC4uLgUFBUZGRjg4OCgoKFVVVRgYGCUlJVlZWQsLCzk5OWBgYGNjYwYGBpOTkwEBARoaGgICAggICE1NTZaWlltbW0hISBwcHKGhoR8fHxsbG0xMTJ6eng4ODg8PDz8/PyIiIgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAQABAAAAZsQJZwyMoQj8fTqoBEFiATzaI5NDVYK1YAQyVmuwnJ8MuqjIgBjpdoGAhTq8iDURqsGh3GQ7CisPgkCgkCBCsADggKISsqQg4Qa0MACEQoH2NDFgddWJxCIgGdIB6cCwAGBBueLAcrF6tCZEdBADs=","img/n2s.gif":"R0lGODlhFAAUANU/ACLGG/v8+2nfEhvIHLrlrFXMFur65UzJFLTjrNn0ynXqTmTWFUjSGWjeClXRFl7UFmXaFmLUGym9GSLSHiO1GL7tm3OsdMDwmyS2E0HCEWjcTF/OTEnGEDq+ES65Ej+aQujo6DK/GDnCGEHGGKi/qL/oq0GzPhK/Exy8Gd3p3PDw8L7IvrrotrTqlzvJGI7fYzLAGG3QKojkQPH76ongTsfrstnz1d700ZPhYxe5GNj412vfF1PWGCS4Gf///wAAACH5BAEAAD8ALAAAAAAUABQAAAauwJ9wSCwaj0jkRdZoOpuyy7GyEOyu2KtgUTHGIIswbTajhReQmLHwaD9wPh8uEmkXjAeHI9F6xV8tBnoHRhwFDnEJiXE8BRxGGQcMCgZxcQYKDAcZRh0jI5OWPpmfHUYeIqkuGgYGGi6pIh6nIbUhMBsbMLYhs0UYEhI2onE2wRhGFD0SOsQ+OgA9FEYmOSgAE9naACg5Jkc5JwPj5OMnOUkWH+vs6xZJ8PHy8/BBADs=","img/name2s.gif":"R0lGODlhPAA8ALMJACh5AFesJ16vLnLCOYLOQ6boZ6HwYMTvod74tf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAA8ADwAAAT/MMlJq7046827/2AojmRpnmiqrmxbEUAsz7RMuBks7Hzv84AbzgL4GY2AIVFAQDifB0R0aigUdkklpdg0eL9g8FWQ1Uq4iLD6Oy6buet42zwpBgb4vH4/wNLPR4FAfwlwcWpzf4aHYn6KTIxhiXSLkV6OlAJ3fJx4mG+Cgm5alZGToASWbJ+kkKpVrEqljKetqa+1sq6quUOzh704v3KxKDA1w2ttNUIkOke3vIFBJXYB19jX0ZYF2d5k1ZpPTlMHr14FVerpBOAkRQIDCOnnqu3uI8/y9PWH99Ql9KXpF+dfs4Dw5BFUY1CFwIVfGq4QyK+eRBYU+11soc/cuY0uRh7aw3JwSEdLIJWc9EeSkAR9FcGkpAOTYUuXFGpGvIkzZ0J6M3vCDNozwTMgJYu+gEcmqdKlMZw+fUFA6tSrWLNq3cp1agQAOw==","img/new.gif":"R0lGODlhFAAUAMQAAPb29vX19d/f3/f39/39/fLy8vPz8+rq6vHx8e/v7+Li4svLy/T09MPDw+np6evr6+zs7OPj4+fn58XFxebm5vDw8O3t7cLCwvj4+Pr6+vn5+fv7+8nJyczMzPz8/P///yH5BAEAAB8ALAAAAAAUABQAAAWL4CeOZGme6Bl1XOu2AoF22ObdOHbFJ7cxgSAi4fBIGrwSxzPQDAaGysEDYEwEpqVmOwAUHjgPJ+uxlTEBBORAEZPDG3QhYXErw7c4wFCwk5Z4HhkaAAB+I4B4G1sYhyKJZRsbGRkYjWN3OJKUnI4fkJGSkp6ggZ4LGqY4Gh0mCgsvsRwdCim2t7gfIQA7","img/octane.gif":"R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7","img/open.gif":"R0lGODlhFAAUAOeQABYSDhgTDh4ZFCkiGzUuJUM6LlJIOVtKIVtLImFWRGJfWW9iTkxnk09okXJlUE9pkIBnI1NqjlRrjYFpJXtuV190lGB0lZZyH593G4d5YKl8FY+AZrSCD4+EdXiJoZKHd5OId76ICJSKdZWKepWLec2FEJeMeseMBJmOepiOfYGRpoKRppqQfs2PAJ2RfJyRgNSME4eVqpuUjJ+Ugp+Vg6GVf6OZhqOahqaagaWciKeeiaqfg6igi6uhiaqhjauijq+jhq2ki6ykj66kiuWgJNuiLrCmjLOmiLCnjrGojamqsLeqitGpVrmsi+moKeuqLuysMdSyau6wNPCzN8e6jPK2O/W5P9O+fve7QfW8QbfA07jBz87Cife+RvrBSd7EgODFfcTGzvrETPzFS83Jvs/Ju/zHTv7JUcbN3cfN3P/LVf/NVP/NWNrSoP/OXOzSef/PX//QX9HS2v/RYv/TZf/TaPvUcf/UZ+/XgdjW1v/Wa//Ycf/YdNXa5PHcif/aev/cfv/de/7dgP3egfLhkv/fgf/ghP/ijPPmmv3omP7omPbqoPvrn/bup/nupvfwq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAUABQAAAjjAP8JHEiwoMGDCBMqXFiwjwoPMbYwHGhBi8AVaSoQzCOkY8cyBtFIeEBQSJtHjxwx8kGmYIQGDAj+aJSSUSI7OmzMYGECxEEei1Qq+nOnqFGfBnMgYqSoSZMlR4DswFHDBQoSSAXeIJToC5JBhsIaKhSIjx4mMgjS8HMoCRU+RuOsGYOliAM5BF/gAWNEUJ07c9iY6VIFygQRBVO8CcJlDx03Z7xYkeKkBIIwBUdcGQIIjhoxWaY8IQIDggKDH3pEacH6RAgOGjBcOKDEYIcNGSgsSGCgAIEBAgAEmEi8uPGDAQEAOw==","img/paste.gif":"R0lGODlhFAAWANU/AO64JOenBdrGbXSGnv39/pKHdoSWrWlaSJmovenXiIt+Z1pthXNkS5t2IPjwqambdkhVZurTd5uKXNiaAKykj/C2EvXsoc2UCrvG1/PLTPXXafbihlNGO6SciPbpnKq4zvLjknprUe/x99Pc6NShE+Hm72d5kc2PAJ6uw8bQ4E1gerK/1PCzDnhhNM/GjEQ5MLKaT0JIUJyRgOmvFT49P39zWOrIaOrRbe/opfLBMMOzhr2tgujDX5OitzgvJv///yH5BAEAAD8ALAAAAAAUABYAAAavwJ9wSCwaj8ikcslsOoW63aNJqUpwngSjwEVSHOCHRSEItXiAw/HrkLhAEQHs0DipjWxFLRRiMOgnHEcdDh4bNySJFxcnJy+DhhoZLD0GBgMDJgtHMiCSOTMGBKMiJQsqRjIJGTkVAaIoKAgjKhgQRQURAK4TAwSlIykQEDE0RAU2rgG9IrEIPSs9PT5ECgCNjSYlwRgrHx/TRQp/Lz4LI9Lp0tRJCz7v8PBP8/ROQQA7","img/pastechemdraw.gif":"R0lGODlhFAAUAPcAAPj18P////7+/tGmYJCNgsedWt6xZ+SqYaTTupGOg46Nh2GNRo2MhF+MSiaWbF+MRCiTW+zx7UebcPn8+fv9+x2HSSaXWqejmOCxZiuKRsGib4+PiMqgW9SmYX+1oPn28SaTWcqsdCuMVNrr6HSxkiGLUtvp4yCQYvv7/NGZUdvBocHg1ZCPiXyZVeavY87Lw9bDpeCsY7TTzNuwYK7TyJSTjFmmji6VVjCTaN/Uw82gVw6DVVWqg5HEokypc+z18o2/rlytfPP38qLIvfX19vr49MmeWpSHb73e3MSXTuXXwcLe0dfX18moa0uhbo6+oMWeYDeWcCaTU9qtY6OgWrnUxeny7mSRTp7AsZ7NsoOfXcyladuuZ7y6sXSyi3a2lSyUW3Gxh8yhW2GPS9GmYdutZvC0aeGoX+7w8zaISdWoYdClXtqhWdnBm/T49428nSGCRsHgzt2vZ6DOuieUZleoiECgeKusqDOaZ1aEOsfHw8KYVee3bsC+tbyebiybdOG0ariSVUiedf38+4O4mDKVZP79/m6qks+pdMWibJrHu7q5sdOmX+WyZmaqfs2rc92kXcTBuhqLVsvKx52dluHr4Hiyk2+bbfX68pF/YXy1m/Ty8M/d2MrHv86hWyqTXf79/CaTZPPDeBeCRGqviFiid+r18N2pYtiqY6/VxzeUYR+QT9+wZuCwaF6lfKrRxPS9dYaFff78/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAALMALAAAAAAUABQAAAjoAGcJHEiwoMGDCBMKvKOgxgYmCgmiYfGiUyQ9EWe1SXSEUp8uiy5o2KIkISMumRgQIJAglh9RjxJ64iOHzIABHU61goUooRhArDA0MjOjRRotIRJyMDDFRZMrcHgoilJhCUIjZWJQGQVBhixLpYDsCHKwAKoDD+wICRCgEikbTySVVXNmzB88P+KMWNEjlZSDe9ZAWmDh0xtHdUpIsHLiIBQdbBo4EEHiUBgchCKsOhgoSYo8PhBgMhXAhAcsdA7mgKHiUqgqbgLQcOXlCwiFhl5lUMVpiCZBTpBknJCl0A0wczIqX24wIAA7","img/pen.gif":"R0lGODlhEAAQANU/APz0s+a0XdmPO/XcYOS6L/rujvjtw/TWRLR2LPfbvZNtHrmJJvTPpfnjzL+QJ8mRT/LhyOiYQN6xXfXZaNCdWc2WWPz269moUNipSfLr4/njy8OZMVhAE6pgFtzEbfjhxfjiqPLmvvjjy15CFd2ubNWqcsJnFdScXdilatCwesqVQs+cSv79+MipZ8eDNFlCEuyqYd2rc7V9NMGLSPTUp/rn0ZxpJeHLsOzPqcqUUciQTvfhyfPPb/XPpsmRUP///yH5BAEAAD8ALAAAAAAQABAAAAZowJ9wSCwaiyxJToexHIcX1E6kKj1/BNqn0Uj4ngQDiMRgJCrHMGDCo8QeaQNgcCgEBPF5/X50yOl2eEYLIXqBRhkLNy2AfEYKEDUyGx4rLk8KGjARJh0IVy8nPTgzn1ccIzYIKVetR0EAOw==","img/pentane.gif":"R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==","img/pin.png":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAM+SURBVHjaYhRpFGQAAkYgZgLiv2hsEGCGs///F2RgZC799+e/OZBzh5GJYTkjI8MBsA6Inn8AAcQENYAdxEFiwwA7VAys4f9/xrq/v/9VAg1zAvLT/v9j2PvvL8NChv8M/P///QfrBwggJqjJP5EM+wN1EQfUEhCf9d+ff8xAl+kxMjIgA5DeuL+//y8CWiQEkgMIIGSvgQz7DTWAA0qD+OxAhf/+/Pj7++/Pfx8Z0EwEhxcTox8TM/MkoGv/AwQQspd/w1wG1PMXaiA7OOT+M/xl42a1ZuFisQXyGLABoHDUv7//bQECiAXq7F8g7wENYgcK/vjz+x8DKwczSNFPkIOAoWMJtH0lkCXCgAMA1TECXeoPEEAsSF5mA2r8CdRo9/8vg9PfPwzAYP5/mJmF6RvQkg1AeTEGAgDoAAGAAGKBh99/hl///jGkMjIyTmNmZ2EByQLZ/4GGfQfKcxFhGAMzM+NegABigaaz30ABLqALa4BOZ0EKJ0a8hjEynACqPwjUx8XEzHgEaOwagACCexkoIQDEBL2FZNhJJiaGQCD9AhzxjGBHMAIEEBNUGmTwFyD/EZHGPWZiZkgDGQY1nANqxn+AAGKCehkkCExj/9cSYdh/YJarAdKXoEECS7MgzAwQQExIuQFo8P8ZwJjF70pgTAFzhS4w54CCiR3JMJDBjAABBDIQ5HlWoEEsIMOAChuAKn/ijU4GRm+g2/iBzF9IhoEzA0AAgb0MSpRAW3/+/fEvloWDNQaoqQeac7ACJhYmCSYmJkao72CGgdQzAQQQ2Msgm1jYmcVZuFjb///7BypJbIG4HIhfYnXk3//X/v37/xmUGZAMA7GZAAII5mUGYA4pArpMGsh8Bwz0rcBY7AemLQcgeynQwo9QdaB8/eDX55+V0DLiP6wAgUbQH4AAYgQVsMCE6Qc0cA3QkLlAhZOAUtdh5SAotwCDQw5osBawPATl7ctAc94C8y0LkssYoOUBI0AAgQSlgQrTGZn+pwI1LUTKISBbfwGd9J+ZlfEJ0GWPwGmXEVSYoBjGCC1PwdkYIIBYGJmY+ViYGPL+/ft7F63g/An1EjM8JzJC0yw0ApCSHCMU/wYIMABZEDb0wwr8vQAAAABJRU5ErkJggg==","img/pivot.gif":"R0lGODlhFAAUAOZMAAIHC/v9/gQME/r8/aLH6QMIDAQLEevz+u30+uDs9+71+6jK697r9/b6/ZrC5/D2+7fT7jWF0AUPGLzW77LQ7QgWIzeG0C9/yi59x8La8ejx+QYQGdbm9bTR7arL6y5+yQkaKsvf8gsfMubw+QQNFS17xLrV75W/5pfA5r/Y8J3E6KXJ6s/i9AMKENno9gcUIFub2J/F6PP4/D2K0jyJ0a/O7KTI6Spzt4+75ICy4QcTHuPu+AcVIs7h8zSEz5O+5kGM0tzq9/X5/Nvp9jKDzwseMChsrSx3vUqS1QYRG7HP7Ia24////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAfqgEyCg4SFhoeIhgAABouLEhuOL4sphAANAQMyAQEHPZwHAQwbDoQVChEWHzglREgXRkARAQAQlgFHMToKJSY5BEonALQLhAUBNzyXF44gi7QhtwQKoQqcDwxFDLQrhAY7GD4zHAEJDRoCzwAZtxYEwyOc6S2OHoQCCTTCnJhBASQDRkgoNmhYhHecAGyjNQAaoSQPMCwxwEJAgYbDAiAA8MPSEBgoADhzhKATrQm3PgCQwKHAMQ0ly5GwVzCBC04lMwoJ8GBALUsiGDlyVAFAOhGlBkFQYcIBhQkdKCzIYKPG0wUdEmndyjUQADs=","img/plate-blue.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGOSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspihkZGSyAlAMQmwGxFhDLQqUeA/E1ID4FxAeAyeoEsWYCBBADKBESwgwM/22BeAYQvwfi/wTwe6haW2LMBgggYizPAuIbRFiMjkF6sgiZDxBAhCyvBOIfZFgOwyC9lfjsAAggQj6nxHJkR+AMCYAAwhfnN6hgOXJ0YE0TAAGEKxtGA7E6FXObOtRMDAAQQNh8b0FkaicVg8y0QLcPIICwhQAonwvQoMwRgJqNAgACCJsDzGhY8GGYDRBA2BygRUMHYJgNEECM6NUxsLj9CqS4aOSAb0DruJEFAAJowCsjgADC5oDHNLQPw2yAAMLmgGs0dACG2QABhM0Bp2joAAyzAQIImwMOAPEHGlj+AWo2CgAIIFx1wQwalIQzsNkFEEC4csFSIL5JRd/fhJqJAQACaMCrY4AAGvAGCUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQAYzGv2DHTRPwAAAABJRU5ErkJggg==","img/plate-corner.gif":"R0lGODlhIAAgAJECAPf39////////wAAACH5BAEAAAIALAAAAAAgACAAAAI0jH8gy+0vEFKwQmmo3QxrzkkfuE3kmZxoMKoW655tTNf2jef6zvf+DwwKh8Si8YhMKpeNAgA7","img/plate-cyan.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG1SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJil8/tgBSDkBsBsRaQCwLlXoMxNeA+BQQH/gjKnuCWDMBAoiRmEQItNgWSEUDcTgQCxBQ/gGIVwLxUqBDDhMyGyCACDoAaHkWkMoDYnUSQ/cmEE8COmIaPkUAAYTXAUDLK4FUPRCzkxnFP4G4EeiIdlwKAAIIpwOgPu+jwHJkRxThCgmAAGLCE+d5VLCcAWpGHtRMDAAQQLiyYTQZcY4PqEPNxAAAAcSEI6uF0yDLh0PNRgEAAYQtBByIyGrkAAGo2SgAIICwOcCMhgUfhtkAAYTNAVo0dACG2QABhM0BsjR0AIbZAAE04JURQABhc8BjGtqHYTZAAGFzwDUaOgDDbIAAwuaAUzR0AIbZAAGEzQEHoFUqtcEHqNkoACCAMBwAbUyspIEDVmJrqAAEEK5csBRan1ML3ISaiQEAAgirA6AtmUnQqpRS8BPaMMHaOgIIIJzlALT+bqTQEbAGCc5WEUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQC9g3ubkd/tZAAAAABJRU5ErkJggg==","img/plate-dose.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAUlEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAwuoAUJwDNc0GyqkjG66rq8ugqKiIN+j37dvH8OXLF3RH3QTiVGxpAiCAcGXDaOQ4J6W0dHJyYuDm5kYXVgc6JhqbeoAAwggBaFbbDhQXQA9W5BAAqkPxpZKSEoOOjg6yOehp5AOQ7YmeRQECCFsIgPK5ALE+hyW8e/fuMZw4gTAb5CA0dSAzHdD1AwQQE5bsYwbL30RmN7gjXr9+DRdHDg1ks9HFAAIIWwhooRc0IBrdUeh8QqEFdagWujhAADFhCVJZdENBNLoFyHLIJeLXr1+xOhSqXhbdPoAAYsEXryT4DK4eSw7AGWogABBA2KLgMbqvKYkCmOOgDn2MLg8QQNgccA1b8GGLAnTfi4qKwuWvXLmCEkJQ/dfQLQMIIGwOOIVsMTbfY/M1Dw8Pg4WFBZx///59bCFzCt0MgABiwRJPB6BVqgCyD9EdASxQcMY1zPdolRPIzAPoagECCCMEgJUGqDRZiaN2IwhOnjwJLpTQKyqQmdgaKgABhCsXLAWVWkCN6sjZDeQzHL5jIFBj3gSyl2KzCyCAsFZGoFoLqGESqD5HzgXIjsGVHrCkF5AZk4Ahi7V1BBBAOBul0Pq7EWjgT2y5AFfUIOcKqOWN+FpFAAFEVJMMaCC4SYYvTWARB7UBCDbJAAKIpEYp0BJ4oxRPa+gDkL8SlI6IaZQCBBAjKSkcW7McVsIBaXCzHJSNoTmJKAAQQIwD3TcECKAB7xkBBNCAOwAggAbcAQABBgAxUabNLd/orgAAAABJRU5ErkJggg==","img/plate-gray.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALusCHDx9wKl65cqUFkHIAYjNGRkYtIC0LlXoMTEvXgGKngPSB8PDwE7jMEBAQQOEDBBAjeiLE5oBVq1bZAtVFA5nhQEsEQHqANFgOCxtkwEogeynQIYcJOQAggAg6AOjrLCCVB8TqyBaBNQP5yPphfKi6m0D2JKAjpuFzAEAA4U0DQMsrgVQfyHJcamCOQnYYlA3S0wcMvUp8dgAEEBMey0E+rwdidmSfIwc5chTAMFq0sIPMADoiC5c9AAHEhMNyW1CwAw2BW45Mw3wKswiZjx4aQJodiPOgZmIAgABiwhGs0UCsjuxrbMGMy3LkEIKGDCj9RGOzCyCAmLCkeAugYeHoKRzJMKxpABeN5LBwaDZGAQABhOEAoAZQPhfA5iNsoYEcDTAaR/0iAC1DUABAADFhCX4zZN8iG4geAtjKAmzZE8kMM3T7AAKIBUsIaCEbgOwIXJZgcwgOx2mh2wcQQNgSoSy6b7HFO3owo5eIOIAsugBAALHgUonNEHQfYot/5KjDZxYMAAQQtjTwGNkgfABXGYGegJHMeYxuBkAAYYuCa9iCGN0CHIUOodC8hi4HEEDYsuEpYsp6bCUfEWnlFLp9AAGELQoOgCpFAnkaI5XjKoiQ2B+gZqMAgADCcEBYWNgJaH2OM9+jW4wtWrAUzyuhZqMAgADCVRsuBWq4iS2ukWs+bAkOPT0gtQ2WYrMIIICwOgDo0sOgxgRQ809cNSG6OC42UD3IjEnYWkcgABBAONsD0JZMI8wR+BIhHvGfQP2NQA9Nw2UPQADhbREBNbYDDSkCBSG+UhFbOgBFIZAqApmBzw6AACKqUQpqTIDqc1A1DWqUEih6Qamd6EYpQAAR5QDkZjnQcAegHoxmOaiQAZUhoKyGLbXjcgBAADEOdN8QIIAGvGcEEEAD7gCAABpwBwAEGABryNdQb2XmUAAAAABJRU5ErkJggg==","img/plate-green.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGISURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRJIDGBkYLYCUAxCbAbEWEMtCpR4D8TUgPgXEB/4z/D9BrJkAAcQAcgAhzPCfwRaIZwDxeyAmBN9D1doSYzZAABFjeRYQ3yDCYnQI0pNFyHyAACJkeSUQ/yDDchgE6a3EZwdAABHyOSWWIzsCZ0gABBC+OL9BBcuRowNrmgAIICYcaTMaiNWpmNvUoWZiAIAAwuZ7CyJTO6kQZKYFun0AAYQtBED5XIAGZY4A1GwUABBA2BxgRsOCD8NsgADC5gAtGjoAw2yAAMIoioHF7VcgxUUjB3wDxjw3sgBAADExDDAACCBsDnhMQ/swzAYIIGwOuEZDB2CYDRBA2BxwioYOwDAbIICwOeAAEH+ggeUfoGajAIAAwlUXzKBBSTgDm10AAYQrFywF4ptU9P1NqJkYACCABrw6BgigAW+QAATQgDfJAAJowBulAAE04M1ygAAa8I4JQAANuAMAAmjAHQAQQAPuAIAAAwAf94DY7f2a1gAAAABJRU5ErkJggg==","img/plate-negative.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACrklEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAYsIT53kgy7EELTzu0dMCOhsK2IHm5EHNxAAAAYQrG0Yjxzl6MGOLDlziUKAO1BuNTQIggJhwZLVwWHxiswRbVMBCBlsIQUE4yGx0QYAAwhYCoHwugO5zZEPxOQ5XmoKa6YAuDhBATFh8ZIbNcGTHIDsC2TGEsjTIbHQxgADCVhJqIQcvMPVSVNQCgx05qrTQ5QECiAlLUMnii3NSAVroyKLLAwQQC474wpWQqOIYZAAQQNgS4WP0eKcEIOcQIPsxujxAAGELgWuwMgCkCTkO0XMGrlBDzz1IHrmGbhlAAGELgVPoKR1mCHKIwPjYCik8NeUpdMsAAghbNjwArVIxKhv0IhfZEiwVEXpaApl5AN0+gADCcAAw24EaEytx1G7YghVFDJvPoWIrsTVUAAKICUfCWQrEN/GV/biKaGw1JNSspdj0AgQQVgeAWjJADZNA9Tk2X2NzDK7ECTVjEjBksbaOAAIIZ6MUWn83Ag38iS1LYqv/scQ7yPJGfK0igAAiqkkGNBDcJMOWJvA46CbI54SaZAABRFKjFFRNwxqleFpDH4D8laB0REyjFCCAGEkp7bA1y2ElHJAGN8tB2Riak4gCAAHEONB9Q4AAGvCeEUAADbgDAAJowB0AEGAAmnOLVjL3SAQAAAAASUVORK5CYII=","img/plate-positive.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACr0lEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFgdQzN2B8DkbgLFJwEdMQ2f+QABhNcBQMsrgVQ90DB2XBZhcxSSup9AfqOvr287LvUAAYTTAZs3bwb5vA8oz45mKBgAfYauHkMNVB/IEUVAR2ANCYAAYsIT53kgy7H5EBb0uEIADbADzcmDmokBAAIIVzaMRo5zmM+whQS6Ghzy6kC90dgkAAKICUdWCwcZhO4bfGkAFjJ4QigcZDa6IEAAYQsBUD4XQPc5sqHYHEIgBBigZjqgiwMEEBMWn5hh8zmyY3ABQrkEZDa6GEAAYSsJtZCDFZh6iSrR0HMFUpQipx8tdHmAAGLC4gtZYn1EVFGLWljJossDBBALrqDEF9SUOgYZAAQQtkT4GD3eKQEwz0Cj4DG6PEAAYQuBa7AyAKQJOQ6RowU9zkHq0NUgWYxsNgoACCBsIXAK2SBkQwiVA8jyOCqqU+j6AAIIWzY8AK1SUQwlVATDHItsIVpaApl5AF0fQABhOACY7UCNiZUww7D5DJtDkNWj+xwqthJbQwUggJhw+GYpEN9EtpzYBIluMTTqQGYtxaYeIICYcBQqh4EaJoHqc2yJCV9RjCV0QGZMAoYs1tYRQADhbZAA63hwgwS5WsYVNTii4yeQbgR6CGeDBCCAiGqSAQ0CN8nwWYxF/CbI54SaZAABRFKjFFRNwxql2OIaltqB/JWgdERMoxQggBhJKe2wNcthJRyQBjfLQdkYmpOIAgABxDjQfUOAABrwnhFAAA24AwACaMAdABBgAGNZcVQdIRYPAAAAAElFTkSuQmCC","img/plate-purple.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspis+yvLYAUg5AbAbEWkAsC5V6DMTXgPgUEB8w/iN6glgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAJaJ7x/zc0NMAAAAASUVORK5CYII=","img/plate-red.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJqhkZLYCkAxCbAbEWEMtCZR4D8TUgPgXEBxj+/z9BrJEAAcQASoQEMQODLRDPAOL3QPyfAH4PVWtLjNkAAUSM5VlAfIMIi9HxDbBeAuYDBBAhyyuB+AcZlsPwD7AZeOwACCBCPqfEcmRH4AwJgADCF+c3qGA5cnRgTRMAAYQrG0YDsToVc5s61EwMABBA2HxvQWRqJxW/B5uNZh9AAGELAVA+F6BBmSMANRsFAAQQNgeY0bDgwzAbIICwOUCLhg7AMBsggBgxqmNGxq9AkotGDvgGjHhuZAGAABrwyggggLA54DEN7cMwGyCAsDngGg0dgGE2QABhc8ApGjoAw2yAAMLmgANA/IEGln+Amo0CAAIIV10wgwYl4QxsdgEEEK5csBSIb1LR9zehZmIAgAAa8OoYIIAGvEECEEAD3iQDCKABb5QCBBAjSV0zGjTLAQKIcaD7hgABNOCVEUAADbgDAAJowB0AEGAAqUNr9qmufBQAAAAASUVORK5CYII=","img/plate-white.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF8SURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRKoDLIDYAYjNgFgLiGWh4o+B+BoQnwLiA0B8glgDAQKIAeQAIrAtEM8A4vf/CYP3ULW2xJgNEEDEWJ4FxDf+kw5uQPXiNR8ggAhZXgnEP/6TD35AzcBpB0AAEfI5JZYjOwJnSAAEEL44v/GfeuAGrjQBEEBMONJmNBCrUzG3qUPNxAAAAYTN9xZEpnZSwXuo2Sj2AQQQthAA5XMBGpQ5AlCzUQBAAGFzgBkNCz4MswECCJsDtGjoAAyzAQIIW1H8FYi5aOSAb0DMjSwAEEBMDAMMAAIImwMe09A+DLMBAgibA67R0AEYZgMEEDYHnKKhAzDMBgggbA4A1ecfaGD5B6jZKAAggLA5ANSYWEkDB6zE1lABCCBcuWApEN+kouU3oWZiAIAAGvDqGCCABrxBAhBAA94kAwigAW+UAgTQgDfLAQJowDsmAAE04A4ACKABdwBAAA24AwACDAAdjZ93cHiPmgAAAABJRU5ErkJggg==","img/plate-yellow.png":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspil+8ZrEAUg5AbAbEWkAsC5V6DMTXgPgUEB+QEP1zglgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAFmR7kVGTu44AAAAASUVORK5CYII=","img/platesection.gif":"R0lGODlhFAAUAOZqAOPj4+bm5uLi4tLPz+Df3+Xk5M/MzN/e3szIyNjW1s7Ly7+5ucrGxuHh4eXl5XSh/+Tk5Ofn59PQ0M7Kyry1tcXAwNTS0ru0tODg4MjExNDNzcnFxdbU1FaM/9HOztfV1dDOzry2ttva2t/d3cbBwYyx/3un/6rN/6bF/5a//+bm5eXl5uTj5Hij/1CO/32p/9rX11OJ/8K8vJS3/5i5/9zb21yO/7qzs9nX13mm/8bCwsfDw3Gh/4ut/93d3b64uMjFxY24/6S5/2yb/8fCwqTE/723t+Hg4MG8u5G6/9nY2Nvb2763t97d3cC6uufm5pW0/7mzs3el/6i8/42u/9LOzs3Kys3JycvHx8zJycG7u8vGxubm5+Tj46DB/3ej/4mr/9bT002E/3Ge/5K4/8O+vpC0/3Wh/9TR0cS/v////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGoALAAAAAAUABQAAAfVgGqCg4SFhoeIiYqLjIUCLCsAAV0QDpIABQUAEYQFMiRVIRZaGwpMFgsIWD8YhAEMWRwVCUAGaCQJRAMgOg2uHhI1CD4GYUpXTRMJHwoAhE8LZQpRHh1DOWJgLg88FweuHB8EIA1kXic9SyVTQhIOhCpIFRoUAzZjLzFUHS1nRgSEHEzQACODCBNBaDxAIWVGki0CCHGxYgCHQRMlUjwo8gWKGQYRBwVwksbAjQELdiC4MCAEgw0UAA6KgOEIhBEFCDQAMALCAQECDnBqRLSo0aNIEQUCADs=","img/plus.gif":"R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==","img/plus0.gif":"R0lGODlhEAAQAJEDAL29vX9/f////////yH5BAEAAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==","img/preview.gif":"R0lGODlhEAAQANU3AAAAAPr6+hYWFi4uLvLy8vPz8wEBAWNjYxkZGWBgYMHBwaCgoPv7+0NDQwkJCTk5OSMjIxgYGOTk5Dg4ONfX16mpqQQEBLm5uRMTE9/f3/j4+AgICHh4eMrKymFhYTExMTIyMvT09G5ubmJiYltbW/z8/P39/XBwcNnZ2Tc3Nzs7O7W1tcnJyfX19XJycnFxcVpaWi0tLbS0tDU1NRUVFdvb2zQ0NP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ9wJtwSCwaj8jksVA5zGyHSuEo+wAAEMgVtCKWRFfBhcG4CAAGl+nWgl0NC+LCcCWFRlcAhhBoNAIEGHkeKXkRARoICBoBEXkTKDFXFgo3FBQ3ChZXAzU3GSpXExJCEg9XDxlDBRwbADQJCWcbHARGLCcDDg4DLx1KwMHCRkEAOw==","img/prop.gif":"R0lGODlhFAAUAPc/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAD8ALAAAAAAUABQAAAjMAH8IHEiwoMGDCBMqVOgDRwoMKTJkGDDggY0cARDqkCGggMcDFEQ8GLACYYiOLAqA9BABAYuMAzXIbLBhxoQCJCiwRGBiAgqCGlQAqCmARoICLyRYsCBgwc+YLjbEEOBAQAsDHRhoTbAAAkEFPkI8COEDhgAJDBI4EDiixFcfPHj48AHgg4AGFXYgBBuXLgEOFy7k3eujR4/Chg2D0HuQLw8ABEBUuMCBA2ODYA0TSKz5ckEMcHkQGH2jhmnPBE8YWM26NeqFsGPLXhgQADs=","img/propane.gif":"R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7","img/props.gif":"R0lGODlhEAAQANU/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///////yH5BAEAAD8ALAAAAAAQABAAAAaewJ9wSCwSfbgUJpXJDAYPWy5A1MkEheyBInoMVsQQllXYeiIIVkDDbmxmkwKJckaYJiiNCvAW0BIFLxIWFgILeS4bMQIOAi0GHQySCQsQCj4hDyE+MAISDAkOQiMllzw8Pj4AHwINFTtEpqgABBwXF6+xPj09u7y8ILBDsrQgFRccHMJCl7wEv87LPxg+pwTXNzXa0icG3t/g0kbjQ0EAOw==","img/protein.gif":"R0lGODlhFAAUAOZJALW1tb6+vqKiorKyspmZmYaGhqqqqp6enq2traampqysrJKSkpaWloGBgampqZCQkMbGxrq6upubm4ODg46OjpGRkf7+/omJiaGhoaSkpIeHh319fXd3d6Wlpfb29o2NjaCgoPf394SEhH5+foWFhXh4eLGxsW9vb7y8vJSUlH9/f7CwsHp6ep2dnejo6IuLi4yMjMnJyZeXl3Z2dnl5ee3t7Xx8fM3NzXBwcOrq6m5ubuHh4fn5+d3d3cvLy7m5ucjIyJqamre3t6+vr8HBwfDw8OTk5J+fn/j4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAf+gEmCg4SFhoeIiUk9KxUNEwwAO4oeJhw4HBsjGywiPx6HHi0nJSoTBRoXFwUNDiGFFkMnLA0FLxQPCwsPHwUoFoQuMyUNGjALDAQSEgQMDxU1hAA6KgUwKUEHAhkZAgcEHxCEFBwTLwsEIAkGCgoGCSAMDoQiNiQUDAcJCAMAAAMIEmgjRGKEhgcEBBgYECFAgAgDDGDoQCjFhgsLJGRAACAABAgBACDAsIJQBBoYNXL0CBKAggM3COU4VSHhwoYPBzjoUISQBSENPuTb1++fAgFAgBEK4aAAQnXsFDgQgILHoRABKlCQ0QIDhiMdfCBRZISIAW0mYrhQxLat20AAOw==","img/pubchem.gif":"R0lGODlhFAAUAKUuAGOHs2SLs2qLumuPum2VunOVunSZunSZwXuZwXycunydwX2gwYOgwYSjwYunwYunyIuryJGryJKuyJKvz5uyz5y1z6K2z6K5z6O80Km80K/A1rDD1rDD3bfH3b7K3b7O3cXS5MXV5MvV5MvY5NLb5NLc69Pf69jf69ni6+Dp8uXp8ubs8uzv8uzv+P///////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAUABQAAAaqwJ9wSCwaj8gkcWNRGj+KgsHAcf5AC4JG+DkMNsiQ4ov6YC6gFchQ2BIvgMtv1Kh4PJTG6PcRPIgFciMIKEQlFEIjAUQJYA0lSSUDjBssEkojk0MKGysTSiSaQgpbDSqRoj+kPx0NRS0XKz8nAEQSASE/Gw0dKCcdDFsoWUUXAw0kJBkRERkoKREDELJFKxYDDiJCKBUBESdK1tIUAxEmVkIsEQaF6O7vRUEAOw==","img/question.gif":"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","img/reaxys.gif":"R0lGODlhEAAQANU3AMZoaLAsLMdpac15ecVlZbc+Pst0dL5QUMZmZtSNja4mJv///7IwMMx3d60kJMRhYcx2duCurr5RUc58fLEuLrMyMrpFRbY7O8pycvv19dWPj7tJSbtISMlubtqdnc17e816eq8nJ7U4OOGwsMNeXrY8PNyiotqenrlERLhAQLpGRrQ1NcltbdGFha8oKMBXV89/f75SUt+np9CBgc+AgMVkZK4kJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ6wJtwSCwKAxxEysZsggoxjZAZsgxoAgTp0HKoFMLPwCAAAAwyCCCxBkybcMXLtKnYhC64vtaoHYQlenACKExCHYJNE01CI4lMMIw3CyKJEgSSNxGJDzWZNxh6BQGehkMLLHCYpXdFJww2FBc2rEY3GR4zK7RMAba/QkEAOw==","img/rectangle.gif":"R0lGODlhEAAQAMQAAP39/vD094KhvliCqFeBp2KJrVuEqmCIrNzl7eju8/b4+vH1+FeCqIOiv/n7/NLe6IimwG+Uterv9ICgvIelwH+fvHOWtvj6+8DQ3+vw9HSYt9rj7Iypw5eyyf///wAAACH5BAEAAB4ALAAAAAAQABAAAAUxoCeOZGmeaGpGAzO8L3GUlgqRhtqRhFqRA5UAKOSpGqSCilPSCJ5QwYSCUVmv2KwpBAA7","img/redo.gif":"R0lGODlhFAAUAMZGACBIkDBQkDBQoDBYoDBYsDlbmkZbmTBgsDtgoztos0BosEBowDBw4FJvpEBw0Ep3wkB44Gp5qVV+tkp+4Fh90F5+w1CA8F+CvVCI8FmG71iM7WmJ3GCQ8GOT7miV73CY8HCg8HGi7nek74ak75qtzI2w76Oz0KK10pC48Jq37Ju47KG7662606q71aS777W8x6m+76q+77jA0KnF7rPC77TE4L3F1K7H7bfF7rTL7r/O6dHQyMfR68/S1MjU6c3U7c3X7Nrc3N7c2dre4+Hm6Ovq6////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeCgH+Cg4SFhoeIiYqLPzkxQEWLgzQwJZYjPJI4LhMJCg8eIj5/RA6IMxgDEhcJBxwhOjcLiCoTBUF/JAgCHSAfB4gpEw2DNhEgHBYDiCsZBoNDKB8WDAGINRgEQoIOCwcDAQCJHBAvkoUnGBXnhRQYJj3sgjsbGjLygywt+Pz9/v+BAAA7","img/refresh.gif":"R0lGODlhEAAQAKU9ACNiICRjICVkISdmIylpJSpqJStrJi5vKS9xKjN1LTZ6MTh7MjuANT6DOEePQEqSQkuUQ0yVRU6XRlCaSFiXUVqZU16dVmOhW1mmUGWkXVypUminYF+tVmqpYmGvV2SzWme3XXSza2i4XXS0bGu8YHi3b2y9YW2+Ym/AY3DCZXHDZX6+dXLEZoLCeYPDeozIgY3Igo7JhJHKh5TLipfNjZfPjpzSlKfVn6rWoq3Ypa/ZqLHZqrLaq////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAQABAAAAZcwJ9wSCwah6ejUvRRClkoEqi1wihVNp4uh7uNJMZUbefyaEqhyNHE5AgnEGfxIR+C68KIQ7hIHApHEB0ZDAoUMBcCRg8bNDMyMS8bAUoNFhUIBgMAcn54QwSfeEEAOw==","img/reset.gif":"R0lGODlhEAAQAOZrAJvPk4zIhafWnoLCfFuQVzp+NIfFgZjOkFSfS4TAfWiqYKvYoaXKoarYoFSWTlqeVVaOUlWgTKjEpl6rVHm4cZ3RlKnPpFypU368danXoJ7RlvD572qtY4TBfLLVrW+vZ4jFgoXHe7LQr4HAd2a1W5DJiWCuVoXDfkaNP5fMjnq2c0aNQOrw6Xi6cKbVnWGjWn7Bd4/JiGapX4LCe6TUm1OdSnu9coLGeHSubaLUmTd7MTZ5MFudVVWNUMLkvaDRl16hV4fEf4XEfo/Jh3y/dWa2XKrSpofIfLzduJvQkovHhYnGgmmrYYvGg3S1bYzKgmCbWne3cYrHg6bVnIHFd2m5XlKVTUiQQGqrY6nFp06YRmyuY1CaSKLHn4m3g1OdS5nOkD6EOKHTlmOyWYzMgovMgjt/NcLlvu717VOeSz6DN////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAQABAAAAeSgGuCg4SFhoeIa2c3VSQ2SIgbZEdiDQJgLSpohmVPCzlTNEkaFDiFPiEZAj8jGCkAB0wihFQVLgATRhZfJQEJUIRFYyYXHoIMHzEBYYgRgl1YUiAFhwhca14rHTBRPYZpWwpXLwZCAw5ZhTUcQ0pLQUQzPASGWjJNBicDTlYELIcogDwwowOChERr1FBDSGhHokAAOw==","img/ring3.gif":"R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7","img/ring4.gif":"R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==","img/ring5.gif":"R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==","img/ring6.gif":"R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=","img/ring7.gif":"R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7","img/ring8.gif":"R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7","img/rna.gif":"R0lGODlhFAAUAPcPAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhXAB8IHEiwoMGDCBMqXMiw4YMEDg0WYBCRIIIDACoKPECgYYIEDAIMcLAg4QICIx2odCCg5MGLKxUoMLAgY8IADhggqMhAgEaBDDr+BFAA4s+jSJMqVRgQADs=","img/rotate.gif":"R0lGODlhFAAUAOZoAHl5eV5eXn9/f4mJiXR0dHV1dYeHh3p6end3d1dXV4GBgVtbW1xcXIqKil9fX9vb2/39/cHBwW5ubnNzc8TExL29vZKSksXFxd/f335+fsDAwLKysrOzs3Z2dsPDw3FxcYODg8bGxuXl5crKyoKCgs7OzoCAgO/v76Ojo9fX1319fa+vr29vb2FhYVlZWXt7e2VlZWhoaGNjY+rq6lpaWl1dXaSkpPf3993d3XJycujo6PHx8fDw8Pv7++Pj49ra2vb29s3NzYiIiLa2tnh4ePLy8pWVlVhYWMnJydbW1ru7u4+Pj8fHx2tra/j4+KKiooSEhKqqqmlpaWZmZrW1teHh4enp6WBgYHBwcIuLi76+vvT09NPT07GxsZqamp2dneTk5JOTk9zc3KGhoe7u7peXl5CQkG1tbf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAf7gGiCg4SFhoVkEWMoISeHhTgNMgkMAQtSGWKPaBwtNQwJLi4LU00sQ4calQlQFUkpEWYwHxIbhQ8tATAahlxEHR8jhA2WHo8lLAoGgzsyC0ubaCgIZYMVRwkX0WhWhBYBNFXbD08rggMBDjqbYGEIIAgYaF5XDPKGECsABwAvAlFoRjhwoM2QjxwvJgBQMWAAGicSYmQ5dMOCAgImlAmYgebLmRhKHlERQKKAEBIR0PAoQEBClx6EIFAw0aCABwMHSgh6gAXABAUbKFDgYEDAgAJa0BQRAWFQkAMdBADYZxQEgBCbttjIQGACAQQqjIjYhgbIDyRMUjg6FAgAOw==","img/rxn.gif":"R0lGODlhFAAUAMIEAAAAAH9/f4eHh5eXl////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAM1SLrc/jDKSau9uIU9FtfftnkjIwbESaKmmLrAiwK0jKqK2464DI6CjYA0ZAQDxYxyyWw6CQkAOw==","img/rxnmap.gif":"R0lGODlhFAAUAMIGAAAAAEBAQEBAwICAgICgwKCgpP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAANCeLrc/jDKGKaqK2Cp2+aedXyj+Gmkg4rQ4BaSIBOK68ayUNsOsOS6g21wABiPvgNwd2sklTkmMbIU8iKEGWvL5SYAADs=","img/rxnmap2.gif":"R0lGODlhFAAUAMIHAAAAAEBAQO0cJEBAwICAgICgwKCgpP///yH5BAEKAAcALAAAAAAUABQAAANOeLrc/jDKGKaqK2Cp2+aedXyj+GmkgzqC0LQOIRsKXLtDXiiyvMC2XI7XY7RcCuGA6AM4j4CkkEn4uYLTQ696sHVx2e33JSjoROi0epEAADs=","img/save.gif":"R0lGODlhFAAUAMZvAAAAACEyRzMzZxE7oTc2bjQ8Rzk5cjE5mDw7eBxBpzU9nDY9nD4+fTM+niREqjVBo0FBgzxCojxCoyhHrUREiUdHj0hNVkRJqjRNs0pKlENLrk1NmlBPnz9SuExPskxQslNSpEtbcVZVqktYvlRWullYsFJidlZexFxdwVxdwltqfWBjyWVkw2dmzGdnzGxrz2d0hWxr0W5t02h4jXBv0XJx13V003Z11Hd23HN/j3p533t61nx714GA2oGA5oSD24iH3YeG7IuK34qJ74+O4I+O84+O9JKR4pGQ9ZST5JOS+JST9ZiX5Zua55qZ/5+e6aCf+6Cf/6Kh6qSj/Kem7ain7qqp/62s8K6t8a6t/6u0w7Oy87K14LSz/7O7xre29be2/7y7/7zByr69/8TIzr3K4cbR5c7Z6dLb6tTd7Njg7d7l8ODn8eru9vb4+////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAfRgH+Cg4SFhoeIiYqIX19bWFVSTUlEQD07NjSGW2NKb5+gb24jJSWGV2NDoZ9ubR0CIoZUYz6rrWsYOiCGT2M4obdoEzUchkxjMqDBZgkuG4ZHYy2sbWtoZmUDKRmGQmFgKycjHRgTCQMoJBWGP11ZU0ZBPjo1MekfFIY8VlBLIf8hTKgg4eECBEM3oiAJEgJAgTNpYGi4IIGBIRpO5IUoMEMNmxwPIihAYOhFER8OAmjxIoaMhQYLDhgwxIWFCBAcNmSoQAECAgQGCCwaSrQo0UAAOw==","img/scilligence-qr.jpg":"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","img/search.gif":"R0lGODlhEAAQANU9AKXW/5ylxq3e/+fn75ScvQBSe4S11r3v/+///87//7W91gBCa73G3v/352tre9b3/+f//8b3/63G3qXe/63W9zF7pa3v/733/9bW57XO55y93qXe73trczmEpdb//7Xn/4SUtZzG3pytzsbv96Xe9////5SMlFJzjP/erXtre/f//5y954ycve/3/5yMlL3W55S13lJrhGuEnJzG97XW59be53Nrc87n99bv95SltYyltXuErZzG7////wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAaUwF5voCDsCIqBcLnEEDQby0ZDwDCFAwIPAJg8VDiCkqmACc7c1iOkuAYoh8vhMwE8SIErKJLwJCIfXRYgbiMQCBAJBwIAeFcMGQglCB4XjCEMVwMBN4iKAjMnOlc9NQE0IxEUKzEyLigNmgwiLCIMORwFFQaxpEwcCwUdvL5LLw7Bu73FEjbBw8VLEsgFJtHSDikZQQA7","img/searchreset.gif":"R0lGODlhFAAUAPeRAOry+uvz+t7EkNe2fs+oZPHm2Pbv5Oz0+u/1++TOq/Tr29SwcMmbYcGOV+bRr9Kubc+oaejx+dm6jOzz+vr28/Tr4vn7/alhObyFUvf6/eLLub6GTd/EpfH2+63apY7GhGqrY4TFfb3Xuk+RSGqsZLqBTMuplJKzdJXPjvz9+9u9hM2mYrSyccfEjtbn4abXo2CfVaPUm6nXoMOSWNC7nWeaVdKsd5dhRurx6eLu7YyyiJXOjmSLRL3fxI7BjLHbp5mkZ4SaUvz591afT4C9eInJfunWpJZ+Rerm2OfToFuaU4nJgp7RlnW+arNzS+/s5YjHgdfcxojGgIvFg+zcv/jy7mqkZH+9d+DHtprPkoHBerFyRcugZp3Hl72KU/fw5YyiY/z6+ffx7fP4/G+vaZiIR5HJh6TUmoHEeW+waYrGg0+NSVaPUtbo4KzYop/Sl4C/em2paG+fa2CkWYjFgtzn236+eEWKQGutZM/lzOfSup/Rlo28iFmIQoO+gHa5bmqlZNKthHa4boi5aMng0pDKibmASGKoXOny92apXYjGhXO8aW+vZ3CwaMyicILBfojIfP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAUABQAAAj/ACMJHEiwoMGDCBEqEPCAAAEIEgokFEhlwQAHXwwkYDGoyaIpeQwqWJAgAwIAiF5AOvPDQxZBXVIQFDAgQ4AIAHoUcSPDzIc3TBqJIPjAQQecANDsifHnRBA8O9RYIUjAQAAAWBU98uMDiRc+RFCMILjCwASsAQJMaDMnShlAWqCsIQghQYe0AQ4QOpSoBgw7S0joICjBhgUEBw64GHKlEB0pIdKwwUGwABcOFsYgyBGHERwyIJTIqWNQDwNHHCpUoMHjDhggR54gLBCowYYNGEr0aWFExQUxEwdqaCAgiQAGN4QEF6gBw4ABM7ZQWC4QywVDTqpQH0jBRJjt4MEHAQQAOw==","img/select.gif":"R0lGODlhFAAUAOMIAAAAABAQEDAwMG9vb39/f4+Pj5+fn6+vr////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAAUABQAAAQzEMlJq7046827/5MAjGQ5ChbAqRWruROMyQid3qBkVweuEZaAqYQYEI6GHDCHKDCfUEsEADs=","img/selectall.gif":"R0lGODlhFAAUALMMAH9/f4CgwDAwMK+vr4+Pj29vbxAQEKCgpJ+fn0BAwICAgAAAAP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAUABQAAARHkMlJq7046827/5OwjGQ5CtbCqZWqvIeUzAHDUu6ryHNipwzdjtHz3Sa5F2+GSQ4DNMYAuAFYDKYSowDoIkAMK5hBGJvPlggAOw==","img/selfrag.gif":"R0lGODlhFAAUANUAACQkJAAAACUlJcjHx3Z2dgsLC8nJyUlJSTs7O25ubgYGBpWVlc/Pz1dXVyMjI2dnZ21tbVRUVM7Ozmtra35+fgEBAQUFBSEhISIiIi0tLZSUlHV1dbKysmNjY46Ojl9fXyAgIBcXFx0dHbq6ui8vLycnJzc3N4qKiv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAZyQJRwSCwaj8ikMgkQAJ5PJyApUE6PV2S2WKVqjQ6JcEskoxAABsos7BIjH9LAW+xQDpk51jg5IS4FekVmCR4lBQEBgkROUigECyAWiQEGSygbECIVlAGXBA0YAQojA5ZLBAccJgEJl0IPQhoBIa+2t0JBADs=","img/sep.gif":"R0lGODlhAgANAHAAACH5BAEAAPwALAAAAAACAA0AhwAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAAAgSACftQ7NPIEGDBQcmPKgw076AADs=","img/seq.gif":"R0lGODlhFAAUAMQAAMXP2ABFiVN8pStfkwA/f+Xo60t3o0p1odje4x9YkUNwntvg5f39/RdTjhdTjx9YkOvu8ABAgQBHji9ilSZdkx9Xjx9ale7w8gBGi/L09f////7+/v///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAU+ICeOZGmeaKqubOu+cLwujlHS9gkkASaMu96vRBlICBGMojIxIpWWEuAhBFJ9KETjUNJyU4VTWEYum89oUQgAOw==","img/sgroup.gif":"R0lGODlhFAAUALMOAI2NjQAAANuQOmYAAG25/wBmtv//xczu/z2S3P/emP+2ZuOqigAAOjoAAP///wAAACH5BAEAAA4ALAAAAAAUABQAAAQ80MlJq704aww62FUHWt83TqZ5Uuoqta4pBEGxKgHhLMc56y7DIMDouWYBhMshtI0EukRDORLSnMusFhMBADs=","img/shift.gif":"R0lGODlhFAAUAOZLAD9IzOLi4uPj487Ly3Sh/8bBweXk5NjW1nun/8vHx+Dg4ODf37+5udTS0r64uIyx/8K8vM3Jyb63t8zIyFaM/+Xl5efn59nY2Obm5tfV1c7Kyt7d3dHOztPQ0N/d3ZC0/+bm5ZW0/5a//8bCwqDB/9LPz3ej/6bF/1CO/3Wh/5G6/3mm/8fCwn2p/8zJyeHg4E2E/6S5/5i5/9TR0VyO/5S3/5K4/424/4ut/+bm59vb28rGxqTE/4mr/42u/9DOzuTk5OTj5HGe/3el/3ij/6rN/2yb/9/e3lOJ/3Gh/6i8/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeSgEuCg4SFhoeIiYqLjIUBQRUCGAIGBgIWiQYQBQMSDQwTCQ4KiSAcHRcRGxoHGQMLiRWbnZ+hDgGJOTsuMwUHLCU/I7iIGKepq62viRYKLwIeQEcBFEYrMD0oBEmHAIQ2JEU4Og9KMd2C3jRCLUg+FEQpiAD0AAg3MgQnQzUqit4IHoggwMNEiA+NEipcyLBhokAAOw==","img/signal.gif":"R0lGODlhFAAUANUAAG5ubv7+/r29vUpKSsPDw8zMzGxsbGJiYl1dXVxcXIiIiMbGxl5eXkhISHJycpmZmUVFRYmJiYODg8LCwtvb29jY2HNzczAwMHd3dzQ0NFZWVpqamrq6utzc3Pf395WVlWtra8HBwXh4eH5+fnFxcf39/V9fX2lpaYCAgOHh4cnJycDAwDo6OlNTU/Hx8cTExLW1tWZmZm9vb3l5eZubm0lJSXp6eqSkpMfHx////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZcwJxwSCwaj8ikUvlRLI+DxNM4qE2LtsZ12BGxQttcAWCahAUHwy3MaV0w4YKBQQvDHA9N5UoZzXIAEVcZEDg5KTEHGwIECy8CKkYSK0MECAAoICckMhZhn6ChU0EAOw==","img/single.gif":"R0lGODlhFAAUAMQbAAICAgEBAQUFBQQEBJ2dnZOTk6CgoJycnJaWlpSUlBwcHJGRkZ6enigoKCEhISAgIHd3d3h4eI+Pj6enp6Ojo5qampiYmKGhoQMDA5mZmQAAAP///wAAAAAAAAAAAAAAACH5BAEAABsALAAAAAAUABQAAAVJ4CaOZGmeqBk5RIoqGpa5ZhHEM01Kt6yTi17utykAcERR4uhLIpjDnwWDTFaoTeIBG9UxBlWiAZz9XQSxVpKCfiRFkwbkTU+FAAA7","img/singlearomatic.gif":"R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVV4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoNBvZTqTArTAxUk1oWvAGpEMmmVogNRFR4MDybjCQrYa8Agxq6fODVdmKtpmWhIQgyP6AgYIkIQA7","img/singledouble.gif":"R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVZ4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoND2GriA6bjDCFCYmigxq0dKCNyAdMhvVAqmJiAIH1vgJAWvSK8A10H4+WBWwCJxpSUgIBDKDhIWGJCEAOw==","img/sortasc.gif":"R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUUICSOpEJCyfCMjmAACxQcBUMgTQgAOw==","img/sortdsc.gif":"R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUVICSOUIMQTHEE0AIYgjM+Q0JCyhgCADs=","img/spectrum.gif":"R0lGODlhFAAUAKIEAKCgpEBAwMDAwP///////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANBSLrc/jDKSRsQOGsMnBhgKIKCN55D2XxicKoMG7ojvMggLdoKS+sDF4/gy7VSpqDxh1wZlczhZUPtVK7YrHYbSQAAOw==","img/spot-blowingdown.gif":"R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fH////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAcABwAAAakQJtwSCwaj8ikcslsDhGUj6IGY0icxMIjJAB4AQKDpYC1pSDfNHiFrQzU6sHEqXjD07Mmq3tXZ5gvDX1pBAlMBwSDXxAbTA8Lil4EHkwdfIoEHEwugpELKEwjkV4Chksqo14kTZeKZEwyoxdOFAaKDidOFZEic04lihGvTTStaQIMZRoRDnBhV2UmdmkDB2VDFgN22jHXRC0gXhjW3kUICOXpQkEAOw==","img/spot-blowingup.gif":"R0lGODlhHAAcANUAAAAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6Ojo////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAajQJxwSCwaj8ikcjlMMJmWTAHgqDGex0RlAOgOKk7skJDidr0NgliIEpzfgs6aIXvbBSTxzWCHh8QqFH1vH1gEboNnFBZPLYlvEgdPHlOPAAUaTy4wlgAGJ08TnV0RTyWjAAtPCqgbTwuoAKuoBk8cqKVMLJWPAxdPBwidAjZPBBMQjxAPak8YNMJ9CA4jay8zEnYGJiBrQysxDwINIpLe5+hMQQA7","img/spot-circle.gif":"R0lGODlhHAAcANUvAAAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAcABwAAAaCwJdwSCwaj8ikcslsOp/QqHQKNUVAp8eGMnW0CgaAuABBXKCWSUDMFgcGI6dgMWjbBwRB8xC22wMNTRwufnYeLE0IhX4PTQmLdgVNK5BtJU0kEpUAGh97a5UKgUwCKAyQDHlOFSGgfwkOUCIIEHYGCxlTHSoEChgpB1TCw8TFxsdSQQA7","img/spot-crescentdown.gif":"R0lGODlhHAAcANUAAAAAAP7+/gICAp+fn8PDwwoKCv///wYGBtnZ2QcHB9LS0ouLi/39/QsLC7u7u+3t7fPz8wUFBQMDAwgICAkJCXd3d3x8fLe3t7Ozs1VVVYeHh+bm5o2NjTExMRQUFKOjo8fHx6urq19fX/f393Z2domJiUNDQ11dXTU1NVFRUYCAgA0NDb+/v0RERK+vrwQEBCAgIGRkZG5ubmpqanBwcCsrKyYmJv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAcABwAAAanwJtwSCwaj8ikcslsOp/QqHSoWDA5LOYAYFgWVFoAQgkBWJfbkNIBGDA/AJrS0mYSAJEHctQAYJhlAidIMwJiTQAAEjFdQwYyhgAMTTCJETYaBAQLNQeJDU4pkQCeAAmJiSZOJaeorokUJE53r7UXTx61riuNTRUTugAFIlAbo7UKURkUtQUtUg8FwKgHCWNSDgIviRICLlNCCiiJHSDgRAyT5+vsQkEAOw==","img/spot-crescentup.gif":"R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAalQJxwSCwaj8ikcslsOp9FExRZgEQAkUZhOiy8BICwoLLlZsDhMMHFPQ3ScMBhOlnEw4vUFH0HDDRPNgh9aglPHQyEYSVPdooAAmVLD3AIBAAWfAAkTQpvAwMfCgcKIwOJDIZMEAQELDJFNTMECBJNFH4PRxhgNE0wABtJEgAgTTECKkkcDgZNBhdLIs5MKBNLFA5NNw1LHgBNCStLBy1c5+jp6udBADs=","img/spot-halfellipsedown.gif":"R0lGODlhHAAcANUAAAAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+Pj////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADIALAAAAAAcABwAAAaTQJlwSCwaj8ikcslsOp/QZSNArVqpjaZiAOh6v11EiukwgM+AQ4gJOaDBhQjTlXh/DRwmy/49OJgffF4EKkwSgl4vTQiIAAxNJIgmTicFfAkWTjGWdgMlThiIGU8ofBUbTx0LbwMaUAwEdgpRMIxgAyJRMgEDq14GBS26MiAEdQArBBPDQgoXXSMezEQPD9PX2ENBADs=","img/spot-halfellipseup.gif":"R0lGODlhHAAcANUAAAAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaLQJZwSCwaj8ikcslsOp/GEhRZ+DwAj1BhOiwsBoDwwLPljsDh8CHFnRDScIBpmnDEw44ONIC+AwgaTxcSfmoNTygMhWEnTgEIi2EbBk0WkWkZTRhvkQyHTCIUlxAkTSoHlwQcTSuXYSBNFa4ACk2QrhFNCrMQTRGzAE0JswtNBgLIycrJlFzOz9BLQQA7","img/spot-hellipse.gif":"R0lGODlhHAAcANUAAAAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaSQJZwSCwaj8ikcslsOp/QqHTqbJgWCk9Cg1pwJE9SyjAwAM5nQZmBYD4EArRcDhcRkITMYc6XFz53RioDfYVnAyFGASCGjQcNRRaNkxVFE5OGBRORmIaVRCeEnXMCYEUboqMAAxFHBCV7owUjAUlvcY1wEYFJCAwADn3BCm1OEBQYFwkAHRcrFBBU0tPU1dbXUEEAOw==","img/spot-vellipse.gif":"R0lGODlhHAAcANUAAAAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PD////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAAcABwAAAabwJZwSCwaj8ikcslsOp9EhMGAgBovFgIAQJhUrMLGIrLdigQF6+mRKJcTihTUwXC7B5QnxM4HpJslAn1lDBZOC4NuD00ZB4luJkwbj24dTCuOlAMhTCgDlAAHHEwqoKEfTHumf0oBpgAgTYiUBE4egokCJE4SoAZPdIN4UBIDbXYKCqxODSwabhFoYC0XEwQYGAQjX9NCUlTd3UEAOw==","img/star.png":"iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD+SURBVHjaYmDAAn5eU8gF4hxscgABxIRNkOEHQxwYYwEAAcSIofaoghaQugrlanJYP7iBLA8QQJg2/PwfB8QMUIxhC0AAMX7fLv8SSIsxEAdeAgQQE8NPBhsgvgLEDATwZZBagAAC++HbSnluIDULiKNwmLwEiNO5wh9+AwggFE9/WyK/D0g5oinexRXz0B3GAQgguIZv8+TYgdQrIOZD0/AeiMW5kh79BnEAAggRSn8Y3ICYD4hB7O1AvBPKFgTLQQFAAME1/P/DEAbEv4C4GIi9gdgTiEuB+DcQR8DUAQQQC9yGvwzqQNKKO/fRWSTn9HydLHcASE+DCQAEGAA3aVySIkQTEQAAAABJRU5ErkJggg==","img/star0.png":"iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAERSURBVHjaYmDAAm7cuFEDwtjkAAKICZvg79+/HX/9+uWITQ4ggDA0nDlzxvznz58SQA0SQLYJujxAADFhMT0GiBmgOBZdHiCAGA8dOnQaSHMxEAe+AQQQC9CUVCBjIiMjowhI5P///xiqgHIg8TdAZj5AADGCBHbu3CkAFJgBlNDFoeEikMpyd3f/ABBAjMgSW7du3Q6UlEOz6b63t7cPjAMQQHBPb9q0iefPnz8SIM8CaYa/f//CsBRQjgOmDiCA4BqAEsFAU9n+/fsHYt+FYhCbHSgWAlMHEEDIGtyBJgOpv6uB2A+oyA9Ir/sLAV4wdQABxAJjAE0XB+L8sLCw/Ujeql21atVBoL8qYQIAAQYA5QugNPG/jFEAAAAASUVORK5CYII=","img/stop.gif":"R0lGODlhMgAyANU/AOfo5eYxMdtKSMwEAOpHJMjJx7a3taioqOtWQKoVBtCwrK9UT988PJSRlM6TkOI2Dvv7+9ohAfRkU9PU0vP08tvb3MF1cPdza7G4w7qSk6aqs97j57mmqcjQ18XL1t3g26uxvLzCytnc1K6cotDQz8+ioMODe962tOTr7dXc4Z2cn/P8/aGjrMzOyuzt6+zz9cPEwePj4NfY2L29vNXY0fj4+NDW2e/r67Oxs/Dx7/X29bU6K9pdV66urv///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwOXQXc4aBqqlgHw6RmrFqvx9kB5/F0vh1PKIQBaVQHEgTLrsZ6htQmVVCUSo68447DlFkqMGttbBAGMCgoJAoWAgwMAZGRDAICPCUcZoAkhFcyPSgvJA4CkqankwImHBpnPVSdRDMFKxukqLiTAY+qHCyAALFCoBAwPLm5j8qPPBkam7E9OislkMimy9m8Js8qnG09OSsO19iQ2tmqzw0ybAUb4+WTj7vo6dwsDTlXADMrCtaunbOXzpGqXyyuHNBRoJS8XfUIVppIKQOgAlVgyNhwDFUlHh8t8RhJsiRJgxMtjcjnokiNHi9K4LqgI0eOGzhxAtgJIIbP/58/HVBKKcDCrx5FYFTo0PHUiRU5XLhAwdPnhg8fKlSQwXXChBQKFhBVyZLIgQ0ycZ14UdUnVq1cu3olQcJG2LEHWcwYUiGEDQunzp1A8fPtVrkT6NJt0WKRWJAmR2hoACvOjIARGQzOChexYhKMCxSA0SIsDwQjUaN21uCDkAMpyEnKdmJDXBleEy8WDWOGb991FphMbeLX3hwaPACGSDtF7s+jZ+DosWRJjx44ZmRIECHCLtQSeEhgcQaCjBkhHKI7IQP6DAPUqx+4jgOHgUPbBwyIsN87asmUwZBEKfYoYENo8MlHn333+UZaCQlw1113/ZkAgj7ocTCQNid0AP+DEtUteJ8BDgrYAg0jSDjhhAMscGEMOIQwgkQKGBAidgySOAMMJjY2wQcQriikiw1UEOOM2jgSgAPT4digg6IxRsIENNAgAloqChnBAhiwc2RBDPCXgXRP8liAlF5ZKYIIWKEQ5AMRwAlnd1wWiR6SlOSp3wAOhFDimT5WuSabWPnkggLcPaDoonR2GUMBGLDgyFAB7MlnCz1OKeiaWH3gE08vILroqHBa0KULHxwAwgKUWsonDYGq2elPPAEg1T8JkDpqAyE0QIEOKmBgASWVulrCB5vO+ilPUrlgEwQK7PAAAdQSMKoKIahABQsgZFCKq/qVsAGhni67U7M2UfD/qw/RVuvuA1z2MMMaM2Cgwg7ghotCuTEwK1W66upQQw0Q+HDCDu5W+4AJHhQpBAAqrJrvACW4UCu6OQQsMAQc++BxuwiEjAC1ArDQgT5DsNDlxCW80KyzGf+6ccce13ywACKHTIAFHmgw7xAkHKABvuCWsALMAQ/MccE1N23wDghIIHXIApzVQDBDQBBxA/k64PTXYNccrdRkI2CBDQbgAMsQE5C3ALgJWCC3BSbUbffdJuihh3BkS82DAQBcPYhZINwLd4SIJ454BDs07rglElwg+QU8jIBCIGsTAeyFCUy8X3/djVpt1GRPfoEEGaBQwAEUXPHB1p27SuGKolMb4HLppmewQQwNxDB4FTNw20Dse/Kn5aKjkx755KnnwM7vVhjAreH6GS9k7QTcLvXkHLzgfAs6dDJDxBq8XTzooSuavPIWzOBD4CSEHwsJEV9ItPUTIm+7yM1UUEyRmeuEC35RhhEsgDvoi5P+zFYCG7ClAThwAfSEUYAGaMAPPciABaSlQPUVxQEzSIELNgCICchPGEagwPiChQEygIADI+CADA1QADlsAAZNKIAEUYgFHQStARZETwgK0AUPHQCIPZBBDibIQytQoAIw6IETnIADpeSAYE1sIgQGxkWOZTEIADs=","img/strip.gif":"R0lGODlhAgAgAJEAAMrT/63/18Wn/9Ts/yH5BAAAAAAALAAAAAACACAAAAIPhG+hq4jMhpxS2GspxbgAADs=","img/strusearch.gif":"R0lGODlhEAAQAIQbAJdhRqlhObFyRbNzS712QrmASLuBTLuEULyET7yFUsGOV8OSWMeabsmbYcyiaMuplNCsiNe2ftu9hN7EkOLKlufToOTSwOnWpOzi2PXy8Pr8/v///////////////////yH5BAEAAB8ALAAAAAAQABAAAAVc4CeOxWieX8FoTImKqqYVGNaihTUXmaxZLtIM45vNToWiLxmEKWVM5LAYNeV2PRmkCVsNbQXCK7VqOSgTxDh1MEguF0lgLVJMKpMGgP5JRCILAnwfAQUDgyIPIyEAOw==","img/symbol.gif":"R0lGODlhEAAQAOYAAE+Eufv8/WSSwT54spOz1NPg7UyBuEd+ttzm8fr7/f3+/m+axvz9/kF6tP7+/vj6/JGy07XK4c7d64ms0JCw0u3y91GFuUyBt5e11Yaqz1iJvO/0+ODp8tLg7XSdx9Hf7Imsz0l/ttbi7tTg7VGFumCQwGKRwZSz1GOSwVKGuvn7/Pn6/FqKvY6v0FaJu8va6pS01Nnk8GGPwI2v0fX4+0uBt6vE3negydTh7mWTwnuiy3Gbxp262IWpzlOFuuzx9+rw9u7z+N7n8VCFutDe7EJ6tMfX6FCEusPV5/b4+4ut0VGEuVOGutvm8Je21a/H3pa11eHq8m2ZxW2YxKS/2azE3fn7/UN7tIGlzHykyz94s9/o8qjC3Ovw97PJ4Ed+tUV9tU2CuGuXxEJ7tKK92dHf7c3c6////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAQABAAAAd2gGeCg4SFhmdVO0ozFEaHZxIyPYMRQyeHXymFXgMthRgDEIYHBoUaB06GAA1cg0gXBiCqVzyDZi41E6pFZIQZDQSGIWCGY1OFL1pYhwJUhCzBhE+DMESCUDaGHiUmUmKDWQs5AguDOkc+JGGDN0tMFiiP8vOGgQA7","img/table.gif":"R0lGODlhEAAQAOZNAP///3un3JK56Pf6/rKysmaLwHWe1Fp8snag1aWlpcbGxnmi2LbD28DAwLq6uoyhxrCwsHCZzlR1rL29vbm5ubW1tbe3t7GxsXOd0sjIyGGFu1FxqVFyqW6Uyru7u5iYmFR1q1Nzqnqk25K03lx+tWSIvnKaz7Ozs6Kioq2trV+DuXCRwcLCwlh6sGCFulx+tFZ2rYCex6urq7i4uGOHvaenp76+vpGRkXqk2miOw8zMzIat3ZWVlcrKym+XzFNzqXOc0W+Wy5ubm56enl6Bt6mpqWySyK6urnmj2Vd5rlh7sWyUyXqm3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAQABAAAAeagE2Cg4SFTQwjAUw4CwgGGCYRQUsxDE07Apmam5orTQGgoaKiBU0iAKipqqk0TUgAOj0KAxMeFgMXECkALk0Lq8CoRE0IABkKDQMOMwQDRTUJACRNBsHAB01AACwNFAMVJzIDKENCAC1NPtarEk0dADYOzQRHCQMfPDcAIU1G66ocmjzIUaCEBhUvDihJAgPEjw0PDEmcSHFQIAA7","img/template.gif":"R0lGODlhEAAQAOZFANTU1ODg4NfX1+Pj49PT0+Tk5M3NzWxsbKysrMfHx9/f37CwsGJiYs7OzmFhYWVlZVxcXGNjY9XV1Wtra1lZWfz8/Kenp25ubm1tbfPz88jIyGhoaGlpacvLy+Xl5VBQUNDQ0GBgYHNzc6Ojo/Hx8f39/ampqcHBwWpqaq2trdbW1srKyl1dXbW1tdHR0XBwcPr6+sbGxmdnZ29vb2ZmZlpaWnJycr29veLi4qurq0xMTKampvDw8MTExMXFxc/Pz8PDw3FxcczMzElJSWRkZP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAeygEWCg4SFhgQvOQYQG4aDGTpADiErFyeORRUPFgMKBQsOhjFEGi0TAxIBIQklGYMoBwgQEx0CAAEHCzIfIIIUHR4KAQIEAAJCGCMJHIIuDAoSANIABAI4BRw7gikMAwPE0wCpEQ2CBz0IQQa2BCoBAQUGFIIgHw4LBwHGDTMQCzYPBpGA8YOFAgADRCBIwOCGoQgICgTwYIFGBUw+MDR4EEHDEB6YimyokcDEBQMhUwoKBAA7","img/templates.gif":"R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7","img/test.gif":"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","img/text.gif":"R0lGODlhFAAUAIQVAAoKChERERgYGCAgICkpKTIyMjw8PEVFRU5OTk9PT1ZWVldXV15eXl9fX2RkZGZmZmpqam1tbXBwcHNzc3d3d////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVF4CeOZGmeaKqubOu+IyVTU/Q0C3IYxUmJksgH99l9CIMU5EHisRwNUoHAYixISJYCQRoIWIkDSRBY6QykAADGbrvf8FcIADs=","img/tick.gif":"R0lGODlhEAAQANU/AFqhUna9bDt/NWqxYGyyYovPf4bMfI3PgZ7JmT6COIXJejyANm20Y4nOfmmvX5/Kmvj7+GCmV/n7+F2kVGiuXtzv2VqmUWetXEeOQECFOWGnWInNfcPivo/RgoHKdoPJePr8+Tp9NFyjVFynU9bs09jt1ff69/j6937IdIfNfHnAbZ3HmLXWsrnbtVGaSVefT53ImaLEn6DJnGOwWanOpZDShIXLeanLpWSsWz2DN4HJdoLKd1+lVoLLePn7+f///yH5BAEAAD8ALAAAAAAQABAAAAZwwJ9wSCwaj0jkg5YkPhiOW/OHIHQUkVgSNjgUNBmfsMQhwhyNRiQh/lUCqpZwRdmkeGwhKaA4jFgyFwY2E3lCIDMBNQoDDB89IgttQyAWDA0GHjoAApNEEC44OygAIRJJEBgiL6ZTJzkhnkkmslNJQQA7","img/tlc.gif":"R0lGODlhEAAQANU7AP///4elwJKux5eyyP7///n9/+71+/3+//r+/+nw94WkwIalwJawx5myyW2SsvX6/3Kl1IKjwNrn8pOux87f7vz+/vz9/vj6/PD1+pGtx+/2+/H4/ZGvyPv9/u3y+Pb5/P/+/4WmwbvT6JexyHOWtm6Ss5iyyPL2+v7+//z+/+/0+Zy/4O/2/Pb4+/3+/nGl1N7p85a83pWwx42sx/P2+WmPsHKl04imwZKtxvX5+/z//////wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAQABAAAAZwwJ1wSCwSa4qAUrlwGHcLAOFAJQAEz8iGZehqHrNnAEAuA3BigERlxhpvAJuIDLqmKQnAKfaRpcseEBgMfwkrFy0AE38wLzlkbkVjAC40ZZFECgQpFigdFQAZTyE6CAWnCAAcTyUjJgOwAw0kT7VFQQA7","img/tlcnumber.gif":"R0lGODlhEAAQAMQZAP///6/C1bzM3LfJ2rjK2rbJ2sHS3wgDw67C1q/D1pOvxsfW4rDD1pexyZ22zL2878bW4Zaxya3B1LnK2rbI2bzO3FpX17LF13t53////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAQABAAAAVWYCaOZGmeKKkIBCFEaYYANFCorBsF9ANQpFmtwABYDoABiQdYXSQPDHJCKgKETKRyxOzSkDcuzZqoJZc0ZmNRMUAcpDKASduW1gaJOYyS12N4bnAxMSEAOw==","img/tlctemplate.gif":"R0lGODlhEAAQANUrAP///5exyb/R37zM3LfK2q/C1bbJ2vv9/8XV4vf6/b7W7K/D1vz///3///L4/dbk8crd7tnm8pOvxq7C1vX4+8/g8LHE1v7+/7bI2LDD1a3B1O7z+eHs9bfJ2rDN6MXV4bXI2bHF17jJ2q7C1J62zL7N27fI2LbI2fT5/bDE1rnJ2v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZ0wJVwSCwKJQMCYRAwEieABgNgcA4zhwQytGwaTYoHVEp1WhwUbOIiOSmZwwIAggkDxtOqUB5JoTcjWRcAIEMLAAByEBV1DwAHIkMBCAIaABEcZxQbHiVGh4iKFSgqRpMClZccZVYroIgdrSunAh8ksri5K0EAOw==","img/toolbar-bg.gif":"R0lGODlhAgAaAIQRAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9PD1+v///////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAACABoAAAUkIAQ95OM4TcMwS7soSiInSI0ch6EbRV8QhIFwICgKAgGAEhACADs=","img/toolbarbk-blue.jpg":"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAGoAAQADAAAAAAAAAAAAAAAAAAYDBAUBAQEBAQAAAAAAAAAAAAAAAAQDAQYQAAEBBQkBAAAAAAAAAAAAAAAUYQJiBBUBUpLSU5QFBhZWEQACAQMFAAAAAAAAAAAAAAAAEgERUgORApITFP/aAAwDAQACEQMRAD8AO+3739Hyu9mc533jw2beMHN+jJdOpXRsLMRN9BCHc2gipzAzlFFFOhBdghBIisug3EKSLYjENYwVEzpv4XhSwQrJ/9k=","img/toolbarbk-green.jpg":"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAG4AAQEBAAAAAAAAAAAAAAAAAAUBAgEAAgMBAAAAAAAAAAAAAAAABAUBAgYHEAABAgMJAQAAAAAAAAAAAAAAYRQBUQORAlLSEwSUVQYWEQACAQMCBwAAAAAAAAAAAAAAEwFRAhKR0VKSA1MEFBX/2gAMAwEAAhEDEQA/AG/pvU9xvuTWzGG97q8d2snIPq+T3b+adyNUFjBNmKtkJwCUizRAtY1QNM0D1DhAy2hIPWNlGnMZlmF2herXwX7IgeV1JFud1JP/2Q==","img/toolbarbk-red.jpg":"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHEAAQEBAAAAAAAAAAAAAAAAAAYFAwEAAwADAAAAAAAAAAAAAAAAAgMFAAQHEAABAAYKAwAAAAAAAAAAAAAAAWFSBBQVUQJiktIDE1OUBQYWVhEAAQIEBwAAAAAAAAAAAAAAABETAVECFNESkgNTBBX/2gAMAwEAAhEDEQA/ACHvvnv0na855xktyqcTtnj9Xi29FOBM0E0AoW2y9L1DsprPieWKHIR7gWSuyMQiXApgEMhoRXjWOS0YoLIdiXvazLtYFSo3TOB//9k=","img/toolbarbk-yellow.jpg":"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHAAAQEBAQAAAAAAAAAAAAAAAAUCBAYBAAIDAQAAAAAAAAAAAAAAAAQFAQIGBxAAAQIDCAMAAAAAAAAAAAAAAAEUUQMTYZGhAlLSBJRVBhYRAAIBAgUFAAAAAAAAAAAAAAATAQISUZHRUpIDUwQUFf/aAAwDAQACEQMRAD8A6X6T2by3N7E7ccv+j5Hcr5Tqbn0ulspygigotuGSzfQCVFbxNosBkkEYMM7MBokAaMNkgMlgDC3KxLMIWF1Z+jPcoDfVhIZbB//Z","img/toolbarbk.jpg":"/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAFsAAQEBAAAAAAAAAAAAAAAAAAUCBgEBAAAAAAAAAAAAAAAAAAAAABAAAQIDCQEAAAAAAAAAAAAAAGEUAQMTUZECUtIElFUGFhEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A0n0XqO333JnagKaIA2zQBpmgDLVAFKELAKrKAfVm5cV0QP/Z","img/triple.gif":"R0lGODlhFAAUAMQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVxICeOZGmeaMoRDaCewha4r8gaxaYxNRcHiRiGhmIlchrcZkA0/SZChUbHO1mQx6V0M0RRhIapJjKQNUmL3GCLOWSoqIWYLHNzzyM5F/LW2DMpAGUBfFwPCAQqFX0Pb4A1Em8YF4g9HA6OliMOlZqeliEAOw==","img/undo.gif":"R0lGODlhFAAUAOYAAP///0BowFCI8Ep+4GCQ4JCw8I2w70BgsEBw0Ki/7lCA8GiV72CQ8HCY8EB44HCg8LjA0FV+tlB40KawwtPW2aq71aG764umy7TL7oCo8Gp5qV+CvTBYsEBwwDBQkDtgo5u370BgoM/S1FCA4Km+76Oz0FmG4Dtos83a7KnF7rW8x5Co8LPC773F1M3U7XCY4OHm6Kq+79rc3LTE4KS776K10tDV5EBosJq37JqtzM3NxF5+w7fF7pu47DBgsFh90LTG7K7H7bfJ6jBw4P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeDgESCg4SFhoeIiYqLgygJMRgujIIJBSAGBiQsiSswREAFCwg3JwM0PIgZQUIFBB0BGxEhAimILw0PCwcHOUQyHwM9iAQKDA8aLYMBAziII0MKDQQ2yiYWiA4IAT4cHoIUAQIzk4MqDgzkgzsCNekiJQI/6UQQAhIT8xUXOvP9/v/9AgEAOw==","img/unknown.gif":"R0lGODlhFAAUAOMNAAAAAAgICCAgIEBAQEhISFhYWGBgYHBwcH9/f4eHh5eXl7e3t+fn5////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQ78MlJq11D2U0FAAjHHd8nboR5bsAUrtb3wlIq05Pd4vXOWzPejacLwnS/RypZATE/iZ8tkCwADEyGJAIAOw==","img/unlock.gif":"R0lGODlhEAAQANU/AOHh4sbGx83Nzvz8/Pr6+/b29sjIyNHS0uXm593e3u7u79bW1rW1tdnZ2fT19b6+vllZW/T29vHy8/Hx8ezs7PLy8+3u7+3t7uvq68LCw72+v/j4+Nra2v7+/tja2/n5+err7O/w8Pf3+PP09WNhYuHi4+nq6svNztvc3e/v79fX1/79/dfZ26mqq7i6usfIyMXGxv3+/t3f4MTExLa3uOvt7fr5+by8vL+/v729vvj5+cfHx/n4+crKyv///////yH5BAEAAD8ALAAAAAAQABAAAAanwJ9wSCwafyPOYTE5CjuNEsiCOBgIx4YEoHloPAmc0QRCZQZCgefEKaoiGdGwI5CJiQfUrSgouYoOCE1EAgkMRAMEiRuMHwMCLIdDHBUUICYUChgIFCkXAkMNPqM+JS0AKwUOPj2hPgQ2PjQQDAMSEzoGQyo+PBsxLxABIikKBbpCvCIFAzgkOSIWNSM7u68fGxUXIRIhKQUBQwk7Bgbk5gEBMDMqP0EAOw==","img/up.gif":"R0lGODlhFAAUAOZAAP7+/g8PD3V1dQcHBwgICBERERAQEA4ODvj4+AMDAwEBARUVFQYGBjQ0ND09PfLy8q2trRYWFr+/v1tbW3R0dOPj476+voyMjI6OjikpKfv7+1BQUHp6eoCAgKGhoc/Pz8TExCUlJSIiIpmZmR4eHhISEgwMDA0NDRkZGQICAjIyMuTk5Nzc3KioqENDQ////3FxcRMTEx0dHRQUFLa2ti0tLc3Nze7u7ktLS7y8vP39/fz8/F1dXRgYGGlpaQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeEgEA6FUCFhoeIhhYLNImOiBgJF4+UQDw/Ey+Vjg0MKgibiAgkCTI2oYcfCz8zLaiGEAU/BRyvhR0HPwc4ALYbBD8DGTevADUpPwo9Eq8PKD/QJSOvIDHQPwY+rx4G1yYOO6gwJ9cMIiyoLgPXPwGoACEK0AECrysR7fW2OQQUtoYaDAUCADs=","img/upload.gif":"R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==","img/uploadimg.gif":"R0lGODlhEAAQAPcAAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjxAF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ8YKeeKoAaJpTipQjS6VypgkxRI9IkBQ4vMiyCY8Dd/MmNKJlA02cjjZqSQlTMMrUZSgEuRhVKEVnzJ8YNVwAxgmOc7wQBACwp0nhggzJIMoEoktCeg8YnHD0xfJr8wgUZAJQ40JXh5IMFACNCMNRSC1iSDpggkig7IAaNgkBg04OIbogMFlR5VFPRq+KkAAAKvn0AEQKMAwIAA7","img/vbk.gif":"R0lGODlhAgAaALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAACABoAAAQf8MnpXGuMrb2USmCCjMhxGKhRrAVBDPAgzEIQADgQAQA7","img/warning.gif":"R0lGODlhMgAyANU/AP359/2zc9DQ0PyjVP66g/vk1P2rZPeTPMq4rf21ef7Ck/2uaf69ifqZQ/7FmfudSrazsOTk5LeMb86OZOynds+KWP7Xt/2mWfvcxP7KoaqViMvBvPWZSv2wbvWud/fz8P2oXvSkY+69m/7AjvHNtfSUQq2imvOyhOyPQ/WiXOKJRP64fu2jbvedUfygT/q/lOWbaOybXOysgO/Dpf7Qqe20jf7Hnve5i/3t4Pa2iJSUlOCRV/agV//Jof///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqHRKdX4+1SyRdMqJtNnPqde7mQDgqYxMhm3S0cKL3XtpsHAnhU5mQfJNJA58PTYSEYBKAGuEPTImPolIIjaNNjYTApJGODmElzYOORpom0OMdJcOqwpupkIYc2yqrAoKNxJ4kj57s6G1CiMjMH+bM5WFoRkYGBnBwgwEh5JiZKo9AD4+ABkjDN8ELJCJNcmrDhba2gXf0QQrmYAFN7QOCunq7AT7KysepHko/LJni4Y6Hxj49UuQYMebNCRenLMVzMFBGu8WJgjgIRcYABSAQWOQTdsIjRsDdIhRLIsIis+8fSugDYDGADg7dFgwAVGV/w8eKI4Eh68Aw5Q6dy6IcaaKDFvCZLojYNGHhZQqdS5YYMBABU1TCuR41s5dvxXZRuTUurWrgRR3pPhgEbXdvowMcQBYq9QtCBAXHEohwUDq3bMMA2DAkXQr165/AQ+Y9gSkYYVHcdIowNbv3wugB6Bo2aSGXYUrEudE59gz6AsDYruo4JMJDg/gMKvOqtUz4NCxB7jgoCESEwpTEWNt3Bbyb9jBhbuYDVYJhgSHU+9uvAJDAQWRX0efTp64riMAWKDezrZDSR8ExI8n/6C+CtJGZqzAy77viIMWACcbeS7UV18DlBnxAQvK4cRbcwYkcFF00k1n4IENoGACEjKgxLRXX87hgwMIwRFY4IUNpNjAV0YU4IF2DjLnlgGfXdBBAtBVeKKBKqqIQnFFsJDZgxCGl+OA9KHYo4oqPCQECQEs15lrAuq4I4ZLNnDAlnEJISRfrTn3G4UmXvhAllpuueV9Q8QA5mM01nhkmUpmqaaaKuiAhwgh9OlnCCkEysOgPLRg6KEtcKDooouW4OijJdyppgR6DgFAARtkqummGyDg6aeghirqqJ5mWtsrqKaq6qpaBAEAOw==","img/wiggly.gif":"R0lGODlhFAAUAMZKAAAAAAICAgQEBAUFBQgICAoKCgsLCwwMDA8PDxAQEBERERUVFR0dHSwsLC8vLzIyMjMzMzQ0NDY2Njg4ODk5OTo6Ojs7Ozw8PEREREhISExMTFBQUFFRUVZWVllZWVtbW2FhYWRkZGdnZ29vb3V1dXd3d3l5eXp6en19fYGBgYODg46OjpaWlpycnJ6enp+fn6CgoKGhoaKioqampqqqqq2trbCwsLS0tLa2tr29vb6+vr+/v8TExMbGxsnJyc3Nzc/Pz9XW1tfX19vb29/f3+Dg4OHh4ebm5unp6erq6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeJgH+Cg4SFhoeIhUEpLYmHSBEGAC+Ohj49BzOVhkIHQH9FR0SbfzQENicPAAw8my4ACA4mKwE4pDIxQn8zAj6khCUKRjsjHSikIgQYCRUNAD+bMAsXLkcsAL+EIBB/STk3RaQZFjMUBAcNpB4DBRo1Hw6kQzE6giEb2YMOJPmCEBIT+qngIKLfoEAAOw==","img/zoombox.gif":"R0lGODlhFAAUAOZTAICAgOvz+ury+vn7/eny+ujx+ff6/b6HTcGPWvTs3Pbv5Ony+dSwcL2FTOHJuM2mYvH2+9Gqdu71++LLuefTuvHl2Nm7jOfToMOSW6xlP/L3/ObRr9/Fj/Ln2eXPqdKuhMqfZePNu9e1ffr29NKtd8ORVrmASLd5Us2kcdq7gPfw5dGrg+bRrvD2+93CkdKubcGOWMmbY9KtbPHm2N/Ep+TMrPfv5e/1+9i5i8yhZ+TOrPfx7byEUZdhRs6nY9e2fbZ7Uc2naObRud/Fo/Po2ta1f+zcv+DHk9e3fd3DkcmbYejVo8+pZa5tSPjx7dCoas+oYwAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAebgFOCg4SFhoeIiYqKCUkvTD5PFkSLRgxIGyoKOiQ5FIkJDB4GNwIBEANDMTOILj8GAQULBAISAygfiDIsLbK0AQEaNBiIUDZRyMnKiA8KUVLQ0dBRiEE1z9LR1Ic4EdjZ0IgdIN/ZACGIQsrJUgDuTogVKwgHDfQNSwApGTuLghMwOFw4oqSHP0EOeIgoUgLIQYRNTJwY8bDiwUAAOw==","img/zoomin.gif":"R0lGODlhFAAUAOYAAPTr4uny+vn7/T6DN+jx+dSwcPf6/fbv5L6HTeHJuFOeS1yoUu/1+zV5MPTs3Ony+YvGg+nXpdKuhPn7/t3Ckd7EjebRryprJuTOrNi5i72FTMqfZTJ0LNKubTBxK+jVo97Eo8OSW9KtbPHl2N/Fj/D2+2OyWfLn2ePMmb+LUOXPqde1fffw5d3DkdCoatm7jMGOWHa3bd7Dpuzz+ovHhePNu/P4/ODHky5vKcyhZ2WnXmGwV8+oY2usY9Grg8GPWs2mYsiaYMmbYc6nY/H3/J7RlZ/Sl9/Fo+bRrjN2LubRudGqdsORVvH2++LLuYbFfbyEUffx7eTMrPHm2LmASMqgb/r29JdhRprPkl+tVoLCffPo2rZ7Uffv5de2fezcv+71+/L3/ESLPefTuqxlP82naN/Ep9a1f8mbY82kcdq7gK5tSKbVnZDKiM+pZdKtd+z0+k2WRV6rVOfToLd5Ute3fVqbU2e2XPjx7byDT+ry+uvz+v///wAAAAAAAAAAACH5BAEAAHwALAAAAAAUABQAAAe/gHyCg4SFhoeIiYqJDi0dbkMuL1uLXwV1FiwHGG85Y4wFKgYMentNAkdoU4gUXgZ7BA8BemACaRKIIkglsbN7e2FmIYg8XXuzpXc7CwApiEAHM3qle1lsCgAIiGVSRL8mcjFFPWIDiBlLAgxwC0ZYT20QDYgnGyATNgpxOjR2STg1ECkJUkUGAAADtHBAUSEPHkQjfPxAoKGBhwsfIqghE2WRICcwSMy5IeSKR0EJoKw4w4TLSZRrqNCx8rLmy0AAOw==","img/zoomout.gif":"R0lGODlhFAAUAOYAAPTr4u/1+/n7/eny+uzz+tSwcPbv5Ojx+fRFSO71++waI/Ts3O4mLvdUVvpjYvxvbff6/fE1Or6HTeny+ez0+sGPWvjx7c2mYuPMmdKtd9Grg/D2+/Hl2PHm2MORVunXpbyEUc6nY9/Fj9a1f8mbY/H3/OfTuuoRHL+LUObRrvPo2vfw5d3Dkd7DptCoavn7/va2rvjy782kceDHk+LLueHJuNGqdvfv5eDHtvjIv/54dNu/h9i5i8qfZdm7jPH2+7uGUtKubde2fd7EjfSrpN7Eo9KuhM+oY7FyRffx7ebRuejVo8mbYeXPqbyDT8GNU9q7gN/Ep82naPL3/PfAt+zcv7uBTN3CkeTMrM+pZePNu8GOWL2FTMOSW5dhRrNzS/Ln2bmASMqgb/P4/KxlP+bRr9y+pNa0eefToNe1faVcM8iaYNe3fdKtbN/Fo8yhZ+TOrPOgm+ry+uvz+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAe9gHSCg4SFhoeIiYqJCyxBWSEuPiqLVQVsZSsGcBlvJowFTRABcnM/Am4kHYhXQhBzBxMDcgkCMkaIbSkbsbNzc1NRXYhHN3OzpXMECQAoiBcGBHLJBBQBABKIUlglvzoPDg0IEQyIPDYCARQPOVQwRHEKiGA9RS9j4eMMCidaiEprxLQAAMDMkzMYhjixgIiDhgoSuACxsmPJByhkkiwSRGOLCDQzmHjZKKgGiDQjPCAhKQiHmjBfYrCcyTIQADs=","img/controls/checkbox.gif":"R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tLS0szMzMzMzMzMzMzMzMzMzMzMzNLS0u7u7v///////////////////////9DQ0O3t7f///////////////////////+3t7dDQ0P///////////////////////8bGxv39/fv7+/v7+/v7+/v7+/v7++Pj4/39/cbGxv///////////////////////8LCwvn5+ff39/f39/f39/f39+vr65eXl/n5+cLCwv///////////////////////7+/v/b29oyMjOXl5fLy8uXl5YyMjIyMjPb29r+/v////////////////////////7q6uvHx8Xx8fHx8fNDQ0Hx8fHx8fN/f3/Hx8bq6uv///////////////////////7W1te7u7tnZ2Wtra2tra2tra9nZ2ejo6O7u7rW1tf///////////////////////7CwsOvr6+Pj49PT01xcXNPT0+Pj4+Pj4+vr67CwsP///////////////////////7Ozs9TU1Onp6ejo6Ojo6Ojo6Ojo6Onp6dTU1LOzs////////////////////+rq6r+/v52dnZSUlJSUlJSUlJSUlJSUlJSUlJ2dnb29vefn5/////////////////T09Obm5uXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fPz8////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7","img/controls/checkbox.png":"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","img/controls/close.gif":"R0lGODlhEAAQANUAAMczNfRxdPRzdPNydPNzddgqL+AsNN8sM8cpMOY2PuU2PsUgK+UwOfJVYPRja/NjavNja/Nka8UYJ8YZKMUZJ8YgLPJUYMUTJfE/UvA/UfJIWPFIWNRldN+cqMpdSc5uXspXRspYRslYRtWIfMlQQ9ymoMlHPslHP8hHP8c9OeBhW/WBfcc9OuNST/WAfvSAfuPExP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAZ8wJhwSCwaj0eYZ1QceWBEWKgVYgpHohYIKiyRXCvSp/QhvcIl4ghFEKhMqkHgZCVyWBHIw/FIcZAACg0NFgkASDEIDBsaGgwISBwVGJSUC39FHBOUBRIFGBkUmEIdF6AXHB0cphkXHUMwFwaoQ6sHF1xCsaNCq7mIwMExQQA7","img/controls/close2.gif":"R0lGODlhEAAQAPcAAP///////////////+DAv71xcKtGRatFRatHRsB5eebLy/////////////////////////////Lr67dmZbpZWd99f/SQlPOPkvORlNx4e7VTU7xxcfn39/////////////////Ls7K5RUM5oafaKjut2euZoa+RkZ+ZpbO15fPeMkMdiY7RiYvj4+P////////r6+rRpacthYu1zddtNTdI1Nc4rK80pJ84rKtI2N91SUvB5e8FcXLx+fv7+/v///9nJyatERO9tbdI8O8cgHGoMCngMCsIUEHgMCmoMCsghINZCQPJzc6U4N+3t7f///65xcctWVdVAPcMdGMAVEf///9XEw3YNCtXEw////8AWEcQgHNtJR7tQULuVlP///6JVVdtOTMUmIb0YEb0XEOPGxf///9XEw////+PGxL0XEb0ZEcgtJ89NS6Nrav7+/p5OTdpBPLwdFLoZELoYEHMPCtTEw////9XEw3MPCroZEboZEb0gGNREQJ1fXv39/ZRUVM47NrkcEbYaELcaENTEw////+LGxf///9TEw7caELYaEL8dE8Y/PJVnZ/z8/I5ycrQ+OsIdELMcEbMdEf///+HGxLMcEOHHxP///7McEbMcEMkfEag7OZqNjf7+/qmpqaE/PdYnG7UeELAeELAeELAeELAeELAeELAeELAeELceEMowKZJDQrq6uv///9bW1mphYaY5ONEmF7YfEK4fEK0gEa0gEK0gEa4fELgfENUnGac8O3hyceTk5P////b29q6url9WVqlBQMo0LMgmFL4jEboiEL4jEMglFsc4MKhFRGNaWsDAwPr6+v///////+7u7qysrF9cXJdQUKg+Pas9O7o+Oak8O6lAP5BQT2NjY7e3t/Ly8v////////////////T09MjIyIWFhV5eXmNYWHJVVV9XV2BgYI2Njc/Pz/f39/////////////////////////z8/O3t7dHR0bi4uK6urru7u9XV1fHx8f7+/v///////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7","img/controls/color.gif":"R0lGODlhEAAQAOZaAPr6+vj4+O/v7+Hh4b29vZiYmOPj4+W6YvPz82nK+uvr6/39/fz8/MLCwvHx8cDAwKWlpWTE9dfX16enp/VkxOXl5cfHx7Ozs2lp+u3t7fppabrlYvppymRk9aysrGLWYvXEZMpp+sr6acT1ZPrKacjIyPv7+/VkZP7+/uViumK65bCwsGJi5be3t+ViYrpi5bq6umTlZOrq6mnqaebm5sRk9fb29uzs7MTExPLy8tjY2NhdsF+24d1aseG2X91aWl/TX7bhX1pa3bZf4V2w2NhdXV1d2NiwXbFa3bBd2N2xWrHdWuFftlqx3bDYXV9f4VrOWt3d3V3LXeFfX+fn5/X19enp6YyMjMrKyv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAQABAAAAfWgBJYg4SFhBJaJVmLjI2MJVoWKEcHBwtFLi4LOykpKBZaOAw+JCQmUxoaJkwcHAw4Wg0ASiAgAT8nJwE9FBQADVoPAVXExcZVAQ9aBDZOGxs5OhUVOUkvLzYEWjAIQSIiAgMAAAJDISEIMFotDksjIzdRxDdINTUOLVoXAlb9/v9WBFzQsiKDlA8faBBRoYKGERYsMqzQ4kEGkBkzDPBIkMDAEwwYZHjQMsEKlBgxBjSJEGGAkA4drEzQUkABlZs4c1JRUEALhCtAgwoNCkGL0aNIkxoNBAA7","img/controls/date.gif":"R0lGODlhEAAQANU9AO3t7cXFxZOTk5GRkdnZ2U1NTenp6UeEv19fXzZjn6urq6enp4yMjJiYmJycnEKCx7u7u+Li4jRyrBdOijFoq66urlBQUOTk5PLy8rKyskKJ2YqKinp6esDAwMHBwUlJSVhYWLy8vPr6+ra2tsnJyYKCgmxsbKKiorCwsNLS0tbW1mFhYdvb29jY2HNzc+vr66WlpUdHR5mZmUh2uPT09FqW0+fn5+Hh4SJSkaCgoPHx8U+W3+Xl5f///wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAabwJ5wSCwKNbukcpnUCB+1g+RQq0antYeQMktgErNw9zujCCc43CLNVqcnQgiNYCHQ7vM6DSIM6f6AgX8oQgo8h4iJhyNCGQAAAQUFAZGTjxlCFQYGASQODQ0On5sVhTanHiYdA6wDpwpCCxcXDAgIDLUIGy0qOUIwERE2AgKnxCwiABxCJzfOz88pLysfQiU52NnZMi4xIEbgREEAOw==","img/controls/dropdown2.gif":"R0lGODlhEAAQALMPAObm5vLy8urq6uPj4/Hx8e3t7QBgpwBjuuXl5ejo6Ovr66CgoABmzJmZmfz8/P///yH5BAEAAA8ALAAAAAAQABAAAARL8MlJq7106b2c/98SjGMHgguhqubpLU0ct+5S3HfH7PthOAuFTGHi+V6CZLLFOL4SsgTtFwJYrbTTAiFDZFGDcPgb4mhcH4x6XYkAADs=","img/controls/edit.gif":"R0lGODlhDQAQAPcMALKysr29vb29vb29vb29vb29vbu7u7i4uLW1tc7Ozvn5+f39/f///729vfr6+vr6+vr6+vr6+vr6+vT09Orq6v///7a2tsnJyfn5+f///729vfr6+vr6+vr6+vr6+vr6+vLy8ubm5v///////7a2ts7Ozv///729vfr6+vr6+vr6+vr6+vr6+vT09Ojo6P///////////7W1tf///729vfr6+vr6+vr6+vr6+vr6+vf39/Dw8Ojo6Obm5urq6ri4uP///729vfr6+vr6+vr6+vr6+vr6+vn5+ff39/T09PLy8vT09Lu7u////729vfr6+ufi1+fi1+fi1+fh1+fh1+fi1+fi1////////////////6CgoPj4+N3Vxt3VxtvUxdrSw9rSw9vUxf///+qadOBfQOBfQP///6CgoPX19fX19fX19fDw8Ozs7Ozs7P///+fgu+BfQOBfQPcoDP///6CgoPDw8N3XzN3XzNfRxtPNwv////vwnP/mAJmZmfcoDPcoDP///6CgoOvr69nTyM/Kv8/Kv/////vxnP/sAP/pAP+ZAMJmKf///////6CgoObm5tTPxMnDuP////vynP/xAP/uAP+cAP+aAP///6CgoP///6CgoODg4M/Kv////86/av/2AP/zAP+eAP+cAP///+Dg4KCgoP///6CgoNvb28C6r////6GMEKGMEP+gAP+eAP///8C6r9vb26CgoP///6CgoNbW1snJyf///1pIDaGMENl1Bv///8nJycnJydbW1qCgoP///7KysqCgoKCgoP///////////////6CgoKCgoKCgoKCgoLKysv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANABAAAAjtAAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnzwICADs=","img/controls/file.gif":"R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==","img/controls/filelink.gif":"R0lGODlhEAAQAOZvAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAepgG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJg2ckAF9ZZkwALihQGGA8b1wwDmoHWj5FVQdCYmtRXm9IOlQnbgQOIQRlKTgjSiZvABMVBQ8ZMxc9DwUVEwCCBgEQFAsCAwMCCxQQAQaCEJT4IYIBiwBtVDA4QmYIAkENJERIoCDHmA8aFCSIIKGBq48gQ2oKBAA7","img/controls/group.gif":"R0lGODlhEAAQANUmAHOj41xcXCUlJVJSUrjR8jAwMDw8PHd3d0dHR25ubpu+64yz55/A7WZmZpa76hsbG3R0dJG26oWv5xEREUFBQZe66qXE73el46fF7YCr5Z6/66/L73up5bPN8KLC7Zq964Su5rbP8RQUFKvH7wkJCaLD7v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZNQJNwSCwaj8gkscRQOCILSYZzAVgBwhJhG+psRhiP5lPBmiyltLr5jIKU8LgQkmgEBghDQfCYkORHB4J0dnh6AoBGd3l7DyIUiZGSRUEAOw==","img/controls/hidden.gif":"R0lGODlhEAAQAMQRAOvr6/Ly8sTExLu7u7S0tOjo6OLi4uzs7KCgoIqKisjIyN7e3vz8/Onp6ePj4/Dw8Pf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABEALAAAAAAQABAAAAVCYCSOZGmeaKqmQgIkLvzGroAseK7rSOH8wGCwQGgYj0gkYfBoOp/PwQFCrVqtBwFjy+12BYaAQiEmj8tiw2rNbrdDADs=","img/controls/html.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHUSURBVDjLxZM7a1RhEIafc3J2z6qJkIuCKChItBNSBQ0iIlZiK4gWItj6HwRbC7FRf4CVnSCIkH9gJVjYiCDximCyZ7/zfXOz2A0I2qVwmmFg3rm870wVEezFavZoey7Q3Hv+/Z87qDsiTlZFBJIGKStZlFSCTpyUlAZgfXXfH9BAPTCberVANBB3RAJRR8wp6jzd/DotALA9UcyZgZxis2QNijpZjSJBVqeIszTfkMY65cAjuHxmgSzGlbUFrp1d5ObGErcuLLNxep5hU3H93AqjYcXti4cZZ2OSDU9CnVURddqmIovTDmoev/5GVcGDF585tjzg1JGWo0tDDgxrThxq6XojieOd0nRZ6dVpBxU3zi/T1BVdViKCcTbcYX11ngB6cca9MSlGlprojHqcglycVJyHL79Q1Jn0TgBdb1gEbz9OeL81IYsRAakYvQSeC/WvVOiLE8GsM4xnvsuGe/Do1RY/dpRenIP753hyZxURJ3JQXbr/Lq6uLfLpZ6aIk9XJssv8VK5dNcQcmcl7fKVl89kHmu0dJRVjYTRHGVSMpELaQLVCtEY8EAvMHHUwn067+0LVybtvok9KSODZiaKEOJENihPm01gD3P+62Oq/f+Nv2d9y2D8jLUEAAAAASUVORK5CYII=","img/controls/htmleditor.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKbSURBVBgZBcFNiFVlGADg5/vOuffOdcb5cbKcjUn5V7poFJEiKMKybDYFgdSmKAiiokW1aNHSXWQQuGwR2KJFq2hTkFqUEbZRMzQIJS1nbPxjnHvvOd/b86SI8OSHx1/uT/ZeyslujCGBhEhE0ZTy5/Vr8V26ufzeiSMLQ4AUEQ4c+vHE52/tfiDnNB1UAoAICIu3R47+et0/FwcrZ0+fW/fDkYUB1JCrtK1bV9NnrqpySiSi0EbRNOHOqPX4lrX2bq2dLItromxffuzNr2eOffrsIENKaSIiqm6VdTJ1ospUiZTIEoq5ya6FPXM2be7168nxz6De+c7vhx+a39h/48tF8zN9nYqfrtyx956+4aj49swVMxPTtsyuc+9EpdepbXp41rGf/3oBL+ZmEKfunqiNBfv3TDl+acXqMDyxa8rlxaEUvH5gvQvXkpMXG9+fX9HrVFKdG8iKX26sFM/vGFen7PbSsq29WpWT01eW7Ns2Z02v0utWxrqVsW5HyKQM6mht7lX8duGOj7+5ZPv96y3913r/i8sU9j86Y9QGKUttEjkURAB1jMq4YClluWV6NUlTterSooN7N8opqasgEkFI2kJbgBxDvWiTs+evOvTKg/qdZDgqbq0Uj+yaBEmSIqlzUuVkrJO0TYC6jGKuSnSa0O9mf1weuNHe9PTWDUqEErSFQAki0amyZtiAOrVp6tz5qw6/ep8miqlOdnG59cy+WSWAKlOhkxMoEUaDAvKFr3Z+MBhdX51eW4PXDm7wyds7AAAAQJQwWm1AhmZQSlNKAAAAAADUdS5NWxqoYbTa/jvere6SRuMRkQUFMNWvQQT9TpaS0qnSrbYpf0MNKcVHT717/LmU0nyINQCCQAggwGop5VSdHYX/AYn4JwmEykruAAAAAElFTkSuQmCC","img/controls/img.gif":"R0lGODlhEAAQAPevAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAj3AF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ6iSFfLEUQNE05xUoBpdKrWqZJIUS/SIAEGJz4sgm/B0ffVmxpROpGywkcPJTiUpYdZeiaIElSAPowqt+JThA6u1G8AwyXGGB4IQEO48MXSYIRlEkUhsSUDnEYsbnr5UfmUGiYJMGGpM8PJAgoESoxlpKAKpTQRJF0wQGZQFwNomMWjAwTFEBwwuO6os6rGA4YACBACwmk4dAIECA14FBAA7","img/controls/input.gif":"R0lGODlhEAAQAMQSAL6+vpycnHNzc4KCgsPDw93d3UxMTJiYmLGxscHBwba2ts7OzsXFxcnJyampqdvb2+zs7AAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAAQABAAAAU/oCSOZGmeaKqqzOG8cIw8IgMYggDtPPTQEpsiQujxfjUAJGI8Am2DSKDpexIGgWkTKVkkGuCwmFFYmc/otDoEADs=","img/controls/jsdraw.gif":"R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==","img/controls/movebottom3.gif":"R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFGBwoUKDAxwmhBjRIcWKCy9iRKhxI8OOEztiFCnwI0mQEkMeTMnxpMuCAQEAOw==","img/controls/movedown3.gif":"R0lGODlhEAAQAJEAAAAAAP///xUFp////yH5BAEAAAMALAAAAAAQABAAAAIcnI+py50CoxRqymUjy43360yOoY1DaVLmyrZDAQA7","img/controls/movetop3.gif":"R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFFBwoUODECNKnCiQIcWKCC8OSHhxIUWPEh1ahCgyosiMBk+OPKhypUaBAQEAOw==","img/controls/moveup3.gif":"R0lGODlhEAAQAJEAAAAAAP///yYIsf///yH5BAEAAAMALAAAAAAQABAAAAIdnI+py+0j3hFUwvqozjq2vjEgpoxhYpJTqlruixQAOw==","img/controls/multiline.gif":"R0lGODlhEAAQALMPAHd3d1JSUlxcXEdHRzAwMCUlJTw8PGZmZnR0dBsbG25ubhQUFBEREQkJCUFBQf///yH5BAEAAA8ALAAAAAAQABAAAAQk8MlJq704680p+IhyCMFgEEV3hWN5FgnTqBZposni0Hzv/7wIADs=","img/controls/note.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGGSURBVDjLxZO/alRBFMZ/c6MmomKhBLv4AIJiYekjCFopKSzyCnkGW99BbMTOQhsrBcFKsLCJhRYBNYYsWXNn5s6Z81nMGu+626XwFDOHge/PmfkmSOIk1XHCOvWn0ZdXsulPpAFZQbUgG5BlVDOURLWELEJJXLz3JMwTVOP0tfsLChIEmC2A4OD5g0UHebLLWQl5bAcBJAcC4i9D6FZRiUtGMMOHb9j0PXhGGtruA3hCnpBHzly+i5d+CUHNgCFPoDIDjcEJeQ8yNCxxYL/2m+U55Yh7mpFE8NhE7GiRwGsi7bzF8meoA8io6ZC1jfWm7AnVCPLld1DjPna4y/kbm4Djw1emH56h2oN6VFNzIKOOCI6DFCTKj48cvN6m9jtQC64yAjcXrjrnoBu/94VbDymTPSZvHs/A6RgsT0gZqC1M/46AJcJKx7mbW8RPL5m+e8HKpeusXbmNI1AFDHBkmZHzFpO9p3fkJSNLqEQsfgc6uhCQJRgy7qlF2ypXHynMEfy33/gbubc6XKsT2+MAAAAASUVORK5CYII=","img/controls/number.gif":"R0lGODlhEAAQANUgAODg4Li4uPX19Xt7e97e3oODg5OTk4uLi/f39+/v7+zs7MLCwn9/f+Hh4ZaWloeHh66urujo6PHx8Y+Pj/Dw8Pz8/Onp6dfX1/Ly8tzc3Pv7++Xl5dPT03d3d8zMzJmZmf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACAALAAAAAAQABAAAAZxQJBwSCwaj8jkcPFpOp/PhUODECA02Gy24jAIJBQJZkwmCwyThMXT8Vje67YlMTkoNh38Zq/PKw4PEQAdg4OEbIQRDwUbGR2OGZGSjxsFDA0XAR0BF52ZmxcNDAMEHKanqKYEAxAdrq+wsBBKtLW2QkEAOw==","img/controls/plaintext.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABjSURBVCjPY/zPgB8wMVCqgAVElP//x/AHDH+D4S8w/sWwl5GBgfE/MSYU/Ifphej8xbCLEaaAOBNS/yPbjIC3iHZD5P9faHqvk+gGbzQTYD76TLQbbP//hOqE6f5AvBsIRhYAysRMHy5Vf6kAAAAASUVORK5CYII=","img/controls/plate.gif":"R0lGODlhEAAQAOZ2AKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAQABAAAAfGgHaCg4SFhoeFCSY0MAFRXQgFAQUDA1UEAysQdBkGPjEdUgYgABUOHgEWUxhjClgCYBAKSw0MJF4ubxMyAG0CKVtwdR8KHB1zZigzWklNDiQVTAwZC2sjVwEnHDkMF1k9OyJGEkQaOAhAamE6Gw1OByxPDQ5fFioRCB8/PAdCABNKFrwQUyMOhQRDqAi4cUADAAkYFqSh4MZAiBJnWiAREOQICDlkRogoE4LLhggEPBSxwmYAlAsFbKB5kKDEAwKIcurcqTMQADs=","img/controls/plates.gif":"R0lGODlhEAAQANU0AJyUlIF1dYd8fIN2dn9zc5+YmIF0dH5ycpaOjoN4eKqkpJmSkp6WlqyoqLy6uqGamp2Wlqynp6umprq3t4h9fb67u5uTk7KtrZ6Xl8G/v5iQkL26usnJycjIyIuBgb+9vaGZmbSwsKymprCrq4V5ea+srK2oqK+rq6Kbm52VlbWxsa2pqYV6erKurp+Xl4R4eL27u6mkpJqSkv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADQALAAAAAAQABAAAAZxQJpwSCwaj8ikUnlQCBAFQywBWASKsZl2yy0OZs1ndFq9CmWzLHc9RH/DUCnVSiPM0LFOaZKRcBofDittMwMRHjIoJBECLiksQ3YyMA8mKgAVGC0jDEUyDg8NIQAbDBcnEEUEIhQaIAESLxAWA0u2SUEAOw==","img/controls/radio.gif":"R0lGODlhEAAQANUjANfX1/Ly8nJycuTk5MnJyenp6eDg4OLi4r+/v9bW1s/Pz/b29qKiorKysoaGhuvr67u7u+7u7vj4+Ojo6Lm5uby8vJycnMTExKOjo5SUlIKCgu3t7Y+Pj8vLy9TU1Nra2vv7++Pj48zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAQABAAAAZmwJFwSCwaj8gk8pEQiRKPpEFUAIEKIsOxQFhYrQtCwagISQAYDEASUhgRgUDG4cjEEUZIZKMRCDQbERBGFwATFX4VEwAXRgcNAwMhIZENB0cEDB2THQwESB8UFhwcFhQeSqmqq0ZBADs=","img/controls/radiobutton.gif":"R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tjY2M7Ozs7OztjY2O7u7v///////////////////////////////////+Li4s3Nzerq6vv7+/v7++rq6s3NzeLi4v///////////////////////////+zs7MrKyvb29vv7+/v7+/v7+/v7+/b29srKyuzs7P///////////////////////9HR0eTk5Pj4+NfX16Ojo6Ojo9fX1/j4+OTk5NHR0f///////////////////////8HBwfLy8vLy8pSUlIaGhoaGhpSUlPLy8vLy8sHBwf///////////////////////729ve7u7u3t7YKCgnJycnJycoKCgu3t7e7u7r29vf///////////////////////8bGxtjY2Ojo6Ly8vHJycnJycry8vOjo6NjY2MbGxv///////////////////////+Xl5bOzs+Tk5OTk5OPj4+Pj4+Tk5OTk5LOzs+Xl5f///////////////////////////8vLy6Ojo8vLy+Pj4+Pj48vLy6Ojo8vLy/////////////////////////////r6+t3d3bu7u56enpGRkZGRkZ6enru7u9fX1/X19f////////////////////////z8/O7u7uXl5eXl5eXl5eXl5eXl5eXl5evr6/r6+v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7","img/controls/richtext.gif":"R0lGODlhEAAQAPeMAHeAicba6Mzd6rXO377T4oqSmrrG0v+iKKi2xrzH08jZ57bCztzm7//hpomiuYqjunGIoo2hteTr8oqgtoqRmMvc6e7z+NXh7J+4zLrH06F5SYSds6W3x2mDnN2tbKK0xYearbbBzcqXWZSPh+bq7cSUViVEY5eam0ZigN7p887d6Y2UnNLj7kZfeLGHTs3c6OvSod/r87XAzLzI1LjE0Hd0cHiBi++9c8bKyM7e7Onv9cLX5ufu9tyq1LWMVbrAxNbl79SsyYiesvT09OPi4RM1VI6lut7n8KF7Tb3J1WmBnPn8/tXi7MbP2bTN373S4rvH0/D1+dbi7cSOyOTs85yQgdHg7Nuradzp8fH6/v+iIsna6NXk72qFovP4/LK0t9nm8Obl5XR+ilRvi5uywvX5/IGZsi9ObLjQ4Y54V//jqYZ3f93n8MXa6HKKo7adfjtXdtnl7+Xw+eHr8+Hg3/+gJoaft8KptY2lutjY2I+mvP/ip4ecsP/hpezq55yZlfj7/v+hJ6N7TOfv9+zy+Nusauv0+7Srt3aCjuLi4IuSmsfb6f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIwALAAAAAAQABAAAAjXABkJHEiwICMSC0IsoGHAQAYoSWYkSNBE4IoYARZp1BigY4A2CAQqYoHBwYMHDuygGcDSyQeRQDYYcTNGT4cdBHI+ISMSjAIFE1Dk2CKgaIVFPYIwUoTlhQohcLhYUQIBQpcfh6bcUTTnghQ+Z1IwiRMBTyEcJ9aEKcCDwREQJgYxYGPGRQMtNQQWICRBR4siMqjI8bCnTgkOIstYiAJoiRdDV/oEEpElJKMvNgBoBiDGR4MDGhABoGCQ0ZA3ag4goVN6oB8YNwQlaj1wRJoqRGgP/JOHdkAAOw==","img/controls/select.gif":"R0lGODlhEAAQANUhAJWVlaurqyYfQjUqNubMp/f//z0lJ2eGpvP5/P//89PKuvr15J1/Z//77LzE4KnM5I643MScdF6Gq////F6IrZRpTTMxLq/V5rW/3CwvMfn//511XMq3rh4kR9/Dnqqqqv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAAQABAAAAZVwJBwSCwaj8WPcslcAoSgqHQqDUCpWNDnCppwMFOFQ8sFRQSPqGcAIYemi0rnQjBQEG5qY2PJSApRW29UCQwHGlKCWViKi1ONjlFWIU2VSk9ImZpFQQA7","img/controls/sequence.gif":"R0lGODlhEAAQANUmALu7u8TExK6urrW1tcPDw7Kysqmpqb29vcfHx9LS0ri4uNnZ2ZmZmZycnM/Pz8DAwM3NzZeXl56ent3d3aKiopiYmNTU1Kurq7CwsNbW1svLy6enp8bGxtvb26SkpNHR0aOjo6qqqt/f362trbGxscrKyv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZVQJNwSCwaj8ikUnkhFRSAwyMQQJSuw5DDkbBkFovORDQpDQ0jQWEQfRCq2KV8GWE0JBSP4aJmH4YRBAQcVhoQEB9dAEMVFXZ4IBsGAhgDCnOYmZpIQQA7","img/controls/set.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoJJREFUeNqkU01oE1EQnk02iTFQE7QihUKRkKTF1iU9+FdQCoWYgAcPegkIeiiIWiHgwUvpQXs1Ggo99OYlFwUhWAhYhZJWUmhMxJbYYk1LFDcmJraSv911vjQbevPgg9kZ5vu+eW9n3hM0TaP/WSI+gUCADAYDmUwmEgSBUNRoNJ5jaKjNSyuKsqRjjUaDVFWlWCy2X0BfDJ5nd5r9KxZI0Wh0BuRgMHibcznGrrD/wD6hawwHxBdcLte12dnZGYfDcYOFhkJBpnL5F3Y0IAcMHHB1nYAj+Xw+xHeZ8FSWf1BPTw+trqY2JElyAkilUhsej8dZKhWpu/s4jY+P3+P0s/n5+f0TVCoVqlarL0Oh0KTZbCZZlmlgoN+pqgrBEO/u/iZg4IALTecX+BQX6/X69Xw+v8e7bYqiSMvLy+t+f2AGhhg5YOCAC43+7+T1eh+srCS1hYU32tJSQkun09rg4NA0TwLTIMTIAQMHXGigbU2hVqsZq9UaNZsKKYrKoxRZKDYwKizEyAEDB1xoOk3kzo6xP4PExMT9WyMjl/q2t7+npqYevkBucvLx1d7eE9Li4tutcPjJXEsoCO+z2WxcP0GcC3zmDt8ZHj7bVyyWyO32SLHYOwl4ufyTdna+ELCuriN2nlSEC2x1mshdRZGbkchcSJaLfCOtFI+//prLbRIMMXLAwAEXmk4T+ZLALo+Ojj1PJtc1t7s/bLfbHyUSGQ2GGDlg4IALTesd6Y8JY7JarX6bzTZtsVhOwq+tfdMymZx2MAcOuPrmrSYKaDHRUbZjbIcA8sM6xQ9sADFP4xNf54/t21tnk9kKrG3qBdCLw20T//GCFbY9tj+sVf8KMAACOoVxz9PPRwAAAABJRU5ErkJggg==","img/controls/sketches.gif":"R0lGODlhEAAQANUrAPp7VIqqAP94R4jG9YmtAIuqAP2mik6p8f/bxE2p8fKzfHS26YitAFul5+jryKe+OqzAPPymi9Px/9zko9DbgZCxD5jb/++Uc/17U/x7Uk6p8E6o8P97UFul446rALHk/8Xp/5PC7v7NsY+qAF2k5V2k4d3kt+6Uc5KyEfXFmXq25v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZIwJVwSCwaj8ikcslsGh+BAmQVKnUGKwMAEBEGTI7RigSSbFYZEQLgnVA8q8bHklhxUgqMsMIgoFYqGgcLKycCAhdOiouMjYxBADs=","img/controls/table.gif":"R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgICAgP///////4CAgICAgP///////4CAgICAgICAgP///////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7","img/controls/table2.gif":"R0lGODlhEAAQAMQeAJ2dncLCwqKiov7+/b+/v729vaenp/Ly7XC6DbS0tPn59qysrGqzCfv7+bi4uJPMRLKysq6uru/v79/f3/T09PDw65qamsPwc3W/EKioqJfbKWWsBrq6uvz8/P///wAAACH5BAEAAB4ALAAAAAAQABAAAAV1oCeOZCk+WKqu6SMiVyzPMSIyWq7vOSNuwKBQKAoMOp0AEqnsDAKiwrFDWFKRg4LIwel6v12HCKKQSBJmM1qigIgWDQolIpfTKY2FyJDp+/99BiICBxMTAoaGiBMHAiIAFZGQkRWTlSIcFpqbnJocJqChoiMhADs=","img/controls/tabtext.png":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVDjLY/j//z8DJZiBKgbkzH9cMHXX6wcgmiwDQJq3nv/4H0SD+OXl5dlA/L+kpOR/QUHB/+zs7P+pqan/ExIS/kdGRv4PDg7+T10XDHwgpsx8VNC56eWDkJ675Hmhbf3zB0uPvP1fuvQpOBDj4uKyIyIi/gcGBv738vL67+zs/N/Gxua/iYnJf11d3f9qamqogRjQcaugZPHjB66V14ZqINrmXyqIn3bvgXXeJfK8ANLcv+3lfxAN4hsZGWVra2v/V1FR+S8nJ/dfXFz8v5CQ0H8eHp7/7Ozs/5mZmVEDEWQzRS6gBAMAYBDQP57x26IAAAAASUVORK5CYII=","img/controls/text.gif":"R0lGODlhEAAQAJECAHt7ewAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIdlI+py60Bo3wHGhCosdtxt2VgOJLlB6KMpJbuqxQAOw==","img/ext/avi.gif":"R0lGODlhEAAQAPfTAIep3K+zu1dgcf///1hhcszV/0Sm9+tQPn+HtO31/vb29i42PLHG8Ddt9uz0/vf6/19zf/H4/rXI8uvz/YuOuPP4/h0jK+fx/W53h1fPVO72/riWOKW97jRJa6i/76/D8NDk/KWz2qvB8LmYHOTq8vb396Wrti42TExYa9PV2C89QDZEV7zAx4F5c3VpKjVHXbrM89Pm/OXn6tTm/LrJ9D5LXkKT4KvB5/X6/lx+xamt//T5/vXy9ik1RKqz9Xl3LFZjpbjU9Ty3PlVfcFmV2k15xnuElFB3j5Sgq83b8G18rrLA6dnc4P2kl11lds3Z6mV7gDNGkLzQ6MyuFtvb3OyLfzFg5n6Is9fe9BwncJCY6ntGSYtjZmeR/02feNP6/4Sj1lbQWKC29XmMo7vY92Nse4Hrgfj7/16e/1U0RFCM/7fJ8uf5/x0kMdzFg/v9//D2/tC6cQENZLG1vXmdx7jH2c3i+INrdIZocFhmjebx/XqCjWHFYdDS2Jur/0FWZbu/yLm9wvnUz8Xd+rK1upW86LHG9vRMM4qQnNjo/KHF8v2aipG342Jzi11lb0Bjptu7G+nHNJfHun2b8pukHpOapvv+/2/ddejUHoB2gPb//+zACne06jCkM+3//9bh9hggKDpt8/H3/vf7//b7/3WQu+Lv/fi0qT9KZ8vh/Ke42fh6a9rq/Sk6hLfR8rS3v5yp4Je75FFsirzH4YCbzurq6vY+J7HF8eny/mRtfJX6kpaz/ygwOoeDioWFj2SCeF2Ibuzz/aSkL2dwgUKcR4mPtf///c2ouNjm/zVn5sLU9///+r3N84ir3jhfv6fI6/54ZAEQa7Gztf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAQABAAAAj/AKdNA0CwYDMwAEgIXDhwgKUzOCJoCAaAUyMTTBYCeDNqh6gEEy4YMGDDCCAZAgE8qADHAS49pgoU8HGlUp9pCkr5utMC2C8kT1glmkEDA4sShPBUaXJKlxk+UOrEAMHMyZwUXKAtEsQDi6RLGSBISQVDQIBeB1Z9cWWHDTItYYiNGbTG7BZbx8jkKELrhg4vQv4EkWA2zaElDKLIiQbEz5FOKp7dMtuhgaEkrbIoCbErE6UFsT6YHWZl0jJVs0h5ErNhxApGIsxKc6ZGmbEBmj7FgeRCViEPZmvtIYKmCyw3kTAJe0FHEQcCAaZRQfUoWahNU36cyIOgGIVcrwQGEXLEywKoNj1qoBhCoAyiaQEBADs=","img/ext/bmp.gif":"R0lGODlhEAAQAPesAHV+jMTIztTX3dG9PVxmdv/ozaKosuvs7+ns72NqeZhweOZ3YFpmd/fPFGVqe5CXo8/R12x1hdbb37q4vuHi42hygNrc4N7f4pGXpF9unmhte1Rrn/h3K9mqUbGbVfP09vLz9VebXpQ5P7S5wZLAxNV3MKe/y8C1q/Hw8bvBx+LIv2x7jryODp6v0Jqgafj4+NDT2KOpsomVwNvg5picyE5wW52EL7G2v3iMnvHBB87Nz8fDyMm9S7uyitqmAVaU33qBJIyMkbOjnYSEkO3u8nV4glCWU+qsgH56homPp/CvmNTd393d6FJcbvXOp53CydPX4fDv8OCOVGOLP7OcGbPFz2Fqe1+jbOfo6+bo64W0wtTX3HR8ieXn6Yirlfr6+tfY3OLk5/1wIlyX3putuny4qs7Q06DHqM51N2JrfJKGF6utdrCyaby/x5MuEe99Q5qh1vxdG3Fue5GVoN5eO/vIWqqDjOZ9UIqPnb7G2/b3+I93juFwRpnB55G84mdfgHGq5I18O3l2gqKHJ9q3h87N0XV9jP7YrmN9179SQpY/I9Z1L+jp65iboYyYodDV2kq7OvJqKICIldnNykqIklqfar/rx5uvzvlPILm7v1uK0K15Yp+muJvQpdTb4LFKFre5vyJnBuzr7eQvDE+UVeXn68Cda4iQm8egncOeq6Slr8O8tf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKwALAAAAAAQABAAAAjeAFkdWlSAlcGDCA+i+VQiiI4oL74QkWEBC8JNbhQVWVWHAiMmNDK06YJwzx8NJ5xkMgMFzgYMMBD2+ZGgR4dGoFSkcoAHAsJLY7gMYOFISJxEclRdQNgCUZIGg/wcwSRC0ARRCJ9QqpHDBqA7oxQg2YECoSVIoXwE0kRngaQhhRIu6XSFxxoTb5QQmAMmoYQzpKiwISRmUpMYYRJ6ImFEjQspfMhYGXEg4QwtIYB44GAHB4AAIBIiqFJpiqlInBg8EKAnIatHXsrkQbUiwo1SrlllSXGqQhpDBrZ8QBgQADs=","img/ext/c.gif":"R0lGODlhEAAQAOZgAP///2yUP6Gx0IujR99XMv/YS99qWNyRN929LYG7SOlrN4WavPWBRTx0udtnVutvOEN9v/N8P9M/LoulxXmCot9XMd1UMd5UMfnKQ/WZbF6c1Fud1aW/XN5WMYezRpfKZvu/E71nWL5VSXimQmyUStqahrW/rf7BXdRgSuPCLv/CD6PDVv/RD5LHWFCPzGOQu7fLVO3NoehpNtFOMsuRRfOARZq8TJ69TNRALVqb0+tuOOhoNsTMdvKbcrKqfcB/MvGrRlt1N7HNVP7EWLnLUFmZ0/LEGqnCY//SD6CitNM/Lfq/EISdvtJPMv/LSP/ZT/N9Qv/ifv/kh/vEpECRz/Peu3aFptRALv/JQIq34XGUs9VALk1kWY+jYPSphfu+E////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAQABAAAAeZgGCCg4SFhoeIiYY8UVJVAABeGSUChRwwLAUYMT0ROyFFlYJHLURIBU9AETIWIlQalV0jHj5GBSdQChcSDi8uEAtBJCaQQzUKBLyQWg0BXA1ZAFMMOhVKMzSQNgEBCxAbSQwPBFtNByBOKwkDAWBMOVbjOCg/XyopHzcDgxMUHVcGDoDBsgSBkH2EJhgIOAgBggSKIkqcWCgQADs=","img/ext/cab.gif":"R0lGODlhEAAQAPfQANnh8Ovs7uDj59/h5ODi5YigzwF84t/g47Ou2QGV/FdhcwGZ/tnc4JKo09nd4bCz3nJ6ipSs2LDN8HuNndLb7YKPnpakzgST+EtvtwGX/QFly6/P9Kq52eDj5n2g0eTn6QFy2OXn6mOFv6a0zzh5zTd1yz9NbsXi+Yy24pmms+Xr9cjT6RGb+3F5iRMueguc/+Po9KCz5yZJhlm8/6Gi2QF53iVFgePl6AWM8QFav5ObtpCn0ySn/zd5zUm2/wGL8QGF7AGI73N7i93k8QGQ9hKf/3WYz9zf4qCz2XKS33N6io+ey6K02q211oKbzViM7MbZ9cbf9ml2iNPc7TpisC1lunaAkEJTnOry+7XE4qm63JTA7Oru9+/w8Wy7+ixcpoOo28HP7gkYNzFKep2w2LzJ5GJvglFbbaGrtiVAfAFv1I6l0gOZ/46k0iY7dQGN9HuImQFu0+Hj5h6j/azN75S65dDa7Dh71Xyg1ae43G6PyvH0+snh93eKmhI3cRYxfXJ5iAFqz55zWrC4wbugnKOy45Ov7eLl6AGB57vT8TRTupuv16+cdHiHmAGS+Z2p0Kl8SsPa8qDE6htAgjh97p/K8d/h48PQ59rLiStEs87H5XOs5Less67c/NvV6jFbnuTq9Cg9cQcwrUdstSdNi7PC4Qw9nXyQoNXX3Hqs3aa327nY9LK03kGy/y2q/ziv/3GV1H6Xy6a42zBjrXiEzaWw0z2A8FljdOzu73iImQF33JumrjhIb2aGu7nH45q/5qCo3MvW6ubn6sbS6AGP9f///2CO6y1CkBuj/9be74WPn9rd4XiMnW6W6UuH7rvR7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANAALAAAAAAQABAAAAj/AKElMVQImCdNCB7QYBUjDLSH0JrNaDWn04lVdCTV2VQlRYiHxny4YsFHRbIVvrSAIXXq0MMnr5BdiDQEEyNITPDIYCbgoTMeL4g92wKrwJpFRmz06QnNVpEFOCRggRKhwA49aXJ1eEiJTQIvxaIk2tBrkp8rjQg8vJOBiAEPKFL9qjSCQxMrAx6ScPRDl5g9oKYMy5KnFoQDD3u8AQJiDBcAhDgJQvJISV5oJYIgUoMBBoVdOpw0sADI0kMRNQwEGgUgWBlZZNosaYEY2odZcTRQsXOplKpYmY4JUQsN17IvOUzRUiTKRSgTt5QJgxiAwac/bnidUWCmwiA5XSBCDQvgYIIUOGhQHbkhPiAAOw==","img/ext/cdx.gif":"R0lGODlhEAAQAMZ/ACkyLh02KyE1LCFBMjk/PSFOOShQPSdWP0VOSi5XQ0JWTU9XUzdgTCtlSkFlVDxqU0loWkFuWTlxVzV1VzN2VD5zWl9qZWlpaWdqaUh2YDl9XEp6Y2J0bDiCXlB8Z3Fzc2N5cGt4ckCIZDyLZFaEb2h/dWaBdWiBdkGTbEiRbniCfXmCfkeWb0WXcEeackiac4CJhYCLho2Ji4mNi3qSiZCLjk6heY+Pj1SjflOngFGogl6khF2mhY+Wk1ipg5aVlV2ohXKijlWsg1irhm+oj5uampqenF2zjpqgnZminp+hoGG2k2K2k2K3lKSio2m1lWm2lWq2lme3lXS0l3a0mWm4mGm5lW64l3W3m2y6mnG6m267nKipqKuqq3i9oXy9oLCvsH7Ao37Bp7Gxsam1sIHCqYLDqILGqobFqonFrIvHsLG9ub65vJXIs5bLtbfBvaHMvK7KvqDVwKjVwqbWwqnXxLnVy8vRzsbTzrLaysPVzsDXzrne0L3f0cnm2////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeygH+Cg391ZoSIg31TBxVDbYmDbhQEYHohIlJwiHkjAj+CKFVrEC1bg1oHF4RdETZeSikkglAgfniIPRNcYhuCTyVLMH90O3ZhZ2x/Zb5/wEwrcgYWVAlCNMvNwE0rPkRxVkE8H9m/JToqSQ8cHgwId+V/USc1RYlYZGrNOEeJcx0A3qDJIGiMgxdZBrkYMIMPiwA3CCGRkCPNHyN7gBTAEOlPDA1XvjRY4KTjIBMKZCQKBAA7","img/ext/cer.gif":"R0lGODlhEAAQALMIAP///wCAAMDAwAAAAAAAgICAgP//AICAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAARYEMlJq7006M07CIUgCqFYFsEQCAbgtgAMCOk6H4Krt7RaAIfCAUBw5QAoVU6AIxgExWLPFnMVibxaQfbSIWtHgng8nh651Zl2VDKZap34ZgAY2O/4PAYTAQA7","img/ext/cfx.gif":"R0lGODlhEAAQANUmAACZ//7+/7Tb8Bij/7vk/+Hy/IjP/5nW/ySn/0S0/+74/w2e/zOt/8zr/xGg/9/y+m696vH4/ard/1W7/zmw/5nU+HHF7ave8iip/3C647DZ75rO602p3Njv+ZbM6k6486XU7XfJ/2G99G7E+Eey9GO66////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAaUQJNQqBkAjpChUog4DigOwGJpmhwBpUKgkDgmhosjSRsoBxrNgemIKTwIhEZAQVAERNKjIGA4hiRRDg8cVwB7XXEODAcABiCFe00AjAcKjRWQAQAJBn0EEpOMVwIEjXwAEwwIAQKQjARzXQxyrVcZZGZmBWkmYQAbEbkRH05DDE4dDwUWV2pKHlcIFFdJVCYXhSNLQQA7","img/ext/chm.gif":"R0lGODlhEAAQAKIHAP///4CAgP//AAAAAICAAMDAwAAAgP///yH5BAEAAAcALAAAAAAQABAAAANSeLpK7iweIqooRDZrS5BU5VjDEZznUHlBUZUBIBdDTQTqa8q8bOQXWA+ACwUVMSIKEKItksMb6ilDJUsRaI9QG2SQ1SUQuxsCxlQz1/bsumuSBAA7","img/ext/dll.gif":"R0lGODlhEAAQAPeVAIep3Fdgcf///6+zu9Ho/9br/+Lx/9zu/8vl/8Xi/1hhcsDg/6rU/2Nse8bJzrDX/0Sm94qQnO32/8zV/5eepbp7Fax8FpOapuTp7mRtfHfoTyCuFrXa/3e16rbY+e7w8uTq8nmeyc2YCbThuqi/76XS/5mZmVua25HMw9DS2O/+6fHDVnqPwtXf6J2t2YSj1pqo1kKT4WNzjNnc4ImEfKqz9cGbMq/D8NHb5vr6+kLFLLG1vWCHGW98rrvd/6rT/Oi0N7HF8ZmhzEeJPuXn6qfQnavB8O+8Rp1YEfLHZr3S6Kt2FvX7/4Oi1cG2sajT/QebBbXI8guYB9uwRiixHnXnTtTq/9/m7Or65dvi6tLS0r3N8253h32VyJacxoHsV5WZxIir3riYOJek0nOCtX+069OcG/j4+MPh/X69h+j0/4uRtsCTUIygm4Gcz8WQC9PUtbfJ8rzAx7S3v6W97lrVPPX6/9/u6ens8DijTHaIu7rJ9JOWwX6Is5eeyfb29ouOuKWrtqSkpPPz9KvU/eHw/8HAlNeePLrM811ldpim046+8HPmTSZ/Izx7Vru/yHuElNbAW/r9/yCIOKdpEf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJUALAAAAAAQABAAAAjpACsBGEgwzAsAICopXAhAgMOHAgB0kBFoBkOIkuwwgQAhBqRHRBQCyCEAC4U2IyRMmFCjz4UUIs+oYKRlyAYUBg4U2MNFjsg/XzQUaSQFCpoCBLYk2iFyUJoqdXRQceSBAAJEAQaI/HBnUh4ekUyIsZEgTlaFTfBIKARnRRJBFkQYinK2khsMagw4OXRkipk3NILU7XIlpxU2lIBUWLLoRl0WWXQSUFIGyYkQT4zU1dMCKYIEC34QesCARF0yOKyC9sGBdAk6CrRW6uEChqIxQvx4AcNnDaAMcxQ6iNBAQYDjyBU0iOCgUkAAOw==","img/ext/doc.gif":"R0lGODlhEAAQAOZ/AP///zZKZJCu1jdLZQlLsgU2ggZCm9zi9ERquZOr5ouk3ZOit5m24HeR1WCBzQEyeIml6VVtpGeK1Qg8iICe5pWkudzo+4Oc2trm++jw/eLs/O/0/TpamCpit9bk+6G63dPi+nij6/P3/pWz4uHq+9nm+6q+8djl+oit5cfa+Nfl+9Lh+oCn57HB166+1Agvi6260PL2/tbc6qq5z01qp6u60enw/VV7zig+bc7e+fDy+pamu+Ls+5243iFMms7e+DppuKS73aW83HeKnEJuxMzd+PT3/nyX2Iqu5NLi+trn+6W0yjJbtoyv5J643+jv/IWs5pGx4t/q+3ul6PT4/eHs/F11q0BmtI+x46+831J3yuXt/F99w6i2zVh+0Wd+s7rF1ISr5tfl+t3p+/P4/srb+Onw/Dhhrunx/ebu/O/1/ZW04uHr+5movq290oGn58nS4tbk+qa2y9Pi++30/Ul0zLLC2NDg+ZyrwHyk6bfI9LDA1ufv/OTt/Mnb+f///yH5BAEAAH8ALAAAAAAQABAAAAfigH+Cdi17Lm41M11yS4J/CQkQFEcSXlpEHSJ0eAOCCQCgoaAERhsVYJ0QJhcOMg4HEQoEVGoLA7cUBxdcBwgHNEMEAgJoQkEDDQANCFk+ChxwBmQCZlUfARIAXwhWBUw4AAYxAmlSPQE3ABEcegUFMAATGwJ9YwwBdQAvZzoFV6AFhpHAMCIAEFGiHjzRYCEOlgAdCEg0QHFCgQfDVKxAEsBRmww2MvDZwsaCGBA5oHQUtIOHhmEwBfwo82blnwoYlJQ44WHOnSJ+UuSxuSCJEwZrojRBEYbFlBA2A0idSnVqIAA7","img/ext/eps.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAP7+/v39/fz8/PX19crKysnJycfHx7y8vLKysrCwsJWVlSYmJicszCUqsi4z1zxB21FW3GBk4m5y5Hx/55CT6vn5+fLy8uzs7OLi4tvb29HR0cjIyMTExMHBwbq6ura2trOzs7GxsaWlpZSUlIiIiCwsLB8fH////yH5BAEAAP8ALAAAAAAQABAAAAjTAP8JjHcvXziD4cLheyew4T967ba5c/cOXj144eAJZLdOXbqP6EKi06ctXsZ/7NKdO2euJTly5fhpKxnu3bqVLM29LFfOCj9++/TFu9lSJ8xyqt5V9LavXkNvESXCszeRorxvT9+J27r12zt327bdexpIXz1v87jpYwW2Hbin8OLJm9et2wp939q5fZpN27tudOuKy/tWoLe+futy8yZuG6vC/7xhQ/yOGzd64rIBwPcUm2fP7uTZEwcAAGR6nz1nexdoW+lwT1mNm0273zh/rL4FBAA7","img/ext/exe.gif":"R0lGODlhEAAQAKIFAP///4CAgAAAAMDAwAAAv////wAAAAAAACH5BAEAAAUALAAAAAAQABAAAAM4WLrcFTDKCYe9+AYRBvlg+G2dSAACipID5XIDIM+0zNY4cOf0ztuw38z3I/JIrpdgyWw6BY7oIgEAOw==","img/ext/fasta.gif":"R0lGODlhEAAQAIQQAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZPz+/P///////////////////////////////////////////////////////////////yH5BAEKAA8ALAAAAAAQABAAAAVe4COOC7OM6JgoTqukKOMyDPIk8KMcecGkC14OcQCgAAEc7EDIiRIJRmDgOKEWBGqrJbCKiFuFwrAwpgKOmjMmyCG9IkYzN4A/AAXlqJBeMxQCLQc2TiwOCnYwCHojIQA7","img/ext/fdf.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMfHx7KysrCwsIsBA3h4eXd3dyYmJvMUGP8iJf9DRv9UV/91d/59gOfn6u7u8Hd3ePT09fDw8e3t7uvr7Onp6t/f4Nra27a2t/v7+/Ly8ujo6Ofn5+Li4sTExL29vbGxsaysrIiIiHt7e3Nzc2FhYVlZWR8fH////yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JdPfunjaD2rRlkyew4b969Nq1i0iwnTZ6AslVEBeuI4eP36zAa4cP4zgO4L59G8FyxJp88EZqW1cBXMqVLI9ss5IvnxUr7r5tG0qU6Ll9+/jlq9cQ27pz5tKho6cu3jpuK+w1XdfN3DV0/cLG02fuXVN1XdGpW7dOHTp96LI1Tcct3TV6Yfu128dOrkBs5rjFkycvnuF03eb5/QeYm7yv/fj1C2xuMeDEUdNpDqzOcmBuoEGfG71ucT11qFOzZceunLamrLzJni3bHyt7AQEAOw==","img/ext/folder.gif":"R0lGODlhEAAQANUAAP7+mP7+/ltfabO6ztXe9v7TbsSRLP7fev7qhP72kLrC187W7f7zjcuYM7KAGv7LZm1yfsqXMqeuwcaTLplnAZ9tB7eEH6JwCnV6h5hmALyJJK17Ff7lgLSBHJtpA8iVMFxgap1rBcGOKa99F7mGIb+MJ6p4Es7X7r6LJraDHj9CSbnB1qRyDNKfOtuoQ/fEX7uII+WyTbOAG6d1D+67Vv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAQABAAAAaQwJqQQCQIj0hhI/KZKBZJZCNADYgkiyJRGQB4AVZSquMYPWuRBGO9rlI3mBXhg+AY7vgSzCIrKyYHBm6DHAEXGAYFDV+MXi8AFSAiD2lqlpY0kAIllI11dTGaGp0HpaalLqIPFgAFrq+uLZp/ZRsmMywXFSEeFBkqEAsSEALFxscCEBI1CwoDz9DRz1BR1UJBADs=","img/ext/gif.gif":"R0lGODlhEgASANUvAH+duQGZ//80Af///yRw1d/v/9ns/9zu/+fGJ+Ty/5zG9fk0BbPY/YrO/4fP+e7XZIbG/tbM2VOr9tzJJAmU8mz5NgOb+b/DgdPp/67W/97v/+Lx/+nIKT1tvbjb/8Pm/2BElO81D/rNAljwUEdHrA+n4ufGKPDMKt3jxgyL8eXUCdPH1JnL/MZ7e7nc/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAASABIAAAZrwJdwSCwaj8ghYMlsLo2A5CtajAqurY9mc5hCX9dFJxBoYLxVsABEIAdcaKI1RGqTIXHlaxVJUUpkLHlCUQkFDiMVFhIMg14FBg8iKhMKHo5RBignCCYcFxmYLwOkpaSiSVRyTqxSrq+wrkEAOw==","img/ext/hlp.gif":"R0lGODlhEAAQAPfRAP///0tLS9fh8/v6+Nnh8vLy8tTe8dbg8v//+E5OTmlpaS5jzFBQUClfyu/v7yxfw8bQ4jlrzhBLwenp6fX19djh873J4Jqv2fHy8+3x9dni9BFIuaG559Ld8BVU0ZGt6NPe7+Dk8WmO2Ctn4tXf8BxUww5JveDm826LyB9XxZabpJar1Ht/h///9Ojt9f37/Hea4vDx7MTExLW1tSxhzFVVVTBlzBFMwcrY8/Tw6yVXudbf8BBLxP38/bi/zTZx5m1tbdDb8ai1z/v7/Nvq/9fg887p/9ji89vj8/Lz9j1z4Cpeydrj9FJ/18rR3dbe8iNczSlgy5+v1dTd7+vr62qGwjNjxajd/uLq9XBwcP//7q2tranU/7C6yYev7Mbz/wExvby8vDRp0zNr2+Li5EBx0KaoreDg4NfX1w1Gu8re/yRcy/758zNnzypfyv///S9jzcfQ4yddyoGaz/T09Njj9DNnzurq6tLd8cDJ2yphzXuc4LvG3RZNtyFbzfv//9fe6l2H3sDCxCBWxOru9vb29vn6+v38/tfh8pWVlWBgYP38+BRPxtPc8dnj9Nfg8SJZyZCo2JWkwmpqajls0FdYWZjP/D1luebt+9/n99ra2oGazm1xd9Db7/j+/wxGuNHb7+jo6Cpfxv79/ujt9kqK/9Hc701NTZKYpDtsy2uY9WqJyqKxz9Tf8VF5x1l+xyRZwNbh8iRbytTW2ZHJ/////OPq8CxhzX+c13Gy/zJmzMbP4e/x9v//93CS2RtUx8vLyzJmzRpVyXmk9nl5eU6M/uTo9dHc8WaM2v//+u7z/6enp+Lk5yJbzDRozuDn9N/i7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANEALAAAAAAQABAAAAj/AKMJjIbkWCdQpoIAojJwIKFGxnoAmPjiBJ5ZdAa62AHgz5crlmhx8VSrlaACAg0AMJLLC7QcIYYVU/Omg4xCBHgRKRVIyyEOydgo+aHsmQpNKlWNQGGrCRhcAJB5gDEqz7JHmMaIaQBJ2A0IAMr4iTAEhAICOKC0sUFjkBAAe37dEpWBBIMKT1LY0dWsCoAPPBZEeYDhwKkiA6zIcbZmVSZKsoKVcLVoV4IphiKZgKMnlQg3C5ZssEAKlSJmiBC8SsNIEgBfEj5tQnCgRiIKTrC0mNPn0gVYOqT00sApC5poE3zUGUCG1Qo+MZLEYqFgBspoZ8zEEeCIyREBXSoBEtlyp2GoMJMSBFjPgBgwBwIDAgA7","img/ext/htm.gif":"R0lGODlhEAAQAPeFAJCQkP///1hZiYep3FmWvB5gmszl//f396HE5n+ux+3t7TKIzcrY/5jC1Wprm1JSg3SAsqnO/0uItLvO4zOY7L+/v0Oq/m7E6yaKwr7K/4K10Iir3iOR0iac5bDN/0KV5CmW5brb+0BkicbV/D94sTO08DGq8snX/nGBsjuY6kd4pS+i66W54b/f/2hqlzKP2ClFX2FjkG3B5kvB+ez2/zBzsoSj1jOc7Cp7xHGjyMjW/W9ynkhsidvt/7fM/yg9W8Ti/8vq9lGm5ff3+EtsiMbV+1ZWhyJEalWVwFtciyif5sHQ9uTs8T+67kmKxL3X5h9xnjGV7bbY6ez1/9vq+Ojw9/3+/6K33nR4o7PF7KG4yqrQ65Tp/EuBrnSUtGNtnOTy/5S31n+iwDWR2VVWhkmm5snY/3Wo3uHs9j+p97TM/zu5763N/3p+p6jG43vN+NPp/ypsrD3L/n3O+73K/6exvtbW1u/x9CZEZj2g2p+02HWx3bTS8JmqvGvz/6vN/7rK/zJdj/P5/zOp3X2Bq////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIUALAAAAAAQABAAAAjnAAsJHECw4AYbEOwoEMhwgJUAECNCyFFhYUOIVZ5o0CAFRYYPFRsSGDkyQJMvDhwQAlBoSAMCXPzIWYMkgAw0gjK0YfkyyCAMGJSs6BKAxhQ6WAAwIXAgARQEAXBYGOOFChhAOwAwTVCCQxkhLyhYUDGhhw8XAJrO6FCgrVsRE+CoiQFAyxsTIAogMMCXrxsDHpIAkJCHxI0oNRAsWMyDDxA2Rgb3qRMnBYU0Fy7ACBOixZ8HAOaIOeAk0BE8P4joWXKCQQTQd7bsOaODxZUsI4qYYeCaDEuBAoILHx78t0AAyJMrRx4QADs=","img/ext/iso.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAIAAAHBgYP/86f3ibfe5L/7jrvWbAv/qyPyhIMuHJvy3UfyGAuJ5Cf+QD9B1Ieeobv93APaHK+yVSeyeX55IDL1VGrI+BMt3S4svDlQOBmoRDZVST+8AAN8AALQAAI8AACAAAHAgIIQ2NohBQWBQUJyIiHVwcP///yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JHEiwoMFA+bBhk8fP4EB59OiteUQRnz+CrP49GmFvVhlyINnNuvgvm714I9bEGxdhHDhx27jFEyhvxAh68byNu4CunLhu2hLM+4fNJrYd4MahSwdBnDYAAcwRtfkIHLdy6XSw0/ENAIAEXWqOeCQOQYJ17Va8O9et27Z52ag6BdCt3bl26l5yG3pvBLZwT7WdW6fugkty/f75O1IvngAA38SVQ0c5AryBJtfA29ZNXFJ0EdxlI5gtnulw3Lh5IwdvtMNs2ebp2+faoe2BAQEAOw==","img/ext/jar.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMDAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANoALAAAAAAQABAAAAhuALVlG0iwoLaDCLMBWMhwIbZsCA8qJNgQGwCICQFIu9jwmsdrGTcqlEZyIzaQEgGMGKGwIYCTGT9qLPkSpUCXLmGmLElzRM2MOFf+3NlT5dCbDVcK1XmTpNGFPpm2xOnQZjZsWLNqZfqxq1eUAQEAOw==","img/ext/java.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAGdnzDQ0Z0BAIN+geOGdd+CfeN+eeeOdeuKeeuCefOSbeeKce608Mq4+NNhdVddcVEBAQCAgIAEBAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAOsALAAAAAAQABAAAAiAANcJHCiQHMGDB8MZ9IYwoUFz3xoO5GZwXDmJA8mJ20auG0aB38iBOxexITZsVNZ9M0cuIhVs67JlE5gNpYqbKqi8lBmTpsyfP9XNPJiNigqBOXfSHAi06cyaBIsezYltZtWBMNdV/Zk1q1aZXrGCxbrV6cmD19BpS3et7bWDAQEAOw==","img/ext/jdx.gif":"R0lGODlhEAAQAJECAAAA/4CAgP///wAAACH5BAEAAAIALAAAAAAQABAAAAIzVI6ZJg0NownwyXjqxdQJe2UeKInfqTXmA4Dg+rmW2MbV3NV1jLf+DzRtOMPQRIHsFC8FADs=","img/ext/jpg.gif":"R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==","img/ext/js.gif":"R0lGODlhEAAQAKIAAP///wAAAICAgMDAwP//AICAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAANQKLrcISDGJseTQBCwbbTQBBQkGACgyKGPl2YjGcwnG2qrV10TQRY6GwbXqb0yigCJJYSZOK4LhPDYEHQvwWAgCGxrTQCNhgFtz+j0eM2eJQAAOw==","img/ext/jsdraw.gif":"R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==","img/ext/mdb.gif":"R0lGODlhEAAQAPeKADZKZP///5Cu1jdLZfXm7UwENoYnV+/0/eLs/HwhTpOit5m24Nrm+/Ha3tm/yu7d5Ojw/UgCNJWkuZtHburV3ogwW7psi+7j6Mrb+Iyv5Ho4W93p+87e+Yqu5I+x49fl+t+mtOK8ybBggpamu7DA1oEoU8nb+fP3/qVUeLLC2Onw/HgeTHij64Sr5nyk6bZ+mOzz/aG63eLs+5W04qa2y/z4+aW83NZ8mtucsloNPdmdq6u60dLi+p84abBkgd2nt9+jtHAbSKi2zdyhspE8ZIGn51UJOsfa+FMIOZE7ZMuAnF4PP+/1/bHB14Cn59rn+2oWRefv/Hg6Voit5dbk+tbk+5243qB5ju30/cN4lWISQZ6436S73a6+1Hul6JWz4tnm+8doiNjl+q290vu3y3ceTLBhgeHs/M2Lo9Dg+cqAnMN3lMSYrqp8lubu/NLh+uHr+93o+2cUQ7rF1KZUeIwzX28aSOjv/PT3/pyrwN/q+04FN+nx/dzo+9Pi++nw/ZGx4nEaSKq5z4Ws5pmovqW0yszd+NCGoenL1uXt/P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIoALAAAAAAQABAAAAjyABUJTNGERJcxOwQJoVFIoKJDarJYMENnApEKJU5gyTNAoJIAIAlQoEAgQAI8ByTM6bgGZIMhPjSwIVBGABMFA3JaCFDjB44bIOo4sCPgAB8bXAaICNCAjI4wPYI4kFNUxZkYAFAEQATEgJQCLwgsEQDDjR4rACY8QGOgwJULII0ImLthAYAkIQy0gQsywJ65Ahh8AVDhQd/DEe4gEEDFA4AECVYEgqIlB5ICERDEEfCmAwCHhCD8gRAlEZw+HwRwGPRZ4AgZiwEDxlCktSIJDJ6AEVPFTxpDJo64sK2Ax5YFMwBlmNLCiRcWtgFIn059ekAAOw==","img/ext/mht.gif":"R0lGODlhEAAQALMKAP///wAAAICAAMDAwICAgP//AAAA/wCAAAAAgAD/AP///wAAAAAAAAAAAAAAAAAAACH5BAEAAAoALAAAAAAQABAAAARiUElFqr1zEsA7rxnleRuRbSMXrGdndUMgCNIsEMOMcLGQC4VBYRY7BAAxBXC1Wh4Sx6QvYDAApgYjUiakWoGx4xZM5fgK4q0S3Vl6pLF2HMYd2siDfA8dCPL5TEwSggosGREAOw==","img/ext/molengine.gif":"R0lGODlhEAAQAOZxAP///xvakPP9+RrZjxbZjRzakB7akff++z3goCLbkxjZjiHbkrfz3BnZjmDlsi3dmPb9+u/893Lou2bmtDTenD7goSDbkkDhour89R/akfL9+R3akfH9+IbrxGrntrLy2Vfkrer79BnZj1Hiqhraj8L14cb248n25Nz57mfmtT/goknhpiXclJ3vz0jhpa/y10Dgoavx1h7bkVnkru389rXz2uD6773130Lho0ziqHPou7Xy22Pls5LtytD36N367i/dmj/gofr+/RfZjUXhpC3cmWHlsjHem3jovHnpvVjkrTjfnhfZjnfpvXbovCfclb3030Hgoqbx1CDbkeH68BzakR/bklTjrN357kfhpWLlsyPblBrakDHdmkDgoqDw0TjfnRnajlvkr5/v0M/36BvZj13ksF7lsKTw0hjajk/iqfH8+Mf25GPlsk7iqC/dmUbhpf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHEALAAAAAAQABAAAAfegHGCgzQ9TTZCg4qCHF8wFgQUY2uLcQIvOSwbDQMiBWpsB4NkZ08bBA9KM11lQws6VIIXJDIBWjsnJzVtBgZMboJgCQoTAB8kXB8AEwpWCIIIGW8oAAISEgIAKEUBKtADZj8hAAcHACFYYgQ4ghUNPCUOGgAAGg4lRgRB7QYUUHAg6IHIcuNIgGdxLiwQ4cEEEggQkpjwMCDBEkFeCkwpkIIBBgwMUmRIEMZbnBgrElRR8GDECCBpAmxx4mNQBDRELBRQMMDAgisMRC2K0CJKgAYupAiopIhDhw5LFwUCADs=","img/ext/mov.gif":"R0lGODlhEAAQAOZmAFdXV0tLS3d3dzo6OmVlZWhoaDg4OG5ubhoaGnx8fGlpaV7HcKysrCy6S3272z+uy2NjY1zLT0XET2C92KzLrlxcXDa/f3DC/2JiYi0tLWxsbHrXV01NTXR0dFC4tmW5/2nF3WK6/2e//2rRQk5OTpqamvngaImJiUJCQmzE/2257DU1Naampo6Ojqqqqm7G+CUlJXm+7VtbW6+vr5XhWpHeUWBgYJPiVZSUlHNzc7CwsICAgAkJCaSkpG1tbUxMTM/NhDk5OaDjeLKysnZ2duvYhBUVFXFxcT09PV5eXqTjfJ3fb3fI/3LF/19fX5PdX8/YmJeXl0hISFZWVgUFBZ7icmZmZpXgY3O77HG85uvkmYWFhUFBQYODg57gdFFRUS8vL5PeVlBQUDIyMqPgeHp6ev///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGYALAAAAAAQABAAAAewgGaCg4SFgydEO4YHX1aEOWYKAJOUHGYYhBodBVkxWCpARQEFSIRdZgkWIBciFCY2ZhWEAltlEg0TIR8OSQQBs2YCERsjCx4PMma/gwIuHVVKQlc0N1PKhApmBZSUYxxBhAc9Gi9MTSlQWiRmXIQEZgSqrK5SBwaEFT5Ot7m7KGZgCEEwA2BYsWMDzCQcNACDgSVkvDwJUwMBBB6E7q3gNgmBGSOESGQQYygDFRiCAgEAOw==","img/ext/mp3.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAM3NzY+PkcXFxpWYosXJ0vD0/XN1eXx+gtTV17m7vuDh4qmqq/v+/8rLy7Gysj49O1VUUtWMCvutG1I5Dfy2OuybEKNtEP6uJm5OF/zAXWdcSteQKYRyV4OBfv+0VHZmUl1cW/b29vHx8evr68/Pz1BQUEZGRv///yH5BAEAAP8ALAAAAAAQABAAAAjGAP8JHKjPn7aBCBPuw+ftHL9/4fBhS/hP3LlxAMT58+flS7aE+fph7GYF3rx38MIhFIduHLlxXtyxe5foG0J958xxk/elnQJ267z5WyFwoTlz8Nq9ixcvgRdv2lhN9OcNALp26praY9dOHgBs5/5pOyeu3joaCSC8SwdvXEgrArExvJe2nTt62vT1gzvwm7x4a+FtAxDSHMJy9+ypcxdIHIB9/T4iPLd2nbVwhPsZTrgOHj5w/M5p20vxn7lxA8v541u6NcWAADs=","img/ext/mrv.gif":"R0lGODlhEAAQAMZ1AABIbAhRcwNYeQhaexpaeyJtiixwjClyjit0kDN1jzh2kjJ4kjR6lDV6lDZ7lTt9l0GCm0aDnEqEnE6KoU6LoVGLolWLolGNpFiRpm2cr2+dsHmjs3mjtHmktHqks3youXypuoKsvIOtvIOtvYSuvoWuvoaxwoaxw4mxwImxwYqxwYqywYqywouzwYuzwoy0wpa3xZy+y5/AzJ/AzabG0anG0avH0qvH06vI0qzI063K1LHL1bDM1rHM1rbP2LfQ2bzT277U3L7U3b7V3b/V3cDV3cPX38TY38TY4MXY38XY4MbY4cXZ4MbZ4MbZ4cjb4crb48zd5NDf5tHg5tLh5tTj6Nvn6+Dq7uXu8ebu8efv8unw8+rx8+rx9Ovx8+vx9Ovy9O7z9e/09vD19/H19/j6+/r7+/r7/Pr8/Pv8/Pv8/fz8/Pv9/fz9/f39/f39/v79/f3+/f7+/f7+/v/+/v///////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAf4gH9/HCQuhi+IhiQdgn8nOERGUlFGTk5MSkU4J38dNlNfVhUYU2NcYFxZVDYbJEFYHxl1Fw8aY3BuZ1lCIilQBXVtc3VWEQdja25bSikrRgs8ZnNzbnUxXW5xXkooLEcOP2nDc2052G5gSissRg0+aXVuc2g32HJgS+tNDHVnc2p1JpQAYwZdvhdJtCgAUgeGhQRXCMyo4yVfiyZd0lQxAKGGGjoIBAB4giRFCyVb3Lh5QyaOSgoDQIRhkoLEECxlVLqBA4eNjDoBdBAR4YlKllNgkoIRo4WGhB0b/pjAEUQJkyVYlzTJ1MNEow0hVKwYS1bFCA+CAgEAOw==","img/ext/msg.gif":"R0lGODlhEAAQAPeTAPn8//r8//n7/fX5/GB9qu3z+FCMyOrz/vf6/MDb/Ja14+fx/vn7/+Dq+ePs+eHt/eTv/tTm/U6JxPP2+1GLx97o9zxzvN3q/kWAw9jp/Zy/7VCMyfz9/16Kt+Ts9Ze24+zy+KnF6k+DxafF7FGFxcLa+KK/6fj6/VyIuvj7/T5ttdbn/fX5/6C/6dDh+Iqu4vH3++z0+IWq4kqExObu+T1wvt7s/VGMyLzQ7Pv8/9vq/drp/dnk8VyMydbk+c3g+Nvr/tLj+aC33FeJx2WQzO30/lGIwOzx93yd03CW0LnP7LfX/EyIxNjo/cbf/N/s/vb5/LLM8cTb+N7r/uXt+VuIttPl/fP3+1CNyN7p+ff5/KTD7L3V9O7z+Nfo/WOPzI2w42GPy57B8FmLyEN9wlB9xYeo3Exyr93n91aEtpi24/D1++71/vH1/E2IxOrv+Iup17PL6lSHxvb6/9/r/kiCw6vG7VCJxOPr84mq3EZ2wmaOzPf6/16Nytzq/Z2z1luGyc7a63KZ0b3T9Ja04z95v1OHw/v9/9zo+fL2+7PK69zr/tDh+fH3/rDK65W88LHN8cne9/T4+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJMALAAAAAAQABAAAAjTACcJHEiwoMGDBP/AEUTkS5g+PcYMkUNChCEUBIScaAOgI4AAIHMc4jDhTQckiQghYrPDj40HEBbMaSCDx40kAiApyNII5oIDfBy8eBTDwB4BVqIoaMDiQBEGVMCIWVLAACABXiLYyeOAQQAaZjQkSFC1jIAMjBSNUIOmwoctIUo4KYBFT4ogSlys4NLCxKAIkRxJAbGhxgAcPp7QmQJk0QUdTX7EwUPhTBcPa2BckTRgABQtCBAcCVSFgAoLhchgqDODiRsJEu4YSUMAoe3buG8HBAA7","img/ext/msi.gif":"R0lGODlhEAAQAMQQAIaGhgAAAMDAwP///wD//9fX1zNmzGb//2ZmzGbM/zOZzACZzP//AAD/ADNm//f39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAQABAAAAVyICSOQGGeBRCMJGK876CyIoAkx5Eo8koCttxu0SMNZAidYuEoAoEC29Bh6AGOAEFUy9XOgAHvcyxYXcPlgDrwLEPOUQKBcUS7zwCCYD7QrmtlWXtqfixZbFwBDXI+gIgCfQ2FJGlXfQwNjSJrDw9rajQhADs=","img/ext/pdb.gif":"R0lGODlhEAAQAOeEAI0xLY80Mpw3L4M8SJ05MUhbdElcdWpUgpRNTY1PU69JQLBORKlQSXddhLZUS3RijqxYU7ZWTJ5iY7hcU0N0yrlfVqJnaEl910l+2Ep+2LdqZcBqYsBuZFGF4lKG4lKG48l0abx4c8h4cFyP6c19dcl/d81+d7OFhs6BebeKic6FfWuZ7NGHgNKQiNmUi9iXjtuXjdGaltqbk9Ofmtydlcyin9ufl8OnrM+mo6ayw9+lneCmn9CqqeCnn6i0xdCsqtKuq+CrpK66y+avqOWwqLa/y7e/y7XB0um2rum2r7rG192/vNTCw+u9tuy9tey+t9nDw77K29vEw8LO3/DFvu/GvsjQ3MrX8s7a88/b89fc5tLd9NPe9NPe9dbf9ezc2tbg9e3d29ji9dnj9trj9t3l9t3m9t7m9uDn9+Ho+OLo9+Lp+OPr+OTr+OXr+ebs+Obt+ejt+unu+unv+erv+ezw+u3y+u3y++/z+/L1/PP2/PX3/Pb4/Pn6/fv6+fz8/vz9/v3+//7+//7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAjVAP8JHEiwYMEpCBNGUXJEi8EphCJKHCSkgJGBfr7cwPFDSkRBgHxYKVDkn58lM4LoaBEiRaA/fXIYmPkvTIwkVJrsQAHhQQc+enLI/AfEhpMqT3qwqGBhTx48dXIU+FfDxRAkRGSUmBDgQwYKcKT+42ECBo0XKjgskHCHzhs1YqFoAEFCxIYIBA54wEDBjNh/JxhEcKBAAII4bNCUEfP3H5MEAAY0WDGiwwUKXRr/y2Fnjps1Z8iA4ZJFcw45btKUGeNlC5YrptsInU176kCpBXLr3h0QADs=","img/ext/pdf.gif":"R0lGODlhEAAQAPeNAKysrIsBA8HBwSUlJeHh4eXl5fv7+9ra2uDg4Nvb2+fn59LS0uzs7NjY2N/f3+rq6tTU1K2trdPT09zc3PHx8bGxsdDQ0PPz8+bm5t3d3eTk5PT09D8/P+mqqnV1eNi2uf8BBeq8vsXFxYGBhR4eHtzb2/83Or6+vvsvM+qqq/8FCe4BBMDAwP84O8zMzP8yNenp6dHR0a6uruJeYIyMjv59gOjb2+ianb6+xup9fO7u7nNzdeNbW4qKjd9PTvoBBO1TU7a2tsvLy/9JTf9UV39/gf///6urq/8NEudJSu/i5f8bH/8WGtsaHqqqqtXV1c3NzYiIjeVxccbGxuFwcfLy8qiorL29vf8iJf8oK97e3ulMTbKyuLe3t+nt8f9iZPb29tNSU/f39908O7q6wNNlac7Ozv91d/X19a+vr+vT1sPDy9sBBP8TGLy8vNnZ2eLi4uWNj6sCBejo6OkBBcjIyOTt8P8MEO/a3NcaHf8HC/9rbbu7u7+/v/D//+vr6+aPkO/w8v8+QNuEhvUBBO3t7by8wnJydOdISP9CRYEFB+Pi48fHx////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI0ALAAAAAAQABAAAAjxABsJhFAhAgCDAACkISCwYaMTa3AYIsPFShQHMhIIrLGHyJBEglq8QNFkhAEHTjSeMYGFCRI9IAjRkXPIwEkABb5kWdLmjoofK9gE6OFhRxEaC/IEWMp0qSIMQkTwqeOmoQAILixoCVMCQYMFjN4EsYrgSYYNPhYxKJDADIEKVjUcYGBjzI0NOgpAUADAqgICaHJ4AZQCzJwDMPoKFMDggZotHTokQQRkEAXFjQRUucAjBJ5Afux8KPMAswAlM+Jc+KOgAIIDUDKYpiKFggYCExrEsMBCAuY+RsQUeoABTu4FUyQcaXiFw4Dn0J+T4NAlIAA7","img/ext/pic.gif":"R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==","img/ext/ppt.gif":"R0lGODlhEAAQAPeYADZKZJCu1v7n2zdLZbBfRP///+/0/ZI1LZE6M71eRduDYlYMD9rm+8F0W/bWxuLs/PCRZ5Oit69HOZk8LN/q+5Wkuejw/Zm24Nzo+6a2y6W0yvT4/e/1/b9hSNLi+vzz7brF1N3p++nw/OHs/NlZK3wgGPCWaJE3MK9QO5amu3ul6LLC2Hij66pMONmBYLJTPbHB140xJaG63ZGx4uiPatnm+9jl+tPi+q290vClavCXaunw/dDg+dLh+vCZcejv/Nfl+qq5z4yv5PC9i9F3WNmAX/V7Qs7e+eHr+/z078NmS8rb+PDFkrxPL5A0J8xxVHYaFPT3/oWs5sNlS8nb+fCWa5E7NPP4/vP3/tV8XP/9+4qu5I+x48zd+OXt/P/8+oSr5oYrLau60dB3WMBhSJW04q6+1Orx/fDJl+fv/PCSW5movoMoHuTt/Ki2zfC2gZyrwLdYQfCmdMdrT51dSPCdXYCn5/CcXogsIZI2Ltbk+tbk++Ls+/Cgb/CbZ3yk6cxxU5Wz4rA5L/DNocfa+O30/Z6439V9XPCRXMhrT6JEM6W83O6CVKS73aRHNLhaQtrn+4AkHP/799Pi+4Gn57DA1oit5Z243v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJgALAAAAAAQABAAAAj5ADEJXAGjkhkcYoK4yaBBICYFClxkGfNkzpQOCbAUgjNAoIICAgggQEDHQYEEUQxUANGxiAAJSSQtQBDGQZwNHCIM2HmIwIcvWhaQ8EMARYCjixoNIHLACCMaTXTIOeDoigERI2QAAGQFzaAhECD0OTDhaAAKlwAkInCHyRsfVRARiGHgTJsQFwAoeVknhwk1ggSwMcsgEAAyIBucyNNAQIESPx5g0MMFQIJHL1oomuAETyQoZntsAeBwjYUdFtJ4QYIByI0jUkgLTMHnwVmzR5dQko2pAgNINWzsmcSjCxVCf3hH8GDoQpkZQiyBsaOCBW8A2LNrzx4QADs=","img/ext/ps.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAQEBAMDAwICAgEBAff39+/v7+np6ePj49zc3NXV1dLS0srKysPDw729vba2tq2traSkpJ+fn5GRkYyMjIGBgXl5eWxsbF9fX1hYWFNTU0tLS0NDQzs7Ozc3Ny0tLSoqKiIiIhsbGxMTEw0NDQsLCwYGBgUFBf///yH5BAEAAP8ALAAAAAAQABAAAAj3AK9l25btGjZ+Bq9p23btmj6F6NhZQXdunTp38AK5s8hu3zWK4MaFA8cO4zx89uK9E9jN27dv5yLGiycPnz578gqKW0HOnLp38ezlwzfU3jyB3MiVO6cuJT5s2fzpy1dP2zVzPullu6fPn7ap+fTdM0iu3T108Ky4w6Zt376p9bZpa+eOW7d7rLZh66fP7D55DF2S62aFn9u/6OTNWyfQm7hz4r6py8cqXrt29NyZawig27el5s6xYwdvnjpx4a7tAwdOnNLRgeDBazeynFVv3AA4HpfOSjpx4DyvaOiN3OBy43aSG2eOXLhy2xhaFVhQYcN+1xgGBAA7","img/ext/py.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAC/AAB/AAA/ACDfACCfAD+/AEC/ACBfAEB/AGCfAICAAH9/AGBgAF9fAEBAAD8/ACAgAL8AAH8AAD8AAPf3939/f////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAO4ALAAAAAAQABAAAAioAN0JRIfOHDqBCBMKvDbu3Dhy1xQqvNZunDRzESUiZFjuIbprGRNeMyeuZElw5MgdTGguZclw23JlKxnS3bdwOLdh07ZtpjhzCXlu26ZNmzej3n5OTLfuG9Fr28KJW4kwXbee19BxkwoxoTp1IEfm4loz4jp26MBtKwkxYtiV17DlYktOnEq75IC6u+ZtrUmT5MCBy3iNW19v4Ax7wwhSZLZv2sLWdBcQADs=","img/ext/pyc.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAH9/AEBAAD8/ACAgAGBgIICAQEBAIGBgQICAYF8/AL8AAIAAAH8AAGAAAEAAAD8AACAAAIAgIGAgIIBAQEAgIJ9gYGBAQIBgYICAgH9/f2BgYEBAQCAgIP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAPUALAAAAAAQABAAAAirAOsJRIfOHDqBCBMKvIZNG7Zy1xQqvBYPmzRzESUiZBjuIbprGRNeMzeuZEl15codTGguZcl07+DNKxmyHrt0ON/Jowdu5jhzCXmCA0ePXjej635OFHfOG9Fr4NKNW4lQXLue17Z9kwoxITlyIK9lg8e1ZsRz9bZxe1cSYsSwK6/Jg9e23DiVd8sBrXetGziTgMupU5fx2rdu79apc7duHUaQIud5oxe2Zr2AADs=","img/ext/rm.gif":"R0lGODlhEAAQAPevAMPDw8rKyo2NjcbGxsfHx5+fn2lpaGlpab29vYeHh5OTk/7+/mdnZ6ampqSkpHx8fJqamgQ7cgNCewI6ccTDwefi3Z6ent3j6G1tbQQgXU11l+De2cnT2AEjWYaMlcnHx3OGmgNAe8jGxoCBgoKCgYCAgI+JgjVolLW1tQMvWR8eHqGhoOjb0aOjowQtWqe3xrOztB4/Zy1XfAQ2aZKSkubh3M7PziNTf6ysrCtagYWEg39/f+rn497Z1ouTnDExMP/27uHd2hhLeOjo5ry7umNcVsHCwsHBwenp6QhCeN3d3PDv7vHs5ouXooGYre7o4z5ulnV1dWKBnAE1b0R0oZytu5+dm299jaCwwbGxsXFxcWxsbMTCwXBwcHR0dImFgqmjnre3t3+Vq7/CxWhoaM3MypeXl/7+/Up1mY6OjYuKitva18jHx5CNjamloT9jg2pqand3dzBXfHZ2dcfHyARAdr6/vgQydAI5el+FpsvHwzJQa/7++dPS0cHCwcbGxTFmkpubm1h/oylIbdLQ0NLR0amqquXl5F58lMTExDpyoU9dagQgWIaFhAQkW8rJyZ+kqGiOr8XFxtjQySBOdubg2qOcl+Lf3PLy8sLCwuvo5h0cHHB/jb65srCwsY6OjtrY1QVBeAE5de3t7Y2EfmF8k5aVlKqqqiVKbW2KpTJGW/Dw7lRcZISds4iIif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjzAF8FwNFghRVTaVyNeDBHyauHr6KYsdCgSak3MigJAcQJ4qsHhy4ownPDyQssYnKIQoXpIQlQVO5I4XMGjCVSk6pIuPJQx5gQSTQtoKDih4EgQDQMetjISKgIQxa02YRiSQUmUGI8TKAnVQY0q0wUufSER6QpPrYSqYGIUR1BrTZwONHBA0Q1ntZUgrTHxYw8E1jB8CjglA1CPViAcJRikQEkHj85CPCoTB85qr502uLxlYICBAZIImDIDZdCcDorCPQHgGsRbDJ9INOZRoEAdBL5sYMAwQAGnbNgOHDASwkBEByEAd754agjLQTsiNNFi8eAADs=","img/ext/script.gif":"R0lGODlhEAAQAMZdAEhbdElcdUqfCUugCnaGm0yhDE2iDU2jCk2jDk2jD36MoVesJYeWqZGfsZejs5youZypup2quqaxwaayw6i0xa65ya66y5vOjLfAzbXB0rrG177K28DM3cXN28LO38HVvcjQ3LjcrsrX8s7a88/b89jc49Ld9NPe9dbf9dfg9tfk1dji9d7i6dnj9tvk9tvn2d3l9t3m9t/n9+Ho9+Ho+OLo9+Lq+OTr+OXr+Ojr8OXr+ebs+Obu5ufs+ebt+efv5enu+unw6Onw7Onx6Orv+uvv+uzv+ezw+u3y+u3y++7y+/Dy9u/z++/17/H1/PP1/PP2/Pb3+fb4+ff5/fj6/fr7/fv8/vz9/P39/v3+/f3+/v7+/v7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe2gH+Cg4SFhR6IiRsaGR2GHl2RklwWABGFHJJdBj9aFCAAEH9ZW1tLkQk/AglYEwGvo0ELB0NDAgUHKlVQE65/WwdBUhcIA00CA1RMRxMAvwddUZEDAwI8T0U+zb8LQVEhxR8DQkY7NdtZQQe0VwUvU0k4MzHbo1s5ViwlGA4MCgQr6gma4EQJkR42ZLhIcULgnwlIKkh40MAfARIOJwDRQQNGCxQmRojIeKOXyZPOBjUDwLKly0AAOw==","img/ext/sdf.gif":"R0lGODlhEAAQAMZQACYmJyYnJi4uLi4uLy8uLi4vLjAvLzY2Njc2Nv8AADc3Nz8+PlxcXGVlZW5ubm9vb2Vl/3Z2b3Z2dn9zf3d3b4BzgHd3d21t/3h4eG5u/29v/395f4B5gG9/f3Z+fm+AgG+BgX9/b35+fn9/dn9/d4CAb39/f4GBb3Z2/3d3/3eJiYeHh4iIf4iIiICA/3+Pj3+QkH+RkYePj5CQkB7GHibIJv9/fy/LL7a2tmbYZm7abre3/2/bb3fdd8DAwMHBwb6+/7+//4DfgMbGxsfHx8jIyMnJycfH/8jI/9DQ0NDQ/7ftt8fxx8f8x/39/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfLgAswL4QvMgiDhTAILTEJj482IJCQKi0IHx2aHR4GmZsfBC0rUENQRFBQIxdKKFBHKCwtJj5FDj9OUBQaRy4QSCkksw1QDqm6GkCpQMGzUA1GDKm7SBk7Qc0mqU9Q3AAnESEUFCUDs084UOlQG03H7iaztQ5FxBM8UEtQOlAWw8VQHkCZ0INJQSE5/GmD1sAHlAo1bki8QYNDCwUPMDjQaCFAhQkgJ1Qo0GIGEQkSkqQ0oXKlhBYtDsRrIYLmipo2WwiAybOnT5gmAgEAOw==","img/ext/skc.gif":"R0lGODlhEAAQAOe4ADU+TStGbixGbjFKcjNNcz9VcT5We0JZfEZcfklefkpefkpef0pff0tffk5jg05jhE9jglBlhFBlhVFlhVFmhVJnhlNnhlNohlNoh1Roh1VohlRph1ZphlhqhWByj2F0jmN1j2J1kmZ1iWR2kWZ4kmZ4k2l5jmh5lHR8cGl8mGx8lW19j25+kG+AmXCCnHOCmnGDnXSEnXaFnneGnXiHnH6Kl4+Kd4+aq5ednZqjr6KjpKKjpaOkppultMKhbaSlp6SlqKSmqcWjbpyov6iqrKmqrKmrrqqrraauuauusqyusayusqyvsq2vsq2vs62ws66wsb6wha+ws66xtK+xtK+xtbCxtK2zvLKztbO0tb64dbS1tra3uba4ura4u7W7w+y3TLi8w7u9wLm+xLq+xby+wLy+wb2/wbrAxr3Bx8DCxL/Ey/fFJsDFysPFycHGzMXGyPfHK/fHLMXHyPjJM/jJNcbKzsnLzcnLzsvNz/TNYMvO0MzOz8vO0szO0MzO0s3P0M3P0c7Q0c7Q0s7R08/R0s/R09DR083S2tDS087S2dHS09LT09HV29TV1enXhNTW1tXW2PbWe9XX19XX2NXX2dbX19bX2NbX2dbY2NbY2dfZ2fDYmtjZ2t7awdja2trb29zc2/Xcmd3e393f4Nzf5f/mQf/oQv/pP/znoOfo6enp6urq6uzs7O3t7e7u7/Dw8fLy8vzz0PPz8/Pz9PTz8/f29ff29v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAj+AA3AgFHglJw6YHyEcOECBAcNAmTYusXC1EEwQhrVasUny5YGMWbNWmERoRBFsEiVWUIlQciRJTEqelVJyhMsCl6SjGNS0So3SphMyTmLlglUbOhgRDSqSxMnVojGGqIllR5JNkoNquIkCRYGLVipciVCFqdHKUadMcIWygISkyJtyuFJFIo3XnTw+FFEzAQSlzBRWoMjSg04QHYQUXNnkYUSmTBp6gQBwJUgR8z4CZQn0QXIgj+16cBlTiJDjAQB8gwYk50eGTzM+LLn0AsVZApVANxnxBdCkNrc+BAmzRg8uk+A+kMj1KTnaJBYKpSokKMNAzA8IBDBgXcEBygGSBhPIUBAADs=","img/ext/sql.gif":"R0lGODlhEAAQAMZ0AEhbdFFkfVhqgnCAmKWEP6aFP6aFQKaFQaOGSJyHY6eHQ32LoZyIZJ2IZICPpISRpoSTp4mYq4qYq4qYrJCdsJGfspKfspOgs5ektpunuZuouZyouZ2outWnJJ+pur6oar+oasCpaMGqacGqbaKtv8KsbqOuwMOtcaOvwKSvwOKuJaeywMCxh+OxJeOyJduzOKm0xaq1xau1xKu1xue1Jqy3xK+6yrC7ybC7y7K7yei8LbW/z7a/zenANurANbfAzbjB0OzCNbzD0rvE0ezERNXInb/L5O/RZfDSavHUavLVavLVa+vVgsvV6/Hbg/HdiPLdiPLdidbc5vTfidbg9drj9vnlkPHlqvbnpeDn9/brr/bssfbssuXr+Pfus+vu8+nv+env+urv+vnxvfr0wO7y++7z++/z+/v1xPL2/PP2/Pb4/Pf5/f/91//92Pr7/fr7/v/+3P3+/v3+/////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe9gH+Cg4SFgkBCPzk1KxwQhoJDdJOUEI+GPJSTcxBfl4Q3mnJvEAGmhTJ0OzYwJFJqZkYBhSmTo2xqZUW7u4MedDgxJhkVRWhtcW5kLIIYo2tpZmEnVmNYSEQKghRwMygaFhEgSVpOOioGghJramdgXVklS1xRPS0Hgg9pKBsXEw4f5kHx0aKAoAVmxMCrQmWEki1PfLggIGhAEyMYMYZQ4mVKEBoU/wgAQLKkiCNXmLzogADSIBEMGCRoICgQADs=","img/ext/swf.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAO7v8cjM06KlquHj5mt9lXuMo97h5VBbaFplc4aVp5Khs4ePmSw6ST5NXk1ecXKFmo2crXuCirK7xcvS2j1LWVxwhTpGUmZ3iJyquGVud5CbpqSwvObo6kNVZniHlcPJzpigprS4u9ba3dvf4qWssbzCxvP29////yH5BAEAAP8ALAAAAAAQABAAAAjpAP8JFIjNmz5v9PwNXPiPXj582tTl05ZPH8N/+tJZyYZwmz5+6fot3BcvXbZ1KLPdW8cvkEiB6b7NU6eun0R62NTZA+ft3wp379CJgwcPH85s8sLVw/dvnLt258LBGzfP37h06LqZi4ct3tNz4uaN8+ZvHtZz7b7tC1SuXTd44bT503dvXNa0+uK1PWcvncd08uSJ65Z2n1Nw78bp84cPnzq43LZiy+au7Tp/8OzNg3vuXTmmTcmZG2fvXbhw3TrXA7dNIL145MqB40b7Xbt69V66Tle5njlz9djFu3fxX7904L59i8ePYUAAOw==","img/ext/tibco.gif":"R0lGODlhEAAQAMZ4AAAkOgAnQABBagBCa64fJa8jKbAmLLAmLbEnLbEoLrEoL7IpL7IqMLIsMgBZkABZkbMuNABakgBak7QwNrQxNgBeowBfpABgpABhnwBhpQBinwBioABipgBjpgBkowBkpwBlpABlpQBlpwBmpQBmpgBmpwBmqQBnpwBnqABnqbg7QQBoqrg8Qbo/RABsrwBssLpARrpCR7tCRwturAxvrRJyrxRzrxV1sBd1sCN9tcJYXcNYXCZ+tSd/tsNaXymAt8RbYCqBtyuBty2DuC+EuTiJvE6Ww895fFGYxM96ftB+gtGAgnSs0HWt0Hux0uKtsJTA2uKur+OwsuOxs5zE3eOztZ3F3qTJ4OnCxOrFxurHybvW6fDV1tno8trp8tzq8+Lu9fjq6vjr7Obx9/jt7vju7vju7+ny9+z0+O30+Pr09Pv09PD3+vz4+Pf6/Pj7/fn7/Pn8/vv8/f78/Pr9/v79/f/+/v3//////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfVgH+CgickJyAeg4qCKCgfFxUWHSgli38nJTVMXnFjVjkoJ4qURWh4eGKncE0ZJIMoNml1URMEBUtreEgpD3+OTnhPDActCghAbV80G38kFmB4FAhVeGQxDVxvPSCXFXhhBDCneEkGUnhEKM0VbHYFC2Z4czoKWXdCrh4cV3hKCDJHdkBgYeYMDg2MgshR46OBgQQqsOChIkKCoBIomuBpw2WKljJ4tqBwEWBQiQxGurjBQ+cMFBQrBiwaYWIGjyE/boh4IcDSHwcaQJQIgSECAJ9IFwUCADs=","img/ext/txt.gif":"R0lGODlhEAAQAJECAJKm+////////wAAACH5BAEAAAIALAAAAAAQABAAAAIvlI95wN0qQJh0AiVrvUg6RnFGpoVd8DXoWZoLmnpsu76x/NL1CKd7pPvdHJDioQAAOw==","img/ext/unknown.gif":"R0lGODlhEAAQAMQeAPz8/MnJyfv7+/n5+fj4+Pr6+vb29vX19ff398zMzN/f3/Ly8svLy/Pz8/T09Orq6vHx8eLi4u/v7+bm5sLCwufn5+np6ezs7MPDw/Dw8MXFxevr6+Pj4+3t7f///wAAACH5BAEAAB4ALAAAAAAQABAAAAV3oMclQWmWiqeqCSEAcExQ6RoIzqFDkgVUmJonAEAMEIhG5gEwODQ14mCKMCw2MUBARXwBBIQD5PKYaLnZb3gh6ZyHabWhsXgT44WBwWCPf6cEfTEChAUFBIFbcIMCho6CjISEkH4wigwDlTADCSoRDCehAQkRHiEAOw==","img/ext/vbs.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAACAgPf398DAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANwALAAAAAAQABAAAAh0ALcJHEiw4LVt2RImLKhQ20GF2bbRyjbRYUKHCBdmw8YR47VsGDVSBHnQYsiIGzleW/mRZEaJIy02fLiQFkdsMl1ChFmx5cmIAq9xJKkTpUeKJh8ipHVwIi2ZJ7dp07bt2tSWRbOxZAkR49SvYMNuHUt2ZUAAOw==","img/ext/vsd.gif":"R0lGODlhEAAQAMZsAC5PqjZVrUhbdElcdT9csFFfcktds0djtF9mcVBquElsvU9xvllyu1t0z2F4v2h9wWR/322CxISIj4aJj4mMj4uNkIia2pSry52o+5G07aayw5S17JO266i0xam1xqax/Je46pm46qy3yae19p276Z286a66y6C96aG96KO+6K26/K2896bA56fA5qrB5qvC5rfA37bC07fD1K7E5bnD1rnC4LHF47PC/LLG5LvG17TH47vH2bfI47fJ4r3J2r7K28DM3cHN3sLO38jQ3Nbd/dTi+dXj+dbj+djk+dnl+dvn+t3n+t3o+uPn893o++Dq+uDq++Hr+uHr++Lr++Pr++Ps+uPs++Tt++Xu++3u8Ofv++jv++7v8ejw/Onw++nw/Ovx/O7x+O3z/O7z/e70/e/0/fH2/fL2/fP3/fb5/vf5/vn6/f///////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfOgH+CQkFAPz47OTQyMVyCfzURkpMRaWlnJgNZfzAWKzc3REQ3D2lqaB1Dmg4jKmxsCgqvbBVoGgO4DB8fr7GztWQ9PAMJGBizyAUXF106AgcGBr3IFWYXWjYCBA0Na95rCwprFGUXWDMCARAQYWEK7u/KF1QuAgD3Tfn6TRMXV08sBDxCUKGgQQkXpCxBIVCQiDEQxYDZsuxCkhIN/3jw8uXahSpQLB4JkbEDFStTokBxogSJkSIbMmpggmPGixYpTpAAwSFDRgFAgwoNGggAOw==","img/ext/xls.gif":"R0lGODlhEAAQAPeRAP///zZKZJCu1jdLZe/0/ZC9i22wZ+jw/eLs/Jm24DNwDV6YVVuiWDRYFZWkuTNpD9rm+5OitzVeGnSlcKa2y9zo+02MNu/1/dfl+tbk+jpvHnCbbTtoHjVJGt3o+5PCjo+x4+Xt/PT4/TZjGzReFMzd+Orx/Xul6Dp9J3yk6aW83GGiVHij6+30/cfa+DlwHmGgWJbEkZywm+Xs5bHB16290q6+1LLC2OLs+5Wz4oyv5ICn59jl+pamu5rGlrrF1EiSP1ieUqq5z8nb+Yqu5JyrwMDRwGSoYEeIO0KJNVKXSOHr+56439Pi+8rb+OHs/FOTQPP3/tLi+oit5ZPEjWmtYt3p+1qaSdbk++nw/T99IaS73WB+XKG63TRjEZmovjx3HzVNGM/dz2WnW5243kKAJYephViYRztxIkeFLejv/PP4/j57Hk+OOYWs5ufv/NDg+dbi1jRNGc7e+WqsZZGx4pW04l+hUzJoKKi2zTReEzNtDkaELMzay9Lh+jRTFzRSFzp3Gd/q+2eqX9rn+9/p39rn+qu60YGn5zRkEtnm+zRtDrDA1vT3/qGzn6W0yoSr5v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjvACMJvEGDkY0ah4TkofBIYCQDVcbcuQLFQpoybKK0KDJAoAEAIEOCVNCIgIMfHQ18OKIEQJ8FC2TsEXEhwoCbg2ZQoZNkAgwkcR4IGKpiy4AVAMT4YIACjxEAXtYQEPCkS4AzAAoEicEAzYZCJIYKEEQmQJsCYDSMKACEg6MGBEwIsJIgAB+RZl5I4AJILIQcAbSIFBlGDYIKGUAECKRg0YNEehr8kdMBgQcBfogEcPjlQJYDb0IsEYBBwBw3mwX2wCFWgCGxThCljuQAAiFFPLA0gVNiiIsUsyNIYZLATh0dUyDtOMFidoDn0KNDDwgAOw==","img/ext/xml.gif":"R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAgKbK8ACAgPHx8cDAwIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAN4ALAAAAAAQABAAAAiBAL11G0iw4EBvCAUCWMiwIbduCbs1ZLgNwDZuACAqtMixYsVrIK8p3JatojZtoiyWBCBSYjZqALQBgMQJGwBqJVu+tKgNkqVQ2CribAlgpyhOoaTZxLmNKMmK2KKq/LjRY8eOTklp3bqVqsSrVj1m5crV68KwYJ2CvSoypNu3IQMCADs=","img/ext/xps.gif":"R0lGODlhEAAQAMZZABOq4huq4xas4jCn3hyt5CKv4jWx40O340e25kG56U+25Wu54lu+6JGywl/A6He81Xy94aq0t37C5aS7w4PG6p7D4IvK663J2JzO7JTR68bGxpjT6ZrS7p/T8LHQ3p/U7cTO1KTX7pva8rHW5KzY7qXa8NPT08/U1rbb67fb7rze8dnZ2dra2tvb28Dh8Nzc29zc3N3d3d7e3t/f39Hk7dDl8eLi4uHj5ePj4+Xj4+Tk5Obm5ufn59rr9Onp6erq6uLs8uvr6+3r6ezs7O3t7e7t7e7u7u3w8vDw8O3y9O30+PT09PX19fb29vf39/j4+Pn4+Pr49/v49/n5+fr6+v/69/v7+/z8/P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAebgH+Cg4SFhE1MTU1OTkgmhoJUU1RUVldXMjqQT5yTlTYrGoaLT1NTpVdYS4aMp4xSPSlKhpxOUUkuHxUiQIZQVTUkHCUQHQ40hRcSAwoUFgcIBgUohkcjDBgLAQQCABuGQTMgKg0REw8JGYZIRkIeOTs4LychhkZEQ0VBPz8+OzeG8O3z4YMHjx08DM2QESMGjBYsVqxgAakioUAAOw==","img/ext/zip.gif":"R0lGODlhEAAQALMLAP//mQAAAMzMZpmZAP/Mmf//zIaGhsDAwPHx8ff39/j4+P///wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAARXcMlJq712aI3lQIABAAM2CIJxBOi2eUVhKEFsF4AQLAOuBqMggKDj4VaHIGGY2/UAAQNQOSw+DyrmcmnFRafbqvOYDROIY8LXfLai3nD4LhGo2+/3DiYCADs=","w8/about.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALqSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQwxBGRkYOIMUF9TisqvuPhD8Ba8B/lNgBEEAsVHAkK5CKAWJfIP6NLg3Ev4C4GYivUWIPQABRHPXAkAI57jAQg0JMGg1LAfEFIL5DqT0AAUStNPoIiO/ikDsN9MwvSi0ACCBqORQUmn9xBTo1LAAIIHrkekZqGAIQQEOmeAIIIGo59D+BZEExAAggJip6mB2Ho3moYQFAAJHtUEYogHJ1gVgDyj4BxE+QlHoClQlQ6lCAAKIoRIHFzn+gI0AhlgvE/ED8Eog/APEUIH4KVWYExGGUOhQggJgocSSUmQbEIkDcBcQ5QPwAGsLzgPgtVE0k0EOGlDgUIIAoClGg5fZAKhiI1wDxPSBOglaVoDJVEoh3QZWC2gJFQPVy5NoFEECUpFFVIFUArd9BVaQtKD1CQxNUS8lD63kYUAGFPlAfMzn2AQQQC5mO5AWFEBCDGiTroOlwDxA/A+KLQBwNxK+AWBFNqzPUUwtItRMggJjIcCQzNF0aQJt2oMzzCYjtoexYIBYH1fFAzInFiAigGTak2gsQQOREvQcQ+0HZIIckAPEfIP4MDbHvoBAD5rWTQHoRUu6HAVDpkEtqegUIICYSQxOU/jKBmA1JGOZYSWj5CWreJQHVGgEdewbIroFmNGQAcmQhUA0XsXYDBBAjMWNP0IJdFIg7gFiTSLNBZWoz0PyzQO06QHY3EKMX/EuA8lNBZTGQ/oLPMIAAYiKhzDQjwZEM0HRaC42FnzjSqxdQXpiQI0EAIIBIyfWHgJgbGrLEtlFB9b8EtP5fBW3yMSK1Cc5AMyBBABBAjAM57AgMTRag/X+IUQsQQExDwZEgABBAjENlIBcggIZMCx8ggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDABcWJQaLg/cHgAAAABJRU5ErkJggg==","w8/antibody.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHk0AsXLlCtGrt69SpJZgEEEAuxCq9fv/5/8+bNDKtWrfofGBjIYGpqykiOA8+cOfN/7dq1DBwcHAy/f//+b2BgQJQ5AAFEdIhqamoyfv36leHHjx8My5cvZ7hz5w7Jofv48eP/y5YtY/j58yfDt2/fGECOfPDgAVHmAAQQSVGflZUFZ8+ePZvk0Jw6dSqcnZqaCqYVFBSIClGAAGIktfX06NGj/9OnTweHChsbG0NHRwdRFlVUVPz/9esXAysrK0NKSgqDqqoqSUkHIIAYyW3mlZeX/wemMZhjwWYRciQLCwtDV1cXXrW4AEAAMRHrKJBlyGKdnZ2MIEeCHAuUJyokgXpQHFlZWfm/qKiIqJACCCCiHAqyBGQZyMHI4qCQBMmBHFtWVvYfmyNBcqCQBKllBAJkR4LMZGdnJypEAQKIqKj/9+/f/+rqagaYpf7+/gyWlpaM6KEGKnLa2trA4nV1df9BpQTIbT09PXC1p06d+r9hwwZw6QGKkebmZpBnCSYFgAAiKkSZmJgYQQaCDAY5aM2aNQxHjhz5jxSy4MBC9jTQc2Aa2ZEnTpz4v2LFCrAjQSFJrCNBACCAiC6egCEJdiwo1EAOAoUKsmNBDkWKWTBAdvjx48f/r169GuRpsIebmpqIdiQIAAQQSeUoMzMzY0REBDg0QCEGqqlAyQJnukJy+KZNm8AOByWdgIAAkhwJAgABRHKjRE9PDxyyIMeC0mxVVRU89JBDENmRQDX/QeUuKOOBQtLCwoLk4gkggMhqPYGSQXt7OyMwhMFptqam5j+2TAkSAzoM7EiQw6FFGlltBIAAoqiZ193dzcjJyQmqs7E6EgRAcqDo7u3tZaTELoAAYmGgELS2toIdcOzYsf/o6ROE/fz8GIGY4mYhQABRteGMnC6pPQIDEEBMtHAkLQBAAFHNoei5ntoAIICoGqK0DFWAAKJp546aIQwQQDRzKLVDGCCAmGgVetROswABRLPiCdT4oGaIAgQQ41AZcQYIoCEzUgIQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAA7CUl6dYjgNgAAAABJRU5ErkJggg==","w8/arrow.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJlHLKYUJCcnO5BrP0AA0TtEHYCONSBHI0AADUTUzydHE0AADYRDDYCh2kCqJoAAGqjMVE9qEgAIIBYSM0MDhQ60R0sChsRqBAggFlJDgspJIAFILyBGMUAAkerQRiqEKKyIugDEG4jVCBBAjKSUj4yMjJSWow1IsWI4d+7cC8TaDxBAA5WZGkGOJEUDQAANhEMvAB1JcqYECKCBcGgiOZoAAojeDj1AapTDAEAAMQ6VsSeAABoyzTyAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAaepph9PbKJ4AAAAASUVORK5CYII=","w8/assaycurve.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURX9/fwAAAP////////m0HZAAAAAEdFJOU////wBAKqn0AAABBUlEQVR42mJgJhoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgABCUsqAFSDkAQIImcmEBSDJAwQQCUoBAogEpQABhMxkZGTEpxQggNBMxVCNJA8QQJgOQFWMJA8QQNjcyohdKUAAYfUWI1alAAGEPQQYsSkFCCAcgcWIRSlAAOEKV5jnkOQBAgh3FDCCAZI8QACREFsAAUSCUoAAIkEpQACRkF4BAoiEXAAQQCQoBQggEpQCBBAJSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECiASlAAEGAFFnEo9LI8nlAAAAAElFTkSuQmCC","w8/back.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYByPTE4OTmZbSDtBwggYh3JOtCBBRBAxDiSfTDELEAADQpHEuNQgADC50jhwZRXAAKIBZumlJQUhblz5z4gxSKgxxKAVDwWqQdAsxIp9QhAALFgcSQod78i0ZENQKoei9QFIC6kRogDBBC2clQDGALfSHDkfDyOdASa9YEaDgUIIGwOvUuiIxNo7UgQAAggFrRo1wQafp0IBwoAKZAjA7BIL6BGmkQHAAGEnkaZiXTkfiA2oJcjQQAggNCj/vNgdCQIAAQQI3ILn5GREZ8jFYDUehyOpBjMmTOHEZ88QACxEJlpDKAhKTBQjSeAACK2mbd+IB0JAgABRKxDA4H4w0A6FCCAiHIoMJOAy8WBdCxAABGdmYjIUIVAD02gpFGCDwAEEBOaQ+QIhOwDaMhewCLdD62paAIAAgg96v8QkQw+4HFsAq0cCxBAjOhBTij60Qr/fhx1PcmFP6GoBwggDIcC63seoCVf6N0wIeRQgADClut/kBIS0JBbgEUKXElAQ55iABBATFiqsj9AwznIcGwjEB9Aw6DQLKCGQwECiHGojOYBBNCQGSkBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwAGoMizLJ4qVwAAAAAElFTkSuQmCC","w8/benzene.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACR7FBGRkaCOCUlxQGIC/CpIRUABBAjKQU+IQuSk5MdgFQ9EDtAhQ4AceLcuXMfYFNPit0AAUQVhwIdmACk4pEc+AFKC0DZjUDHTqDEsQABRJFDoQ4EhaACkgMnAvEEqCPno4VuINDBH8hxKEAAkeVQfA6EOQSoBuRQAyjuR1IHSgobSHUoQACR5FBgBgE5bD8+ByKF9nogFQAN3YXQ0DWASm+AOvgDsfYDBBALiZlPAYpxOhAJwDJQATT6A4EYFhMgDzgAPRMITRIEAUAAkVuOXgA6sAGPIxmAcoVQx32AhuR5qOMNobQA1NFEAYAAIrvAB6VBIP4PwngcuwHqsANImQvkuERS7QMIICYyop4BKZQYCEUdqAwFYkdQEYVUZJEMAAKIXIdeJNUiUFKBhm4gmoeJAgABxMJARwB07AVosiHZwwABNGQaJQABRKpD5UmNMmoBgAAiN41eIDVTQGsqGNAn1cMAAURJ1H+A5uRGQi0qIAYVS/eRHCuA5GGiAEAAkZuZ+qENjAYSmnwMUPYGciwECCBSQ3Qhck0DdEwBjhDcD20TwBy5AIgVQRUAtEFjQKpDAQKIicTiZQFaTdMPchRSccOAFoowByZC6/b70NoJ1k4lOo0CBBDJaRSppimEWuQADd0AqJJGPA5UQErbirBylRgAEECUNpwNsDXfoGxQFOcjlRQPoEkHpcVFrP0AAUStrkgDUkvoA1rOfgDtiiygpCsCEEBU69xhCV28DiTVoQABRO1eKKyNeZGQA0nthQIEEONQGR8FCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMAAkoAMduhLsOgAAAABJRU5ErkJggg==","w8/bold.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAA0cWhjx8//r9y5UqKGhUAAcRCD0d2d3czfPv2jeHRo0f/S0tLGckxByCAGGnZekJ2JBMTE8O/f/8YBAUFGRobGxm4uLhIcjBAADHR05Eg8P79e4Y9e/aQbB5AADHR05EgYG1tzeDn50dy9AMEEBO9HZmYmEhWGgUIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCSHbpixQq6OxIEAAKIZIdmZ2cz8PPz09WRIAAQQGS1noAh+r+jo4Ph2bNndHEkCAAEEAPIoeTiI0eO/KdEPykYIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAzBhW1bGrbhsAAAAASUVORK5CYII=","w8/boldhash.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs9LElJSdEFUrVAnDZnzpwP5JgBEECMtG49AR0pDqQuAbEYEF8AYkdyHAsQQDSPeqCjXgIpdyAGOc4AiPcDHS9AqjkAAcRCp+i+AOQ7ghwJdWw/ECeSYh5AADHRMLr3AHEoLARBjgVFOxAfAOJCUs0ECCCapVGg4wygIShASdqEAYAAYhnM0Y0MAAKIaTBHNzIACCCqRj21oxsZAAQQy2CObmQAEEBMgzm6kQFAAFEc9bSMbmQAEEAsZDgMRMGje+7cuReSk5NpEt3IACCAyIl6lOgGOlIA5FhaRDcyAAggkqOekZGRAeg4ukQ3MgAIILIyE1IIfkCKbpoCgAAiO9fTI7qRAUAAMQ6V0TyAABoyXRGAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAPWhiCrU78chAAAAAElFTkSuQmCC","w8/bracket.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKHSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAsxir5///7/yJEjDLy8vAxsbGwM//79A4uDql8QVlFRYRASEgIJMWLT//79+/+3b99mYGRkBGNwCDExMfz69Yvh8+fPDFZWVgzc3NyM+NwAEEBEOfT69esMx48fBzuSmZkZbAmsjQCyDOgQBnd3d5wWXbx4keHYsWNg/TBHgjz7588fsH4ODg4GW1tbvG4ACCCiHAoyCBQSjo6ODEpKSgx///6FhygIAEMDr34TExMGdXV1MBsWoiAPP3z4kGHHjh3gmCIEAAKIKIeysrKCaTk5OQZRUVFGUtMXDw8PIxBjk/oPCl2Y+fgAQAARlZlA0QQKgd+/f1M1g4BiBpYMCAGAACLKoaDookW7FZYZiQEAATRkiieAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQggohwKquaQ25JUs5yJ+HACCCCiVIIaJKTUy6TU9SDPE+NggAAiqpn38+dPsKFXr14Ft/aRW/ggICUlxSAgIIAzuD9+/Pj/yZMnGC18UHsUZAao8UwIAAQQUQ4FGQRy7JkzZxhOnTqF0pr68eMHg4ODA6iFj1M/SN+ePXvADXD01hioqQcymxAACCBGYqMT6Pv/LCwsDCCM3H4EWcrJycnAz8+PM0SB/aL/X758wUifIHNAjlRQUCCY+AECiHGojI8CBNCQKZ4AAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAUnMlOE1bpzgAAAABJRU5ErkJggg==","w8/btncir.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPpSURBVHjaYmSgEkhOTlYAUgpowh/mzp17gRrmAwQQIwUOMwBS8UAMoh0IKL8AxRuBDt9Ajn0AAcRIhgMTgFQ9ttCDOgYZKOBQtwCIJwId/YBYewECiJECB4IsBIXORiA+ALT0Ax69oBD3B+IANP0TgXgCPr0wABBAjEQ4UABIrUeKXlAoNIIcSYwFWMwDOTYfzbxAQmkZIIAYiUiH+4FYACrUCDSwgUqZD+Tg+UhmJwLNXoBLPUAAMRLpyAtQgy4wUBFAY2s+NEngdSxAADES6UhHcqKZBAeDHJuAz7EAAcSIw5f36eVIHI4F2XkAWR4ggJiw6FlPb0eCANCeRGixBXYDNMDgACCAmLAUQQ5IUUAXRyKBQmgAgRzZjywBEECMaFF+HlrOkZS7gXqJCTFizXKA5g+UJAAQQMghmgB15ANiHQlyIDGORPcMPn1Qh8GSQD1MHCCAWJDU5MPKSnJCEV+IwdQS6ymoG8DJENTYAVW1AAHEhFQcKSBVi0Q7EuRAQtFKbLQjqX+A5A5wSQAQQLAQjYfSBKtFdEcSSqswNTAapAbEJiJ0N0IrAlAboQEggGBp1AFJklhfE5XmSEkiaAAWogagjA4QQDCHGkDpA6TmbmzJAD05kJA2kc1CbjYaAAQQEzR9wlrjH0gNTXLTIZEA7lCAAGJBar1cILfcxOZIdDXkhCoQPITSAgABxMQwRABAALGQmG5oopYYABBAJDmU3KoSTy1EtN0AAcSE1hGjtAVE7RjnhzEAAogJqd2nQAtHkpmJGNCLTYAAYkLqYMFaLuQ2fElyJJGhD+8AAgQQC1JBnwCtrg5Q07EUdv4YoK25BwABxIRWdQbQqTVPjDJ/5NoSIICYoBo3QFtOCkg+GTBHQhvxMHcsBBEAAYSc6xegtUvxWkZODidBTwG0xnwAy+wAAcSINhp3H8oNJGUwi8pdEQVol0gAuesMEECMaIoaoM1/UDJQHIDOHcgN66HRDhrPcoSJAwQQel0/AVpUwUYw6O3IAqS0WYgsBxBATFjagIGwEgA6KEAvRyYgdZEL0YePAAKIGV3D+fPnXxgZGT2E+swAyFYAim2kgyNhgbIA6MhKdDUAAcRIrGaoLz/QKLr7kRyZiE0dQAAxkuDTB9BceIBKDlSAOjCAkCNBACCAiBnIdUAaj4KFbiMpw9pYCvMCaHktgJQmJ+DTBxBAjCQY3o802gar2hYyEDnyDK3xYMPjAkhmFBIz7goQQIwkhoYBtJwNwNIJA4XwRTRxeWjz0QGL+on4RpjRAUAAMVKQvgIYENM3xADY6MdCckauAQKIkUoZwwHqYAEs0gdgTTVK7AAIMAA53o7i86G+RwAAAABJRU5ErkJggg==","w8/btncir0.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARGSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZDHkegR0HYnMx/cLQ9+0fG8Pjn8JgR5//IgdmozsY6NgFhOwHCCBGIkNxPTSKwcCa7zaDi+BVsONIBSCH7nmvzXD0kyqyMChJBOILXYAAYiQiHe6HZhBwyCWJH2IQZv1CceZ7+5uHYd5LO+TkAXKkI670CxBAjMQ4EhSlfsLnwKFIbQAK3RWvLQg6FiCAGIlxZKnsNrKimZTk0P3YC5yecTkWIIAYcaTJ+/RyJB7HKiKnWYAAYsKiZz29HQkrQUD2QUsOWAaGA4AAYkYLzQIglQFix4ofZdDhfsJAT8DP8h2Mz3+RB3EVjIyMPp4/f/4EiAMQQMxYiiEOQ56HDMEiZxgGAsiyvwMngxe/wAWNBdCxM4GO/QEQQMhRXwArhiJETzAMJECyXwDqLgaAAEJ2aD6sMKdGOUkJANkPcgeyuwACiAka7QGw0ASVlzQBjMwkKUdyhwDIfQABBAtRf1jOo0loMgKt+f+X5FBFKnH8AQII5lBwPQ5qYNDGkf/I0orkHgeAAGKC5nYF9CYadRzJSLYj0dyjABBATMiNXnVOajoU5Mj/FJmA7B6AAGKiXd79T1XTAAKICRbt9KoqyalaQQAggJhgxRIX869B6VCYuwACiAna6cLXvxlQAHMXQAAxMQwRABBATNAOFrxNOJgAsnsAAogJ2Dh9ABsouPlNYpBFO9w9HwACiAmpF8hw8/vgSqdI7jkAEEAwh24EEaAGK7QrMOAA5A5oAxrsPoAAgjl0A6JXqDMoHIrmjg0AAcQEHcQCpdEFsO7rQIcqyH6QO6BgAch9AAGEXDw1IhTpDHhoIgUW2F0AAQR3KDT3TwCxN701HLCiCmQvyH4omAB1FwNAAKEX+I2wcnXqMxe6JwGQfSB7kQfQYByAAELpH4B6e8Be30UgMwGk6cpXGQYzvnsMrIx/6eJI0AAEtPfJAB00uwHjAAQQRkcG6NgHQMc+BDIDPv3lootjYY5ESm6JQEduQFYDEEBYe1xAx15Ad6wy52vw4AAt0iQoutEcuQBdHUAA4ewaojv24EcNcKudmt2VTW+NGGY9d2QAmY/PkSAAEEDEDOQ6wMajQHwRYO8Q1JW1QvS7SQbHPqmCHfnmNw+8LoemyQO49AAEEFFD49AOYD8ok8EbtEy/GKz4bzOAhn+I6WuB6m1QlXjsoyp6aQIKwUJCY/kAAUTqZIMDdOQiAFePUZ3zBZLjJBjwNMpBmaWR2BkSgAAia/oG6GAFqGPjGYibuoEBkKMWMkBmQx6QYidAADFSmiGgycKAATEZIQ/tMIIc8hCpGXmB2KkabAAgwABJk5+jk+MssQAAAABJRU5ErkJggg==","w8/btncir1.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARrSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZbFT/M2hoCjKI8P1iYGf5g6Hv5x8Whjef2BhuXH/PcOQ2I8Pjn8IYDgY6dgEh+wECiJHIUFwPjWIwsBd7wuDpIsEgwvud5CTz5jMnw/Y9LxgOvpJBFgYliUB8oQsQQIxEpMP90AwCjtaMUCEGXo5fFGe+zz/YGGasfoecPECOdMSVfgECiJEYR3Ix/WKIMf/JYKbHQHVw6hIDw6zjvAQdCxBAjMQ4si6CiaxoJiU5NK34x/DtHxtOxwIEECOONHmfXo7E41hF5DQLEEBMWPSsp7cjQQBkD8g+kL3QPLEeWR4ggJjRQrMASGWA2DkufxgUJH4y0BNwsf9hkBNkZjhxjwXEVTAyMvp4/vz5EyAOQAAxoUU5qJxkMOZ/wqCt9IthIADIXpD9UFAPdRcDQAAhR30BrBiKCRBlGEiAZL8A1F0MAAGE7NB8WGFOjXKSEgCyH+QOZHcBBBAjNNoDYIm3P/4njRwKCpN/JFUIhQvZYdxAgACChag/rO6mjSMZSXIkLFRB7oG5DyCAYA4F1+OgBgZtHEmeuUjucQAIICZorgK3iECtoMHiSDT3KAAEEBNyo1da6NugcSS6ewACiIl2eZe6yQgggJhg0Y6UcAcVgLkLIICYYIU8F/OvQelQmLsAAogJ2unC178ZUABzF0AAMTEMEQAQQEzQDha8TTiYALJ7AAKICdg4fQAbKLh3//ugciiSez4ABBATUi+Q4ey1j4PKoUjuOQAQQDCHbgRLfJQB98MHAwC5A+QemPsAAgjm0A0wkSMnvw4Kh6K5YwNAADFBB7FAaRQ8WrHxGt+AhyrIfpA7oGAByH0AAYRcPIHGgsC9wIEOVZD90N4o3F0AAQR3KDT3TwCxl18RGbCiCmQvyH4omAB1FwNAAKEX+I2wcrVn9Q+6JwGQfSB7oeABLDRBACCAUBwKTauJYJ/95mHoWPKNbo4F2QOyD2QvFCQiD0AABBAzugZgP/oBsD/9EMgM+PSXi+HytU8MljrsDCxM/2juSKQhSZAjNyCrAQggZmwagY69gO5YHWUe8AABLdJk/8ov6I5cgK4OIICYcRmA7tg9l5kYuH9+ZlCSo15S2Hv0J8OEvTwMIPPxORIEAAKImIFcB9h4FHiMiPULQ6wDK0UjKVfvsTEsPvAbOT2C0mIgvkkJgAAiamgc2gHsB+IEeIOW6ReDk/xbBlMTMaL6Wk/fcTGcPvOKYd9DYeQykgFa0RQSGssHCCBSJxscoCMXAehysEkGIyVWuNi5e78Z8DTKQZmlkdgZEoAAImv6BuhgBahj4xmIm7qBAZCjFjJAZkMekGInQAAxUpohoMnCgAExGSEP7TCCHPIQqRl5gdipGmwAIMAA2Smb3M+iUZQAAAAASUVORK5CYII=","w8/btnrec.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHaSURBVHjaYnz37p08AwMDLxBzATELEDMyQMB/hoEByPb/AeJvQPwZIIBYoI7kB2I2qKK/QPxvgB3KBMTMUDewggQBAogFGpJsUEXfgfgn1CcD6VCQu9iBmAPqNi6AAGJBim6QIz8B8Vcg/gUN1YEATFDHcUP5nCA3AgQQzJF/oCH5FerYnwPsUHYomx0a9YwAAcSClHD/QkPy5yBwKAPULX9hSRAggFigjP9Qh8GxoKDggDj0/fv3DGhuAbsPIICYGIYIAAigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIINj4KGw4Go6ho2oDFXjIGOw+gACCjY+COKAxc9BIL2wQdaAHctmgbgJPPgAEEGx8FDZmDhuOHixD4+xQt/0BCCAwAXUsB1QhO8PgmmwAT+MABBBIADSPwwr1BSeUHkzTN6DY/QYQQCCHfoYqGEwTYqCA+s2ANCEGEGAAoXBOakgMlioAAAAASUVORK5CYII=","w8/btnrec0.png":"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","w8/btnrec1.png":"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","w8/butane.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC","w8/button.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAD6UlEQVR42mJkoBJITk5WAFIKaMIf5s6de4Ea5gMEECMFDjMAUvFADKIdCCi/AMUbgQ7fQI59AAHESIYDE4BUPbbQgzoGGSjgULcAiCcCHf2AWHsBAoiRAgeCLASFzkYgPgC09AMevaAQ9wfiADT9E4F4Aj69MAAQQIxEOFAASK1Hil5QKDSCHEmMBVjMAzk2H828QEJpGSCAGIlIh/uBWAAq1Ag0sIFKmQ/k4PlIZicCzV6ASz1AADES6cgLUIMuMFARQGNrPjRJ4HUsQAAxEulIR3KimQQHgxybgM+xAAHEiMOX9+nlSByOBdl5AFkeIICYsOhZT29HggDQnkRosQV2AzTA4AAggJiwFEEOSFFAF0cigUJoAIEc2Y8sARBAjGhRfh5azpGUu4F6iQkxYs1ygOYPlCQAEEDIIZoAdeQDYh0JciAxjkT3DD59UIfBkkA9TBwggFiQ1OTDykpyQhFfiMHUEuspqBvAyRDU2AFVtQABxIRUHCkgVYtEOxLkQELRSmy0I6l/gOQOcEkAEECwEI2H0gSrRXRHEkqrMDUwGqQGxCYidDdCKwJQG6EBIIBgadQBSZJYXxOV5khJImgAFqIGoIwOEEAwhxpA6QOk5m5syQA9OZCQNpHNQm42GgAEEBM0fcJa4x9IDU1y0yGRAO5QgABiQWq9XCC33MTmSHQ15IQqEDyE0gIAAcTEMEQAQACxkJhuaKKWGAAQQCQ5lNyqEk8tRLTdAAHEhNYRo7QFRO0Y54cxAAKICandp0ALR5KZiRjQi02AAGJC6mDBWi7kNnxJciSRoQ/vAAIEEAtSQZ8Ara4OUNOxFHb+GKCtuQcAAcSEVnUG0Kk1T4wyf+TaEiCAmKAaN0BbTgpIPhkwR0Ib8TB3LAQRAAGEnOsXoLVL8VpGTg4nQU8BtMZ8AMvsAAHEiDYadx/KDSRlMIvKXREFaJdIALnrDBBAjGiKGqDNf1AyUByAzh3IDeuh0Q4az3KEiQMEEHpdPwFaVMFGMOjtyAKktFmILAcQQExY2oCBsBIAOihAL0cmIHWRC9GHjwACiBldw/nz518YGRk9hPrMAMhWAIptpIMjYYGyAOjISnQ1AAHESKxmqC8/0Ci6+5EcmYhNHUAAMZLg0wfQXHiASg5UgDowgJAjQQAggIgZyHVAGo+ChW4jKcPaWArzAmh5LYCUJifg0wcQQIwkGN6PNNoGq9oWMhA58gyt8WDD4wJIZhQSM+4KEECMJIaGAbScDcDSCQOF8EU0cXlo89EBi/qJ+EaY0QFAADFSkL4CGBDTN8QA2OjHQnJGrgECiJFKGcMB6mABLNIHYE01SuwACDAAOd6O4vOhvkcAAAAASUVORK5CYII=","w8/button2.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKaSURBVHjaYvz//z/DUAAAAcSCLiArKwsS4wdiQSjNi00dDQAoxH4B8SsgfgHEXx4/fvwXJgkQQIywEAU6kBFIcQKxDBCLQtmsQMwExbR2JIz+DcSfgfgDED8EOvYbSAIggMAOhYaiABArAbEIEDNDNdE7XTBCMQPUwS+B+BrQsT8BAggWpazQkBSBht5vaDT8AeJ/dHIkEzSJsUFpkJuEobH7BCCAYA4VgwoyQx35BYi/Qh37l04OZYY6khuIeaAOBfHFQQ4FCCCYQyWBmAMpQYMc+RGIf0Ad/o8OockKdQMDUqgyQR3NABBAMIdyQdPGf2h0/4I68gvUoX/pEJqsUDYn1A3/oW4CiwMEEAuSj2DgH9Rhv2FpFbmYoAUAZmZmpAz0F1sMAgQQE1qOY0B3MK0dCQJQO7A5EO4mgABiYhgiACCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggJAd+h+LHDPS4ACtByCYsQQc3E0AAcSCw/GwIRZWqEH0GtJhxeFgBoAAgjn0D5RmZEAM/cEGrOg9SAYbIIONkoDtBgggmENfQRWwMyCG/kAANGA1EMOObFCHghwJGrBjAAggmEMfMUBGnNmhYjxQxQM5kAuLzbcgBkAAwQR+QgV4oI5lhcoN5NA4KCa/A/FzEAcggFiQ0sFraLALIjmUEckAWgLkAIENe36DuukTSBAggJAdChK4B02XoFAFDUnz0jlE/0GTG2i0GzTR8Obx48fgpAcQQIxDZUIMIMAAL8eFn1Tn28gAAAAASUVORK5CYII=","w8/buttonbg.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANDSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxY/JrhM8N7IOsjw3cg6zsQ/gbCPwysDCwMnECSF0jyQ7EYkATyY8mxCyCAGMlJo88Y3i9+yvCOAYS/MPwkWh8PAzuDJIMQgzSDAIMMgzBJDgYIIJIc+pLhw+IHDG8Y7jO8AobZPwqikYlBnkGUQZFBhEGCQZAoBwMEENEOvcHwfPFtYFiCophaAJQcVIBhrMkgRdCxAAFE0KE/GH4tvs7wnOEqw2OaZRRNYELQYZADJgwmnA4GCCC8DgU58jLQgTeBDqU1UGOQYtBnUMDpWIAAwls8gUKSHo4EgVvAZHWF4RFOeYAAwulQoAMX0zK6sQfMEyB+thibHEAAYXUosGxcDPLhQIA7wBh8ASz+0MUBAgirQ+8BCyJq5m5SAMje+8AiEB0ABBATZmH+bjGonBxI8BAYp08Y3qKEKkAAYTj0KbBCpKQwpwYA2f+U4QOKGEAAMaHX3aBqcTCA50B3ANsO8FAFCCAUh74BSpFSd9MSgNzxCphiYQAggFAcCmpiDCaAnKEBAogJl8RgcyhAAKE49PMgcyiyewACCMWhoEbvYALI7gEIIBSHglrmgwkguwcggFAcCuo+DCaA7B6AAEJxKKiPM5gAsnsAAgjFoaCO2GACyO4BCCAm9K7BYALI7gEIIBSHCgH7iYMJCCK5ByCAUBwqysAH7tIOBgByhygw8mEAIIBQHMrNwB4rDQzXwQCkwfHLAe8/AQQQE6YCQXC/e2CHb5gY0AMMIIAwXCTFIBSryCA2oA4F2S+FNjABEEBYg06ZQXzASgCQvQoMIhjiAAGE1aEiDLyxoH72QACQveIMAhh9e4AAwpkY1RkkY7UZZOnqSJB9IHuxyQEEEBN+jdIgjXRxpDp4DAq3XQABRHDs6RfDn8VXgV0tWg5GgEIS5EgOBjacY08AAUT0aB5o5OQWDUbzQGkSV3QjA4AAIml8FNj5W3yX4SVVxkdBRZASMNsAax+ixkcBAojMEed3i0H9f3JGnKXBI86C4PKaFDsBAoiRkumbrww/F79m+AR2LqExfFCFCCz2UKpFUgBAADEOlXkmgAAaMtM3AAEGACiI5SZ+0bsqAAAAAElFTkSuQmCC","w8/buttonbg2.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMbSURBVHjaYpz+YzkjAwMDDDNhwcjyMIDMJhf8R2PD8D8s+D9AALGgOZAFCTMj0eiOpaZDkR35F4j/INEw/A8ggJAdygrEbFDMjsSGOZYJS8hSw7GwUIQ57hcU/4TSIPt+AwQQC1JIghzFAcRcSJgD6mhWtJCltkNBjvwNddwPIP6GhMHqAAII3aEgx/ECMR8U8wAxJ9SxLEihSk2H/oOGJMiR34H4CxB/ggYMAyy0AQII2aHsUIeCHCgMxIJALAB1LAcNQhU9NH9AHfkBahcDktxvgACCOZQZKUT5oI4UA2IhIOaHirPT0KE/odH8EeoOBqSkAAplZoAAwpZGeaAhKQR1rCBUDDn6qQWQo/0L1A4GaCYCOfwzLEMDBBAs1zMjRT8n1GH8UEcKQ9MtBw0d+gPJkTBHI+cNZoAAYkGKSmZo2mBHyv08SJmLk4YOZUNyJNbSBiCAWNBqJVjIwhwMczQnmkMZqZzjYdHNjuRAlPIbIIBYkGoadAczo9VUMA9Q26EMWGpE9AqGESCAWNDqb0YsjsZV/1OrCsXXtoCXMAABhKtaxCdGrQKfkRS7AQKImhmDpgAggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQKICal/ja3PzYBjxI2awzlE2Q0QQCw4NOIbAqTmaB7WIUYsmAEggFiwOBI2soY+9PcHKRao3QtFxjC7URwNEEAsOIb+YMMpsNE1NqTeIi369d+h9sDs/I3kaLCDAQKIhcDQH/owCy1HSj5D7fuG5OjfUHf9BwggFgbUkV7kob+PaMMs9Bh7eg+19wvUHT9hIQsQQCxIin8xoA79oQ+z0Gs07x3U/i9Q94Dc9QcggFiQ0iZsBO0TA2J88hdUA73HR99D3fEN6oa/AAHEghb83xgQI72/ofyBGnGGORQc/QABhB71sDFzWHR8Zhj4MXxw1AMEELJDGZES+G+o7wbDrAjYoQABxIKk8Dea7wbVPBNAgAEAs9M57GQmTiUAAAAASUVORK5CYII=","w8/buttongreen.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANCSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxwfs3wmeE9kPWR4TuQ9R0IfwPhHwZWBhYGTiDJCyT5oVgMSAL5e8mxCyCAGMlJo88Y3js/ZXjHAMJfGH4SrY+HgZ1BkkGIQZpBgEGGQZgkBwMEEEkOfcnwwfkBwxuG+wyvgGH2j4JoZGKQZxBlUGQQYZBgECTKwQABRLRDbzA8d74NDEtQFFMLgJKDCjCMNRmkCDoWIIAIOvQHwy/n6wzPGa4yPKZZRtEEJgQdBjlgwmDC6WCAAMLrUJAjLwMdeBPoUFoDNQYpBn0GBZyOBQggvMUTKCTp4UgQuAVMVlcYHuGUBwggnA4FOtCZltGNPWCeAPEzZ2xyAAGE1aHAstEZ5MOBAHeAMfgCWPyhiwMEEFaH3gMWRNTM3aQAkL33gUUgOgAIICbMwvydM6icHEjwEBinTxjeooQqQABhOPQpsEKkpDCnBgDZ/5ThA4oYQAAxodfdoGpxMIDnQHcA2w7wUAUIIBSHvgFKkVJ30xKA3PEKmGJhACCAUBwKamIMJoCcoQECiAmXxGBzKEAAoTj08yBzKLJ7AAIIxaGgRu9gAsjuAQggFIeCWuaDCSC7ByCAUBwK6j4MJoDsHoAAQnEoqI8zmACyewACCMWhoI7YYALI7gEIICb0rsFgAsjuAQggFIcKAfuJgwkIIrkHIIBQHCrKwAfu0g4GAHKHKDDyYQAggFAcys3AvlcaGK6DAUiD45cD3n8CCCAmTAWC4H73wA7fMDGgBxhAAGG4SIpBaK8ig9iAOhRkvxTawARAAGENOmUG8QErAUD2KjCIYIgDBBBWh4ow8O4F9bMHAoDsFWcQwOjbAwQQzsSoziC5V5tBlq6OBNkHshebHEAAMeHXKA3SSBdHqoPHoHDbBRBABMeefjH8cb4K7GrRcjACFJIgR3IwsOEcewIIIKJH80AjJ7doMJoHSpO4ohsZAAQQSeOjwM6f812Gl1QZHwUVQUrAbAOsfYgaHwUIIDJHnN85g/r/5Iw4S4NHnAXB5TUpdgIEECMl0zdfGX46v2b4BHYuoTF8UIUILPZQqkVSAEAAMQ6VeSaAABoy0zcAAQYAKE7lJiVp97oAAAAASUVORK5CYII=","w8/buttongreen2.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKQSURBVHjaYpz+YzkDEDAyQAAjGmbAQtMC/MdCI2MGgABiQXMUExQzotEMNHTsfyT2PygfmQZhBoAAYkFSxIzkUGY0PiONQhY9BGEO+wvFMHv/AgQQC1KowRwIEmOF0sgOZqRhiP5Hc+AfIP4NpcFqAAII3aEgPhsUs6I5mJEGjkVOh8gO/I1kD1geIICQ0ygz1GEgR7IjYVYahip6aIIc+BMpX8CTA0AAIYcocrSDHMgJxBxQh6OHKrUdCgvNX0iO/Ick/hcggFiQMggTUqiyQx3JiRaqtHTob6gdMEfCkgE4JgECCF9mYkNyMHr0U9OhsJCDORLmaBbkkgcggFjQykjkookFKUOxYSlzqRmif5Acia20YQAIIBYctRKyg5nRfEeLEGVAClX0jAu2DyCAWLBUk4xYHM2IVvhTu8D/h8VxKJUMQACxYKkeGYnA1ASE7AHTAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAueAStcmBbjTvjsAtMAAcRChCP/ofUWadELRaaxOhYggFhwOBJ5ZO0vUr/7Hw379cj2oTuaASCAWHCMWiCPrCGPYNBypAQ2ivcHi4MZAAKIhQFzABXmwF9ojqTH2NNPqL3IDga7DSCAWHD4DHnoD3mYhR6jeT+g9v9GDlWAAGJBcyTyCBosTf5moP/46E/0UAUIIBYswc+I5Mg/DAM34vwLKVT/AwQQcogyIuVu9DHLgRzDB6dRgABCdyhyev3DMPCzIjD+P4AAQi6e/mLx3aCZZwIIMAB2SgxV6z2ozgAAAABJRU5ErkJggg==","w8/center.png":"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","w8/chain.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFaSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGcm2KDk52QBICQDxhTlz5nwgVT9AANEzRPuBeD8QG5CjGSCAmOgRmtQAAAE0ZNIoQAANGYcCBNCQcShAAA0ZhwIEEAu1DAIWPwpASgGPEgFKzAcIIBYqejoBiOtpFaIAAcRCAzMfQDEu8IEcQwECiBYOXTh37twGfAqANRPJhgIE0JDJTAABNGQcChBAQ8ahAAE0ZBwKEEBEZyZoOZmAR4k9LR0KEECk5HoFWpaThABAAJHi0FtA3EiEugO0cChAADEOlUEygAAaMpkJIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQIMAJDxG1S5GwfoAAAAAElFTkSuQmCC","w8/chargen.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATTElJ4Zo7d+43bHLJyckFQKofSegAUK0jPktI1QNUzzpnzpzfyGIAAcSExZF8uBwJBf5AvACIQRYVArEDEQFCkh6g/b+B7uBAFgMIIEb01hN6aAJ9ZwCk5gOxAZKyRqCaBqAcyML9RMYeLj0PoHIL0DUguw0ggDCiHhjk34CakIXWQw1zRDMcBC6gieMDuPSAHD4f6AFQcniAFmicQPd8B7EBAgjsanSMll7+Q0OBZgCXHUAxCZibAAJoUOd6YAi/gLEBAmjIFE8AAYThUEZGxkHpUIAAGjIhChBALFTMELgy3AVgWvtAqfkAAcRCRU/jKk9BRdEBSg0HCCAmbIXsYOxCAwQQNUMUV8F/gRqGAwQQ1RwKTIcHqB2KwHTPD6Q+gtgAATTYc/13GAMggLC1ngaN44H1/C8YGyCAsDmKDUuhr0DDel4AhzhKsgQIIEZsORzZoUANoAZvATWKGBxAAZrGFXE18UAAIIAYcRVFaI5NoGGogiqDBciVAjY3AQQQ41AZdgQIoCFT1wME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAOVBownGMQPHAAAAAElFTkSuQmCC","w8/chargep.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJlSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATZGRkxKkhOTm5AUjVQ7kfgDhx7ty5G/CoFwBS+4HYACr0AIgdgXoeIKsj1OYACCCMEE1JSWEl4DmQIw2BFoF8swDJAbgAWB6kHqoH5DkFUkMUIICwhSgjWoiALOpHFgNaeAHK/AjE8UA19njsEIA6jgEpFvqBemBiF4DmFRJyKEAAYTgUqOkXmtB6IJ4IMhDKb0SSA4XoASICBNmhhVDHw8B8oKM3EjIHIIDAaQOGgRpEsKQxohusoPQLUg/E+0nQAwrdBmR3YMMAAYSeRr8MQIb+SIwigABiQov2H4O1eAIIoCFTjgIEEAslmkHpC614ghU7BujpFBhbjpTYBRBALBR6FORIBxxFkgM1QxQggCh16EIgPojEt4c68AFUjmoAIIAocigwOhdgqV7BDgXKNVDToQABNGQyE0AAMaGFiNxgdShAAKGHKBuF5j2AVoUXqO1QgABCSaNz5sy5A0xblKbZBbQIUYAAYsJSNspjETOgYaz6ExMDAAGELde/RuODWkv7gY69QANHKkBbVgRbYAABxIitZQ1sPEsAo/EFUogqkNPYJTK5HCCmhQ8QQDibVUDHsdMzVxNq5gEEECM+n+DrO9HCofgAQAAxEWh0sDAMEgAQQIzEjDjTMmSJHfEGCCAmYg0Dhi7zQDkSBAACiHGojOEDBNCQaZQABNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAJHg35fPzWQ0AAAAAElFTkSuQmCC","w8/chemdraw.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE9SURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBALsQrZqk1R2mW/Wk8z4pNHVwOTJySGDgACiIUUxxFjOIwPkgdhfJYTAwACiIkcxxEDkB2KjU+suQABRHYaBBlMrqNx8bEBgAAakEyCLb3iAgABxEQPSygBAAHERK+QwJce8QGAAGIiNbFT6hgYn1hzAQKIhdjEDSs2CCVwYtSQAgACiHGw94sBAmjQV3UAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABBgDw7WZP06/zpAAAAABJRU5ErkJggg==","w8/chemspider.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcunfv3n+E1Dx48CCGEjsAAoiFGg59+PAhIz75Xbt2/X/x4gWDgoLCEnLtAAggqoQoIyMjIfn/hNQQAgABRLRDP336JIBLjlBZDJRnpLS8Bgggoh3Kx8f3gVyHUgMABBBdov7Xr18MlEY9QAAR7dDTp0/f2bp1K86g2717N86c//LlSwYlJaX36OJv375VnDVrFlHRARBARDsUaJny+/fvscrJy8v/f/z4MdYgu3DhwmFQaFpbWwuhy33+/NmalZWVKPsBAoiJlOjFFX1qamqBuOTu3r1rw8TExEBp+gYIIBZqpEVZWdmNIAvnz5//H2YxTC3IkdLS0v8pdShAABHtUJCBuAydN28euJx0cXEJ+PfvHy9MPUjsyZMnk+7cuSN44sSJJxYWFjKkZkQYAAggFlJC8+/fvxjic+fOBbs+KSmJcc+ePf++fPkCLzOBjmYIDg5mZGFheXDz5k15IP+1lZWVKEzv5cuXFxPrUIAAItqhDg4OPCtWrPiyYMGC/6AMICEh8R8YWowgi0COBKlhZmb+C3QUCyw0YQ42NzdXAFX3N27ckP/27ds/kD5YDGlraz8kxn6AACK5xvjz5w/j6tWr/4HKRlAIgxwJLBH0xcXFLxLSe+TIkQ/37t3j5+LiYtDQ0Firo6MTQqy9AAFEcoEPCrDIyEhGSUlJePoClq8X8Ok5fPjw56VLl/4HlqV+IM+FhIQwkuJIEAAIIIpqJphDiajrKa4BAQKIbg1naJplJVc/QABR5FD0MhOPI/9R2oABCCAmCkII3sYEZjC8aoGZ5wEbGxtJ5SY6AAggknP90aNH3wGLGUFgpoJVny8sLS0lidELqrmQ+Zqamk+xVQLYAEAAEe1QYG5lBJah4CiUkpIClX9hwGKp/fr168pAx4ItBNVQoEIe1i4AmQ0sfwuVlZUngCoGWJkLaqgAGzE2r1+/BsdGWloawWAGCCB41UgInzp16g7IMnRxYNX4AFQJAIugD7j0gvSBPIFLjhj7AQKI4s4drNYBVZHAOv0/cj0PY4OSSVxcHEUtZ4AAokovFOTYq1ev/hcVFWUAVa+wUAA59s2bNwyCgoJk9w5gACCASGmU/MYl9/v3b0ZQc87X1xfD1nXr1v0HpUVKm3kAAcREQpnJisvQjRs3/gM2SLDKBQUFMVLS34IBgAAiOjPhw6CMAmyyrcElv3Dhwv/Lli3DmmmA3RE+YuwACCCqVaH4GhnAJiEoeWCV4+Hh+USM+QABRBWH0qNfDxBAdOnXU8MzAAFE19YTJQAggKjiUFzpDzk0QVUrJQAggBiHymQDQAANmRFngAAaMg4FCKAh41CAABoyDgUIMACIPoR3Is1ykwAAAABJRU5ErkJggg==","w8/cleanup.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADmUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCjiJGRkSE5OdkYyFwAxDpA3Dh37twGmDw9ymKAAGIixpFQcAaIc4HYEIjrgQ4XoGeIAgQQE5GOhIEHwJC8AKQ3AHEAPR0KEEBMJDgS2XEbgdifng4FCCCsDk1JSWHEIgxyXDyyo+kZ/QABhNWhwOjFljtAjlMAOk4BKP8Byk+gl0MBAogJS2iy4nD8ByzRH08vhwIEEBMWB/3Gox49+g1AIUwPhwIEEBMxoYnkCWzRT7PcD3QP3H0AAYQeopxE6Ac5Lh/KXkjL6J8zZ84/GBsggJjQQuwTEfo3wkIRFsJAn9M8+gECCMWhoKoQG8YS/QLA6DdACmGa536AACK3UbIAKcrpkvsBAohchy6kd/QDBBAjMS0fLNUpqDV1H0hNBCUDaOZSBCb+D7RyKEAAUdIeDQS1oqAY5Nh+YKjSrEoFCCBKHArKTKAQdARiQVD0gxxLK4cCBBAlDoW1nkAhuh4aqjQr/AECiOQ0Cm0x9UMdhS2qD0BDeiMwzS6glkMBAogch86HRnMjHi0K0JB+AErL5GYyYJpnBur9C2IDBBBRfSZkzwA1G0Bz+wOgIQ/wWLIBGvL7od0XcgC8CgUIIKKbeWiZCBSq5/HlcmgoFkLNnE9GaLIDzYCHEEAAYctM/4CK2AiYA+s3zSfQqICVCgEgx5JYfKE0NwECCGsahfrmJw6f/odmFkVotIIcXYgvHUIduB4aGyAPXoTqg3noAJp6NqDYL2QxgADCmZmAirmBir9iET8PtTARKVQdoJlrAQEHG0BLC3lohoNlvANAfYmwpAdkYzTeAQIIn0NBGY0RXRNQHLloAmWqCVCH10MdvAHaUDmAL7OhhTaoOjYEqQfxsXkWIIDwFk+wjIXsWKjB+6GOQ25MX4Sy9aEOFoAmEVjSuIBmhgFUHUy9LBCLA9XdxeYWgAAiWI5CQxbk2D9o4gHQ2skBKRpxgQdQzABVD6sYQGIHgXgrEPMA7biPywCAACKqwIf2XZixpR20EBJAC2kY+ICUeS4gRy1QL6j7ww8Ue4HPDQABhLNVjw0DayUmQj0AUgDQPHli7QYIIEZSLYKOonACQ+AbvvYqAQeKgUIZvQjCBwACiJGSEAE6GmQhE7CV/4IIxwlB0/o7cuwCCCDGoTLPBBBAQ2bEGSDAAA4pnbzrsbaOAAAAAElFTkSuQmCC","w8/copy.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREc5OTk4WAFIJQOxPon0bgfjA3LlzLyALElOWAwQQC6mOhIL9QPwBiBcC8QMiHQnScxBEAz2aCHTsBmTzCTkWIIAYifENWmiCQjIfaJEhKUEJ1AeyqBEaCwZADHLsAmJDFSCAmEi0DOTIeGgUkgtAekGe7IeaRxQACCAmEhzZD6TqqZExoGnUEerYfmL0AAQQE5GOBGWeAmhIHCTTfaA0rQ/yLDQZnAdisLlA/nxCmgECiNgQNYDm1g8UBCQofQbgkFtISDNAALEw0AkAPTkBSE3AElv7idEPEEBDpsAHCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAix6Ggroc9Fd0gQIwigAAip/W0AdrgXQ+kJ1LoyHxoy+rAnDlz8CoECCCSHQpqkwIdaQht7ZPb4leA0gegLX2CACCAiOrcpaSkKEBb5IoUNp6RuzUfgWY1ENu5Awggonuh0KhWgLbUKXGsAzTKHZH794TcARBApEQ9qMdYCEtXFIAP6I4kBgAEEONQGXEGCKAhU44CBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAT+J+UsQfvtwAAAAASUVORK5CYII=","w8/copychemdraw.png":"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","w8/copyprod.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACz0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGTHEkpOTHYCUA5FGHJg7d+4BdEFiikiAAGKixJFQYADE9UCsj0e7PlSNAYlmwwFAAIF9QwgTAsBQbQDi+Xjk1wNxASVuAQggJgpCEhlsIBD9ILkDlNgFEEAUhSRaqP0nR45YNwEE0KDM9dhCFiCAhkzxBBBAg9ah6KEKEEBDJkQBAmhQOzQlJYULxgYIIKo4FJirA4DUAzxKLgDVJJBqLrAW+wZjAwQQExUcKQCtdRpxyIPK0IkgNVC1ZAGAAKJGiPYD8Qeg7xfgkPeHyl0A4vnkWgIQQEwUhmYBtNYJxKPMABrtiUCsAKpuybELIICYKHCkATQ0A4Eh9oGIUGeAOjYfmhxIAgABxERButwPshjoyAtEaAGp74eqLQRiUCNFgRQ7AQKIEV+dDiweQFGGzUB/qPhEIuyIRzLDEdQeBToSFMIOQLYhMfU+CAAEECGH7iehUUwMeAB0nCI0Vs6DMhiQn0iMQwECiNQQJSUksYUoKC0rgtI0NPncByUFPCUG3KEAAYTXocj1LTTzwNLlBhLSM3KsgBw1Aa2MXQ9NEhew6BWaM2fOOxAbIICYSMg8oDJwIimOxNJfmoBW8xyAVhTrcVQG8FAECCBic/18aPpqoCB9FuKoJidAK4P16HLA0HwPYwMEEBMRoVkA7ZQlUuDIRgLFGMhsAeTKAMgWRFYAEEDEhGg91KIP5OZ0IJ5AoPHxAZoE6rGFJggABBAx/XpQDu/H18skAiQA9RNS8wHmIaBafiD1EVkSIICo1rmjFgA6khWbWwACiJGQg4jsLlMN4HIPQAAxkauRno4EAYAAYqLUAHo4EgQAAoiJWgZRkCYZiTEbIIAYh8pkA0AADZnuMkAADRmHAgTQkHEoQAANGYcCBBgA62Rb2vGZHX0AAAAASUVORK5CYII=","w8/curve.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAslmj9+/KiydevW22fPnmV4/fo1XFxAQIBBW1ubwdPTc7KcnFweNRwKEECM5NT1N2/ePD116lST27dvM8D0MzIygtkwGgaEhIQYMjMzGWxtbRkpcShAAJHk0B8/fnC2t7d/O3nyJFxMQUGBwd7enkFGRgYu9urVK4YDBw4w3Lt3j+Hfv39gh0tLSzP09vaqAkP7DjkOBQggoh0KiuaMjIzb79+/B/MNDQ0ZCgoKgsTFxdfj0zdz5sz/mzdvZvjz5w8DOzs7Q3Nz8wc9PT1BUh0KEEBg3xLCoJCMiIj47+7u/t/Hx+f/qVOn/hOjD4YfPHgwKSQkBK4fxCdFPwgDBBBRIVpZWfn//PnzDKysrAzAtElWBvn58ydnQkLCtw8fPjBwcnIyLFu2jIuDg+M7sfoBAohg8XT58uX3IEeCMkltbS0DubkYGO3fZ8yYocrGxsbw7ds3hgULFnwjRT9AABF0KDAEBUC0mZkZCFOUc/n5+e+kpqaC2cBiDRzKxOoFCCC8Dn358mUgMD2BQzMrKyuIGuUhMI0y8vHxMfz+/Zthy5YtoKSgQow+gADC69Dt27evA9EqKioMhHI3sWDSpEn/NTQ0wOzdu3czREVF3Y6Ojv5PyMEAAYS3ZgLVOCDg4OBAlWqwoaHhP6gMZmKChM+jR4/A5ezbt28J6gUIICYCZSeYVlVV/UANh7q4uICLmr9//8KLRrAjgA4nVBEABBBeh+rq6jKIiYmBoj2JGg61sbFh5OLiQinDQQBYTBHUCxBAeKO+tLSUkYHKAJSMtm3bhtImEBQkXFEBBBDdm3nh4eFBsDQKA6BYIwQAAojuDgWVHsBKA6OFRQgABNCANJyB9T4KH9SyIgQAAmhAHArM/YygdgMonYIAKIQJAYAAGrCuiJ2dHTz6ZWVlJxNSDxBAA+bQuLi4IFD7FJSRJCQkygmpBwggxqEy7AgQQEOmFwoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAEGAEDZZxMiUCdQAAAAAElFTkSuQmCC","w8/cut.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADj0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHlUEZGRqJxSkqKAxALoIuTCgACiIVUBxILkpOTA4BUPxArAPEGIA7EZhaxxSNAADHRyJHzgdR6ID4AxBeA+AOl5gIEEBMNHJkApEA4ce7cuYlA2gCIN1JqPkAAMVHTkVCQD8QLgI5cAHS0A1TsAKX2AAQQE5UdyYAWgiCHXgA6+gOlMQcQQFQtnrCEoD0xoUkMAAggapejIIc+QApBEP8gNQwGCCBqO1QfmsthxRMDtUIUIICo7VADpBC0JyV9EgIAAcRCQpFTDy28QeABEBcCHbEBSY0AVP4CUrQfINJ8AagnH0AxBgAIIBYiDJkPLRcXIDkUBNYD5RqBjm1ACk0GIP8AksWNeBzmAA11B5heqMccsekBCCAWInJxAtSABGhowUIOJFYPVAMqMx/AiiKk0ISnT6AaBahjsDkMVJQVAvF8XKEJAgABRChE/aGWG0AL8USoxeuRoioByJ+ApBaWPkFpsx/qWQV0h4FCHilAGqAB0IjLIQABxEJE5tgITZ8LkcQnAvF+qMX80NAAOeYBND3DQlQAqu8AssOQHKgAjal6aJX7YM6cOVgdAhBAhBx6ARpSoNCJR8oc+dDQPAi1BKY2AIo3AC01xJFhHKDFmAHMc1BHLsDnEIAAYsTXzAK1JaEhtwHqgAdIIRUIzTgFQLY8UlL4AA2lQCyOgnkIhC9Ciy+UkMblHoAAwutQUN0LdAioTVkADU1YmfgBarEDWugbIMkLEHIUNoDLPQABRNChSLVMPZJDLkAdfhDKzod6ZgPUAyiZjxSAyz0AAUSUQ4kstM8jZbwD0Bz8AFp0UexQgACiZhVqgORAA2javg9NOhQDgACiikORmncP0JLGBmg5O59SOwACiFohCquV+qHp9QLU0QFIjjWgxAKAAGKhkkPtkRzmCMvdQMd9QCq2kKtYkgFAAFEzjQqgRT8IfISWAh+Q5MkCAAHEQigHEpnzHyCF3HxgSCZCHQhLBg746nFCOR4EAAKIhRjNRDgW5Ij7UEcpQNkMSPwHyG1XUh0JAgABxERJ2QYD0LIyEalC2IBU+Augj5KQaj4IAAQQIykjzoRCFtoaykdy8EZoDfWBEkeCAEAAMQ6VoXGAABoyw44AATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAZmIvcCRG00MAAAAASUVORK5CYII=","w8/delocalized.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFkS5KTkw1A9Ny5cy9gkyemvQEQQEx0cuR+EAayFZDFgTiBWHMAAoiFltEFdRjIkQJADArND2iOFwCyQWIbCJkFEEBMtHQkMKofQB0BcqQjkP8B2ZFQ8QPEmAcQQIyktEeJjXokx2wAOi4Ri7gAsuOJcQNAADHRICSRHWNAyJHEmgsQQEw0dCTYMdRwJAgABBC1QzQe3THUcCQIAAQQCxVDMh7ogEIg+yOQPYGajgQBgACiODOhOaYQ6JAJpEY3MW4ACCAmKqfJBdRKk+gAIIDIDlFoYX6eGmmSGDcABBATmSFJbGFOcUjCAEAAkRyi6IU5kC9AqSOJcQNAADFRkCZhLSKahiQMAAQQqVH/DUojF+YKtHYkCAAEEEkOBTrgFpAyQnMMiH5AS0eCAEAAMZI6SIajLBWAJQNyHEGMGwACiHGojOYBBNCQ6TMBBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYACjl3l/XY/YnAAAAAElFTkSuQmCC","w8/diamond.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMUExURff39/7+/h0dHfn5+fv7+xsbGxwcHAUFBe7u7o+Pj+Tk5Ovr64mJif39/SwsLOLi4hQUFJubm8jIyAMDA8LCwjk5OePj4/j4+DExMREREenp6fLy8lpaWvHx8dra2j8/P8rKypeXl9LS0urq6vr6+q2trRYWFqioqNfX187OzgkJCfT09ODg4NDQ0GBgYMbGxnFxcU5OTnBwcC0tLYeHh1FRUVBQUMPDw5qammdnZzg4OMDAwI2Njd/f3+jo6JiYmBoaGr6+voGBgeXl5UtLS11dXRgYGCcnJ6Kiov///yMjI5CQkLi4uLS0tLCwsCkpKQ4ODtjY2C4uLiUlJcTExEBAQDAwMKOjo+Hh4YWFhUFBQYiIiFlZWezs7BISEjU1NWJiYlJSUh4eHvb29oODg0VFRUJCQqWlpba2tsXFxT4+PkdHR5WVlczMzM3NzXJycufn5zY2NjMzM35+fiEhIVVVVSQkJMvLyygoKKCgoISEhGRkZO3t7bW1tVxcXF5eXhcXF/Dw8Ds7O////w7LLyYAAACEdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AJfSNr4AAAHSSURBVHjaYmgmEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCItC2fwKIUYMUYAAwlCoouDPZ6hVzI0uDhBAaAo9FdICDLh5RfiYqrRRZQACCFUhi6pAqDkLkCHFyVbHgSIFEEDICnnLs5l8maGcWCsmTmUkSYAAQlJoyxPXpIngKvMwBfkww7kAAQRXyJjOFKyK6hCpBC1LuP0AAQST4vd2SxFD9ymzo3GYNVQFQABBKG37JAcNbMHMrccepQQOVIAAAiusTa3OKMAeISx5ivEmIAZAAIEVugqbauCKOml1NT4QDRBAYIUqIvKSThzYlPGGSLDy2IFYAAEEdaq4n5eoLmYEy0azyzhDmAABBA8QrhhJzgi0WNMvdM8Vh3IAAggRcgzqJayCyAEpZyacyA/nAQQQsgyXoEA9XIZZUU1UCEkWIIBQ40Iui60yGcwSK22wkEaWAgggtGTWaCMgr8nSzBXJKhGIKgMQQOgJl1HJhd3Io4wtpwZNAiCAMLMCQ6ZMUbgOhjBAABGduQACiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGABSZ8Qt0ZCFNAAAAAElFTkSuQmCC","w8/double.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF6SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDqemIxOSA5OdkAiPsptR8ggFhoGQggRwKp/UAsAGQ/nDt37gSoeAKQygdiRyD+QIxZAAHERA9HAvEFIF6A5Mj5QAySLyDWPIAAYiQlShkZGcl1pCMwND8gORIEFgDFEom1HyCAmOgQkjgdSYq5AAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAFEaoj2D4QjQQAggEh1aCC0cQF2JFRMn9aOBAGAAKJKexQaqjS1HyCAGIfKIBlAAA2ZrghAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAMXkoC4WzeV0AAAAASUVORK5CYII=","w8/doublearrow.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqUExURdbW1lRUVAYGBtXV1V5eXlVVVQUFBZ2dnZycnAAAAAEBAWNjY9fX12FhYf7+/qqqqs3Nzdra2gMDAwcHB+jo6F1dXQICAn19faurq2RkZEhISCwsLDExMdnZ2WVlZdDQ0DQ0NNPT0xISEhUVFbq6uqCgoAkJCfb29iAgIEpKSm9vbz8/P/n5+cfHx6+vr+3t7f///6enpzIyMklJScDAwC0tLe7u7np6eicnJ9LS0mhoaPLy8nd3d76+vqmpqVhYWFNTU8HBwXx8fBcXF4qKira2tvT09Pz8/EBAQAQEBGJiYoaGhiIiIv///4IDuQYAAABOdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////AKxN+84AAAGUSURBVHjaYvAlGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECCK6UT5EBDHhAmIcBAeR1oCoAAgiuVEJImAkE2ECQjY2JCcoTFpKEqgAIILhSdmNZBgZmEGAAI2YIj0HQwwGqAiCAEEp5cTjRnhHKAAgguFIOFhxKGWFKAQIIYSpBpQABhDBVlJBSgAAiwQEAAUSCUoAAIsGtAAFEWCkrK5QBEECEHQBXChBARCiFOQAggIhwK8xUgACCKFXx8lVl8XW1wlCnbgnylrsAiA0QQBClupz8ety+ypoYSg3FrEVZfbktQGyAAII6QNzZRstcyQxDKZ+MHC+viZgdiA0QQDC3SnH5cDlicambkYK2mhOYCRBAMKWCnpzcWH3lzcmlwQdmAQQQPAS4ufSxKhXg5OSHsAACCK7U1gV7WBmYSkNZAAFEOMeKiEAZAAFEQuYGCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEGAD9SeQt6RnK8wAAAABJRU5ErkJggg==","w8/down.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4TpAZKTk9nwuQEggFgGOqCADlQAUvOBOBaIn+BSBxBATAPsyAQgdR6IJ86dO/cJPrUAAcQ0gI6cDw3JBUBHbiCkHiCAWAYoqj8A8UEgNgA6spAYfQABxEhMZmFkZKRmVPcD8QMgdgQ68gN6xsYFAAKIhU6hKAB1YAJUyACKDxBrBkAA0Svq1wOxAxK/ERiaB0gxACCAaBr1wJAMgEYzCOwHYlDIHgA60hFXmY4LAAQQCx2iGpQOHaEYFLKB5JgJEEBUD1GgIw2gxY4BkvAHaOa5QKiWxAUAAoiJyiGZAI1iAzQpASxiJAGAAGKhYlSDMK4Q2wAMzQWU2AEQQExUcKQBNBTPQ4UcoVENAyDHJ1JqD0AAUZRGgY4sgGYalLSIlMsZiEmbxKRRgAAi26FARzYAqXosypEda0BKlONzC0AAkexQaFQrQGuV/TgyCcixhkBHPiC1bYwLAAQQE4npsQCaFkHlYQA05LBF6wO0dEoxAAggFhJy9Xyo42BgPlLmQQ5ZkAMD0RsclAKAACK2eCpAcyQ+xyaSGuXEAIAAIjqNQhu6CTiUgIofUOM3gJLyEp9bAAKIpMxEwLGBxLTUyXUoQACRlJmADgGF3AIcufwAAw0BQACRXDPhcCzVMw86AAggsqpQNMeS3AgmBwAEEFEDELjSDrS1RBd3AAQQ41AZGgcIoCEz9gQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAAQYAQ2Ug5wgQDD0AAAAASUVORK5CYII=","w8/dreversed.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKjSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAulBnz+/Lnh7Nmz9WfOnGF4+fIlw/v37xm+fv3KwMjIyIBcPYP4IAATW758OSMp9gAEEEUOvXXr1v/JkyczvH37Fu4AmINgbGTHUtKuAAggshz69+9ftk2bNv1ct24diM2gra3N4ODgwKCurv6Oi4srDoi34tIbGRn5H9kzxAKAACLLoRs3bvy5Zs0aBmZmZobo6GgGb29vRlqnUYAAItmhjx49+g8KSSYmJoba2loGNTU1khyJnhyIBQABxERqlM+dOxcc3QEBASQ7Ej1jkQIAAogkh16+fPknMAMxSEtLM/j7+wuTG43khChAAJHk0Lt374JDw9LSkoGVlfUdPctRgABiIjF9gmkFBQWKLCUn6gECiOQQBQElJaUL9K6ZAAKIpFz/+/dviCYWlo30TJ8gABBAJIWoqqoq2CJgyNbTO0QBAogkhyoqKoLphw8fUpQ+yUmjAAFEkkNhmej48ePgMpWeUQ8QQCQ51MDAgF1OTg4cotu3b/9JrxwPAgABRJJDgXX7r7S0NFBmYli1ahW4OqVXGgUIIJIbzsrKyoxeXl7gEqChoYHhwIED/+kR/QABRFYLPzQ0VBjYYmL4/v07w6xZsxgmTJjw/+rVq/8/fvy4hVZpFCCAGClpzF64cOH/9OnTGT59+oS1RY+thQ8Dy5YtIymxAgQQI6WjeaBQPHz4sPe5c+fAVey3b9/ADkR2KDY2qV0RgABiHCrDjgABNGR6oQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhV7qdwMl/9MAAAAASUVORK5CYII=","w8/dshape.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK0SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAupGiIjI8F1LiMjI5iPXAWDxEB8bm5uBkFBQQZxcXEGExMTBmNj40ZeXt4GShwKEECMpNb1MIciOwzd4ejiwsLCDLm5uQxqamqM5DoUIIBIdmhUVNR/kJ7ly5fjtPTbt2/eQLzo5s2bQgcOHGC4evUqAzMzM0NQUBCDn58fO5D9i1SHAgQQCy3SExcX11YgFhYREWGwtrZm2Lp16/8VK1YwrF69GhTSP4EOJjlkAQKI5MwEi1pSgLe3N2NtbS0DExMTw7p16xgePXpEctsSIIBIdiipjoQBUPoMCAhg+Pv3L8PcuXNBNBsp+gECiKwQJRf4+/sLS0tLM9y6dYvh8uXLP0nRCxBAdC1HWVlZ31laWoJj5e7duyTpBQggukU9DCgoKIBpYDolSR9AANG9ZlJSUroAokkNUYAAIiuNUpJOWVhYNoLo379/k6QPIIDoHqLAkKwHeVRVVZUkfQABxELvNPrw4UMwraioSJI+gAAiK0TJjXpQ2Xn8+HGUTEUsAAggshxKbqhu3779JyhE5eTkGAwMDNhJ0QsQQHRLo6Bqc9WqVaDMxJCWlsZAasMEIIBYyIl2UkMU2IL6v2jRInBOB7aeGJSVlUmOEoAAYqFVGv348eOWJ0+eeO/evZvh1KlTYD3AxglDaGioMDl2AgQQ2bke1C7F1cJH5/Px8TFkZmaC0iXZRQZAAJEd9cgtePQQBokB26PgTGNkZMRga2u7lZ+f34eSNA4QQIxDZdgRIICGTC8UIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAB49tbChjfEqgAAAABJRU5ErkJggg==","w8/dummy.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKMpNTWVZD1lZWUGQKofiANVVVU/kKofIIDoEqJQR+4HYgeoY0kGAAHEREdHCgDxBSAuJMccgABiorMjHbu6uj6QYxZAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAkRui8fR0JAgABBBZDgU6rBDauKCLI0EAIIAYh8poHkAADZkWPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAHVBdbh28ks8AAAAASUVORK5CYII=","w8/e-br.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB+0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqiElJaUBj/QDID4wd+7cB6SYSUx7AyCAGEltlAAdSoyGA0AcCHTwB2o5FCCAaBX1DkC8npoGAgQQpQ5dAMSOUDwB3bHJyckG1HIoQACxUKj/ITB6D8CiG+gwEF2AJC+ATzNQPSjkQcnjAiGLAAKIhYYZFe4AoINAGbAeSU4RiPcDsQI0PTsSMgwggKiWRoGOCQBSCUhChXgy03yoI4kGAAFEaYjWAx1Yj6WIAjlyA4HM9gCKiSoZAAKIFlEPCql4oAceAB2LK+1tAMoFwjhz5swhaChAAFEa9Q+gaewAWoYAJYP9eHJ9I6kWAQQQpSG6EBgyDWi5eD9Sju/HllHwhDROABBAVC3woUXVAbS0SBUAEEBUdSgwRAVIzc3EAoAAojTq5aHRDctE+WgO3UAthwIEEKUOTUArO9EL/EZqORQggGjVKAFlFkdyMg0uABBA5IRoI4Fq8wAWBx6g1KEAAcQ4VAbJAAJoyHRFAAJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAANuEaTpkv5WxAAAAAElFTkSuQmCC","w8/e-c.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB1klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQopmRkRGFn5ycLACkEoDYH4gNgFgAKvUBiC8A8cI5c+YsIMcugABioZaPgY4EObAfyXHIACTmAGWT5VCAAGKhoiPn0zLqAQKIiQqODMDiSFCoGc6dO5cRhIFsRSBOBOIH5NoDEECMlLRHQWkU6ND7QKYCknAi0HE4o5dc+wACiIkKoYnsyAX4HEkJAAggSqPeAI2/kFZpFCCAKHWoPTIHGJoHaOVQgAAaMgU+QABR1aHQAp8mACCAKHXoBTR+AK0cChBAlDr0IBo/n1YOBQggihwKzDwb0ApxA2D0r8eVBIDiDuTaBRBA1KhCC4F4PVr0OwAdBfLEQ6iYPrSuByUVskoGgACiuGYisa4/AGw9OZJjF0AAUSXXQ2sjRyyZCx2QXdcDBBBVQhQtHRpAaywFtNLhAtBDD8i1DyCAGIfKIBlAAA2ZmgkggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAbpRYRsxEFnEAAAAASUVORK5CYII=","w8/e-cl.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB6klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALqRoYGRnJtiw5OdkBiXt3zpw5j4nVCxBALNTwLdABAUDKAIjtkYQfAPFFIN4wd+7cB1Cx/UjyjUDcQKwdAAHEQgUH9gOxAh5lAqQ4CBcACCAWChyZAKTm0yuNAgQQCxUdeQCIF0KjnAGaFPyp5VCAAGIhw5EC0OhGBonAdLgAi8MnQNVTDAACiJziKQGa7uCZAosj4QAo94EaDgUIIHIcih6dE+iRRgECiByHGiCxL1ArxAgBgAAix6HI0f6BXrkeIICGTBUKEEDkOPQBEtuBWrmaEAAIIHIcegBLKUBzABBA5Dh0IRq/Hq2xga3cpRgABBDJBT4wlx8AWg4KVQekzLUfKAYqSzciZTAHaFG2kRp1PUAAkVvXB0JbQgZoSQBbMthIjRAFCCCycj207HQENeHolesBAojs1hPUsYHAKFeAhqQ+Whl7EFohbEBrg+LKlHgBQAAxDpVBMoAAGjIFPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABdeFObdlH8zQAAAABJRU5ErkJggg==","w8/e-f.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABPUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQw5CUlBQHIOVAQNmDOXPmLCDXDoAAYqGSh0GOrCeg5gAQk+1QgAAaMlEPEEAsNDLXEYvYB0oMBAggmjh07ty5B7CJA9Mo2WYCBNCQiXqAABoyDgUIIJpEfXJy8n4swoVAfIFcMwECiFaZCVuZKkCJgQABNGSiHiCAaJXrGamd6wECaMiEKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADEOlbEngAAaMiEKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAANfkaO5puRsIAAAAASUVORK5CYII=","w8/e-h.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFASURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCrMSUlJQFIxcP4c+fOdcSmLjk5GUXdnDlzHMmxDyCAWCjwpAIQO1BRHV4AEEBDJuoBAmjIOBQggIaMQwECaMg4FCCAWKhlEDB3N+CQsqeG+QABxEJFT9fTMkQBAmjIRD1AAFEzRBvxRD3F5ShAAFHNocCaqQFP2qXYoQABNGSiHiCAhoxDAQJoyDgUIICGjEMBAoiSzPQAiA9QUR1eABBAjENl7AkggIZM1AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAArGRoCgceFHgAAAABJRU5ErkJggg==","w8/e-more.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFVSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaUlJSBIDUeiB2AOIDQBw4d+7cD8nJyVjFQXqAcv1AqgCIH4DE58yZc4FUewECiJwQTYA6hgFKJ+ATBzrSAOpIEFAA4npyQhQggMhx6AccfFLFSQIAAUSyQ4HRuQBINUKjtxHKxycOjm6oOEiskByHAgQQ41DpLgME0JDJ9QABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAD6njUQCJ93TAAAAABJRU5ErkJggg==","w8/e-n.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJcUBSDkgCV2YO3fuBmxqk5OTUdTOmTOngVT7AAKIhQJPgiyuR3OQItCxD4hQS7JDAQKI2lE/n1ZRDxBA1HaoAzBUC2jhUIAAokVmqgc6VoHahgIEEDUdegFKCwBxP7UdChBA1HRoIRI7ABiqAdR0KEAAUc2hwNx+AEhNQM5YQMcKUMt8gACidhptBOIHtEgCAAFEVYcCQ/UDkEpEEkqAFvYUA4AAonquhyaBBWhlKz+l5gIEEK3qelDG+gBlg4qqBEoNBAggmjgUSxKgOFMBBBDNWk/QBsoGapkHEEC0buYlIiUBigBAANHUodAkUEgNswACiJJm3gEiHbsAWvBTlE4BAohxqAySAQTQkOmKAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKECAAQBtij5pF1H3lgAAAABJRU5ErkJggg==","w8/e-o.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRFDLDk5WQFIJQCxPhALQIUvAPHFuXPnLkBXT2obAyCAGMlplCA7FOhAkKP6oY7EBR4AcSHQwRvIdShAAFHkUKgj9wOxAZFaE2GhS6q9AAFEaRpdj+ZIcMgBsSMQBwLxBjT184GeMyDHIoAAYiHXhUALQVHtgCQESo+OwBD7gCS2AaiuAJo0YKAf6hGSAEAAURKi+Wj8QDRHggFQbAI0pGHAAZrxSAIAAUSJQ5Gj8ADQQQ/wqF2IRy9RACCAmMiMdgc0oYMEtByg1KEAATRkCnyAABoyDgUIIHIdegGNb09AvQOBpEAQAAQQWQ6F5m5ScrI/AY8SBAABREnUo+fk9dCaCj3jFaBlngXYijFCACCAWChwKKh8jAdiBaScfB7osEZoaAtA5QOQ9IAc2EiOZQABRGldbwCt6wWI0PYBWnNdIKeuBwgginI91FJDIjLHBWRHkgMAAojiZh5SWjSARrM9mgMPIjfvyG3mAQQQ41AZJAMIoCFT4AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAaB97DjfssUAAAAAASUVORK5CYII=","w8/e-p.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABhUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQakBKSooDkHLAo+TA3LlzDyALkNO+AAggRkobJUCHNgCpegLKPgBxIdDBC8h1KEAA0SvqBYB4fnJycgK5BgAEEC0c6gjFgaBoR5OrJ9dQgABiobYr0dLjBmAo7kdKwwpAvgGQvkCquQABRI+oP4glGZAMAAKIHg7lx5KxSAYAAURThwKjGRTlyBnoAzBpXCDHLIAAYqGB4/YjRbEBmnQhueYCBBALDQISV+HfCCtHyQEAAcRC4/R5AYpBjnxAiUEAAUSL4omRFj4GCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAokZmOkAPhwIEEONQGSQDCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAFp86yv0Qrk0AAAAASUVORK5CYII=","w8/e-s.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB80lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQagAjIyOcnZycHACk7IHYAEnJAyC+CMQb5s6d+4DctgVAALFQw7dAB4Icth6IFfAoEwDiBnLtAAggFio4EuSA/VCH0AwABBA10mg9miM3ALEiMJoZQRjIdgTiCUD8gRJLAAKIkdL2aEpKCig0HWB8qONwAnLtAwggqud6YFJIoEXUAwQQNRy6EY0/H+hYEFagpkMBAogaUQ9Kn/dxZKYFQDwRmBwuUBr1AAFEcYgCHfEBmmEuYJEGJYPzwNDtp9QegACiOETRCnyQw/LRCnwYaAR6qoFc+wACiKoORXIwqBTox+JgwTlz5pBVTAEEEE3qemDIHQBiQyDzAJqUAblmAgQQExWKI3yWH6SW5wECiBp1fT/QsSB6ISgEQQ0PtPSKDC6QawlAAFG9ZsIDJgA9UUiufQABRK/2KNiRlBgAEEDUiPpAIA6ANvHskcQ/QNPoBlhyoAQABBDjUBkkAwigIdMVAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwBCfHWu21mhXQAAAABJRU5ErkJggg==","w8/edit-icon-off_0044_vector-smart-object.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3QzY4NDk0NUNGMjI2ODExODcxRkZDMURBRjJFN0U0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NzZFMkFFMzZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NzZFMkFFMjZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgwNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdDNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VylN+QAAA7tJREFUeNq8WNFx2zAMlXz+rzpB1AmiTlB5AssTRLkMYHsCxxPYGSAXZYLEE1idIO4EVjbQCAV6jz4cS4mQrAh3PJ5lEnwEgQeQYTCQPDw8xNTF1uf6+fn5NIT+8ApgCXV31LhPPcNPaAcC/j4KUAKYU7dxWQ9gpMQN4wpqTwS6GhyoAyAvyNY5UCtp0bplLlt8Ti2z5j9R27fNVQOlRSLq3sTxshW2DFKzgEMfg11a+hY+Xw4VfnikFuHTlhQ+DhR8DPhF6L4n3UVnoBbIExSdggEFp/UCl2gFGypBzvoccwfADDZvAxs27PI8FsgGsLxmKf+fOOa8jQ2Shda5B239wwCDuYGCglJxBKOAFLKGgRjkznn02MEHeK5TdCN9ZuBKQ/IluPLQhcrAuUfbBaRFcyxQaUHy5uBb7NO3IPAFte/g2t9Is2cat5InR+2twQVK4QIb830qxiwNV3bI9UdY7ocjHZZoe1jphfpfAL8R/OmSLQyX8mmx7olYNBZpUQtyTUoWvpwNK/3EGgxy5hlfCRy5tOgdeq8vwR8NyMKRbRJZC5hNQO9PYyHqffY4CL9/ND6aij99skERUkgLUztbkXoL39w5rKURY1HWHRmLJsKvfNbMESy2GzBT7K3x7GtH6j/t/xS8WtO8E7AlEyxkqnEfhfBRFNa4HWpLF5AUQVP25FVTWyRTEX2agoPHxrQ5Q183rIRAzlqqIybxCJHfVT7NutOeOzTyB9zpkgSWnKMFDvpSy7Sj37xr6AtjB6lbewG10pszV7t8Fel5ZVvUrpC0QOMrN120RPZKpkPBsz6g3y7Vk9jVNUDfUaY1ZbFlTx+90OZEXLCCnpEZICdnLa4SOY5dwzKXC+BU7C5HdPbhvAjF7knMT4VFXEWH5vIXoJq7AD0AaAbe6ytJCzgje2UQzaWLTATt1CDzTBM4fAPoGXBrhTUjcTN9tQvnwqpL2xYzN8WF8W+P1LjaaDe3gjtVxvqhVXCc8XPR5TELd625yO0ysg+O+sBX+HxAz+XqHFqDHsF3Nar2sS93Aa4oGZhh1nRd3uMozQvG2CBXwjfXvgeIBKa/+ONIIHNhnP9ScaiY9OVgNeuF2snYZf1Fx73zGSXssNMKUVgOBDAGwExzcpqH3FS8Rxnrbrs8azeUfEuhc+27U4UdlO/Ea5vhyFftcw0ynnkej4SOtaZACTtaIwHPZo4rSoWriZQblI+pY/xT2wvzVUAdj2J3iiIkED7O2e61z8t1OFBgmJIuaiiQq74+beSvAAMAjAjeZOJgWvkAAAAASUVORK5CYII=","w8/either.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACQklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKqBkZGRIguTk5MdgJTq3LlzZ4P4xNaMAAHESEoVSgVHKgCp80AsAMSJQMcuINaxAAHERC9HQsF6qCMvAPEGUswGCCAmejkSGJr9QMoAiD8AcSAwND+Qoh8ggFjokRGAjkwAUgVQLijKH6ClWRA4gM8MgABioYMjQaHYD+VOADpyA5ID64EYRIMcrojPHIAAYqGxI0HpcT40XR4AOrIQzYEMxIQmCAAEEK3LUeR0ORHoyP1Aej+SI0G5XhHogURCBgEEEFHFEzmZCeioAqQo/wANVQYkBzYip1VC7gAIIJo4FJouz2ORwnAgsQ4FCCAWGqRLB2i6JMqBxAKAAGKhsgPRMwnFDoQBgABioZEDQWnSEejAC9QKCIAAYqHAgbDy0QGLdCE1HQkCAAHEQoYDFaAhmIBWDsKLHFhjg5oAIIBYKHQgOA1CGxsM0MZGIS0KZIAAYiLSkaBcfB/JkcgFdT4ljQ1iAUAAkRr1KLkYX2OD2gAggIh1aCN6MYOrsUErABBAZNVM0MbGfmiUgxobjpQ6hJA7AAKI3EYJSiOYHm1agABiItW30HQJy1SOtMo86AAggFhIiRpoElgNxPZAfJFahToxyQ8ggBiHykAuQAANmQEIgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAyCa3Fu172m4AAAAASUVORK5CYII=","w8/electrophoresis.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAB1UExURX9/f/7+/v////v7+35+fv39/ePj45OTk/z8/PT09I+Pj/X19fj4+Pb29unp6fn5+ff3946OjvLy8vPz8+vr642Njfr6+ufn5+Tk5O7u7oODg+3t7ZKSkujo6JSUlIWFhfDw8Obm5uzs7IaGhpCQkO/v7////21b5MsAAAAndFJOU///////////////////////////////////////////////////AINWl9kAAAHXSURBVHjaYlAjEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEEUcjAwMDCAGKiUTBhIAAIIKhCNhElERYIA5WCCAMBQABBFQozM/MzsAC1c/OgUCBhiEKAAIIqZGRkFBOWlBbiYUWhGBlZhaAmAgQQVCErExNQkIODEY1iYhSAKgQIIIhCFk6gGHbACLUaIICgJgogFEoJCoqKCrFCKbhCgACCuRGmn5mPnZ1dhosHTAlyMDJyQhUCBBBcIauQqKigoBQrLx8bG5uiMIiSEOcFuhGqECCAoAo5GRk5BGWApvDx8/Nyc3LziEEoVkaY1QABhHAjr7gEGxsfL7M8FxCoQigFDrhCgACChyMrD9AEXh5+WXY5dnYVATDFheRGgACCK+RQABmhzIziRm5GuBsBAgjJjVzsQFNk+Xl4OSFu5ERxI0AAwd3IyA11IwczEHCwgilWRng4AgQQihs5efmBRiADJrgbAQIIHo6MrGCTGNHiEu5GgACCJ1xgsmKBJFR0AFEIEEBEZwWAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIMAAGlSxagor51UAAAAASUVORK5CYII=","w8/ellipse.png":"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","w8/eraser.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIZSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFotcnJyQlA6sHcuXMPYJMnpVYECCAmGjpyPpDqB+L1UAdTBAACiImGjgwAYkco7qfUsQABRPU0iuxIYJRfAGFqOBYggJho6UiYODUcCxBATLR2JLUcCxBATPRwJDUcCxBATPRyJJpjC6ElAtEAIICYKHRkAymOhOoxgDpyASl2AQQQEwWOBFlWDyrQoZhYR+4H4g1AjxWSYh9AADFREN0O0CgEWw4UEyDBkYmk2gkQQExkOtIAGt0TgHQiIcdS6kgQAAggJgoc+QGaORbgcyw1HAkCAAHESGzDICUlBWTheSBWBFr4AEcDBOSRCzCPEHIkKY0SgAAi2qGguh5o8XkoFx6ieBw7EZq7cYYkKQ4FCCBS06gjlMaaHtGSwXyYI6EhSxEACCCSQhQaagLQ6MQaskjRnQiU24AUyqCMdxCqDJR0HObMmTOBWIcCBBDJDWdo2nOEOuY8kI2eXg2gIbkByVEXoI4EyclD2f5QxxMFAAKI5BBFCz0HLEo/EFtLkZJGAQKIcagMkgEE0JDp3AEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA1r7eGSjo9EUAAAAASUVORK5CYII=","w8/find.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==","w8/fliph.png":"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","w8/flipv.png":"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","w8/fullscreen.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABEklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQACxEKuwvr4ea5XT2NjISAt9MAAQQIM+BAECiIVUDcT6HJd6XCGKCwAE0KAPQYAAGvQOBAigQe9AgABiHOztQYAAGvQhCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABRLQDQVUUqdUUNcwBCKBBH4IAATToHQgQQIPegQABxEJOGqJGg5VYABBAgz4EAQJo0DcWAAJo0IcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIEGAAqSSc7Nye91AAAAABJRU5ErkJggg==","w8/fullscreen2.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABHklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBDZDmxoaPgPwpSqIQQAAmjQhyBAAA16BwIE0KB3IEAAsZCQ5v6S6ymkdPgPymcmVi9AALHQObRJNgMggBgHe4MVIIAGfRoECKBB70CAABr0DgQIoEHvQIAAYiGjqEAXZ6SmHnQAEECkFDP/qBDq/0jVABBApIQgMzGhQ2mIoQOAABr0aRAggAa9AwECaNA7ECCABn1VBxBAgz4EAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECaNA7ECCABr0DAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECDADj+SpPAnbKXAAAAABJRU5ErkJggg==","w8/gene.png":"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","w8/h.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABRUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJUUBSCUgCS2YO3fuA2xqk5OTG5C4B+bMmXOAVPsAAoiFAk+CHFqP7AAgfoBDbT0an2SHAgTQkIl6gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAYqGiWfuBxRDNHAoQQEMmRAECaMg4FCCAqBn1jsCa6QCOmoniri5AAA2ZEAUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCCBKcj2oSdeIxscFGilp4oEAQAAxDpVBMoAAGjJRDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDQYx4/2Il6LAAAAABJRU5ErkJggg==","w8/handle.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAmElEQVR42mL8//8/w1AAAAHEQq7GvXv3Zn7//p1BUlKSQVxcnEFGRmY6NnVPnjzJfPnyJcPz588ZODk5GZydnaeTYx9AADFSEqJnz57NBDkABNAdjOxAmLyxsfF0cu0CCCBGSqMe3UESEhJg+sWLF1g9QC4ACCBGaqVRbCFIDQfCAEAAMVI7M505cyYTRJuYmEynprkAAQYAWQ5L+xSV5joAAAAASUVORK5CYII=","w8/handle2.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC/SURBVHjaYvz//z8DqYCRkZEVSPECMStU6DcQf4bSyACrOqCdv0m1EyCAWBjIAxxArATEUlAzQI68D8TvoGwGqAOFgFgRyv4DxM+A+CYWDxEEAAFErkN/APFrIBaDYiEofgd1MAPUgUJQRzJAHfkaqpdkABBA5Dr0N9RiGBvmIFgoMiA58DPUA7egen6TYyFAADGSmUbR06AQlhD8jBTC75DTMDl2AgQQpQ5Fd7A4EOtBxS4B8UtsmYwcOwECDAAGeTjR5bLpHwAAAABJRU5ErkJggg==","w8/helix.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQADR3KEfPnz4//btW4oLa4AAoqlDf/z48f/q1asMz549o9gsgABioYUD//79+x8Ykgw3b95k+PjxIwMPDw/FZgIEEAu1Hfj582eGp0+fMrx+/RoUogwsLCwM8vLyFJsNEEBUcSiwvQB24MOHDxnevHnD8Pv3bwZGRkYGTk5OBiUlJQZ+fn6K7QAIIBZqOPLu3bsMjx8/Zvj58yfYgWxsbODQFBERYZCWlgaJMVJqD0AAUezQO3fuMNy/f5/h379/DBwcHAzMzMwMDx48AEf/lStXQMmBwcTEhOIQBQggih366NEjBiYmJgY+Pj4GFRUVsGNBIQvK6cBiiWHPnj0Mampq/4HyFIUqQABRI+oZeHl5GXR0dBi4ubnBjnF2dv5vbGzMsGXLFnAIgxwN8gglACCAKHYoKNRAxRAo4ygrK/+HORYUshoaGmB5UHqlFAAEEMUOBTkClNtfvHjBICMjw2Bvb/8f5GhQkvj27Rs4c4HEKQUAAcRIaVfk06dP/48fP85w7do1BjExMQZJSUmGP3/+gB0ISrugdCsrKwtiU5RGAQKI4hAFpU8tLS0GVlZWcHoF5XIQG1SWghwuJSVFsSNBACCAqJLrb9++DS6eQCEIcuTLly/BxdP169cZ2NnZQbme4qgHCCCKHQoq7EEhCcxEDAoKCuBM9P79e3D6BNVW27ZtA4Xqf2B9T1GoAgQQVYonUKgZGhqCcz6oFvLz8/tvY2PDsGnTJnBdDwphShsmAAFEcTMP1EoCNeVevXoFTpcgACo7BQUFGQwMDMDpFBSylAKAAKJKOQpKp4sWLQLncEtLS3DxBEoSX79+Bed+cXFxih0KEEAUF0/ATAMunu7du8cgLCzMoKioCM5YsCIKlOs1NTVBSYCiNAoQQIzUGNIBOfbWrVtgB4KKJxANSregzAUqQyl1JAgABBDFUQ+skcCOBIUgyNOgaAeFLKg2ApWx1GjigQBAAFHsUFA9D2otgRwICj1QegSxqVHIIwOAAKLYoSBHCggIgNMhqIVErRBEBwABRJUqVE9Pj4GLi4smDoQBgACiODMBa6H/wDKTpo4EAYAAYhwqA7kAATRkhnQAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwABdj0ooKrhSoQAAAABJRU5ErkJggg==","w8/helm_aa.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADWklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xeBaVBKZkST+8+QyNDFiEsnQAAx4kr8l//bM8xgEGaAyTOiWPCOIZ3hIIMuDmMBAginoUH/pRmigAb8BxuCTEKMXsbwjGEtDkMBAghHmK7/fxNoJMKzyEaC3MrIEM1wE6gKu26AAMLhUqP/oQyOGKL/4QEBYu1nWMtwFqtbAQIIq0v7/guDjfwP1vwfSsPcCHEzI4MTgwBDL1Y3AQQQFkPfHO4Aeg5myH+4UQxI3oeAWIYuhtfnMU0ACCAs3s/5/54hF8mrqF5HjbipDHwM0zCCACCAMFx64v9ahgSUJATBVlDXM8INBxmcwLCB4SSGuwACCMPQZoYYBh64dkaoAXsYrBnuA8n/KOn2PwM3MI00YvgVIIDQDF32/zlDEEbYMTDsYDBgCAaSsIhCGB3M8ByoC9UUgABCM7QV6E5GeAjC1F5kOAb0vCuQfIoUcTAylqEFzaUAAYRiaAtQhxVKrENctQfoHgYGfQZFYNpEDmeIiy0ZtNAMBQggFEODGR4xvELKQ7CUuZbBBcz3YtiGFNYwt75i2MnwECUAAAIIpZTSZMz+v4ChDO55iHv3AHEmXM0eYDCghvgChmwGeZRkBRBAaOn0l5D621IGI6Sig5GhBBhJMVAvlwD53fCAAZHngRngpjDbO2RTAAIILaLY3lUzLIGHKYi+wHCUwQHuWQ8g7xlK/lrMUMmAaiQDA0AAYaTTFEZWhi1IiX8PMOqk4ekA5PXlSCljCwMrQxpGjgIIICzZdO//VKD9TChZFLPkB4n8BQbLHAZnDEMBAghr0Zfwn4khFZ7TEUYi8j0kwc1h+MWwCEvhBxBAWA198F+DYSGDPIbLYNUJhPeQIZ7hBoMCFkMBAghrearAWA0MABS7kVItzKWgKFLAWkgDBBDOOkrzfzqDOYqBqMFwAlgt3sBRRwEEEM56H+RW9NIUkUUZgAmvBmflDhBAjLjbp57/HzFIoAUCLExfAJPZLpz1PkAA4TH0yP+3SLGPXvJLMpjjNBQggBhp0ZIGCCCatKUAAogmhgIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgAADAPe43aRzzdddAAAAAElFTkSuQmCC","w8/helm_base.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiGhDd/8/QHRCAQgghv9EwfL/Bv/1/lf+J041QACxEGNxxf+dDFkMjAyTGBj+tzESVg8QQER4vxxoZDYDDxDmMmxhqCIiEAACiPE/EUbmMHBDeV8ZJjN4MxByLUAAMRHy+C6gK0FGMoIhN9C1Wwm6FiCAmAiFJcjjIIdBooARyMshGAgAAcSEz+M7oK6EhhQQggzmYcgjYCxAADHhNnIX0E0QVyKSH4THTcBYgABiwheWPFAXMsCN/g/lgYzFHbYAAcSELywZkBJ0FEM5NGwhRnPjSWAAAYTF0EqwkdzQiIG47ASDEcMjhuPwVABzLXZjAQKICdOVO+CJCOIuEHmUQZPBHUgisjbC2GoMYwECiAmXkciRc5PhLDDJWwDJ11ADYQaDjN2MYSxAAKEYWv1/KTj3QLyHUHkc6EoGBg0GWYaTKAkMBEAJbCGasQABhGJoyTJZhu1oMQ4yfBfQlSDajuEw3Mj/0JTwn2EngzRQJ7I5AAGElvffL/WOkmQIhXobIncCVDrBQS6DFVQOIr+O4THDtmVC0cimAAQQRoHybqkP0NgQqBaQW7qBHveBuq8biIuRgmAdw0OGHcsEo1HNAAggjNgXit6y7AXDGngg3GA4x2AGjzRrcGTBjFwLTGbbMYxkYAAIICzpFGTsc4ZV0BgGpVBxePhaAcltUHUQI4WiMU0ACCAc5SkoECTAYcsIz/EM8HQLcSVmWMIAQADhyPuwQEAkrP/wFMqAI3oQACCA8JT8CNcywPMXLMZxeRwCAAIIT3mKiDJYIU2ckQwMAAGEt+QXit4KjLI1UG9DQhfkcfxGMjAABBCBOkoQnBLWwCMJ5MptBIxkYAAIICKaBm+XWv4P+r8cCEP/m/1/u5SwDoAAIqrF8Q5sbAjQyHdLiVEPEEBENntAriXOlSAIEECMxLa63m5hYBD2IU4tQAAx0qLNDxBANGmfAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAIDTkuSH1ZORAAAAAElFTkSuQmCC","w8/helm_blob.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGAUExURai8w+zv8dPJxpegqd3e3iYmJri4uPXy78+2mO7w8ZqZmfrVqu/v75admvPFq/j28aKlq+7y9U5OThoaGvzZsTY2Nvb08b/N1e7z+O7u7RUVFfb29vr6+pCQkP///+3t7fLy8vX19YCAgPf398nJyaurq/n5+erq6kVFRVVVVT8/P9DQ0KioqAwMDOjo6FBQUPv7+/j4+Nvb28bGxiMjI/Pv7vHIrvDx9KGpsJyOnKvM2eCxm+re1+7t7fH29XaGkuvw97rI2vLx8Nzk6M/y+4eVlqClmJ+VgqKjpImOlaKpp6XM6vj3+ae4vrfU8J26yvn6+Pr5+Pv6+ZDD74yNjuLdyLDS2omx4fTz8u3t7n+Ce6Kv06CMjaOSlbOQi5ycxNjSuMS6sPP38ta5q4+krfPSwezh2/jix7mmh/X2+Pn9++y/jPTr4riWkfLSsbPd4dP1+d/x/frx7qXA38S7q86xppKVnJOyw/Dx8+fIrbPF6MvLywgICO7u7gAAAP///1hZnnoAAACAdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AOAVLZwAAAidJREFUeNpiqCcaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggJCVKhrrCAnXwIGwkI6xIpI0QAAhKTVSEq6rkzJhhQITqbo6YSUjhDxAACGUVmvV1WnKsqlUQ4EKm6xmXZ1WNVwBQADBlWqL1omqysvJKEtDgbKMnLwqUFAbpgIggGBK1TXqhFgMFWpRgIIhi1CdhjpUCUAAQZUaKNWJsijWYgBFFtE6JQOIGoAAgirVE9ZVVePBVMqjpqorrAdRAxBAUKVcdfryCrVYgIK8fh0XRA1AAEGVCtXJytViBXKydUIQNQABBFUqLMUmg12pDJuUMEQNQABBldaYqCjX1koyZqqJSXI6AVVIVjhBlCqrmNRA1AAEEEwpa7V0bS1nTqKHo10aCyMPD6eNM8SX0tWsUKUAAYSiVEIkyp7Xm8+3sMg8y9rKgd8WRSlAAKEq5U4RzwjmY0hgFqjKtveKTkJRChBAaKa6WriHmzHE5ScLcPgzxbiYIisFCCAMU0viKxlyw0otOMqZYgtQlAIEEIpSwXSushC/VPFQS16/PE+3YjEUBwAEEIpSSU61QBl2wYiKAEN2wSAfsUgUpQABhKIUG0AoBQgglCjABhBRABBAJEQsQACRkFwAAoiERAgQQCQkbYAAIiHDAAQQCdkQIIBIyNwAAURCkQEQQCQURAABRELxBhBAJBSaAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQgwAKs512mdfKXeAAAAAElFTkSuQmCC","w8/helm_chem.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC8klEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCyYQo3fd7AJMP2D8/8zMIIxKgCJMDF8+Ofxq54T3QSAAMJi6Be22K9BL74xI4uBjEWmIYDr73qJe9yYJgAEEBZDmZkEX4jt+soJcw+EhhnICHU5iMX9nd+NSRXTBIAAwmLof4Y/zH84/3AgG8UAD4L/cLczMPxh+MuMLUwBAghrREE0w1zJiGQYspG4AUAAMWE3EmYwzHiI0f/hVjDA3Y/NeIAAwur9/3B3ooYiA4qL/yO5HBUABBALdg8wosT6b8a/TP/B3uL684/hPyNyEsNmLEAAseAyEuY+tn83BP28hL+x/mRieMNecCfj8jdGQokfIIBY8EuDjP3KoM644rz4VQaGo9rpNtZPNd79ZsKWHRAAIIBwZlNEPDMBk85Hli/sn9i1gE549Z8R7hNcACCAmLC7Djk6/jP8Y/jB9J2FmXETI8t/RYa/8PSAK2kBBBALLjciEg4nw12GaB1W1ceCwv9XnFJ4/ZONESmVYAMAAcSEO/ZhrvnOoMmw99y51XVPORi5fzH/+49iMTa3AgQQzsT/Hx4MjMAw/cDylTVrj8ndeI3vXMz//2MkPVQAEEBMuKPoPwMsSpiBpv9n/Pmv8fkv0Rjvf4yIaMIeAAABxII77iGu+MOk9XHNCmaGX2wMDDyPdy7/xfQfKSNjz6YAAYQzTBmRUgDTf5CPGRn+/Wf6z/EXPUtjAoAAYsKdSRlRCg1GDANwp1OAAGLCne//YwQFrED8j2QVNgAQQCy4I4oBw4WIdMGAt5QCCCAWbI7n+cv2nY2YavM7319s4QcQQFgM/fB/ksR+t9/M2NMDcuXC+veyhDoWxwIEECOm2PmnNyQYmDArPOTKGW7RP40XhtLoJgAEECMtGr0AAUSTFgpAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQggmhgKEEA0MRQgwAB9HtzkRRnoOAAAAABJRU5ErkJggg==","w8/helm_cterm.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADV0lEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcx/GdghPNBKRrBi2foZsSlEyCAGHEl/sv/7RlmMAgBjYEY/B/Kghj9jiGd4SCDLg5jAQIIp6HB/6UYouEuZIAbBwNLGJ4zrMVhKEAA4QjTDf9vgo2EGcQINRgBohluAlVh1w0QQDhcavQ/lMERRQQRCDCwn2ENw1msbgUIIKwu7fsvDDbyP0okwVj/oTwHBgGgSmz6AQIIi6FvDncwxCCF43+k0GSEQoibYxk6GF6fxzQBIICweD/n/weGHLhH/8PjnwEjDfxnmMrAxzANIwgAAgjDpSf+rwWmQVgIMsAj6D+K2xmh0ZfAsJ7hJIa7AAIIw6Ve/7UZgtDcAzH0K8NihnsMPAwuDNZIUbea4RrDdjS3AgQQmkuX/X/OEAx3HSOK1ysYXgETki4wHO/CQ/k/QwjDS4blaC4DCCA0l2r/T2awRDIKofkuQyHDMqA7GRl2MegxSCAlr2MMcxmuorgVIIBQ8n7Lf0YGK6hBvii5fjPDFwZNBl6wnBtK6mUA6jiOFoQAAYRiaDDQay8ZxMHszRhxfQPK3gV0pz5SaL9k2M7w8L88klsBAgglTDUZcxgWouUhRqh2fQZhhl6gey8xTEFJXv8ZFgAToDyK9wECCC1Mfwmpvy1jMEQp6GBhd5dhJsN1BhEGH3DqgKk4z9DFcEOY/R2yKQABhJGkZv+fz9CHtQT9j8EGkUXAtJqGlqQAAggj8acysjJsgeZwRqQ0gMgOyJl2CwMLhpEMDAABhCXv1wGTzj94UkIt/BiQAoWB4Q/DUoYGLAUKQABhLfoSgUkrDWtxh+r1OQy/GBZhKfwAAgiroQ/+awLjVB5nSQrR8wgYmtcZFLAYChBAWMtTBcYqYD7/j5bI/yMVMCC4CJhxFbAW0gABhLOO0vifDsyw2NwKoY8DE9gNHHUUQADhrPdrgVUbA9x9/9GMBFV8NTgrd4AAYsTdPvX8/5BBEofcCwZphl04632AAMJj6NH/b1AyAawUgISqBIM5TkMBAoiRFi1pgACiSVsKIIBoYihAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQgwAIU/76aa/+1IAAAAAElFTkSuQmCC","w8/helm_find.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==","w8/helm_import.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQADRxFCAAKKJoQABRBNDAQKIBZkz/f8MAsr/MzBiFclgyESSAAggFENfMXgylIEVgQpEiCpGqLb/QMjE8A/Mh3jxP1yuA6gTGQAEEAt2FzGC8T+ooTD+f6hREDGIgf/g1iMAQAAxYTPuP9xjyO5kgNP/4BhhOTIACCAWTENB7pnBEMHAz/CBYTvDYyDrGJAEGVjKsA3I8mKQQ3IPIxaXAgQQE6aRDAyXGSYDtTMwhDJ8YtBlCGPQYuADGmbN0M2wmkEWyP8IDc//QDdiq44AAogJPS5BYAVDPMNEoIF8DGkMvAz5DHoMOkDDbBhOMkxg8AEazA8OGEYkZ6ACgABiwkw0/xn2ALWD3PsUqOU40HgGaMQwMDwCkssZHsIdAAksdAAQQFhifweDGcMkhmUMq4C0K4M0UuosBLrcDGhVGThyYAZiuhQggBiRhRr/f2eogLsL5MEPQFfpw1MkJLz1wAYyQuMeBLoYOBjqkWILIIBYMCOKESld8gMjCpGLQIbqQt34Hyk/obsVIICwRNR/aMr7D7fmH1JiZwR7GYIZkYxHBgABhObSeQybkbyGyIgQC5ng7oO4B5abXjNkoZgCEEAoYfry/0uUnIWaBf/DMyoDWmJiZBBjEEcKU4AAYqRFWwoggGhSngIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAEM8kax0vpcsAAAAAElFTkSuQmCC","w8/helm_layout.png":"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","w8/helm_linker.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADzElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiIWQgk+56yfdZ7jHcJ/hP4MCgwqDIkNgHt9k/HoAAogRX5I68X8uw1IGUQYLBkEgycDwmuENw2kgjmZIZLBkxK0PIIBwGvrFO3XLKaBx1gwCDIxAV0IwCLxnOMRwhsGYYa4Pz1bsegECCIehR/+nM6gyhDGAZBkZIGpgToOIrWC4wzCLwRqrewECCGtELfnvyuDIEArWDHMhxOj/YB6IHc5gz+AKVIlNP0AAYXHp5f92DHkM6khuQ7gPwQOxbzBMBAaFHoZrAQIIi6EW/3UYnKHakElk42DW7GK4yXAcw1CAAMLwfuZ/IaCRDHDD/kO9DXcF1EBIMLgx8AJ1oJsBEEBohn71XsHgBTUCFpYQiGwwwmhGBj+G5cCUgmoKQAChGTp7izGDMNQlDPCoQTbwP1L4gvwhzGDAMHcLqikAAYQWpgb/vRl04B6HaNvKsAwuL8fQgRJ5IKOvMGxhuIgSrgABhOLSl09eMGhDvfcf6mkQNgIaC4EaDD3wwIGFuw7DS6BOZHMAAgjF0HvSokhJHd3jIODJcI7hFdydMIPFGe5LI6sCCCAUQ+8DQ+g/PFIYMfIRas5CpANBhgcoVgMEEEopdY9BFCksUY2FBMViYFCIwXMVTFwEzVCAAEIxVIzhE1LaRCT0cwxRUBVGDMXwsES49TPQrcgAIIBQDFVgeIdWIiGMQs5fDNBIhAXDWwYlFEMBAgglTJWBJSbCSMwMDAsIRqQUAAJv0AwFCCBUQxm/AI1FaP6PktT/o2VWWFp+BfS+Mko6BQggtBwVCSx1GJDimRGHl5ET/1FgMYgKAAIILUdd+O/L0Im1TMIsBGFypcAcZYCiDCCA0FxqwKjFcADsUUQWYIDykVMqItntB5a8Bmg2AwQQRm3awmAGzOHK8DBjhGdaZEtgIXuXYTbDKQy/AAQQRnlqyjgLWIP+gRvzHy33MMCLQgagqiUM04A60M0ACCCsFV/m/8sMsQx8GBkTOaT/AzPKYgY9hulYqj6AAMJa8U1ndGRoY7gML6kQLkZYcgWowh6rkQwMAAGEs95f/T8bWOfbMkiiVXsg1gtgMjrCMJUhBEeDAiCA8LRQbv+fCQwzZaCxlsBSgRlo6G9g1jjB8AwYPREM2QyqONsoAAEETy7Y4V/mWf8d/qv+5/gvC4QcQJbL/2n//zLj1wUQQIzENs8fABUqMBKnFiCAGGnR5gcIIJq0TwECiCaGAgQQTQwFCCCaGAoQQDQxFCDAACflNCUJWTDfAAAAAElFTkSuQmCC","w8/helm_mex.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==","w8/helm_nterm.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADNElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcyMCLx/0N5EDqBoYsRl06AAGLElfgv/3dgmMEgCFMGNgqB3zFkMBxk0MVhLEAA4TQ0+L8UQzTUVf/hLkawljI8Y1iLw1CAAMIRphv+3wQaCTEG4jYGhv9wg0EgmuEmUBV23QABhMOlRv9DGJyg2hFuhZEQsf0MaxjOYnUrQABhdWnffyGgkQwYnoaREKMdGQSAKrHpBwggLIa+PdzJEAv3JiOK4UheBPJiGToZ3pzHNAEggLB4P+f/e4YclFiHufY/kpEQsSkM/AzTMIIAIIAwXHry/1qGRLAXGeER9B+emBDikJBNYFgP1IFuBkAAYRjaCPQUN9SrZQz3wEbMZLgLj7D/SG79z8DLEMXQgOFXgABCM3T5/xcMQXCPX2foAxtyj+ErPEwZUXLYf4ZQhpcMy9DcChBAaIa2MMRADYRo/8awBB4EKFGBZHwMUBcqAAgglLzf8p+RwQolggoYahksoQb4Qa2CyGyEGvwfqOMYmqEAAYRiaDBDB9AzYkjxrMfgxTCBgQvM3oTkcUSWYATq2Mnw8L88UhoACCAU72sy5jAsRErgIDoGGJ7XkRIRA5LHIfQChmwGeZRkBRBAaGHaJHye4QJKyHEDgwA3+M8AUt8kjCoKEEAYiX/O/3nAOEctkZDzPmq59Z+hmCGeIR0t+QMEEEY6TWFkZdgCjyzU0glWmiJEtjKwYBjJwAAQQFjyfj2wrPyDFB2MSHEOS2wQ+h9QZT2WQAEIIKxFXyIwaaUi5RvkAhA5UOYw/GJYhKXwAwggrIY++K/BsIhBDsMQ1ILwITA0bzAoYDEUIICwlqcKjNVAQxlQjETP9QxAFZVYjWRgAAggnHWU5v90BguUPMSAwjsOLGZu4KijAAIIZ71fA8z1yLn8P1LJD+ItBarABQACiBF3+9Tz/yMGCRxyzxlkGXbirPcBAgiPoUf+v8HibVgNIMlgjtNQgABipEVLGiCAaNKWAgggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECDAB+RNxwBMcJHQAAAABJRU5ErkJggg==","w8/helm_nucleotide.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAa2SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALIQW7d+9mu379esKlS5cSODg4lP/8+fMbJsfIyAjxLRMT869fvz5LSkpu0NfX7wsODn6Bbk53dzf/8ePHRXx9fa2BZii9f//+4LFjx+74+Pi8SElJ+U3IHQABxEioZlq8eHHq2bNnZ/Hx8TEwMzODHQfSA6Nh4N+/fwwfPnxgUFRUXO7g4JBmYGDwBSZXVFSkLigo2P7q1SsvoDnsnJycYLV///59LSMjM/HBgwf9kydP/obPHQABRDBEL168mM3Nzc3Az8/PAAwJeEjCHApzLIgPDHGGmzdvhgEtnwF06CGQeH19vcfHjx9nq6ury2hra4PVgTwF8jQwFkTv37/f8vbtW4sNGzZkBgQEPMHlDoAAIphGv3z5IsvOzs7w+/dvsAUwx4H4MEeCxIGhA0oCIIcwnzlzRgIkfuTIEVWgXK+VlZWMmJgYyGFg9aysrGA9IAD0AIOenp7P48ePa+7cucOOyx0AAURMZvoFD34WFpDDGYAOYQAmB1BoM3z79g3sQBCAJQkg/9uuXbtYDx06VAWMci0hISGGHz9+gD1z69YthlOnTjHcvXsXzP/58yeDiooKAzBUE7Zu3RqMyxEAAUTQocjRC4quz58/M7CxsTEAMw0DFxcX2GKQB6AOBKvl4eH59/LlS14gthQVFQU7BubJa9eugdUAQ5ABGIKwWGDg5eVlf/HihSEudwAEEAupxQTIsZ8+fQI7EBRKUlJSYItBUQmKUpDcvXv3pgMd9w0oLg/yDMyhoDQO4svLyzMAMxDY4SCHgkIW6FBQILjgshcggAiGKCzjwIoikINAaRYUqiBHgSwAiYEsBNEgBwFD9DxQ/jIQs8BiA0SD5IChDI56UBrX0NAAOx4prXPicgdAALEQG/WwUAOFqLi4ODhdgYqZhw8fgpMBzBMghwOLoF5g6FwFOt4EGJqKID2wDAgsvhgsLS3B6kEhCXIoyOOg2AF6ZDcudwAEEDEOZYWxQRYJCwuD2SCDQVEIilbkYgvkIGAGEwGG6ndQ6QbMJIrA4gqsDuQJkENhuR9aWYDx69evQfRlXO4ACCCCUQ/07VdY0QMzGFbww5IBchIBOVpLS+tHQ0PDdzU1tc537949/fr1Kzj9gtSCYgPZkaBYAVYEoApgDTC9r8TlDoAAIuhQoKVLQbUIyFGwdApLbyA+yBMgGuR4UKhISEgcV1VVPQ9SFxUVdQJYCZQDy9OPoIwDcijIcSBHgxwISudPnjxhuHz58ilgaNelp6d/xOUOgAAiGPVAX/YBM43MjRs3/IE1FB8snX7//h1sESwkgfz/wPLyJLBwL7C1tYXX9UA1y4DJ4CkwLfcDk44BqJYDORikH5iO/96+fXsx0DP1U6dOfYTPHQABxEhML3TOnDnswNDSAoaGHDCt/QFG5d9nz561AMvIBUDH3QWGKiswhD4BPXCpuLj4HTYzWltbFS5cuKBhbm5uB7RTHejI3cAy9SrQ4+fXrVv3hZAbAAIIJVeTgo2NjXfb2dkZkaufVAwQQCS3R4HRzKSsrFzm5eVlDUyntcBSQJQe7VGAACLJV6DMB8zJ1X19fT927tz5f9myZf9dXV3XAtuhkrQOUYAAYiR2pAQUksBCvjI3N7deSUmJFVQugpp1oBIB2GbdAsy56U+fPn1GqwAFCCCiHArMpSzAwr08Ozu7ERjtzKAcC2z1gx0KLL7ADZWFCxduuXLlSiqwuHlBC4cCBBDBNArMzSwKCgoVmZmZjcCQZAYV3qBaCeRQYJEFbliAGhpxcXE+mpqa06SlpcVp4VCAACLoUGDxk5qTk9MMTJvMoJADFfSg+h2YLMHlKbCYAtdGoAI8IyMjEBjyk4Fy3NR2KEAAEXQoMPSAAXfjHqgGAhXwoPoeFJKgVhCwegSHLKjAB9U2wG7FT6DYOaCaH9R2KEAAEayZgI2K/QICAtFAB88LDQ3VBDqGAdhqZzAzMwM3NE6fPg2uRoGO/w7soJUBa7GpwB4m1ccyAQKI6FwPdKxFRETEIjc3N1VQGoW1ekAYWA1+B9Ze1cDuRT+tcj1AABHdwgcWQyeA7cwYYDQvB/bFlUCZCpQugS39r0BH1gAdOYGW5T1AAJFc8AJbORZJSUm3tm3b9r+zs/MHMPNk0aMKBQggsjQBHWvm5+d3EtgILqBXXQ8QQIxDZQwfIICGzCAZQAANGYcCBNCQcShAAA0ZhwIE0JBxKECAAQAiXuaqHOHsaAAAAABJRU5ErkJggg==","w8/helm_sugar.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAE4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yT179jCAiq8/f/4wPn78mHX37t3eubm5644cOcLw/ft3BiYm0vz5798/Bg4ODgZbW1uGyZMnB7m7u2+Vk5P7zcrK+p+RkZHBwcEBp16AAGIhxgKgY22Ajj105coVhqysLAYJCQkGoOEMxJbBIEeA1ILo379/M6xYsQLk+XUuLi4gx9sBlRwmZAZAABFyKCMw1KzPnTt3aPPmzQw5OTlgi0AhA/UA3BHYHAZjI6sFpzdgTIA8OmvWLIbg4OBD1tbWtkD5oyBluBwCEEB4HQo08P/Vq1cPb9q0iSE5OZnh7du3cMuwhRa+EEZX9+3bN4b09HSwYwUFBQ9ra2sz4nMLQADhTWScnJz+/f39DPHx8Qzv3r3D6UhsjsKSfDDUgDyemJjI0N3dDUq7/vjcAhBAeB365s2bDTw8PKD0hCvtkiSOzUOgpMTNzQ22C59agADC69DLly8ziIuLM/z9+5fkEMOmFjn6YXpAZoPsuHDhAl5PAQQQ3jQKSkfMzMwYhuOyFJcHCGU4UMb6+vUrXocCBBChzIRhITY2Ozs7GCM7FBRSv379AmOYg9BpZDMIlckAAcRCRBmKl83GxgZOIocPHwbHAExcTEyMwdjYmEFHR4fh58+feEsBYgBAALEwUAhAFgFrLQZFRUUGWVlZcMiAxH78+MFw6dIlsEdUVFTAGRKbR4nNeAABxEKsY3BFO4wtJSXFoK6uDueDcjOomgVWFmBxEJ+YYgwXAAggYqtQgskBlCZBGLn2AdXroOSAq2IgpRsEEEAkRT2yweihASodQI4D0SAAqiBu3rzJoK+vD65ykR2HXoIQE7oAAcRCqiNhIYJsIajAXrlyJUqmASUFUKNDT08PI9qxZSJCoQsQQCRnJuTog7G/fPnCEBkZCc7hoFAFFd4gDMpcpNZquABAADERm5kI1dugUAPldBAGOVhZWZlhzZo1YD6sJKAEAAQQEzmZCR2gV7GgUASVocBGDcPWrVvBfOSSg5jAQAcAAcRESfkJwqCMAirceXl54WIgDApFV1dXcOZ6/fo1mI/Pw4QCAyCAyC7wYQaDMpC5uTnYwbBMA5MTFRVliIqKApenIDlszURikwRAALEQ6uMgG4arIQJyLLYiBxTloMYGtlyOniFhvQZcACCA8EY9FxcXStWHraDGVSZia23hanDD2qT4AEAA4XUoqAx8+fIlvBBHtoxQesPWQsIWKywsLAzPnz8HVwz4AEAA4XWoiIhIACjqQO1FStMyrpwNCgRQNQuyC585AAGE16HAMnBjSUkJw4IFCxiEhYVx1ijEZgjkkAbRIDPnzp3LUFlZCYr+jfj0AgQQCwGDGbW0tGyDgoIOz5w5kyEpKQmcnmCND1wdO0JFDSgUQVE+ffp0hvDwcAZgDxTUXWbE110GCCBCxdN/YG48Aiy87YBRc6ivrw9cHkpKSuJNDrhCGSQGavGD0iQolxcVFYHasXYgOwjFCkAAEVWOAh13BBgK7Lq6ut75+fnrDh48CE5X5AzpgEoSOzs7hkmTJgUBQ3Ur0IzfxOgFCCDGoTI0DhBAQ2Y0DyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAB65lTZlf25QAAAABJRU5ErkJggg==","w8/heptane.png":"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","w8/hexane.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==","w8/inkblue.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyMi1kxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvb/X/wfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYALrNohf1uT4fAAAAAElFTkSuQmCC","w8/inkclear.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcqqmnbQDEB0A0rRwKEEAseCwnxRwHILYHYgES9XECcSUQx0PZE69futqKTSFAAFEr6gPI0CMDxPuA2A+Ii4F4DhBX4FIMEEDUcugCEtVLA/FeIP4GjYk1UEd/waUBIIBYqOTQBySo5QDi9UD8EYj9oY5jBuJ6ID6MSxNAALEMQAbuAWIFIDZACsHpQGwExMa4NAEEEL0dGgbE2dDM9wyI2aGOjIWG7g1cGgECiJ4OtQLixdAMcxBUsADxbCBWA2IvIN6NTzNAANGrwHcB4u1AvByIO4E4A4iPA/FvqAd2EzIAIICo4VBQ+fcGiBtxZKoCIN4CLX5ADlwGxJOBuAvqgTvEWAIQQJREvRwQl0PLUD4g3gnEP5HkQRmjA4jNgDgTiOdDQ9QdiN2AeD8plgEEELkOBWWGpUD8FYinQB0ISns7QLUL1CGhQHwSiO2A+CIQ1wKxD7TcPEeqhQABRI5DQRZvAuJdQJwMLQ8ZoGlwKxDPheboLCCeB02HrtCk4UuOI0EAIIBITaPMUIc8AuIQJEeCwHVoSN6A1jjroY4UBuKF0JDeSm46AwggUh0qCcSCQCwGTXvo4A40ekHgKLQ+L4KWlw2U5FiAACLFobJAvBYaQqLQEMPWrLsLxJ7Q0N8LzUiT0EKfZAAQQMQ6VBrqMFgoToBmpA1ArI0jZEGO5YLGwAFKy0CAACLGoeJAvA6pHgbl8rdALAXE8tB0p4FF300g9gDiJ0BcA8TclDgUIIAIORQUGquQQhJU5X0A4iaoxaDa5R20FMDm2KtAHATEFtDGCCO5DgUIIHwO5YLWzXZQ/lRosVMFtfACtIYBNdtUocWTJhZzTgNxG7QVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKrTK/kOtQgADCVzOBQvM/tCjaBFV7AprWWqDR/QvauHCA9n1gZm6CVqEXoSGvC8QpUPPIAgABhM+hsKruILTA3gpNa9OgGQfkyHZoWQpz5Fxo5iqFptln0KQQCcTnKYl6gAAipq5vhjZut0MbIvpA/B2Iq4HYEtoyB4GVQPwKiEuQmn/M0EbxTkrLUYAAIsahe6C4HeowUIjlQNuSoVA1oCLsPjTdghx3G4gDoen2NzVa3gABRErr6RA0vc6FOiIJKg5qZz6ElgggRz6GNliuUrOLABBApNT126EZQgKaBhmgGek8tGxlgToSVMBfonZfBiCAyGmPfoZmsOXQLsgSIGaDFmGh0IqA6gAggMhx6B5oq0gJiK9Aa6azQBwFTZM0AQABRG5XBFQeCkEz1jFoX/0VLbuxAAHEOFTG8AECaMgM5AIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAO0bNaPuHT9oAAAAASUVORK5CYII=","w8/inkclearall.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARBSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAseCS0NTTpof9nEBcCcTxUPbE65eutmJTCBBAAxmiMkC8D4j9gLgYiOcAcQUuxQABxDJAjpQG4r1A/ASIPYD4IxB/AOJEXBoAAmggHMoBxOuhjvMH4i9AzAzE9UB8GJcmgAAaCIf2ALECEBtAHQkC04HYCIiNcWkCCCB6OzQMiLOB2AGInwExO9SRsdDQvYFLI0AA0dOhVkC8GJphDoIKFiCeDcRqQOwFxLvxaQYIIHrlehcg3g7Ey4G4E4gzgPg4EP+GemA3IQMAAogaDgWVf3x45AuAeAu0+AE5cBkQTwbiLqgH7hBjCUAAUeJQOSCeCrXoKRCvAWJJJHljaEg1AnEmtKycDy2O3IC4DYj/EmsZQACRm0ZBmWEpEH8F4ilA/BOa9naAaheoQ0KB+CQQ2wHxRSCuBWIfILYH4nOkWggQQOQ4FGTxJiDeBcTJ0PKQAZoGtwLxXGiOzgLiedB06AoNWV9yHAkCAAFEatQzQx3yCIhDkBwJAtehIQkqYr5BC3WQI4WBeCE0pLeSm84AAohUh4LSoCAQiwGxGRb5O9DoBYGj0Pq8CFpeNlCSYwECiBSHygLxWmgIiUJDzACLurtA7AkN/b3QjDQJLfRJBgABRKxDpaEOg4XiBGhG2gDE2jhCFuRYLmgMHKC0DAQIIGIcKg7E65DqYVAufwvEUkAsD013Glj03YQWRaAWUg0Qc1PiUIAAIuRQUGisQgrJ2dDmWBPUYlDt8g5aCmBz7FUgDgJiC2hjhJFchwIEED6HckHrZjsofyq02KmCWngBWsOAmm2q0OJJE4s5p6GFO6gVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKxPuR2p8kA4AAwlczgULzP7Qo2gRVewKa1lqg0f0L2rhwgPZ9YGZuglahF6EhrwvEKVDzyAIAAYTPobCq7iC0wN4KTWvToBkH5Mh2aFkKc+RcaOYqhabZZ9CkEAnE5ymJeoAAIqaub4Y2brdDGyL6QPwdiKuB2BLaMgeBlUD8CohLkJp/zNBG8U5Ky1GAACLGoXuguB3qMFCI5UDbkqFQNaAi7D403YIcdxuIA6Hp9jc1Wt4AAURK6+kQNL3OhToiCSoOamM+hJYIIEc+hjZYrlKziwAQQKTU9duhGUICmgYZoBnpPLRsZYE6ElTAX6J2XwYggMhpj36GZjBQ/+cNEC8BYjZoERYKrQioDgACiByH7oG2ipSA+Aq0ZjoLxFHQNEkTABBA5HZFQOWhEDRjHYP21V/RshsLEECMQ2UMHyCAhsz4KEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEADhHHIGwP7H8AAAAASUVORK5CYII=","w8/inkgreen.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyLhRnxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvY//uUfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAGcSooA/lcDbAAAAAElFTkSuQmCC","w8/inkred.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACuElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocuZGRhxCcPEEBMg8SRzECKEZ9jAQKIaRA4kh1IsUDdgtOxAAHEMsCO5AFSHED8AyYW///PH2xqAQKIZQAdKQSkJIH4M1ToHxD/wqUeIIBYBsiRIAcaAfEnUHRDHfgTGJo4ax+AAGIZAEfKA6kgIP4KxKxA/B6I3wAd+RefPoAAYqGzI+WAVAUQgxz1AoifAfFNXOkSGQAEEBMdHakMpPqBWAOIxYD4CxDvBzryNzH6AQKIiU6O9AVSq6HpUhCInwLxPKAjvxJrBkAAMdKy9QQNxSogjgLi39Bi6AgQpwAd+Y4UswACiCYOhRbaiUDcAMTS0KLnDzRNugIdeY9UMwECiIUGjtQFUh1A7AUV+g9NYiC7ppDjSBAACCAWKjsyHkj1ArEwcqxB6QtAPINcswECiIWKjswDUhOQHIYMQFFfCQzN7+SaDxBAVEmjQEd6AKnteJQsADoykRI7AAKIiQqOBJmRi0cJKAPVUmoPQABRoxzlBGJjPPJFwNB8QqklAAFEDYd+h1aJ2MAkoCNXUiMPAAQQE4XR7gSNVmyO2QDKQNTKrAABRFZmAjpQG0hlgmoYIGaH5nZQgQ6qiT4A8S5QlUmoRUQKAAggkh0KdKQjkNoCxFxoUoVAh02gVXUMEEDkRH0AELMBcRYQL4eKPQbiVbRs2AAEEBOJoQlq6LqD2pLA0JsOpLdCpXqA/Ge0dChAAJFaM+kDsQoQMwMdDaoSFaGhuZDWTUWAACI16qOR+jggvdOA2B8Ymh9p7VCAACI1RCWAuB2I1wHxJWK6ENQCAAHEOFSGHQECaMgMkgEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAN1ToiE3YhuIAAAAAElFTkSuQmCC","w8/lasso.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZERp1xycrIDlGkAxAJQ9gUg/gDED+bOnfsAmz5ia0aAAGIkWiGaI4EOAzkoHogdoI6DOwqIH0KV2SM5HgQOAPFGIN4AdPgHUhwLEEAkOxTqwH6o5QuA+CDQ0g2E9AP1KQCpAKjnQOyJQH0NxDoWIIBIcijQsgSoIycC8QTkUCEFQJNJP5TrCDKHkDsAAohoh6akpIBCYz7U4AvUyCBAB4PMMwCaZ0jIHQABREquB4VAILUcCQJAsxJBGQ/o4ABCagECiBSHKgANPkBC1BILFiJlNpwAIIBYyIgqBWjubsQTuuuBag1xFUloQB6ILxJSBBBApIToBWiubYQavB/oGAEsnkmAlqP5RHjcAGomwVIDIIBIcagBtIwEOWAClI0tyuKhdAIBR4Lk9wNxITEhDxBApFahiVDH3YcmAQEsZSUsfQpAHYPuwAAgBjmwHmQe0JELiLEYIIBIKZ76oY4QgOIPUMdegNY4F6E1EbLjDkCTCkifPpT+AC2HF5BSOwEEEDkFfj00TTVCpWBVqD40vWFL2zCPHCC3zgcIIHKqUFDOvwi0cAKWNDcfi1ZQDVZIyHxC7gAIIHKaeQ+hoYcrE8FCkYGYTEUsAAggchx6AD23I2WiD9BcbAiqaqElA9ZMRSoACCCSHQqtnQygjoOBfKgHDGFJAqrOEFqUxVPqUIAAYiFT3wZoxoGl043Y0iE0VxeSWKViBQABBE7ExGD0jAPE96nZ1SBkP0AAkeVQqGPvUyPtEetQgACipHMHKkfrsdX3tAAAAUS2Q6FV3wMcZSfVAUAAUdpdDoSWADR3LEAAkd0LRWuqzYeWoYlEtkFJ7jIDBBAjKSPOeBwrAG0DJECTwwFiqk1S+vUAAcRI6tA4vkEIpG7IB2L6VqTYDRBAjENlDB8ggIbM2BNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAEMfeNO+fxrEAAAAAElFTkSuQmCC","w8/moveview.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAUVSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQABR7MDfv39zg+hp06bNYWRknNPW1jYHWZxSABBADKCCmlz869cvbhC9ePFikKPADgTRkydPngMSBzqSnRLzQRgggBjJrUn+/v3LwszM/GflypVzIiIiGICOA2MQ+PfvH8OMGTMY0tPTU2DqyA1AgAAiy4FABzABwb/NmzfPCQwMBDmWgYODg+HHjx9gGhiyYEcCQ5YhJiYmBaaeHAcCBBDZIfjhw4c8DQ0NvZcvXzKEh4czSEtLM/T19YFCDezgOXPmMPDy8jJcv34dJEe2IwECiInUkIMlfgEBgUl2dnYMLi4uDCtWrEjh5obkCRYWFobZs2engELWxsaGQVRUtBSaJDhB+kl1IEAAsZAarUD8FSa2atWqlD9//rCD2EAaljZhctlAx/6EqWVlZf2KbA6x9gIEEBOxGQJk6L179+bExsbOOX78+Byoo9iBFnKBDWKCGIWUUbhA+kDsc+fOzQGmxTk3btyYAzIHJk4MAAggJmJz69OnT+f4+voyLFmyhGHu3LmwIooFubhCSdyMjL+AjgSH7sKFCxmWLl3K4OPjw3D//v05IPOIdSRAABF0IMiwV69eTfXw8GC4du0ag5SUFENxcTFM7jswRL4hhxySA/+A5EHs/Px8BgUFBYa7d+8yuLu7Mzx58mQOsUUPQAARdODbt2/bgCHHfuXKFQZQRpg/fz6DpqZmyuvXrycCc3Ltu3fv+kDqvn8Hu4Xh58+f4HQGEgfJg9TJy8tnLFq0iIGfn5/h9u3b4JB8/vz5HGIcCBBABIsZY2PjOcA0BA4hdnZ2BkFBQYZv376BQg85tMBiIEeC1PDw8KBEOSjjcHFxgYomcFkJkgN6EhQjKYQcCBBABNMBMDrgjgCFzosXLxjweQqkBoTRwadPn+DmgPQ/e/aMqEwCEICxMigCIAZhYDQwdcUPS/2hAg28cMUDA9fUQE8AM5ldCM+AVQVVpRJ2H6iK+zQz93JJR0Tg7ogImBn23ujuS5kfhUQ5fxoARznWWsjMXwE/AURUhX369Ok5wKgFNwSAhfMcoOOcYXKwBkF1dTVYPisrC6OhAIxWcTc3N7A80LFzjhw5MofYxgJAABHMJKCyzsTEJAVY74JD8NChQ6BcHAmNTnFgCArAGgjINEgcJA9iV1RUtO7atQsckhs2bGCwtrZOIbY5BhBABB0Iqg1AjgQZun79egY1NTUGBwcHBmjh/AVuEFpBDSoHYfL29vYMKioqDKtXr2ZwdnYG1z6wmoUQAAggogpLkCNBRQfQYSk3b95kQK6+/kDrOFjIwTIQqHyEVXUBAQEpQAyvMpGrQEIAIICIrrxBVRTIcOQKPyEhYU5ISMhUWCMBOSQTExOnhoaGzoHV1TC9pLZoAAKIhRTFyIYDc2n59u3bGYC1DMgxc8TExODq8vLy5oCqRFCaAxZLU2VkZFLQ9RMLAAKIogYrsMUyB9QWBIUaJycnw9evX8G1DagwBhU/s2bNYkhNTaWowQoQQGT3FYBRxwKi582bBy4+gA4A90lANIjf398PLkqADmWipE8CEEAUdWhgZd3MmTPhjgTRnZ2dVOs0AQQQA6UGwHp23d3dYMeBCmxqOQ6EAQKIcbCPDwIE0KAfWQAIoEHvQIAAGvQOBAigQe9AgAAa9A4ECKBB70CAABr0DgQIMADHQzZnH73ISAAAAABJRU5ErkJggg==","w8/n2s.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC+UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGbGKJycnOwApBzThA3Pnzj1ArNmEGkcAAcRISusJ3aFAByYAqXogVgDiD0B8ASplAMQCQPwAiAuBDt5AqUMBAohshwIdOR9IgRwKckQj0DEXsIRyPTSkFwDlEylxKEAAkeVQJEcmAh2wAJ8eaKjPJ+RYQu4ACCCSHQq0OADIXE+MI5EcWwCk+oHYEVe6JeQOgAAix6H3QWkPaKEj1BEN0CgGpcdEpOgGpVlDoLoHUHX7QTRMH6kOBQggkoonoGUG0IwzESYGtBjk0ANQcX+oQw5AM5MCknaQHgegGQrkFE8AAURqOWoAdRx6LoZZ3ojGf4BcXCGbQSoACCBSHaqAZjkDNIQUoMnhAxL/AizaoZ77QIlDAQKInJpJAFsoI4UYLDQvULNmAgggUh0KslwAGGrIjrWH0heRohsUegFAdf1oIY/sIZIAQACxkOFQEAAVUQugUVoIqn2QohjkUEEsegMoCWmAACKneFoPjW5DpHRHqLQAxQCoWNuAq9An5A6AACInjTZC02E/CXrmQ9P2RnLTKEAAkVuFwqrFDdAa6gOekJyPFO0wgFGrEXIHQABR0ihJQApVkKUbYdUjtEHiD20PCOAwDsWxhNwBEECUNvMUoFVmABYHfYCG+ERo20ABn2MJuQMggChyKJbqFebYD8jNPqDce0IhS8gdAAFENYcS0UbYj8exRnPmzDmPzwyAAKJLnwkauo7Q5IAO1gHxG0JmAAQQ3Tp3OBwLyny9wNB8TEg/QAAxkjriTG70oyUDUOa6CcTtQEceJEYfQAAxkjM0TgXHCgMpMaAjrxOrByCAwMUCuZhMRyqRYxdAADFSOtlATOgCHScBpPiB+DYwFP+RYw9AADEOlVkRgAAaMkM6AAE0ZBwKEEBDxqEAAQYAhSNqR6rmTsAAAAAASUVORK5CYII=","w8/new.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABiElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALEQq5CRkZEodcnJyQVAyh+Pkg9AXDh37twHMAFi2hsAAcRCA8/3A/ECIH6IQz4eiBOAuIEUQwECiJHY1lNKSooDkHIgQmk9EBsCQ+wCjhCfD6QUgPggED8AqltAjBsAAoiUEF0PMhgadfjAAVyOhIKDUIfagzwFdDhI7QVClgMEECkOFYCmrQOUpAtQCEKTBih0/0PNJQgAAmjI5HqAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAACK14RwPbPE4DIRDAQKIlIYzoS4GOQDUcE4kxg0AAcQ4VMZHAQJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAOORDGyRRCoQAAAAASUVORK5CYII=","w8/octane.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==","w8/open.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACbUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALHQwtCbN2/ibEAICwsziIiIMJJqJkAAUd2h3d3d/4EOxaumtLT0v7q6OkmOBQggBlDriZo4OTn5/7lz5/7jkm9oaPi/cePG/6SaCxBARIfopk2bCIYUDABDC6echoYGw549e8DJg4uLiyE7O5uokAUIIFIcymBtbQ1OY4QcCXQATssNDAwYODk54WaCHExMMgAIIJLSqJWVFQPJaQvTI4ywEAfFErH6AAJoyBRPAAE0ZBwKEEBDxqEAAUTVcvTMmTP/t2/fDmbHx8czyMnJMVLLbIAAoppD//79C3bkw4cPwfzTp0+DHEq1QAAIIKpF/dSpU+GOBAGQo4GOpVpfHCCAqOLQNWvW/L906RKG+MyZMxlAtRQ17AAIIIod+vz58/87duwAs0EVAgzA2NOmTWN49+4dxY4FCCCqRX1iYiK4QkDiM8Icy8JCeVYACCCKHQpyBMiRQEcxYnE8o6GhIVUCAiCAKPaqqKgoIw8PD86ojYuLY+Dl5aW4mAIIIKpEPbCRwfjr1y8Mx/78+fM/NRwJAgABRLU0ysbGxvjnzx/kdi5VhwkBAojoqAe1HefPnw9q5uF0ADD04Oxt27YxXLt2DexmbGq/ffsGN5cYABBAjMR6/M2bN/+PHTtG1fpbVlaWAZjZiEoaAAHEOFQGcgECaMi0ngACaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAAPdDxta50rsAAAAAElFTkSuQmCC","w8/paste.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACU0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREat4cnKyAJAqAOILc+fO3QDlMwDZH0hxCKHyHCCAGIkp8Ak4cj8QPwBiByBuBOJ6qLQj0LEXqOVQgAAi26FIjgQ55iAQ9wMxSCwRqqSfFMcScgdAAJHlUDRHgkAClE4EOmwBVE0CKY4l5A6AACI3M82HOvIhEAegOxKaRkHsQpCHgI42oDQzAQQQtXL9B6TQZaCFYwECiFyHgtIhyGJ5IN4ATZtYHUMtxwIEEFkOhRY9jlDHgsACWjsWIIDIjnp6OxYggChKo/R0LEAAUZyZ6OVYgACiSq6nh2MBAogqDgVaBipX70MtB5WrC4H4ALRqpYpjAQKIiUqONIDW87B63wCKE/E5Bsmx6wnZAxBATFRyJKianACkA6GhWQ+rOokIOXuo5/ACgABiopIjP0BDaAO0liIqmpHMCCRkH0AAkdsowXAkmnwDKKSAco5o4vCGChDnI5tByB0AAcREjZBEkzeAOmIhnpA9j88MbAAggEgKUSIdCcpQhcgtKWxtWXT9hNwBEEBEO5RajiS3PQoQQExERnc/LR1JDAAIIGLTqAK08zYgjgQBgAAi1qHg9ic0+unuSBAACCCiHIpcl8McS09HggBAAJGa69G7x1RzJCF3AAQQEymGQEPWAVr7JNIjJGEAIIAYh8qIM0AADZmxJ4AAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAPhUa4lF02ewAAAABJRU5ErkJggg==","w8/pastechemdraw.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAASYSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBDVHPrq1atlf/78ed3U1FTFyMjITG2HAgQQIyk1U0dHhy1QvSfQIb+AmOHv378M//79+2Nvby+jqamZ8PTpU3Y2NrbPPT09G+/cuXPX1dWVAeh4mHZmJiamtytWrFh97dq1p6Q6FCCAWEhRzMfHt8LW1lYK5ECQB4EWg2lubm6GvXv3Mly4cIHBzc2Nt7S0NAak5ufPnwwwD4HUPnv2jGHVqlXKQLEGoL63pNgNEEAkOZSLi0uMl5eX4cqVKwzMzMwgPlj8zZs3DBwcHAzm5uYM379/ZwCGLFge5LjPnz+DQp1BQECAQVFREcQ2AGpRBmKSHAoQQCQ5FGQhyCEwy69fvw5J6ExMcBoUwiA5GACFpqSkJAM7Ozs4GQD5rEBhNlKjHiCASHIoNE2C2SCLQaEEchgoen/9+gVnw2iQWlCyAHng69evDF++fAGxQXaS3GQDCCAWcnIgyAEgx/Dz84MdBAplaWlpcPSDAMyhyB4EOfb3798MnZ2dxps2bcpkZWW9DeS/ItZOgAAiOURhGQnmWBAAZRpra2twiIHEYBhcrEAdDOKD0rSgoCCDlpZWNJDNBCwhKoAx8YgYuwECiGSHIjsE5ghYknjx4gVYHDmJwNSAQhNYaoAdqqKiwlBQUBAJjAE+Tk7OQmCM3CZkN0AAkeRQmANhmQaULkHRDiuGQCGGHu0w8OPHD3BJAANKSkoMmZmZ3rt3734IVF8L1PcOn90AAUSSQ0G5FhRSoNABsUEOhYmBHIeM0dMqyHOwogsU4jw8PAygog4ItIBYAYjxOhQggEiOelDIQHMv2BHATAEWAzmKhYUFJdcj08D0CKZBZS6IBsUCKDMCPQkqqtgJ2Q0QQCQ7FBSaIEfCHAVif/v2DZ4kYFUmemYCRTuoqII5HsYGOvQ/McUVQAAxkRr1MEeCQhJkOQjDMg4sDcI8AAt15DQLY4NCGDnTEQIAAURyiMIsATkK5iBYJoM5HlsahYUwLORhHiTWoQABRLJDQRaDQhRkEchSGA0DoAyGHnrIyQDGBmUkWFFGDAAIIJJzPcgyWIMDFrrI1SoII2cibEUcLJmQEqIAAcRCTtUJizqYo5FrKVDGQg5NPE1GkhwKEEBkRT0sLSKHDAiA6nqQHErLHC36YWKg5EOKQwECiIXcXA+zENmhID6ofMToRmApW0G1GKztQAwACCCSq1BYgxmW20FpEuZYkBgozeKKeliygXkMve2KDwAEEEkOBYXWrVu3wNUfzAKQw0A1EyxJoEc9MW0HYgBAAJHkUGC/aOa2bdtAXQluoMP+QRsbv62srNRPnjwpgFwCoIcoetSDkg+oOgW2npiJqXgAAoikXijQAlBw6YEcCioEoMK/gUlBE2iODTC9iWKrDtEqAJC+H6DeKzDzsQI9+hBYLS8Fyl3GZzdAADEOlYFcgAAaMiMlAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhPyHQCpaCrgAAAAASUVORK5CYII=","w8/pentane.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC","w8/plus.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABUklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRGreHJycgOQqkcSOjB37lxHfGYR29YACCAmajmS1gAggJiGgiNBACCAhkwaBQigIeNQgAAaMg4FCKAh41CAACKpeAIWPwJAygCPEnk0vgBQjwMe9Q+gmCAACCBSy1GQI/dTUX0jEDcQYxBAAA2ZqAcIoCHjUIAAGjIOBQggUtPoBSDGV3fHA3ECmvpCApmJKAAQQIykDEAQqkJp2SgBCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAFEkkMHcogSIIAYh8r4KEAADZmoBwigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAADqYn5SNHiO4AAAAASUVORK5CYII=","w8/propane.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==","w8/protein.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAR3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsVCi+cePH//fvn3L8O7dO4bPnz8zfPv2jeHPnz9gOVZWVgYuLi4GXl5eBiEhITDm4OBgJNcugABiJKd4Ajro/6NHjxgeP37M8OnTJwZGRkYGJiYmMA3DyABkBw8PD4OMjAwYAz1AsoMBAogkhwLVgh147do1cOgxMzOjOA7ZkeiOhTmYk5OTQUVFhUFWVhakhmgHAwQQ0Q4FRun/69evM9y6dQsceiBHwhxErEORHaygoMCgqqrKwMLCQpRjAQKIKIf+/v37/4ULFxgePHgATnuwqAbnRiQa3aHYkgCMBmFxcXEGHR0dkJkEHQsQQEzERPfNmzcZQFGO7EgQDYt6EA0SQ8YwdbjEQXpevXrFcPfuXbAdhNwBEEAEcz3IgSCHIluCnnnQQxMWyvhCFAZAGRKW0fABgABiIlT8XL58GafDQKECC03kkEIOPWQ96CELU3vnzh2G79+/4w1VgABiIhSaQMeipENcaZGQA9EzHLIYqOx99uwZ3hAFCCCcDv3169f/e/fuYXUArrSHLo8t7WILdRD/+fPnYDtxuQcggHA6FFSQg2ob5HRHyLHYkgc2PdhC9ufPnwwfP37EGaIAAYTToW/evMEo0LGVm/ByDkt5Skr0g9gfPnzA6VCAAGLBF6L4cjc2C5HLU/SyFJTTQWxkGsaG8UG1HS4AEEAseOpzrLUMriIJ3eHIYtgciWwezIOg6McFAAKIBU/RhDNq0R1CTMgil5///v3DCE1Y7scFAAIIp0OxOQZrHYwlzeJqSYEcBHIkzFMwNnolgA0ABBDOzARsO2JEDy6HY2NjSxLo6Rbd86AqGhcACCCcDuXm5sbwLbrB+EoDbJUAerpGNwM5cNABQADhdKiAgAA4avA11XBFGb4YwFUigDCoR4ALAAQQTocKCgrC0xC2xgWuhjFZ3QyoWfz8/DjVAAQQToeC+jowx+ILMeQQQWbDMEg/DCOrQ1cLavnz8fHhdChAAOF0KKgxq6ysjGEJOsbXMMbmSGwOBomBGtFsbGw4G9AAAYS3PSohIQHOVKAyFVfUIzsOvTBHTw7o5SgMs7Ozgx2KDwAEEN5mHsiH2tra4NyLHhLYQhc5BNFDE51GNkteXh7kWLzdEYAAItgVAYWqhoYGVktxORadjU09SOzv378MUlJSDGJiYgQzHEAAsRCRIxnl5OT+g+p+UOcOudrDFq3o0Y+tJIB5WlRUlOhuM0AAEd1dBvr+/8OHD8GdMZAlsAYwvgYKekmBHKKgPhIwAEBmENVdBgggkgcgXr9+De7sgUIY2bHYGivYyllQ7QNyICi6SRmAAAggsoZ0gM2x/6DxJlAIg1rlyN0LWKMEPfpBpQcoPYKiG18xhAsABBAjJUPjoD7O169fwV0WUEMbVIwBxcChCRskA3WFQZUHiCZmoAEXAAggxqEyhg8QQENmfBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIMAAmqGgcFmPArAAAAAASUVORK5CYII=","w8/pubchem.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAURSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBBVHfr27VupAwcOfD158uT1b9++sVLTbIAAYqRGzfT9+3eWixcv3rh586YyOzs7A8jMX79+Mejo6JxSV1d34OHh+U6pHQABRJFDHz9+7Pz06dOZt2/fVgaZo6+vv1lBQSEGyGZ69OjRnAsXLgQzMjIyKCoqvlFTU7MWExO7Ra5dAAFElkM/f/7MCXTE07t37wqCQhDoiFNaWlrWnJycf5DVffnyhfPOnTvrb9y44f77928GGRmZn3p6ekrCwsLPSLUTIICIdujPnz8Zv379KnblypWbQMv5ubi4GHR1dWcoKSnlghwISpMfP37U+vTpUyArK+sdISGhLWxsbF+B6n6DHPzgwYOpV69eTQSawaCsrPzF0NBQAujJb0BMlAMAAogoh75//14YFILAKGYXFBRk0NbWngEMnRI+Pr6voOgHim8DRTfQwS/5+fk3//37V/Tdu3eef/78YWdmZv5jamoqCEqnQE9wP3/+vPTSpUv1wFgBJYmfBgYG0kAz3xJyA0AAgRM+IXz58uV5M2bM+A/MMGuAIcIKEz906NC7zZs3/wcmgRhkcRD+8eMH46tXrxTPnz+/A6QGmNEqkOWuXbs2AWQmyGxi3AAQQCzEphFQSKqoqESCohLE37t3729gKN1xcXER4eDg+IeuHhSloqKi94HYQ0RExA4YIweBYtfl5eU3guSAdCkw9POBme0nMfYDBBBRDgUZ9u/fP1CRww106Adg5ugARukvc3NzTWL0A5PJIaDjlIDRbQ0TA4aqEKhEIBYABBDRIQoKfmAmAZeHwMxUDgxJZlJyLTR076ObSSwACCCSayZguWkBzM3/sUU3yUUOCSEKEEBMpBgKytnATOMATHNH6V3XAwQQExmh8ANYZapQw3JSoh4ggEhyKBMT0x9gaC4GNj4k6B2iAAHERIrvQVEPKpy5ubn/PHv2zJieDgUIIJJCFFhfc4JoYM2kfwYIQM06YvUCC/yG69evT0DyODMpmQkggIgqnkBVIogG1d0gWkJC4hqwcRFw+PDhp8bGxi6ysrJ7cekFVZtnz559C0zX7F5eXnCXAavb11AHsxPjBoAAItahQsBGCQOwqlygqqoaCyqagM25jUCpAKAj9gDFv8nJyaWLi4uvBhbkwkDLWYCh9ef+/ftbgNWoIbAG+wh0JAfMPFAD5tatW5uBjRiiQxQggIhuPYFqI2D9XA6qoYCN4WVAh6bw8vKCKwBgq2g6sBESDqy5eIE10AdgY4QLqI4FlKaBjWdtoAduwZp9sFYUMHZAjZKdwKo0mphGCUAAkdQeBbXknzx5kgNsnPSDWvCampr7gW1RT2Dm+oneXoV5AgSAnhAHhjoo5HWAVS+ogV0J1NdBSv4ACCCyGs6gtum9e/f6gS2ffFCDWEND4xQwSTiBmn3oDgZWt1uBzTpHYJpkAKbrTmAoVhLbBkUGAAFEUVcE5GBgKE0DNqYzQCEMLA32Ax0SBMrRQAceAOZ0HVAPANR+BYrnovcASAEAAUS1zh3QUVuAIecOSnug6IV27jYDQ9ufnBBEBwABxEjN8VFgO4Ad6NibLCwsn4Gtel1qFvgAAcQ4VAZyAQJoyIyUAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABACF7nps6Bf6+AAAAAElFTkSuQmCC","w8/reaxys.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAFRUlEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAAsRBS8OrkqSMPVq615pGXYfj99RsDEysrw68PHxn+//3LwMTCzMDACPIjobKUkeHvz59ApUwgJphmYmNjkPPzOSpsaGCDTydAADESKqhPl1b8vz13AdhANiEhBjZ+foa/P74zsPLwMHx59IThz9evQEezgB36/+8foFv/M0DMZAQKgTAzg3yQH8PHm7cZ/v3+zfD3O1Av0AxOCQkGNj5eBsupExnx2Q8QgDAyVgEQBIDokYFGEYWzNfv/v1Nb5axoRWal/YDDbY/jcZddkDAGUlV/UrkzBpRzPHdAPQjQroVbNnhr0YwCZWIpRbiSzA63KvRSwkwz3jNE7yhNChxKwWudvfgTQAQdyMLFxcAuKMjAxMkB5rPx8QF9Lw6MXhZwdP/59o1BzteL4evjJwwfgY74+/0nOIT///sHdgxI3bP9Bxi+PHgEZjMyMzMwiTAzfLh9h0HcypKgAwECiKAD+TXUGCScHBiYgVH8D5juPt+9y/D78xdEGgFG0NtzF8BsbmlpBikXR4ZPt24z/Pr4ieH7y1fAkP4DNEMdHvXM7BwMPIpywBD/ysApJUXQgQABRNCBr0+cYri7aCkDMxcnJNuzsOLIFIxAx/xmeH/5CgO7iDDDH2ByAKU/FnY2cKZ6A/TEvx8/GYQM9Rkerd/M8BMYvezCQgQdCBBABB0Iyhws3FzgNEhYLSvYYb8fPgLzWbm5gUmAiUHC1prhNzDtvr96HRj9P4D4Jzh5gKKcEAAIIIIqwGmJBAAqQsDFCRCAihZQ1N6av4DhzelzDPqVZQwfbt4COvo7OMPB1OEDAAFE0IGg4oSiNiMokQK1c4qLMdxbuZrhx5u3DFzAIoZDVIQoBwIEEEEH8iorMfwHJnRKAKhQ5xQXB5aDf4DuZQRmnpfA0P3FwC4kSFAvQAAR9AIwx9qAyi1KACjn/gLm/G8vXoCLGXBRAy7cGQnqBQgggja/PHT4m5CBPsM/YMFLXvD9B2cyTmCU/v9NekwABBBBB2pkpTMLAx0Iyp3kpkE+VVWGr8+eM5ATEwABRFAHKx/fJW5FhTZQlUZqjobl6q9PnoCrNVDUkgoAAoigAz/fvvNLUEPjHJ+62jtSM8u/X78YeBUVGH68fkVUjsUGAAKIiZgo+vP921opZ6cLoMKVlLTHJigALKA/A0Oe/GIKIICYiLEIVPIL6etmCRsZfCM2oYPqYFDd/BcYigxkJA0YAAgggg4UsTBnELW0YBDQ1b1p3NYyjx2YG0HVFSFPsfLygBsEf4DNMGKKE1wAIICYiEnkYAy0BNgIKDLtbjvILSvD8A9UjeF0339ghmABN1j/AAtkShwIEEAkpVygo34Dqyhv446Wg5ySEuAaAquhwLQKqjm+PHwE6RZQAAACiInUMu3P129fgQ1YL5OOlovAHPoV5EhQUx5FGbC8YwRVwBSkPRgACCDS8z7QkcDi4xuwK2AAbPJrqaelnOeRlWX49f4DuPUCqm9BRctHYIuZkZRcjwMABBALJZr/fP78SD4owB6YIeJ+f/1a+Pb0GeW3Fy+D+x/gXhyo3gWmX1ABDwplRqQQBXegCGU2IAAIIIocCI7yb98+AztMU1XiY9Z/f/ZcXNrTPQjYEK36fPc+03dgAf3z1WtgaxzYrxEQBHc54Q4EOk4hPJSgFQABxDjYxwcBAmjQjywABNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBgA/u/aOQD290cAAAAASUVORK5CYII=","w8/rectangle.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yY8fPzIcPnxY6cmTJ4tfv35t8urVq1+gKpeRkZEBnUYGyGKwKhqbHiEhITZtbe3zVlZW0UD2XS4uLpxuAQggRnx1/alTp1SPHj265+rVq3JMTEwMbGxsGI7DxcYGkB39798/hj9//jD8/v2bQVFR8XFGRoaLqKjoLVx6AQIIb4hev3597pUrV+QkJSX/BgUFlR45cmTt5cuXOdjZ2SmKxp8/fzIAQ/Kng4ODx/r167vu378vu3379hVxcXFGuPQABBBehwINMGRhYWHw9vYu19DQ6D99+jQDNVpboNAEeVZTU3MmkPtp+vTpy4ABoopPD0AA4c1Mb9++ZQBFuYiIyA6QwaCQwBe1xAKQGSCzQElJUFDwEoj/7ds3vHoAAghviIJCDxSiM2bMADv4169fDJRGOwhwcHAw3L17l6GkpAQcuszMzAT1AAQQCyGfg8CPHz/gfGqEKCz6v3//DolWJsKlJEAAsRBV2DJRr7iFeZRUTwMEEMGoJ8ZSUh1JDgAIIBZaGk5NABBATJQ6EldhT2oxRkg9QAANmboeIIDIdii1u9mEYg8ggFiILUqoVTzh8iAhcwECiIkYQ0EFNKhlAyqYqRGSMA+DGiWgSoQYzwMEEMHMBGrdpKenM3R3dzOoq6vDC2lKwd+/fxnExcUZFBQUwJ4nFAAAAYTXocA2ItgAoOPsgI0GhsePHzOwsrJSxaGgut7U1JTBz89PERSynJyceNUDBBDeNApsMV0GNpotd+7c2SEgIPDi5cuX57m5udmokouZmH6/f/9e/c6dOzNA0Q9s9t3Dpx4ggPA2nIGtJ7Vp06btAbUXQY0RWOMBW8ueEB9dHESDoh/UjpCTk3sJbDg7Atu913G5BSCA8DoUZAgwFJVBDeZLly5pfv369ReuhI/cekd3EIxGlwdmUDY9Pb1blpaWgcDW/R0+Pj6cbgEIIMahMuwIEEBDpmYCCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAAIlCY255Y4QAAAABJRU5ErkJggg==","w8/redo.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAGzklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCj6dv7F+zv3n2V/c3E8o+R8f9fuMT/v8z/GVgY/v7jYZKSEnjExcn8i1oOBQggkhz698c3xr/fXok8v/PA/v6T94XfWdh/gqOF6e9fULXx/99fdgYGtj+//4qzM7CoJqnI892klkMBAogkh/789IHrwbWLaTfuPSl89e23wM+/jJhJh5n9PzPjh39/Wb7O/sGokKAiLfOQg5npL6UOBQggRqKq0N8fuH98/MBy5/r95ItXzrW++cbA8YeBmYGFneMfKwvjH2agKQz//zP+//OT+efPv8x/wEHA9V9AQvixnpF1iIqc5BVBdqbvGB7/+JmVgYP9DwsbKwMzMA3hcwJAABHl0N/vLyXfPnHO5PLNtylP/gITIdARnKJSr6QkRHaI8XIeYGf6++P//78sfz6+NP/w6onLg7e/Vb8CHQx2r7DyJz1j0xhzLaltXMyMkJD9/4X9zY07qneuv+3m1tGoVlCUuMjLyow31AECiHDU//7M/OnhHZcX7z8ZvAY5kgnoTn7Jz2paOgWGatLreFlZfrOxsvz/9fsP458vb1a/f8Du/PP2k977jz9qgGz+8/Ep753rbJPYONhe6MkJXeRlZ/71/c2tmFs3r4dcf8npwCf6LUZajuE6AyvDd3zOAAgggg798fEtz+P7r3ief/yt8JOFAxiSMq/UtPVyjDXktwKjE56rQY5lE5T4ycWs/PUvv4gvN+ed6c/uPHN6/+cH06cndxRO//q/ne2XRpg47//bTy6d9b35+LPLx39yTBz/GDmJSaMAAUTAoW+UP75/rP76C7Pmh+8MHAxcAr9FZbWW6anKbsWW5sCAT/WgLO9Xdl5WjkSuN+8O3PnwQ/H1v39Mf1/fFj575Ok2VmamP1+/feb6+4eFkYuf45MkP8dediZGgpkNIIDwF/i/v6j//v5J/fPvXwI//nMy8PPKvVRVEF/Ix8mCt3xkZOT+KSir80TPy91YR156lyjTv3/M//4yfP3ymf3Dx4/cv3//Z/z3nxGYVhkZic31AAGE36Hff3/98+Ob7I+/P9gYQAHKyf9CiIf9CTAa/hFjOI+48kclZfEOKZb/X5mZQFYxghErKySH//v3n/kPsHYgxjCAAMLv0J+fjf79+cPw/w8wqYMC+M8vnp+//vKSUv6xC3KocIky3EEKb4Z/ZPQqAAIIv0PZOJ+CjWZh+A3MVgy/f3/n+fX7LzswJIirIN4+5L/38Cn/k68Miv/+gcLtPxQjZRJmpi/EmAUQQCwE4m4/Gw+fNAf7q89MDD95f3z/KPjq/Sc1BTHu+2zMjHjT6Y83D/ivHVi7/twjBoeP/xkQafE/KMohfFjUE+NQgADCH6LMQq95hWQ3Cf/n/M4LTP4/v7/ivPPiXdqrr3+l8Gn7fP+E17Fdm04cfsjgiOJImFvBifIXw89vX9jff/5h8xvoYEIOBQggguUoj6DEC3kx7k1vvnxJ//jzC9enp3fsrwvxuHJryi4R42LBWkT9+c/6SExWd7apKv87dmbGL0yMDJjFz39GZmY23tf8YqKXeFiZfhByB0AAEVWF/rq9p+/MzftKF+5+8vv+j4WRRVAes1qkMQAIIKIazmwK5qXy0rKzpDkYPrP8+wOsFp/z3r91q/3agw+mP/4xMNPDoQABRFwLn5X3r5iSzmkNFek+GQ7Gb8x/vjG+f3Zf8/yZS8vvPHkj/+cfAyOtHQoQQER3RVj5RN9IaxrMlRHhvSzExPiP4dcHpk+v7sqdOXdzzc1nn9X+/KetYwECiJHUIZ3PT28J3zh3ZubF28+DPgEdB2yJ/JNQ0Dihr68WqyItRJVGMjYAEECM5Iw9gRx79fSJJdcfv3F5/+s/y39g+5RPUv6hqbmhh5qMxB1aZDCAACKrF8orrfZW3cAgVVlc4IIgGyMwd/1k/PT0tsLpk+d3nL/3xogWaRYggBgpGc17/+CSzJVzF5bdfPDaBlywA0OWR0zqubmNo5e8GM8tnE1BMgBAAFHUrxeUVnyuY6CdpSYjeFaEjQXYxP/G+OX5Q6mTt1/WXnrNUE7NEAUIIMoGIIDFFp+47H01XdUsKQGuhzwMwOTKI/aTh5nxNS/Tr0PUdChAADFSZSAX2K/68PY1z6OHH3xf/uTTFJQW3iwrxn1NnJftE7UcChBAjNQecX7xksGCV/DfOW42pl/UNBcggKju0F+/GNjY2Bh+UTvXAwQQ41AZwwcIoCEzmgcQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAlsOvG/H+qPsAAAAASUVORK5CYII=","w8/ring3.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==","w8/ring4.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC","w8/ring5.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC","w8/ring6.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==","w8/ring7.png":"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","w8/ring8.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==","w8/rna.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADPUExURbm5ub6+vre3t/7+/ru7u9LS0ri4uMDAwLq6uvz8/L+/v/T09L29vfHx8fv7++zs7Ly8vO/v76ioqJycnP39/efn597e3ra2tqCgoPPz88LCwuLi4sfHx8TExOTk5NXV1dvb23x8fHZ2dqSkpMXFxdHR0fX19e7u7o2NjYODg+rq6v///8jIyNnZ2d3d3a6urnV1ddfX15CQkNra2rW1tdTU1I+Pj5iYmMzMzMbGxtzc3Ovr6+bm5pSUlNDQ0M/Pz87Ozo6Ojvf39/Dw8P///zkY1nQAAABFdFJOU///////////////////////////////////////////////////////////////////////////////////////////ALLusTgAAAGPSURBVHjaYnAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggnEoF+dFFAAIIl1InWVZ0IYAAwq6Uk1/FxA5dECCAsCnlFDTlYmIQRBcGCCBMpcy8rIwMHOzSzOgSAAGEoZRZgZGJjVHcQQTDDIAAwlBqzMDEJYXVAwABhKFUgEXGWhKrUoAAwlDKosONI/wAAghDqZCtKg61AAGEoVTCQNHcEKtSgADCUMrL5qjMgzViAAIIU1CaR4CDkYEVUylAAGHTz8IlpGGkiyEMEEDYlMrx62sqmWGEGEAA4UguWsISVuiCAAGEXak2n4W4PbogQABhVSomKsvAZIMuChBA2JQK87AwsbHyoQsDBBCmUjlGAQYmRjEMlS4AAYShVJSRg0FKnpcZ0zKAAMJQys7Ersctgs0HAAGEoZRBxpkZe3IBCCAMpZZquLI7QABhKFXHWWQABBAJpQtAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgAAiQSlAgAEADs28LxBPmkAAAAAASUVORK5CYII=","w8/rotate.png":"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","w8/rxn.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEDUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCr8OjRo/83b97M8ObNGwY/Pz8QZqSnQwECiAFU4BODk5OT/9+4ceP/o0eP/oPYX79+/U+sXmpggAAiKeqFhYUZZGVlGQ0NDRnOnz9P1wAFCCCiHYrsOAMDA4YLFy7Q1aEAAUS0Q0GOO3bsGIqjv337RreGAkAAkRSib9++BWWm/1xcXODoB2YwuoUoQAAR7VCY45CjHxbC9AAAAURSZkKP/sePH4NDmBi9ly5doiiZAAQQSQ4FOo4RPfqJzf07d+5kePfuHdmOBQggkmsmkOP27t0LZltZWZEU/R0dHQz/yWypAwQQyQ4FRT8sFJFDmBi9wBBl2LBhA1khChBARFWhoOoT5CAY+PjxI8PixYv/37t3j+HXr18M8+fPZ1BXV8frWJj+rVu3Mpibm/+XkpIiqQoGCCBGYmKiu7v7/82bN6mWg0VEREDJgCSHAgQQUSHq5uYGCgU4/9y5cwwgh0dGRoL5ixYtYggKCmLg4eHBqv/v37/gzARq0IAAsKIAVxagDEmsQwECiCiH6uvroxhoZ2fHUFFR8f/nz58M379/B5WxDA4ODgz4LD5z5sx/mEN9fX0ZSHEkCAAEENnt0ezsbAZQs2/Tpk3gEFq5ciVRVSowLTO4urqS3EQECCCyHQps7oFDsrS0lGHSpEngaAU5lhCIiooiyz6AAGIh16Gw1hMoRGHpDlRsJSYm4tQTGBjIIC0tTVaDGyCASHYoKHpBIQfKTCDHwdIdcgkBCmlQeWttbc2InNPd3d3JLikAAoiR1IoCWGb+h3VHcAGQPCj9ghraoLQMyjjAjPefnZ2d7O4LQACR3CVoaGj4f+TIkf+vX7/G2xUBdVXmzZv3H6SeGl0RgAAiOTOBWkygmqipqQlvLgeFYnh4ODwWKK0kAAKIrFwP7DeBGycgBxNqw4JKBVAmAzmWkh4BQACRnEZTUlLAmQXUEgJmHAY5OTkGUMjhK8BBDpw6dSo4NkAelJGRAetDKlsJpl2AACLZoY2Njf9BFoKKIViogkoAUG0DzOV4HQzU9x8UutAWF7yxAqoEgObhdSxAAJHsUGDR9B/asWNwcXEBY5DDQeUpyMEgx4OKJpDlwCKJkZjiDlgdM9TV1eFVDxBAJDsUZDAoykGOQ25Mg9ItLLPBylhQEgGJR0REgMcDkM2AqYPRwNoNr6cAAoiR3KFxYKj+B9VOIEvQC31szTpQmQoCsOYiNMQZ1NTUUCoGXAAggBipMYYPCyFQKCKHNAxwcnLCMw8ohEltOYEAQAAxDpXJBoAAGjLDjgABNGQcChBAQ8ahAAE0ZBwKEGAAsYK8GTAhlXcAAAAASUVORK5CYII=","w8/rxnmap.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADGUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQRQ5NSUnhBWIWejgUIIBYyHQgN5BinjNnzid6hShAADEOlcwEEEBDJo0CBNCQcShAAA0ZhwIE0JBxKEAAsZCR4xWAVAIBZQuAJcIDajoUIIDICVEBIK4HYnsscvpQOQFGRkYGdEwJAAggsoonYKgWgBwKDLVAsCFQRyQnJ68HUgfnzp07AaYWKLYfSDngMMoRaMYBYuwECCCSQxTqqAvIoYYW2hfQtCwE4g9AxzPCMJBfCFV3gVh7AQKI5pkJ6LAFQOoBMGSRQ9UfiBuBch+INQcggOiV6z8QKYYTAATQgBdPxGYygAAaMuUoQACR61AHHFEHKjvjsYgrYIn2eFIsBAggkh0KzBQG0LKyEYs0SCwAqCYASX0/NNcjF0OJUHUJxNoLEEAklaPA8hNU/NwHFS/Q3IzNIyBHzgdiQ2hIgspRRzSHwjx8HqQOKAcupvC5BSCASA1RUIG+AZcjocXRBlAVClULcgDIgflY1F2Ahux+oKMVCFkMEEBMJIRmP7RALySi7CyEpkOQHlDtpQB0TAOOMhbksfVAeQF8ZgIEEBORjgyANkQCSSikQQ6E6QOFXD5y2kVybCKU2Y/PMIAAYiLCkQbQNJcINJToFhHUQ45IDgA5aD40bWLU+aCSBNqGwAoAAghvZoJmHlBm2Ai0uIGccgyas0GOVQTiAmixZIgeM1APgOwKxNZQAQggQiEKK1oayCxvUdIh1JwD0IyGLXOB0vZ6aJsX3B2HyQMEEAue0IyGFuyGVKhYCqG5ux+Jja9cVIBWHvD6FSCAMKIe6EBQf/0vkF4D5AqD2pdUqgVBjWoBYMg54lIAcwsoyQHdgJI0AAIIW9SLwtwMSptUrK5BHk4EOQYXhgGQI4GOFULWDBBAWDUAo4ULn4EDgQECCFdmEh/IlhIwNLnQxQACCKcPgKEqNZhCFCCA8EoCHcs2WBwKEECEytE/wGhgZBgEACCAhsxoHkAADZmuCEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAB2+2loyg9nNgAAAABJRU5ErkJggg==","w8/rxnmap2.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEL0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQC6UGpKSkiAOpv3Pnzn2DLkfNZAUQQIzkGAZ0HDuQYgU67gs+ddR0KEAAgQ0jBScnJ3PRymx8GCCASHEgB60DAR8GCCBiHclOy9gCms9ISA1AANHMkdT2DEAAsRDINMzADPMT6Nh+ILcAiD8AcSFQbAG9iyeAAMJbjgId9BfoSAcgMwCIFYE4EYjrB6IcBQggYsrRD1BHPwBSD4AOnw/EBkD+BWIsAKpVAFIKWKQeQM0kCgAEEMGaCeYgaMiCwAYgjichMECxsR8aEzC8HypONAAIIGKrUGTHTSTFEqBHJ0CZgUC2IyiNQ0NzAikOBQggYh26EOY4pBA2IMGeA0AMUy8AciipaRQggJiIDBWQ4z4AHRdAZvTjrsMZGXFiYKkjAlMHEECktJ5AoeqPxE4gQa8AAT4uwAxjAAQQ/toALfcC8Xsk/n2kEMaX6x2Q9UHF3iNlTqIqBIAAYiIhU8CKJ+To9yeiaFoPzUDIAMRfD5UnCgAEEKkNZ/ToD8DjSAGoIxeg12RQ/gKoPFEAIIBIdSgoFBNAjoBmsAd4or8f6qhCHDFUCPXQfGIsBgggkhwKjf4LSCG5EFv0Ay1PgKpxJGAkSD4Aqh4vAAggcvpMyI7bgB790PIVFEqOQI99IOBxkHwgKPQJlcsAAUSOQzdAQ6EAGr3odf56aAvrApGxBKoMGgmlV4AAwttnAhW6ODJKAjTUYGACUpoD1eMO5AQA0IxAXP0ugAAi16HzoYV2IpQGhcZCUutvYstREAAIIHL79Q7Qptt6aMgKECpTyQHAABGEsQECiIVEjQbQZhq2ghpUc52HNjhAobuBGgEKYwAEEElRD01/B6GF+AMsBbwB1BP90DSXSI1oBwGAAGIiI8o34CpqQDkYWuuAui0GxBbmOGJPBJkPEEBMJGiE5eTz0BY6ofKR6MIcG5gzZw7KEBFAAJGTmSZA26YNRDq2H1rmkhKaUuhiAAFEdBqFZqTz0NZ6ITRUJwId1EBEBuyHpl2Q3odQGtxxRK8YQCMywND8gW4OQADhdSiwhc0INOg/kiEwtiG0dzof6oBGaOb5QMDBoOpWHqnUMEAfJwCq4wY69Cu6foAAIjiaB3QsE9Cgf0i5HlYngy2ApsF8qOUboKXCAWK6wlDH7weqFYTyxYCOfIVNLUAAETXsCHMs1OD1SCHyARqNF6F8fWjJIACVA0VrIrKjoWaA9NvDqlqgvCFQXALoyBe43AAQQESPjwIdywI08A9SXW8PjUpC/Z8LUEfDBiIeQDEo5E8B8T4gBqVLvC0tgAAieSAXSyUggJQcHLCMslzAk3HkgA58RIy9AAFE1lgl0AJWCutwCSDmJMVOgACieIAVaCEvsTUNEIuTaw9AADEOlXkmgAAaMtM3AAEGADgui7Z4EMnPAAAAAElFTkSuQmCC","w8/save.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACnklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBBDJDk1JSWFhZGRkoAQDzSDZXoAAYgDlemJwcnIyM7VDCWgmE7H2AwQQsY7kpFWUggKAGDcABBAxjuSjdfoD2sFKyB0AATTgjiTWsQABhM+RkvTO2UA7uXG5ByCAcDmSd6CKIaDdHNjcBBBALLQoX4GWOeCRfjB37twHuCSBcj/mzJmDIQ4QQIzojRJgGScNVPyUAkfuB1IOBJQ5Au04gMcMQaBj3yOLAQQQthD9S2HsgRwZCHTIBhyOOA9VcwBPqL5HD1WAAGJBC00+oKIXOCxoAFL2RDr2AAG5fKB5ILM+AO0LxFEDcgEd+w3GBwgg9BAF5fRPOCyoB+IFQPyQgCMPAi3/gEd+IxB/hJkJSs84kgGokoE7FCCA0HO7Ip50859AJiEnPeM1E9ltAAHEhJY27g/W1hNAAA2ZZh5AAA0ZhwIEEAsNapb/xJSVpAKAABoyIQoQQEPGoQABNGQcChBATGjpS5HMdLkej1wCNcpfgABCD1E2Ms0JADpmPjZHAqn5ZHpeGJkPEEDouf45BZ4GhRwyPx4kRoF535E5AAGEEqLARsAnoGUSZBiaCHMsssOh9AJyiinkBgkIAAQQtsxEcrcY6JAFSI5FaSkB5RLJiHZBdDGAAGLC4pOnQIX8ZDp2ApLQBVC7lJw4R280gwBAAOGqmf5hEQM13eYDPfGABDvXo6VbZCCAZC5KnwlI/UBXDBBALDh89BnUNgWGEnLmMiQycxwkwSONQDsuIPdCgXZ/xaYQIICGTL8eIICGzEgJQAANmbEngAAaMqN5AAFEtEORHMxCTwfCMEAAMQ6VWRGAABoyzTyAABoyDgUIoCHjUIAAAwCquOzXqgdXzAAAAABJRU5ErkJggg==","w8/select.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABm0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDKUXw4OTmZcaDdAMIAAcRIqMBnZGSkW4DhAwABNGSiHiCAWEhRDEwG1K5vD8ydO9eRGIUAATRkQhQggFjI1OcIDIkD5FoKjJkGIFVPih6AABoyIQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRQDtUnVQNAANHdocAyNAFIBZCqDyCABiJE48nRBBBATHQOTQUg5UCOXoAAoneI5pOrESCA6O3QAHI1AgQQuY0SA2A0kqwHiBXIdShAAJHUwqdBexQEBIEtsQ+E3AEQQIOhwE8gRhFAANGlz4TU/rwAxIlA/ADKLwCxgSGqSMgdAAHEQqdQA5WdjUAHNSCJFQI9sBFIzwfSoCILb0McIIBoHvXQsjMQzZFgAO0lGII6oYTMAQggxqEyPgoQQEOm9QQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBgAKUdefhOjYOqAAAAAElFTkSuQmCC","w8/selectall.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACzElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAUexQRkZGDJySktKATRwdkwIAAojqIZqcnJwApPKBtAA1zQUIIFpEfTwQgxwZQE1DAQKIidLoRgtNBSBlAMSFoFClpkMBAojaIQpy3AYgXgDECkCHG1DLYIAAorZDQelz4ty5cz9AHUy1UAUIICYqZ6IHQEdegApNBKVTamUqgABionImmgjjQB38gFqZCiCAmKgUmrBMtAFNaiK1oh8ggJiomYmgaRMZbKBWpgIIICZqZiJ0QWpmKoAAYqJBJmLAEv0UZyqAAGKidibCEqpUyVQAAcREo0zEQO1MBRBALNTMRNDorYeGXiJQ/ABSpuoHZSo8SQQvAAggJmplIqAjHIDUeWgINwLxeqAYyHEC1MhUAAHESE6/HtQYgTXngNgRGoogfiPQUROQQnc+1OGJQAxy7H4gVoTFACl2AwQQC4WZ6AI0FEGZxRDogAdoRVMg0MGgZLAe2lD5AE0WC0i1DCCAyApRYAselInuQy2GhyKeTAcLXZAjLwDVG5IaogABRK5D+2FRihyKRJQSAVAHO4IyFSl2AwQQ2FekYqiF5BZpAtCMR5KdAAFEdmaiBiDFboAAoqgchRb466HJYAIwOgtxVLHzoenZkdxyFCCAmChwpAFSubkAmyOhuX8BtHgCZaj95CYbgAAiNzMZQMtEAWhIIdf1oAbKAmg6dEAS94d6igGaCReQYjdAAJEb9euhjmSA0vVIcgeg5aQDmjgymA/0yAFo+UsUAAggch0aiC9EkRzMgCVEQeoLQcXanDlziLYQIIAoqUINoCGrAE2jiQTarBgZihS7AQKI7MwEtcwQWo0mgBogOBxZgORIe3IcCQIAAcQ4VCYbAAJoyAw7AgTQkHEoQAANGYcCBNCQcShAgAEACzRFJ/iMF+gAAAAASUVORK5CYII=","w8/selfrag.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACI0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQABR5FBGRkasOCUlRQCXHAiTAwACiIkSR2IDycnJCkBqPTl68QGAAGKipiOhIAGIHaAOphoACCBapNF4IL4AxPnUNBQggKjqUGAoBkCZidCQpRoACCAmGoTmxLlz54JC9AHQ4VRzLEAAMVExNEFpEhSiC6BCE6EOpwoACCBqhigo9BYAQ/MDlL8BiA2olakAAoiJytG+EMaBOngDtTIVQAAxUTMTAR13AE1qIrUyFUAAMVEzE6ELUjNTAQQQEw0yEQOWUKU4UwEEEBMNMhE6oEqmAgggJmpnIizRT5VMBRBATNTOREAxASB2oHamAgggJmpmIqgDzwPxfiB7PcjR1MpUAAHERI1MBA3FfmjzDuRwQaiy+0j1P0WZCiCAGMkZ0gE184AOaAAy5aHpcz4oxECNEWDoPUBLGiA5UNIohIa2IUgNqfYCBBAThdFuAAtFoOWOyI6ERjkoEylCuSBHfiA3UwEEEFkhCuxqBEAdeAA9FAlkvPlQDwiSai9AAJHrUJCFF4EWTiAxXQtAHbtxzpw5C0jRCxBADCCHkoopLbxBDibVToAAYhwq46MAATRk+vUAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgAlFuN8C8/7xAAAAABJRU5ErkJggg==","w8/seq.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJuSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJmHD+MDycnJBUAsQIw9IHUg9eS6ByCAyA5RoKUJQKofiokBYLVQfSQDgABiItORDkBqPpSbAOQ3EFAPkoc5cD5UP0kAIICYyHCkAZBaD+UegNL1uEIKKB4AkkdTvx5qDtEAIICYSHSkADQkQfQFIA4E4gWwqEW3HMqHhfwCqPoLUP3ziU3fIAAQQIyEMkxKSgpytPoDMcjyD0CsOHfu3A9QB+0HUg5Q8YlI6uOBWAEUkkC1jkievY/k2Y1I6g/MmTPnADZ3AAQQCxGeqccilghzJBSAQuo91HJs6gNhDJA+oGMTocnHAIqRAVaHAgQQMQ5txBKioDR5AMmxsJyPHqL5UMeD5BORQhTmGYwQxeUIgAAiGPWMjIzIaQ4Ujeehlm8AOjQQWjbCHBoIFNuAVjrsh3ILgXITgGKgkAyAesoQKPYAvRzFBgACiCSHImWQ80gh4IDsEGyVApJHkNWDHHkBW4GPDQAEEMkORSrs5yMJLQBamointJiPVI7C0vgCXDUTNgAQQGQ5FGo5KJRAoXUBaKkhEUXbeWj6ngBUX4ivCsUGAAKIYDmKSyPUMlBGcySyKASpayTHkSAAEECMQ2XsCSCAhkwzDyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAJt64YPhN1TvAAAAAElFTkSuQmCC","w8/sgroup.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACt0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALLglGRkaSDEpOTlYAUg5ArA/EC+fOnXuBGH3EVuEAAYTVoSkpKSBX/ifgMJCjDIDYHupAAahUIrGOJAUABBAjNh8RCk2gIxOA1HwsUiBHLiDFAcSGKEAAMWEJTXYi9OlTw5GkAIAAwnAo0LKfROhzQOM/AOINtMxMAAHEghaaQkDqHYFoF4CmTRj4AMSgjLQfKOcI9OgHLGkZrhaUfoFiIP0BQLwA6kmCACCA0DMTMVkd2ZGJQAzKOPuh4nDHQtNxP1Imgzkc5jCQ5w4Q61CAAGJBi/a3JEQ7PE2CHIfm2IlImQ0Uwo1QOh/No0QDgAAip8C3R8840OLIEeoYA7QSAaR2Akg9EBuSm5YBAogchzZiy91ojsUHEolQgwEAAohkhwIddACP3AWoQ5DBfGh6han5AM1EJAGAAKJFXY+eOQSgjj2PVAI0QkOf6BoMIIBQaiZS63c8Rdh9aK7GBg5Ak88BUmomgACiVespEE86dICWDAmkGAgQQExoIcFLDVciZSx8ZeR8tMoALwAIICZqhzCouQd1wAOggxWRylBsIJ9YcwECCMVhc+bM+UiFAE2AFv4B0NBtAFK4HCxArKEAAcSEJUSYqZRO/ZGLJKiDiSlnsQKAAMJwKDBU/1LJoQHQxgd62r2ApyjDCQACiAlHOmOkkmP3IzsWykbOQBOJNQgggBhxlWPklqlAx4CiuB5L2YnejgW3F4gtRwECiAVfF4HCCgCUeeShmcoBqSUFcvREfFUxNgAQQIxDZSAXIICGTL8eIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAx8rRvU6ExAMAAAAASUVORK5CYII=","w8/single.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKOJkZGRZD3JyckGQKofiAPnzJnzgVT9AAFElxCFOnI/EDtAHUsyAAggJjo6UgCILwBxITnmAAQQE50d6Th37twP5JgFEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQOSGaDw9HQkCAAHEABokIxVDQ7UAiAXoZSdAADEOldE8gAAaMi18gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwCeIKhoGrTRJwAAAABJRU5ErkJggg==","w8/spectrum.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURT9IzH9/f////////+0N6z8AAAAEdFJOU////wBAKqn0AAAA7klEQVR42mJgJhIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABhFDIiBXApQECCEkhExaAUAgQQEQrBAggohUCBBAOhQwYCgECiGiFAAFEtEKAACJaIUAA4VTIgKYQIICQFTLgUwgQQEQrBAggNIUMcGXoCgECiGiFAAGEqZABppABRSFAAOFVyICkECCAiFYIEEBEp0eAACI6hQMEENEKAQKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAAwBppRCnygJdngAAAABJRU5ErkJggg==","w8/spot-blowingdown.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDitywAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABg0lEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQhkIOEXkuUwMeIXRxgABCU8jKr8j0HwiY2MRYUWUAAghNoabAfyhg0kaVAQggVIWizP/hgFkYRQoggFAVciEp/G+MIgUQQCgKdZj+IwNJZDmAAEJRqM+LrI6FE1kOIIBQFLKzICsUkEaWAwggFIX83CgmyiHLAQQQikJZFDeyyCDLAQQQikI9FDdyayDLAQQQikJlFE8zoXgGIIBQFGqhKPyvgiwHEECoAY4ajiixDRBAqAqNkNWJo0gBBBCqQhE2hDo+dRQpgABCSxRIBiqhJgqAAEJLZqoIhYKoCRIggNAUmsC9w8SDKgMQQGgKpQT5oOrY0DIDQACh5xk1aIpkZkeTAAggjMwlxgxUysxsiC4OEECY2VVX4f9/CXYMYYAAwpavOTiwCAIEENEFAEAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGADPv66EeffprAAAAAElFTkSuQmCC","w8/spot-blowingup.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6OjowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8SBLkAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGFSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggbAo5sSkECCAMhWKSrP/5THkwFAIEELpCTlHm////M4timAoQQGgKWTRB6oAqeVnQFAIEEJpCDab/EMAki6YQIIBQFfIY/YcBJhVUhQABhKrQnA2hUBFVIUAAoSrUEoEr/C+PqhAggFAUsjAh1P0XEUNRCBBAKAp1kdT9F2JHUQgQQCgK5ViRFLJKoSgECCAUhXoGSArZ1FEUAgQQikJhZKv/C6IoBAggFIWqKAq5URQCBBCKQi4UhdIoCgECCEUhN4rC/ygKAQIIj4lsKAoBAghFoQwezwAEEIpCHeRwZBZHUQgQQCgK2TmQFDKZoSgECCDUuBYWgKsT4EdNugABhJp6JExgZnLwKaOmHoAAQkvh+sZCEB+rKaClcIAAwsiF2ob8TLxK7Bi5ECCAiC4AAAKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEGABAoPUJVnlBdgAAAABJRU5ErkJggg==","w8/spot-circle.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAmmZgAAAAwdFJOU///////////////////////////////////////////////////////////////AGKl0HgAAAFQSURBVHjaYtAnEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAYShUE1RQ55cWwVAIEEBoCvl0Wdn+///PKsAhjqYQIIBQFYoJM/6HAEZmZVSFAAGEopCJm/k/DDCzMKEoBAggFIXsbP8RgJEXRSFAAKEolNFDUiing6IQIIBQFHL8Rwb8KAoBAghFISeKQlYUhQABhKJQG0WhKopCgABCUagihKROSh5FIUAAofqaEUkhF6qvAQIINRw1eODqeNDCESCAUGNGVBEeM5x8qDEDEEBoca3EIQBWx8YtiRbXAAGEkXpktVi4JDTZMVIPQAARnR4BAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgAAiWiFAgAEAodiBFKm9ZEIAAAAASUVORK5CYII=","w8/spot-crescentdown.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAClUExURQAAAAICAp+fnwoKCv///8PDw4uLi/39/dnZ2dLS0gcHBwYGBgUFBQMDA7u7u/Pz8wkJCe3t7QgICAsLC3d3d1VVVSYmJnZ2dlFRUYmJiQ0NDTU1NW5ubmRkZHBwcIeHh/f397e3tzExMV9fX0RERI2Nja+vryAgIKOjo7+/v+bm5nx8fCsrK7Ozs8fHx2pqaoCAgKurq11dXUNDQxQUFAQEBP///31J1csAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABgUlEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgABCUcjJhsxT1UTmAQQQikImBhYkHrMBshxAAKEp5EBw+BlQzAcIIDSFhggOHwMTshxAAKEo1GCQQ3C0URUCBBCKQlYGHkEYW0GYQRdZDiCAUBTyMzAawdj6jMgONjMDCCDUcGRg4JUFe5xFhpGBgR1ZCiCAUBWqMzDwiMmzsrLpcDMwCKNIAQQQqkIJoDkMQDVcQIrBGEUKIIBQFUqCVUCAgDiKFEAAoSpkZUACiihSAAGElihMEOqkWFBkAAIITaGIEEwdszKqDEAAoSnUYoSbyIkqAxBA6OlRVABqoAqaBEAAoSsUZAZbzs3FgSYBEEAYKZyP0RQYP4xq6OIAAYSZFTilGRiU9DCEAQIIW55hZ8ciCBBARGcugAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABBgCePjGhpCQ+agAAAABJRU5ErkJggg==","w8/spot-crescentup.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWjopcAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGDSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCJtCNWwKAQIIQyGrgOB/QV5WDIUAAYSukFWf6f///0yiGCoBAghdoSRI3f//LHroCgECCE2hOvN/KGBHUwgQQGgKhbmh6rg10RQCBBCaQiaYgf+ZpVBlAAIIVaEZB1whCyeqQoAAQlUoywNX+F8VVSFAAKEq5Eao+8+EGkIAAYSikB+kgIPlvxjYqSooCgECCEUhF/N/ZmZ5LnYuZWae/zyojgQIIBSFAiwsOkZglqkxC4cQikKAAEJRKPKfmR/KlGD6b4KiECCAUBQa/JeGs4X+K6AoBAggFIWGTFpwtgwfG4pCgABCUcgmjsRRQlUIEEAoCjWEkR3Mh6IQIIBQFJrzInHk/qMoBAggFIWc2kgcdl0UhQABRHTmAgggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBgA3fiNbRF8wqwAAAAASUVORK5CYII=","w8/spot-halfellipsedown.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+PjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRjeb4AAAAzdFJOU///////////////////////////////////////////////////////////////////AHGevY4AAAFmSURBVHjaYjAiEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAGEqpCXEQnwokgBBBCKQi7m/0iAQxNZDiCAUBTysSErZFdElgMIIBSFAuzIClkFkeUAAghFoR4nskI2GWQ5gABCUajzH8VqPmQ5gABCUSiPopBFC1kOIIBQFAqhKPyvjywHEECo4ciBopAHWQoggFAVqiCrU0ORAgggVIXqrAh1nGIoUgABhKrQEEkhsyqKFEAAoSqUQLZaEkUKIIDQUo8GQp2oNIoMQAChKZTlhtsshSoDEEBoCnlY4CZyocoABBB6wjWABiWzEpoEQAChK2RkBlvOxqqLJgEQQBhZQYEFmIS0WYTRxQECCDPPcIn//68shyEMEEDYMhc/PxZBgAAiOhcCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAgwAP90wpHYv4TVAAAAAElFTkSuQmCC","w8/spot-halfellipseup.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8whroAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFkSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCKtCVSxiAAGEqZBVnv8/vyIrujBAAGEoZOVm/v//P7McukqAAMJQqAxS9/8/uyaaOEAAoSsUZvkPBWqoEgABhK6Qkw+qjk8WVQIggNAUMjLDDPzPIoUiAxBAaArFheAK2XlRZAACCE2hBg9c4X91FBmAAEJVyMiBUPdfmg1ZCiCAUBWK/UcGkshSAAGEqlCCBUkdD4ojAQIIVaGSCJJCARVkKYAAQlWoxY6kkEUGWQoggFAVaqO4UQFZCiCAUBWKoijkQpYCCCBUhRwoCgWRpQACCFUhF4pCAWQpgABCVSiIovA/shRAAKEq5ERRx40sBRBAqArZmJABShQCBBDRuRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAIlohQAARrRAgwADnsqT2BolpWAAAAABJRU5ErkJggg==","w8/spot-hellipse.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWGuOYAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFPSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAoSnkVePmkuOU0uCWEUJTCBBAKApVNNmY2f6DABMzGw8HikKAAEJWyM/E9B8BmJiUWJAkAQIIoZBFkv0/KmCVR1IJEEAIhVrM/9EBsyJCIUAAwRUyKvzHBOy8cIUAAQRXKPYfGxCFKwQIILhCYWzqWIXhCgECiGgTAQIIrlCdGYs6JkSwAwQQwtfSWHwtiPA1QAAhhaMqRjgqMyIUAgQQvpgRRI4ZgABCiWsOnv98UGV8/7lQ4xoggNBSj4CIhDjnf1lxbREBtNQDEEBEp0eAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQYADruK7+ajRtnQAAAABJRU5ErkJggg==","w8/spot-vellipse.png":"iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYPWtQAAAAudFJOU////////////////////////////////////////////////////////////wCCj3NVAAABaElEQVR42mLQJRIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAgiLQg42Ng5MUYAAwlAoLsby/z+LsCi6OEAAoSvk5Rb8DwRKTKxoEgABhKZQnZ/zPxhwcmmiygAEEJpCPp7/UMAsgioDEECoCgX+IwFUywECCFWhKhNCHY8YihRAAKEq5EY2kR9FCiCAUBRKsiMr/K+GLAcQQCgKpVHU/ZdFlgMIIBSF2igmMisiywEEEIpCDWZkhewyyHIAAYSiUAvFZnZ5ZDmAAGLAGYxoAQkQQCgKGVEVKiDLAQQQnnBkQZECCCBUhXJIMcOkgiIFEECoCoWQTWRDkQIIIKJTD0AAoSkUYoamRy4utJQLEEAYKVxHCqROECOFAwQQZp4RZpGQYFHGyDMAAUR0LgQIIKLzNUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGAItVsXfzSWweAAAAAElFTkSuQmCC","w8/symbol.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABXUExURXx8fH19fYyMjISEhJycnPX19dHR0f///5SUlLS0tKampv7+/uDg4NLS0ouLi+3t7ezs7P39/Zubm+Hh4cPDw7Ozs5OTk/r6+sLCwoWFhaenp/b29v///+N16u0AAAAddFJOU/////////////////////////////////////8AWYbnagAAAehJREFUeNpikCEaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEELpScTYhBgZGBgYONn50pQABhKqUlYOBkZkNyBAQY2Bg5kFVChBAKEp5gQZysEPYnEC2FIpSgABCVsoGlGXmhvGYgO5gQVYKEEBISvkZgEACzuUBuphBBEkpQAAhKWUCKRWAc9lBXAZBhDxAACGUCoOl2BFSYiA+J4IPEEAIpVxAlzIyI1nIBQo0JAGAAEIoZQYZwoekVJQR1QUAAYRQCjSDEUUpMLiAIqxwPkAAoShlYGBCVQoUQigFCCCEUj6QsZhK4eEsAxBADCi+QPGWEMhFSAIAAYQaWIzIkceBFgcAAYQcBUBTGMWRowDFfhmAAEJSygoyhRfOFWBA4crIAAQQso08QHOY2JHt50ROLgABhJIIWfkYGIQgYc7OAjQTNcECBBBcKRckHXJBg1YUmA/ADERSAwgguFIWqLNYISIsEIUy0oiQBggghFIGKGBkhwYHBCCUAgQQslKoLDh8JBkZGRlQ4w8ggFBMhagFxzrMDiRTAQII1QFgtaBczc0IswOhFCCASCgyAAKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMABYEojZyOA2dAAAAAElFTkSuQmCC","w8/template.png":"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","w8/templates.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==","w8/text.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGxSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKU1JS9gMpByj3AxBfQOKDwAOouAGSmOPcuXMP4DOXmIYRQACRE6IfoJYLArEjmtxCoJghkBYE4gXUDFGAACLHoYGEQggo/wGIE6EhTBUAEEAspIYmIUfCQHJycgLUofFAtgMepQegGC8ACCBSQ3QiCWrjkZJDA5Cuh2J7KB+UvvPR0jhOABBAJDmU2NBESss4kwlQfANInljDAAKIlsXTRlBaJcLjRKVjgACimUOBjlhATXUAATRkCnyAABoyDgUIoCHjUIAAGjIOBQigIeNQgACiyKFYahx7HOoEkLgC5NgFEECMpAzpMDIywixWgNYqBjgK+o2wYgdalYI8oICk5gJUzQFiW08AAcQ4VMaeAAJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAKvCX+dy+c4IAAAAAElFTkSuQmCC","w8/tlc.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADLklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQojg3N/f6379/5X///v0TJsbIyMgAKzmQ2bgASJ6JiYkdCB5OnjxZk1i7AQKIJIf++vVLSENDg9PAwIAT6GDyQoaFheHZs2cMR48eFSJFH0AAkeTQP0CgoKDA4OjoSFE03r9/n+Hw4cN/SNEDEEAkORQUtcBQZfj37x8DMPpRohwWrTA2jI8sDwKsrKwMnz9/BkU/SZ4DCCAWUkMDZDnIkT9//kRxILY0is3RIABKNqQ6FCCAWEh1JMgCYEYAY3IBBwcH2LOkAIAAYiI16qnRNkBPIsQAgAAiuRwl1QJqmQEQQEykhsRAAYAAYqI0Cg8ePMiwYcMGcE6mJQAIIIoc+vLlS4aLFy8y3Lhxg+Hy5cs0dShAADGRE4pIFQDDjx8/wDQI0xIABBBFmUlKSorB0NCQQV5enkFXVxer+jdv3oCTxsOHDylyKEAAsVCSW0FlqouLC7x8xQb279/PcPPmTYZPnz4xREREMLCxsZGVKQECiORcj24JyPG4HAlKDiAHggp4UGb7/v072SEKEEBUb4+C2gEwz4BaSjo6OmAxYKuLgZ+fn+xyFCCAWChJo+gAVC2CSgBQCCorK4ND2tzcnEFaWppBUlKSogAACCCqhuiVK1cY1q9fz7B582ZwJoIBGRkZBmZmZooqDoAAoqh4QgfPnz8HOwhUZL1//56qVShAALFQK9pBQE9Pj+Hp06cMPDw84KKLmgAggEhu5uFzLCiKfXx8wE1AXl5eqjoUIIBYqJ3rick05KRRgAAakNYTKB2TahZAALGQagGoG/Ht2zdw34kcAOozff36FUyTAgACiCSHgspFkENBuRrUZyKnVwBigzyJXFwRAwACiCSHggp0UGEuJCREUdSLiIgQ7VEYAAggUkOUBRRt7969A1sEKwXw9ULRSwpQowTUjgWKkWQ3QACRpBgYmu9Onz7Ne+bMmZ8UFmfswKh/R4rdAAHEOFRGnAECaMiM5gEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAC8MDpHkUYVwQAAAABJRU5ErkJggg==","w8/tlcnumber.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACHUExURf///4iIiD8/P46OjqOjo52dnT4+PpycnKSkpIeHh6KiouDg4IqKio+Pj4yMjH5+fn19fYuLi1ZWVpmZmXp6epaWlomJicHBwUxMTJqamoODg3x8fG1tbURERI2NjZGRkWxsbJubm4aGhmBgYKGhoZCQkHR0dJ+fn6CgoHd3d2FhYYWFhf///1NaGcwAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAG3SURBVHjaYtAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBB2pWKCvLzMzHLMzMx8PHBBgADCrlSJAQ4k4YIAAYRdKSNCKStcECCAGFDsBFnJzCeIXSlAAMGVaiPbiaSUHa4UIIAYsNoJ4ohryXCjKAUIIOxKOYEkm5AsE4oDAAIIt1JRBgUmFFMBAghNKacUDzOzFLMAiM3GpIyiFCCAUJWKsEmDdYDdysDCxoHsAIAAQlHKxsQkAFPKwsbNwcSBbCpAAKEo5WBggytlEGJiEkHxFkAAobmViR+uFCMKAAIIrpQTolQaXSnCAQABhM1UbhlNhFJFuFKAAEIzFWwek6waNgcABBB6FID8zsTAwyfMwiLMosLCwaUKVwoQQFiUgn2P4koIAAggdAeAKQk2bixKAQIIrpRHg4OFhYWLH64SyZUQABBADJjpn4OJjYlNFNNUgABiICarQABAAOFRim4qQAChK+XErRQggNCV8qiDfcfFxcEljyYFEEAklC4AAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMAMOn4YmdrAldAAAAAElFTkSuQmCC","w8/tlctemplate.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACyUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKI4Pz//nICAgDQjI+MfEB9Prcby+fPnp319fUbUcihAAJHkUF5eXqmcnBwxHh4ehn///jEAHQyXgzkaJjZ79myq1s0AAUSSQ4GO+M3GxsbAysrK8PfvX4aJEydC0g8TZgr6+vWrSH19/VNqhTBAAJHkUFCogUIM5DAQBoVqcnIyA44QZgZSUtQKYYAAYiFVA8yhIMDMzMxArxAGCCCyHAoC3759o2sIAwQQyQ4FOQjkyMWLFzP8/v0bbwhj8yQMA9X+JsVegAAiOY2CwJ8/fxiAUQcPUVwhjA+AQpwUABBATKRGOyik+Pj4GKKiosAhhyuE8WFYqJICAAKIiZwQBQEpKSm4ZbhCGFv0kwsAAoiJnIyEDPCF8KVLl6jmUIAAIjtEiQlhkIORwffv38kOZYAAoihECYWwoaEhXPzLly8My5YtYzh//jzJ6RMEAAKIhYGKAD2EkcGvX78YXr16xfDp0yeyzAYIIBZyHIOr1YQtpJ48eQJOu2JiYgyhoaFgmhwAEECkNkrAUQhKg6BykFBZ+OPHD4b169czCAsLM0RGRjKoqKgwEGge4gQAAURqgc8KbOoxcHNzgx0JyuH4QpiFhYVBTk4O1DwkK10iA4AAIsmhwIbFM2Cxwwis/v6AHArM1eLAEGbGFcIgh/r4+FDsSBAACCCSHNrf34/S2qmpqXkBDC1xfCEMqv/JjW5kABBAFOV6QiGMrfUPbZCQ7HCAAKLIoYRCGD0jwqpYaHuAlRS7AAKIquUoegjjauaB7AUWW89IMRsggBiHyvgoQAANmX49QAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA09lh7Bw8AlsAAAAASUVORK5CYII=","w8/triple.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABdklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADGA6np8mFyQnJwcAMQC1HIPQADRJESBDkwAUuuBeD+yY0HiUDmSPQUQQEw0cuR8KPfC3LlzP6CJzweyDQh5Ch0ABBATDR25AOjIRBziF/B5ChsACCCmAXAkXnFcACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIIBISaPIjgmgpyNBACCACDoUaNkCIOWIZukBUCMCj2Oo6kgQAAggshvOuJpkQHEHWrgHIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA2mVFgTpYWXoAAAAASUVORK5CYII=","w8/undo.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEOElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCzEKPrF/EPoPccvXpavEP5fbvb3/G/5fkF4X1h4/qCqBwggRmJy1EuZ1+7PbH/IMX9iYGAE8v+xs76VnqF4nPsvdvUAAUSEoW+47wU+qHir8oONEeHBf3wvlaZpzRB6i00HQAChGfqT+RsHwx+OP5xQN/xjfsl3q+Re+nvhvwys/3m+/GH9x8TI8JvlFzAuuH8qr9CvFH+OaShAAKGF6VejZ2lPeMWXqu3kBofYG8lTy+7b/GFkZOD4K35DYjXzZ6bP/zg+2b+yeyfyhf1WNNN3rnzeX+iGAgQQmqGsXKwSL00fe/0s15nF8/eJzpWKx5Z/gL7m/Sp1WGqW0jbOX+xArz2/e5/9puV74R8sTwNfTOa6zowWhgABhGYo4zdmEQamj7yXullec7y+NvWV+ncWRgaxl8pdQreldvJD3SSxk53h/9m7GW/EP4rerRMqFEYLAoAAQjP0P8PfN9zsb0U/ch9YDeIxAkOS76NOpuIJ7hdscPcw/hXcrhb4a/Pn+B+sz1xfaqIbChBAWBL/P7Z/QMMgJjAyiD7WT1LbKvic7T9q/PLMEmDg+gxMw9zfxP4yopoAEEA4cxTrf+b/jAxsfyXXauzl+YUpz36LbzfHe6DPmP7yoidLgADCmqMYGf4x/AMnNsb/nNfZvmLN339YGZh/MwLVMn1GlwMIICwuZfrFAPY+UDnDX+bH+TctvzFjBBHzD8VPvD/5/gPV/eNFlwUIICb0iPrP9YfvP5gFdC3Db8aH2nsOXYn8jmbsH55Prq8tvggDA+gXK4ZLAQIIzdB/on+FvwvCLIAExR/Go4sPz/3KhmL5ny/8H9V/AjMu72O+ryxogQoQQGhhyrNT9jQPx3dRNK9KsL9nQCo8fvJ/cH/M+sroLyP3T8VOyYPoLgUIIEZi6/3fjKxQpX+Y33Q/enyt+p0w03/py3Z24h/R1QIEENGFNMzIX/zvZtxnuFnyUegfA997uX6+L5hqAQKIhbQy/Sf3+6QHn++Ev5L6z8DzU71Vcx0nljIVIIBIMvQv46e0+7LX4z8I/QdmC8U1mgv5PmFTBxBAJBj6h/lj8H2tO17vgR7n/CN1Vi8fexHNwAAQQESH6R/Gj0Z3pa/7v5JiYOD6o7bUOlDyLS61AAFEtKG/RB4r3ih/JwLyuNRZHawlPgwABBCR3v/KfcPmyqS34v+AlYjcbrME0bf4VAMEEFGG/mf8oHh1yhvx/wwcf2T2q7XiN5KBASCAiPL+P77vWhzvWf7zfZPfozJN4SQh9QABRFSO+sv8Vej3l+98vzlYGPmf8f0ipB4ggBhJaZ4jsip+ABBAjLRo8wMEEE0aaAABRBNDAQKIJoYCBBBNDAUIIJoYChBgAGNdaBuYWAS9AAAAAElFTkSuQmCC","w8/unknown.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZGRYguTk5MNgNR8IAbRD4A4cO7cuRcI1ZAAAcRCz1CBOnI/EAtAhRSgfEFCegECiImOjhRAcyQMCADlHAjpBwggeqZRAyyOhIELhDQDBBA9HfoBh3giMI1+IKQZIIBY6BDdBUihdgCIHdAcuYAYswACiJGU9igpuR7qyPto0V0IDVlQJjoAdOQBmAQhdwAEEE0cipRxDNCkHgAdp4hNDyF3AAQQrdJoAhZHUgQAAohWDsWVuxeSayBAAFE16qEFOsyh+9GkFwCjPRGXXkLuAAggFirmbuQ0CcrhIEfFQ/kHgY5soMQOgABioYEj4YU70HGO1EpLAAFEjTTajyPj6FMz0QMEEDUcqoBD/CI1HQoQQNRwKLbqD5RxJlDToQABxEJmmqyHRjfIkRuhbAVicje5ACCAyMlM6BkHVHcbQh36AdQIpkXBDBBALCSG5nwsGQcUwgrI9TYtAEAAkZpGEwaqzwQQQNTITBdoHZogABBApDp0ApaWuSM9QhQggEiu64HpFNQQtgdVi9Ac/oEaDiHkDoAAYhwqA7kAATRkBiAAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwAD8GHi1bWM0DwAAAABJRU5ErkJggg==","w8/up.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4RpDZKTk1UJuQEggFgGMpCADhQAUv1AvBGIb+NTCxBATAPoSAMgtR+IP8ydO3cDIfUAAcQ0QI5MgDqSAejIQmL0AAQQywBFNcihH4A4kFi9AAHEQueoXg/EClChQGBoPiBWP0AAMdHJkQVA6jySIxuBjjxAihkAAcRITPHDyMhISVTPB+IAJOEDQEc6Yism8QGAAGKhY1SDwANS0iUyAAggJjpFNQNSuvxAjpkAAcRCg1yNHtUwUAh05AVyzQYIIKqlURxRDQMbgI4MJFSV4wMAAcRE46gGAVAoJlJqB0AAsdAwqhmghXoiuekSGQAEEAuVczVV0yUyAAggJhpENQwsADpyAbUyKkAAsZAR1aBQdCCgFBSKhdQsUQACiOhcD3SkA9SRAgSUg9KjISn1ODG5HiCAWIgMSQdYs4wIkEiqI4kBAAFEVBqFNiCISW8TiGkEkwMAAoikAh8YsvOhbUlsAGtjg1pRDxBAJOV6oEMScYQsSY1gcgBAAJFcPOFwbCA1CnV8ACCAyCpH0RxLciOYHAAQQBT166GdNLq4AyCAGIfKiDNAAA2ZIR2AABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAAfb5aXw5jBkAAAAASUVORK5CYII=","w8/wiggly.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxEKuQkZGRapYmJyc3ACl7IP4AxI1z5sy5QEgPQACx0DtkgI4sAFL1SEICQOxISB9AALEMQCz6Q+kFUHojMZoAAmggHAqKZgcQnjt3riJIABj1BDUBBBAjsa0nStIoWpqcCMT7oVKOQMceIMYNAAHEQoc0mYCWJgPQQpcoABBATHROkwegbFDIJgJD8wOxhgAEED3S6EFoKAYAHSZIriEAAUSTNIolTa6HFUOgNImunhg3AAQQy2BNk+gAIICYBmuaRAcAAcRCyzQJxIqUOA4ZAAQQC5WiGz1NfoCmSQOkUKUIAAQQC43T5ANqRRNAAFEjjSogpckFaGmSag4FCCBqRP0HpJAEpclEWhTGAAHEQmGaBIFGWqRJdAAQQCxUSJMOtEiT6AAggJgoTJMTaJUm0QFAALFQIU0W0qMRCxBATGRE+wVoFMPSJF0AQACxkOBIUJTPRxN+QC+HAgQQ0SEKTX90S5PoACCAGIfKQC5AAA2ZAQiAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMACbRnicOR6zYgAAAABJRU5ErkJggg==","w8/zoombox.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAFBMVEW5ubmMjIzy8vL8/PyUlJTFxcWcnJz4+Pjp6en+/v6AgIDd3d3q6ur9/f2BgYH7+/v19fWEhIQAAAD///////8VFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+nAyXOAAAAFXRSTlP//////////////////////////wAr2X3qAAABaUlEQVR42mIQIRoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIHSlDGyCgmzY9QMEEKooiyAUsGBRChBAyEoZBAUZWUEMVkZBQUyTAQKIAUUlAzY2DAAEEJKAoCAHgsMhKIiuFCCAGJDciWIOA4Z7AQIIIS3IiCrDiG4sQAAhuQ7oIyE4APoN3bUAAQTnsoEMERKGAiGQNWyoSgECiAHhKQylaC4ACCAcSoWxKAUIIBwO4MPiAIAAwuotYS4uLkxvAQQQjsDiAgUWD6pSgAAiIQoAAoiEiAUIINzJRZCbG1UpQADhSoQioFSLGtUAAYQzaXNjqAUIIJwZBqwURS1AAOHOhozoagECCE+ORVcLEED4Mjcjao4ECCC85QBELYwHEED4iwyQWlYYByCACJQuLAiVIgABREJBBBBAJCgFCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQgwAC7qoMIKTGpjAAAAABJRU5ErkJggg==","w8/zoomin.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMXSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKvx9evX/8+fP8/w+PFjhhcvXoDFJCQkGGRlZRkMDAwYxMTEGKnpUIAAYiS1wP/8+XPDokWL6j98+IBXnYCAAENcXFwjLy9vAzUcChBAJDl0165d/0+fPg1mc3BwMFhZWTHo6OjAHQPyxOXLl+uPHz/O8OPHD7A6U1NTBjc3N4pDFyCAiHYosiOhlq8HMoNwKF8HVB8IU29iYsLg7u5OkWMBAoiJ2OiGWZqamgoLoSA8WoJAakBqQeDMmTNgMyhxKEAAEeVQUJqEhSS2TNLa2vofhNHFQWpBoYlsBrkAIICYiMndoIwDSpPQ6CYJAKN8PUgvyAyQWeQ6FCCACDoUVASBgKWlJQOB6MaZDECZDtkscgBAABF0KKicBAFdXd1Gci0BlQzIZpEDAAKIYIEPK8yRy0Ns6RGbeHV1NSOS3nqYWeQAgAAaMlUoQAARDFFQtQgKCVDxAgtVWEihhyS6OHLxBjOLXAAQQARDFFR3gwCoxiHXEphemFnkAIAAIuhQQ0NDMA2qFkE1Dhl2rIPqhZtFDgAIIIIOFRUVZQQ1MEB1N6haJNUCkB6QXpAZILPIdShAABFV14PS2KRJk+phVSixTThQAT9r1iwwOy8vj6KWFEAAEZXrQRaAqk8QmD17NriBQiAZgBolcEdCHV1/7949YLj8J8uxAAFEUTMPVFuBKgJ8zTx0ANJXUFCgz8zMfIkUhwIEEM0bzqCQXL58OcWOBQggRnKHdF69egXuijx58gRvVwQU3egOJcexAAHESOuxJ1Ca7Ovrq8eWFEhxLEAAMdJjkOzv3796EyZMuEiJYwECiJFeo3n4HAtKz9nZ2XiLPIAAolujBBRioJADhSA6IJQxQQAggOjaesLlWEdHR4J6AQKIcSAGckHJYMaMGRdBIQlyJLAHQLCmAwggxqEy4gwQQEOm4QwQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYABfVmpFagI9FgAAAABJRU5ErkJggg==","w8/zoomout.png":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADOElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQXRz65s0bXkrNAAggujhURETkM4z97ds3Y3LMAAggxoHKTEAHK3BxcT0gVj1AAA1YGoU58ubNmxLEqAcIIMbBUDwBQ5cV6PDf+NQABBDZDn39+vX/8+fPMzx+/JjhxYsXYDEJCQkGWVlZBgMDAwYxMTFGEh3LDHTsX1zyAAFEskM/f/78f9GiRQwfPnzAq05AQIAhLi6OgZeXl6CDv3z5Ys7Dw3MS6FheoGM/Y1MDEEAkOXTXrl3/T58+DWZzcHAwWFpaMujq6jKwsbGBxX79+sVw+fJlhuPHjzP8+PEDLGZqasrg5ubGSGnyAAggoh2K7Eio5WD9OJT/B6pnQFNPkWMBAoiJ2OiGWZqamgqzFJ/FjCA1ILUgANILMoMShwIEEFEOBaVJWMiQkklAakF6kM0gFwAEEBMxuRuUcUBpEhrdJAGQHpBekBkgs8h1KEAAEXQoqAgCAVDGIRDdOJMBVC/cLHIAQAARdCionAQBUO4mF8D0wswiBwAEEAshBbDCHFYEgUBraytRUVhdXc2IrBdmFjkAIICGTHsUIIAIhiioWgSFBKgwZ2dnRwkpYgFIL8wscgFAABEMUVDdDQKgGodcANMLM4scABBABB0KamCAAKhaBNU4ZNjxH6qXwdDQkGyHAgQQQYeCCm1QAwNUd4OqRVIBSA9IL8gMUVFRsqtRgAAiKjOBWkGwqvDVq1dEhypILazqhZlBLgAIIKIcCmqqwarC2bNngxsoBJIBqFHyH6QWqYZjuHfv3v//ZDaAAQKI5s08dADSV1BQwMDMzExSMgAIIJo3nEEhuXz5coodCxBAZHdFQOnvwoULBLsioOhGdyg5jgUIIJp37kBpsq+vD2tSIMWxAAFE8yqUEQhAjgE5Ch2AHD9hwgSGv3//EgwtgACiS10PCjF8jp0xYwZBMwACiG6NEnyOJZQxQQAggOjaesLlWEdHR4J6AQJoQEZKQGkSFN2gkAQ50srKimBmAgggxqEy4gwQQEOm4QwQQAPu0G/fvhEVpQABNGSiHiCAhkzUAwTQkHEoQAANGYcCBNCQcShAgAEA6phqKE8YIKYAAAAASUVORK5CYII="}},4648:()=>{"undefined"==typeof __JSDraw2_TouchMol&&(dojo.require("dijit.layout.AccordionContainer"),dojo.require("dijit.layout.ContentPane")),scil.Accordion=scil.extend(scil._base,{constructor:function(A,g){this.T="FORM.ACCORDION",scil.Accordion.addStylesheet(),"string"==typeof A&&(A=scil.byId(A)),this.options=null==g?{}:g;var C="";this.options.width>0&&(C+="width:"+this.options.width+"px;"),this.options.height>0&&(C+="height:"+this.options.height+"px;"),this.container=new dijit.layout.AccordionContainer({style:C},A);for(var I=0;I{scil.App={imgSmall:function(A,g){var C="small/"+A;return g&&(C="url("+C+")"),C}}},1980:()=>{scil.AutoComplete=scil.extend(scilligence._base,{constructor:function(A,g,C,I){this.input=null,this.auto=null,this.url=g,this.sugid=0,this.disabled=!1,this.options=null==C?{}:C,this.form=I;var t=this;this.input="string"==typeof A?document.getElementById(A):A,"INPUT"==this.input.tagName&&(scil.connect(this.input,"onkeyup",(function(A){t.keydown(A)})),this.auto=scil.Utils.createElement(document.body,"div",null,{display:"none",backgroundColor:"white",border:"solid 1px gray",position:"absolute"}),scil.connect(document.body,"onmousedown",(function(A){var g=A.srcElement||A.target;g==t.q||scil.Utils.isChildOf(g,t.auto)||t.clickout()})),this.options.listedonly&&scil.connect(this.input,"onblur",(function(A){t.validateList()}))),scil.AutoComplete._all.push(this)},validateList:function(){var A=this.input.value;(null==this.items||scil.Utils.indexOf(this.items,A)<0)&&(this.input.value="")},isVisible:function(){return null!=this.auto&&""==this.auto.style.display},hide:function(){null!=this.auto&&(this.auto.style.display="none")},keydown:function(A){if(!this.disabled&&null!=this.input&&null!=this.url&&""!=this.url)if(this.input.value.length<1||27==A.keyCode||A.ctrlKey||A.metaKey)this.auto.style.display="none";else if(this.isVisible()||13!=A.keyCode)if(38!=A.keyCode&&40!=A.keyCode&&13!=A.keyCode){var g=++this.sugid;if(scil.Utils.startswith(this.url,"data:")){var C=this.filterlist(this.url.substr(5).split(","),this.input.value);this.list(C,g)}else if(scil.Utils.startswith(this.url,"javascript:")){var I=this.url.substr(11),t=(scil.Utils.eval(I),fun(this));C=this.filterlist(t,this.input.value);this.list(C,g)}else{var e=this,i={q:this.input.value};null!=this.options.onsuggest&&this.options.onsuggest(i,this.form,this),scil.Utils.jsonp(this.url,(function(A){e.list(null==A.items?A:A.items,g)}),i)}}else this.highlight(A)},filterlist:function(A,g){var C=[];if(null!=g&&""!=g&&null!=A){g=g.toLowerCase();for(var I=0;I=0&&C.push(scil.Utils.trim(A[I]))}return C},isParentHidden:function(A){for(var g=A;null!=g&&null!=g.style;){if("none"==g.style.display||"hidden"==g.style.visibility)return!0;g=g.parentNode}return!1},list:function(A,g){if(null==A||0==A.length||g!=this.sugid||this.isParentHidden(this.input))return this.items=null,void(this.auto.style.display="none");if(""!=this.auto.style.display){var C=scilligence.Utils.getOffset(this.input),I=scilligence.Utils.scrollOffset(),t=scil.Utils.getZindex(this.input)+1;if(scil.Utils.isIE){var e=JsUtils.getScrollOffset(this.e);I.offset(-e.x,-e.y)}var i=this.input.offsetWidth;this.options.minautowidth>0&&this.options.minautowidth>i&&(i=this.options.minautowidth),i<100&&(i=100);var l=scil.Utils.isFixedPosition(this.input)?"fixed":"absolute";dojo.style(this.auto,{zIndex:t,position:l,display:"",width:i-2+"px",left:C.x+I.x+"px",top:C.y+I.y+this.input.offsetHeight+"px"})}this.items=A,scilligence.Utils.removeAll(this.auto);for(var s=this,o=0;o=g.length&&(t=0),A.preventDefault()),null!=t&&t!=C&&(null!=C&&this._hilitItem(g[C],!1),this._hilitItem(g[t],!0))}else null!=C&&this.clickItem(g[C])}else this.hide()},mouseover:function(A){this._hilitItem(A.srcElement||A.target,!0)},mouseout:function(A){this._hilitItem(A.srcElement||A.target,!1)},_hilitItem:function(A,g){g?(A.style.backgroundColor="#ddf",A.setAttribute("sel","1")):(A.style.backgroundColor="white",A.removeAttribute("sel"))},getItemValue:function(A){var g=unescape(A.innerHTML);return" "==g&&(g=""),g},click:function(A){var g=A.srcElement||A.target;this.clickItem(g)},clickItem:function(A){var g=this.getItemValue(A);null!=this.options.onSetValue?this.options.onSetValue(this.input,g):"unit"==this.options.overwrite?this.input.value=this.changeUnit(this.input.value,g):0==this.options.overwrite?this.input.value+=g:this.input.value=g,this.hide(),this.options.overwrite&&this.input.select(),this.input.focus(),null!=this.options.onclickitem&&this.options.onclickitem(g),scil.Utils.fireEvent(this.input,"change",!1,!0)},clickout:function(A){""==this.auto.style.display&&(this.auto.style.display="none")}}),scil.apply(scil.AutoComplete,{_all:[],hideAll:function(){for(var A=0;A{"undefined"==typeof __JSDraw2_TouchMol&&(dojo.require("dojox.charting.Chart"),dojo.require("dojox.charting.plot2d.Areas"),dojo.require("dojox.charting.plot2d.StackedAreas"),dojo.require("dojox.charting.plot2d.Bars"),dojo.require("dojox.charting.plot2d.ClusteredBars"),dojo.require("dojox.charting.plot2d.Columns"),dojo.require("dojox.charting.plot2d.ClusteredColumns"),dojo.require("dojox.charting.plot2d.StackedColumns"),dojo.require("dojox.charting.plot2d.Lines"),dojo.require("dojox.charting.plot2d.StackedLines"),dojo.require("dojox.charting.plot2d.Markers"),dojo.require("dojox.charting.plot2d.MarkersOnly"),dojo.require("dojox.charting.plot2d.Pie"),dojo.require("dojox.charting.plot2d.Scatter"),dojo.require("dojox.charting.plot2d.Grid"),dojo.require("dojox.charting.plot2d.Spider"),dojo.require("dojox.charting.plot2d.Bubble"),dojo.require("dojox.charting.axis2d.Default"),dojo.require("dojox.charting.action2d.Highlight"),dojo.require("dojox.charting.action2d.Tooltip"),dojo.require("dojox.charting.action2d.MoveSlice"),dojo.require("dojox.charting.action2d.Magnify"),dojo.require("dojox.charting.widget.Legend"),dojo.require("dojox.charting.themes.Claro")),scil.Chart=scil.extend(scil._base,{constructor:function(A,g){this.T="CHART",scil.Chart.addStylesheet(),"string"==typeof A&&(A=scil.byId(A)),this.parent=A,this.loadData(g)},loadData:function(A){this.options=null==A?{}:A,null!=this.options.series?this.render():this.loadDataFromUrl(null==this.options.ajax?null:this.options.ajax.url)},loadDataFromUrl:function(A){if(scil.Utils.isNullOrEmpty(A))return!1;this.options.series=null;var g=this;scil.Utils.jsonp(A,(function(A){if(null!=A&&null!=A.length&&0!=A.length){if("object"!=typeof A[0])g.options.series=[{data:A}];else{var C=[];for(var I in A[0])C.push(I);for(var t=C[0],e=[],i=0;i"+this.parent.innerHTML+"";scil.Utils.post(JSDrawServices.url+"?cmd=html2image",{html:A,css:scil.Chart.getCss(),width:this.parent.offsetWidth})}else scil.Utils.alert("JSDraw web service is not available")},render:function(){scil.Utils.removeAll(this.parent);var A=null;switch(this.options.type){case"column":A=dojox.charting.plot2d.Columns;break;case"clusteredcolumn":A=dojox.charting.plot2d.ClusteredColumns;break;case"stackedcolumn":A=dojox.charting.plot2d.StackedColumns;break;case"bar":A=dojox.charting.plot2d.Bars;break;case"clusteredbar":A=dojox.charting.plot2d.ClusteredBars;break;case"line":A=dojox.charting.plot2d.Lines;break;case"stackedline":A=dojox.charting.plot2d.StackedLines;break;case"area":A=dojox.charting.plot2d.Areas;break;case"stackedarea":A=dojox.charting.plot2d.StackedAreas;break;case"scatter":A=dojox.charting.plot2d.Scatter;break;case"grid":A=dojox.charting.plot2d.Grid;break;case"spider":A=dojox.charting.plot2d.Spider;break;case"bubble":A=dojox.charting.plot2d.Bubble;break;case"pie":A=dojox.charting.plot2d.Pie,this.options.radius>0||(this.options.radius=100)}scil.Utils.isNullOrEmpty(this.options.title)||scil.Utils.createElement(this.parent,"h3",scil.Lang.res(this.options.title),{margin:0,textAlign:"center",fontSize:this.options.titlesize>0?this.options.titlesize+"px":null});var g=scil.Utils.createElement(this.parent,"div");this.options.width>0&&(this.parent.style.width=this.options.width+"px"),this.options.height>0&&(g.style.height=this.options.height+"px");var C=new dojox.charting.Chart(g);null!=this.options.theme?C.setTheme(dojox.charting.themes[this.options.theme]):C.setTheme(dojox.charting.themes.Claro),null==this.options.fontcolor&&(this.options.fontcolor="blue");var I={type:A,markers:!0,gap:this.options.gap>0?this.options.gap:5,radius:this.options.radius>0?this.options.radius:null,htmlLabels:!0,fontColor:this.options.fontcolor,labelWiring:this.options.fontcolor,animate:this.options.animate};if(this.options.linewidth>0&&(I.stroke={width:this.options.linewidth}),null!=this.options.labelstyle&&(I.labelStyle=this.options.labelstyle),0!=this.options.shadow&&(I.shadow={dx:2,dy:2,width:2,color:[0,0,0,.3]}),C.addPlot("default",I),null!=this.options.plots)for(var t in this.options.plots)C.addPlot(t,this.options.plots[t]);var e={},i={vertical:!0,fixLower:"major",fixUpper:"major"};null!=this.options.xmin&&(e.min=this.options.xmin),null!=this.options.xmax&&(e.max=this.options.xmax),null!=this.options.xtitle&&(e.title=this.options.xtitle,e.titleOrientation="away",e.titleGap=1),null!=this.options.ymin&&(i.min=this.options.ymin),null!=this.options.ymax&&(i.max=this.options.ymax),null!=this.options.ytitle&&(i.title=scil.Lang.res(this.options.ytitle),i.titleGap=5);var l=this.options.series,s=this.options.xlabels;if(null!=l[0].data&&null==l[0].data.length){s=[];var o=[],n=l[0].data;for(var t in n)s.push(t),o.push(n[t]);for(var r=[],a=0;a0){o=[],n=l[a].data;for(t=0;t0&&(n=Math.round(n/e*1e3)/10+"%"),n=C[i]+" ("+n+")",r=C[i]),s.push({x:i+1,y:o,text:r,tooltip:n})}return s}}),scil.apply(scil.Chart,{stylesheetAdded:!1,addStylesheet:function(){this.stylesheetAdded||(this.stylesheetAdded=!0,scil.Utils.addCss(this.getCss()))},getCss:function(){return".dijitTooltip { position: absolute; z-index: 2000; display: block; left: 0; overflow: visible; }\r\n.dijitTooltipContainer { border: solid #aaf 1px; background: #fff; color: blue; padding: 2px; border-radius: 3px; }\r\n.dijitTooltipConnector { position: absolute; }\r\n.dojoxLegendIcon { float: left; }\r\n"}})},5608:()=>{scil.Clipboard={copy:function(A){if(scil.Utils.isNullOrEmpty(A))return!1;var g=scil.Utils.createElement(document.body,"textarea",null,{position:"fixed",top:0,left:0,width:"2px",height:"2px",padding:0,border:"none",outline:"none",boxShadow:"none",background:"transparent"});g.value=A,g.select();var C=!1;try{C=document.execCommand("copy")}catch(A){}return document.body.removeChild(g),C}}},9078:()=>{scil.ContextMenu=scil.extend(scil._base,{constructor:function(A,g,C,I,t){this.T="CONTEXT_MENU",this.document=null==I?document:I,this.tbody=null,this.callback=g,this.submenus={},this.items=A,this.cur=null,this.parentMenu=C,this.obj=null,this.lang=null!=t?t:scil.Lang},isFrom:function(A){if(null==this.tbody)return!1;if(scil.Utils.isChildOf(A,this.tbody.parentNode))return!0;for(var g in this.submenus)if(this.submenus[g].isFrom(A))return!0;return!1},show:function(A,g,C,I,t){this.hide(),this._create(I),this.obj=C;var e=scil.Utils.getMaxZindex(),i=this.tbody.parentNode;i.style.display="",i.style.zIndex=e>0?e+1:100,scil.Utils.moveToScreen(A,g,i,t)},hide:function(A){if(null==this.tbody||"none"==this.tbody.parentNode.style.display)return!1;for(var g in this.tbody.parentNode.style.display="none",this.submenus)this.submenus[g].hide();return this.setCur(null),A&&null!=this.parentMenu&&this.parentMenu.hide(A),!0},isVisible:function(){return null!=this.tbody&&"none"!=this.tbody.parentNode.style.display},_create:function(A){if(null!=A&&(this.items=A),null==this.tbody){var g=this;this.tbody=scil.Utils.createTable(this.document.body,0,0,{position:"absolute",display:"none",backgroundColor:"#eee",color:"#000",border:"solid 1px #ddd"}),this.tbody.setAttribute("jspopupmenu","1"),dojo.connect(this.tbody.parentNode,"onmousedown",(function(A){2!=A.button&&g.click(A)})),dojo.connect(this.tbody.parentNode,"onmouseover",(function(A){g.hilit(A)})),dojo.connect(this.document.body,"onmousedown",(function(A){g.clickOut(A)})),this._createItems()}else null!=A&&this._createItems()},_createItems:function(){scil.Utils.removeAll(this.tbody);for(var A=0;A",{padding:"0 2px 0 2px"}).colSpan=3}else{"string"==typeof g&&(g={caption:g}),null==g.key&&(g.key=g.caption);var I=null!=g.children&&g.children.length>0,t=null==g.bg?"#eee":g.bg;C=scil.Utils.createElement(this.tbody,"tr",null,{backgroundColor:t},g.disabled?null:{menukey:g.key});scil.Utils.createElement(C,"td",g.checked?"✔":null,{textAlign:"center",width:"20px",backgroundColor:"#f5f5f5"});var e={padding:"1px 3px 1px 3px",color:g.disabled?"gray":""},i=g.nottranslate?g.caption:this.lang.res(g.caption);null!=g.icon&&(i=""+i),scil.Utils.createElement(C,"td",i,e),e.fontSize="75%",e.paddingLeft="10px",scil.Utils.createElement(C,"td",null==g.shortcut?"":g.shortcut,e),scil.Utils.createElement(C,"td",I?"›":null,{textAlign:"right",width:"30px",paddingRight:"5px"}),I?this.submenus[g.key]=new scil.ContextMenu(g.children,null==g.callback?this.callback:g.callback,this,this.document):delete this.submenus[g.key]}}},hilit:function(A){var g=scil.Utils.getParent(A.srcElement||A.target,"TR");null!=g&&null!=g.getAttribute("menukey")&&this.setCur(g)},setCur:function(A){var g;null!=this.cur&&(this.cur.childNodes[0].style.backgroundColor="#f5f5f5",this.cur.childNodes[1].style.backgroundColor="",this.cur.childNodes[2].style.backgroundColor="",this.cur.childNodes[3].style.backgroundColor="",null!=(g=this.submenus[this.cur.getAttribute("menukey")])&&g.hide());if((this.cur=A,null!=A)&&(A.childNodes[0].style.backgroundColor="#aaf",A.childNodes[1].style.backgroundColor="#aaf",A.childNodes[2].style.backgroundColor="#aaf",A.childNodes[3].style.backgroundColor="#aaf",null!=(g=null==A?null:this.submenus[A.getAttribute("menukey")]))){var C=scil.Utils.getOffset(A.childNodes[3],!1),I=scil.Utils.getOffset(A.childNodes[0],!1);g.show(C.x+A.childNodes[3].offsetWidth+1,C.y,null,null,I.x)}},getCallbackObj:function(){return null==this.parentMenu?this.obj:this.parentMenu.getCallbackObj()},click:function(A){var g=scil.Utils.getParent(A.srcElement||A.target,"TR"),C=null==g?null:g.getAttribute("menukey");null==this.submenus[C]&&(null!=C&&null!=this.callback&&this.callback(C,this.getCallbackObj(),""!=g.childNodes[0].innerHTML),this.hide(!0),A.preventDefault())},clickOut:function(A){var g=scil.Utils.getParent(A.srcElement||A.target,"TBODY");null!=g&&"1"==g.getAttribute("jspopupmenu")||this.hide()}}),scil.apply(scil.ContextMenu,{isFromContextMenu:function(A){var g=scil.Utils.getParent(A,"TBODY");return null!=g&&"1"==g.getAttribute("jspopupmenu")}}),JSDraw2.ContextMenu=scil.ContextMenu},388:()=>{scil.Dialog=scil.extend(scil._base,{constructor:function(A,g,C){this.T="DIALOG",this.options=null==C?{}:C,this.lang=null==this.options.lang?scil.Lang:this.options.lang,this.id=this.options.id,null!=this.id&&""!=this.id||(null==scil.Dialog._idincrease&&(scil.Dialog._idincrease=0),this.id="__jsdialog"+ ++scil.Dialog._idincrease),null==scil.Dialog._allitems&&(scil.Dialog._allitems={}),scil.Dialog._allitems[this.id]=this,this.parentWindow=null==this.options.parentWindow?window:this.options.parentWindow,this.body=g,this.title=A,this.WRAPPER="content",this.dialog=null,this.dialogmask=null,this.movingSt=null},isVisible:function(){return null!=this.dialog&&"none"!=this.dialog.style.display},isFrom:function(A){return!!this.isVisible()&&scil.Utils.isChildOf(A,this.dialog)},show2:function(A){null==A&&(A={}),this.show(A.title,A.zindex,A.modal,A.immediately,A.owner)},show:function(A,g,C,I,t){if(this.owner=t,this.isVisible())null!=A&&null!=this.dialog.titleElement&&(this.dialog.titleElement.innerHTML=this.lang.res(A));else{null==C&&(C=!0),scil.Dialog.kTimer>0||(I=!0),this._create(),this.movingSt=null,null!=A&&null!=this.dialog.titleElement&&this.setTitle(A);var e=scil.Utils.getMaxZindex();JSDraw2.defaultoptions.minDlgZindex>0&&e0&&(this.dialogmask.style.zIndex=i+1,this.dialog.style.zIndex=i+2),C||(this.dialog.style.zIndex=i+1,this.dialogmask.style.display="none"),this.dialog.style.borderColor=C?"#fff":JSDraw2.Skin.dialog.bkcolor,scilligence.Utils.isTouch||I?dojo.style(this.dialog,{display:"",opacity:1,filter:"alpha(opacity=100)"}):(dojo.style(this.dialog,{display:"",opacity:0,filter:"alpha(opacity=0)"}),this.dialog.timer=setInterval("scil.Dialog.get('"+this.id+"').fade(1)",scil.Dialog.kTimer)),this.moveCenter(),scil.Dialog.stack.push(this),this._scilform&&null!=this.form&&null!=this.form.fields&&this.form.focus()}},setTitle:function(A){this.dialog.titleElement.innerHTML=this.lang.res(A)},moveCenter:function(){var A=dojo.window.getBox(),g=A.w,C=A.h,I=A.l,t=A.t,e=this.dialog.offsetWidth,i=this.dialog.offsetHeight,l=Math.round(t+(C-i)/2),s=Math.round(I+(g-e)/2);dojo.style(this.dialog,{top:Math.max(t,l)+"px",left:Math.max(I,s)+"px"}),this.scroll(),this.updateWidth()},_create:function(){if(null==this.dialog){var A,g,C=this,I=this.parentWindow.document.body,t=scilligence.Utils.createTable(I,0,0,{position:"absolute",borderRadius:"3px",width:l,height:s,zIndex:200,backgroundColor:JSDraw2.Skin.dialog.bkcolor,border:JSDraw2.Skin.dialog.border});this.dialog=t.parentNode,this.dialog.setAttribute("__scilligence_dlg",this.id);var e="0";if(this.options.notitle)e="5px";else{if(A=scilligence.Utils.createElement(t,"tr",null,{height:"30px"}),g=scilligence.Utils.createElement(A,"td",this.lang.res(this.title),{paddingLeft:"5px",fontWeight:"bold",color:null==scil.App||null==scil.App.config?"":scil.App.config.text}),this.dialog.titleElement=g,g=scilligence.Utils.createElement(A,"td",null,{textAlign:"right",verticalAlign:"top"}),!this.options.noclose){var i=scilligence.Utils.createElement(g,"img",null,{cursor:"pointer",marginRight:"5px"},{title:JSDraw2.Language.res("Close"),src:scil.Utils.imgSrc("img/dlgclose.jpg")});dojo.connect(scilligence.Utils.isIpad?g:i,"onclick",(function(A){C.hide(),A.preventDefault()}))}0!=this.options.movable&&(scilligence.Utils.isTouch?(dojo.connect(A,"ontouchstart",(function(A){1==A.touches.length&&C.startMove(A.touches[0])})),dojo.connect(I,"ontouchmove",(function(A){if(1==A.touches.length&&C.move(A.touches[0]))return A.preventDefault(),!1})),dojo.connect(I,"ontouchend",(function(){C.endMove()}))):(A.style.cursor="move",dojo.connect(A,"onmousedown",(function(A){C.startMove(A)})),dojo.connect(I,"onmousemove",(function(A){C.move(A)})),dojo.connect(I,"onmouseup",(function(){C.endMove()}))))}A=scil.Utils.createElement(t,"tr"),(g=scil.Utils.createElement(A,"td",null,{padding:e+" 5px 5px 5px"})).colSpan=2;var l=this.options.width,s=this.options.height,o={background:"#fff",padding:"5px"};(l>0||s>0)&&scil.apply(o,{width:l>0?l:null,height:s>0?s:null,overflow:"scroll"}),null!=this.options.bodystyle&&scil.apply(o,this.options.bodystyle);var n=scil.Utils.createElement(g,"div",null,o);"string"==typeof this.body?n.innerHTML="
"+this.body+"
":n.appendChild(this.body);var r=this.options.opacity>0?this.options.opacity:75;this.dialogmask=scilligence.Utils.createElement(I,"div",null,{position:"absolute",top:"0",left:"0",minHeight:"100%",height:"100%",width:"100%",background:"#999",opacity:r/100,filter:"alpha(opacity="+r+")",zIndex:199}),dojo.connect(window,"onresize",(function(){C.resize()})),dojo.connect(window,"onscroll",(function(){C.scroll()})),this.options.fixtransparentissue&&"silverlight"==dojox.gfx.renderer&&(this.dialogmask.style.backgroundColor="white",this.dialogmask.style.opacity="1.0",this.dialogmask.style.filter="alpha(opacity=100)")}},scroll:function(){if(this.isVisible()&&null!=this.dialogmask&&"none"!=this.dialogmask.style.display){var A=dojo.window.getBox(),g=Math.max(A.w+A.l,this.dialog.offsetLeft+this.dialog.offsetWidth),C=Math.max(A.h+A.t,this.dialog.offsetTop+this.dialog.offsetHeight);this.dialogmask.offsetWidth<=g&&(this.dialogmask.style.width=g+"px"),this.dialogmask.offsetHeight<=C&&(this.dialogmask.style.height=C+"px")}},resize:function(){this.scroll()},moveTo:function(A,g){scil.Utils.moveToScreen(A,g,this.dialog)},startMove:function(A){this.movingSt=null,"IMG"!=(A.srcElement||A.target).tagName&&(this.movingSt=new JSDraw2.Point(A.clientX,A.clientY))},move:function(A){if(null==this.movingSt||1!=(A.which||A.button))return!1;var g=new JSDraw2.Point(A.clientX-this.movingSt.x,A.clientY-this.movingSt.y),C=scilligence.Utils.parsePixel(this.dialog.style.top)+g.y,I=scilligence.Utils.parsePixel(this.dialog.style.left)+g.x;return this.moveTo(I,C),this.movingSt=new JSDraw2.Point(A.clientX,A.clientY),!0},endMove:function(){this.movingSt=null},updateWidth:function(A){this.dialog.style.width=this.dialog.firstChild.firstChild.offsetWidth+2+"px"},hide:function(A){null!=this.options.onhide&&this.options.onhide(),scil.Dialog.kTimer>0||(A=!0),A||scilligence.Utils.isTouch?this.close():null!=this.dialog&&(clearInterval(this.dialog.timer),this.dialog.timer=setInterval("scil.Dialog.get('"+this.id+"').fade(0)",scil.Dialog.kTimer)),scil.Dialog.stack.pop(),scil.AutoComplete.hideAll()},close:function(){null!=this.dialog&&(clearInterval(this.dialog.timer),this.dialog.timer=null,this.dialog.style.display="none",this.dialogmask.style.display="none",this.dialogmask.style.width="0px",this.dialogmask.style.height="0px")},fade:function(A){null==A&&(A=1);var g=1==A?this.dialog.alpha+scil.Dialog.kSpeed:this.dialog.alpha-scil.Dialog.kSpeed;this.dialog.alpha=g,dojo.style(this.dialog,{opacity:g/100,filter:"alpha(opacity="+g+")"}),g>=99?(clearInterval(this.dialog.timer),this.dialog.timer=null):g<=1&&this.close()}}),scil.apply(scil.Dialog,{stack:[],kTimer:10,kSpeed:40,keydown:function(A){27==A.keyCode&&this.stack.length>0&&this.stack[this.stack.length-1].hide()},get:function(A){return null==scil.Dialog._allitems&&(scil.Dialog._allitems={}),scil.Dialog._allitems[A]},getDialog:function(A){for(;null!=A;){var g=scil.Utils.getParent(A,"TABLE");if(null==g)return null;var C=g.getAttribute("__scilligence_dlg");if(null!=C)return this.get(C);A=g.parentNode}return null}}),scil.onload((function(){dojo.connect(document.body,"onkeydown",(function(A){scil.Dialog.keydown(A)}))})),JsDialog=JSDraw2.Dialog=scil.Dialog},4580:()=>{scil.DnD=scil.extend(scil._base,{constructor:function(A,g){this.T="DND",this.src=null,this.copy=null,this.dragging=!1,this.disabled=!1,this.options=g,"string"==typeof A&&(A=scil.byId(A));var C=this;dojo.connect(A,"onmousedown",(function(A){C.disabled||C.mousedown(A)})),dojo.connect(document.body,"onmousemove",(function(A){C.disabled||C.mousemove(A)})),dojo.connect(document.body,"onmouseup",(function(A){C.disabled||C.mouseup(A)}))},isDragging:function(){return this.dragging},cancel:function(){null!=this.src&&null!=this.options.oncancel&&this.options.oncancel(this),this.src=null,this.copy=null,this.dragging=!1},mousedown:function(A,g){null!=this.options.onstartdrag&&(this.src=this.options.onstartdrag(A,this),this.startpos={x:A.clientX,y:A.clientY})},mousemove:function(A){if(null!=this.src){if(null==this.copy&&(Math.abs(A.clientX-this.startpos.x)>10||Math.abs(A.clientY-this.startpos.y)>10)&&null!=this.options.oncreatecopy&&(this.copy=this.options.oncreatecopy(A,this)),null!=this.copy){var g=scil.Utils.scrollOffset();this.copy.style.left=A.clientX+g.x+2+"px",this.copy.style.top=A.clientY+g.y+2+"px",this.dragging=!0}null!=this.options.ondragover&&this.options.ondragover(A,this)}},mouseup:function(A){null!=this.src&&null!=this.options.ondrop&&this.options.ondrop(A,this),this.src=null,this.copy=null,this.dragging=!1}})},5069:()=>{scilligence.DropdownButton=scilligence.extend(scilligence._base,{constructor:function(A,g){this.T="DROPDOWN_BUTTON",this.auto=null,this.options=null==g?{}:g;var C=this;this.button="string"==typeof A?document.getElementById(A):A,dojo.connect(this.button,"onclick",(function(){C.show()}));var I=null==this.options.dropdown?"▼":this.options.dropdown;if("TABLE"==this.button.tagName){var t=this.button.getElementsByTagName("TD"),e=t[t.length-1];scil.Utils.createElement(e,"span",I)}else this.options.expandright,scil.Utils.createElement(this.button,"span",I,{fontSize:"70%"})},isVisible:function(){return null!=this.auto&&""==this.auto.style.display},show:function(){if(null!=this.options.onshowdropdown&&this.options.onshowdropdown(this),null==this.auto){var A=this,g=this.options.width;!(g>0)&&scil.Utils.isIE&&scil.Utils.isIE<=8&&(g=200);var C=scil.Utils.isFixedPosition(this.button)?"fixed":"absolute",I=scil.Utils.createTable(document.body,0,1,{borderRadius:"2px",border:JSDraw2.Skin.dialog.border,backgroundColor:JSDraw2.Skin.dialog.bkcolor,display:"none",position:C,width:g});this.auto=I.parentNode;var t=JsUtils.createElement(JsUtils.createElement(I,"tr"),"td",null,{padding:"5px"});this.area=scil.Utils.createElement(t,"div",null,{backgroundColor:"#fff"}),dojo.connect(document.body,"onmousedown",(function(g){var C=g.srcElement||g.target;C==A.q||scil.Utils.isChildOf(C,A.auto)||A.clickout()})),this.list(this.options.items)}this.auto.style.display="",this.position()},hide:function(){null!=this.auto&&(this.auto.style.display="none")},position:function(){var A,g,C=scilligence.Utils.getOffset(this.button),I=scilligence.Utils.scrollOffset(),t=scil.Utils.getZindex(this.button)+1;if(scil.Utils.isIE){var e=JsUtils.getScrollOffset(this.e);I.offset(-e.x,-e.y)}this.options.expandright?(A=C.x+I.x+this.button.offsetWidth,g=C.y+I.y):(A=C.x+I.x,g=C.y+I.y+this.button.offsetHeight),dojo.style(this.auto,{zIndex:t,display:"",x:0,y:0}),scil.Utils.moveToScreen(A,g,this.auto)},list:function(A){if(null!=A&&0!=A.length){if(""!=this.auto.style.display&&this.position(),null==A.length){var g=[];for(var C in A)g.push({label:A[C],key:C});A=g}scil.Utils.removeAll(this.area);for(var I=0;I0){var t=scil.Utils.createTable(C,0,0,{width:"100%"}),e=scil.Utils.createElement(t,"tr");I=scil.Utils.createElement(e,"td",null,{textAlign:"left"});scil.Utils.createElement(e,"td","►",{paddingLeft:"10px",textAlign:"right",fontSize:"50%"})}null!=A.icon&&scil.Utils.createElement(I,"img",null,{marginRight:"5px"},{src:A.icon}),null!=g&&scil.Utils.createElement(I,"span",g);var i=this;null!=A.items&&A.items.length>0?(A.expandright=!0,A.dropdown="",new scil.DropdownButton(C,A)):(null==A.key&&null!=A.label&&(A.key=A.label),dojo.connect(C,"onclick",(function(g){null!=A.onclick&&A.onclick(),i.click(g,C)}))),dojo.connect(C,"onmouseover",(function(A){i.mouseover(A,C)})),dojo.connect(C,"onmouseout",(function(A){i.mouseout(A,C)}))}else scil.Utils.createElement(this.area,"hr",null,{margin:0,padding:0,borderColor:null==scil.App.config?null:scil.App.config.frame})},getItem:function(A){var g=A.srcElement||A.target;return"DIV"!=g.tagName&&(g=scil.Utils.getParent(g,"DIV")),g},mouseover:function(A){this.getItem(A).style.backgroundColor="#ddf",this.getItem(A).style.color=JSDraw2.Skin.menu.highlightcolor},mouseout:function(A){this.getItem(A).style.backgroundColor="#fff",this.getItem(A).style.color=JSDraw2.Skin.menu.color},clickout:function(A){this.hide()},click:function(A){var g=this.getItem(A),C=g.getAttribute("url"),I=g.getAttribute("key");null!=this.options.callback?this.options.callback(null==I||""==I?g.innerText||g.textContent:I,C):null!=this.options.onclick?this.options.onclick(null==I||""==I?g.innerText||g.textContent:I,C):null!=C&&(null==this.options.target?window.location=C:window.open(C,this.options.target)),this.hide()}})},4921:()=>{scil.DropdownInput=scil.extend(scilligence._base,{constructor:function(A,g){this.T="DROPDOWN_INPUT",this.auto=null,this.options=null==g?{}:g,this.input="string"==typeof A?document.getElementById(A):A,this.itemschanged=!0,this.sugid=0,this.suggestlength=this.options.suggestlength>0?this.options.suggestlength:1,""==this.options.autosuggest&&(this.options.autosuggest=null);var C=this;this.input.style.background="#fff "+scil.Utils.imgSrc("img/dropdown.gif",!0)+" no-repeat right center",this.input.style.border="solid 1px #999",this.input.style.padding="2px",this.input.className="_scil_dropdown",this.updateReadonly(),dojo.connect(this.input,"onkeyup",(function(A){C.keyup(A)})),dojo.connect(this.input,"onclick",(function(A){C.clickMe(A)}))},updateDropdown:function(A){null!=A&&(this.options.readonly=A,this.updateReadonly()),this.input.style.backgroundImage=null==this.options.items?"":scil.Utils.imgSrc("img/dropdown.gif",!0)},updateReadonly:function(){this.input.readOnly=this.options.readonly,this.input.style.backgroundColor=this.options.readonly?"#eee":"#fff"},keyup:function(A){if(!(this.disabled||null==this.input||null==this.options.autosuggest&&null==this.options.onFilter&&null==this.options.items))if(this.options.readonly)null!=this.options.items&&this.highlight(A);else if(this.input.value.length=0&&C.push(scil.Utils.trim(A[I]))}return C},clickMe:function(A){null!=this.options.items&&((A.srcElement||A.target).offsetWidth-(null==A.offsetX?A.layerX:A.offsetX)<16&&this.show())},setItems:function(A){null!=A&&(this.options.items=A,this.itemschanged=!0)},isChildOf:function(A){return A==this.input||JsUtils.isChildOf(A,this.auto)},isDropdownVisible:function(){return null!=this.auto&&""==this.auto.style.display},isVisible:function(){return null!=this.input&&""==this.input.style.display},show:function(){if(null==this.auto){var A=this,g=scil.Utils.isFixedPosition(this.input)?"fixed":"absolute";this.auto=scil.Utils.createElement(document.body,"div",null,{display:"none",backgroundColor:"white",overflow:"hidden",border:"solid 1px gray",position:g,zIndex:99999}),dojo.connect(document.body,"onmousedown",(function(g){var C=g.srcElement||g.target;C!=A.q&&C.parentNode!=A.auto&&A.clickout()}))}this.itemschanged&&this.list(this.options.items,++this.sugid),this.auto.style.display="",this.auto.style.zIndex=scil.Utils.getZindex(this.input)+1,this.updateDropdownSize()},highlight:function(A){if(null!=this.auto&&"none"!=this.auto.style.display)if(A.preventDefault(),27!=A.keyCode){for(var g=this.auto.childNodes,C=null,I=0;I=g.length&&(t=0),A.preventDefault();else if(null!=A.char){var e=A.char.toLowerCase();null==(t=this.findNextMatch(e,null==C?0:C+1,g.length))&&null!=C&&(t=this.findNextMatch(e,0,C))}null!=t&&t!=C&&(null!=C&&this._hilitItem(g[C],!1),this._hilitItem(g[t],!0))}else null!=C&&this.clickItem(g[C])}else this.hide();else 13!=A.keyCode&&40!=A.keyCode||(this.show(),A.preventDefault())},findNextMatch:function(A,g,C){for(var I=g;I0&&e.substr(0,1).toLowerCase()==A)return I}}return null},updateDropdownSize:function(){if(this.isDropdownVisible()){var A=scil.Utils.getOffset(this.input),g=scilligence.Utils.scrollOffset();if(scil.Utils.isIE){var C=JsUtils.getScrollOffset(this.e);g.offset(-C.x,-C.y)}var I=this.input.offsetWidth;this.options.minautowidth>0&&this.options.minautowidth>I&&(I=this.options.minautowidth),I<100&&(I=100),dojo.style(this.auto,{left:A.x+g.x+"px",top:A.y+g.y+this.input.offsetHeight+"px",width:I-2+"px"})}},hide:function(){null!=this.auto&&"none"!=this.auto.style.display&&(this.auto.style.display="none")},isParentHidden:function(A){for(var g=A;null!=g&&null!=g.style;){if("none"==g.style.display||"hidden"==g.style.visibility)return!0;g=g.parentNode}return!1},list:function(A,g){if(null==A||0==A.length||g!=this.sugid||this.isParentHidden(this.input))null!=this.auto&&(scilligence.Utils.removeAll(this.auto),this.auto.style.display="none");else if(null!=this.auto&&"none"!=this.auto.style.display||(this.itemschanged=!1,this.show()),this.itemschanged=!1,scilligence.Utils.removeAll(this.auto),null!=A&&0!=A.length)for(var C=this,I=0;I{scil.Favorite=scil.extend(scil._base,{constructor:function(A,g){this.T="FAVORITE",this.key=A,this.items=null,this.onAddFavorite=g,this.changed=!1},getList:function(A){return this._load(),this.items[A]},contains:function(A,g){this._load();var C=this.items[g];return null!=C&&scil.Utils.indexOf(C,A)>=0},add:function(A,g,C){this._load();var I=this.items[C];if(null==I)g&&(this.items[C]=[A],this.changed=!0);else{var t=scil.Utils.indexOf(I,A);t<0&&g?(I.push(A),this.changed=!0):t>=0&&!g&&(I.splice(t,1),this.changed=!0)}null!=this.onAddFavorite&&this.onAddFavorite(A,g,C),this.changed&&this._save()},_save:function(){if(null!=this.items){var A=scil.Utils.json2str(this.items);scil.Utils.createCookie("scil_helm_favorites_"+this.key,A)}},_load:function(){if(null==this.items){var A=scil.Utils.readCookie("scil_helm_favorites_"+this.key),g=scil.Utils.eval(A);this.items=null==g?{}:g}}})},1351:()=>{scil.FieldNumber=scil.extend(scil._base,{constructor:function(A,g){this.T="FIELD_NUMBER","string"==typeof A&&(A=scil.byId(A)),this.options=null==g?{}:g,this.input=A,this.unit=null;var C,I=this;this.options.allowoperator&&(this.auto=new scil.DropdownInput(A,{items:null==this.options.items?["","≥","≤","<",">","±"]:this.options.items,onSetValue:function(A,g){I.onSetOperator(A,g)}}));var t=this.options.viewonly||this.input.disabled||this.input.readOnly;if(null!=this.options.units&&!t){var e=scil.Utils.createTable(null,0,0,{border:"solid 1px #ccc"});this.input.parentNode.insertBefore(e.parentNode,this.input),C=scil.Utils.createElement(e,"tr"),scil.Utils.createElement(C,"td").appendChild(this.input),this.unit=scil.Utils.createElement(scil.Utils.createElement(C,"td",null,{borderLeft:"solid 1px #ccc"}),"select",null,{width:this.options.unitwidth}),scil.Utils.listOptions(this.unit,this.options.units,null,!0,!1),scil.connect(this.unit,"onchange",(function(){scil.Utils.fireEvent(I.input,"change")})),this.input.style.border="none",this.unit.style.border="none"}I=this;if(scil.connect(A,"onchange",(function(g){var C=A.value;""==C||null==C||null!=I.options.accepts&&new RegExp(I.options.accepts).test(C)||scil.Utils.isNumber(C,I.options.allowoperator)?(null!=I.unit&&(C+=I.unit.value),I.setValue(C)):(A.value="",scil.Utils.alert("A number is required!"))})),!t&&null!=this.options.mobiledata){I=this;new scil.MobileData(A,{weighstation:!0,url:scil.MobileData.getDefaultUrl(!0),onresult:function(g){return I.setValue(g.barcode),scil.MobileData.markRecieved(A),!0}}),scil.Utils.createButton(scil.Utils.createElement(C,"td"),{label:"⚖",title:"Select Weigh Station",type:"a",onclick:function(){scil.MobileData.selectWeighstation()}})}},onSetOperator:function(A,g){if(""!=g){var C=scil.Utils.trim(A.value);if("±"==g){if(C.indexOf("±")>=0)return;A.value=C+" ±"}else{var I=C.length>0?C.substr(0,1):null;"≥"!=I&&"≤"!=I&&">"!=I&&"<"!=I||(C=C.substr(1)),A.value=g+C}}},clear:function(){this.input.value=""},setValue:function(A){null!=(A=null==A?null:null==JSDraw2.Table?{value:A}:JSDraw2.Table.splitUnit(A+""))?(this.options.scale>0&&!isNaN(A.value)&&(A.value*=this.options.scale),this.options.decimal>0&&(A.value=scil.Utils.round(A.value,this.options.decimal)),null==A.unit2&&(A.unit2=this.options.defaultunit),null!=this.unit?(this.input.value=A.value,scil.Utils.selectOption(this.unit,A.unit2,!0)):(this.input.value=A.value+(null==A.unit2?"":A.unit2),null!=JSDraw2.ColorCoding&&JSDraw2.ColorCoding.show(this.input,A.value,this.options))):this.input.value=""},getValue:function(){var A=scil.Utils.trim(this.input.value);return scil.Utils.isNullOrEmpty(A)||isNaN(A)||(this.options.scale>0&&(A/=this.options.scale),null!=this.unit&&(A+=this.unit.value)),A}})},2963:()=>{scil.Menu={timeout:scilligence.Utils.isTouch||window.navigator.msPointerEnabled?2e3:500,closetimer:0,menuitem:null,isOpen:function(){return null!=scil.Menu.menuitem&&"none"!=scil.Menu.menuitem.style.display},open:function(A){scil.Menu.cancelclosetime(),scil.Menu.menuitem&&(scil.Menu.menuitem.style.display="none"),scil.Menu.menuitem=document.getElementById(A),scil.Menu.menuitem.style.display=""},close:function(){scil.Menu.menuitem&&(scil.Menu.menuitem.style.display="none")},openOrClose:function(A){null==scil.Menu.menuitem||"none"==scil.Menu.menuitem.style.display?this.open(A):this.close()},closetime:function(){scil.Menu.closetimer=window.setTimeout(scil.Menu.close,scil.Menu.timeout)},cancelclosetime:function(){scil.Menu.closetimer&&(window.clearTimeout(scil.Menu.closetimer),scil.Menu.closetimer=null)}},JSDraw2.Menu=scil.Menu},5264:()=>{scil.Popup=scil.extend(scil._base,{constructor:function(A,g){if(this.T="POPUP",this.a="string"==typeof A?scil.byId(A):A,this.options=null==g?{}:g,null!=this.a){var C=this;dojo.connect(this.a,"onmouseout",(function(){scil.Popup.hide()})),dojo.connect(this.a,"onmouseover",(function(A){scil.Popup.show(C,A)}))}scil.Popup.init()},getHtml:function(A){return null!=this.options.ongethtml2?this.options.ongethtml2(this,A):(null==this.options.html&&null!=this.options.ongethtml&&(this.options.html=this.options.ongethtml(this)),this.options.html)},getCaption:function(A){return null!=this.options.ongetcaption2?this.options.ongetcaption2(this,A):this.options.caption}}),scil.apply(scil.Popup,{current:null,inited:null,show:function(A,g){this.hide(),this.current=A,e=new scil.Popup.Event(g);var C=this.current.getCaption(g),I=this.current.getHtml(g);scil.Utils.isNullOrEmpty(I)?this.hide():(this.create(),this.area.innerHTML="",this.title.innerHTML="",this.div.style.display="",this.title.innerHTML=null==C?"":C,this.area.innerHTML=I,null!=e&&this.move(e))},hide:function(){this.current=null,null!=this.div&&(this.title.innerHTML="",this.area.innerHTML="",this.div.style.display="none")},move:function(A){if(null!=this.current&&null!=this.div&&"none"!=this.div.style.display){var g=null==A.srcElement?A.target:A.srcElement;this.current.a==g||this.isChildOf(g,this.current.a)?this.moveto(A):this.isChildOf(g,this.div)||this.hide()}},moveto:function(A){this.create();var g=this.scrollLeft(),C=this.scrollTop(),I=0,t=0;null==document.all?(I=window.innerWidth,t=window.innerHeight):(I=document.documentElement.clientWidth,t=document.documentElement.clientHeight);var e=this.div.offsetWidth,i=this.div.offsetHeight,l=A.clientX+g+10,s=A.clientY+C+20;l-g+e>I&&l-g-e>0&&(l-=e+15),s-C+i>t&&s-C-i>0&&(s-=i+25),this.div.style.left=l+"px",this.div.style.top=s+"px"},isChildOf:function(A,g){for(;null!=A;){if(A==g)return!0;A=A.parentNode}return!1},scrollLeft:function(A){return this.filterResults(window.pageXOffset?window.pageXOffset:0,document.documentElement?document.documentElement.scrollLeft:0,document.body?document.body.scrollLeft:0)},scrollTop:function(A){return this.filterResults(window.pageYOffset?window.pageYOffset:0,document.documentElement?document.documentElement.scrollTop:0,document.body?document.body.scrollTop:0)},filterResults:function(A,g,C){var I=A||0;return g&&(!I||I>g)&&(I=g),C&&(!I||I>C)?C:I},init:function(){1!=this.inited&&(this.inited=!0,dojo.connect(document,"onmousemove",(function(A){scil.Popup.move(A)})))},create:function(){if(null==this.div){this.div=document.createElement("div"),this.div.style.display="none",this.div.style.whiteSpace="nowrap",this.div.style.backgroundColor="white",this.div.style.borderStyle="solid",this.div.style.borderColor="#f0f0f0 #a0a0a0 #a0a0a0 #f0f0f0",this.div.style.borderWidth="2px",this.div.style.position="absolute",this.div.style.zIndex=scil.Utils.getMaxZindex(),this.div.style.textAlign="left",document.body.appendChild(this.div);var A=document.createElement("div");A.style.border="1px solid highlight",A.style.padding="1px",this.div.appendChild(A),this.title=document.createElement("div"),this.title.style.textAlign="center",this.title.style.border=JSDraw2.Skin.dialog.border,this.title.style.backgroundColor=JSDraw2.Skin.dialog.bkcolor,this.title.style.color="white",A.appendChild(this.title),this.area=document.createElement("div"),this.area.style.padding="2px",this.area.style.backgroundColor="white",A.appendChild(this.area)}}}),scil.Popup.Event=scil.extend(scil._base,{constructor:function(A){this.clientX=A.clientX,this.clientY=A.clientY,this.srcElement=A.target||A.srcElement}})},3859:()=>{scilligence.Progress={dlg:null,bar:null,msg:null,oncancel:null,show:function(A,g,C,I){this.create(),0==g?(this.cancelbtn.style.display="none",this.oncancel=null):"function"==typeof g&&(this.cancelbtn.style.display="",this.oncancel=g),this.msg.innerHTML=null==C?"":C,this.frame.style.display=0==I?"none":"",this.dlg.show(A)},hide:function(){null!=this.dlg&&this.dlg.hide()},cancel:function(){null!=this.oncancel&&this.oncancel(),this.hide()},update:function(A,g){A>100?A=100:A>0||(A=0);var C=Math.round(300*A/100);C<0&&(C=0),this.bar.style.width=C+"px",this.msg.innerHTML=null==g?"":g},create:function(A){if(null!=this.dlg)return!1;var g=scilligence.Utils.createElement(null,"div",null,{margin:"5px",width:"320px",textAlign:"center"});return this.animator=scilligence.Utils.createElement(g,"div",scil.Utils.imgTag("animator.gif"),{textAlign:"center"}),this.msg=scilligence.Utils.createElement(g,"div"," ",{textAlign:"center"}),this.frame=scilligence.Utils.createElement(g,"div",null,{width:"300px",height:"20px",border:"solid 1px #e0e0e0",textAlign:"left"}),this.bar=scilligence.Utils.createElement(this.frame,"div"," ",{width:"1px",height:"20px",backgroundColor:"blue"}),this.cancelbtn=scilligence.Utils.createElement(g,"button",scil.Utils.imgTag("cancel.gif")+"Cancel",{marginTop:"10px"}),dojo.connect(this.cancelbtn,"onclick",(function(){scilligence.Progress.cancel()})),this.dlg=new JSDraw2.Dialog("Progress",g),!0}}},6211:()=>{scil.Resizable=scil.extend(scil._base,{constructor:function(A,g){this.T="RESIZABLE","string"==typeof A&&(A=scil.byId(A)),this.options=null==g?{}:g,this.resizing=null,this.handle=A,this.bgcolor=this.handle.style.backgroundColor,"y"==this.options.direction?A.style.cursor="ns-resize":"x"==this.options.direction&&(A.style.cursor="ew-resize");var C=this;dojo.connect(A,"onmousedown",(function(A){C.start(A)})),scil.connect(document.body,"onmousemove",(function(A){C.resize(A)&&A.preventDefault()})),scil.connect(document.body,"onmouseup",(function(A){C.resizing=null})),null!=this.options.mouseovercolor&&(scil.connect(A,"onmouseover",(function(){C.handle.style.backgroundColor=C.options.mouseovercolor})),scil.connect(A,"onmouseout",(function(){C.handle.style.backgroundColor=C.bgcolor})))},resize:function(A){if(null==this.resizing)return!1;var g="y"==this.options.direction?A.clientY-this.resizing.y:A.clientX-this.resizing.x;if(0==g)return!0;var C=!1;return null!=this.options.onresize&&(C=this.options.onresize(g,this)),C&&("y"==this.options.direction?this.resizing.y=A.clientY:this.resizing.x=A.clientX),!0},start:function(A){"y"==this.options.direction?this.resizing={y:A.clientY}:"x"==this.options.direction&&(this.resizing={x:A.clientX})}})},9614:()=>{scil.Table=scil.extend(scil._base,{constructor:function(A,g,C){this.T="TABLE",null!=A&&"object"==typeof A?(this.options=A,this.viewonly=this.options.viewonly,this.header=this.options.header):(this.viewonly=A,this.header=g,null==scil.Table._tableincrease&&(scil.Table._tableincrease=0),this._tableid=++scil.Table._tableincrease,this.options="function"==typeof C?{onAdd:C}:null==C?{}:C),this.groupIndex=0,this.checkIndex=1,this.dataIndex=2,this._startrow=2,this.tbody=null,this.items=null,this.key=null,this._lastcheck=null},getXml:function(){var A=this.tbody.childNodes.length-this._startrow;if(0==A)return"";for(var g="\n",C=0;C"+scil.Utils.escXmlValue(s)+"\n")}g+="\n"}}return g+="
"},setXml:function(A,g){var C=null;if("object"==typeof A)C=A;else if("string"==typeof A){var I=scil.Utils.parseXml(A);null!=I&&(C=I.documentElement||I.firstElementChild)}var t=[];try{null!=C&&null==C.getElementsByTagName&&(C=null)}catch(n){}if(null!=C)for(var e=C.getElementsByTagName("r"),i=0;i1&&(A+=","),A+=scil.Utils.escCsvValue(this.items[C].label);A+="\n";for(var I=this.tbody.childNodes.length-this._startrow,t=0;t1&&(A+=","),A+=scil.Utils.escCsvValue(i[C]);A+="\n"}return A},getData:function(A,g,C){if(null==A){for(var I=[],t=this.tbody.childNodes.length-this._startrow,e=0;e=this._startrow;--A)this.tbody.removeChild(this.tbody.childNodes[A]);this.currow=null},render:function(A,g){for(var C in this.items={},g)null!=g[C]&&(this.items[C]=g[C],g[C].iskey&&(this.key=C));this._hideCookieCols(this.items),"string"==typeof A&&(A=dojo.byId(A));var I=this,t=scil.Utils.createElement(A,"div");if(this.tbody=scilligence.Utils.createTable(t,0,3,{borderRight:JSDraw2.Skin.jssdf.border,borderBottom:JSDraw2.Skin.jssdf.border,borderTop:JSDraw2.Skin.jssdf.border}),this.tbody.parentNode.setAttribute("class","scil_table"),!this.viewonly&&0!=this.options.addrow){var e=scil.Utils.createElement(scil.Utils.createElement(t,"div"),"img",null,null,{src:scil.Utils.imgSrc("img/add.gif"),title:scil.Lang.res("Add")});dojo.connect(e,"onclick",(function(){null!=I.options.onAdd?I.options.onAdd(I):I.addRow()}))}var i=scil.Utils.createElement(this.tbody,"tr"),l=this.options.header0,s=scil.Utils.createElement(this.tbody,"tr");if(null!=l){scil.Utils.createElement(i,"td",null,{display:this.options.grouping?"":"none"}),scil.Utils.createElement(i,"td",null,{display:this.options.rowcheck?"":"none"});for(var o=0;o0?"plus":"plus0":"minus")+".gif"),A},addRow:function(A,g,C){if(null==A&&null!=this.options.onAdd)return null;null!=this.options.onBeforeAddRow&&(A=this.options.onBeforeAddRow(A));var I=this,t=this.tbody.childNodes.length%2==1?JSDraw2.Skin.jssdf.oddcolor:JSDraw2.Skin.jssdf.evencolor,e=scil.Utils.createElement(null,"tr",null,{backgroundColor:t},{sciltable:"1",bgcolor:t});null==C?this.tbody.appendChild(e):this.tbody.insertBefore(e,C),dojo.connect(this.tbody.parentNode,"onmouseover",(function(A){I._hilitRow(A,!0)})),dojo.connect(this.tbody.parentNode,"onmouseout",(function(A){I._hilitRow(A,!1)}));var i=!1,l=scil.Utils.createElement(e,"td");if(this.options.grouping){var s=null==A?null:A[this.options.grouping],o=this.getCellValue(e.previousSibling,this.options.grouping);if(scil.Utils.isNullOrEmpty(s)||s!=o){i=!0;var n=scil.Utils.createElement(l,"img",null,null,{title:"Expand/Collapse All",src:scil.Utils.imgSrc("img/minus.gif")});scil.connect(n,"onclick",(function(A){I.groupExpand(e)}))}}else l.style.display="none";l=scil.Utils.createElement(e,"td");if(this.options.rowcheck){var r="radio"==this.options.rowcheck?"__scil_table_"+this._tableid+"_radio":null,a="radio"==this.options.rowcheck?"radio":"checkbox",h=scil.Utils.createElement(l,a,null,null,{name:r});h.checked=null!=A&&A.rowchecked,null!=this.options.onrowcheck&&dojo.connect(h,"onchange",(function(){I.options.onrowcheck(e,h.checked)})),"checkbox"==a&&scil.connect(h,"onclick",(function(A){I.checkedClick(A)}))}else l.style.display="none";for(var c in null==A?e.setAttribute("isnew","1"):null!=this.key&&null!=A[this.key]&&e.setAttribute("key",A[this.key]),this.items){var u=this.items[c];(l=scil.Utils.createElement(e,"td",null,u.styles,u.attributes)).style.borderLeft=JSDraw2.Skin.jssdf.border,("hidden"==u.type||u.ishidden)&&(l.style.display="none");var B=this.viewonly||u.viewonly||null!=g&&g[c];l.field=scil.Form.createField(l,u,B,null==A?u.value:A[c],A,!0,!0),B&&"img"!=u.type?l.field.style.width="100%":"INPUT"!=l.field.tagName&&"SELECT"!=l.field.tagName&&"TEXTAREA"!=l.field.tagName||(this._connectOnchange(l.field,u),u.addrowonenter&&null==C&&l.field.focus()),l.setAttribute("__tid",c),this.connectKeydown(l,u)}if(!this.viewonly&&null==g&&0!=this.options.delrow){(l=scil.Utils.createElement(e,"td")).style.borderLeft=JSDraw2.Skin.jssdf.border;var E=scil.Utils.createElement(l,"img",null,null,{src:scil.Utils.imgSrc("img/del.gif"),title:scil.Lang.res("Delete")});dojo.connect(E,"onclick",(function(){I.removeRow(this)}))}if(null!=this.options.onAddRow&&this.options.onAddRow(e,A),i&&null!=this.options.grouplinestyle)for(var w=0;w=1&&C>1){var t,e;--g,C<=11?(t=0,e=C):((t=g-5)<0&&(t=0),(e=t+11)>C&&(e=C),e-t<11&&(t=e-11)<0&&(t=0)),this.createPage(A,scil.Lang.res("Previous Page"),g>0?g:null,I),t>0&&(this.createPage(A,1,1,I),t>1&&this.createPage(A,"...",null,I));for(var i=t;i"+scil.Utils.escXmlValue(e)+"")}g+=""}return g+=""}})},1932:()=>{scil.Tree=scil.extend(scil._base,{constructor:function(A,g,C,I){this.T="TREE",this.container=A,this.options=null==g?{}:g,this.solo=null!=C?C:this.options.solo,this.dropdown=null!=I?I:this.options.dropdown,this.onAddItem=null,this.onSelectItem=null,this.onExpandItem=null,this.cur=null,this.margin=28,this.idname="id";scil.Utils.removeAll(A)},clear:function(){scil.Utils.removeAll(this.container)},reloadCur:function(){null!=this.cur&&this.reload(this.cur)},reload:function(A){if(null==A)return!1;A.removeAttribute("loaded"),null!=A.firstChild.nextSibling&&A.removeChild(A.firstChild.nextSibling);var g=this._expand(A);return this.onExpand(g),!0},getCurRoot:function(){return this.getRoot(this.cur)},getRoot:function(A){if(null==A)return null;for(var g=this.getParent(A),C=A;null!=g;)C=g,g=this.getParent(C);return C},getParent:function(A){return null==A.parentNode||A.parentNode==this.container?null:A.parentNode.parentNode},add:function(A,g){if(null==g)return null;if(null!=g.length){for(var C=0;Cmore...":g.name),e.className="tbar",g.disabled?(e.style.color="gray",e.setAttribute("disabled","on")):(e.style.cursor="pointer",dojo.connect(e,"onclick",(function(A){(A.target||A.srcElement)!=e.firstChild&&l.select(e.parentNode)}))),this.add(I,g.children),null!=A&&this.expand(A,!0),0==g.expand&&this.expand(I,!1),g.selected&&this.select(I),I},expand:function(A,g){var C=A.firstChild,I=C.firstChild;null==C.nextSibling?(I.src="img/blank.gif",I.removeAttribute("title")):(C.nextSibling.style.display=g?"":"none",this._expand(A,g))},_expand:function(A,g){var C=A.firstChild.firstChild;return C.src=scil.Utils.imgSrc(g?"img/minus.gif":"img/plus.gif"),C.setAttribute("title",g?"Shrink":"Expand"),C},shrinkSiblings:function(A){for(var g=A.parentNode.childNodes,C=0;C0?g.add(A,C.rows):C.length>0&&g.add(A,C),g.expand(A,!0)};if(null==A.item.children){var I=A.item;null!=this.onAjaxData&&(I=this.onAjaxData(A)),null!=this.options.url&&""!=this.options.url&&scil.Utils.ajax(this.options.url,C,I,{popup:!1,beforeload:function(){A.firstChild.firstChild.src=scil.Utils.imgSrc("img/animatorsmall.gif")},afterload:function(){A.firstChild.firstChild.src=scil.Utils.imgSrc("img/plus.gif")}})}else C(A.item.children)},select:function(A){if("string"==typeof A&&(A=this.find(null,A)),null!=A&&(null==A.item||0!=A.item.selectable))if(null!=A.item&&A.item._more)this.loadNodes(A);else if(null!=this.cur&&(this.cur.firstChild.style.background=""),this.cur=A,this.dropdown&&null!=this.cur&&(this.cur.firstChild.style.background="#f6f4b9"),this.cur.firstChild.style.background="#ddf",null!=this.onSelectItem){var g=null;null!=this.cur&&(g=null==this.cur.firstChild.nextSibling),this.onSelectItem(this.cur,g)}},getIconText:function(A){if(null==A)return null;var g=A.firstChild.childNodes[2];return"SPAN"==g.tagName?g.innerHTML:""+g.nextSibling.innerHTML},setCurrent:function(A,g){var C=this.find(null,A,g);return null!=C&&this.select(C),C},find:function(A,g,C){var I=null==A?this.container:A.firstChild.nextSibling;if(null==I)return null;null==C&&(C="id");for(var t=I.childNodes,e=0;e{scil.UploadFile={dlg:null,form:null,msg:null,files:[],filetypes:[],kIframe:"__scil_uploadfile_iframe",show:function(A){this.create(),this.dlg.show(),this.form.reset(),this.options=null==A?{}:A,null!=A.msg&&(this.msg.innerHTML=A.msg);for(var g=0;g",{padding:"15px"});this.form=C.firstChild,this.msg=scil.Utils.createElement(this.form,"div","Please specify files to be uploaded");for(var I=scil.Utils.createTable(this.form),t=0;t<5;++t){var e=scil.Utils.createElement(I,"tr"),i=scil.Utils.createElement(e,"td"),l=scil.Utils.createElement(i,"file",null,null,{name:"f"+t});i=scil.Utils.createElement(e,"td");var s=scil.Utils.createElement(i,"select",null,null,{name:"filetype.f"+t});this.files.push(l),this.filetypes.push(s)}e=scil.Utils.createElement(I,"tr"),i=scil.Utils.createElement(e,"td",null,{paddingTop:"10px",textAlign:"center"},{colSpan:2});scil.Utils.createButton(i,{src:scil.App.imgSmall("submit.png"),label:"Upload",onclick:function(){g.upload()}}),this.dlg=new scil.Dialog("Upload File",C)}}}},7673:()=>{JSDraw2.BA=scilligence.extend(scilligence._base,{constructor:function(A,g,C){this.b=A,this.a=g,this.ringclosure=C,this.next=[],this.f=null,this.parent=null,this.depth=null},find:function(A){var g=new JSDraw2.Stack;for(g.push(this);g.length()>0;){var C=g.pop();if(C.a==A)return C;for(var I=0;I0;){var t=I?C.pop():C.popHead();A.push(t);for(var e=0;e0&&(A+=","),0==this.a.query.t&&(A+="!"),A+=this.a.query.als[t];else null!=this.a.isotope&&(A+=this.a.isotope),A+=this.a.elem;0!=this.a.charge&&(this.a.hcount>1&&(A+="H"+this.a.hcount),1==this.a.charge?A+="+":-1==this.a.charge?A+="-":A+=(this.a.charge>0?"+":"-")+Math.abs(this.a.charge)),null!=C&&(A+=C+(1==this.a.hcount?"H":"")),null!=this.a.query&&null!=this.a.query.rbc&&(A+=";R"+this.a.query.rbc),null!=this.a.query&&null!=this.a.query.sub&&(A+=";X"+this.a.query.sub),this.a.locked&&(A+=";0"),A+="]"}else this.a.aromatic&&I?A+=this.a.elem.toLowerCase():A+=this.a.elem;if(null!=this.a.ringclosures){var e=this.a.ringclosures;for(t=0;t0){for(var i=0;i{JSDraw2.Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(A){if(null==A)return null;var g,C,I,t,e,i,l,s="",o=0;for(A=JSDraw2.Base64._utf8_encode(A);o>2,e=(3&g)<<4|(C=A.charCodeAt(o++))>>4,i=(15&C)<<2|(I=A.charCodeAt(o++))>>6,l=63&I,isNaN(C)?i=l=64:isNaN(I)&&(l=64),s=s+this._keyStr.charAt(t)+this._keyStr.charAt(e)+this._keyStr.charAt(i)+this._keyStr.charAt(l);return s},decode:function(A){if(null==A)return null;var g,C,I,t,e,i,l="",s=0;for(A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");s>4,C=(15&t)<<4|(e=this._keyStr.indexOf(A.charAt(s++)))>>2,I=(3&e)<<6|(i=this._keyStr.indexOf(A.charAt(s++))),l+=String.fromCharCode(g),64!=e&&(l+=String.fromCharCode(C)),64!=i&&(l+=String.fromCharCode(I));return l=JSDraw2.Base64._utf8_decode(l)},_utf8_encode:function(A){A=A.replace(/\r\n/g,"\n");for(var g="",C=0;C127&&I<2048?(g+=String.fromCharCode(I>>6|192),g+=String.fromCharCode(63&I|128)):(g+=String.fromCharCode(I>>12|224),g+=String.fromCharCode(I>>6&63|128),g+=String.fromCharCode(63&I|128))}return g},_utf8_decode:function(A){for(var g="",C=0,I=c1=c2=0;C191&&I<224?(c2=A.charCodeAt(C+1),g+=String.fromCharCode((31&I)<<6|63&c2),C+=2):(c2=A.charCodeAt(C+1),c3=A.charCodeAt(C+2),g+=String.fromCharCode((15&I)<<12|(63&c2)<<6|63&c3),C+=3);return g}}},1919:()=>{var A,g;DEBUG={enable:!1,clear:function(){DEBUG.enable&&(document.getElementById("DEBUG").value="")},print:function(A){DEBUG.enable&&(document.getElementById("DEBUG").value+=A+"\n")}},scilligence={_base:function(){}},oln=scilligence,scil=scilligence,scilligence.overwrite=scilligence.apply=function(A,g,C){if(C&&scilligence.apply(A,C),A&&g&&"object"==typeof g)for(var I in g)A[I]=g[I];return A},scilligence.apply(scilligence,{extend:(A=function(A){for(var g in A)this[g]=A[g]},g=Object.prototype.constructor,function(C,I,t){"object"==typeof I&&(t=I,I=C,C=t.constructor!=g?t.constructor:function(){I.apply(this,arguments)});var e=function(){},i=I.prototype;e.prototype=i;var l=C.prototype=new e;return l.constructor=C,C.superclass=i,i.constructor==g&&(i.constructor=I),C.override=function(A){scilligence.override(C,A)},l.superclass=l.supr=function(){return i},l.override=A,scilligence.override(C,t),C.extend=function(A){return scilligence.extend(C,A)},C}),override:function(A,g){if(g){var C=A.prototype;scilligence.apply(C,g),null!=document.all&&g.hasOwnProperty("toString")&&(C.toString=g.toString)}},clone:function(A){if(null==A)return null;if(null!=A.length)return A.concat([]);var g={};return scil.apply(g,A),g},cloneArray:function(A){if(null==A)return null;if(null!=A.length){for(var g=[],C=0;C{JSDraw2.Drawer={kMinFontSize:4,drawFormula:function(A,g,C,I,t,e){if(C){var i=I.charAt(0);i>="0"&&i<="9"&&(C=!1)}for(var l=new JSDraw2.Rect,s=this.splitFormula(I),o=0;o0||"("==i?("("==i?(0==C&&(""!=t&&(I&&g.length>0?g[g.length-1].num=t:g.push({str:t})),I=!1,t=""),++C):")"==i&&--C,t+=i,0==C&&(g.push({str:t}),t="")):(i>="A"&&i<="Z"?(""!=t&&(I&&g.length>0?g[g.length-1].num=t:g.push({str:t})),I=!1,t=""):i>="0"&&i<="9"&&!I&&(""!=t&&g.push({str:t}),I=!0,t=""),t+=i)}return""!=t&&(I&&g.length>0?g[g.length-1].num=t:g.push({str:t})),g},drawCurveArrow:function(A,g,C,I,t,e,i){if(null==I||null==t){var l=JSDraw2.Curve.calcAnchors(g,C);I=l.p1a,t=l.p2a}A.createPath("").moveTo(g.x,g.y).curveTo(I.x,I.y,t.x,t.y,C.x,C.y).setStroke({color:e,width:i,cap:"round"}),JSDraw2.Drawer.drawArrowhead(A,t,C,e,i)},drawCurve:function(A,g,C,I,t,e,i){var l=JSDraw2.Curve.calcAnchors(g,C,I,t),s=l.p1a,o=l.p2a;A.createPath("").moveTo(g.x,g.y).curveTo(s.x,s.y,o.x,o.y,C.x,C.y).setStroke({color:e,width:i,cap:"round"})},drawArrow:function(A,g,C,I,t,e,i){if("dual"==i){var l=(n=new JSDraw2.Point(C.x-g.x,C.y-g.y)).clone().rotate(90).setLength(t),s=g.clone().offset(n.x+l.x,n.y+l.y),o=C.clone().offset(-n.x+l.x,-n.y+l.y);JSDraw2.Drawer.drawLine(A,s,o,I,t,e),JSDraw2.Drawer.drawArrowhead2(A,s,o,I,t,"top"),l=n.clone().rotate(-90).setLength(t),s=g.clone().offset(n.x+l.x,n.y+l.y),o=C.clone().offset(-n.x+l.x,-n.y+l.y),JSDraw2.Drawer.drawLine(A,s,o,I,t,e),JSDraw2.Drawer.drawArrowhead2(A,o,s,I,t,"top")}else if("reversible"==i){var n;l=(n=new JSDraw2.Point(C.x-g.x,C.y-g.y)).clone().rotate(90).setLength(t),s=g.clone().offset(.6*n.x+l.x,.6*n.y+l.y),o=C.clone().offset(-n.x+l.x,-n.y+l.y);JSDraw2.Drawer.drawLine(A,s,o,I,t,e),JSDraw2.Drawer.drawArrowhead2(A,s,o,I,t,"top"),l=n.clone().rotate(-90).setLength(t),s=g.clone().offset(n.x+l.x,n.y+l.y),o=C.clone().offset(-n.x+l.x,-n.y+l.y),JSDraw2.Drawer.drawLine(A,s,o,I,t,e),JSDraw2.Drawer.drawArrowhead2(A,o,s,I,t,"top")}else{if("solid"==i){l=new JSDraw2.Point(C.x-g.x,C.y-g.y).setLength(4*t);JSDraw2.Drawer.drawLine(A,g,C.clone().offset(-l.x,-l.y),I,t,e)}else JSDraw2.Drawer.drawLine(A,g,C,I,t,e);JSDraw2.Drawer.drawArrowhead(A,g,C,I,t,i)}},drawArrowhead:function(A,g,C,I,t,e){"solid"==e?this.drawArrowhead2(A,g,C,I,t,e):"double"==e?(this.drawArrowhead2(A,g,C,I,t),this.drawArrowhead2(A,C,g,I,t)):"none"==e||this.drawArrowhead2(A,g,C,I,t)},drawArrowhead2:function(A,g,C,I,t,e){var i=g.clone().offset(-C.x,-C.y).setLength(7*t),l=(i.angle(),i.clone().rotate(25)),s=i.clone().rotate(-25),o=C.clone().offset(l.x,l.y),n=C.clone().offset(s.x,s.y);"solid"==e?JSDraw2.Drawer.drawTriangle(A,o,C,n,I):"top"==e?JSDraw2.Drawer.drawLine(A,o,C,I,t):("bottom"==e||JSDraw2.Drawer.drawLine(A,o,C,I,t),JSDraw2.Drawer.drawLine(A,n,C,I,t))},drawTriangle:function(A,g,C,I,t){var e=A.createPath("").moveTo(g.x,g.y).lineTo(C.x,C.y).lineTo(I.x,I.y).lineTo(g.x,g.y);return e.setFill(t),e},drawBracket:function(A,g,C,I,t){var e=3*I,i=I;switch(t){case"round":this.drawCurve(A,g.topleft(),g.bottomleft(),-30,.3,C,I),this.drawCurve(A,g.topright(),g.bottomright(),30,.3,C,I);break;case"curly":break;default:JSDraw2.Drawer.drawLine(A,g.topleft(),g.topleft().offset(e,0),C,i),JSDraw2.Drawer.drawLine(A,g.topleft(),g.bottomleft(),C,i),JSDraw2.Drawer.drawLine(A,g.bottomleft(),g.bottomleft().offset(e,0),C,i),JSDraw2.Drawer.drawLine(A,g.topright(),g.topright().offset(-e,0),C,i),JSDraw2.Drawer.drawLine(A,g.topright(),g.bottomright(),C,i),JSDraw2.Drawer.drawLine(A,g.bottomright(),g.bottomright().offset(-e,0),C,i)}},drawDoubleArrow:function(A,g,C,I){var t=I;this.drawLine(A,g.topleft(),g.topright(),C,t),this.drawArrow(A,g.topleft(),g.bottomleft(),C,t),this.drawArrow(A,g.topright(),g.bottomright(),C,t)},drawLabel:function(A,g,C,I,t,e,i,l,s){var o=t+2;if(e){var n=new JSDraw2.Rect(g.x-o/2,g.y-o/2,o,o);A.createRect({x:n.left,y:n.top,width:n.width,height:n.height}).setFill(1==e?"#fff":e)}var r=g.x+(null==l?0:l),a=g.y+o/2-2;"start-anchor"==i&&(i="start",r-=.4*t),"end-anchor"==i&&(i="end",r+=.4*t);var h={x:r,y:a,text:C,align:null==i?"middle":i},c=null;return"canvas"==dojox.gfx.renderer?((c=A.createText(h)).shape.fontStyle="bold "+(t{JSDraw2.FormulaParser={parse:function(A,g,C){if(scil.Utils.isNullOrEmpty(A))return null;var I=null,t=A.indexOf(".");t>0&&(I=A.substr(t+1),A=A.substr(0,t));var e=this._parse(A,g,C);if(null==e&&g&&(e=this.pareFormulaAsSalt(A)),null==e||0==e.atoms.length)return null;if(!scil.Utils.isNullOrEmpty(I)){var i=this.pareFormulaAsSalt(I);if(null==i||0==i.atoms.length)return null;var l=e.atoms[e.atoms.length-1],s=i.atoms[0];e.mergeMol(i);var o=new JSDraw2.Bond(l,s);o.type=JSDraw2.BONDTYPES.DUMMY,e.addBond(o)}return JSDraw2.SuperAtoms.normalize(e),e},pareFormulaAsSalt:function(A){if(scil.Utils.isNullOrEmpty(A))return null;var g=1;if((C=A.replace(/^[0-9]+/,"")).length0?I:1)*1e3)/1e3,s:1==I?A:I+A,stats:this.mf2Stats(e,!0)}},parseCharge:function(A){return scil.Utils.isNullOrEmpty(A)?0:"+"==A||"++"==A||"+++"==A?A.length:"-"==A||"--"==A||"---"==A?-A.length:(A.length>1&&("+"==A.substr(A.length-1)||"-"==A.substr(A.length-1))&&(A=A.substr(A.length-1)+A.substr(0,A.length-1)),parseInt(A))},stripHs:function(A){if(null==A||A.length<=1)return A;var g=A.replace(/[+|-][1-9]?$/,""),C=A.substr(g.length);if(/^[A-Z][a-z]?[H][0-9]{0,2}$/.test(g)){var I=/^[A-z][a-z]?/.exec(A);if(null!=(t=JSDraw2.PT[I])&&null!=t.m)return I+C}else if(/^[H][0-9]{0,2}[A-Z][a-z]?$/.test(g)){var t;I=/[A-z][a-z]?$/.exec(A);if(null!=(t=JSDraw2.PT[I])&&null!=t.m)return I+C}return A},mergeStats:function(A,g,C){if(null==A&&(A={elements:{},charges:0,isotopes:{}}),null!=g){for(var I in null==C&&(C=1),g.elements)null==A.elements[I]?A.elements[I]=g.elements[I]*C:A.elements[I]+=g.elements[I]*C;for(var I in g.isotopes){null==A.isotopes[I]&&(A.isotopes[I]={});var t=A.isotopes[I],e=g.isotopes[I];for(var i in e)null==t[i]?t[i]=e[i]*C:t[i]+=e[i]*C}null!=g.charges&&(A.charges+=g.charges*C)}return A},getAtomStats:function(A){if(null==A)return null;for(var g={elements:{},charges:0,isotopes:{},bios:[]},C=0,I=0,t=0;t0&&(o+=Math.floor(r))}s>0&&(I+=o)}else if("#"==e.elem){var a=this.parseSalt(e.alias);null!=a&&this.mergeStats(g,a.stats,a.coef)}else{var h=e.elem;if(e.isotope>0){null==(u=g.isotopes[h])&&(g.isotopes[h]={});var c=g.isotopes[h];null==c[e.isotope]?c[e.isotope]=1:c[e.isotope]=c[e.isotope]+1}else{var u=g.elements[h];g.elements[h]=null==u?1:u+1}C+=e.hcount}g.charges+=e.charge}return(C-=I)>0&&(null!=g.elements.H?g.elements.H=C+g.elements.H:g.elements.H=C),g},stats2mw:function(A){if(null==A)return null;var g=0;for(var C in A.elements)if("D"==C)g+=JSDraw2.PT.H.iso[2]*A.elements[C];else if("T"==C)g+=JSDraw2.PT.H.iso[3]*A.elements[C];else{var I=JSDraw2.PT[C];if(null==I||null==I.m)return null;g+=I.m*A.elements[C]}if(null!=A.bios)for(var t=0;t0&&(g=scil.Utils.round(g,4)),g},stats2em:function(A){if(null==A)return null;var g=0;for(var C in A.elements){var I=JSDraw2.PT[C];if(null==I||null==I.em)return null;g+=I.em*A.elements[C]}return g+=this._isotopemass(A.isotopes)},_isotopemass:function(A){if(null==A)return 0;var g=0;for(var C in A){var I=JSDraw2.PT[C];if(null!=I&&null!=I.m){var t=A[C];for(var e in t){var i=I.iso[e];g+=(null==i?I.m:i)*t[e]}}}return g},stats2mf:function(A,g){if(null!=A){var C="";for(var I in null!=A.elements.C&&(C+="C",A.elements.C>1&&(C+=g?""+A.elements.C+"":A.elements.C)),null!=A.elements.H&&(C+="H",A.elements.H>1&&(C+=g?""+A.elements.H+"":A.elements.H)),A.elements)"C"!=I&&"H"!=I&&"R"!=I&&(C+=I,A.elements[I]>1&&(C+=g?""+A.elements[I]+"":A.elements[I]));for(var I in A.isotopes){var t=A.isotopes[I];for(var e in t)C+=g?""+e+""+I:"{"+e+"}"+I,t[e]>1&&(C+=g?""+t[e]+"":t[e])}var i=A.elements.R;if(i>0&&(C+="R",i>1&&(C+=g?""+i+"":i)),0!=A.charges){var l=Math.abs(A.charges),s=(A.charges>0?"+":"-")+(l>1?l:"");C+=g?""+s+"":s}return C}},mf2mw:function(A,g){var C=this.mf2Stats(A,g);return this.stats2mw(C)},normMF:function(A){var g=this.mf2Stats(A);return this.stats2mf(g)},mf2Stats:function(A,g){if(null==A||""==A)return null;var C=0,I=A.replace(/(([+|-][0-9]{0,2})|([ ][0-9]{0,2}[+|-]))$/,"");I.length=1){if(g>1)for(var C in A.elements)A.elements[C]/=1*g;null==A.elements.H&&(A.elements.H=0),--A.elements.H,g=0}return g},mf2Stats2:function(A){var g=JSDraw2.SuperAtoms.get(A);if(null!=g)return this.getAtomStats(g);for(var C,I={elements:{},charges:0},t=/^[0-9]+/;(C=A.indexOf("("))>=0;){if(C>0){if(null==(o=this._mf2Stats(A.substr(0,C))))return null;I=this.mergeStats(I,o)}A=A.substr(C);for(var e=!1,i=0,l=1;l0))return null;o=this.getAtomStats(n)}else{if(!(l.m>null))return null;o.elements[i]=1}I=this.mergeStats(I,o,s),A=A.substr(e.length)}return I},molFromAtom:function(A,g,C){var I=A.replace(/[+|-][1-9]?$/,"");I.length0){m=new JSDraw2.Mol;var e=new JSDraw2.Atom(new JSDraw2.Point(0,0),A);return null!=C&&(e.charge=C),m.addAtom(e),g&&(e.attachpoints=[1]),m}return null},_parse:function(A,g,C){if(scil.Utils.isNullOrEmpty(A))return null;new RegExp("^[(][^()]+[)]$").test(A)&&(A=A.substr(1,A.length-2));var I=this.stripHs(A);if(null!=(E=this.molFromAtom(I,!0)))return E;var t={O:["O"],S:["S"],Se:["Se"],Te:["Te"],Y:["Y"],NH:["N"],PH:["P"],CO:["C","^=O"],CO2:["C","^=O","O"],CH2:["C"],C2H4:["C","C"],C3H6:["C","C","C"],C4H8:["C","C","C","C"],C5H10:["C","C","C","C","C"]};if((g&&(t.H=[]),scil.Utils.startswith(A,"("))&&(c=A.indexOf(")"))>0){var e=A.substr(1,c-1),i=A.substr(c+1),l=1;(I=i.replace(/^[0-9]+/,"")).length=3){var a=A.substr(0,2),h=JSDraw2.PT[a];if(null!=h&&JSDraw2.PT.isMetal(h.a)&&h!=JSDraw2.PT.K&&h!=JSDraw2.PT.Na&&h!=JSDraw2.PT.Rb&&h!=JSDraw2.PT.Cs&&h!=JSDraw2.PT.Fr&&h!=JSDraw2.PT.Sb)return this._tryFormula(a,[a],A)}if(1==C||2==C){if(/^C[0-9]+H[0-9]+$/.test(A)){var c=A.indexOf("H"),u=parseInt(A.substr(1,c-1)),B=parseInt(A.substr(c+1));if(u>0&&(2==C&&2*u==B||1==C&&(2*u+1==B||2*u-1==B||2*u-3==B))){var E=new JSDraw2.Mol,w=new JSDraw2.Atom(new JSDraw2.Point(0,0),"C"),d=null;w.attachpoints=[1],E.addAtom(w);for(n=1;n0;){var t=!1;for(var e in C)if(scil.Utils.startswith(A,e)){I=I.concat(C[e]),A=A.substr(e.length),t=!0;break}if(!t)break}return 0==I.length?null:{atoms:I,remained:A}},_tryFormula:function(A,g,C){return scil.Utils.startswith(C,A,!0)?this._connect(g,C.substr(A.length)):null},_connect:function(A,g){var C=JSDraw2.SuperAtoms.get(g);if(null==C&&null==(C=this._parse(g,null,1))&&(C=this.molFromAtom(g,!1)),null!=C){C=C.clone();var I=JSDraw2.SuperAtoms._getAttachAtoms(C);if(null==I||1!=I.length)return null;var t=I[0].a,e=null;t.attachpoints=[];for(var i=A.length-1;i>=0;--i){var l=A[i];"^"!=l.substr(0,1)?(t=this._connectAtom(t,l,C),null!=e&&(this._connectAtom(t,e,C),e=null)):e=l.substr(1)}return t.attachpoints=[1],C}},_connectAtom:function(A,g,C){var I=!1;"="==g.substr(0,1)&&(g=g.substr(1),I=!0);var t=A.p.clone();t.offset(1,0);var e=new JSDraw2.Atom(t,g),i=new JSDraw2.Bond(A,e);return I&&(i.type=JSDraw2.BONDTYPES.DOUBLE),C.addAtom(e),C.addBond(i),e}}},7573:()=>{JSDraw2.Group=scil.extend(scil._base,{constructor:function(A,g){this.T="GROUP",this.type=g,this.name=A,this.id=null,this._rect=null,this.p=null,this.gap=6,this.group=null,this.color=null,this.a=null,this.ratio=null,this.tag=null},clone:function(){var A=new JSDraw2.Group(this.name,this.type);return A.id=this.id,A._rect=null==this._rect?null:this._rect.clone(),A.p=null==this.p?null:this.p.clone(),A.color=this.color,A.gap=this.gap,A.ratio=this.ratio,A.tag=this.tag,A},html:function(A){var g="0&&(g+=" gap='"+this.gap+"'"),g+=">"},readHtml:function(A){var g=parseFloat(A.getAttribute("gap"));g>0&&(this.gap=g)},flipY:function(A){},flipX:function(A){},scale:function(A,g){},offset:function(A,g){},rect:function(){return this._rect},toggle:function(A,g){var C=this._rect;if(null!=C)return A.y>=C.top&&A.y<=C.bottom()&&(Math.abs(A.x-C.left)=C.left&&A.x<=C.right()&&(Math.abs(A.y-C.top){JSDraw2.IDGenerator=scil.extend(scil._base,{constructor:function(A){this.i=A>0?A:0,this.used=0==this.i?null:{}},next:function(A){if(null==this.used)return++this.i;if(A>0&&!this.used[A])return this.used[A]=!0,A;for(A=++this.i;this.used[A];)A=++this.i;return this.used[A]=!0,A}})},8152:()=>{JSDraw2={},scilligence.JSDraw2=JSDraw2,scilligence.JSDraw3=JSDraw3=JSDraw2,JSDraw2.speedup={fontsize:4,gap:0,disableundo:!1,minbondlength:1},JSDraw2.version="JSDraw V5.3.1",JSDraw2.kFileVersion="5.0",JSDraw2.defaultoptions={},JSDraw2.password={encrypt:!0},JSDraw2.TEXTKEYWORDS=["°C","rt","reflux","hr","min","sec","psi","atm","overnight","microwave","Δ"],JSDraw2.MOLECULETYPES=["SmallMolecule","Polymer","Peptide","DNA","RNA","ADC","ChemicalReagent"],JSDraw2.CHIRALITIES=["Achiral","Absolute","Racemic","Diastereomeric","Enatiomer R","Enatiomer S"],JSDraw2.BONDTYPES={UNKNOWN:0,SINGLE:1,DOUBLE:2,TRIPLE:3,DELOCALIZED:4,WEDGE:5,HASH:6,WIGGLY:7,EITHER:8,SINGLEORDOUBLE:9,SINGLEORAROMATIC:10,DOUBLEORAROMATIC:11,QUADRUPLE:12,DUMMY:13,BOLD:14,BOLDHASH:15,PEPTIDE:21,NUCLEOTIDE:22,DISULFIDE:23,AMIDE:24},JSDraw2.RXNCENTER={NOTCENTER:-1,CENTER:1,BREAK:4,CHANGE:8,BREAKANDCHANGE:12},JSDraw2.ALIGN={RIGHT:0,BOTTOM:1,LEFT:2,TOP:3},JSDraw2.BIO={AA:"AA",ANTIBODY:"ANTIBODY",PROTEIN:"PROTEIN",GENE:"GENE",DNA:"DNA",RNA:"RNA",BASE_DNA:"BASEDNA",BASE_RNA:"BASERNA"},JSDraw2.ANTIBODY={IgG:"IgG",Fab:"Fab",ScFv:"ScFv"},JSDraw2.DNATable={GCT:"A",GCC:"A",GCA:"A",GCG:"A",CGT:"R",CGC:"R",CGA:"R",CGG:"R",AGA:"R",AGG:"R",AAT:"",AAC:"N",GAT:"D",GAC:"D",TGT:"C",TGC:"C",CAA:"Q",CAG:"Q",GAA:"E",GAG:"E",GGT:"G",GGC:"G",GGA:"G",GGG:"G",CAT:"H",CAC:"H",ATT:"I",ATC:"I",ATA:"I",TTA:"L",TTG:"L",CTT:"L",CTC:"L",CTA:"L",CTG:"L",AAA:"K",AAG:"K",ATG:"M",TTT:"F",TTC:"F",CCT:"P",CCC:"P",CCA:"P",CCG:"P",TCT:"S",TCC:"S",TCA:"S",TCG:"S",AGT:"S",AGC:"S",ACT:"T",ACC:"T",ACA:"T",ACG:"T",TGG:"W",TAT:"Y",TAC:"Y",GTT:"V",GTC:"V",GTA:"V",GTG:"V",ATG:"[",TAA:"]",TGA:"]",TAG:"]"},JSDraw2.RNATable={GCU:"A",GCC:"A",GCA:"A",GCG:"A",CGU:"R",CGC:"R",CGA:"R",CGG:"R",AGA:"R",AGG:"R",AAU:"N",AAC:"N",GAU:"D",GAC:"D",UGU:"C",UGC:"C",CAA:"Q",CAG:"Q",GAA:"E",GAG:"E",GGU:"G",GGC:"G",GGA:"G",GGG:"G",CAU:"H",CAC:"H",AUU:"I",AUC:"I",AUA:"I",AUG:"[",UUA:"L",UUG:"L",CUU:"L",CUC:"L",CUA:"L",CUG:"L",AAA:"K",AAG:"K",AUG:"M",UUU:"F",UUC:"F",CCU:"P",CCC:"P",CCA:"P",CCG:"P",UCU:"S",UCC:"S",UCA:"S",UCG:"S",AGU:"S",AGC:"S",ACU:"T",ACC:"T",ACA:"T",ACG:"T",UGG:"W",UAU:"Y",UAC:"Y",GUU:"V",GUC:"V",GUA:"V",GUG:"V",UAA:"]",UGA:"]",UAG:"]"}},5175:()=>{JSDraw2.needPro=function(){scil.Utils.alert("This is a JSDraw Pro feature.")},JSDraw2.Security={kEdition:"Lite",error:null,valid:!0,_check:function(){}},scil.apply(JSDraw2,{Text:{cast:function(A){return null}},Shape:{cast:function(A){return null}},Bracket:{cast:function(A){return null}},AssayCurve:{cast:function(A){return null}},Arrow:{cast:function(A){return null}},TLC:{cast:function(A){return null}},Spectrum:{cast:function(A){return null}},Plus:{cast:function(A){return null}},Group:{cast:function(A){return null}},RGroup:{cast:function(A){return null}}})},6535:()=>{JSDraw2.Table={splitUnit:function(A){if(null==A||" "==A)return null;if(0==(A=scil.Utils.trim(A)).length)return null;var g=null,C=null,I=A.replace(/[a-z|\/|%|°]+$/i,"");return I!=A&&(C=(g=A.substr(I.length)).toLowerCase(),I=scil.Utils.trim(I)),"w/w"!=C&&"w/v"!=C||!scil.Utils.endswith(I,"%")||(I=I.substr(0,I.length-1),g=C="% "+C),"%w/w"==C?g=C="% w/w":"%w/v"==C&&(g=C="% w/v"),{value:scil.Utils.trim(I),unit:C,unit2:g}},readSdfRecord:function(A,g){"\n"==A.substr(0,1)?A=A.substr(1):"\r\n"==A.substr(0,2)&&(A=A.substr(2));var C=A.indexOf("\nM END");if(C<0&&(C=A.indexOf("\nM END")),C<0)return null;var I=A.indexOf("\n",C+1),t=I<0?A:A.substr(0,I),e=I<0?null:A.substr(I+1);return{molfile:t,props:g?JSDraw2.Table.readProps(e):null}},readProps:function(A){var g={};if(null==A)return g;for(var C=A.split("\n"),I=0;I"==(A=C[I]).substr(0,1)){var i=A.indexOf("<",1);if(i>0){++i;var l=A.indexOf(">",i);l>0&&(t=A.substr(i,l-i))}for(++I;I{JSDraw2.JSDrawIO={downloaddlg:null,jsdsavedlg:null,jsdFiles:{jsdraw:"JSDraw2 XML",mol:"Mol File",rxn:"Reaction File",inchi:"InChI",helm:"HELM",xhelm:"xHELM",smiles:"SMILES",cml:"Chemical Markup Language",cdxml:"ChemDraw CDXML",cdx:"ChemDraw CDX",png:"PNG Picture"},jsdFiles2:{jsd:"JSDraw XML",png:"PNG Picture"},jsdFiles3:{helm:"HELM",xhelm:"xHELM"},jsssavedlg:null,jssFiles:{sdf:"SDF File",csv:"CSV File",jssdf:"Xml File",json:"Json File"},callWebservice:function(A,g,C){null==JSDrawServices.url||""==JSDrawServices.url?scil.Utils.alert("JSDraw web service is not available"):scil.Utils.ajax(JSDrawServices.url+"?cmd="+A,C,g)},needCrossdomain:function(){if(JSDrawServices.xdomain){var A=window.location+"",g=A.indexOf("://"),C=A.indexOf("/",g+3),I=A.substr(0,C+1);if(!scil.Utils.startswith(JSDrawServices.url.toLowerCase(),I.toLowerCase()))return!0}return!1},jsdFileOpen:function(A){var g;if(g="Lite"==JSDraw2.Security.kEdition?this.res("Please select a HELM file")+" (*.helm, *.xhelm):":this.res("Please select a chemistry file")+" (*.mol, *.rxn, *.cdx, *.skc, *.helm, *.xhelm, *.smiles etc.):",this.needCrossdomain()){var C=JSDrawServices.url+"?cmd=";scil.Utils.uploadFile(""+this.res("Import File"),g,C+"xdomain.post",(function(g){scil.Utils.jsonp(C+"openjsd",(function(g){JSDraw2.JSDrawIO.jsdFileOpen2(A,g)}),{_xfilename:g})}),null,null,null,null,!0)}else{if(null==this.jsdFileOpenDlg){var I={note:{type:"html",template:"
"+g+"
"},file:{type:"postfile",attributes:{name:"file"}},importas:"Lite"==JSDraw2.Security.kEdition?null:{type:"select",items:{"":"",reactant:"Import as Reactant",product:"Import as Product"}}},t=this;this.jsdFileOpenDlg=scil.Form.createDlgForm("Load File",I,{src:scil.App.imgSmall("open.png"),label:"Load File",onclick:function(){t.jsdFileOpen1()}},{usepostform:!0,hidelabel:!0})}this.jsdFileOpenDlg.show(),this.jsdFileOpenDlg.jsd=A,this.jsdFileOpenDlg.form.postform.reset()}},jsdFileOpen1:function(){var A=this;this.jsdFileOpenDlg.form.post(JSDrawServices.url+"?cmd=openjsd",null,(function(g){var C=null==A.jsdFileOpenDlg.form.fields.importas?null:A.jsdFileOpenDlg.form.fields.importas.value;A.jsdFileOpen2(A.jsdFileOpenDlg.jsd,g,C),A.jsdFileOpenDlg.hide()}))},jsdFileOpen2:function(A,g,C){var I=null!=g.base64?JSDraw2.Base64.decode(g.base64):g.contents;if("reactant"==C||"product"==C){var t=new JSDraw2.Mol;if("molfile"==g.format?t.setMolfile(I):"rxn"==g.format?t.setRxnfile(I):t.setXml(I),t.atoms.length>0){var e=t.parseRxn(!0),i=!1;if(null==e)A.pasteMol(t,null,C)&&(i=!0);else if(null==e.arrow&&0==e.products.length)for(var l=0;l"+this.res("Save File"),g),JSDraw2.JSDrawIO.jsdsavedlg.sel=C}JSDraw2.JSDrawIO.jsdsavedlg.jsd=A,JSDraw2.JSDrawIO.jsdsavedlg.show(),JSDraw2.JSDrawIO.jsdsavedlg.sel.selectedIndex=0},jsdFileSave2:function(){this.jsdFileSave3(JSDraw2.JSDrawIO.jsdsavedlg.sel.value,JSDraw2.JSDrawIO.jsdsavedlg.jsd),this.jsdsavedlg.hide()},jsdFileSave3:function(A,g){var C;C="helm"==A?g.getHelm():"xhelm"==A?g.getXHelm():g.getXml();var I=new Date,t={client:"jsdraw",wrapper:"none",filename:("Lite"==JSDraw2.Security.kEdition&&g.options.helmtoolbar?"HELM":"JSDraw")+I.getFullYear()+"-"+(I.getMonth()+1)+"-"+I.getDate()+"."+A,contents:C};scil.Utils.post(JSDrawServices.url+"?cmd=savefile",t,"_blank")},cleanup:function(A){var g=A.m.clone(!0);null!=g&&0==g.atoms.length&&(g=null);var C=null!=g?g.getSmiles():A.getSmiles();if(null!=C&&""!=C){var I=JSDrawServices.url;if(null!=I){var t=window.location,e=t.protocol+"//"+t.host+"/",i=null;scil.Utils.startswith(I.toLowerCase(),e.toLowerCase())?(i=scil.Utils.ajax,C=null!=g?g.getXml():A.getXml()):i=scil.Utils.jsonp;var l=[];if(null!=g)for(var s=0;s1){for(var t=0;t"+this.res("Name to Structure"),message:g,button:this.res("Convert"),callback:function(g){var C;null!=JSDrawServices.id2s&&null!=JSDrawServices.id2s.url&&null!=JSDrawServices.id2s.regex&&null!=g.match(JSDrawServices.id2s.regex)?C=JSDrawServices.id2s.url:null!=JSDrawServices.n2s&&null!=JSDrawServices.n2s.url&&(C=JSDrawServices.n2s.url),null!=C?scil.Utils.jsonp(C,(function(C){JSDraw2.JSDrawIO._setMolData(A,C,g)}),{q:g,fmt:"jsdraw"},{showprogress:!0}):scil.Utils.alert("Name-to-structure is not configured yet.")},autosuggesturl:null!=JSDrawServices.n2s?JSDrawServices.n2s.suggest:null,iconurl:scil.Utils.imgSrc("img/name2s.gif"),owner:A})},res:function(A){return JSDraw2.Language.res(A)},jssFileOpen:function(A){var g={msg:"Appending Mode"};A.options.appendingmode&&(g.checked=!0,g.disabled=!0);var C=null==A.options.structurecolumn?"":A.options.structurecolumn;if(scil.Utils.uploadFile(""+this.res("Open File"),this.res("Please select a file")+" (*.sdf,*.rdf,*.xls,*.csv,*.smiles):",JSDrawServices.url+"?cmd=openjss",(function(g){JSDraw2.JSDrawIO.jssFileOpen2(A,g)}),{structurecolumn:C},g),this.needCrossdomain()){var I=JSDrawServices.url+"?cmd=";scil.Utils.uploadFile(""+this.res("Open File"),this.res("Please select a file")+" (*.sdf,*.rdf,*.xls,*.csv,*.smiles)",I+"xdomain.post",(function(A){scil.Utils.jsonp(I+"openjss",(function(A){JSDraw2.JSDrawIO.jssFileOpen2(jsd,A)}),{_xfilename:A,structurecolumn:C})}),null,null,null,null,!0)}else scil.Utils.uploadFile(""+this.res("Open File"),this.res("Please select a file")+" (*.sdf,*.rdf,*.xls,*.csv,*.smiles):",JSDrawServices.url+"?cmd=openjss",(function(g){JSDraw2.JSDrawIO.jssFileOpen2(A,g)}),{structurecolumn:C},g)},jssFileOpen2:function(A,g,C){var I=scil.Utils.uploadfileDlg.check.checked;scil.Utils.endswith(g.filename,".rdf")?A.setRdf(null!=g.base64?JSDraw2.Base64.decode(g.base64):g.contents,null,null,!I):A.setXml(null!=g.base64?JSDraw2.Base64.decode(g.base64):g.contents,null,!I,I)},jssFileSave:function(A){if(null==JSDraw2.JSDrawIO.jsssavedlg){var g=scil.Utils.createElement(null,"div",this.res("Please select a file type")+":",{width:"350px",margin:"10px"}),C=scil.Utils.createElement(g,"select");scil.Utils.createElement(C,"option"),scil.Utils.listOptions(C,JSDraw2.JSDrawIO.jssFiles,null,!1);var I=scil.Utils.createElement(g,"div",null,{marginTop:"20px",textAlign:"center"}),t=scil.Utils.createElement(I,"button",""+this.res("Save"));dojo.connect(t,"onclick",(function(A){JSDraw2.JSDrawIO.jssFileSave2(),A.preventDefault()})),JSDraw2.JSDrawIO.jsssavedlg=new JSDraw2.Dialog(""+this.res("Save File"),g),JSDraw2.JSDrawIO.jsssavedlg.sel=C}JSDraw2.JSDrawIO.jsssavedlg.jss=A,JSDraw2.JSDrawIO.jsssavedlg.show(),JSDraw2.JSDrawIO.jsssavedlg.sel.selectedIndex=0},jssFileSave2:function(){var A=JSDraw2.JSDrawIO.jsssavedlg.sel.value,g=new Date,C={client:"jssdf",wrapper:"none",filename:"JSDrawTable"+g.getFullYear()+"-"+(g.getMonth()+1)+"-"+g.getDate()+"."+A};switch(A){case"sdf":C.contents=JSDraw2.JSDrawIO.jsssavedlg.jss.getSdf();break;case"jssdf":C.contents=JSDraw2.JSDrawIO.jsssavedlg.jss.getXml();break;case"json":C.contents=scil.Utils.json2str(JSDraw2.JSDrawIO.jsssavedlg.jss.getJson());break;case"csv":C.contents=JSDraw2.JSDrawIO.jsssavedlg.jss.getCsv()}scil.Utils.post(JSDrawServices.url+"?cmd=savefile",C,"_blank"),JSDraw2.JSDrawIO.jsssavedlg.hide()}}},8510:()=>{JSDraw2.Language={current:null,use:function(A){},res:function(A){return A}}},5812:()=>{JSDraw2.Lasso=scilligence.extend(scilligence._base,{constructor:function(A,g,C){this.surface=A,this.linewidth=g,this.list=C?[]:null,this.lasthits=[],this.curhits=[],this.line=null},hit:function(A){scil.Utils.indexOf(this.lasthits,A)>=0||(A.selected=!A.selected,A.selected?A.drawSelect(this):this.remove(A),this.curhits.push(A))},endHits:function(A,g){this.lasthits=this.curhits,this.curhits=[],null!=this.line&&this.surface.remove(this.line),this.line=JSDraw2.Drawer.drawLine(this.surface,A,g,"#aaf",this.linewidth/2)},draw:function(A,g){null!=g.x&&(g=[g]);for(var C=[],I=0;I{JSDraw2.PT={commonUsed:{C:"C",N:"N",O:"O",S:"S",P:"P",F:"F",Cl:"L",Br:"B",I:"I",H:"H,D,T",Si:null,R:"R"},getCommonUsedElements:function(A){var g=[];if("menu"==A){for(var C in JSDraw2.PT.commonUsed)g.push({caption:C,shortcut:JSDraw2.PT.commonUsed[C]});g.push("-")}else for(var C in this.commonUsed)g.push(C);return g},"*":{a:0},X:{a:0},R:{a:0},H:{a:1,c:"909090",m:1.0079,em:1.0078,e:1,v:[1],iso:{1:1.0078,2:2.0141,3:3.0161}},Be:{a:4,c:"C2FF00",m:9.0122,em:9.0122,v:[0,2],iso:{9:9.0122}},B:{a:5,c:"FFB5B5",m:10.811,em:11.0093,e:3,v:[3],iso:{10:10.0129,11:11.0093}},C:{a:6,c:"000000",m:12.0107,em:12,e:4,v:[4],iso:{12:12,13:13.0034}},N:{a:7,c:"3050F8",m:14.0067,em:14.0031,e:5,v:[3],iso:{14:14.0031,15:15.0001}},O:{a:8,c:"FF0D0D",m:15.9994,em:15.9949,e:6,v:[2],iso:{16:15.9949,17:16.9991,18:17.9992}},F:{a:9,c:"90E050",m:18.9984,em:18.9984,e:7,v:[1],iso:{19:18.9984}},Na:{a:11,c:"AB5CF2",m:22.9898,em:22.9898,v:[0,1],iso:{23:22.9898}},Si:{a:14,c:"F0C8A0",m:28.0855,em:27.9769,e:4,v:[4],iso:{28:27.9769,29:28.9765,30:29.9738}},P:{a:15,c:"FF8000",m:30.9738,em:30.9738,e:5,v:[3,5],iso:{31:30.9738}},S:{a:16,c:"C0C000",m:32.065,em:31.9721,e:6,v:[2,4,6],iso:{32:31.9721,33:32.9715,34:33.9679,36:35.9671}},Cl:{a:17,c:"1FF01F",m:35.453,em:34.9689,e:7,v:[1,3,5,7],iso:{35:34.9689,37:36.9659}},K:{a:19,c:"8F40D4",m:39.0983,em:38.9637,v:[0,1],iso:{39:38.9637,40:39.964,41:40.9618}},Ca:{a:20,c:"3DFF00",m:40.078,em:39.9626,v:[0,2],iso:{40:39.9626,42:41.9586,43:42.9588,44:43.9555,46:45.9537,48:47.9525}},Ge:{a:32,c:"668F8F",m:72.64,em:73.9212,v:[4,2],iso:{70:69.9243,72:71.9221,73:72.9235,74:73.9212,76:75.9214}},As:{a:33,c:"BD80E3",m:74.9216,em:74.9216,e:5,v:[3,5],iso:{75:74.9216}},Se:{a:34,c:"FFA100",m:78.96,em:79.9165,e:6,v:[2,4,6],iso:{74:73.9225,76:75.9192,77:76.9199,78:77.9173,80:79.9165,82:81.9167}},Br:{a:35,c:"A62929",m:79.904,em:78.9183,e:7,v:[1,3,5,7],iso:{79:78.9183,81:80.9163}},I:{a:53,c:"940094",m:126.904,em:126.904,e:7,v:[1,3,5,7],iso:{127:126.904}},isElectronAcceptor:function(A){var g=A.a;return g>=6&&g<=9||g>=15&&g<=17||g>=33&&g<=35||g>=50&&g<=53||g>=83&&g<=85},showQueryAtoms:function(A,g){for(var C=A.getElementsByTagName("button"),I=0;I0||"*"==A||"A"==A||"a"==A||"c"==A||this.isArAtom(A.toUpperCase())},isArAtom:function(A){return"C"==A||"N"==A||"S"==A||"P"==A||"O"==A}}},5813:()=>{JSDraw2.Skin={jsdraw:null,jssdf:null,dialog:null,reset:function(){this.jsdraw={bkcolor:"#e1e1e1",bkimg:scil.Utils.imgSrc("img/hbg.gif"),toolbarbk:scil.Utils.imgSrc("img/toolbarbk.jpg"),hovercolor:"#eef",btnselcolor:"#bbf"},this.jssdf={bgcolor:"#eee",headerimg:scil.Utils.imgSrc("img/header-bg.gif"),headercolor:"#eee",rowcolor:"#f96",oddcolor:"",evencolor:"#eee",border:"solid 1px #ccc"},scilligence.apply(this.jssdf,this.jsdraw),this.dialog={bkimg:scil.Utils.imgSrc("img/dlgheader.gif"),bkcolor:"#6badf6",border:"1px solid #4f6d81"}},red:function(){this.jsdraw={bkcolor:"#ECCDDC",bkimg:scil.Utils.imgSrc("img/hbg-red.gif"),toolbarbk:scil.Utils.imgSrc("img/toolbarbk-red.jpg"),hovercolor:"#fCdDeC"},this.jssdf={bgcolor:"#F8CEE8",headerimg:scil.Utils.imgSrc("img/header-bgred.gif"),headercolor:"#F8CEE8",rowcolor:"#FfeEf8",oddcolor:"",evencolor:"#eee",border:"solid 1px #ccc"},scilligence.apply(this.jssdf,this.jsdraw),this.dialog={bkimg:scil.Utils.imgSrc("img/dlgheader-red.gif"),bkcolor:"#E7A6DF",border:"1px solid #4f6d81"}},green:function(){this.jsdraw={bkcolor:"#C7EEDF",bkimg:scil.Utils.imgSrc("img/hbg-green.gif"),toolbarbk:scil.Utils.imgSrc("img/toolbarbk-green.jpg"),hovercolor:"#d7fEeF"},this.jssdf={bgcolor:"#CCF8E8",headerimg:scil.Utils.imgSrc("img/header-bggreen.gif"),headercolor:"#CCF8E8",rowcolor:"#dCFff8",oddcolor:"",evencolor:"#eee",border:"solid 1px #ccc"},scilligence.apply(this.jssdf,this.jsdraw),this.dialog={bkimg:scil.Utils.imgSrc("img/dlgheader-green.gif"),bkcolor:"#95D09C",border:"1px solid #4f6d81"}},blue:function(){this.jsdraw={bkcolor:"#CDD0EC",bkimg:scil.Utils.imgSrc("img/hbg-blue.gif"),toolbarbk:scil.Utils.imgSrc("img/toolbarbk-blue.jpg"),hovercolor:"#dDe0fC"},this.jssdf={bgcolor:"#DCDFF6",headerimg:scil.Utils.imgSrc("img/header-bgblue.gif"),headercolor:"#DCDFF6",rowcolor:"#eCeFFf",oddcolor:"",evencolor:"#eee",border:"solid 1px #ccc"},scilligence.apply(this.jssdf,this.jsdraw),this.dialog={bkimg:scil.Utils.imgSrc("img/dlgheader-blue.gif"),bkcolor:"#8BB6CC",border:"1px solid #4f6d81"}},yellow:function(){this.jsdraw={bkcolor:"#ECECCD",bkimg:scil.Utils.imgSrc("img/hbg-yellow.gif"),toolbarbk:scil.Utils.imgSrc("img/toolbarbk-yellow.jpg"),hovercolor:"#fCfCdD"},this.jssdf={bgcolor:"#F4F4E1",headerimg:scil.Utils.imgSrc("img/header-bgyellow.gif"),headercolor:"#F4F4E1",rowcolor:"#F4F4B8",oddcolor:"",evencolor:"#eee",border:"solid 1px #ccc"},scilligence.apply(this.jssdf,this.jsdraw),this.dialog={bkimg:scil.Utils.imgSrc("img/dlgheader-yellow.gif"),bkcolor:"#C8BA8F",border:"1px solid #4f6d81"}},menu:{highlightcolor:"#c60",color:"blue"},form:{labelstyles:{backgroundColor:"#eef",border:"solid 1px #dde",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},fieldcolor:"blue",rowselectcolor:"#aaf"}},JSDraw2.Skin.reset()},7454:()=>{JSDraw2.Stack=scilligence.extend(scilligence._base,{constructor:function(A){this._items=[],this._capacity=A},item:function(A){return this._items[A]},clear:function(){this._items=[]},length:function(){return this._items.length},isEmpty:function(){return 0==this._items.length},push:function(A){this._items.length>this._capacity&&this._items.splice(0,1),this._items.push(A)},pop:function(){return 0==this._items.length?null:this._items.pop()},popHead:function(){if(0==this._items.length)return null;var A=this._items[0];return this._items.splice(0,1),A}}),scil.Deque=scil.apply(scil._base,{constructor:function(){this.items=[]},pushRange:function(A){if(null!=A)for(var g=0;g{JSDraw2.SuperAtoms={sdf:"\nMolEngine02241412152D\n\n 6 6 0 0 0 0 999 V2000\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 3 2 0 0 0 0\nM END\n> \nBenzene\n\n$$$$\n\nMolEngine02241412152D\n\n 6 6 0 0 0 0 999 V2000\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM END\n> \nHexane\n\n$$$$\n\nMolEngine02241412152D\n\n 5 5 0 0 0 0 999 V2000\n 0.0000 0.4821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4836 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4006 1.2621 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4836 2.5242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.0421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 1 1 0 0 0 0\nM END\n> \nPentane\n\n$$$$\n\nMolEngine02241412152D\n\n 3 3 0 0 0 0 999 V2000\n 0.7800 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 2 3 1 0 0 0 0\nM END\n> \nPropane\n\n$$$$\n\nMolEngine02241412152D\n\n 4 4 0 0 0 0 999 V2000\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5600 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 1 1 0 0 0 0\nM END\n> \nButane\n\n$$$$\n\nMolEngine02241412152D\n\n 7 7 0 0 0 0 999 V2000\n 0.0000 0.9727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2196 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7405 0.3471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4174 1.7527 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7405 3.1581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2196 3.5054 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.5327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 1 1 0 0 0 0\nM END\n> \nHeptane\n\n$$$$\n\nMolEngine02241412152D\n\n 8 8 0 0 0 0 999 V2000\n 0.0000 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.1031 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6631 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7660 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7660 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6631 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.1031 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 1 1 0 0 0 0\nM END\n> \nOctane\n\n$$$$\n",dict:null,reversible:{},AminoAcids:{},DNAs:{},RNAs:{},templates:{},nterminals:{},cterminals:{},customtemplates:{},listFunctionalGroups:function(A){this.read();var g=new JSDraw2.Table(null,{columns:[{key:"name",caption:"Name",width:200},{key:"molfile",type:"structure",caption:"Structure"}],toolbar:["search"]},A),C=[];for(var I in this.dict)C.push({name:I,molfile:null==this.dict[I]?null:this.dict[I].getMolfile()});g.setJson({rows:C})},filter:function(A,g){if(null==A||""==A)return null;var C=[],I=(A=A.toLowerCase()).length;for(var t in this.dict)if(t.length>=I&&t.substr(0,I).toLowerCase()==A&&(C.push(t),C.length>=g))break;return C},get:function(A){this.read();var g=this.dict[A];return null==g&&(g=this.nterminals[A]),null==g&&(g=this.cterminals[A]),null==g?null:g.clone()},getDNA:function(A){return this.read(),this.DNAs[A]},getRNA:function(A){return this.read(),this.RNAs[A]},getAA:function(A){return this.read(),this.AminoAcids[A]},getTemplate:function(A){return this.read(),this.templates[A]},hasCustomTemplates:function(A){for(var g in this.read(),this.customtemplates)return!0;return!1},getCustomTemplate:function(A){return this.read(),this.customtemplates[A]},reverseLabel:function(A){if(this.read(),null!=this.get(A))return this.reverseLabel2(A);var g=A.substr(0,1),C=A.substr(1);return"O"!=g&&"S"!=g||null==this.get(C)?A:this.reverseLabel2(C)+g},reverseLabel2:function(A){if(null==this.reversible[A])return A;for(var g="",C=A.length-1;C>=0;--C){for(var I=1,t=C;t>=0;--t){var e=A.charCodeAt(t);if(e>=65&&e<=90)break;++I}C-=I-1,g+=A.substr(C,I)}return g},guessOne:function(A){for(var g in this.read(),A=A.toLowerCase(),this.dict)if(g.toLowerCase()==A)return g;return null},read:function(){null==this.dict&&(this.dict={},this.addSdf(this.sdf),null!=JSDraw2.defaultoptions&&this.addSdf(JSDraw2.defaultoptions.abbreviations),this.addSdf(JSDraw2.abbreviations),null!=this.onAfterRead&&this.onAfterRead())},addSdf:function(A){if(null!=A&&""!=A)for(var g=A.split("$$$$"),C=0;C0&&C.setBondLength(t);var e=A.getNeighborBonds(g);if(0==e.length)C.offset(g.p.x-I.p.x,g.p.y-I.p.y);else if(1==e.length){C.offset(g.p.x-I.p.x,g.p.y-I.p.y),b=e[0];var i=b.otherAtom(g).p.angleTo(g.p);1==(l=C.getNeighborBonds(I)).length?C.rotate(g.p,i+60-I.p.angleTo(l[0].otherAtom(I).p)):2==l.length&&C.rotate(g.p,i+180-I.p.middleAngle(l[0].otherAtom(I).p,l[1].otherAtom(I).p))}else{if(2!=e.length)return!1;C.offset(g.p.x-I.p.x,g.p.y-I.p.y);var l;i=g.p.middleAngle(e[0].otherAtom(g).p,e[1].otherAtom(g).p);1==(l=C.getNeighborBonds(I)).length?C.rotate(g.p,i+60-I.p.angleTo(l[0].otherAtom(I).p)):2==l.length&&C.rotate(g.p,i+180-I.p.middleAngle(l[0].otherAtom(I).p,l[1].otherAtom(I).p))}return!0}}},6635:()=>{JSDraw2.Text=scilligence.extend(scilligence._base,{constructor:function(A,g){this.T="TEXT",this._rect=A,this.text=g,this.color=null,this.fontsize=1,this.selected=!1,this.fieldtype=null,this.readonly=!1,this.anchors=[],this.italic=null},clone:function(){var A=new JSDraw2.Text(this._rect.clone(),this.text);return A.id=this.id,A.color=this.color,A.fieldtype=this.fieldtype,A.readonly=this.readonly,A.fontsize=this.fontsize,A.italic=this.italic,A},allAnchorsIn:function(A){if(0==this.anchors.length)return!1;for(var g=0;g0&&(I+=" fontsize='"+this.fontsize.toFixed(2)+"'"),this.readonly&&(I+=" v='1'"),this.italic&&(I+=" italic='1'"),null!=this.fieldtype&&""!=this.fieldtype&&(I+=" fieldtype='"+scil.Utils.escXmlValue(this.fieldtype)+"'"),""!=g&&(I+=" anchors='"+g+"'"),I+=">"+scilligence.Utils.escXmlValue(this.text)+""},readHtml:function(A,g){var C=JSDraw2.Rect.fromString(A.getAttribute("p")),I=A.getAttribute("s");if(null==I&&(I=A.text||A.textContent),null==C||scil.Utils.isNullOrEmpty(I))return!1;C.width>100*C.height&&(C.width=5*C.height),C.height>100*C.height&&(C.height=C.width/5),this._rect=C,this.text=I,this.readonly=scil.Utils.isTrue(A.getAttribute("v")),this.italic=scil.Utils.isTrue(A.getAttribute("italic")),this.dummy=scil.Utils.isTrue(A.getAttribute("dum")),this.fieldtype=A.getAttribute("fieldtype");var t=parseFloat(A.getAttribute("fontsize"));t>0&&(this.fontsize=t);var e=A.getAttribute("anchors");if(null!=e&&""!=e){for(var i=[],l=e.split(","),s=0;s0?this.fontsize:1),l=null==this.color||0==this.color.length?"black":this.color,s=JSDraw2.Drawer.drawText(A,new JSDraw2.Point(e.left,e.top),t,l,i,null,this.italic);e.width=null==s?0:s.getTextWidth(),e.height=i+4}},drawSelect:function(A){A.draw(this,this._rect.fourPoints())}}),JSDraw2.Text.cast=function(A){return null!=A&&"TEXT"==A.T?A:null}},5653:()=>{JSDraw2.Toolbar=scil.extend(scil._base,{constructor:function(A){this.toolbar=null,this.editor=A,this.options=A.options,this.toptoolbarTbody=null,this.BORDERSTYLE="solid 1px #ccc",this.toolbarbkcolor="#fcfcfc"},destroy:function(){},getButtons:function(){return this.toolbar.getElementsByTagName("img")},show:function(A){this.toolbarrow.style.display=A?"":"none"},createToolbars:function(A){var g=["H","C","N","O","S","P","F","Cl","Br","..."];this.options.query&&g.push("●");var C={border:this.BORDERSTYLE,background:JSDraw2.Skin.jsdraw.bkcolor},I=this.editor,t=scil.Utils.createTable(null,0,0,C);this.toolbar=t,dojo.connect(t.parentNode,"onclick",(function(A){I.onSelBtn(null==A?window.event:A),A.preventDefault()})),scil.Utils.unselectable(t.parentNode);var e=JSDraw2.Skin.jsdraw.bkcolor;"si"==this.options.skin?e+=" url("+JSDraw2.Skin.jsdraw.toolbarbk+") repeat-x ":null!=JSDraw2.Skin.jsdraw.bkimg&&(e+=" url("+JSDraw2.Skin.jsdraw.bkimg+") repeat-x ");var i=scilligence.Utils.createElement(t,"tr",null,{background:e});this.toolbarrow=i;var l=scilligence.Utils.imgTag("jsdraw.gif",null,"title='"+this.res("About JSDraw")+"' style='width:"+this.options.btnsize+"px;height:"+this.options.btnsize+"px;' cmd='jsdraw'");this.isSkinW8()||scilligence.Utils.createElement(i,"td",l,{paddingLeft:"3px"});var s=scilligence.Utils.createTable(scilligence.Utils.createElement(i,"td"),0,0,{marginTop:"si"==this.options.skin?"8px":"2px",marginBottom:"1px"});if(scilligence.Utils.isTouch&&!scilligence.Utils.isIE&&dojo.connect(s.parentNode,"ontouchmove",(function(A){A.preventDefault()})),this.isSkinW8()&&(s.parentNode.align=null==this.options.toolbaralign?"center":this.options.toolbaralign,null!=this.options.toolbarleftmargin&&(s.parentNode.style.marginLeft=this.options.toolbarleftmargin)),this.toptoolbarTbody=s,this.recreateTopToolbar(),i=scilligence.Utils.createElement(t,"tr"),!this.isSkinW8()){td=scilligence.Utils.createElement(i,"td",null,{verticalAlign:"top",backgroundPosition:"left"}),s=scilligence.Utils.createTable(td,1,null,{color:"#000"});C={width:this.options.btnsize+"px",height:this.options.btnsize+"px",fontWeight:"bold",cursor:"default",textAlign:"center",verticalAlign:"middle",padding:"2px"};1!=this.options.scale&&(C.fontSize=100*this.options.scale+"%");for(var o=0;o"),t.insertBefore(td,t.firstChild),e.insertBefore(scilligence.Utils.createElement(null,"td"),e.firstChild)),td=scilligence.Utils.createElement(null,"td"),t.insertBefore(td,t.firstChild),e.insertBefore(scilligence.Utils.createElement(null,"td"),e.firstChild)):(0==n++&&(td=scilligence.Utils.createElement(t,"td","separator"),scilligence.Utils.createElement(e,"td")),td=scilligence.Utils.createElement(t,"td"),scilligence.Utils.createElement(e,"td")),this.createBtnImg(td,s[i].iconurl,null,null,s[i].tooltips,null,s[i].width,s[i].label),this.editor.connectHandlers.push(dojo.connect(td,"onclick",this._makePluginFun(s[i].onclick)))}}},createButtons:function(A){var g=[],C=[{c:"triple",t:"Triple bond",label:"Triple"},{c:"up",t:"Wedge bond",label:"Up"},{c:"down",t:"Hash bond",label:"Down"},{c:"wiggly",t:"Wiggle bond",label:"Wiggle"},{c:"delocalized",t:"Delocalized bond",label:"Delocalized"},{c:"either",t:"Either double bond",label:"Either"},{c:"boldhash",t:"Hashed bond",label:"Hashed"},{c:"bold",t:"Bold bond",label:"Bold"},{c:"dummy",t:"Ionic bond",label:"Ionic"},{c:"unknown",t:"Dotted bond",label:"Dotted"}];this.options.query&&C.concat([{c:"singledouble",t:"Single or Double",label:"Single"},{c:"singlearomatic",t:"Single or Aromatic"},{c:"doublearomatic",t:"Double or Aromatic"}]);var I=this.isSkinW8()&&A<=400,t=[];0!=this.options.showfilemenu&&(t.push({c:"save",t:"Export",label:"Export"}),t.push({c:"open",t:"Import",label:"Import"}));var e=[{c:"lasso",t:"Lasso Selection",label:"Lasso"},{c:"selfrag",t:"Select Fragment",label:"Fragment"},{c:"selectall",t:"Select All",label:"All"}],i=!1;if(this.options.tlcplate)g.push({c:"new",t:"New",label:"New",sub:t}),g.push({c:"tlctemplate",t:"Template",label:"Template"}),g.push({c:"|"}),g.push({c:"spot-circle",t:"Circle Spot",label:"Circle",sub:[{c:"spot-hellipse",t:"Horizontal Ellipse Spot",label:"Ellipse"},{c:"spot-vellipse",t:"Vertical Ellipse Spot",label:"Ellipse"},{c:"spot-halfellipseup",t:"Half-Ellipse Spot",label:"Ellipse"},{c:"spot-halfellipsedown",t:"Half-Ellipse Spot",label:"Ellipse"},{c:"spot-blowingup",t:"Blowing-up Spot",label:"Blowing"},{c:"spot-blowingdown",t:"Blowing-down Spot",label:"Blowing"},{c:"spot-crescentup",t:"Crescent Spot",label:"Crescent"},{c:"spot-crescentdown",t:"Crescent Spot",label:"Crescent"}]}),g.push({c:"eraser",t:"Eraser",label:"Eraser"}),g.push({c:"|"}),g.push({c:"tlc",t:"TLC Plate",label:"TLC"}),g.push({c:"tlcnumber",t:"Number Plate",label:"Number"}),g.push({c:"electrophoresis",t:"Electrophoresis Gel Plate",label:"Electrophoresis"}),g.push({c:"|"}),g.push({c:"text",t:"Text/Atom Label",label:"Text"}),g.push({c:"|"}),g.push({c:"undo",t:"Undo",label:"Undo"}),g.push({c:"redo",t:"Redo",label:"Redo"}),g.push({c:"|"}),g.push({c:"center",t:"Move to center",label:"Center"}),g.push({c:"zoomin",t:"Zoom in",label:"Zoom"}),g.push({c:"zoomout",t:"Zoom out",label:"Zoom"}),i=!0;else if(this.options.workflow)g.push({c:"new",t:"New",label:"New",sub:t}),g.push({c:"|"}),g.push({c:"select",t:"Box Selection",label:"Box",sub:e}),g.push({c:"moveview",t:"Move/View",label:"Move"}),g.push({c:"zoombox",t:"Zoom Box",label:"Zoom"}),g.push({c:"|"}),g.push({c:"rectangle",t:"Rectangle",label:"Rectangle"}),g.push({c:"diamond",t:"Diamond",label:"Diamond"}),g.push({c:"ellipse",t:"Ellipse",label:"Ellipse"}),g.push({c:"dreversed",t:"D Reversed",label:"D Reversed"}),g.push({c:"dshape",t:"D Shapre",label:"D Shapre"}),g.push({c:"|"}),g.push({c:"arrow",t:"Reaction arrow",label:"Reaction"}),g.push({c:"text",t:"Text/Atom Label",label:"Text"}),g.push({c:"|"}),g.push({c:"eraser",t:"Eraser",label:"Eraser"}),g.push({c:"|"}),g.push({c:"undo",t:"Undo",label:"Undo"}),g.push({c:"redo",t:"Redo",label:"Redo"}),g.push({c:"|"}),g.push({c:"center",t:"Move to center",label:"Center"}),g.push({c:"zoomin",t:"Zoom in",label:"Zoom"}),g.push({c:"zoomout",t:"Zoom out",label:"Zoom"}),i=!0;else if(this.options.helmtoolbar)org.helm.webeditor.Interface.getHelmToolbar(g,t,e,this.options),0!=this.options.showabout&&(i=!0);else{this.options.pastechemdraw&&(t.push({c:"pastechemdraw",t:"Paste ChemDraw, ISIS/Draw...",label:"Paste"}),t.push({c:"copychemdraw",t:"Copy ChemDraw, ISIS/Draw, Word...",label:"Copy"})),this.isSkinW8()?(t.push({c:"about",t:"About JSDraw",label:"About"}),g.push({c:"new",t:"New",label:"New",sub:t})):g.push({c:"new",t:"New",sub:t,label:"New"}),scilligence.Utils.serviceAvailable()&&"Lite"!=JSDraw2.Security.kEdition&&g.push({c:"n2s",t:"Name to Structure",label:"N2S",sub:[{c:"cleanup",t:"Clean up",label:"Clean"}]}),g.length>0&&g.push({c:"|"}),this.options.appmode||(e.push({c:"copy",t:"Copy",label:"Copy"}),e.push({c:"cut",t:"Cut",label:"Cut"}),e.push({c:"paste",t:"Paste",label:"Paste"})),g.push({c:"select",t:"Box Selection",label:"Box",sub:e}),g.push({c:"center",t:"Move to center",label:"Center",sub:I?null:[{c:"zoomin",t:"Zoom in",label:"Zoom"},{c:"zoomout",t:"Zoom out",label:"Zoom"},{c:"rotate",t:"Rotate",label:"Rotate"},{c:"fliph",t:"Flip Horizontal",label:"Flip"},{c:"flipv",t:"Flip Vertical",label:"Flip"}]}),g.push({c:"moveview",t:"Move/View",label:"Move",sub:[{c:"zoombox",t:"Zoom Box",label:"Zoom"}]}),g.push({c:"|"}),g.push({c:"eraser",t:"Eraser",label:"Eraser"}),this.options.appmode||g.push({c:"undo",t:"Undo",label:"Undo",sub:[{c:"redo",t:"Redo",label:"Redo"}]}),g.push({c:"|"}),g.push({c:"single",t:"Single bond",label:"Single"}),g.push({c:"double",t:"Double bond",label:"Double",sub:C}),g.push({c:"chain",t:"Chain Tool",label:"Chain"}),g.push({c:"|"});var l=0,s=null;JSDraw2.SuperAtoms.read();var o={benzene:1,hexane:1,pentane:1,propane:1,butane:1,heptane:1,octane:1};for(var n in JSDraw2.SuperAtoms.templates){++l;var r=n,a=o[n.toLowerCase()]?n.toLowerCase():"template";l<=3?(s={c:a,cmd:"template."+n,label:r,t:r},g.push(s)):(null==s.sub&&(s.sub=[]),s.sub.push({c:a,cmd:"template."+n,label:r,t:r}))}if(JSDraw2.SuperAtoms.hasCustomTemplates()&&0!=this.options.showcustomtemplates&&s.sub.push({c:"templates",cmd:"template.[custom]",label:"Templates",t:"Custom Templates"}),g.push({c:"|"}),this.isSkinW8()){g.push({c:"e-C",t:"Element C",label:"Carbon",sub:[{c:"e-H",t:"Element H",label:"Hydrogen"},{c:"e-O",t:"Element O",label:"Oxygen"},{c:"e-N",t:"Element N",label:"Nitrogen"},{c:"e-S",t:"Element S",label:"Sulfur"},{c:"e-P",t:"Element P",label:"Phosphorus"},{c:"e-F",t:"Element F",label:"Fluorine"},{c:"e-Cl",t:"Element Cl",label:"Chlorine"},{c:"e-Br",t:"Element Br",label:"Bromine"},{c:"e-more",t:"Element Periodic Table",label:"P.T."}]})}if("Lite"!=JSDraw2.Security.kEdition&&(g.push({c:"text",t:"Text/Atom Label",label:"Text",sub:I?null:[{c:"sgroup",t:"SGroup - Tag Atom/Bond/Bracket",label:"SGroup"},{c:"bracket",t:"Bracket",label:"Bracket"},{c:"symbol",t:"Symbol",label:"Symbol"}]}),g.push({c:"rectangle",t:"Rectangle",label:"Rectangle",sub:[{c:"diamond",t:"Diamond",label:"Diamond"},{c:"ellipse",t:"Ellipse",label:"Ellipse"},{c:"dreversed",t:"D Reversed",label:"D Reversed"},{c:"dshape",t:"D Shapre",label:"D Shapre"},{c:"curve",t:"Curve",label:"Curve"},{c:"tlc",t:"TLC Plate",label:"TLC"},{c:"tlctemplate",t:"Template",label:"Template"},{c:"electrophoresis",t:"Electrophoresis Gel Plate",label:"Electrophoresis"},{c:"assaycurve",t:"Assay Curve",label:"Assay"},{c:"spectrum",t:"Spectrum",label:"Spectrum"}]})),g.push({c:"chargep",t:"Increase charges",label:"Charge",sub:[{c:"chargen",t:"Descrease charges",label:"Charge"}]}),this.options.rxn&&"Lite"!=JSDraw2.Security.kEdition&&(g.push({c:"|"}),g.push({c:"arrow",t:"Reaction arrow",label:"Reaction",sub:[{c:"plus",t:"Reaction Plus",label:"Plus"},{c:"rxn",t:"Clean up reaction",label:"Clean"},{c:"copyprod",t:"Copy reactants to products",label:"R->P"},{c:"rxnmap",t:"Map reaction",label:"Map"},{c:"rxnmap2",t:"Clear reaction map",label:"Clear"}]})),this.options.biology&&"Lite"!=JSDraw2.Security.kEdition&&(null!=this.editor.helm&&org.helm.webeditor.Interface.addToolbar(g,null,null,this.options),g.push({c:"seq",t:"Peptide Sequence",label:"Peptide",sub:[{c:"helix",t:"DNA Sequence",label:"DNA"},{c:"rna",t:"RNA Sequence",label:"RNA"},{c:"antibody",t:"Antibody",label:"Antibody"},{c:"protein",t:"Protein",label:"Protein"},{c:"gene",t:"Gene",label:"Gene"}]})),this.isSkinW8()&&this.options.inktools&&!I&&(g.push({c:"|"}),g.push({c:"inkred",t:"Ink - Red",label:"Ink",sub:[{c:"inkblue",t:"Ink - Blue",label:"Ink"},{c:"inkgreen",t:"Ink - Green",label:"Ink"},{c:"inkclear",t:"Clear Ink",label:"Clear1"},{c:"inkclearall",t:"Clear All Inks",label:"Clear"}]})),"Lite"!=JSDraw2.Security.kEdition&&this.options.sendquery){g.push({c:"|"});var h=[{c:"chemspider",t:"Search ChemSpider",label:"ChemSpider"}];0!=JSDraw2.defaultoptions.reaxys&&h.push({c:"reaxys",t:"Search Reaxys",label:"Reaxys"}),g.push({c:"pubchem",t:"Search PubChem",label:"PubChem",sub:h})}this.options.usechemdraw&&g.push({c:"chemdraw",t:"ChemDraw Editor",label:"ChemDraw"})}return null!=JSDraw2.Fullscreen&&(this.options.exitfullscreen?(g.push({c:"|"}),g.push({c:"fullscreen2",t:"Regular Size",label:"Fullscreen"})):this.options.fullscreen&&(g.push({c:"|"}),g.push({c:"fullscreen",t:"Fullscreen Size",label:"Fullscreen"}))),i&&(g.push({c:"|"}),g.push({c:"about",t:"About JSDraw",label:"About"})),this.isSkinW8()&&this.relayoutButtonsByWidth(g,A,null==this.options.plugins?0:this.options.plugins.length),g},relayoutButtonsByWidth:function(A,g,C){var I=Math.round(g/("w8"==this.options.skin?50:60))-A.length-C;if(I<0&&I<-8){for(var t=A.length-1;t>=0;--t)"|"==A[t].c&&A.splice(t,1);I=Math.round(g/("w8"==this.options.skin?50:60))-A.length-C}if(0!=I)if(I>0){for(t=0;t0;--t)if(g<500&&"|"==A[t].c)A.splice(t,1);else{var s=scil.Utils.indexOf(l,A[t].c);if(s>=0&&s+1<=I){for(;t>0&&"|"==A[t-1].c;)A.splice(t-1,1),--t;null==A[t-1].sub&&(A[t-1].sub=[]);e=A[t-1].sub;"si"==this.options.skin&&e.length>0&&e.push("|"),e.push(A[t]);var o=A[t].sub;if(A[t].sub=null,null!=o)for(var n=0;n");else{t=scilligence.Utils.createElement(A,"td");var o=null;o=this.isSkinW8()?"w8/"+C.c+".png":"img/"+C.c+".gif",e=this.createBtnImg(t,null!=C.img?C.img:scil.Utils.imgSrc(o),s,null!=C.cmd?C.cmd:C.c,this.res(C.t),null,null,this.res(C.label))}if(C.hidden&&(t.style.display="none"),null==C.sub)return null!=g&&scilligence.Utils.createElement(g,"td"),t;"si"==this.options.skin?(i=scil.Utils.createElement(e.parentNode.parentNode,"td","▼",{fontSize:"10px",color:"gray",borderTop:"solid 1px #ccc",borderRight:"solid 1px #ccc",borderBottom:"solid 1px #ccc"}),this.setHoverable(i)):i=null==g?scilligence.Utils.createElement(A,"td","▼",{fontSize:this.options.btnsize/2+"px",verticalAlign:"bottom",color:"gray"}):scilligence.Utils.createElement(g,"td",null,{height:"10px",background:scil.Utils.imgSrc("w8/handle.png",!0)+" no-repeat center center"}),C.hidden&&(i.style.display="none"),scilligence.Utils.isTouch?(dojo.connect(t,"ontouchmove",(function(){JSDraw2.Menu.open(s+"_sub")})),dojo.connect(i,"onclick",(function(){JSDraw2.Menu.open(s+"_sub")}))):(window.navigator.msPointerEnabled&&dojo.connect(t,"onMSPointerMove",(function(A){1==A.buttons&&JSDraw2.Menu.open(s+"_sub")}),!1),this.isSkinW8()?(dojo.connect(i,"onclick",(function(){JSDraw2.Menu.open(s+"_sub")})),i.setAttribute("title",this.res("click to expand")),dojo.connect(i,"onmouseover",(function(A){(A.target||A.srcElement).style.backgroundImage=scil.Utils.imgSrc("w8/handle2.png",!0)})),dojo.connect(i,"onmouseout",(function(A){(A.target||A.srcElement).style.backgroundImage=scil.Utils.imgSrc("w8/handle.png",!0)}))):(dojo.connect(i,"onmouseover",(function(){JSDraw2.Menu.open(s+"_sub")})),dojo.connect(i,"onmouseout",(function(){JSDraw2.Menu.closetime()})),dojo.connect(i,"onclick",(function(){JSDraw2.Menu.close()}))));var n=scil.Utils.createTable(t,0,0,{display:"none",zIndex:99999999,borderRadius:Math.round(("si"==this.options.skin?3:4)*this.options.btnsize/40)+"px",position:"absolute",backgroundColor:"si"==this.options.skin?this.toolbarbkcolor:JSDraw2.Skin.jsdraw.bkcolor,border:this.BORDERSTYLE,padding:"2px"}),r=n.parentNode;r.id=s+"_sub",r.onmouseover=JSDraw2.Menu.cancelclosetime,r.onmouseout=JSDraw2.Menu.closetime;var a=C.sub,h=0,c="w8"!=this.options.skin||a.length<=5;c||(h=-(this.options.btnsize/2+4),r.style.marginLeft=h+"px"),scilligence.Utils.isIE&&scilligence.Utils.isIE<8&&!this.isSkinW8()&&(r.style.margin=this.options.btnsize+4+"px 0 0 "+(h-this.options.btnsize-2)+"px");A=null;for(var u=0;u0&&this.isSkinW8()&&(t.style.paddingTop=l+"px");o=null;o=this.isSkinW8()?"w8/"+B.c+".png":"img/"+B.c+".gif",this.createBtnImg(t,null!=B.img?B.img:scil.Utils.imgSrc(o),null,null!=B.cmd?B.cmd:B.c,this.res(B.t),s,null,this.res(B.label),!0)}else scil.Utils.createElement(t,"hr",null,{margin:"5px 0 0 0",padding:0})}return t},createBtnImg:function(A,g,C,I,t,e,i,l,s){null==i&&(i=this.options.btnsize);Math.round(2*i/20);if("si"==this.options.skin){s&&(A=scil.Utils.createElement(A,"div",null,{height:"32px"}));var o=scil.Utils.createTable(A,0,0,s?null:{margin:"0 2px 0 2px",backgroundColor:this.toolbarbkcolor}),n=scil.Utils.createElement(o,"tr"),r=scil.Utils.createElement(n,"td",null,s?null:{border:"solid 1px "+JSDraw2.Skin.jsdraw.bkcolor}),a=null,h=scilligence.Utils.createElement(r,"img",null,{marginTop:"-5px"},{src:g,alt:t}),c={marginTop:"-11px",width:i+"px",fontSize:"9px",textAlign:"center",color:"gray",whiteSpace:"nowrap",overflow:"hidden"};if(s){a=scil.Utils.createElement(n,"td");scil.Utils.isIE&&scil.Utils.isIE<8&&(c.fontSize=c.marginTop=c.width=null),c.textAlign="left",scil.Utils.createElement(a,"div",null==l||""==l?" ":l,c)}else scil.Utils.createElement(r,"div",null==l||""==l?" ":l,c);return this.setHoverable(s?A:r),null!=t&&(s?A:r).setAttribute("title",t),null!=I&&(s?A:r).setAttribute("cmd",I),null!=e&&(s?A:r).setAttribute("parent",e),null!=C&&((s?A:r).id=C),h}var u={textAlign:"center",padding:this.isSkinW8()?"2px 2px 0 2px":"2px",verticalAlign:"middle",width:i+"px",height:this.options.btnsize+"px"};if(this.isSkinW8()){var B=this.options.buttonshape+".png";u.background="url("+scil.Utils.imgSrc("w8/"+B)+") center center no-repeat",h=scilligence.Utils.createElement(A,"img",null,u,{src:g,alt:t}),scil.Utils.createElement(A,"div",null==l||""==l?" ":l,{width:i+"px",fontSize:"9px",textAlign:"center",color:"gray",whiteSpace:"nowrap",overflow:"hidden"})}else h=scilligence.Utils.createElement(A,"img",null,u,{src:g,alt:t});if(null!=I&&h.setAttribute("cmd",I),null!=t&&h.setAttribute("title",t),null!=e&&h.setAttribute("parent",e),null!=C&&(h.id=C),this.isSkinW8()){var E=this;this.editor.connectHandlers.push(dojo.connect(h,"onmouseover",(function(){this.style.backgroundImage=scil.Utils.imgSrc("w8/"+E.options.buttonshape+"1.png",!0)}))),this.editor.connectHandlers.push(dojo.connect(h,"onmouseout",(function(){this.style.backgroundImage=scil.Utils.imgSrc("w8/"+E.options.buttonshape+(null==this.getAttribute("pushed")?"":"0")+".png",!0)})))}else this.setHoverable(h);return h}})},2539:()=>{function getIEVersion(){return(!("Microsoft Internet Explorer"!=window.navigator.appName&&window.navigator.appName.indexOf("MSAppHost")<0)||window.navigator.appVersion.indexOf("Trident")>0&&document.documentMode>=11)&&(null==document.documentMode?"CSS1Compat"==document.compatMode?7:6:document.documentMode)}var __ieversion=getIEVersion(),__ieAppVersion=__ieversion?window.postMessage?window.performance?9:8:7:null;if(__ieversion){var silverlight="undefined"!=typeof JSDraw2_disablesilverlight&&JSDraw2_disablesilverlight?"":"silverlight,";dojo.version.major<=1&&dojo.version.minor<7?dojo.config.gfxRenderer=silverlight+"vml":__ieversion<9&&(dojo.config.gfxRenderer=silverlight+"vml,svg")}function _isHtml5(){return __ieversion?__ieversion>=9:null!=document.doctype&&null!=document.doctype.name&&"html"==document.doctype.name.toLowerCase()}function getAndroidVersion(){var A=window.navigator.userAgent,g=A.indexOf("Android");return!(g<0)&&(g=(A=A.substr(g+8)).indexOf(";"),(g=(A=A.substr(0,g)).indexOf("."))>0&&(A=A.substr(0,g)),!!isNaN(A)||parseFloat(A))}function getiOSVersion(){var A,g=window.navigator.userAgent;return(A=g.indexOf("iPad"))<0&&(A=g.indexOf("iPhone")),!(A<0)&&((A=g.indexOf("OS",A+4))<0||(A=(g=g.substr(A+3)).indexOf("_"),(A=(g=g.substr(0,A)).indexOf("."))>0&&(g=g.substr(0,A)),!!isNaN(g)||parseInt(g)))}dojo.require("dojo.io.script"),dojo.require("dojo.io.iframe"),dojo.require("dojox.gfx"),dojo.require("dojox.gfx.utils"),dojo.require("dojo.window"),"undefined"==typeof __JSDraw2_TouchMol&&(dojo.require("dojox.charting.Chart2D"),dojo.require("dojox.charting.axis2d.Default"),dojo.require("dojox.charting.plot2d.Default"),dojo.require("dojox.charting.themes.Wetland")),dojo.version.major<=1&&dojo.version.minor<=6||dojo.require("dojox.storage.LocalStorageProvider"),dojo.version.major<=1&&dojo.version.minor<7&&scil.onload((function(){dojox.gfx.Text.prototype._renderShape=function(A){var g=this.shape;A.save(),A.fillStyle=g.fillStyle,A.strokeStyle=g.fillStyle,A.font=g.fontStyle,A.textAlign=g.align,A.fillText(g.text,g.x,g.y),A.restore(),A.stroke()}})),scilligence.suggestInstallSilverlight=function(){"vml"==dojox.gfx.renderer&&confirm("JSDraw2.Editor runs much faster with Silverlight in IE 6,7,8. Do you want to install Silvelight now?")&&window.open("http://www.silverlight.net/downloads")},scilligence.Utils={__xcode:10,isIE:__ieversion,isIE8Lower:__ieversion&&__ieversion<9,nativemode:window.navigator.appName.indexOf("MSAppHost")>=0,isHtml5:_isHtml5(),isFirefox:navigator.userAgent.indexOf("Firefox")>=0,isOpera:navigator.userAgent.indexOf("Opera")>=0,isChrome:navigator.userAgent.indexOf("Chrome")>=0,isLinux:navigator.userAgent.indexOf("Linux")>=0,isUbuntu:navigator.userAgent.indexOf("Ubuntu")>=0,isIpad:getiOSVersion(),isAndroid:getAndroidVersion(),isTouch:navigator.userAgent.indexOf("iPad")>=0||navigator.userAgent.indexOf("iPhone")>=0||navigator.userAgent.indexOf("Android")>=0,isSilverlight:null,lastTouchTm:0,buttonWidth:160,getTopWindow:function(){for(var A=window;null!=A.parent&&A.parent!=A;)A=A.parent;return A},isRightButton:function(A){if(null!=A)return A.which?3==A.which:"button"in A&&2==A.button},isTouchDblClick:function(A){var g=(new Date).getTime(),C=g-scil.Utils.lastTouchTm;return scil.Utils.lastTouchTm=g,1==A.touches.length&&C<=500},hasAnsestor:function(A,g){if(null==g||null==A)return!1;for(;null!=A;){if(A.parentNode==g)return!0;A=A.parentNode}return!1},round:function(A,g){if(null==A||isNaN(A))return null;var C=Math.pow(10,g);return Math.round(A*C)/C},roundToSignificantDigits:function(A,g){if(0==A||isNaN(A))return A;var C=Math.pow(10,Math.floor(this.log10(Math.abs(A)))+1);return C*this.round(A/C,g)},log10:function(A){return Math.log(A)/Math.LN10},roundStr:function(A,g,C){if(null==A||isNaN(A))return"";if(0==A)return"0";var I=Math.pow(10,g),t=Math.round(A*I)/I+"";if("0"==t&&0!=A||g>0&&(Math.abs(A)<1/I||A<1&&t.length<(A+"").length)){var e=Math.floor(this.log10(A));if(e<1){var i=this.roundStr(A*Math.pow(10,-e),g,C)+"e"+e;return parseFloat(i)==parseFloat(t)?t:i}}if(0==C||g<=0)return t;var l=t.indexOf(".");l<0&&(l=(t+=".").length-1);for(var s=t.length-1-l;s=1e3?this.roundStr(A/1e3,g,I)+" "+this._convertUnit(C,1e3):Math.abs(A)>=1?this.roundStr(A,g,I)+" "+this._convertUnit(C,1):(A*=1e3,Math.abs(A)>=1?this.roundStr(A,g,I)+" "+this._convertUnit(C,.001):(A*=1e3,this.roundStr(A,g,I)+" "+this._convertUnit(C,1e-6))))},_convertUnit:function(A,g){switch(g){case 1:return"g/L"==A?"mg/mL":"U/L"==A?"mU/mL":A;case 1e3:return"g/L"==A?"g/mL":"U/L"==A?"U/mL":"k"+A;case.001:return"g/L"==A||"mg/mL"==A?"mg/L":"U/L"==A||"mU/mL"==A?"mU/L":"m"+A;case 1e-6:return"g/L"==A||"mg/mL"==A?"ug/L":"U/L"==A||"mU/mL"==A?"uU/L":"u"+A}},disabledcontextmenus:[],disableContextMenu:function(A,g){null!=A&&scil.Utils.indexOf(this.disabledcontextmenus,A)<0&&this.disabledcontextmenus.push(A),null==g&&(g=document),g.body.__contextmenudisabled||(g.body.__contextmenudisabled=!0,g.body.oncontextmenu=function(A){null==A&&(A=event);for(var g=A.target||A.srcElement,C=scil.Utils.disabledcontextmenus,I=0;I0||A.offsetTop>0)&&I.offset(A.offsetLeft,A.offsetTop),this.isIE&&(A.scrollLeft>0||A.scrollTop>0)&&I.offset(A.scrollLeft,A.scrollTop),scil.Utils.isIE&&(A.scrollTop>0||A.scrollLeft>0)&&I.offset(-A.scrollLeft,-A.scrollTop),A=A.offsetParent;return 0!=g&&I.offset(-C.x,-C.y),I},getScrollOffset:function(A){for(var g=new JSDraw2.Point(0,0);null!=A;)(A.scrollLeft>0||A.scrollTop>0)&&g.offset(A.scrollLeft,A.scrollTop),A=A.offsetParent;return g},scrollOffset:function(){var A=document.compatMode&&"BackCompat"!=document.compatMode?document.documentElement:document.body,g=scil.Utils.isIE?A.scrollLeft:pageXOffset,C=scil.Utils.isIE?A.scrollTop:pageYOffset;return new JSDraw2.Point(g,C)},scriptUrl:function(){if(null!=this._scripturl)return this._scripturl;if(null!=JSDraw2.defaultoptions.imagebase&&(this._scripturl=JSDraw2.defaultoptions.imagebase),null!=this._scripturl)return this._scripturl;for(var A=document.getElementsByTagName("script"),g=0;g0&&(i=i.substr(0,t)),this.startswith(i,"scilligence.jsdraw2.")&&this.endswith(i,".js")){if(scil.Utils.startswith(e,"http://")||scil.Utils.startswith(e,"https://")||scil.Utils.startswith(e,"//"))return this._scripturl=e;if(scil.Utils.startswith(e,"/"))return this._scripturl=document.location.protocol+"//"+document.location.host+e;var l=document.location+"";return(t=l.indexOf("?"))>0&&(l=l.substr(0,t)),t=l.lastIndexOf("/"),this._scripturl=l.substr(0,t+1)+e}if("jsdraw.core.js"==i)return this._scripturl=e+"../"}}return null},_imgBase:function(){return scil.Utils.scriptUrl()},imgSrc:function(A,g){var C=scil.Utils._imgBase()+A;return g&&(C="url("+C+")"),C},imgTag:function(A,g,C){return""+(null==g?"":g)},styleRect:function(A){return new JSDraw2.Rect(scil.Utils.parsePixel(A.style.left),scil.Utils.parsePixel(A.style.top),scil.Utils.parsePixel(A.style.width),scil.Utils.parsePixel(A.style.height))},parsePixel:function(A){return null!=A&&scil.Utils.endswith(A,"px")?(A=A.substr(0,A.length-2),isNaN(A)?null:parseInt(A)):null},cloneArray:function(A){var g=[];return this.mergeArray(g,A),g},mergeArray:function(A,g){for(var C=0;C=0||A.indexOf('"')>=0||A.indexOf("\r")>=0||A.indexOf("\n")>=0)&&(A='"'+A.replace(/[\"]/g,'""').replace(/\r\n/g,"")+'"'),A)},unescXmlValue:function(A){return null==A?"":A.replace(/</gi,"<").replace(/>/gi,">").replace(/ /gi,"\n").replace(/'/g,"'").replace(/"/g,'"').replace(/&/gi,"&")},escXmlValue:function(A,g){return null==A?"":("string"!=typeof A&&(A+=""),g&&(A=scil.Utils.trim(A)),A.replace(/&/g,"&").replace(//g,">").replace(/\r/g," ").replace(/\n/g," ").replace(/'/g,"'").replace(/"/g,"""))},escUrlData:function(A){if(null==A)return A;for(var g="",C=0;C255?t:"+"==t?"%2b":escape(t)}return g},escFileName:function(A){if(null==A)return A;for(var g="",C=0;C255||/[a-z|0-9|_| |\-|\(|\)|\{|\}|\[|\]|\.]/gi.test(I)?g+=I:g+="_"}return g},getFirstChild:function(A,g){if(null==A)return null;for(var C=0;C"!=A.substr(A.length-1,1))return null;var g=!1,C=null,I=null;try{window.DOMParser?I=(new DOMParser).parseFromString(A,"text/xml"):((I=new ActiveXObject("Microsoft.XMLDOM")).async="false",I.loadXML(A)),g=!0}catch(A){C=A.message}return{succeeded:g,error:C,doc:I}},xquery:function(A,g,C){if(null==A||null==g||""==g)return null;for(var I=null,t=g.split("/"),e=0;e0&&(s=i.substr(0,n),n+=2,o=i.substr(n,i.length-n-1));for(var r=null,a=0;a"+A+"",scil.Utils.alertdlg.img.src=I,scil.Utils.alertdlg.moveCenter()},confirm:function(A,g,C,I,t){if(null==scil.Utils.confirmdlg){var e=scil.Utils.createTable(),i=scil.Utils.createElement(e,"tr");scil.Utils.createElement(i,"td","",{verticalAlign:"top"});var l=scil.Utils.createElement(i,"td",null,{textAlign:"center"}),s=scil.Utils.createElement(l,"div",null,{padding:"10px",textAlign:"left",maxHeight:"360px",color:"black"}),o=scil.Utils.createElement(l,"button",this.res("Yes"),{width:"80px"}),n=scil.Utils.createElement(l,"button",this.res("No"),{width:"80px"}),r=scil.Utils.createElement(l,"button",this.res("Cancel"),{width:"80px"});scil.Utils.confirmdlg=new JSDraw2.Dialog(this.res("Attention"),e.parentNode),scil.Utils.confirmdlg.msg=s,scil.Utils.confirmdlg.cancel=r,dojo.connect(o,"onclick",(function(A){var g=scil.Utils.confirmdlg;g.hide(),A.preventDefault(),null!=g.callback&&g.callback(!0)})),dojo.connect(n,"onclick",(function(A){var g=scil.Utils.confirmdlg;g.hide(),A.preventDefault(),null!=g.callback&&g.callback(!1)})),dojo.connect(r,"onclick",(function(A){var g=scil.Utils.confirmdlg;g.hide(),A.preventDefault(),null!=g.callback&&g.callback("cancel")}))}scil.Utils.confirmdlg.show(),scil.Utils.confirmdlg.callback=g,scil.Utils.confirmdlg.cancel.style.display=C?"":"none",scil.Utils.confirmdlg.msg.innerHTML=null==A?"":"
"+A+"
",scil.Utils.confirmdlg.hide(!0),scil.Utils.confirmdlg.show(I,null,null,null,t)},confirmYes:function(A,g,C){scil.Utils.confirm(A,(function(A){A&&g()}),null,null,C)},prompt2:function(A){return this.prompt(A.caption,A.message,A.defaultvalue,A.button,A.callback,A.iconurl,A.zindex,A.multiline,A.autosuggesturl,A.owner,A.maxlength,A.height)},prompt:function(A,g,C,I,t,e,i,l,s,o,n,r){if(null==scil.Utils.promptdlg){var a=scil.Utils.createTable(),h=scil.Utils.createElement(a,"tr"),c=scil.Utils.createElement(scil.Utils.createElement(h,"td"),"div",null,{width:"50px"}),u=scil.Utils.createElement(h,"td"),B=scil.Utils.createElement(u,"div",null,{color:"black"}),E=scil.Utils.createElement(u,"div"),w=scil.Utils.createElement(E,"input",null,{width:"360px",display:"none"});w.setAttribute("x-webkit-speech","on");var d=scil.Utils.createElement(E,"textarea",null,{width:"360px",display:"none"}),m=(E=scil.Utils.createElement(u,"div",null,{textAlign:"center",paddingTop:"5px"}),scil.Utils.createElement(E,"button",I,{width:scil.Utils.buttonWidth+"px"}));(D=scil.Utils.promptdlg=new JSDraw2.Dialog(this.res("Message"),a.parentNode)).icon=c,D.msg=B,D.input=w,D.textarea=d,D.button=m;var Q=function(A){var g=D;g.hide(),null!=g.callback&&g.callback("none"==g.input.style.display?g.textarea.value:g.input.value,"none"==g.input.style.display?g.textarea:g.input),null!=A.preventDefault&&A.preventDefault()};dojo.connect(D.input,"onkeydown",(function(A){13==A.keyCode&&Q(A)})),dojo.connect(m,"onclick",Q),D.auto=new scil.AutoComplete(w,null)}var D;(D=scil.Utils.promptdlg).input.style.display=l?"none":"",D.textarea.style.display=l?"":"none",D.input.setAttribute("maxlength",n>0?n:""),r>0?(D.input.style.height=r+"px",D.textarea.style.height=r+"px"):(D.input.style.height="",D.textarea.style.height=""),D.auto.url=s,D.auto.disabled=null==s||""==s,D.show(A,i),null==e?D.icon.innerHTML=" ":(D.icon.innerHTML="",D.icon.style.display=""),D.msg.innerHTML=null==g?"":g,D.button.innerHTML=null==I?this.res("OK"):this.res(I),(l?D.textarea:D.input).value=null==C?"":C,D.callback=t,D.hide(!0),D.show2({owner:o}),(l?D.textarea:D.input).select(),(l?D.textarea:D.input).focus()},createCookie:function(A,g,C,I){if(!I){var t=null==dojox.storage||null==dojox.storage.LocalStorageProvider?null:new dojox.storage.LocalStorageProvider;if(null!=t&&t.isAvailable())return t.initialize(),void t.put(A,g)}var e="";if(C){var i=new Date;i.setTime(i.getTime()+24*C*60*60*1e3),e="; expires="+i.toGMTString()}document.cookie=A+"="+escape(g)+e+"; path=/"},readCookie:function(A,g){if(!g){var C=null==dojox.storage||null==dojox.storage.LocalStorageProvider?null:new dojox.storage.LocalStorageProvider;if(null!=C&&C.isAvailable())return C.initialize(),C.get(A)}for(var I=A+"=",t=document.cookie.split(";"),e=0;e0?A/1e3<1?A+"Bytes":(A/=1e3)/1e3<1?Math.round(10*A)/10+"KB":(A/=1e3)/1e3<1?Math.round(10*A)/10+"MB":(A/=1e3)/1e3<1?Math.round(10*A)/10+"GB":(A/=1024,Math.round(10*A)/10+"TB"):""},today:function(){return scil.Utils.trunc2date(new Date)},trunc2date:function(A){return null==A?null:new Date(A.getFullYear(),A.getMonth(),A.getDate())},time:function(A){if(null==A)return new Date;var g=null;if("string"==typeof A)if(/^[0-9]+$/.test(A))A=parseInt(A);else{var C=A.split("-");if(3==C.length){var I=parseInt(C[0]),t=3==C[1].length?this._parseMonth(C[1]):parseInt(C[1])-1,e=parseInt(C[2]);if(I>0&&t>=0&&t<12&&e>0&&e<=31)return new Date(I,t,e)}}null==g&&(g=new Date(A));var i=g.getTimezoneOffset();return isNaN(i)&&(i=0),new Date(g.getTime()+6e4*i)},_months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekday:function(A){return this._weekdays[A.getDay()]},_parseMonth:function(A){return null==A||3!=A.length?-1:(A=A.substr(0,1).toUpperCase()+A.substr(1).toLowerCase(),scil.Utils.indexOf(this._months,A))},formatTime:function(A,g){if(0==A)return"";null==A&&(A=new Date),"object"!=typeof A&&(A=scil.Utils.time(A)),JSDraw2.timezoneoffet>0&&(A=new Date(A.getTime()+60*JSDraw2.timezoneoffet*60*1e3));var C=g;scil.Utils.isNullOrEmpty(C)&&(C="yyyy-mmm-dd");var I=(C=C.replace("yyyy",A.getFullYear()).replace("yy",(A.getFullYear()+"").substr(2)).replace("mmm",scil.Utils._months[A.getMonth()]).replace("mm",scil.Utils.padLeft(A.getMonth()+1,2,"0")).replace("dd",scil.Utils.padLeft(A.getDate(),2,"0"))).indexOf("hh")>=0,t=A.getHours();return C=C.replace("hh",this.padLeft(t%12,2,"0")).replace("HH",this.padLeft(t,2,"0")).replace("MM",this.padLeft(A.getMinutes(),2,"0")).replace("SS",this.padLeft(A.getSeconds(),2,"0")).replace("ss",this.padLeft(A.getSeconds(),2,"0")),I&&(C+=t>=12?"PM":"AM"),C},dateStr:function(A,g,C){if(scil.Utils.isNullOrEmpty(A)||0==A)return"";var I=typeof A;if("object"!=I&&"number"!=I&&"string"!=I)return"";var t=A;if("object"!=I&&null==(t=scil.Utils.time(t)))return"";var e=(scil.Utils.today().getTime()-scil.Utils.trunc2date(t).getTime())/1e3/60/60/24,i=null;return g||(0==e?i=JSDraw2.Language.res("Today"):1==e&&(i=JSDraw2.Language.res("Yesterday"))),null==i&&(scil.Utils.isNullOrEmpty(C)&&(C=JSDraw2.defaultoptions.dateformat,scil.Utils.isNullOrEmpty(C)&&(C="yyyy-mmm-dd")),"string"==typeof A&&(t=new Date(t)),i=scil.Utils.formatTime(t,C)),i},timeStr:function(A,g,C){if(scil.Utils.isNullOrEmpty(A)||0==A)return"";if("string"==typeof A)return"new"==A?""+JSDraw2.Language.res("New")+"":A;if(null==A)return"";"object"!=typeof A&&(A=scil.Utils.time(A));var I=null!=C?C:JSDraw2.defaultoptions.timeformat;return scil.Utils.isNullOrEmpty(I)&&(I="HH:MM"),scil.Utils.dateStr(A,g)+" "+scil.Utils.formatTime(A,I)},createButton:function(A,g,C){if("string"==typeof A&&(A=dojo.byId(A)),null!=g){if("string"!=typeof g){var I=(null==C?scil.Lang:C).res(g.caption||g.label),t=scil.Lang.res(g.title);null==g.src&&null!=g.iconurl&&(g.src=g.iconurl),null==g.title&&null!=g.tooltips&&(g.title=g.tooltips);var e=null;if("b"==g.type){var i=scil.Utils.createTable(A,0,0,{float:null==g.float?"left":g.float,textAlign:"center",margin:0,borderRadius:"2px"});e=i.parentNode,null!=g.id&&e.setAttribute("id",g.id),scil.Utils.createElement(scil.Utils.createElement(i,"tr"),"td","0?" height='"+g.imgheight+"'":"")+">",{padding:"3px 12px 0 12px"}),scil.Utils.createElement(scil.Utils.createElement(i,"tr"),"td",I,{color:"#fff",fontSize:"60%"})}else null==I&&null!=(g.src||g.icon)?e=this.createElement(A,"img",null,{width:g.width,cursor:"pointer",verticalAlign:"middle"},{src:g.src||g.icon,title:g.title,id:g.id}):(null!=g.src&&(I="0?" height='"+g.imgheight+"'":"")+">"+I),e="a"==g.type?this.createElement(A,null!=g.tagname?g.tagname:""==I||null==I?"span":"u",I,{width:g.width,cursor:"pointer",background:g.background,whiteSpace:"nowrap"},{title:t,id:g.id}):this.createElement(A,"button",I,{width:g.width,background:g.background,padding:g.padding},{title:t,id:g.id}));if(null!=g.items&&("IMG"==e.tagName||"U"==e.tagName)){var l=this.createElement(A,"span",null);l.appendChild(e),e=l}var s=null==g.highlightcolor?JSDraw2.Skin.menu.highlightcolor:g.highlightcolor,o=null==g.color?"b"==g.type?"":JSDraw2.Skin.menu.color:g.color;return e.style.color=o,"b"==g.type?(scil.connect(e,"onmouseover",(function(){e.style.background=s})),scil.connect(e,"onmouseout",(function(){e.style.background=o}))):(scil.connect(e,"onmouseover",(function(){e.style.color=s})),scil.connect(e,"onmouseout",(function(){e.style.color=o}))),null!=g.items?(null==g.callback&&(g.callback=function(A){if(null!=g.onclick)g.onclick(A);else for(var C=0;C")}else(i=document.createElement("input")).type=g;else i=document.createElement(g);if(null!=A&&A.appendChild(i),null!=C&&("radio"==g||"checkbox"==g?this.createElement(A,"span",C):i.innerHTML=C),null!=I)for(var s in I){var o=I[s];null!=o&&("width"!=s&&"height"!=s&&"padding"!=s&&"margin"!=s||"number"!=typeof o||(o+="px"),i.style[s]=o)}if(null!=t)for(var s in t)null!=t[s]&&i.setAttribute(s,t[s]);return null!=e&&dojo.connect(i,"onclick",(function(A){e(A,i)})),i},createTable:function(A,g,C,I,t){var e=this.createElement(A,"table",null,I);return null!=g&&(e.cellSpacing=g),null!=C&&(e.cellPadding=C),t>=0&&(e.border=t),this.createElement(e,"tbody")},createTable2:function(A,g,C){var I=this.createElement(A,"table",null,g,C);return this.createElement(I,"tbody")},createTR:function(A,g){return scil.Utils.createElement(A,"tr",g)},createTD:function(A,g){return"TR"!=A.tagName&&(A=this.createTR(A)),scil.Utils.createElement(A,"td",g)},createCenterBox:function(A,g){var C=this.createTable(A,0,0,null,g);C.parentNode.setAttribute("align","center");var I=this.createElement(C,"tr");return this.createElement(I,"td",null,{textAlign:"left"})},createSelect:function(A,g,C,I,t){var e=this.createElement(A,"select",null,t);return this.listOptions(e,g,C,!1,I),e},listOptions:function(A,g,C,I,t){if(null!=I&&this.removeAll(A),null!=g)if(null!=g.length){t&&g.sort();for(var e=0;e=0;--g)A.removeChild(A.childNodes[g])},getParent:function(A,g){for(g=g.toUpperCase();null!=A;){if(null!=A.tagName&&A.tagName.toUpperCase()==g)return A;A=A.parentNode}return A},testParent:function(A,g){if(null==A||null==g)return!1;for(;null!=A;){if(A.parentNode==g)return!0;A=A.parentNode}return!1},firstElement:function(A,g){if(null==A)return null;for(var C=0;C=0;--I)A[I]==g&&(A.splice(I,1),++C);return C},post:function(A,g,C){for(var I in null==this.form&&(this.form=scil.Utils.createElement(document.body,"form",null,{display:"none"})),scil.Utils.removeAll(this.form),g){var t=scil.Utils.createElement(this.form,"textarea");t.name=I,t.value=g[I]}this.form.target=C,this.form.method="post",this.form.action=A,this.form.submit()},postIframe:function(A,g){null==this.postform&&(this.postform=scil.Utils.createElement(document.body,"form",null,{display:"none"})),dojo.io.iframe.send({url:A,form:this.form,method:"POST",content:g,timeoutSeconds:5,preventCache:!0,handleAs:"text",error:function(A){},handle:function(A){}})},alert:function(A){scil.Utils.isNullOrEmpty(A)||(A.length>1e3&&(A=A.substr(0,1e3)+"..."),scil.Utils.nativemode?this.alert2(A,"JSDraw2.Editor Message"):alert(A))},download:function(A,g){if(A.indexOf("?")>0?A+="&__tm="+(new Date).getTime():A+="?__tm="+(new Date).getTime(),scil.Utils.startswith(A,"http://")){var C={url:A,callbackParamName:"callback",load:g,error:function(A){alert(A)}};dojo.io.script.get(C)}else{var I={url:A,handleAs:"text",load:g,error:function(A){}};dojo.xhrGet(I)}},ajax:function(A,g,C,I){null==I&&(I={});var t={url:A,sync:I.sync,handleAs:"text",content:scil.Utils.stupidTomcatBug(C),timeout:I.timeout,error:function(A){I.showprogress&&scil.Progress.hide(),null!=I.onError?I.onError(A):scil.Utils.alert(A.message)},load:function(A){I.showprogress&&scil.Progress.hide(),scil.Utils.ajaxCallback(A,g,I.onError,I.ignoresucceedcheck),null!=scil.User&&null!=scil.User.onAjax&&scil.User.onAjax()}};switch(I.showprogress&&scil.Progress.show(null==I.caption?"Loading ...":I.caption,!1,null==I.message?"Communicating with the server ...":I.message,!1),null!=scil.Utils.onajaxcall&&scil.Utils.onajaxcall(t,I),null!=I.headers&&(t.headers=I.headers),I.verb){case"delete":case"del":dojo.xhrDelete(t);break;case"put":dojo.xhrPut(t);break;case"get":dojo.xhrGet(t);break;default:dojo.xhrPost(t)}},stupidTomcatBug:function(A){return A},ajaxwait:function(A,g){var C=null;return this.ajax(A,(function(A){C=A}),g,{sync:!0}),C},jsonp:function(A,g,C,I){if(null==I&&(I={}),null==C?C={wrapper:"jsonp"}:C.wrapper="jsonp",scil.Utils.startswith(A,"//")){var t=(window.location+"").toLowerCase();A=scil.Utils.startswith(t,"https:")?"https:"+A:"http:"+A}var e=A.indexOf("?");if(A+=e<0?"?":"&",A+="__jsdraw_timestamp__="+(new Date).getTime(),I.showprogress&&scil.Progress.show(null==I.caption?"Loading ...":I.caption,!1,null==I.message?"Communicating with the server ...":I.message,!1),null!=I.xdomainurl)scil.Utils.postXdomainData(I.xdomainurl,(function(C){scil.Utils.jsonp(A,(function(A){I.showprogress&&scil.Progress.hide(),null!=g&&g(A)}),{_xfilename:C})}),C);else{var i={url:A,callbackParamName:"callback",content:scil.Utils.stupidTomcatBug(C),error:function(A){I.showprogress&&scil.Progress.hide(),null!=I.onError?I.onError(A):scil.Utils.alert(A.message)},load:function(A){I.showprogress&&scil.Progress.hide(),scil.Utils.ajaxCallback(A,g,I.onError,I.ignoresucceedcheck)}};null!=scil.Utils.onjsonpcall&&scil.Utils.onjsonpcall(i),dojo.io.script.get(i)}},getZindex:function(A){for(;null!=A;){if(null!=A.style&&""!=A.style.zIndex&&null!=A.style.zIndex)return parseInt(A.style.zIndex);A=A.parentNode}return 1},onAjaxCallback:null,ajaxCallback:function(data,callback,onError,ignoresucceedcheck){var ret=null;switch(typeof data){case"string":try{eval("var o="+data),ret=o}catch(A){return void scil.Utils.alert("Error when parsing Ajax results:\n"+A.message+"\n"+data)}break;case"object":ret=data;break;default:scil.Utils.alert("Unknown return format")}if(null==scil.Utils.onAjaxCallback||!scil.Utils.onAjaxCallback(ret))if(1==ignoresucceedcheck)null!=callback&&callback(ret);else if(ret.succeed)null!=callback&&callback(ret.ret);else{if(null!=scil.User&&null!=scil.User.needLogin&&scil.User.needLogin(ret))return;null!=onError?onError(ret):"None"==ret.errcode?scil.Utils.alert(ret.error):scil.Utils.alert("["+(null==ret.errcode?"ERROR":ret.errcode)+"]: "+ret.error)}},ajaxUploadFile:function(A,g,C,I){if(null==C&&(C={}),g.toLowerCase().indexOf("wrapper=textarea")<0){var t=g.indexOf("?");g+=t>0?"&wrapper=textarea":"?wrapper=textarea"}null==scil.Utils.___ajaxUploadFile&&(dojo.config.dojoBlankHtmlUrl=scil.Utils.imgSrc("blank.html"),dojo.io.iframe.send({url:dojo.config.dojoBlankHtmlUrl,form:A,method:"get",content:C,timeoutSeconds:60,preventCache:!0,handleAs:"text"}),scil.Utils.___ajaxUploadFile),dojo.io.iframe.send({url:g,form:A,method:"post",content:C,timeoutSeconds:60,preventCache:!0,handleAs:"text",error:function(A){scil.Progress.hide(),scil.Utils.alert(A.message)},handle:function(A){scil.Progress.hide(),scil.Utils.ajaxCallback(A,I)}}),scil.Progress.show("Uploading",!1,"Communicating with the server ...",!1)},ajaxPostFile:function(A,g,C,I){if(null==C&&(C={}),g.toLowerCase().indexOf("wrapper=textarea")<0){var t=g.indexOf("?");g+=t>0?"&wrapper=textarea":"?wrapper=textarea"}dojo.io.iframe.send({url:g,form:A,method:"post",content:C,timeoutSeconds:5,preventCache:!0,handleAs:"text",handle:function(A){null!=I&&I(A)}})},res:function(A){return JSDraw2.Language.res(A)},UploadFileDlg:scilligence.extend(scilligence._base,{callback:null,url:null,params:null,msg:null,checkfiles:null,dlg:null,btn:null,tbody:null,files:[],constructor:function(A){var g=JsUtils.createElement(null,"div","
");this.form=g.firstChild,this.tbody=JsUtils.createTable(this.form,null,null,{margin:"6px",width:"350px"},{align:"center"});var C=JsUtils.createElement(this.tbody,"tr");this.msg=JsUtils.createElement(C,"td"),this.msg.colSpan=2,null!=A&&1==A&&(A=5);var I=1;if(A&&scil.Utils.isIE&&scil.Utils.isIE<10)I=A>1?A:5;var t={size:26,name:"file"};A&&1==I&&(t.multiple="multiple");for(var e=0;e"+scil.Utils.res("From Mobile")+":",null,{valign:"top"});var l=JsUtils.createElement(C,"td");this.mobileimages=JsUtils.createElement(l,"hidden",null,null,{name:"mobileimages"}),scil.Utils.createButton(l,{label:"Show",type:"a",onclick:function(){i.showImageList()}}),this.imagelistdiv=JsUtils.createElement(l,"div",null,{display:"none"}),this.imagelist=scil.MobileData.createImageList(this.imagelistdiv,A)}C=JsUtils.createElement(this.tbody,"tr",null,{display:"none"}),JsUtils.createElement(C,"td","Password:"),JsUtils.createElement(JsUtils.createElement(C,"td"),"password",null,null,{name:"jsdraw.upload.password"}),this.passwordRow=C,JsUtils.createElement(JsUtils.createElement(this.tbody,"tr"),"td"," "),C=JsUtils.createElement(this.tbody,"tr"),JsUtils.createElement(C,"td"),this.btn=JsUtils.createElement(scil.Utils.createElement(C,"td"),"button",""+scil.Utils.res("Upload")),this.dlg=new JSDraw2.Dialog("Upload File",g)},showImageList:function(){"none"==this.imagelistdiv.style.display?(this.imagelistdiv.style.display="",scil.MobileData.listImages(this.imagelist,this.params)):this.imagelistdiv.style.display="none"},show:function(A,g,C,I,t,e,i,l){this.dlg.show(A),this.postonly=i,this.checkfiles=l,null!=this.imagelistdiv&&(this.imagelistdiv.style.display="none",this.imagelist.clear());var s=this;null!=this.btn&&(dojo.connect(this.btn,"onclick",(function(A){s.show2(),A.preventDefault()})),this.btn=null),this.callback=function(A){null!=I&&I(A),s.dlg.hide()},this.url=C,this.params=t,this.form.reset(),this.passwordRow.style.display=e?"":"none",this.msg.innerHTML=g},show2:function(){if(null!=this.mobileimages&&(this.mobileimages.value=scil.MobileData.getSelectedImages(this.imagelist)),this.postonly){var A=this.files[0].value,g=A.lastIndexOf("\\");g>0&&(A=A.substr(g+1));var C=(new Date).getTime(),I=null==this.params?{}:scil.clone(this.params);I._xfilename=C+"_"+A;var t=this;scil.Utils.ajaxPostFile(this.form,this.url,I,(function(){t.callback(I._xfilename)}))}else{t=this;if(this.checkfiles){for(var e=[],i=this.files[0].files,l=0;l0?g?", ":",":"")+this.json2str(A[e],g,C);return t+=g?" ]":"]"}t=g?"{ ":"{";var i=0;for(var l in A)null!=l&&""!=l&&null!=A[l]&&"_"!=l.substr(0,1)&&(++i>1&&("}"==t.substr(t.length-1,1)?t+=g?",\r\n":",":t+=g?", ":","),!C&&/^[a-z|_]+[0-9|a-z|_]{0,1000}$/.test(l)?t+=l:t+=I+l+I,t+=(g?": ":":")+this.json2str(A[l],g,C));return t+=g?" }":"}"}return"null"},getMaxZindex:function(){var A=this.getMaxZindex2("div"),g=this.getMaxZindex2("iframe"),C=this.getMaxZindex2("table");return Math.max(Math.max(A,g),C)},getMaxZindex2:function(A){for(var g="mce-fullscreen"==document.body.className?101:1,C=document.getElementsByTagName(A),I=0;Ig&&(g=e)}}return g},isAllParentVisible:function(A){if(null==A)return!1;for(;null!=A&&null!=A.style;){if("none"==A.style.display)return!1;A=A.parentNode}return!0},xml2Json:function(A,g){if(null==A)return null;var C=A.getElementsByTagName(g);if(null==C||0==C.length)return null;for(var I=[],t=0;t"+C+"":"/>"},joinArray:function(A,g){if(null==A&&null==g)return null;if(null==A)return g;if(null==g)return A;var C=[];if("string"==typeof A||null==A.length)C.push(A);else for(var I=0;I0;){var I=(A-1)%26;C=String.fromCharCode(I+(g?97:65))+C,A=(A-I-1)/26}return C},isImg:function(A){return"gif"==A||"png"==A||"jpg"==A||"jpeg"==A||"tif"==A||"tiff"==A||"bmp"==A},isOfficeFile:function(A){return"doc"==A||"docx"==A||"rtf"==A||"ppt"==A||"pptx"==A||"xls"==A||"xlsx"==A},isPDF:function(A){return"pdf"==A},isSpectraFile:function(A){return"jdx"==A},isChemFile:function(A){return"cdx"==A||"cdxml"==A||"jsd"==A||"jsdraw"==A||"mol"==A||"sdf"==A||"mol2"==A||"cml"==A||"skc"==A||"tgf"==A||"mrv"==A||"rxn"==A||"rdf"==A||"helm"==A||"xhelm"==A},getFileExt:function(A){if(null==A)return null;var g=null==A?-1:A.lastIndexOf(".");return g<=0?null:A.substr(g+1)},isChildOf:function(A,g){if(null==g||null==A)return!1;for(;null!=A;){if(A.parentNode==g)return!0;A=A.parentNode}return!1},getElements:function(A,g,C){var I=[];if(null!=A&&null!=A.childNodes)for(var t=0;tt.l+t.w&&(A=null!=I?I-C.offsetWidth:t.l+t.w-C.offsetWidth),A<0&&(A=0),g+C.offsetHeight>t.t+t.h&&(g=t.t+t.h-C.offsetHeight),g<0&&(g=0),C.style.left=A+"px",C.style.top=g+"px"},unselectable:function(A){A.onselectstart=function(){return!1},A.setAttribute("unselectable","on"),dojo.style(A,{webkitTouchCallout:"none",webkiUserDelect:"none",khtmlUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",userSelect:"none"})},letter2num:function(A){if(scil.Utils.isNullOrEmpty(A))return 0;var g=0;A=A.toUpperCase();for(var C=0;C=65&&I<=90&&(g=26*g+(I-65+1))}return g},num2letter:function(A,g){for(var C="";A>0;){var I=(A-1)%26;C=String.fromCharCode(I+(g?97:65))+C,A=(A-I-1)/26}return C},connect:function(A,g,C){return dojo.connect(A,g,C)},array2str:function(A,g){if(null==A||0==A.length)return"";var C="";null==g&&(g=",");for(var I=0;I0&&(C+=g),null!=A[I]&&(C+=A[I]);return C},isDictEmpty:function(A){if(null==A)return!0;for(var g in A)return!1;return!0},getDictValues:function(A,g){if(null==A)return null;for(var C in null==g?g=[]:1==g&&(g=[""]),A)g.push(A[C]);return g},getDictKeys:function(A,g){if(null==A)return null;for(var C in null==g?g=[]:1==g&&(g=[""]),A)g.push(C);return g},getDictKeyByValue:function(A,g){if(null==A)return null;for(var C in A)if(A[C]==g)return C;return null},setEnv:function(A){null!=A&&""!=A&&(document.body.style.backgroundImage=scil.Utils.imgSrc("img/"+A+".gif",!0),document.body.style.backgroundRepeat="no-repeat")},sound:function(A){this.isIE&&this.isIE<9||(null==this.__sound&&(this.__sound=this.createElement(document.body,"audio",null,{display:"none"})),this.__sound.src!=A&&(this.__sound.src=A),this.__sound.play())},escapeHtml:function(A){return null==A?"":A.replace(/>/g,">").replace(/255?g+=2:++g;return g},areListEq:function(A,g){if(A==g)return!0;if(null==A&&null!=g||null!=A&&null==g||A.length!=g.length)return!1;for(var C=0;C0?A=A.substr(C):C=0;for(var e=0;null!=(I=g.exec(A));){var i=I.index,l=I+"";t.push({start:e+i+C,str:l}),e+=i+l.length,A=A.substr(i+l.length)}return t},isNumber:function(A,g){if("number"==typeof A)return!0;if(scil.Utils.isNullOrEmpty(A))return!1;var C=A.indexOf(".");if(C>0){var I=A.indexOf(",");I>0&&I|<|≥|≤]?[ ]{0,50}[-]?[0-9]+([.][0-9]{0,50})?([e|E][-|+][0-9]+)?([ ]{0,50}[±][0-9]{0,50}([.][0-9]{0,50})?)?$").test(A+""):!isNaN(A)},htmlDecode:function(A){if(scil.Utils.isNullOrEmpty(A))return A;var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":g.childNodes[0].nodeValue},html2Text:function(A){if(this.isNullOrEmpty(A))return A;var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":this.getInnerText(g)},parseNumber:function(A){var g=null==A?NaN:parseFloat(A);return isNaN(g)?null:g},isNullOrEmpty:function(A){return null==A||"string"==typeof A&&""==A},isNaN:function(A){return null==A||isNaN(A)},getOuterXml:function(A){return null==A?null:null!=A.xml?A.xml:(new XMLSerializer).serializeToString(A)},addCss:function(A){var g=document.createElement("style");g.type="text/css",g.styleSheet?g.styleSheet.cssText=A:g.innerHTML=A,document.getElementsByTagName("head")[0].appendChild(g)},insertAfterDict:function(A,g,C){var I=!1,t={};for(var e in A)e==C?I=!0:I&&(t[e]=A[e],delete A[e]);for(var e in g)A[e]=g[e];for(var e in t)A[e]=t[e]},insertBeforeDict:function(A,g,C){var I=!1,t={};for(var e in A)(e==C||I)&&(I=!0,t[e]=A[e],delete A[e]);for(var e in g)A[e]=g[e];for(var e in t)A[e]=t[e]},disableSelection:function(A){null!=A&&scil.apply(A.style,{webkitTouchCallout:"none",webkitUserSelect:"none",mozUserSelect:"none",msUserSelect:"none",userSelect:"none"})},getLastBarcode:function(A,g,C,I){scil.Utils.jsonp(null!=I?I:"JSDraw/Service.aspx?cmd=mobile.getlast",(function(g){A(g)}),{category:g,useremail:C})},beep:function(A){if("undefined"!=typeof Audio&&(null==this._beepobj&&(this._beepobj=new Audio("data:audio/wav;base64,UklGRtoEAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YbUEAAB9dXFpa3F4fYSLkZiUjoeCe3RuaWtze36GjJOZkYyGgHpybGhvc3uBiI2UmZCKhX93cWxob3Z9g4mQlZaPioN8dm9qanF4f4OLkZeUjoiBe3RvaWxzeICGi5OYlIuFgXlybWltdHuBiI6Ul5CLhn14cmlqcHV8g4mOl5ePiYR8dnBoa3F3foWKkZaVjoiBenVwZ2xyeoCFjZKXlIyGgHpza2lvdHmCh4+Tl5KKhX54cWtpb3Z9gYmPlpePiYN9dnBoa3F4foOLkZeWjYmAfHRvZ25yeX+FjZKXlIyFgXlza2lvc3uAh46Vl5CLhX93cWtqb3V9g4iQlZePioJ9dnFoa3F4foSKkZaUj4eBfHVuaWtzeX+GjJKYk4yGgHl0bWdudXt/iI2VmJCMhX53cWtqb3Z8g4iQlZaPioN8dnFoa3B4foSKkZeVjoiCe3RuaWxzeX+Gi5OXk42Gf3tzbGhtdXuBh4yVl5GMhH54cmtpcHV8g4mOlpaRiYN9dm9raXF4fYSLkJaWjoeCenZuaGxzeICFjJOXk4yHf3pzbWltdHqBiI2Ul5GNhH54cmtpbnd7gomQlZePi4J9dnBqanF3fYOLkJiUj4eBfHVuaWtzeX+FjJKYk4yHgHpzbGltc3uBh42Vl5GLhX92c2ppcXV8gomPlZiOioJ+dnFpaXF5fYOKkZeWjYiDenVuaWtzeIGFjJKXk42GgHl1bWhtdHt/h42Vl5KLhH93c2tob3V9g4iPlZePi4N8d3Bpa3F3foSJkZaWj4eCfHNvaGtyen+FjJGYlIuIgHl0bGhuc3uBh42Ul5KMg4B4cmtocXR8g4mPlZWRioJ9d29ram93foSJkZeUjomCe3VvaG1yd3+Hi5KYlI2GgHpzbmdtdHqBiIyVlpKLhH95cmppb3V8g4iOlpeQiYN+dnFqaXJ2fYSLj5iUj4iCfHRuaWxzeH+FjJGYk42Hf3tzbWhudHqAho6TmZGLhX94c2ppbnZ8gomOlpePi4J+dnBqanB3foOKkJeWjoiBfHRwaGxyeH+Gi5KYk46GgXpzbWdudHqAh46TmJGMhX54cmtpb3V8g4ePlZiPioR9dnFpa3B2foOKkZaVj4iBfHZuaWxyeX6EjZGYlI2GgXlzbmhuc3qBho2Ul5KLhX95cWtpcHV8gYiPlZePi4R8d3FpanB3foOKkJiVjomBe3ZuamtyeICFipOWlI6FgXp1a2psc3uAh46SmJKLhX94c2tocHR9goiOlZeRioN9d3BqaXF3foKLkJWVj4mBfHVvaWtyeH+Gi5KXloyHgHl0bmhuc3qAh42Tl5KMhX55cmtocHZ7goiOlZePioR8eHBqanF2fYSJkJiVj4iCfHZuaGxzeH2Hi5KXlY2FgHtzbWltc3qAh42UlpKMhX94c2tqbnZ6gomOlpaRi4N9d3FpanF2fYSKkJWWjomCe3ZvaWtxeX6Fi5KYk42HgXp0bmhtc3uAhoyUmJKLhYB4c2tocHR9gYiOlpeQioN9d3JqanB3fISJkJeVj4iBfnRwaWpyeX6FjJGXlI6GgHp1bGlucnqBhoyUmJKMhH94c21nb3V8gYmOlZeQi4N+d3FqaXB3fQA=")),this._beepobj.play(),A)){var g=this;setTimeout((function(){g._beepobj.play()}),300)}},textareaSelect:function(A,g,C){if(void 0!==A.selectionStart&&(A.focus(),A.selectionStart=g,A.selectionEnd=C),document.selection&&document.selection.createRange){A.focus(),A.select();var I=document.selection.createRange();I.collapse(!0),I.moveEnd("character",C),I.moveStart("character",g),I.select()}},fireEvent:function(A,g,C,I,t){var e;document.createEvent?(e=document.createEvent("HTMLEvents")).initEvent(g,null==C||C,null==I||I):(e=document.createEventObject()).eventType=g,null!=t&&scil.apply(e,t),e.eventName=g,document.createEvent?A.dispatchEvent(e):A.fireEvent("on"+e.eventType,e)},sum:function(A){return scil.Math.sum(A)},avg:function(A){return scil.Math.avg(A)},stdev:function(A){return scil.Math.stdev(A)}},scil.form={},JsUtils=scil.Utils,scil.Utils.padleft=scil.Utils.padLeft,scil.Utils.padright=scil.Utils.padRight},4364:(A,g,C)=>{"use strict";var I;C.r(g),C.d(g,{ButtonTypes:()=>I,Form:()=>e,FormInt:()=>t}),function(A){A.SELECT="select"}(I||(I={}));class t{constructor(A){this.T="FORM",this.options="boolean"==typeof A?{viewonly:A}:null==A?{}:A,this.lang=null==this.options.lang?scil.Lang:this.options.lang,this.viewonly=this.options.viewonly,this.items=null,this.tbody=null,this.fields=null,this.buttons=null}destory(){this.items=null,scil.Utils.removeAll(this.tbody),this.tbody=null,this.fields=null,this.buttons=null}getXml(A){var g=A?"":"\n";for(var C in this.fields){var I=this.fields[C],t=scil.Form.getFieldData(I,this.items[C]);null!=t&&""!=t&&(g+="","jsdraw"==I.stype||"xdraw"==I.stype||"jsdraw.table"==I.stype||"jsdraw.se"==I.stype||"jsdraw.fm"==I.stype||"table"==I.stype||"plate"==I.stype||"plates"==I.stype?g+=t:g+=scil.Utils.escXmlValue(t),g+="\n")}return A||(g+=""),g}setXml(A){try{var g=scil.Form.xml2Json(A);this.setData(g)}catch(A){alert("Error raised when setting form data: "+A.message)}}getData(A){var g={};for(var C in this.fields){var I=this.fields[C];if(null!=I){var t=scil.Form.getFieldData(I,this.items[C]);!A&&scil.Utils.isNullOrEmpty(t)||(g[C]=t)}}return g}setData(A,g){for(var C in this.setDirty(!1),this.fields){var I=this.fields[C];if(null!=I){var t=null;if(null!=A){t=A[C];var e=this.items[C];null==t&&null!=e&&(null!=e.alternativekey&&(t=A[e.alternativekey]),null==t&&null!=e.was&&(t=A[e.was]))}g?null!=t&&scil.Form.setFieldData(I,this.items[C],this.viewonly,t,A):scil.Form.setFieldData(I,this.items[C],this.viewonly,t,A)}}this.setDirty(!1)}setFieldValue(A,g,C){this.fields[A];scil.Form.setFieldData(this.fields[A],this.items[A],this.viewonly,g,C)}clear(){this.setData({})}onchange(A,g){this.dirty=!0,null!=this.options.onchange&&this.options.onchange(A,this,g)}setDirty(A){this.dirty=null==A||1==A}preventUnsaved(A){var g=this;scil.connect(window,"onbeforeunload",(function(C){if(g.dirty){null==A&&(A="WARNING: Form data are not saved yet.");var I=scil.Lang.res(A);return null!=C&&(C.returnValue=I),I}}))}switchForm(A){if(null==this.options.alternativeforms)return!1;if(null==this.alternativeforms&&(this.alternativeforms={},this.alternativeforms[""]={tbody:this.tbody,fields:this.fields,items:this.items}),null==this.alternativeforms[A]){var g=this.options.alternativeforms[A];null!=g&&(this.render2(g,this.parent,this.renderoptions),this.alternativeforms[A]={tbody:this.tbody,fields:this.fields,items:this.items})}var C=this.alternativeforms[A];for(var I in null==C&&(C=this.alternativeforms[""]),this.tbody=C.tbody,this.fields=C.fields,this.items=C.items,this.alternativeforms)this.alternativeforms[I].tbody.parentNode.style.display=I==A?"":"none";return!0}selectrow(A){this.highlightrow(this.items[A])}onselectrow(A){var g=A.target||A.srcElement,C=scil.Utils.getParent(g,"TD"),I=null;for(var t in this.items)if(null!=this.items[t]&&(this.items[t].td1==C||this.items[t].td2==C)){I=this.items[t];break}this.highlightrow(I)}highlightrow(A){this.currentrow!=A&&(null!=this.currentrow&&(this.currentrow.td1.style.backgroundColor=this.currentrowbckcolor,null!=this.currentrow.td2&&(this.currentrow.td2.style.backgroundColor="")),null!=A&&(this.currentrowbckcolor=A.td1.style.backgroundColor,A.td1.style.backgroundColor=JSDraw2.Skin.form.rowselectcolor,null!=A.td2&&(A.td2.style.backgroundColor=JSDraw2.Skin.form.rowselectcolor)),this.currentrow=A,null!=this.options.onselectrow&&this.options.onselectrow(A))}render(A,g,C){this.parent=A,this.renderoptions=C,this.render2(g,this.parent,this.renderoptions)}render2(A,g,C){var I=null==C?null:C.align,t=null==C?null:C.buttons,e="boolean"==typeof C?C:null==C||0!=C.immediately;let i;for(var l in this.tbody=null,this.fields={},this.items={},this.buttons=[],A)i=A[l],null!=i&&(this.items[l]=i,null==i.label&&null!=i.caption&&(i.label=i.caption),null!=JSDraw2.Table&&scil.Utils.indexOf(JSDraw2.Table.kNumberColumns,i.type)>=0&&(i.type="number",null==i.unit&&(i.unit=JSDraw2.Table.kDefaultUnits[i.type])));if(this.options.usepostform){var s=JsUtils.createElement(g,"div","
");this.postform=s.firstChild,g=this.postform}var o=this.options.cols;if(!(o>0))for(var n in o>1||(o=1),this.items)i=this.items[n],i.colspan>o&&(o=i.colspan);let r;var a=o;this.tbody=scil.Utils.createTable(g);for(var n in this.items)if(i=this.items[n],"function"!=typeof i){"group"==i.type?(r=scil.Utils.createElement(this.tbody,"tr"),a=o):null!=r&&o>1&&a0?i.colspan:1:(r=scil.Utils.createElement(this.tbody,"tr"),a=i.colspan>0?i.colspan:1);var h=this.newField(i,r,e,null==C?null:C.hidelabel,null==C?null:C.vertical);null!=h&&(i.field=this.fields[n]=h),"group"==i.type&&o>1?i.td1.colSpan=2*o:i.colspan>1&&(i.td2.colSpan=(i.td2.colSpan>0?i.td2.colSpan:1)+2*(i.colspan-1)),null!=h&&null!=this.options.onenter&&"INPUT"==h.tagName&&this.connectKeyEnter(h,this.options.onenter)}if(null!=this.options.onselectrow){var c=this;dojo.connect(this.tbody.parentNode,"onclick",(function(A){c.onselectrow(A)}))}if(null!=I&&this.tbody.parentNode.setAttribute("align",I),null!=t){r=scil.Utils.createElement(this.tbody,"tr"),scil.Utils.createElement(r,"td"," "),r=scil.Utils.createElement(this.tbody,"tr"),this.buttonTR=r,null!=C&&C.vertical||scil.Utils.createElement(r,"td");var u=scil.Utils.createElement(r,"td",null,{whiteSpace:"nowrap"});if(C.centerbuttons&&(u.style.textAlign="center"),t.length>0)for(var B=0;B0&&(scil.Utils.createElement(scil.Utils.createElement(this.tbody,"tr"),"td"," ",{fontSize:"50%"},{colSpan:2}),g=scil.Utils.createElement(this.tbody,"tr")),g.style.backgroundImage=scil.Utils.imgSrc("img/header-bg.gif",!0),g.style.backgroundRepeat="repeat-x";var i=dojo.clone(JSDraw2.Skin.form.labelstyles);scil.apply(i,{fontWeight:"bold",color:"#555",background:""}),0!=A.collapsible&&scil.apply(i,{backgroundImage:scil.Utils.imgSrc("img/collapse.gif",!0),backgroundPosition:"right",backgroundRepeat:"no-repeat"});var l=scil.Utils.createElement(g,"td",e,i,{colSpan:2});return 0!=A.collapsible&&dojo.connect(l,"onclick",(function(A){scil.Form.expand(A)})),A.group=l,A.td1=l,null}if("note"==A.type){l=scil.Utils.createElement(g,"td",null,null,{colSpan:2});var s=scil.Utils.createElement(l,"div",this.lang.res(A.label||A.str),A.style);return null!=A.color&&(s.style.color=A.color),A.td1=l,null}I?A.td1=scil.Utils.createElement(g,"td"):(A.required&&(e+="*"),scil.Utils.isNullOrEmpty(A.icon)?A.td1=scil.Utils.createElement(g,"td",e,JSDraw2.Skin.form.labelstyles):(A.td1=scil.Utils.createElement(g,"td"),scil.Utils.createElement(A.td1,"img",null,null,{src:A.icon}),scil.Utils.createElement(A.td1,"span",e)),null!=A.labelstyle&&scil.apply(A.td1.style,A.labelstyle)),t&&(g=scil.Utils.createElement(this.tbody,"tr"));l=scil.Utils.createElement(g,"td",A.leading,null,{valign:"top"});A.td2=l;var o=scil.Form.createField(l,A,this.viewonly,A.value,null,C,null,this);return"hidden"==A.type&&(g.style.display="none",g.setAttribute("hidden","1")),o}getFieldValue(A){return scil.Form.getFieldData(this.fields[A])}focus(A){scil.Form.focus(this.fields,A)}}class e extends t{static focus(A,g){if(null!=A){var C=null;if(null==g)for(var I in A){var t=A[I];if(!(null==t||"INPUT"!=t.tagName&&"TEXTAREA"!=t.tagName&&"SELECT"!=t.tagName||t.disabled||t.readOnly)){var e=scil.Utils.getParent(t,"TR");if(null!=e&&"none"!=e.style.display&&!t.disabled){C=t;break}}}else C=A[g];if(null!=C&&"none"!=C.style.dislay&&null!=C.focus)try{C.focus()}catch(A){}}}static mergeForm(A,g){if(null==A&&null==g)return null;var C={};if(null==A){for(var I in g)null!=g[I]&&(C[I]=g[I]);return C}if(null==g){for(var I in A)null!=A[I]&&(C[I]=A[I]);return C}for(var I in A)null==g[I]&&null!=A[I]&&(C[I]=A[I]);for(var I in g)null!=g[I]?C[I]=g[I]:delete C[I];return C}static createElement(A,g,C,I,t,e){return null!=t&&null!=t.title&&(t.title=scil.Lang.res(t.title)),scil.Utils.createElement(A,g,C,I,t,e)}static expand(A){var g=A.target||A.srcElement;if("TD"==g.tagName){var C=g.style.backgroundImage.indexOf("expand.gif")>0;g.style.backgroundImage=C?scil.Utils.imgSrc("img/collapse.gif",!0):scil.Utils.imgSrc("img/expand.gif",!0);for(var I=g.parentNode.nextSibling;null!=I&&1!=I.childNodes.length&&"1"!=I.getAttribute("buttonrow");)"1"!=I.getAttribute("hidden")&&(I.style.display=C?"":"none"),I=I.nextSibling}}static _isAllString(A){if(null==A||"object"!=typeof A)return!1;if(A.length>0)return!0;var g=0;for(var C in A){if("string"!=typeof A[C])return!1;++g}return g>0}static _getListItems(A){"function"==typeof A.items&&(A.items=A.items());var g=A.items;return null==g&&null!=A.options&&null!=A.options.items&&(g=A.options.items,A.items=g,A.options.items=null),null==g&&this._isAllString(A.options)&&(g=A.options,A.items=g,A.options=null),g}static createField(A,g,C,I,t,e,i,l){var s,o="input",n=g.type;switch(null==A||"input"!=n&&"select"!=n&&"date"!=n&&"color"!=n&&"radio"!=n&&"checkbox"!=n&&null!=n||(A.style.whiteSpace="nowrap"),!C||null!=n&&"input"!=n&&"select"!=n&&"editableselect"!=n&&"htmltext"!=n&&"multiselect"!=n&&"dropdowninput"!=n&&"dropdowncheck"!=n&&"date"!=n||null!=g.template||!i&&null!=g.unit||(n="html"),n){case"":case"hidden":case"date":case"color":case"editableselect":case"dropdowninput":case"dropdowncheck":case"multiselect":case"number":o="input";break;case"password":o="password";break;case"rawfile":case"postfile":o="file";break;case"htmltext":o="texarea";break;case"jsdraw":case"xdraw":case"jsdraw.fm":case"jsdraw.se":case"jsdraw.table":case"plate":case"plates":case"table":case"tabtext":case"richtext":case"plaintext":case"html":case"fileshelf":case"file":case"filepath":case"filelink":case"filedblink":case"subform":case"image":case"curve":case"sketches":case"code":case"signature":o="div";break;case"button":o="button";break;case"user":o="input",null==g.autosuggesturl&&(g.autosuggesturl="Ajax.ashx?cmd=user.suggest");break;default:null!=n&&(o=n)}if(g.viewonly&&(C=g.viewonly),C&&"textarea"==o&&(o="div"),"string"==typeof A&&(A=dojo.byId(A)),"checkbox"==n){var r=scil.Utils.createElement(A,"label",null,{whiteSpace:"nowrap"});s=scil.Utils.createElement(r,o,null,g.style,g.attributes),null!=g.str&&scil.Utils.createElement(r,"span",l.lang.res(g.str))}else s=scil.Utils.createElement(A,o,null,g.style,g.attributes),!C||"div"!=o||"htmltext"!=g.type&&"textarea"!=g.type||null==g.width||null!=g.style&&null!=g.style.maxWidth||("number"==typeof g.width?s.style.maxWidth=g.width+"px":s.style.maxWidth=g.width,s.style.wordWrap="break-word");if("select"==g.type&&this._getListItems(g),"select"==o){var a=this._getListItems(g);if(null!=a){var h=g.addblank;if(null==h)if(null==a.length){for(var c in h=!0,a)if(null==a[c]||""==a[c]){h=!1;break}}else(0==a.length||null!=a[0]&&""!=a[0])&&(h=!0);h&&scil.Utils.listOptions(s,[""]),scil.Utils.listOptions(s,a,I,null,0!=g.sort)}else null!=g.url&&scil.Form.listOptions(s,g.url)}if(!C&&null!=g.button)if(g.button.length>0)for(var u=0;u0&&(s.style.width=B+"px"),g.height>0&&(!C||"div"!=o||"htmltext"!=g.type&&"textarea"!=g.type)&&(s.style.height=g.height+"px"),null!=g.align&&(s.style.textAlign=g.align),C?"input"==o||"password"==o?(s.readOnly=!0,s.style.border="none"):"checkbox"!=o&&"select"!=o||(s.disabled=!0):(g.readonly||g.viewonly)&&("input"==o?s.readOnly=!0:"checkbox"!=o&&"radio"!=o&&"select"!=o||(s.disabled=!0)),"div"==o&&"textarea"!=n&&"html"!=n||(s.style.color=JSDraw2.Skin.form.fieldcolor),s.stype=n;var E=scil.clone(g);if(null!=g.options&&scil.apply(E,g.options),C&&(E.viewonly=C),"jsdraw"==n||"xdraw"==n){var w=function(){"xdraw"==n&&(s.style.height=""),s.jsd="jsdraw"==n||C?new JSDraw2.Editor(s,E):new scil.XDraw(s,E),scil.Utils.isNullOrEmpty(I)||scil.Form.setFieldData(s,g,C,I)};e?w():scil.ready(w)}else if("jsdraw.table"==n){w=function(){if(s.jsd=new JSDraw2.Table(null,E,s),null!=I&&s.jsd.setXml(I),g.rows>0)for(var A=s.jsd.getRowCount();A=0&&("INPUT"==s.tagName||"DIV"==s.tagName)&&(s.style.paddingLeft=s.style.paddingRight=g.padding+"px"),"INPUT"==s.tagName&&1!=s.disabled&&"checkbox"!=g.type&&"radio"!=g.type&&dojo.connect(s,"onfocus",(function(){s.select()})),null!=s.jsd&&(s.jsd.parentform=l),s}static createFieldButton(A,g,C,I){var t=scil.Utils.createButton(A,g);null!=t&&(null!=g.onclick2?dojo.connect(t,"onclick",(function(){g.onclick2(I,C)})):null!=g.ajaxurl&&dojo.connect(t,"onclick",(function(){scil.Utils.ajax(g.ajaxurl,(function(A){null!=g.append?I.value+=A+g.append:I.value=A}),{q:I.value})})))}static getFieldData(A,g){if(null==A)return null;if("jsdraw"==A.stype)return null!=g&&null!=g.dataformat?A.jsd.getData(g.dataformat):A.jsd.getXml();if("xdraw"==A.stype||"jsdraw.se"==A.stype||"jsdraw.fm"==A.stype||"table"==A.stype||"plate"==A.stype||"plates"==A.stype)return A.jsd.getXml();if("jsdraw.table"==A.stype)return 0==A.jsd.getRowCount()?null:A.jsd.getXml();if("checkbox"==A.type||"radio"==A.type)return A.checked;if("htmltext"==A.stype){var C=scil.Form.getEd(A);return null==C?A.innerHTML:scil.Richtext.getHtml(C)}return"file"==A.stype||"filelink"==A.stype||"filedblink"==A.stype||"filepath"==A.stype||"image"==A.stype||"curve"==A.stype||"sketches"==A.stype||"tabtext"==A.stype||"richtext"==A.stype||"plaintext"==A.stype||"subform"==A.stype?A.jsd.getXml():"code"==A.stype||"signature"==A.stype||"number"==A.stype?A.jsd.getValue():"password"==A.type?""==A.value?"":0!=g.encrypt&&null!=JSDraw2.password&&JSDraw2.password.encrypt&&null!=scil.Form.encryptpassword?scil.Form.encryptpassword(A.value):A.value:"postfile"==A.stype||"button"==A.stype?null:null==A.value?A.getAttribute("originalvalue"):""==A.value?null:A.value}static setFieldData(A,g,C,I,t){if(null!=g){var e=I;if(null!=g.render&&(I=g.render(I,t)),C&&g.maxlength>0&&"string"==typeof I&&I.length>g.maxlength&&(I=I.substr(0,g.maxlength-3)+"..."),"jsdraw"==A.stype||"xdraw"==A.stype||"jsdraw.table"==A.stype||"jsdraw.se"==A.stype||"jsdraw.fm"==A.stype||"plate"==A.stype||"plates"==A.stype){if("jsdraw"==A.stype||"xdraw"==A.stype||"jsdraw.table"==A.stype&&null!=g.options&&g.options.spreadsheet?A.jsd.clear(!0):A.jsd.clear(),"jsdraw"==g.type)null!=g.dataformat?A.jsd.setData(I,g.dataformat):null==I||"string"==typeof I&&""==I||A.jsd.setXml(I);else if(null!=I&&null!=I.rows&&"jsdraw.table"==A.stype?A.jsd.setJson(I):null==I||"string"==typeof I&&""==I||A.jsd.setXml(I),"jsdraw.table"==A.stype&&null!=g.options&&g.options.spreadsheet&&A.jsd.createTable(),"jsdraw.table"==A.stype&&g.rows>0)for(var i=A.jsd.getRowCount();i0?A.jsd.setData(I):A.jsd.setData([]);else if("tabtext"==g.type||"richtext"==g.type||"plaintext"==g.type)A.jsd.setXml(I);else if("checkbox"==g.type||"radio"==g.type)A.checked=scil.Utils.isTrue(I);else if("select"==g.type)if(C){var l=this._getListItems(g);null!=l&&null==l.length&&(I=l[I]),this._setInnerHTML(A,I,e)}else scil.Utils.selectOption(A,I);else if("date"==g.type){"string"!=typeof I||scil.Utils.isNullOrEmpty(I)||isNaN(I)||(I=parseFloat(I),isNaN(I)&&(I=null));var s=null==g.timeformat?scil.Utils.dateStr(I,!0,g.dateformat):scil.Utils.timeStr(I,!0,g.timeformat);C?"INPUT"==A.tagName?A.value=s:this._setInnerHTML(A,s,e):A.value=s}else if("color"==g.type)A.jsd.setValue(I);else if("code"==A.stype)A.jsd.setValue(I);else if("signature"==A.stype)A.jsd.setValue(I);else{if("number"==A.stype)return A.jsd.setValue(I);if("html"==A.stype){s=null==I?"":I;null!=g&&null!=g.template?s=this.renderTemplate(g.template,I,t):"string"==typeof s&&null!=s.match(/^((http[s]?)|(ftp)):[\/]{2}.+$/i)&&(s=""+s+""),this._setInnerHTML(A,s,e)}else if("file"==A.stype||"filelink"==A.stype||"filedblink"==A.stype||"filepath"==A.stype||"image"==A.stype||"curve"==A.stype||"sketches"==A.stype||"subform"==A.stype)A.jsd.setXml(I);else if("fileshelf"==A.stype)A.jsd.list(I);else if("htmltext"==g.type)if(C)this._setInnerHTML(A,A.innerHTML=null==I?"":I,e,!0);else{var o=scil.Form.getEd(A);null!=o&&null!=o.dom?o.setContent(null==I?"":I):A.value=null==I?"":I}else"textarea"==A.stype?"TEXTAREA"==A.tagName?A.value=null==I?"":I:this._setInnerHTML(A,this.wrapTextarea(I),e,!0):"div"!=A.stype&&"button"!=A.stype&&("hidden"==A.stype&&null!=I&&"object"==typeof I&&null!=I.tagName&&(I=scil.Utils.getOuterXml(I)),"INPUT"==A.tagName||"TEXTAREA"==A.tagName?A.value=null==I?"":I:"DIV"==A.tagName&&this._setInnerHTML(A,null==I?"":I,e))}null!=g.onrendered&&g.onrendered(A,I)}}static wrapTextarea(A){return null==A?"":"
"+scil.Utils.escapeHtml(A)+"
"}static _setInnerHTML(A,g,C,I){null==g?g="":I&&(g+="
"),A.innerHTML=g,null!=C&&C+""!=""&&A.setAttribute("originalvalue",C)}static renderTemplate(A,g,C){let I=A.replace(/\{\?\}/g,null==g?"":g);if(null==C)return I;var t=I.match(/\{\{[a-z|0-9]+\}\}/gi);if(null==t)return I;for(var e=0;e0&&(t.width=I.width+"px");var e=scil.Utils.createElement(null,"div",null,t),i=new JSDraw2.Dialog(A,e,I);return i.show(),i.form=this.createForm2(e,g,C,I),i._scilform=!0,i.hide(!0),i.show2({owner:this}),null!=I&&I.oncreated&&I.oncreated(i.form),i}static createFormDlg(A,g,C,I){return this.createDlgForm(A,g,C,I)}static createTabDlgForm(A,g){return this.createDlgForm(A,null,null,g)}static createForm(A,g,C,I,t,e){const i={verticalAlign:"top",whiteSpace:"nowrap"},l={textAlign:"left"};I&&(i.border="solid 1px #f0f0f0",i.backgroundColor="#f5f5f5");for(var s=scil.Utils.createTable(),o=!1,n=0;n* indicates required field",l)}for(n=0;n*
":""),i));if(a.colspan)h.colSpan=2;else{if(h=scil.Utils.createElement(r,"td",null,l),null!=a.tag){var c=scil.Utils.createElement(h,a.tag);"select"==a.tag&&scil.Utils.listOptions(c,a.options),null!=a.width&&(c.style.width=a.width+"px"),null!=a.height&&(c.style.height=a.height+"px"),null!=a.id&&(c.id=a.id),"hidden"==a.tag&&(r.style.display="none"),null!=a.align&&(c.style.textAlign=a.align),a.id==e&&dojo.connect(c,"onkeydown",(function(A){13==A.keyCode&&(C(),A.preventDefault())}))}null!=a.span&&scil.Utils.createElement(h,"span",a.span)}}r=scil.Utils.createElement(s,"tr");scil.Utils.createElement(r,"td"," "),r=scil.Utils.createElement(s,"tr"),scil.Utils.createElement(r,"td");h=scil.Utils.createElement(r,"td");if(null!=g)if("string"==typeof g){var u=scil.Utils.createElement(h,"button",g);dojo.connect(u,"onclick",C)}else if(null!=g&&"object"==typeof g&&g.length>0)for(n=0;n0&&(g=g.substr(I+1)),A[g]=C}}static toAmount(A,g){return null==A||0==A?"-":A>=1e3?A/1e3+(g?"L":"kg"):A<.001&&g?1e6*A+"ug":A<1?1e3*A+(g?"uL":"mg"):A+(g?"mL":"g")}static processAmount(A){A.amount>0||(A.amount=null),A.amountleft>0||(A.amountleft=null);var g=null==A.amount?A.amountleft:A.amount;g<=0&&(g=null),null===g?A.unit=A.isliquid?"L":"kg":g>=1e3?(A.amount/=1e3,A.amountleft/=1e3,A.unit=A.isliquid?"L":"kg"):g<.001&&!A.isliquid?(A.amount*=1e6,A.amountleft*=1e6,A.unit="ug"):g<1?(A.amount*=1e3,A.amountleft*=1e3,A.unit=A.isliquid?"uL":"mg"):A.unit=A.isliquid?"mL":"g"}static setButtonValueByKey(A,g,C){if(null!=A&&!scil.Utils.isNullOrEmpty(g)&&!scil.Utils.isNullOrEmpty(C))for(let I=0;I\n";for(var I in A){var t=A[I];null!=t&&""!=t&&(C+="",C+=scil.Utils.escXmlValue(t),C+="\n")}return g||(C+=""),C}static encryptpassword(A){if(scil.Utils.isNullOrEmpty(A))return null;var g=CryptoJS.enc.Utf8.parse(null!=JSDraw2.password&&null!=JSDraw2.password.key?JSDraw2.password.key:"PSVJQRk9qTEp!6U1dWUZ%RVFG=1VVT0="),C=CryptoJS.enc.Utf8.parse(null!=JSDraw2.password&&null!=JSDraw2.password.iv?JSDraw2.password.iv:"!WlSLVE2ZU+NaW?=");return"(?|"+CryptoJS.AES.encrypt(A,g,{iv:C,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})+")"}static xml2Json(A){var g=null;if("object"==typeof A)g=A;else if("string"==typeof A){var C=scil.Utils.parseXml(A);null!=C&&(g=C.documentElement||C.firstElementChild)}if(null==g||null==g.childNodes)return null;for(var I={},t=0;t{"use strict";C.r(g),C.d(g,{Lang:()=>I});class I{static add(A,g){if(null!=A){var C=null==g?this.en:scil.Lang[g];null==C&&(scil.Lang[g]={}),scil.apply(C,A)}}static setLang(A,g){null==A||""==A?scil.Utils.createCookie(this.key,"",-1,!0):scil.Utils.createCookie(this.key,A,180,!0),g&&window.location.reload()}static use(A){null!=A&&("zh"==(A=A.toLowerCase())&&(A="cn"),this.language=A,this.current=this[A],null==this.current&&(this.current=this.en,this.language=null),JSDraw2.Language.use(A))}static res(A,g){if(scil.Utils.isNullOrEmpty(A)||"string"!=typeof A)return A;if(null!=g){var C=this[g];return null==C||null==C[A]?A:C[A]}if(null==this.current){let A=scil.Utils.readCookie(this.key,!0);null!=A&&""!=A&&this.use(A),null==this.current&&null!=this.lang&&this.use(this.lang),null==this.current&&(A=window.navigator.userLanguage,null!=A&&A.length>2&&this.use(A.substr(0,2)),null==this.current&&(this.current=this.en))}var I=null==this.current?null:this.current[A];return null!=I&&""!=I||(I=JSDraw2.Language.res(A)),I}static translate(A,g){if(null==g||""==g)this.translate(A,"span");else for(var C=g.split(","),I=0;I{"use strict";C.r(g),C.d(g,{Tabs:()=>t,TabsInt:()=>I});class I{constructor(A,g){this.T="TABS";let C;this.options=null==g?{}:g,this.currenttab=null,this.area=null,"string"==typeof A&&(A=dojo.byId(A));const I=scil.Utils.createTable(A,0,0,{width:"100%",marginBottom:null==this.options.marginBottom?"20px":this.options.marginBottom});this.dom=this.table=I.parentElement,this.vertical=!0;const t=this.options.border?null:scil.Tabs.kBorderStyle,e=this.options.border?"5px":0,i=this.options.border?scil.Tabs.kBorderStyle:null,l=null==this.options.tabgap?"4px":this.options.tabgap;switch(this.options.tablocation){case"left":{const A=scil.Utils.createElement(I,"tr");C=scil.Utils.createElement(A,"td",null,{borderRight:t,width:"1%",verticalAlign:"top",borderRightWidth:l}),this.area=scil.Utils.createElement(A,"td",null,{padding:`${e}px`,border:i,width:"99%",verticalAlign:"top"}),this.vertical=!1;break}case"right":{const A=scil.Utils.createElement(I,"tr");this.area=scil.Utils.createElement(A,"td",null,{padding:`${e}px`,border:i,width:"1%",verticalAlign:"top"}),C=scil.Utils.createElement(A,"td",null,{borderLeft:t,width:"99%",verticalAlign:"top",borderLeftWidth:l}),this.vertical=!1;break}case"bottom":this.area=scil.Utils.createElement(scil.Utils.createElement(I,"tr"),"td",null,{padding:`${e}px`,border:i}),C=scil.Utils.createElement(scil.Utils.createElement(I,"tr"),"td",null,{borderTop:t,borderTopWidth:l});break;default:C=scil.Utils.createElement(scil.Utils.createElement(I,"tr"),"td",null,{borderBottom:t,borderBottomWidth:l}),this.area=scil.Utils.createElement(scil.Utils.createElement(I,"tr"),"td",null,{padding:`${e}px`,border:i})}this.tabcontainer=scil.Utils.createTable(C,0,0),this.vertical&&(this.tr=scil.Utils.createElement(this.tabcontainer,"tr")),0==this.options.showtabs&&(this.tr.style.display="none");const s=this.options.tabs;if(null!=s)if(s.length>0)for(let A=0;A0&&(t.clientarea.style.width=A+"px",this.options.clientareawidth=A),g>0&&(t.clientarea.style.height=g+"px",this.options.clientareaheight=g))}null!=this.options.onresizeclientarea&&this.options.onresizeclientarea(A,g,this)}addTab(A,g){this.vertical?this.tr.childNodes.length>0&&scil.Utils.createElement(this.tr,"td"," "):this.tabcontainer.childNodes.length>0&&scil.Utils.createElement(scil.Utils.createElement(scil.Utils.createElement(this.tabcontainer,"tr"),"td"),"div",null,{height:"5px"});var C=this,I=A.caption,t=A.icon,e=null==this.options.tabpadding?"5px 10px 1px 10px":this.options.tabpadding,i=this.vertical?this.tr:scil.Utils.createElement(this.tabcontainer,"tr"),l={border:"solid 1px #ddd",padding:e,backgroundColor:"#eee"};switch(this.options.tablocation){case"left":l.borderRight="none",l.borderTopLeftRadius="5px",l.borderBottomLeftRadius="5px";break;case"right":l.borderLeft="none",l.borderTopRightRadius="5px",l.borderBottomRightRadius="5px";break;case"bottom":l.borderTop="none",l.borderBottomLeftRadius="5px",l.borderBottomRightRadius="5px";break;default:l.borderBottom="none",l.borderTopLeftRadius="5px",l.borderTopRightRadius="5px"}const s=scil.Utils.createElement(i,"td",null,l,{key:g||A.tabkey,sciltab:"1"}),o=scil.Utils.createTable2(s,null,{cellSpacing:0,cellPadding:0}),n=(null!=t?"":"")+(null==I?"Tab":scil.Lang.res(I));let r=null;switch(this.options.tablocation){case"left":case"right":s._label=scil.Utils.createElement(scil.Utils.createElement(o,"tr"),"td",n,null,null,(function(A){C.showTab(s)})),r=scil.Utils.createElement(scil.Utils.createElement(o,"tr"),"td");break;default:var a=scil.Utils.createElement(o,"tr");s._label=scil.Utils.createElement(a,"td",n,null,null,(function(A){C.showTab(s)})),r=scil.Utils.createElement(a,"td")}if(A.closable){const A=scil.Utils.createButton(r,{src:scil.Utils.imgSrc("img/del2.gif"),title:"Close",style:{},onclick:function(A){C.closeTab(s)}});A.style.marginLeft="10px",s.style.paddingRight="2px",scil.connect(r,"onmouseover",(function(){A.style.background="#fff"})),scil.connect(r,"onmouseout",(function(){A.style.background=""}))}return null!=A.onmenu&&(scil.connect(s,"onmouseup",(function(g){scil.Utils.isRightButton(g)&&A.onmenu(g),g.preventDefault()})),scil.Utils.disableContextMenu(s)),A.caption=null,A.visible=null==this.currenttab,A.marginBottom=0,A.caption=I,s.clientarea=scil.Utils.createElement(this.area,"div",null,{display:"none",width:this.options.clientareawidth,height:this.options.clientareaheight,overflowY:this.options.clientareaheight>0?"scroll":null}),null!=A.style&&dojo.style(s.clientarea,A.style),null==this.currenttab&&this.showTab(s),null!=A.html&&(s.clientarea.innerHTML=A.html),null!=this.options.onCreateTab&&this.options.onCreateTab(s,s.clientarea,this),s}updateTabLabel(A,g){var C="string"==typeof A?this.findTab(A):A;null!=C&&null!=C._label&&(C._label.innerHTML=g)}closeTab(A){var g=this;scil.Utils.confirmYes("Close this tab?",(function(){g.removeTab(A)}))}currentTabKey(){return null==this.currenttab?null:this.currenttab.getAttribute("key")}findTab(A){for(var g=this.vertical?this.tr.childNodes:this.tabcontainer.childNodes,C=0;C0?this.showTab(C[I-1]):this.showTab(C[I+1]),g.clientarea.parentNode.removeChild(g.clientarea),delete g.clientarea,this.vertical){var t=g.previousSibling;null!=t&&null==t.clientarea&&t.parentNode.removeChild(t),g.parentNode.removeChild(g)}else{var e=g.parentNode,i=e.previousSibling;null!=i&&i.parentNode.removeChild(i),e.parentNode.removeChild(e)}}allTabsAsArray(){for(var A=[],g=this.vertical?this.tr.childNodes:this.tabcontainer.childNodes,C=0;C{"use strict";C.r(g),C.d(g,{TabbedForm:()=>I});class I{constructor(A){this.T="TABBED_FORM",this.form=null,this.options=A,this.buttons=[],this.fields={}}render(A){"string"==typeof A&&(A=dojo.byId(A));var g=this;this.options.onShowTab=function(A,C){A.rendered||null==C||g.renderTabForm(A)},this.options.onBeforeShowTab=function(A,C){if(null!=g.options.onbeforeshowtab&&A!=C)return g.options.onbeforeshowtab(A,C)};var C=!0;for(var I in this.options.tabs)this.options.tabs[I].tabkey=I;for(var I in this.tabs=new scil.Tabs(A,this.options),this.options.tabs){this.options.tabs[I].tabkey=I;var t=this.tabs.findTab(I);t.form=new scil.Form(this.options),this.options.delayrender&&!C||(this.renderTabForm(t),C=!1)}var e=this.options.buttons;if(null!=e){var i=scil.Utils.createElement(A,"div",null,{marginTop:"10px",textAlign:"center"});if(e.length>0)for(var l=0;l\n",C=this.tabs.allTabs();for(var I in C){var t=C[I].form;null!=t&&(g+=t.getXml(!0))}return A||(g+=""),g}setXml(A){try{var g=scil.Form.xml2Json(A);this.setData(g)}catch(A){alert("Error raised when setting form data: "+A.message)}}getData(A){if("tab"==this.options.getdata)return this.getCurTabData(A);var g={},C=this.tabs.allTabs();for(var I in C){var t=C[I].form;if(null!=t){var e=t.getData(A);scil.apply(g,e)}}return g}setData(A,g){if("tab"==this.options.setdata)null!=this.tabs.currenttab&&null!=this.tabs.currenttab.form&&this.tabs.currenttab.form.setData(A,g);else{var C=this.tabs.allTabs();for(var I in C){var t=C[I].form;null!=t&&t.setData(A,g)}}}}scil.TabbedForm=I},3813:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageCustom:()=>I});class I{constructor(A,g,C){this.T="PAGE.CUSTOM";const I=this;this.refreshneeded=!0,this.page=A,this.options=g,this.receivers=[];let t=[];0==g.norefresh&&t.push({src:scil.App.imgSmall("refresh.png"),title:"Refresh",onclick:function(){I.refresh()}}),null!=this.options.buttons&&(t=t.concat(this.options.buttons)),this.form=new scil.Page.ExplorerForm(C,{expandable:g.expandable,caption:g.caption,visible:g.visible,buttons:t,marginBottom:g.marginBottom,expanded:this.options.expanded,onexpand:this.options.onexpand}),this.form.host=this,null!=this.options.oncreate&&this.options.oncreate(this.form.div,this.options)}show(){this.form.show()}hide(){this.form.hide()}refresh(A,g){null!=g&&(this.args=g),this.form.isVisible()?(this.refreshneeded=!1,null!=this.options.onrefresh&&this.options.onrefresh(A,this.args,this)):this.refreshneeded=!0}clear(){null!=this.options.onclear&&this.options.onclear()}}scil.Page.Custom=I},8329:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageExplorer:()=>I});class I{constructor(A,g){this.T="PAGE.EXPLORER","string"==typeof A&&(A=scil.byId(A)),this.options=g,this.resizing=null,null==g.resizable&&(g.resizable=!0);const C=scil.Utils.createTable(A,0,0,{width:"100%"}),I=scil.Utils.createElement(C,"tr");if(0==g.left)this.left=null,this.middle=null;else{const A=g.leftwidth>0?g.leftwidth:200,C=scil.Utils.createElement(I,"td",null,{width:"1%",paddingRight:"1px"},{vAlign:"top"}),t=scil.Utils.createTable(C,0,0,g.resizable?null:{width:A}),e=scil.Utils.createElement(t,"tr"),i=scil.Utils.createElement(e,"td");if(this.left=scil.Utils.createElement(i,"div",null,g.resizable?{width:A,overflow:"hidden"}:null),0!=g.middle){this.middle=scil.Utils.createElement(I,"td");const A=scil.Utils.createElement(this.middle,"div",null,{width:`${scil.Page.kHandleWidth}px`});scil.Utils.unselectable(this.middle),scil.Utils.unselectable(A)}if(g.resizable){const A=this;new scil.Resizable(this.middle,{direction:"x",mouseovercolor:scil.Page.kHandleColor,onresize:function(g){return A.onresize(g)}})}}this.right=0==g.right?null:scil.Utils.createElement(I,"td",null,{width:"99%",paddingLeft:0==g.left?null:"1px"},{vAlign:"top"})}onresize(A){const g=scil.Utils.parsePixel(this.left.style.width)+A;return g>20&&(this.left.style.width=g+"px",null!=this.options.onresize&&this.options.onresize(g,this),!0)}}scil.Page.Explorer=I},3719:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageExplorerForm:()=>t,PageExplorerFormInt:()=>I});class I{constructor(A,g){this.T="PAGE.EXPLORER_FORM",this.options=null==g?{}:g,"string"==typeof A&&(A=scil.byId(A));const C=scil.Utils.createTable(A,0,0,{width:"100%",background:"#fff"});if(this.dom=this.root=C.parentNode,0==this.options.visible&&(this.root.style.display="none"),null==g.caption?(C.parentElement.style.borderTop="solid 1px "+scil.Page.ExplorerForm.kHeaderStyle.background,this.title=null):this.title=scil.Utils.createElement(scil.Utils.createElement(C,"tr"),"td",scil.Lang.res(g.caption),scil.Page.ExplorerForm.kHeaderStyle),this.toolbar=scil.Utils.createElement(scil.Utils.createElement(C,"tr"),"td",null,scil.Page.ExplorerForm.kToolbarStyle),0==g.toolbarvisible&&(this.toolbar.style.display="none"),this.toolbar.style.whiteSpace="nowrap",this.main=scil.Utils.createElement(scil.Utils.createElement(C,"tr"),"td",null,scil.Page.ExplorerForm.kAreaStyle),this.div=scil.Utils.createElement(this.main,"div"),this.table=C.parentNode,scil.Form.createToolbarButtons(this.toolbar,g.buttons,g.padding),null!=this.title&&0!=g.expandable){const A=this;dojo.connect(this.title,"onclick",(function(){const g=!A.isExpanded();A.expand(g),null!=A.options.onexpand&&A.options.onexpand(g)})),0==g.expanded&&this.expand(!1)}null!=this.options.marginTop&&(this.table.style.marginTop=this.options.marginTop),this.table.style.marginBottom=null==this.options.marginBottom?"25px":this.options.marginBottom}isVisible(){return scil.Utils.isAllParentVisible(this.root)}show(){this.isVisible()||(this.root.style.display="",null!=this.host&&null!=this.host.refresh&&this.host.refreshneeded&&this.host.refresh())}hide(){this.root.style.display="none"}collapse(){this.expand(!1)}expand(A){null==A&&(A=!0),this.toolbar.style.display=A?"":"none",this.main.style.display=A?"":"none",this.title.style.backgroundImage=scil.App.imgSmall(A?"expand.png":"collapse.png",!0),this.title.style.backgroundRepeat="no-repeat",this.title.style.backgroundPosition="left center",null!=this.host&&null!=this.host.refresh&&this.host.refreshneeded&&this.host.refresh()}isExpanded(){return""==this.main.style.display}}class t extends I{}t.kHeaderStyle={background:"#88f",color:"white",padding:"3px 10px 3px 16px",whiteSpace:"nowrap",borderTopLeftRadius:"5px",borderTopRightRadius:"5px"},t.kToolbarStyle={background:"#f5f5f5",border:"solid 1px #f5f5f5",padding:"0 5px 0 5px"},t.kAreaStyle={border:"solid 1px #f5f5f5",padding:"5px"},scil.Page.ExplorerForm=t},9252:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageForm:()=>I});class I{constructor(A,g,C){this.T="PAGE.FORM";const I=this;this.refreshneeded=!0,this.page=A,this.options=g,this.receivers=[];let t=[];0==g.norefresh&&t.push({src:scil.App.imgSmall("refresh.png"),title:"Refresh",onclick:function(){I.refresh()}}),null!=this.options.buttons&&(t=t.concat(this.options.buttons)),null==g.viewonly&&(g.viewonly=!0),this.form=new scil.Page.ExplorerForm(C,{expandable:g.expandable,caption:g.caption,visible:g.visible,buttons:t,marginBottom:g.marginBottom,expanded:this.options.expanded,onexpand:this.options.onexpand}),this.form.host=this,this.table=new scil.Form({alternativeforms:this.options.alternativeforms,viewonly:g.viewonly,onchange:this.options.onformchange}),this.table.render(this.form.div,this.options.fields,{immediately:!0,hidelabel:g.hidelabel})}show(){this.form.show()}hide(){this.form.hide()}refresh(A,g){if(null!=g&&(this.args=g),!this.form.isVisible()||!this.form.isExpanded())return void(this.refreshneeded=!0);if(scil.Utils.isDictEmpty(this.args))return;const C=this;this.refreshneeded=!1;let I=this.args;null==I&&(I={}),null!=C.options.onbeforerefresh&&C.options.onbeforerefresh(I),this.page.receiverClear(this),scil.Utils.ajax(this.page.url+this.options.object+".load",(function(A){null!=C.options.onsetdata?C.options.onsetdata(C.table,A):C.options.savedoc&&null!=A.doc&&""!=A.doc?(C.table.setXml(A.doc),C.table.setData(A,!0)):C.table.setData(A)}),I)}clear(){this.table.setData({}),this.page.receiverClear(this)}}scil.Page.Form=I},2871:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageTab:()=>I});class I{constructor(A,g,C){this.T="PAGE.TAB",this.page=A,this.options=null==g?{}:g,this.onShowTab2=this.options.onShowTab;const I=this;this.options.onShowTab=function(A,g){null!=g&&null!=g.form&&g.form.hide(),null!=A.form&&A.form.show(),null!=I.onShowTab2&&I.onShowTab2(A,g)},this.tabs=new scil.Tabs(C,this.options)}addForm(A,g){const C=this.tabs.addTab(A),I=A.captions;return A.caption=null,C.form=scil.Page.addForm(this.page,A,g,C.clientarea),A.caption=I,scil.Page.setBorder(C.form.form),C.form}removeTab(A){return this.tabs.removeTab(A)}findTab(A){return this.tabs.findTab(A)}showTab(A){this.tabs.showTab(A)}show(){this.tabs.show()}hide(){this.tabs.hide()}}scil.Page.Tab=I},5728:(A,g,C)=>{"use strict";C.r(g),C.d(g,{PageTable:()=>I});class I{constructor(A,g,C){this.T="PAGE.TABLE";const I=this;this.refreshneeded=!0,this.page=A,this.options=g,this.receivers=[];let t=[];g.norefresh||t.push({src:scil.App.imgSmall("refresh.png"),title:"Refresh",onclick:function(){I.refresh()}}),null!=this.options.fields&&(t.push("-"),0!=this.options.canadd&&t.push({src:scil.App.imgSmall("add.png"),title:"New",onclick:function(){I.add()}}),0!=this.options.canedit&&t.push({src:scil.App.imgSmall("edit.png"),title:"Edit",onclick:function(){I.edit()}})),null!=this.options.buttons&&(t=t.concat(this.options.buttons)),this.options.columnhidable&&(t.push("-"),t.push({src:scil.App.imgSmall("columns.png"),title:"Show/Hide Columns",onclick:function(){I.table.showHideColumns()}})),this.form=new scil.Page.ExplorerForm(C,{expandable:g.expandable,caption:g.caption,visible:g.visible,marginBottom:g.marginBottom,buttons:t,expanded:this.options.expanded,onexpand:this.options.onexpand}),this.form.host=this,this.pages=scil.Utils.createElement(this.form.div,"div"),this.tablediv=scil.Utils.createElement(this.form.div,"div"),this.recreateTable()}recreateTable(){scil.Utils.removeAll(this.tablediv);const A=this;this.table=new scil.Table(!0,null,{onAddRow:this.options.onAddRow,selectrow:!0,onselectrow:function(g){A.selectrow(g)},rowcheck:this.options.rowcheck,grouping:this.options.grouping,grouplinestyle:this.options.grouplinestyle,hidecolumncookiekey:this.options.hidecolumncookiekey}),this.table.render(this.tablediv,this.options.columns),this.table.tbody.parentNode.style.width="100%",null!=this.options.oncreatetable&&this.options.oncreatetable(this)}selectFirstRow(){this.table.selectFirstRow()}show(){this.form.show()}hide(){this.form.hide()}clear(){scil.Utils.removeAll(this.pages),this.table.setData({}),this.page.receiverClear(this)}selectrow(A){const g=null==A?null:A.getAttribute("key");let C=null;{C={},C[this.options.key]=g;const I=this.table.getRowData(A);null!=this.options.name&&null!=I&&(C[this.options.name]=I[this.options.name]),this.page.receiverRefresh(this,C)}null!=this.options.onselectrow&&this.options.onselectrow(A,C)}loadPage(A){null==this.args&&(this.args={}),null!=this.options.onloadpage&&this.options.onloadpage(this.args,A,this),this.refresh(null,null,null,A)}list(A){const g=this;null==A&&(A={}),this.table.setData(null==A.rows?A:A.rows),scil.Table.listPages(this.pages,A.page,A.pages,(function(A){g.loadPage(A)}))}refresh(A,g,C,I){if(null!=g&&(this.args=g),null==this.args&&(this.args={}),this.args.page=I,!this.form.isVisible()||!this.form.isExpanded())return void(this.refreshneeded=!0);this.page.receiverClear(this),this.refreshneeded=!1;const t=this;let e=this.args;null==e&&(e={}),null!=t.options.onbeforerefresh&&t.options.onbeforerefresh(e);(this.options.jsonp?scil.Utils.jsonp:scil.Utils.ajax)(this.page.url+this.options.object+".list",(function(A){if(null!=t.options.onbeforelisting&&t.options.onbeforelisting(A,t),C)t.list(A),t.table.selectFirstRow();else{const g=t.table.getCurrentKey();t.list(A),null!=g&&t.table.selectRow(g)}null!=t.options.onrefreshed&&t.options.onrefreshed(t)}),e)}add(A){null!=this.options.onAddNew&&0==this.options.onAddNew(this.args)||this.add2(A)}add2(A){this.create(),this.dlg.show(),this.options.usetabs&&this.dlg.form.tabs.showTab(0),null!=this.options.onshowform&&this.options.onshowform(this.dlg,this.args);const g=null!=A?A:null==this.options.defaultvalues?{}:this.options.defaultvalues;this.applyArgs(g),null!=this.options.key&&(g[this.options.key]=null),this.options.onloaddata&&this.options.onloaddata(g,this.args,this.dlg),this.dlg.form.setData(g),this.dlg.editkey=null,this.showDelButton(!1)}copyNew(A){if(null==A)for(const g in this.options.fields)if(this.options.fields[g].iskey){A=g;break}if(null==A)return;const g=this;this.edit((function(C){C[A]=" ",g.dlg.editkey=null}))}edit(A){if(null==this.table.currow)return void scil.Utils.alert("please select a row first");this.add2(),this.showDelButton(!0);const g=this,C={};C[this.options.key]=this.table.currow.getAttribute("key"),this.dlg.editkey=C[this.options.key],null!=this.options.onEdit&&0==this.options.onEdit(C)||scil.Utils.ajax(this.page.url+this.options.object+".load",(function(C){g.options.onloaddata&&g.options.onloaddata(C,g.args,g.dlg),null!=A&&A(C,g),g.options.savedoc&&null!=C.doc&&""!=C.doc?(g.dlg.form.setXml(C.doc),g.dlg.form.setData(C,!0)):g.dlg.form.setData(C)}),C)}applyArgs(A){null!=this.args&&scil.apply(A,this.args)}cancel(){null!=this.dlg&&this.dlg.hide()}save(){if(this.dlg.form.checkRequiredFields()>0)return void scil.Utils.alert("Some required field(s) are blank");const A=this,g=this.dlg.form.getData();if(this.options.savedoc&&(g.doc=this.dlg.form.getXml()),this.options.onbeforesave&&0==this.options.onbeforesave(g,this.args,this.dlg.form))return!1;scil.Utils.ajax(this.page.url+this.options.object+".save",(function(g){if(A.dlg.hide(),null!=g&&null!=g.rows&&g.rows.length>0)for(let C=0;C{"use strict";C.r(g),C.d(g,{PageTree:()=>I});class I{constructor(A,g,C){this.T="PAGE.TREE";var I=this;this.refreshneeded=!0,this.page=A,this.options=null==g?{}:g,this.receivers=[];var t=[];null==this.options.onrender&&(t.push({src:scil.App.imgSmall("refresh.png"),title:"Refresh",onclick:function(){I.refresh()}}),null!=this.options.fields&&(t.push("-",{src:scil.App.imgSmall("add.png"),title:"New",onclick:function(){I.add()}}),t.push({src:scil.App.imgSmall("edit.png"),title:"Edit",onclick:function(){I.edit()}}))),null!=this.options.buttons&&(t=t.concat(this.options.buttons));var e=null==this.options.object?null:{url:this.page.url+this.options.object+".tree",icongap:"3px",onAddItem:this.options.onAddItem};this.form=new scil.Page.ExplorerForm(C,{toolbarvisible:g.toolbarvisible,expandable:g.expandable,caption:g.caption,visible:g.visible,marginTop:g.marginTop,marginBottom:g.marginBottom,buttons:t,expanded:this.options.expanded,onexpand:this.options.onexpand}),this.form.host=this,null!=this.options.onrender?this.options.onrender(this.form.div,e):(this.tree=new scil.Tree(this.form.div,e),this.tree.onSelectItem=function(A){I.select(A)},this.tree.onExpandItem=function(A,g){if(null!=I.options.onexpand)return I.options.onexpand(A,g)},0!=this.options.startrefresh&&this.refresh()),this.form.main.style.padding="0",scil.Page.setBorder(this.form)}show(){this.form.show()}hide(){this.form.hide()}select(A){if(null==this.options.onselectitem||!this.options.onselectitem(A)){var g={};null!=this.options.onBuildArgs?g=this.options.onBuildArgs(A):null!=A&&null!=A.item&&null!=A.item[this.options.key]&&(g[this.options.key]=A.item[this.options.key],null!=this.options.name&&(g[this.options.name]=A.item.name)),this.page.receiverRefresh(this,g)}}refresh(A){if(this.form.isVisible()){if(null!=this.tree)if(A)this.tree.reloadCur();else{if(this.refreshneeded=!1,this.tree.clear(),null!=this.options.root)if(null==this.options.root.selectable&&(this.options.root.selectable=!1),0==this.options.root.showroot&&null!=this.options.root.children)for(var g=0;g{"use strict";C.r(g),C.d(g,{Page:()=>t,PageInt:()=>I});class I{constructor(A,g,C,I,t){let e;if(this.T="PAGE",e=null!=C&&C.length>0||null!=I||null!=t?{middle:I,onRefreshReceivers:t,forms:C}:null==C?{}:C,null==g&&null==e.left&&(e.left=!1),null!=g&&(e.onresize=g.onresizetree),this.onRefreshReceivers=e.onRefreshReceivers,this.url=null==scil.Page.ajaxurl?"ajax.ashx?cmd=":scil.Page.ajaxurl,this.explorer=new scil.Page.Explorer(A,e),null!=g&&null!=g.root&&null!=g.root.children)for(let A=0;A0?g:scil.Page.kHandleWidth)+"px",C.style.marginBottom="2px",new scil.Resizable(C,{direction:"y",mouseovercolor:scil.Page.kHandleColor,onresize:A}),C}removeForm(A){const g=A.form.root;g.parentNode.removeChild(g)}receiverRefresh(A,g){null!=this.onRefreshReceivers&&this.onRefreshReceivers(g,A);for(let C=0;C{"use strict";C.r(g),C.d(g,{Atom:()=>I});class I{constructor(A,g,C){this.T="ATOM",this.p=A,this.charge=0,this.isotope=null,this.radical=null,this.group=null,this.alias=null,this.superatom=null,this.attachpoints=[],this.rgroup=null,this.bio=C,this.locked=!1,this.hidden=null,this._rect=null,null==C?null==g||0==g.length?this.elem="C":"D"==g?(this.elem="H",this.isotope=2):"T"==g?(this.elem="H",this.isotope=3):this.elem=g:this.elem=g,this.color=null,this.hcount=null,this.selected=!1,this.f=null,this.bonds=null,this.id=null,this.atommapid=null,this.query=null,this.hasError=null,this.hs=null,this.val=null,this.tag=null}clone(A){const g=new JSDraw2.Atom(this.p.clone(),this.elem,dojo.clone(this.bio));return g.charge=this.charge,g.isotope=this.isotope,g.radical=this.radical,g.hcount=this.hcount,g.id=this.id,g.color=this.color,g.tag=this.tag,g.alias=this.alias,g.superatom=null==this.superatom?null:this.superatom.clone(),g.attachpoints=scil.clone(this.attachpoints),g.rgroup=null==this.rgroup?null:this.rgroup.clone(A),g.atommapid=this.atommapid,g.hasError=this.hasError,g.hs=this.hs,g.val=this.val,null!=this.query&&(g.query=scil.clone(this.query)),null!=this.bio&&(g.bio=scil.clone(this.bio)),g.locked=this.locked,g.hidden=this.hidden,g.ratio=this.ratio,g.selected=this.selected,g}biotype(){return null==this.bio?null:this.bio.type}isMarkedStereo(){var A=this.bonds;if(null==A||3!=A.length&&4!=A.length)return!1;for(var g=0;g=1&&this.radical<=3&&(C+=" rad='"+this.radical+"'"),this.isotope>0&&(C+=" iso='"+this.isotope+"'"),null!=this.tag&&""!=this.tag&&(C+=" tag='"+scil.Utils.escXmlValue(this.tag)+"'"),null!=this.alias&&""!=this.alias&&(C+=" alias='"+scil.Utils.escXmlValue(this.alias)+"'"),null!=this.color&&(C+=" clr='"+this.color+"'"),this.atommapid>0&&(C+=" ami='"+this.atommapid+"'"),this.locked&&(C+=" locked='1'"),this.attachpoints.length>0){for(var I="",t=0;t0?",":"")+this.attachpoints[t];C+=" apo='"+I+"'"}this.hs>0&&(C+=" hs='"+this.hs+"'"),this.val>0&&(C+=" val='"+this.val+"'"),null!=this.group&&(C+=" g='"+this.group.id+"'"),null!=this.query&&(null!=this.query.sub&&(C+=" sub='"+this.query.sub+"'"),null!=this.query.uns&&(C+=" uns='"+(this.query.uns?1:0)+"'"),null!=this.query.rbc&&(C+=" rbc='"+this.query.rbc+"'"),null!=this.query.als&&null!=this.query.t&&(C+=" als='"+this.query.als.join(",")+"'",C+=" als_t='"+(0==this.query.t?0:1)+"'"))}else C+=" bio='"+this.bio.type+"'",scil.Utils.isNullOrEmpty(this.bio.subtype)||(C+=" subtype='"+this.bio.subtype+"'"),scil.Utils.isNullOrEmpty(this.bio.sequences)||(C+=" seq='"+scil.Utils.escXmlValue(this.bio.sequences)+"'"),this.bio.id>0&&(C+=" bioid='"+scil.Utils.escXmlValue(this.bio.id)+"'"),scil.Utils.isNullOrEmpty(this.bio.annotation)||(C+=" ann='"+scil.Utils.escXmlValue(this.bio.annotation)+"'"),"?"!=this.elem||scil.Utils.isNullOrEmpty(this.bio.ambiguity)||(C+=" amb='"+scil.Utils.escXmlValue(this.bio.ambiguity)+"'"),"HELM_BLOB"!=this.biotype()||scil.Utils.isNullOrEmpty(this.bio.blobtype)||(C+=" blobtype='"+scil.Utils.escXmlValue(this.bio.blobtype)+"'");if(null==this.rgroup&&null==this.superatom)C+="/>";else{if(C+=">\n",null!=this.rgroup){C+="\n",C+=this.rgroup.html(A)+"\n";for(var e=0;e"}null!=this.superatom&&(C+="\n",C+=this.superatom._getXml(null,null,null,null,g,!0),C+=""),C+=""}return C}readHtml(A){var g=A.getAttribute("c");null!=g&&(this.charge=parseInt(g));var C=A.getAttribute("clr");null!=C&&(this.color=C);var I=A.getAttribute("rad");null!=I&&""!=I&&(this.radical=parseInt(I));var t=A.getAttribute("iso");null!=t&&""!=t&&(this.isotope=parseInt(t));var e=A.getAttribute("hs");null!=e&&""!=e&&(this.hs=parseInt(e));var i=A.getAttribute("val");null!=i&&""!=i&&(this.val=parseInt(i));var l=A.getAttribute("tag");null!=l&&""!=l&&(this.tag=l);var s=A.getAttribute("alias");null!=s&&""!=s&&(this.alias=s);var o=A.getAttribute("ami");null==o||isNaN(o)||(this.atommapid=parseInt(o));var n=A.getAttribute("apo");if(null!=n&&""!=n)for(var r=n.split(","),a=0;a0&&this.attachpoints.push(c)}var u=A.getAttribute("rbc");null!=u&&(null==this.query&&(this.query={}),this.query.rbc=parseInt(u));var B=A.getAttribute("sub");null!=B&&(null==this.query&&(this.query={}),this.query.sub="*"==B?"*":parseInt(B));var E=A.getAttribute("uns");"1"!=E&&"0"!=E||(null==this.query&&(this.query={}),this.query.uns="1"==E);var w=JSDraw2.PT.makeAtomList(A.getAttribute("als"),A.getAttribute("als_t"));if(null!=w&&(null==this.query&&(this.query={}),this.query.als=w.atoms,this.query.t=w.t),null!=this.bio){this.bio.subtype=A.getAttribute("subtype"),this.bio.sequences=A.getAttribute("seq");const g=parseInt(A.getAttribute("bioid"));g>0&&(this.bio.id=g);var d=A.getAttribute("ann");scil.Utils.isNullOrEmpty(d)||(this.bio.annotation=d);var m=A.getAttribute("amb");"?"!=this.elem||scil.Utils.isNullOrEmpty(m)||(this.bio.ambiguity=m);var Q=A.getAttribute("blobtype");"HELM_BLOB"!=this.biotype()||scil.Utils.isNullOrEmpty(Q)||(this.bio.blobtype=Q)}if(null!=this.elem){var D=scil.Utils.getFirstElement(A,"rgroup");if(D){var p=scil.Utils.getFirstElement(D,"i");if(null!=p){var M=new JSDraw2.RGroup;if(M.readHtml(p,null)){this.rgroup=M,M.position=JSDraw2.Point.fromString(A.getAttribute("p"));var f=scil.Utils.getElements(D,"div");for(a=0;a1?2/t.elem.length:1),null,null,null,!1))}drawDiamond(A,g,C,I,t,e){A.createRect({x:g-I,y:C-I,width:2*I,height:2*I}).setTransform([dojox.gfx.matrix.rotategAt(45,g,C)]).setFill("white").setStroke({color:t,width:e/2})}drawEllipse(A,g,C,I,t,e,i){A.createEllipse({cx:g,cy:C,rx:I,ry:t}).setFill(e).setTransform([dojox.gfx.matrix.rotategAt(i,g,C)])}hasLabel(A,g){var C=this;return null==C.bio&&("C"!=C.elem||0!=C.charge||null!=C.radical||"C"==C.elem&&("all"==g||"terminal"==g&&1==A.getNeighborAtoms(C).length)||null!=C.isotope||4==C.hcount||C.hs>0||C.val>0||null!=C.alias&&""!=C.alias||null!=C.query&&(null!=C.query.sub||null!=C.query.uns||null!=C.query.rbc||null!=C.query.als&&null!=C.query.t))}hasErr(){var A=this,g=A.bio?null:JSDraw2.PT[A.elem];return!A.bio&&(null==g||g.a>=0&&A.hasError)&&"3'"!=A.elem&&"5'"!=A.elem}draw(A,g,C,I,t){var e=this;this._rect=null;var i=e.bio?null:JSDraw2.PT[e.elem],l=t&&this.hasErr(),s=e.color;if(null==e.bio){var o=s;if(null==s&&(o=s=A.monocolor?"black":null==i||null==i.c?"#000":"#"+i.c,l&&(o=null==i||null==i.c?"#000":"#fff")),e.attachpoints.length>0&&this.drawApo(e,C,A,g,I,s),null!=e.alias&&""!=e.alias)this._rect=JSDraw2.Atom.drawAlias(C.calcHDir(e,4*g,!0),A,e.p,e.alias,l?"red":o,I);else{var n=e.elem,r=e.isotope;if("H"==n)2==r?(n="D",r=null):3==r&&(n="T",r=null);else if(null!=e.query){var a="",h="";null!=e.query.als&&(a=(0==e.query.t?"!":"")+"["+e.query.als.join(",")+"]"),null!=e.query.rbc&&(h+=(""==h?"":",")+"r"+e.query.rbc),null!=e.query.sub&&(h+=(""==h?"":",")+"s"+e.query.sub),e.query.uns&&(h+=(""==h?"":",")+"u"),""==a&&""==h||(n=(""==a?n:a)+(""==h?"":"("+h+")"))}var c=0,u=0;if(l||this._haslabel){var B=JSDraw2.Drawer.drawLabel(A,e.p,n,o,I,!!l&&"#f00"),E=null,w=null,d=null,m=null,Q="";switch(0!=e.charge&&(Q+=(1==Math.abs(e.charge)?"":Math.abs(e.charge)+"")+(e.charge>0?"+":"-")),e.radical){case 1:Q+=":";break;case 2:Q+="^";break;case 3:Q+="^^"}""!=Q&&(E=JSDraw2.Drawer.drawLabel(A,e.p,Q,s,I/1.2,!1)),null!=r&&(m=JSDraw2.Drawer.drawLabel(A,e.p,r+"",s,I/1.1,!1)),null==e.query&&e.hcount>0&&(this._haslabel||"C"!=n||0!=e.charge||4==e.hcount)&&(w=JSDraw2.Drawer.drawLabel(A,e.p,"H",s,I,!1),d=1==e.hcount?null:JSDraw2.Drawer.drawLabel(A,e.p,e.hcount+"",s,I/1.4,!1));var D=B.getTextWidth();if(null!=E||null!=w||null!=d||null!=m){var p=scil.Utils.isOpera?Math.round(I/4):0,M=null==w?0:w.getTextWidth()+p,f=null==d?0:d.getTextWidth()+p,U=null==E?0:E.getTextWidth()+p,b=null==m?0:m.getTextWidth()+p;switch(C.calcHDir(e,4*g)){case JSDraw2.ALIGN.RIGHT:null!=m&&m.setTransform([dojox.gfx.matrix.translate(-(D/2+b/2+0),-4)]),null!=w&&w.setTransform([dojox.gfx.matrix.translate(D/2+M/2+0,0)]),null!=d&&d.setTransform([dojox.gfx.matrix.translate(D/2+M+f/2+0,4)]),null!=E&&E.setTransform([dojox.gfx.matrix.translate(D/2+M+f+U/2+0,-4)]),c=D/2+M+f+U+0;break;case JSDraw2.ALIGN.LEFT:null!=m&&m.setTransform([dojox.gfx.matrix.translate(-(D/2+b/2+0),-4)]),null!=d&&d.setTransform([dojox.gfx.matrix.translate(-(D/2+b+f/2+0),4)]),null!=w&&w.setTransform([dojox.gfx.matrix.translate(-(D/2+b+f+M/2+0),0)]),null!=E&&E.setTransform([dojox.gfx.matrix.translate(-(D/2+b+f+M+U/2+0),-4)]),c=D/2;break;case JSDraw2.ALIGN.BOTTOM:null!=m&&m.setTransform([dojox.gfx.matrix.translate(-(D/2+b/2+0),-4)]),null!=w&&w.setTransform([dojox.gfx.matrix.translate(0,I)]),null!=d&&d.setTransform([dojox.gfx.matrix.translate(M/2+f/2+0,I+4)]),null!=E&&E.setTransform([dojox.gfx.matrix.translate((null==w?D/2:M/2+f)+U/2+0,(null==w?0:I)-4)]),c=(null==w?D/2:M/2+f)+U+0;break;case JSDraw2.ALIGN.TOP:null!=m&&m.setTransform([dojox.gfx.matrix.translate(-(D/2+b/2+0),-4)]),null!=w&&w.setTransform([dojox.gfx.matrix.translate(0,-I)]),null!=d&&d.setTransform([dojox.gfx.matrix.translate(M/2+f/2+0,4-I)]),null!=E&&E.setTransform([dojox.gfx.matrix.translate((null==w?D/2:M/2+f)+U/2+0,(null==w?0:-I)-4)]),c=(null==w?D/2:M/2+f)+U+0,u=(null==w?0:-I)-4}}else c=D/2}if(null!=e.atommapid){var G=e.p.clone();c+=(B=JSDraw2.Drawer.drawText(A,G.offset(c,u-I-2),"("+e.atommapid+")","#f55",I/1.4)).getTextWidth()}if(e.val>0){G=e.p.clone();c+=(B=JSDraw2.Drawer.drawText(A,G.offset(c,u-I-2),"("+(15==e.val?0:e.val)+")","#000",I/1.2)).getTextWidth()}if(null!=e.tag&&""!=e.tag){G=e.p.clone();c+=(B=JSDraw2.Drawer.drawText(A,G.offset(c,u-I-2),"<"+e.tag+">","#000",I/1.2)).getTextWidth()}}e.locked&&A.createCircle({cx:e.p.x,cy:e.p.y,r:.6*I}).setStroke({color:"#0ff",width:g})}else this.drawBio(A,g,I,s)}drawApo(A,g,C,I,t,e){for(var i=A.attachpoints,l=0;l{"use strict";C.r(g),C.d(g,{Bond:()=>I,BondB:()=>t});class I{constructor(A,g,C){this.T="BOND",this.a1=A,this.a2=g,this.apo1=null,this.apo2=null,this.color=null,this.ring=null,this.order=null,this.rcenter=null,this.selected=!1,this.tag=null,this.f=null,this.r1=null,this.r2=null,this.ratio1=null,this.ratio2=null,this.type=null==C?1:C}clone(){var A=new JSDraw2.Bond(this.a1,this.a2,this.type);return A.id=this.id,A.color=this.color,A.order=this.order,A.apo1=this.apo1,A.apo2=this.apo2,A.ring=this.ring,A.rcenter=this.rcenter,A._parent=this._parent,A.r1=this.r1,A.r2=this.r2,A.ratio1=this.ratio1,A.ratio2=this.ratio2,A.z=this.z,A.tag=this.tag,A.selected=this.selected,A}replaceAtom(A,g){if(this.a1==A)this.a1=g;else{if(this.a2!=A)return!1;this.a2=g}return!0}isBio(){return 21==this.type||22==this.type}bondLength(){return this.a1.p.distTo(this.a2.p)}center(){return new JSDraw2.Point((this.a1.p.x+this.a2.p.x)/2,(this.a1.p.y+this.a2.p.y)/2)}angle(){return this.vector().angle()}vector(){return new JSDraw2.Point(this.a2.p.x-this.a1.p.x,this.a2.p.y-this.a1.p.y)}otherAtom(A){return this.a1==A?this.a2:this.a2==A?this.a1:null}reverse(){var A=this.a1;this.a1=this.a2,this.a2=A;var g=this.apo1;this.apo1=this.apo2,this.apo2=g}valence(){switch(this.type){case 1:case 5:case 6:case 7:case 21:case 22:case 23:case 24:case 14:case 15:return 1;case 4:return 1.5;case 2:case 8:return 2;case 3:return 3;case 0:case 13:return 0;default:return null}}_centerDoubleBond(A,g){var C=A.getNeighborAtoms(g.a1,g.a2),I=A.getNeighborAtoms(g.a2,g.a1);return 0==C.length&&2==I.length||0==I.length&&2==C.length}_shirftDirection(A,g){var C=null,I=null,t=A.getNeighborAtoms(g.a1,g.a2,!0);if(1==t.length&&(C=t[0]),null==C){var e=A.getNeighborAtoms(g.a2,g.a1,!0);1==e.length&&(I=e[0]),null==I&&t.length>=2&&e.length>=2&&(A._hasDoubleBonds(t[0])?C=t[0]:A._hasDoubleBonds(t[1])&&(C=t[1]),A._hasDoubleBonds(e[0])?I=e[0]:A._hasDoubleBonds(e[1])&&(I=e[1]))}return null!=C?g.p1.angleAsOrigin(g.p2,C.p)<=180:null!=I?g.p2.angleAsOrigin(I.p,g.p1)<=180:void 0}html(){var A="0&&null!=this.a1.superatom&&(A+=" apo1='"+this.apo1+"'"),this.apo2>0&&null!=this.a2.superatom&&(A+=" apo2='"+this.apo2+"'"),null!=this.tag&&(A+=" tag='"+scil.Utils.escXmlValue(this.tag)+"'"),A+="/>"}readHtml(A){var g=A.getAttribute("clr");null!=g&&(this.color=g);var C=A.getAttribute("tag");null!=C&&""!=C&&(this.tag=C)}toggle(A,g){return A.onLine(this.a1.p,this.a2.p,g/5)}drawCur(A,g,C){var I=this.center();A.createCircle({cx:I.x,cy:I.y,r:g}).setFill(C)}_drawBond(A,g,C,I,t,e,i,l,s){if(null==t||0==t)JSDraw2.Drawer.drawLine(A,g.p1,g.p2,C,I,i,s);else{var o=0==e?new JSDraw2.Point(0,0):g.vector().scale(1/Math.abs(e)),n=g.vector().rotate(t>0?90:-90).setLength(null==l?2*I:l);JSDraw2.Drawer.drawLine(A,g.p1.clone().offset(o.x+n.x,o.y+n.y),g.p2.clone().offset(-o.x+n.x,-o.y+n.y),C,I,i,s)}}getRColor(A,g){if(!scil.Utils.isNullOrEmpty(this.color))return A;switch(g){case 1:return"#641E16";case 2:return"#0000ff";case 3:return"#aaaaaa"}return"black"}splitPosR(A){if(!scil.Utils.isNullOrEmpty(A)){var g="?"==A?"?:?":A+"",C=g.indexOf(":");if(C>=0){var I=g.substr(0,C),t=g.substr(C+1);return{pos:""==I?"?":I,r:""==t?"?":t}}}return{pos:"?",r:"?"}}_fmtBondAnn(){var A="",g="",C=this.splitPosR(this.r1),I=this.splitPosR(this.r2);"?"==C.pos&&"?"==I.pos||(A+=(""==A?"":"; ")+"Pos: "+C.pos,g+=(""==g?"":"; ")+"Pos: "+I.pos),"?"==C.r&&"?"==I.r||(A+=(""==A?"":"; ")+"R#: "+C.r,g+=(""==g?"":"; ")+"R#: "+I.r);var t=null==org.helm.webeditor.defaultbondratio?"":org.helm.webeditor.defaultbondratio,e=scil.Utils.isNullOrEmpty(this.ratio1)?t:this.ratio1,i=scil.Utils.isNullOrEmpty(this.ratio2)?t:this.ratio2;return e==t&&i==t||(A+=(""==A?"":"; ")+"Ratio: "+e,g+=(""==g?"":"; ")+"Ratio: "+i),{ba1:A,ba2:g}}drawBondAnnotation(A,g,C){var I=this._fmtBondAnn(),t=I.ba1,e=I.ba2;if(""!=t||""!=e){var i=(C.p1.x-C.p2.x)/90,l=(C.p1.y-C.p2.y)/90,s=new JSDraw2.Point((C.p1.x+C.p2.x)/2,(C.p1.y+C.p2.y)/2),o=s.clone();Math.abs(C.a1.p.x-C.a2.p.x)0||this.r2>0){var l=new JSDraw2.Point((e.p1.x+e.p2.x)/2,(e.p1.y+e.p2.y)/2),s=this.getRColor(this.color,this.r1),o=this.getRColor(this.color,this.r2);if(this.z){var n=new JSDraw2.Point(e.p1.x,l.y),r=new JSDraw2.Point(e.p2.x,l.y);JSDraw2.Drawer.drawLine(A,e.p1,n,s,g,null,"butt"),JSDraw2.Drawer.drawLine(A,n,l,s,g,null,"butt"),JSDraw2.Drawer.drawLine(A,l,r,o,g,null,"butt"),JSDraw2.Drawer.drawLine(A,r,e.p2,o,g,null,"butt")}else JSDraw2.Drawer.drawLine(A,e.p1,l,s,g,null,"butt"),JSDraw2.Drawer.drawLine(A,l,e.p2,o,g,null,"butt"),(1==this.r1&&2==this.r2||2==this.r1&&1==this.r2)&&(JSDraw2.Bond.showHelmAnnotation(this.a1,this.a2,this.r1),JSDraw2.Bond.showHelmAnnotation(this.a2,this.a1,this.r2))}else{t||this.drawBondAnnotation(A,I,e);var a=8;if(2!=e.type&&4!=e.type&&8!=e.type&&11!=e.type||(a=this._shirftDirection(C,e)?8:-8),2==e.type&&this._centerDoubleBond(C,e)?(this._drawBond(A,e,i,g,-a,0,null,g),this._drawBond(A,e,i,g,a,0,null,g)):1!=e.type&&14!=e.type&&2!=e.type&&3!=e.type&&4!=e.type||(this._drawBond(A,e,i,14==e.type?3*g:g,null,null,null,null,14==e.type?"butt":"round"),2!=e.type&&3!=e.type||this._drawBond(A,e,i,g,a,a),3==e.type&&this._drawBond(A,e,i,g,-a,-a),4==e.type&&this._drawBond(A,e,i,g,a,a,4)),5==e.type){var h=e.vector().rotate(90).setLength(2*g);A.createPolyline([e.p1.x,e.p1.y,e.p2.x+h.x,e.p2.y+h.y,e.p2.x-h.x,e.p2.y-h.y]).setStroke({width:2}).setFill(i)}if(6==e.type||15==e.type)for(var c=e.bondLength(),u=Math.floor(c/(2*g)),B=e.vector().scale(1/u),E=(h=e.vector().rotate(90),1);E<=u;++E){var w=e.p1.clone().offset(B.x*E,B.y*E),d=2*g;6==e.type?d*=E/u:d*=.6;var m=h.clone().setLength(d);JSDraw2.Drawer.drawLine(A,w.clone().offset(m.x,m.y),w.clone().offset(-m.x,-m.y),i,g)}if(7==e.type&&JSDraw2.Drawer.drawCurves(A,e.p1,e.p2,i,g),8==e.type){B=e.vector().scale(1/Math.abs(a)),h=e.vector().rotate(a>0?90:-90).setLength(2*g),n=e.p1.clone().offset(B.x+h.x,B.y+h.y),r=e.p2.clone().offset(-B.x+h.x,-B.y+h.y);JSDraw2.Drawer.drawLine(A,e.p1,r,i,g),JSDraw2.Drawer.drawLine(A,e.p2,n,i,g)}if(11==e.type&&(this._drawBond(A,e,i,g),this._drawBond(A,e,i,g,a,a,2)),9!=e.type&&10!=e.type||(this._drawBond(A,e,i,g,0,0,2),this._drawBond(A,e,i,g,a/2,a/2,null,1.5*g),this._drawBond(A,e,i,g,-a/2,-a/2,10==e.type?2:null,1.5*g)),0==e.type&&this._drawBond(A,e,i,g,null,null,1.2*g),null!=e.b.ring){w=this.center();A.createCircle({cx:w.x,cy:w.y,r:3*g}).setStroke({color:i,width:g/2,style:e.b.ring?"Solid":"Dash"})}if(null!=e.b.rcenter){w=this.center(),B=e.vector().rotate(90).setLength(3*g),h=e.vector().setLength(g*(12==e.b.rcenter?1.5:1));1==e.b.rcenter?(JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x+h.x,B.y+h.y),w.clone().offset(-B.x+h.x,-B.y+h.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x-h.x,B.y-h.y),w.clone().offset(-B.x-h.x,-B.y-h.y),i,g/2),B=e.vector().rotate(90).setLength(1.6*g),h=e.vector().setLength(2*g),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x+h.x,B.y+h.y),w.clone().offset(B.x-h.x,B.y-h.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(-B.x+h.x,-B.y+h.y),w.clone().offset(-B.x-h.x,-B.y-h.y),i,g/2)):-1==e.b.rcenter?(JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x+h.x,B.y+h.y),w.clone().offset(-B.x-h.x,-B.y-h.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x-h.x,B.y-h.y),w.clone().offset(-B.x+h.x,-B.y+h.y),i,g/2)):4==e.b.rcenter?(JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x+h.x,B.y+h.y),w.clone().offset(-B.x+h.x,-B.y+h.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x-h.x,B.y-h.y),w.clone().offset(-B.x-h.x,-B.y-h.y),i,g/2)):8==e.b.rcenter?JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x,B.y),w.clone().offset(-B.x,-B.y),i,g/2):12==e.b.rcenter&&(JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x,B.y),w.clone().offset(-B.x,-B.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x+h.x,B.y+h.y),w.clone().offset(-B.x+h.x,-B.y+h.y),i,g/2),JSDraw2.Drawer.drawLine(A,w.clone().offset(B.x-h.x,B.y-h.y),w.clone().offset(-B.x-h.x,-B.y-h.y),i,g/2))}}else JSDraw2.Drawer.drawLine(A,e.p1,e.p2,i,g);else JSDraw2.Drawer.drawLine(A,e.p1,e.p2,i,g)}}else"@"!=this.a1.elem&&"@"!=this.a2.elem||this.a1.p.equalsTo(this.a2.p)||JSDraw2.Drawer.drawLine(A,this.a1.p,this.a2.p,"#eee",g/2)}drawSelect(A){A.draw(this,this.center())}static cast(A){return null!=A&&"BOND"==A.T?A:null}static showHelmAnnotation(A,g,C){null==A.bio||scil.Utils.isNullOrEmpty(A.bio.annotation)||(2==C&&A.p.x>g.p.x||1==C&&A.p.x{"use strict";C.r(g),C.d(g,{Bracket:()=>I});class I{constructor(A,g,C){this.T="BRACKET",this.atoms=[],this.type=A,this._rect=g,this.color=null,this.shape=C}clone(){const A=new JSDraw2.Bracket(this.type,this._rect.clone(),this.shape);return A.color=this.color,A.sgrouptexts=this.sgrouptexts,A}getXbonds(A){for(var g=[],C=A.bonds,I=0;I=0!=scil.Utils.indexOf(this.atoms,t.a2)>=0&&g.push(t)}return g}allAtomsIn(A){if(0==this.atoms.length)return!1;for(var g=0;g0){g=this.atoms[0].id+"";for(var C=1;C"}flipY(A){}flipX(A){}scale(A,g){this._rect.scale(A,g)}offset(A,g){this._rect.offset(A,g)}rect(){return this._rect}toggle(A,g){var C=this._rect;if(null!=C){var I=A.x-C.left,t=C.right()-A.x;return A.y>=C.top-g&&A.y<=C.bottom()+g&&(I>=-g/2&&I=-g/2&&t{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Editor:()=>Editor,EditorInt:()=>EditorInt,MSTouch:()=>MSTouch});var _types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(4247);class EditorInt{constructor(A,g){if(this._testdeactivation=null,this.frameoffset=new JSDraw2.Point(0,0),this.touch={reset:function(A){null!=this.cloned&&(A.pushundo(this.cloned),A.setModified(!0)),this.center=null,this.start1=null,this.start2=null,this.end1=null,this.end2=null,this.gesture=null,this.deg=null,this.scale=null,this.cloned=null}},this.holding=new class{constructor(){this.delay=1e3,this.tor=2,this.e=null,this.tm=null,this.timer=null,this.jsd=null}start(A,g){if(!scil.Utils.isTouch&&!window.navigator.msPointerEnabled)return;this.end(),this.e={clientX:A.clientX,clientY:A.clientY},this.tm=(new Date).getTime(),this.jsd=g;const C=this;this.timer=setTimeout((function(){C.timeout()}),this.delay)}end(){null!=this.timer&&(this.e=null,this.tm=null,clearTimeout(this.timer),this.timer=null)}timeout(){null!=this.e&&(this.jsd.start=null,this.jsd.showContextMenu(this.e,this.jsd.options.viewonly)),this.end()}move(A){null!=this.e&&(Math.abs(A.clientX-this.e.clientX)>this.tor||Math.abs(A.clientY-this.e.clientY)>this.tor)&&this.end()}},this.disableundo=JSDraw2.speedup.disableundo,this.T="DRAW",JSDraw2.Editor.COLORCURRENT=[0,255,0,.5],JSDraw2.Editor.COLORSELECTED=[0,0,255,.5],this.options=null==g?{}:g,this.chiral=null,null==JSDraw2.Editor._id&&(JSDraw2.Editor._id=0,JSDraw2.Editor._allitems={}),++JSDraw2.Editor._id,"string"==typeof A&&(A=dojo.byId(A)),null==A)return;if(this.ptElement=null,this.connectHandlers=[],this.maintable=null,this.div=A,null!=this.div.id&&0!=this.div.id.length||(this.div.id="__JSDraw_"+JSDraw2.Editor._id),this.id=this.div.id,JSDraw2.Editor._allitems[this.id]=this,null==JSDraw2.defaultoptions&&(JSDraw2.defaultoptions={}),null==this.options.popup&&(this.options.popup=scil.Utils.isAttTrue(this.div,"popup")),null==this.options.viewonly&&(this.options.viewonly=scil.Utils.isAttTrue(this.div,"viewonly")),null==this.options.removehydrogens&&(this.options.removehydrogens=null!=JSDraw2.defaultoptions.removehydrogens?JSDraw2.defaultoptions.removehydrogens:scil.Utils.isAttTrue(this.div,"removehydrogens")),null==this.options.query&&(this.options.query=null!=JSDraw2.defaultoptions.query?JSDraw2.defaultoptions.query:!scil.Utils.isAttFalse(this.div,"query")),null==this.options.rxn&&(this.options.rxn=null!=JSDraw2.defaultoptions.rxn?JSDraw2.defaultoptions.rxn:!scil.Utils.isAttFalse(this.div,"rxn")),null==this.options.biology&&(this.options.biology=null!=JSDraw2.defaultoptions.biology?JSDraw2.defaultoptions.biology:!scil.Utils.isAttFalse(this.div,"biology")),null==this.options.sendquery&&(this.options.sendquery=null!=JSDraw2.defaultoptions.sendquery?JSDraw2.defaultoptions.sendquery:!scil.Utils.isAttFalse(this.div,"sendquery")),null==this.options.showtoolbar&&(this.options.showtoolbar=null!=JSDraw2.defaultoptions.showtoolbar?JSDraw2.defaultoptions.showtoolbar:!scil.Utils.isAttFalse(this.div,"showtoolbar")),null==this.options.showcustomtemplates&&(this.options.showcustomtemplates=null!=JSDraw2.defaultoptions.showcustomtemplates?JSDraw2.defaultoptions.showcustomtemplates:!scil.Utils.isAttFalse(this.div,"showcustomtemplates")),null==this.options.usechemdraw&&(this.options.usechemdraw=null!=JSDraw2.defaultoptions.usechemdraw?JSDraw2.defaultoptions.usechemdraw:scil.Utils.isAttTrue(this.div,"usechemdraw")),null==this.options.showcarbon&&(this.options.showcarbon=JSDraw2.defaultoptions.showcarbon),null==this.options.pastechemdraw&&(this.options.pastechemdraw=JSDraw2.defaultoptions.pastechemdraw),this.options.width>0&&(this.div.style.width=this.options.width+"px"),this.options.height>0&&(this.div.style.height=this.options.height+"px"),null==this.options.ondatachange&&(this.options.ondatachange=dojo.attr(this.div,"ondatachange")),null==this.options.data&&(this.options.data=dojo.attr(this.div,"data")),null==this.options.dataformat&&(this.options.dataformat=dojo.attr(this.div,"dataformat")),null==this.options.showimplicithydrogens&&(this.options.showimplicithydrogens=null!=JSDraw2.defaultoptions.showimplicithydrogens?JSDraw2.defaultoptions.showimplicithydrogens:!scil.Utils.isAttFalse(this.div,"showimplicithydrogens")),null==this.options.inktools&&(this.options.inktools=null!=JSDraw2.defaultoptions.inktools?JSDraw2.defaultoptions.inktools:!scil.Utils.isAttFalse(this.div,"inktools")),null==this.options.highlighterrors&&(this.options.highlighterrors=null!=JSDraw2.defaultoptions.highlighterrors?JSDraw2.defaultoptions.highlighterrors:!scil.Utils.isAttFalse(this.div,"highlighterrors")),null==this.options.skin&&(this.options.skin=null!=JSDraw2.defaultoptions.skin?JSDraw2.defaultoptions.skin:dojo.attr(this.div,"skin"),null==this.options.skin&&(this.options.skin="w8")),null==this.options.monocolor&&(this.options.monocolor=scil.Utils.isAttTrue(this.div,"monocolor")),null==this.options.fullscreen&&(this.options.fullscreen=null!=JSDraw2.defaultoptions.fullscreen?JSDraw2.defaultoptions.fullscreen:scil.Utils.isAttTrue(this.div,"fullscreen")),null==this.options.buttonshape&&(this.options.buttonshape=null!=JSDraw2.defaultoptions.buttonshape?JSDraw2.defaultoptions.buttonshape:dojo.attr(this.div,"buttonshape")),null!=this.options.buttonshape&&""!=this.options.buttonshape||(this.options.buttonshape=scil.Utils.isIE?"circle":"square"),"square"==this.options.buttonshape?this.options.buttonshape="btnrec":"circle"==this.options.buttonshape&&(this.options.buttonshape="btncir"),!(this.options.scale>0))if(null!=JSDraw2.defaultoptions.scale)this.options.scale=JSDraw2.defaultoptions.scale;else{const A=dojo.attr(this.div,"scale");isNaN(A)||(this.options.scale=parseFloat(A))}if(this.options.btnsize=this.isSkinW8()?42:20*this.options.scale,null==this.options.data){const A=dojo.attr(this.div,"molfile");null!=A&&(this.options.data=A,this.options.dataformat="molfile")}if(null==this.options.data){const A=dojo.attr(this.div,"rxnfile");null!=A&&(this.options.data=A,this.options.dataformat="rxnfile")}"w8"==this.options.skin&&(JSDraw2.Skin.jsdraw={bkcolor:"#fff"}),this.movingresolution=this.options.movingresolution>0?this.options.movingresolution:6,this.bondlength=JSDraw2.Editor.BONDLENGTH,this.tor=JSDraw2.Editor.TOR,this.linewidth=JSDraw2.Editor.LINEWIDTH,this.fontsize=JSDraw2.Editor.FONTSIZE,this.angleStop=JSDraw2.Editor.ANGLESTOP;const C=scil.Utils.styleRect(this.div);if(this.dimension=new JSDraw2.Point(C.width,C.height),this.dimension.x>0||(this.dimension.x=0==this.div.offsetWidth?650:this.div.offsetWidth),this.dimension.y>0||(this.dimension.y=0==this.div.offsetHeight?320:this.div.offsetHeight),this.div.style.textAlign="left",this.div.style.cursor="default",this.div.style.width=this.dimension.x+"px",this.div.style.height=this.dimension.y+"px",null!=scil.helm&&0!=this.options.helm&&(this.helm=new scil.helm.Plugin(this)),this.m=new JSDraw2.Mol(this.options.showimplicithydrogens),this.status=null,this.modified=!1,this.toolbar=null,this.touching=null,this.start=null,this.lastmove=null,this.end=null,this.curObject=null,this.curButton=null,this.movingClone=null,this.resizing=null,this.texteditor={input:null,text:null,atom:null},this.rotating=null,this.mousedownPoint=null,this._lastMousedownTm=null,this.lassolast=null,this.chaintool=null,this.activated=!1,this.ink=null,JSDraw2.Security._check(),this.undocapacity=10,this._undostack=new JSDraw2.Stack(this.undocapacity),this._redostack=new JSDraw2.Stack(this.undocapacity),!this.setMol(this.options.data))switch((this.options.dataformat+"").toLowerCase()){case"mol":case"molfile":this.setMolfile(this.options.data);break;case"molbase64":this.setMolbase64(this.options.data);break;case"rxn":case"rxnfile":this.setRxnfile(this.options.data);break;case"rxnbase64":this.setRxnbase64(this.options.data);break;case"jdx":this.setJdx(this.options.data);break;case"html":case"xml":case"jsdraw":this.setXml(null==this.options.data?this.div:this.options.data);break;case"helm":this.setHelm(null==this.options.data?this.div:this.options.data);break;case"molurl":this.download(this.options.data,"mol");break;case"rxnurl":this.download(this.options.data,"rxn");break;case"xmlurl":this.download(this.options.data,"xml");break;case"jdxurl":this.download(this.options.data,"jdx");break;default:this.setXml(this.div)}const I=!this.options.popup&&!this.options.viewonly;this.div.innerHTML="",null!=this.options.background?this.div.style.background=this.options.background:this.div.style.background="#fff",I&&this.options.showtoolbar&&(this.isSkinW8()?this.dimension.y-=70:(this.dimension.x-=28,this.dimension.y-=24)),dojo.style(this.div,{width:this.dimension.x+"px",height:this.dimension.y+"px"});const t=this;this.options.viewonly&&1!=this.options.popup||scil.Utils.serviceAvailable()&&null!=scil.DnDFile&&new scil.DnDFile(this.div,{url:JSDrawServices.url+"?cmd=openjsd",onupload:function(A){if(!scil.Utils.isChemFile(scil.Utils.getFileExt(A.filename)))return!1},callback:function(A){t.activate(!0),JSDraw2.JSDrawIO.jsdFileOpen2(t,A)}}),I?(this.toolbar=new JSDraw2.Toolbar(this),this.toolbar.createToolbars(this.div),this.options.showtoolbar||this.toolbar.show(!1),window.navigator.msPointerEnabled&&(dojo.connect(this.div,"onselectstart",(function(A){A.preventDefault()})),dojo.connect(this.div,"onMSPointerDown",(function(A){null!=(A=scilligence.mstouch.down(A))&&A.touches.length>1?t.touchStart(A):t.resetGesture()})),dojo.connect(this.div,"onMSPointerMove",(function(A){null!=(A=scilligence.mstouch.move(A))&&A.touches.length>1&&t.touchMove(A)})),dojo.connect(this.div,"onMSPointerUp",(function(A){null!=(A=scilligence.mstouch.up(A))&&A.touches.length>1&&t.touchEnd(A)})),dojo.connect(this.div,"onMSGestureHold",(function(A){t.showContextMenu(A),A.preventDefault()}))),scil.Utils.isTouch?(this.activate(!1,!1),this.connectHandlers.push(dojo.connect(document.body,"ontouchstart",(function(A){return t.bodyTouchStart(A)}))),this.connectHandlers.push(dojo.connect(this.maintable,"onclick",(function(A){return t.touchClick(A)}))),this.connectHandlers.push(dojo.connect(this.div,"ontouchstart",(function(A){return t.touchStart(A)}))),this.connectHandlers.push(dojo.connect(this.div,"ontouchmove",(function(A){return t.touchMove(A)}))),this.connectHandlers.push(dojo.connect(this.div,"ontouchend",(function(A){return t.touchEnd(A)})))):(this.activate(!1,!1),this.connectHandlers.push(dojo.connect(document,"onmousedown",(function(A){return t.bodyMouseDown(A)}))),this.connectHandlers.push(dojo.connect(document,"onkeydown",(function(A){t.keydown(A)}))),this.connectHandlers.push(dojo.connect(this.div,"onmousedown",(function(A){t.mousedown(A)}))),this.connectHandlers.push(dojo.connect(this.div,"onmousemove",(function(A){t.mousemove(A)}))),this.connectHandlers.push(dojo.connect(this.div,"onmouseup",(function(A){t.mouseup(A)}))),scil.Utils.isFirefox?this.connectHandlers.push(dojo.connect(this.div,"onwheel",(function(A){t.mousewheel(A)}))):this.connectHandlers.push(dojo.connect(this.div,"onmousewheel",(function(A){t.mousewheel(A)})))),dojo.attr(this.div,"__ajaxform","1")):(this.options.popup&&(scil.Utils.isTouch?this.connectHandlers.push(dojo.connect(this.div,"ontouchstart",(function(A){if(scil.Utils.isTouchDblClick(A))return t.dblclick(),A.preventDefault(),!1}))):this.connectHandlers.push(dojo.connect(this.div,"ondblclick",(function(A){t.dblclick()})))),scil.Utils.isTouch||(this.connectHandlers.push(dojo.connect(this.div,"onmousedown",(function(A){t.mousedown(A,!0)}))),this.connectHandlers.push(dojo.connect(this.div,"onmousemove",(function(A){t.mousemove(A,!0)}))),this.connectHandlers.push(dojo.connect(this.div,"onmouseup",(function(A){t.mouseup(A,!0)}))),scil.Utils.isFirefox?this.connectHandlers.push(dojo.connect(this.div,"DOMMouseScroll",(function(A){t.mousewheel(A)}))):this.connectHandlers.push(dojo.connect(this.div,"onmousewheel",(function(A){t.mousewheel(A,!0)}))))),this.connectHandlers.push(dojo.connect(this.div,"onresize",(function(){t._clearing||t.onResize()}))),dojo.style(this.div,{userSelect:"none",oUserSelect:"none",MozUserSelect:"none",khtmlUserSelect:"none",webkitUserSelect:"none"});let e=null;if(scil.Utils.isIE&&(scil.Utils.isIE<9||"svg"!=dojox.gfx.renderer)&&(e=this._showAllParents(this.div)),this.surface=dojox.gfx.createSurface(this.div,this.dimension.x,this.dimension.y),null!=e&&this._hideElements(e),null==scil.Utils.isSilverlight&&(scil.Utils.isSilverlight=null!=this.div.firstChild&&"application/x-silverlight"==this.div.type),scil.Utils.isSilverlight)if(this.options.popup){this.div.style.position="relative";let A=parseInt(this.div.style.zIndex+"");isNaN(A)&&(A=0),scil.Utils.createElement(this.div,"div",null,{position:"absolute",left:"0",top:"0",background:"white",filter:"alpha(opacity=1)",width:this.dimension.x+"px",height:this.dimension.y+"px",zIndex:`${A+1}`})}else I&&this.surface.connect("onkeydown",(function(A){t.keydown(A)}));if(0!=this.options.showcontextmenu&&scil.Utils.disableContextMenu(this.div),this.modified=!1,this.options.scale>0){1!=30/this.bondlength*this.options.scale&&this.scale(this.options.scale),this.fitToWindow()}this.redraw(),this.loaded=!0,I?(this.options.tlcplate?this.doCmd("tlc"):this.doCmd("select"),this.options.appmode||scil.Utils.isIE||scil.connect(document,"onpaste",(function(A){t.doPaste(A)&&A.preventDefault()}))):this.doCmd("moveview")}doPaste(A){if(!this.activated)return!1;if(null!=this.texteditor.ed&&null!=this.texteditor.ed.input&&"none"!=this.texteditor.ed.input.style.display)return!1;if(scil.Utils.getMaxZindex()>scil.Utils.getZindex(this.div))return!1;const g=A;null!=g&&null!=g.clipboardData&&(A=g.clipboardData.getData("text/plain"));let C=null;if(scil.Utils.isNullOrEmpty(A)||(C=new JSDraw2.Mol,C.setXml(A),C.isEmpty()&&(C=null)),null==C&&(C=JSDraw2.Editor.getClipboard()),null==C){if(null!=g&&null!=g.clipboardData&&null!=JSDrawServices&&null!=JSDrawServices.url){const A=g.clipboardData.getData("text/rtf");if(!scil.Utils.isNullOrEmpty(A)){const g=this;scil.Utils.ajax(JSDrawServices.url+"?cmd=paste.rtf2jsdraw",(function(A){if(null==A&&null==A.jsdraw)return;const C=new JSDraw2.Mol;if(null==C.setXml(A.jsdraw))return;g.pasteMol(C)&&g.refresh()}),{rtf:A})}}return!1}return this.pasteMol(C)&&this.refresh(),!0}_showAllParents(A){const g={display:[],visibility:[],visvalues:[]};for(;null!=A&&null!=A.style;)"none"==A.style.display&&(g.display.push(A),A.style.display=""),""!=A.style.visibility&&null!=A.style.visibility&&"visible"!=A.style.visibility&&(g.visibility.push(A),g.visvalues.push(A.style.visibility),A.style.visibility="visible"),A=A.parentNode;return g}_hideElements(A){if(null!=A){for(let g=0;g0)}paste(A){const g=JSDraw2.Editor.getClipboard();return this.pasteMol(g)}pasteMol(A,g,C){if(null==A)return!1;if("string"==typeof A){const g=new JSDraw2.Mol(this.options.showimplicithydrogens);g.setMolfile(A),A=g}const I=this.m.isEmpty();this.pushundo(),C&&this.clear(null,!0);let t=null;if(A.bondlength>0)t=this.bondlength,A.scale(this.bondlength/A.bondlength);else{let g=A.medBondLength();g>0||(g=1.56);let C=this.m.medBondLength();C>0||(C=this.bondlength),A.scale(C/g)}if(null==g)A.moveCenter(this.dimension.x,this.dimension.y),A.offset(10,10);else{const C=A.center();A.offset(g.x-C.x,g.y-C.y)}A.showimplicithydrogens=this.options.showimplicithydrogens,this.m.setSelected(),A.setSelected(!0),A.calcHCount(!0);let e=null;const i=this.m.parseRxn(!0),l=A.parseRxn(!0);if("reactant"!=C&&"product"!=C||null==l||null!=l.arrow?null!=i&&(i.reactants.length>0||i.products.length>0)&&(null!=i.arrow?null==l.arrow&&(0==i.reactants.length?i.reactants=l.reactants:scil.Utils.mergeArray(i.products,l.reactants),e=i):null!=l.arrow&&(null==i.arrow&&(0==l.reactants.length?l.reactants=i.reactants:scil.Utils.mergeArray(l.products,i.reactants)),e=l)):("reactant"==C?scil.Utils.mergeArray(i.reactants,l.reactants):scil.Utils.mergeArray(i.products,l.reactants),e=i),null!=e)this.m.setRxn(e,t),this.fitToWindow();else{const g=[];for(let C=A.graphics.length-1;C>=0;--C){const I=JSDraw2.TLC.cast(A.graphics[C]);null!=I&&(A.graphics.splice(C,1),g.splice(0,0,I))}this.m.mergeMol(A);for(let A=0;A0?JSDraw2.defaultoptions.minautowidth1:100,null!=t.bio?o.onFilter=null:o.onFilter=function(A){return s.filterAtomType(A)}}else null!=i?this.texteditor.ed.setItems(null):null!=l?"BRACKET_TYPE"==e.fieldtype?(this.texteditor.ed.setItems(null==JSDraw2.SGroup?null:JSDraw2.SGroup.getDisplayTypes()),o.onSetValue=function(A,g){let C="";if(scil.Utils.endswith(g,")")){const A=g.lastIndexOf("(");A>0&&(C=g.substr(A+1,g.length-A-2))}A.value=C},o.minautowidth=JSDraw2.defaultoptions.minautowidth2>0?JSDraw2.defaultoptions.minautowidth2:150,o.onFilter=null):"MOL_TYPE"==e.fieldtype&&(this.texteditor.ed.setItems(JSDraw2.MOLECULETYPES),o.onSetValue=function(A,g){scil.Utils.isNullOrEmpty(g)?this.mol.delGraphics(e):A.value=g},o.minautowidth=JSDraw2.defaultoptions.minautowidth2>0?JSDraw2.defaultoptions.minautowidth2:150,o.onFilter=null):(this.texteditor.ed.setItems(null!=JSDraw2.defaultoptions.textlist?JSDraw2.defaultoptions.textlist:JSDraw2.TEXTKEYWORDS),o.onSetValue=function(A,g){scil.Utils.indexOf(o.items,g)>=0?A.value+=g:A.value=g},o.minautowidth=JSDraw2.defaultoptions.minautowidth3>0?JSDraw2.defaultoptions.minautowidth3:300,o.autosuggest=this.options.reagentsuggest,o.onFilter=null!=o.autosuggest?null:function(){});const n=scil.Utils.getZindex(this.div);this.texteditor.ed.input.style.zIndex=n>0?n+1:1,null!=I?g=new JSDraw2.Point(I._rect.left,I._rect.top):g.offset(-2,-2);const r=scil.Utils.getOffset(this.div,!1);dojo.style(this.texteditor.ed.input,{fontSize:this.fontsize+"px"}),dojo.style(this.texteditor.ed.input,{left:g.x+r.x+"px",top:g.y+r.y+"px",display:""});let a=!0;if(null!=I)this.texteditor.ed.input.value=null==C?I.text:C;else if(null!=t){let A=t.getLabel();t.charge>0?t.charge>1?A+=t.charge:A+="+":t.charge<0&&(t.charge>1?A+=t.charge:A+="-"),this.texteditor.ed.input.value=A}else null!=i?this.texteditor.ed.input.value=i.text:null!=C&&(this.texteditor.ed.input.value=C,a=!1);this.txtAutosize(),a&&this.texteditor.ed.input.select(),this.texteditor.ed.input.style.display="",this.texteditor.ed.input.focus(),this.texteditor.showtime=(new Date).getTime()}filterAtomType(A){if(null!=this.texteditor.atom)return JSDraw2.SuperAtoms.filter(A,JSDraw2.defaultoptions.suggestcount>0?JSDraw2.defaultoptions.suggestcount:10)}createImageTo(A){if(!scil.Utils.serviceAvailable()||null==A)return;"string"==typeof A&&(A=scil.byId(A));const g=this.getXml();scil.Utils.ajax(JSDrawServices.url+"?cmd=jsdraw2img",(function(C){scil.Utils.createElement(A,"img",null,null,{src:C.src,jsdraw:JSDraw2.Base64.encode(g)})}),{jsdraw:g})}clickTextItem(A){if(null!=this.texteditor.atom)if("..."==A){this.hideTextEditor(!0),this.m.setSelected(!1),this.texteditor.atom.selected=!0,this.refresh(!1);const A=this;this.showPT((function(g){A.menuSetAtomType2(g)}))}else this.hideTextEditor();else this.txtAutosize()}insertSymbol(A){if(null==this.texteditor.ed||"none"==this.texteditor.ed.input.style.display)return!1;this.texteditor.ed.input.focus();let g=JSDraw2.Symbol.getCaretPosition(this.texteditor.ed.input);const C=this.texteditor.ed.input.value;return g>0&&g0){const A=this.dimension.y-10;C.createText({x:5,y:A,text:this.status,align:"bottom"}).setFont({family:"Arial",size:"14px",weight:"normal"}).setFill("#000")}}fitToWindow(A){const g=this.m.rect();if(null==g)return;null==A&&(A=JSDraw2.Editor.BONDLENGTH,this.options.scale>0&&(A*=this.options.scale)),g.inflate(this.bondlength,this.bondlength);const C=g.width/this.dimension.x,I=g.height/this.dimension.y;let t;t=0==C?I:0==I?C:Math.max(I,C),A>0&&this.bondlength/t>A&&(t=this.bondlength/A),1==t?this.moveCenter():this.scale(1/t)}moveCenter(){this.m.moveCenter(this.dimension.x,this.dimension.y)}updateGroupRect(){for(let A=0;A0&&this.scale(this.options.scale),null!=this.ink&&this.ink.clear(),C||g&&null!=this.options.onClear&&this.options.onClear()}toggleAtom(A){return this.m.toggleAtom(A,this.simpledraw?JSDraw2.Editor.TOR:this.tor)}toggle(A){return this.m.toggle(A,this.simpledraw?JSDraw2.Editor.TOR:this.tor)}fixWedgeDir(A){const g=this.m.getNeighborAtoms(A.a1,A.a2),C=this.m.getNeighborAtoms(A.a2,A.a1);(0==g.length||1==g.length)&&g.length0){const g=A[0]._parent;g.clearFlag();for(let g=0;gMath.abs(A.deltaX)?A.deltaY:A.deltaX);if(scil.Utils.isFirefox&&(C*=20),C>0||C<0){const I=this.eventPoint(A);this.scale(1+C/500,I),g?this.redraw():(this.pushundo(null,"moveview"),this.refresh(!0))}scil.Utils.isFirefox&&(A.stopImmediatePropagation(),A.stopPropagation()),A.preventDefault()}mousedown(A,g){if(!this.activated)return this.mousedownPoint=new JSDraw2.Point(A.clientX,A.clientY),void(g&&0==A.button&&(this.start=this.eventPoint(A)));if(null!=this.contextmenu&&this.contextmenu.hide())return;if(JSDraw2.Menu.close(),this.holding.start(A,this),!scil.Utils.isTouch&&A.button!=(scil.Utils.isIE8Lower?1:0))return;this.start=null,this.end=null,this.movingClone=null,this.resizing=null,this.lassolast=null;const C=this.getCmd(),I=(new Date).getTime(),t=this._lastMousedownTm;if(this._lastMousedownTm=I,I-t0&&this.redraw(),void(this.lassolast=e);if("chain"!=C){if("rotate"==C&&null==l&&!this.m.isEmpty()){const A=this.m.atoms;let g=[];for(let C=0;C0&&this.redraw()}else this.chaintool={a:l,start:this.start,p2:null,end:null,points:[]}}selectCurrent(A,g){return this.curObject!=A&&(this.curObject=A,null!=this.options.onselectcurrent&&this.options.onselectcurrent(g,A,this),this.options.showhelmpopup&&this.onHelmSelectCurrent(g,A),!0)}onHelmSelectCurrent(A,g){const C=JSDraw2.Atom.cast(g);if(null==C||null!=this.start||null!=this.contextmenu&&this.contextmenu.isVisible())return void org.helm.webeditor.MolViewer.hide();const I=null==C?null:C.biotype();if(null==I)return;const t=org.helm.webeditor.Monomers.getMonomerSet(I),e=null==C?null:C.elem,i=null==t?null:t[e.toLowerCase()];org.helm.webeditor.MolViewer.show(A,I,i,e,this,C)}mousemove(A,g){if(!this.activated){if(g&&null!=this.start&&!this.frozen){const g=this.eventPoint(A);this.moveview(new JSDraw2.Point(g.x-this.start.x,g.y-this.start.y)),A.preventDefault()}return}this.holding.move(A);const C=this.getCmd(),I=this.eventPoint(A);if("moveview"==C)return void(null!=this.start&&0==A.button&&(this.moveview(new JSDraw2.Point(I.x-this.start.x,I.y-this.start.y)),A.preventDefault()));if("inkblue"==C||"inkred"==C||"inkgreen"==C)return void(null!=this.ink&&this.ink.add(I));this.lastmove=I;let t=!1,e=null;if((null==this.start||"select"!=C&&"lasso"!=C&&"selfrag"!=C)&&(e=this.toggle(I),t=this.selectCurrent(e,A)),null!=this.start)if("arrow"==C)null!=this.start&&(this.end=this.guessArrow(this.start,I),t=!0);else if("zoombox"==C||"curve"==C)null!=this.start&&(this.end=I,t=!0);else if("rotate"==C){if(null!=this.rotating)if(null==this.rotating.a1)this.rotating.a0=this.rotating.a1=I.angleTo(this.rotating.center);else{const A=I.angleTo(this.rotating.center);t=this.rotate(this.rotating.atoms,this.rotating.center,A-this.rotating.a1),t&&(t="all"),this.rotating.a1=A}}else if("select"==C||"lasso"==C||"selfrag"==C||"tlc"==C||"electrophoresis"==C){if(null!=this.start)if(this.lassolast)this.end=I,this.lassoSelect(this.lassolast),this.lassolast=I;else if(null!=this.resizing){if(!this.resizing.start.equalsTo(I)){const g=I.clone().offset(-this.resizing.start.x,-this.resizing.start.y);this.resizing.obj.resize(this.resizing.corner,g,this.resizing.texts),A.shiftKey&&null!=JSDraw2.Shape.cast(this.resizing.obj)&&(this.resizing.obj._rect.height=this.resizing.obj._rect.width),this.resizing.start=I,this.resizing.changed=!0,t="all"}}else if(null!=this.movingClone){if(null==this.end&&(this.end=this.start,A.ctrlKey||A.metaKey)){const A=this.m.clone(!0);A.showimplicithydrogens=this.options.showimplicithydrogens,A.isEmpty()||(this.m.setSelected(),A.setSelected(!0),A.calcHCount(!0),this.m.mergeMol(A))}this.end.equalsTo(I)||(this.m.offset(I.x-this.end.x,I.y-this.end.y,!0),this.end=I),t="all"}else this.end=I,t=!0}else"rectangle"==C||"ellipse"==C||"diamond"==C||"dshape"==C||"dreversed"==C?(A.shiftKey&&I.equalMove(this.start),this.end=I,t=!0):"bracket"==C||"sgroup"==C||"assaycurve"==C||"spectrum"==C||"doublearrow"==C||"tlc"==C||"electrophoresis"==C?(this.end=I,t=!0):"chain"==C?(this.end=I,t=this._makeChain(this.chaintool,I)):"eraser"==C?null==this.erasercache||this.erasercache.singleton||(e=this.toggle(I),null!=e&&(this.delObject(e),++this.erasercache.count,t="all")):scil.Utils.startswith(C,"spot-")||(null!=JSDraw2.Atom.cast(this.curObject)?this.end=this.curObject.p.clone():this.end=this._guessBond(this.start,I),t=!0);0==t||null!=this.start&&I.tm-this.start.tm20&&i>5*Math.abs(t.y-e.y)&&null==this.toggle(t)&&null==this.toggle(e))return t.x>e.x?this.undo():this.redo(),void this.refresh(!1);let l=null;if("text"==I)return void this.showTextEditor(this.curObject,new JSDraw2.Point(e.x,e.y));if("sgroup"==I){if(t.equalsTo(e))this.showTextEditor(this.curObject,new JSDraw2.Point(e.x,e.y));else{const A=null!=t.atom?t.atom:this.toggle(t),g=this.toggle(e);if(null!=JSDraw2.Text.cast(A)){const C=this.clone();A.attach(g)&&this.pushundo(C)}this.refresh(!0)}return}if("eraser"==I)return void(null!=this.erasercache&&(this.erasercache.count>0&&(this.pushundo(this.erasercache.cloned),this.curObject=null,null!=this.helm&&this.helm.resetIDs(),this.refresh(!0)),this.erasercache=null));if("plus"==I)return void(null==this.curObject&&(this.pushundo(),this.m.addGraphics(new JSDraw2.Plus(e)),this.refresh(!0)));if("rxnmap"==I)return void this.doRxnMap(this.curObject);const s=t.distTo(e);if("arrow"==I||"curve"==I){if(null!=this.arrowtool&&null!=this.arrowtool.from){const A=JSDraw2.Shape.cast(this.arrowtool.from);let g=JSDraw2.Shape.cast(this.curObject);const C=this.arrowtool.connector;if(this.arrowtool=null,null!=A&&A!=g){if("rejector"==C){if(A.reject!=A)return this.pushundo(),A.reject==g?A.reject=null:A.reject=g,void this.refresh(!0)}else{if(this.pushundo(),null==g){const C=A.rect(),I=e.clone();e.x=this.bondlength?this.guessArrow(t,e):t.clone().offset(3*this.bondlength,0),"arrow"==I?this.m.addGraphics(new JSDraw2.Arrow(t,e)):this.m.addGraphics(new JSDraw2.Curve(t,e)),void this.refresh(!0)}if("rectangle"==I||"ellipse"==I||"doublearrow"==I||"diamond"==I||"dshape"==I||"dreversed"==I){if(s2*this.bondlength&&g.spots.length>0&&(this.addTlcPlate(g),A=!0),void this.refresh(A)}}if(scil.Utils.startswith(I,"spot-")){const A=JSDraw2.TLC.cast(this.curObject),g=this.clone();return void(null!=A&&A.addSpot(I.substr(5),e,this.tor)&&(this.pushundo(g),this.refresh(!0)))}if("rotate"==I&&null!=this.rotating)return this.rotating.a1!=this.rotating.a0&&(this.pushundo(this.rotating.cloned),this.refresh(!0)),void(this.rotating=null);if("select"==I||"lasso"==I||"selfrag"==I||"rotate"==I||"tlc"==I||"electrophoresis"==I)return null!=this.lassolast?this.lassolast=null:null!=this.resizing?this.resizing.changed&&(this._bracketReselectAtoms(),this.pushundo(this.movingClone),this.movingClone=null,this.resizing=null,l=!0):null!=this.movingClone?this.movingClone.startPt.equalsTo(e)||(this._bracketReselectAtoms(),this.pushundo(this.movingClone),this.mergeOverlaps(),this.movingClone=null,l=!0):s10&&A.height>10){const g=Math.min(this.dimension.x/A.width,this.dimension.y/A.height),C=A.center();this.pushundo(),this.scale(.9*g,C),this.m.offset(this.dimension.x/2-C.x,this.dimension.y/2-C.y)}else A.width<5&&A.height<5&&this.fitToWindow();return void this.redraw()}if("chain"==I&&null!=this.chaintool&&this.chaintool.points.length>0){l=!1;const A=this.clone(),g=this.chaintool.points;let C=null;for(let A=1;A0&&(this.pushundo(),A=new JSDraw2.Bracket(null,g),A.atoms=C,C[0]._parent.addGraphics(A),l=!0),this.refresh(l),null!=A){const g=A.createSubscript(this.m,"#");null!=g&&this.showTextEditor(g,null,"")}else{const A=JSDraw2.Text.cast(this.curObject);null!=A&&"BRACKET_TYPE"==A.fieldtype&&1==A.anchors.length&&null!=JSDraw2.Bracket.cast(A.anchors[0])&&this.showTextEditor(A,null,A.text)}return}if("●"==I){let A;return void(null!=(A=JSDraw2.Atom.cast(this.curObject))?this.showAtomDlg(A):null!=(A=JSDraw2.Bond.cast(this.curObject))&&this.showBondDlg(A))}if("undo"==I||"redo"==I||"zoomin"==I||"zoomout"==I)return;const o=this.clone();if(s<=this.tor){if(scil.Utils.startswith(I,"template."))return this.pushundo(o),this.addTemplate(I.substr(9),this.curObject,e),void this.refresh(!0);let A;if(null!=(A=JSDraw2.Atom.cast(this.curObject))){const g=JSDraw2.PT[I];"antibody"==I||"protein"==I||"gene"==I||null!=g?l=this.m.setAtomType(A,I):"..."==I||"more"==I?l=this.m.setAtomType(A,this.ptElement):"chargep"==I||"chargen"==I?l=this.increaseNum(A,"chargep"==I?1:-1):null!=this.helm&&null!=this.helm&&this.helm.isHelmCmd(I)?scil.helm.isHelmNode(A)&&this.helm.changeMonomer(A,o):null!=this.helm&&scil.helm.isHelmNode(A)?this.helm.changeMonomer(A,o):l=this._addAutoBond(A,I)}if(null!=(C=JSDraw2.Bond.cast(this.curObject)))switch(I){case"double":l=this.m.setBondType(C,2);break;case"triple":l=this.m.setBondType(C,3);break;case"unknown":l=this.m.setBondType(C,0);break;case"dummy":l=this.m.setBondType(C,13);break;case"either":l=this.m.setBondType(C,8);break;case"wiggly":l=this.m.setBondType(C,7);break;case"bold":l=this.m.setBondType(C,14);break;case"boldhash":l=this.m.setBondType(C,15);break;case"delocalized":l=this.m.setBondType(C,4);break;case"singledouble":l=this.m.setBondType(C,9);break;case"singlearomatic":l=this.m.setBondType(C,10);break;case"doublearomatic":l=this.m.setBondType(C,11);break;case"up":5==C.type?(C.reverse(),l=!0):(l=this.m.setBondType(C,5),this.fixWedgeDir(C));break;case"down":6==C.type?(C.reverse(),l=!0):(l=this.m.setBondType(C,6),this.fixWedgeDir(C));break;default:l=this.m.setBondType(C,1==C.type?2:1)}if(!l&&null==this.curObject){if(this.options.helmtoolbar&&!this.helm.isHelmCmd(I))return;if(null!=this.Cmd2BondType(I)){const A=this.m.addAtom(new JSDraw2.Atom(e)),g=e.clone().offset(this.bondlength,0).rotateAround(e,-30);let C=JSDraw2.Atom.cast(this.toggle(g));null==C&&(C=this.m.addAtom(new JSDraw2.Atom(g))),this.m.addBond(new JSDraw2.Bond(A,C)),l=!0}}if(!l&&null==this.curObject){const A="more"==I||"..."==I?this.ptElement:I,g=JSDraw2.PT[A];if(null!=g&&g.a>0||"antibody"==I||"protein"==I||"gene"==I||null!=this.helm&&this.helm.isHelmCmd(I)){const g=this.m.addAtom(new JSDraw2.Atom(e));"antibody"==I?(g.bio={type:JSDraw2.BIO.ANTIBODY},g.elem="X"):"protein"==I?(g.bio={type:JSDraw2.BIO.PROTEIN},g.elem="X"):"gene"==I?(g.bio={type:JSDraw2.BIO.GENE},g.elem="X"):null!=this.helm&&this.helm.createIsolatedMonomer(I,g)||this.m.setAtomType(g,A),l=!0}}return void(l&&(this.pushundo(o),this.refresh(l)))}let n=JSDraw2.Atom.cast(null!=t.atom?t.atom:this.toggle(t)),r=JSDraw2.Atom.cast(this.toggle(e));if(null!=n&&null!=r&&n._parent!=r._parent)return void scil.Utils.alert("Cannot create bond between the two atoms");if(this.options.helmtoolbar){if(this.helm.connnectGroup(t,this.curObject))return this.pushundo(o),void this.redraw();if((null==n||null==r)&&null!=this.helm&&!this.helm.isHelmCmd(I))return"single"==I&&this.helm.connnectGroup(t,this.curObject)&&this.pushundo(o),void this.redraw();if(null!=this.helm&&this.helm.isHelmCmd(I)){if(null!=n&&null==r)return void this.helm.extendChain(n,I,t,e,o);if(null==n&&null==r)return void this.redraw()}}const a=null!=n?n._parent:null!=r?r._parent:this.m;this.pushundo(o);const h=this._countAABonds(n),c=n;null==n&&(null!=h?0==h.peptideN&&0==h.others?n=a.addAtom(new JSDraw2.Atom(t,"H")):0==h.peptideC&&0==h.others&&(n=a.addAtom(new JSDraw2.Atom(t,"O"))):n=a.addAtom(new JSDraw2.Atom(t)));const u=this._countAABonds(r),B=r;if(null==r&&(e=this._guessBond(t,e),null!=h?0==h.peptideN&&0==h.others?r=a.addAtom(new JSDraw2.Atom(e,"H")):0==h.peptideC&&0==h.others&&(r=a.addAtom(new JSDraw2.Atom(e,"O"))):r=a.addAtom(new JSDraw2.Atom(e))),null!=n&&null!=r){this._addNewAtomInExistingGroup(c,[r]),this._addNewAtomInExistingGroup(B,[n]);let A=this.m.findBond(n,r);if(null==A){let g;null!=c&&null!=B&&c._parent!=B._parent?scil.Utils.alert("Cannot create bond between the two atoms"):null!=this.helm&&(scil.helm.isHelmNode(n)||scil.helm.isHelmNode(r))?this.helm.connectFragment(n,r,!scil.helm.isHelmNode(n)||!scil.helm.isHelmNode(r)):(g=this.Cmd2BondType(I),null!=h&&null!=u?0==h.peptideN&&0==u.peptideC?A=new JSDraw2.Bond(n,r,21):0==u.peptideN&&0==h.peptideC?A=new JSDraw2.Bond(r,n,21):"C"==c.elem&&"C"==B.elem&&0==h.disulfide&&0==u.disulfide?A=new JSDraw2.Bond(n,r,23):"K"==c.elem&&0==h.amide&&0==u.peptideC?A=new JSDraw2.Bond(n,r,24):"K"==B.elem&&0==u.amide&&0==h.peptideC&&(A=new JSDraw2.Bond(r,n,24)):null!=h?h.peptideN+h.peptideC+h.others<2?A=new JSDraw2.Bond(n,r,"H"==r.elem?21:1):"C"==c.elem&&0==h.disulfide?A=new JSDraw2.Bond(n,r,23):"K"==c.elem&&0==h.amide&&(A=new JSDraw2.Bond(n,r,24)):null!=u?u.peptideN+u.peptideC+u.others<2?A=new JSDraw2.Bond(r,n,"H"==n.elem?21:1):"C"==B.elem&&0==u.disulfide?A=new JSDraw2.Bond(r,n,23):"K"==B.elem&&0==u.amide&&(A=new JSDraw2.Bond(r,n,24)):A=new JSDraw2.Bond(n,r,g)),null!=A&&a.addBond(A,13!=g,!0)}}this.start=null,this.refresh(null!=C)}_bracketReselectAtoms(){const A=JSDraw2.Bracket.cast(this.curObject);if(null==A)return;const g=this.m.bracketSelect(A.rect());null!=g&&g.length>0&&(A.atoms=g)}_addNewAtomInExistingGroup(A,g){if(null!=A)for(let C=0;C=0&&scil.Utils.indexOf(C.atoms,I)<0&&C.atoms.push(I))}}}}mousedblclick(A){if(this.options.viewonly)return;const g=this.eventPoint(A),C=this.toggle(g);if(null==C)return;let I=JSDraw2.Atom.cast(C);if(null==I){const A=JSDraw2.Bond.cast(C);null!=A&&(I=A.a1)}if(null==I)return;this.m.setSelected(!1);const t=I._parent.getFragment(I,I._parent);for(let A=0;A0)return!1;for(let g=0;g=0)return!1}return!0}isShapeConnected(A,g){if(null==A||null==g)return!1;for(let C=0;C0))return;let g=null;if(null!=JSDraw2.defaultoptions&&null!=JSDraw2.defaultoptions.tlc&&"electrophoresis"!=A.type){g=JSDraw2.defaultoptions.tlc;const C=A.spotsize/(JSDraw2.Editor.FONTSIZE/2);g.width>0&&(A._rect.width=g.width*C),g.height>0&&(A._rect.height=g.height*C);const I=this.getAllTlcPlates(!0);if(null!=I&&I.length>0){const C=I[I.length-1],t=g.gap>0?g.gap:g.width/5;A._rect.left=C._rect.right()+t,A._rect.top=C._rect.top}}this.m.addGraphics(A),null!=g&&g.autonumbering&&this.numberTlcPlates(),null!=this.options.onAddTLC&&this.options.onAddTLC(A),this.moveCenter()}hideChirarlities(A){const g=[];for(let C=0;C0){for(let A=0;A0&&(g.pushundo(t),g.refresh(!0))}))}increaseNum(A,g){if(1!=g&&-1!=g)return!1;let C=!1;if("R"==A.elem){const I=scil.Utils.parseIndex(A.alias);null==I||null==I.index?C=A._parent.setAtomAlias(A,(null==I||null==I.prefix?"R":I.prefix)+"1"):g>0?C=A._parent.setAtomAlias(A,I.prefix+(I.index+1)):I.index>1&&(C=A._parent.setAtomAlias(A,I.prefix+(I.index-1)))}else C=A._parent.setAtomCharge(A,A.charge+g);return C}mergeOverlaps(){const A=[];for(let g=0;g0)&&(this.pushundo(A),null!=this.helm&&this.helm.resetIDs(),this.curObject=null,this.refresh(!0),!0)}showContextMenu(A,g){if(0==this.options.showcontextmenu)return;const C=org.helm.webeditor.Interface.onContextMenu(this,A,g);if(null==C)return;const I=this;null==this.contextmenu&&(this.contextmenu=new JSDraw2.ContextMenu(C,(function(A,g){I.menuCallback(A,g)})));const t=scil.Utils.scrollOffset();this.contextmenu.show(A.clientX+t.x,A.clientY+t.y,this.curObject,C),this.contextmenu.pos=this.eventPoint(A)}menuSetStereochemistry(A){"abs"==A&&(A=null),this.pushundo(),this.m.chiral==A?this.m.chiral=null:this.m.chiral=A,this.refresh(!0)}menuCallback(A,g){let C=!1;const I=this.clone();switch(A){case"curveline":g.setAssayCurveLine(this);break;case"curveonly":g.setAssayCurveOnly(this);break;case"overlaycurves":this.overlayCurves2(g);break;case"setrawassaydata":g.setAssayCurveRawData(this);break;case"spectrum_setdata":g.setSpectrumData(this);break;case"spectrum_setdatafromfile":g.setSpectrumDataFromFile(this);break;case"spectrum_attributes":g.viewAttributes(this);break;case"maskassaysamplepoint":C=g.maskSamplePoint(g.curspot);break;case"pastechemdraw":JSDraw2.ChemDraw.paste(this);break;case"pastechemdrawasproduct":JSDraw2.ChemDraw.paste(this,"product");break;case"pastechemdrawasreactant":JSDraw2.ChemDraw.paste(this,"reactant");break;case"copychemdraw":JSDraw2.ChemDraw.copy(this);break;case"copymolfile":this.copyAs("molfile");break;case"copymolfile2000":this.copyAs("molfile2000");break;case"copymolfile3000":this.copyAs("molfile3000");break;case"copysmiles":this.copyAs("smiles");break;case"pastemolfile":this.pasteAs("molfile");break;case"about":JSDraw2.Editor.showAbout();break;case"abouthelm":scil.helm.about();break;case"removeatomvalues":this.removeAtomValues();break;case"viewlarge":this.viewLarge();break;case"movecenter":this.moveCenter(),this.redraw();break;case"atom_prop":{let A;null!=(A=JSDraw2.Atom.cast(g))&&this.showAtomDlg(A);break}case"atom_tag":let A=null==g.bio?"Atom "+g.elem:g.bio.type;null!=g.bio&&null!=g.bio.subtype&&(A+=" "+g.bio.subtype),this.addTag(g,g.p,A,!0);break;case"helm_set_sense":"5'ss"!=g.bio.annotation&&(g.bio.annotation="5'ss",C=!0);break;case"helm_set_antisense":"5'as"!=g.bio.annotation&&(g.bio.annotation="5'as",C=!0);break;case"helm_set_clear":"5'"!=g.bio.annotation&&(g.bio.annotation="5'",C=!0);break;case"helm_complementary_strand":scil.Utils.startswith(g.bio.annotation,"5'")&&(C=null!=this.helm.makeComplementaryStrand(g));break;case"helm_create_group":C=null!=this.helm.createGroup(g,null,!0);break;case"helm_group_collapse":C=null!=this.helm.collapseGroup(g,!0);break;case"helm_bond_prop":this.helm.setBondProp(g);break;case"helm_atom_prop":this.helm.setAtomProp(g);break;case"group_setproperties":this.setGroupProperties(g);break;case"detectstereochemistry":this.detectChiralities(!0);break;case"hidestereochemistry":this.hideChirarlities(!0);break;case"detectstereochemistry2":this.detectChiralities();break;case"hidestereochemistry2":this.hideChirarlities();break;case"bond_prop":{const A=JSDraw2.Bond.cast(g);null!=A&&this.showBondDlg(A);break}case"bond_tag":this.addTag(g,g.center(),"[None]",!0);break;case"bond_locant":this.addTag(g,g.center(),"U = Unknown Locant");break;case"bio_showsequence":this.showSequences(g);break;case"rgroup_define":this.rgroupDefine(g);break;case"rgroup_remove":{const A=JSDraw2.Atom.cast(g);null!=A&&null!=A.rgroup&&(A.rgroup=null,C=!0);break}case"rgroup_addstructure":this.addRgroupStructure(g),C=!0;break;case"setbracketsubscription":this.setBracketSubscription(g);break;case"setbracketratio":this.setBracketRatio(g);break;case"setbracketmw":this.setBracketData(g,"POLYMER_MW","MW=",1);break;case"registrationparent":this.setBracketData(g,"REG_PARENT","Parent=",2);break;case"graphics_bring2front":C=this.m.setZOrder(g,-1);break;case"graphics_set2back":C=this.m.setZOrder(g,0);break;case"tlc_addlane":C=null!=JSDraw2.TLC.cast(g)&&g.addLane();break;case"tlc_duplicatespot":C=null!=JSDraw2.TLC.cast(g)&&g.duplicateSpot(g.curspot);break;case"tlc_duplicatelane":C=null!=JSDraw2.TLC.cast(g)&&g.duplicateLane(g.curspot);break;case"tlc_showlanelabel":C=null!=JSDraw2.TLC.cast(g)&&g.showLaneLabel(!g.showlanelabel);break;case"tlc_removespot":C=null!=JSDraw2.TLC.cast(g)&&g.removeSpot(g.curspot);break;case"tlc_setrfvalue":C=null!=JSDraw2.TLC.cast(g)&&g.setRfValue(g.curspot,this);break;case"tlc_setlanelabels":JSDraw2.TLC.setLaneLabels(this,g);break;case"Copy":this.copy();break;case"Select All":this.selectAll()&&this.refresh(!1);break;case"copy-viewonly":this.copy(null==I?null:I.mol);break;case"Cut":this.cut()&&this.refresh(!1);break;case"edit-popup":this.options.popup&&this.dblclick();break;case"Expand":this.expandSuperatom();break;case"Paste":this.paste(this.contextmenu.pos)&&this.refresh(!1);break;case"Delete":C=this.delSelected()>0;break;case"multi-center":C=null!=this.createMulticenter();break;case"Clear":this.clear(!1,!0),C=!0;break;case"Undo":this.undo()&&this.refresh(!1);break;case"Redo":this.redo()&&this.refresh(!1);break;case"workflow_properties":JSDraw2.Shape.showProperties(this,JSDraw2.Shape.cast(g))}C&&(this.pushundo(I),this.refresh(C))}overlayCurves2(A){if(null==(A=JSDraw2.AssayCurve.cast(A)))return;const g=[];for(let A=0;A0}copyAs(A){let g=null;switch(A){case"molfile":g=this.getMolfile();break;case"molfile2000":g=this.getMolfile(!1);break;case"molfile3000":g=this.getMolfile(!0);break;case"smiles":g=this.getSmiles(!0)}scil.Utils.isNullOrEmpty(g)?scil.Utils.alert("Nothing placed on clipboard"):scil.Clipboard.copy(g)}pasteAs(A){}rgroupDefine(A){JSDraw2.needPro()}createMulticenter(){JSDraw2.needPro()}viewLarge(){const A=this.options.viewonly?"Dismiss":"Save";JSDraw2.Editor.showPopup("View Structure",A,null,{value:this.clone(),format:"clone"})}removeAtomValues(){let A=null;for(let g=0;g0;return null!=this.options.onselectionchanged&&this.options.onselectionchanged(this),A}addRgroupStructure(A){JSDraw2.needPro()}menuTLCSetSpotShape(A,g,C){JSDraw2.needPro()}menuTLCSetSpotSize(A,g){JSDraw2.needPro()}menuTLCLabel(A,g){JSDraw2.needPro()}menuTLCSetLabel(A,g){JSDraw2.needPro()}menuTLCFill(A,g){JSDraw2.needPro()}menuShapeType(A,g){JSDraw2.needPro()}menuAlignShapes(A,g){JSDraw2.needPro()}menuShapeFill(A,g){JSDraw2.needPro()}menuAntiboyType(A,g){JSDraw2.needPro()}showSequences(A){JSDraw2.needPro()}menuSetFontsize(A,g){JSDraw2.needPro()}menuSetColor(A,g){JSDraw2.needPro()}addTag(A,g,C,I){JSDraw2.needPro()}setBracketData(A,g,C,I){JSDraw2.needPro()}setBracketSubscription(A){if(null==A)return;let g=this.m.getSgroupText(A,"BRACKET_TYPE");null==g&&(g=A.createSubscript(this.m,"#")),this.showTextEditor(g,null,g.text)}setBracketRatio(A){JSDraw2.needPro()}menuBracket(A,g,C,I){JSDraw2.needPro()}menuSetTextField(A,g){JSDraw2.needPro()}menuSetAttachPoint(A,g){JSDraw2.needPro()}lockAtomConnection(A){JSDraw2.needPro()}menuSetAtomQuery(A,g,C,I){JSDraw2.needPro()}menuSetAtomQuery2(A,g){JSDraw2.needPro()}menuSetAtomType(A,g){if("..."==A||"more"==A){const A=this;this.showPT((function(C){A.menuSetAtomType2(C,g)}))}else this.menuSetAtomType2(A,g)}menuSetAtomType2(A,g){let C=0;const I=this.clone(),t=JSDraw2.Atom.cast(g);if(null==t||t.selected){const g=this.m.allAtoms();for(let I=0;I0&&(this.pushundo(I),this.refresh(!0))}menuSetAtomCharges(A){const g=parseInt(A);if(isNaN(g))return;let C=0;const I=this.clone(),t=this.m.allAtoms();for(let A=0;A0&&(this.pushundo(I),this.refresh(!0))}menuSetAtomIsotope(A){JSDraw2.needPro()}menuSetAtomRadical(A){JSDraw2.needPro()}menuSetEhnStereochemistry(A){JSDraw2.needPro()}menuSetBondTop(A){JSDraw2.needPro()}menuSetRxnCenter(A){JSDraw2.needPro()}menuSetBondType(A){JSDraw2.needPro()}getAllTlcPlates(A){JSDraw2.needPro()}numberTlcPlates(){JSDraw2.needPro()}expandSuperatom(){this.helm.expandSuperAtom(this.curObject)||JSDraw2.needPro()}_setSelectedBondType(A){let g=0;const C=this.m.allBonds();for(let I=0;I=0&&this.m.delObject(C)}return this.m.delObject(g),!0}const C=JSDraw2.TLC.cast(A);if(null!=C&&C.removeSpot(C.curspot))return!0;if(null!=JSDraw2.RGroup.cast(A))return!1;const I=JSDraw2.Atom.cast(A);if(null!=I){if(this.delAA(I))return!0;if(0!=JSDraw2.defaultoptions.delheteroatom&&null==I.bio&&("C"!=I.elem||null!=I.alias&&""!=I.alias))return I.elem="C",I.alias=null,I._parent.setHCount(I),!0}const t=A._parent.delObject(A);return t&&null!=C&&this.numberTlcPlates(),t}delSelected(){let A=!1;for(let g=0;g0&&A&&this.numberTlcPlates(),g}hasSelected(){const A=this.m.hasSelected();if(A>0)for(let A=0;A0&&C>0||g<0&&C<0)&&i.flipX(t.a1.p.x);const I=t.angle(),e=A.angle();i.rotate(A.a1.p.clone(),I-e),i.replaceBond(A,t)}else{const A=i.atoms[0];i.offset(C.x-A.p.x,C.y-A.p.y)}for(let A=0;A180?++C:--C;I=A.getNeighborAtoms(g.a2,g.a1);for(let A=0;A180?++C:--C;return C}keydown(A){if(!this.activated)return;if(null!=this.texteditor.ed&&""==this.texteditor.ed.input.style.display)return;if(null!=this.helm&&(this.helm.cancelDnD(),org.helm.webeditor.MolViewer.hide()),scil.Utils.getZindex(this.div)=49&&A.keyCode<=57){const C="R"+(A.keyCode-48);return void(g.alias!=C&&(this.pushundo(),this.m.setAtomAlias(g,C),this.refresh(!0)))}switch(A.keyCode){case 56:C="*";break;case 50:C="@";break;case 187:case 107:C="+";break;case 189:case 109:C="-";break;case 61:scil.Utils.isFirefox&&(C="+");break;case 173:scil.Utils.isFirefox&&(C="-");break;case 65:case 97:C="A";break;case 81:case 113:C="Q";break;case 66:case 98:C="Br";break;case 67:case 99:C="C";break;case 68:case 100:C="D";break;case 70:case 102:C="F";break;case 72:case 104:C="H";break;case 73:case 105:C="I";break;case 76:case 108:C="Cl";break;case 78:case 110:C="N";break;case 79:case 111:C="O";break;case 80:case 112:C="P";break;case 82:case 114:C="R";break;case 83:case 115:C="S";break;case 84:case 116:C="T";break;case 88:case 120:C="X";break;case 77:case 109:C="M";break;case 69:C="Me";break;case 13:return this.showTextEditor(g,g.p.clone()),void A.preventDefault()}if("+"==C||"-"==C){const A=this.clone();if(this.increaseNum(g,"+"==C?1:-1))return this.pushundo(A),void this.refresh(!0)}else if("Me"==C){const A=this.clone();if(this.m.setAtomAlias(g,C))return this.pushundo(A),void this.refresh(!0)}else if(null!=C){const A=this.clone();if(this.m.setAtomType(g,C))return this.pushundo(A),void this.refresh(!0)}return}const I=JSDraw2.Shape.cast(this.curObject);if(null!=I&&13==A.keyCode)return this.showTextEditor(I,I._rect.center()),void A.preventDefault();const t=JSDraw2.Bond.cast(this.curObject);if(null!=t){if(t.isBio()){let g=!1,C=null;83==A.keyCode&&21==t.type?(C=this.clone(),g=this.m.setBondType(t,23)):49==A.keyCode&&23==t.type&&(C=this.clone(),g=this.m.setBondType(t,21)),g&&(this.pushundo(C),this.refresh(!0))}else{let g=-1;if(g=189==A.keyCode||109==A.keyCode?10:187==A.keyCode||107==A.keyCode?11:192==A.keyCode?13:A.keyCode-48,g>=0&&g<=13&&this.curObject.type!=g){const A=this.clone();if(this.m.setBondType(t,g))return this.pushundo(A),5!=t.type&&6!=t.type||this.fixWedgeDir(t),void this.refresh(!0)}else if(9==g&&(5==t.type||6==t.type))return this.pushundo(),t.reverse(),void this.refresh(!0)}return}const e=JSDraw2.Text.cast(this.curObject);if(null!=e)return this.showTextEditor(e),void A.preventDefault();const i=JSDraw2.TLC.cast(this.curObject);if(null!=i&&null!=i.curspot)switch(A.keyCode){case 187:case 189:const g=this.clone();i.curspot.move((187==A.keyCode?.1:-.1)*(A.shiftKey?.1:1))&&(this.pushundo(g),this.refresh(!0)),A.preventDefault();break;case 190:this.pushundo(),i.changeSize(i.curspot,"110%"),this.refresh(!0);break;case 188:this.pushundo(),i.changeSize(i.curspot,"90%"),this.refresh(!0);break;case 82:case 76:this.pushundo(),i.curspot.rx+=A.shiftKey?-.2:.2,i.curspot.rx<.1&&(i.curspot.rx=.1),this.refresh(!0);break;case 85:this.pushundo(),i.curspot.ry1+=A.shiftKey?-.2:.2,this.refresh(!0);break;case 68:this.pushundo(),i.curspot.ry2+=A.shiftKey?-.2:.2,this.refresh(!0)}}toCharArray(A,g){g>0||(g=1);const C=[];for(let I=0;I|\^]/g,"")),new RegExp("^[a-z|^|>]+$").test(A)&&(A=scil.Utils.trim(A).toUpperCase());let l,s=null;if(g==JSDraw2.BIO.BASE_DNA){if(!new RegExp("^[A|G|T|C]+$").test(A))return void scil.Utils.alert2("Invalid DNA sequence.");s=this.toCharArray(A)}if(g==JSDraw2.BIO.BASE_RNA){if(!new RegExp("^[A|G|T|C|U]+$").test(A))return void scil.Utils.alert2("Invalid RNA sequence.");s=this.toCharArray(A)}else if(g==JSDraw2.BIO.AA&&((A=A.replace(/[\.]/g,"-")).indexOf("-")>0?s=A.split("-"):new RegExp("^([A-Z][a-z|0-9]{2}[\\^]?)+[>]?$").test(A)?s=this.splitString(A,"[A-Z][a-z|0-9]{2}[\\^|>]?"):new RegExp("^([A-Z][\\^]?)+[>]?$").test(A)&&(s=this.splitString(A,"[A-Z][\\^|>]?")),null==s))return void scil.Utils.alert2("Invalid peptide sequence.");if(s.length>=3&&scil.Utils.endswith(s[s.length-1],">")&&A.indexOf("^")<=0&&(s[0]+="^"),l=C&&g==JSDraw2.BIO.AA?this._createExpandedAA(s,g,t,e):this._createCollapsedAA(s,g,t,e),null==l)return!1;null!=t&&""!=t||(t="H"),null!=e&&""!=e||(e="OH");const o=(null!=t?t+"-":"")+A+(null!=e?"-"+e:"");if(null!=this.options.onAddSequence&&this.options.onAddSequence(l,o,I))return!0;if(this.m.setSelected(!1),0!=i&&l.setSelected(!0),this.pushundo(),"reactant"==I||"product"==I){const A=this.m.parseRxn();"reactant"==I?A.reactants.push(l):A.products.push(l),this.setRxn(A,!1,this.bondlength)}else this.m.mergeMol(l);return this.fitToWindow(),this.refresh(!0),!0}_createCollapsedAA(A,g,C,I){null!=C&&""!=C||(C="H"),null!=I&&""!=I||(I="OH");const t=[];let e=null,i=null;const l=[];for(let C=0;C1&&("^"==I.substr(I.length-1)||">"==I.substr(I.length-1));s&&(I=I.substr(0,I.length-1));const o=new JSDraw2.Atom(null,I,{type:g});switch(g){case JSDraw2.BIO.AA:o.superatom=JSDraw2.SuperAtoms.getAA(I);break;case JSDraw2.BIO.BASE_DNA:o.superatom=JSDraw2.SuperAtoms.getDNA(I);break;case JSDraw2.BIO.BASE_RNA:o.superatom=JSDraw2.SuperAtoms.getRNA(I)}if(null==o.superatom)return void scil.Utils.alert("It cannot parse: "+I);l.push(o),s?null==e?e=[o]:null==i?(e.push(o),i=[]):i.push(o):null!=i?i.push(o):null!=e?e.push(o):t.push(o)}let s=1;if(g==JSDraw2.BIO.AA?s=21:g!=JSDraw2.BIO.DNA&&g!=JSDraw2.BIO.RNA||(s=22),null!=e&&1==e.length&&(t.push(e[0]),e=null,null!=i)){for(let A=0;A0){o=new JSDraw2.Atom(null,"C"),r.addAtom(o),t.splice(0,0,o);const A=new JSDraw2.Bond(t[1],o,g==JSDraw2.BIO.AA?21:22);A.apo1=1,r.addBond(A)}r.addAtom(l[0]);for(let A=1;A0){n=new JSDraw2.Atom(null,"C"),r.addAtom(n),i.push(n);const A=new JSDraw2.Bond(i[i.length-2],n,1);A.apo1=1,r.addBond(A)}}if(null==e||1==e.length){let A=null;this.layoutAtoms(t,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.LINE,this.bondlength,A),t.length>0&&(A=t[t.length-1]),null!=e&&(this.layoutAtoms(e,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.LINE,this.bondlength,A),e.length>0&&(A=e[e.length-1]),null!=i&&this.layoutAtoms(i,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.LINE,this.bondlength,A))}else{const A=new JSDraw2.Point(0,0);this.layoutAtoms(e,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.CIRCLE,this.bondlength,A.clone().offset(1,0),A),t.length>0&&(t.push(null),t.reverse(),this.layoutAtoms(t,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.LINE,this.bondlength,e[0].p,A)),null!=i&&i.length>0&&(i.splice(0,0,null),this.layoutAtoms(i,_types_jsdraw2__WEBPACK_IMPORTED_MODULE_0__.Po.LINE,this.bondlength,e[e.length-1].p,A))}return null!=o&&(g==JSDraw2.BIO.AA?"H"==C?o.elem="H":r.setAtomAlias(o,C):o.elem="5'"),null!=n&&(g==JSDraw2.BIO.AA?"OH"==I?n.elem="O":"NH2"==I?n.elem="N":r.setAtomAlias(n,I):n.elem="3'"),r}_createExpandedAA(A,g,C,I){null!=C&&""!=C||(C="H"),null!=I&&""!=I||(I="OH");let t=null,e=null;for(let g=0;g=0;--g){const t=C[g].otherAtom(A);if(Math.abs(A.p.y-t.p.y)=A.p.x)return{a:t,b:C[g]}}let t=null;for(let I=0;IA.p.x&&t.a.p.x>A.p.x?i.p.y>t.a.p.y&&(t={a:i,b:e}):i.p.x>A.p.x&&(t={a:i,b:e}):t={a:i,b:e}}if(null==t)return{a:I.otherAtom(A),b:I};if(!g&&!t.a.bio){const g=I.otherAtom(A);if(g.bio)return{a:g,b:I}}return t}findNextAAs(A,g){const C=[];for(;null!=A;){const I=this._findNextAA(A,g);if(null==I)break;C.push(I),A=I.a}return C}_findNextAA(A,g){const C=this.m.bonds;for(let I=0;IA.p.x||!g&&t.p.x0&&(this.maintable.style.width=A+"px"),g>0&&(this.maintable.style.height=g+"px"),this.isSkinW8()?this.resize(A,g-24):this.resize(A-28,g-24)):this.resize(A,g)}onResize(A,g){null!=this.options.onresize&&this.options.onresize()||this.resize(A>0?A:this.div.offsetWidth,g>0?g:this.div.offsetHeight)}resize(A,g){scil.Utils.isIpad&&(null!=scil.eln||null!=scil.App&&null!=scil.App.AccountTypes)||this._setSurfaceSize(new JSDraw2.Point(A,g))&&this.isSkinW8()&&null!=this.toolbar&&this.toolbar.recreateTopToolbar()}_setSurfaceSize(A){return!(Math.abs(A.x-this.dimension.x)<6&&Math.abs(A.y-this.dimension.y)<6)&&(A.x>0&&(this.dimension.x=A.x),A.y>0&&(this.dimension.y=A.y),this.div.style.width=this.dimension.x+"px",this.div.style.height=this.dimension.y+"px",this.surface.setDimensions(this.dimension.x,this.dimension.y),this.fitToWindow(),this.redraw(),!0)}dblclick(){if(this.popuplocked)return scil.Utils.alert("Editing is currently locked"),!1;const A=this;JSDraw2.Editor.showPopup("JSDraw2 Popup Editor","Save",(function(g){A.restoreClone(g.clone()),A.fitToWindow(),A.refresh(!0),null!=A.options.onpopupsaved&&A.options.onpopupsaved(A)}),{value:this.clone(),format:"clone"})}_makeChain(A,g){if(null==A||null!=A.end&&A.end.distTo(g)e.x?1:-1),0).rotateAround(e,30):this._guessBond(e,A.p2,!0):this._guessAutoBond(A.a,g),null==I)return!1;A.points=[A.start],A.points.push(I);let i=A.start.distTo(I);for(;0!=i&&i0?I-t+(t>this.angleStop/2?this.angleStop:0):-(-I-t+(t>this.angleStop/2?this.angleStop:0)),new JSDraw2.Point(this.bondlength,0).rotate(I).offset(A.x,A.y)}guessArrow(A,g){if(A.distTo(g)2&&"e-"==g.substr(0,2)&&(g=g.substr(2)),g}onSelBtn(A){let g=A.target||A.srcElement;if(null==g.getAttribute("cmd"))for(let A=0;A<5;++A){if(g=g.parentElement,null==g||"TD"!=g.tagName)return;if(null!=g.getAttribute("cmd"))return void this.onCmd(g)}else this.onCmd(g)}doCmd(A){if(null==this.toolbar)return;const g=this.toolbar.getButtons();for(let C=0;C0&&0==A.products.length){this.pushundo();for(let g=0;g0?(this.pushundo(A),this.refresh(!0)):scil.Utils.alert("No reaction map found");break}case"seq":JSDraw2.SequenceBuilder.show(this,JSDraw2.BIO.AA,"Peptide");break;case"helix":JSDraw2.SequenceBuilder.show(this,JSDraw2.BIO.BASE_DNA,"DNA");break;case"rna":JSDraw2.SequenceBuilder.show(this,JSDraw2.BIO.BASE_RNA,"RNA");break;case"n2s":JSDraw2.JSDrawIO.name2structure(this);break;case"cleanup":JSDraw2.JSDrawIO.cleanup(this);break;case"selectall":this.selectAll()&&this.redraw();break;case"copy":this.copy();break;case"cut":this.cut()&&this.redraw();break;case"paste":this.paste()&&this.redraw();break;case"fliph":this.flip("hori");break;case"flipv":this.flip("vert");break;case"reaxys":case"scifinder":case"pubchem":case"chemspider":this.sendQuery(C),g=!0;break;case"chemdraw":JSDraw2.ChemdrawPopup.show(this),g=!0;break;case"eraser":this.onDel()||(g=!1);break;case"...":case"more":this.showPT(),g=!1;break;case"pastechemdraw":JSDraw2.ChemDraw.paste(this);break;case"copychemdraw":JSDraw2.ChemDraw.copy(this);break;case"symbol":this.showSymbolDlg();break;case"template.[custom]":this.showTemplatesDlg(),g=!1;break;case"tlctemplate":JSDraw2.TLCTemplates.show(!0,this);break;case"tlcnumber":this.numberTlcPlates();break;case"fullscreen":case"fullscreen2":null!=JSDraw2.Fullscreen&&JSDraw2.Fullscreen.show(this),g=!0;break;case"helm_import":null!=this.helm&&this.helm.showImportDlg(),g=!0;break;case"helm_find":null!=this.helm&&this.helm.showFindReplaceDlg(),g=!0;break;case"helm_mex":null!=this.helm&&scil.helm.MonomerExplorer.showDlg(this),g=!0;break;case"helm_layout":null!=this.helm&&this.helm.clean(null,!0),g=!0;break;default:g=!1}g||this.onCmd2(A)}onCmd2(A){if("rxnmap"==this.getCmd(A)){const A=this.m.parseRxn();if(null==A||0==A.reactants.length||0==A.products.length)return void scil.Utils.alert("Please draw a completed reaction first.")}const g=dojo.attr(A,"parent"),C=null==g?null:dojo.byId(g);if(null!=C&&(this.toolbar.exchangeButton(C,A),A=C),this.curButton!=A){if("w8"==this.options.skin){const g=this;null!=this.curButton&&(dojo.style(this.curButton,{backgroundImage:scil.Utils.imgSrc("w8/"+g.options.buttonshape+".png",!0)}),this.curButton.removeAttribute("pushed")),A.setAttribute("pushed",1),dojo.style(A,{backgroundImage:scil.Utils.imgSrc("w8/"+g.options.buttonshape+"0.png",!0)})}else"si"==this.options.skin?(null!=this.curButton&&(dojo.style(this.curButton,{background:""}),this.curButton.removeAttribute("pushed")),A.setAttribute("pushed",1),dojo.style(A,{background:JSDraw2.Skin.jsdraw.btnselcolor})):(null!=this.curButton&&dojo.style(this.curButton,{border:"none",padding:"2px"}),dojo.style(A,{border:"solid 1px",borderColor:"#c0c0c0 #f5f5f5 #f5f5f5 #c0c0c0",padding:"1px"}));this.curButton=A}}flip(A){if(this.m.isEmpty())return;let g=[];const C=this.m.atoms;for(let A=0;A=0||scil.Utils.indexOf(A,C.a2)>=0)&&(C.type=5==C.type?6:5)}}sendQuery(A){const g=this.getSmiles();if(null==g||""==g)return void scil.Utils.alert("No query structure drawn");let C;switch(A.toLowerCase()){case"pubchem":C="http://pubchem.ncbi.nlm.nih.gov/search/search.cgi?cmd=search&q_type=dt&simp_schtp=fs&q_data=";break;case"chemspider":C="http://www.chemspider.com/Search.aspx?q=";break;case"reaxys":case"scifinder":C="https://www.reaxys.com/reaxys/secured/hopinto.do?context=S&query=";break;default:return}C+=escape(g),window.open(C,"_blank")}onShowOpenFileDlg(){const A=JSDraw2.Editor;if(null==A.openfiledlg){let g=null;g="Lite"==JSDraw2.Security.kEdition?this.options.helmtoolbar?{helm:"HELM",xhelm:"xHELM"}:{mol:"Mol File",smiles:"SMILES"}:A.openfiledlg?.jsd.options.tlcplate?JSDraw2.JSDrawIO.jsdFiles2:JSDraw2.JSDrawIO.jsdFiles;const C={filetype:{label:"File Type",type:"select",items:g},contents:{label:"Contents",type:"textarea",width:800,height:400}};A.openfiledlg=scil.Form.createDlgForm("Import File",C,{label:"Import",onclick:function(){A.onOpenFile()}})}A.openfiledlg.show(),A.openfiledlg.form.setData({}),A.openfiledlg.jsd=this}onShowSaveFileDl(){const A=JSDraw2.Editor;if(null==A.savefiledlg){let g=null;g="Lite"==JSDraw2.Security.kEdition?this.options.helmtoolbar?{helm:"HELM",xhelm:"xHELM"}:{mol:"Mol File",smiles:"SMILES"}:A.savefiledlg?.jsd.options.tlcplate?JSDraw2.JSDrawIO.jsdFiles2:JSDraw2.JSDrawIO.jsdFiles;const C={filetype:{label:"File Type",type:"select",items:g},contents:{label:"Contents",type:"textarea",width:800,height:400}};A.savefiledlg=scil.Form.createDlgForm("Export File",C,null,{onchange:function(g){g==A.savefiledlg.form.fields.filetype&&A.onSaveFile()}})}A.savefiledlg.show(),A.savefiledlg.form.setData({}),A.savefiledlg.jsd=this}onPT(A){JSDraw2.Editor.periodictable.hide(),null!=A&&(this.ptElement=A)}showPT(A){JSDraw2.needPro()}showAtomDlg(A){JSDraw2.needPro()}setAtomProps(A){JSDraw2.needPro()}showBondDlg(A){JSDraw2.needPro()}setBondProps(A){JSDraw2.needPro()}setJdx(A){const g=new JSDraw2.Mol;g.setJdx(A,this.bondlength),this.setMol(g)}getData(A){return"mol"==A?this.getMolfile():"mol3000"==A?this.getMolfile(!0):"rxn"==A?this.getRxnfile():"rxn3000"==A?this.getRxnfile(null,!0):"xml"==A?this.getXml():"helm"==A?this.getHelm():"xhelm"==A?this.getXHelm():"smiles"==A?this.m.getSmiles():"helm"==A?this.getHelm():"xhelm"==A?this.getXHelm():null}setData(A,g){this.setFile(A,g)}setFile(A,g){let C=null;if("mol"==g)C=this.m.setMolfile(A);else if("rxn"==g)C=this.m.setRxnfile(A);else if("xml"==g)C=this.m.setXml(A);else{if("helm"==g)return void this.setHelm(A);if("xhelm"==g)return void this.setXHelm(A);if("jdx"!=g)return;C=this.m.setJdx(A,this.bondlength)}if(null!=C)return this.setMol(C),this.m;this.clear(!0)}setMol(A){return null!=A&&"object"==typeof A&&"MOL"==A.T&&(this.m=A,this.m.showimplicithydrogens=this.options.showimplicithydrogens,this.options.removehydrogens&&this.m.removeHydrogens(),this.m.calcHCount(),this.m.toScreen(this.bondlength),this.fitToWindow(),this._setmol(this.m),this.refresh(!0),!0)}setMolfile(A){this.setFile(A,"mol")}setRxnfile(A){this.setFile(A,"rxn")}getMolfile(A,g){return this.m.bondlength=this.bondlength,this.m.getMolfile(!1,A,g)}getSvg(){if("svg"!=dojox.gfx.renderer)return null;const A=this.m.rect();A.inflate(20,20);const g=dojox.gfx.utils;this.m.offset(-A.left,-A.top),this.redraw();let C=g._cleanSvg(g._innerXML(this.surface.rawNode));return this.m.offset(A.left,A.top),this.redraw(),C=C.replace(/ width="[0-9]+"/,' width="'+Math.round(A.width)+'"'),C=C.replace(/ height="[0-9]+"/,' height="'+Math.round(A.height)+'"'),C}getXml(A,g,C,I){let t=null;try{t=I?this.getSvg():null}catch(A){}return this.m.bondlength=this.bondlength,this.m.getXml(A>0?A:this.dimension.x,g>0?g:this.dimension.y,C,t,this.bondlength)}getHtml(A,g,C,I){return this.getXml(A,g,C,I)}getSequence(A){return null==this.helm?null:this.helm.getSequence(A)}getHelm(A){return null==this.helm?null:this.helm.getHelm(A)}setHelm(A){return null==this.helm?null:this.helm.setHelm(A)}getXHelm(){return null==this.helm?null:this.helm.getXHelm()}setXHelm(A){return null==this.helm?null:this.helm.setXHelm(A)}setXml(A,g){const C="string"==typeof A?scil.Utils.parseXml(A):A;if(null==C)return"string"==typeof A&&A.indexOf("M END")>0?this.setMolfile(A):void 0;if(null!=this.helm&&this.helm.isXHelm(C))return void this.setXHelm(C);this.clear();let I=null;return I="string"==typeof A?null==C?null:C.documentElement||C.firstElementChild:A,this.m.setXml(I),this.m.calcHCount(),this.m.bondlength>0?(this.m.scale(JSDraw2.Editor.BONDLENGTH/this.m.bondlength),this.resetScale()):this.m.toScreen(this.bondlength),this.fitToWindow(),this._setmol(this.m),this.refresh(null==g||g),this.m}setHtml(A){return this.setXml(A)}getRxnfile(A,g){return this.m.getRxnfile(A,g)}getSmiles(A){return this.m.getSmiles()}setMolbase64(A){const g=JSDraw2.Base64.decode(A);this.setMolfile(g)}setRxnbase64(A){const g=JSDraw2.Base64.decode(A);this.setRxnfile(g)}getMolbase64(){const A=this.m.getMolfile();return JSDraw2.Base64.encode(A)}hasHelmNodes(){if(null==this.helm)return!1;for(let A=0;A0||(g=30);const C=this.getXml();scil.Utils.createCookie(A,C,g)}readCookie(A){null!=A&&0!=A.length||(A="__jsdraw_cookie_structure");const g=scil.Utils.readCookie(A);this.setXml(g)}destroy(){if(this.div=null,this.curObject=null,this.curButton=null,this.texteditor={input:null,text:null,atom:null},this.maintable=null,null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null),null!=this.surface){try{this.surface.destroy()}catch(A){}this.surface=null}for(let A=0;A0){const g=A.touches[0],C=g.target||g.srcElement;scil.Utils.hasAnsestor(C,this.maintable)||this.activate(!1)}this.bodyMouseDown(A)}touchClick(A){if(!this.activated)return this.activate(!0),A.preventDefault(),!1}resetGesture(){this.touch.reset(this)}touchStart(A){if(this.activated)return JSDraw2.Menu.isOpen()?(JSDraw2.Menu.close(),A.preventDefault(),!1):1==A.touches.length?(this.mousedown(A.touches[0]),A.preventDefault(),!1):2==A.touches.length?(this.lastmove=null,this.resetGesture(),this.touch.start1=this.eventPoint(A.touches[0]),this.touch.start2=this.eventPoint(A.touches[1]),this.touch.center=new JSDraw2.Point((this.touch.start1.x+this.touch.start2.x)/2,(this.touch.start1.y+this.touch.start2.y)/2),A.preventDefault(),!1):void 0}touchMove(A){if(this.activated){if(1==A.touches.length)return this.mousemove(A.touches[0]),A.preventDefault(),this.resetGesture(),!1;if(this.holding.end(),null!=this.ink&&this.ink.cancel(),this.start=null,2==A.touches.length){const g=this.eventPoint(A.touches[0]),C=this.eventPoint(A.touches[1]);if(null==this.touch.start1)return this.touch.start1=g,void(this.touch.start2=C);if(g.equalsTo(this.touch.end1)&&C.equalsTo(this.touch.end2))return;if(this.touch.end1=g,this.touch.end2=C,null==this.touch.gesture&&null!=this.touch.start1&&null!=this.touch.start2){const A=this.touch.end1.distTo(this.touch.start1),g=this.touch.end2.distTo(this.touch.start2);if(A>25||g>25){const C=this.touch.end1.angleTo(this.touch.start1),I=this.touch.end2.angleTo(this.touch.start2),t=Math.abs(C-I);if(A>8&&g>8&&(t<30||Math.abs(t-360)<30))this.touch.gesture="moving";else{const g=A>25?this.touch.start1.angleAsOrigin(this.touch.end1,this.touch.start2):this.touch.start2.angleAsOrigin(this.touch.end2,this.touch.start1);Math.abs(g-180)<45||Math.abs(g-360)<45?this.touch.gesture="zooming":this.touch.gesture="rotating"}}}if(!(null==this.touch.gesture||this.touch.end1.equalsTo(this.touch.start1)&&this.touch.end2.equalsTo(this.touch.start2)))if("zooming"==this.touch.gesture){const A=this.touch.end1.x-this.touch.start1.x,g=this.touch.end2.y-this.touch.start1.y;(Math.abs(A)>=this.movingresolution||Math.abs(g)>=this.movingresolution)&&(this.touch.scale=this.touch.end1.distTo(this.touch.end2)/this.touch.start1.distTo(this.touch.start2),null==this.touch.cloned&&(this.touch.cloned=this.clone()),this.scale(this.touch.scale,this.touch.center),this.touch.start1=this.touch.end1,this.touch.start2=this.touch.end2,this.redraw())}else if("moving"==this.touch.gesture){const A=this.touch.end1.x-this.touch.start1.x,g=this.touch.end1.y-this.touch.start1.y;(Math.abs(A)>=this.movingresolution||Math.abs(g)>=this.movingresolution)&&(null==this.touch.cloned&&(this.touch.cloned=this.clone()),this.m.offset(A,g),this.touch.start1=this.touch.end1,this.redraw())}else if("rotating"==this.touch.gesture){let A=this.touch.start2.angleAsOrigin(this.touch.start1,this.touch.end1),g=this.touch.start1.angleAsOrigin(this.touch.start2,this.touch.end2);if(A>180&&(A-=360),g>180&&(g-=360),(Math.abs(A)>=1||Math.abs(g)>=1)&&Math.abs(A)<30&&Math.abs(g)<30){const C=Math.abs(g)/(Math.abs(A)+Math.abs(g)),I=this.touch.start1.x+(this.touch.start2.x-this.touch.start1.x)*C,t=this.touch.start1.y+(this.touch.start2.y-this.touch.start1.y)*C;this.m.rotate(new JSDraw2.Point(I,t),Math.abs(A)>Math.abs(g)?A:g),this.touch.start1=this.touch.end1,this.touch.start2=this.touch.end2,this.redraw()}}return A.preventDefault(),!1}this.resetGesture()}}touchEnd(A){if(this.activated)return this.resetGesture(),this.mouseup(A),!1}activate(A,g){this.activated!=A&&null!=this.maintable&&(this.activated=A,A&&(JSDraw2.__currentactived!=this&&null!=JSDraw2.__currentactived&&JSDraw2.__currentactived.activate(!1),JSDraw2.__currentactived=this),window.navigator.msPointerEnabled&&(A?"hidden"!=document.body.style.overflow&&(this._msContentZooming=document.body.style.msContentZooming,this._overflow=document.body.style.overflow,document.body.style.msContentZooming="none",document.body.style.overflow="hidden"):document.body.style.overflow!=this._overflow&&(document.body.style.msContentZooming=this._msContentZooming,document.body.style.overflow=this._overflow)),A||null==this.contextmenu||this.contextmenu.hide(),0!=g&&(0!=this.options.focusbox&&(this.maintable.style.borderColor=A?null==this.options.focuscolor?"#5555ff":this.options.focuscolor:"#cccccc"),A||null==this.curObject||(this.curObject=null,this.redraw()),null!=this.options.onfocus&&this.options.onfocus(A)))}}class Editor extends EditorInt{static get(A){return null==JSDraw2.Editor._allitems&&(JSDraw2.Editor._allitems={}),null==A?null:JSDraw2.Editor._allitems[A]}static getClipboard(){let A=scil.Utils.readCookie("__jsdrawclipboard");if(null==A||""==A)return null;A=JSDraw2.Base64.decode(A);const g=new JSDraw2.Mol;return null==g.setXml(A)||g.isEmpty()?null:g}static setClipboard(A,g){return null==A||A.isEmpty()?(scil.Utils.alert("Nothing placed on clipboard."),!1):(scil.Utils.createCookie("__jsdrawclipboard",JSDraw2.Base64.encode(A.getXml(null,null,null,null,g))),!0)}static showAbout(){if(null==JSDraw2.Editor.about){const A=scil.Utils.createElement(null,"div",null,{width:"430px",color:"black"});let g;if(scil.Utils.createElement(A,"img",null,null,{src:scil.Utils.imgSrc("img/jsdraw2.jpg")}),"Lite"==JSDraw2.Security.kEdition)g="JSDraw Lite for HELM";else{const A=null==JSDraw2.Security.lic?null:JSDraw2.Security.lic.expiration;g=null!=JSDraw2.Security.error?JSDraw2.Security.error:"Licensed to "+JSDraw2.Security.lic.licensor+", expires on "+A.getFullYear()+"-"+(A.getMonth()+1)+"-"+A.getDate(),JSDraw2.Security.valid||(g=""+g+"")}scil.Utils.createElement(A,"div",g,{textAlign:"right"});const C=scil.Utils.createTable(A,null,null,{borderTop:"solid 1px gray",width:"100%"}),I=scil.Utils.createElement(C,"tr");scil.Utils.createElement(I,"td",JSDraw2.version),scil.Utils.createElement(I,"td","http://www.jsdraw.com",{textAlign:"right"});const t=scil.Utils.createElement(scil.Utils.createElement(A,"div",null,{textAlign:"center"}),"button","OK",{width:scil.Utils.buttonWidth+"px"});JSDraw2.Editor.about=new JSDraw2.Dialog(JSDraw2.Language.res("About JSDraw"),A),scil.connect(t,"onclick",(function(A){JSDraw2.Editor.about.hide(),A.preventDefault()}))}JSDraw2.Editor.about.show()}static onClickPT(A,g){JSDraw2.Editor.get(g).onPT(A)}static onSaveFile(){const A=JSDraw2.Editor.savefiledlg.form.fields,g=A.filetype.value,C=A.contents;C.value=JSDraw2.Editor.savefiledlg.jsd.getData(g),C.select(),C.focus()}static onOpenFile(){const A=JSDraw2.Editor.openfiledlg.form.fields,g=A.contents.value,C=A.filetype.value;JSDraw2.Editor.openfiledlg.jsd.setData(g,C),JSDraw2.Editor.openfiledlg.hide()}static initNoDelay(){const A=document.getElementsByTagName("div");for(let g=0;g"),scil.onload((function(){new JSDraw2.Editor(A,g)}))}static showPopupIframe(A,g,C,I){scil.Utils.getTopWindow().JSDraw2.Editor.showPopup(A,g,C,I)}static getPopupSize(A){const g={width:800,height:400};if(null!=JSDraw2.defaultoptions){const C=JSDraw2.defaultoptions.popupwidth,I=JSDraw2.defaultoptions.popupheight,t=scil.Utils.getScreenSize(A);"string"==typeof C&&"%"==C.substr(C.length-1,1)?g.width=t.w*parseInt(C.substr(0,C.length-1))/100:"number"==typeof C&&(g.width=C),"string"==typeof I&&"%"==C.substr(I.length-1,1)?g.height=t.h*parseInt(I.substr(0,I.length-1))/100:"number"==typeof I&&(g.height=I)}return g}static showPopup(A,g,C,I,t){let e=null;if(null==JSDraw2.Editor.popupdlg){e=this.getPopupSize();const g=scil.Utils.createTable();let C=scil.Utils.createElement(g,"tr"),I=scil.Utils.createElement(C,"td");e.div=scil.Utils.createElement(I,"div",null,{width:e.width+"px",height:e.height+"px"}),C=scil.Utils.createElement(g,"tr"),I=scil.Utils.createElement(C,"td",null,{textAlign:"center"});const t=scil.Utils.createElement(I,"button",null,{width:scil.Utils.buttonWidth+"px"});JSDraw2.Editor.popupdlg=new JSDraw2.Dialog(A,g.parentNode),JSDraw2.Editor.popupdlg.button=t}if(JSDraw2.Editor.popupdlg.show(A,t),null!=e){JSDraw2.defaultoptions.popupxdraw?(e.height-=40,e.value=I,JSDraw2.Editor.popupdlg.jsd=new scilligence.XDraw(e.div,e)):(e.div.style.border="solid 1px #ddd",JSDraw2.Editor.popupdlg.jsd=new JSDraw2.Editor(e.div),this._loadPopupData(I)),(!scil.Utils.isIE||scil.Utils.isIE>8)&&JSDraw2.Editor.popupdlg.updateWidth();const A=function(A){let g=!0;null!=JSDraw2.Editor.popupdlg.callback&&(g=JSDraw2.Editor.popupdlg.callback(JSDraw2.Editor.popupdlg.jsd),JSDraw2.Editor.popupdlg.callback=null),0!=g&&JSDraw2.Editor.popupdlg.hide(),A.preventDefault()};dojo.connect(JSDraw2.Editor.popupdlg.button,"onclick",A)}else this._loadPopupData(I);return JSDraw2.Editor.popupdlg.button.innerHTML=scil.Utils.imgTag("tick.gif",g),JSDraw2.Editor.popupdlg.callback=C,JSDraw2.Editor.popupdlg.jsd}static _loadPopupData(A){null!=A?("jsdraw"==A.format||"html"==A.format||"xml"==A.format?JSDraw2.Editor.popupdlg.jsd.setXml(A.value):"mol"==A.format||"molfile"==A.format?JSDraw2.Editor.popupdlg.jsd.setMolfile(A.value):"jdx"==A.format?JSDraw2.Editor.popupdlg.jsd.setJdx(A.value):"clone"==A.format?(JSDraw2.Editor.popupdlg.jsd.restoreClone(A.value),JSDraw2.Editor.popupdlg.jsd.fitToWindow()):JSDraw2.Editor.popupdlg.jsd.clear(!0),JSDraw2.Editor.popupdlg.jsd.refresh()):JSDraw2.Editor.popupdlg.jsd.clear(!0)}}Editor.__xcode=91,Editor.undoGestureTime=300,Editor.dblclickdelay=300,Editor.BONDLENGTH=30,Editor.ANGLESTOP=30,Editor.LINEWIDTH=2,Editor.TOR=10,Editor.FONTSIZE=14;class MSTouch{static down(A){const g=MSTouch;return this.pointers[A.pointerId]={clientX:A.clientX,clientY:A.clientY,target:A.target,button:A.button,pointerId:A.pointerId,_tm:(new Date).getTime()},A.touches=g.toTouches(),A}static move(A){const g=MSTouch,C=this.pointers[A.pointerId];if(null!=C)return C.clientX=A.clientX,C.clientY=A.clientY,C._tm=(new Date).getTime(),A.touches=g.toTouches(),A}static up(A){return delete MSTouch.pointers[A.pointerId],A.touches=this.toTouches(),A}static toTouches(){const A=MSTouch,g=[],C=(new Date).getTime(),I=[];for(const t in A.pointers)A.pointers[t]._tm>C-5e3?g.push(A.pointers[t]):I.push(t);for(let g=0;g{"use strict";C.r(g);const I=new class{constructor(){this.showimplicithydrogens=!0}};JSDraw2.MolHandler=scil.extend(scil._base,{constructor:function(A){this.T="MOLHANDLER",this.options=JSON.parse(JSON.stringify(I)),this.options=Object.assign(this.options,A??{}),this.bondlength=JSDraw2.Editor.BONDLENGTH,this.m=new JSDraw2.Mol(this.options.showimplicithydrogens)}})},3164:(A,g,C)=>{"use strict";var I;C.r(g),C.d(g,{ChiralTypes:()=>I,Mol:()=>t}),function(A){A.AND="and",A.OR="or"}(I||(I={}));class t{constructor(A){this.T="MOL",this.name=null,this.atoms=[],this.bonds=[],this.graphics=[],this.stats=null,this.showimplicithydrogens=0!=A,this.props=null}_addAtom(A,g){this.atoms.push(A),A._parent=null!=g?g:this}_addBond(A,g){this.bonds.push(A),A._parent=null!=g?g:this}_addGraphics(A,g){this.graphics.push(A),A._parent=null!=g?g:this}resetIds(A){const g=new JSDraw2.IDGenerator(A?this._getMaxID():0);for(let A=0;AA&&(A=C.id)}for(let g=0;gA&&(A=C.id)}for(let g=0;gA&&(A=C.id)}for(let g=0;gA&&(A=C.rgroup.id)}return A}getObjectById(A){for(let g=0;g0?C:0)){case 0:I.offset(1,0);break;case 1:I=t[0].otherAtom(A).p.clone().rotateAround(A.p,120);break;case 2:{const g=t[0].otherAtom(A).p,C=t[1].otherAtom(A).p,e=A.p.angleAsOrigin(g,C);Math.abs(e-180)<=1?(I=g.clone(),I.rotateAround(A.p,90)):(I.x=(g.x+C.x)/2,I.y=(g.y+C.y)/2,I.rotateAround(A.p,180));break}case 3:{const g=t[0].otherAtom(A).p,C=t[1].otherAtom(A).p,e=t[2].otherAtom(A).p;let i=I.angleAsOrigin(g,C),l=I.angleAsOrigin(C,e),s=I.angleAsOrigin(e,g);i>180&&(i=360-i),l>180&&(l=360-l),s>180&&(s=360-s),I=i>l&&i>s?e.clone():l>i&&l>s?g.clone():C.clone(),I.rotateAround(A.p,180);break}default:return null}return I.setLength(g,A.p),I}getMaxRIndex(A){null==A&&(A=0);for(let g=0;gA&&(A=I.index),null!=C.rgroup))for(let g=0;gA&&(A=I)}}return A}setColor(A,g){let C=0;for(let I=0;I0)return g}}return A}bracketSelect(A){let g=[];for(let C=0;C=0;--t){const e=this.bonds[t],i=scil.Utils.indexOf(g,e.a1)>=0,l=scil.Utils.indexOf(g,e.a2)>=0;i!=l&&(JSDraw2.Point.intersect(e.a1.p,e.a2.p,A.topleft(),A.bottomleft())||JSDraw2.Point.intersect(e.a1.p,e.a2.p,A.topright(),A.bottomright()))&&(C.push({b:e,a:l?e.a1:e.a2}),I.splice(t,1))}if(2==C.length||1==C.length){const A=this.bonds;this.bonds=I;const t=this.splitFragments();if(this.bonds=A,t.length>1)for(let A=0;AA.superatom.attachpoints)A.superatom.atoms.length>0&&(g=!0);else for(let A=0;A0)C=A.hs-1;else{const I=JSDraw2.PT[A.elem];if(null!=I&&null!=I.v&&null!=I.e){const t=this.getNeighborBonds(A);let e=0,i=0;for(let A=0;A2?1:1.5):e+=t[A].valence()}2!=t.length||"O"!=A.elem&&"S"!=A.elem||4!=t[0].type||4!=t[1].type||--e;let l=0;const s=I.e<=4?0:I.e%4,o=I.e<=4?I.e:4-I.e%4;if(A.charge>0){if(s>0){if(!(s>=A.charge))return;l=A.charge}else if(o>0){if(!(o>=A.charge))return;l-=A.charge}}else if(A.charge<0&&o>0){if(!(o>-A.charge))return;l="B"==A.elem||"P"==A.elem||"Si"==A.elem?-A.charge:A.charge}if(1==A.radical||3==A.radical?e+=2:2==A.radical&&++e,null!=A.attachpoints)for(let g=0;g0?A/2-C.x:0,g>0?g/2-C.y:0)}cleanupRxn(A){const g=this.parseRxn(!0);if(null==g||1==g.reactants.length&&0==g.products.length&&null==g.arrow)return!1;let C=this.medBondLength();return C>0||(C=A>0?A:JSDraw2.Editor.BONDLENGTH),this._layoutRxn(g,C)}_layoutRxn(A,g){const C=[];for(let A=0;A0){C.pop().p=new JSDraw2.Point(I,t)}else{const A=new JSDraw2.Plus(new JSDraw2.Point(I,t));this._addGraphics(A)}I+=g,A.reactants[e].offset(I-i.left,t-i.center().y),I+=i.width}}const e=A.arrow;if(null!=e){const C=e.p2.angleTo(e.p1);e.p2.rotateAround(e.p1,-C);const i=e.rect();null==I?(I=i.right(),t=i.center().y):(I+=g,e.offset(I-i.left,t-i.center().y),I+=i.width);let l=0;if(null!=A.above)for(let g=0;gl&&(l=C)}if(null!=A.below)for(let g=0;gl&&(l=C)}if(l>0&&l+g>i.width){const A=l+g-i.width;e.p2.offset(A,0),I+=A}const s=g/10,o=e.rect().center();if(null!=A.above){let g=o.y-2*s;for(let C=A.above.length-1;C>=0;--C){const I=A.above[C];I.offset(o.x-I._rect.center().x,g-I._rect.bottom()),g=I._rect.top-s}}if(null!=A.below){let g=o.y+2*s;for(let C=0;C0)if(I+=g,C.length>0){C.pop().p=new JSDraw2.Point(I,t)}else{const A=new JSDraw2.Plus(new JSDraw2.Point(I,t));this._addGraphics(A)}I+=g,A.products[e].offset(I-i.left,t-i.center().y),I+=i.width}}for(let A=0;A0&&C.inflate(A.gap*g/15,A.gap*g/15),C}getSelectedRect(){let A=null;for(let g=0;gI&&(I=i.x),i.yt&&(t=i.y)):(g=I=i.x,C=t=i.y)}const e=new JSDraw2.Rect(g,C,I-g,t-C);for(let A=0;A0){let I=!0;for(let A=0;A=0;--g){const I=this.bonds[g];I.a1!=A&&I.a2!=A||(this.bonds.splice(g,1),this.objectRemoved(I),C.push(I.otherAtom(A)),null!=A.atommapid&&this.clearAtomMap(A.atommapid))}let I=0;for(let g=0;g0}delBond(A,g){for(let C=0;C0&&(1!=A.attachpoints.length||A.attachpoints[0]!=g)&&(A.attachpoints=[g],A._parent.setHCount(A),!0)}setAtomType(A,g,C){if("antibody"==g||"protein"==g||"gene"==g||"dna"==g||"rna"==g){if(A.biotype()==JSDraw2.BIO.ANTIBODY||A.biotype()==JSDraw2.BIO.PROTEIN||A.biotype()==JSDraw2.BIO.GENE||A.biotype()==JSDraw2.BIO.DNA||A.biotype()==JSDraw2.BIO.RNA)return!1;switch(g){case"antibody":A.bio={type:JSDraw2.BIO.ANTIBODY};break;case"protein":A.bio={type:JSDraw2.BIO.PROTEIN};break;case"gene":A.bio={type:JSDraw2.BIO.GENE};break;case"dna":A.bio={type:JSDraw2.BIO.DNA};break;case"rna":A.bio={type:JSDraw2.BIO.RNA}}return A.elem="X",A.isotope=null,A.query=null,A.hcount=null,A.radical=null,A.charge=0,!0}let I=null;if(g.length>1&&/[\+|\-][0-9]?$/.test(g)){const A=g.replace(/[\+|\-][0-9]?$/,""),C=g.substr(A.length);g=A,I="+"==C?1:"-"==C?-1:parseInt(C)}if(A.elem==g&&"H"==g&&null==A.isotope||A.bio)return!1;let t=null,e="D"==g||"T"==g?"H":g;if(/^R[0-9]+$/.test(g)&&(e="R",t=g),null==JSDraw2.PT[e])return!1;const i=A.elem;if(A.elem=e,"R"!=e&&(A.rgroup=null),A.alias=t,A.superatom=null,A.isotope="D"==g?2:"T"==g?3:null,A.query=null,I>0||I<0?A.charge=I:C&&(A.charge=0),"@"==i){A.alias=null,A.bio=null;const g=this.getAllBonds(A);for(let A=0;A11||A.a1.bio||A.a2.bio)&&(A.type=g,A._parent.setHCount(A.a1),A._parent.setHCount(A.a2),!0):23==A.type&&21==g||21==A.type&&23==g?(A.type=g,!0):void 0}isLoneAtom(A){for(let g=0;g=0;--g){const C=this.atoms[A[g]];for(let A=this.bonds.length-1;A>=0;--A){const g=this.bonds[A];g.a1!=C&&g.a2!=C||this.bonds.splice(A,1)}this.atoms.splice(A[g],1)}return A.length}draw(A,g,C,I,t,e,i,l){if(null==g&&(g=2),null==C&&(C=14),I)for(let I=0;It.x+JSDraw2.speedup.gap||g.p.y<-JSDraw2.speedup.gap||g.p.y>t.y+JSDraw2.speedup.gap,g._haslabel=g.hasLabel(this,i)}const s=[];for(let I=0;I=t.left&&I.left<=t.right()||I.right()>=t.left&&I.right()<=t.right()||t.left>=I.left&&t.left<=I.right()||t.right()>=I.left&&t.right()<=I.right()){const C=(Math.max(I.left,t.left)+Math.min(I.right(),t.right()))/2;A.p.x=g.p.x=C,A.p.y=I.bottom()I.bottom()?t.top:t.bottom()}else if(I.top>=t.top&&I.top<=t.bottom()||I.bottom()>=t.top&&I.bottom()<=t.bottom()||t.top>=I.top&&t.top<=I.bottom()||t.bottom()>=I.top&&t.bottom()<=I.bottom()){const C=(Math.max(I.top,t.top)+Math.min(I.bottom(),t.bottom()))/2;A.p.y=g.p.y=C,A.p.x=I.right()I.right()?t.left:t.right()}else I.right()I.right()?A.p.x=I.right():A.p.x=C.x,C.yI.bottom()?A.p.y=I.bottom():A.p.y=C.y,A._outside=!1}return!0}_findGroup(A){for(let g=0;gg?t=!0:o<-g&&(i=!0),n>g?e=!0:n<-g&&(l=!0)}return t?i?e?l?JSDraw2.ALIGN.RIGHT:JSDraw2.ALIGN.TOP:JSDraw2.ALIGN.BOTTOM:JSDraw2.ALIGN.LEFT:JSDraw2.ALIGN.RIGHT}setMolfile(A,g){const C=this.setMolfile2(A,g);return null!=C&&this.guessSuperAtoms(),C}guessSuperAtoms(){return 0}setMolfile2(A,g){if(null!=A&&A.length>4){if("$RXN"==A.substr(0,4))return this.setRxnfile(A);if("$MDL"==A.substr(0,4))return this.setRgfile(A)}if(this.clear(),null==A||0==A.length)return null;let C=null;C=A.indexOf("\n")>=0?A.split("\n"):A.split("|");for(let A=0;A<=Math.min(3,C.length-1);++A){if(C[A].toUpperCase().indexOf(" V2000")>0)return this.setMolV2000(C,A,g),3==A&&(this.name=scil.Utils.trim(C[0])),this;if(C[A].toUpperCase().indexOf(" V3000")>0)return this.setMolV3000(C,A+1,g),A+1==3&&(this.name=scil.Utils.trim(C[0])),this}return null}setMolV2000(A,g,C,t){const e=parseFloat(A[g].substr(0,3)),i=parseFloat(A[g].substr(3,3)),l=A[g].substr(12,3);if(JSDraw2.defaultoptions.and_enantiomer||(this.chiral=" 1"==l),isNaN(e)||isNaN(i))return null;for(let I=++g;I=39?parseInt(g.substr(36,3)):0,s=C&&g.length>=63?parseInt(g.substr(60,3)):0,o=g.length>=45?parseInt(g.substr(42,3)):0,n=g.length>=51?parseInt(g.substr(48,3)):0;if(isNaN(t)||isNaN(e)||isNaN(l))return null;let r=null;/^R[0-9]+$/.test(i)&&(r=i,i="R");const a=new JSDraw2.Atom(new JSDraw2.Point(t,e),"R#"==i?"R":i);switch(a.alias=r,s>0&&(a.atommapid=s),o>0&&o<=5&&(a.hs=o),n>0&&n<=15&&(a.val=n),this._addAtom(a),l){case 1:a.charge=3;break;case 2:a.charge=2;break;case 3:a.charge=1;break;case 5:a.charge=-1;break;case 6:a.charge=-2;break;case 7:a.charge=-3}}for(let I=g+=e;I=18?parseInt(g.substr(15,3)):null,o=g.length>=21?g.substr(18,3):null;if(isNaN(t)||isNaN(e)||isNaN(i))return null;const n=this.atoms[t],r=this.atoms[e];let a;switch(i){case 0:case 8:a=0;break;case 1:switch(l){case 1:a=5;break;case 4:a=7;break;case 6:a=6;break;default:a=1}break;case 2:a=3==l?8:2;break;case 3:a=3;break;case 4:a=4;break;case 5:a=9;break;case 6:a=10;break;case 7:a=11;break;case 9:a=13}const h=new JSDraw2.Bond(n,r,a);1==s?h.ring=!0:2==s&&(h.ring=!1),C&&this.readRxnCenter(h,o),this._addBond(h)}const s=[];for(let C=g+=i;C=6?g.substr(0,6):null,e=g.length>=6?g.substr(0,3):null;if("M ISO"==I){const A=parseInt(g.substr(6,3));for(let C=0;C=1&&I<=3&&(this.atoms[A-1].radical=I)}}else if("M CHG"==I){const A=parseInt(g.substr(6,3));for(let C=0;C0)&&(null==t.query&&(t.query={}),t.query.rbc=-1==I?0:I)}}else if("M RGP"==I){const A=parseInt(g.substr(6,3));for(let C=0;C0&&"^"==C.substr(0,1)&&(C=C.substr(1)),s[A].subscript=C}else if("M SCL"==I){s[parseInt(g.substr(7,3))].cls=g.substr(11)}else if("M SPL"==I){const A=parseInt(g.substr(6,3));for(let C=0;C=0;--g){const e=this.bonds[g],i=scil.Utils.indexOf(C.atoms,e.a1),l=scil.Utils.indexOf(C.atoms,e.a2);i>=0&&l>=0?(C.bonds.splice(0,0,e),this.bonds.splice(g,1)):i>=0?(null==I&&(I=e.a1.p.clone()),e.a1.attachpoints.push(++t),e.apo1=t,e.a1=A):l>=0&&(null==I&&(I=e.a2.p.clone()),e.a2.attachpoints.push(++t),e.apo2=t,e.a2=A)}switch(A.p=null!=I?I:C.atoms[0].p.clone(),A.superatom=C,A.alias=g.subscript,g.cls){case"AminoAcid":case"AA":A.bio={type:JSDraw2.BIO.AA},A.elem=A.alias,A.alias=null;break;case"BASE":case"DNA":A.bio={type:JSDraw2.BIO.BASE_DNA},A.elem=A.alias,A.alias=null;break;case"RNA":A.bio={type:JSDraw2.BIO.BASE_RNA},A.elem=A.alias,A.alias=null}this._addAtom(A)}}for(let A=0;A0&&g.atoms.push(C)}}for(let A=0;A999||this.bonds.length>999||this.hasEnhancedStereochemistry()}getRgfile(A,g,C){return null}_getRgroups(A){null==A&&(A={n:0,list:[]});for(let g=0;g0&&A.list.push(C))}return A}getSubMol(A){const g=this,C={atoms:scil.clone(A),bonds:[],openbonds:[]};for(let I=0;I=0,i=scil.Utils.indexOf(A,t.a2)>=0;e&&i?C.bonds.push(t):e?C.openbonds.push({b:t,oa:t.a2}):i&&C.openbonds.push({b:t,oa:t.a1})}return C}expandSuperAtoms(A){const g=[],C=this.clone(null),I=scil.clone(C.atoms);for(let t=0;t=0;--A){13==I.bonds[A].type&&I.bonds.splice(A,1)}const t=I._getRgroups();if(t.list.length>0)return I.getRgfile(A,t,C);let e=(null==I.name?"":I.name)+"\n";return e+=I._getMolHeader(),e+="\n",e+=I._getMolV2000(A,null,C),e}allAtoms(A){null==A&&(A=[]);for(let g=0;g0?this.bondlength:this.medBondLength(),t=I>0?1.56/I:1;let e="";e+=scil.Utils.formatStr(this.atoms.length,3,0),e+=scil.Utils.formatStr(this.bonds.length,3,0),e+=" 0 0",this.hasStereoCenter()&&"and"!=this.chiral?e+=" 1":e+=" 0",e+=" 0 0 V2000\n";let i="",l="",s="",o="",n="",r="",a="";this.resetIds();for(let g=0;g=1&&C.radical<=3&&(l+="M RAD 1"+scil.Utils.formatStr(g+1,4,0)+scil.Utils.formatStr(C.radical,4,0)+"\n"),null!=C.tag&&""!=C.tag&&(s+="V "+scil.Utils.formatStr(g+1,3,0)+" "+C.tag+"\n"),null!=C.alias&&""!=C.alias&&(a+="A "+scil.Utils.formatStr(g+1,3,0)+"\n"+C.alias+"\n");for(let A=0;A0){o+="M ALS "+scil.Utils.formatStr(g+1,3,0)+scil.Utils.formatStr(C.query.als.length,3,0)+(0==C.query.t?" T ":" F ");for(let A=0;A0?(I="R#",n+="M RGP 1"+scil.Utils.formatStr(g+1,4,0)+scil.Utils.formatStr(parseInt(C.iR),4,0)+"\n"):I="R":"H"==I&&(2==C.isotope?I="D":3==C.isotope&&(I="T")),e+=scil.Utils.formatStr(C.p.x*t,10,4),e+=scil.Utils.formatStr(-C.p.y*t,10,4),e+=scil.Utils.formatStr(0,10,4),e+=" ",e+=scil.Utils.padRight(I,2," "),e+=" 0";let h=0;switch(C.charge){case 1:h=3;break;case 2:h=2;break;case 3:h=1;break;case-1:h=5;break;case-2:h=6;break;case-3:h=7}e+=scil.Utils.formatStr(h,3,0),e+=" 0",C.hs>0?e+=scil.Utils.formatStr(C.hs,3,0):e+=" 0",e+=" 0 0",C.val>0?e+=scil.Utils.formatStr(C.val,3,0):e+=" 0",e+=" 0 0",A&&C.atommapid>0?e+=scil.Utils.formatStr(C.atommapid,3,0):e+=" 0",e+=" 0 0\n"}for(let A=0;A0&&(C=this.getExpandedAtoms(null==g.expandedatoms?g.atoms:g.expandedatoms),I=g.getXbonds(this));const e=++B.k;let i=null;const l={sty:"",spl:"",data:"",id:B},s=g.getType(),o=g.getTypeNum();l.subscript=s;let n=JSDraw2.SGroup.stys[s];null==n&&(n=null!=I&&2==I.length?"SRU":"GEN"),l.sty+=" "+scil.Utils.formatStr(e,3,0)+" "+n;let r=JSDraw2.SGroup.fieldtypes[s];null==r&&(r="BRACKET");const a=null==n;let h=null;for(let A=0;A8&&"BRACKET_"==A.substr(0,8)&&(A="BRACKET_SUBTYPE"==A?r+"_TYPE":r+A.substr(7)),"SRU"==n?l.subscript=C.text:this.getDataGroup(C.text,A,C._rect.left*t,-C._rect.top*t,e,l)}else"BRACKET_TYPE"==C.fieldtype&&"mul"==s&&(h=C.text);c[A]=null}}if(u+="M STY"+scil.Utils.formatStr(l.sty.length/8,3,0)+l.sty+"\n","ht"!=i&&"hh"!=i&&"eu"!=i||(u+="M SCN"+scil.Utils.formatStr(1,3,0)+" "+scil.Utils.formatStr(e,3,0)+" "+i.toUpperCase()+" \n"),null!=o&&(u+="M SNC"+scil.Utils.formatStr(1,3,0)+" "+scil.Utils.formatStr(e,3,0)+" "+scil.Utils.padLeft(o,3," ")+" \n"),""!=l.spl&&(u+="M SPL"+scil.Utils.formatStr(l.spl.length/8,3,0)+l.spl+"\n"),g.atoms.length>0){u+=this.writeList("M SAL "+scil.Utils.formatStr(e,3,0),C,"id",4,8),u+=this.writeList("M SBL "+scil.Utils.formatStr(e,3,0),I,"id",4,8),scil.Utils.isNullOrEmpty(l.subscript)||"MUL"==n&&"mul"==l.subscript||(u+="M SMT 1 "+l.subscript+"\n");const A=g.atoms;"n"==g.type&&"SRU"!=n||(u+=this.writeList("M SPA "+scil.Utils.formatStr(e,3,0),A,"id",4,8))}u+="M SDI "+scil.Utils.formatStr(e,3,0)+" 4",u+=scil.Utils.formatStr(g._rect.left*t,10,4),u+=scil.Utils.formatStr(-g._rect.bottom()*t,10,4),u+=scil.Utils.formatStr(g._rect.left*t,10,4),u+=scil.Utils.formatStr(-g._rect.top*t,10,4),u+="\n",u+="M SDI "+scil.Utils.formatStr(e,3,0)+" 4",u+=scil.Utils.formatStr(g._rect.right()*t,10,4),u+=scil.Utils.formatStr(-g._rect.top*t,10,4),u+=scil.Utils.formatStr(g._rect.right()*t,10,4),u+=scil.Utils.formatStr(-g._rect.bottom()*t,10,4),u+="\n",null!=h&&""!=h&&(u+="M SMT "+scil.Utils.formatStr(e,3,0)+" "+h,u+="\n"),u+=l.data}for(let A=0;A0?this.bondlength:this.medBondLength(),C=g>0?1.56/g:1;this.resetIds();const I=new Date,t=I.getFullYear()+"";let e="";A||(e+=(null==this.name?"":this.name)+"\n",e+=" JSDraw "+scil.Utils.formatStr(I.getMonth()+1,2,0).replace(" ","0")+scil.Utils.formatStr(I.getDate(),2,0).replace(" ","0")+t.substr(2)+scil.Utils.formatStr(I.getHours(),2,0).replace(" ","0")+scil.Utils.formatStr(I.getMinutes(),2,0).replace(" ","0")+"2D\n",e+="\n",e+=" 0 0 0 999 V3000\n");const i=this.getEnhancedStereochemistry(),l=this.hasStereoCenter()||!scil.Utils.isNullOrEmpty(i);e+="M V30 BEGIN CTAB\n",e+="M V30 COUNTS "+this.atoms.length+" "+this.bonds.length+" 0 0 "+(l?1:0)+"\n",e+="M V30 BEGIN ATOM\n";for(let g=0;g0?"R#":"R":"H"==t&&(2==I.isotope?t="D":3==I.isotope&&(t="T")),e+="M V30 "+I.id+" "+t,e+=" "+scil.Utils.formatStr(I.p.x*C,0,4),e+=" "+scil.Utils.formatStr(-I.p.y*C,0,4),e+=" 0 "+(A&&I.atommapid>0?I.atommapid:0),null!=I.charge&&0!=I.charge&&(e+=" CHG="+I.charge),I.radical>=1&&I.radical<=3&&(e+=" RAD="+I.radical),e+="\n"}e+="M V30 END ATOM\n",e+="M V30 BEGIN BOND\n";for(let g=0;g0&&(e+=" CFG="+t),null!=C.ring&&(e+=" TOPO="+(C.ring?1:2)),A&&C.rcenter>0&&(e+=" RXCTR="+C.rcenter),e+="\n"}return e+="M V30 END BOND\n",e+=i,e+="M V30 END CTAB\n",e+="M END\n",e}hasStereoCenter(){for(let A=0;A0){const t=C[0].p.angleTo(A.p);I.offset(.37*g,0),I.rotateAround(A.p,t-60),I.x-=.25*g,I.y-=.25*g}else I.x-=.25*g,I.y-=.75*g;return I}readRxnCenter(A,g){switch(null==g?null:parseInt(g)){case-1:A.rcenter=-1;break;case 1:A.rcenter=1;break;case 12:case 13:A.rcenter=12;break;case 4:case 5:A.rcenter=4;break;case 8:case 9:A.rcenter=8}}readV30Atoms(A,g,C,I){}readV30Counts(A,g,C){}parseV30Attributes(A,g){return null}getDataGroup(A,g,C,I,t,e){}containsWord(A){A=A.toLowerCase();for(let g=0;g=0)return!0}return!1}getProp(A){return null==this.props?null:this.props[A]}setProp(A,g){null==g?null!=this.props&&delete this.props[A]:(null==this.props&&(this.props={}),this.props[A]=g+"")}setRgfile(A){return null}_setParent(A){for(let g=0;g=0;--C){if(this.graphics[C].toggle(A,g))return this.graphics[C]}return null}setRxnfile(A){return this}setRxnV3000(A){return this}readCtabs(A,g,C,I,t){for(let e=0;e0||(g=1.56);const C=A/g;return this.scale(C),C}scale(A,g){if(A>0){for(let C=0;C0){A.splice(g,1);for(let I=0;I=Math.min(i.width,l.width)/2&&(I.push(e),g[t]=null)}}}parseRxn2(){return null}isRxn(){return null}_groupByPlus(A){if(null==A)return A;const g=[];for(let A=0;A1){for(let g=1;g1){for(let g=1;gA}_sortTextByTop(A){if(null==A||0==A.length)return A;const g=[],C=[];for(let I=0;I0;){const I=C[0];if(A&&(I.a1.hidden||I.a2.hidden))C.splice(0,1);else for(I.f=I.a1.f=I.a2.f=++g,C.splice(0,1);;){let A=0;for(let I=C.length-1;I>=0;--I){const t=C[I];t.a1.hidden||t.a2.hidden?C.splice(I,1):null!=t.f||t.a1.f!=g&&t.a2.f!=g||(t.f=t.a1.f=t.a2.f=g,C.splice(I,1),++A)}if(0==A)break}}const I=[];for(let A=0;A<=g;++A){const g=new JSDraw2.Mol;I.push(g);for(let C=0;C0;){let C=0;for(let I=A.length-1;I>=0;--I){const t=A[I];if(this.isAromaticRing(t)){++C,g.push(t),A.splice(I,1);for(let A=0;A=1&&I.order<=2||1.5==I.order&&g.order>=1&&g.order<=2))return!1;g=I}return!0}if(5==A.length){let g=A[0];for(let C=1;C<=A.length;++C){const I=A[C==A.length?0:C];if(1==g.order&&1==I.order){let t;if(g.a1==I.a1||g.a1==I.a2?t=g.a1:g.a2!=I.a1&&g.a2!=I.a2||(t=g.a2),!(null==t||2!=A[(C+1)%5].order&&1.5!=A[(C+1)%5].order||1!=A[(C+2)%5].order||2!=A[(C+3)%5].order&&1.5!=A[(C+3)%5].order)){if("N"==t.elem||"O"==t.elem||"S"==t.elem||"P"==t.elem)return!0;if("C"==t.elem)for(let A=0;A=A&&(A=g[C].atommapid);return A+1}screen(A,g){null==this.stats&&(this.stats=this.prepareScreen()),null==A.stats&&(A.stats=A.prepareScreen());const C=this.stats.atoms,I=A.stats.atoms;let t=null==I["*"]?0:I["*"];t+=null==I.A?0:I.A,t+=null==I.X?0:I.X,t+=null==I.Q?0:I.Q,t+=null==I.L?0:I.L;for(const A in C)if("H"!=A&&"*"!=A&&"A"!=A&&"X"!=A&&"Q"!=A&&"L"!=A&&(g&&C[A]!=I[A]||!g&&!(C[A]<=I[A]+t)))return!1;const e=this.stats.bonds,i=A.stats.bonds;for(const A in e)if(g&&e[A]!=i[A]||!g&&!(e[A]<=i[A]))return!1;return g&&this.stats.rings.a5==A.stats.rings.a5&&this.stats.rings.n5==A.stats.rings.n5&&this.stats.rings.a6==A.stats.rings.a6&&this.stats.rings.n6==A.stats.rings.n6||!g&&this.stats.rings.a5<=A.stats.rings.a5&&this.stats.rings.n5<=A.stats.rings.n5&&this.stats.rings.a6<=A.stats.rings.a6&&this.stats.rings.n6<=A.stats.rings.n6}fullstructureMatch(A,g){return null!=A&&this.atoms.length==A.atoms.length&&this.bonds.length==A.bonds.length&&this.getMolWeight()==A.getMolWeight()&&null!=this.aamap(A,!0,null,g)}getBrackets(){const A=[];for(let g=0;g "+e.a.f.id+" "),null!=e.b&&(A+=e.b.a1.id+"-"+e.b.a2.id+" -> "+e.b.f.a1.id+"-"+e.b.f.a2.id),DEBUG.print(A)}}else{if(null!=e.b&&null!=e.b.f&&(e.b.f.f=null,e.b.f=null),null!=e.a&&null!=e.a.f&&(e.a.f.f=null,e.a.f=null),e.f=null,--t<0)return DEBUG.enable&&DEBUG.print("failed"),null;e=I[t],null!=e.b&&null!=e.b.f&&(e.b.f.f=null,e.b.f=null),null!=e.a&&null!=e.a.f&&(e.a.f.f=null,e.a.f=null),DEBUG.enable&&DEBUG.print("trace back")}}DEBUG.enable&&DEBUG.print("succeed");const e=[];for(let A=0;A3)break;if(null!=I.ringclosure){const e=[I.b];A.push(e);let i=I.startAtom(),l=g;for(;i!=C;)for(let A=l-1;A>0;--A){const g=t[A];if(g.a==i){e.push(g.b),i=g.startAtom(),l=A;break}}for(i=I.a,l=g;i!=C;)for(let A=l-1;A>0;--A){const g=t[A];if(g.a==i){e.splice(0,0,g.b),i=g.startAtom(),l=A;break}}}}}return A}_bfPath(){const A=[],g=this._getTrees();for(let C=0;CA.a2.bonds.length?A.a1:A.a2}),A.a1.f=!0;const C=[];for(;null!=(A=g.pop());){if(A.b.f)continue;C.push(A),A.a.f&&(A.ringclosure=!0),A.b.f=A.a.f=!0;const I=A.a.bonds;for(let C=I.length-1;C>=0;--C)I[C].f||g.push({b:I[C],a:I[C].otherAtom(A.a)})}return C}getFormula(A){const g=this.parseRxn();if(null==g)return this._getFormula(A);let C="";if(null!=g.arrow){for(let I=0;I0?" + ":"")+g.reactants[I]._getFormula(A);C+=A?" → ":" ---\x3e ";for(let I=0;I0?" + ":"")+g.products[I]._getFormula(A);return C}for(let I=0;I0?" + ":"")+g.reactants[I]._getFormula(A);return C}_getFormula(A){const g=this.expandSuperAtoms(),C=JSDraw2.FormulaParser.getAtomStats(g);return JSDraw2.FormulaParser.stats2mf(C,A)}getMolWeight(){const A=this.getMixtureMW();if(A>0)return A;if(this.hasGenericAtom())return null;const g=this.expandSuperAtoms(),C=JSDraw2.FormulaParser.getAtomStats(g),I=JSDraw2.FormulaParser.stats2mw(C);return null==I?null:Math.round(1e4*I)/1e4}getMixtureMW(){for(let A=0;A=0;--I){const t=JSDraw2.Text.cast(this.graphics[I]);null!=t&&1==t.anchors.length&&t.anchors[0]==A&&g.indexOf(t.fieldtype+",")>=0&&(this.delGraphics(t),++C)}return C}}JSDraw2.Mol=t},2766:(A,g,C)=>{"use strict";C.r(g),C.d(g,{Plus:()=>e,Point:()=>t,PointInt:()=>I});class I{constructor(A,g){this.x=isNaN(A)?0:A,this.y=isNaN(g)?0:g}isValid(){return!isNaN(this.x)&&!isNaN(this.y)}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}distTo(A){const g=this.x-A.x,C=this.y-A.y;return Math.sqrt(g*g+C*C)}onLine(A,g,C){const I=A.distTo(g),t=A.distTo(this)+g.distTo(this)-I;return Math.abs(t)<=C*(50/I)}inTriangle(A,g,C){const I=JSDraw2.Point.sign(this,A,g)<0,t=JSDraw2.Point.sign(this,g,C)<0,e=JSDraw2.Point.sign(this,C,A)<0;return I==t&&t==e}flip(A,g){const C=g.angleTo(A),I=this.angleTo(A)-C;return this.rotateAround(A,-2*I)}offset(A,g){return this.x+=A,this.y+=g,this}offset2(A){return this.x+=A.x,this.y+=A.y,this}scale(A,g){return null!=g?(this.x=(this.x-g.x)*A+g.x,this.y=(this.y-g.y)*A+g.y):(this.x*=A,this.y*=A),this}reverse(){return this.x=-this.x,this.y=-this.y,this}clone(){return new JSDraw2.Point(this.x,this.y)}equalsTo(A){return null!=A&&this.x==A.x&&this.y==A.y}angle(){const A=180*Math.atan2(this.y,this.x)/Math.PI;return A<0?A+360:A}angleTo(A){const g=180*Math.atan2(this.y-A.y,this.x-A.x)/Math.PI;return g<0?g+360:g}angleAsOrigin(A,g){const C=A.clone().offset(-this.x,-this.y),I=g.clone().offset(-this.x,-this.y).angle()-C.angle();return I<0?I+360:I}middleAngle(A,g){const C=A.angleTo(this),I=g.angleTo(this);let t=(C+I)/2;return Math.abs(C-I)>180&&(t+=180,t>=360&&(t-=360)),t}rotate(A){const g=this.length();if(0==g)return this;const C=this.angle();return this.x=g*Math.cos((C+A)*Math.PI/180),this.y=g*Math.sin((C+A)*Math.PI/180),this}rotateAround(A,g,C){return this.offset(-A.x,-A.y).rotate(g).offset(A.x,A.y),C>0&&this.setLength(C,A),this}setLength(A,g){return null==g?this.scale(A/this.length()):(this.offset(-g.x,-g.y),this.scale(A/this.length()),this.offset(g.x,g.y))}toString(A){return A>0||(A=1),(this.x*A).toFixed(3)+" "+(-this.y*A).toFixed(3)}shrink(A,g){const C=this.distTo(A),I=(C-g)/C;return this.x=(this.x-A.x)*I+A.x,this.y=(this.y-A.y)*I+A.y,this}equalMove(A){const g=Math.abs(this.x-A.x);this.y>A.y?this.y=A.y+g:this.y=A.y-g}}class t extends I{static fromString(A){const g=A.split(" ");if(2!=g.length)return null;const C=parseFloat(g[0]),I=-parseFloat(g[1]);return isNaN(C)||isNaN(I)?null:new JSDraw2.Point(C,I)}static centerOf(A,g){return new JSDraw2.Point((A.x+g.x)/2,(A.y+g.y)/2)}static sign(A,g,C){return(A.x-C.x)*(g.y-C.y)-(g.x-C.x)*(A.y-C.y)}static _onSegment(A,g,C){return g.x<=Math.max(A.x,C.x)&&g.x>=Math.min(A.x,C.x)&&g.y<=Math.max(A.y,C.y)&&g.y>=Math.min(A.y,C.y)}static _orientation(A,g,C){const I=(g.y-A.y)*(C.x-g.x)-(g.x-A.x)*(C.y-g.y);return 0==I?0:I>0?1:2}static intersect(A,g,C,I){const t=this._orientation(A,g,C),e=this._orientation(A,g,I),i=this._orientation(C,I,A),l=this._orientation(C,I,g);return t!=e&&i!=l||(!(0!=t||!this._onSegment(A,C,g))||(!(0!=e||!this._onSegment(A,I,g))||(!(0!=i||!this._onSegment(C,A,I))||!(0!=l||!this._onSegment(C,g,I)))))}}class e{constructor(A){this.p=A}rect(){throw new Error("Not implemented")}clone(A){throw new Error("Not implemented")}draw(A,g,C,I){throw new Error("Not implemented")}}JSDraw2.Point=t,JSDraw2.Plus=e},8760:(A,g,C)=>{"use strict";var I;C.r(g),C.d(g,{CornerTypes:()=>I,Rect:()=>t}),function(A){A.TOPLEFT="topleft",A.TOPRIGHT="topright",A.BOTTOMLEFT="bottomleft",A.BOTTOMRIGHT="bottomright"}(I||(I={}));class t{constructor(A,g,C,I){this.left=isNaN(A)?0:A,this.top=isNaN(g)?0:g,this.width=isNaN(C)?0:C,this.height=isNaN(I)?0:I}set(A,g){return this.left=Math.min(A.x,g.x),this.top=Math.min(A.y,g.y),this.width=Math.abs(A.x-g.x),this.height=Math.abs(A.y-g.y),this}topleft(){return new JSDraw2.Point(this.left,this.top)}topright(){return new JSDraw2.Point(this.right(),this.top)}bottomleft(){return new JSDraw2.Point(this.left,this.bottom())}bottomright(){return new JSDraw2.Point(this.right(),this.bottom())}fourPoints(){return[this.topleft(),this.topright(),this.bottomleft(),this.bottomright()]}clone(){return new JSDraw2.Rect(this.left,this.top,this.width,this.height)}isEmpty(){return!(this.width>0&&this.height>0)}contains(A){return A.x>=this.left&&A.x<=this.right()&&A.y>=this.top&&A.y<=this.bottom()}right(){return this.left+this.width}bottom(){return this.top+this.height}center(){return new JSDraw2.Point(this.left+this.width/2,this.top+this.height/2)}centerLeft(){return new JSDraw2.Point(this.left,this.top+this.height/2)}centerRight(){return new JSDraw2.Point(this.right(),this.top+this.height/2)}centerTop(){return new JSDraw2.Point(this.left+this.width/2,this.top)}centerBottom(){return new JSDraw2.Point(this.left+this.width/2,this.bottom())}offset(A,g){return this.left+=A,this.top+=g,this}scale(A,g){return null!=g?(this.left=(this.left-g.x)*A+g.x,this.top=(this.top-g.y)*A+g.y):(this.left*=A,this.top*=A),this.width*=A,this.height*=A,this}unionPoint(A){return A.xthis.right()&&(this.width+=A.x-this.right()),A.ythis.bottom()&&(this.height+=A.y-this.bottom()),this}union(A){if(null==A)return;const g=this.right(),C=this.bottom();return A.left270?1:e[0]>90&&e[0]<180&&e[3]>180&&e[3]<270?-1:0}toString(A){return A>0||(A=1),(this.left*A).toFixed(3)+" "+(-this.bottom()*A).toFixed(3)+" "+(this.width*A).toFixed(3)+" "+(this.height*A).toFixed(3)}cornerTest(A,g){return Math.abs(A.x-this.left){"use strict";C.d(g,{Po:()=>I});new class{constructor(){this.RIGHT=0,this.BOTTOM=1,this.LEFT=2,this.TOP=3}},new class{constructor(){this.IgG="IgG",this.Fab="Fab",this.ScFv="ScFv"}},new class{constructor(){this.AA="AA",this.ANTIBODY="ANTIBODY",this.PROTEIN="PROTEIN",this.GENE="GENE",this.DNA="DNA",this.RNA="RNA",this.BASE_DNA="BASEDNA",this.BASE_RNA="BASERNA"}};var I,t;!function(A){A.LINE="line",A.RECT="rect",A.CIRCLE="circle",A.SQUARE="square",A.ELLIPSE="ellipse",A.POLYGON="polygon"}(I||(I={})),function(A){A.ABOUT="about",A.JSDRAW="jsdraw",A.INKCLEARALL="inkclearall"}(t||(t={}))}},__webpack_module_cache__={};function __webpack_require__(A){var g=__webpack_module_cache__[A];if(void 0!==g)return g.exports;var C=__webpack_module_cache__[A]={exports:{}};return __webpack_modules__[A](C,C.exports,__webpack_require__),C.exports}__webpack_require__.d=(A,g)=>{for(var C in g)__webpack_require__.o(g,C)&&!__webpack_require__.o(A,C)&&Object.defineProperty(A,C,{enumerable:!0,get:g[C]})},__webpack_require__.o=(A,g)=>Object.prototype.hasOwnProperty.call(A,g),__webpack_require__.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{"use strict";async function A(){const A="JSDrawLite: _package.initJsDrawLite()";return console.debug(`${A}, start`),window.jsDraw2$=window.jsDraw2$||{},window.jsDraw2$.initPromise||(window.jsDraw2$.initPromise=(async()=>{console.debug(`${A}, IN`),console.debug(`${A}, loadModules(), before`),await async function(){__webpack_require__(1919),__webpack_require__(2539),__webpack_require__(8152),__webpack_require__(5175),__webpack_require__(532),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8671)),__webpack_require__(7673),__webpack_require__(1307),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9739)),__webpack_require__(7749),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3164)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,2766)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8760)),__webpack_require__(7454),__webpack_require__(4703),__webpack_require__(723),__webpack_require__(5653),__webpack_require__(5812),__webpack_require__(9005),__webpack_require__(8510),__webpack_require__(4400),__webpack_require__(5813),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,264)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3698)),__webpack_require__(6535),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,184)),__webpack_require__(7573),__webpack_require__(6635),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4406)),__webpack_require__(2963),__webpack_require__(9078),__webpack_require__(388),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4364)),__webpack_require__(1980),__webpack_require__(3859),__webpack_require__(9614),__webpack_require__(1932),__webpack_require__(4921),__webpack_require__(5264),__webpack_require__(8735),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,5807)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4022)),__webpack_require__(1351),__webpack_require__(3142),__webpack_require__(5608),__webpack_require__(4648),__webpack_require__(4580),__webpack_require__(6211),__webpack_require__(7104),__webpack_require__(5069),__webpack_require__(4347),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9994)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3813)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8329)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3719)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9252)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,2871)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,5728)),await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,2)),__webpack_require__(1721)}(),console.debug(`${A}, loadModules(), after`),console.debug(`${A}, OUT`)})()),console.debug(`${A}, end`),window.jsDraw2$.initPromise}__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{initJsDrawLite:()=>A}),window.jsDraw2$=window.jsDraw2$||{},window.jsDraw2$.initPromise=(async()=>{await A()})()})(),jsdrawlite=__webpack_exports__})(); -//# sourceMappingURL=js-draw-lite.production.js.map \ No newline at end of file diff --git a/HELM/source/vendor/js-draw-lite.production.js.map b/HELM/source/vendor/js-draw-lite.production.js.map deleted file mode 100644 index b696dd2..0000000 --- a/HELM/source/vendor/js-draw-lite.production.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js-draw-lite.production.js","mappings":"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","sources":["webpack://jsdrawlite/./Scilligence.JSDraw2.Resources.js","webpack://jsdrawlite/./form/Accordion.js","webpack://jsdrawlite/./form/App.Lite.js","webpack://jsdrawlite/./form/AutoComplete.js","webpack://jsdrawlite/./form/Chart.js","webpack://jsdrawlite/./form/Clipboard.js","webpack://jsdrawlite/./form/ContextMenu.js","webpack://jsdrawlite/./form/Dialog.js","webpack://jsdrawlite/./form/DnD.js","webpack://jsdrawlite/./form/DropdownButton.js","webpack://jsdrawlite/./form/DropdownInput.js","webpack://jsdrawlite/./form/Favorite.js","webpack://jsdrawlite/./form/FieldNumber.js","webpack://jsdrawlite/./form/Menu.js","webpack://jsdrawlite/./form/Popup.js","webpack://jsdrawlite/./form/Progress.js","webpack://jsdrawlite/./form/Resizable.js","webpack://jsdrawlite/./form/Table.js","webpack://jsdrawlite/./form/Tree.js","webpack://jsdrawlite/./form/UploadFile.js","webpack://jsdrawlite/./src/BA.js","webpack://jsdrawlite/./src/Base64.js","webpack://jsdrawlite/./src/Core.js","webpack://jsdrawlite/./src/Drawer.js","webpack://jsdrawlite/./src/FormulaParser.js","webpack://jsdrawlite/./src/Group.js","webpack://jsdrawlite/./src/IDGenerator.js","webpack://jsdrawlite/./src/JSDraw.Core.js","webpack://jsdrawlite/./src/JSDraw.Lite.js","webpack://jsdrawlite/./src/JSDraw.Table.js","webpack://jsdrawlite/./src/JSDrawIO.js","webpack://jsdrawlite/./src/Language.js","webpack://jsdrawlite/./src/Lasso.js","webpack://jsdrawlite/./src/PT.Lite.js","webpack://jsdrawlite/./src/Skin.js","webpack://jsdrawlite/./src/Stack.js","webpack://jsdrawlite/./src/SuperAtoms.js","webpack://jsdrawlite/./src/Text.js","webpack://jsdrawlite/./src/Toolbar.js","webpack://jsdrawlite/./src/Utils.js","webpack://jsdrawlite/./form/Form.ts","webpack://jsdrawlite/./form/Lang.ts","webpack://jsdrawlite/./form/Tab.ts","webpack://jsdrawlite/./form/TabbedForm.ts","webpack://jsdrawlite/./page/Page.Custom.ts","webpack://jsdrawlite/./page/Page.Explorer.ts","webpack://jsdrawlite/./page/Page.ExplorerForm.ts","webpack://jsdrawlite/./page/Page.Form.ts","webpack://jsdrawlite/./page/Page.Tab.ts","webpack://jsdrawlite/./page/Page.Table.ts","webpack://jsdrawlite/./page/Page.Tree.ts","webpack://jsdrawlite/./page/Page.ts","webpack://jsdrawlite/./src/Atom.ts","webpack://jsdrawlite/./src/Bond.ts","webpack://jsdrawlite/./src/Bracket.ts","webpack://jsdrawlite/./src/JSDraw.Editor.ts","webpack://jsdrawlite/./src/types/mol-handler.ts","webpack://jsdrawlite/./src/JSDraw.MolHandler.ts","webpack://jsdrawlite/./src/Mol.ts","webpack://jsdrawlite/./src/Point.ts","webpack://jsdrawlite/./src/Rect.ts","webpack://jsdrawlite/./src/types/jsdraw2.ts","webpack://jsdrawlite/webpack/bootstrap","webpack://jsdrawlite/webpack/runtime/define property getters","webpack://jsdrawlite/webpack/runtime/hasOwnProperty shorthand","webpack://jsdrawlite/webpack/runtime/make namespace object","webpack://jsdrawlite/./src/package.ts"],"sourcesContent":["scil.Utils.imgSrc = function (button, wrapasinurl) {\r\nvar s = null;\r\nif (button != null)\r\n button = button.toLowerCase();\r\nvar imgbase64 = JSDraw2.Resources[button];\r\nif (imgbase64 != null) {\r\n var p = button.lastIndexOf('.');\r\n var type = button.substr(p + 1);\r\n s = 'data:image/' + type + ';base64,' + imgbase64;\r\n}\r\nelse {\r\n s = scil.Utils._imgBase() + button;\r\n}\r\nif (wrapasinurl)\r\n s = 'url(' + s + ')';\r\nreturn s;\r\n};\r\n\r\nscil.App.imgSmall = function (button, wrapasurl) {\r\nif (button != null)\r\n button = button.toLowerCase();\r\nvar imgbase64 = JSDraw2.Resources['small/' + button];\r\nif (imgbase64 != null) {\r\n var p = button.lastIndexOf('.');\r\n var type = button.substr(p + 1);\r\n s = 'data:image/' + type + ';base64,' + imgbase64;\r\n}\r\nelse {\r\n s = 'small/' + button;\r\n if (wrapasurl)\r\n s = 'url(' + s + ')';\r\n}\r\nreturn s;\r\n};\r\n\r\n\r\nJSDraw2.Resources={'':'',\r\n'small/adc.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznFUN5AFT8I9CI0YeTQ5BygTRD9AD0sWHMkmAIgNoBGiADUYBuqhNEj+ALQMGEKRwkKEmgVI+dyR7gU1QIABABwOZ1KEUe+OAAAAAElFTkSuQmCC',\r\n'small/add.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTE6MjA6NTgtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDExOjIwOjU4LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjM1MGJhOTFlLTQ1ZjktNDgxOC04MGMyLTA4ZDhmYjY5M2JlMDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDozNTBiYTkxZS00NWY5LTQ4MTgtODBjMi0wOGQ4ZmI2OTNiZTA8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MzUwYmE5MWUtNDVmOS00ODE4LTgwYzItMDhkOGZiNjkzYmUwPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDExOjIwOjM3LTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+gqQvdwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABI0lEQVR42qyVzW3DMAyFPzUeICPklLPvBQJ5hG7QTpBmA21Sd4J0AxtdoL6012iDaAP2IgGMrLo2YgI0aFB64M8jZUSENaUCMMZMndkCdbR91KKISPyUQV6BCyCZXgAXz4wAjYjkEdbAGdgBOOd+ksN7v2/btoq/AXgC+qkIa+CqIxIRknZddyhEbDXgQxb1WymVf+Ss72jAZ1X8JZLqPQI83sGW422ro+mc+9Y1m6PW2lTLWtfQrsDpbZ7yepOSuOS93/d9f9AHrLWfyQ4hbIZheNT+EAKKlzc1/CpwbA4PJXJ3xMP3OzL9KNGmnRr8CQnAqQSYZjMsBHzRd6rMOQCNXg5N00ihAcXlkDcl55T7Y31dl66vXHYp2jkL1qz9BPwOAEtJyFBGN+mjAAAAAElFTkSuQmCC',\r\n'small/addannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAStJREFUeNpiYBhxgBFEaGpp/qeGYdevXQebBzaQUgBzFAvM9ISEBKp4GWag46nTp6hq4H5qxQncy9euXsOqoqOjg+HGjRsMpmamDNJS0gzOzs4MvLy8GOq0tLUYiApDUFBIS0szmALh3n17Gdo72hk0NTQJJhsHPN7IB+KDwCQxAaoWZPN8IF4AxAvRks0BYtPhBaBiQxgHqN4AGu4CZKVDM3MzUDrrR9YMMhSIz1dWVaKkQ7gLzUzNcDrv6bOnDE+fPmWAerMQ6JIPUH0gF54HhrECSB7kQmLCEBnAXOkIMhSqbz0QHwBiB6CYILl5+QEQN0ItKATiDUD8HogNycrLU6ZOAYcZEM+H6p9PUhhiLVluXGf4/PkzOAUAsQEslqmRlw2g3qYNAAgwADHcAPBQR2cRAAAAAElFTkSuQmCC',\r\n'small/addbybarcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBgFlAJGTS3NBCAdTyXzFrIACQUg3gjEFyg0DOQoBRYoB2TYfiA+AMQHgbgeiBuB2B5NkwMQO0Llwfzr166DfLkfqo+BhUyXGMA4QMMCkCVJMVABSidkZ2eDGadPnWY4dfrUeiRffmQi0jABJAMZsrOywdjUzBRZTQGIINZAA2K9wUKk6xgqKioYNDU0USQC/AMYzEzNwOz2jnaGGzdu6LMQ6zqQYaamKF5kkJaWBmMQ4OPlA1tOjIEfQAqv37gOF4AZ/PTpU4Znz56B2Z8+fyLay6DYc+jo6IALXLt6DUxv2LiBYerUqShqiY2UD0Sq+8iCFE6OSBIH0GhQkumHRdDUaVPh6RDdUnIKBwOYwVDwAIrBhQMjOaUA0BEOMMOAefkBTctDgAADAO98Twss7PUHAAAAAElFTkSuQmCC',\r\n'small/addbyemail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZdJREFUeNq0lLFuwkAMht0oaxE7CyN0CkNYC0/A5Q1gLUPFE6BOdEMdMpc3oG8ArGSAqTCy0JlH6P+fHHQFQoLaWjJ3Mb4v9tmOyB/LHX/qD/UAS/kXnMPmc7PmxlfDGNqC0ni4EcZzc2jbBYrCKBHelgtFVszo3TlnxXP2A/1zpleQB5tBq2lkl4CCyHoafiYU9qrC1vBvnGbjnR6Aw0CjPYPq80phvUsv9C4Z4TxR6AqQrgNjZC9ZsNOinEEB2WE7xfqI1RDG9sLzzHFdFAIqdI7DvPQp9A06JNAYI5VKRZJlIstkybY5MAP2opfXHtqwDehz2vyRiaT/1JewGaZuZc2k7BVs3m6BSWL1jV8Q2GGajIxSq9XsajpGmmHT7kevI9lutx0XOEbIWRMS8M7CMPxhpI1KKd2XbOq+MyXXUhqiAK1Y4mNktiiJLYq17b/2XHa+c/HXRq3KaqaHmSaBfI7j2HVdFCqKNvo6x43TM/Fv+Ey1dVICFoB3pmmKzn90/MDeIkifE8PJCTTqBSL7kP+SbwEGAFABlnh5iPjhAAAAAElFTkSuQmCC',\r\n'small/addchain.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNrMVD1SwkAU3jC2zNDTQElssAh1PIHhBMFWCuUEwAmQIrYmJ0BPADcgldiJBbbmBvi9+G1mXYxOmHHGnfnmzdufb9/73ttV6r8P59iDHbczgAmBLTDfPG1Sma8dSXYPcw0kwCuwxFxX1k6OJJPD54gq45zYBdB2KhA1JBK6BZmxvsecUyXlmSYDWhaZD5NV1VCK0AcCYA2SG4NM0h1VqjIOvsPEgBCljFTIRdNLpBv/WhSdClsiJZmkNgfGjLogK42QLbCg2yBJoVsQBKrZbKooisRdiRS6SLUSsiWbtQ37YBehH/TV8GqoXd+o/ldCg2wEslv23IDaqZ7Xy1Gv15Xld7E3OIhMhOeT0v6epHmflY0wDGXfxC6KiDzVAkshsOmMNieN7qJPDS+oIf3d2+7wc8ChNVNdlTy1jHqpJE6U53nKPXXNrfnlZoRb/h4r46nN9LtlYdZ59M8bu5ax/m0c662+kDChBMr6BHzjEqV7EuuTb/uQpGMeeJRK//BRtHRUfzo+BBgA+YW5Ud+XhtQAAAAASUVORK5CYII=',\r\n'small/addcodingregion.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWRJREFUeNrsVDFWg0AQ3eRxAHoaSoKFUJA2eAKXE0BOoHaUOYIW2BpOED2B5ASmEkubWPMeB4h/4ixvjRH2PbVz3ps3w+zfP7MzuwjxLz+VkXIm/uQOpqyf6wq+C3/FSw+ILRiTwbja96Paj9gZ2TEvECDQEl1A5wCFsDOs21AJP9UKkJyMiNb8/UEIuaZFjTAAcMP+mpNVjJlxAZS0YUylCrK43AagvtYQmFriSimF4zgxBYuiiLGPiEsFtL4h2ACoqjyFSrWQyEREUSSYUCUjnfcR3tBQuOrAcMDU3+WoD8GNXk2jaRfL81x4nrf3syzr4vVLLdq2DcUA4QK6M5E0TXfAXo5/+V7blgmquC06X57vp/wlvn3bkmmGekgDedJj5bLspuyf+Idbwt4j87WpDI9bEd7kyFdQerO2muYRoReTfPo5DBzd5ZcSH6uMyOi1GRMe9DTmaongHkSvf/o/fBdgAP7jmdHCBQ/sAAAAAElFTkSuQmCC',\r\n'small/addcomment.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNpiYBjsgBGXhKaWpgKQygdiByA2gAp/AOIDQLzx+rXrC4g2EGhYA5CqJ+AYkMGBQIM/IAsyYTFsPrphCxcsZLh29RpDdnY2sjDI5fuB6gVwGgiUBClKICHIQEHRjyzAgqYgH8bg5eVl0NTQhLNBQFpKmsHM1AzMvn7jOsPnz58ZoA5IxBqGQBe+B1JgL4A0LliwAKfTEhISGE6dPgXjOgLD8gC2MBSgNNmgG3gBxgDZrqWtBcanT58Gi02dNhUuhuQ6FH3oBm4kw1EHkJMOM7KMqKgoyKYMIOZA13Xj5g2G06dOMzx99hRdKvDN6zcvcCZsYMSAksJ+IsIT5KpEoOs2IAsyo6sC2QZ0qQZSdkMHD4B4AdSwE+iSLDg0XUTjF0ID/gHQkAf4nM2CJ5/CQCKugoAkAAzL/0CcQLVyDVp8DUMAEGAAqgdmjgBYz3EAAAAASUVORK5CYII=',\r\n'small/addfile.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOhJREFUeNpiZIACTS3NBgbywYLr164/ADGYkATryTQsHogVYBwWZBmgLSS7Eugze2Q+C5rkfix6GoEWHSDWAhY0vgMWNQpAiwyBhn4gxkBGoGKQ/xMIhOEGIL6IJwxBPngIihyQgSBX7WegDnBkIUaVmakZmH767CnD06dP8aplIiqRLVgAxgEBAQTVMjFQGbAQ8iYykJaSJuh9nJFy7eo1vC6ZOm0qw9SpUzEihX5eTkhIQIkUcGLcsAGMYV4mycBTp09hiIEMwSY+MLGMzfu4vEmygYS8iW4gqKRtpJKPH1A7CBkAAgwAekhN2H1dYu8AAAAASUVORK5CYII=',\r\n'small/addfiletolink.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNrUU9ttwkAQdBAFkArgF35yqSB0QFIBSgXGFUA6SCqIUwFQgZ0KYn7wZ1yC00FmpDm0upwUB/ggK43usbdzc7t7SXLpduUn48l4gGEROfNc7+u2K2HPzEl2F/i5fv2TQihzGO+BOZBBzSZQ/QnkwNcvXBVjeyKjkjdLRtNTHzuQDYHUq1gRpxQC8VOgCHN4FusHN7Ewg+BMjqc3yucScMbXAC9RQgSsMYyArfHfAAV8txjpZ06fjH9KP/AQU8jiXPue8znRJYWUlVLJbqi4xrmZiH/0Yatgb1RaaV7K3+qJjS51imliCjPgA4dKs+eUwwz7OzU5CVKsR5pnUUIE5SKzKls9zfs3pigHH9smWmVW094WmvJbdv3LZ+3DoZV9hDlLWOkvL08U9578C/sWYAAOEG0vSWG3+QAAAABJRU5ErkJggg==',\r\n'small/addfolder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhxgBGZo6mluR+Lmsbr164fINlAoGEJQGo+FjUPgNgQaOgHogwEGqQApEGG+QOxAQ51G4D4IhHmLQAZ6ABk7KdSEDqyEKPKzNQMTD999pTh6dOneNUyEWPgggULwDggIICgWiZqJxsWQt5EBtJS0gS9jzNSrl29htclU6dNZZg6dSpGpNDPywkJCSiRAk6MGzaAMczLJBl46vQpDDGQIdjEByaWsXkflzdJNpCQN9ENBJUmjVTy8QOqF7AAAQYAhIpDjfvz/ZMAAAAASUVORK5CYII=',\r\n'small/addnote.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBjsgBHG0NTS/E+JQdevXWdEEaDEQGS9TNT2MtUNZMHifAcg5UCk/gPAsDtAUxdSPVJYyNCsAKQMgFgB6uULeMOQgGENQKo+ICCAQVpammHq1KkgMfLCEKgxAGQYiB0YEMiQnZUNk3Ig14X9ZqZmYAYvLy+YhvGv37gOthDo/Q1ERwpIHheIj4//Dw0O0sJw6rSpYDrAHxqGUP7TZ0/J8vIBYCQ4wLwKixQksAHDQJizcYAP8JIFGGZYSpsL6MVXA5Eu9YemQ5glC4D4I9DABkpylQAQG9ClxAYIMAD8qWGJiIe3+QAAAABJRU5ErkJggg==',\r\n'small/addtoplate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNrsVLFSwkAQPdDCRqRhhhma2BErLJJW+QLCF6A1lR2dWGEnFtGS8AVCaQW2UkgjiR0WSQ34Afg2s8dsGAtGsHNnXvbucvf23e7dKfVv21qKPuaJ2dwRn5fmxvUOyGqAsS8GjoALoAoMgFP2N8AZz3nh4GXgTcy5B6Y0QRL22dMPj30PGIs5NJYFOmJnM2Cog+7RJ5fLNVnJhz/xA/Tn7D8xFjBRHngEDur1et62bRQgVQyjkAIYHOhZF2XJahzgkhXQ1p/Els+1zMn7JPbug6tc15V5LKdF54pzQ8RVKOwxeZujb2KJotCiEuesBNVDMVZqNBrKLJqJ1U7FUbZlx+3WbUsFQVCRhA4nebzmZ3FaQGZZVoKwUCjEIMscZmJRK0JssQlVHvwU/pj9mBM+8AN/RaSJwzBUURTF7cXXInFTllyEGueyw/m7A7rcz25QlHb6hxzKY2AwvA2L0pc5NFiNI3yfiedyFSkjG72Otn4c9PXMrt2ern4cUr95BSBAH/IpFe9P38NvAQYAUFGBBkc6AEAAAAAASUVORK5CYII=',\r\n'small/admintools.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzA4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNkY4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBDNUIzQ0NCODRDQTExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBDNUIzQ0NDODRDQTExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ysxYlwAAAfFJREFUeNqs1F9IU1EcwPF7N6m1FENY3bdGxMRtDz4M9iSYsLcIioKEIDA2wR4CIaFBUqE9hJpwexH789rfl6Eg0osvaWypiA8D3wp6EWxa7N6Jbn0P/tQpOnetAx8O97D72/n9zj0/vVQqaf9z6IlEovz5AgYwhxf4VenlQqGgJZNJLRAI7Ab0+/1qvoExnMRnzOI8bmH5sID5fF5LpVJaNBrdWavxer13mPtQj5cYgYEv6Eei0i5dLtfeZ3ThIa7Dgze4JGmfwxknNazBKaThwytZn8d3VSaUnAacQAfuSS0tqedNtMkfrVYbUKXci9Nyut8k1du4hvt4jatOdvgHd/EAQ7LDVgxKPWdg4qwc2JEBNanVo7L1BozKmnIZ79GEbhQrpXzQWEE7LuItNnEF6/iEWqcBNXlZfdhfMS7fZg+m8AGNTgNuj+dyMB/RgmGp5TvEPB7Pnh+7fT5fNYe3iCUJtibBp4rF4rNcLrcZi8UW3G731l0OBoNOvltDrueMXNc67vNYKBSywuFwJh6Pm04DanKzVCey1U51XX/KLptpg78Nw1ioNuXysYEUInhs23aDaZqdzD+y2Wyz6x966RNMq08qnU7XMZ9Q/XO7Hx53tJDyoGVZtbSxHCn/3N+xHY8II5PJROjeNrEm/wowAPpcj7DNWN/gAAAAAElFTkSuQmCC',\r\n'small/advancedsearch.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDhDNjlDNzQ4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDhDNjlDNzM4RUE5MTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M2ZmMWNmLTE3N2MtNDViMy04ZWNjLWRlYTYwNTVjNTQ5YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MEUwRUJGMTc0NEYxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Phbys3gAAAM2SURBVHjarJRdSJNRGMfPXre5cJupZEWmpWTSTJxNXHixoryQIRHdGmirsSQqISLWRNmFGNoohaBcF3mTLCKZLjIiDIu01BIxZG00G4IkWzWduM1t/Y+dZHMLITrwg/ec85znfb550WiU/M/FT3bocDj29vT0VM3Nzcn5fH4YRxz4CJ4D1x+5QCBA9Ho9KSwsXH/Li7UwFAqRpqYm3cDAwImFhQV6lC0SiYQpKSlU7jv2QfAQmOnl8vIysVqtpKKiItHClZUV0tjY2NDX13dcIpHMq1SqL1qt9kV3d3dofHw8FasKYkpwBgjBHfqO47jkLg8ODpZAmSYzM9MH5btzcnIeyWSydxkZGatYBApfQ+wouAZqwXtG3FpzeXh4WKDT6R5HIpEauufxeCEoFWRlZU1BUb3X6x2PseQ0uAJeweWLFouFlJeXryvkIExMJpMBlzU0hmVlZU/lcnkb4kaWlpYOejweC5RtjzHCBubBHrB1o4XcyMjIgZmZmXNUgc/nI2KxOAh+0m/qKs7zIVcX88YLvtKEMeJjiAcyuLkTmWpDRj/DOgfOv4XD4R9wexsS0goZFc5usDepzLJFRkJSVkEEHAYy8BLYwQmWzbUiiHmjAPvAGHM9XiEsGYNrjtHRURV1E9bQH/D6+/trpFIpzS6VszJ5CWgAAvAWJLQZp1Qq3Wq1upXWIbJKpqens0Ex/WbKnoEn4Ai4C2iCnEANdgkEgngLUXeko6PjAdpIhKrX+/3+SpxXCoVCqvATi9NtFg6OuXoBVIP7brf7VGlpqT+h9WjJIAHZcLXY5XLloYyqsRempaXlomw8tMVZhnPB2d+tHNDl5+cfs9lstbA0kNDLsSsYDJKJiYm89vZ26eTkpA/WzrKryywx9bQBUGItRUVFO9CiOuo+97cxRF1GfGfT09OnkLjZmKtbwA1u0rh3dXW1YCJFNRqNke65zeYb2jHZ8XUgRnXoMUiI2Wy+ZLfb9zc3N9dy/zhH6V/Ow7JDnZ2dGoQtaDAYrjqdzpP8zV7SIUrnXrIrxLCut7fXAoVbEJaSgoKCN5sqVCgUa/XIanLjWsS9dmho6B7G3Qej0Wj6JcAAvIJmB12Vo0EAAAAASUVORK5CYII=',\r\n'small/allused.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzUwM0ZCQ0U4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzUwM0ZCQ0Q4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM0NTM4RjJEODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM0NTM4RjJFODZCNDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VggtCgAAAtVJREFUeNqslE1o0mEcxx+d5mbY2IsbLCi9yHCtlE3YQcJ2CYlyw7LVqLl0h5UYqxgUBYGES+Y2mgRhRofYxKJGB6ncHKN26LKOimJbOwgJjjnDTadb38c8rKnlYA984Pk/z/P/Ps/vlbG9vU32czDJPg/W/w74/X6yurpKysrKCm1XbmxsHGtra5tns9l/VqjJO/H5fI1dXV0fwOPFxUVGT08PqaurIwKBIA+hUGiXSCRhvV7/IJVKZf/PMzkWiwm9Xi8HNMTj8Qoul0uKcITJZJ7s6+u7iIvFOp3uNl6bbzIObeJwDNM1zNNFPCEFz9Lp9L329vbPcrl8XqVSvTGZTMuFfJihvgGR3Hz3OAWGwV0Wi/WJ+nd6elrNYDBqQqHQ2UKCm6Ahk8n83Nra2i3YAe6D6+BreXk5GRgYuLWysnKmtbX1VX9/v7uQ4HeIJfh8frC6unrnuh5cA2rwI2tKJjPE4/HEZrO5U6FQrBVMG7zqcCKRaIQJPtxMotEoTZk72FLmXigC9CY9glBptVrPNzc3p4omtlgs9hkMhsGmpqbxpaUlGvVhBEeeE4zk/PsFJMAViKb+mdgw4RcYr62tZU1OTj4PBoMH4KsL2DoNOIDOTWCo5NJD9Lgej8cJ0QSq4GoymaSBqgCvwUwxsTxBWmZzc3M1Y2Njb1taWr6Njo4aaRLD+SewfTMXEHvJzSEcDgs0Gs0UkvW9w+F4ROsXYgpsvciZ+a7kboNSO240Gl3d3d1P7Hb7U7rmcrlUCwsLVvjwBj4/ltxtAoHAod7eXsvIyMhDtVrtRuoQ1KhudnZWV19ffwk+DOypH0YikaNVVVVMpVKZFdNqtYNut/vyxMREp1QqDdCi31M/RHvyr6+vL+N1L6kg5gedTmcHIhxHgAgSveDPdJ2ezxMUiUSbeJHBZrOdw2faYrFMoWFmT8pkMkJrlsPh5AnCFQSW/bX2W4ABAMF/N/eC5G8oAAAAAElFTkSuQmCC',\r\n'small/antibody.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMtJREFUeNpiYBgyQFNLswCI3wOxAYn65gPxfxifCUluARA/AOL9xBoKMgxIJQBxIoaB169d/wCVIMpQZMOAehdgGAhUAJLcD8SFhAxFc5k9kH8fm5c3QA1aj89QdMOg7EaYPCOaYgGoKxWAOBCI+6FsR6C3LuAwDMXLjFi8g83QD1BX7MdnGLqXkSPHEcn7F9CU6OMyDKuBaIZOhLoOGRwEuRybYVi9jCUIGqBeBHsZaBBePUzUznGjBg5CA1mIULMAKZ870r2gBggwACiBVWlAdAbpAAAAAElFTkSuQmCC',\r\n'small/approval.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARlJREFUeNpiYBhxgJlSAzS1NANERUU53rx+84JiA0GGAan1QBwBNPQl0NALjBQYZgCk9gOxAJKwIQuZhoEMmY9m2ILr165fYCLTgf1AbIDEvwA0LBHEYCLDdQVAKgFJ6AMQO8I4jGgKGYA2TSAQbufRhB2Beg6gGAhU6AANYHBYAHEhUNEHLOF2Hy3cCtEdwARUqACNehgAeWc/1DXIYD+WSMDwDRM0DDagiRtADQ2Aug4jEkCuwxYsyGGYAE0K6ABkWQB6JICSCF4DkQId5H0FPBEdCDRsAy5JlGQDtdUQiA/gUD8Bn2FY8zIwP/4A4oXAvAlyvQOS1AGgYZGE0inOhA3U3ADyHjTMHkDZlANQssKShOgHAAIMAPnmYKqiF/NOAAAAAElFTkSuQmCC',\r\n'small/assay.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUtJREFUeNrMlMFNw0AQRRdEAaSDcAynTQV2KoipAKggSgVABZQQUkGcCuxUEHMhV3cQl8Af6a20GBsSHxCWvlae3fn+M/PXzv3352Jo4uR24rVcC9Xh49CE+OVAsmcte6EQNvHeVU+CfTkV5sJaCspob6zlXsiFd2HRScjBTEhYK6EhueSMxVeQPYSSY8K45AXYCiOpmmpdotTIXiGz2BiiHe/fh0KTNyK6aZV/RKlhLTwJb8JLPIzOKZM808Eq+kgBgaPMR+3nfQNrDyWnxNCXjP6lvE9FVv/kgLZttgzB1O0pz/rlUV7/Zqk2oanx2MYTW6I8O8WjXwhpcki+MzI8uMOT7lyFLiTT+FJq06i3gwjj5AJY+TXGPo+QxjckhyHU9DcZojCoTLgtIxT6UwbTR2j2ybDOkYFYbDb4fyiyFSRl1xX7s+dTgAEA2pJ1FjzBnicAAAAASUVORK5CYII=',\r\n'small/assayviewer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNrsVL1OAkEQHtDChngNjddgQgFWWByt4j2AxwPIzwNgYosFUojXIQK24BMID0CEmkIqOTsaLMmFewCd2cydE2IiUeycZO5jZ2e/nW93FoB/+62F6JM8SF5tiK8b5h+VDZDl0WPbIrCLXkDPoj+hHzJW0Y84Z8SbZ9CfRU4DfUYJkrDPSBNdxh76RORQTEPvCGUu+tDfNLyS/DB9mfro8s4TJnYFUYrRIplMrMlLeedFlFDkhST9UUg+9nfWdR30PR2W3hIcx5HnmJEVXvDZEHEWK+wx+a2/eyKRgNp1DcwTE/xx866pkC0mCTUhJYVVayKWokWWZUH7vg2GYYCRNiBtpNU4d5ZTc2inkpAidSaosETCTiQSUYts21ZSnVcnkEzx8mVZkcfjcS0gRInU3PuIQ8Yet0XR8zyVQ8REQkhG8fnbPBgvFovPW0aJqkJEurUOY51luzf2DbSaLXUh4/E4IBkMBupcaR4JJ1+docat4CN5l6rJF/KKiM6QKiMzTRNK5yVgFX3ZNtVvntY6zzOzRd9oNBpaI3nETU49srPyIBo8Pwz95F8AFflNPuOX9Xf2IcAAZ3WZ5SSvUo8AAAAASUVORK5CYII=',\r\n'small/average.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AqgOoGshAZvgJAKgCIP1y/dn0DRS6EGrYfiOOBuB/In0+pl/uB+AHQZY5A2hDkUqChAWQZCE1GIM2JID7Q0A9AqhCI63HpYUTS3ABlXkCSzweFGxAvRNO3HmrJB6hFG/BFCrKBBkAcCPIymhqQASDXLwBiAbyxDLTtAZJ3QfwDWIJiIyiSgHINpIShAxAfwCF3AepCkiIFpOEiNgmgy8gyUB4W6DjAA2yFCXosxyNFgAGUjctQZPlCqKtRImUBnjAjBB7QrFwFCDAAXmlDSKfTkVIAAAAASUVORK5CYII=',\r\n'small/barcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpiYBgFwx8wgghNLc39QMqBQrMOXL923ZEFSSARiBWA+AEUgyw4AKUXQGkFJDZIjQAQX4CK14MMQTYQJggy5CBMARJtj2RJPBK7Edl3TNQOw1EDRw2kMOuBUv5DCsyyB2U9mAsXUmgYzAzqA4AAAwBHOht9muDc5QAAAABJRU5ErkJggg==',\r\n'small/batchregister.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNqUVD12gkAQXnwcgDo0WmqKSIFt5ATiCZA2FOoJjCdQC9OqJzA3iLakkCqW0pBWbmBmeN/y9hFIcN6bN7uzw7ff/CyaqCHtTtsg0604Ts9f50hutJqACzIuaVxyzBe1CDStBCQADjKwZbsn9VVAAjggdoO9XwpIAU0yF9LDH6Q5ZkUgS8SfSB1OvQzwg0xEh9MC27xW5OuDdZYq7V9p/UxrRyuA5YGkvF6AjZRYYbbHJT6axiynRUBOdU76RDphn+u6YugOs3Nv5MnQLeI43mLmspa6Asa0U7DYSL9pmsK27WJlRqRHgC7oWx++lq7M2Zh0CFtHOM6B5brPiWks2W0kZbJXz/Nuf0kYhjeKuyF+xGuQEg3c1kcKQpm/uvKujFJewylqwYdR8p1012/r7KBn9/IaSl+SJAL1FpiErRwpTWnKlUcC25n0B0EggpcgW3ceOyoz7vQOY2bJ+jUANkF3x0gh/ifNFB2eYS7zeA3FvKDDctBWGJ0uj435YGbO8DOUYA5+CjMCa6k36fiLZI+dwCOA72hvcQepXgNSA0BHpCqQ6rRIXUPKJ4As5btESlUyYIb8dqsAi499j/Fhf6R0VBVfrd2vHyxAmsrHBkph3TOUunpjyW8+vnPIxY8AAwAOC+mvZoH9IwAAAABJRU5ErkJggg==',\r\n'small/benzene.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrUVEFSwjAUpXgBNt3XJa7wBNITACegPYFwAuQE4gnEE4gnEJeu6Erc0b3MyNad740vTtpJQnXc+GfeZJrkv7z3f9JW648jck12z7pDDL0jueX2ZbusT544yDoYHoFX4CNAOIvj+Hn/ti+DCkF4jSEB7vgNFSvHgRnAcYD1c3u9XdtMmxNgDtwCB586YE1S5GRehVik1Sd9XuD01FNjHjoGpsA9cIq9h4pCNYJWV1KQ+4qH5IUs01EhV1WFINzJKk8ukDQNtRj7+1JHFxupLCMtXtGiCCsWjpByr+lygpyRsTwAHmQhb0KmoIuhcvsV+cC7rsSPg82Uy6+mQNFaxZ39gsw0c1FvCid3prgNyTpqyNw8w7Z1FUrrQjeNSf1NR44TqXIkG2MPEctzI3UpCIvQW85Uy1SkruAtuJSzvMnva2Ml+qLnuq8+wiSg7lulbfX/xKcAAwDtIIJtByesEwAAAABJRU5ErkJggg==',\r\n'small/biologicalreagent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNrMVMFxwjAQFIz/UQnmSV5QQUwHUEFCBZlUEKggSQdQAaYC3EH8ip+4BHdAdmfWGYWxJDzw4GaWs9F4tbcnnTE3jgF/xo/jDCnrWK+rn2rTh3CovAMeOtY/sNmkl0R+AJw8awdg7rxnwEtQIUoqkctzUpIhUV3ZbkzFQBotGaRTz/oCaEC2ki2W7yHCJOJIJqI2bKs41hRfFMAIWAJf+o++HqkasEFCmf7PI9jRADmwUrmF8hPJYwrfPefRLdmobG6c6gx3ewgVs4gFtXIqlU2s5JM66os3kVmRT4JdhsJBSB69xIZ8fBZZo9tE8j2vadL38pMUKVfzvqWWz6/senLFYHGbscVGn5ccbBPpOLu94NHyNcV2HBFfsPS1S/Y3D0W2c4ZBa/js/IOLBqx7U2QwB2th7iF+BRgAK2xs2L70ZfQAAAAASUVORK5CYII=',\r\n'small/biology.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUE5OThFNTg4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUE5OThFNTc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjllZTBlODY0LTc3OTgtNDI5MC1iNjU1LWY3ZGNmZDk0ZWQ0MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRkE0RkU0OTdEQjUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpY5RckAAAKaSURBVHjajNRfaFJRHAfw67xepaZYJFLEIsJogimUW+Xsj5DCiEWjJRRWo/ClWEQPQUVE5l7CgoqgggV7MYWeKvrzUL3YpLBoRheSynqIEmoT0tSZ63vkd+XOmXrgA5577/l5zvn9zlGYzWauSTsH3+Cm7NlyGIQr+Xyei0ajnN1ur73kueZNhFOgASV8hiH4LX2g0WjmDKgPuAgK8If676ALdsEHOAjdUF2WUqnkEomEgKAzJpNplj1TyJYswAMYhWf0Z0/gMVym92zQdfgFx9mgbDY7YrFYOrH0Ua1Wy3XUzW4FfKf+ElgD22ACXlPwVbBFGqTX6/OTk5P9yWSy2pcH/Ak/YAf1j9G+xSBE787AW1gJe9hHhUKhz2azJTHLeXtYhpNwG3phLc3uPaymRDwnj+AqbM/lchv9fn8/W26jpLyA03AHeigYa2paDZvxX7gHxmKxeCsUCvV6PJ6PUoCOBqWyAcZpz5q1sXK5PJFOp7vkpdMooAvCXOtW4Xn+fiwWGyqVSnPq0A0GKotlVMRiGwE5tVr9MpVKHfZ6vQewh2okaJanYl1KBa2lfcpz7bUpQRCM8Xh8WKfTFaxW6zQLuFf2gREeQicVb6tmQJbFYDC41el0cjgt87I8xU4PFfTXVtGQ5XU4aZ98Ph+nUqkaJqVENbavjdkpkeUBh8MRloI1CqigfdwP61sEPIQs92QymW4k478BT8AmOA93wUrP2YgKFTVru+EssnwkEokMBwKBnbVpGwwG6TdLxDUKOkb9S7CYSqkPvrBAcJTO+jiCCqIoDrpcrjCLxbNbV7orSZb6F+ApjMAAvbtIx3MzVI9bpVJh9Vg7Krzb7ZbfNjfokpCfbWYhLIBpmKnL9BvcNq+ke/WfAAMA4BrC0xGyYsUAAAAASUVORK5CYII=',\r\n'small/calendar.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMDc4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMDY4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBiYTljYTJiLWIzMzQtNGJkYy1hYTRmLWNhZTU2Y2I2ZjhiMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMUJERDM3MzdEMTAxMUU2OTQwOEM3RTYwM0IxMTZDRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvxstMkAAAJcSURBVHjarJW9ixNRFMXn48Ww6iYiJKAJ6rIQMIigElIJIhIDmkIwWIid/4ConSCoiKCFiGghFrpqI2IKtRVUMGmDbuFoRAWzRVLoYtxkMjOeu5yBW2gQ14Ff5t157503996TxC4Wi28ty5oFY2Bb/3gNBoOpSqUyZzAWkmSlV8Kx/vPlrCTN31y2Ye2+gpGe4D36y9jyfV+0hvLRBcfBG+By3uXiUAlINoGOIRLU63Url8uFGGfb7fYhEVwSZXAJbOHG02AHOEqBZ+A1OMeDPFmfSCSuNBqNdZJlNps9WygUFg0XTIEDYBMFroLtoMK4z0z2M5aDb4GDYFoeeJ53A4KhmVTgP4x1bA+HQysIAisMl6sTGdZLUp4DG7n4E1O8w40vwHvGIef7ELpdLpdT6XQ66Ha7C4hnDWsmgg2QouACn32j4BfQA/dYokXOPRIzS7NKpVK/0+kYEfQpdBfMUKAK9oFTjO/zwIeM58ER13WftFqtlKSM1Ku1Wu2nUX4aqxpFyiIWx5GKfd5HyWRS77F1U5a40KbAWAmN1bOIX4KQZZE9AXy43BURXAW+g8NgDQU9pvWYAj3WrMx4II2BSBXGNjR2D8beFn/1VoOTrKEIngA7wTFl7FfgIgXfgQsw9nkYe728JYx9Bj4cGb66dGoP2EyBDCiA3arLH1ScYSP38i7GvgzBwEwwsjPhVymec5Sx7djYDutzUxl7nhviFr4EbXCdKX+Wt4bQNRh7Woydz+c/woczIrgW7ALP1cnyl/CD/oubtwE8UG8oe55CNAJhs9ncijpmfgkwAGS26xQUWIDTAAAAAElFTkSuQmCC',\r\n'small/cancel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczOUQ4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczOUM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmE1ZjdhMWExLTUyYmEtNDA3Yi1iMDAyLTYxYTBjYzJlMDQ2YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRDYwQ0ZFMzdDNDUxMUU2OEY5RkNCNTdCQzZEQzY0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgUGWlQAAAKrSURBVHjalNRdaFJhGAfwV48rJ61IG7jCwmosBruQ6UWNyCYEWhSsD2zgYBfCJhERfZBBErWRoCBrkjEsCroZJSv6QDGHV8EwcIwuBjJYjBj0tRSczpT+LzyOw0lle+CHeHjPc96v55F1dnayOmEDF1hgBQqggRw8hif5fH5pcnKSmUym9ZcUNRIdAg+9/AF88B1KsAN2wxl4DlNKpXJM/LJMMsOL4IZxmIAKqx8dlUplVKfTCW63e8BsNmf5Q7lowAW4CedpSY2S8ZgXBOFsNpudGxwcjCwuLjbzh0Jrayv/5dMMUrJ5tsEoFossHA5P53I5YzQaPWm1Wt8qaJZ3wC9KthX2wjIdgjT0sFoul5dVKhXzeDzXDAZDMhaLHeHJToCaNrka2+ApfIKDkmRemIEe/gcnzbRa7ZrD4RgPhUIunvAyneZf0Us/YRja4DXsoud8j2/Qob0Sf8Vut7+fnZ3V8ITHIVVjWXNghf3wApzwAB7CXeng9vb230ajcVVBl/ZXnX2foQ9+pK2ZoBX9Fy0tLUytVi/JqQJKDQ5zTXSFyo1OHYeUV1BFbK8zpgsS8Ble0nKLcKXWYNzLNgVdiz019lEHb+AH9MM3+vAIleKIePDCwoIslUppeMIQnKLTrMY+eEe1e5SS8RgFXgn3aasC1W1Ip9NdpVJJkNN965DctwO01F74Ipn5VbITlFgmQyIWCASG+vr6EtXmcAnMcI5tIviljsfjLJPJ9DidzrFkMtlbbQ4hamX3NpMQrYtFIhG9y+V6hBne0uv1f6oJeZU44DDw/ta8kYRY7jGv1ztlsVj8NpstJm1f/LRPwxaYhgFRyUnDyLtToVDw+3y+68Fg8Bmfba2OnYchKvxhamd89l95d6HaVtN7CVzk293d3StNTU3rCf4JMADW29FLcwK/QQAAAABJRU5ErkJggg==',\r\n'small/cart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFNzc4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFNzY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmFkMmIzYzM1LTk2MjItNDgyMi1hNmI2LTFjMjhjMWZlMDY0MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMkI1NTM3MDc0MzkxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjQJmmcAAAGoSURBVHjazJS7S8NQFMab2ohNkWhBLEIhBB9dhA4d3Ir6BxjEioODgt3EQUTEpSA4Kbi42jGL7jqJ4FhEHFwcJFjfVaSotSEm8TtwKWlJIIEOXvhx7j1JPu55hbNtO9TOFQ61eUVKpdIIrED7gN9a4ME0zaSu6/3Ym+TkJEl6gr0H36AjgFjcsqwbURQTqVSKfDqwI4IgnGBzDfYA71OQbjNeq9UKmUzmslgsLjdCBvtgnZ3rAUKOgg/cMtpalAsmNBYwh0lQAS9uVT4GMwEFZRAzDENzEzwFw6AngCC924eilt0EX6kFKNE+xTjwS3nM5XJfXo19CKZ9CoqsxaoI+dNL8Bz0ggEfgjE2DHetRXFOR53lcpPZTg8xCnUI0HRUwZuXYJw9nASL1PUsArKGw1pM6BZ08zxveAlSTuaBxPbUn1dsesLMx7GbT4Fn8mualkyn02U3wQpjASTAGth2CXkUDAIFrKqqOqcoyk5DEPPofPkHzLIqvnvkkPxdYAXfTsiyvNsUcjabdZ4L4ABQKyx5CD6CDbCF39ZRPp8/a2rQf//H/hNgAKeXe4sDiF6hAAAAAElFTkSuQmCC',\r\n'small/categories.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBgIoKml6QDCxKhlItJMBygmCBgJuGw/FoMOXL923ZESFzoCDWAEYRCbWl4mGrAQoaYf6PUPULYAEH+gxMCFQKwAxPZQ/kYgfkCJgfForvKHshdQEoaFoFiFxmwhNcLQABiGcDalBl6AejMfyn8AFRs8ycYAGrMXkPj+lIbhBWCEHIBmRQZqGBiPVNLIU+pl9IR9EIopLg8bQJhaeRlcZDEMFAAIMADBDy2LwOzX7AAAAABJRU5ErkJggg==',\r\n'small/cellline.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaxJREFUeNqsVDtSwzAQNZADuHHvktDEnCBxR4cpqYATJJwg9glwTmDnBDEllZ2O0hVp0zKkMB10vB3eMrLGGQMTzezos6unt28lOc6B21FfwPBs6KILON1uXjbbPwMS5BY2hfmwiq6JgMKWsBTgTS8gwITNihsX2FRYfgGdk/UV/NVeQIKVsASBKdeEYQRzeUghzLAuGWSw0AQ9tghmZJUaayWBhNWY7B3E5OjuZE6J2oA8sUFgbB1yTh0T2Br+UB0EFXYzXRsYG6fcpDpdUqdHWN5VALaEWcR2yoEUgJo9wN5Z1ZEyEJ9kAouZkbCsJTPq/w1IRjUDRK+QqYQsUGzo2VDPEfZlej9ZtFbKjqFNY9w9s4WseMJLntsBAwJUSrlDQ5fgCdmnHQf5ZN7SsAZQxLGrKTDQ5SZnz0NwqWUr5SUrXfB12C8k4oE/l5uuuRlrMhQ9pIqzDhYrpj9m1Uu5zKy0yHOvsSc62L3tPjzPW8trQf+J+bP6MH9Cdwp7pUlRLviyrjXd/34OAdOc9H4O1vclqd+wIMpAb8Li199XB7hvVLj3gz14+xJgAFXpv7eDizErAAAAAElFTkSuQmCC',\r\n'small/changelabel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUVEQTFGMzA4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUVEQTFGMkY4RUFGMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkMzA1YzAzLTI4N2QtNGVhMy05NTZmLWQ4MTMyNDZlODQ2YSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3OTBDN0NFNzc0NDMxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr593qAAAAMvSURBVHjajJRhSFNRGIbvZrbZaIISBbVcE0qGtAlKorVghLH+aa2tWbqaYZQI0iSISBosQbc2B6WxXxZztEAopUJpTmUhpmPkHw0RQS0JNnVTm4qu98i9sjGXHnh2d8757nvec+73HSoajVIMOp2ums/nR10uVzEzVllZSQmFQkosFidAxoeHh6lYDTZFt42NDSoQCBRXVFQ0dHR06EifNDZ7J2RfbTvabDafUygUL/1+fy5W6Zufny9sbW192N/ffz4YDEpTUlKO7VeQRWxqtdqBiYmJoVAoVBqJRGYLCgomWSzW8c3NTdb09PTfcDhMnK4g/i6IMC+vrq5SOB4K8fEOORzOEpfLPYK/4a2trfzy8nKr0+m8gmBFbm5uGRa5jblJ8B4c2nPLaMtweAYrLoMI4DEBWIA8lsAz4KFFeckED5CftbW1JYlEMmkwGGzY5ppUKh1LEm8GC7SoGoR2FYSL2fT09CKcxcgeZ34QCMF38BZoU1NTFxK2jBSZwkdg7SHGAV3gFGgAbuJ0ZmYmI0FQrVaP+Xy+5fHx8WRiXNANZsAtoAcn8CGt9fX1TrfbfTROMCsr6/fc3NxhnGXCYSMHydhn8BNUgUf0+TWBHzKZbEiv17t6e3sFO4LZ2dkBpVI50tTU9Abb5zBiHo+HPzo6+gVOfOg+AE/BNXARiJBO31B+3S0tLc0QbYdTyXZiM6WHsjPir9jhcCi9Xm8G+h+Q0F/T0tKeIO455mTgEsgH75Be9zo7O7vy8vIok8nUPDg4WLgjGCNq4PF4p1F+fpFIxFpcXGyE+Au4JCJycAE4yPYh+Kmnp4dCrLKmpua+xWKpi7spCOvr65RGo3mMvPyIQLZKpTJBuA+3CxuUgF/0k8rJyaGMRqMaDr0QPknej3MY67S2trYOV9NluOjCtl9juATY6a/spvP3JgxU2e3263K5/E9s6cU1JCtls9ksqJhPOPgiDJ0FJnCDESNJjbk7Vqu1jBFLKsiItrW12bB1D9LpFS02QE9XAw0oEwgEwYTS+59oZmamHfW9jm4jLaoCpXT6hJiLeF+CpEGMPNrpe5A4nAJXwcpu8f8EGABNC5YSPXyFMwAAAABJRU5ErkJggg==',\r\n'small/changelocation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNrcU8sNgkAQXa1AO/CqJ6xA7MAOhArQCsQKFivQDtAKpAM4yZUO1Ar0TfI2mYMi68lI8rI7w8zb+Rrz61/Px3g8GVscEVABu/pSH78mBNkKxxJYAyNgAxQig/jm7PoeAc6AE5wL4ID7FAiAvTbyIWyABJEKiWFUcyB0us6EdJCUpWZnyJFXU+AgNUqYkuG5RVQZ/i1wt8pcShC/JeTrUpdMasZGjOA0VzY5r9Lp4lN6VyBUckhd4B6kPOg6Ho8XupQk1p3v/F81pRACrUBaKcfkLrXkcHce4IBRRG1ZsHGfI0Q0FefLtqR2895ltbfiHLtusmE55KHPHEpHS7VeG7UtIR84+BCW3NtUj48jhb7xbUpu/vZ7CjAAtCZyYE38EqEAAAAASUVORK5CYII=',\r\n'small/chart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=',\r\n'small/chart2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBgWQFNL04BYtUxImvrj4+MdcKg7D5SfD8QCRBsIBAbp6enr////j8s1CUBcQIqBDCwsLCAX7Mdi6AIgfgDEH0gyEAQ2bNggEBoWuh/oPRDuB4ldv3Y9EUgFAnE9UKwBn4Es6AJPnz1luHr1KsilKOEJNPQC0DBHIBMUlvFAeiEQHwC5GiSH00BkoK2tbeDu7t6/c+dOWBBcAGo2BBoYAGT7g1wMEoNiwgZyc3ELqKioFAANZEBz7QZQ6BAVhpQCFjISOSj5xCMFQSHZBoLClJ+f/8OxY8cciE42hMLU0NAwgKR0SCkYXAaCwhQ9mzIixd5+DQ0Nh8+fPzM8ffoULMbLy8vAx8eHly8nJ/cBmLMcYbmFEa3MEyDTsaDk84GBFgAgwACrZ2hcmZdNWQAAAABJRU5ErkJggg==',\r\n'small/check.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==',\r\n'small/chemicalreagent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNqsVLFOAkEQHdGE6hQLEhMasAIbscISww+g1nJnj9EaGyikVf/AYC0ePQRqLKSRo6Q5GkkkXEdzzmx2L+tlIYthk8nM7EzevtmdWYANry3ZyRxlsqiKoZwZiu0MnbEOYCQE1kXZC+Uco3yuTRUB8yjdJTFfFyci2VRSNgzKwQZrA/I7OlclYezkPww3snZ07xeViZKUXr6FzF/WAkSgGDdVj1XE+C3qMwSerSo5iYlVFGLzThvNtyYMv4ZQuiqFc1mrSQcrAcd4YhV1nguk02kWKBQKqkII9E4423IkHo8TKwv1Pr+zA9o3dg2IRqOwWCxg4k5g7s2ZTYxThykYjUbJ6ff0eWVzo/6hHhRSvin7YjmO47fb7cA3TdPXaZuY7Iiyhe15XuATYx3AP9PR6XQC27ZtqNxXwLIsuLi8oJK12qbFL5w9Rv2hzljlTnNBQv+jH5yxiqEo9Yk3MLt8wzCYJBIJ1eG1ZQwHvA/pu+qJzcZrg4ERI9d1w2DX2GYD5QcrTUeej1mPs3xUfLwUqyFYb+mPrTGGWVGJPG7y+hVgAGUlpMVlUj+IAAAAAElFTkSuQmCC',\r\n'small/chemistry.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNDRjhCMEI4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNDRjhCMEE4RkM0MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdlZWE2MWVlLWE3MjAtNDYyNi04YWRjLWFmNzQ0ZDNmNTcwYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MTc5RjE0QzdEQkIxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuWygSsAAAJOSURBVHjanJRPiBJRHMefY66TrsEibASbiRBe1sjDHIrILl0EITu0RELGItOlg5cQPMTmqYQMKYg9FhgrzCUW85LhxYsZmJBeI2GWtsF/ZaOzjn0nxtBqR5sffJj5vfd73/d77/3eM4zHY6Jl4XCYFItFYrFYduGmwJtJX7/fJ9lsljAM8zueInPMaDQqn0tgG+zPiz+i1dnr9YggCA6IrsNdAafBB60xmhnWarVT5XL5JU3TZ+E6wAZgdAt6PB4B+8OLongP7kPQBLxuQZvN9s1ut++NRqOLcCXwCXzVvYeKQUzE5wqQwRDQQNSVoWoW8BjsgOV5SSxSNpKaFVGzpHQL4jCUslmB6A+1aQkc0y2Yy+Wuomw6KJt3cOPgPLilS7BQKDiSyeSm0+m8fwBDk5LlU3AUBP9LEEul4vH4ViQSeQJBAXoGND8Cz9R63AQnFhaMxWIRr9e77/P5XjcajWsmk2l5qntPvddbCwliqeulUulCMBi82263icvl2hkOh70/wl6BL+A6JpvpMEw/X5IkLfn9/u1Wq3US/0ae5024KQOKogyTeDUJZdABni86nU5vBAKB5l+CSolEo1E2n8/fhnsmlUqxlUpFzGQyL3DK/zyAwWDw2e1273Icdwcxo5klo0QYdNy0Wq1ryIiCWB/N34Fw2ImazebjeJEuJxKJGzMZ1uv1VZZlH+DeulHI55RHVclYMczc1SpmWZabiH8fCoWe4zC5X/ey0+msdbvdVbwubyd7BKHpfZMPu5lYzEeMlavVqh8+91OAAQASUuiWqlbvbwAAAABJRU5ErkJggg==',\r\n'small/cherrypick.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARVJREFUeNrsVNENgkAMPQkD3Aj84te5ARu4giPoBOIEsokygWzgfekvIzCCLXk1T9TECD8mNnnQ65X2tdfDub+MlZk+8nleThHsermWKfSlYDMy3l5QJlh0gEoL9LpkbYhBQ3sR3xSku4QyeHyQKUgfiu0FsNoK1rbJAaP0soBzrxMbRxV02Ito005QPaQUh5PAw/Er0Rj6TskWlB2CesFBGYitEttKmYl+pKQttaR7VbKDc8e9U+aweW4P1p70Z7oflqatCbQOL0sWQwZmOiqtHQr0DFMQbSJ4OlDFU8n3UaHTttL7RGCjo6KHuCa/8HZsbLCpnyYFGNaCxoZ56Gd3+TzF1ZOEC+thjSs0Rurf+B/eBBgA8J99m4JyNcoAAAAASUVORK5CYII=',\r\n'small/clear.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATJJREFUeNrMVDsSwVAUjc8CNOkpqWQHsgNWQFZAVmCUqpRKrACdTnaQVJQoDTMswbkz5828ecPLoyEzZx7J/Zx7z73P8/79KRUZNFvNGo45IGd82B9ym33ZIakKtgEyJBh9zZDOQyAAswf+t/F7BaRk+3AOCOcOnUO9TLZgRdZRUQuUUx24AwOLTUKbmksPhcEa2ReWvBOedWtAZBQRPASLHMRKzZKrRjApsQs0HMQSgYK3Y0MFE+BklvFCrDHQe6VyRVNuB0yBMzDzff9yu95yUyzaychsrSUAmc6CCiaGXaZ6bB1sbeZipSzZyDspq8d2tPE9KFw9GKXKSVNZehmyp0eKFX50OWisPG6IWrcdRUi/um3IUhhFLFUCLQti5ULAtssyk/0PrsLYaa9//jwFGABIBXzXH9oR+AAAAABJRU5ErkJggg==',\r\n'small/closednotebooks.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk3RTczQTE4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk3RTczQTA4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE1NkUxQjg1ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE1NkUxQjg2ODI1QTExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IjNeSAAAAlJJREFUeNqUlM1rE0EYxiebaGIg0BoaRASjxSqiSBeXWPUUvQiKuYiICAFB8ST6F/gHqOClHloPKiKJeAvqQS0REVIlFqV+hXhQsBpJEYkxMezG5yXP2nHbNO3Aj8y8k3n2/ZrxtdttJSOdTm/K5/PHw+FwHcuOcWnDqNfrf7LZ7HXLsmYD2sZG0QXrlinoAy3wGMwa2sZrcBf4QWAZyP9XuCK6h/vAef3Ttm07+HH8fr9PM4v3BtFtnfg140NwyV04jqOi0ehlYGE+ApOLBS50i/+fh81m04JHJ9x1o9FQpml+xHQql8spFEs/t7lrhdxJIpH4FovFpiH6X9Rdztk9PcT4DX64i1AopIrF4lFMhzDXUyN53d5TsFAoDFYqlWQkEum4bhiqWq0mMU2iKN5z8uE7YA9Yu2DIwWBwEgev6Zsi5BF7A8bBLVZ2YrGQ93rbRkvFc/BSMkGvtnHvJpgBa+Z5mEqlnsbj8YutVss1zbDRR8FXcAScptg0uAF28mO+eR5mMpmRcrl8BjkUoXvgJxgGh8BK/u0LyIHPLM5h3rDvvDFzgmib96VSaaJWq8nNWAXTSW59oLh4MgVW8yNb2D7iwDspgzeH0rn9YCt4AH6BZ8xdhY/HKWCCT+A+7Ttoa3jbJoa2GUTI/QzxFTF5M/qA3JyrPLILHGMdHDIniLZ5gVBvY3qOIpPgrDxJ9PItGAAHwAZPJzgLtc1+iikeeALG+NYN8a3s6/U46oKPwBV6JeMgczW8hEc24LaOLihe7GbVFNtgvbZebNiMRP0VYAA/katMiUCR9QAAAABJRU5ErkJggg==',\r\n'small/collapse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEFSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIKobCBBAVDcQIICobiBAAFHdQIAAwmrgwoUL/1dWVv7/8+cPK7I4iA8SX7RoEc60BhBAGAb+/fuX6fr16wzHjh1jqK2t/QUzFESD+CBxkDxIHTYDAQKIAZSw0fGvX784Kioq/tvZ2f0vLy///+3bN0kYH0T//v2bFZs+EAYIIEZcOQXmoqNHjzLw8fExfP78mcHKyoqhubmZjYWF5TcuLwMEEAMum0AY5BJkl+JzGQwDBBADIQUgQ0CRAAoGQmpBGCCAGKldOAAEENXTIUAAUd1AgACiuoEAAUR1AwECiOoGAgQQ1Q0ECDAAofjtyp2qbOUAAAAASUVORK5CYII=',\r\n'small/columns.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABKklEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzIHEZGRnR5UAAzEhJDjgeAAMLlwv9QzIBEM6CJYY1NgADCZSAjkisY0cTR5VEAQAARCkNGIsXgACCAqB4pAAGEEimzZs36//XrV4ZXr14xgOjbt28zbN++HcVFEyZMAIfdy5cvGb59+8Zw69YtFFcDBBALug2ZmZkMnz9/BrNjY2MxXMDFxQUW//LlCzhVoKsBCCAUL4uIiIBpHh4eXMmIQUhICEUNOgAIICb09MTKygrn//v3DzNGgJaws7NjpD8YAAggFmwa2NjYGHh5ebG6ECQOMghkKDZ5gABCcSHIGzBbcZVC6PLo6gACiJHaxRdAAFE9HQIEENUNBAggqhsIEEBUNxAgwABfdlLE0WdCHwAAAABJRU5ErkJggg==',\r\n'small/container.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUx4DDwIxPlAAwyQDEsAUiB8AZcmnAZCXfYBiAWQhBWAeAFQbgPJBkLBByxiH/FpYCEi4gyg3vaHhl0jpQb2k5JsCHmZITs7myEgIIBoAwm6cOrUqQwjzIWkgqFv4AMicw/RkVKIlIfBBQZ66TP0AECAAQDIDSl9p328ngAAAABJRU5ErkJggg==',\r\n'small/containercopy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMxJREFUeNpiZCACaGppJgCpeDThwuvXrl9AV8vCQBwAGbYRiGEG+ANxPRAHoitkItLADyBDgC46AMJAdgEQX8SmkFgDJ6ILAA1uoMRAogELjkhwgIYRDAiAMChygC5bQLKBUMMuQCMCBAygYbiAkAtxefkgKOCRIqEfiBWgyYd0A3EE+ANKXEg2YCKQQxqoEss4vG4AtGA9KCyRcgxFLjSExnojEDuSHBZAw/5jYw+uSKFa1oOCC0CvnkcqbSg20BGa5RjwxerQAwABBgA690BBA387sgAAAABJRU5ErkJggg==',\r\n'small/containerempty.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUeNpiYBjsgBGXhKaWZgCQWo9D2vH6tesHsEmw4LEsHogLgRonoFnUD6QcgBirgUzInP1yegJA7ADECkDuQSDOBxpggGRYApAC4Qu4XMGExgdp3g/SBHXZByAWQJIHWbQAKLeBWAPRwQcsYh/xaWCidiwzEeEi8g10fHQJFtjIgR4PjQyiALZkY4hkMAgsxJXmiEk2oFg+D0o65LoQm5cD0bwMcuECsr0MNHQDNWOZ6smGYsBCQP4BENcDI4UBmgX9QWFKVvEFLQxAhvRD8zAIHARGUAPDkAYAAQYAdlJBHbXYt6IAAAAASUVORK5CYII=',\r\n'small/containeruse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNpiYBhyQFNL0wCIHcjVz4hm2HwglQDlXgDiwOvXrj8gy0Coq/ajyX8A4kSgoRuINZAJiY3NmwJAvB5oWT+xBrKguQYD8PLyMjg7OxdALSQYBMwwxpvXb06IioqCXGSBrCA1NZVhw4YNDEA5CQF+gQQ2drabQLU3iIoUaFgGAKn5UO/CweRJkxmqqqsYPn/+DOJOALq0kCgDoYYqgMIOiA2wSF9ACl+Q9w8CDW/A8DIyAHrpAxDPxBYEQMABNEARKAey9CYQxwPZD2HBwIQvgKHeCkSLMAFQEoPKTcCXbHAZCkqDhkheBQF/KA1KTg+Q0ykzMWkLKQhAYaoB8jaQzQmkI4DYESj3A1s6JAZsBOIAaGSBsCHQdR+wpkMiXXoB6DJQygBFSCO2LMlEamkCTSIP0NMp2QZCwUG0SBpCACDAAEU2dViv3fGXAAAAAElFTkSuQmCC',\r\n'small/copy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNpiYBhxgBFdQFNL04GAngfXr11/gEuSBYvYfiA+gEO9ABBvBOIGUgwEgUQgTsAiDrIIrw9wGfgBjysZyDFQAYdLDpATKf+BlCKSofbIEQIVPwgTAEYQSngyYbMFFItAjOyag1D8ENkwIKhH18tERLAchIYpUd5nonbCxhopwHCEhYs91IUClBjYiCVMG3BYTNhAZM1ILiUaUD0M6RMpaCAe6HV7ahm4gEB2a6R5AQsQYAAmay1GRWP+RQAAAABJRU5ErkJggg==',\r\n'small/costcontrol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNpiYBgFgw4wwhiaWpr7KTRr4fVr1xewIAk4ALEjmYbFA7ECiIFsIAPQhgPIfKCrBYBUPxAHSEtLCzx9+vQB1CUNaOocYGwmXFZCDQMFQ0J2drbAgvkLGAICAkCuqMcXPEx4vFEAxAYaGhoMAf4BDKdPn2aorKhkALoUHDxAQxNINRAULgyfP39m4OPjY+Dl5WVwcXVhAHobJu9PqoHgQAYZUFVdBXbZnt17wAZDgQCpBoIjyNnZmQHk7b379jLcuHGDQVNDEyZ/AZsmFnzpChRWp06dYmhrbWP49OkT2OvXb1xHlifehaBECqQWgMIQFHagSAHRID4QJALlL5DqZZChiaDEDjRkAjAcDwDpRiBfEWoZwaz3H0g1kplT7IH4ICjBM8NEREVFGSnIxw9Bkfjm9ZsHg7/4AggwAA8Qb1oirmhxAAAAAElFTkSuQmCC',\r\n'small/costsheets.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK5JREFUeNpiYBjsgBFdQFNL0wFIORCp/8D1a9cPIAswYVEEMsyeCMPssVnMgkPxQaDNDfhMA/oEqzwTtcOQKAOBrgkAYaoYCPXafBAmxlAWIgN/ARA/BGIBanh5IhAXALE/EF+ghoEfgNgRStdTw8v1UMOoFsuF0LAD4UaKDQQmcFC4JYIwlE2xl0GGPqBqwiYF4HKhPLTUwQfkoWmToIEPoIm5nggHHWQYcgAgwABVTCeiPU7edwAAAABJRU5ErkJggg==',\r\n'small/create.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGM0NGOEIwRjhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGM0NGOEIwRThGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzIzMWQ3YTktZmZhMC00NzA1LWJlZjktNzAzMTVkOTBjMzBlIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N9BRpQAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=',\r\n'small/create2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCM0U4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCM0Q4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmMzOTk4ZmYzLWUwYTktNGEyMS05ZGY0LWIyYjA2MTI3ODIzYyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBM0EzMzA4MTdGNDExMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkJ38rUAAAJ3SURBVHjapJNPaJJxGMff6eafSQzykASzwizzkEMcOnfIRlgeCoQOdbBLXmbScBLNSx4MDxWjpRCJh9Vl5KFRpvRnsKhDhCLWhgedxfyTTAKDiTrnn74/eI2wzU38wof3/T3Pj+/ved/n+fU1m02qk4xG48jS0tI1Ho/3DMtvoNHKlUolyufzUaOjo3/3M9oNUqkU5XQ6j21vb1Pr6+u8cDjs4HK5FqRu/Gu2m/4zFAqFVDQavavVahfj8fhBiUQSgfkPpLJADmRdGRLh88orKytyi8XyMpPJbAwMDDxH+CL4Ao52bVitVitqtdqt1+tnisWiGSExWADfweeuDMm/y+Vyh1gs1rDD4Xgnl8tHKpXKZaR+g1WQ37dhIpFgm0ymhzA8aTab50ms0WhU6fQ58GuvpvS3XoLB4OnJycmn5XJZaLVaz2g0mtW2vTPgDbhAPztXGAqF+pVK5bJIJIp4PJ7HOp1uIZvNHuBwOBTdXSE5F7yg150rtNvtETwis7Ozh/1+/6V8Pj/l9Xon0OEc4m8Bcd4Ay2CM7O1o2BKMxmOx2HmpVDoXCASmYchElTWk3GAckAaVd6uwr/3qoaMsDDZ7a2tryGAwpDGT8wwG4xVSNrBG/6Yr+756qKaqUqk2FQpFBlXewwFOhBfpkSFfdARc72qw6dtCuVyu2zKZLIFqSWgKHAdhcAuc6MqQSCwWU3w+n6rX62S5CabBWfARPNqpB4y9BpU2a+kDeA2GAZvMJprWneEOugMGQQxcTafTY70akqt4E0yggZ9sNtv9ZDLJ7cWQ6Ct4wmQyTxUKhUG32/2gV0OiuVqt9lMgEAyB963gHwEGANSF5XEpsxcrAAAAAElFTkSuQmCC',\r\n'small/createcontainers.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQyODU1NEQ4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQyODU1NEM4RkMxMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjY4ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjY5ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DkCOfAAAAsdJREFUeNrMlM1rE1EUxTOTGc1HJalSW2MlMV1oK0VKSBQhoC4CJVBU1IIKEXFZ8C8RQV0JLnSlGHVj3EhFGomV2FJ0IZrStNVabZoYbZqkmZnUc8sJdOFKunDgx7x5M3PfOfedGWV9fd22lYdq2+JDy2azXpzbgPIvBer1uq3ZbG6M7Xa7pQQCgUmMs6Asc3zOAjowuZDKsQbkbemTZlmWEQqF7B6PR94xS6WST3O5XNtxcQtcAqNgBZwBN8AFsAhk0avgDjgCdoFHUHett7f3sdfrbc/lcpFoNPpQ6evrS+PmA3AS1KhCp1IHFamcW6NiGa8qiqIWCgULLo1wONxMJpNzUnCK6s6D11R4CtwGZ8ESFV4Bd0EEtIMnUDgyPDz8lApDwWBwUuWK0p9lUGTBAqiwr62xnH+CX5vmliORSInvLPX09KyJwjFZDRwD1b9Ybm2QzBub7K/Asg7LTViWVqnI9LQ85AZvgR+k2bPj4B44DebBNDgH7oOjwAlewPJlHM9geXc+nz/Y3d09IQVll79QpVieYSw+sLgLjAPJxic+EwRTpmk+j8fjn91u90QqlVqKxWKGWM7g5k1wkT1ybspia0elX9t4XWErKgh0m67rv3F2lstl3e/311sKW7Ykc99AFLwEB7jAOxBja+Sr2g/GDMM4MTQ09BEBb6TT6cOdnZ0zGleblaCC7yBPpSlwiAolWnXpG9jDgq9geXVwcPB9V1dXDQGfBXWx/AY3r4MEMye2OsAC2MndFeX7GC1phXz/c7C6F5blHQ1FO2q12qLGGHylunkWlV2W3g6woGxKnNY9TMQE2NHf35+TTSwWiwMOh2NGq1arsmMBscCGrzDos/wUFSoc5ZyL6hcQm3FY/uHz+axMJlNBwXYlkUiMMIsm1aoMsE57Nv6FWnNNoiHYJmxu/KGcTqfVaDRU5b//Y/8RYAAD1xfIfFZ4LwAAAABJRU5ErkJggg==',\r\n'small/crystal.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASpJREFUeNrslM1twkAQhW0rBbgEfHROpgKgAkgFMRWEDiIqgFSAO8AdmFQQn8KRdBB3kLwXvZWGxTji54QY6Wk82t1v52flILjb1Sx9TGOodynnwXzn0ALQczjT7ee24Eek7JjZKzTCQgifaGPC2IqHoS8T95UIEwpClgpfQQ00F+gZ6pnYtzX0Bm0Uj1XhE0seQhlvVZaB4sbEvnHtBRoo5uWx/F/JOfQNTUy86xjghysRPtPZ3N9EyI/ZWEGzFtjQXWZgK7ce+lC4lWu8esXBNGYP+/0OLSGCS6xP3XpkgRr9iFNTP2poZmCZ+ltokHuwgwy9g5UO5i5LldZokLUPOwr0oLRST2gnYNkG6wR60FhvjpkVx2D/AlugnbBTfhx8Hovb+A3+CjAAWet3QwOXINUAAAAASUVORK5CYII=',\r\n'small/cut.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVVJREFUeNpiYBgFMKCppakAxA5YxAWA2ACXPkYchoEM2g/ED4D4AxA7Xr92/QNQPAHIng8VWwAUK0TXy4TDIpCBjUANilBDE0AuhhpmCMQg8QJsGnEZCHKBPpR9EIjtgRhk4AWgJReAtAHUIgzAgsPABUAcD3TVeZhBUNoAKLYfamAh0WGIFJYBUG8KQF0tALUMFBwPyI1tAxdXl/85uTn/gez5hNQzEWGmwqdPn+BsQoqZCaVFILX9169fP+7fv78DyPYQFRVlfPP6zQFyXQgLv0QoBkVOPb6EzYTHdQ3Q9DgBGAEbQAkbaiiIXg/KMUR7GeqC5UB8AGhQJEwc6NUXQC/fBDIzgFgCyN9I0ECozfuhXEugph/I8kD+DaChIDUZQPoiiE/Iy/3Q2AyEehMDQPMwKDznQyMOr4GgAqAQqOkAgQhzhNIBBBMyKUUczctRgAADAB+aeWFKXujmAAAAAElFTkSuQmCC',\r\n'small/del.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAhfqWrl+X7rS9peXZ8d/ZuYd//79Y0AP5f8szCws7z93MkuK7TCb1rcbWQ4ggDBcyPT8ZbvMxvX5wvuOrvn3/78rAzOqkv/sbCysD58ukdiwtojrxNkWdP0AAYRh4D8hgR2fxeS+SDy7xy2y7+i6f/8QhoIMY7n3aInU/kPhTAysDD/kZU6i6wcIIMww5GDf/srZNuiZjMoX8Sd3eET2HVn3/+8/63+c7Awgw6SBhoGUPbG3W/lbWb4UXTtAAGGEIePffwxMTIy7XztZB/3b93+d+JObPH9Oc0/9LCt1W2bfwZD/jIwMTxztVv5RkIlh//n7D7p+gABiwRpVwIhgYmXZ/cbR2uf3Bf46/mu3nfhv3NT/Lir85Y2hwZQ/slK1jD9+/GHg4sbQChBAGF7+C8X/gC79z8lx8LOExGuGv78Z2Bl+M3xj5/z7U0Zi8/+/f/78g6pDBwABhDMdgmPzzoMVcnv3hv/m4/v9XErhh+iTu/yCuw5uA0aU839m7FoBAgir6D82SGyCIuD/f0aGVxYmfe89HNxfyyh/En5yh59/32FgRP13ZsBiKEAAYYj8Z2PlZEWOTVAEyEnWM//7d+iDk00QyFChJ3f4+ECG/vnjgK4fIIAwrXj8rE3q8D6EYUpyMYw/f/9kgMT+3o9OtkFvZFQ+CT6/ycd5/EwnunaAAMKMZX6+7R81tA2+S8lc/qMkW8T48xciaYAMZWba+9ne2v/veZ5aBlmZPejaAQKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD36PbiZl38lwAAAABJRU5ErkJggg==',\r\n'small/deliver.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUeNrsVDFOw0AQdAwFpRv3dpdQhRfE/CC8IOIFERUtfkHgBckPAiUV5xckFSljuiBSUKbMTDRIi5SzLkSiykoj27dzu7O7vouikx1rZ4eQO5edIk3TZP21Xvk454GBMjxGQB9wwLWPG4OcMLMnEH0PeF0qGK3AWt9y7J4WFqaGXAu0J4Dk8Z5cE6CUaorJF++L710P0ZNPPD+ACngRWsA9SLfwc0NmEt7JTyFt4IJAX18jOXx9e1MSp81UTBVDk8AaVdZxwyxKbZ5rCD2VmHn4RaNCqZxKFcuceYLN5e+GBMw04VwK7IB+EtVa3303lRyxJyp9bILQHtWGgfpbgnsFuDjgv3ZGXaISE7Wg0jAmh5yUoZTdqE8jfeeq4PdJCQhINTXL0Q9Nq/YFCw3Isrqa+My04W+3DU6A4w2j47nhJKHu+d/uw60AAwC5mm4X4tK98wAAAABJRU5ErkJggg==',\r\n'small/delselected.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKCSURBVHjaYvz//z8DNQFAADExUBkABBALMsfT09MeSCUAsS6aukdAvG/79u1TCBkIEECMMC8DDfMGUlsIqJ8FNDQdnwKAAEI28AaQUmdlYmJwYWJnuM30n+HOrx/Y9ChVSSo8Znn/uZNZUmyH2bS+3ciSAAGEHIaKYIP5hBlCt2xjyDh3i0GJjQPDNHYmJnXWh0+XSGxYW8R14mwLujxAACEbeBxE3Pz7i+GNhAKD3JO7DOkX7jAoIhnKxMD4q/AHc6bU/kPhTAysDD/kZU6iGwgQQMgGFgDx05ufPzJMN9VguC+nyiD36DZD2oXbDDKs7CD5v2m/mS8p7j/kB+I8sbdb+VtZvhTdQIAAYkROh8Bw5AdSgUBsrM/BrRR99oar9OMbrDe1TZ59kxK/orb7gNt/RkaGJ45AwxRkYuznTvuDbiBAADGADMSFD8Wm2l/Utdz7gFnk/0MGvv83RRU/H3ULbD+YnM2CSw9AAOFN2LaLZh38LCHxmuHvbwZ2ht8M39g5//6UkdhsN2fKH1x6AAIIt+tSslmOOfmueMTE9/82n+yv81Ka358wsP8/L6P1YV9cmjMufQABhNWFBxMyWFjuPVoiDYzN//8ZGV5ZmPS993Bwfy2j/En4yR1+/n2H1+2LSXXGphcggDBsONPYznnU1nPFQ0b+/yB8FOjKgylZ7CC5/UCXnZXR/HifgfX/aUn1j4ezixzQ9QMEEKaBKbn994FeQxiGGgEg754GGnqHgeH/GSO7k+j6AQKIBcPJ/HzbP2poG3yXkrn8R0m2yG42agQ4Lpy5d39Mqv/f8zy1DLIye9C1AwQQI7XLQ4AAonp5CBBAVDcQIICobiBAgAEAmxdipemnE5IAAAAASUVORK5CYII=',\r\n'small/doc.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=',\r\n'small/document.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZFRTQ3MzA5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZFRTQ3MkY5MjREMTFFNjg2QUZGNUE5QUVBN0E4QkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYyYjkwNDNlLWJkNGUtNDRlYS05NjdkLWM5YWJmYzllMjE5ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUNENkM0Rjc0NDIxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqTzgeQAAAMASURBVHjarJRNaBNREMff7ubLtKZGqUlTU9NDI4QUzyLYg71YclIUvBZpafHiqaGHNCSkJKceVYoKUughHnJQQargIV4EIyHQegi2UhtSqzGaJs1Hs+t/6kvYblNPDvyyu9n3/jszb2YERVHY/zQd/WSz2QuhUGgOt0UgqBcYjUYmSRI75sP6Wq1WmIW53e79tmA+nx/c2Ngoh8PhGB5F9Y5oNMrS6fSBcAc7ValUglNTUydwX2oLwmSHw5EfGRn5ot2xtLTE1tbWmNls7iR4koREURQOhUwmCIJULpdZJpPpkShGboVCgel0Oq1QE/yikLUpaq80mUwycsl8Pt+MxWIZUHjS8L82XBL4Bma5MOsouLe3JyKxbGFhYa5YLAotJxOJBEN+mV6v1+6tA/OxggaDQdne3mbz8/P3ELoXzw14totXDYipw5J4NYT5tY4odo8INhoNobe3ly0vLz+FgBleKoFAwLe5uenTeCfwUB+QOMQuB4PBR3Dg5+Tk5P22IDbJOzs7LBaL3YBnfaVSSczlchP4/8y/ChknTGU1hPWU67M6zZfJ3gOqKyfoAr/psMF5vkYG68DFw1cgtN5sNl24dus6fNQAekA3F3jCy8MEboJnPGSRPyfoTLkDh7uCWz8YAgN8I53kNKDWes333KGuBK+42AS4QgfU9rBerws2m42hLV9S5a+urrr8fv9dJJ1CfgPK4Cp4Dt6BH2AMvABv+YmLRwp7dHTUjzbrRx324D8LXl0DOXAb2HmYGXAdnAO3QBpcAh/UZSPa7XbyMICTVba2trrj8bgd97TQo0qJg9OyPkycPgwJhutHddkomDpU2DPw8CKfHkV4+pVKQ1MN9C4CarIsT3s8nofg+/j4eFLtoez1etnKyspjiFC5UC/XUbTVVCp10NMqwf1WzqrV6lgkEokPDw831Z0ioSNsyWSyn3KJ50prN0LRUzjw5NBg5aPLinenQate/woid59dLlfX4uLijHYcYU4yp9N53MQ2IG+frFZr24E/AgwA/YQgw5OszpIAAAAASUVORK5CYII=',\r\n'small/down.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMJJREFUeNpiYBhxgBGfpKaWZj+QMkATXnj92vUFuPSwELAQZJgDmthBfBqYqO3lEWggC5aYVQBSClCuABY98kA1sIh6AIzxB4RiGWTYfjyOSIBiEFBEl2RGF3jz+s0DUVFRBSzpDx1MALpuJbFh2AjEH/AY9gGqhoGgC6Gu/AB0JSeWRA0DmUDXnSAn691HiiAYuAA0zJDcZFNIpBhxLoS6cj+S1zcAXRdIacIuJNZ1RAOgK+cDcQNZOYWEsMQKAAIMAFkoLxHVkhqkAAAAAElFTkSuQmCC',\r\n'small/downloadcsv - copy.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTlCNTdERkU4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTlCNTdERkQ4NkNEMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkMxODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkMyODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qE9KjgAAAxJJREFUeNrMlFtIk2EYx79vzh0aU1rM6UaMXMZSYtCFWirTm4rQDhTShaJdTC0RjLXQwQIpELvJGgixixER1oTAEDympgiKcwmRjVTCtsXWErW5w4c79H/lMzxgV174wI/t2/u8z/s8//f/jU4kEtRBBoc64Dj8BbnT09NFZrP5ZiQS+Y3nJERCIBCEoG0MzwLA228zTdNUOByOMwxzNC8vb66pqcnCXVpaOunz+RxGo/ENh8PhYpEyGAwXFxYWFLW1tR9mZma+zs/PJyP2FCS5ra2t8WAwmDM4OHhjs0N0Es3IyAhrtVomFosxer2+QS6XizUazaeRkZG7oVDoaWpqqnO/LgsLCynkBEdHR5nNgqTteDxOk4epqSmJxWJRzc7ONmZlZVEDAwPrNTU1l0UikfN/um1sbND/NNy+IJFIQjKZjBofH89eW1ub6+7uzsWBbnb5BPCC8FY+9BY7HA5GKpWGIEl8T0G1Wh2xWq2W6upq3erqaqygoMCtUCi6lpeXz0Lfe0jpAu9BLmjk8/lSXASTnp4eSEtL+4aL3VmQBLT8MjQ0dN/r9aag4EpdXZ2yr6+vEWM3s7f+GOjBOngBRyj9fn+Fy+XytLW1vd3hQ9xUTn19fXNmZibpbmVsbCxlcnLyoVAofI5lMnoINIAgsAIl4GPcJziQ19PT82yzIFpPeDweCjapHB4ePtPS0nIBVqKqqqoeBQIBG7Sys2deASnAB4hvK0ARcEESDnLPcWAbmsfjBTs6Oq6WlJT8tNlst3t7e6+Vl5eby8rK7Pn5+f1EGzbk7Gc2OAXmwAS4Do7h4GQuWo3AvEpYR93Z2WlSqVRMaWnpa3R8vr29/RW6puDPrYLftylEjGwEJ9nvJC/IRcSwuVKn091BsQBZMJlME+zJ24uReAcM4DSxH9CA40QCeFEmFov7udFoNAnjC+12uxZjXtp9606nkxifvA0UW+QzUIEf7OhBHPoHk/ox0QMaHhMtLi4qoNMRsnF3QE/K7XZTmGTrJ1JZBG6xHUax9yPs9bK4uPgXfej/sf8KMAAfNV74L2cQHAAAAABJRU5ErkJggg==',\r\n'small/downloadcsv.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNq0VMERgjAQDAwF0IF+8SNWIB1oB2gHUoFagVqB2oEdYAm+9EsJ6UD3nGUmo4kE1JvZ4cIdm83dBaV+bIG5SAbJDI9+W5Lb9baq/fAllgO9lnxLZwQKSyBrw4b8u7mOHElCKjgBFSCliIED359dpQkt7yRxD1xYggUw4VpiQ5Lm3MSLsEKhT0ABf0uVG8aOwFh8yfEhfCrBsTdSU+NocswxSCSecpM3s9VQAyN+tAaBBvFOjgf/zJw587wIZa40FdU2NVQqqlS+TXHN2tInMfSYs9Tmf6Nw6vA7E27ZgMq8s50J2aCCnW20yKN+cT1zvJL6U5ejhg1Ty52tOPxe/8OSinSLH04GxYFLYWG78A22Vv+0hwADAPUDVtbIQ74+AAAAAElFTkSuQmCC',\r\n'small/downloadexcel.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASdJREFUeNpiYKAyYETmaGppJgApBVINuX7tegOMzYQmFw/E8iSaV4/MYcGiYCHQxgNQFwv8dRRcz/jgeyPT/R8PfoeLzWdd+aoQKH8ByVcEDUT2ygc1R6uDf50F+/9+/vsBKnYBnx4mQv5h3v9+AsPP/wIM3MwOQNclElLPQlQocYLtfUCMUoIuBIZhAcO//x8Y3/6+8CdYtJ8iA4EBbvBfgKWeee/7Qpa1rwv/szA6aDjoJ5DtZXAEXLvOCDQYnM7u1B8UpNjLSGmtniphCPI2NjYlLgzAwSbbwAlADErUD5DzLNkGgnILkCoE4kRiwpCFiPATgCVqIN8B5Fp82Y9QTjHAUpyBDL9AbHm4H+qiDyQUXw5AFzPicmEh1EBSQCMDLQFAgAEALFJj1+b/ZJQAAAAASUVORK5CYII=',\r\n'small/downloadimage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNrsVLFugzAQNSgrEnNZGEknMmRvxA84f9DMDC1rOjT5grQDXcMflB9AoSsMZWoY24EdKT/Qd+RcubSKEmWq1EMn353x87vz2UL8y7liDC+HVxg3Z+JMtm/bnIwBB3IEJmRgAx/DPceXiFeHkPD/NzJmb9Jmti+sG44dLWbPJ3YtWD2Qks2xo2XQ8yk9G6wW7BO7Cv6KHGwSnQSIBS0WUy1vVLGhEnpNbDH3gTHhGvtaVu6vgHwgLoBn7FMHrBiY5JXBbCmlcBxHlEUpirJY418ilPRTXtOOmByx/wyN1EkjXilmUzkV4/FYxPgA2K3FfD7Q2N1yzZYMTPYj7aqx78CImWVZ3TrnYm/vdjtypakVn1KZAWCh9eZCY//VPgTgeV5nB0GgZ2ibWmFT1e0YR6qOmrTKqOtaxE9xZ8/v5ordj0Px+11/SOJ4D5hlmR5ODb4Jxzavy/UVYRh2gaZpRJqmZNJliIxTXwHtrksOvfOdT/7Ge/gpwAC8hYlAB6pQ3AAAAABJRU5ErkJggg==',\r\n'small/downloadpdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNq0lMENgjAUhqHhLhvIFS8yAiO4gTgCEwgTiBOoIzgBsgEnuZYNOoL/Sx4JqSVtib7kTwu0X//3aBsEP45w/pDu0gJN4gsZ3kM19YX27QhtPXnn+UNkGPDAii/TTM6AoocuNFYfE1kmUvoNFEMFux85E4qvhcVCGjRhD23YSQvJWX0lS7kCKZ4sgiQowx1tx9/I5Yh3yillrdgdl+GGJjfVzRV4pbTgomcgwWrbL18CkoseMMmwSt9vXkCulyl9K1DYBsBdZuqvBiIOC/3VwIb3m3SpoXA4+AQroZPLwY4c6hfzqZi2jpq2kjcQkRmuM8mXg9N92LIj5XF95XAcLjksGegTdfDP+AgwAPYEUNx4yC23AAAAAElFTkSuQmCC',\r\n'small/downloadsdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFlSURBVHjaYvz//z8DNQFAADEiG6ilrZUApBRINeTa1WsNMDZAADGhycUDsTyJ5tUjcwACiAWLgrVA/AXEuH7t+gFNLU0FJFc/AIo9AIo54DIQIIDQvbwfSGkC8Q8gFgDiDSBD0DQ5AvF+NC8zwtgAAcSExYUsSN5+gCSuCKVhrnsIxI3omgECCN1ADiC+A8QbofwCJLkPxAQoQAChGwjyqhKSKy4gyb2H0gdgrkeOXRgACCBskRKGxL4ADUtkQx4Aw9oRl4sBAgibgeDYRfYqMFYToOINjIyMcFeC2EA5FL0AAcREQlqrJ0YhQAARNBDoAgNsbFwAIICIcWEADjZWABBAxBg4ARoBoFzSQEgxQAARNBBoCMiwQiBOJCYMAQKIhYjwE4DlGGge/gC05AIuPQABxELAQgMsxdkDtASPAgACCFvhIEBsNoPlbeTCASCA0F1YCDWQFIBSQAAEECO1qwCAAAMAyAFhLkqF94gAAAAASUVORK5CYII=',\r\n'small/duplicatepackage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUY0MjcyRkE4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUY0MjcyRjk4RkJBMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhlYjI3NDQ1LTZhZDktNDk2My04NTJjLTZkNWY1NGVhZjcyNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDNCMjUxRDc0NDUxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpTZCLAAAAJMSURBVHjarJRPiBJhGMbnm2ZWN1fpICxJa6IoIive8lCQG12EDhK0EFRHb+EhpLI9mBDLCoX059AhOgZ1kehiHoq6ePASxZJRLcFmsKegRmYcnen55B13ksbdpf3gx/dnZh6/932fV2aaprCfg+Xz+UeYD4IZMMvPrGcTa/twg/uapj0tlUpCLBbbFgyFQvyKKrgDXpM4PzMIKwR7KB5wUVGUVrPZXEulUuNnLJFIbGG+Bk6S4ONdRnfAMIxb4XB4vlgsrmQyme+WoIL5OPgIboMw+ABkClUk7GuRbq/1er3Tsiy/r9fry9ASJPo1Ps+DJDhKeyt0cyIFgu2MC2+5XK6+x+MZC/ExAEfAYfAV3AXr9NGA0MGQGIkPh0O9UCicajQaK+12+0wgEHjBQ+7h4QngA4vgEyiAh2DTFq4wOaPKrFKp8LAjtVqtHAwGn9sF58ASuAki4BkJag5FUVEUA98zv9/flyRp0Gq1zkoOPvsCXoHroO8geJmcoeCmc4yxdbfb/VKyvWAlWaAKz5LfnASXdF1/ksvlOvF4nJXL5SvdbndBmtIRO/XkAHa5BLv88Hq9MxA7hP0vidpIo9aT99C2V3HDSDabNaPRqAjrbFar1RsS2eMcePOPXE4bG7DNRjqdFpLJ5OjA5/OJPGdpnlhwb0q+HIeqquM1ij4y9m+wRsZd+N+/L9G2fge8+yn4GYTAMt3W2GNO/+plPr6B8+ABiFHlf+4kADNv304Udd56k+9w66yCC+DtNDFeBJhagA9H206nc+yPAAMAEMbEHs1AaF8AAAAASUVORK5CYII=',\r\n'small/edit.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNpiYBgFlAJGUhRramkmAKl4IL4AxI3Xr13/gK6GiQTDDIBUPxBvBGIQez9UjHQXAjUKAKnzQPwA6CpHqBjIcJCLFZFdSqyB66FMBSgdCMQgQ+4DsSPQwAtEexloWAPUoESgRkMgfQDqWpAlB5ANAwFmAoYFAKl2kIuAGh+AxN68frNTVFRUAxqOnkD+D2Q9LHgMA7lqPhAXIrsCKO4ApAKgXv1AVKRAI2E/1EuFaJach1qyAJteXGEIir0PyIZBASjcNuAyDJ+B9kC8EM3VIO8zAA1LxBfuuMIQ5OUHaDkEFG6KhFIFLgMdkMIsH5psArFFArEGfoAaCqIn4gszYg1UhIbXh+FXHgIEGAC7omSO085dLwAAAABJRU5ErkJggg==',\r\n'small/editannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAURJREFUeNrUVDtuwkAUdBwO4MY9LVRwAuAEsU+Ac4LIJwicgNyA5AShTAeUqXAVWvcgxWXKzKBZ9LLKb600edLIu8874/fZ5yj6Y7tsQ+r1e4s0TZ+ABHg+Ho5v7l3cQqzAg5gAA2ANX9JKEEQKLIAaaPYve4pWwNKd6QSIMYpHYA4kiqzUugkWlNgGUd3pAxv5KDYMShnkmSIpP3md4yNNSN0y4FX1O6cvX+Gf/02ELPg1oqiMbw2s4LsPvSJjYOf5lr7P2k9N+dBBpZjZJoQKsm6MkmmP5Zsg1bqtYKVLTCshtAqt2Qzo2hRZR6+mxXec2B7G40pz6iZjCtwaPtdTN7s+x782JOfASHsW/4EpMwJFUcuXfcGJLkw0OxESzeuNV0vXpPOE+BzWODYHS/09cu233Mt3MrPfquuW043+hb0LMAAhZ3QNix8n0QAAAABJRU5ErkJggg==',\r\n'small/email.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPdJREFUeNrslMENgkAQRdcNBdCBesSTdgAVqBWoFRg6oAPpQKzAUAF2IF7kaglbgn+SL9kQEBS9GCf5biAzzz8fUal//X4N5MObeGsco56sW3EtEocXK8iHcih9ETSHptAJKoFSMSROFb4p6kLCZhE3iwlVNlCcHaAjGoc4Q4BNA8jFsScsgNwHUNuNAMjKMzZmGBzVwGQw42XAmbJ0dUBcQQEzOQPgW7AFYSl6lnUbOE35oDkE4EKnG7reMoqkac55FroMApbTlalbsVq67UkSMJZs22CtDu1cu/4o9adfPdvhDnmZNzkuMy6BIW/2KfOVf5u7AAMA6KFU32Vzs8wAAAAASUVORK5CYII=',\r\n'small/expand.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA9klEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQFQ3ECCA8Bp45coVlUOHDnn9+/ePaAMBAgivge/evVN7/vy56+HDh4k2FCCA8BpoY2OzTVJScjcphgIEEF4DmZiYSDYUIIAIRgrIUCsrq21sbGxvQYbeuHFDEZ96gAAiaCDIRcePH/f69euXsJSU1G4NDY37+NQDBBATIcOOHDniBXIZyDCQ90EuxgcAAgivLMiwZ8+euUpISBBlGAgABBALPkkhIaFboMLD1taWKMNAACCAGKld2gAEENWzHkAAUd1AgACiuoEAAUR1AwECiOoGAgQYABhXW0H6uHwSAAAAAElFTkSuQmCC',\r\n'small/export.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNpiYBiMQFNLUwHGZqHAEAEglQDE8UAMYiuiGAhU4ACkHHDoX3D92vUHUHUgQ/yBOABJfgM2F4IMswfigzhcBDJgPtQ16OAiLi8fBLqkAYcrHwAN9Yd6Ex1cgDGYSAy6g7gsI9lAoOsMoF7GAEBfXSAplqHJYj8ubyIDYpONAVpkgAxzhLJRwpQoLwO9BEoWgUD8AYoTgWIfQBhkODTJkRaGUENBrnJEDjNocnMgK6egGYQVMFE7X49AA9EjJR6YBOxJNAOU6BdiM3ABEB8g02EPaFZ6AwQYAAOKOvO1iJNCAAAAAElFTkSuQmCC',\r\n'small/exportcsv.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVBJREFUeNrMVDFOw0AQNJAHpHFBZ7qEhvwA5wWBji7kBREvwN+gwqkoMRWiIn4BpknaoyZF8gNmpDnpcuQiHwiJlUZ7cc5zs7N7TpL/GP3TfmbXnV+QdJGugTHA9ckWITbkSHng/XK5WBrtI8kIuHD+r3YpJNk5UAcUkeBeavx4D5VcQ0kRUGlAOlKZfjR2cRhpXR06LJoQ6gYq+VugqiaqyxqL11CZbrQdm4HXDJINtd7ytFXJKIljcQmshQmerQmSa+TiPBQpVQ1dzzRu+d6S5RnRUIUaYruZ+dfNjSO7SNM0V2Z6tP7g9zHyFLgCNsADnt0hPwMvQI8bV5+reahkEs+g7Aagb3OpMmpGpWvX9UoPesgXz3hngTeRVc5hT8AtD201Nji1BFEioonj24c+EtbTchfhgdOIQp8iE3kdM1lU+ApL+fWTMMlfxZcAAwClpWybOw2M9gAAAABJRU5ErkJggg==',\r\n'small/file.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==',\r\n'small/filter.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4LGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDE6MTEtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQxOjExLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjJjMzVlNDIzLWYzZTEtNGU1MC05NzIxLTJiOGIxYTdhYWRmMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoyYzM1ZTQyMy1mM2UxLTRlNTAtOTcyMS0yYjhiMWE3YWFkZjM8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MmMzNWU0MjMtZjNlMS00ZTUwLTk3MjEtMmI4YjFhN2FhZGYzPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE2LTExLTAzVDE1OjQwOjMyLTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+8nsm0wAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAxElEQVR42uyUsQ3CMBBFnxEDsMaZig2CsgBtyozACBmBDdggIyQjpMHuECNELGCaRAqWiR0pBRJ8yc2d/8lP3zrlnGNNbVhZPzhw6xf0XmdAluhvzc20swOBDqiBXWRYD1yjyNbYHigTXldZYx9+Ufn/UCkFgGipgdMnVGvsEcD3z4VyHrBCqOXilAecKtC6hFCjyKNESzNJvbPGHqb9Jcijygl6PCzn3NsJSbQ0osWl+P/LIayiKO55nj9T7qqv39ivAQCf2VZ0sPgj3AAAAABJRU5ErkJggg==',\r\n'small/finance.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVhYTg4YmJlLTA5MTAtNDEzOS1hMDMzLTFjNGRlNTNhZGRlYiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MzYwNEYxMzdEQjMxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiHLPpAAAAJlSURBVHjarNRLaBNhEAfwzWa1eRjSIpESTAyapGmgIGrIIR68iOKh9RIP6kXFgNqCB9tCFDwIUi+GVRFEUIScfPSw9HFRvFiKEC9aJNqCEkipRDQGiVmCm/5HZusm5tGCCz/C5vt2spmZb0y1Wk34n5cpkUg0frcfXkOV73fDKGhwAxb0jaqqCslkUggGg38D+ny+xoAv4ROcBgcH8PLaIkThO92Uy2VBURQhGo2uPSzZbLbGgLT5IFyFHkMwugKwB17oX4iiWPew2CQNm+Ek/9VtsGJY+w0yXON9gsViqXvY7HK5jPfDMATX4REUYQt8hc8wDxOwC86bzWbFbrf3plIpOZfLqbFYbMkUDof1YEfhHCThzToKOk7pQGF63G63UCgUutPp9BH9DTfBHRjhxHv1xLe55uCYJEmHnU7nQiAQWMpmsxYKeAgLDznQU3gFZ7jSHzsEpZQM5vP5flTcXiqVtkqck0Vulz7OzxSnYKpdtGq1uoK/Oy/L8kWr1TqAl5uTeO0D9SS8g1vcHhOdkoiiaMViUfT7/cvo5+U/fQjTcBxmIQ1X1nvMKpVKbyQSqTscIgegvhsA1waP7gmPx6M0a2zqr0m4uYFg1K/eeDz+uNVJuQ0/4T5s7xBsJ1yGCyjMr1YBNW7sLv6UeBBQgXbAXjgFB+ALH8lK4y9JzboBFB5jd+EtFZR/vMaHYIiPYgyetAtI48rPp+QsXIIZfmuV90zyaLOC+583pJlmuCiHz+A5fIMxfZYa9lDh7tHwwLMPNE2rn9iZTKZZ0vfR/IT3LYrihB8ULBQKCQ6HY21hVYABAMWFqCT+eBw1AAAAAElFTkSuQmCC',\r\n'small/folde.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==',\r\n'small/folder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==',\r\n'small/forms.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZGQkJCNDY4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZGQkJCNDU4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk3MURERjc0ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk3MURERjc1ODZCNzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EQQ27AAAAw1JREFUeNqMVV1IWmEY/o4ef2K5NkPKNsuUNjOFEoxi7IcuYhdddDF2NbwMLTZoEAS7yF1sCyG6cjBG5E1jC2JdDEIvBg1huSgKoQViJYK4ZU5ooaV29nxO3Zkdtz548Jz3O+c57/O+z/vJcBxH6Eomk2RlZUUpFotrcfs7eL4lyufzBz09PT+VSiVhS9FwOGxxOBzPRSLRLm7FpbhcLieIVWXLZDIkm82qFhYWHoEwyvI2rphMpu8ul8tBvwqc0rjT6STr6+sF4sp1fHxMpqamiMfj8eJajdAfQqwsIAE6FhcXZTs7O88gRRqNRjmpVCqYHfYZKBuvr6//getCAmXCmpqazObmpqGvr+9TZ2fnK4lEwk1MTDgnJydJIpEgMplMiPPB9vZ2P8iypUCZMJfLSVQqVby3t9eNBp3u7e3dn52dHY3H4xzLstVKeA0fDqCG7WcIEWSbmpoSIyMjH1CTjkAg0Lq0tKShtUPnqxHSWiT5Ab7kNCQbIXmtu7vb09bW9n5wcPAp6skiW4JMKslywBDQLkgIySwkH0Dy2/39/XgoFLrndrunscUIkJGiC65SIwCmapIPINmXSqWUNptNAanNlLCKXGr+C3zPCkmmXf48NjY2rdfr1yD5CbUQJHMCWZ4ANsDMnyyW5yk5nL5rt9sfKhSKWvjPBslv/iP5EjAONJ8hTKfTrNls/jY8POzf2NjoOjo64iD5EF1mMHpCsvNUGFD712CXmVk2D/9dXl1dtcZisesg/zI/P3/TaDTewVjdxiOVuAW8LnaZO0OITNLBYNAwMDDwEbVsb2xsPLRarbm6uroMypGh416BXDHLnGBT6NyihjGLxfICvxdxrz3H0XVS6QL+aSOFvCim5J3f7++fm5sbWl5evkvPyX9MShfslhLscjFY2GhpaQnqdLoQZtlOZ7lKlwvLYDC83NraGhUiZNCMVmR1A109hcFdpfMwEolUPQ/VarXU6/XqSsmUCbER1mq1JzMzM4/5L2F6iEajIaW/Cv5iGIb4fD5xQ0PDV7wfobFfAgwAOuBX9pndZCcAAAAASUVORK5CYII=',\r\n'small/formulation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNrUVMENwjAMDFEHYAS+sETLBIwATFCYgHYCYALKCExAugF86JcRGIE75EeInBJ+YMlN4p5Pju3YmF+XwXgyHmLdQkfBv7a7dZXmBB/a88B8h64zfBZQktYB4ABHB1IXkBE/hy4DPINaWCGjGjqHBBF5xPAk3Mm+8OzcXzRy2BohDPG0NRYAblolimtPhBqeOX/YlMohbwU1BWsTu6EIrphOGGkJTXKp+JtkStIrISX52Y8M5w0WJzlspUDpEcJhCh1Ij9bc09YXodUijFRRq2rz8coRcalvOYkw8fV81Tbm2wj5Wkok+S7nkpOjx4+4rYfnsNi/xpdX3RWWmRyPWsIjU4dyAn5n/kKeAgwAkKhuznfrOsQAAAAASUVORK5CYII=',\r\n'small/gene.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATVJREFUeNq8lDFuwkAURJfERTpI4ZpQkibkBqajyxHinCBwgogTRJwg4gSQE+CSDtOEltQgxWXKzEiz0soSxt9I+dLYK9t6nj/7becqqn/f71DOUFdn7i+ggQUYnXKG0xhKoOlFDgEjZAW1oUKqXa3A0QbKIa4/oTfe233tbi3Aax6Oh+NvHMffWKbKbAStoRtc30IFn6ntsNQygXfQu9z6XV5CEzjem4ABeCXwBHrWmhoCmjcZG27OXFnOJSfnjeaQrXWhF+hV65le1AiYq8UPuWO2Dxwj5WwGejdZ0DZdd6oybJ35llNl5t36Ygw5wIUJGAx9qgxTfTkeTvdTgLPawBL8J4jDabNYj34+IwMskbuZQMy0V247MhhM1OqThntf+/dVMZcZQEPz//BELQX93/oTYADSQlwAijoTdAAAAABJRU5ErkJggg==',\r\n'small/geneconstruct.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAItJREFUeNpiYBgFo2AUDABgBBGaWpoKQCoBi/wBIHYgQozh+rXrDSCaCcoHGRiPpqYeqtEeScweKlaPRS3EhUDXgUz2hxp6AUkRSOMDKPsBksUw+gCaWhD/IAuQWADEH6AubMSiCAQWQmmYLxKwqAXxP8DCECSwH0sYNmLxHjYxUBgyjiZJ6gCAAAMA8hgdAsaGv4sAAAAASUVORK5CYII=',\r\n'small/geneid.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX9JREFUeNq8kzFOwzAYhV1UdSXMSBDGspCcgGRgROUENJygdGQijEwlJ4ByAVJ1rRTfgEx0YUBIzGRhYuH90rNkRcKpGbD05L+q+/n5/X+Vcqzh4TAQKY+11fH9ExSZD3vLj/BPQDrLUSYWbMYL/IAACaSCtqFGBNgldlGIOncBe8YRtmeohqReQNfy3fplvQNIQLfHBMfvp7v1r0BCz7DJs0xOmvWFXPR1uwqtSxWAsRNogSOCZnRrulx+n5wXr8WVhmMBLwDNO4EWuCJ4Co1Zi1K4VXSreXxqInCNjWQ2Z5ZzStG5YsMK5l0xZyfwDdpnhhPWBS+SvDVcldAdz0ddwJpPvKc7+cGROBusHuWyBK4yjpQ57wQaN9p6toACNOaBzsccpRROG2dT2JiMmdXWOCkzSpjRZuMu239DbBkzzNgMe1ZvANYbA1vwTysOxWbJigGVOFTfA5ZYozJhpgftZ/c9DCZ86kiaYBy1lw9QABqg1HXIB1gS+r/rR4ABAABIg5v1NUUgAAAAAElFTkSuQmCC',\r\n'small/giveownership.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NTg4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NTc4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmI4NWU2ZTFkLWQ2OTEtNGViMS1iZDI0LTQ4MTNlOGM1ZTUwNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDZGM0Q5QzdFRTkxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhDhHmEAAALWSURBVHjalJVdaFJhGMfP8Qsnm9rYpkVDk+hjfcHItEGji2IwhhAjyAZjIULNkkY30m5aaBlBWWIw6KJdGGgXM4kKHeRFsbaSIi8aCc7mYlAEDT/wc/Z/x9mYB0/kC78Ln+ec/3ne5/m/r3S1WqW4VqFQoGZmZk4IBIJ9+JkDQZDeyFcqFUqv11Otra2b7wi4xEqlkshqtdpDodAhiUTyHSEpGAI3wDx5JpfLUX6/v0aQV08snU5TJpPJgQraenp6zqDSiwifB/fBI6DiKqSuYCwW00QiEa3dbrfKZLI82RqzwuAZMDUkWCwW9/T29v5RKpWZbDbLTr8D2oYEaZr+vbKyIl5bW6NEIhE7vRP8aEiwu7v7E8SyGMo50ng+n7+RagKj4AmXYN0pt7S0lMfHx0eNRuOcXC7XicXiV7CXAqnr4DF421CFsAzl8/ksCoVivqOjYxFDuYDwAfAS6IHsvwXz+TyxzO1MJrM/GAwOd3V1PUTMiJQNXAOz4ClYb65QKPy34MTExGA4HNY6nc4hjUaTJ9Wy1j3wBTjBjlQqxS2YSCSkXq/3qsfjGVOpVEWOXR0FB8EYevsRvX5js9kMGx+uEXS73Qa1Wh3v7++PcYidBu/BwPrLPN52CJ2cmpoKwBGXSbtqppxMJgcsFosXX64nJgeTzHaFTJVElJxlOhAI3Glvb/9cI4gGN3V2dnKZlpwOYh0zqDLTHgZ7SRJFSJaXly+xfUgObZlDcBvj2wfAB06BD+A1894xFNQmYPmPj6m1cQimGKsQP97cEvcD4tU4biW6ZigYyHOXy3UlHo9vmov0iFmzTDXsNYhjqpdKpYdHRkbu0ltvbExJiKHcwi2t1el0iwj9WlhYoFZXV6HLIzbaDc6yFXEjFc1m86DD4XhBs/8CiJ+i0eiR6enpXUtLS9Lm5uYqLgc8VqVJGvwExxl45XL5q8FgmOzr6/tG3PFXgAEAw7wZJeKAK7sAAAAASUVORK5CYII=',\r\n'small/help.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDMyOEQwNzQ4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDMyOEQwNzM4RkM5MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGN0I2RTEzOEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGN0I2RTE0OEVBNzExRTY5Q0U4QzZBQzkzMUIxODBCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uAaTwQAAAyRJREFUeNp8lW1IU2EUx++u043NUW1ILya+fjBT5iaoYSEoJMyFIejA+UEEi+GEiV8GyzJS2CeVSO9gWH4QSSUoxYHBLkhJsNjmK30IFBGpiBGRyTZT+z9y7+3u6jrwY5znued/zz3POc9kx8fH1FkWjUYpv99/Ti6X34R7mVv+At6Dn8Q5PDykKisrKa1WK8TJpUIHBweUz+e76PV67WtrazdUKlWMpuk9bjsddIMP4Nn+/v636enpBEFaKtbZ2Wm2Wq0sMtQwDNOj1+vrY7GYBduEetADNIAFZqVSmZAQLf5EiDUuLCwM2u32LmTpMJlMK8jw5NNEtgIcoCslJWXQ4/E0kthTghC6Nj4+7m6Fud1uNi0t7WT96OiISmKsQqFonZqacpPYBMGtrS3K4XD0t7W1Mb29vQFxFLIgP1Xc516ViAaKi4sZp9PZv7m5+U9weXlZj8JnulwuRlwTlmW1oVDoNdZewn0CPoL7/D7JHmViUlNTM4PBoEEQxEndNhgMi9nZ2VHx60dHRx9HIpEGvOwuXCPwg6fgCl/3kpKSaGlp6eLk5KRJEMQbDFlZWe+kRSooKJDh5wUIipZJcc/zDjkwEgsNo/hQ1E1NTRGpYF9fn91oNLajbYjrAlbwHHwWP8fFpp/qQ6mReup0OpLFHbj9XLY20rLJYnjB3zMzM7qzHuB6sB18B/dAXPoMF7snCGJCwjs7O7f+k+wr8Aj8kW6QtiKx0AgJgs3NzW/D4XD19va2MokguRzKgUJaEsy7Em1X3dLS4hMEcewr6KndgYEBm3iMREZmV3WqXjRNjYyM2JDdbllZWVi4bXJzc6nh4eEHOK03GRkZSxAOSGIfJsm8fH193TY2NtaQl5eXOMt1dXWfMHrOCRhGqSYejwtZJLEatNOExWJxklhhlVywPESko6PDrFarN2pra4fm5+f1CKDy8/OpoqIiHj0YAhs5OTnm1dXVBA2Z9MYmd+Lc3NwljF03il0F8ThO8hf3nIablCUwhAv26+zsLFVRUSHEy5L9BRBhnLwaYtfhXuCWf4AN0rf85VBYWEhpNBoh7q8AAwDXV1bc+qUyxAAAAABJRU5ErkJggg==',\r\n'small/history.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKqSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIBZcEi9fvvx/+/Zthu/fv4P5f//+Zfjz5w8DJycng46ODoO4uDgjNn0AAcSILQzPnz////379wwyMjIMvLy8DNzc3AwgdR8+fGB48uQJw/379xnU1NQYzMzMMAwFCCAWbIb9+/ePQU9Pj+HLly8MV69eZQAZDnIhyHBlZWUGERERhmPHjoEs+W9ubo5iKEAAoRj46tWr/8+fP2cwNjZmePjwIdhFIJfw8fGB5T9+/Mhw7do1Bg4ODgYDAwOGffv2MSgoKPxH9j5AAKFEypUrVxikpKQYvn37xvD27VsGZ2dnsGGfP38G07Kysgyurq4Mnz59AqsHqT1y5AiKDwECCMVAkAuEhIQYrl+/zqChocHw+/dvBjY2NoadO3eC5X7+/Mmwe/dusKtBQQHyPihMkQFAAKF4GaSBi4sL7DqQwbBYffz4McOePXsYLl26xODm5gYOQ5AaEP3161cUAwECCMWFv379YgBFCMhgUCSA2KAIAcUyyDB/f39QzIItAmFQzKOnEoAAQnEhSBKY/sAGPHv2DBxmTExMDCYmJuC0BwrHHz9+MLx48QKuhpWVFcVAgABCcSHICzdv3gSHHzD5MLCzs4Nj1NbWlkFYWBhsOCgILly4wKCtrQ0OR2lpaRQDAQIIxUCQS0CJFuRdkGtWr14NDnSQ90DBAArLlStXgsMZFGEgOQcHBxQDAQIII6ccPXr0//HjxxlsbGzgSQmUwEHhCXKdlpYW2IIDBw6ADQMmLZSEDRBAWLPewYMH/x8+fJhBTEwMnDQkJCTA4QsKM1DCfvfuHTgYgGkSI+sBBBAjrvIQ6B2woY8ePYIXEKDwBEWUnZ0diMZaOAAEECO1C1iAAKJ6eQgQQFQ3ECDAAOM8PGxdt3IBAAAAAElFTkSuQmCC',\r\n'small/import.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALpJREFUeNpiYBgWQFNL0wGEiVHLQqSZ9VD6ACGFzES4LgFIFQCxgqio6MM3r99cwKeekYBhAkDqPMgwqNADIDa8fu36B1x6mAg4sADJMAYou4AsFwJdpwB1nQAWaUWgKx+Q6sJ+HIbB5Ih3ITSJ7CcQHI5AVx4gNtmAXNaIlmRgYAEQP8TlekYiks1/YlxGbCyTDAa/gcTkZfTw+kDXkokRR2EQT6T+hcAYX0DIyweghQAx4AHNvQwQYADHWSwYOF++nwAAAABJRU5ErkJggg==',\r\n'small/importprojects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCODg4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCODc4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjExQjYzNTk0ODZBQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU2NDREQzBFODZBRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XI8ejAAAAidJREFUeNrMlD9oE1Ecx+9faBo8ldKrihWCg4REOZvQxSmLIEgW0cnFSTlEHDIoAZfiVDcHCaWdHDpkiMEhroKLiRalQyEuIgZFbOFac8Zez/P7g+/F41AomMEHH3jvcff9/X7v931PDcNQGefQlDGPsQsa3W43mlvg1F+++wnWwbf4ZhAESqFQUEzTHO2p2Ww2mj8Ep8EHEJJonASPwQoDyzr0PG+j3W7vFIvF3xlmMploLmHugg7XE8xMuEKRHFgELtDlm36/70Dwy0gwXoFkDK6Ci/xJ5f40z3sOPALP5Id0On29Wq2uouSFcrn8PCn4A5wF58EtsEUREfWjIwK7o45q2lKlUll3HOd2s9l8kcvlAi1x8FNgE3xigO/Ao6AfF4sGmrI2GAy2XdedSGYYL3u/I9Pr9Wxd1zX0wkv6cI9Z7O1TzAGvGo1GG4KX6/X6gu/7hmR4CZwD8yAPDoIHiUwnwRJ4y/UNNkdJpVIvpfutVuueYRiams/nn/L83sSsMhkT22WwDXATHACveQk+SrPpiOxwONySku/TFmLIFEWDGFLFGkWPgRlwgsYXwUNs4HvYaFq3LKvPUi+AbXCYZUeYzFgccBQ8Ade4DmkvCTyLqzgQQSnrMzgjUcAOheO43LfpVRE7zvIlSwu2mbJtezl+l02W+6cHMjK3ymwDNkYyPYLMNuHHVq1Wu6N2Op1/ea1m5Twh+LVUKr1DxxX1v3+xfwkwAN6PqutHQDy6AAAAAElFTkSuQmCC',\r\n'small/importuser.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0EwMTlCOEM4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0EwMTlCOEI4RUFBMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkREM0EyRUM2ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkREM0EyRUM3ODI1QzExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6f29eAAAAyVJREFUeNqUlV1Ik1Ecxs/mBpsolhPtYmsyoibicLBKCW1XhkY34oUfELbKhBLKYBdRKKlkqfRBKiSOESUpZIkXBkXLHO1iiIEXidLa2CRmza/VNje39Rw5r71O+/DAj7Hznj3v8/84/wni8TjZaYXDYTI2NnZcJBIdFIvFMzg3kXgmGo2SgoICkp6evrkn2knMarWmtLS0tHu9XnlycrJ3aWnplFAoLMejayDInQsEAmRoaGiLoDBRzOFwCGpqau5mZWUtDw8PV+Tm5l4IhUIV1BC4Q/6xtglOTk5qEaYCDq+rVKr1SCSykQFgBAdB3q4EzWazurCw0KFUKhMfxYAbKHcliBC/2Gw2ucvl2un8PvB1V4L19fX2pKQkf1tb21laRVSYe3QRLIKpvwluqzLNm9FobG9sbHzn8XhOoMJuiUSiwqPDQMdC/3+H4+Pj++Hufm1t7Q2NRtMTDAapowfABG4mmuBFsN0hxFIqKytNZWVl5q6ursf08MLCArFYLAT9aMGRp+AlWAM/wYTb7X6en5+/yGkIuJuCXiMlJSUd2dnZgf7+/ibuzXBKXySCYDu+GsBe4AHyWCxGHc7AwPnm5mYrUvM75NHR0UPz8/NH0H8diWFgdYCrTMwPikErbg9Bn6pNJtML/C5vSw4HBgbKtVrtK/TfD74SKn4MH5d5Wz2gCnwEM1RUJpNljIyM3JqdnRUKecnVKBQKG1/M7/cTn89XDlFuizb2B1acM6BzwxVkVldXi1dWVpT8Kkuqq6t9fMHp6Wlit9tVNDdsNYEDgCb+KPgEnrFIUiEs4wtGMRhS+YJ0imRmZgZog7MlB2/Ba3Cb6oDvvKsZ2RREcqe6u7tPsmGwsdRqNdHpdG/Qi9wWDfUKE6RXcBBcYrPRhaq7NvuwoaGhr66u7klpaWknnFEXIbrvdDrXpFIpVZSCb6yQ79mQ+AwyMBfFmAGPYGBZwJ/Yc3NzaXBZhcGgRpGoQByCYRQniPycw/dl8JBdCPqSNIi1IseDvb29p/V6fVjwp78AbhkMBu6maFhR9GAPWEeYzpycnD7c+3tFRUXr9PwvAQYAIww/DYr+MukAAAAASUVORK5CYII=',\r\n'small/insertafter.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgFlAJGEKGppbmfDL0Lr1+7vgBdkAVKO5Bh4EFsgkzU9jLMhY1k6D1A10j5T4beRmCkNNA8DJlo5WVyks0DIBYAYgWg1zegx7ICFOONVaDGA1AHgAwqAOJ6IF4A5H8AiYPkYQbGE5m4D0B9Mx/JAQlQDPYxSWEINEwB6ioFqkQK0EsPgNgRyCwE4g9IYXkAltAZyY1NaDj2A/FDbOlx8AKAAAMA4KcwMCZAAk4AAAAASUVORK5CYII=',\r\n'small/insertbefore.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpiYBgFVAWaWpoGQBxAiRmMUIMcoHwDIO4H4g1AXHj92vUHSPIOhAwDqm+AGfgfi/wHIJ4IUgSUbwCy64kwkJEJj7wAENsDDVMgxcssUPoAkiEGUNc1Am2cAPXBAyQ1JEWKAxCvB2IBiiIFi8EJQCqeVMOAPnJkwSGnQEysYgNM1E7LuFx4gNoGPiDXUFwGJhCTkLFFMtXDkIlhxAGAAAMAyO0oNwUTYyQAAAAASUVORK5CYII=',\r\n'small/instrument.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQVJREFUeNrUlOEJglAUhS0Ef+YIbpBtYBOEE1Qb1AZuIE1gThBO8NwgN8gNtJ9CYOfCER6G8hT/9ODjXZ94vPfcq5b118t2HA8ES4n5oAUv8DB9bj1yzwM1sZYQPGhxIBmbCK6GysWmwJWZbmT/NE0417+A3lXiH+OW14k0a07J3fI1LwXp+nPIgiHBrhF7cAYpKLi7jBVE3SllJyxVsdRAG6eK59FUL7s5THrnMZCy1VQP76AEWe/8PXU+JYuIGXbE2j3FDH++IHtEc8vsSjbCo9iFnZd1Mx1sMTsHR3BinPHa40ssDPrOVLBiVvoq6ZvLOIRgbVpyMXAuQimE8v/9KX8FGADy1EvPx8oQwAAAAABJRU5ErkJggg==',\r\n'small/issue.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNzE4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNzA4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU3M0E5OTAxNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3M0E5OTAyNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KTvmbAAAAv5JREFUeNqElF9IU1Ecx8/u/pppTZ2DIaQiy5cRKvgyWAY9ZCH10tjjktJB4svo0quuHpyNEqEyNw3BJ1mEYcQ08cFgDcwYpj7MEau1NWg+qAv3R/uecWa3y9V+8IF7zu+e7/md3zm/n+zw8JAIbWZmhjidTlJRUXEFw9ugHVQxdxqEgBe8oxPZbJY0NDSQubk5olQqiYKILJ1ON8tksmF86kEAvAA/mNsALGAQ3AX3wKZw/T+CIyMjXaOjo8/Ly8ufYegBv0X7rbFNHgIneA8c4E3pB6704fP5Ojwez0RLS4v94ODggUhMxigZ9dF/7GCC47gOhULxV3Bra0vrcrkm3W63w263z2cyGWFUfSxvH8ETUcTzEOpNJBKTkUik6kgQx+RbW1uDNpvNv7e3J05rMxN7CUxiJ6J7tb29HRwfH79fHMdisaqlpaWrPM/TRJNCoSBeQ4/3FayDDJGwsrKywUAg0JVMJs9wfr//mlar/dnW1rZBpG0fnAKnQV7spAHo9foNlUqVXFhYuKgIhUKXTCbTZ/qGThBUM7JSgtXV1USn030Kh8PtSAF3rq6u7hs53qiICmikBKnJ5XJCNaBloJcixzMp/EdQyZAUpNXGNOQcQk7t7u7qThDcZ/k7C3LHCe7s7Ogg+ourr68Prq6umsQ1LbAE6AB3BCUofDYEAZGVlZULBoMhzOHtzcbjcWM0Gq05RvAteEorAjwWO2mFYH1NKpUydnZ2LnK44UhTU9OXsbGxvmKNyWTiNTeBDVjBdakdUVl9KIw16MQ4ekP9/f2u6enpXly7sbKykoiObwQpxnmJ/Blp+fX09AxQrWLpWSyWdavVOow6nl1eXq7VaDTCNbTrfAdx9i202lwuN4t7eGQ2m9eKJyxFQ2vY4XC48dpv4KHewvwHcrKZwSQa7OvGxkaeNliaz6P2hR5IvF4v393dPQRx2gimwGWgFbQvLZubYs1iCPA0qFJgnHBLtVpNUNO+fD5Pu3IUDIBFEGQssrko69w+cdh/BBgAi5QqRZD5d30AAAAASUVORK5CYII=',\r\n'small/key.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQNJREFUeNpiYBjsgJFYhZpamgJAqh+IE6BCD4C48Pq16xuQ1TGRYPl+JMNAQAGI1wMtCiDZQKgmAyD+AMSGQFeBfLYAKl1PjgsNoPQCoGEXoOxCNDmSDHwApZG95wClPyArZCHSwA3QCFEAev8+1AKYgRPJMRAUAQJIbAWYRcAgaCAp2UCTy32ogRugLgIZeAEpPEly4XqoYSDNiUBDPuBTzETAdf3QsPpAjGF4DYSmvQJYEsHmPaINBBoGSlvzkZLFA7LzMjQS9iPlDFjsKgJdSdBgbJFSj5T6H0ANvUCMYSDAjC4gKir6EkhZADEHUvJIpLhcA3kdiEGliQLDsAIAAQYAia5NJ99y8TQAAAAASUVORK5CYII=',\r\n'small/lab.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNqsVDFuwkAQBGIJyssP7gnkB6aixD8IdOlIqpQ4LwDKVCEvQLwgSUmFfwB5gUkXSxAyE22xWD6fIZw0utXeenZvd8612oVXvewwaDbb2KKce7vLsslZ2UAYA4c8/lPhCysCFso9B25Q5eacCt+A0OfTq1FCZrFZx7E9tbI+kPLKgHGdVSWL5IOwJMYAKy+pBJIsqpCYsWtWrP1XRw0NgjtsvGIL9vJnv/92EfIMMV8wh7Cfy6Y6Fr2lYltPpQfd56IpM+s70JFq1zIcV08Z2/bKRqRhhfiTgpYb9HNxpooOQwn8y4xXEQPXMF+BkQwjlnYwJnENhR91gY0QdeAL0fREBpEAU/j4ZB+BjIkRN/XJJlZDcQn7vkhi9SJhY6Ngn4CeutJWNZ8V3dKP6gbev40i5QQ/pAVGYQjMQPZwyns2cvWV+hemHgldfv0KMADs9Hi1l7uGXAAAAABJRU5ErkJggg==',\r\n'small/labfunctions.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYyRDk1NDU4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDQ4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQxYmIyZGY2LTA4ZjQtNDdlZi1hZWQ3LTJjNTAwZDE0YmM4MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5RTBFN0U3NDdGNjIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pm9gsI4AAARsSURBVHjafJR7TFt1FMdvL+Ux6IMVK9hWoKUYEIIKUtiAjJUYNNCVx9AQ8fGHJRqTIQm4EN0CBE0ElIQ4sixAMC6BQCARWICAVQtZkEqLiIJS3EpxCC1pKQUK5eH3Ry4EzPQmn/R3e8899zy+57AODw+p/7smJiYENpvtspeX1z3cHoAXgAF49vf3qeTkZEogEJzYsx/nZHh4mN/a2qopLS2909bWFjswMFDq7+//Bx4FgxrwBjBtbW1xOzs7nf/p0O12UzRNUzs7O7Le3t5Mp9PJDwwMZCG6Jjx+D2wDLXgOqIECz97Hr/XYB318cDgcVHFx8TW1Wl0/OTkpzc3NHY+NjR3T6XSHfn5+xM4NVsA8UJL04cyyubm5Nj4+LiDBnHEYEBBAIS0fsVjsPT09rcDZYbfbL+HeiVqJYTJCSgqeAk5g88VVVVV1Izs7+25FRUXsicORkRFJZWXl1bS0tEWj0bjp4+MztrCwICoqKrqjUChWtre3FTB7EXwPPgW3AXFgEQqFc2FhYX/m5eUtEV8s0uXCwkJNX1/flaysLCOfz1+dnZ2N0Gq119ls9i5SL5uZmbmKYH6BveZUyUn9byBVd0JCAi86OlrL5XIXj5pSV1fXFozLYrEYEFka0vjc29t7t6enJ8ZgMMhgeAtmMvAu6CAlB3vgS9T35sbGhqGlpaUYditsvV4f2dzcnOtyuc7jY8+GhITYlUrlUfgdHR1PovBCpgk+4FWQCdrAN6S7Ho9nHllyRSLRQnV19Wf08vKyvLu7Wx0aGnofurLm5ORMHeckk8m80JAHOBIN/gyM4BEoB5eJTUFBwU/z8/NSZHQOUnuFTk9PH8DhdchDOTc3J4+JiXEeO9RoNL8HBQVxDg4OyEdIpF+AMvAXeI3YhIeH70dFRdnh50dkVE2bTCZpY2Pjm3jwGyTyAA3hHTuMiIiwxMfH/4pSFOL2HDNyRNwzIAz4ms3m/ampqWC8lzI6OppFLy0tidHRJBaLJcLL7q6uroR/TaKR0d7iqf9EwA522tvbL5SXl9/f29vbbWhoENGpqaljg4ODb8nlchsWgcRqtXLQaeKAwi+FLr+NTp5nRi0dvAOimRHkADlsAqGQMJRNTZPBRp14iOxSUlLSMtKcrKmp+RB1o7EglKurqyp0OhAvSsAnTO1+AHdJPaHhWXw4pr6+/iMskY+PdIjuOjkczkM4iYSIyfToS0pKquPi4nQSieT2+vq6C069GO2R8XsIbkIyG1DJAX5FQ0NDvNraWteRQ6jc1t/f/wFm+JmmpqZrmGM3xPoI0/MSpsXM1JFMP3F6AeSAIXzjolQqpRGQKSMj4+8zywEzScHpE2jQ04goYm1tLRL1/Rojx4dwn4eJCrxMSgtc4CIZBGynYTSmLDMz03wyy6f3IVaXkMfjWfPz82+hGX44e+Bcjz3pC5M4ptsBpCmITIUFW5mYmOh47ILF+1RKSooV6VIqlaoP2mRDX1oU+zuUQQeT68wsfwW+ZThz/SPAAEBa/RwAsPq9AAAAAElFTkSuQmCC',\r\n'small/language.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrMUzFOw0AQvAR6QuHedISG5AWEjo74BSQvCLzASUkFP4C8AFFS2bwAuyFt6JCIhHkBzEpz0eqIzwcSEieNvL7dHc3u3hrz30+rztE96I7wOQUGQEe5cmC+eF7cBhGCSJLvgBiYCQGSl8o3BM7oT+AragmZkAESdIHgylPBOT4pcKxJXUJRZhCQwM4a2jVnKyaI37OXbUUWs19jXg1Y8j0TZwrSghhE18wdfiNkb3JdJuyc5VdiW+D/xVHasz/byiEqSqcFn2qyQUcTirJD7YSaVgDHDvCxiVBUpFC1ni7saQ3JEfCoWpVYx5Y1Vm+r1yiKTmDuw36A7VMnPcwRk7KSy00KDSf8BGUlgqaeNyj9vqK6ftOmyMQyEO46dx1Cyh1x+mO7Rd5dBsG73QDYN3yTNrHgLhdNUzbOgHogm/CN9X1rGEJYskdLKq1C32Hbo/DHZD7C4jdkf3K+BBgAWHuTbQKZ3H0AAAAASUVORK5CYII=',\r\n'small/left.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpiYBgFgw4wE6tQU0uzQFRU9Meb129e4FPHQoRBDkBqPhArALEjIfUseAxSgBrkQIqXGbEYJACk6oG4AIv6C0D8AYv4wuvXri/AcCHQsAQg1Q/EAjgcYIBD/CCKl4EGGUC9Z0BpLDNB6QdAvBGHd0g3EOj/D0DcAGQaAvEGSgxkxJNU+rEEASjgH2LRcgDooAM4DcQTSY4wjYTCECuAJgVFIJ5A9TwKSujQNDoKUAFAgAEAnrsu4NHvnJEAAAAASUVORK5CYII=',\r\n'small/listadd.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQ3SURBVHjaYvz//z8DPpCQkCBy8ODBtVxcXAJA7iQgnguT+/btG8OqVasYTE1N4eoBAoiJgQBgYmLKB1KLgdgbioWR5Tk4OFDUAwQQI8yFN2/eVKitra0DMkECjMzMzP9ZWVn/X79+XeLLly9pQIOfAcUbgFgTiEFs/n9AICcnx+Ho6Hi8oqJiKsgcgACCu/DFixfqQKyVnZ09F4hnm5mZnX79+rWqmppawO/fv59BlYEM3AXEGkA8H2jJQiUlpTMXL14MhJkDEEAsSK79LyUl9cDe3v4YiCMvL399y5Ytlnfv3u0AuvQ3yNVA/A+IlaDheBikTkND4/v58+edYIYABBCygQxAHzDD2EBX/ZKQkNj08+fPL2/evPnLzs4O89FGID6JpA4lEAECiAUtgH/fvn1bfO7cuXZv37511NLS2gX09s4zZ84wQA0kCAACiAnNhYzc3Nxf169fX3/q1KmfdnZ25x89eqTOwsKiDpRGxqAwVIXqR0l3AAGE4kJGRkaGP3/+/LW0tNwFSmMZGRk1vLy8f4FhiO4QUNB8BeJaIP6LLAEQQCgGAg1jEhAQYGpubq6aMWOGj6qqqvCnT59mAiOHAZiwcfkSxQyAAELhAF3yBxhmfDExMUuASeL+xo0bc+vq6lB0X7t2DeS6UCC2BmmZN2/eK2NjY3jQAQQQioHARM7Mxsb2HugqRlAOKCkpqb569SoXLDcAY5wbKO8D5EuGh4dfB4b3M6CB6U+fPv0IDC4FoP4HAAHEhGYgUJzxf3FxcU1ISMiRQ4cOGQEjZA1QavXfv3/XPXjwwPzXr19SwPB9ffTo0URgLgkAhvEXoAP4gWo2A/WyAwQQE3qkANPV76VLl/rv2bPHa+3ataUmJibHvn//fvzWrVtCwOwIit1HwLC+C6RPAbMcB9DwF0AXf4fKRQEEEHosg8A/oEv4gN7hnzlzpvOFCxdCOTk5GYB8L09Pz1vAIFgHzTWt0dHR06qqqmKuXLlSDVTHfenSJXuAAEIxEOg4RlFRUQagy/qAhYU0MNn4APk7gOH2Dyinr6KiIvvjx49zwMhjvnHjxmegli8iIiJCwBTAqqenxwXM038BAgg1yllY/gELCLbNmzebvH//XiMlJeUmkL/n2LFjoAjhmzx58noeHp45wAzwHGiQPtBi4YiIiFnAXCX27t07NqAR8wACCCNSgN77tWTJEo9du3ZZA714BmiQETAYjIBp8jkwvK4CLRAFJi1xoHKTrq6uv0A2/5MnT9iAcjeAYssAAgjZhYxAF/4BYgYbG5tDwIBWBhocBsx6TKCcAkyXDIqKigceP34sAGRLA8N0PTCsX37+/JmXj4/vIzCmfYAO+goQQCxIBcOfs2fPKpSVlfkC2W+AMfkKaBAjyCBYIQwqIICG7gW60gYYAdogMWFh4XVOTk4cixcvBsU8A0CAAQCBc8YuiRCcBwAAAABJRU5ErkJggg==',\r\n'small/listall.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhjOTk0MWViLTBkYzItNDVhYy1hMGMxLWM3NjMzYWRmYTA4OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNDA0OTU1RjdFN0ExMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pjb1IHAAAALqSURBVHjalFVRSFNRGD73bs45UQcmGxPUFptr9BQpjGRj9SJkVA/t2QcJwYcQp0i5ChTqqYdB4RgzKn0RhpQGJT1owSKbTB/WGCIMH0RzYzDmYu7e3b4Dd7Ld7mb98LFz7jn32/d/5//PZQRBILVicHDw3Pr6elCj0Wgx9QKB0loulyOLi4ukp6fndD9LzgiWZe/j5y1wQ0Rr+bpara7Yz5QUxuPxLo/H8whD+oBRKBRCXV2dEIvF9Nls9h6I9/H8CXARoOOWIqKjo0PtdDq/TU5OvqhQeHBw0A1YR0ZGAoC/t7f3x9HRkclsNt8uFAr74jZKuApYgFf4k9dGozG8vb19p8SjLFMrGAyGhMPhCNFJZ2dnbGVlxba7u/sMSgtUNVAEjKKPX+k+i8XyOxKJXJMjJMhAURpD1Yler3+fz+ezyWSSr6+vL2X0Dvhetq/CRKXE4MLOzo4uEAjYU6mU02q1riLtT+FwmIiEZwYrUcg0NjYeLy0tPd7Y2Mjb7fbI3t5et1Kp7MZyOaiHJvF9oapChmEIx3G8zWZbpTU2PDw81dTUxMNDqRBqzTHgAfiqhCBjtVotOz09/WB2dnbAZDK1ZjIZHw6HoLCrZamsmjKUcPCs2eVyfVhbW+sfHR19w/M8+Z+oYEeRK1QqVRqqGNoBbrf7YTQa1Ui7QRSSA2ZqpgxC2MgIY2NjU4eHh2a/3+/S6XQzUuPFmuSAE2mWfx0K6qqwsLBwC9PzwWBwfG5uLrq8vExw+v9UKVJCGsVEItEMghafz3d9a2vrbkNDA5FRSN99KaqUJ4Q4pq2tjUDZc1wW7SibAcw/wteizDVHlWVrKkQBF3FBqJDilXQ6bRkaGopj/jkUChGZg5HnkB4K0juZn5/vRwm1e73ecdTjZeqtTMoUP2udMgOFHED6+vq+QNEFELvQeqxMp5Q8fIq1jCwhCLjNzc2uiYmJmxgn0TW/sJnBnUeqfCbow6v4BFxCR536+EeAAQBI0C7G3S+NuwAAAABJRU5ErkJggg==',\r\n'small/listannotationpatterns.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkJDMzgwNzM4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwNzI4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFOTYxQkJEODZBODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFOTYxQkJFODZBODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B7gfeAAAAcVJREFUeNrs1MGLElEcwPGZxslR8RA6gdNWEoikgQc7dCiYS106tazUrdtCUBEt5GE79gd4qIvHhUXY22KHIigSotKog8WGlBPEkkERBDmSO85+X7yBuQ7uYQ89+KDvN8PP33vv91R931f2chxQ9nj8Tzj/iPV6veB7Cn9Cz3So+BuKJTEOJp7nxTOZjFcoFHaCmJrP58XnMTzCdTyVz+4jiytyfhprqOGDCEwmk1alUvnabrfv6Lr+7yXNsiyFyVUUkMVDHMUyTHTxHbeQg4FnuJxIJFZHo1FpMBi8KxaLQ6pV1FKpFCfxY7zBRZzDIpbk8t7jHl7hCc5jCxfQF9swHo9PGIbRajabK5ppmrcJnsJbHMYRmXSIbZyVSz8uf9SGhQ18hkO1X1zXveQ4TlJUeJPgS4jTWZDV/cS63LuaTLCJXzLJJ3mArtg2cbjiHQ7JEAmjdIWovIPXcitmMj6Tz3KxiG0mKvRl//qhhAdFjAonURN+xAscwu9QQmM6nabS6fTzqDdFNPANfJO9e1LglC1N0/qNRuNu0NhRh0h2DWdY5qxcLnfq9foD27Z/qN1ud667S0KlWq0qwU1R9/0/9q4AAwBgS4W4ETBmTQAAAABJRU5ErkJggg==',\r\n'small/listmoleculesbydate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODA4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkJDMzgwN0E4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyNjJmZDgzLWNjNmItNGQ1ZS04NzgxLWRhNzE1MDAwM2JlNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzY1QTQyNTdFNzgxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlUfev4AAANHSURBVHjajJVfSFNRHMfvnRv752wOttZSZ25Q9BDzwZ4WRQQb6NyionrwwT1kRpMofLA9pcmK7KU5CYqBLyXKoMlw+pKJEFpNCAzKzZZMFkwkt3Q65+76HrlXzDbtB5/tnnPuvud3fr/f+Y3O5/NUMRsaGjrX3t7eIZVKNzG8A+Z3r6fTaWpwcJCqq6vbmeNzD/Pz89Ty8jK/BIZhXqvV5vr7+6/RNH0bYy24Be5RB9i24Nzc3HGLxfIAgmGiB0r1ev2RysrKaRBOJBLfMXcGr3pBAmSBCKyBLpDjBHnkAz+ogEfqYDD4KBAIdHd2dgZXVlbWHA6HW6PRlGWzWQleewzKgB88BU+ACpT+4yHZQaFQJBELsiOlVCrf+3y+042NjV1yuTwnFospxFqIpXfgI9gCNFgteGRiDMPQ3HN1dfXq8PDww9nZWcrlclGhUIgSiURkfXcGS1jRv4xXLLgCgYDKZDI6JKsFz8I9YkWNt9+i2+22Ly0tGZGQNxheADZw+MAsFzIkgkqlUscglsEwAFzgFyBF52TjyPyXhzimuL6+vgPeKVE2LblczoNpK/hA6h0cBadIhhHb9IGCvb29TfBMKRQKv2C4yU7HWbH74BOYhliT0+l8hYowkBMVFTSbzdORSIQUeFQikZxFBZDp6yAErgA1KWysy2ZmZi63trZOtbW1WTY2NgoLmkymz6Ojo3fLy8uF4XC4GVl+iWmCD9QCA/leX1839PX11cKBkYGBgddjY2M1RZOi0+koxO4kILVmAuS2VIGbbA0y2IiHBpJdWFhQy2Qyqd/vby4oCNdpr9d7KRaLVcHsuJo1OF4Flk6A3+AQSJI7Dy9TWNeTHoANDAUFEeirk5OTZgT9KzxcRMeRc1eUbQxcM2AgmIEYNy7ZiSGPx9u5CUhEDC/RaBhRsIUMhnftx7C3hmHJcbcI7y1yHvLi8bhiYmJCQ56NRmOEz+e/QA3+RHLI3Ai4uEeMfOeRtDyOSpMMW61W77agSqWKqdXqHx6Px0EESTxw3E2UDj8ajdL4ATnmW3AeWNhjc3dekEwmKZvN1o3qmKL3+wsgZrfbqfHxcRIGmu3YN4Ce7TQMPPvW0NDwrKen5zlpKH8EGAC/f0ohwunqawAAAABJRU5ErkJggg==',\r\n'small/locations.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NUM4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUI4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxOTcyMTczODZCODExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxOTcyMTc0ODZCODExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PTdd4QAAAxZJREFUeNqElVtIk2EYx7+d3LRs5SQJL5xiOk2TJEGDSNaohMowVMjsAC66sEGOjqg3UldlQlCK2KQaTu1ijWgQNtiVI2UhOyAMh7VAanlYy81l2/q/8To+xvb5wI/xnv7f+5ze8eLxOMNldrudWVpa2imEYRgAiQPRaJSpra1lcnJyEvuF6YQWFhZEQ0ND6qmpqXPhcPgnn8//hWk5+Aqeg8+hUIiZmJjYXtBqtUrb29vflJWVRcRi8RMIujC9BhTgKHgFxsCD5LP85ImNjQ1BT0/PaH19vdtsNp+uqKgwY47citzwE3gMjoNzoFMkEnEL9vb2nlpcXMzv6+u7CTf/xwm2A+xnbfsOLhBB7JVzCiJ2l5qbm0cLCgpiwWCQWVlZUQkEAguWngITyKNbPWB6cnKyJa3g/Pw8z+l0Fra1tTnI2O125yHLDxFHEqvz5HvU5S17D5ePpRUMBAKZy8vLEbgZoFMHQIjebJ1mN591xA9EXC7/ARkwCRlIpVK7TCbLiMViVzEsAXfpLbdMDHhpBcvLy/9WVlZ+0ev1h8lYoVCsVVdXa5Hl6xgaaHK6WEdObm5uzqYVzM7OJpWvMxgMl71er5B2wzR+joCzoJWWDzFSzQ1IoJ4zy2q1+gOJ1/DwsJo1TWrnW9LWe2BWLpc7OQWLioqiAwMDt+F2l81mK8zKykrVTHWgkYjCZe7CJtbU1DRbVVU10tHRMTY3NyeUSCTsZeLqS3CH3HrbTvF4PLu1Wu0jdMCJ1dVVmd/vH0Fh81lZfU2r4Qa45fP5BGkFLRbLXpVK9Q4iGYhhp9FoPIisS5HlF1jOpZn2gkPgPj6kHBwcHEFHiVMK9vf3nyktLXXodDoNsu2uqakJoxZbkOlM8lwBH+lfekMbOqjB4XCUoKPqUgoWFxevI8j7koqVHL5IXdQkRWgP9pMA/04pqNFo3sKNiFKptI6PjzfOzMzkoh0ZzJFUGllbC8G1SCQyjQQa0RCJ4uYl/wWQMuju7r4CV1pdLlccZcPDM/YDS0EgA7sAScQ6XuxnJpPpI+KcOP9PgAEAQLc6rX2E4XgAAAAASUVORK5CYII=',\r\n'small/lock.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE1OjQzOjUyLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDg6MjQtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ4OjI0LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjU4MzI2MGU4LWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmFkZDIxYzNkLTg4NDctNGE5OS04MmVhLTM5ZWFkYjcxZjU4NjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDphZGQyMWMzZC04ODQ3LTRhOTktODJlYS0zOWVhZGI3MWY1ODY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTU6NDM6NTItMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxNWFhZmZjLTdjNTYtNDk0Ny05MTIyLTQ0MjU3YTI3MzAyZjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0ODoyNC0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnzHpYIAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAQpJREFUeNqslMFxwjAQRZ8ZCqCD+L4H6ADSQToIVJChAkMFKSFOBSYdmArw5d9JB3RgLqsZTSYoduR/k2b19CV9bdH3PVNqPqTIzFbAAugk3VK1Rcqhgxof3oAS2EuqRwPNrAQuwDGCdcAHsJN0+m3dLOG+Ak7AEngDngIMeH+0KAXcAF/AC/AsaecblNF1pI9sZhsHBYe1jz99bgkEUAt8A0g6PAIegDVwHpGUSlKRis053jF6oBXQ/oyNmVVD7zCGNe68+at+NuBIJXD1+CyygZJah16ix8lyGLSfxGGkzmOTB4wawzbKYFa3ufp3C2HOA3ru2px++Gpm66kabD3Gjes4uMH+R/cBALm0WdocheKLAAAAAElFTkSuQmCC',\r\n'small/log.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQpJREFUeNrMlMENglAMhpFw1w3kihdxA5xAmECYQJlANhAnECdAJ2AFTnIUJxAn0L9JSRpCyINg4kt++tL0fbSvBU0beU2GHLIW1gwmg2woLu5F2ApEYKTIXEIEJdAZqiAP4EpvBB4UYBvI5X0JrXm/p4fRjMZboo5SHZgdQ7bQAwogE7q0Hfh03Rv0gnzh8+kMlNY+vUcvqAlXVJAIn8n21AuIDI58HYHwuVx+KWN1BRiNBpXpCZ/J3Q17A7mjCbIrxQym7EuawSrAKfQWMCq/ksMsl6EApJIdwOacbS7LHwK8sX1Cq7r0wUAAYvpeVWdLH/tv8/9Ao2WQs54Muwu4HphYrv1qfQUYAFOlScpWjN20AAAAAElFTkSuQmCC',\r\n'small/lothistory.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0FFRkI1NjA4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0FFRkI1NUY4RkJCMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxMDk1Y2U1LTA0NjctNDI0Mi1hNDk4LTc4OGVlYTE0YTk1MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMERBMzAwNzdFRUQxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkc9OyIAAAM+SURBVHjafNRrSJNRGAfwublU2GoJK3KBugjToMtsMUJoEPlphky/daEGRjUqCQTFCLO21sWyQc6t0oIIt5Zzy5WXsDLQCX1YkJJdRoKJNtJkYZubW/8jz2Qu6YUfe9n2Pu85z/mfk9LV1cX5z6WALcCHGEzAK/jDflxYWOAoFApOZmbm0gMpBQUFyUW4cBiOgABmqEAqrKXPbjDNzc1N2mw2jlwuX3o4NalYHrTCKrgCQ3S/BkLwCzaCFjxQnZ6e3pY8mvhVCH30diVsgKfQDhZ4BJ1wEGrgGI/Ha2xubj4dDAb/GaEY7HABXPCaRlMNIxBhLaPRHYVBOJOWlrbHarUOikQin06ncyf20EKNPwkf4AE0wHEauZ/6xxblFi1UBxttVlZWdHx83OJ2uwulUukMm/JuKIJKKvQcrkMb9U5PbTDAN5rJb1CHQqEWrVY7lJ2dPdLU1FQR72EV9MN6kNM0zdSzevgIGpr2PXrxDbZgkUikr7e3t1KpVDbY7fbysbGxxYKl8AzKgYUyn7UCniQsGIsNj+7fwwv2koyMDKPX6y3Jycn5Eg6HV/f39+/k0sJMgoxGWkQvSLwE1OP49RIOcLncS36/X4Bi87m5ucO1tbWd8dhEKW8sayKYpe9ZdBrp+4mEgvPsOxSSYFG61Gr1lEajaREKhTGeWCyuw48PQUp/HoWtVEwHA1Ab32507YJ1yOG56elpfSwWmzWbzVVlZWV6FhsffrxJK8gWREUBZqt9H6ZW2OM2aGJ5xVSLPB5Ph0wmc7hcrgo25du0ID0U8B1wjUaZskIv2f8/w1tMWa9SqX44HI7NJpPpBLbhYrAFtDPOUy9bKZtskU7BV/BSS7bBGwr9Y9geCATC6OEdg8FgZgW5FNLLcJe9Fa7CO8roIYrPTyqkob3dQzsnH0X8Tqdzv8/nW7aXO+hAGKDPUQpvkEb/iQqcpZFa4WI0GjXy+XyhxWIpjR+DicdXJUVkmO4VtHP20n2A0tBHxbtxygiMRmMJdkpg6bTBIclJKsrCXUdHlJPaEKQW5NF+38SONjxbL5FIQokFUouLi5Mj0U6x2UcRqkk4N9mp46Ct9x2HA0cgECx7+K8AAwDnGhxWw/x4LQAAAABJRU5ErkJggg==',\r\n'small/mapping.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEBSURBVHjaYvz//z8DNQFAALHAGI2NjXCT6+vrGQlpxKUeIICYsCk+evQo2c4GCCCsBlpbWzOSayhAADGAwhAbPnLkyH9ccvgwQADhlSTHUIAAwhspjIyMJEcKQAAx4QsOKysrxmPHjmGEJTYxGAAIICZiwhg59kEYZBEu9QABxEhMwgYZAvI+PoNgACCAmIgxDOZ9YlINQADhjBSYq0BpEmYwjI0vUgACiAWXq5A1k5KTAAIIZ07BlXsIWQYQQIzEljagpAJSi88wEAAIIIIpH5RbQK4iNvcABBDRkQL3EjT34IoUgAAiOVJw5R4YAAggoiMF3VBccgABxEjtKgAgwADfKS5UGWV+HQAAAABJRU5ErkJggg==',\r\n'small/markclosed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTkwNUQ4QkI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QkE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDNFODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDNGODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NxLYkQAAAilJREFUeNqslT2IE0EYhmezm2QTjYWFiIoG1BCikCJoVK7yUM5GURAVlETUQq08m3QhjRCEgFdoJ6JY+NcEFAWtwzVaqNyCCEoQ0UILNT+eu/GZ8F0ut9wld5CBh8xkv3ln5nu/2TU6nY4aZQuoETcjl8stJ04HbYQp+D33Z7vdVsViUSWTyXnBeDw+TOwIXAcHvsGFuQeNRkNVq1WVzWZ7wVY0Gh0kNga34Sv8gTPwDm70chZYmDVrgNhhuAmXYDVsg/1wC7bA5GKTlhI8C9fgNLzyPTsAz+COjgsGg51hLl+EKzC+iJhu32EXrIG79Xo9tMDlVCp1jt9jEISI5G0GPkJ4iRO4Ot7zvHHTNGfQqDM2bdv+oQWfinvPJQUNEQ8NcR89r0HJRDi2yXjWcZyrWkDn4CU8XGkRN5tNVS6XVSKR6I7z+fxEQARtX+wqydHAZlmWqtVqEXYWky1bflN0aeyF43Ae9NK7xbw9sFnyvE8Hh8PhZKFQmCqVSif8ZfMXNsE9KdzPsBMmdLLhNVyGR/BPn0766zBiA8Jv/IKeFK+eXIMdssAv+CI7c2SRkCywVhvRarXec6dtv6AtE8qwHR6LSfqir5fdnIRP8AEOwX1yNpbJZLam0+kX/YKGlIpuT3w5ne7rV/r6b8XlB5VKpecy93pWv22qIjotR152Y4eKOlaxWNdkF7dP6ffhUQYHpZhX9jI1DEUOleu63SEG/TRG/Qn4L8AAqCGZMDJlqdwAAAAASUVORK5CYII=',\r\n'small/markfixed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAadJREFUeNrUU7tOAlEQnV1rkm1ITGgoF6u1kFYorcQ/kC9QvgCoLDVSaMdSGSuxUiu3EyoWClk7GoxGik1oDJVnklmzTlgexsabnMx9zD135sxcoj8eG+teyG3lnHQ6fQHkJh8TT5+ba5IdwvSAEXCE9fGvCXG5BnMKFIfPwwpboCqPrJcyLjVhSsAeyDq8h3TfkPYLppz+A6+XEoLIgvMTppvAPXCLi5/ROeYBzt8xvYK9xjo0F4kP8yh68WC9brQfInZh2kAzUUNFlgWcbqfLRwVJX48++8xNWUS+Ay5Zt1QqlZ3NZjToD2j8OmYXbhsjahnxPwEq2PPNpErKliWRkeu6ZNs2Nc4bJNUtSbRR5Tl1MlQlOewyDn3Z60Wp8EC0lMlkKAiCkchhAQfwH/3oQ2lQR17yY0FzpH5+J08tt0XT6ZTJuABhdB4n+45QdKgC23AIEwrE0XjycBt+5XkFNWOl9+SibgtfIm0LWT2JTLdNJaalHkxUYB+QnS36DIb+GfL5W7hYU99O67ucUGlWB3alsYta21VS1prtSzVXJvsf40uAAQAbSLkTAMga1QAAAABJRU5ErkJggg==',\r\n'small/marknotfixed.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDQ0E4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkwNUQ4QzI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmNjMDk5ODBmLWRiN2MtNGNiYi05ZWZkLWRmYTg3NDcxN2Y4YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMEUwOTc4NzdEQzUxMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ps1gnXMAAAJxSURBVHjarJVdaFJhGMffc45OcTjWRCop2EUXYniRfVxFdGW1rODQ7rqQQu+iQXSxi64G08H6MIK+sY8RCUHkKKRkFJGYLQiKQJhB1JAJitD8ntr/kWd0oEUpe+CHvpzz/t/3ed7/8x4pFosdF0IMAFl0GZIkiVKpJJrNZmdsMpkqksPh+In/L0CR3ulGsNVqCbvdLsxmc2eYTqf3kOB3DPaCb93usFwui2g0KpxOZ2fs9XqDMqfaL3qMarWq3bFBFusc3QhSXn3/K9ji36PAssZ7R8BLcI8OU/tAUZQ/BFdADZwDIfAQDGneOQSC4DAfHDliy6oYbKMkk0l7vV4XsiwLxWq1nsGzXWAr72QQTIInYCe4RgcI3oM4II9cBB/0ev1iKpWaCAaDNzGeh+hGHa/2hidR6lPsybeAHOsD78A4eMxZfAXXYegv+Xx+IBAIqJFIZKJWq0kkuBt85IJfBTPgBqiDRfAaTHPKx8BpMAuWKpXKWCgU8rrd7gK8WPD5fM/I2FSOTeABWAbD4CyY4xpOcklGwAFwiev9lDoFZt6Qy+VOXkBkMpnNJEgrnwePwGWwn9IBY4BWU8FBXkyweBjcQi/fLhaLMxaLZYfL5ZoLh8OnZC7+FRajeAVO8GGMcprLmlOf552OoEs+q6q6EI/HtzcaDT1SvkM7/IGH+7jQ2tgG6OJY+ouH+9HLo+jl+6hfC4KSx+N5ruMbxrjGhIV/NEUJ3F3tZViobbPZPq1rL8NGehJsc6f0FEbj7+TQKSs61GGQT26o2wsWRhaJREIUCoXOfZDNZoclv98/yyZu9/IJoBqSH2m+wWDo+yXAAPMw3kRKlHogAAAAAElFTkSuQmCC',\r\n'small/markvoided.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDczOTc4NzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYyRDk1NDg4RUFCMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcxZmNiMTcyLTNiYWItNDVjNi05ODFkLTE2OWVmNzc4ZDE5ZiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDVBMDdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pq3908gAAAJySURBVHjajJRNiFJhFIbv1SwzHIUwgihRaxiEAhvERUVGtShKc0qQnMVsDPqlYoQ2LoICKaUa6MecwJiosObGbASTosXsxo3QYkgCwyDH0oWK4+DP9H5wHET8uQceLveec9/vu/e83+GNRiPXJ06Cq8De9fw3eAFmq9XqSjQa5cxm80ZyUw+hveAe2AeWwAVQAE2wGRwAp+n5rFwuf9r5Mt+1Q1b0CMzR9S/XP060Wq27er3+j9frnbJarZVuQQcIAzeIcyKC5/npQqFwX6lUfkkkEg6tVrsmodwo/ReXWDHEZK1WuzYzM2MyGAwNn8/3BPcbO/wAfoI7IsWOsXfQlHPxeHyxWCzudDgcS6FQ6LxUo9EcZ6sBD1gVIcZ2sAAu1+v1uM1m4ywWSyWfz4/EYrGz7JNvgkVQFCG2HQjUMKEz4XK53qdSqVEJWSAhQkwGPoFv4GF3UqFQ/MDXlpkg458IwTegBK70So6Nja2bTKYSM/Y6aA0Re0CGPzyktsEEebBlQNEl4ARHBjWtXC5z6PY2CZ3N/X3qTtExdFJd30in06pkMqligs/BmR41B8FrMAWSw35wNps9pFarm0zwFdhBZm3HLvAR+EBskJBUKuXgRy4YDN622+3zTHAFPCNv8WSPBfJZaNjOVCoV5/f7JzOZzG6Px/OyPb7C5Mc56voymB4mhtHFCYJwNBKJPEY4dTpdpXPabKXBwKyhA79ETJupXC7nn5iYuIUh8Y4t0DlgV2lKs65+Bm/BPPjepaOmRW9guuwJBAIX3W73V5lM1nNirwEvNeQ6NaxGJ6TBThgYIXMLzWYzPD4+XmqLsfgvwAB2R8ap45DnpAAAAABJRU5ErkJggg==',\r\n'small/meeting.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARJJREFUeNqsVN0NgkAMBsMAt4G84gs6gTiBuAEj6ASEEdzADcAJvBF4gkcZgRFskyNpmvbIRZoQ7qf38fXrd8SREtkhK5StfhzGOQoJD5h3DyNZAU7hlbJlA+tGY5mskE3hoFVYWunALto4REBkBSzuWF4ooK/knjUBdetgXsJ40g7FTBtkVDlmHQD0gnbGASIwNuZFG8QBP/BaGGHSCZInofNfsoQfvmkaUo8Zx4JHxealrylcG8kaVtJaA2wY+KQ0i5r66QOsqanhaQXAltmpFrvs7NAqJb7d+Mp0XuKy3Cjqw6NirYKUWHhyLC85V5IbtIWzRqPk5JKG5o8rbEJ+DnsyPofc5YfCcg7M2TZ+AgwAadBRsznoNgYAAAAASUVORK5CYII=',\r\n'small/memberusers.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NjAyMTE5MjczODUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzM5Nzg3ODhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzM5Nzg3NzhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZGVmODg0MDktNWU0Ny00OGMwLTliZWQtNWMzMmFiYThjNWMzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MDIxMTkyNzM4NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uaRV8QAAAqVJREFUeNqslF1okmEUx9/Xj2k2aQUGlRdDpYbMCyHQi6IRlrDIktFVXkkb0SBiVti6CCTyRqqNKBZEUY2a0o1BoTPwLqRV0AdBYQxbBa2kcoloav8j5xXnfOumB37o8z7n/Dkfz3nEer0u/M8ljoyMSP9VYBL0gzvgyj981aIoThQKhX6j0TgdCoWmNBqNIPb29jYOwXk2TIAjLHpLTgxcqNVqVb/fP5tOp0edTud0OBy+LVqtVjJwghNgiB02cIQ+sNRBcDs4WiwWD6RSKaFarW50u92XEomET8EG+jbHb6AMNDIRdoMfzVqpVItY5Xw+36U0GAz07QvYD7SgBo6Bz+ChjCDZDyFltdlsrkej0TG73f7J5/MlpAirYBU4BE4BL1hoEbCAXRyZZK9Vq9XDsVhsPJlM7lMoFAvYNzrbxd2dBZfZYTWYAe+AkWtZBKNgHIxR9KVSaSoSiQhItdvr9c64XK55SjnAAqGWiCrgCbjOggfBTbAI7oFn4FylUhE8Ho/gcDjKJpPpRTAYPE4pH2bH9kXRvQZvWxrwiEux4joNDg6+slgsX0nwA3gvU3xqyk7Qw/u93LSX7YZarVZAtk+phuuAQkaQGrUZ3AcfwTbwk+2rkpC0cB97SHAenAQP+O41RhLouPh3wUVu3jVO9zRIKZXK35lMhpoi5nK59dlsdoAmhaIYBjs4Hem12MSd3d3yTUr7KgniHmrpHup0OhU6/j0QCExKo9dpTXCqqfYHhaM8g9HLxuNxwWazNQ/lakejSCP0vMNZnZu4lTaIbNmhnGAX//6SOV/ihq1YcoJ5Tm1Ph7M1YAC86eSoQh0EmbTO8nQEeXKkANaCGyBDvmjM8gLPzc397VWm13dLS5cp6gJ4TN9IrK+vT9Dr9U2HPwIMAMmq3eljTdOIAAAAAElFTkSuQmCC',\r\n'small/merge.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUeNpiYBgIoKmlKQDCxKhlIdLMfiidSEghIxGucwBS+6Fcw+vXrl/Ap56JCNfVY3EpTsBMwHUJQKoASUhBVFT04ZvXby6Q7GVoJJwHGYIm9QDq9Q+ketkBqvkBmmEPoHJkJ5kGIP4PxQ2E1DNRO80ODwP1kdj2FOUUaNK5D8TI+VgRmGQekOvCAqhhIAMOQMXyyXIhNJfMRyoUHiDl6USgKxcQZSDQIAVo/k2ACm0Aag6Eys1HEj8ANfgBIS8rIGlagFxkATWD2BOQcpICsS4MALkAV1GFpGYDvgiiCgAIMAAMj0aUTd7tKgAAAABJRU5ErkJggg==',\r\n'small/mixture.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFDQTQyNTM4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFDQTQyNTI4RkJEMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhmZTRkMzNmLTRjYTQtNGU0OS04MGJhLTk3NjI0ZDY0NDNmNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Mzc5ODJENjdGNDMxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnZx3D4AAAG/SURBVHjatJQ/S8NAGMZz+deYonRQcBAsuJRIoSCKg64Obh0UKTjpUnDyG3QMLi5VcBK/g6tbqSAtnbqog4ggKFhBatKYxOfqG4mhpK3VF35c7nI89753zx3zfV/4y5BrtdoK2g+g0ZgXwSUcmudGxrtjHiKVSr2ydDp9g4E5cAk6JMxIXOKLUp+L/CiHMSZYluW7ruuj1fL5/IWs6/oy/plgAmwDi+aLQAEqtVIU27Yl0zSlTCYj1uv1pWq1uslXfwa74Aycgq1Q6TbRM5CZkMvlhGw2K6DiZKVS6Yj0j5dyAmaHPQSUGrRqUFYQGm38SCEKfxz/LsiGFdC0L/tKkuQJ5LFwcJOOA4NOOViERRZkJMIajYaIA+m0Wq2kKIpeVLANVsH5INklEgmhVCpx+1jFYnEffVuO2YYr8ATW+4lydyC7bua9BIPrdQCuwQyZezFG9/tKyjGTjsAbmA7t50i2mSTBQ6D/VtCPZM1foZ0BdBTS8uWIB3n/luzDv8eIfnGnKMoDryQs2KQD4A/EApgn0bgnnTmO0y4UCk08XXvw5SMzDCM8YQ0cg3vwPuDN4Q/slKqqL+VyeeNTgAEApJORZujlk1EAAAAASUVORK5CYII=',\r\n'small/modifiedantibody.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc9JREFUeNqslLFSwkAQQC/0zGCbNNglNtIY7AwG+8ReSA9+ADZWgh8AthD8AHqBwZomNJJYoTMkNQMfcO6eSSaGKJkxO7Ozd8nty+7tZglJIZTSIqhGshKA9UFXWcFK2+2WrtdrWFIjC+Cs2+vS1l2L/jtKACgYnVyWqXQipYoyd4B5P3wekt1uxza9px6a+l8OXPSuwBRAA3sBIKV6VQ2BKOOXMREEYQDLT9BX0A3HcYsQiBUEa7iuSzzPI2hdzyWO47A12qiIokjkM5nwAk8kUSI8z+MH8BVCPxCI0czAsVQ36mE0qqqS6XSamFb8XfuhTTRN28CykoNw2QK+vDAHJsnn899Olyoe2oPVbmosyhgMozvG1FlR4lB0wDTiUHTGVDHlGKziM/bapABq2bZN9WudTiYTij3YvG1Sc2gync/nrI1GoxG2kOVf2X6Vo9WGe7TK52WWfqPRCO9V4AXSeeyw/fJtiY+O4pEl9WEhqCw6RlsGqx/s/TOlNI2t2I794wFGFhQrhENLgRTTAE+DCKOF0TWdFSMAO+9OIjCpMFZQBF/6/jxUcFDgv42DAs/gPg2QolMAShoY+FH/zOrgdPkNlHDWyGzo/iVfAgwAu/ZNbJxtCZcAAAAASUVORK5CYII=',\r\n'small/modifiedprotein.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNq8VL1SwkAQXoiFFmS0YMYZGspgRSOtP3mB8ABBfAIfwfEJhAJbkTwAsbRghhoKUwkdNMzoSMGQF3DX2Qt7l1iEwp3ZS7KX++67b/fWAmG1s1q7XC7D+nv9CXvagfFdRX9E4FsVmH3Mwr0AEeQYHxfo9Bxy+Covw6I6Kj4W6JdiLkJ247yAFg2oWYTafTHgIc+dYuw1r56WemHQIwbtoL+hOxjPxbJgZlkk515MkZYb9HcjFgm9yboFcwdOzoKTA43zBkymE1p8g942AGnjZxE7KWaw9hQYme/7wN8JmOd56lWeoo9J3GQB3smFtm1rsVKpBO61C6x1VR43KRtxXPqprr5bfku9JuXU9JqpTdDGyC5KAbJOoLRzHAdWq5X2A0sAUha0F62wmV01S6cw3N0813WhUqnAaDSSeyyRXT8FaGTwd+F8PqcMJzFiHMcxDENZKTt2JqCmCQ2DYKAxoYHYEaiwzl93WdNku91qx0V7oKH31AOzVLIYSnakxzIIAvkfLQqnk6mZpG6qfSG7uiwVpYnULouJLBWzH25k36OWxddP9sIooz8u4T/sR4ABAJKFlVhez7PTAAAAAElFTkSuQmCC',\r\n'small/molecularlist.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARtJREFUeNrMVMsNgkAQRUMBdABXPEEFSgXSgVKBUoFagVoBUAIViBWIF7muHVCCb5IhIRtkF4iJm7zsZGd4+5jPGsa/r5kqwF24IbYdUFavKlbFzzUuTYAcCJlcXyE+WGG7STGkzIfvDHsv+Qr4ApVCCqKLfKAGYr6IVBbAif1Bl0Lzm3R8VILoCvPQOqYL0r5fNvucID2CdAvTgn3RqbKpEbPm/C5Z4R3k6ShCkDjYCBGTJbwPV8gtsgEyyiefRbDF2D60ACHlVIxubM4TVdmGskR39FRVFiDz+HcffJxT9UeNHuexpmmgaaGpmVIUGjOb2qSlOJryOJTcMmLI89Wl0IG6JkdPwGvyKC1bh5DUZJpi3u10/Gx9BBgAHz5kD0WpcgIAAAAASUVORK5CYII=',\r\n'small/money.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUhJREFUeNrMVNERwUAUDKOA60B++ToVoALpABWgAjpABaECVEAH8sWndCAdsM9sZp5I5IwZIzM7l+Te7b19b+8879+fSllAo9m4YZgAK2AOBEDrfDrHefFVx42nwAUwQAL4RYE1BzLJZA1sSbgBom8J+0AbsCIdcpOi4GpJ/TqUJ+gwQ4v//seEWDSnvDWbIA3sMuMj5gPn1iN4BlwBWzA/kO5TQSmZz2CrpQOhJsD7GLi4SBaLLCAxSjfAMOLcKK0f5hdiIcm2rMsP46pvwzEByTATuwR6NP1rhpSZ6FPATGWhyN4DRi05sPuFkg27+FRTGnlH4rHaLFYKnI3t09jy1Ensufow5mnwVBYHelGId/jequyDrKI820idwjw7ZU8RvRq8vb7YmDBTz/QysKoMMj9Bxiun+5DERp3ltCQxnRD95Ma+CzAAOBxvUVsPplgAAAAASUVORK5CYII=',\r\n'small/more.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOTRDOTYwRjczOEYxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDOTQ3RENDRThGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDOTQ3RENDRDhGQzUxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzdjY2UwYmYtYTM3OC00OTVmLWI0NzktYjYzOThkN2FjZGI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5NEM5NjBGNzM4RjExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LLm41wAAAodJREFUeNqc1G1o0kEcB/DTvxMztkqxoGVlEpVoQSHECDMMgl4VvQksog2CBhUGUdgIe9GoZFRWFD1ILXwxQSFjtIRiMihMCKG96EkHlRSE4QLNh7S+N36ry2ZMDz4vDu++/zvvdyczmUysQTPDAdgOS0EOX+Ax+OFJoVBgwWCQWa3W35MUMwTNg5OwGV7DWXgPVVgEG+EMpOCUSqVKi5MlnU4n9lfDCBThENyGFzR5Al7CQ4jAmlqtNpDL5VIOh+ONQqH4J3AFDb4DR+Era9wKfMsIeRuPx6/k8/lxhE6tVC5s/SYE4RybfRs2m81HQqHQ9Vgs1ikG7oa50NdEGCuVSszr9d43Go2jHo+nr1gsTgVKsA/OQ62ZwGq1ytrb25nL5epPJpO2aDTayQN3gQoesRYaLx2bzZZG6aSGhoa28sD98AHywrhVsFboLwGr0NdAF//v+SqVSiXTarVjkiStl9PECWFwFx3OPdgGndTnJdQLc2AQrkG/sP2P/MNy2m5RCNxAJfOOVrUMOuAp2GE+GKjEeF9G88r8PHjgJ1goBA7SivkB3YLnVMjL4TSNv0E35gT8pHkL4JuCDkO80JPQXfffu+v6l8ifKydJ5kql8oqv8CptY2Urp4y7zDKZjDKRSGxCPY7xwDTd14OtBKrVaub3+3eUy+VST0/Ps+mbchF2wrpmVxcOhzsCgYDH6XReMBgMP2TCe3iYVrkFPs8mUCaTSdlsNmixWCYjkUg3/4Bc+N1HpzlaV8SN2mLU3rBGo2lzu929PGymB/Y48AINQBTuwjh8nz5MukX8uu7BYzDi8/mO2e328v9e7MvwgLY/ABUK5C+2GtroIPfyGtXr9X9N/iXAAOlhxif7ttXtAAAAAElFTkSuQmCC',\r\n'small/move.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC',\r\n'small/my.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTUyMEI3ODg4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTUyMEI3ODc4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmEwNjg3MmJhLTNhY2YtNDMyOS1hMmUyLTVkYTBhZjI1NTFjZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMjA5QjQxNzc2QkQxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plu9u0cAAANSSURBVHjarJRdSJNRGMfffTmdWEsjhrUlUbqkwI/pJEXWhZCXwyFJ1l2bNEZoEzZrrC6WiaAwYrE0CLxI3NxCgyLS3LxZuMSkzPxAJoKgbq6UOV26/mdsMmWmRC/82N7znvN/nvM8/3No4XCY+p8P86APoVCIcrlc+Ww2O8RkMr9GAyeDUuAAv3d2diihUEilpaX9XXBycjK9tbVVPTc3l7+6unrS5/N10en0dXy6Bs6BKWAMBAKuvr4+SiwW766lJxKsr69/PjU1xRgcHKzEZDmNRgtwOBwmsAERaAEvwWUE2rM2oWBDQ8OLjY2N842NjXVer1eOLQsxLABSoAIKYAGeI9WwoqLiLZ/Pd5tMJs3MzMw8i8VqxjADXAQ68BQMR4qanJw4Q2wvWyqV3sHvcfKOYi8bjcZ7IpHIhmy7MPQM1IFbMTEGg0GNjY2xhoeHS1D3E2SMFrNNbW1tx+zsrITH47XY7fZOMob3MzKZrDMYDLahVp+jWy6NCm+SOZubm3dRS2Vubu5gd3d3XSRDRMgYHx/P53K5LpVK1RfLGlsWo4afIPYer15AAhGPFEannN3e3r6h0WiuLywspFut1qvMkZERkVKp1MNLyz09PTfjPVVcXBywWCzp+0rMAn6yY2T3SK/XN1dVVY1mZmbq5XK5ib64uMj3+/08eC51aGiIHb+yurr6Q1FRERdb1pJegQ4wCibAKWQXKikpscP8lEQi+V5eXu6jl5WVvent7VWhId+0Wq2zpqbGPDAwwCOCDofjAuqYmpSUxI/Wj7SUfEsBK4AzPT1dGW1qltPpzNhtitvtTlEoFDZsg3S4o729/R2C2GHqx+vr6444A9+P1lGDo3cJnX6Qk5PDxg6ppqYm067g2toaZTAYKuG7K2q12mCz2XQQmcfxMvf391PoZEyQ+NEKHiL4F51Ox4BnC1HDH0jkJ0UE9wNRbl5e3iuPx3MMWVNZWVkUbBGPDBjIONyxZ23CowehbESjCQSCXzB1oikLIIf8QcMOP8uoy9bS0hJFric0JNEUGggf+T4sKCiYwH0YNJvNt1dWVlyo1VacCDd6ObxGfSNB90Q66MaGZU6j009g9BTcNgHMiwkSo38EbQgUhrEjl+yhgv/6/BFgALyijRYrrwspAAAAAElFTkSuQmCC',\r\n'small/mymolecules.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg4QUZDOTk4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg4QUZDOTg4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwRjFBODlEODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwRjFBODlFODZCRTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+De0EogAAArVJREFUeNqslV9I2lEUx+9Pi5qG+DCiBY4erIY4hImwEVIYEcnENmGJNAfbw1oie7BgNnprZLBZi0CIKWNzkxk0ldhLGbEnYSOUiWvkg4OxaCwXI7XIP/teZ01j5QZe+IC/cy/nnvM951yZXC5HKrlYpMKr4g6ryh2wWCwkFAqRmpqao1vN+/v7FzUazbpSqQzU1tb+tlINU6kUGR4e7sVaUKlUbr/fL6N2ilarJfX19aSpqakYKXgLxvl8vn9kZER3cD6f8tjYmMLpdBp0Ot1D8HJoaMi6uLjYTPdoZBwO5ygmMAnMRqPxzvz8vD4SiTCHKUej0Rs2m21CrVav0G+Px9NqtVoVXV1d68coEQMN9Ecmk2kBqZKiMAwT8/l8F7LZLD1A4vH4WYlEEjtB2p/gEc6/npubM87Ozo6LRKLcYYQDAwOP9Xr9856eHgmbzT61urqqNplMr45xdg48APd2d3dXpqenox0dHT9Kqtze3h5fWlrSTk1NKeRyeUIoFKZwicflcrVBp49FzqhONvCORgiyAoGg5Dbmb5MSi8WqOjs733C53FYej9e2tbX1hcXKq3MLPAHnQTiZTBK3201kMtnJjY12SDscjitIaXNjY8MLGRQwXweTYJQ6++9JgQwJu91+GX12Op1OW2BqA1Srp8XnDhv6X0avsbHxGyr5Hl3QT2sHrIWCtNB9RE6CwWBdIBBowNSUd7i3t8dkaB8RcgnwgRhcBR/AAqK7azabnd3d3Q6DwXB7Z2fnZIe0tyD4KLTsxecz8L3g9Ca9ACNrmZmZmfB6vf3Ly8vXwuGwqOzjgAA/FaI6A74WzJ/BC+ADHPokHGRb1iHSJmiPXJGzPz3HMJbBwcH7iUQi19fX5xaLxRGm3Iu9trZGtre38wU4ZtUhC65UKt2srq4mTKX/An4JMACs2R5AsSgHKQAAAABJRU5ErkJggg==',\r\n'small/mypackages.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBgFlAJGEKGppZkApOJJ1PsBiBuvX7t+AVmQCUqDDDOAYmxAAYqRAUjteaBjGrC5cD2QOgjE+UAsAMQTsRjqD8QPgPgikpg+EAcAMciVgUDXPmCBSlyEGrQQ6pV8KBsZbARie6ghAkjiB5B8ADcQGYBsewC0rQFdAuo9e6iBH6DCDlBDwYCFzMhcCLUYZiADJQZegIanP5KXyTcQGBSFWIJiP3qyoRqgqYH81DRwAxAnYEljJAMWaEBfAAasIpAJyjHzQekQyHfAol4eh7gAStbDkXhJBYXoBcXgBAABBgArODfT13L+AAAAAABJRU5ErkJggg==',\r\n'small/myreagents.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBJREFUeNqsVEtOwzAQTQN7usmasCyrcALCDcINkhO0nCD0BM0NUk5AewJyBLOhS8KaSoQTwBvpWRpZzqdSRxo5sWeen9+MfRFMsMXtIo2iKIcHx+9jOxQ7GwGaY3iDy9jAE34/Hj4OxpdzOULuFW6QXKhNnjl/E5xiwg7+R5bu2qfI4MsLBzDleA3YdZ61Xh2HAEWj1McQFsO7kwDJrJKiaFB81wI2uSjUxgK8w1fwH8zrKj+Mtg0SMgwbR6OEY8EjisuGpYD6WM4IlhOsoHax0lEYLjUA4u3cnVu0EIuSXDNhx90tuxXmpO/W7D2rb8VTlL6iyE5bRV8Eb6hVpQA6niRQMuRuF4Rk8qLmfhGUqEpb2yspZK0ly3RK2yQ989fO/96NtYBzT1O7dgX/GruyIXdZOk1tPK9OxhdH2717DQVwK7SV4AbfGwZbk/+WxbIPR01Nd74+TPjuyeKagttbU1J4o+5vytgnG+u7KTGTM6Vpyw5wj2p6XqHz278AAwDPkJfDoDPfpwAAAABJRU5ErkJggg==',\r\n'small/myrecents.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeZJREFUeNq0VD1PwkAYvhoZMcjKApPgVEnAtQYcYNE/YAszg7AihjAxqgmuqIizjHQgYEgwoQmtizQBQhNZiST8gPpec2gpLR9GL3ny9t67e/q8H3cI/fGgVm3w7fuuwMQADoACuOm+d6+t9m+tILsDwwAOgAT/PA7Igj+5sXQ45AZ8AhwGP4P9v1HoBkigbKJ3wrxBwt88ZLODRsVrE86UAEHMsISLVLE6t71CYQrwDKQc2BcAR1R71mobVVWTgiCcdOUu49x1KjabzVHlqxLP8w+znOIqk9zGLWUAkaPT6Ygcx6mgRg0fhzWLUbgtwLIa0+cQIJL+NB+9fq8ePAzOkcy+MfL5PCY9NWkpeqEosJEpFovMdDq1/GHpsYREUczqCqbdGMC5WZWZSqWystFbry0ap0bnuidXcnnbuFwu5N3zLhAKbQEb2qBSMYattY3dbtcmLMtq3+mL9AJhIBhApMr6oRibHxM2QqFQdse+g2q1GpJl2TTkaCQqURQ1MbhpQvpDCJsa4/G4EYlGLAvDnrHI4/GkDFcQ529CQp9vbJzs4XBYz+VydFtofy/i8BOJBBp9jJTyU1kiamgSJm70IyCUlt2UWH/Q5wb9gTb3+/1K5jLz1mw2Z4+rm1jF7CX6l/ElwABd/9TPhANNWQAAAABJRU5ErkJggg==',\r\n'small/needmoredetails.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzk0N0RDRDI4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qzk0N0RDRDE4RkM1MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjcyQTQzMDM2ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyQTQzMDM3ODZCOTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+X63NJwAAAoJJREFUeNqclV9oUlEcx8+9ep1RtlVIK8HCoECEoNIoIhz0B0LLokjYoDfbyyjfehlCEDGStloZ+dar9VBBD5FPhTEiyxVkGClhI2rLJYFJN13fn/zuOMi2XD/4gOfce7739zu/7zkqbrdbLBL7wTkQAjNABWvBXTAGJmq1mkilUsLr9c4vMi8gtAEMg83gMS/+ARTQA3bz8w/gkqZp0/JidYGs7oP3nNk18Ay8BW/AU3AFnAJfwMNyueyVBRSp5F3gNhgCz0UH0Ww2DzQajZFkMjng9/vzcoYr+MsXOhWjMJlM6WAweDESiYwWi8UuWfAsmARPxDKiXq+LcDj8wOVyfU4kEmcMwVWgD1wXywyUK2w2m4hGo+Po9rFSqaSR4BHwCxTFf4Su68Lj8UxaLBYll8ttJ8GDINf2nh/4pLGP54xwcyIKle1wOMiLH5Gli3zoYKsYcQKcB128t4K9qIPLgLp5iyoGLqvVeoPLf43fK42mzEmCveArb0M3WE37z3Pr2BH07AW6vCWbzbb2EgbXW5232+2H+OsTLJjjhRnwCHwCvwGdiDvgG5c/ZDabe9Pp9EAmk9lUKBS2Op3OPBmb2k2i/R32YYzNr8r2oebEYjEfZTiFuZN8rH7+Q+w4GOVzLfism5DpGpQs8vm8SeWb5BWIdJDdYNv4HnjXMrSqikqlctRIexwcBjuXEKN317fN9fDBMI5ityE4y1fSTbLCIoJzbBU59vI1N/8O7aExoJPynY/gDF9h7bEN7JHGZKGNlBw3pyALChZ5CaLgNJdJBv/DpWncQCOmuGytWq2KUCg0rCzxF9DHFyllUOPOKmzwfWCHZJvpQCBwNR6Pj/wVYABTaL+YYe0jZQAAAABJRU5ErkJggg==',\r\n'small/new.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC0klEQVR42mL8//8/AzUBQAAxMVAZAAQQC4g4cOAA96dPn0oFBQWb3rx5s05ISCji69evnmxsbFd5eXnv/vv37y/IJ0xMTAwgGoQZGRnBBsB8COJbWloyAAQQ2ECgxq9///41ePXq1aGfP39qvX37dvPv378VRUREbIEGiwE1saNrBoKfIHEuLq4HID5MDiCAwAYCNXOwsLAc/v79e5K0tLTs+/fvZwEtefXx48dFz58/d0HWgBFmQFfr6uoyA+l/ID5AAIEN/PPnjyDQZVHMzMzvgQZ/BdK3v3z5kiksLOzr7Oy8HahYGmjgZ3TDWFlZLbZt2+b++fNnNwEBgR0gMYAAAhvIycn5/MePH7OAEjWPgQDoop/s7OzHgVI/rl275gn1LieQ+g5iA8NUCCi/WV1d/QTQAe5AC7/BLAEIIJiXuYEGhkhKSqoCw/EsMHK8gYa3Al2u9+vXLxAWBnkJ5m2ggSxAzA9kLkHyOihg/wMEEDjZcHBw/AAaqgf06i+goTofPnxYAgo3oCXxoOAAsv8hxyxSxMBjHWYZQACBXQg0iBMYEWLAMFORkpLSBPJtoDZiTatAzf+A8ixAQzuQDAebCBBALDABoCEQG1hYDIEBLI4v8YLUA738BcaGuh7sZYAAYkGyFWToZ2BSaQUmckUgnwMY0+VAdV+B+AvMi0CDeIAUNzBZrVFRUYEncqA42IUAAcSCnGBBCRWYFMSBsX4LyGYEeqsEiH8jp0GoZlagT94DuTboYQoQQCxovvkJVPwDGBEcQEOYgRGlD1T4DmoZB5raR8gGwQBAAMENBBoEwqLAfDyZn5//MVQxF4Gw5AJaDrKMC+YLgAACGwjMx98lJCSWXQSCW7duIQc0PHyRxWCaQYaBIpObm3sXzBKAAIJlvb9AA6OBsZsFNFwQ2RvIBQI2g4Hh/QBkKEwdQAAxUruABQggqhewAAFEdQMBAgwACF1tPAAsFuUAAAAASUVORK5CYII=',\r\n'small/newmolecules.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNrUU7FxAjEQfGRy7OBj5BAnxhXYdAAdmAqeDjAVYCrA7gBXwDvyEAGJCRGxCegA9jwrRvPo58+hb2ZHmjvdau9OShKFte5aT4nSrhRk11i+0jRd7H/2ruq8UVw64DrUKDQKdRnQA6ymdKNQt9p8b3KsE41Ko1A3ousNaFeprDGxDcjBBveWyKGugzMWq8P6QpUHUQ7IkHbcSyXOE06BLvAKfEgCgisqtYw7+PqBz/Jy34aO5NSCEqc8IIFDkDSmAqmg5y8Kcrqe7LfkQt/OpCTasZQZYuKfAzNRGiO7ICyQvgNNGYooDmLeztVovtqRisriy7Jpm5LnkoRlRMyxvxdWj/hEWR5cIInPfELevwbu/0LoqHTAxy1EGXyius+pZ9qf0iTpFngEHqBM/vIt8AksSRbtcWzKc25HQYnFHo/ZhpvKKbNnmpdg/QD/l50EGAB3roumMiDUfQAAAABJRU5ErkJggg==',\r\n'small/newproducts.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REI5MzNCMUI4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REI5MzNCMUE4RkJFMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjc1ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjc2ODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+N2KS3AAAAihJREFUeNqc1T9oE1EcB/BLrxcSbEhPCa0Fo0ZUiN3alNKhQym0CAoOKgQUBAUtBSUOBnEwoFk6tbjYQpulBG4I7dKlDUWDk/HvUKpTNOigECxoLsaL5/fB98JxXDDNwQfu3r33e+/93u8STzQalXjFQQNDavOqVquSpmlSLBZrtnXZ3l+BeRiGm9AvdXBZAQfhDMzAS7gMe50GfATP4YitfRX0TgMuwXX4wjYT7sAhPp9jKq6Bp52AnyAHr2AbRiAFCpyCW/ACzsLU/wJ22+6fwjuutMi2w/CNpy8mkvcTcMPl/U84yPsB+N3uKbea7C4U+CxWmYDeTgNOgApzfF6DHbjEcaMw5IzR7QgyDtPwHY67pEGU1xgcg0Wm4CKUWq1QlMtXCMNV+OF4b7B0AvCMh9jTasunIQRPuL2gSxqsOqyzrLoURfnjFvAky2aFz29hEw64BKxzByJdgXK5rDoDCveYk2W273FLXkdAsZqjLPYFn8+3mkwm75dKJcUe8ARXojkGe/kZ2i+dp7wO72VZXqtUKrvpdPphrVZrBhQD/7r8Drp9t2LiLSs1jUZDSiQSD/L5/FAqlTpvBfzIzpMuq3FOIib+0Oyg61I8Hq9nMpnZbDZ7u1AohOVQKCQ6fYbH8Iv5E5/ZBRbva5ZJH8yyr6i7XtM0g5FIJKiqql4sFn25XO6Gx/YXMMgBfpbEGx7CKFfqZdCy2K2VEubO9Pv9pmEYyj8BBgD+/pOBndj9rQAAAABJRU5ErkJggg==',\r\n'small/next.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0MzU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0MzQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmY4MWM3NzkxLThkNWYtNDc0NS04YzZiLTBhYTdlNjIyYWZkYSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwRDdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp49gQwAAAIISURBVHjazJQ/aFpRFMavPp+o5BEIJYVSqRDEfxRKQBx1CaUUrUKFdrLdamimDCalxJi8dutihi7t4Fi7FKFDi3SoQ0EUCh1EAhnaQCjVpX9Eeb5nvpsem6dJFYNDLvxQOfd+793vO0dDr9dj01xGNuU1dUFDIpEYVQ+AR+AZ+Dhc7HQ6LJ1OM7fbfSzocDhGCd4AL0Ed7IMtsNsvtlotVigUWCAQ+HfAZLPZRgl2QRXEwSp4Bd7RGzeOPDMaJ/KwQZ9t8ATcAhJ4Dx4CwWKxDBwwARFcB3Nglg7MAL5zAczr9n8joUWQEQThbrVafepyud6azea/Hnq93iJtLoFfQKHfGsE9K56aqMEQaTab6x6P53symdyMRqOfueABpfl10hbhKcuyLNZqtQf5fP620+n8ZCKf1LP0XLfbZX6/XwmFQjuVSuVKqVRK8lDc5JV+CeQtb4HL/HanCVqtVpZKpeLBYLCiKMqFXC7n5Vd+jFoE/CYhgfbzITfT9yXwc0jvmqZpsqqqEq69HYvFiqIoHqUsg9fgEgWikQUqJb5BqfcFL4I1EGy32y+y2ezzcDjc07cNo0mo/8eqZZ3HK+A++ECt9sNut5/ow7HzDu6Am9TgfPi/9IvwblCQz+OYxa+YAffAG32Bn4WPg08vl8vjBK+CP2BvuIBAmM/nY5IkHQue+3/sQwEGALSpmOow7jwzAAAAAElFTkSuQmCC',\r\n'small/nosequence.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa1JREFUeNrMVDFSwzAQNAk9pkhvOkKlH+C8wKGDiuQF4B+EFyR0dE4HVE5eEP8gpiEloYMhM5iSCvaYFXPRyIGCAs3sWNbd7Z1WJwXBH4+tTcb2QTvGJ1ZLS6BY3C+WdTHNGqJeq9XKMe2S5J2mQ+AKtgi4W72sKje24RCFgBBlQIpK9oAU8wmQYH6E7y4gRHP4djcSkigCxsCZY4tAMMfXMIkgx5rxEso2xRno0FmqHYoNBCWrkmQz7iKwpN5DgdMDPhcIHvNfyGdAX8hZsRAWwFT5rcU1VfAxFvs2AQR/gvDPmF6z8n3gBj4nsJXWDz5voi/WbvWWY2Z2x6nVj6dtPD6Fbi1LKFt69DjHJKoU8dpgT4a+U97xEFoyeyClp2dD3ymXzo3Q2zEk/PJx24Rx34m2VaD0VMRgaZeeqlJOcQL7OdtGGt7KkGj9G9ShYjMPmbEiUalaRfxGvDW56g5JfOnTMCVZyJvQURoax882fcbql3WviwFegYFay1zd5FYBH2L78flicMZWkK2UqKCgvoaa9VjZ4NfvIV+ShDJE6vCmouOmN/F/j08BBgCFXrBIXlgzPAAAAABJRU5ErkJggg==',\r\n'small/notebook.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I3OEU0Mzk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I3OEU0Mzg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmViMjFkN2Q3LTc0YzgtNGUwYy05ZWYwLTUzODU1OTYxNTY2ZSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3N0NFNTRERjdGNEQxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptz5sIAAAAFdSURBVHjarJS9SsRAFIUnJmsw2AlpAhJ/QJEtJDDY+xCxsrXRXgRBLC208wnsYuUjWAfyAMpCLGKRxcVCA9lNNp4JG7gMriTrHPjIzd+ZM5mb0aqqYkJhGO75vv9kWdYYpyVrLz3Lsq8gCI4457FBbkzAEByAJdZNOVhl0osf4BlMWXdVTUETboFzoDUXyrLMcPjWdZ0OLAZcaRLJog++gAswrueQ58zzvHvAUXNcotzMi0oTboMrsCxOiqJgtm2PUL6J2jRN+t5wniFN+A4ehFc9kmGwNE2noK4llW0Siu+y0QwiEkVRdIxyH3VP6oadNoZiTut0UbAYfRz6XZZbnvJjx6b+03ATnEmpFzd0HGfguu71BFJimCTJbhzHdz1I1ZQH4Ha2ikoM18ChWFxVhoy2jArD0T92m18NXXCqrG2gV3C5YEK9+Vw0jfjtTsAn3TBbSJvt2HV3/AgwADY2XrGVgBZhAAAAAElFTkSuQmCC',\r\n'small/olignonucleotide.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMdJREFUeNpiYBhSQFNLM4BSM5jQ+OspNZARzYX/gZQjEMcD8cHr164voNSFH4B4PhArQA2lzIVILu0HUh+BGOxCoEsfkOtCGAAZVg/E54H4PjVjPQGI71PsZSQD9wMpkHcPAvEFoNcvEDKQhYD8RCDOB2IDIBYAYkVqeX0+CFPsZbT0eQGarEDps4FcL8NAIDRtgrxtT7ELkVwKcpk8lAuyIBDo2g/EpENcAKQZVoAIQCOLaml0PxA7EJtTiAEHoRE1xABAgAEA78kxVfmnVpkAAAAASUVORK5CYII=',\r\n'small/ongoingprojects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE5MDk5Njg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE5MDk5Njc4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRiNzc2MzIyLWE2NzgtNDFmMy1iZjQ2LWI5M2Q0ZTUyNjdjOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjRBOUUwOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkf5cvYAAAHESURBVHja7NRBKENxHAfw92wxo1nWxGFrUWuN1YjJaWs5SDnJgWJTK+U0aSWl3dwcKHLi4OCyOTnolTS5IFlOakYpmpRRJvN48/3Vb8M7OTgo/vXpv73/+3//b///700sFArCT7Yy4YfbHwwUA4EA9f3QDZfwymMKtMEU3EI7vMBBcXI+nxei0ajgcDhKgdpEIkG9CzZhD7o4jIKHYIDHTVAOFzAJT2hCOBz+8oRavV5PfQ7MsAhV8Mzjp+CDbZjna9Qvwzg88vxS05jNlCN0QAvdAKMQZxuwDvuf5mzBMC2m0Wiuk8mkTxTFZrvdnsL3UqAHajhw5xt73wd3CDJlMplxhLbGYjGP0Wg8Lwb6oY5v3gUde+P9VLdeOkhZlhWr1Xocj8enDAbDQygUWhGdTqdEpw0VPPmKtoIn0iJjkFIFrvK+v+JgmoLBoJROpxstFktKi4udXAr3XJfFJ5XBDiMwowqkxZcURTl0uVwD2WzWH4lE5vD5TLTZbLMYHOQa/Fzo9LSVUAs9cMO/hLZiDaZzudyRJEmC2+3+KBuv17uAvp7D1PtFtdgAE3xg1KqBiveEClun0319U/7/vn5f4LsAAwDQ04UBKGtvIgAAAABJRU5ErkJggg==',\r\n'small/onhold.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEE4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQwNmY1NzE3LTViZjYtNDc1MC04Yjk4LWQxYTRhZmNjNjY2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNTc2RDU5QzdEQzExMUU2QUVCNjhFRDUwQzQyRUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgImVfsAAAKpSURBVHjapNRbaNJRHAfw8/dCzpwUTShEyaCHbJFBsqIgSe2hFvSiMCrqoQeRKKIIN5DoQjcwK7pAQSOiCzKkLHIRWRA5gnLRQ0FS+dJlVCrespza94yfcTKtwQ582P7nv/9v5/zO7/wks9nM2gwn7IBeKEMVpsNzOAVXSqUSC4VCzGq1/v5I0SKQHg7DfHgEpyEHNeiEJbANNoNfpVI9FT+W63Q68XkV3IQn4IW78A4+wEd4DyNwGVS1Wu1kNpst2e32hEKh+CsgX/cN2Ann4Qf790golcr78Xj8TKFQyDocjpd8UkYv1XARfBBhkxzVavWVz+dzx2KxA9AtBtwOb+EaPUs09wC2CDH4Lu7QoXSWy2XmcrlGnU7nBb/ff4g/84AzYAMcET7cBFtp63thNfDcXIJbMJOCsmKxyLxe79mxsbF50Wi0m2dyN5+nchBLZhCG6FRXUk4zlJpEIyBflV6vz1ksljhKaK2MSuAF1IWA402/10mV5qbBTzGfBoPhHg5pOQ84G960yLkk/Kz/74CQS776jsahVNjUx8QOZLSNWVONlkqllLyuecDHsLTpvULIEV+9nEqsLsxJ4gfhcHhhpVJJ8T/aD3OpFBqDX7NlVPA98Bm+Ub67YEGjhuVyOUMglslk1huNxmEZNQAeoE8IyEvCAA+pKVyH11SDw7ALDk5cMbWa4Zb0JJNJncfjiTW6zTG4CiH4Cp+obS2CUaFc+uk2feGr5qvL5/NSMBg86na7B00mU04S+uFxWAzrmuqw7ZAkiWk0mhNardYciUR60crGZcL7fspTFOZMIp4KzeFcOp1eMTAw0MeDic2B0bY2wjNqCnvA1CJQFzXXOK6dLhAIrLHZbJl2HbtOKx2ivsjz+B3S9A95sA66+/vgNq7cHwF+CTAAH3Hb4QGy+asAAAAASUVORK5CYII=',\r\n'small/open.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYzI3MTQxYS1jYmM5LTQ1OTktODkxYy0yZWU4Njc2OWI0NWQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQUM4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQUI4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MDE1MzMxODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1MDE1MzMyODZDRjExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LJc/8QAAAbBJREFUeNpi/P//PwM1ARMDlQELIQU3btxg+PDhAwMzMzNMSBWI1aHs/3///r1mYGBwn4ODAyzASMjL0dHRDLt372bg5uYGcY2BeDMQPwMZBvLh169fRVNTUz1bW1uvwg388eMHQ11dnf/t27c9WYEAqhgMHjx4wPD582cGJiamf0CuBxCvBuJimPy3b99mA11vGRQUVNnU1LQZ7OWWlpaYlStXdpubmy8FqcETtouBeDaM8+/fPwYjI6MqoOtTgfpns7GxlYBdGBkZuV9KSmpub2/vEnQTkpKSGPbv38/AxcWFYTrQdQybNm1i0NXVZSguLo559uxZMtglIF8GBwc/x+YkkCvwAVBwgQBIP8gcmNf+//79m4WS5ALV/5/q6XDUQCoaCMkg5AOYfpiBLI8fP/5FiYFQ/SxgA4ElxtsZM2a4AvMypheY8IcKKAfdvXuXAaQfZA44MauoqLRu27ZtpY+Pj5e+vv5v9OILlFtA2QxbLiovL2e4d+8e6/Pnz3nt7OzC4aXNxYsXJYFso58/fzIia2JnZ0cuC7FmPWD4/WdkZDwHdMxzRmpXAQABBgBWoLs0HHNh9AAAAABJRU5ErkJggg==',\r\n'small/organism.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU9JREFUeNpiYBhxgJlSA9w87AuUVRQ47t55+ADEZ6KCowSA2AHGYaHAZSBD9gPxByAOpNhAIDAA4gW7dhxMRBYkaKCmlibIJflAHIAkfOHTx68b+fi5FdDVMxEwrB9IrQfii0CseP3adUYQBrIXfvz4tf7L5+8bifYP0LD5QHweiBVwyBcA8X6iXAhSDA2jiUB8H2QwFmULkGOXkJdBYVYITRKOUMNRANDrH7BpZMERCSANB4DUAaiYI5ROAFLxUMseEJVTREVFQbHJAaQ1gfjBm9dvPgDxA6hcPZB6AcQeQAyKHAWg3ExCXhaA0vVIbJg3A6FiG6EunUhsGF6EJpELWMIOZqgCkL2AGANBhtgjhakBEP8H0UgpoB45uxEKwx9AagKQNgDil6DwBLkGiDmB/H5oUvHE5noGaMDiSof+MK9BXQ1KJhuxeZOmACDAAGX+bdXwvJtFAAAAAElFTkSuQmCC',\r\n'small/organism2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDkyRkQxNzY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDkyRkQxNzU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjVjYjczZGU4LTE5YzUtNDAxNS05Y2Q5LTk3OWZhZmYwYTFkOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZFMTc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlQ91ycAAAMBSURBVHjajNRrSJNhFAfwd87VwJqGLaMya0mIuA8hFrSiNCK7N6IPBS0NohVFdJOgyKiEmtCFJrVumlLCojBisg8WRUUFI6ZSH1zTLitGtra1trHWWP9H/pOpI3rgx/bq3vOe5znnvLLS0lJp1JoFH9KulWCA3bAUAvy7ORKJtFitVkdFRcXwj7OksesgdMJMXk+B03A+LZhYGhqxMgWshzfQDnL4BFbYlvb7MpgBjv8J+AOOQQiuwB3ePB/OwFQ4Dreh/18BxWHO4XeRmQwmwUnYALO5ZfGAZdyBpFQqRwSUq9Vq8amAmzy/FtgHSW5zHZzgmd6CVsgWRZLL5T1Op3Oew+HQaTSaL/n5+ZFUQHGzHebCIW6xBq7CdD5E7GY/C3EKPstksster7cmEAgUmM3mHdFo1Ccb1TYT4QULIzIqgV383xJYADoYD1thWigUsplMpsrCwkKlSqWKji6KKMQ7VnYFA0vcssjcD78hDBehB4Ea7XZ7rU6n69Vqte9TASfDKtgOEciBn/CNx7AQ9HANjsAvHtNig8HQ0d3dXeJ2u4erLDJ5AIfhKIOJFeTnOEjAH15HueUB0fSJRGLQ5/Nl9fb2FqQCdrLClbCaN4qnFzDAW+iDNljDLB+J84PvCoUiF61TXldX11VfX18tqvyVPRUHH2yBx3yAOE8vdHEEq1nx5zyesy6Xa2VxcXHYaDSea2hoaJRleDm0M6tnLMZGTk/6MNj4u9ZgMHi/ubnZVFVV9Uqv19/LNHpqnqeHjfwQdnI6RFZP4QkbXPSqDuc4gCaXcnJyYqMz3Mw5vgSbOCmiKEa+EEQhLKJdOI57cGSvPR7PIpvNtjaZTOamJkViE7cwSAcnRGTxEW5wakQBVXBAZB2LxWosFstdv99fXlRU1I/3ois7Lbs4e+wlr7VwgRPTxiny8gyXw3pstQ9VlpqamvaGw+Ghm9IDuklilmXcqmjwCeBke11n28SGsojHJRE0Ly9vTMDUymW/1TKYxFfXIAdA4oMGM9wr/RVgAIc88hiXRGe6AAAAAElFTkSuQmCC',\r\n'small/overdue.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowM0JCN0IzNTczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTkwOTk3MDhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTkwOTk2RjhFQUMxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTY5NTNjYjUtNWVmNy00NWVlLWFjM2YtNDAzYjYwOGZiNmI5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAzQkI3QjM1NzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4ZuOPQAAAppJREFUeNqE1FuIUkEYB/Cjx0wsuygWtBmYdFnRgsroIcxwqYgeil6C3YoSghYqDCKwJSQoKtkKKwgiqQcfNJQyok0qVvZhMaGEluiCBpUUlGGFrpdV+o98xul0jjvwY3Fn5j9zzvlmFFarlZNpNjgE22EJKOEbPIUQPKtUKlw0GuUcDsffSSqJoLlwCjbBWzgPH6EJC2EDnIUcnNZoNHnhZN5oNAp/r4QRqMIRuAUvaPIHeAWPIAG9rVZruFQq5dxu9zuVSvVf4FIafBuOww9OvlXYIyPkfTqdvlYulycQ2t6pUvDoNyEKF0STd8ATFgCX2CYEfQ9tNtuxWCx2I5VK9QgD98AsGJLYTS/U4R70CeZwtVqNCwQC9y0Wy6jf7x+qVqvtTrbifrgILYlAFvaa3u1v+jjt1mw2OZ1Ox3m93nPZbNaZTCZ7WOBu0MBjmffVgNn09ZviRVnpOJ3OPEonF4lE+ljgAfgE5S6BM0ENU+JOtku1Ws0ZDIYxnufXsMBVVBJyrUZhGgqXbAj+jD+LlTSw2iWQvcMZtMvGNON4FvgFFkw3kBbu1ubDLxV9DGuXgd9hPSyHl3KD8P5sjUbjDdvhdZgHy2TGjsMZuAs+cSfOMlcoFNSZTGYj6nGMBebpvB6WCVxLlbANtog7tVotFwqFdtbr9ZrH4xnvVP0V2AWrJQLXUUmxRbeKdxePx+eEw2F/f3//ZbPZPKUQ3IdHaZeb4atgHnsdQWBndZCutHZTKBR8sViM2u32n4lE4iBbQHgfdiaNwl7I0P9LsE9i54tQeyG9Xl/3+XyDLEzqgj0JrEDDkIQ7MAGTnY8JK+i4DuAyGAkGgydcLle92419FR7Q4w9TMU/SOdZSkefpKZ6bTKZ/Jv8RYABxoM9ehi5YsQAAAABJRU5ErkJggg==',\r\n'small/pack.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIlSURBVHjaYvz//z8DNQFAADFS20CAAMIwcMOGDSgCnJycDBISEgxfvnwB4+/fv6OoDwgIYETmAwSgYo5NAAZAKIh+LFTs3M01nU0rsUvAIpDueMX9hpn5iAjMDO5+RkRgZnT3+cxAVVFV17uLiPimrwCCG7hy5cr/zMzMYIMYGSHyINcICQnBLQQZ9PTpU7DBMPDq1Suw+vDwcLAmgABiQfaavLw82DUsLCxgRb9//wZrBlkKswhmAUgOhIWFhRnu3r0LtwAggOAG/vv3D4xBXgABkJdAAKQBZOjr16/B/M+fP4MNBlkCot+9ewfWBwMAAQQ38O/fv5AwACp6+/Yt3Nsw78EMgLFBFmJLIQABBDcQpghmKDyQgeyvX78ycHNzg2mQi9DlkQFAAMEN/PPnD9wVyPTDhw/hrkaXhxkG8x0IAAQQC7LpNjY2DD9//gS7BhTj6AAUVgcOHGBA9hXMAhgACCAmGANkEEgSFJsgw2C2w2iQGMi7MDGYISAapBcGAAIIxYWsrKwoMYbsMj4+PhQ59LCDAYAAgrvw169fWBWBcgrMZSA2yEXIroPphQGAAGJCjhRkkJaWBnZRQkICPNBhiRrZYpChoAQOAwABhJJskOnp06eDXdbW1gbOOaBYBrkQlvCRAbKBAAGEkmw2btwIth3ERnYxKEJA4YuekEEuR/cZQADBDQRlrevXr5NVBvLz88PZAAFE9QIWIICobiBAgAEAJ8MfJdqsPYcAAAAASUVORK5CYII=',\r\n'small/packagehistory.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAddJREFUeNrslD9PwkAUwK+GlQRJmIVIYsGFRTrShIGQkFg3DAmEmUHYBDGtwaGODszgJxBHJmqYoEMLgzCR+g0QPgC+11wRSgXU1Ze8XK/37nfv3x0h//JXYayPUDjE/2BfhI7N0dtougGksA79p2yB6PTbAPWA4r48QFuWkWtlAxpNqREaDGxAna690Pk7tWmAQzEY79BbO/CVbhBBhR3hrkoR9ANUctlX4BQJThRhZOxrNDUIPLct+Z1CJpIkHQX8gU5f7ZPgcbCTSCQwzEeGYYwVMw/VEp3naCq+gNGzKBEEgW+1WgRhbrebzOdzHka+fF0uLhaLPECbNo9Eu3dLYPW2KmYyGYSYP7PZLKnX6+a8clMhs/msAVAjfBq2inNhCzm3BIKhAJt4C+YksiwTLspdYfjYCZBfxSG3phyAxjDUXdLr94R9Ov6g3W6vtQHmjz1hNwy3RbCWQ1pJ0+VCoWAC5Qf513cZizKIx+OEZVmi9lWzyk4CBytYqL0eh8lkoqUv05HvwkLPh8Oh0e12rYdg6tDYT3gpTCBU2q9p2nPtvhYZj8dr+cQWSqVSpWQyqe9wzgCgsbxeAMXuL6qqGhuNR7z30GtwHKf4fD68Kfq+OfwUYACcVLXPhB12eAAAAABJRU5ErkJggg==',\r\n'small/packforshipping.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RTg4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RTc4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmJhZGMyMTcxLWVkMjItNGE4Zi05YzJlLWM1ZDliNzhhOTVjMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjBDODMxRTdFRUIxMUU2QkUyOUI3RDRDNzc3MkMyMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIGkRAAAAGTSURBVHja7NO/SwJhGMBxf1wenFHW9WMJDOmHQYSQDTWIDQ0tUn+Bg0RU0NQgYRS0CC1GU1CtgUtN0WBam9DUYj/IIaiGLGiwUq6y78mzFI0NQb3w4b07nve553nvPWulUrH85LD+J/yFCcPhcCOzHfWYgnmfxRYMiVPQj1p8qqBYLFr8fv9JNBp9qAYeMZhVCeySuDGEsIRj9GAOp18Kene5XG2qqvZxnagm1DSt+iKc41AWt6IDq5iBC/vY/NpiJBLpzmQyU9lsttPn813aeFbGJZYxiTW84gxNWMEEGr7bM5vN9pbL5cZDodBRKpXyKtJqjbRtkb1cxCBesI1HzGMPF+beS7zZmerxeA7cbrcRi8WWFKniWhZbpDpzr3axjlnc4AoL8oGs8oEW8/m8hgFFUe7L5bJmdzqdrYZhDOAOGgLQYYUXq9jBKEbgQTtaSqVSs8Ph0EnUWygUvLqu35jHxqwqgGE5JhWpwKzkFhtSudliHM/SRR0JY4lE4imZTA6l0+npYDAY//+X/0LCDwEGAF2AvdgbBikNAAAAAElFTkSuQmCC',\r\n'small/partialuse.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTVDNTk5RUM4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTVDNTk5RUI4RkJGMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3MDM0QUZCODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3MDM0QUZDODZCQTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+h4nltAAAAeJJREFUeNqs1L9rE2EYwPHL3clh0KDSW8xSBzOk0ClQRJAMNUZoF4s6CBFJSc1QOpSiZquC1MlBow6iKbVQEBEhJCSKhlJQMVvBP8CApLQOFhou5le/L7wnSSnkrvrAh+SeI0/ufe99Hk+n01H+Z3gSiUT39SiG8Bw7/X5cr9eVVCqlBAKBvzm9WCza38dwCQP4gbf9CtZqNSWZTPbkdK/XKz7PYhIxXMAVfMTvfkVVVe29xgjiuIltvEZWLtvvdg9FwXM4Ip9Ok/llvMATBN0WfCQLHMczHJX38riPBZxxU9DCO9zBmlzqSXn/K2ZxW740RwW7YxFLeIrTMvdL7q/Ykuv9Cur75LKyyD1x1PAK73EDj3ECD50+oR2fcRenxOGXuUOYwiDm3RYU8R2XcQ0vcRV/MCPONB6IPyEcFxSxgWkcg08eq2GYmEOmUqkc7unlYNDRMdPlEYpCNK4hku12W3RKPp1Ox8Lh8JaTJ7SjiVvI2cXstms0Ghfp51ypVBL7rWimabpphA/YxHm7qzRNU5rNpr9QKESr1eonp0veGxOyNX12Qizfsqxv6gHn6BuM42f38g3DCOhiph0wVuVLWhEDpNVqKWzfFz0SifzLxF8PhUKj5XI5zvRuMP0zuwIMALihevTdQ008AAAAAElFTkSuQmCC',\r\n'small/paste.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTExLTAyVDEzOjI3OjM3LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTU6NDY6MjItMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE1OjQ2OjIyLTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmFjNjM2ZWU2LWUxZmEtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjMxZjA1YjBlLWJmZTctNDViNC04YjgxLTU4OTc3MjM0ZWU5ZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozMWYwNWIwZS1iZmU3LTQ1YjQtOGI4MS01ODk3NzIzNGVlOWU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTEtMDJUMTM6Mjc6MzctMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjViYTIyOWIyLTg2NTktNGUzNy1hMmE5LTQ4MjQxMzgxMWYwYzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNTo0NjoyMi0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PhIHZTYAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAOZJREFUeNrclLFtw0AMRZ8CD6AR1P9G3kAbJJpAyQSBJ/AIWSGZwM4E1ga55tfRCN5AaVgEBs4+BSoCszkcP++DR/KzmueZNe2BlW11ws01UFINnIAWSLa3twiryxpKaoE6ro9AZ3sr6Rs4Ap+BJdvnkgzfgrAGzsBL+HfAHngKrAfG0i/v4tEB+JL0G+uB18U1tH0EqkxtlxNKaoDnDNwAg6TJ9lQ6Ng0wZLAPoIuYRXM4ASnjn/6NUurVlBLdfs80bbiv5XCKc1xKWOUWrKQupJcyb1ugtz2WNiWFbrkRU5bhX+1nAIK9QJnwry0CAAAAAElFTkSuQmCC',\r\n'small/pdf.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATFJREFUeNpiYBjsgBGZo6ml+R5ICRCp9wIQO16/dv0DsiALmiIBoAJGQiYBLe4HUgVADKITkeWYyPSZA5ROABqeQA0DDZDY84GGKuDyMlEAOViAhu0HUiADH1DiQpwA7sKtaqoO0///Z+gB0qQYMP//fwHV//8NgPoueN+6/YERycD/FDrOEWjgAZQwFDYzZ5AOCmT4/vQpmP/9yVMGThlpuDwrLx/D/YULGGSCglBMuj15Ms50yPB03XqGt6dOgtmqubkYGrCJ4UvYYBcKmZuB2Z+uX2fg09TEqhFm8LuTp+AOIOhCEMBlINEuxOcaEHiybh1GGGItHGgRy47TmZn3Z/7960hSOmRm7gemw4U2//5dwFZ8gVx5gIx8HQjMjgewhaEhCeUhct4+wEArABBgAF8jbESEGlPXAAAAAElFTkSuQmCC',\r\n'small/pendingrequests.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTU4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTQ4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MzBFQkY5ODRCRjExRTZBQzRCODQyQjFENTVDQzExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE3MzBFQkZBODRCRjExRTZBQzRCODQyQjFENTVDQzExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ryxvLAAAAkZJREFUeNqU1E1oE0EUwPHdTXGzIdtDNfGrgoIfGMUaMIIYEZHe4kcQ9OBBvEVQ8KAm0oMGQTyooB48KAFBBGMVoZ5EaPGyogbx4EEDWlH8OKSgwRjbJvU/5QXGJVHz4Eeym5k3O+9N1ozFYkab6MF5bEIdM3BwDddbg2q1mlEsFo1EIvHHxHbRh7k4jobcUytv1BN2epI5MrkXJiYRwQ881sZ+wzasxjh+dkp4DnsxJoOWYxWe+MbWsB45uDiJ1+0SrsELqZVKPg83sAD7YMm2+6UUD/BeaqySv/InDOI0bFzGJ7zDUpzVxjYxgRN4iijuSBm++puitvBQJl3EMUxJTfWYkTm2JDuDZe0S6k/xVur5P/GlXQ31MLV7auX5KEujKtKYRXguYwL/SqjHJSyR47IQN6WBpnwfwXQwGKzrk6y/JAxjMX7Jwn2SeFwa0R8IBKKlUileLpcdPaElDfCHKvoROWtj0tlb2Iyk2rZt21vz+XwhnU57uVxusF6vz648jZUYlaa04qp83vYtNIBD8v1zKBRyG43GQKFQGEkmk4OBSCTi8cMB+a9+QBx3O5RhFy5o17vVX9Y0zbWO4/R4nrdCPeEbHMQQruA7tnQ4g4d99yZaLw/Lsoxqtbqh1WX1QjgltVLbOSoJ/Gc07rtn6QvTJNt/bEZFpxjGHu16p5zX2aCWk5bRXQz7rnvleBnNZtNwXfdltwnv4b52vU69S1WySqUylUqlhrpNqGq9X15dH7GdbUbD4fCzTCazI5vNPvotwADssJjnpcOpnQAAAABJRU5ErkJggg==',\r\n'small/peptide.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMhJREFUeNpiYBjsgBFdQFNL8z6QegDEF4D44vVr1xeQYiALmmEOQEoBikHsA0BMkoFMBOQvkOpldAMd0PgfKQ5DJK8bAHE/1NsfgHgjMeGJ1ctAjQeQvAsyPACI7SkNQ3TvP6TUwA/kRBAjIQXA8BQAUgnQ8PwANXghrvAklGxA4YnsUgFoUCiQmw6RDUIGDyg1kB/NEAFgUCiQFYZYwhQUlgVIQoXAYJlAqgvx5Z4P5HgZGdjjC08WMgxcCHUVLMYvMAwpABBgAMpzMqJsoqujAAAAAElFTkSuQmCC',\r\n'small/pivot.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMVSURBVHjaYvz//z8DNQFAADFS20CAAIIbyM/PD2awsLAw/P37lwEmzsjIyMDGxgamf/z4AdfIw8PD8OXLFzD76NGjDDo6OowgNkAAGsbYBIAohKEb2Lr/HM7iAJZWIgq5i/CLRxJCckMiIuhu7C5mBlWF//jITLj7efbM1IiAqsLM8H4+AcQCsxFoIMOvX78Yenp6wHyg4Qw2NjYMBw8eZODg4GDg5eVleP/+PRjLysqC1dbW1jIALWYQFhaGuxwggJhgjE+fPjFwcXExfP78mcHBwYFh4cKFYBoEgoODGRQVFRnc3d0ZkpKSGIyNjRn6+/vBwQAC3759gxsIEEBwFzIxMYGdDPQuQ3R0NMPXr18ZWFlZwWFqb28PlgMZAAxrhg8fPqBEBNDbcDZAAMHDEBQpoDACevE/MLD/A10M5gNdDA87oCX/X7x48V9JSQlMg8RAYX/48GF4GAIEENyFzMzM4PDZtm0bw549e8Axm5CQwCAlJcXw9u1bsMtA4aalpcUANIhBTU0NrB4EhISE4A4ECCB4GIKSiqCgIAMnJyeDi4sLQ3d3N4OkpCQDMEbBgQ7yuoqKCtgwkOUg74PUgwByEAAEENxAkIY3b96AwxIUcyANsDADGQLyzpUrV8CuAhkIUvvgwQMGdnZ2BuTMARBAcANBkSEiIgJ2KciVsDABAVFRUbABIBoWcdDMAE5eyJECEEBwA0GGgFwGyg3v3r0Du/jx48cMYmJiYJeCLIOFFyhMQWKglACi79y5AzcQIIDgkQIyDJQWZWRkwOkR5FJQOoR5FxbwT58+hac9kDqQHCjiYAAggOAuBNkEcjpIQ2hoKDiWjxw5Ag9LUNg9fPgQrpabmxvsE1BaheVpEAAIIJR0+OrVq/9AA+HpDpYWQWkNJgYMEjANSquwdHju3Dl4OgQIIBZkgy0sLMCBDwo/kFdBLoFFDMjLIDYoT4NcBFMDCltQmMIAQADBDTxw4ADYW6A0BzIUVFiAkgQoRv/9+wdO1KB0B9IMCg5Q8gLJg/I+qPCAAYAAonoBCxBAVDcQIMAAPPvm0EOMlY4AAAAASUVORK5CYII=',\r\n'small/plasmid.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNqsVMFRwzAQNKnAqQDzDC9TAaYC4gpiKkg6IFSAXYFIBTYVyB3gV/JMSnAHyR6sZg5HYMFEMzexc6f1rm5PUXThdTVWMLudxfhJ+XrYbXeHPwMSpEAsEQmiZSoTUMQGUQK8HwUEmLCpubHCpmaQF9Bnss6Rb38EJJhFvKCwxHtCpvcs6YQdch1y8r9BPGjQyYCgISsBW+N5j7imxIo1FjmpE+ZPooZHdCa1QFg+rxEfZHx2vszVfK/58e+SpUikUpYwuxNpvzRN11vUTodFR8XOBNipUCz3Ts1Edc6xkQa8B3i4pY0iOiL2NcWtPgCwdyB6fQKy7amyxmMAYKYMnzgSvqb0NPaNbxJUveXRtLopWrJ4bUm2wtJ4/fUFZsjqjVPT+GzjrFCxsOYmYd0IW9TM1XznPKZXrWZs9GS8FqqbHWWWiDknK9fz/p/LIaXMbPRyGMhfkV2sPOqcUAVfXx7whGcWdMFefJ0EGAD1L6fXSywGXwAAAABJRU5ErkJggg==',\r\n'small/plates.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrsUzFWwkAQDWhhR5q8p91aQkM4gXIDOAHmBDxOADlB4ATEytJ4AkJlaWikhRukpcI/vj+8IdKZwsJ97+dvdv7O7Mzset7/+O1oyKfdac9q8pc2OZnW4GwEuGuz0AKegCGwAnrkGHigZs3gfeDDaBbATgTW4RtZDCk5AwqjKbhWUqOca9CmEYuD5+3nVrlkZHWizhdG88026JV8giCQpjhgjvke/AreMJ0DMAYGwB3wApukviK/AzfArZTEpjwxJyoRPUP3I54sN1nsqInIQ/KymrIPhJyHcOZzzZF91bEcavPMvrOmDNjBosJdbn5kxxMEE4cJsxrbGp5OiKhSx3twTs54LSZMr4e1OTk1/33az17KkbUY0cGSooRdDHlP1zxRRE3MPXtem/hSDW3dHNEy9XKVuqr9xwnjGp5epPewUcNb3pjr9YfHlwADAOz5d1RE9mYCAAAAAElFTkSuQmCC',\r\n'small/playtutorial.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjkyODgxQTk4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQTg4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhkZTA5ZWJmLTUzNWEtNDJlNi04ZTMwLTA0YzE0ZDg0NzI5YyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEOTRBODUxNDdGNEYxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PveewvAAAAEuSURBVHjaYvz//z8DNQHL2bNnTYE0HxAzk6qZkZGR4cePHwz//v0Dc9nZ2b8wKigogJx4BohfgARJMRBkkJaWFgMvLy+I+//GjRs2jEABkIF2QHyYVBd++/aNYdOmTQy6urpgfkJCwk4mqBwnuWEG8jKSi5mZGKgMCBnoB8TpQMxKLQO1gHgGEB8B4lAi1BNU8BNKmwHxKiA+CMT++JIYqWFoA8QbgHgTNO1iJmwSDfwFxKuhwfCVHANhPvgLxGuBuAeIT+PNekSE4S4gbgTiY0TlZQLyC4F4CjXT4WdyE/YfcnMGBwcHwjAmpv8soAwOBHJALE9qMvr58yfDsWPHGN69ewfOys+fPxdijI+P3wnkvAcVHqQaCCsP//79CzYQ6FoxRmqX2FQvbQACDAAzgVhXMJKjAAAAAABJRU5ErkJggg==',\r\n'small/polymer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPFJREFUeNpiYBgFlAJGZI6mlmYAkDLAom7D9WvXLxCSBzGY0CTWY1GsD8T1RMojXAi0HWTzeaBN6K52AFLzgXghSCMB+QvILgygQhAKILuwAer0A2iKFEBiQJclAtW8B7kClzyIw4ImuQDqdHQAM8QQagAueQwDcQEDoOvwysN8xoJmiz1yjJEAHNCTIEUA6Pr/GF4GCoLCJgGbBmCAN+CTRwbIySYB6mV0EA9NazjlkTksQMUFQNofGnsLQa5B8w7IkH5QGsMjL4Ds5QXQCInH45OF0CyGCyRiy3oJ0CyEDj5A058DPnmgyx8MjfIQIMAAdOZKn6Ho7/IAAAAASUVORK5CYII=',\r\n'small/previous.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTQ4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyODgxQUM4RUFDMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRhYjQxNDkwLTQwMjctNDY2YS05YTY2LTE2YmU4ZGVmZGQyMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMUI4MDNDOTdGNUIxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppngo+AAAAHpSURBVHjazJRLSEJBFIZn7rUSS3ohBLkIhBJFcBNEmyCIHusem1AMgoIWghVID4MgooggaB9ERLSToG1uioRIKIjWPXbKLdI09d7+ibl2DTMjFx34EGeOv3P+c2aooiiknCGQMkfZBanb7S41tw74QD2YYgupVIoEAgFitVpzSbpQKFSK2DgYA8zwrLqYSCSI1+vNS9QZDIZiQj1gDryCCVADFvI8E/Jd030jZANLoAWsg0O+3gdi2kS9Xl9UsAnMgG6wD1wgqdmvBl1gi1kIsbjf739BlU/JZDLu8/kuqM3GDkOquNGj4ISf6rHAydkf9gPmE5VlmVosFgpBQzabbY5Gox1M0IPNQV7KGrgqte2sKcFgkDgcjo/vLpdrlZU8y0sZANd/GmpBkHS8ASNgF5yBFXD/zW9qWR94NYooinIkEpHh38dmLBZrVz1k0cAb0gsOwCZ4+yI4CabBHWsopZRIkqSk0+kMPKwym80PWkE12sAyMPPTHmn2FkEj2AEVuCkCboqImyJCkJpMpvNCc3gLhnk354GHf96ASm7LJUuECHE6nbmm/PQ4HPOZOwV7fNBbgaRNUv3LDTZrfZHIgA0+5MyGIbCtHRvMYv5rEw6HfzMZnXy0ntWS7XY7MRqNn4L//sV+F2AAWuKYZ8kkGZcAAAAASUVORK5CYII=',\r\n'small/printbarcode.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFZSURBVHjaYvz//z8DMtDS1lIAUgoMxIEP165eu4AsABBALFgUJcjIyCSrKKu8xmfSm7dvOK9cufICyHREFgcIIAaQC5GxppZmw5atW/b9JwDevXt3Dqh2P7p+gABiYqAyAAggqhsIEEBUNxAggFiAsSoApA2QxOTv3r3L8v79+/P4NN68efMjkBIA6ndAEr4AEECMwIAFCewn10W8vLwMfHx8DE+fPgVxHQECCO5lYHpCoYkVa2ttY1i3dh1cHiCAWCgNs6nTpjJs2LgBzgcIIIoNvHHjBhjDAEAAUT2WAQKI6gYCBBDFsYwGHAECCBSGF9AyeHxnRye/mZmZCD6dp06delNeUa4IZBYip0OAAMJaOLx48eIQocIBpAZb4QAQQFQPQ4AAwpps6hvqPxoZGq3Dp/Hc+XNsQIoHXRwggLAZeODQoUMMIEwEeIAuABBAjOhVAKUAIMAAJ7nZ02UnmLkAAAAASUVORK5CYII=',\r\n'small/printer.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiZEADmlqaCkBKgYE48OH6tesXkAVYsChKAOJ4IH5AwDABkIFA7EjIQBBYCLS5AZ9pQJ84AKl6dHEmBiqDwW8gIzAsQIFrgCQWDwtHAnoNoGoLkcQusEAl9uOIbYKAl5d3Px8fH8PTp09BXEeKvdzW2sawbu06gsmGaDB12lSGDRs3UM/AGzdugPEIToegMLyAlsFBaesiVJzkdIgt0zdAMz4DocIBiPfTxcvYQDwRrpQnNlIOAPFDIhzzkIj8TjkACDAAwyUvNEvm770AAAAASUVORK5CYII=',\r\n'small/product.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MThGQ0Y5ODg4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MThGQ0Y5ODc4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYyQjUyNTNDODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYyQjUyNTNEODZCRDExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+i8u4UAAAAhtJREFUeNqk1D9IG1EcB/B3Sc6LlphBRCuIQTrICaVUs4iDDtIiCiIEsgTsYukoCg46tASCiIJEhICzEiIuokgHhwwBkyGgDi0dqhJobR3UVmPujHf9PvilnOHlD/qDD9x77+7He+/33kmqqjJB1EMOdFYmstksi8VizOv1/u9zgARm0bt/BX1Vha3Eh9a+5zAAL6pJ6CjRL5EGWIZbep6Go0ozZCVmaEA7XEMADkCtZsnl4hcViEcrHD814SBc0PMX8Ff6ptxgJ/hgltoLNMu31FagplJCvvG98BKGYAt+0pgGm9ADTbANG9BYrspz4Kb+DpgpGr8CGZrhjGbIk5+LEvIX22AY+mGXKi1a0T384cuWZfle9ALfjxU4oev2HX5Qf3EYNBEXPwGZTMYQJZzkVxPe0xn8BqtQKzifdhiHz3a7/TASiYzlcrkHCfkevIZPVdzfG3hHBVpTFGU+nU6/CgaDI9aELXS1LgTXrzhqqAAfqa0HAoGJaDQ6GY/H2wtF4ae/Djy0h9bl3QmKskfVZpqmMZ/P9xVLXvH7/UvJZHKUJ7yEHViED/DbcgK6Yd2SkN/l00Ijn88zl8vFwuFwVNd1NRQKTUkej6cwPgFv6P46qMIKbYdGz32wT8uWDMNg/AftdrtNzPZZIpHolFKplHVJLXSgecXTdN66LD/iW9pHufABrzBPbLPZTKfTeS6Z5qN+zCXjnwADAPdMmHNk5mkAAAAAAElFTkSuQmCC',\r\n'small/progress.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNq0VDtSwzAQdUwaKkLhGqUMDblBwg1yBHKCkBMkPoGTijLcIOlS2j4BoiElpiaFSzp4O/M8s6OxZArQzI488tPbj95uFP3x6nUBRrejqXNUnd5OVQvOyHm/g+wRW+YSwoYKM8C2h5Wwdb8jQAEXBMu6gs0U2RjbDiZ7LWddhEJQIpW1E3VDltNpRNIoDqQrQKmfbasXI9o2kWEZuRN7yMTbC8Eu4YH/poxcMEvYRkh7Hu9yIcWFTeDl94xwAdx16GVzWPYLOc1g37CdPo9bopN00y5CRHVguq/63H1lSaUAuHacrGAfrGeN/wXrLA93FyI02qMSbUXCBV/TKJGbEKGsG0UmOrOIaO5RgmQ08daQkmh6N2ffzj01tEy3DA4HeH5XYr3X9fRodaiHRVvKlv0aIhuwh1N38lw4wIwpi2yekiS5hNnz5/lLYR6wHamGpXceilDpVSKz7IaV6uea3xUjew4O2EYKbgpMbxwarv+6fgQYAHnamFRD9X5cAAAAAElFTkSuQmCC',\r\n'small/project.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E3QkM0NTk4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0E3QkM0NTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjY4OWRlZTc1LTBmYzMtNGQyZi1iZTQ4LTA2NmU1ZTc1OWY0MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMjk5MkVBMzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoCCSZkAAAHsSURBVHjazNQxSBtRGAfw95JLzRFDoSAEHZLS2kIkIA1KCk5uRVALNUMlgUL34mAX6yA2QTJJ1kCW0q1TQCWDWxcTyKBTTCl0sGIggZx6XtFc/L/yvXAELwk2Qx/8yF24+9973333eKvVYoMcDjbgoRSLRXn8DJ4At7lWLKUCP+QfzWaThcNh5nK52hfxQCAgj3dhHM5sAn1wBK/p3GkYhieRSLRisdi5DOXBYNAauAEHNoGT8AnewCyscc71Wq3GQ6GQlslk3vv9fl3pWNIDqusylaApVwfP4QWsw1tYxQwP0+k0z2azK9Fo9EsqlfponeEObMIC3ZwXy7I88Jp44RS+6brO8vk8q9frajKZ/KBp2ivrDG9gjMLeQaOft9poNFgkErnK5XJb8Xjc09k2orIX/9A1muOO1uBdWqdnX1sDReH/UJ0u793YMAMeeAwvqbnnbUKP4WevwD3qwQKMQJkCeUcpnsJvWOr1LddhCExarrjZgCsLg8Ii1AVdA7dhAmq0TDtlCp7r6M/2cDqd1yLwKz19imbqtvEI9iEOD2WI2+3++1upVFi1Wg3LzeEzLMJJH9vdNPwSszZNk4kvzev18lKpNKyqaokXCuJdsFEI9dF/sr6q3EvxPTMRrCiK6fP5vvP/fse+FWAA2SacfAT6ekkAAAAASUVORK5CYII=',\r\n'small/projectdetail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDM3M0M5NEY4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDM3M0M5NEU4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRTlFQjcxODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjcyODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5fxVxAAAA3NJREFUeNqMlF1Ik1EYx1+n+xRtZi0JFSUUkkRyirCxyAtnSTgSDRKjaTqxJWRiGWNdBKJggkp0URfOhIJVI7dQQyolQkMhtqZIanNguAtd0Zzso2n/M86W6bQO/HZ4z875n+c5z0fU1tYWs99QKpXM+Pg4IxAIyGccUIBTwON2u0c7OztNFRUV4f0xzP8PObgLTgIOWeDxeDXt7e3vkpKSNDKZzELWWP9SYbGCW84DEygIiZERHR0du76+fk6lUr0ZGxvLI2tRkVzu6OhINpvN12NiYg7Pzc35cagMwgl7Xer3+4n49NDQkCyiyxCTmUymy2lpaVahUJgDwYT9vGCz2YzL5crr6+sr3Mvl01VVVVd6enoKfT7fBPUiAOx0dlICsO4b5i1YyCwvLxdHFIRAnFqtdqWkpDAOh+Mo2YzxGeSCWdAI7oBPlZWVEswOamkSa+dbtLS0KCYmJsSbm5tOr9dLlt3070zwFKSD26ABHJ+amtJhTqTnf4Tf0OPxMLBKOzw8LIWrlRkZGWbiam5u7rTVapVyuVwBTR0yToTOzc/PF5I3DAQCTHJy8tuwoEajUS4uLmZNTk6Wpqam+kLriYmJD7G5nqTdXgGBN0x8fLyturp6NOiyzWYTDQ4OquRy+RN8+rYfgNgsdTHiIGJra2s+hULRkJ6e/j0oiHBL4P9BnU53o6SkpK+5ufkCXGFvS+xuGojVnWKwcKmmpqZcq9W+DlcKwi3BQZ5UKtXDIhfcLi8uLja1trbWbWxsxNIo3wekGtTgGfiCd1e2tbXloxBMKMM/tYxbhJh+Ibo3kaCcsrKySxKJZLWrq6vRbrdf5PP5RgSon+bhAzBA58dIrb9KjUXDvQrLAiKR6IVYLB7Cd3RRUZFlZGSkLjs7+xosOYZtBnALkKo5BA6QciaptksQ4X6PQ2zc5u3t7a1D/eYsLCywORwOifIs7iLvpwLx4DmoJS9FvNrVTMgPwj0J65bQMc5aLJYzRqPxXlZWlp9GOZxy4BFpKKAU9EfsTuSHhBth74b5XEQLKampR2CERIzkGW1ZCvpufPASfIwkGG5fpFKamppqDQbDVUQVOuyv+fn5zpWVFcbpdMYiC9JImYMPNC+9yABGr9cz2LdbMFTL6GkFAwMDypmZmUx0miMQ3sQFP/H3InhFUyY4Ign+FmAAwneQ60a8FCAAAAAASUVORK5CYII=',\r\n'small/projectdetail2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTI2QTA2Qzk4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTI2QTA2Qzg4NkNFMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQwRkFDQzk2N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQwRkFDQzk3N0Y0OTExRTZBNzIxODNCRUI3MkI0QUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g++K6QAAAqFJREFUeNrklF1IU2EYx9/zMc/cmWuri0G4D+mqlOaUCqGbeSdEXgTiZUhBdJXSXbfLdZurbvrQDBTszlVDRlDQltAkRAO9sCDY5xGmWztnZ1+n/2tnOlPsxrte+G2H9zzPf8/7PP93jKZp5DgXS455HbsgTz8kSeJfz83dLJVKJoPBoLW0tBCy1woDWAVvDxOo1evkhNVKhoeHCcdxfwQTiYQtND/fOTo2FlyKx5Wpycm6sbWVvqKqTjCgC46AXn0/CmYrlQpxud1kaGhoT5A+mM1mydffv/45FrvSZrG4jUajpifawHngp6EgqBd3C5yG4ENRFKv7jkwXBJRX09OD4XD4Ep7f6cl01cF7GgLi4Je+fxfcBtfBswOCNLFYLJ7zer3zy8vLiyx75Lw4/egy6GMYZhq9L++bMvUjRCr4Fv4xyLPgA1gET3meH0kmk7HZmZneXUH0oCAIgorpqhCVjxA7BULgcmMD1ZFatdr7aGIitL625uS6PZ6BSCRydSuXu7gpSa5UKtUuy/IZBF5APKVPz02Ae2DwgJnRnpKitKXSaZE7abM9gAhrFsUfDMtuliuVGsRtCLIg1gzcekW0sgCdLPgEaGtWAPXXEmgXjEYz63Q4PkrZbAcGwcWiUeH7xgaHvjQsw4AsDQbdTZN/Ar7SHoJv4DFQYT8Ds7qyYvX7/S95jktiUrnt7W0GFZOmKTfMnQEucO2w5lKDuzs6YmxnV9eWw+F4k5WkYr5QUBVFUdE/lf5iEz+BXffkoUuRZeLxeJ4z1C6ZTIbk83keQkxkYYEEg0FiMpma4xstwCUn4+BO88tyuUx8Pt/U/UDgxo6x7XY7Zef6pHFcb0/P34K7hYBR8EW/IdZarVawWCwz44HAC+RozP/3B/tbgAEAgE77MuqeX+0AAAAASUVORK5CYII=',\r\n'small/projectdetails2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDNENzUzQTg4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDNENzUzQTc4RUFEMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2ODRhNmI3LTk2NzUtNDk0OC04ZmZiLTk0MTJmMGRhZTI4MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMEZBQ0M5MzdGNDkxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtW6bvMAAAIySURBVHjazNQ/aBNxFAfw311yMf9Q6rWlWAUHA2mgDpHEOGStVEuhg6uBnmCkYwntFjt0sKB2KQkZpCp0aQmCmCkq6VIIlApxVWkxgnA6RJs/TXPx++SlnuGQUjL4gw935O733vu9X+4ntdtt0cshix6PngeUYrFY5/4BXIF61zsueAOL3ZMbjYZIJpPC7/cf/WYvFAp0dcM5eATfoWWaNwwTfH8TbvH9ZrVafZJIJP5KYne73Z2l65CDy3ANDA7cDz5YgFFY4WfTVES5XF4KBoMHVj2kpV6HeajAT6jBLizDB5iF1/AWNJvN5kin0/P1+p8u2U0BKUsENiB7jP5flGV5q1Kp3CmVSo5QKHRgtcuHXUmsxll4CjuKouR0XZ/SNK2QzWavUqWdgPu85JrFLpvHKViH27yRAlVKzWYzEo/HX+Xz+REpEAhMcuPHudlfYYsrlfj6HopwF9JWmQzDEF6vN0cB25z1IyjcBge/R7s8yMukv8wLuMEbREV8gwEu4kKr1ZJp8ipcgjOgQh942Gn4QS9DiBPSWIJteEzXcDj8ENcv2HWFKqTsa5yNMtksNooS7vFXo3GfKXiTV9MAJyqsyvxlvOQHMvfNjCZ+hhE4z0mcnNjJc1zYGMnj8TyjCgU/HPrHYWFwpRRgDu6ZHyKYwHJ3MpnMmB3fY6f55WMeKDPwCe7TXwfLFKjseSqVmo1Go7pULBZPelLR0lQErKmq+s7n8x3+Pr7++xP7lwADAH2iqjewvXObAAAAAElFTkSuQmCC',\r\n'small/projectprogress2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATlJREFUeNrsVMFNw0AQPEcuIHTgPMMr6QAqIFQQqADoACqIqCBJBaSDmA6cD/leB5gKYAbNSevVJQjiJyuN1r7zzu7e7DmEf/uLjc/Hj8CCz6VZ3B6JWe/f9qsDZEu4G6DuEMIugMtMzByoEDiBf+Ez0AK3wJ3iaNwPhcn0CXcGMOPQEFauUrbHitgiq/4QMWNGpavmXv7pQOuN/AaISp6+X/mWk+1QRX1MBOyz5RqVRrW80VoY9CByA7KYXvogXNuXQgc8V+kpU8wEvmo98kgQRxHeORn2iEqpOExzlLFKIOGVGaGsDTgGbjRyZN8i4NtrYApw3KZG9WArpD0re2v2UhW1OlhKVZ+ws1ZoqCtX5UL+4QdBolW4c1Pc3ZzosNvfSl70Seb/NjO42SlkfrBbkTWnTPmXAAMAt5Jt80LUQ1oAAAAASUVORK5CYII=',\r\n'small/projects.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxOEVFQjNGMjczODMxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOEZDRjk4QzhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOEZDRjk4QjhGQzIxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NmQwMGNhYTYtMDQxZC00YjlhLWFlZTItOGRlM2YyMDQ5ZjcyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4RUVCM0YyNzM4MzExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Yd8ucQAAAzRJREFUeNqMVF1IU2EYPsdNmBN/2oxIoa2ENpu7UJHA3SlLCKFwEKJtoFkgOhxa+LMxNESzaYxAkiJBaQ7nLmoX3czEkOhKiHJzbEQLmzRjgemcOrf1fGOtuTzSBw+Hc97ve87zvu/zvXQsFqOYVmtr6/TCwoIqOzs7PXQNsO3u7lIWi4WqrKxMBthMZNvb21QgEMhisVgzePUBLOAQuAycZjrHSOh0OvNXVlaCOTk5t/AaTQnJgNvA8+POZTARcjgcPh50JBKJpoXCQBbTOUbCtbW1YolEwquoqKD29/dTQyRt/n8ThsNhSq1WdwwNDfXU1tbO5eXlUVCZusWVwBxwITMzk5lwb2+PVqlUBr/fX261Wm9oNBoT6WTaIh86ADOp4/r6ejkjoU6na2ez2fkmk6lFLBYHqJPXS9RZ193d/dDr9fL+IVxaWhJA1dWmpqae9DSYFiz1jsfjvRoeHr6L7P4Sut3ujLa2NiXUeTo7O2e7uroGXC5XcXxDBmPf4rWFwqnl5WWJXq8vSRJubW2Jg8Egcf9Z/G0K7+7m5uZRhULxaHV19RJSO5aQqJJKpcGqqiqfx+O5lySEiiLIP4TCnyhywcbGRk1paalVKBR+QNdHsOUJUM6kEniPMolSa0iT2wDCX2NjY43YcAZE18fHx2fKysoUUPIGcS0wlbgp6SuUFJf4ECTuB1ER6veMz+d/haHNqOMpmqaJka2AIvFUA7PAlcSNIs25SK5/kjAajTqhwgvshEKhU2azud1utxf39fXVpNXvNdAAPAUaQfRicnJSurm5WYKM5uKpkvFFJsv8/Lx8cHDwJpfLZU9MTOgFAsEXbGIZDIbw4uIihe/HldCKBn5GvXlGo/EOvBuLK8REoZRK5VuRSHQgk8l+aLXa+z6frwAbwifMSw3gR5nOwXIWQnbE2OjSQW9v76jD4RBWV1f7+vv7HwMNUM9DaqlEZJoaARGGBqe+vt6BO2//E6TTFaB2Uph0AETfYKes3NzcAwxadsLgZHSR8f0dOI97/tFmsz2AF2OM00Yul3+anp5uqaur8xUWFkbQMC5+SubXDkmEWI9UKeHNETTyiKLfAgwA/RJmmB4ORZwAAAAASUVORK5CYII=',\r\n'small/properties.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVHjaYvz//z8DNQFAADFS20CAAKK6gQABBDeQkZERLggU+79s2TIGNjY2BjU1NYbbt28zvH79Giz3/ft3MP38+XMGKysrMPv9+/cMiYmJYAMAAogFqy1AsG3btv/KysoMPT09DK2trXC5nz9/Mvz48YPhyZMnDEA1DJKSkgw6OjpweYAAYsLldD09PYbe3l6GtrY2ho0bN6IYBsJcXFwMfn5+DLy8vGDDYQAggOAunD17NjwwbWxsGPbv389QU1PDMGfOHIaUlBSGsLAwhlmzZoEN/fbtG8Pv378ZPn36xPD27VsUhwAEEBNSuDGoq6szJCUlMZw5c4bB3t6eoaWlhcHNzY2hqKiIYdWqVQyZmZkM9+/fZ7h69SrDrVu3wC5/8OABioEAAYQShhoaGgygyDAwMGBobm4G0zNmzGBIS0tjSE1NZZg0aRKDl5cXXL2trS0DNzc3w8ePH+FiAAEEdhkInzp1ChS5/x8/fvy/tLT0PzBcwPyTJ0/+Bxr2f/Pmzf8VFBT+x8bG/p82bRo8eKZMmfI/KirqP8wcgADCMPDv379gDAMg9urVq/8DXfn/+vXr/4Gu+Q+MDIzECzMHIIBY8CVSoGFgRd7e3uCwhKVZfJkBIIAwDASlLZAGX19fMBspbYLFHR0dUTIBOgAIIAwDYYEOcp2npyc4zf379w8sxsrKCjcYFwAIIAwDt27dCjd4x44dGJpB4vhcCBBA8MC8cOECOBKArgFHxJ8/f+AYmH/BkQHD+CIFIIDghQMoqdy5cwdFAcx76C4CBcGmTZsY0Q0EAYAAonrxBRBAVDcQIICobiBAgAEAz2h+Z3eyQxgAAAAASUVORK5CYII=',\r\n'small/protein.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAipJREFUeNrsVD1TGlEUvcmEhnF3qLNxxhkoMJUNdhiSLdDGgKMlfrUWamFmTKP5CRamjZFmY5hhU1AiNjRskYUiSycFbMOgzO4PwHteeJsF2lSZ3OrumXvPPfe895bof/z78Wzx9eJuNpvdwUez2bRrt7Vjxs6XU8tnwJy2Q77vv+V0mMvlfmqaRlbDoobVAGYnEolyPB6nx4dHYF8JzaNxHB0f1UBy8uHkHt/dbneU38iPuCaz8mbli+d5ok5iEOM4jsBOP54CO38+LRlFW5tbC8jNHyZtF7aRxtZW13YVRSHLsiiZTIradDp9hpw3IFVRBTZDyCvspFIpkfd6PcKKHIeFQkFg1WqV9Hc60gwPEYPLZpnYjllCXmlpf28/I9SZJuVzeYHrup4BMQYgVFWl+Vfzh5Kk3W4HqicIo9FojJt/K7mtEpSCZLy2sEAqXX+/HpOK+QADjoAQPmgvNZI+jdfCydG0BSCRQzBYKp0gvC5eB9PhCRqxipwOC4BhMAKDMcDtuRNn8Eeh55P0iZttSSItML4ZHbmiVHT5+ZLmlDl7hjDcCJ84LviAAiWwoNVqfZIWyKtSr9evIpHIcIYw7JNhGGDsFIvFwIJKpYImEy9EWgBb+v3+xfS1eyGuAV9KqADxYDAQRZ7vkeu6wseb7zdXzi9nCLUH2oGoLZVKd4zZGIDv8FvG5VyQABfdMYYrsRQabIMQzy2EdRjrMIa6mMT++t/mSYABAMjpI4kziGlnAAAAAElFTkSuQmCC',\r\n'small/protocol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpiYBjsgBGZo6mlaQCkBAjoeXD92vUHBA0EGtYPpAJAGnCoNYDSIAsDgYZuwKaIBYmdAMQgRQ9xGOgAxIZQg/OhajEAExL7AxAr4PFqI1TNA3zhgezChSAC6JUGfBqAQaNArIHIGhJwqD9AKJaZqJ1sWLCIfcDiEnhSAfrAgVQDQV6uRxMDhe8CslwIdMkFIOVINS9DvbQfllQIxToxLjyAniVJAXSJZWKAAjBoYEFxAOorilwIK5H8oXkcpwvjgTbbE2mgPzSJbcBVfCkQKBywgQtA736gaYkNEGAAzbE5tdbgAwYAAAAASUVORK5CYII=',\r\n'small/query.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrMVMtNw0AQNZbvMRWQazglFQQqwKmAuAKggogKoAM7FcRUkHTA+kKu7gCXwHvorTSsvCYgITHSk+2dmTffdZL8dzmLKWaXszUeN8AVkBvVAdge3471SYQgovMOmAKPJIBzZ3QFcCv9CjoXJZTDHqDRA4x7nM1F0gONIb/HYwNcW9I0SLACOhiUIiPRKzABlnzHGTNLoH9WBTtLkJrspupXafS5MiVW+l57pUgTBf6UzDgX6ldvHGoTsDJDsbIF2JYmLJnR28jEKwXkEA5ja2MJmdlFxI5l1iBrBnSTGCEjF5p0KGz+SyRY4cv9QqjRO61CKBsNbKgVnV2bLLAptRqtHQjeh/b1SdktvrspnNgeJOfBWS4s1VNmVfpFH73LIHj3N0BlsVzv6HSX3ZBvFmk0BzQH2Z12bGH3c0xihK161CnT/tTfVzqS4Y/Jxgjdb8j+RD4EGABg/JdlqbF6EwAAAABJRU5ErkJggg==',\r\n'small/receive.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM1JREFUeNpiYBgFo2AUEAaMIEJTSzMBSNUD8QMkOQMg/gDECkDceP3a9QZiDGSC0iBNC4FYAEnuAxQ3ArE+0NL1yBqBfAUgxrCEBUpfAOJ8IN6I7BKghv1ASh7JpSAxAahvCkA+AvJhyh8A9S5gQXINNgAKgodIFgQAqflIPlGAGg4CB4B4AROBIHkIcjHU1Q+hmibicQDcy0QBoMEggxqALl0ApPtBLgWKOeIKQ5A39Ik0GBQUgaCIwZpskMKoAC2mUcITFOhDP6cABBgA6tQ+fjF0IXYAAAAASUVORK5CYII=',\r\n'small/redo.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjQ5OjAxLTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6MTktMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjE5LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjdhMDM4MTFmLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk1ZWMzMDIwLWRjNTAtNDZmOS1iMDc0LWJkN2IxMzBlMjNiNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5NWVjMzAyMC1kYzUwLTQ2ZjktYjA3NC1iZDdiMTMwZTIzYjY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6NDk6MDEtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQ3NmEyMGE3LWI1NTUtNDYxNy04MDFjLTFlOWVlMjU0YzgxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OToxOS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PnRK6F8AAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAATdJREFUeNrElMFRwmAUhD8c76aE3PdCB0oFaAVCBZAKMBUIFaAViBWAHeSyZymBDvDywvxGIKLMsDO5/HnZvN19/+tst1vOiSvOjJMIJQ0kjY/VdE6RLGkJdIEKGNpe/5pQUgaMgX6Q1CiBG2AAlLanrYSS7oE5sAJegZXtTaPmLmoWtov6/PoI2dD2Is5ySXWX65BaxQ/T7r8Thsw5UNheBMlz4lsXKCWtEwXDg4ThS2X7RVIOLIGZ7V4SyihqdwqOEfbDM4BJ+POUvP+ITsumpwc9BOpRyCPRHRrkl7kpm+isljf6L+F7eAcwBXJJb8nItOLHYEv6jGSnMUaTSD/b833P9qotlAdgKSmLEIp49t3r9pRtV5J6wFzSIzCLUWkiO3nbSBoAt0lQTRS2qz+vr4ts7K8BAGgkhkLbhmsAAAAAAElFTkSuQmCC',\r\n'small/refresh.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACSUlEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCAWZM7nz58ZGBkZGUDB8PXrV6aDBw+mnT9/vuTRo0fyIHl5efmHampqqz09Pat5eHj+gdQtWrRocXZ2dizMDIAAYkQOwy9fvoANO3nypNXKlSt3AQ1lB1kAAiBxGJuLi+tnWFiY282bNzOPHz8esXTpUlaYGQABhGIgyIUnTpywWrBgwUGQuJWV1QoXF5ccaWnpjyD5J0+e8O/du3fKsWPHImA+AdHIBgIEEIqXQd5ctWrVLhA7KSnJ3sLC4hjMQpBGGRmZj/Hx8bFv377VBrpOF1sYAgQQSqQcOHAg7du3b+wgl4EMgxkE8zIILFy4cDHIMJA4TA4ZAAQQioEXLlwoBdHOzs45IAPQ0ygoAkBhhmwQuhqAAEIJw6ioqN8gxTNmzGBFdx0218DEgTEOFwMIIBQXwjQhGwSzENliXOIgABBAKAbKyso+Ail4/PgxPzZLkDUDw5oJ6JOdW7duzUA2AyCAUAw0NDTsBtGgpIHuRXSXrFmzZiEw0Tu9efPGGlkcIIBQDHRwcJgFTLS/QAEPSo/YDAIBkBwsLfr4+KQgywEEEIqBQMP+RUREuILY8+fPPwiM1QWgxAyTv337tjRIDCQH4icmJtoLCwv/RDYDIIAwcgoIXLx4UROYW84Aw4kN3XUgV3Fycv4KDw93tbS0BCd8Xl5euDxAAGE1EJZroIVDKTCS5ECGACPtpoaGxixo0PyDRRSygQABxEjtAhYggKheHgIEENUNBAgwACVHK8TrKNSjAAAAAElFTkSuQmCC',\r\n'small/register.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXtJREFUeNrUVDFygzAQVDx5QJ4AHSYNLuI2yQsSvyDwA9zRMXR09g9wXpAvkNYp4iaYzjyBJ+SWWWk0cjCTLtHMjYSk29vbO6TUXx9XP23Ow7knkzfh2x2bY+duXo9cfuPcj5zfcF5MAgq7FA4S3ed3ZAEYVrJ/EovlezeaslyA40lsRXYbsQcnZi2WUBJk4guoyWTmXM7pgPEJsOXdUjVfzWBYMwDOwPQgltoAM4tdxMPC0lBd0LAi05xFPNNwQ7BBM7JRQRCYC/Z6/7HXUmzpuzIaSoRnbi7IMkeKl0Z4GyqC1Fp30bLWKUesYP/LPvbo0xHDpAzaL2Q6gMZxbNLMsmxYl2Wp2ra1AQ/0gaY7A4goclAw7UfMotEZHYBZ+7rKqHihszNVZoPiUkzGU2NNvTu7ud0/RbeMz+8UjFgAZf2Oa7KrmNH44yCpV2ScsL/A+J5A79CKEiFwj3tTgB51SS48Dh719t3OGHu+oM3ThIav7sPwP8a3AAMAbXqWfZoiCI0AAAAASUVORK5CYII=',\r\n'small/relationship.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNrklNENgkAMhpH4zo3ACGwgG8gIbCBO4G2gTuAI6ATiBOgE6ATgBNiS/5KzHnhPvtjkj1q/a3v9CUHwdzETvzVpQepIe3xmpIikSA/SEewGuQtpB/YttqSalJIKUk8qUTCFMuR6MCnOHFzTMhSLBtrBaVFA4ewQoYA7z1V5cdz1TEpIOanFlWTEmCgHW+LcEHMHzH/eJyZRyK/wXVlGfRiirBwvvRG5GJPnokED/g2KHdOUwpgDmstIUEOZ6bYjezWg7aYaYbl5EeLQaQS6WgWYqyYcvjEbWt19wovTGNcFG2NMsalHqTZmKSy7d6jGVU1kaCC5dsKHoUFtPwaOyFE4+fa2sYtywSWMeCIf4cps1tpl0Mxjx3Jn1U9fsC8BBgCAwVC5hcjLwAAAAABJRU5ErkJggg==',\r\n'small/reminder.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNrElDFOw0AQRePAAZzCNaYjVOYE8RHgBPgIoUtHTYWoKJOSjtzATpkKaAhdSImIFJd08AaNJbPYq92AlJG+xprd+Tvemb+dzi6sf9xPwdBl754DWYx7AEdRFK3W7+uXrQkhu8bdgQKUYARpCOYQfzTl7FvIxrgE9BbPi1JjIS7XLRdNeUELWaKJhxVZbU1Il+CEtVczt9tS4DmYmGRiGpuCrCmxjVAqnFmuV9YGPoQpeLQQyq+GPnP3ue2ertkMkHscnOuc/iZkIdPOzrj4wIGvp3e51NwfJ2Vgo+PiK8tEc7N6UALpH7W+sXXZ18qq699aRptvuHt8DJ7QaelYmeh6xOctuCKvCIxX5RKc6onyIKzU1y1WDHReRTU3NLKwaTlVtRyAoQ55NcjVQRIrTHkGDr811kqkqjMIpv/xYifmALfZlwADANrWbfLoYoFGAAAAAElFTkSuQmCC',\r\n'small/reminders.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNrEVMsRgjAUFMYCoALxqCesQErQCqQErUCpQK0AS7ADsANPclQr0A5038wyAxFCogczs5OZl7zNy75Pr/ePNRqPImBpctcxIAuwXYEbsCouxfFrQpBtsUlkOU0RsAMSED+bfPoashRbCPilM2wetoxXVsYRwjGk41CNhKQiwQRnN9XXbQlwARyavkWb6Bg3ObYRSoQnjbxyNrUhFPHPGkL5qmdTd69v77hqMoDM4uGMdfpJiIOYmT1BeMeAz6eWV/rWXoqBB8vFti1D+sZVoxiiH3v9ocuy7XqWWXcrbSQCp6rIHZF5wIbaJ7XWI9EamPFFGQj3ymAoV0BMWa/SNXskMtf1csRuGXDanCuFXD4ktlxtT5N5mDISiWreNQ9tSsNI27cAAwAHVWSC59xGrgAAAABJRU5ErkJggg==',\r\n'small/removeannotation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbxJREFUeNrMVKFSw0AQDRRRFDGdqQyymAZXR/iCFIdMPqFfQOtwAYdrUQyq4KjLJwRDB0XQdIZIcLzXeVeumSYgENzMm0329nZv973Ecf54bdVtdg46AUxguXIgnT/N86ozjYpEUavVmuKxrySf2joCrrDnAY+Lt0VRe0MkcmHGSnSCm9xtKMaYMyAC4nJMOSFv5QEZLYKPa8YRqfgh4jLj3y4F+ACTDAAXvqQqIZJMFDetqviipObdB96B/g/ErZ1rmMMwp6gak1kMvCCTsCQjgZ0BH0APROTmDN6beHwFQvhv7ZYpjRRBnkUKVxco5FvOTDFcichJbWmZhK4qMRFZC+X3DUE6zL2+OmIhX5p011rG1VlhT5WegZ7abUuHhZI3lbwtH8/usghaHtk3zJRsgIpDalA+6oxMXsrHpNeE/LFut5LNjmwq+gtJIi9JJBURA81uX/4Cvq7Of8+QGzATBTs12rvQHKeWOiJ1sC5siTSwNVWxbNGT/ZHd0erngKFSZzM83nDQeE83ZVMcCTsHHjTL6t+X2hhr2Gwl4wylP1+SinSz4a//h/rkQrHvWeTdc451/8T/vb4EGAAgQ7tFhdCRHQAAAABJRU5ErkJggg==',\r\n'small/removechain.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNrMlMttwkAQhtcoBVCCOZITdOB0QCowqSChAkgFhApiKiCpAJ/tg32KcwtUgEUKcP6x/kXLhjWypUgZaTTa17fz2lXqv4vX9eDwdjiFCaE76Kr4KHKZ73WEvcI8QtfQPXSLuZGs3XSEyeE7eFVyTuwGOvBagPriCYcnmLFeYc5rE/JSw6C+BQtgyrY5lCLcQyfQDJAnAybhzlpVGQcPMBFUQDk9Fbjk9AHhRleLokNhS+SESWgr6Jxen2BOD9kCGw77hPiOe2NJhS5SzwHbslkHsG8NMJHAqP450IDNAHthz02ZuyYZYe/kl2eSeD4pPa4IrfssDMPKliRJKu5b2EWRJD/rBEshsGlMW0OP30eVpumZI8VncflzwKGMocaOp1YyXy6pLzc93PH3iI2nttTvloXJHLBI/zae9Va/CFwzBcr6BALjEqV7EuuLi31I6JwH3qXSDR+Fr736U/kRYACTjKj1Xd6tugAAAABJRU5ErkJggg==',\r\n'small/rename.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNpiYBgFlAJGUjVoamk6ACl/IG4E4gIgfnD92vUFFLkCaKgAEJ8H4gSqeQ1o2H5s4ixACQUgrUCieR+ghhoAKQEk8QcsQALk7HgQhwQDL0BpkD4DKBvkqIUsUM5CqIGEXHoAGAEHYF4GsguRgqAB7GUkxSDbHIhw3QF8kkzUTodUN5AFS0DjAwQjjhEamPZAfJAEhzyAhnkjUriDzWAhFMgkgIMUmQXNegLUKBwUoJnhA7SQKASmxwuUxvICoCETgHQgzctDgAADAKWHMhBMlz9fAAAAAElFTkSuQmCC',\r\n'small/request.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0MDFCNkQ4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0MDFCNkM4NkQwMTFFNjg0MjdBMTYyQThEMjc5NTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE2QjI2MTFFODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE2QjI2MTFGODI2MDExRTZBRTMwOUM2QjMwNjE4Q0I0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hHGqHwAAAlZJREFUeNqMlctrE1EUxu+dh2SkGGtIoVgFH4khJe0sDEFQgsWFIkhXgcZ1Vm6yMG66kSAB/4FCd+PCoHGhKBV1J0HpMtKCigsfpaErSUITEucRvxvOtOnQZnLgR+Zx7zffPfecGx6Px9mIuAHuAcXz3AEvO52OUalUWDKZ3HuhsNGxAJrg09BYGyTAIjC8E/wEJbAGXnieXwP3xUUgEDjwQg6Hw9fxexZcIi7S/Qy4BX6ADY/gBeHQcZytRqMRiUajf0KhkHDOOHLYp0HfwRYIg1lgCQPgNnjrEdTBOud8vdVqzciy/MswjMV0Or0r0YBN0AGPaPADyp342By46uGKeGdZ1lomk5lLpVLbuVzuQ7VanXId3gTToET5Esm+C5Yoz7LHoVjev263q2GHl/P5/EahUFhtNpuWK3gHvAHnwFMwD76QQ37EhvWxZN5utycgzDRN21UURXd32Z30k9wt0YbIo0pACBWLRRaLxQauS6XSk8PK5jgwxXifkmK2bTNd11kikRjcB4NBWzpiLGdjhmma++3jOFwZc95pcr5DeRblpaJcVJTNtli6W+DjChbBBNXlX/BedAtEnHK5vFqv1zez2exea/mFWP4pcAacpNxOAg3Ojqmqet7N4bDDvo/oM9Cjw2KHSuoENmUBLff7MEFzhJj42HO6fjX0/DN4DDHZe5p8pQ6ZH9PtgYhEIrZXUJyOr8E7kBMtRQfDWIGd3heTJFssuQ0ego9gBUyBb/QhX7FarTboGBHo5Wnu+QuYpOVfJqe+Bd7r9QYdI1KFMlL/CzAALlC6L9WzNAsAAAAASUVORK5CYII=',\r\n'small/resetsearch.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYtJREFUeNrEVM1Kw0AQjkHw4GU9eE+P9RTvQpMnMHmC6hOEnAVJfYHWJ7C5C3oSPJmCV2mDYq9RRDyVVKiCP+A3MgtL3E2xB10YJsnOft98M5O1rL9Y+5dtAesucnZJA5bARTAB88+Ta+f58XUbz4ESVsBSWG98Oy6NgAAbwrlVkqebaZEf33cAXPAnIvCYNAToyATowB1R8PvLp/U2+yhX11cEb9Mh/2Ar/c6oudEk4jZsB9aQmdoqIIILmP9wNelN7mbl2V6+SyAskQBOZCxndchEXWMNmZ0OEmNMzJz5UNYVpJkSGzDRGsXahmZRfQZSBmUO11f21EUxmay9CVCwTHXl7Ft1Y7Ncsycq76dMUi4CSBJaqE+myJbSdMSuVGSSnPIgu3XZgNDhmRyB2AyITdmACIe8GrCI5zCeNzaU2QXLIZmDilzBmQU8Wv15gLpfsFA673GTOupvp20KwBIN2Gal82H1UqjrcnXOfmRRt3RNiZVZo7FJfnMf2poOUzYNvhRC67/XlwADANRPoC6nHryOAAAAAElFTkSuQmCC',\r\n'small/return.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCQ0U4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCQ0Q4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmVlNDY2NzVlLTM1YzUtNGExZi1hMjZhLTk0ZGViZjgxN2YyOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDlCNjc0NDdFOTkxMUU2ODZBODk1QjUxQTU1N0EzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiajKLcAAAHbSURBVHjazJS/S0JRFMevvyAsp0SQBAcdHr6kqSGCloZ+LLnUFlJE0CA4RdIgLf2ChiKMWvoLgpAIiiJsaHjUHBRBU+TLxArUh+jre+Rqz4eWgkMHPjx4777vPed8z70GVVVZO8PI2hxtFzQEg8Fm1glgkycwA97opaIoLBqNMkEQqgvNiUTiL7FFMAcOwCQYBMf0IZvNsnA4XLPYbLVaGwn1gj1QAhPgHniBU7tI/7+5XhvAEi9tH2xpvn2BIS7egTBFIhGTxWJxut1uYygUOjL4fD6tWB/PKgcWwINus3GwQu2jjUsIj8ejIMuPdDrdmUwmSxVBavYymAa7YKcZp6iH8Xic+f1+VigUWCAQuKaS+8EqKIIx8NTKmOTz+fITZTOHwyFTZhI4B6OtitWJdxK8BSM8u5YDxpSfVLIsy3bqIZU9xectA9bAWYP/ae0AcIEueOKCKT0wpRum2GGKqnXZwgeY3JXBOrjQCYrgEtyBFARfIJhC/z4xNhmMzY1+bMpVgFkwD17BBrjSCNIEDOtd/u1yINtivLQTsA1O+ZF75pV49S5Xe0K7NIgcn8lDnm2MjxYppCoZouzaYyZJUrOG2vixe6ycoGKxyERRZDab7Ufw39/Y3wIMAHQPmgiAphc/AAAAAElFTkSuQmCC',\r\n'small/right.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpiYBgFQw9oamkaAHECseqZiFAjAMTzgYaeB2IHahgIAwZAvB9o6HogVsCliBHJa/1QTdhciC7+AYgnAvGE69euf8Bl4H4g5UBiED8A4kagoQvI8TI2oAAN3/2wYGCiQkIAefkg0JUg1zKwUGgYyKuFyOGIbOBCkE1YNMkDMXo6PAANuwM4YxlPwgZF1H5ckYAOWEgIJ6zJhBwDLwCxISzQRwEGAAgwAK8HNpBUnvJaAAAAAElFTkSuQmCC',\r\n'small/rna.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATRJREFUeNrMVDFOw0AQNIQiruLGEl3chip5ge0uHU9wXFIRXoDygihlyvwgLqlwXhBXuDUdEpFiOkpmpQFtcRHeFIiRxnc623NzO3fnef8dF67B0c0oQDMH4/qlTi2Clw6xBM0zOAA3VodXytEerMCAQvfgzirYk8fh/fAZhuErujNwDE7BLehj3ANb+easGsKtCEYUjsGEr2SCB9S0MYdC4RmXvQAzTiJMIVp1DkVBnBTgI2v6HdDSlLJCxqRzOh2CK1WC06G4gBAKhOHT0ZpByQ64xvgT3r+ZBAX4UZL16VDc9cUhanh3zpI9JqqXHXGv2lN2HMWAAbXgBydacOLWJKiEj+yuVHA5BMtOS3ac8VbtS8FEi/2c5Y5IWMNbbu7m5OXQESJQ/nadWQS3FP1bfAkwABjJWe3VXXMTAAAAAElFTkSuQmCC',\r\n'small/save.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNpiYBhxgBHG0NTSFABSBWSaM+H6tesfQAwmJMEEIPYnwzB9IJ4P47AgSYBcuBFoUwPUteeBWAGPQYFAtRuAah2A7HqYIBMOxQZA/AGogRGGQXwgLgTiB0C8AIjzsWlkIsFrIFdvgBqME7DgEL8A8i7QO//RxO8j+SCQFAMZcGlAAg9IMXA+NEI+4PE+CCsSayBIcSEwMg7gch6W4CA5UogCowZSDpBjGZRE/KF5ExTL/UA2vmTzAao2Hjl5McMYoqKiN4CUBRAHAPEPKMYFQHIvgNgBym988/rNC5oUsAABBgD9fztxPZ/YRQAAAABJRU5ErkJggg==',\r\n'small/scan.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUeNpiYBjsgBHG0NTSdECT+3D92vUL6BqA6hSAlAKa8AWg2g8gBguS4H4gPoCsCIrRAcjieCS+ARAHoukF2/yfHC8C9e1H9h0TtcOQpgYeINMMUDh/oEuyAcWWADmGAJMM3HfIySYemgTIAQdon2Ww5BRi9RkAsQC2WN5Pplv6kYNq8CdsFjzhSGxpI4DLQFDU15NR2nygaU6hOgAIMACNmyj7WG5/wQAAAABJRU5ErkJggg==',\r\n'small/scatterplot.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMpJREFUeNpiYBi5QFNLUwGEKTWHCYmdAMVUM5AYHxgg8QOAeD7ZBkJd309IEQuxpl2/dr0B6jKQKw2A/AVAegMlLoQBkIHxFLsQyaUgly2gyEBQBACpB1AMCsdCoMEfSIploCEOSLFaD8QOQCwAxApQmmQX5gMxyBWJQNcYIok7khXLQEMCkVxbAKQOAMUukJWwoYn2PpKQPdSrDOSmQ1DgT8TmWrIMhHrtAjl5Gd3AeKBX7ckwpxAWvsgGghLrATILmQc0K1cBAgwAdgQ6T2jXflkAAAAASUVORK5CYII=',\r\n'small/search.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrMVNENgjAQFcIAHUE+8QsnQCcAJlAnIGyAG+gE6gSygTCBfMkvIziC75Jr0tS2aDTRS14aruX1Xu+1k8m/hze2IJpFGYYVkCnpATgBu/7W318mBNkBwwKogRaQP6ecF0AO0m6UUCErgUavBPMxV74GQjnvWciI6AxssLB2bDrFQBsPWLehnG9ZW7DMxnUkIKGz3FOVIBcuQqqw1WVa4s4bxy5CwZ18O3zHnPgmIUlI5LmMhGC5g4vwxEaOR3w6ZU923CAzISaPsttsIRtZwT4sncZm015YTsO3pNFkpqyiVAqwEl4Ncgel8/I6btVrRxEYyCoD2VzrfG7zaGDIJdr3UxXv2qZUXhV6FKqPfMjVhMCSpP38xX4IMADIQ2O+fdKktwAAAABJRU5ErkJggg==',\r\n'small/searchstructure.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVJJREFUeNrMVMFtAjEQNIgCnA6OJ3ndVQCpAKgAqCC5DqADUkFCBUcqyFFB8grPXAmUkBlpLFnG9pFXstLI8t56dva8a2P+uw36Aib3kwWWFbDw3B1wAPbnr/PlZkKQvWCZAUfgBLjDc/ktsATpZy+hR1YDPFBwdYrwvZTyNTB2/kGCjEQNsEHgEfsmKJn2oNKZuEPcJkfYqDyqo5L3SBjVVvrHjL+jymGi4pn+mZGCmJUgWytxq8QmRWhVTiGkbBU6hplgq9trMzFvtxKSZIqSqHSXikHCvaopVVGS8KBbLXGoTaiskbBQT/KCur4+/Fb/PYvU+Qup4mU8Ak9A5Zo71TauVazUnQKVVspYRQ2y1+ykgPDDtUEwv53XVhzHnT92tFGEbBshqzxlRvN7iYkZRXzTYH+lImexW669V4Wtsf3Ne3hFKDVjDf/yz1/sHwEGAIXFfjZSagb1AAAAAElFTkSuQmCC',\r\n'small/setsignalsequence.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTcyREJCRDI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTcyREJCRDE4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjcwODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFRTlFQjZFODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+maj/NQAAAbNJREFUeNqs1UFIwmAYBuB/04EIHgqCDhZ2E3bsIEHhRShYFBgEHUoIu0g3gyRiHrpGdBqUtpsdIgYtAvHSoUOwU7AOsVJGpyCEvCwV1N7JqKh0W/jDw3D/fHHb931SnU6HDHLRZMCLSiQSdtdEwbxoFDTIw7250Wg0SDabJeFw+CswFAr1C9uCdTiGR5iEFdgG2TAMIssyiUQin1/w+v3+XmGzsGEddevcFVzDEdzBM03Tjp4hA7z1S/QfezdQhLSblzIPdbjosS/ADIw4DVyDAvSqqSfzdmHOSeAEjMOlzduXIM4wjG0gBw/wahNYgqCu62P9AilYgHMHNfwCFUmS5vsFsjBklYbt8vl8p6qqLpXLZapX4CrcwpujvqXpUrVaDYiiOP1X4LBVxDkXrfvu8XgKuO10pVL5Fbhp9ajqNK3dbpNUKpXHxArmcjmu23rfnp3Zo4tuJku9XifxeNzAcVcQhAOO4xQzcAoOYd+aJq5WrVYjmUymiPKJJpNJ0YuJsYzzZ3DiNsycNs1mk5jFzfP8TiwW26MURfn3MG21WoRlWRIIBLqfNU0j1KD/Aj4EGACuJYfgvqMnEgAAAABJRU5ErkJggg==',\r\n'small/sharedrecipes.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNq8lMFNw0AQRb3IBdBBzDGcXIJ9gSNxB04FxKIAkgIQooKkg3BCSi64A3wiRwwVpAT+l/5KK8se4wsjjSa78b79Mzu7UWTY7fEhiSbahQFbIXwhPluA+fU8g68ZTSDsTvHSgJUIe/iMkdB4QN0WoYXn8MaAUX1++jw1GHPj1AUQThDEutWHm6dqRFkI8+MiVJjCF/pdGLA1wn0AI4jAAuO6q5B/nuGZUuVc69Vi8Vab5irJXt8QxnHkjFMuVYIIQCdYKvWEvMNf4RVgZ7/OjfQhId8/q7eZYLkUcn4J0K67xo01akfZo0+Z9ev7PjZAPi3aUvVialdhiiYQkIUOJtFiFnoj8A6gaiwj19NbhNRKzd+Sqq9egwoBS8NGDVIuNVdPfRwIe+kU2tepnfLaxFKSDdyO1jfsn4E6gNafHDZIwvaY+h46QT46d5oHsJmqLmybXCBaY/XZv9uvAAMAoTuReOrsCY0AAAAASUVORK5CYII=',\r\n'small/sharedtemplates.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNpiYBgRwH1XsQKMzUQFwwqA1H0g3U8VA4HAH0oLgAgWEKGppbmfREMUrl+7rgh01Xwg+wEQOwLxBbiBUAASMCBkEjMPG4NYnuUHOTGv80DugZ1uvYXI8sgGGgBtdSRkoHGU035WMW6YxYHo8oxIXibehTkWDKwSPCD1DlB9oPB7AHItCwH9IO/0Iwv8/fLrwvOOQx+BvmmAxnICkJoPU4/Ty0BXN8BiDk0c5JuDMD7QVQuAhtoDmQ/Rw5BsADQ0kWoJGx2MQANRIgUtC4JKkAOg2Ccla+JzISiP1sPyKBqIH7qFLUCAAQAD+0YnNrcLcAAAAABJRU5ErkJggg==',\r\n'small/ship.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNrslDEOgkAQRREsKDkCdpaUduoJ9AZwBU+gNzCeAC2tPILYaaWlndhpBXZ0+if5JJtViYI2xkledoGZv8PfBcP4x+9HDQTAL1E7A1P9Zh24IGbCq+GzzngkKHEE0RuCnWcPzE97WEVwCK4k0F+5TOS+t1U/zYqCI7ACad6l3qEHHCbHNN/lhsUFwpLTAztVMKRATOGIo1yPQVcKlHyH9x12OJDjZFFEfOjzoNpKd2uQsaAJLuxGzmELzDmeQENqLeWLybvJKCor7zm3mbdR8lPOM3IGE9WLJThwTDjf0oqEC+p+h9yYBRu4i4AJnnbtFuy299W/zU2AAQBLfDh6cMxs6gAAAABJRU5ErkJggg==',\r\n'small/shoppingcart.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQZJREFUeNpiYBgFgw4wgghNLU0HIOVAot4DQOwPZX8E4gfXr11fwAQVEADiehIMiwdiBSAugBqGCYCuvA/EBsSYBlS3H+QrIP6PLseExN4AxPlEutAA6sIH+AycCMQBRBooADUMt4HAAAUrAHojgYB3FaBMEP0BnwtBYCFSzOECCtAYBtEXCRm4AORtoCsEiPA2P850iOal9USE5QRoxDQCg+oAsgQLmmEO0MiZSIQLsWYEFjR+PTQGYekRFOgXsIShAlLyOUDIyyCb+4G4EIj3A73EiCbfAKTkgfggKMcA5R3xRQoDNG2BXDAf3XakPBwAlT/IQGTWUoC6FJe8AFJ6pC0ACDAA5CY8Nu7AdukAAAAASUVORK5CYII=',\r\n'small/shortcuts.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFDRjczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4OUNBREE5NDhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4OUNBREE5MzhGQzYxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjBkMzI4MWMtNzg4My00ZGJlLThhNzEtZDIxYWE4YjZmOTI0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUNGNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IvU3tQAAAeRJREFUeNrk1L1LQlEYBvBz86MURQuyKAxpaFAEc6jBoMFA6GswgiZpKvoHWqQiWoJwMTCCUkokmgxqyZqiJDQ0QkIaKqegwShQNL96TpxKQ+oGbh34oZx77sM9733P5UqlEqnlqCM1HjUPFIbDYb5r20AEiY+JQqFAdDodkcvln4s4jUbDN9AGK7AKJ3CeSqVeA4EAMRgMX08olUr5BobgEVphkZZLIBDcRSKRvUwmEzUajQmxWEw4rVb7lxJdwhQL7+Y4rlepVA7H43GZyWR6VigUB3wD6TZc7Ols7ElJNpslbrebILTJ7/fPeb3eMT5vuQuO6P0w8hFGRz6fJyqViv6VezyefofDMfFb4CjswzZMQ678okQiIbFYrMFqte6YzeY1i8US/GnLCzDOahYsm2+HerhFDYlMJvPp9foXl8s1IxKJiLBKUCNs0JaCHkhDB/SBFTohCQPow9lkMtlst9snadh723wL07M+O4ZdFjBBawRPbC7C1iyiXYacTucgevmzFOWB9OZNoEeH1mGdvYAtOIWHsrVRmKc7UKvVjxVHD8QwC0twDTdwCGdsa9WGj/ViOJfLVZ7ldDq9jN8WVqML1h6/jSsK95JisVhxgQuFQnR796z4fxpVPw7/7wP7JsAAwsSU61omF+kAAAAASUVORK5CYII=',\r\n'small/showhideannotations.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3OUY4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3OUU4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkJCMTdGODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkJCMTgwODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+H6X5lgAAAZ5JREFUeNrs1D9IAlEcB/B3liVnxhUYLZE0hHgdHRkIBS0tNhYZ1BBEEF2NUQcRbrcEFY1BQzlIBf3hIByKoEadggJxSRpaghsaLhP1+l489YgoK7d68OHwef5+7/1+78kYhkGqOWykyuMPBqxNJBI/+R0DRj6fJzzPE5fLVf7C4/F8JxALG6DAva7rRFVVEggEyitkWdaadRSGoQHOYQeeLAH7QYCHUs1stg9r2AFnMANRWAceLqDX8v4k7ELus6YMQAT2IAgizMMK3Zq5yh5ohE44/arLYbiFbbqqaWihQY9BhUWa+A7qYLUYwOFwvD2z2SyRZVmqcbvdl/g8AW1wCM9QD8swRhPMwhLdyQ1swkihUHgUBIFLpVKiJElb6XS6j/H5fGaCZrq1Jlo/sxFz0ErrqsEJDEI73dURTKHT3V6v95rjuGgymQwWAxbHEIzTBAewDy+wAF1mAHDSppjzRNM0ORaLrYmimMNKnZWewwit8ZV1MpPJEEVRSCgUKh1uJh6PV3qg9feT5k3x+/3EbreXb8r//+Gvx6sAAwDJBXHVqKW7rwAAAABJRU5ErkJggg==',\r\n'small/showproperties.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDYxRjY3QTM4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDYxRjY3QTI4RkM4MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMkU5RjZDODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMkU5RjZEODZCQzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yNA+OAAAAmVJREFUeNqslE2IUlEUx+/7MEyYBptqUYTSpKF9EFFqO2FAWlm7lrrJRSAibsLF1CAMLexjWVRQGxdBQSq0qhYtSohWgW0GjMqyb4dwnja+1/8M59bTFBS68OM+3n33/849/3OuYlmW+J9DSaVSfszzYNMU+/qg0e12X+XzeeH3+/8Ker3ee5jpzUugTiBmgj2g1+l0FsrlsgiHw38WdZfL5cB8G1yaIsLjYJEesH9gQQeURAXsBHeAxu9o9BiLo/8BzvK3HqfTeTKXy21LJBKNUCj0yOfzCSUYDD7A4nNwBRzhjVIwAA4CJ9gF9oHP8iemaX6CSBu5DNTr9W+lUikhBZ+CErhsy5PGkbwFH8E7YPCpKO/vkUNRrVZFIBAQyWTyaqvVmlVtR2+DW+AmuA4eghmwysIL4AQ4DH7KnJGoqqqiUCicazabnmFXt4LtLLAGnoA5cICdvQ8+APewSx6Px4Dbbd12RHL70JAp38EXLily9jy4C35JIU3TNuZGo6HUarVZKajwRy/GlAmtbQHH2Bgf5ZDEer2eqFQqwWKxSD9bsUdIG05xdKP6kZxd4RRQIxxF2ezNZrPzMGMmHo8/TqfTS7rNFKqxGxztyDYFO9iY0xSlYRjLmUymGo1Gn6F8vkohGuscYZpzaY4Q1DinZyg6cKHf71+LRCKCCtreKXJe5eIWY46sch1aXE4bbiDKf1pP5oeOc5GjGyXo4AJP8m0zckjBzeANiE54OejjFlRO9tqU9+jY73W0zjq7tlvmZYLLlcrGQW2HC2JQMBaLLWHeP+WNTZ3zGreMcLsHu/C3AAMAldy/L/9Zc1wAAAAASUVORK5CYII=',\r\n'small/sites.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUYwMkZFN0I4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUYwMkZFN0E4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1YzhjYzdkLWUwYWYtNDEyNy1iZThhLTQxNWM4Y2VhYzNlNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OTc1NzREQTc0M0MxMUU2QTVFREM4M0EwM0FCNTM2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqu1RVkAAAMhSURBVHjafJVfSFNRHMevmxNhLamRghQzHCUjobZmwVzCUjEzlZFK+RCNpgNBTAmyWghTonxqg1mtXtYC21ik7EGSFNFwZY7QhzZhQ5nFsja3CcNhm30v3I3rvOvCh7Pfub/zPef3557l7O7uEkzPwsLCyd7e3uH19fUrXC7XAz82poVgFDwA3lgsRlitVkIqlabXsZjEpqamajUajaWystIF56rt7e1LmK4DCuADr8FlprW5DGLSrq4uo16vv1FTU/NJpVIRiUQi9doLpsFpYAY5wEFfv+eEW1tbbK1WqwMPSTFyLplMMh3kG+gEOg6Hw88quLy8LMnPz+cplUprao7NZssxfARzoJnmPk8K22y21qyCSLCosLDQC9G/VPhil8v1ArYJ5hBVjDraEtvq6mpT1hyura2dQQiLKdtoNN4MBoMmHo83Sk3lgTtggrIj8OdkPSG1QTxlCIXC3xiO0d4LwC+anaBgFhQIBJ+RM1nKVqvVz/h8vhSFeQVTnyoEbcnhnZ2dZFbB9vZ2Jxr6hM/nO0japaWlG2KxuBl9SFbVD+rBd9qSayUlJfasgmVlZStFRUUrBoNBnY4pkfiDwQCGyTTT3EXgVEtLS3ZBJJ/Q6XSDk5OTHajwUSL7Qzb0E/AcIYf+VxRCoVB4GhoajAMDA09xOnZGEVMPmUsyd6bMF4zfMnL5JhwOn+vu7h4iLwAUiv76IngMHpEZydxwjyCOz+rp6dE2Nja+Q0G+zMzM1Dudzlto7JSLhKr2JBgkQ/b7/YcYBT0eD7e6utocCoXOWiyWDrvdrhwZGalFXjsR+nXq6rKA++AqWWFsFOzv73/rdrsL9gkGAoELLBbrvNlsbpLJZG78JuRyeUAikZBto4HLB3AXvKeWbMDnXjQajUUikap9gshFGN9l3uzsbDE9BJzuB4ZWirGMdOchTUcwRvcJlpeXz6PCura2tom+vj4VcldM3oNU0gPgK03oAGiKx+PTuJkWRSLRXLqf6H8B2I1wOBxSk8l0e2lpqaCioiIXqfi5ubnpRXgJ6rs+TrVMEh3wcnx8fAyHSWv8E2AAcpM7D9W0DFoAAAAASUVORK5CYII=',\r\n'small/smallmolecule.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUVBM0JGNjQ4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUVBM0JGNjM4RkMyMTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwMzlhZTIzLWI3OTgtNDkwZC05Yjg1LTkyYjYzM2M3Yzk2MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRUM2MkZERDc2QzIxMUU2QjY1NUEwMjJENzlBQjVENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlrzuNgAAAG2SURBVHjazNRNKARhGAfwd+zskMOw2YtsKOWw7luzB2VJLpMbBzk4iORCwoGLIykHbOOiOCi7nJSycvMVe3FZUZKbIu0yTTv75f/q2Vo1w9r24Klfzczb/mf2eZ8ZIZfLsXJWBStziaFQyG6tDvqgCg7g/qegVCrFFEVhgsfjsVrnF5fgBt6hAxbh0i4wkUgwTdOYKMuy1foI7EGYzo9h5qdAQRCY0+m07aGLni5ft9AGu6DSer4qwQ8tkiQx0SaQB3TBHZ33gA71oMEz9TVKN9AdDocci8VOBa/XaxXYDNdwCC9QC7MQh3bohW7qdSec8Q3OZrNBuyccBgO24AOuIE1rR6QVFiiMVxp9jFr1sAlGYRUicF4QVli8HQ8wQJviwuj4rQInaVQ2ipjjZVBg2zCMdVVVw4V/uRF4QwdhDt6KCHyFcf5b0zTjgUAgzgNrYJpGgb8dJuz/8Y174nOYTCa/5jAIjzAG/TBFxyV/HPhsbRZc24EGqC41UCL54seizc7+/rXB7pzQJqzRtQm4oF4WXchhmUyGiT6fbx7nQ7BCa5EiR+Zb6brO3G43E/79F/tTgAEA1QN2F9CFBYUAAAAASUVORK5CYII=',\r\n'small/solvent.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARZJREFUeNpiYBgooKmlqUCMOiYiDSsAUvOJUctMhGECQGo9EEuIioq+fPP6zQVKXdgPxBuAOBGI6ynyMtB1DkAqAIgLr1+7DjL0AVAsgRIXglw0EWjYByi/kZArmQi4zgCIJ8DEgAYfAFIf8LkSnwvz0VwHAxOhcsQbCE1zAciuQwKgsFTAlS6xJhtg8gB56QUQWwDZlsCkcgAmB2T/AIpZAJmcQPYJYr1sD3IFEIMStDwW+YNArE9KGApADQSBh1jkLyDJEx0pCuTI4TPwAQEDD5Ji4EaogR+g4YkO4qHeJtrABdBEvQCah5GTFKjU+QDNihiAEU9OMYCWMsjeV4C62hFLgsdvIJrBAlAuyGUX6FqyAwQYAA9rT69Hk8tJAAAAAElFTkSuQmCC',\r\n'small/split.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHpSURBVHjaYvz//z8DNQFAADExUBkABBDYQC1tLVYozQTEjMRqBukD6UEWAwggRpCXgYKGQLYpEL8D4hdA/Oba1Ws3oJoYgez/SIawASlFIBYAYhEg/gfEv4D4JxDfAAggFqg6biBOBmJjIH4MxNeBGi8C6X1Q/BdqmBCQ8gbiUCCWBmJhKP4AxEuB+AFAAMEMfArEL4GYGYgVoNgTiDWA+DPQoLPQ4AG5hgeIbaEuhAGQ654B8VuAAIL5/z0Qn0ULIpDYaSB+AsQc169dB2n6AnXxCajhMHAMiI8Dg+Y7QADBDPwK9epHJEWC0LB6ATTsM1QM5LpKIPZASiE/oRbfAnEAAggsCDT5N5C6CXXNN6jzQSAFiGcjWTIfiOOh7CtQF4PCei8QfwIJAgQQIyxhA8OJE0hVALEMEHcCsRXUABBwhIYrjJ8IDaIcID4HxAuAjgK5lAEggBiRcwrQUEkgBRJ4A/TmH00tzX4guwCIDyBFViNQrgEoB4pQfqgP38LMAAggFrSIAIUXcl6cCDXQAcoHJY8JIAbIQlCsAg1GyQgAAcSInpcZGVEzClDDfiQDNwANCkSWR9cPEEDE5OWDSOyLhBQDBBDVCweAAKK6gQABRHUDAQKIkdoFLEAAUd2FAAFEdQMBAgwAo6CPSnTlJ8sAAAAASUVORK5CYII=',\r\n'small/statistics.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpiYBhxgBFEaGppJgApBSTxB9evXV9AjoEsUDoeiB2QxA8AMVkGMlHby1Q3kAWfJDBsBYCUAZrwBWD4fiDLQKhh+9HEHKFhPETDkL6RQiDCsGYGFgocgzUzjMBIoVksFwKxAJI4LGtdgOYMlKxHQA91AUCAAQDMshndocOCDAAAAABJRU5ErkJggg==',\r\n'small/status.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrUU0sOwVAUfT5zNWjCjCEjXYHaAUuwEroC7IAViBXUDtREhwwlJAwNnSvnJVdTQlLBS07eud9371HGfOo0mg0HWAG1N+u2QMvaeRWbA1G8iXfJpmLrIvqsPWHt7eRsAa4tUAaEh2hcZmyIa8D8HdDho5IfgE/Je+CRnVCaLOE44+4CUzXFQA0meSPyGW37kJNc2UnhTops1ldK0zSnNDnh8mjKCnXyVaLxWFZlTk90B6S2LlLoCbW4ngQF4H0WGUoRUBqP/lAeYa4p2G7Hw3Hpum5V9BBxrR++Pa41NVsgtmf+GbEKqCCAfblb+cl35nMKw+mGz/LzWf9BXmmof5BSFg1bD/jvrJx5w7bi/v+vXHwhJzLfPFcBBgBq9WgSF2oXlQAAAABJRU5ErkJggg==',\r\n'small/stocksample.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGRjBBMUFEMzczOTUxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTk5OEU1MDhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTY0RjFDODhGQzQxMUU2QjFFNTgwQUY2MTA3QjgyRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWM5MjhhYTgtMGNjOS00ZjMyLTk4NWEtZTk0ZGJmMGJjMjRmIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZGMEExQUQzNzM5NTExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RI/E7wAAAf9JREFUeNqk1E2IEmEYB/DRVpc5ZIl4ES+57RSCLR3azIMlshpLQYKnoEOBkCDDJsVGeVuEVlgHOoQEVhAUZBDBgrcQIujjENWh8WMuHYK5uCdndfCj/xuPkRHq6MAP5cXn7/vxvGPyer3cHI8pnU4P8vl8sdVqHZUkac00Y+AKbMNBt9v9o9Fo+K1Wa8/hcLw64HQ6jYYdgjJ86fV6crvdDsXj8TBmqNRqtR3zDLM7Ai6Qut3unUwmE0BwtFqt3vP7/YYDT8IT4OGBxWJh9Vq5XBZdLle9UCjcNBJ4HSrwFs7BKV3Xsx6Pp4NzqKiqOmg2m9zCFEE2uA+XYAMegxUUnudvi6J4VpZlIZlMXhUEYWLgKhRBhzPwncaewU/sXcxmsx1LJBJvsJefWMG4wBRsskJ4R2EibMFTuIUT3s/lcpzP5/tT9L9AOy0xDJ/hBFjgEcRoL58Pf4zQkeJ/AwPwELogw3E6iCjs0XLr4/bo71O+AS9AZVcKDsN7CMEuBCeFDWfIlpODK/AR2F38RuNB+qPStL3FZngB1uElCNRny7BI/VYy0vksUKG2YHf0A4W8pn1TjN5LtuSvcBeydBgpCpzpYYFOmtVF6jl9nhekmd5rbOPPzxv2e4aapp2m70tGi1HL9fv90cBIJHINn5fp0ht6Op0OZ7fbR8Z+CTAAEV6dfxJjodMAAAAASUVORK5CYII=',\r\n'small/submit.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjU4OURBRjY4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjU4OURBRjU4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlDNDQ0RjMyODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjlDNDQ0RjMzODZCMzExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AZrThQAAAhtJREFUeNqs1U2IEmEcx/GZZSXLaog6bWJ66SBUWF2kWsHLHrYMhCIQggK3YqjDsof2tLIRbENzkN5I2U4hdrDd9hAIdYiUKJCQEGqJDILuFbm+bLrfBx5hFJVwd+CD48wzv3nm+T/zjNpqtZSt3EYLhcKmAlwul6NcLh/0+XwfbTaborrd7qHDVFVVnE7nvWKxeCkcDt9KJBKG6vV6hw5sNpsX+Jk2TTOayWRMevh7M4HHK5XKm3g8PhEKhXLs7/b7/asjQ4btwENEPR5PrtFoKLqupwhcHh0ycBmfkXI4HEosFpsqlUpaPp8/Zw3U8Os/wq7LHl6x2+1KOp2ezGaztw3DOMoYrrXHcBfe4x2uod4n7DSe4Bh+UJQ99Xq9kEwmZ4LB4HPRQIzhTjxDGvvwCmM9wvbigeiZCMO2arW6EolEFtth7cCX+It5nJX/8zhjCbPLcUtgSR4z8I/5d6fjTcF+/MF2rGEBq3iEA7iPu1hH++LzGMcJKrxuDRQ9PIQvyMlGYhOPcFL2+JNsMylDj8hxvIFK97iMyIPTMJHBRXnuuwwRhZqV7cRTPMZVvO25OFj2U/gqH/EUdFntKcvNX+AbnvabU91vygcExCKC113V1uX8uzxw+epxTBRmAjdltaOimpjDYVQHBvJS9zu3IIu1aOnZT2sDcS2TuzMwEAgMuuGSLEYYK90na7Waomla5xq51Z+ADQEGAItOp94TaMWvAAAAAElFTkSuQmCC',\r\n'small/subscript.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrsVL0OwWAUrZ/BaOnOyMIbYLPxCLyBTmKiT4AnqDfAE9DNppPaGIkOX0ebc5Mj+dIILQuJm5x8t/l6z73n3KaG8Y+vi1TSglK5lMfRBgrAzN/5R/0++8YQPaAFCNEKKH5KuAAmzA/Ry3RSNkj0mI6B6UsP4dEIR42PNiAEcz4rwAKGkoPcikMoZm8BMX8NuCSQ6AIVoMNGMnFDr89ECYNLoEzTvCJtcpNVICfeoXiAuzPyJRu5eP8Y67PBpLLBuia1CEL1yuNnS3G13ItD9lCy5qNDqRIFSA0hb/PuhA6XorgYiSEbJSNEUU/zzuZmDTZwEkuGtD6OE32zuPXwLp/S97/7+7oJMADFjlXZtLH+rwAAAABJRU5ErkJggg==',\r\n'small/superscript.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPhJREFUeNpiYBgFgw4wogtoamk2ACl7KLcRiC8A8Xoo/wMQJ16/dv0DLgNZsIgtAOJ8IBaA8g8CsQOUjdcwEGBGF3jz+s0HUVHRn0CmBxArALEBEHMA8QagYZWEvMyETRCocQKQOgDlCsC8SkwYMuGRO4jEvkDIqzi9DI0YkFfnQ70KAgrAYPgIDI4T5LpwPpJXYV6vh1pEmoFATQVIsdqIFHYCUItAahKA+D0UFxBKNvZQV32ARg7IgEIg5Q9lBwApfSAOhKoHpdEJVMkVINcB8XpCLiTWsAQgFQ/EjsQmG0KG9UPD2IAaLtSH5vF8KP/A0Cm+AAIMAEwyQyPhuw/2AAAAAElFTkSuQmCC',\r\n'small/swap.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNpiYBiSQFNLUwGIHcjRy4RmkAAQ9wOZ94E4nhwDGZEMCwBS84FYAE3NBiBuvH7t+gViDGSGMd68fnNDVFSUE8iEefUDEHMAsQYQZwDlHgLVXCDahUguNYC6dCHUdaAgCIBKGxLrUmwRI4DEXg/E/0E0yS7EFevQiGIAupCR6FgmkHwuQMUcyDYQCBKAeD+UTgTiQiB+gE8DCwEDP0BpfaBXG2CupMSFG6B0ADT2GSgyEOiqB0iG7oeFHzTWC8iKZWjyAYUjzIUPoLkJhA+AwhZqMWpOwQWAueMHMJesBDJ/Qg2VgOYgEAAlJweQPEgd0ekQzcUOSHl+IhBPALrwA6XF23xoYh+CACDAADQxUgKtN3rqAAAAAElFTkSuQmCC',\r\n'small/sync.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrkVNFRAjEQzV0FdODxiV9HBR4VcFQAViBU4FGBWMFhBUAFQAXyJZ+XDqADfasvzroTvNEvZ9yZx4bs5mXzsjnn/rolP0nuXfdyuA5wOL4cz78mBFEJ98C/HiiABUhnrYRYLBVMQiWAVLIFbkGwZE4GtwJ2ljRGuOVwD9xxPMfCRWTjBugj5sN8GtFIMEJSJZ6hpd2YGq6BMlohyCasqIPk7gU5c0rguUY2vQJm4ZJSBmq4e+BRVeUo/jPwSohutYrvuEnDgj4qAxpqok2OcuIFOfpAXBqpCuD0Lhl+Vp/sX60xC7OW1qrkpCnbw5t4xvm1mtM508gGcvwspcg2GHrwkt3YY+u22ciFGA2FbPANYc6KtI3lFIm6ZUmas/tD1bVq8orjmrGB0m/KLuknZnIIPIUnxjYpqZ8nkWdrneVCWYjjYzi0fRfCmy2I3L4svq7/bG8CDAAStHeIzovtmAAAAABJRU5ErkJggg==',\r\n'small/table.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM9JREFUeNpiYBjsgBHG0NTSVABSCmSa8+D6tesPQAwWJMEEIK4n08BGIG4AMZio7eXBbyALlrDYAMQCoICGioEi6gMUw9ggOQOovAMhF/YD8X5oJCVA2f1obAMoez/dvQwChWhePoDk5QNIXnYcPl5eCMQHod6DZy2kIICxG4k1UB/qJZgB9kDMj8a+AGUzQC3Ha6ABNKAPogX6RyT2RiQ2QQMvIHkNFssXoHwY+wNakOA0MB7JoHg0VxtgYcPULcRm4AJcthJTHtKsxAYIMAC9Bz03MXZ4VAAAAABJRU5ErkJggg==',\r\n'small/task.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANxJREFUeNpiYBjsgJGQAk0tzQQgFQ/EF65fu15IkYFAwxSA1H4gVoAKBQIN3UC0gUADHKAGEAsOAC1wRBZgwqEIZNECHIZ8gMo7YpNkwWM7KLweYhG/gM/JOA0EuuIDkGogNZaZSFEMDGMDIF5PtoFAzQIgjBbjGylxIciQ+1DDQC7bAAyKBWQbCNQMigBQursPTdiJhIKFhYigA8X2RaBhE4gJZxYcYQcKKwc0sX40ZcSnQ/TUj8NSB4qTDdXTIblhqAD0DjE5RJ4YAx8A8UIiHQPK5wdpXmIDBBgAwCU/jAlLjQQAAAAASUVORK5CYII=',\r\n'small/taskdetail.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXRJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/6BkHoWAoYJAKnzQCwgJCTkv2PHjoV37t4BWcCQnZW9gZGR8QJeFwINSABS8UhCIM0KvLy8DNLS0gw3btyAS4DE4uLiGnOycxqQzWBCswBkwAMg3gjEDlA+g6aGJophIPD582eGRYsW1Z86dcoBn4Eg8BAYVhOA9AEQB+Syp8+eYg0SkKFbt26NJyoMgYY6guhrV685aGlr7Q8ICGDg4+Vj0NDQYFi0eBFDW2sbQ1BwEMPHTx8ViI4UKHgAcuWGDRvA4QZzWXwCxGHsbOwfCHkZNdYYGR/o6OgcgBkEwjA2CDg6Om4kyUAQ8HD3KJSVkcVIg2GhYQs8PDwWkOplBqCmC////zfs7OrMf/HihQHIm+8/vDdYtXrVQpISNrrXgVQhUprdT3ROgSp2wGN+I0lZD5ZkCGRLrC5konZpQ3UDsXnZHuidBiL0KhBj4AESHLMQWpDQFgAEGADtF3fap2ucdQAAAABJRU5ErkJggg==',\r\n'small/tasklog.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASxJREFUeNpiYBjsgJGQAk0tTQUgFQDEC65fu/4ByAex7YF4I5B/AF09MwHDBIDUdaiBFqKioh+B9HwgvgDEHUD+yzev31zA6UKgAQlAKh5JSAGKkcEHIHaEss8DXYliBguaYpDmB0B8EYj7sTh6AhA/BBkECgKo4Qz4DASBh0BbJwBd6w9kOyCJHwCKF0J98gHq9UB0zUy4wg+o2RHqnUSoSwKRwjUfyfsEXYgewyCXGIJiGCo8HxosH7DpYSKQahKgyeUC1IIGIGUAdTUDOQYyQCMBZFgB1KuBSK5lIMnLQKAPihigYflQbybCXEuugY3QJLSBkEF4DQS6aD9akqkHiqFbRLyBoCRDRB7fT26kkASobiA2L9tD0xshoECMgQdIcMxCaFKiLQAIMADT6l0ikc8pMAAAAABJRU5ErkJggg==',\r\n'small/taskprogress.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNFMTJERDY4RkM3MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZEOEMzMzI4RkM2MTFFNkIxRTU4MEFGNjEwN0I4MkYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU4QzYxMDFBODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU4QzYxMDFCODZCMTExRTY4NDI3QTE2MkE4RDI3OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jWiW1wAAArlJREFUeNqklF1oklEYx4/fZvhRIzKbH9VFDHGGNYhuKohWMRG6CKEWy7oSgliMGtEHGqOiG70YK7cr6W4KDiJ24ZaB22ATIh0JTrZJdqeb0+bMqf1feS3zq40O/C58nsf/Oc9z/u9hlEol0mr19fURn89HBAJBozRnc3Nz2OPxPOjs7ExSASb5v/UKXF9eXlZUAjsVZIFuIK+KWcA9sMflcnXvWJDJZFZO8gg4wX5wFzymEnw+nwSDwZ5wOFwuZNcKRCKRjng8rmIwGNBi5lOplILFYp1D6iR4CV6A9+AduITcPtSfSSaTHfi9+JcgdiEGg8GmVCo3JBJJNJ1Oq6PR6HEej3eVLnkGRsApcCOfzy8Yjcb7iUTiu1AoTNWdEKchSGbHx8efajSaRYfDccJqtb7hcDjnke4BWcAAInAM8aLT6dROTEzMov5b3QypeaEFsrW1VfYIdv+s0+me5HI5qu4HXfYRPARakAYHUX+kosFudSFog7S1tU0WCoXJBmnq1EEgBoXd2qbR0oDZ2mDLE66srPACgcBNWINDt5wBG/T/jlK3Ci7/U5CaI26QDA0NPYcdekUi0Rd8onuR4tEmpzpbAF/pWEtBhlgsTk9NTZ31er235HL5aYgu0Qb/XQNKVV8RaTpDtJdzu93K/v7+YbPZfKerq2spm83WljV9UdgN2s3bbDa7TCb7qdVqszMzM1fY7IaToUQ/Vd9wnaBKpSLt7e2H1tfX2Wq1emR0dPRiLBYjMHDdWMA2fcvFpoJzc3MafH66sbGxa3q9vuw9k8lEpqenm72H5Tex4QxXV1e5AwMDb7lcLl+hUEQq8WKxuCtzlgUzmQzTYrHYML+MVCr9AIvwa56vVmubHsGflkOh0AG/3y8fHBy8bbfbX8/Pz1/AJoep3NraWtmXTRYlRNXlK4FfAgwA4/DyMw0KxFwAAAAASUVORK5CYII=',\r\n'small/timesheet.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATtJREFUeNqsVLsRwjAMDZ8B0qRPC1VGYAQoqQgTABMAG8AEkAlgA0JHmQpK0sMdlFDB090zZ0xCTA7d6ezI9oukJ8lx/iyVoguNZsPFEvAzPewP6c+ABAmhA6gPjXnUElBoBJ0B/FoICDDxZsWHczxaG+cCOqbXHZzH38ILoBfo0LBvCKTbQujDtFcNzAW9mhXlFneWWPoSDVP0Dih/xHLFxYktowSVkIdZHgoB8xKVMuXbD8DAJMDSy0QiI5lOXWMuySHKJ6MD7LOupFT3BWgpAcvFlCivZB5l2w1vjypkPYcJjO0SYALkMpdvgJHO1g8iaVhnsSw15ZtdUuBdyP4eKVtNbc6n883zvK10C9Y7vncWYNJZXRVu2eGg2G5lDYdv40tC77G+Eq10HHaU3fjKKWzfdsD+XZ4CDABHRHfnHd4hFgAAAABJRU5ErkJggg==',\r\n'small/touchmol.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPGSURBVHjaYvz//z8DNQFAADERUvD+7w+G2e/PGVS+2qfy6PdHggYCBBAjLhe++/udYfOX20ILP1xsv//7Q9qXf7++q7IKtSYKGHQH82n8EmTmZGDEog8ggDAM/P7/D8Pmz7cYgAal3fn9vv3P/39C/8FeYWT49f8vCF8z5pBMrxa1OWLJKQ0URTUWIIDgBn7795vh2PfHDLPenzO7+OPlzN8M/wyAmOH3v38MrIwgTRCN7IzMDF///wbSLAs8uZWLMwVN3mmxizCwMEJCDyCA4Aa2vjkitPjjpa7P/34lczCyMHwDapJk5mFIEzRiAGkAgas/XzPM/XCB4dWfr2ADvv77/VqChac4W9BkMUgdCAAEENxAg3szD3z499OehQHkgl8M/jzqDOUiVgzPf39huPXrLViNBpsIgzgrN0PHm6MMW77cZuAEWgwKIlkWvoITikkTQWoAAggey3xMHF9g4STPws/QLOrAoMAqAAyGJwxZL7aD8VFgkIDEQHJAQxh+/gcFBzMDFxMbJ8wcgABigTH+g0OJERhq/xiKhC0YRFm4GN7+/caQDvTKp38/gTL/wd4Hxb4YCzdYTd6LXQzMQAP/IUUsQACxIMcQyPs8jKwMyqyCDMBkwiDAxMHwF2hQtYgNkPwPjmkuoDdBcipsggw8TCwMv4GuZGZEJGeAAGJCMKBMYGQyAmN12rszDKs/3WBgA7oAhIGxCqZBYiA5sH8YIYnm7/+/8BQPEEDIOeUjUAXQ9t8MD359YNDmEGVIf7GFYQMwTcLAJiAbJKbLKcZwH6jmy9/fYEP/MiC8DBBACBcyQkKSGWhnz7vjDIpAb+cImjKs+ngVHBQgvALIBonJMPOB1YCSDnpuAQggpDD8z/AHqIkNqAiY1RimvDvNkCCgzyAOjAAmRnDKZmgXd/r/ApgGp70/w/Dk9ycGbiZWYFr8AwrTXzBTAAIIbqACm8CmR78/efz8/1eICxgxG77cYDjz4xlDPNBQORb+/yALH/35xDD/w0WG538+M3AD1Xz+++uXGCtXnz+v+kqYOQABBE/Yb4BJZNfXezzzPlzIufvrXcX//4z8oCT0G5rWkL0G0sHKyLTPglM6t1LE+poKmxADKHeBAEAAYRQOwOzEsP7zDX6gS4oe/P5Q9I/hPw8jtAiAqnyhyy5ekClktNKBSx5uEAwABBDO4ustMAFv+XxbaMmnyxXXfr7JAbqWDVjKTIzn16t35Vb6IsDMgVUfQAAxEiqxQS6e/O6UBNCNQrlCpte4gBGBDwAEECO1qwCAAAMAGRmPAZHf6o4AAAAASUVORK5CYII=',\r\n'small/translate.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR1JREFUeNrMk80NgkAQhdVwFyuQK56gArUCsQKhArUCYwXagVIBdgAdCBc5SgdSgm+SIdksLC4YEzd52WRn9sv8Dgb/foYqgz2zfVwraAGZgimBwvyRX7WAANHnCLKgIwHwuRBsHrRh+xq2VAnkDzFETns4ly0Z7HAdoKUMFZ0ikm69CAo9xbeRYLS4XoEuEJGd+a9XA3JtkrY0FSeEnCYg1S/7dmxEIEU27cEYq4A0Xx53usuhUt1qQG59yqOg2+ULrkIcG0PyoQ7f4ZipNkGY1xNH537aFOpYDOBEejNZc8jnbIJqi1p3GYBXtQGcFs1n9THlXW7cDkORFTXIAWzLM+bqzqcKmHGNCo607DOHcoSdYW3AtA/sJ+ctwABl3Wx6tCQ7pAAAAABJRU5ErkJggg==',\r\n'small/trip.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNrMVMFtwkAQtBEF0AHkCR9MBTEVmFSQUAF0AFRACZgKsCuwU4GdT3gGOrgSmEFzElgWnJ1HctLorN1jdm72Fs/7izUcDQdA4HK240C2w1YAmb7bE0rVDHgRQsQ+Hv2m+6QgyZLj99GowB7b4DdXLp8RNPawsl6BU+Mr42o9bEtgVUkxvmPXYcPaSSEOh+oq1UxuCnAFikWIFXVPqVN5awd8EhsomAL0MCcR8zzHGEDSlIURv1Pqi4zBBRCTTDkqjdTpOWBUjGdSkOZSaN/mG2InX5V/dNCIKJCyT6APnNWMd3V+Jj8TKaU9fJ8Tq3AroisJKiU3VrA5Y5F6thlSF6oIv2Pk5r7D6IXqttFV47pZZ54D0HV8f7ab+7okvbtrygN19CmTb19SarvfalIymX/WXupfJ2hMaH2pjJppM9//a10EGABEznV5GITLngAAAABJRU5ErkJggg==',\r\n'small/undo.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTEwLTI4VDE0OjM4OjA2LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTYtMTEtMDNUMTY6NDk6NDUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE2LTExLTAzVDE2OjQ5OjQ1LTA0OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjhjZGM1MDEzLWUyMDMtMTE3OS1iMjg4LWZlNmEzOTQ1NWU2YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjdkZjlmYTFkLWQ5ZTMtNGE5OC04MDM0LWVkZThiZjI0MzI1YzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZGY5ZmExZC1kOWUzLTRhOTgtODAzNC1lZGU4YmYyNDMyNWM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTYtMTAtMjhUMTQ6Mzg6MDYtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI3OTJmOGM2LThhMjAtNGU0Mi1iZTZmLTE1YzU3ZmYzOTIxMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNi0xMS0wM1QxNjo0OTo0NS0wNDowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pp8aElQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAUtJREFUeNrMlMFNw0AQRR8oBbgEc51/cToIFQQ6CBWQVECoIKICUgJUEFMBufxzUoI7MJexFKw4BCkSjLSyNDN+uzP7Z6/atuWSds2F7SRQUiVpdRGgpDnwCcx/A7zq91BSCbwCJXCf0M4aoAZebNc/AhP2CayBZ9tNvwXABHhK8EM/Z9TboMzve5coadIF81RbSeusYgOMfyp5Bqy6EwA7YH+w4YvtpaQige+2l4OXYnsN3GS/dule2B5nT6eSVlnBAnj8BmjbdnBFxCQiNhFRHvjKiGg7X0TsIqLq4qNTEsie1T3fXlKd5e9zFX8zKQOCnwAVsE1Xlf0+KptToAK4SwUsbDepiMb29iRQ0iYF3LcauLdd5warlBbnnPB2aLxyYl6BN9tv5wIrSX1fAUyBWY7msp8wBNzmj9MjsQ/gxvb+rNfm373YXwMAoZiruV3mBv8AAAAASUVORK5CYII=',\r\n'small/up.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKxJREFUeNpiYBgWQFNL0wCIFYhRy0Kkmf1Q2pGQQkYiXJcApObDDLx+7foBsg0EGiYApM4DMcy7D4AGKuLTw0TAgQVIhoGAAtCSArJcCI0EkOsE0KQ+ALEi0KUfSHVhPxbDGKBi9SS5EOg6ByC1n0BwGAJdeYFYF/aTkJTwuxAtmRACgUBXbiAl2YC87YAm3Ag0pIHcZEMyGDWQckCo+FoIxAfRxA7QtTAGCDAAUG8nQUUWYkYAAAAASUVORK5CYII=',\r\n'small/upload.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUeNpiYBjsgJkYRZpamg2ioqIKb16/uUBILSMRhikAqfNA/AGIDa9fu/4Bn3omIhxYD8QCQAwyuIAiFwJd5wCk9iMJwVz5gFwX1qPxBbCIEWcg0HUJQMoBi1QC1OXEGwjUAHJJPx6H9JPqQpALLkAxOjgACktcriQ1UhiAEcJIabIhCQx+A1kIyH+ARsLAAUa0WDUgkP6wgUJgzF/A5WUBHLkDHxBgGFIAIMAAvi8mebj7/9cAAAAASUVORK5CYII=',\r\n'small/upload2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXFJREFUeNrMVDFOw0AQtB03dG4spcOUoSIviFPRhheQdHRJXmD8gpiSCv8g8IKYjg5XpMxRk8JPYFaak06nuyRQIFYa3fl2d3Zvd31B8N8l/Inx4HJwhSUB2u3Htvs1IYgmWFb8VEAOVCBdHiWEs2Qw1ZkAkskGmIGgpk2GZQ00NqmLcMPtKzDnvoRj5Qi8A4bQKX0eOWokuIHRvaxU1XZg1vAZmDgzBNmUGSUwvjixthL0HFjqJkVUPGEpgAcjK9MxFzg4G95ox4SCkJuCteg8mbzzmkOPPmeTxr00TYXsEcZvHmMJeAf0Yfu5/9q3tg3OFHRn2F5HHA/lIUuM+RNZ8SzwXD+LOGeZx2jBgFoSnnlFCF+khnZkfo+s7OW6I0+Wt2IbGl2WbpWc/s4ajYKfY+gaR2kWurExuzfj4ZzXqk+cwzUT0cFUbEy+/FqVw0+x4AHrbUpJ3/boa2P80y5pXS+NSHzAqTyg6/7sxf4WYABv3ohEFCc4KgAAAABJRU5ErkJggg==',\r\n'small/uploadimage.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVpJREFUeNpiYKAyYCRWoaaWpgCQOg/EhtevXf+ASx0TCZavB2IFIN6PTxEzka5rAFIJUK6EqKiowJvXb3ZS6sIDSPRHigMb5Eog/g91Lf0AI5GucwBS9VAuKIYLgTH9AJtaFiyaQUnDAMoFaZwApOdDY5gBydBEgi4EGgZKGgEk+nID0NJAXLEMSrwMcbFxDOvWrsPQaWZqxiAtLc2ATQ/eZHPjxg2GRYsXwfkBAQEMJ0+cZCgoKGDYvWs3Q0VFBQNJOeXU6VMMGzZsALNBLiorLWPw8/NjMDQ0ZBAUFGTQ09UD+4KshA1yHcjwAwcg6frDhw8MjY2NDM7OzuQZ+PnTZwwxAQEBBrILh7379jIEBwczJCRAsrKBgQFDfX09w/oN68kz8OnTpwxV1VUMLS0tDP///2c4dOgQw9ZtW+FhTDBhY3Xl3r1gTAxANzARLUcQAx7QtHAACDAAq61o6iTixvUAAAAASUVORK5CYII=',\r\n'small/user.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxQkI5MEE2MTczQTAxMUU2QTY4MDk5NDA3QzY5NzQ3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBOEEyRkJERjhFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBOEEyRkJERThFQUUxMUU2OUNFOEM2QUM5MzFCMTgwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE5MWMwOWEtNjRhZi00YzI2LWI2NjYtMTk4ODFhZDUzODc1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFCQjkwQTYxNzNBMDExRTZBNjgwOTk0MDdDNjk3NDc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0bUDagAAAmlJREFUeNqUlUuIUlEYx6+ajzESH4smWlgLaRAGBsTeqwhkKAiERpHARasGxEx7gIuxcGACoYUJNm3TQlDSygjaSBQ6goqQiUMUNJAoaiGaclP7n8EZTK7OnQ9+m/P43fud7zsczmAwoCZFNpvlO51Od6lUui4UCmcw9AXYQYLMt9ttKhQKUVqtdnfPgUmyRCIhsFqt661WawYyE4Z+gVPAAx6AV0z7Jgq9Xu+t2dnZgwqF4moqlaIgJcMbIAXWSQJga3wfl0lWLBaF+Xx+0W63r8nlcqrX641OE2kGXGLayyis1+uHqtXqH5VKtTUm24nP4AhrIf7qt1QqFW1ubh7j8XhMSxbAD9bCubk52mg0Ri0Wy71MJsMTiUSj0+eBGrxhLSSBCj+CiK5UKgkul2vA0AWwAp6Dm6DMusqdTodU+Wy/3z86rOoikIHvw1TPgQ+shW63+7TH43m6vLx8G38YH2kbEgrwEpDDXd0zZTT04UAg8MRsNt+FNC4Wi8fbpgaWgBFcnCokqbpcrhWlUvnO5/O9JhWmaZopiZ/gDrgvGqvYf8J4PK7K5XInbTbbGp/Pp/aIt/hgze/3X2k2m8zCYDB4GRf9k06nq1MsAuf6IhKJmAuFgoBRiPbQSCSSj2NZTIsNrD2BfccnFUVmMBjKFPsgmZCKyScJ/6bTadE+hIJh+9CMQlT0K2JhH0IVOqOFC/CNUWgymZ7h7l6LRqNnksnkdv9Nqbay2+2u6vX6x2q1urYzyBl9ArCAcjgcS+Fw+AZEDY1G0yyXy/1Go4Fz3/42WcwB5DmQ4Ql4H4vFHs7Pz+86/gkwAFBM6JNkNOVGAAAAAElFTkSuQmCC',\r\n'small/user2.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO9JREFUeNpiYKAyYCSkQFNLsx9IJQCxABA/AOKJ169dn4BLPTMBw+YDqQwg5oAKgQz1EBUV/fjm9ZsTJLkQaJgCkLqPQ/oD0JWC2CSY8DhQAY+cAC4JJmpHCk4DgV46AI0EbGADuS4sxBZ+QJxIsoHASDEAUvNxhF8/SckGaBhI03k8gW8ATDoCwKSzk1gX9uOLSSgogPoCv4HQ9JdAZKTmE+PCABJSSQIxBtqTku7Qvc1ESi4gJtdgM/ABiQY+IGTgQVIMA+Yo/AYCFSwAUguIMAyUYwJJKb4MoOFjgFS4KkBpEL4AtPwDA60BQIABAOjcOIMmKxJvAAAAAElFTkSuQmCC',\r\n'small/view.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWNJREFUeNrsVMFRw0AMPLsCuwL8TT5ABYQKSCqIXQG4ggwVkFRgU4HTgU0H5kOepAR3ALuZPUYcxAMPZnhEM5qzJXm10kl27iT/TqIx52Q6yXDMoJlMA3S7e9ntfwUIIIKsoBfQDvos1xl0Du2h9wDuRgEBlOCoxKrEB/U3yRiTK2Et4OELIALJpmVJAhtkW4mVM8y2akcj+7UHjQMwBhcGrFW5KWxMvmEF8OXsI/RSSVoxd7EeGoGtTXUPtKmHr4h7w3kOXch3EBLwoIeSEcieJXAsgl4RIFWymXGl+rj0lyJStHXxyNSwJ4nOD5t6lQX2TPoUGfRe9D3DSoCFSkzUQ7K9Uf8+sYOtjAIjB9ZfirfxfFSeK80mb7XXxVWWTBTMVyPqhelPHmxKrYRzgfG9PLopCLzT7PHmNpy5wE+gWzEtQv+x1fPbsDTr5/Q8qAVruyE/+jkEu03Zj/0Y/kTeBRgAWiiuVs9VQyEAAAAASUVORK5CYII=',\r\n'small/void.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsVMtxwjAUJK7AJZgjOZEOoAOoIKECoAJIBdgVGCoIHcSpAJ/gCCW4g2Q3s5oRsmQBw5vZ8Vh6Wr3P6vV6T7aXmMPgdZDiM9Tv5XQ8Xe4mFMkHMAcyoNLWiKTADshB3kQJQcZovnSwwKG9s0/SlaKeYr8KEorsG6iBFM5vHaVgBiUwtkkTx69UVGMdKkOE8NniM2M2KtE1oW5s4LjWEkknWu8iZXQLX4RsQGE5s+BTYKNShOxTZ1s1+Q3UagGc7bQ8PmdzaWJ1rg6klWuv7IiSikh9TQkZi5/h4nXMMVEUlfUafFE2Ip0rG9co/saNsIbzpIOUaS8lk8zRbqr9K8Kdt1ttmWz1kozx1exbL0VdPEjYeWRgHNSoH8oK6Jt3nXh0t6JUIrX/F706P7OHxCPDYag0R9Hh4KTPKN+lL6NRo4Ti5vHlIc8ki5sG7NPtT4ABAECilGSW3KE3AAAAAElFTkSuQmCC',\r\n'small/weighstation.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWFJREFUeNrEkzFOw0AQRRNDTxrXuCQ0uKQjnABzgjgnCCnpaCl9A+cEhBPEnIBNQ+gIdSJhbsAM+mu+VrvGSJEYabQ73ufZmZ2ZXu8/ZHg6HHRlo45cJk6zfTocQ//uUCIZieZkJ7KMEGVC31PmrPTpJ3t4Iapv9gj7TJ1hvxBdEaf/ze3Z+mVtDmHUWI8QjdrHou9wsHIC8XE/EVIaN7hZwVpunAWqnuNNjWYj3CT0hlOkUNAT+IS5zNtWKMYb2c++R0cxPkJc5LTGnGzdXwWiK8kuuKUimoTcAUtPqwxQ8YI4rXxqORthjrJvLCX7Gk45bXVmPNwCkTcOp066nPbYUwxXmiL2tRiyLkUvcWOF8G2qenaNVmo42zLEPYjO1OESTdomlejml1b65qJACq480Si2iTnYbXcmjuNPMU6QAoumeS/PcCfcq3A6guct3K07einBOnomMHqduL3IlwADAE9LflJ/XEBdAAAAAElFTkSuQmCC',\r\n'small/witnessing.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgyYjQ2Yy0zNjQ5LTQ0NTktOWNkYy1jMjliMWE1N2ZiODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QThBMkZCRTM4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QThBMkZCRTI4RUFFMTFFNjlDRThDNkFDOTMxQjE4MEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODQ3OGY2LWQ3YzgtNDgxZS04N2M4LWE1ZTEzYmU1NWMzZCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyM0EyQTNGNzdGNTUxMUU2QTcyMTgzQkVCNzJCNEFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvIiEaIAAAK/SURBVHjalNR7qIthHAfw57yvMbeVsXDsaPMHmtYWOnaQ5RJyyCW5/LHDUrSS5NLWojhYLiWRW/4QITqyYx1z/MMSuR+XkOOUszXKUnOmdmE2vj/93vWeNY7z1Kd377vn+b3P8/x+71PV2toq/tH6wgQYwvcZeAdddFMoFITD4RB6vb40oMpisVQKNArWQD2YYBA//w5xiMC5TCbzKhgMCrvdXhooVQjmgWewD6ZCNeiYASbCFngAh+LxeH/14PKAB+EEDBc9twFarXabz+drikQiukoBvbBd9KJJkiTy+Xy9x+M5FY1GZXomGwy0CmGDi9Cnwrh2uAQheEozg5HKn7Isi2w2a00kEp1Op/OFkpSzsLYs0AfYAZehH2/DV/gGK2n/oEbpnEwm34bD4Vpa8mSYUxasGSbBDTjMmY1CDI5BC9TCQ2UA9tMSCoXqKOAG9RLQrsJSsMJrWA9HYRUveSNfh8E87GGbMjAWi02XuAxkfvYS1sF8uAlGWMEzpBLaBLdgPF9HmEymBlw/02CNRlMjqYJRu8N7tBcGwif4CEc42Cy4zX2rMbsDfr//DYJewe8/OaKAOVXAxfRW2MyBaYZ1tDRo4Beu5r5fMKOdgUBgLEpmGX7Ts7zEb/zBncyc1UewiJdyEraChZNE31knLIQOBDuvZBuzbKeApzmDSnNCGJ5zfZ7hGfpgKN9TZXTQPmNmU/igKBqNxrsSl8K1srKhMnoCDs7yaE7EGL6nBD2GmdS5WCwKnU53z+12tylfxnE+XdTlMw6uc4mEefl0jC2Aaeq3p9PpXy6Xq9FsNv9UH19LuAbl3nzPqVRKWK3WXTjGdqO4ux0OzVyDmf8NRku12Wz7vV5vIwX72wFLywnAjB7ivccBuwef2wXMsPSw0ulyH2bDXFjOWR9ML+eapcO3iUuoK5fLdRv8W4ABAHMd0qXV5tNLAAAAAElFTkSuQmCC'\r\n,\r\n'img/add.gif':'R0lGODlhEAAQANU/AIq7eLXcqkSNOVSZSLvitO3163O5XLzVuZbTin3EbMzixZXGg326bNfr0YrMfobKeo3Be328ZmurWrrdr43Mg6TOlLTZpWejWnetaMXduePu4qfJocrexW+1WKvUnWSgVkmPQJjMiK/fpqDZlpvBmIS2b3a9YJO/f6bQlnXBZMrpxd7y2rnWsGGeWHi0ZH+yal6cVo7Sg4HMdZfMhZPNiJ3YkpXAgmWrVT2GNWirU6Xbm+fw5ejx5nC4Wf///////yH5BAEAAD8ALAAAAAAQABAAAAatwJ9wSCwWCxlbqQRgFYy/xqmiaqgmDIyi2ABMVgTdSKSCXDjDwimwqtEoCEQMe+EJM4vGCOHw+R4JCQEDG0I2ASIUDwx+EiYGCAstQiUECA9+mT49CR4gQi8BDjKafj0RHgJCACEICSk3pj0GMxADQiw5ASkmJqYdBhYCJEIFGAwBjz0dwBYSIBpDCh8uASERETPOOAdFHB8DECgoAAIg3UY7GzAgAgMk0VDyREEAOw==',\r\n'img/addcodingregion.gif':'R0lGODlhFAAUAPePACOheE7PgmPmhz2+flnbhery6F7ghnn9jFPVg/b69P3+/fz9/GrtiGWzTZDShJC8g5PKf+/17mnriGayTpLIfvD27Gm0UcDZuI/Df2CvToG5cqLLkYW7daTTlarNmVacTqbSlVKZSu726s7ixGmxT3jIarrdrlybUsLbu7jfr3ayZNXv0JLGgXu7ZabSk4q+erncraXLlZXMh1OXSFiZTn6/eKbWmaXRlLnbrs3ryI/PhGukZb/mu0uhRvL38ev06W25VWWhXTOye0XGgPT483zCaYPLdoy/fKnanYfJe0ydTmq2Umu3U4PMdmWxTYTJemSkVrbirpTPhPD173+3b8blwZLShavboLTgrVSaSYy5gXa+aqPbmeTu45jCiazco7LUo27xivT49GixVrLQrff59ojNe6bIpLTcqoa1e8vqxmXFeZPLgKHPj/P48rjisGqiZKbTlpbAhKzfoyyse+z06qrPm3mzaO737fL38Pf79vj89mioWVa+aGvAW2SkVafJpEPDf3G4anCoaMznxKHNjtPtzcPkvmmzUKnMmLncrsbowIa2fIi7eJK+gf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI8ALAAAAAAUABQAAAjYAB8JHEiwoMGDCBMqXMiwocOBCUbEkOPICwo3Cyt4sEMoxyI0HB4USJggEZgVWHQ4mBOFCiMfAyUIocMg0JoNhrgkqaKmiRkkfPoAEBgAAYIhA2qk+PJkix4xY4BIYaFk6KMABggEENDojZFDeBQsqANjSYcPVgUMGGBAgIYrJXj8WKBAhCILN0JYPUCAwIEwgmRY8ZOhzJ4GEyAc6RHg4AUVNoowMYHDSQsQWc4gJKLlThw2iEhQcAEFzpSEBdL8wdCm0IsZO7oszENm0AkaQQBFeMi7N++AADs=',\r\n'img/alignbottom.gif':'R0lGODlhEAAQALMIANzm797n8Nbh7dji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ7EMlJq70YmW3yNMfReVo4EgXxbaUooaoEdqCLwJ9bd2kv6yZEYTj80YIDokDG4owCBQAJ46xWp9isJwIAOw==',\r\n'img/aligncenter.gif':'R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAImlI+pBuvtDpgULhBytgrrwCUVFUnliIrfGnrrpr4wgo5nKeK6UAAAOw==',\r\n'img/alignheight.gif':'R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM0eLrc/q7ISQu8jSpAwiuGYQlEOUShVa6ouBAQ6Crwl77xvZatNayCyEQRIAAwyENlmXwkAAA7',\r\n'img/alignleft.gif':'R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAM1aLrcS4bI6RQkJRdY75RVFHbR9zWXpnJPpGqsVZogE4+yEQwDDgE8XETAKwYdv+OIs+sJnwkAOw==',\r\n'img/alignmiddle.gif':'R0lGODlhEAAQAJECAHJycv///////wAAACH5BAEAAAIALAAAAAAQABAAAAIrlI+pywj/mgGhAgUvtZjvcCWbVoHOY6FpOHkle4zCB0/Q/Eo4J2W1DgxKCgA7',\r\n'img/alignright.gif':'R0lGODlhEAAQAKIGAN7n8Nji7fz8/Up9sXJycv///////wAAACH5BAEAAAYALAAAAAAQABAAAAMzaLrcTjAa4hQpuFBao+TV03jkNGbodqKYypCeGYrVMATvbAMLqNhAm8CiG/CItVtuNksAADs=',\r\n'img/aligntop.gif':'R0lGODlhEAAQALMIANrk7uDp8d7n8Nji7fP2+Up9sXJycv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAQ+EMlJq73V6M05/sgWiohQBJNxGOGxIkMhA5LKqq+s1y/OFgRggXdzsRBBQkrTeiGBF58kGTWCaqSrdsudRAAAOw==',\r\n'img/alignwidth.gif':'R0lGODlhEAAQAKIHANzm797n8Nbh7dji7Up9sXJycv///////yH5BAEAAAcALAAAAAAQABAAAAM8eLrc/q3AJZUsOOdTOTdgaFzUJ4KkxWmap06uOxALIbxeQNDKDsSSnXAIPAB2NUKgeBDwDoQBDkatWg8JADs=',\r\n'img/animator.gif':'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',\r\n'img/animatorsmall.gif':'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',\r\n'img/annadd.gif':'R0lGODlhFAAUANU4AP/3Xq22NNzcTbm/OqizMv///7/FPbO8N+fkUvPtWMrNQ9bXSvnyW7LSlY26ZJSwhMXKQEFzJaKuL+3pVVOMKMDN3+LgT4+8ZzdrGc3QRdDSR9/m77HWks/a57TUldLTSISgMY+7atDmumGJQrbUnIe6YD1wHIu6Yoe5YFePLT9xIoGrYT1wIKe5R4y8ZbHTkGaOT5GugXKXV7PDWEx7MZywTZeyiGKKRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAUABQAAAagQJxwSCwaj8ikcslsOp84gHRKrU6FAM1iOphIEYapFiBkBAhSQQAiNRAQAAYBLRQoDALAwBJgJAICYQIQeEIHBwEDCRIDBAILBAMSCYeJOB0BUgEKCgAIAQFeNTIwIy0BGxVwABYZCVIZHwAzKx4iISkgFVFWVDcvHAUuFyZYvVM0JAXLDRhNKiclBSgXLE02FA4NDhQxTg8RGBEPUOVJQQA7',\r\n'img/annauto.gif':'R0lGODlhFAAUAOYAAPPz85qamsjIyLi4uPDw8LOzs6Ojo42NjbW1tcfHx8vLy9zc3JOTk7KysqqqquXl5b6+vvv7+7m5uaurq7e3t/X19ePj44aGhr29vbS0tefn525ubpmZmZeXmN7e3qSkpNHR0fj4+J+fn5KSknR0dIiHiMTExMfGx4qKiomJicPDw9XV1c7OzuLi4sLCwrSztKioqKKiourq6rGxs7CwsLu6u35+fv39/aCgoOzs7KmpqczMzPn5+cXFxZiYmMDAwJiYmdbW1oyMjKamppybnN3d3Xx8fHp6eqenp////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAeHgEmCg4SFhoeIiYqLghY7AguMhAoPFhCSgwkaDxKYgi4DBQiYLBgDCScwBjSMHgIqFC8UDQqeQziegyIBjC0QRYMcDIMCKCaGBTUZBgBJIwdJBEY+RBuHDjMgBBVCFwA5P0AkiEFIEwwIHzETRx02PYoNAToSAwYlATKMCwUHKQ4rcgkcmCsQADs=',\r\n'img/annautoadd.gif':'R0lGODlhFAAUAPcAALOzs/Dw8KOjo8jIyOXl5dzc3OPj48fHx7i4uL6+vqHZl8PDw4HBbNnp0svLy6urq+Hx3cLCwqioqGulYVWZSlisPuLi4pLAgYTIc7zVuX+9a5bOhHWTbczMzMbcwYHJcZbLgr3Wu6PLkpnOirfjsPn8+ZvBmG6rX57Qj6bYnKqqqpu9jdvt2M3oxpnYj5nCilmvRYDAbJfLiZSnj7/muHTAaNbW1n+3cN7s2c7OzuTx4rCwsJTHhZPJf7HQqnGnaaenp8/iyqrOm5PIfrW1tbS0tX6xdX+ydPn5+aDYlt7e3r29vWumWpqamrm5uZHDgpzTk36/Z9/v2YHDa7e3t7Kysn/Aaefn5/n8+JvFi+Hv3XSvY/39/YzQgfv7+7Gxs6DHk2O0UNHR0WeiXKbMlvj4+J7DjsfGx22nY8jdxKvdot3d3aa1nru6u6LYmff69/Pz83Koa5HEg+Lw4IHAbVeaSp3Mi5XRipvWkL7hteLx4M/syJevi2ikX5OTk4Oudff69rPdqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIIALAAAAAAUABQAAAjBAAUJHEiwoMGDCBMqXCjQQIcBBRgSdEDAQAKJAw9cIeAEo8AICAAQwZhjCYIDZyQI2MFQyYAFVNisMPMCTBCJfMi0oEEi0A0fCxuI2OMGigIXKU6kKWghwRqBQvIkqaFjThgMMo4UBNCmiAA4WdTc0VPiDQ4GG9AYVPFFTIALeLqwAIRFSgwQfQzaAPLAz58RH2BogVDBipwfCKs0mbEFxRQ6GqLYoRAiYQEAHJjw6DHkSR0TEj0YmTAmTgaPqCUGBAA7',\r\n'img/anndel.gif':'R0lGODlhFAAUANU+AP/3Xq22NNzcTaizMrm/Or/FPbO8N/PtWOfkUsrNQ9bXSvnyW////9DSR+LgT8DN3+3pVcXKQLxDBM3QRcFZH92mhqKuL8ttLsFcFO52ANF2OcJcENLTSP7Nrs/a591kAbxDBeFoA9/m78BZHvSdY9GdLrxCBMFZDsJbD75PB/e1jeGrjMWUMf+GIfh2AO9/GMJcI+uKQOSsQP7WuP+STd6jNMpmKPWocup5BeOwleZ3If93Ef9/GPa1jf///wAAACH5BAEAAD4ALAAAAAAUABQAAAagQJ9wSCwaj8ikcslsOp8+gHRKrU6FgIZiSoBIEYWpFiBcBAZSQSAiLQwQgMUALRQkCgIAwRFYHAICYQIReEIGBgEEBxYEAwIKAwQWB4eJPh4BUgEJCQAIAQFeLBgmJzUBIg9wAA4TB1ITHAAyGiozNxclD1FWVBs9NDstMShYvVMSHQzLLxJNFCQ8LhkhI00rNjo4HykVTjkwIBTeUOVIQQA7',\r\n'img/annedit.gif':'R0lGODlhFAAUAOZoAP/3Xq22NLm/OtzcTfPtWMrNQ+LgT+fkUr/FPfnyW7O8N/71XcDN39bXSqizMvjndcSnNPvtV//t2Pvvo/bdrPTeUf7zXcXKQKKuL/bw59utUt6ZTOi6ZqmKRd+kQr2JS+e4YYhiLc2wiOK3hdi7Ofbhf9ylQNi4O9CdQPjdUfXZTK60MPjndOK5W83QRdDSR+KlQ7R1M/vpctufTc/a5/71Xv7zqfnwwvvunPjtvOPGRPXYS+bBl/jrtvTXSPDRrsiTVcaoPLqEOfbt4/jllfDbZOfJS//2Xr6fPdGgZ82qcuTNo31fKOizRV1GHNShafvz69/m7/zuVtS5U//w4dC1MvvvoeO+bP/q08mJR/jMmda2QOCyfuXCkfLjr6+2NOS3ZOrBbL9yF/rgw86bQNvDjvPAi+3pVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAe/gGiCg4SFhoeIiYqLjI2Oj2gAkpOUkxEaSSgVggAvDZMCZ5IHCFItPFRdZIIJAQ6SAwEXkggrRhQ/Y1hPggMFCAMAAgYBCQRfOjdEYFwjU4IKCgECBBgCDgMNJDk4OyUzSAJoNAGSAQUFAAcBVT1WPg8gTQsBUQwHkgYuBAALEF4TVLDgYOIIAAMMIlWqcaKMjRQywsCgxKlSkCUithS54sECxUMdJGwQIwQIlEZMzGjJEmOIIychPijJAKnmo0AAOw==',\r\n'img/annrules.gif':'R0lGODlhFAAUAOYAALW1tcPDw7Ozs/Dw8MvLy8fHx+Tk5L6+vqnB6b29vaOjo7i4uJqams7Ozqurq9zc3JmZmZOTk8jIyPPz88zMzOPj47Kysre3t+Xl5cbGxrGxs6K86ODp+PX19crJxnae3v39/a+vr5W055245oCk36ioqH+j38zOztDV3J665+jo6LTK7N3d3dbW1t7e3qqqqtjY2MLCwqKiovv7+9LS0p2dneHp99HR0Z+fn5SUlKenp+fn59LX35qsx7SztMfGx7vO76CgoO3t7Yedvru6u7S0tbu7u/n5+Z+758vKx6ysrLCwsPHx8XOc3IyMjKnA56ampqK96JKSkq2treLi4uDg4Pj4+F+N2Lm5uZWVlf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAUABQAAAefgFqCg4SFhoeIiYqLghUUEg+MhAQYFQeSgwU7GFiYgjELAgCYDQkLBT8lCkuMLhIBFz4XFgSeUEGCNFMhA4w4DFoTAgYAMEKFVAcsgxARWipGBDlKMoUCREUKE1pSEFpJAaUUWYYvGjcDHU48Tz0nAA41GYYtOg4RAChRCCJDHlVMEllgEGAEEiAbTEh6YODDihQkOHhCcKWJDU8YMQYCADs=',\r\n'img/antibody.gif':'R0lGODlhFAAUAPddAAAAAFJSUk9PT3h4ePn5+fT09Pz8/O/v705OTnp6enBwcENDQ5ubm1NTUzAwMLOzs1FRUT8/P/b29v///4WFhW1tbXNzc3Z2dnd3d7u7u/X19SkpKTc3N3R0dBsbG8DAwODg4Onp6URERC8vLyUlJXx8fGJiYkBAQIiIiHV1dVdXV7GxsS4uLpWVlZGRkQICAgMDA1RUVFhYWLa2trS0tIaGhigoKCwsLLq6uvv7++zs7BwcHPDw8JKSkqOjo1VVVSQkJGxsbLm5ue7u7m5ubkxMTH19fUVFRZycnFlZWfHx8Xt7e39/f2hoaElJSa6urouLi0JCQkdHR3JyckhISAQEBEtLS/f397i4uHFxcQYGBv39/RYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAF0ALAAAAAAUABQAAAjfALsIHEiwoMGDCBN2WdEhQoAAESo8UNhFRREUBFEgSJLQgQ2EGxwclDHiHxGDCv45CFDwg4ouGP4pIHjh35QuAYQQdMGFQ5cE/7IITPEvRRcOOygQFNBFC4suJf4J/DegC4sXOAlC6ILj34YuCwSK6FKSRpetA1l2mQGjSwSBR7pUmdilAcGxAjN0kbq3i94uBqQQXNKD4AmBhwcyqEDwQwyCdusSRICFoAEBJgReFshUYAcqEgpOWNBEIALOAhU4KXBQggArLX4IDNACAQTWCVeUIBFlAZALdCkKH44wIAA7',\r\n'img/arrow-default.gif':'R0lGODlhQQAUAOZYAOTk5ODg4I+Pj/r6+sjIyP///wUFBXFxcYODg9vb2xsbGw4ODvn5+fj4+BEREenp6efn5/v7+7Ozs4KCgjU1NbKysvb29kpKSigoKMHBwfX19SwsLPz8/MfHxy8vL9fX12NjY0xMTDw8PJiYmJSUlAoKCjk5OT4+PszMzM/PzwEBAQ0NDe/v7xYWFh0dHTIyMh8fH+Hh4TMzM/Hx8SoqKkhISIqKiv39/dPT05eXlzAwMFFRUXh4eAICAiMjI0BAQOzs7CsrK9jY2BkZGUVFRQsLC0FBQYuLi/7+/j8/P9/f36CgoLi4uHx8fAkJCRQUFKWlpebm5qurq+Li4tnZ2ScnJxISEgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFgALAAAAABBABQAAAfmgFiCg4SFhoeIiYqLjI2Oj5CRkocMEZOXmIIaEzwVMZmgjwMyVwonEjOhqoocNg4lBhskQAWrtoUAAi4GVxQEUbfBghAdIVdXIkwBhwUJVM/Q0dLT1NXWz0oBADgCNccvBxKFIFbl5ufo6err7OgOT0MLKsdXC0uECFX6+/z9/v8AA/LDoIOGBwU96MGQgmuKw4cQI0qcSJGitgAPAKD4gODHMSJHMghTJUSAiWMXUkAYCQpJgwMrilxJkoAFy0wFGjRxcqWFESgMboIa4ONKkB0EBggNZWFEDgIPlq6KcEOq1atCAwEAOw==',\r\n'img/arrow-double.gif':'R0lGODlhQQAUAOZ/AP7+/vj4+Pn5+fb29vX19QICAvPz8+Li4ufn593d3UNDQ5SUlJCQkPr6+gkJCenp6fz8/PLy8sjIyDU1NUBAQFRUVOvr69/f32ZmZpqamtPT02dnZ5KSkuzs7PDw8PHx8VxcXDAwMBgYGFpaWjs7O0lJSQcHBw4ODru7u/39/QYGBs/PzxISEoSEhKWlpYyMjHJycpubm25ubi0tLQsLC2RkZHp6em1tbRwcHHZ2dsrKyp2dnV9fX0RERO3t7QgICBsbGx0dHU5OTl5eXoGBgYmJieTk5Nvb29nZ2ZOTkxYWFoODg729vWJiYsLCwqampuXl5bKyshoaGurq6i8vL5iYmOjo6Do6OnNzc6+vr////1tbW4uLi1FRUVlZWe7u7lJSUgEBAdHR0SQkJIaGhsHBwVdXV8fHx9TU1Gtra4WFhebm5gMDA76+vt7e3jg4OE1NTQQEBCwsLD09PdDQ0NjY2Kenp2VlZU9PT5aWlvf39/v7+5GRkYKCggAAAP///yH5BAEAAH8ALAAAAABBABQAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CHABYaA5GNAGsIBBCXhgYHTkF+TJ6LDVt+JBkIAKYDGjIhfip3B6aKAHUKfn5damiXKENvvVh0BLiMCFVgvRN9Bo4WICJ+BRsPycqOVjFCfiYzRAGIew8PeCYOQDwJegIB8nr09fb3+Pn38gJ6AxJwWMRRYgNJB0ICoszp5UdKGi59IkqcSLGixYsXW5CpcKIXmxFnXP35MoGhyZMoU6pcyTLlhj2CGrRREKYXDhh5FnBgwKenz59AgwoVypMnhyQL+Izo6MdBDTEi/6QgEAGDCAc/zNiZoiXFnq9gw4odS3YshD0QAAgw8uRKARUhXl5AsYTow40xvUAk8MDNUYIivGhQWACzkY4cJXp5QRGhb6ILWSj06pGB7qMGbpaQuFbiiONCACRQ6YVhxwVcATqskOOnzGeETQpUcMHXMSgBrwn5+JC7t+/fwIO/DgQAOw==',\r\n'img/arrow-dual.gif':'R0lGODlhQQAUAOZpAP39/Wtra+Li4vf39/7+/hAQEEFBQfPz8////+bm5unp6S8vL/z8/BgYGG1tbWxsbLOzs7e3t8TExBEREfn5+bS0tPb29snJyRMTE76+viIiIu7u7isrKxYWFuDg4Orq6iAgIHR0dMfHx2lpaXd3dyoqKtHR0W9vbzQ0NN7e3tjY2MbGxqysrBsbG/Hx8YuLi7y8vFJSUjY2Nh8fHwwMDAcHB7GxsWZmZmJiYiEhIRwcHDw8PDc3N4+Pjx4eHgoKCp+fn52dnVhYWIyMjCYmJpGRkV9fX5aWlmRkZA0NDcvLyzU1NcPDw6+vrwgICNra2lxcXJOTkw4ODvLy8jMzMykpKT8/P5iYmGdnZ5mZmfj4+NPT09zc3HJycj09PcXFxbCwsMjIyCMjI2hoaPv7+zs7Ow8PD7KysgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGkALAAAAABBABQAAAf/gGmCg4SFhoeIiYMbQx+Kj5CRkmkUWU4TJAIDk5ydjxsPRGhoARAKnqipaQAqQCVoP0JgAqq1nF8hC2gdXkEAiGTBwsPExcbHyMK/AwpFOWgFBhUMhAgpWGPZ2tvc3d7f4Nk3IwEOD0hUo2gTFwSCBDBmUmb09fb3+Pn6+/kYDQ0Y0Dg4MMhChTMIEypcyLChw4cQIbA4ksCWRVUAMhRYYMCAlR1lQoocSbKkyZMoTS4xgUCQhRfqoFUBocPHDDE4c+rcybOnz584NWi4QmGQiwg4aKBpESNCgidbJIRZcSGM1atYs2rdypWrCC2GppyBMopHFIIX0x460CRADTRJLIx42KS27iAmJziM6qKEml27AnrIGGWDzF+7ALhIQJHh12G7CBK4e0y5cqRAADs=',\r\n'img/arrow-none.gif':'R0lGODlhQQAUAMQYAAwMDOnp6SgoKPX19fb29nZ2dtLS0vr6+uLi4vj4+CYmJv39/fT09Pf39+Tk5D8/PxMTE9zc3Pz8/FNTU+Xl5Q0NDdXV1ScnJ////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABgALAAAAABBABQAAAViICaOZGmeaKqubOu+cCzPdG3feK7vfO//OgmCQiwaj8ikcsl0BBakxkNxqVqv2Kx2y+1eBAXCiAEBVM7otHrNbrvf5smAlDBY7vi8fs/v+/8WEQdAhIWGh4iJiouMjY6PPSEAOw==',\r\n'img/arrow-reversible.gif':'R0lGODlhQQAUAOZvAN/f3zo6OtfX1/7+/tbW1uPj4+zs7P39/fT09PLy8t7e3pCQkDMzM9zc3DExMW1tbSAgIHBwcCEhITg4OPn5+QcHB+3t7c7OzkxMTIyMjDc3N7Gxsbe3t6mpqWdnZx0dHcrKymVlZeDg4CkpKfv7+0RERBYWFubm5n5+fgEBAcnJySoqKvr6+sPDwxsbG5qamry8vPb29icnJ1FRUeXl5bKyshAQEAYGBg0NDW5ubk5OTigoKE9PTxoaGkpKSvPz84uLiywsLDY2NqampkFBQerq6tDQ0J2dnS4uLiYmJtjY2F1dXaenp7i4uAUFBcXFxREREQMDAyUlJXFxcdLS0u/v79PT05GRkXNzc+np6VlZWQsLCwICAszMzPX19UBAQOfn5/Hx8fj4+L6+vhgYGPDw8DU1NS0tLSIiIu7u7tnZ2U1NTevr6xkZGQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAABBABQAAAf/gG+Cg4SFhoeIiYqLjI2OhwdPESIUj5aXjD9Tbm4oF2yYoaKCJxkanEsdDaOsjwcKYytuUA5HAK24jAVADm42QS8kh2JsxcbHyMnKy8zGBmlsNAs7W1wfMGCEA0wYa97f4OHi4+Tl4jo8EpxuOF0DggNXZG309fb3+Pn6+/k9EFJJ2qQY8k4QAiVqEipcyLChQ4cEIgqYSLGiRYpUQLAgRCGLhTQgQ4ocSbLkSAS5BMXAUgENkjMy0MicSbOmzZtoIPgokjLBg3VuJBBhYIbBhABIkypdyjTphBmgUhpo8OCGGxMYjFgoUwCA169gw4r9qiBqSkFeOISoEMWFhzAFLM/KFdQiwghOWlQkmMvXyoIvnHJsiMs3ZYEaQtw4aVJ47oEqF0oYaEy5sqNAADs=',\r\n'img/arrow-solid.gif':'R0lGODlhQQAUANU7AAICAhUVFQwMDPPz8/f39////9ra2uLi4hAQEHV1dQ4ODmVlZenp6QoKCpWVlfDw8NXV1cHBwQUFBXx8fGZmZufn52JiYp2dnQkJCa+vr7+/v+Dg4AsLC6CgoAMDAx4eHvT09Gpqavz8/JaWlm5ubhwcHF5eXtzc3Lq6ulRUVBoaGvLy8vn5+Xp6emtra+3t7RISEhkZGVhYWOzs7B8fHykpKeHh4dvb2xcXFyIiIgAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAABBABQAAAagwJ1wSCwaj8ikcslsOp/QqHRKrVqvWGUrku0yBbDFSuQtFwM6nSTEGJjNpXQakNCwkoWDbc/v+/+AgYAbLypycgIUHQZHEzmPkJGSk5SVljkeh4cINRcgRS44oqOkpaanqKk4AJpyHDQjbkQFJze2t7i5uru8uwYVMa0YMg4Qb1gfmhYZBMdZaGkmBw/OXQoNKTPN1V0kKNzg4eLj5OVOQQA7',\r\n'img/arrow.gif':'R0lGODlhFAAUAOMOAAAAAAcHBwkJCRAQECEhISwsLDg4OEBAQEZGRmhoaHh4eIeHh8fHx9fX1////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQp8MlJq7046827/2AoJYxIFMp0AGzrvgMirW/tBiCgGA0oLKKgcEgsCiMAOw==',\r\n'img/assaycurve.gif':'R0lGODlhFAAUAMQcAK2trYyMjKGhoY6Ojrm5ufv7+7i4uJmZmbS0tMjIyMTExHV1daioqPDw8O3t7dbW1sfHx39/f4SEhG1tbb+/v+zs7GlpafHx8ZeXl4KCgrOzs////////wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVbICeOZGmeaKqubClocCzDgklseK7jiDkElMJOpzEdAAML5jHcFEsGnIMxSQyfJI3uIoHssCOtrpJRCHEGk1jXWEQA8IO6uUkE7gMTgq4jmF4zgTUthIWGh4gpIQA7',\r\n'img/assayplate.gif':'R0lGODlhFAAUAOYAAKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAUABQAAAfYgHaCg4SFhoeIiYqLjIUJJjQwAVFdCAUBBQMDVQSEAysQdBkGPjEdUgYgABUOHoQBFlMYYwpYAmAQCksNDCRehC5vEzIAbQIpW3B1HwocHXOEZigzWklNDiQVTAwZC2sjV68nHDkMF1k9OyJGEkQaOAiEQGphOhsNTgcsTw0OXxYqIhBC8OEHjwNCAExQsuCFmBpxKCQgNISKgBsHNACQgGFBGgpuDIQoQehMCyQCghwBIYfMCBFlQnDZIHAQAQ9FrLAZAOVCARtoHiQo8aBTo6NIkypdiigQADs=',\r\n'img/barcode.gif':'R0lGODlhEAAQAIABAAAAAP///yH5BAEAAAEALAAAAAAQABAAAAIdjI+py+0PDwhgWnpzxrTbXXkeCHKa+KFbxLbuixQAOw==',\r\n'img/benzene.gif':'R0lGODlhFAAUAOZnAA4ODllZWf7+/gcHBwICAgEBAQUFBfr6+oWFhePj483Nzfj4+G1tbVNTU9zc3JeXl3Jycu7u7iMjI7i4uBkZGQQEBAkJCQMDA7e3t/v7+1RUVPz8/KmpqWhoaOTk5LS0tJ6ennd3d29vbwwMDDQ0NJWVlcLCwlpaWsXFxXV1dWVlZQoKChYWFpOTk/Ly8pKSkt/f3yAgIBgYGDo6Oqenp7GxsWZmZmpqatHR0VtbW2FhYRMTE7u7u0VFRYODg39/fwYGBh8fHw8PDyUlJevr6zMzM6qqqvT09KOjo0BAQAgICEpKSnt7e9fX12tra11dXURERBwcHDExMTAwMJiYmF5eXsfHx8DAwA0NDTc3N3BwcD8/P1xcXFZWVi8vL1dXV5SUlJqamqKiooeHhxUVFWBgYAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAUABQAAAfmgGeCg4I4Gl1NhIqKBwxAFhYDEBmLii1kZhoJCQ1mMg+VZxhTZlITZw4fol5mRTyEEZ0sYGcbKQNkgy9kBV9HgjYXIpRUFGZJKIQHTgQMggG5DiRmEjSKSyVnAGXPuQ87CAKLA9zb3aGDBuXcZ9DoghXr5+8X8u25EwgblQX27mNmKIQZ10EbO3dnkMQwk+UKoRoLDAq6QaCMizMCfowgoAUWlwIQBC3QQUBIuDNEnpwQJMAHlgoqDhAyMcPMECOEOEgws8VKKBBRzPRQoACKmSBi3mEMocSAgRVMxCkVBCNHFQ+hAgEAOw==',\r\n'img/blank.gif':'R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',\r\n'img/bold.gif':'R0lGODlhFAAUAMQcAAAAANnZ2T8/P0JCQjs7O1hYWNjY2D09PSwsLDw8PNfX10BAQD4+Pt3d3dvb21ZWVjY2Ntra2jAwMDQ0NCoqKi4uLjIyMtXV1dTU1C0tLVVVVVBQUP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVSICeOZGmeaKqurFlsQTsWB3DEcgIRgGDIF8IkAVjgWJiEhcc4rhQEiaD3aykEmalRdq0wbE5VgIEYUGWRQbkYTjnU5oGM0xhQNIU5/ZHX+/8tIQA7',\r\n'img/boldhash.gif':'R0lGODlhFAAUAIABAICAgP///yH5BAEAAAEALAAAAAAUABQAAAIjjI+py+0O3gJRImqqPXjnqnmdCHpcaHVouj6q+cEjTNc2UwAAOw==',\r\n'img/bracket.gif':'R0lGODlhFAAUAJECACkpKYeHh////wAAACH5BAEAAAIALAAAAAAUABQAAAIulI+py+0PEZhqAnZbrm4nzy3gh3WldmLBGkjdKrTHKMmyQc+2RH3THgkKh0RFAQA7',\r\n'img/butane.gif':'R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==',\r\n'img/calc.gif':'R0lGODlhEAAQAOZWAP///01yp7u8vKOjo1Z7sOfn56CgoOPj49zc3Pv7+5GRka2trYaGh6ioqKSkpOjo6JWVlcHCws7OzoiIiKmpqYeIiIiIiebm5uvr656enry8vNPT09fX16urq2uSyOLi4mmQxqysrGyUyrS0tIqKipGRkttYUuXl5ZOTk4+Pj6qqqmSLwY2NjeDg4IWGh+np6cnJyZ+gocLCwpmamtHR0ZmZmpSUlIeHh7KysrCwsJGSkrOzs7GxsW6Vyp2dnrW1tWeNw+Hh4WiPxcXFxfz8/NjY2NLS0uh0c4qLi46Ojpydntvb22aNw6WlpZeXl9/f37+/v9ra2oyNjmePxYuMjIiJif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAQABAAAAeygFaCg4SFgzsUDR0hCyEdDQ4DP4QqAJaXmAOEAwABnp+eABmEDgAEK0xTIB4iBAAGm6ZAQqsiPa4xm0RRHEYSMEMyUK+EBgALSUVNJBJHJgmjgz4AB0EISxwbGzQASoQzADwKHwspCBQsCTWEEAAPBScHHy1PCAAQhCUAIzYFOCgHcihIoIMQFQAYMLx4V+DCBQBSCE2IoEGDgIsYIyAhpMACgxsVqliYUIGBCyeGUhYKBAA7',\r\n'img/cancel.gif':'R0lGODlhEAAQANU/AP/s7P7Ly/0wMP0tLfcSEvIbFfc0MvokHv5mWfdDM/k6Ov5iVf7q6vYODvgWFvlNPv5RUfpSQ/9qXe8AAPhJOfxLS//x8fUKCvo+Pv4TE/wpKf1dT/1HQ/gTE/8UFP8rJu8XF/3Fxf/z8/hFNf/Pz/9oW/xISPMAAO4SEvsAAPsoI/YUFP1fUvYdGP40NP9bWPovKvw8OPhHOPs3MvsNDftMSPtYSvUgGvITE/hLPP/t7f0AAPEAAP/y8v8AAP///yH5BAEAAD8ALAAAAAAQABAAAAakwJ9wSCwWM77kbpkx/jwfSQmBWCxUtCJUwnG5BIPY5tAZbl8kCLgSqNkOK6GvxCGJdJUKoBeARU5yCC4QOnc6PQAYDg88QjsIa4eIih05jT87CwMaJpIACgQNMpc7LJx7AAAWDAYXIxNCKRszAT0MCgoMFiEtCbA/HQc2HAEKHQ0GIQYJBSBDwREqoRcXBczORCs3ORQyIwnXTjg85BPmKE7pRUEAOw==',\r\n'img/cds.gif':'R0lGODlhFAAUAJEAAKNJpDNmzP///////yH5BAEAAAMALAAAAAAUABQAAAJOnI+pyxsPY0xB2ItxQDV7ux0dAAhkaZFCaFSomcIgJ8vlyw7uhd5XvovBcLRXTwisHWNJoxDW5D1LUaEzabqpsjPR55PTScaPhvmMHhQAADs=',\r\n'img/center.gif':'R0lGODlhFAAUAKU9AE9PTwUFBT4+PoSEhElJSRsbG1tbW21tbTY2NiIiInd3d5iYmBISEldXVwkJCYiIiF5eXmVlZSYmJgwMDBYWFjw8PAICArm5ubi4uPPz89DQ0Pv7+9nZ2cjIyPz8/OXl5aioqLGxscnJyTMzM6mpqYyMjKGhoTs7O8HBwcDAwKCgoFNTU9HR0fLy8nFxcS8vL5CQkJOTk5ycnHt7e7CwsLKysnx8fKurq4CAgKKiok1NTa2trWFhYf///wAAAP///yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEAAD8ALAAAAAAUABQAAAZuwJ9wSCwaj8ikEukbKHsWSzHg8wUyRUTV1yvStr6XsAD2HasBI6MqOVJ/mCLGYT72QsLLMP6TLuGAeX9CMINyPxp/GWmBiEJ+Rm98Qxo3dUZbXUQZVQRGJWCMPVRbRhZoHEUnpUU+Ck8BjIazS0EAOw==',\r\n'img/chain.gif':'R0lGODlhFAAUAOYAAP////v7+/r6+vf39+zs7OHh4djY2IWFhd/f393d3dXV1fb29klJScPDw7m5uZycnJ6ensLCwvPz8+vr68jIyM7Ozufn59TU1E1NTeTk5H5+fmFhYcbGxmJiYlRUVEdHR3t7e1paWrS0tO/v75SUlNbW1omJiZ2dnXd3d3h4ePT09MzMzGhoaMvLy+np6dnZ2be3t5ubm8fHx+Pj409PT7y8vL29vVVVVZGRkZOTk6GhocnJyZmZmerq6isrK1BQUG9vbzMzM1ZWVjAwMKysrF9fXzExMaenp7+/v4ODg3FxcV5eXtPT08/Pz7u7u5eXl8rKyouLi0hISLGxsZiYmJ+fnzw8PISEhM3NzTc3N2VlZV1dXUZGRlNTU4iIiDk5OcTExDs7O66urtHR0aOjo////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGUALAAAAAAUABQAAAd0gGWCg4SFhoeIiYqLjI2Oj4IghkA3hkkkgyEahFVBPimEZBgPgwc0hB0bID+EWkuFXSiCJFJHZSFKgg8fT4VXDIJFHYJRH4IsW4ceBxAYPIMeGjgMOYcHYVYbhF5fQ0KJXEYQhQxZMYknJoY6VJDu7/Dxj4EAOw==',\r\n'img/chainadd.gif':'R0lGODlhFAAUAOZUAP///56ennFxcd3d3ZGRkY2NjdPT00VFRcHBwc/Pz/f394+8Z8DAwPr6+pSwhPj4+E1NTUZGRru7uz1wIIiIiJCQkHt7e1FRUUFzJTdrGYaGhoGBgampqY26ZJeXl7LSlZGugUhISGVlZVOMKNDmunBwcHl5eYu6Ys7Ozoy8ZWKLSmaOT7CwsJKSkoe5YD9xIrKyslmDQpWsiGtra4+7amlpaYGrYXKVXbTUlcTExIuLi22AYr29vbHWko+hhXh4eGFhYdjY2Ex7MZubm+jo6Nvb2/Hx8VePLfz8/LbUnN/f35SUlJeyiNra2rHTkK2trcLCwoe6YK6urm5ubv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFQALAAAAAAUABQAAAejgFSCg4SFhoeIiYqLjI2Oj4QKEgUBOkpGlAUSCocNAQREAwgEQ00DOQQBDYYMFkEUECItJiIQFDAWDIYVGgYPITwoUE8hDwYaFYYcAgkbBxEXFxEHGwkCHIYDNUssUh4CPx4+NysxMoZIRUAzJVMIBjs2OCQ0RyCNKk49ACkLE41CkgAY+CFDoxcnogBw4a8RkxEdPnQYca+RAwwZMDiAxFFRIAA7',\r\n'img/chaindel.gif':'R0lGODlhFAAUAOZbAJ6enrxDBf///5GRkdPT03Fxcd3d3Y2NjcFZH0ZGRnt7e0VFRYiIiJeXl/j4+Pr6+oaGhs/Pz8DAwGVlZbu7u/f3992mhpCQkIGBgUhISMHBwU1NTampqVFRUa2trb29vcpmKP7WuMxtL/7Nrnl5ebxCBeZ3Iejo6Pa1jfh2APe1jfWocpKSkv93EcJcJLFKD8uVdmtra89zOf+GIeGrjMJcI+p5Bd1kAcBZHtvb287OzsJdJWlpacTExP+STZubm/9/GOKvlOuKQJllS/SdY+OwlZSUlO9/GHBwcIuLi9/f366uruFoA7iGavHx8W5ubu52AL5PB8LCwtra2tjY2Pz8/LKysrCwsL9YIWFhYXh4eP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFsALAAAAAAUABQAAAekgFuCg4SFhoeIiYqLjI2Oj4QVFAcASUpOlAcUFYcPAAMnBhoDP1MGPQMAD4YSClQMGxMsJBMbDFYKEoYXEAQOGR86Uh4ZDgQQF4YcBREYCwkdHQkLGBEFHIYGPEZXSw0FWg1NWCUvMIZVOVkxSE8aBEMyKiErIkGNOyg+LTNCLo0BRggYeCRAIwREgKSAwgRHIxogTNi4EcWCoyI1AiCwCKljokAAOw==',\r\n'img/chargen.gif':'R0lGODlhFAAUANU7APX19T09PQoKChISEgwMDOTk5M/Pz7Ozs62trZOTk9/f33Fxcdzc3KioqHp6en5+fuHh4UNDQz8/P4qKigQEBLGxsYWFhUZGRvz8/D4+Pn19fYSEhAkJCaqqquPj47KyskFBQX9/f8vLy3Jycm9vb6+vr/j4+A4ODjk5OTs7O0JCQmlpaXl5eaysrDc3NwUFBQEBAfT09NXV1e7u7v7+/jU1NY+Pj+bm5jw8PDMzMwAAAP///wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAUABQAAAa1wJ1wSCwajYDD5FHBHIuMi246pQQMz51FQHAgIIDGYiBIHBO6iMJYCOgsRYMgkN1FBAxiYFCoKwgXQxgUI3VCDjoAQhU6HYY7CDoHQiEwJjsaNS4oKTgZEiAkOxA6E0IbOjOYOaytrCs7ADoPQiU6LY8NOhVCMTosjwsUTkISJx51BQN0QzIcKnUBAlhEqBI3RgoROmZGNhwDCw0AEAgOBAJwTyIZL1RTF3mGNB8PEweKj/o7QQA7',\r\n'img/chargep.gif':'R0lGODlhFAAUANU8APX19T09PQoKCn19fT8/PxISEoqKiuHh4X5+ft/f37Ozsz4+Ptzc3K2traioqOTk5IWFhXp6enFxcbGxsQwMDENDQwQEBM/Pz5OTk0ZGRvz8/Dc3N0FBQW9vbwkJCWlpaTk5OTU1NQ0NDYSEhAUFBQsLC4+Pj/j4+A4ODgEBAePj4w8PD+bm5tXV1fT09Kqqqq+vr3l5ef7+/n9/f3JycrKysu7u7svLy6ysrEJCQjMzMwAAAP///wAAAAAAAAAAACH5BAEAADwALAAAAAAUABQAAAbNQJ5wSCwajQCFATHRHIuMzG46tQQuTx5EQIk0DgCHpCDAHDG7SsL4COwgxYsgQOx8iBUBgxgoPIgcOkQJFBlDGhY0RQSCRBE7AEITOy9FC41DDTsKQjMpJzwDIRsgKyILBBwdPAc7BkIjOzahOrUiJbU6dwA7CEIwOzhFIJhCDjsTQi47MUUbxTwSFk5CBCgqRCHFDwV0Qy0eOUQDA3wCWESxBCxGCRU7ZkYmHgUSDgAHDREUAnBPNwtIUJmSYU8WITJqIDCgINLBh0WCAAA7',\r\n'img/chart.gif':'R0lGODlhFAAUANU/AP6YlpW57UWE3RZNzPlXVxEyw5TCl1aO3/6tqhxm1KjG8SFKerLXt/60sXSk6Gyd5FmlUGSzWmaZ5Iuy6l2T4YSt6TByK3wzfP51cfxsanSi5f1mY3y4gnim6JzIoGKW4Tp82nKxeKHC76rRr/54dKTNqCt02P5wbVGM33yo5/6gnv6kov5+ef6FgU2WRfM9QYO9iv6BfIBEhzyANX4/g67Ts2+g6ESLPWqrcGy8YPVHSv5gXBpBdP64tf67uP///yH5BAEAAD8ALAAAAAAUABQAAAazwJ9wSCwaj8ikcvnrOGwPCYUptCmuogP1J1EEJgHBliKaVAKgJImEOWVQgUpqYlL7eo2GINDRVBJJGD0tMQggEw8PKYBIGQ0sJAgmFRIfDgM5EREQEEQbCG0rCSkUBw8DDAw1Iy5EBAgnGyoJGigoEqgwHCU3risbOwADDwICFAUjHCEeM0Q6KjsEwh8CIAcFJSE4BhZELwDgwqUHKAUeHgbcRDI0F+4F8PEL8zw8W/f4+UEAOw==',\r\n'img/chembl.gif':'R0lGODlhFAAUANU/AITNdWm3Wbrcs5bWib7otVuqS3O7ZLbhrsHiuqbYnKvYobLbqvT583XCZf/+/2OvVNj109nr1M2PlPlpdnjFadHsy8rlxe0pO5DNhPr9+pzXkP3+/O3268a0tsvww3zJbVKjQeEUKIjPeuHx3oDIcePx4c3myXrAbOn55YjBfFeoRsbiwfn//1+sT5DSg//9//H67p3Mk7rxr6/rom+/X//7/9DwxvGgqVmoSd8CFuUEGfmdp+r05+uFjv///////yH5BAEAAD8ALAAAAAAUABQAAAb/wJ/Qt/H5Bq2WxrgRagoPkpChASx+goao4qgmfJYTQPBzEHCPxuiX2TgQqkeAXHSUPY+CiOGrrHwmAS0UKz8QCEI/Pgcpfwc0Hws+CCkCiw0UMYl2LxsuSQM+Qz4aaFI/GwknlgcNYz4TFxKTHx8Jih5QJByGESw7OiEXHT4oJqJmBXo8Pyg8LDc5wsQwI6KoCgNXjxQIPj0TEhsrDQ0KiUZEny2hPixGT1FDBCkWPgkB5j42lT4LNAE0TaLxYM+GCvYqEKSQ0JuiA3EolGCT4QUcOXR82PnBYMYJSQgw2ZNh4IuJD3NGcVDX4gEGIwycoDmRCJ0MFQUU+IhwIIIPMAIqVGioOSRDjAM7P6gwUCKDggMZiKLz8QICiAABrhipIbWmjwwaWmDYUELEiRVBAAA7',\r\n'img/chemdraw.gif':'R0lGODlhFAAUAIABAAV6NP///yH5BAEAAAEALAAAAAAUABQAAAIpjI+py+0Po5x0gXsuMDt0noEe94lIh5ZjgpJsuG6aqmVYXOX6zve+UQAAOw==',\r\n'img/chemene.gif':'R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==',\r\n'img/chemspider.gif':'R0lGODlhFAAUAIABAAAA/////yH5BAEAAAEALAAAAAAUABQAAAI1jI+pyw38WoiISoCzO9bQ/kSZOC1dcnoluiqh27Lna8ZqarOwqJUgB1NBRjhdRZITIpfMRQEAOw==',\r\n'img/cleanup.gif':'R0lGODlhFAAUAOZXAJGRkWFhYWlpaV1dXZKSkqioqPHx8XV1dYGBgVpaWnl5eX5+fi4uLm5ubktLS2dnZ3Z2dmZmZl5eXo+Pj39/f2BgYFlZWZycnE9PT4iIiJ2dnfr6+pSUlJqamvDw8O3t7ScnJ7KyspCQkKampoqKipubm1NTU1hYWKqqqvX19YSEhPj4+N/f30JCQvPz88/Pz9TU1I6OjsLCwq+vr8HBwYyMjIKCgp+fn2xsbI2NjYWFhYuLi3t7e9DQ0HJycmtra4eHh4ODg8jIyDw8PLS0tHNzc8TExGpqam1tbUxMTHd3d6Ojo2RkZE5OTjo6OklJSVRUVOfn55mZmZ6enj4+PsXFxZaWlv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAergFeCg4SFhoeIiYo7DkKKhgAnIASPhFUJDEcflR8pLJg1G48GAEUCEhgtMyuKMhkQB6dJTg82iB5LCQ0ICw0DVAEUTIc0EwsBOAIRCggIEUMvhQYXGhpAMQA8Oko/CgNEhhNSHVZTBTcXBDkcPiiHRgpIBxAUAAUFIyILiR4ZFgMVKggIwuEAJUU9HpjAAKWJhQAhKm2AUSLAEwcqXFQaZKADiSgbQ4ocmSgQADs=',\r\n'img/collapse.gif':'R0lGODlhEAAQANUAANLh87/U7rrR7aPA57HK6qXC597p9qC/5tHm/OPs+Njr/////87d8svi9rzX9pO459Xp/8rh+qnJ6tDl/MTd+Nvu+5C25eDy/8Da9v3+/+38/5u85Z7B6q/I6rPM6+j4/8/k++/9/+Hz/1p6zur5/9ns/9bq/+b2/9To/jJVsv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACoALAAAAAAQABAAAAZuQJVwSCwaBYdBIWAkHhKLRcawaaoCoaxWIzEWSOAw+DMgCiqn9GmkPjUYQ4JoLhqlRvSLJw7q21N3fSAEQx0ICH+AdwgThEICESiSk5MOcEMFJpqbmhAPRgEloqMKHFYDFKIKGBZWj0lLrrKzVkEAOw==',\r\n'img/copy.gif':'R0lGODlhFAAWANU/ALjM8IKs55mrxfv8/ihSqCRKmNLd8qvC76O77iFEi2ua2L3K4pquy/f5/Nff666/1Km5z6Kxx/Dz+StXspemu1GD0TVJY5Oit7LC2HOh3lyM2q7E78fO1JGz7oqu/HOS0Zy1526X58zX6fX2+5Cq4IKf2Nvk98XT8s7U3aOyyDVlxbra/5ywzlV5wWSFyWaCpb/L3brF1JepxJ/F+uDm8ebq83+n8+vv+a7Q/1tyj0duumCO53Ka6sfS4f///////yH5BAEAAD8ALAAAAAAUABYAAAaewJ9wSCwaj8ikcslsMjGYxwOSQjUxvqwv8uIwH9oBJZbzKiG+Fc5w2RwOiE5HdExlG5LaRusLqBZGAj4zHQEZCHw8ABOARBQDIzc0DiA+Hh4GOxMEBEUXDYYKCiRaEiYnDAWeEg4iPTAlPjYhGhUVqZ4WurofPgM3BgAbAqpKLj61thUCCUstDSwMDAICMs1KOpwEBQUJ3k7g4eLjQkEAOw==',\r\n'img/copychemdraw.gif':'R0lGODlhFAAUAPcAAP////j7//v7+////kppq5m17IW4n1JxrVJyrXWzhtnr6FFxrPT59ymQYiuTYkyggpO53yiTU8TW9FyV6SSKV8DV/SaQUYGYv2aX16O97fv7+XOxkonA+4W696XC7Pz7+YW480ifd3CwhJ/HsYi7p/v9/dfo/bfM8lCkeYGTuESecWCqkCmOa/D49K/T/JS8/7fN94S++5e9+VN3spq5qUSI31ud8IS6+JGx65jE94CzmN/u/q/G45i0687l/Wyo8dXl+eDs+vz+/5fBrimPYLHF+MjX9X+h4fjz8oCumTOab9Ph3X24sofEqWyvsmCU4CCLVZq48nqPtsne+3639/v9/8HV+Y247rXQ+lB5t5XC/r3ZzrPZwqC871SgfjGSdKzP8qvD8qjNtjKUfHmq4pKy7Pz794us7oCu7Ian5nu7l3CinT2dch+QVp667/r8/3WxhU2ihIKZvsPW9v3+/VCO54G6+Gaa2oW+o43A+rzR+aPA7xCFRjJ2157NtXug5qrPw4GXvGerkzWD5R2PV6q/68HV/nO1mD5/38ri/p7B8dDg/+XlzZPHpF+mdYG29D+dbz+ZZKnA7pe17b7gzsDV/73S9cbY80p4vrfO+S2NcIu28R+QWXu2nsfh/Mzg9zydc5rHsp+57UeN4vz+/KbUvFifcHe0kae/8BqIW1R7uIGUuWqriiiGif/+/8ze1aXC49zo4rbO7qbRtv39/7jcxoim4sTT+BWJTM/i/bPL+L7S/JTBy7PK+Mfd/Mrk1MTS5zyYgnG3hGym7mGsjYO7vKvB+ZKz7ZW09aSvxZK173W0wa3TsWeu+kukcoS08zyL6pOx6lGfdv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAUABQAAAj/AKcJHEiwoMGDCA9yaGaHyqMf0MgkHBhjB4CLQBRtwjBx2g0TAN4EyGFDy6A7n4Ig7JBrzok9eXx4SuRr2ChYB0FM0WUMmQsArmgBuIKlBg+DzxbJYuIEDIAqAQCgkfGiD7CCEJYReeCFTTEPRQo9qTMBEaaCphxsQaIjAYtUvG4ZkXDJUhaCfDppuMgsjgE4ms6kOWLLiiqChJQ0McNFwaxQpYKFQZVBkp4ZBNtEUCNCEAoKYih9iTIpWg8YCAhyanBqBQ1i0l7VGtPFTQFRvQ4QxCXsF6kWHwAlGQGqkqFdFTItIOgs0pIBQkg4whOilbJjOMr8IVDQDxRWsYZsF1CxRs6FQClWSUl28JAFSI06yp9Pf1pAADs=',\r\n'img/copyprod.gif':'R0lGODlhFAAUAMIFAAAAAEBAwICAgICgwKCgpP///////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAAM0eLrc/jDKSau9uIlNZPiDsm3eF4ijAyzmeYzCAcz0erQo2di3mccR3CsVGYAyyKRyyWQkAAA7',\r\n'img/curve.gif':'R0lGODlhEAAQANU/AFFRUbu7u+7u7mdnZ/j4+PPz81dXV1ZWVv7+/k1NTefn5+Pj47e3t4iIiEZGRlJSUpOTk/Hx8UBAQPX19cXFxc7Ozv39/aqqqo6Ojr+/v97e3oKCgvf390JCQjQ0NOnp6ezs7HFxcW1tbaKiokhISNLS0rGxsU9PT1NTU9DQ0EVFRZaWlsTExL6+voeHh5mZmVVVVXNzc5KSkk5OTkdHR2lpaXV1dcLCwtbW1ra2tomJifr6+tnZ2T09Pfn5+f///yH5BAEAAD8ALAAAAAAQABAAAAZlwJ9wSCwaj8dIqgE41S6842Rw2OQCKwOgYiH6DiIFsRDoMIY7W4xzXEhAQk1CgPy5MIifDFInjAwvCg8tdSwzJB44OnRIBSgqDhl1QyY9CTeTQgs0ACWZPwQDMB+fPxQheaWqREEAOw==',\r\n'img/curvemap.gif':'R0lGODlhFAAUAOZoAIqqAN3d3dDQ0Ful4/p7VPx7Uk6p8MXp/12k5Y+qAKOK//94R/7NsU6o8F2k4Vyl4/17U93kt+jryP/bxNPx/5ra//94Rs/Pz+6Uc/p8VfXFmfx7Udzc3Fil5erj/4yqAJeuD4uqAKyV/9zjp02p8f2miqSI/9zko6GK//LGm1qm5Weo5PKzfE6p8ae+OpGuDZuM/72z//93Ru6Tb/iEXpmM/46rAHq25pHE7rLHUl6l4a+g7pHD7e+Uc5PC7tDbgfymi9bw/5LE7/6nirPj//C0fv97UPp8Vlut7ojG9feEYP2cfHS26Vul56mP+6zAPJKyEbXIU9XP/+Lc/4itAJjb/9HahHi25eTa///awv+lg/96T7Hk/3q25YnG9k+p8P57UJCxD6WH//+ni7Hl//SzeomtAMzMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAfggGiCg4SFhoeIiYqILgAhT2g+DgNJaCUEBECGABESCWgIBxQNaAUMEwSbJz82aE1cVSRoRhosEIZhVGZQaDcGLUxoGAsLPYYCZ2cCaAHJAczJHIYiCigxaEMFW1poOAMDPIYKWB41aBsMWTJoAwdBDuJTUjBoYBplFmgqZBUPhk5iTOwQtsDCDDRXDHzpcswZtDPPmp2RVigHAABR0AgZ0MELmjEFNizZ1OlTqFGlTqUqBGCEFZNEKhhAAyFFkQyGXgD4AALNCh0PkKChkeGIEkMXki1DpgwN0wuLoko9FAgAOw==',\r\n'img/cut.gif':'R0lGODlhFAAWANU/AKy815+tx9LV2FeG46Sst7W9yVhhcIOm683Z7IyVozVSjDRDYVeE3k94zVN+1d7i58zX6UxmnFheaTlWkT9iq3iBjmx3hyUoMWCQ7snT47C/2pmmvH2Bhs7P0UFmsDVQhmyP19Da7uns7l1sg0971Sk8Y2qLz4abwn6c1rnH3+Dj6Obp6y5DbK61v0JhoZSdq9fc4LK5w4ei2bm+xKy0wKe31T1KZ9rh7J2lsGp/qnWAjlJ4wsbM1DZHaUVruf///yH5BAEAAD8ALAAAAAAUABYAAAZ3wJ9wSCwaj8ikcslM8ghDFa4JSzyErVnz94oJLZ0tLSE0CLaFBKEi2f4EupGE4/5ZDKPCNnQYoBoOMilLCBgMLhE7JD4nS30eEzkNNwATSwMIGQoPDhABLEsMEDUfIiYUJRdLIBQKNisAPQsBSxoRPRt1uru8vUEAOw==',\r\n'img/del.gif':'R0lGODlhEAAQANUpANVdTN5tXeHNy/G8s+iupufT0cVYS+auptWUjN9UQOKck+YsEOOknu7EvvOOf+zPzd1yY8hbS9R7btq/vOa4sdIhBckzHePV0+XY1vC7s+jY1t17beiBc9/BvtgLANuRh9IqFNS1s95VQPHU0eHHxOKgmejKxuB2Z9yDd////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZHwJRwSCwaj8ikcdAwPiZGQcZxEI5KgqRisWEAlMKPB1QApyAGAAWciAgDyoBlqJEgCRUEsUM6ckQmRSFHKCdmQhcYh4uMKUEAOw==',\r\n'img/del2.gif':'R0lGODlhEAAQAIABAO0cJP///yH5BAEAAAEALAAAAAAQABAAAAIYjI+py+1vQJKNBlsvjFtjZn3T2JXmiSIFADs=',\r\n'img/delocalized.gif':'R0lGODlhFAAUAMIEAEBAQFBQUHBwcM/Pz////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAMsSLrc/vCJSAegbhKLGd+dd4XNR4zhZ3Yqyo4Dqayy6WJtDd/VrsueAHDYSQAAOw==',\r\n'img/demo.gif':'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',\r\n'img/dev.gif':'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',\r\n'img/diamond.gif':'R0lGODlhFAAUANU2APDw8Pv7+3l5ee3t7a6urn9/f+jo6Lq6uuHh4dvb28fHx2pqanNzc97e3uLi4mZmZqenp4qKiu7u7qioqHFxcfb29vLy8snJyd/f33V1ddfX142NjdbW1qqqqszMzIiIiHp6erGxsbKysqKiotTU1JOTk/n5+evr64WFhXt7e56enpqampKSkv39/XJycnh4eGVlZcLCwoGBgZiYmG5ubn5+fv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAUABQAAAZkQJtwSCwaj8ikcslsOoeGwkLjDIQWjUGBBViSKB3TUPEQtY6A0QthHMxqbOJBFlNyUATiCpZQSj4pRQ4CEF1FAQcZHkcBBDQXRBgMJRZKJxEbBgAqLn1NCgIgExVPpaanqKlCQQA7',\r\n'img/dilute.gif':'R0lGODlhFAAUANUnAE1afDNCaCo6YneBm7zAzdja4oqSqPX2+HV/mS8+Zd7g5mt2kra7ye7w83yFnlNfgGdyjvDx9NHU3UpXeZScsEZTdkdVdyo5YSw7Y5qitaetvtbZ4XaAmYyVqtnc49nb47q/zCQ0XX+IoZ2ktz5McL3CziAwWv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAUABQAAAZWwJNwSCwaj8ikcjmkDJhFT8JUgg4XJpMlYgVlswboAfA1YTbMUTmLWDZIa9Plo9TEsx3l5G56KAN8FUocfBBKCoBxBEsMAmUhGVAFIgAADhJWmZqbRUEAOw==',\r\n'img/dit.gif':'R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',\r\n'img/dlgclose.gif':'R0lGODlhCwALAIABAP///////yH5BAEAAAEALAAAAAALAAsAAAIXDBCZZ4frIpJNMkhVvcq+TYXeFzWaWQAAOw==',\r\n'img/dlgclose.jpg':'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',\r\n'img/dlgheader-blue.gif':'R0lGODlhAQAkAKIAAIu2zI64zpa8z4+5zoy3zZG4zpS7z9vb3CH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==',\r\n'img/dlgheader-green.gif':'R0lGODlhAQAkAKIAAJXQnJjSn6DUppbRnZnSn5vSop7TpOTl5CH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==',\r\n'img/dlgheader-red.gif':'R0lGODlhAQAkAKIAAOem3+mq4euy5Oin4Omr4umt4eqw4/79/iH5BAAAAAAALAAAAAABACQAAAMOeLJrVpBIEqoNIw/Au08AOw==',\r\n'img/dlgheader-yellow.gif':'R0lGODlhAQAkAKIAAMi6j8q8ksy/msq8k8m7kMq+lcu+mNzc2yH5BAAAAAAALAAAAAABACQAAAMOeLJrVnDIEaoNJBPAu08AOw==',\r\n'img/dlgheader.gif':'R0lGODlhAQAkAMQAALTX8bLX77HW7rDX7cLZ8LPX8bfV6r/W7rHY7bnR6bzS6rLW7rTS7LfQ6LTQ6dPk8bTV8LTV77XW67HY7LPX8L7U7LTQ6rPX7LLY7MHY77TU7bTY8f3+/rbV6rbP6AAAACH5BAAAAAAALAAAAAABACQAAAUdIPcYnXRhEzIMgrAEAVVsQA1FGmM5XpMolUOGEAIAOw==',\r\n'img/double.gif':'R0lGODlhFAAUAMQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAUABQAAAVaYCaOZGmeaKqqxhOs5oAdL5y1C4FdiS0fEpmgpoLoLjlMgZiKCBmXXW+F0BWgmCEMEb1MCjMmiptVAKSwAPhgzopPlPOlDbBVzgKLw2DLNM51fSINe4KGh4chADs=',\r\n'img/doublearomatic.gif':'R0lGODlhFAAUAIQZAEJCQtnZ2UBAQDw8PDs7Oz4+PlhYWD09PdfX19jY2MPDw8DAwMHBwd3d3VZWVlBQUNXV1dTU1L+/v8LCwtra2tvb28XFxT8/PwAAAP///////////////////////////yH5BAEAAB8ALAAAAAAUABQAAAVT4CeOZGmeaKqurBq0n/Es4pW0A3ZIufCuEALmshAWfqpIj3HBwBBGxgiZQjQvk4+OirJiBArA8LYKFHRhZ4sivihgoopYYIF/GmKA/e4w7P+AKyEAOw==',\r\n'img/doublearrow.gif':'R0lGODlhFAAUAOZLANbW1gYGBlRUVAAAAAEBAdXV1WNjY15eXlVVVf7+/p2dnWFhYQUFBQcHB+jo6NHR0dPT09ra2qqqqgMDA9LS0gICAklJSWRkZNnZ2e7u7u3t7Xp6equrq/z8/Lq6ui0tLc3Nzb6+vlNTU8HBwT8/PyIiIvb29q+vrwQEBGJiYgkJCcfHx7a2tkhISFhYWKenpxUVFfT09IaGhmVlZRcXF/Ly8iAgIP///xISEm9vb6CgoEpKSl1dXX19fcDAwDExMYqKijIyMmhoaCwsLEBAQJycnPn5+TQ0NHd3d3x8fNDQ0P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAemgEuCg4SFhoeIiYqICRAAj48QFJAASkaFHBMNAZwBDJyfDRMXhQoWGI8FBQ8PqgARRCKlC4suAoVFB4sIt4QKuooCCIIeKUs6uixChSYUSwK3HSsDEicGSzA7hS8VNTzD1z00SDkbOBmFCT8zCws+FYItBCUEI4cxQUckKkmCESgDriGSMYCAjQSDDBDQkAjEAGqEQgBRdOPDkEWHHDjAyLGjR0SBAAA7',\r\n'img/down.gif':'R0lGODlhFAAUANU5AP7+/uPj4wQEBPj4+Pf396CgoM/PzxAQEAMDAzAwMHt7e9HR0bS0tBkZGaamplpaWt/f35mZmf///8PDw1FRUZubm2pqag0NDa+vr6urq1ZWVmNjY42NjUpKSrW1tZqamlVVVUBAQMfHx21tbbOzs729vcDAwOHh4UlJSb+/v+Tk5IWFhT8/PxYWFiIiIl5eXj09PW9vb/T09JycnExMTMTExGVlZbCwsAAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZzwNxkkCsaj0gj7pFsIjklp9RIYommzRgOg00SArmFgtg1Qlq4W9mYwb2KhLWEKEtcAOsiDBfKFykgAAAbNn4AKDgJfgo4LmAOBmUVGmAjODR+FjgHJnkGmyk5Hw0MXQQrNTkRCAIeeTOsBX4dArJ+KidGQQA7',\r\n'img/dreversed.gif':'R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOkcECGUwCAREAyUhM2F0EBLDQaDUDDhFQEDZ2BgB5KRD8V4nPYl3HBnB1JUKCwBpdkgEIQUWCRcIYnuGHw8FAgIVIFlPmZqbnJxBADs=',\r\n'img/dropdown.gif':'R0lGODlhEAAKALMMACEhIf//vHUhISF1vCFNmer/////3plNIXVNmXV1vN3/vJmZvP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAQAAoAAAQqkMlJ6wyoWBYSDQKhfcJAAuIlAOaZguwGE8rabsYB7PfG5DEfxbAQGikRADs=',\r\n'img/dshape.gif':'R0lGODlhFAAUANUjAOjo6G1tbWxsbG9vb////2pqavf399zc3PLy8urq6ubm5nFxcbm5uY6OjnNzc4eHh9ra2o2NjfPz82lpaYyMjG5ubsXFxfX19cvLy8rKyufn58nJyeTk5PT09HR0dNLS0mhoaMbGxmdnZ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAUABQAAAZXwJFwSCwaj8ikcslsOgeiQGAwoEAIS8HBIEF0GJMMNhkAFDkDjVJgLm4ayrJR4Vi3iQlP/D7ERPZFAAsKa1sIFwkWBSFjSAMgFQICBQ8fjU6YmZqbnERBADs=',\r\n'img/dummy.gif':'R0lGODlhFAAUAKIHAP///+7u7uHh4ebm5urq6vPz8/f39////yH5BAEAAAcALAAAAAAUABQAAAM2eLrc/tCBGSEQAVQ5sN4M0GVgOH7lARBeqqytC5NyEKeATeM6WgKF2y+4+xmEIMDR96O4npUEADs=',\r\n'img/either.gif':'R0lGODlhFAAUAIQcABMTExgYGB4eHigoKC0tLS8vLzY2Njg4OEhISE9PT1BQUFFRUVRUVFhYWGVlZWhoaHBwcHh4eIeHh5eXl6enp6ysrLe3t8fHx8/Pz9fX19/f3+fn5////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVR4CeOZGme6AmlLNWw5oN9DQWT2TF9w3aTj0YF8SNRDoxdUZQxBDTL0QIQHSUEs2qBoFxiDI5XVBI5ZouHS6570wxEweXkIaIolghL9bM57E8hADs=',\r\n'img/electrophoresis.gif':'R0lGODlhEAAQANUpAP///+Hh4cPDw+Li4t7e3v7+/u7u7vb29uDg4P39/d/f383NzcHBwfT09Li4uMLCwvLy8vDw8Nzc3MXFxcTExM7OzqysrLm5uefn57q6uu3t7dDQ0OPj4/f3993d3cDAwMfHx8jIyOnp6aqqqvr6+sbGxuTk5NjY2Ly8vP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAQABAAAAZ1wJRwSCwaj8gkcST4kCyCUMrxWCweFyEIsNFQAKjOAMBgAERCAQCRQQBKAkNhMikM0oC8fp8P4BsYDQkmAwcABAQAdylqEAEQCQgeBwWIingREhEJChKUCgqXjAAGJwZ8en4pX6h8HEIOAbKztLIVSri5ukNBADs=',\r\n'img/ellipse.gif':'R0lGODlhEAAQAOYAAP3+/uzx9am+0vv8/f////r7/Jy1y7jK26G5zvj6/IKivmyRsqzB1H+gvJu0y77P3fL1+PX3+qm/0m6Ss/D097DD1pGsxe7y9uju81+Hq4qnw/7//+ft8miNsFuEqpKux+Lq8JOuyMDQ3pexyX2du/n7/G2Rs4ChvdXf6bzN3fj6+6O70P7+/+3y9lyGqmGJraS6z5GtxnKWtqG5z7jK2q7C1fb4+sLS387b5tHd526StNvk7IelwMjW4qK6z5Csxf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAQABAAAAdTgECCg4SFhoeIgiMyCyE4iSs6EoIHCg2HDCSGDy+GJogCNIQCFYkfhBOJQAaEHaoIhDE9iRaEKDyIOTCFJyKHHocZPoQ3LimINRoOBj8zqs/QhIEAOw==',\r\n'img/eraser.gif':'R0lGODlhFAAUAOZgAAEBAf7+/vr6+m9vb+bm5gcHBzw8PLy8vCYmJhMTE5OTkxAQEAMDAycnJ4aGhpeXlxUVFQgICD8/PwUFBQYGBqurq////wICAvj4+N/f38HBwc/PzwQEBLq6ur6+viQkJE1NTfLy8q6ursTExFxcXOnp6VNTU3Nzc8PDw4iIiPf396+vr3V1dc3NzQoKCjo6OiAgIImJiWlpaUxMTA4ODi0tLbW1tWZmZh4eHhoaGnR0dBkZGbCwsDY2NhQUFICAgJqamo6Ojr+/v6enp3BwcNra2r29vQ0NDZCQkLu7u1RUVF5eXpWVlZubmx0dHZSUlAkJCdHR0aGhoaWlpZ2dnS4uLkhISGhoaCoqKpycnFhYWHZ2disrK5mZmQsLCwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAUABQAAAfYgGCCgwFJAoOIiYlKX1wlipCCMl8SEzgbkYk/XyBgFS4+RpmCTAAGAYIHCV4imRoXDYeDG04TTZFIXxEriQRYAA6QQF8QFFSJGC9fRIpdX1MNFzGJAQZfW4kPXx0qPV86iCM0XzeJQV9ZYAFWX0sWYBk7C18DiVEFCR5gFiRfMwQIoPCgp+jAgiM2BJ34UoDDEAEEFaGAEKGCoCsMUsArUA9SixwUpIBR8EWDgBochGQqAoPBE5IHDAB4MAoMQAAmKH0JVhNMiCpfgrLoOQjDhy9aiCbqECkQADs=',\r\n'img/expand.gif':'R0lGODlhEAAQAMQAALHK6qPA5+Hz/7/U7qXC59Lh87rR7ePs+KC/5tns/////97p9s7d8pO455C25Zu85Z7B6rPM66nJ6q/I6srh+u/9/9bq/lp6ztLm/Or6/zJVsub2/9To/c/k+////wAAACH5BAEAAB4ALAAAAAAQABAAAAVfoCeOZGkaSEAMJhkcSnw4rTdUeF5BJpH9QGCDZKBsjkgkhTGaCASXqPTyBIwAnaxmu812rCKsl+vtREZFjBqjWWOWJAJnTqcHTAOLfm+R1BAUCYIUDzUiKCoshouMLSEAOw==',\r\n'img/filelink.gif':'R0lGODlhEAAQAOYAAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAeagG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJhCQAX1mCAC4oUBhggzAOagdaPkVVB0Jia1GCSDpUJ24EDiEEZSk4I0q5ExUFDxkzFz0PBRUTAIIGARAUCwIDAwILFBABBoMlPyIMLAFtVDA4QmZIoggJFOQY80GDggQRXEmcSFFiIAA7',\r\n'img/find.gif':'R0lGODlhFAAUANUAAN7EkKlhOeLKlt/EpfTr29u9hOLLuejx+cGOV/r28/f6/fH2++TOq8OSWOz0+te2fr+KU+/1+/Hm2MmbYenWpNKthNKsd/jy7ufSur6GTfbv5Nm6jPn7/c+oZLyFUs2mYty/pdKubebRr/Tr4uzz+tSwcPP4/Pr8/suplJdhRsyicOfToMugZsWVa/z6+ffx7ffw5ezcv7mASLuBTLyET/z597FyRbNzS75zQODHts+oadKrb9a0eery+uvz+v///yH5BAEAAD8ALAAAAAAUABQAAAavwJ9wSCwaj0gkARDqdHQbSVIYKz1EMA3DwsIkCSWGItLzLTiDifQIeCh8h548wlFVkCHRIi73+UwDDUgdGj5yZT4kESMQSB8aJH2JDosZSDoMC34+Dp0mII1HGxYcEZ2dCyc0LUgSLAMcJhERJicNOzgGSBgTKgMjIyAIPAIANC+tFQgZGR4zBRQUBQHIU0IGCAArABMpNdbXHg8PDTYJ4EI5ATI3F+hDCSgu7/T0QQA7',\r\n'img/fliph.gif':'R0lGODlhFAAUANU9AEBQYLCwwJCowMDAwIBgwNDQ0JB40JCYoJ6Sz5CgsGBAoHBIoGBwgJCAwKCQ0ICIkJB4wFBgcKCI0NLS0lBYYGAwoPf3+4BwsKCYwHBgsJ6Mz4BowJBwwKCosL663rC4wFBYcLCo0MCw0Obo9e7u+HB4gFAogKCY0HBQsIBgsLCwsKCgoMi54HBAsKCIwMDI0JyO1VAokJCA0KCQwEAgcPDv+LCg0EAogGBocGBAsJCQoHBYsGA4kP///wAAAAAAACH5BAEAAD0ALAAAAAAUABQAAAZ2wJ5wSCwaj8ikcslUJoQnVrMXeAgdMEtTULpKPMxAgSGUhAijpeCFE8pEEIRSPIgIDbYZqpYUDDoUdxgNO3JHYioHAEIcLhcpLSRHfis6iz0bDRkLChpGARMfBw+XBBCcPBVGCQwRIAClOTEmNzRTt7i5urtEQQA7',\r\n'img/flipv.gif':'R0lGODlhFAAUANU+AEBQYKCowKCQwGBIkL6+y6CQ0GBAkJCYoLCo0MDAwJCAwHB4gPDv9oCIkHBYoFA4gHBgoPn5+rCg0NDQ0IBgwObk8vT19mBogFBYYL+41IBYwFBgcPr7+7+11O/x8mBocJB40JCIwFBYcO/v8oBooJB4sGBQkNDI0NvW6qCI0MfH07CwsLm5x3BQsJBw0KCosGBIoIBosJCQoJBwwJCgsNLS0quyubC4wJCA0MDIwKCgoLau1uzr9a6kzP///wAAACH5BAEAAD4ALAAAAAAUABQAAAZzQJ9wSCwaj8ikclnkjAg05tCjCtQWUgsrMEncPssIgZtY6Q6ipDhwyiVeB1kDkLQdGovLBgPo06WAgUYFhCk4IC4zFBQaSSghAgiSEhICCi1KFT0OJAqWJTEwTDwZAyYQEA4GgAwdAwMGD4IMO7GCt7iAQQA7',\r\n'img/fullscreen.gif':'R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py40AGQSGumCt07f7y0lVl0XL9KXqehQAOw==',\r\n'img/fullscreen2.gif':'R0lGODlhEAAQAIABAH9/f////yH5BAEAAAEALAAAAAAQABAAAAIajI+py62w4IsJ2Hid3hxZWWUH6FFTh6ZqUgAAOw==',\r\n'img/gene.gif':'R0lGODlhEAAQAOZOAAAA//7+/8bG//X1//f3/2tr/7+//9DQ//Ly/ygo/4eH/w8P/8fH/4SE/3Fx/wEB//n5/3V1/yws/+Hh/46O/35+/97e/42N/8zM/8/P/yYm/xIS//Dw/2Nj//Pz/9PT//39/+bm/7y8/////9HR/5+f/4iI/4GB/3Nz/0xM/wIC/319/wMD/4+P/2ho/0ZG/4yM/5WV/9nZ/4uL/+Pj/3x8/+Dg/4mJ/9/f/9XV/3Z2/wwM/6am/wsL/9TU//T0/9jY/4OD/5SU/5qa/6en/w4O/3R0/+Li/3p6/5mZ/5aW/3h4/3l5/5OT/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAQABAAAAe6gE6CTiIUCgUFJk0Gg4MIJ0wrA4IISDoXBIMDDgIkOw0gARELOQYoEE4BChlOAgsPHxYAGwdODDEBJDCCPwkAKS8ACRyCQTIUIYMuAMwAHYMTJRWZggIqzCwYgx4rRI02GswSNIMjQzyNOOEAEkflSdODDNcA2ds1LcmCy83PgtEHdjkZ4AuYMGJOGgBRxYrBq1izaglQEmAgpwM9QIkq4sMUKkonlsyY5ATBDSOYGgkS0eJQIiGMBgUCADs=',\r\n'img/gray.gif':'R0lGODlhIAAgAOYAAH5+fnd3d8jIyMfHx8XFxXh4eMTExH19fXl5eXZ2dnx8fHp6eoCAgMnJyXt7e76+vqGhoXFxcXV1dYGBgYWFhcDAwLq6uqysrLS0tLu7u6qqqm9vb4KCgnNzc4mJiZeXl6+vr4qKipKSkpGRkYiIiLa2tqampnJycp6enpycnI+Pj4SEhIeHh5iYmKKioqWlpZ+fn5aWlre3t52dnaOjo5WVlaenp7i4uI6OjrCwsHBwcJOTk4aGhrW1tb+/v5ubm7m5uZSUlL29vZmZmYyMjI2Nja6urry8vKioqLGxscbGxsHBwcLCwsPDw39/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAf/gE2Cg4RLTIcGBAQGh4ZMhJCRgodKSgJNQhkWFQMDSgaGkpGHTEoDPjYiJCsTHDxEPyWWTYeig0tNDQ8wCgEJAQgLCAW/ASEYnqGiTARKIE4RCgcATtXWAAcJHR8PA7WjixAFBdbl5k4HJyEyA7SQjwQQCA7n9dUAAR43Ao+ETA1GAtCzZw/fiCWMbgl4cAABwYcAIrjgN4iJgBQnHmpcsOCIAFzMHiwYqNEeAx0QlNBaMoBGAWolCS5gYKBmEwE4EsR82AsDAYQVKJDbaa/hCyVLCFhgsIBowQIzvCnpAYCk03L4PlxSUqLq1XP4WlwikIFD069YA6DwJohFALTlphoiQXpzRwKYcHtZ+LlEyYUAeNEWINGEwKFFDBzCdbLhQoN+FjVsWCyBQl/Ihj1IQKsggeN+gpYIAJI4cMkDagck9Dfg2cudnWNcHtVkQA4KEQ5oZFBAQorZkh4JyBCkgwRpAGAmbxhhgoZktmgx8YRBRIACvoqNm2CiQoMmymwhEqDkgYkhI4qoqAEhCYFOjqL7w1VJgP1O5A1/k++PiSNSjewnSSAAOw==',\r\n'img/green.gif':'R0lGODlhIAAgAPcAAMLCwsHDwSOxTMLDwyOxTcPCwyGwSxCuPsHCwc7Dy8XDxcnDxxCuP8/DzMvDyMzDysvDycbDxCCwStDEzNHEzcDCwMLDwcHDwhSuQcrDyCSxTR6vScHCwhevQyKwTBKuPxevRMjDxs3CysbCxc3Dy8fDxcXDxMXCxH+6kBSvQsbCxsbDxhKuQc/EzMPCwtHEzs/Dy8TDw8TCwxGuPxOuQBKuQBCtP8zDyc3CycDDwSiwUdLEzhCtPhuvRrLAts7EyxmvRRGuQCGxSxqvRRywSKzAshuwRsLBwgisNQ2uOz6yYQWsNg+tPiCwScTBwxOvQYm8mMPBwtLEzZG9ns3DySyxUiqxU7jAvIi7lmu3gh+vSai/r4q7mI69mxWuQ0e0Z2W3fRGtP2K2fBWvQsLBwcfDxrrAug+uPpC7m123d7i/usTBwi+yVrvBvCCwSxOvQDeyXM3EyzOyWB2wSiGwSgCtMs3DytDDy73BvZW7odDDzkCzYne5ix+wSVe1cjuzX6q/sEOzYwesNRquRae+rSCvSs3Eyl62dwCrNNPDzpu9piGuS8jDxyCvS1m2dbLAtx6vSKK+qnG4hh+vSnW5iSixUDyzYKO/qheuRFC1bsvDyiiwT9DDzNDDzTiyW4S7lKe+rny5jtHDzCmxUFO1b8XBwwCsMwStNSOvTW+5hEy0a8HBwQ6uPpO9nyGwTBKuPgutOwKtNMzDyB+wStHEzMvCyWm3gcHBwiOxTsbDxXa5ijGxV9DEzQetNiKxSzSxWE+0bpm9o1u2dcvEyRyvRxauQ6+/s8jDxa/AtM/Ey8XCw7bAuqG+qcnCx87Cy0CzYXu4ikO0ZQKrNA+uPMrCyE+1biewUM/CyxOtQZW9oSKwS77Cwc/DzQesNiSwTDSyWB2wSMPBwxivRAuuPCawT7vBvcfDxxOuQc7DzM7DyrG/tbXBuGC3esDBwQ+vPqy/sr/Cv0m0aMHAwWq4gGi3gHC5h4K6k8jDyBKtQA6uPSaxTsLDwsPDwyKxTAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAj/APkJHDgQQIAjBSKUWGAulzIXAQDsI0ixIr99FWRQi9PgxDJjPvA84AZBRUSLFfftC5BgwrZPwDyxqWTlWyAwhB68KMEBAMqBAUwkalNvw4wzBzqI65CCxwcWz5iRMITAJ8p9Cxzk8RbLiAQPBPqJ7UfAwBx33Q6Va1FgYkULC1ToqvEG19i7dwlsQLIHUIsYbgfuiyCLkhcgeBPfNcDgTxEYgQXe2tGKAWLFmPu5OaBK3oIAA3MkMDMLQ+bTEgRB0xNO4IBSnGydCnsas4AOg9Y1yMEvQIYrPYjVPq1BGp8fawbscxbqQ6PhpzFZOxZin5MJXw4IgJ5ZC75IEAIo/6jw68l27ooLYUAhYt89ZKNAoMdsgMa8BPscgFo0ZL5iITOkcccAGWyBSn/+4SXEB+zAMAAjPlQhX4KL1ZDKNQMooAAcNpxHYT+TjIFFezF0QsoBvnwoFiRhqJNBABbc0AUDEqgoAAuWlLGCSiGMsEkxHvqnASJo8DLRAFFQwEUdHwrAihxk3OBWAA7IoMQ4riTYQz5TSHEBQe288A45KRgwHzgHZJGOApHxU0AD2ehDgwfQEUCEDcKs4sCXFO1jQgLB7NLLBrRhpkEQsNBTgR1tDnTBCaI84scSSRDRhAFgCaANHX2AYIoOUOAwDAcD/FTVD5pckgkG5wTBwzRMMEyAzSs6oADPDhEg0ChB+wCAwAoU1KKGPWJUE008jkiiSAjJUKHrrhYZNAIEOKAzAS0UNEDCA80AwAG0P/UawD4uFGBuAQBYAIBVKAUEADs=',\r\n'img/hbg-blue.gif':'R0lGODlhAQAoALMAANHU7tbY8NLW79DS7dnc8dXX8Nvd8c3Q7Nfb8c7R7fT2/N/i9N3e8gAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUJmwCGHFGItQ+EFRCAIAkCUwrOaaJMcRAQA7',\r\n'img/hbg-green.gif':'R0lGODlhAQAoALMAAMzw4s7x49Hy5crw4dXz58/x5Nbz6Mfu38jv4NPy5tj06dz16/T8+QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZkBmxCFHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7',\r\n'img/hbg-red.gif':'R0lGODlhAQAoALMAAO7R3/DW4u/T4O3Q3vHZ5e/V4fLb5vHY5O3O3ezN3PTg6fv1+PLc5wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZcJmgCGHFGHtO+EFRCAIAkCUwrOaKIEkSAQA7',\r\n'img/hbg-yellow.gif':'R0lGODlhAQAoALMAAO7u0u/v1PDw1+3t0fHx2u/v1fHx3Ozszezsz/Hx2fz89vPz4fLy3QAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZUBmxCGHFGJuS+EJRBAEAkCUwrOaKIMcRAQA7',\r\n'img/hbg.gif':'R0lGODlhAQAoALMAAOzs7Pn5+erq6uHh4eDg4Ofn5+Xl5enp6ejo6OTk5OLi4ubm5uPj4wAAAAAAAAAAACH5BAAAAAAALAAAAAABACgAAAQZMJwFEBLmHFvK+othJAnDkCWjrOY6DAQRAQA7',\r\n'img/hbg.jpg':'/9j/4AAQSkZJRgABAgEASABIAAD/4QNuRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodpAAQAAAABAAAAnAAAAMgAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDExOjAzOjE4IDIwOjU1OjUzAAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAACgAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQAAAABAAABJgICAAQAAAABAAACQAAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIACgAAQMBIgACEQEDEQH/3QAEAAH/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APR97/3j96Sikkp//9D0OUk0pJKf/9H0GUl80pJKf//Z/+0IGlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQABAEgAAAABAAE4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAThCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAAThCSU0EAgAAAAAABAAAAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADOwAAAAYAAAAAAAAAAAAAACgAAAABAAAAAwBoAGIAZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACgAAAAAUmdodGxvbmcAAAABAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAAoAAAAAFJnaHRsb25nAAAAAQAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAjhCSU0EDAAAAAACXAAAAAEAAAABAAAAKAAAAAQAAACgAAACQAAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAKAABAwEiAAIRAQMRAf/dAAQAAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9H3v/eP3pKKSSn//0PQ5STSkkp//0fQZSXzSkkp//9k4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAANwAuADAAAAABADhCSU0EBgAAAAAABwABAAAAAQEA/+ESSGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPD9hZG9iZS14YXAtZmlsdGVycyBlc2M9IkNSIj8+Cjx4OnhhcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eGFwdGs9J1hNUCB0b29sa2l0IDIuOC4yLTMzLCBmcmFtZXdvcmsgMS41Jz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJyB4bWxuczppWD0naHR0cDovL25zLmFkb2JlLmNvbS9pWC8xLjAvJz4KCiA8cmRmOkRlc2NyaXB0aW9uIGFib3V0PSd1dWlkOjI5MWVhMDQ5LTUxYzMtMTFlMC05OWQ3LWY3YTAxZjNmNDhkMCcKICB4bWxuczp4YXBNTT0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyc+CiAgPHhhcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI5MWVhMDQ2LTUxYzMtMTFlMC05OWQ3LWY3YTAxZjNmNDhkMDwveGFwTU06RG9jdW1lbnRJRD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eGFwbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAoAAEDASIAAhEBAxEB/90ABAAB/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwD0fe794/ekoykkp//Q9DlJNKSSn//R9BlJfNKSSn//2Q==',\r\n'img/hbk.gif':'R0lGODlhGgACALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAAaAAIAAAQcEIAgxBikFGMOQkmiLAvTOE8qURamcR4okiaaRgA7',\r\n'img/header-bg.gif':'R0lGODlhAgAXAOMIAOvs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+f///////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAACABcAAAQT8MhJazXYlM2JJ8MgjEIQACgQAQA7',\r\n'img/header-bgblue.gif':'R0lGODlhAgAXAKIAAPX1/OXn+ODh9ufo+dzf9uPl+OHj99/g9iH5BAAAAAAALAAAAAACABcAAAMRCLrcPXCESYstxogtziEgkQAAOw==',\r\n'img/header-bggreen.gif':'R0lGODlhAgAXAKIAAO/999j678z46Nb57tD469v68M746tP57CH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYcd55BNjBGgkAAAOw==',\r\n'img/header-bgred.gif':'R0lGODlhAgAXAKIAAP3v9/nb7/rd8PjO6PjT6/nY7fjQ6fjW7CH5BAAAAAAALAAAAAACABcAAAMRCLrcLVCESYst55BNjBngkAAAOw==',\r\n'img/header-bgyellow.gif':'R0lGODlhAgAXAKIAAPz89fb36vX25fT04fb26Pf47PT14/b25yH5BAAAAAAALAAAAAACABcAAAMRCLrcXbCESYkl54gtjBngkAAAOw==',\r\n'img/heatmap.gif':'R0lGODlhFAAUAOZ0AEPL/vr8/Iju/4bS7OXpZ/X5+emsUKi5ucfY2Pf8/Pb29unp6ULK/fH394qbm+T09Pz+/jS877rKyrjJyT3F+On29uv39+b19ZLWVczY2DjA8/T7+6W2tvn9/cna2p6wsK6/v+n5+f7//6u8vFOkPcPU1MLT0+74+PH5+bPExMXW1rDBwaKzs7XGxu719ZqkpJmqqr+4VLfGWIPQ6cGWRn3j9IO3XcFxNkHJ/L63U2TO9cW+VnrH4LiyUXnG39De3pvFVLptNbyTRLxuNVmtQMDR0TzD9si/V5vEU4HO58S8Vn7L5Da+8XzJ4pa/UbltNINvPIXS63K0R8NyNz/H+oTq+7q0UjW98LiQQ1OjPcO8VaDJVXjF3rhsNIXr/LzKWnrg8TrC9bzNzZfAUqPNV7mzUYDM5YOUTbPCVn/l9sVzN3CwRnje75a+UUTM/+Xl5eLz87vMzH6Pj////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAfvgHSCg4SFhoeIhhlxjI2OjhmEEnOUlZaWEoQTIm4ADDhUFEZhGkxXESIThC0QbgIMXlUUaTUaYGwREC2EKR2dOlEzSWZLTTw+XB0phCsJrgMBASrRRdFiCSuEIBudAx4IPyUmRCQkWRsghCMozwUFKu5SGBhrKCOEByfd32RASFtjnLQ5cYAQBwvPGjT4QoCAjIZoLHAgxKJCJxs7tByJkUOJlTI9KrAg9OGCqzMGDNBw4UJISiwXPhCC8aATFDVTbogbEuRJlwcwCDkIAaeo0aNFQzgg9EKO06dQob4gpGDBm6tYs15doCCR169gAwEAOw==',\r\n'img/helix.gif':'R0lGODlhFAAUAPcAAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAiEAB8IHEiwoMGDCBMOXMBggUKCCRQ4mKjgoUAGFBkwQPAgwUMFBw4WYJBwQciDCA4AQAgggEeDBwhY7JiAQYABDhwiXEAA58SJAnQaTPlTgQIDC1YmDOBg48yBDAQcbCnUIAOZBwdULQigwMuBBZrOZKBAwMQDHC1KdKBgq0IEX5/KnRsQADs=',\r\n'img/helm.png':'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',\r\n'img/helm_aa.gif':'R0lGODlhFAAUAOZNAM/Pz8bGxsvLy9DQ0HBwcM3NzcjIyIyMjM7OzsrKytbW1ouLi9HR0X9/f29vb66urr6+vqKiovf394SEhPr6+rKysoWFhbS0tJKSkre3t4mJiejo6NXV1V9fX05OTv39/aGhobu7u42NjXt7e9zc3JOTk4eHh6SkpENDQ6amprq6und3d3Z2dri4uIGBgY6OjvX19XJycnp6etvb23FxccnJyXh4eGFhYX19fYCAgERERFdXV5iYmFhYWKurq6ysrKioqOHh4ZqamoKCgn5+fvb29qqqqk1NTXV1dZeXl62trcfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfRgE2Cg4SFhoeIiYqKHB0EDgSPBB0ciRIjFwoMmwwKFyMSiBATA0tLBgamAxMQh0U0IQkBS0wFpgkhMTCGERgAswMrNgCmABgghUFIATW0LR4oKgKnASwzhC4gpUsDQwsyGqUBCCdAhD8vvwYCRzc7HgKpAAetgx9EGQIIST0pETpCAAjIgONDoQANADBZwEOBAg0mEABoEMAQhRxGCiSYRisBEx8NKBwiQQBBASYoaxVwQCJRCREVHih58KCCiBKKNlhYcKDngQUWNiwaSrSo0UAAOw==',\r\n'img/helm_base.gif':'R0lGODlhFAAUAOZCANTU1GBgYPj4+KioqKenp6qqqnl5edLS0vn5+ZGRkaampnp6epCQkK+vr52dna6urqysrJ6enqGhoY+Pj9XV1a2trV9fX7GxsZ+fn2NjY0JCQl1dXXt7e/r6+o2NjXJycmZmZjo6OrOzs0FBQZqampubm9bW1nV1dYmJiVFRUYyMjJKSkoCAgLCwsKKiom5ubn5+fmdnZ3h4eHd3d3Nzczg4OGhoaKSkpHZ2dpOTk0lJSYGBgaCgoEpKSnR0dLKysqurq////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAe8gEKCg4SFhoeIiYMCJQ4CioUCEzIzDI+QQpIGEBALCZeJCBMLQAQDQAYMCKEMpKcVpwYJq4YdCRwQAw8gMbBAnh2RKxylBSQaNQ4FsTmgQh4fDQQKDy8nNjQPCgQNHx6EBxkYxSMpOhoFBEAYGQeFAAERFzA9KighLBcRARSHFBYuDOz4IcIHjhsBACAKAsCChAYKFLSQkDBIIoYBlAHZB8CiIow8KHbEJCSIiQ0bKHgkGeTAgZUkY8ocFAgAOw==',\r\n'img/helm_blob.gif':'R0lGODlhFAAUAOZQAMvLy8nJye/v7/n5+SkpKXR0dD09PUVFRUdHRzs7O5aWli0tLdTU1IuLi6OjozExMTc3N6KiouDg4PHx8PDw7/n4+O/u7szQ0ert8evt7vj6++7u7aSrtO7v7tjc3Ozr67y5vaarqrq2sPj6/bW6vPPs46+vo7yyq9XT0+jr7rOtovDx8ZqlqvDw8fDv7/Hw8PHx8bGxrvj5/O3t77vAx+7v7/Tp3r+6tbKztcS/uuvx8ujo5/Dw8Ovs7efn6KGutuzx8ubo6Li2rerp6bq+xu3u7srFyObd2fTu5+3t7fj4+PX19SwsLO7u7v///8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFAALAAAAAAUABQAAAfhgFCCg4SFhoeIiBINBgQLTEwLBAYNEocMDwgRAU8AAE8BEQgPDIUCCQVLTgNKrUoDTksFCQKECgdLS0lNvL1JuQcKhBAOTkk8FL2+Tg4QhAQBA00fPS8CExQwFEkDAQSETE8aSCo/KB4pRxcYFkpPTOAAIzYmLCAiJCchRDoVAPCDmACQUUIIByM5cNyIQQOIP4CCwinpMCRIjQ0+ZuzI0O7ds2hFWkwQcE3AChfcvA0rtkvZsma2cOly2eTXkmCETqVa5epVrFm1CGHSxMkTKFGkDi1q9CjSpEqJokqdKigQADs=',\r\n'img/helm_chem.gif':'R0lGODlhFAAUANUoAPf396SkpPn5+fv7+6GhodTU1J6envz8/PLy8v7+/p+fn5qaml9fX/r6+u3t7ZiYmODg4JycnIiIiN7e3peXl9zc3JmZme/v76amppGRkdXV1ZOTk/Pz8/j4+ImJie7u7ujo6LOzs/Hx8fT09KOjo6Kiovb29vX19f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAaFQJRwSCwaj8ikcsk0SggBknRKIniQgcRhMGhwB4dEAEkyjUYngJlzMpGQJdPp5JhAziM3XC6IYAIhAm0leycdDxoFFIImhEdxJwIbCwwVAnlvj3IAAR8FGWh6micjFwgAIAh5jkYkAKRyaXMAmUYWIri5ugtICgYlwATAwAYKTcfIycpJQQA7',\r\n'img/helm_cterm.gif':'R0lGODlhFAAUAOZNAM7Ozs/Pz4yMjNHR0dDQ0G9vb8nJyaurq5KSknBwcL6+vsjIyMrKyr+/v4WFhX9/f4CAgHNzc319fXZ2dvf39/r6+tXV1YuLi+jo6MvLy42NjdbW1re3t66urv39/bS0tNzc3LKysqKioq2trXJycqOjo19fX+Hh4WZmZr29vYGBgfX19Y6OjpaWlqmpqWlpaYiIiH5+fqGhoYaGhsLCwqysrHV1daqqql5eXqWlpZOTk7u7u/b29rW1tby8vHt7e9vb24SEhHx8fKampnFxcWJiYqSkpLOzs2tra83NzcbGxsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAfMgE2Cg4SFhoeIiYqKFjgJBZAJCSYWiRQ/HxsDmwMbH0IUiApBBEumpwQOCoc8JD4MS0pKDEkGBjtEK4YiCAGyShkNQw0LAQgyhSc2SgDNBClILxOzShNAhCoiAzAkETMtEQQHNAsARi6ENSwEIQcHPTlFJRLEAQKrgx4xHAFMSbUCUCAwkIGDBA+FlDzwdQrAvyUBHigxVAHCjSSnTiU5AKHCIRAFHDIZ6Q9AARCJdGgIMWJEhw5HNCBQhMHBBQE4BVxwgGGRz59AgwYCADs=',\r\n'img/helm_find.gif':'R0lGODlhFAAUAOZCANnZ2fz8/NjY2JiYmJqamvPz89fX14SEhJmZmf7+/qWlpcDAwPDw8PX19Zubm/n5+ZSUlIKCguXl5YmJibS0tLa2tv39/ZycnPf397u7u5+fn7W1taysrK6urt3d3cHBwc/Pz35+fu7u7u3t7fb29tzc3Nra2qamps3NzczMzJOTk9vb29DQ0MjIyMPDw6KiooeHh3Z2dqGhoa+vr+jo6Onp6Y6OjsnJyX19faCgoJKSkurq6uvr64qKipCQkJWVlZaWlv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEIALAAAAAAUABQAAAeNgEKCg4SFhoeIiYqKNBQEEzkfIotBACozEgUeLxAjigVAAAGDDwsyo4gZFQmFARoAiT88hywniT0FhyYDiQgShkEtHYk3CqiDGAg7iQ8XCw2CCQwKBCRBiTUEDikrLgMONjoG14gNIBwDGyUMEDERAuSLQhYAETgHBvKDQQIHITD69gnwgSKgwYMIhQQCADs=',\r\n'img/helm_import.gif':'R0lGODlhFAAUAOZAAISEhIuLi4WFhe7u7srKyoyMjPLy8sjIyHp6evz8/PHx8bi4uMfHx9/f3+Tk5MvLy4KCgu/v7+vr67a2ttDQ0JmZmcHBwcbGxoaGhpKSkqysrPf395+fn4+Pj+zs7Ht7e2pqatbW1sXFxWlpafPz87CwsI2Njaurq25ubvb29qGhoaKioqqqqpOTk9nZ2YiIiM/Pz97e3re3t/Dw8GxsbHl5eWFhYeXl5czMzKCgoObm5t3d3ZiYmKOjo4qKiv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeOgECCg4SFhoeIiYqLjI2Oj4IQCAIAlZSVlgIIEIQFEj+goaEJCT8SBYQBNxQUMD0lLTIsFgoDJA0BnQ4fIBkVHBUvOQsDEQYxuYMdBCgjNDY8EysCKsUGuIQmO7UhFjoeMwwuKQYbDqiDNQs4BwQPBwcMDwQiFwQTCIQnAgEBPv8AA2LQAKmgwYMIEy4KBAA7',\r\n'img/helm_layout.gif':'R0lGODlhFAAUAOZLAOfn5/7+/t3d3ezs7JqampSUlM/Pz319fbKysqSkpLu7u729vYWFhe/v7/T09MHBwaGhoampqdPT06ioqPr6+uDg4Pb29vPz8/39/Z+fn8bGxsTExNjY2LOzs+bm5oCAgOLi4tLS0tHR0crKyp2dnfDw8IaGhujo6OTk5MjIyIKCgri4uPHx8fn5+fz8/K6urvf398fHx5WVlcDAwKWlpeXl5ZmZme3t7erq6rCwsIODg4SEhIqKiouLi8XFxeHh4fLy8tra2t7e3o+Pj7a2tqysrMnJybq6ut/f3+np6dXV1f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeggEuCg4SFhoeIiYqLhwMMJ4yFGBMEA5GFHxuXhD8ZQIVGBhoNg0kKLoIBCQKEJQsqMhmkAUELFIMPBYQPRywOCDyCECOEIR2EMSCCLSsbHikAhDcmhAQVgxYkNhqFQjSECgaDAAQQSoQWEkWEKDocNQJEBRI7OKlIPayEF0MIBzMOAgBgEKGCiBcHLBW6QAEAhkE+ckxIEAHGposYM2IMBAA7',\r\n'img/helm_linker.gif':'R0lGODlhFAAUAOZTAKqqqqenp5aWlpOTk4GBgZeXl6SkpIODg6CgoKGhoX19fWlpaYqKinp6et/f32hoaGtra62trYyMjF5eXrq6uvz8/M7OzoKCgoSEhHFxcYmJidTU1JKSkvf392xsbPb29sDAwPr6+vj4+KOjo2pqamNjY1hYWKKionl5eUtLS0pKSo2NjXBwcHZ2dl9fXz4+PtbW1srKyrCwsJubm7W1tZSUlHd3d05OTpmZmdXV1YCAgJycnI+Pj7a2tpCQkFZWVlRUVH5+fouLi0lJSVtbW8nJyU1NTby8vG9vb729vV1dXW5ublNTU6urq6mpqaioqKysrKWlpaampv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAfxgFOCg4SFhoeIiVMbTg0eECgAG4ofFCUKAwYGNQolFB+HIQwPARFOAQFOUFIPGiGGPSRNT1K1tk9NCzSFHRAJT1FSs7gBUU8JJB2EIDZQxggmTEAeTwFSUC0ghBwMAFJOBSoCBjcKzgAMA4RBAsBOOCkaHEMHzk4COoQEA05RTjMvfhBp4C0KgAEECCXAsOqekREyVtWCggEBoRgZVj3ZsQQBrVpRImQoQkgECx5NogQoKCVKFCg+kIgoBMPFiZS2gjUZMSHHoSQThKhq0gQKAAlKjiSyQGDBAQkrDiwgYEHRlAoOCly4UMBBBatgwyoKBAA7',\r\n'img/helm_mex.gif':'R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7',\r\n'img/helm_nterm.gif':'R0lGODlhFAAUAOZKAMbGxs3NzYyMjM/Pz3BwcMnJycvLy6urq9DQ0NHR0b6+voWFhbu7u7S0tG9vb42Njc7OzsjIyNXV1crKypOTk39/f35+fnJycqGhoa2trXZ2dvr6+nx8fNzc3K6urvf397Kysl9fX5KSkujo6P39/Xp6eoCAgFFRUfX19aOjo8TExNbW1o6OjrGxsbi4uKioqIGBgaenp4KCgtvb24SEhNLS0jAwMFZWVldXV7Ozs4uLi6ampr+/v319faysrKCgoLe3t5mZmaSkpHFxceHh4XNzc/b29sLCwsfHx8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEoALAAAAAAUABQAAAfRgEqCg4SFhoeIiYqKEiEEDgSRBCESiR8cDRIJmwkrDRwfiAo0AwBIp6cICwqHRhcMAUgTEagTDEMohikUEAwFCkdIpgADIhiFRBpISTdBDzE1ARAGEQAaM4QwGAgFJzgOPzJFFwIFA0IvhD4PAyoEJjY7DQcHOREDAqyDJBYuExQ8SrRAkCSAAQNAepAoBMDCAAMFuJ0CQKwCAEMbKhxIggpVgAMVNhzqQABCgCRJDBQM4KBDIgosQHjwkCEDiAciFI1YIKBnTx0LRiwaSrSo0UAAOw==',\r\n'img/helm_nucleotide.gif':'R0lGODlhFAAUAOYAAP7+/p2dnYWFhZ6enq6urqOjo////6SkpIODg4mJiYCAgJycnKmpqYGBgaGhoYuLi5qamqampoKCgsrKyoaGhoqKiszMzPj4+O/v7+bm5pmZmaioqHh4eJKSktXV1aCgoJeXl/b29vr6+re3t9jY2Jubm+Li4o2NjWJiYmxsbH9/f3x8fGtra8nJyXt7e3Z2duTk5Lm5udPT03R0dMDAwPPz84iIiKWlpXl5eYSEhPz8/M7OzmNjY8fHx4yMjHd3d6ysrFRUVI+Pj8/Pz5WVlff394eHh+Pj47CwsPDw8Ozs7P39/Z+fn1tbW////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAAAUABQAAAeggE6Cg4SFhoeIiYqLjIcCAhQIHYM9SDGICAJGAhU4BE4EEAUfGocNFSkoKwoMMhAHEkIOn4UIDzxBPwIKHQcaLA0bAYYNCRwzLgoFNAMBCTcHBYYUKjk2CC8jTgsOGxEgHoYkJw8SPiWCGREBAS2KTIZKi0ADE42DDA5EAfaNDAcgmiwYEI7RjgLGHnzIcG9IAAIDjtwTZGEBjIkYMw4KBAA7',\r\n'img/helm_sugar.gif':'R0lGODlhFAAUANUzAIqKinZ2dnd3d3JycmhoaKCgoIeHh21tbYyMjPPz82tra/Dw8LW1tY2NjUpKSn5+fm5ubmNjY09PT7Ozs/Hx8Y+Pj3V1dUdHR/T09Ds7O4KCgl1dXS4uLllZWbS0tHR0dFBQUEZGRnBwcEVFRVNTU3h4eG9vb+/v70hISICAgGdnZ4uLi3FxcXt7e3Nzc4mJiXp6eoiIiIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADMALAAAAAAUABQAAAbGwJlwSCwaj8jjqQBjuZ5QFqywKCZikABsy23BBIdYgjghIF6xGDqdfiEIDGJA8JLZ7/iXQEBkteoyBgBpAHcvLSxEAzAxMjEPKCMhEQZ2hwNEIjB1AC4kGikOLIUxMCZEKpsyAB8gcxIWdS8wCkQKqgAlGQ4cEQiWMAeKjKsuHRUQFw+NpZhDi42zBDErGwp1zX0tjYHcAJUyh4lDc4B4eXNEHgQNa2xtLw1wRFcHAV5cWy0BYRhFCwUQQYkyhUKSgwgTzggCADs=',\r\n'img/helpbottom.gif':'R0lGODlhAQB2AOYAALS0/66u/7Cw/+Dg/+Xl/83N/62t//r6//39//j4//f3/+/v//v7/8bG/87O//Tz/9TU/9nZ/9vb/9/f/+Li/+bm/6uq/8jH/9XV/7Gx/7e3/769/7e2/8HB/8DB/8DA/+7u/+fn/8rJ/8PD//38//z8/7q6/+3u/7m5//n5/+vr/8rL/+Tj/729/9LT/9zd//Hx//3+//Ly/+no/8XF/8/P/9ra/9jY/+Pj/6ur/9bW/7W1/7y8/7i4///+/7Ky/+zr/7q5/8zL//Py/+nq/7+//7u8/9PT/8LC/9zc/97e/9fX/8fH/8TE/6+v/7Kx/9HR/+jo//7+/6qq/7a2/8nJ/9HQ/+zs//Dx/7Oz//X1/6ys/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAHYAAAdxgFMWOVuFBgYBAU4CAhlPP1kAADtUHBo9KEEmRjwtG0UfHh1II000DUwXVSIrQgUFDjVWUC5HEBg6SzcRNhJJL0oTAwMUOCwEBBUhUTNEKkBXJyALC1gwMkMPWtsKCgkJKQcHDAwlJAgIMVI+XO3u7oEAOw==',\r\n'img/heptane.gif':'R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7',\r\n'img/hexane.gif':'R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=',\r\n'img/hidecols.gif':'R0lGODlhFAAUAPcPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhhAB8IHEiwoMGDCBMqXMiwoUOB/whGXPiv4kSLExVmfLDxoceHAAIYGNCAYACRJA0CYKBAQcmBK1u+JCiAAcuZD2reNChgwc6BPX/SXOAT5wGiDHAKPFqUINOkH6NKnZowIAA7',\r\n'img/import.gif':'R0lGODlhEAAQAPeRAFV+sPv8//D2/k6bQu/1/vj7//T4/+ry/+zz/lyNwPH3/16Qw/P4//X4/7rzrFaAsmSd0fb6//b5//j8/06ZP+jx/u31/1CbQUuSRYKtime5UW6o5FuLvluLvfn7/6rlm1eDtff7//D1/2uyX+Pu/lCcQIKvjvP3/nnIZfP3/63qn2OazrPS8rLR8On0/2OmV/////r8/2/BWv7//+Dt/4jVd+3z/oHRcN/s//T6/9vp/22/V4jce4y0k2KmV8nc3PX5//H2/47dgG2yYVCdQozafMLd9ejy/n/ObJrO7b3a9FmHubHP8HXGYmObz+fv/q/Q8GCUyO72/1GbQ/P4/nyz5ZXjiKzlnVqIu1GQVmGWyqLcjWW3TliEt/L3/1yDs7HQ8Kfbl8rl94fZeVCbRFqfTebv/orZenOs5fT4/m6p5LfV8afblvv+/+73/6PU74uzk1+SxVieTZPiiGCVyFSTV26o4/f6/7Huo/L3/qHbjGih1JDF6+Hv/+z4/2KZzG+p5F+Sxvn8/+nx/1iFuEyXPcfj9mKYy+vy/vr7/+z0/1eCtOv2/4W76e70/lqJvM/f3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjwAPdAWHGITqAFCTpgIQTiwZdIkSAEmEix4kQAEJ0EeJOET6MqaOxsUAMoAMZIfwKIMWREyRoWYFowgWISopYAeU5QSWOgARADKUR4OBmlAAEBSJEScISggpeTcYwmFRCBAYIjZtycXCBVQBAYGQYoeEJC0ckEUnvWCTMgkYUDOU5ymEAgBiQMV/AMITNlAAUicgY8mnCnhw8HVngIOXMDhQwNWwYsESQBzgsHc8YUqYGkyQ4uegZ0CWFDwg8MH1SMuHCBQqESZQYsioCowoFBWdgMOIBDh4uTD2YwUCDFQhsTAxj1oeHnJIDn0KNHhxgQADs=',\r\n'img/information.gif':'R0lGODlhMgAyANU/AMfX+pO6/kN4+Dpq8enp6uPs/bHV/3Wo/lOL/FqS/Pr7/LPK+2Oa/Xib5om4/vDx8tfY2UuD+4is95nB/uvx/oam7cbK09Pi/Gih/q7S/6i316rN/6G796DG/7na/7XY/3Sb8TJd6qXK//P1+tHe+6vC+b3S/Nnc47TC4djk/LrC1crf/t7o/Xyw//b4+8PO5Yej4H6i787Q1uDm9JWz9Nfp/3CX6n6e4WeG74Kg4NDW5OHh4r/N9I6s7P///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqNQ1Gj2uI5d0+1MUeLRYrEKuiGm82YjLdAF6oBhtYQLYAaZFGFR5PXxsRgoAMSAcJiQXiouKKSkXABxxfoCBPxQ0hgCKKysen6CfnY4kkj0zCoEzMRKbF54eH6GzohcpABIxOlpbJIaJnh/Cw7K0oCuOHDYva1G+HCTBxNPUxB62JcvNTjOGrx8G1eLV2DY620sFMRzfBu7u1B41FBQ1seAGGfoZyBwNu0wU0JDQ7p1BgzV8KPSxIl+GDRBFSFzBggaMHamUAACxCd/Bgx8oLPRRA+IGiSI6qBSRwheKB0pGrEvh4aNNAwVGrkCpssOE/58TMrAo0eAEryMboznMcHOfBxcKR2ToCbTqBGQgXiJx0YMDzX1gw5oUYeDVVKs/A6gNsKBAiRwYj3QDsCKs3YgpVaJdy1etAwAkbMg4SoRHjAsbJoi4ezKvT6B9IwdwcIDBhAIVNMA0QoNdBwcOFIvAS3VCh9EbMpjoINmBhMoJEhxgwQEGgUpDZC4gMQG079BWRbCg4EKBAh8KRPx20OIAhtjQGZAAUDTjkAcxAHjw3aJ78wPeWwTIkHNhAdcHnDOADh0BggQmLjSAgO7HgwokTDD3nt45hv//MdDBSAswsB577bnn3gIpxCBDfQT0cEEG3fXnH4AYGMiACQspIP8BgrEpKGIEJbBQgQybDUFABRP2h2GAGjKAQXk+sHBggiIiEMGOJWCGYhEr5nchgDEamIADxym0AI457ujkAiw4mKIQ2K1gwotFapjAAh1KkKOCToYZgQkpNPAjEdiZsEJlWRoZGwMsLGTjl2KGicB089XHFQcstJAliAdApeSIdYYpAANuXUSYEChUUMAEMYKYAAIBdHhABDoWuqMAnApAAwUSaECAdUOcAMJ0N4LoHocKsZCAppt2yikALNhgAQFHPABDiR8iKCKiCy0QQQIMiClrpwOAQMECN0Aw5RAuoBADCyaw16QESXpIYgBOHsvpAAMIsAAFMWiww6JCKLD/QwNtefmljlwqRAEDNACAgLffgpssBSaYiSsSI6AAQgorMEAopiQs5EYKDHirr74CkFAACBo4m4QCBMDw6ZKFsipvDMc+DG4IA5QwAgc5yDCqEi7o0ECPJWQaJgMMrsBBw/k+HMLOA3AwAlEW7FBfri/YMG7MhnIaAbIiD7Dz0xy4YIINKlgcEAEqGL1sAvgK0PTTT5c8wtRVr9wExlmXQAEJMSzNtM5g74wDCS4sQDUEZjvhAgEWNEBDAcuC4DXccYeAwwIjUOBP2aQ6gbEMOYBgAj0A0ICD14XjUAEAFIwNQg4W4N34ExhDoEEDMUCZOAk8lMABByXwQELnBSwQZ0MDGsiwwwOjQ+HDAwTIoMENNkhQgsT00FMACQtIAMINGoQutCVDKAA8BBZoAEMDDZRRAfcwaKCCDBDs3nsgClhBwA4QyGDB+++TvwMBD4yAG/VHKODCFQT03/8VxcGfFO4nwAJGIQgAOw==',\r\n'img/insertafter.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARP8MlJq70463uEB8A2LSTDBKJUMoqRPqYiD29j3+/RCQCakguTT7RqvWKz2s320oACgQFN45AAFIUCgUB1eANZQgKxqT4M2zE5NVg2mvBNBAA7',\r\n'img/insertafterv.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARS8MlJq70440EQalrFJV9IBQWRgKaEpmwLKHArAUBgDPbk9JQf8OEoDomX3K4R0A1iSYZC0QBIqRoBQ9rQcrMLriCMzYzDjcMCrVGj3QzocW6JAAA7',\r\n'img/insertbefore.gif':'R0lGODlhFAAUALMPAI+asIKRn6Gvw2BwhaK/9MLa/nB6jbG70VOI8oKl8ePs+/79/vH5/jRLYwAAAP///yH5BAEAAA8ALAAAAAAUABQAAARM8MlJq704620BCMEwbI4EKEVBEJrjOkFKJAgpGStdc8/Q/D/KQUD08B6LJIMROCoZCsNxqaiOeEDg8TAUfJzPJu8ZnUKtx2zwyG5bIgA7',\r\n'img/jsdraw-to-draw-helm.png':'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',\r\n'img/jsdraw.gif':'R0lGODlhFAAUAOZBAPz8/ADMzMyZAAAAzADMADOZM8yZmZlmM5nMzDMzmcwAAPDYyP///5nMmZmZM//MAP/MmQAA/8yZMwCZAMzMmabK8JlmAKUAIYAAAK2pkOHh4QCZzGZmmczMM/+ZAJmZzJmZAAD//8vLyzPMM2ZmAMyZZmb/Zv8AAMwzM2bMzDMz/wCAgJkzM2bMZjPMzNjY2P/99wD/APb29v/MzGYzZuvr6/9QUACZmcz/zP8zMwCAAAAAmZn//8zMAMDAwGb//5kAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAUABQAAAeVgEGCg4SFhoeIiYQGCjkzioUAFwonNpCEABhACiiXixgXC56ELAajhAcQp4MSqqcwJQIdoqMUIAIPD4IVPAyEGi0mOAwLBxYCPR4UKQEhP4QFBDEjBQ4OJMcSGRsB3dATBAQaghkHNCJBCCs3LoQNOhMNhC8DKhXpCACFMjWFHAMRIugblWDHgAEDPflIkODDqoeeAgEAOw==',\r\n'img/jsdraw2.jpg':'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',\r\n'img/key.gif':'R0lGODlhEAAQANU/ANG3hfTZV/LTPNzEk/LWReS0TvjpvNyUMfvxvPjnjO7HKfz1rPbhf82jXfrsrPHOOu/LM8abVdeDK/flgf///s+TQPbhg9Z9Kfbfiv788fz43vvvhdawa/z1zvjplOvMi9ahSvbfaeXQouOrQPXbTPnrntCZQ9+hOcuPPcyRP/frxP787vTYQvDSKOrEb+rFdv34wffkZcKUT/v0xvfmn/rusPzzoPz31fnsofTVOPfihee8Z/fkfu/RkeOwRP///yH5BAEAAD8ALAAAAAAQABAAAAaSwJ9wKOz5fD2isujTaJDLobFTQlB8n+g0gTtSTpxlM8HzGHyj1SFM9CF4vIkHgSHBDkrfjQyfEB4LF0QUPS4TAgEhARAbFxFMPi8OOSQxD4wSj0I+GW8tORYjNgsSDZAOJAoCGBUyF6VDnDUsCiw6FQBRBQgCCiS3uVE+MwQkFijBUTsqDDQpA1FDIiAmFdDRQkEAOw==',\r\n'img/lasso.gif':'R0lGODlhFAAUAOZMAGdnZ5eXl4uLi3d3d5OTk5iYmM7OzoKCglpaWltbW2pqal5eXoWFhZmZmVVVVbKysoeHh4yMjIODg3p6eoaGhpaWltfX16qqqt3d3ZWVlc3NzX19fcfHx8HBwXZ2dqSkpNbW1u7u7mlpaWxsbE5OTtDQ0ICAgLOzs6Kiont7e2NjY11dXZSUlGVlZYiIiHx8fI+Pj4mJiWJiYpycnLW1taGhoZubm76+vlBQULu7u2hoaFNTU4SEhHJycoqKip6ennV1dXR0dGRkZMrKynNzc9HR0dnZ2Xh4eNXV1evr66ioqDc3N////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeggEyCg4SFhoeIiUxGLAATJAQGioIUBC4DShIHDAcdiQ0RMkMYgkUCKQQahxYKFUmGEBJEhzcrIIgiHpKFMwCJFwgFhjQID4gnI8aGCECICwkhhxUCAoYGEwOJECrCgyUACUiJCkI/MYIBAQwBihQ9Dj4NJkcLOZMwGS8DGwkRFpMHeODQsSRIjUlMAjgoIABAix0fEDLhMAiFDYkYMyIKBAA7',\r\n'img/matrix.gif':'R0lGODlhFAAUAKIEAL6+vr+/v39/f////////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANCSLrc/jDKSZ24OGer+21BCIgkuVzAoK7sCpxC0M5qAKd0ayuXnLM7Qu8HhPmIg+AQOXjxBICRdBoKjCrYrHbLjSQAADs=',\r\n'img/mergeplate.gif':'R0lGODlhFAAUAOZrAK7CwJW1soyvrKnAvoqtqqS+vJKyr5u4tpq3ta3NlKrLkdjV1bjJyLnKybmxscbAwEaPJrrLymKdN8S+vpa2s9fT06qfn8rExI66b9rX12alSF6fOom4a2ehM2ujN2GdL/39/nyvVYi1X+Hf34W2ZoCzYYW2arWrq4K1Z4GzWs3IyK6jo1eWL1ubKZC8dMC4uM7IyLivr7CmpZbJkk2SQJKzraHGitbT06HHisS9vajLkMfAwKyhoaabm5bBgLKnp1+hQ3SrT8vFxWehOHeqSFygPJ7FiOTj4zyLEKnKkNDLy1KXInilTR57A3GlPbLGxLetrZfCgjqMHy2CBTeJG2OfMbOqqjuLI9DRy5+6uN3i2ratrZjCgyqCCmilRkSPFrDOlmKjRqPAucfBwcrGxqXIjUqRHJS0saG7uZCwrYmsqf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAUABQAAAfXgGuCg4SFhodLLVUeRIeOZkkJYE6Oh19lGAkdlYZINhwKHzMgnGtdUxtGJDohQyKHPzEwPU1APiYlLgopTBaGLxMVW1pUYVEoOEESZA6GKkojOUdYUhpcXiwZC2OGPFZqagFqYldFEGkU4ARqhDcL4GhqaDU0WfLhBuyDMlABCABqGKQpMCCggAEFBBDaIQQcuDQO1UB0SOjBhQMHGhBogKDAEwER0gAAkIbQihPg8k1cl49iIYnxACKIVxCNOENpzhQEQOBATHnxDD1UIyDiRHClkio1FAgAOw==',\r\n'img/minus.gif':'R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAIjnI+py70BY3yiWhHorVmFzVHAOGLa1iUfmCIr+kiSQ9f2vRQAOw==',\r\n'img/movedown.gif':'R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVZ4CWOZGlaaGqSllEUhrWOliMIjjxfVoMgDd3MklAoEsKV5bFYPJKiSMrCCAQY04jIUul2IRBvV2ihmCmHw5kCtUjeg8FbAt1O7vg6DcAH6FkEBH8lKDuGJCEAOw==',\r\n'img/moveup.gif':'R0lGODlhEAAQAMQXANn7AG7gACzGAa7xAOz/AB+/ARTQAJbsADrNAU/dAEvTAFzZAHbmADvZACjVAGPhAILmAF3KTbLyAMX3AJ3uAIrqABizAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAQABAAAAVY4CWOZGmKlnWaFkGoKwrMAHxaU67bpCX9g8FPwrtYKEjK4ZCk2CyVaBQCkUZhkVSKEQgwtJYI67FYPIolS0KhSKB7DQSi8R5ZHAKBo44yFAoGfEZggjEiIQA7',\r\n'img/moveview.gif':'R0lGODlhEAAQANUsAB0dHUBAQCcnJzs7Ox4eHgkJCQwMDAoKCiMjIyQkJC4uLgUFBUZGRjg4OCgoKFVVVRgYGCUlJVlZWQsLCzk5OWBgYGNjYwYGBpOTkwEBARoaGgICAggICE1NTZaWlltbW0hISBwcHKGhoR8fHxsbG0xMTJ6eng4ODg8PDz8/PyIiIgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAQABAAAAZsQJZwyMoQj8fTqoBEFiATzaI5NDVYK1YAQyVmuwnJ8MuqjIgBjpdoGAhTq8iDURqsGh3GQ7CisPgkCgkCBCsADggKISsqQg4Qa0MACEQoH2NDFgddWJxCIgGdIB6cCwAGBBueLAcrF6tCZEdBADs=',\r\n'img/n2s.gif':'R0lGODlhFAAUANU/ACLGG/v8+2nfEhvIHLrlrFXMFur65UzJFLTjrNn0ynXqTmTWFUjSGWjeClXRFl7UFmXaFmLUGym9GSLSHiO1GL7tm3OsdMDwmyS2E0HCEWjcTF/OTEnGEDq+ES65Ej+aQujo6DK/GDnCGEHGGKi/qL/oq0GzPhK/Exy8Gd3p3PDw8L7IvrrotrTqlzvJGI7fYzLAGG3QKojkQPH76ongTsfrstnz1d700ZPhYxe5GNj412vfF1PWGCS4Gf///wAAACH5BAEAAD8ALAAAAAAUABQAAAauwJ9wSCwaj0jkRdZoOpuyy7GyEOyu2KtgUTHGIIswbTajhReQmLHwaD9wPh8uEmkXjAeHI9F6xV8tBnoHRhwFDnEJiXE8BRxGGQcMCgZxcQYKDAcZRh0jI5OWPpmfHUYeIqkuGgYGGi6pIh6nIbUhMBsbMLYhs0UYEhI2onE2wRhGFD0SOsQ+OgA9FEYmOSgAE9naACg5Jkc5JwPj5OMnOUkWH+vs6xZJ8PHy8/BBADs=',\r\n'img/name2s.gif':'R0lGODlhPAA8ALMJACh5AFesJ16vLnLCOYLOQ6boZ6HwYMTvod74tf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAA8ADwAAAT/MMlJq7046827/2AojmRpnmiqrmxbEUAsz7RMuBks7Hzv84AbzgL4GY2AIVFAQDifB0R0aigUdkklpdg0eL9g8FWQ1Uq4iLD6Oy6buet42zwpBgb4vH4/wNLPR4FAfwlwcWpzf4aHYn6KTIxhiXSLkV6OlAJ3fJx4mG+Cgm5alZGToASWbJ+kkKpVrEqljKetqa+1sq6quUOzh704v3KxKDA1w2ttNUIkOke3vIFBJXYB19jX0ZYF2d5k1ZpPTlMHr14FVerpBOAkRQIDCOnnqu3uI8/y9PWH99Ql9KXpF+dfs4Dw5BFUY1CFwIVfGq4QyK+eRBYU+11soc/cuY0uRh7aw3JwSEdLIJWc9EeSkAR9FcGkpAOTYUuXFGpGvIkzZ0J6M3vCDNozwTMgJYu+gEcmqdKlMZw+fUFA6tSrWLNq3cp1agQAOw==',\r\n'img/new.gif':'R0lGODlhFAAUAMQAAPb29vX19d/f3/f39/39/fLy8vPz8+rq6vHx8e/v7+Li4svLy/T09MPDw+np6evr6+zs7OPj4+fn58XFxebm5vDw8O3t7cLCwvj4+Pr6+vn5+fv7+8nJyczMzPz8/P///yH5BAEAAB8ALAAAAAAUABQAAAWL4CeOZGme6Bl1XOu2AoF22ObdOHbFJ7cxgSAi4fBIGrwSxzPQDAaGysEDYEwEpqVmOwAUHjgPJ+uxlTEBBORAEZPDG3QhYXErw7c4wFCwk5Z4HhkaAAB+I4B4G1sYhyKJZRsbGRkYjWN3OJKUnI4fkJGSkp6ggZ4LGqY4Gh0mCgsvsRwdCim2t7gfIQA7',\r\n'img/octane.gif':'R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7',\r\n'img/open.gif':'R0lGODlhFAAUAOeQABYSDhgTDh4ZFCkiGzUuJUM6LlJIOVtKIVtLImFWRGJfWW9iTkxnk09okXJlUE9pkIBnI1NqjlRrjYFpJXtuV190lGB0lZZyH593G4d5YKl8FY+AZrSCD4+EdXiJoZKHd5OId76ICJSKdZWKepWLec2FEJeMeseMBJmOepiOfYGRpoKRppqQfs2PAJ2RfJyRgNSME4eVqpuUjJ+Ugp+Vg6GVf6OZhqOahqaagaWciKeeiaqfg6igi6uhiaqhjauijq+jhq2ki6ykj66kiuWgJNuiLrCmjLOmiLCnjrGojamqsLeqitGpVrmsi+moKeuqLuysMdSyau6wNPCzN8e6jPK2O/W5P9O+fve7QfW8QbfA07jBz87Cife+RvrBSd7EgODFfcTGzvrETPzFS83Jvs/Ju/zHTv7JUcbN3cfN3P/LVf/NVP/NWNrSoP/OXOzSef/PX//QX9HS2v/RYv/TZf/TaPvUcf/UZ+/XgdjW1v/Wa//Ycf/YdNXa5PHcif/aev/cfv/de/7dgP3egfLhkv/fgf/ghP/ijPPmmv3omP7omPbqoPvrn/bup/nupvfwq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAUABQAAAjjAP8JHEiwoMGDCBMqXFiwjwoPMbYwHGhBi8AVaSoQzCOkY8cyBtFIeEBQSJtHjxwx8kGmYIQGDAj+aJSSUSI7OmzMYGECxEEei1Qq+nOnqFGfBnMgYqSoSZMlR4DswFHDBQoSSAXeIJToC5JBhsIaKhSIjx4mMgjS8HMoCRU+RuOsGYOliAM5BF/gAWNEUJ07c9iY6VIFygQRBVO8CcJlDx03Z7xYkeKkBIIwBUdcGQIIjhoxWaY8IQIDggKDH3pEacH6RAgOGjBcOKDEYIcNGSgsSGCgAIEBAgAEmEi8uPGDAQEAOw==',\r\n'img/paste.gif':'R0lGODlhFAAWANU/AO64JOenBdrGbXSGnv39/pKHdoSWrWlaSJmovenXiIt+Z1pthXNkS5t2IPjwqambdkhVZurTd5uKXNiaAKykj/C2EvXsoc2UCrvG1/PLTPXXafbihlNGO6SciPbpnKq4zvLjknprUe/x99Pc6NShE+Hm72d5kc2PAJ6uw8bQ4E1gerK/1PCzDnhhNM/GjEQ5MLKaT0JIUJyRgOmvFT49P39zWOrIaOrRbe/opfLBMMOzhr2tgujDX5OitzgvJv///yH5BAEAAD8ALAAAAAAUABYAAAavwJ9wSCwaj8ikcslsOoW63aNJqUpwngSjwEVSHOCHRSEItXiAw/HrkLhAEQHs0DipjWxFLRRiMOgnHEcdDh4bNySJFxcnJy+DhhoZLD0GBgMDJgtHMiCSOTMGBKMiJQsqRjIJGTkVAaIoKAgjKhgQRQURAK4TAwSlIykQEDE0RAU2rgG9IrEIPSs9PT5ECgCNjSYlwRgrHx/TRQp/Lz4LI9Lp0tRJCz7v8PBP8/ROQQA7',\r\n'img/pastechemdraw.gif':'R0lGODlhFAAUAPcAAPj18P////7+/tGmYJCNgsedWt6xZ+SqYaTTupGOg46Nh2GNRo2MhF+MSiaWbF+MRCiTW+zx7UebcPn8+fv9+x2HSSaXWqejmOCxZiuKRsGib4+PiMqgW9SmYX+1oPn28SaTWcqsdCuMVNrr6HSxkiGLUtvp4yCQYvv7/NGZUdvBocHg1ZCPiXyZVeavY87Lw9bDpeCsY7TTzNuwYK7TyJSTjFmmji6VVjCTaN/Uw82gVw6DVVWqg5HEokypc+z18o2/rlytfPP38qLIvfX19vr49MmeWpSHb73e3MSXTuXXwcLe0dfX18moa0uhbo6+oMWeYDeWcCaTU9qtY6OgWrnUxeny7mSRTp7AsZ7NsoOfXcyladuuZ7y6sXSyi3a2lSyUW3Gxh8yhW2GPS9GmYdutZvC0aeGoX+7w8zaISdWoYdClXtqhWdnBm/T49428nSGCRsHgzt2vZ6DOuieUZleoiECgeKusqDOaZ1aEOsfHw8KYVee3bsC+tbyebiybdOG0ariSVUiedf38+4O4mDKVZP79/m6qks+pdMWibJrHu7q5sdOmX+WyZmaqfs2rc92kXcTBuhqLVsvKx52dluHr4Hiyk2+bbfX68pF/YXy1m/Ty8M/d2MrHv86hWyqTXf79/CaTZPPDeBeCRGqviFiid+r18N2pYtiqY6/VxzeUYR+QT9+wZuCwaF6lfKrRxPS9dYaFff78/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAALMALAAAAAAUABQAAAjoAGcJHEiwoMGDCBMKvKOgxgYmCgmiYfGiUyQ9EWe1SXSEUp8uiy5o2KIkISMumRgQIJAglh9RjxJ64iOHzIABHU61goUooRhArDA0MjOjRRotIRJyMDDFRZMrcHgoilJhCUIjZWJQGQVBhixLpYDsCHKwAKoDD+wICRCgEikbTySVVXNmzB88P+KMWNEjlZSDe9ZAWmDh0xtHdUpIsHLiIBQdbBo4EEHiUBgchCKsOhgoSYo8PhBgMhXAhAcsdA7mgKHiUqgqbgLQcOXlCwiFhl5lUMVpiCZBTpBknJCl0A0wczIqX24wIAA7',\r\n'img/pen.gif':'R0lGODlhEAAQANU/APz0s+a0XdmPO/XcYOS6L/rujvjtw/TWRLR2LPfbvZNtHrmJJvTPpfnjzL+QJ8mRT/LhyOiYQN6xXfXZaNCdWc2WWPz269moUNipSfLr4/njy8OZMVhAE6pgFtzEbfjhxfjiqPLmvvjjy15CFd2ubNWqcsJnFdScXdilatCwesqVQs+cSv79+MipZ8eDNFlCEuyqYd2rc7V9NMGLSPTUp/rn0ZxpJeHLsOzPqcqUUciQTvfhyfPPb/XPpsmRUP///yH5BAEAAD8ALAAAAAAQABAAAAZowJ9wSCwaiyxJToexHIcX1E6kKj1/BNqn0Uj4ngQDiMRgJCrHMGDCo8QeaQNgcCgEBPF5/X50yOl2eEYLIXqBRhkLNy2AfEYKEDUyGx4rLk8KGjARJh0IVy8nPTgzn1ccIzYIKVetR0EAOw==',\r\n'img/pentane.gif':'R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==',\r\n'img/pin.png':'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAM+SURBVHjaYhRpFGQAAkYgZgLiv2hsEGCGs///F2RgZC799+e/OZBzh5GJYTkjI8MBsA6Inn8AAcQENYAdxEFiwwA7VAys4f9/xrq/v/9VAg1zAvLT/v9j2PvvL8NChv8M/P///QfrBwggJqjJP5EM+wN1EQfUEhCf9d+ff8xAl+kxMjIgA5DeuL+//y8CWiQEkgMIIGSvgQz7DTWAA0qD+OxAhf/+/Pj7++/Pfx8Z0EwEhxcTox8TM/MkoGv/AwQQspd/w1wG1PMXaiA7OOT+M/xl42a1ZuFisQXyGLABoHDUv7//bQECiAXq7F8g7wENYgcK/vjz+x8DKwczSNFPkIOAoWMJtH0lkCXCgAMA1TECXeoPEEAsSF5mA2r8CdRo9/8vg9PfPwzAYP5/mJmF6RvQkg1AeTEGAgDoAAGAAGKBh99/hl///jGkMjIyTmNmZ2EByQLZ/4GGfQfKcxFhGAMzM+NegABigaaz30ABLqALa4BOZ0EKJ0a8hjEynACqPwjUx8XEzHgEaOwagACCexkoIQDEBL2FZNhJJiaGQCD9AhzxjGBHMAIEEBNUGmTwFyD/EZHGPWZiZkgDGQY1nANqxn+AAGKCehkkCExj/9cSYdh/YJarAdKXoEECS7MgzAwQQExIuQFo8P8ZwJjF70pgTAFzhS4w54CCiR3JMJDBjAABBDIQ5HlWoEEsIMOAChuAKn/ijU4GRm+g2/iBzF9IhoEzA0AAgb0MSpRAW3/+/fEvloWDNQaoqQeac7ACJhYmCSYmJkao72CGgdQzAQQQ2Msgm1jYmcVZuFjb///7BypJbIG4HIhfYnXk3//X/v37/xmUGZAMA7GZAAII5mUGYA4pArpMGsh8Bwz0rcBY7AemLQcgeynQwo9QdaB8/eDX55+V0DLiP6wAgUbQH4AAYgQVsMCE6Qc0cA3QkLlAhZOAUtdh5SAotwCDQw5osBawPATl7ctAc94C8y0LkssYoOUBI0AAgQSlgQrTGZn+pwI1LUTKISBbfwGd9J+ZlfEJ0GWPwGmXEVSYoBjGCC1PwdkYIIBYGJmY+ViYGPL+/ft7F63g/An1EjM8JzJC0yw0ApCSHCMU/wYIMABZEDb0wwr8vQAAAABJRU5ErkJggg==',\r\n'img/pivot.gif':'R0lGODlhFAAUAOZMAAIHC/v9/gQME/r8/aLH6QMIDAQLEevz+u30+uDs9+71+6jK697r9/b6/ZrC5/D2+7fT7jWF0AUPGLzW77LQ7QgWIzeG0C9/yi59x8La8ejx+QYQGdbm9bTR7arL6y5+yQkaKsvf8gsfMubw+QQNFS17xLrV75W/5pfA5r/Y8J3E6KXJ6s/i9AMKENno9gcUIFub2J/F6PP4/D2K0jyJ0a/O7KTI6Spzt4+75ICy4QcTHuPu+AcVIs7h8zSEz5O+5kGM0tzq9/X5/Nvp9jKDzwseMChsrSx3vUqS1QYRG7HP7Ia24////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAfqgEyCg4SFhoeIhgAABouLEhuOL4sphAANAQMyAQEHPZwHAQwbDoQVChEWHzglREgXRkARAQAQlgFHMToKJSY5BEonALQLhAUBNzyXF44gi7QhtwQKoQqcDwxFDLQrhAY7GD4zHAEJDRoCzwAZtxYEwyOc6S2OHoQCCTTCnJhBASQDRkgoNmhYhHecAGyjNQAaoSQPMCwxwEJAgYbDAiAA8MPSEBgoADhzhKATrQm3PgCQwKHAMQ0ly5GwVzCBC04lMwoJ8GBALUsiGDlyVAFAOhGlBkFQYcIBhQkdKCzIYKPG0wUdEmndyjUQADs=',\r\n'img/plate-blue.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGOSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspihkZGSyAlAMQmwGxFhDLQqUeA/E1ID4FxAeAyeoEsWYCBBADKBESwgwM/22BeAYQvwfi/wTwe6haW2LMBgggYizPAuIbRFiMjkF6sgiZDxBAhCyvBOIfZFgOwyC9lfjsAAggQj6nxHJkR+AMCYAAwhfnN6hgOXJ0YE0TAAGEKxtGA7E6FXObOtRMDAAQQNh8b0FkaicVg8y0QLcPIICwhQAonwvQoMwRgJqNAgACCJsDzGhY8GGYDRBA2BygRUMHYJgNEECM6NUxsLj9CqS4aOSAb0DruJEFAAJowCsjgADC5oDHNLQPw2yAAMLmgGs0dACG2QABhM0Bp2joAAyzAQIImwMOAPEHGlj+AWo2CgAIIFx1wQwalIQzsNkFEEC4csFSIL5JRd/fhJqJAQACaMCrY4AAGvAGCUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQAYzGv2DHTRPwAAAABJRU5ErkJggg==',\r\n'img/plate-corner.gif':'R0lGODlhIAAgAJECAPf39////////wAAACH5BAEAAAIALAAAAAAgACAAAAI0jH8gy+0vEFKwQmmo3QxrzkkfuE3kmZxoMKoW655tTNf2jef6zvf+DwwKh8Si8YhMKpeNAgA7',\r\n'img/plate-cyan.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG1SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJil8/tgBSDkBsBsRaQCwLlXoMxNeA+BQQH/gjKnuCWDMBAoiRmEQItNgWSEUDcTgQCxBQ/gGIVwLxUqBDDhMyGyCACDoAaHkWkMoDYnUSQ/cmEE8COmIaPkUAAYTXAUDLK4FUPRCzkxnFP4G4EeiIdlwKAAIIpwOgPu+jwHJkRxThCgmAAGLCE+d5VLCcAWpGHtRMDAAQQLiyYTQZcY4PqEPNxAAAAcSEI6uF0yDLh0PNRgEAAYQtBByIyGrkAAGo2SgAIICwOcCMhgUfhtkAAYTNAVo0dACG2QABhM0BsjR0AIbZAAE04JURQABhc8BjGtqHYTZAAGFzwDUaOgDDbIAAwuaAUzR0AIbZAAGEzQEHoFUqtcEHqNkoACCAMBwAbUyspIEDVmJrqAAEEK5csBRan1ML3ISaiQEAAgirA6AtmUnQqpRS8BPaMMHaOgIIIJzlALT+bqTQEbAGCc5WEUAADXiTDCCABrxRChBAjKR0zWjRLAcIIMaB7hsCBNCAV0YAATTgDgAIoAF3AECAAQC9g3ubkd/tZAAAAABJRU5ErkJggg==',\r\n'img/plate-dose.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAUlEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAwuoAUJwDNc0GyqkjG66rq8ugqKiIN+j37dvH8OXLF3RH3QTiVGxpAiCAcGXDaOQ4J6W0dHJyYuDm5kYXVgc6JhqbeoAAwggBaFbbDhQXQA9W5BAAqkPxpZKSEoOOjg6yOehp5AOQ7YmeRQECCFsIgPK5ALE+hyW8e/fuMZw4gTAb5CA0dSAzHdD1AwQQE5bsYwbL30RmN7gjXr9+DRdHDg1ks9HFAAIIWwhooRc0IBrdUeh8QqEFdagWujhAADFhCVJZdENBNLoFyHLIJeLXr1+xOhSqXhbdPoAAYsEXryT4DK4eSw7AGWogABBA2KLgMbqvKYkCmOOgDn2MLg8QQNgccA1b8GGLAnTfi4qKwuWvXLmCEkJQ/dfQLQMIIGwOOIVsMTbfY/M1Dw8Pg4WFBZx///59bCFzCt0MgABiwRJPB6BVqgCyD9EdASxQcMY1zPdolRPIzAPoagECCCMEgJUGqDRZiaN2IwhOnjwJLpTQKyqQmdgaKgABhCsXLAWVWkCN6sjZDeQzHL5jIFBj3gSyl2KzCyCAsFZGoFoLqGESqD5HzgXIjsGVHrCkF5AZk4Ahi7V1BBBAOBul0Pq7EWjgT2y5AFfUIOcKqOWN+FpFAAFEVJMMaCC4SYYvTWARB7UBCDbJAAKIpEYp0BJ4oxRPa+gDkL8SlI6IaZQCBBAjKSkcW7McVsIBaXCzHJSNoTmJKAAQQIwD3TcECKAB7xkBBNCAOwAggAbcAQABBgAxUabNLd/orgAAAABJRU5ErkJggg==',\r\n'img/plate-gray.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALusCHDx9wKl65cqUFkHIAYjNGRkYtIC0LlXoMTEvXgGKngPSB8PDwE7jMEBAQQOEDBBAjeiLE5oBVq1bZAtVFA5nhQEsEQHqANFgOCxtkwEogeynQIYcJOQAggAg6AOjrLCCVB8TqyBaBNQP5yPphfKi6m0D2JKAjpuFzAEAA4U0DQMsrgVQfyHJcamCOQnYYlA3S0wcMvUp8dgAEEBMey0E+rwdidmSfIwc5chTAMFq0sIPMADoiC5c9AAHEhMNyW1CwAw2BW45Mw3wKswiZjx4aQJodiPOgZmIAgABiwhGs0UCsjuxrbMGMy3LkEIKGDCj9RGOzCyCAmLCkeAugYeHoKRzJMKxpABeN5LBwaDZGAQABhOEAoAZQPhfA5iNsoYEcDTAaR/0iAC1DUABAADFhCX4zZN8iG4geAtjKAmzZE8kMM3T7AAKIBUsIaCEbgOwIXJZgcwgOx2mh2wcQQNgSoSy6b7HFO3owo5eIOIAsugBAALHgUonNEHQfYot/5KjDZxYMAAQQtjTwGNkgfABXGYGegJHMeYxuBkAAYYuCa9iCGN0CHIUOodC8hi4HEEDYsuEpYsp6bCUfEWnlFLp9AAGELQoOgCpFAnkaI5XjKoiQ2B+gZqMAgADCcEBYWNgJaH2OM9+jW4wtWrAUzyuhZqMAgADCVRsuBWq4iS2ukWs+bAkOPT0gtQ2WYrMIIICwOgDo0sOgxgRQ809cNSG6OC42UD3IjEnYWkcgABBAONsD0JZMI8wR+BIhHvGfQP2NQA9Nw2UPQADhbREBNbYDDSkCBSG+UhFbOgBFIZAqApmBzw6AACKqUQpqTIDqc1A1DWqUEih6Qamd6EYpQAAR5QDkZjnQcAegHoxmOaiQAZUhoKyGLbXjcgBAADEOdN8QIIAGvGcEEEAD7gCAABpwBwAEGABryNdQb2XmUAAAAABJRU5ErkJggg==',\r\n'img/plate-green.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGISURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRJIDGBkYLYCUAxCbAbEWEMtCpR4D8TUgPgXEB/4z/D9BrJkAAcQAcgAhzPCfwRaIZwDxeyAmBN9D1doSYzZAABFjeRYQ3yDCYnQI0pNFyHyAACJkeSUQ/yDDchgE6a3EZwdAABHyOSWWIzsCZ0gABBC+OL9BBcuRowNrmgAIICYcaTMaiNWpmNvUoWZiAIAAwuZ7CyJTO6kQZKYFun0AAYQtBED5XIAGZY4A1GwUABBA2BxgRsOCD8NsgADC5gAtGjoAw2yAAMIoioHF7VcgxUUjB3wDxjw3sgBAADExDDAACCBsDnhMQ/swzAYIIGwOuEZDB2CYDRBA2BxwioYOwDAbIICwOeAAEH+ggeUfoGajAIAAwlUXzKBBSTgDm10AAYQrFywF4ptU9P1NqJkYACCABrw6BgigAW+QAATQgDfJAAJowBulAAE04M1ygAAa8I4JQAANuAMAAmjAHQAQQAPuAIAAAwAf94DY7f2a1gAAAABJRU5ErkJggg==',\r\n'img/plate-negative.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACrklEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFidlNACOu4m0OxJQEdMw6cOIIDwOgBoeSWQqgcaxo7Fp+AQgInB2MhiQPATyG/09fVtx2UHQADhdMDmzZtBPu8DyrOjGYphOTY+khjIEUVAR2ANCYAAYsIT53kgy7EELTzu0dMCOhsK2IHm5EHNxAAAAYQrG0Yjxzl6MGOLDlziUKAO1BuNTQIggJhwZLVwWHxiswRbVMBCBlsIQUE4yGx0QYAAwhYCoHwugO5zZEPxOQ5XmoKa6YAuDhBATFh8ZIbNcGTHIDsC2TGEsjTIbHQxgADCVhJqIQcvMPVSVNQCgx05qrTQ5QECiAlLUMnii3NSAVroyKLLAwQQC474wpWQqOIYZAAQQNgS4WP0eKcEIOcQIPsxujxAAGELgWuwMgCkCTkO0XMGrlBDzz1IHrmGbhlAAGELgVPoKR1mCHKIwPjYCik8NeUpdMsAAghbNjwArVIxKhv0IhfZEiwVEXpaApl5AN0+gADCcAAw24EaEytx1G7YghVFDJvPoWIrsTVUAAKICUfCWQrEN/GV/biKaGw1JNSspdj0AgQQVgeAWjJADZNA9Tk2X2NzDK7ECTVjEjBksbaOAAIIZ6MUWn83Ag38iS1LYqv/scQ7yPJGfK0igAAiqkkGNBDcJMOWJvA46CbI54SaZAABRFKjFFRNwxqleFpDH4D8laB0REyjFCCAGEkp7bA1y2ElHJAGN8tB2Riak4gCAAHEONB9Q4AAGvCeEUAADbgDAAJowB0AEGAAmnOLVjL3SAQAAAAASUVORK5CYII=',\r\n'img/plate-positive.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACr0lEQVR42mL8//8/w0ACgABiYhhgABBAA+4AgAAacAcABBALKYo3bdpkwcjI6ABMN2ZArhYQy4LEgWKPgdQ1oPgpIH3Az8/vBLFmAgQQIzGJEGixLZCKBuJwIBaAa2ZkBNNoZnwA4pVAvBTokMOEzAYIIIIOAFqeBaTygFgdQzN2B8DkbgLFJwEdMQ2f+QABhNcBQMsrgVQ90DB2XBZhcxSSup9AfqOvr287LvUAAYTTAZs3bwb5vA8oz45mKBgAfYauHkMNVB/IEUVAR2ANCYAAYsIT53kgy7H5EBb0uEIADbADzcmDmokBAAIIVzaMRo5zmM+whQS6Ghzy6kC90dgkAAKICUdWCwcZhO4bfGkAFjJ4QigcZDa6IEAAYQsBUD4XQPc5sqHYHEIgBBigZjqgiwMEEBMWn5hh8zmyY3ABQrkEZDa6GEAAYSsJtZCDFZh6iSrR0HMFUpQipx8tdHmAAGLC4gtZYn1EVFGLWljJossDBBALrqDEF9SUOgYZAAQQtkT4GD3eKQEwz0Cj4DG6PEAAYQuBa7AyAKQJOQ6RowU9zkHq0NUgWYxsNgoACCBsIXAK2SBkQwiVA8jyOCqqU+j6AAIIWzY8AK1SUQwlVATDHItsIVpaApl5AF0fQABhOACY7UCNiZUww7D5DJtDkNWj+xwqthJbQwUggJhw+GYpEN9EtpzYBIluMTTqQGYtxaYeIICYcBQqh4EaJoHqc2yJCV9RjCV0QGZMAoYs1tYRQADhbZAA63hwgwS5WsYVNTii4yeQbgR6CGeDBCCAiGqSAQ0CN8nwWYxF/CbI54SaZAABRFKjFFRNwxql2OIaltqB/JWgdERMoxQggBhJKe2wNcthJRyQBjfLQdkYmpOIAgABxDjQfUOAABrwnhFAAA24AwACaMAdABBgAGNZcVQdIRYPAAAAAElFTkSuQmCC',\r\n'img/plate-purple.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspis+yvLYAUg5AbAbEWkAsC5V6DMTXgPgUEB8w/iN6glgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAJaJ7x/zc0NMAAAAASUVORK5CYII=',\r\n'img/plate-red.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMSURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAtJqhkZLYCkAxCbAbEWEMtCZR4D8TUgPgXEBxj+/z9BrJEAAcQASoQEMQODLRDPAOL3QPyfAH4PVWtLjNkAAUSM5VlAfIMIi9HxDbBeAuYDBBAhyyuB+AcZlsPwD7AZeOwACCBCPqfEcmRH4AwJgADCF+c3qGA5cnRgTRMAAYQrG0YDsToVc5s61EwMABBA2HxvQWRqJxW/B5uNZh9AAGELAVA+F6BBmSMANRsFAAQQNgeY0bDgwzAbIICwOUCLhg7AMBsggBgxqmNGxq9AkotGDvgGjHhuZAGAABrwyggggLA54DEN7cMwGyCAsDngGg0dgGE2QABhc8ApGjoAw2yAAMLmgANA/IEGln+Amo0CAAIIV10wgwYl4QxsdgEEEK5csBSIb1LR9zehZmIAgAAa8OoYIIAGvEECEEAD3iQDCKABb5QCBBAjSV0zGjTLAQKIcaD7hgABNOCVEUAADbgDAAJowB0AEGAAqUNr9qmufBQAAAAASUVORK5CYII=',\r\n'img/plate-white.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF8SURBVHjaYvz//z/DQAKAAGIcaAcABNCAOwAggAbcAQABRKoDLIDYAYjNgFgLiGWh4o+B+BoQnwLiA0B8glgDAQKIAeQAIrAtEM8A4vf/CYP3ULW2xJgNEEDEWJ4FxDf+kw5uQPXiNR8ggAhZXgnEP/6TD35AzcBpB0AAEfI5JZYjOwJnSAAEEL44v/GfeuAGrjQBEEBMONJmNBCrUzG3qUPNxAAAAYTN9xZEpnZSwXuo2Sj2AQQQthAA5XMBGpQ5AlCzUQBAAGFzgBkNCz4MswECCJsDtGjoAAyzAQIIW1H8FYi5aOSAb0DMjSwAEEBMDAMMAAIImwMe09A+DLMBAgibA67R0AEYZgMEEDYHnKKhAzDMBgggbA4A1ecfaGD5B6jZKAAggLA5ANSYWEkDB6zE1lABCCBcuWApEN+kouU3oWZiAIAAGvDqGCCABrxBAhBAA94kAwigAW+UAgTQgDfLAQJowDsmAAE04A4ACKABdwBAAA24AwACDAAdjZ93cHiPmgAAAABJRU5ErkJggg==',\r\n'img/plate-yellow.png':'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG2SURBVHjaYvz//z/DQAKAAGJiGGAAEEAD7gCAABpwBwAEEAspil+8ZrEAUg5AbAbEWkAsC5V6DMTXgPgUEB+QEP1zglgzAQKIkZhECLTYFkhFA3E4EAsQUP4BiFcC8VKgQw4TMhsggAg6AGh5FpDKA2J1EkP3JhBPAjpiGj5FAAGE1wFAyyuBVD0Qs5MZxT+BuBHoiHZcCgACCKcDoD7vo8ByZEcU4QoJgABiwhPneVSwnAFqRh7UTAwAEEC4smE0GXGOD6hDzcQAAAHEhCOrhdMgy4dDzUYBAAGELQQciMhq5AABqNkoACCAsDnAjIYFH4bZAAGEzQFaNHQAhtkAAYTNAbI0dACG2QABNOCVEUAAYXPAYxrah2E2QABhc8A1GjoAw2yAAMLmgFM0dACG2QABhM0BB6BVKrXBB6jZKAAggDAcAG1MrKSBA1Zia6gABBCuXLAUWp9TC9yEmokBAAIIqwOgLZlJ0KqUUvAT2jDB2joCCCCc5QC0/m6k0BGwBgnOVhFAAA14kwwggAa8UQoQQIykdM1o0SwHCCDGge4bAgTQgFdGAAE04A4ACKABdwBAgAEAFmR7kVGTu44AAAAASUVORK5CYII=',\r\n'img/platesection.gif':'R0lGODlhFAAUAOZqAOPj4+bm5uLi4tLPz+Df3+Xk5M/MzN/e3szIyNjW1s7Ly7+5ucrGxuHh4eXl5XSh/+Tk5Ofn59PQ0M7Kyry1tcXAwNTS0ru0tODg4MjExNDNzcnFxdbU1FaM/9HOztfV1dDOzry2ttva2t/d3cbBwYyx/3un/6rN/6bF/5a//+bm5eXl5uTj5Hij/1CO/32p/9rX11OJ/8K8vJS3/5i5/9zb21yO/7qzs9nX13mm/8bCwsfDw3Gh/4ut/93d3b64uMjFxY24/6S5/2yb/8fCwqTE/723t+Hg4MG8u5G6/9nY2Nvb2763t97d3cC6uufm5pW0/7mzs3el/6i8/42u/9LOzs3Kys3JycvHx8zJycG7u8vGxubm5+Tj46DB/3ej/4mr/9bT002E/3Ge/5K4/8O+vpC0/3Wh/9TR0cS/v////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGoALAAAAAAUABQAAAfVgGqCg4SFhoeIiYqLjIUCLCsAAV0QDpIABQUAEYQFMiRVIRZaGwpMFgsIWD8YhAEMWRwVCUAGaCQJRAMgOg2uHhI1CD4GYUpXTRMJHwoAhE8LZQpRHh1DOWJgLg88FweuHB8EIA1kXic9SyVTQhIOhCpIFRoUAzZjLzFUHS1nRgSEHEzQACODCBNBaDxAIWVGki0CCHGxYgCHQRMlUjwo8gWKGQYRBwVwksbAjQELdiC4MCAEgw0UAA6KgOEIhBEFCDQAMALCAQECDnBqRLSo0aNIEQUCADs=',\r\n'img/plus.gif':'R0lGODlhEAAQAKECAAAAAICAgP///////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFjACH5BAEKAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==',\r\n'img/plus0.gif':'R0lGODlhEAAQAJEDAL29vX9/f////////yH5BAEAAAMALAAAAAAQABAAAAImnI+py70BY3yiWhFoBTarYHGVl4DAeWKaIKpf2K0XiUi2g+f6vhQAOw==',\r\n'img/preview.gif':'R0lGODlhEAAQANU3AAAAAPr6+hYWFi4uLvLy8vPz8wEBAWNjYxkZGWBgYMHBwaCgoPv7+0NDQwkJCTk5OSMjIxgYGOTk5Dg4ONfX16mpqQQEBLm5uRMTE9/f3/j4+AgICHh4eMrKymFhYTExMTIyMvT09G5ubmJiYltbW/z8/P39/XBwcNnZ2Tc3Nzs7O7W1tcnJyfX19XJycnFxcVpaWi0tLbS0tDU1NRUVFdvb2zQ0NP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ9wJtwSCwaj8jksVA5zGyHSuEo+wAAEMgVtCKWRFfBhcG4CAAGl+nWgl0NC+LCcCWFRlcAhhBoNAIEGHkeKXkRARoICBoBEXkTKDFXFgo3FBQ3ChZXAzU3GSpXExJCEg9XDxlDBRwbADQJCWcbHARGLCcDDg4DLx1KwMHCRkEAOw==',\r\n'img/prop.gif':'R0lGODlhFAAUAPc/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAD8ALAAAAAAUABQAAAjMAH8IHEiwoMGDCBMqVOgDRwoMKTJkGDDggY0cARDqkCGggMcDFEQ8GLACYYiOLAqA9BABAYuMAzXIbLBhxoQCJCiwRGBiAgqCGlQAqCmARoICLyRYsCBgwc+YLjbEEOBAQAsDHRhoTbAAAkEFPkI8COEDhgAJDBI4EDiixFcfPHj48AHgg4AGFXYgBBuXLgEOFy7k3eujR4/Chg2D0HuQLw8ABEBUuMCBA2ODYA0TSKz5ckEMcHkQGH2jhmnPBE8YWM26NeqFsGPLXhgQADs=',\r\n'img/propane.gif':'R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7',\r\n'img/props.gif':'R0lGODlhEAAQANU/APv9/mGxVnZiRpKQcvf9///sa01PU/ricvK7KmRbVcbM1VZvTSIYDdLZ6JCYpoVyWTKMGO3FRtuuMJGKUvbaaevy/saWGezy/M3S3KKXgH2d36ykj/P3/v/QH/PRV6ytsO70/uTl5Ny9VHieik86MClmHOyoEXN1fECbLrisiqTF/4XMhaqdXN7BYeTr+lA9Qc7KwuXThuTbqvjigeLNeujz/62xt+z5/6+loIa9krq3vEZOVP/9+6m1yf///////yH5BAEAAD8ALAAAAAAQABAAAAaewJ9wSCwSfbgUJpXJDAYPWy5A1MkEheyBInoMVsQQllXYeiIIVkDDbmxmkwKJckaYJiiNCvAW0BIFLxIWFgILeS4bMQIOAi0GHQySCQsQCj4hDyE+MAISDAkOQiMllzw8Pj4AHwINFTtEpqgABBwXF6+xPj09u7y8ILBDsrQgFRccHMJCl7wEv87LPxg+pwTXNzXa0icG3t/g0kbjQ0EAOw==',\r\n'img/protein.gif':'R0lGODlhFAAUAOZJALW1tb6+vqKiorKyspmZmYaGhqqqqp6enq2traampqysrJKSkpaWloGBgampqZCQkMbGxrq6upubm4ODg46OjpGRkf7+/omJiaGhoaSkpIeHh319fXd3d6Wlpfb29o2NjaCgoPf394SEhH5+foWFhXh4eLGxsW9vb7y8vJSUlH9/f7CwsHp6ep2dnejo6IuLi4yMjMnJyZeXl3Z2dnl5ee3t7Xx8fM3NzXBwcOrq6m5ubuHh4fn5+d3d3cvLy7m5ucjIyJqamre3t6+vr8HBwfDw8OTk5J+fn/j4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEkALAAAAAAUABQAAAf+gEmCg4SFhoeIiUk9KxUNEwwAO4oeJhw4HBsjGywiPx6HHi0nJSoTBRoXFwUNDiGFFkMnLA0FLxQPCwsPHwUoFoQuMyUNGjALDAQSEgQMDxU1hAA6KgUwKUEHAhkZAgcEHxCEFBwTLwsEIAkGCgoGCSAMDoQiNiQUDAcJCAMAAAMIEmgjRGKEhgcEBBgYECFAgAgDDGDoQCjFhgsLJGRAACAABAgBACDAsIJQBBoYNXL0CBKAggM3COU4VSHhwoYPBzjoUISQBSENPuTb1++fAgFAgBEK4aAAQnXsFDgQgILHoRABKlCQ0QIDhiMdfCBRZISIAW0mYrhQxLat20AAOw==',\r\n'img/pubchem.gif':'R0lGODlhFAAUAKUuAGOHs2SLs2qLumuPum2VunOVunSZunSZwXuZwXycunydwX2gwYOgwYSjwYunwYunyIuryJGryJKuyJKvz5uyz5y1z6K2z6K5z6O80Km80K/A1rDD1rDD3bfH3b7K3b7O3cXS5MXV5MvV5MvY5NLb5NLc69Pf69jf69ni6+Dp8uXp8ubs8uzv8uzv+P///////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAUABQAAAaqwJ9wSCwaj8gkcWNRGj+KgsHAcf5AC4JG+DkMNsiQ4ov6YC6gFchQ2BIvgMtv1Kh4PJTG6PcRPIgFciMIKEQlFEIjAUQJYA0lSSUDjBssEkojk0MKGysTSiSaQgpbDSqRoj+kPx0NRS0XKz8nAEQSASE/Gw0dKCcdDFsoWUUXAw0kJBkRERkoKREDELJFKxYDDiJCKBUBESdK1tIUAxEmVkIsEQaF6O7vRUEAOw==',\r\n'img/question.gif':'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',\r\n'img/reaxys.gif':'R0lGODlhEAAQANU3AMZoaLAsLMdpac15ecVlZbc+Pst0dL5QUMZmZtSNja4mJv///7IwMMx3d60kJMRhYcx2duCurr5RUc58fLEuLrMyMrpFRbY7O8pycvv19dWPj7tJSbtISMlubtqdnc17e816eq8nJ7U4OOGwsMNeXrY8PNyiotqenrlERLhAQLpGRrQ1NcltbdGFha8oKMBXV89/f75SUt+np9CBgc+AgMVkZK4kJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAQABAAAAZ6wJtwSCwKAxxEysZsggoxjZAZsgxoAgTp0HKoFMLPwCAAAAwyCCCxBkybcMXLtKnYhC64vtaoHYQlenACKExCHYJNE01CI4lMMIw3CyKJEgSSNxGJDzWZNxh6BQGehkMLLHCYpXdFJww2FBc2rEY3GR4zK7RMAba/QkEAOw==',\r\n'img/rectangle.gif':'R0lGODlhEAAQAMQAAP39/vD094KhvliCqFeBp2KJrVuEqmCIrNzl7eju8/b4+vH1+FeCqIOiv/n7/NLe6IimwG+Uterv9ICgvIelwH+fvHOWtvj6+8DQ3+vw9HSYt9rj7Iypw5eyyf///wAAACH5BAEAAB4ALAAAAAAQABAAAAUxoCeOZGmeaGpGAzO8L3GUlgqRhtqRhFqRA5UAKOSpGqSCilPSCJ5QwYSCUVmv2KwpBAA7',\r\n'img/redo.gif':'R0lGODlhFAAUAMZGACBIkDBQkDBQoDBYoDBYsDlbmkZbmTBgsDtgoztos0BosEBowDBw4FJvpEBw0Ep3wkB44Gp5qVV+tkp+4Fh90F5+w1CA8F+CvVCI8FmG71iM7WmJ3GCQ8GOT7miV73CY8HCg8HGi7nek74ak75qtzI2w76Oz0KK10pC48Jq37Ju47KG7662606q71aS777W8x6m+76q+77jA0KnF7rPC77TE4L3F1K7H7bfF7rTL7r/O6dHQyMfR68/S1MjU6c3U7c3X7Nrc3N7c2dre4+Hm6Ovq6////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeCgH+Cg4SFhoeIiYqLPzkxQEWLgzQwJZYjPJI4LhMJCg8eIj5/RA6IMxgDEhcJBxwhOjcLiCoTBUF/JAgCHSAfB4gpEw2DNhEgHBYDiCsZBoNDKB8WDAGINRgEQoIOCwcDAQCJHBAvkoUnGBXnhRQYJj3sgjsbGjLygywt+Pz9/v+BAAA7',\r\n'img/refresh.gif':'R0lGODlhEAAQAKU9ACNiICRjICVkISdmIylpJSpqJStrJi5vKS9xKjN1LTZ6MTh7MjuANT6DOEePQEqSQkuUQ0yVRU6XRlCaSFiXUVqZU16dVmOhW1mmUGWkXVypUminYF+tVmqpYmGvV2SzWme3XXSza2i4XXS0bGu8YHi3b2y9YW2+Ym/AY3DCZXHDZX6+dXLEZoLCeYPDeozIgY3Igo7JhJHKh5TLipfNjZfPjpzSlKfVn6rWoq3Ypa/ZqLHZqrLaq////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAD8ALAAAAAAQABAAAAZcwJ9wSCwah6ejUvRRClkoEqi1wihVNp4uh7uNJMZUbefyaEqhyNHE5AgnEGfxIR+C68KIQ7hIHApHEB0ZDAoUMBcCRg8bNDMyMS8bAUoNFhUIBgMAcn54QwSfeEEAOw==',\r\n'img/reset.gif':'R0lGODlhEAAQAOZrAJvPk4zIhafWnoLCfFuQVzp+NIfFgZjOkFSfS4TAfWiqYKvYoaXKoarYoFSWTlqeVVaOUlWgTKjEpl6rVHm4cZ3RlKnPpFypU368danXoJ7RlvD572qtY4TBfLLVrW+vZ4jFgoXHe7LQr4HAd2a1W5DJiWCuVoXDfkaNP5fMjnq2c0aNQOrw6Xi6cKbVnWGjWn7Bd4/JiGapX4LCe6TUm1OdSnu9coLGeHSubaLUmTd7MTZ5MFudVVWNUMLkvaDRl16hV4fEf4XEfo/Jh3y/dWa2XKrSpofIfLzduJvQkovHhYnGgmmrYYvGg3S1bYzKgmCbWne3cYrHg6bVnIHFd2m5XlKVTUiQQGqrY6nFp06YRmyuY1CaSKLHn4m3g1OdS5nOkD6EOKHTlmOyWYzMgovMgjt/NcLlvu717VOeSz6DN////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGsALAAAAAAQABAAAAeSgGuCg4SFhoeIa2c3VSQ2SIgbZEdiDQJgLSpohmVPCzlTNEkaFDiFPiEZAj8jGCkAB0wihFQVLgATRhZfJQEJUIRFYyYXHoIMHzEBYYgRgl1YUiAFhwhca14rHTBRPYZpWwpXLwZCAw5ZhTUcQ0pLQUQzPASGWjJNBicDTlYELIcogDwwowOChERr1FBDSGhHokAAOw==',\r\n'img/ring3.gif':'R0lGODlhFAAUAOZNAP///6+vrwEBAQYGBhgYGPv7+/7+/tHR0Tw8PBISEhUVFZOTkzIyMsvLy0tLSzY2Nm5ubmlpaYaGho6OjpiYmLKysouLi7a2tkRERP39/XR0dIWFhfDw8OHh4ZaWlhsbG729vVJSUk1NTcLCwmBgYHx8fObm5gICAgQEBAcHBxMTEykpKRkZGTAwMPj4+AgICCsrK/f39y8vLywsLB8fHw8PD4qKivz8/A4ODgUFBQsLC6qqqnd3d2hoaDQ0NElJSZubmyUlJXJycqGhoby8vFhYWLq6utfX10pKSigoKKOjo35+fgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAUABQAAAejgE2Cg4SFhocGDw6HjIIbTExAjYYcNTg5HxmThCRMEhFMPJuCIydBAC4qLx2jCEw7ghNMIZtDTBiDADBMF40GNCgNhBVMLY0lTD2GIkwLhyY6CTGGRykKBYZFTBaMQkwQhUQCKwCMBQQDB4Q+TAGTHkxIgxRMP6MM7U03LOmjRgJJAGhggkCJwYMIEc5gYoMApIcQI0KUEWCJxYsYM14EMYpRIAA7',\r\n'img/ring4.gif':'R0lGODlhFAAUAMQXAP39/fX19S0tLb6+vlNTU25ubpWVlY6OjgkJCSwsLFFRUcTExAwMDGpqan5+fsvLy9ra2o2NjZSUlEJCQvj4+DMzMwAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAAUABQAAAVc4CWOZGlei6SuLGtQIsBYdG3fhEhZzeP/wF9iorM4TqYK8bI7IknKovMpijKN1JG1ma0uud0tNvwdZ8VTKrp7WZOlbHEBQq/b64IlAHHr2xQjAxGDhIWFBwFsSCEAOw==',\r\n'img/ring5.gif':'R0lGODlhFAAUAOZXAP7+/gEBAfj4+H19ffz8/AMDA9zc3AcHBw8PD+Tk5IiIiAgICKGhoTU1NUpKSlVVVbm5uXJycp+fn6CgoJGRkZCQkKqqqvT09LCwsEtLS2NjY5iYmD8/P6ysrDc3N1NTU01NTdfX11xcXM/Pz8HBwRwcHLe3t42NjVtbWxYWFqioqBcXFxISEm5ubjY2NgUFBR0dHQ4ODuvr63FxcQQEBMnJyYODg05OTu7u7mpqagwMDCkpKTo6OpeXl0FBQTAwMCEhISQkJENDQ1ZWVjw8PPDw8H5+fqurq4qKiq+vrxMTEwICAklJSV9fX2FhYb29vRUVFRoaGrS0tNra2nd3d////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFcALAAAAAAUABQAAAe/gFeCg4NHT4SIiVcCIFZLEVWKiRAwVk08Vi4GkoMDNAgMV1VUBaCSMhxWDZuDUlFWTgCIHVABM5GIF0xWOzWCAC0BKUmcVwoHCxVXN1Y+OMWCJEFWA0Al0IQJVg85ViPYghtWEibU4FcZBwRXKz/gBAsOghpWU9gTVj2CGFY22B8vBAiqoqQBNAA6hBASESBBMRVWKBCyYEVBMRQFihACEMPDlI8gQYZgQSTRECsoU6pEiSSRACNUYsqceQLXlUAAOw==',\r\n'img/ring6.gif':'R0lGODlhFAAUAOZMAA4ODllZWf7+/gICAvr6+gUFBQkJCQEBAXJyclRUVO7u7re3t1NTU/v7+21tbePj483NzVZWVpOTk6qqqpKSkl5eXi8vLzMzM+Tk5BgYGD8/P0VFRRYWFm9vb/Ly8gcHB1tbW8fHx/T09A8PD7u7uwMDA2ZmZgoKCnd3d2FhYQQEBCMjI2trax8fH2pqat/f3xwcHFdXVzo6Ori4uKKiovj4+J6enpSUlAgICNHR0TAwMMLCwoWFhVxcXCUlJTExMZeXlwYGBtfX10RERIODgw0NDampqWVlZXt7e2BgYBUVFQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAUABQAAAeogEyCg4I5CRFChIqKBA5BBgYfCA2LihJKSwkPDwxLGUCVTAs6Sz8zhAsWSxckhAqdHDehFEoHMSKCJiUdlKFMBCwDDoIBSr6KAEnExseDycvNzspMxdGCz9TM0djV1tzazd/WTNguA0kexwo9BwiCNSkDIzwCiwJERSpHBIQ7Mks+JhAysmKJhhChbMBYsgEChCFLWtBoJgAFjgIFTiCpZ+0FiAoYQgUCADs=',\r\n'img/ring7.gif':'R0lGODlhFAAUAOZWAJycnLq6ugEBAfLy8gMDAwICAgYGBsnJyQwMDPj4+P///2lpaR0dHV5eXsfHx+7u7qKiohMTE+np6QUFBWpqagkJCb6+vtPT0w0NDf7+/pmZmc/Pz+Pj43p6ep2dnfr6+rW1tWBgYEtLSwoKCqioqJ+fnwgICHR0dMXFxa6uroWFhbGxsd/f32hoaDExMbKysjk5OVVVVSEhISMjIxISEg4ODmxsbKysrJaWlldXVyoqKn19fUxMTGRkZMTExLS0tF1dXVZWVnJycsDAwDs7O1RUVEdHRy8vL46OjoiIiEJCQj8/P6ampnFxcUZGRicnJ/v7+9HR0U1NTRUVFT4+PgAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAUABQAAAfBgFaCg4IcFA0OhIqKF0AGAo88FouEDkUEBDEHEhQjVUogiygikA0XhANCGFUwL4RTFS0clFYJHTQTEoI+VUm0hClVJYJIVZO/gh8FC4I5FQrIgzougjJE0YMhExkPVU3YgjhVPxBVTOBWG1U7NlUD6FYRRj0FK+gbGEsDDBEs2FBPEBywMsTEkQzRpAiAMEhDlSDIOlQ5oWhBFRW0SBRwskgBFQIaAogceaPGjASU9lVZyXKlwF8PPACYSRNAFEWBAAA7',\r\n'img/ring8.gif':'R0lGODlhFAAUAOZEABUVFfj4+La2toWFhf///yUlJQsLCwcHB0tLSwYGBhERETExMTIyMhMTE1paWl1dXYeHh4mJiY2NjY+Pj5OTk6enp6ampqqqqsDAwIqKimBgYKurq1NTUyoqKpSUlKmpqcPDw/f391VVVSAgIJKSklBQUIyMjA4ODllZWVxcXIiIiI6Ojl5eXlFRUTAwMMTExFZWVsHBwSgoKBISEgICAiEhIf7+/jY2NpGRkVRUVFhYWFtbWwMDA4aGhlJSUvLy8uvr6x0dHdra2gAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeggESCgjZAhocBg4qKAidDj5A8PYuMBgUSJhkRKhAIQwOURAKWQJQEHJ+LowWloQQtqYKrraFEBCWxHSO0tbYIND9EQT69ix5DQsI5xYoUyMIizIMkz0Ew0oI41TrYRBPVKN0rzzcKGNIBDAeJQkEKMcUBCwkWg+0zILXyCRWL7Q0vKIVwceBDqH8OdqR4wEKDjAMXeglhAKCixRobukkLBAA7',\r\n'img/rna.gif':'R0lGODlhFAAUAPcPAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZAAAAP///////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAUABQAAAhXAB8IHEiwoMGDCBMqXMiw4YMEDg0WYBCRIIIDACoKPECgYYIEDAIMcLAg4QICIx2odCCg5MGLKxUoMLAgY8IADhggqMhAgEaBDDr+BFAA4s+jSJMqVRgQADs=',\r\n'img/rotate.gif':'R0lGODlhFAAUAOZoAHl5eV5eXn9/f4mJiXR0dHV1dYeHh3p6end3d1dXV4GBgVtbW1xcXIqKil9fX9vb2/39/cHBwW5ubnNzc8TExL29vZKSksXFxd/f335+fsDAwLKysrOzs3Z2dsPDw3FxcYODg8bGxuXl5crKyoKCgs7OzoCAgO/v76Ojo9fX1319fa+vr29vb2FhYVlZWXt7e2VlZWhoaGNjY+rq6lpaWl1dXaSkpPf3993d3XJycujo6PHx8fDw8Pv7++Pj49ra2vb29s3NzYiIiLa2tnh4ePLy8pWVlVhYWMnJydbW1ru7u4+Pj8fHx2tra/j4+KKiooSEhKqqqmlpaWZmZrW1teHh4enp6WBgYHBwcIuLi76+vvT09NPT07GxsZqamp2dneTk5JOTk9zc3KGhoe7u7peXl5CQkG1tbf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGgALAAAAAAUABQAAAf7gGiCg4SFhoVkEWMoISeHhTgNMgkMAQtSGWKPaBwtNQwJLi4LU00sQ4calQlQFUkpEWYwHxIbhQ8tATAahlxEHR8jhA2WHo8lLAoGgzsyC0ubaCgIZYMVRwkX0WhWhBYBNFXbD08rggMBDjqbYGEIIAgYaF5XDPKGECsABwAvAlFoRjhwoM2QjxwvJgBQMWAAGicSYmQ5dMOCAgImlAmYgebLmRhKHlERQKKAEBIR0PAoQEBClx6EIFAw0aCABwMHSgh6gAXABAUbKFDgYEDAgAJa0BQRAWFQkAMdBADYZxQEgBCbttjIQGACAQQqjIjYhgbIDyRMUjg6FAgAOw==',\r\n'img/rxn.gif':'R0lGODlhFAAUAMIEAAAAAH9/f4eHh5eXl////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAQALAAAAAAUABQAAAM1SLrc/jDKSau9uIU9FtfftnkjIwbESaKmmLrAiwK0jKqK2464DI6CjYA0ZAQDxYxyyWw6CQkAOw==',\r\n'img/rxnmap.gif':'R0lGODlhFAAUAMIGAAAAAEBAQEBAwICAgICgwKCgpP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAcALAAAAAAUABQAAANCeLrc/jDKGKaqK2Cp2+aedXyj+Gmkg4rQ4BaSIBOK68ayUNsOsOS6g21wABiPvgNwd2sklTkmMbIU8iKEGWvL5SYAADs=',\r\n'img/rxnmap2.gif':'R0lGODlhFAAUAMIHAAAAAEBAQO0cJEBAwICAgICgwKCgpP///yH5BAEKAAcALAAAAAAUABQAAANOeLrc/jDKGKaqK2Cp2+aedXyj+GmkgzqC0LQOIRsKXLtDXiiyvMC2XI7XY7RcCuGA6AM4j4CkkEn4uYLTQ696sHVx2e33JSjoROi0epEAADs=',\r\n'img/save.gif':'R0lGODlhFAAUAMZvAAAAACEyRzMzZxE7oTc2bjQ8Rzk5cjE5mDw7eBxBpzU9nDY9nD4+fTM+niREqjVBo0FBgzxCojxCoyhHrUREiUdHj0hNVkRJqjRNs0pKlENLrk1NmlBPnz9SuExPskxQslNSpEtbcVZVqktYvlRWullYsFJidlZexFxdwVxdwltqfWBjyWVkw2dmzGdnzGxrz2d0hWxr0W5t02h4jXBv0XJx13V003Z11Hd23HN/j3p533t61nx714GA2oGA5oSD24iH3YeG7IuK34qJ74+O4I+O84+O9JKR4pGQ9ZST5JOS+JST9ZiX5Zua55qZ/5+e6aCf+6Cf/6Kh6qSj/Kem7ain7qqp/62s8K6t8a6t/6u0w7Oy87K14LSz/7O7xre29be2/7y7/7zByr69/8TIzr3K4cbR5c7Z6dLb6tTd7Njg7d7l8ODn8eru9vb4+////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAfRgH+Cg4SFhoeIiYqIX19bWFVSTUlEQD07NjSGW2NKb5+gb24jJSWGV2NDoZ9ubR0CIoZUYz6rrWsYOiCGT2M4obdoEzUchkxjMqDBZgkuG4ZHYy2sbWtoZmUDKRmGQmFgKycjHRgTCQMoJBWGP11ZU0ZBPjo1MekfFIY8VlBLIf8hTKgg4eECBEM3oiAJEgJAgTNpYGi4IIGBIRpO5IUoMEMNmxwPIihAYOhFER8OAmjxIoaMhQYLDhgwxIWFCBAcNmSoQAECAgQGCCwaSrQo0UAAOw==',\r\n'img/scilligence-qr.jpg':'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',\r\n'img/search.gif':'R0lGODlhEAAQANU9AKXW/5ylxq3e/+fn75ScvQBSe4S11r3v/+///87//7W91gBCa73G3v/352tre9b3/+f//8b3/63G3qXe/63W9zF7pa3v/733/9bW57XO55y93qXe73trczmEpdb//7Xn/4SUtZzG3pytzsbv96Xe9////5SMlFJzjP/erXtre/f//5y954ycve/3/5yMlL3W55S13lJrhGuEnJzG97XW59be53Nrc87n99bv95SltYyltXuErZzG7////wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAaUwF5voCDsCIqBcLnEEDQby0ZDwDCFAwIPAJg8VDiCkqmACc7c1iOkuAYoh8vhMwE8SIErKJLwJCIfXRYgbiMQCBAJBwIAeFcMGQglCB4XjCEMVwMBN4iKAjMnOlc9NQE0IxEUKzEyLigNmgwiLCIMORwFFQaxpEwcCwUdvL5LLw7Bu73FEjbBw8VLEsgFJtHSDikZQQA7',\r\n'img/searchreset.gif':'R0lGODlhFAAUAPeRAOry+uvz+t7EkNe2fs+oZPHm2Pbv5Oz0+u/1++TOq/Tr29SwcMmbYcGOV+bRr9Kubc+oaejx+dm6jOzz+vr28/Tr4vn7/alhObyFUvf6/eLLub6GTd/EpfH2+63apY7GhGqrY4TFfb3Xuk+RSGqsZLqBTMuplJKzdJXPjvz9+9u9hM2mYrSyccfEjtbn4abXo2CfVaPUm6nXoMOSWNC7nWeaVdKsd5dhRurx6eLu7YyyiJXOjmSLRL3fxI7BjLHbp5mkZ4SaUvz591afT4C9eInJfunWpJZ+Rerm2OfToFuaU4nJgp7RlnW+arNzS+/s5YjHgdfcxojGgIvFg+zcv/jy7mqkZH+9d+DHtprPkoHBerFyRcugZp3Hl72KU/fw5YyiY/z6+ffx7fP4/G+vaZiIR5HJh6TUmoHEeW+waYrGg0+NSVaPUtbo4KzYop/Sl4C/em2paG+fa2CkWYjFgtzn236+eEWKQGutZM/lzOfSup/Rlo28iFmIQoO+gHa5bmqlZNKthHa4boi5aMng0pDKibmASGKoXOny92apXYjGhXO8aW+vZ3CwaMyicILBfojIfP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAUABQAAAj/ACMJHEiwoMGDCBEqEPCAAAEIEgokFEhlwQAHXwwkYDGoyaIpeQwqWJAgAwIAiF5AOvPDQxZBXVIQFDAgQ4AIAHoUcSPDzIc3TBqJIPjAQQecANDsifHnRBA8O9RYIUjAQAAAWBU98uMDiRc+RFCMILjCwASsAQJMaDMnShlAWqCsIQghQYe0AQ4QOpSoBgw7S0joICjBhgUEBw64GHKlEB0pIdKwwUGwABcOFsYgyBGHERwyIJTIqWNQDwNHHCpUoMHjDhggR54gLBCowYYNGEr0aWFExQUxEwdqaCAgiQAGN4QEF6gBw4ABM7ZQWC4QywVDTqpQH0jBRJjt4MEHAQQAOw==',\r\n'img/select.gif':'R0lGODlhFAAUAOMIAAAAABAQEDAwMG9vb39/f4+Pj5+fn6+vr////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAgALAAAAAAUABQAAAQzEMlJq7046827/5MAjGQ5ChbAqRWruROMyQid3qBkVweuEZaAqYQYEI6GHDCHKDCfUEsEADs=',\r\n'img/selectall.gif':'R0lGODlhFAAUALMMAH9/f4CgwDAwMK+vr4+Pj29vbxAQEKCgpJ+fn0BAwICAgAAAAP///wAAAAAAAAAAACH5BAEAAAwALAAAAAAUABQAAARHkMlJq7046827/5OwjGQ5CtbCqZWqvIeUzAHDUu6ryHNipwzdjtHz3Sa5F2+GSQ4DNMYAuAFYDKYSowDoIkAMK5hBGJvPlggAOw==',\r\n'img/selfrag.gif':'R0lGODlhFAAUANUAACQkJAAAACUlJcjHx3Z2dgsLC8nJyUlJSTs7O25ubgYGBpWVlc/Pz1dXVyMjI2dnZ21tbVRUVM7Ozmtra35+fgEBAQUFBSEhISIiIi0tLZSUlHV1dbKysmNjY46Ojl9fXyAgIBcXFx0dHbq6ui8vLycnJzc3N4qKiv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAUABQAAAZyQJRwSCwaj8ikMgkQAJ5PJyApUE6PV2S2WKVqjQ6JcEskoxAABsos7BIjH9LAW+xQDpk51jg5IS4FekVmCR4lBQEBgkROUigECyAWiQEGSygbECIVlAGXBA0YAQojA5ZLBAccJgEJl0IPQhoBIa+2t0JBADs=',\r\n'img/sep.gif':'R0lGODlhAgANAHAAACH5BAEAAPwALAAAAAACAA0AhwAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAAAgSACftQ7NPIEGDBQcmPKgw076AADs=',\r\n'img/seq.gif':'R0lGODlhFAAUAMQAAMXP2ABFiVN8pStfkwA/f+Xo60t3o0p1odje4x9YkUNwntvg5f39/RdTjhdTjx9YkOvu8ABAgQBHji9ilSZdkx9Xjx9ale7w8gBGi/L09f////7+/v///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAU+ICeOZGmeaKqubOu+cLwujlHS9gkkASaMu96vRBlICBGMojIxIpWWEuAhBFJ9KETjUNJyU4VTWEYum89oUQgAOw==',\r\n'img/sgroup.gif':'R0lGODlhFAAUALMOAI2NjQAAANuQOmYAAG25/wBmtv//xczu/z2S3P/emP+2ZuOqigAAOjoAAP///wAAACH5BAEAAA4ALAAAAAAUABQAAAQ80MlJq704aww62FUHWt83TqZ5Uuoqta4pBEGxKgHhLMc56y7DIMDouWYBhMshtI0EukRDORLSnMusFhMBADs=',\r\n'img/shift.gif':'R0lGODlhFAAUAOZLAD9IzOLi4uPj487Ly3Sh/8bBweXk5NjW1nun/8vHx+Dg4ODf37+5udTS0r64uIyx/8K8vM3Jyb63t8zIyFaM/+Xl5efn59nY2Obm5tfV1c7Kyt7d3dHOztPQ0N/d3ZC0/+bm5ZW0/5a//8bCwqDB/9LPz3ej/6bF/1CO/3Wh/5G6/3mm/8fCwn2p/8zJyeHg4E2E/6S5/5i5/9TR0VyO/5S3/5K4/424/4ut/+bm59vb28rGxqTE/4mr/42u/9DOzuTk5OTj5HGe/3el/3ij/6rN/2yb/9/e3lOJ/3Gh/6i8/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEsALAAAAAAUABQAAAeSgEuCg4SFhoeIiYqLjIUBQRUCGAIGBgIWiQYQBQMSDQwTCQ4KiSAcHRcRGxoHGQMLiRWbnZ+hDgGJOTsuMwUHLCU/I7iIGKepq62viRYKLwIeQEcBFEYrMD0oBEmHAIQ2JEU4Og9KMd2C3jRCLUg+FEQpiAD0AAg3MgQnQzUqit4IHoggwMNEiA+NEipcyLBhokAAOw==',\r\n'img/signal.gif':'R0lGODlhFAAUANUAAG5ubv7+/r29vUpKSsPDw8zMzGxsbGJiYl1dXVxcXIiIiMbGxl5eXkhISHJycpmZmUVFRYmJiYODg8LCwtvb29jY2HNzczAwMHd3dzQ0NFZWVpqamrq6utzc3Pf395WVlWtra8HBwXh4eH5+fnFxcf39/V9fX2lpaYCAgOHh4cnJycDAwDo6OlNTU/Hx8cTExLW1tWZmZm9vb3l5eZubm0lJSXp6eqSkpMfHx////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAUABQAAAZcwJxwSCwaj8ikUvlRLI+DxNM4qE2LtsZ12BGxQttcAWCahAUHwy3MaV0w4YKBQQvDHA9N5UoZzXIAEVcZEDg5KTEHGwIECy8CKkYSK0MECAAoICckMhZhn6ChU0EAOw==',\r\n'img/single.gif':'R0lGODlhFAAUAMQbAAICAgEBAQUFBQQEBJ2dnZOTk6CgoJycnJaWlpSUlBwcHJGRkZ6enigoKCEhISAgIHd3d3h4eI+Pj6enp6Ojo5qampiYmKGhoQMDA5mZmQAAAP///wAAAAAAAAAAAAAAACH5BAEAABsALAAAAAAUABQAAAVJ4CaOZGmeqBk5RIoqGpa5ZhHEM01Kt6yTi17utykAcERR4uhLIpjDnwWDTFaoTeIBG9UxBlWiAZz9XQSxVpKCfiRFkwbkTU+FAAA7',\r\n'img/singlearomatic.gif':'R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVV4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoNBvZTqTArTAxUk1oWvAGpEMmmVogNRFR4MDybjCQrYa8Agxq6fODVdmKtpmWhIQgyP6AgYIkIQA7',\r\n'img/singledouble.gif':'R0lGODlhFAAUAIQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///////////////yH5BAEAAB8ALAAAAAAUABQAAAVZ4CeOZGmeaKqurEk0RksKW5CMAJsUmxZvg9xqQsMoND2GriA6bjDCFCYmigxq0dKCNyAdMhvVAqmJiAIH1vgJAWvSK8A10H4+WBWwCJxpSUgIBDKDhIWGJCEAOw==',\r\n'img/sortasc.gif':'R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUUICSOpEJCyfCMjmAACxQcBUMgTQgAOw==',\r\n'img/sortdsc.gif':'R0lGODlhBwAFAMQQAJHL7ENfb2GWtlabwMTj9Lri9IbI64exxcrm9TxeckBidJq2xbXd8sPk9TxZbF6Iof///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAHAAUAAAUVICSOUIMQTHEE0AIYgjM+Q0JCyhgCADs=',\r\n'img/spectrum.gif':'R0lGODlhFAAUAKIEAKCgpEBAwMDAwP///////wAAAAAAAAAAACH5BAEAAAQALAAAAAAUABQAAANBSLrc/jDKSRsQOGsMnBhgKIKCN55D2XxicKoMG7ojvMggLdoKS+sDF4/gy7VSpqDxh1wZlczhZUPtVK7YrHYbSQAAOw==',\r\n'img/spot-blowingdown.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fH////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADYALAAAAAAcABwAAAakQJtwSCwaj8ikcslsDhGUj6IGY0icxMIjJAB4AQKDpYC1pSDfNHiFrQzU6sHEqXjD07Mmq3tXZ5gvDX1pBAlMBwSDXxAbTA8Lil4EHkwdfIoEHEwugpELKEwjkV4Chksqo14kTZeKZEwyoxdOFAaKDidOFZEic04lihGvTTStaQIMZRoRDnBhV2UmdmkDB2VDFgN22jHXRC0gXhjW3kUICOXpQkEAOw==',\r\n'img/spot-blowingup.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6Ojo////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAajQJxwSCwaj8ikcjlMMJmWTAHgqDGex0RlAOgOKk7skJDidr0NgliIEpzfgs6aIXvbBSTxzWCHh8QqFH1vH1gEboNnFBZPLYlvEgdPHlOPAAUaTy4wlgAGJ08TnV0RTyWjAAtPCqgbTwuoAKuoBk8cqKVMLJWPAxdPBwidAjZPBBMQjxAPak8YNMJ9CA4jay8zEnYGJiBrQysxDwINIpLe5+hMQQA7',\r\n'img/spot-circle.gif':'R0lGODlhHAAcANUvAAAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAcABwAAAaCwJdwSCwaj8ikcslsOp/QqHQKNUVAp8eGMnW0CgaAuABBXKCWSUDMFgcGI6dgMWjbBwRB8xC22wMNTRwufnYeLE0IhX4PTQmLdgVNK5BtJU0kEpUAGh97a5UKgUwCKAyQDHlOFSGgfwkOUCIIEHYGCxlTHSoEChgpB1TCw8TFxsdSQQA7',\r\n'img/spot-crescentdown.gif':'R0lGODlhHAAcANUAAAAAAP7+/gICAp+fn8PDwwoKCv///wYGBtnZ2QcHB9LS0ouLi/39/QsLC7u7u+3t7fPz8wUFBQMDAwgICAkJCXd3d3x8fLe3t7Ozs1VVVYeHh+bm5o2NjTExMRQUFKOjo8fHx6urq19fX/f393Z2domJiUNDQ11dXTU1NVFRUYCAgA0NDb+/v0RERK+vrwQEBCAgIGRkZG5ubmpqanBwcCsrKyYmJv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAAAcABwAAAanwJtwSCwaj8ikcslsOp/QqHSoWDA5LOYAYFgWVFoAQgkBWJfbkNIBGDA/AJrS0mYSAJEHctQAYJhlAidIMwJiTQAAEjFdQwYyhgAMTTCJETYaBAQLNQeJDU4pkQCeAAmJiSZOJaeorokUJE53r7UXTx61riuNTRUTugAFIlAbo7UKURkUtQUtUg8FwKgHCWNSDgIviRICLlNCCiiJHSDgRAyT5+vsQkEAOw==',\r\n'img/spot-crescentup.gif':'R0lGODlhHAAcANUAAAAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADgALAAAAAAcABwAAAalQJxwSCwaj8ikcslsOp9FExRZgEQAkUZhOiy8BICwoLLlZsDhMMHFPQ3ScMBhOlnEw4vUFH0HDDRPNgh9aglPHQyEYSVPdooAAmVLD3AIBAAWfAAkTQpvAwMfCgcKIwOJDIZMEAQELDJFNTMECBJNFH4PRxhgNE0wABtJEgAgTTECKkkcDgZNBhdLIs5MKBNLFA5NNw1LHgBNCStLBy1c5+jp6udBADs=',\r\n'img/spot-halfellipsedown.gif':'R0lGODlhHAAcANUAAAAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+Pj////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADIALAAAAAAcABwAAAaTQJlwSCwaj8ikcslsOp/QZSNArVqpjaZiAOh6v11EiukwgM+AQ4gJOaDBhQjTlXh/DRwmy/49OJgffF4EKkwSgl4vTQiIAAxNJIgmTicFfAkWTjGWdgMlThiIGU8ofBUbTx0LbwMaUAwEdgpRMIxgAyJRMgEDq14GBS26MiAEdQArBBPDQgoXXSMezEQPD9PX2ENBADs=',\r\n'img/spot-halfellipseup.gif':'R0lGODlhHAAcANUAAAAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaLQJZwSCwaj8ikcslsOp/GEhRZ+DwAj1BhOiwsBoDwwLPljsDh8CHFnRDScIBpmnDEw44ONIC+AwgaTxcSfmoNTygMhWEnTgEIi2EbBk0WkWkZTRhvkQyHTCIUlxAkTSoHlwQcTSuXYSBNFa4ACk2QrhFNCrMQTRGzAE0JswtNBgLIycrJlFzOz9BLQQA7',\r\n'img/spot-hellipse.gif':'R0lGODlhHAAcANUAAAAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAcABwAAAaSQJZwSCwaj8ikcslsOp/QqHTqbJgWCk9Cg1pwJE9SyjAwAM5nQZmBYD4EArRcDhcRkITMYc6XFz53RioDfYVnAyFGASCGjQcNRRaNkxVFE5OGBRORmIaVRCeEnXMCYEUboqMAAxFHBCV7owUjAUlvcY1wEYFJCAwADn3BCm1OEBQYFwkAHRcrFBBU0tPU1dbXUEEAOw==',\r\n'img/spot-vellipse.gif':'R0lGODlhHAAcANUAAAAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PD////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAAcABwAAAabwJZwSCwaj8ikcslsOp9EhMGAgBovFgIAQJhUrMLGIrLdigQF6+mRKJcTihTUwXC7B5QnxM4HpJslAn1lDBZOC4NuD00ZB4luJkwbj24dTCuOlAMhTCgDlAAHHEwqoKEfTHumf0oBpgAgTYiUBE4egokCJE4SoAZPdIN4UBIDbXYKCqxODSwabhFoYC0XEwQYGAQjX9NCUlTd3UEAOw==',\r\n'img/star.png':'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD+SURBVHjaYmDAAn5eU8gF4hxscgABxIRNkOEHQxwYYwEAAcSIofaoghaQugrlanJYP7iBLA8QQJg2/PwfB8QMUIxhC0AAMX7fLv8SSIsxEAdeAgQQE8NPBhsgvgLEDATwZZBagAAC++HbSnluIDULiKNwmLwEiNO5wh9+AwggFE9/WyK/D0g5oinexRXz0B3GAQgguIZv8+TYgdQrIOZD0/AeiMW5kh79BnEAAggRSn8Y3ICYD4hB7O1AvBPKFgTLQQFAAME1/P/DEAbEv4C4GIi9gdgTiEuB+DcQR8DUAQQQC9yGvwzqQNKKO/fRWSTn9HydLHcASE+DCQAEGAA3aVySIkQTEQAAAABJRU5ErkJggg==',\r\n'img/star0.png':'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAERSURBVHjaYmDAAm7cuFEDwtjkAAKICZvg79+/HX/9+uWITQ4ggDA0nDlzxvznz58SQA0SQLYJujxAADFhMT0GiBmgOBZdHiCAGA8dOnQaSHMxEAe+AQQQC9CUVCBjIiMjowhI5P///xiqgHIg8TdAZj5AADGCBHbu3CkAFJgBlNDFoeEikMpyd3f/ABBAjMgSW7du3Q6UlEOz6b63t7cPjAMQQHBPb9q0iefPnz8SIM8CaYa/f//CsBRQjgOmDiCA4BqAEsFAU9n+/fsHYt+FYhCbHSgWAlMHEEDIGtyBJgOpv6uB2A+oyA9Ir/sLAV4wdQABxAJjAE0XB+L8sLCw/Ujeql21atVBoL8qYQIAAQYA5QugNPG/jFEAAAAASUVORK5CYII=',\r\n'img/stop.gif':'R0lGODlhMgAyANU/AOfo5eYxMdtKSMwEAOpHJMjJx7a3taioqOtWQKoVBtCwrK9UT988PJSRlM6TkOI2Dvv7+9ohAfRkU9PU0vP08tvb3MF1cPdza7G4w7qSk6aqs97j57mmqcjQ18XL1t3g26uxvLzCytnc1K6cotDQz8+ioMODe962tOTr7dXc4Z2cn/P8/aGjrMzOyuzt6+zz9cPEwePj4NfY2L29vNXY0fj4+NDW2e/r67Oxs/Dx7/X29bU6K9pdV66urv///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwOXQXc4aBqqlgHw6RmrFqvx9kB5/F0vh1PKIQBaVQHEgTLrsZ6htQmVVCUSo68447DlFkqMGttbBAGMCgoJAoWAgwMAZGRDAICPCUcZoAkhFcyPSgvJA4CkqankwImHBpnPVSdRDMFKxukqLiTAY+qHCyAALFCoBAwPLm5j8qPPBkam7E9OislkMimy9m8Js8qnG09OSsO19iQ2tmqzw0ybAUb4+WTj7vo6dwsDTlXADMrCtaunbOXzpGqXyyuHNBRoJS8XfUIVppIKQOgAlVgyNhwDFUlHh8t8RhJsiRJgxMtjcjnokiNHi9K4LqgI0eOGzhxAtgJIIbP/58/HVBKKcDCrx5FYFTo0PHUiRU5XLhAwdPnhg8fKlSQwXXChBQKFhBVyZLIgQ0ycZ14UdUnVq1cu3olQcJG2LEHWcwYUiGEDQunzp1A8fPtVrkT6NJt0WKRWJAmR2hoACvOjIARGQzOChexYhKMCxSA0SIsDwQjUaN21uCDkAMpyEnKdmJDXBleEy8WDWOGb991FphMbeLX3hwaPACGSDtF7s+jZ+DosWRJjx44ZmRIECHCLtQSeEhgcQaCjBkhHKI7IQP6DAPUqx+4jgOHgUPbBwyIsN87asmUwZBEKfYoYENo8MlHn333+UZaCQlw1113/ZkAgj7ocTCQNid0AP+DEtUteJ8BDgrYAg0jSDjhhAMscGEMOIQwgkQKGBAidgySOAMMJjY2wQcQriikiw1UEOOM2jgSgAPT4digg6IxRsIENNAgAloqChnBAhiwc2RBDPCXgXRP8liAlF5ZKYIIWKEQ5AMRwAlnd1wWiR6SlOSp3wAOhFDimT5WuSabWPnkggLcPaDoonR2GUMBGLDgyFAB7MlnCz1OKeiaWH3gE08vILroqHBa0KULHxwAwgKUWsonDYGq2elPPAEg1T8JkDpqAyE0QIEOKmBgASWVulrCB5vO+ilPUrlgEwQK7PAAAdQSMKoKIahABQsgZFCKq/qVsAGhni67U7M2UfD/qw/RVuvuA1z2MMMaM2Cgwg7ghotCuTEwK1W66upQQw0Q+HDCDu5W+4AJHhQpBAAqrJrvACW4UCu6OQQsMAQc++BxuwiEjAC1ArDQgT5DsNDlxCW80KyzGf+6ccce13ywACKHTIAFHmgw7xAkHKABvuCWsALMAQ/MccE1N23wDghIIHXIApzVQDBDQBBxA/k64PTXYNccrdRkI2CBDQbgAMsQE5C3ALgJWCC3BSbUbffdJuihh3BkS82DAQBcPYhZINwLd4SIJ454BDs07rglElwg+QU8jIBCIGsTAeyFCUy8X3/djVpt1GRPfoEEGaBQwAEUXPHB1p27SuGKolMb4HLppmewQQwNxDB4FTNw20Dse/Kn5aKjkx755KnnwM7vVhjAreH6GS9k7QTcLvXkHLzgfAs6dDJDxBq8XTzooSuavPIWzOBD4CSEHwsJEV9ItPUTIm+7yM1UUEyRmeuEC35RhhEsgDvoi5P+zFYCG7ClAThwAfSEUYAGaMAPPciABaSlQPUVxQEzSIELNgCICchPGEagwPiChQEygIADI+CADA1QADlsAAZNKIAEUYgFHQStARZETwgK0AUPHQCIPZBBDibIQytQoAIw6IETnIADpeSAYE1sIgQGxkWOZTEIADs=',\r\n'img/strip.gif':'R0lGODlhAgAgAJEAAMrT/63/18Wn/9Ts/yH5BAAAAAAALAAAAAACACAAAAIPhG+hq4jMhpxS2GspxbgAADs=',\r\n'img/strusearch.gif':'R0lGODlhEAAQAIQbAJdhRqlhObFyRbNzS712QrmASLuBTLuEULyET7yFUsGOV8OSWMeabsmbYcyiaMuplNCsiNe2ftu9hN7EkOLKlufToOTSwOnWpOzi2PXy8Pr8/v///////////////////yH5BAEAAB8ALAAAAAAQABAAAAVc4CeOxWieX8FoTImKqqYVGNaihTUXmaxZLtIM45vNToWiLxmEKWVM5LAYNeV2PRmkCVsNbQXCK7VqOSgTxDh1MEguF0lgLVJMKpMGgP5JRCILAnwfAQUDgyIPIyEAOw==',\r\n'img/symbol.gif':'R0lGODlhEAAQAOYAAE+Eufv8/WSSwT54spOz1NPg7UyBuEd+ttzm8fr7/f3+/m+axvz9/kF6tP7+/vj6/JGy07XK4c7d64ms0JCw0u3y91GFuUyBt5e11Yaqz1iJvO/0+ODp8tLg7XSdx9Hf7Imsz0l/ttbi7tTg7VGFumCQwGKRwZSz1GOSwVKGuvn7/Pn6/FqKvY6v0FaJu8va6pS01Nnk8GGPwI2v0fX4+0uBt6vE3negydTh7mWTwnuiy3Gbxp262IWpzlOFuuzx9+rw9u7z+N7n8VCFutDe7EJ6tMfX6FCEusPV5/b4+4ut0VGEuVOGutvm8Je21a/H3pa11eHq8m2ZxW2YxKS/2azE3fn7/UN7tIGlzHykyz94s9/o8qjC3Ovw97PJ4Ed+tUV9tU2CuGuXxEJ7tKK92dHf7c3c6////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGcALAAAAAAQABAAAAd2gGeCg4SFhmdVO0ozFEaHZxIyPYMRQyeHXymFXgMthRgDEIYHBoUaB06GAA1cg0gXBiCqVzyDZi41E6pFZIQZDQSGIWCGY1OFL1pYhwJUhCzBhE+DMESCUDaGHiUmUmKDWQs5AguDOkc+JGGDN0tMFiiP8vOGgQA7',\r\n'img/table.gif':'R0lGODlhEAAQAOZNAP///3un3JK56Pf6/rKysmaLwHWe1Fp8snag1aWlpcbGxnmi2LbD28DAwLq6uoyhxrCwsHCZzlR1rL29vbm5ubW1tbe3t7GxsXOd0sjIyGGFu1FxqVFyqW6Uyru7u5iYmFR1q1Nzqnqk25K03lx+tWSIvnKaz7Ozs6Kioq2trV+DuXCRwcLCwlh6sGCFulx+tFZ2rYCex6urq7i4uGOHvaenp76+vpGRkXqk2miOw8zMzIat3ZWVlcrKym+XzFNzqXOc0W+Wy5ubm56enl6Bt6mpqWySyK6urnmj2Vd5rlh7sWyUyXqm3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAQABAAAAeagE2Cg4SFTQwjAUw4CwgGGCYRQUsxDE07Apmam5orTQGgoaKiBU0iAKipqqk0TUgAOj0KAxMeFgMXECkALk0Lq8CoRE0IABkKDQMOMwQDRTUJACRNBsHAB01AACwNFAMVJzIDKENCAC1NPtarEk0dADYOzQRHCQMfPDcAIU1G66ocmjzIUaCEBhUvDihJAgPEjw0PDEmcSHFQIAA7',\r\n'img/template.gif':'R0lGODlhEAAQAOZFANTU1ODg4NfX1+Pj49PT0+Tk5M3NzWxsbKysrMfHx9/f37CwsGJiYs7OzmFhYWVlZVxcXGNjY9XV1Wtra1lZWfz8/Kenp25ubm1tbfPz88jIyGhoaGlpacvLy+Xl5VBQUNDQ0GBgYHNzc6Ojo/Hx8f39/ampqcHBwWpqaq2trdbW1srKyl1dXbW1tdHR0XBwcPr6+sbGxmdnZ29vb2ZmZlpaWnJycr29veLi4qurq0xMTKampvDw8MTExMXFxc/Pz8PDw3FxcczMzElJSWRkZP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAeygEWCg4SFhgQvOQYQG4aDGTpADiErFyeORRUPFgMKBQsOhjFEGi0TAxIBIQklGYMoBwgQEx0CAAEHCzIfIIIUHR4KAQIEAAJCGCMJHIIuDAoSANIABAI4BRw7gikMAwPE0wCpEQ2CBz0IQQa2BCoBAQUGFIIgHw4LBwHGDTMQCzYPBpGA8YOFAgADRCBIwOCGoQgICgTwYIFGBUw+MDR4EEHDEB6YimyokcDEBQMhUwoKBAA7',\r\n'img/templates.gif':'R0lGODlhFAAUALMLAAMubcDL2qCwyO/y9mF8o9/l7dDY5FFvmhI6doGWtiJHf////wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAUABQAAAQ3cMlJq7046827/2Aojl2QFJMgTEUSWAhwSAIArMsBIJYCEJKA7bUgABSWAVFiMFACA5J0Sq12IgA7',\r\n'img/test.gif':'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',\r\n'img/text.gif':'R0lGODlhFAAUAIQVAAoKChERERgYGCAgICkpKTIyMjw8PEVFRU5OTk9PT1ZWVldXV15eXl9fX2RkZGZmZmpqam1tbXBwcHNzc3d3d////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAUABQAAAVF4CeOZGmeaKqubOu+IyVTU/Q0C3IYxUmJksgH99l9CIMU5EHisRwNUoHAYixISJYCQRoIWIkDSRBY6QykAADGbrvf8FcIADs=',\r\n'img/tick.gif':'R0lGODlhEAAQANU/AFqhUna9bDt/NWqxYGyyYovPf4bMfI3PgZ7JmT6COIXJejyANm20Y4nOfmmvX5/Kmvj7+GCmV/n7+F2kVGiuXtzv2VqmUWetXEeOQECFOWGnWInNfcPivo/RgoHKdoPJePr8+Tp9NFyjVFynU9bs09jt1ff69/j6937IdIfNfHnAbZ3HmLXWsrnbtVGaSVefT53ImaLEn6DJnGOwWanOpZDShIXLeanLpWSsWz2DN4HJdoLKd1+lVoLLePn7+f///yH5BAEAAD8ALAAAAAAQABAAAAZwwJ9wSCwaj0jkg5YkPhiOW/OHIHQUkVgSNjgUNBmfsMQhwhyNRiQh/lUCqpZwRdmkeGwhKaA4jFgyFwY2E3lCIDMBNQoDDB89IgttQyAWDA0GHjoAApNEEC44OygAIRJJEBgiL6ZTJzkhnkkmslNJQQA7',\r\n'img/tlc.gif':'R0lGODlhEAAQANU7AP///4elwJKux5eyyP7///n9/+71+/3+//r+/+nw94WkwIalwJawx5myyW2SsvX6/3Kl1IKjwNrn8pOux87f7vz+/vz9/vj6/PD1+pGtx+/2+/H4/ZGvyPv9/u3y+Pb5/P/+/4WmwbvT6JexyHOWtm6Ss5iyyPL2+v7+//z+/+/0+Zy/4O/2/Pb4+/3+/nGl1N7p85a83pWwx42sx/P2+WmPsHKl04imwZKtxvX5+/z//////wAAAAAAAAAAAAAAACH5BAEAADsALAAAAAAQABAAAAZwwJ1wSCwSa4qAUrlwGHcLAOFAJQAEz8iGZehqHrNnAEAuA3BigERlxhpvAJuIDLqmKQnAKfaRpcseEBgMfwkrFy0AE38wLzlkbkVjAC40ZZFECgQpFigdFQAZTyE6CAWnCAAcTyUjJgOwAw0kT7VFQQA7',\r\n'img/tlcnumber.gif':'R0lGODlhEAAQAMQZAP///6/C1bzM3LfJ2rjK2rbJ2sHS3wgDw67C1q/D1pOvxsfW4rDD1pexyZ22zL2878bW4Zaxya3B1LnK2rbI2bzO3FpX17LF13t53////wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABkALAAAAAAQABAAAAVWYCaOZGmeKKkIBCFEaYYANFCorBsF9ANQpFmtwABYDoABiQdYXSQPDHJCKgKETKRyxOzSkDcuzZqoJZc0ZmNRMUAcpDKASduW1gaJOYyS12N4bnAxMSEAOw==',\r\n'img/tlctemplate.gif':'R0lGODlhEAAQANUrAP///5exyb/R37zM3LfK2q/C1bbJ2vv9/8XV4vf6/b7W7K/D1vz///3///L4/dbk8crd7tnm8pOvxq7C1vX4+8/g8LHE1v7+/7bI2LDD1a3B1O7z+eHs9bfJ2rDN6MXV4bXI2bHF17jJ2q7C1J62zL7N27fI2LbI2fT5/bDE1rnJ2v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZ0wJVwSCwKJQMCYRAwEieABgNgcA4zhwQytGwaTYoHVEp1WhwUbOIiOSmZwwIAggkDxtOqUB5JoTcjWRcAIEMLAAByEBV1DwAHIkMBCAIaABEcZxQbHiVGh4iKFSgqRpMClZccZVYroIgdrSunAh8ksri5K0EAOw==',\r\n'img/toolbar-bg.gif':'R0lGODlhAgAaAIQRAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9PD1+v///////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAACABoAAAUkIAQ95OM4TcMwS7soSiInSI0ch6EbRV8QhIFwICgKAgGAEhACADs=',\r\n'img/toolbarbk-blue.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAGoAAQADAAAAAAAAAAAAAAAAAAYDBAUBAQEBAQAAAAAAAAAAAAAAAAQDAQYQAAEBBQkBAAAAAAAAAAAAAAAUYQJiBBUBUpLSU5QFBhZWEQACAQMFAAAAAAAAAAAAAAAAEgERUgORApITFP/aAAwDAQACEQMRAD8AO+3739Hyu9mc533jw2beMHN+jJdOpXRsLMRN9BCHc2gipzAzlFFFOhBdghBIisug3EKSLYjENYwVEzpv4XhSwQrJ/9k=',\r\n'img/toolbarbk-green.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAG4AAQEBAAAAAAAAAAAAAAAAAAUBAgEAAgMBAAAAAAAAAAAAAAAABAUBAgYHEAABAgMJAQAAAAAAAAAAAAAAYRQBUQORAlLSEwSUVQYWEQACAQMCBwAAAAAAAAAAAAAAEwFRAhKR0VKSA1MEFBX/2gAMAwEAAhEDEQA/AG/pvU9xvuTWzGG97q8d2snIPq+T3b+adyNUFjBNmKtkJwCUizRAtY1QNM0D1DhAy2hIPWNlGnMZlmF2herXwX7IgeV1JFud1JP/2Q==',\r\n'img/toolbarbk-red.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHEAAQEBAAAAAAAAAAAAAAAAAAYFAwEAAwADAAAAAAAAAAAAAAAAAgMFAAQHEAABAAYKAwAAAAAAAAAAAAAAAWFSBBQVUQJiktIDE1OUBQYWVhEAAQIEBwAAAAAAAAAAAAAAABETAVECFNESkgNTBBX/2gAMAwEAAhEDEQA/ACHvvnv0na855xktyqcTtnj9Xi29FOBM0E0AoW2y9L1DsprPieWKHIR7gWSuyMQiXApgEMhoRXjWOS0YoLIdiXvazLtYFSo3TOB//9k=',\r\n'img/toolbarbk-yellow.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAHAAAQEBAQAAAAAAAAAAAAAAAAUCBAYBAAIDAQAAAAAAAAAAAAAAAAQFAQIGBxAAAQIDCAMAAAAAAAAAAAAAAAEUUQMTYZGhAlLSBJRVBhYRAAIBAgUFAAAAAAAAAAAAAAATAQISUZHRUpIDUwQUFf/aAAwDAQACEQMRAD8A6X6T2by3N7E7ccv+j5Hcr5Tqbn0ulspygigotuGSzfQCVFbxNosBkkEYMM7MBokAaMNkgMlgDC3KxLMIWF1Z+jPcoDfVhIZbB//Z',\r\n'img/toolbarbk.jpg':'/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPwACAwERAAIRAQMRAf/EAFsAAQEBAAAAAAAAAAAAAAAAAAUCBgEBAAAAAAAAAAAAAAAAAAAAABAAAQIDCQEAAAAAAAAAAAAAAGEUAQMTUZECUtIElFUGFhEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A0n0XqO333JnagKaIA2zQBpmgDLVAFKELAKrKAfVm5cV0QP/Z',\r\n'img/triple.gif':'R0lGODlhFAAUAMQcANnZ2T09PTw8PD4+PlhYWDs7O8DAwMPDw1ZWVr+/v8HBwdfX19jY2FBQUN3d3cXFxcTExMLCwtvb276+vtTU1Nra2tXV1cbGxkBAQEJCQj8/PwAAAP///wAAAAAAAAAAACH5BAEAABwALAAAAAAUABQAAAVxICeOZGmeaMoRDaCewha4r8gaxaYxNRcHiRiGhmIlchrcZkA0/SZChUbHO1mQx6V0M0RRhIapJjKQNUmL3GCLOWSoqIWYLHNzzyM5F/LW2DMpAGUBfFwPCAQqFX0Pb4A1Em8YF4g9HA6OliMOlZqeliEAOw==',\r\n'img/undo.gif':'R0lGODlhFAAUAOYAAP///0BowFCI8Ep+4GCQ4JCw8I2w70BgsEBw0Ki/7lCA8GiV72CQ8HCY8EB44HCg8LjA0FV+tlB40KawwtPW2aq71aG764umy7TL7oCo8Gp5qV+CvTBYsEBwwDBQkDtgo5u370BgoM/S1FCA4Km+76Oz0FmG4Dtos83a7KnF7rW8x5Co8LPC773F1M3U7XCY4OHm6Kq+79rc3LTE4KS776K10tDV5EBosJq37JqtzM3NxF5+w7fF7pu47DBgsFh90LTG7K7H7bfJ6jBw4P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAUABQAAAeDgESCg4SFhoeIiYqLgygJMRgujIIJBSAGBiQsiSswREAFCwg3JwM0PIgZQUIFBB0BGxEhAimILw0PCwcHOUQyHwM9iAQKDA8aLYMBAziII0MKDQQ2yiYWiA4IAT4cHoIUAQIzk4MqDgzkgzsCNekiJQI/6UQQAhIT8xUXOvP9/v/9AgEAOw==',\r\n'img/unknown.gif':'R0lGODlhFAAUAOMNAAAAAAgICCAgIEBAQEhISFhYWGBgYHBwcH9/f4eHh5eXl7e3t+fn5////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAA8ALAAAAAAUABQAAAQ78MlJq11D2U0FAAjHHd8nboR5bsAUrtb3wlIq05Pd4vXOWzPejacLwnS/RypZATE/iZ8tkCwADEyGJAIAOw==',\r\n'img/unlock.gif':'R0lGODlhEAAQANU/AOHh4sbGx83Nzvz8/Pr6+/b29sjIyNHS0uXm593e3u7u79bW1rW1tdnZ2fT19b6+vllZW/T29vHy8/Hx8ezs7PLy8+3u7+3t7uvq68LCw72+v/j4+Nra2v7+/tja2/n5+err7O/w8Pf3+PP09WNhYuHi4+nq6svNztvc3e/v79fX1/79/dfZ26mqq7i6usfIyMXGxv3+/t3f4MTExLa3uOvt7fr5+by8vL+/v729vvj5+cfHx/n4+crKyv///////yH5BAEAAD8ALAAAAAAQABAAAAanwJ9wSCwafyPOYTE5CjuNEsiCOBgIx4YEoHloPAmc0QRCZQZCgefEKaoiGdGwI5CJiQfUrSgouYoOCE1EAgkMRAMEiRuMHwMCLIdDHBUUICYUChgIFCkXAkMNPqM+JS0AKwUOPj2hPgQ2PjQQDAMSEzoGQyo+PBsxLxABIikKBbpCvCIFAzgkOSIWNSM7u68fGxUXIRIhKQUBQwk7Bgbk5gEBMDMqP0EAOw==',\r\n'img/up.gif':'R0lGODlhFAAUAOZAAP7+/g8PD3V1dQcHBwgICBERERAQEA4ODvj4+AMDAwEBARUVFQYGBjQ0ND09PfLy8q2trRYWFr+/v1tbW3R0dOPj476+voyMjI6OjikpKfv7+1BQUHp6eoCAgKGhoc/Pz8TExCUlJSIiIpmZmR4eHhISEgwMDA0NDRkZGQICAjIyMuTk5Nzc3KioqENDQ////3FxcRMTEx0dHRQUFLa2ti0tLc3Nze7u7ktLS7y8vP39/fz8/F1dXRgYGGlpaQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAUABQAAAeEgEA6FUCFhoeIhhYLNImOiBgJF4+UQDw/Ey+Vjg0MKgibiAgkCTI2oYcfCz8zLaiGEAU/BRyvhR0HPwc4ALYbBD8DGTevADUpPwo9Eq8PKD/QJSOvIDHQPwY+rx4G1yYOO6gwJ9cMIiyoLgPXPwGoACEK0AECrysR7fW2OQQUtoYaDAUCADs=',\r\n'img/upload.gif':'R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==',\r\n'img/uploadimg.gif':'R0lGODlhEAAQAPcAAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjxAF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ8YKeeKoAaJpTipQjS6VypgkxRI9IkBQ4vMiyCY8Dd/MmNKJlA02cjjZqSQlTMMrUZSgEuRhVKEVnzJ8YNVwAxgmOc7wQBACwp0nhggzJIMoEoktCeg8YnHD0xfJr8wgUZAJQ40JXh5IMFACNCMNRSC1iSDpggkig7IAaNgkBg04OIbogMFlR5VFPRq+KkAAAKvn0AEQKMAwIAA7',\r\n'img/vbk.gif':'R0lGODlhAgAaALMAAM7d78/e79De8NHf8NLg8NLg8dPh8dTh8tXi8tbj8tbj89fk89jk89nl89nl9Nrm9CH5BAAAAAAALAAAAAACABoAAAQf8MnpXGuMrb2USmCCjMhxGKhRrAVBDPAgzEIQADgQAQA7',\r\n'img/warning.gif':'R0lGODlhMgAyANU/AP359/2zc9DQ0PyjVP66g/vk1P2rZPeTPMq4rf21ef7Ck/2uaf69ifqZQ/7FmfudSrazsOTk5LeMb86OZOynds+KWP7Xt/2mWfvcxP7KoaqViMvBvPWZSv2wbvWud/fz8P2oXvSkY+69m/7AjvHNtfSUQq2imvOyhOyPQ/WiXOKJRP64fu2jbvedUfygT/q/lOWbaOybXOysgO/Dpf7Qqe20jf7Hnve5i/3t4Pa2iJSUlOCRV/agV//Jof///////yH5BAEAAD8ALAAAAAAyADIAAAb/wJ9wSCwaj8ikcslsOp/QqHRKdX4+1SyRdMqJtNnPqde7mQDgqYxMhm3S0cKL3XtpsHAnhU5mQfJNJA58PTYSEYBKAGuEPTImPolIIjaNNjYTApJGODmElzYOORpom0OMdJcOqwpupkIYc2yqrAoKNxJ4kj57s6G1CiMjMH+bM5WFoRkYGBnBwgwEh5JiZKo9AD4+ABkjDN8ELJCJNcmrDhba2gXf0QQrmYAFN7QOCunq7AT7KysepHko/LJni4Y6Hxj49UuQYMebNCRenLMVzMFBGu8WJgjgIRcYABSAQWOQTdsIjRsDdIhRLIsIis+8fSugDYDGADg7dFgwAVGV/w8eKI4Eh68Aw5Q6dy6IcaaKDFvCZLojYNGHhZQqdS5YYMBABU1TCuR41s5dvxXZRuTUurWrgRR3pPhgEbXdvowMcQBYq9QtCBAXHEohwUDq3bMMA2DAkXQr165/AQ+Y9gSkYYVHcdIowNbv3wugB6Bo2aSGXYUrEudE59gz6AsDYruo4JMJDg/gMKvOqtUz4NCxB7jgoCESEwpTEWNt3Bbyb9jBhbuYDVYJhgSHU+9uvAJDAQWRX0efTp64riMAWKDezrZDSR8ExI8n/6C+CtJGZqzAy77viIMWACcbeS7UV18DlBnxAQvK4cRbcwYkcFF00k1n4IENoGACEjKgxLRXX87hgwMIwRFY4IUNpNjAV0YU4IF2DjLnlgGfXdBBAtBVeKKBKqqIQnFFsJDZgxCGl+OA9KHYo4oqPCQECQEs15lrAuq4I4ZLNnDAlnEJISRfrTn3G4UmXvhAllpuueV9Q8QA5mM01nhkmUpmqaaaKuiAhwgh9OlnCCkEysOgPLRg6KEtcKDooouW4OijJdyppgR6DgFAARtkqummGyDg6aeghirqqJ5mWtsrqKaq6qpaBAEAOw==',\r\n'img/wiggly.gif':'R0lGODlhFAAUAMZKAAAAAAICAgQEBAUFBQgICAoKCgsLCwwMDA8PDxAQEBERERUVFR0dHSwsLC8vLzIyMjMzMzQ0NDY2Njg4ODk5OTo6Ojs7Ozw8PEREREhISExMTFBQUFFRUVZWVllZWVtbW2FhYWRkZGdnZ29vb3V1dXd3d3l5eXp6en19fYGBgYODg46OjpaWlpycnJ6enp+fn6CgoKGhoaKioqampqqqqq2trbCwsLS0tLa2tr29vb6+vr+/v8TExMbGxsnJyc3Nzc/Pz9XW1tfX19vb29/f3+Dg4OHh4ebm5unp6erq6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAUABQAAAeJgH+Cg4SFhoeIhUEpLYmHSBEGAC+Ohj49BzOVhkIHQH9FR0SbfzQENicPAAw8my4ACA4mKwE4pDIxQn8zAj6khCUKRjsjHSikIgQYCRUNAD+bMAsXLkcsAL+EIBB/STk3RaQZFjMUBAcNpB4DBRo1Hw6kQzE6giEb2YMOJPmCEBIT+qngIKLfoEAAOw==',\r\n'img/zoombox.gif':'R0lGODlhFAAUAOZTAICAgOvz+ury+vn7/eny+ujx+ff6/b6HTcGPWvTs3Pbv5Ony+dSwcL2FTOHJuM2mYvH2+9Gqdu71++LLuefTuvHl2Nm7jOfToMOSW6xlP/L3/ObRr9/Fj/Ln2eXPqdKuhMqfZePNu9e1ffr29NKtd8ORVrmASLd5Us2kcdq7gPfw5dGrg+bRrvD2+93CkdKubcGOWMmbY9KtbPHm2N/Ep+TMrPfv5e/1+9i5i8yhZ+TOrPfx7byEUZdhRs6nY9e2fbZ7Uc2naObRud/Fo/Po2ta1f+zcv+DHk9e3fd3DkcmbYejVo8+pZa5tSPjx7dCoas+oYwAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAAUABQAAAebgFOCg4SFhoeIiYqKCUkvTD5PFkSLRgxIGyoKOiQ5FIkJDB4GNwIBEANDMTOILj8GAQULBAISAygfiDIsLbK0AQEaNBiIUDZRyMnKiA8KUVLQ0dBRiEE1z9LR1Ic4EdjZ0IgdIN/ZACGIQsrJUgDuTogVKwgHDfQNSwApGTuLghMwOFw4oqSHP0EOeIgoUgLIQYRNTJwY8bDiwUAAOw==',\r\n'img/zoomin.gif':'R0lGODlhFAAUAOYAAPTr4uny+vn7/T6DN+jx+dSwcPf6/fbv5L6HTeHJuFOeS1yoUu/1+zV5MPTs3Ony+YvGg+nXpdKuhPn7/t3Ckd7EjebRryprJuTOrNi5i72FTMqfZTJ0LNKubTBxK+jVo97Eo8OSW9KtbPHl2N/Fj/D2+2OyWfLn2ePMmb+LUOXPqde1fffw5d3DkdCoatm7jMGOWHa3bd7Dpuzz+ovHhePNu/P4/ODHky5vKcyhZ2WnXmGwV8+oY2usY9Grg8GPWs2mYsiaYMmbYc6nY/H3/J7RlZ/Sl9/Fo+bRrjN2LubRudGqdsORVvH2++LLuYbFfbyEUffx7eTMrPHm2LmASMqgb/r29JdhRprPkl+tVoLCffPo2rZ7Uffv5de2fezcv+71+/L3/ESLPefTuqxlP82naN/Ep9a1f8mbY82kcdq7gK5tSKbVnZDKiM+pZdKtd+z0+k2WRV6rVOfToLd5Ute3fVqbU2e2XPjx7byDT+ry+uvz+v///wAAAAAAAAAAACH5BAEAAHwALAAAAAAUABQAAAe/gHyCg4SFhoeIiYqJDi0dbkMuL1uLXwV1FiwHGG85Y4wFKgYMentNAkdoU4gUXgZ7BA8BemACaRKIIkglsbN7e2FmIYg8XXuzpXc7CwApiEAHM3qle1lsCgAIiGVSRL8mcjFFPWIDiBlLAgxwC0ZYT20QDYgnGyATNgpxOjR2STg1ECkJUkUGAAADtHBAUSEPHkQjfPxAoKGBhwsfIqghE2WRICcwSMy5IeSKR0EJoKw4w4TLSZRrqNCx8rLmy0AAOw==',\r\n'img/zoomout.gif':'R0lGODlhFAAUAOYAAPTr4u/1+/n7/eny+uzz+tSwcPbv5Ojx+fRFSO71++waI/Ts3O4mLvdUVvpjYvxvbff6/fE1Or6HTeny+ez0+sGPWvjx7c2mYuPMmdKtd9Grg/D2+/Hl2PHm2MORVunXpbyEUc6nY9/Fj9a1f8mbY/H3/OfTuuoRHL+LUObRrvPo2vfw5d3Dkd7DptCoavn7/va2rvjy782kceDHk+LLueHJuNGqdvfv5eDHtvjIv/54dNu/h9i5i8qfZdm7jPH2+7uGUtKubde2fd7EjfSrpN7Eo9KuhM+oY7FyRffx7ebRuejVo8mbYeXPqbyDT8GNU9q7gN/Ep82naPL3/PfAt+zcv7uBTN3CkeTMrM+pZePNu8GOWL2FTMOSW5dhRrNzS/Ln2bmASMqgb/P4/KxlP+bRr9y+pNa0eefToNe1faVcM8iaYNe3fdKtbN/Fo8yhZ+TOrPOgm+ry+uvz+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHQALAAAAAAUABQAAAe9gHSCg4SFhoeIiYqJCyxBWSEuPiqLVQVsZSsGcBlvJowFTRABcnM/Am4kHYhXQhBzBxMDcgkCMkaIbSkbsbNzc1NRXYhHN3OzpXMECQAoiBcGBHLJBBQBABKIUlglvzoPDg0IEQyIPDYCARQPOVQwRHEKiGA9RS9j4eMMCidaiEprxLQAAMDMkzMYhjixgIiDhgoSuACxsmPJByhkkiwSRGOLCDQzmHjZKKgGiDQjPCAhKQiHmjBfYrCcyTIQADs='\r\n,\r\n'img/controls/checkbox.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tLS0szMzMzMzMzMzMzMzMzMzMzMzNLS0u7u7v///////////////////////9DQ0O3t7f///////////////////////+3t7dDQ0P///////////////////////8bGxv39/fv7+/v7+/v7+/v7+/v7++Pj4/39/cbGxv///////////////////////8LCwvn5+ff39/f39/f39/f39+vr65eXl/n5+cLCwv///////////////////////7+/v/b29oyMjOXl5fLy8uXl5YyMjIyMjPb29r+/v////////////////////////7q6uvHx8Xx8fHx8fNDQ0Hx8fHx8fN/f3/Hx8bq6uv///////////////////////7W1te7u7tnZ2Wtra2tra2tra9nZ2ejo6O7u7rW1tf///////////////////////7CwsOvr6+Pj49PT01xcXNPT0+Pj4+Pj4+vr67CwsP///////////////////////7Ozs9TU1Onp6ejo6Ojo6Ojo6Ojo6Onp6dTU1LOzs////////////////////+rq6r+/v52dnZSUlJSUlJSUlJSUlJSUlJSUlJ2dnb29vefn5/////////////////T09Obm5uXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fPz8////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7',\r\n'img/controls/checkbox.png':'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',\r\n'img/controls/close.gif':'R0lGODlhEAAQANUAAMczNfRxdPRzdPNydPNzddgqL+AsNN8sM8cpMOY2PuU2PsUgK+UwOfJVYPRja/NjavNja/Nka8UYJ8YZKMUZJ8YgLPJUYMUTJfE/UvA/UfJIWPFIWNRldN+cqMpdSc5uXspXRspYRslYRtWIfMlQQ9ymoMlHPslHP8hHP8c9OeBhW/WBfcc9OuNST/WAfvSAfuPExP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAZ8wJhwSCwaj0eYZ1QceWBEWKgVYgpHohYIKiyRXCvSp/QhvcIl4ghFEKhMqkHgZCVyWBHIw/FIcZAACg0NFgkASDEIDBsaGgwISBwVGJSUC39FHBOUBRIFGBkUmEIdF6AXHB0cphkXHUMwFwaoQ6sHF1xCsaNCq7mIwMExQQA7',\r\n'img/controls/close2.gif':'R0lGODlhEAAQAPcAAP///////////////+DAv71xcKtGRatFRatHRsB5eebLy/////////////////////////////Lr67dmZbpZWd99f/SQlPOPkvORlNx4e7VTU7xxcfn39/////////////////Ls7K5RUM5oafaKjut2euZoa+RkZ+ZpbO15fPeMkMdiY7RiYvj4+P////////r6+rRpacthYu1zddtNTdI1Nc4rK80pJ84rKtI2N91SUvB5e8FcXLx+fv7+/v///9nJyatERO9tbdI8O8cgHGoMCngMCsIUEHgMCmoMCsghINZCQPJzc6U4N+3t7f///65xcctWVdVAPcMdGMAVEf///9XEw3YNCtXEw////8AWEcQgHNtJR7tQULuVlP///6JVVdtOTMUmIb0YEb0XEOPGxf///9XEw////+PGxL0XEb0ZEcgtJ89NS6Nrav7+/p5OTdpBPLwdFLoZELoYEHMPCtTEw////9XEw3MPCroZEboZEb0gGNREQJ1fXv39/ZRUVM47NrkcEbYaELcaENTEw////+LGxf///9TEw7caELYaEL8dE8Y/PJVnZ/z8/I5ycrQ+OsIdELMcEbMdEf///+HGxLMcEOHHxP///7McEbMcEMkfEag7OZqNjf7+/qmpqaE/PdYnG7UeELAeELAeELAeELAeELAeELAeELAeELceEMowKZJDQrq6uv///9bW1mphYaY5ONEmF7YfEK4fEK0gEa0gEK0gEa4fELgfENUnGac8O3hyceTk5P////b29q6url9WVqlBQMo0LMgmFL4jEboiEL4jEMglFsc4MKhFRGNaWsDAwPr6+v///////+7u7qysrF9cXJdQUKg+Pas9O7o+Oak8O6lAP5BQT2NjY7e3t/Ly8v////////////////T09MjIyIWFhV5eXmNYWHJVVV9XV2BgYI2Njc/Pz/f39/////////////////////////z8/O3t7dHR0bi4uK6urru7u9XV1fHx8f7+/v///////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7',\r\n'img/controls/color.gif':'R0lGODlhEAAQAOZaAPr6+vj4+O/v7+Hh4b29vZiYmOPj4+W6YvPz82nK+uvr6/39/fz8/MLCwvHx8cDAwKWlpWTE9dfX16enp/VkxOXl5cfHx7Ozs2lp+u3t7fppabrlYvppymRk9aysrGLWYvXEZMpp+sr6acT1ZPrKacjIyPv7+/VkZP7+/uViumK65bCwsGJi5be3t+ViYrpi5bq6umTlZOrq6mnqaebm5sRk9fb29uzs7MTExPLy8tjY2NhdsF+24d1aseG2X91aWl/TX7bhX1pa3bZf4V2w2NhdXV1d2NiwXbFa3bBd2N2xWrHdWuFftlqx3bDYXV9f4VrOWt3d3V3LXeFfX+fn5/X19enp6YyMjMrKyv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAAAQABAAAAfWgBJYg4SFhBJaJVmLjI2MJVoWKEcHBwtFLi4LOykpKBZaOAw+JCQmUxoaJkwcHAw4Wg0ASiAgAT8nJwE9FBQADVoPAVXExcZVAQ9aBDZOGxs5OhUVOUkvLzYEWjAIQSIiAgMAAAJDISEIMFotDksjIzdRxDdINTUOLVoXAlb9/v9WBFzQsiKDlA8faBBRoYKGERYsMqzQ4kEGkBkzDPBIkMDAEwwYZHjQMsEKlBgxBjSJEGGAkA4drEzQUkABlZs4c1JRUEALhCtAgwoNCkGL0aNIkxoNBAA7',\r\n'img/controls/date.gif':'R0lGODlhEAAQANU9AO3t7cXFxZOTk5GRkdnZ2U1NTenp6UeEv19fXzZjn6urq6enp4yMjJiYmJycnEKCx7u7u+Li4jRyrBdOijFoq66urlBQUOTk5PLy8rKyskKJ2YqKinp6esDAwMHBwUlJSVhYWLy8vPr6+ra2tsnJyYKCgmxsbKKiorCwsNLS0tbW1mFhYdvb29jY2HNzc+vr66WlpUdHR5mZmUh2uPT09FqW0+fn5+Hh4SJSkaCgoPHx8U+W3+Xl5f///wAAAAAAACH5BAEAAD0ALAAAAAAQABAAAAabwJ5wSCwKNbukcpnUCB+1g+RQq0antYeQMktgErNw9zujCCc43CLNVqcnQgiNYCHQ7vM6DSIM6f6AgX8oQgo8h4iJhyNCGQAAAQUFAZGTjxlCFQYGASQODQ0On5sVhTanHiYdA6wDpwpCCxcXDAgIDLUIGy0qOUIwERE2AgKnxCwiABxCJzfOz88pLysfQiU52NnZMi4xIEbgREEAOw==',\r\n'img/controls/dropdown2.gif':'R0lGODlhEAAQALMPAObm5vLy8urq6uPj4/Hx8e3t7QBgpwBjuuXl5ejo6Ovr66CgoABmzJmZmfz8/P///yH5BAEAAA8ALAAAAAAQABAAAARL8MlJq7106b2c/98SjGMHgguhqubpLU0ct+5S3HfH7PthOAuFTGHi+V6CZLLFOL4SsgTtFwJYrbTTAiFDZFGDcPgb4mhcH4x6XYkAADs=',\r\n'img/controls/edit.gif':'R0lGODlhDQAQAPcMALKysr29vb29vb29vb29vb29vbu7u7i4uLW1tc7Ozvn5+f39/f///729vfr6+vr6+vr6+vr6+vr6+vT09Orq6v///7a2tsnJyfn5+f///729vfr6+vr6+vr6+vr6+vr6+vLy8ubm5v///////7a2ts7Ozv///729vfr6+vr6+vr6+vr6+vr6+vT09Ojo6P///////////7W1tf///729vfr6+vr6+vr6+vr6+vr6+vf39/Dw8Ojo6Obm5urq6ri4uP///729vfr6+vr6+vr6+vr6+vr6+vn5+ff39/T09PLy8vT09Lu7u////729vfr6+ufi1+fi1+fi1+fh1+fh1+fi1+fi1////////////////6CgoPj4+N3Vxt3VxtvUxdrSw9rSw9vUxf///+qadOBfQOBfQP///6CgoPX19fX19fX19fDw8Ozs7Ozs7P///+fgu+BfQOBfQPcoDP///6CgoPDw8N3XzN3XzNfRxtPNwv////vwnP/mAJmZmfcoDPcoDP///6CgoOvr69nTyM/Kv8/Kv/////vxnP/sAP/pAP+ZAMJmKf///////6CgoObm5tTPxMnDuP////vynP/xAP/uAP+cAP+aAP///6CgoP///6CgoODg4M/Kv////86/av/2AP/zAP+eAP+cAP///+Dg4KCgoP///6CgoNvb28C6r////6GMEKGMEP+gAP+eAP///8C6r9vb26CgoP///6CgoNbW1snJyf///1pIDaGMENl1Bv///8nJycnJydbW1qCgoP///7KysqCgoKCgoP///////////////6CgoKCgoKCgoKCgoLKysv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANABAAAAjtAAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnzwICADs=',\r\n'img/controls/file.gif':'R0lGODlhEAAQAPetAP//40SOLfTHjvbDMseUOdWXTkmLJ4a/WOzcQe/Zn/bVav7/4PbWZfXqsvvYfF6VUmuXVs6KPzmICIe3Y2SnNmasOP/bhlCJIP/3/9qPNP/78a7JfFWCLaDMf+WTbvnqjXWUHa7YjOjNio7HeqnVmmCSD//55P//6O3Ahenrqf/y8OvKbejjqfbewtObPonAWkyLFvDbiOzUitfLefHZX2GmSffqpPjbT/zqosyzTsqsPt/GYtWFJvztzPLtz+nKVd6MQ/fpxGusOObXuP/QkNbBQqa6noy3pPC6ZO7ilnudRpS9d0dvMYisZuzakHqLRf/1vdKXPeHKYGCdNfvSdv//3pXCh/rx3//07s+qZP//7u3ZQui8j/vdoe/SMP/57PfbnFqfT8iPOPreV4y8Wf/z4Y+sWHelTvDWK9J/M/PjhOzNN+Psra7JqPzgn+XblnGpUtbIif+4eo+ycmyfUvbnonqnZPf48mGcSvHfff/+++GkR5O2jPLfmvnOZcedJ8qYN/nptU+HMPP/04y9YdmaS9jBWf/mkf//9v/y++7ceP3ILO/514KlWp7Rgu6SP//trW+9NZ3biFmIN//bf/Kucem5PZjIluHlh/XRM//87N7LVefx1vH1wv/rxtSyLJqcSP/40VKZId+TM+3dn//z7pG0PO3bb9yuP57SiPjahPflf9KFM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK0ALAAAAAAQABAAAAjgAFsJHEiw1YOCCAdCwAMjYcEzNUZMMeBQYCM4kg4coXChlSUUhjbtkDIDVCRHfOxMWEJHQhEVWvRg0MRpToUmRsh0UMIkQI5EKTCRwgGA0SAQbQhZKSHwE5YkeYggESDDyRMSLy4JEoiqzBARcYKUqqLBTKoQGyYJ1IHoDoAFJ66weWNKiKgwHAS6+NIDko06XdRQUvBjDJQ9AguZCHTowyoHNBDcGLDI0yOBgEI1cNNHEYMtXtZkQtNplMAsPliASRBD1SkLK6j4aVFAoBwuBHiwygAkgpg/UdJ4qFSxYkAAOw==',\r\n'img/controls/filelink.gif':'R0lGODlhEAAQAOZvAI6OjnFxcURERFBQUGVlZfj4+Kenp93d3dzc3Gtra3BwcENDQ6+vr/z8/JOTk0ZGRtDQ0GBgYNra2oeHh4GBgdTU1GCdNcPDw5jIlr6+vnNzc4e3Y5S9d4a/WNvm19PT04y8WXp6erGxsX6ljLu7u2dnZ/v7/IiIiKfRmZScVpiYmN/rz5mZmZ7RgqCgoKDMf56enmSnNnqnZM/Pz97q1J3biKfKnGWoTXWjeG5ubnx8fHusZ/39/a6urpKSkpWVlbfPsZXCh57SiGhoaN7fxZubm2yfUrKysr+/v2CQE2t/Z3GpUvHx8W+9Naa6nnudRonAWlmBQcXVs47HetnZ2dvb25O2jM3dxX2YcYyMjMLCwoy9Yfr6+nWgUfr7+5+fn1CDN6HBk67YjMHBwZaWllFRTd/f3/f391ydNKrDkejo6K7JfIy3pHl5eUtLS////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAG8ALAAAAAAQABAAAAepgG+Cg4QeOzSEiYNXN1MWYYqEUks1HWwxXZFvRE0tVjIbHEZomitpTiAvT1g2moJAW0FJg2ckAF9ZZkwALihQGGA8b1wwDmoHWj5FVQdCYmtRXm9IOlQnbgQOIQRlKTgjSiZvABMVBQ8ZMxc9DwUVEwCCBgEQFAsCAwMCCxQQAQaCEJT4IYIBiwBtVDA4QmYIAkENJERIoCDHmA8aFCSIIKGBq48gQ2oKBAA7',\r\n'img/controls/group.gif':'R0lGODlhEAAQANUmAHOj41xcXCUlJVJSUrjR8jAwMDw8PHd3d0dHR25ubpu+64yz55/A7WZmZpa76hsbG3R0dJG26oWv5xEREUFBQZe66qXE73el46fF7YCr5Z6/66/L73up5bPN8KLC7Zq964Su5rbP8RQUFKvH7wkJCaLD7v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZNQJNwSCwaj8gkscRQOCILSYZzAVgBwhJhG+psRhiP5lPBmiyltLr5jIKU8LgQkmgEBghDQfCYkORHB4J0dnh6AoBGd3l7DyIUiZGSRUEAOw==',\r\n'img/controls/hidden.gif':'R0lGODlhEAAQAMQRAOvr6/Ly8sTExLu7u7S0tOjo6OLi4uzs7KCgoIqKisjIyN7e3vz8/Onp6ePj4/Dw8Pf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABEALAAAAAAQABAAAAVCYCSOZGmeaKqmQgIkLvzGroAseK7rSOH8wGCwQGgYj0gkYfBoOp/PwQFCrVqtBwFjy+12BYaAQiEmj8tiw2rNbrdDADs=',\r\n'img/controls/html.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHUSURBVDjLxZM7a1RhEIafc3J2z6qJkIuCKChItBNSBQ0iIlZiK4gWItj6HwRbC7FRf4CVnSCIkH9gJVjYiCDximCyZ7/zfXOz2A0I2qVwmmFg3rm870wVEezFavZoey7Q3Hv+/Z87qDsiTlZFBJIGKStZlFSCTpyUlAZgfXXfH9BAPTCberVANBB3RAJRR8wp6jzd/DotALA9UcyZgZxis2QNijpZjSJBVqeIszTfkMY65cAjuHxmgSzGlbUFrp1d5ObGErcuLLNxep5hU3H93AqjYcXti4cZZ2OSDU9CnVURddqmIovTDmoev/5GVcGDF585tjzg1JGWo0tDDgxrThxq6XojieOd0nRZ6dVpBxU3zi/T1BVdViKCcTbcYX11ngB6cca9MSlGlprojHqcglycVJyHL79Q1Jn0TgBdb1gEbz9OeL81IYsRAakYvQSeC/WvVOiLE8GsM4xnvsuGe/Do1RY/dpRenIP753hyZxURJ3JQXbr/Lq6uLfLpZ6aIk9XJssv8VK5dNcQcmcl7fKVl89kHmu0dJRVjYTRHGVSMpELaQLVCtEY8EAvMHHUwn067+0LVybtvok9KSODZiaKEOJENihPm01gD3P+62Oq/f+Nv2d9y2D8jLUEAAAAASUVORK5CYII=',\r\n'img/controls/htmleditor.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKbSURBVBgZBcFNiFVlGADg5/vOuffOdcb5cbKcjUn5V7poFJEiKMKybDYFgdSmKAiiokW1aNHSXWQQuGwR2KJFq2hTkFqUEbZRMzQIJS1nbPxjnHvvOd/b86SI8OSHx1/uT/ZeyslujCGBhEhE0ZTy5/Vr8V26ufzeiSMLQ4AUEQ4c+vHE52/tfiDnNB1UAoAICIu3R47+et0/FwcrZ0+fW/fDkYUB1JCrtK1bV9NnrqpySiSi0EbRNOHOqPX4lrX2bq2dLItromxffuzNr2eOffrsIENKaSIiqm6VdTJ1ospUiZTIEoq5ya6FPXM2be7168nxz6De+c7vhx+a39h/48tF8zN9nYqfrtyx956+4aj49swVMxPTtsyuc+9EpdepbXp41rGf/3oBL+ZmEKfunqiNBfv3TDl+acXqMDyxa8rlxaEUvH5gvQvXkpMXG9+fX9HrVFKdG8iKX26sFM/vGFen7PbSsq29WpWT01eW7Ns2Z02v0utWxrqVsW5HyKQM6mht7lX8duGOj7+5ZPv96y3913r/i8sU9j86Y9QGKUttEjkURAB1jMq4YClluWV6NUlTterSooN7N8opqasgEkFI2kJbgBxDvWiTs+evOvTKg/qdZDgqbq0Uj+yaBEmSIqlzUuVkrJO0TYC6jGKuSnSa0O9mf1weuNHe9PTWDUqEErSFQAki0amyZtiAOrVp6tz5qw6/ep8miqlOdnG59cy+WSWAKlOhkxMoEUaDAvKFr3Z+MBhdX51eW4PXDm7wyds7AAAAQJQwWm1AhmZQSlNKAAAAAADUdS5NWxqoYbTa/jvere6SRuMRkQUFMNWvQQT9TpaS0qnSrbYpf0MNKcVHT717/LmU0nyINQCCQAggwGop5VSdHYX/AYn4JwmEykruAAAAAElFTkSuQmCC',\r\n'img/controls/img.gif':'R0lGODlhEAAQAPevAFhhcv7+//n8/8bJzmNse4qQnKXR/f+1WuPEgpOCrNHo/bS3v5Gwb47Hevj4+JfH9v/mgMHg/5PE9qDL9nyoaPPz9GGmSbba/6nQ9nyn2tHb5n2VyGCQE4y9YbeDcLHF8fOMN/rnhuyDNWWeToqBtqi/77HY/6apPGmYQeCRXvdtNe3KfOTAfv+feIy3pJ7SiJacxp2t2VydNOns8Jqo1qTN9tuQV52MqJek0o99pZeeyZOWwaaGlGRtfHyvPm+9Ncg7HK7YjLXPn5mhzKrU/9Ho/7lgMYe3Y9Xf6O7w8sKclZpbMqyXrG98rtmuX3Wl3rCzdeTp7n6vkNehf/+HVouRtoa/WIGcz4Sj1qW97nmmZJCBr5WZxPb29pzJ9qvB8N/m7FZwUoy8Wf+WSXqPwnqnZHaIu2xpuJG9g53biLI1E5O2jOaZVMXi/4ir3oOi1Zim0280KPbUeupZKqqQm3udRpeiSLWXk1mBQbc6MqBiLGyfUrOgTPr6+qa6noisZpS9d6DMf1hBRKXS/5XCh+XGgq/D8HGpUtvi6q7JqF1+TYuOuHOCtYnAWp7Rgtm6hszm/5iSwrvd/2SnNve+ZWafaf93OZjIlv/dma7S9tVCH67JfM/MZbd9U3So5sGQfanVmrG1vWCdNdOfdGNDLlCDN/+PRv91N7qIeqN7PH+lcK+zu1dgcYep3P///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAj3AF+1GkjQDZZWqkYIecVQoKuHDwMI0GKhgSgKDVtBdCWRwaE0VlxMQsGwVZ+IAqD8cLSmzBFAe2QIdNBCxSlTTnz88SMmUB1FaAR2oWLE0pgDmE4k6kCIQ6iSFfLEUQNE05xUoBpdKrWqZJIUS/SIAEGJz4sgm/B0ffVmxpROpGywkcPJTiUpYdZeiaIElSAPowqt+JThA6u1G8AwyXGGB4IQEO48MXSYIRlEkUhsSUDnEYsbnr5UfmUGiYJMGGpM8PJAgoESoxlpKAKpTQRJF0wQGZQFwNomMWjAwTFEBwwuO6os6rGA4YACBACwmk4dAIECA14FBAA7',\r\n'img/controls/input.gif':'R0lGODlhEAAQAMQSAL6+vpycnHNzc4KCgsPDw93d3UxMTJiYmLGxscHBwba2ts7OzsXFxcnJyampqdvb2+zs7AAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAAQABAAAAU/oCSOZGmeaKqqzOG8cIw8IgMYggDtPPTQEpsiQujxfjUAJGI8Am2DSKDpexIGgWkTKVkkGuCwmFFYmc/otDoEADs=',\r\n'img/controls/jsdraw.gif':'R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==',\r\n'img/controls/movebottom3.gif':'R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFGBwoUKDAxwmhBjRIcWKCy9iRKhxI8OOEztiFCnwI0mQEkMeTMnxpMuCAQEAOw==',\r\n'img/controls/movedown3.gif':'R0lGODlhEAAQAJEAAAAAAP///xUFp////yH5BAEAAAMALAAAAAAQABAAAAIcnI+py50CoxRqymUjy43360yOoY1DaVLmyrZDAQA7',\r\n'img/controls/movetop3.gif':'R0lGODlhEAAQAPcDAAAAAP///x8EtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAg4AAcIHEiw4EABCBMqFFBwoUODECNKnCiQIcWKCC8OSHhxIUWPEh1ahCgyosiMBk+OPKhypUaBAQEAOw==',\r\n'img/controls/moveup3.gif':'R0lGODlhEAAQAJEAAAAAAP///yYIsf///yH5BAEAAAMALAAAAAAQABAAAAIdnI+py+0j3hFUwvqozjq2vjEgpoxhYpJTqlruixQAOw==',\r\n'img/controls/multiline.gif':'R0lGODlhEAAQALMPAHd3d1JSUlxcXEdHRzAwMCUlJTw8PGZmZnR0dBsbG25ubhQUFBEREQkJCUFBQf///yH5BAEAAA8ALAAAAAAQABAAAAQk8MlJq704680p+IhyCMFgEEV3hWN5FgnTqBZposni0Hzv/7wIADs=',\r\n'img/controls/note.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGGSURBVDjLxZO/alRBFMZ/c6MmomKhBLv4AIJiYekjCFopKSzyCnkGW99BbMTOQhsrBcFKsLCJhRYBNYYsWXNn5s6Z81nMGu+626XwFDOHge/PmfkmSOIk1XHCOvWn0ZdXsulPpAFZQbUgG5BlVDOURLWELEJJXLz3JMwTVOP0tfsLChIEmC2A4OD5g0UHebLLWQl5bAcBJAcC4i9D6FZRiUtGMMOHb9j0PXhGGtruA3hCnpBHzly+i5d+CUHNgCFPoDIDjcEJeQ8yNCxxYL/2m+U55Yh7mpFE8NhE7GiRwGsi7bzF8meoA8io6ZC1jfWm7AnVCPLld1DjPna4y/kbm4Djw1emH56h2oN6VFNzIKOOCI6DFCTKj48cvN6m9jtQC64yAjcXrjrnoBu/94VbDymTPSZvHs/A6RgsT0gZqC1M/46AJcJKx7mbW8RPL5m+e8HKpeusXbmNI1AFDHBkmZHzFpO9p3fkJSNLqEQsfgc6uhCQJRgy7qlF2ypXHynMEfy33/gbubc6XKsT2+MAAAAASUVORK5CYII=',\r\n'img/controls/number.gif':'R0lGODlhEAAQANUgAODg4Li4uPX19Xt7e97e3oODg5OTk4uLi/f39+/v7+zs7MLCwn9/f+Hh4ZaWloeHh66urujo6PHx8Y+Pj/Dw8Pz8/Onp6dfX1/Ly8tzc3Pv7++Xl5dPT03d3d8zMzJmZmf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACAALAAAAAAQABAAAAZxQJBwSCwaj8jkcPFpOp/PhUODECA02Gy24jAIJBQJZkwmCwyThMXT8Vje67YlMTkoNh38Zq/PKw4PEQAdg4OEbIQRDwUbGR2OGZGSjxsFDA0XAR0BF52ZmxcNDAMEHKanqKYEAxAdrq+wsBBKtLW2QkEAOw==',\r\n'img/controls/plaintext.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABjSURBVCjPY/zPgB8wMVCqgAVElP//x/AHDH+D4S8w/sWwl5GBgfE/MSYU/Ifphej8xbCLEaaAOBNS/yPbjIC3iHZD5P9faHqvk+gGbzQTYD76TLQbbP//hOqE6f5AvBsIRhYAysRMHy5Vf6kAAAAASUVORK5CYII=',\r\n'img/controls/plate.gif':'R0lGODlhEAAQAOZ2AKGamtDQ0Kehoc/OztPT08zLy6+rq5qSks/Pz8rKyre0tJyUlKmkpKynp4d8fMTCwpWMjMXDw6yoqK2oqJ6Wlp+YmJ2VlcjIyLSwsIN4eLy6uoN2drWysqSensbFxaSdnYh9fZ2WlqumpoF1dZaOjsrJyc3MzbOwsIl+frOuroV6eo+EhKKbm4uAgNDR0b67u8vLy5uUlL68vJCHh8/P0LKursTBwbm2tq2pqcXExKijo8G/v7q2trq3t4yCgqiiotDQz39zc727u9HR0r+9vcfGxsnJyaymppKIiH5ycrWxsZeOjoF0dKqkpIuBgYV5ecbExM3MzIZ6eqGbm6OdnczMy83NzcPCwpqTk6+srKWfn7m3t5uTk87NzcjHx5+Xl6+qqpSKip6Xl5OKiqGZmYR4eNLR0dHQ0c7Ozr26uo2DgpmSksPBwcHAwLKtraqlpaKcnLCrq5iQkMzMzKulpcLBwf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAQABAAAAfGgHaCg4SFhoeFCSY0MAFRXQgFAQUDA1UEAysQdBkGPjEdUgYgABUOHgEWUxhjClgCYBAKSw0MJF4ubxMyAG0CKVtwdR8KHB1zZigzWklNDiQVTAwZC2sjVwEnHDkMF1k9OyJGEkQaOAhAamE6Gw1OByxPDQ5fFioRCB8/PAdCABNKFrwQUyMOhQRDqAi4cUADAAkYFqSh4MZAiBJnWiAREOQICDlkRogoE4LLhggEPBSxwmYAlAsFbKB5kKDEAwKIcurcqTMQADs=',\r\n'img/controls/plates.gif':'R0lGODlhEAAQANU0AJyUlIF1dYd8fIN2dn9zc5+YmIF0dH5ycpaOjoN4eKqkpJmSkp6WlqyoqLy6uqGamp2Wlqynp6umprq3t4h9fb67u5uTk7KtrZ6Xl8G/v5iQkL26usnJycjIyIuBgb+9vaGZmbSwsKymprCrq4V5ea+srK2oqK+rq6Kbm52VlbWxsa2pqYV6erKurp+Xl4R4eL27u6mkpJqSkv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADQALAAAAAAQABAAAAZxQJpwSCwaj8ikUnlQCBAFQywBWASKsZl2yy0OZs1ndFq9CmWzLHc9RH/DUCnVSiPM0LFOaZKRcBofDittMwMRHjIoJBECLiksQ3YyMA8mKgAVGC0jDEUyDg8NIQAbDBcnEEUEIhQaIAESLxAWA0u2SUEAOw==',\r\n'img/controls/radio.gif':'R0lGODlhEAAQANUjANfX1/Ly8nJycuTk5MnJyenp6eDg4OLi4r+/v9bW1s/Pz/b29qKiorKysoaGhuvr67u7u+7u7vj4+Ojo6Lm5uby8vJycnMTExKOjo5SUlIKCgu3t7Y+Pj8vLy9TU1Nra2vv7++Pj48zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAQABAAAAZmwJFwSCwaj8gk8pEQiRKPpEFUAIEKIsOxQFhYrQtCwagISQAYDEASUhgRgUDG4cjEEUZIZKMRCDQbERBGFwATFX4VEwAXRgcNAwMhIZENB0cEDB2THQwESB8UFhwcFhQeSqmqq0ZBADs=',\r\n'img/controls/radiobutton.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7u7tjY2M7Ozs7OztjY2O7u7v///////////////////////////////////+Li4s3Nzerq6vv7+/v7++rq6s3NzeLi4v///////////////////////////+zs7MrKyvb29vv7+/v7+/v7+/v7+/b29srKyuzs7P///////////////////////9HR0eTk5Pj4+NfX16Ojo6Ojo9fX1/j4+OTk5NHR0f///////////////////////8HBwfLy8vLy8pSUlIaGhoaGhpSUlPLy8vLy8sHBwf///////////////////////729ve7u7u3t7YKCgnJycnJycoKCgu3t7e7u7r29vf///////////////////////8bGxtjY2Ojo6Ly8vHJycnJycry8vOjo6NjY2MbGxv///////////////////////+Xl5bOzs+Tk5OTk5OPj4+Pj4+Tk5OTk5LOzs+Xl5f///////////////////////////8vLy6Ojo8vLy+Pj4+Pj48vLy6Ojo8vLy/////////////////////////////r6+t3d3bu7u56enpGRkZGRkZ6enru7u9fX1/X19f////////////////////////z8/O7u7uXl5eXl5eXl5eXl5eXl5eXl5evr6/r6+v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7',\r\n'img/controls/richtext.gif':'R0lGODlhEAAQAPeMAHeAicba6Mzd6rXO377T4oqSmrrG0v+iKKi2xrzH08jZ57bCztzm7//hpomiuYqjunGIoo2hteTr8oqgtoqRmMvc6e7z+NXh7J+4zLrH06F5SYSds6W3x2mDnN2tbKK0xYearbbBzcqXWZSPh+bq7cSUViVEY5eam0ZigN7p887d6Y2UnNLj7kZfeLGHTs3c6OvSod/r87XAzLzI1LjE0Hd0cHiBi++9c8bKyM7e7Onv9cLX5ufu9tyq1LWMVbrAxNbl79SsyYiesvT09OPi4RM1VI6lut7n8KF7Tb3J1WmBnPn8/tXi7MbP2bTN373S4rvH0/D1+dbi7cSOyOTs85yQgdHg7Nuradzp8fH6/v+iIsna6NXk72qFovP4/LK0t9nm8Obl5XR+ilRvi5uywvX5/IGZsi9ObLjQ4Y54V//jqYZ3f93n8MXa6HKKo7adfjtXdtnl7+Xw+eHr8+Hg3/+gJoaft8KptY2lutjY2I+mvP/ip4ecsP/hpezq55yZlfj7/v+hJ6N7TOfv9+zy+Nusauv0+7Srt3aCjuLi4IuSmsfb6f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIwALAAAAAAQABAAAAjXABkJHEiwICMSC0IsoGHAQAYoSWYkSNBE4IoYARZp1BigY4A2CAQqYoHBwYMHDuygGcDSyQeRQDYYcTNGT4cdBHI+ISMSjAIFE1Dk2CKgaIVFPYIwUoTlhQohcLhYUQIBQpcfh6bcUTTnghQ+Z1IwiRMBTyEcJ9aEKcCDwREQJgYxYGPGRQMtNQQWICRBR4siMqjI8bCnTgkOIstYiAJoiRdDV/oEEpElJKMvNgBoBiDGR4MDGhABoGCQ0ZA3ag4goVN6oB8YNwQlaj1wRJoqRGgP/JOHdkAAOw==',\r\n'img/controls/select.gif':'R0lGODlhEAAQANUhAJWVlaurqyYfQjUqNubMp/f//z0lJ2eGpvP5/P//89PKuvr15J1/Z//77LzE4KnM5I643MScdF6Gq////F6IrZRpTTMxLq/V5rW/3CwvMfn//511XMq3rh4kR9/Dnqqqqv///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAAQABAAAAZVwJBwSCwaj8WPcslcAoSgqHQqDUCpWNDnCppwMFOFQ8sFRQSPqGcAIYemi0rnQjBQEG5qY2PJSApRW29UCQwHGlKCWViKi1ONjlFWIU2VSk9ImZpFQQA7',\r\n'img/controls/sequence.gif':'R0lGODlhEAAQANUmALu7u8TExK6urrW1tcPDw7Kysqmpqb29vcfHx9LS0ri4uNnZ2ZmZmZycnM/Pz8DAwM3NzZeXl56ent3d3aKiopiYmNTU1Kurq7CwsNbW1svLy6enp8bGxtvb26SkpNHR0aOjo6qqqt/f362trbGxscrKyv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAZVQJNwSCwaj8ikUnkhFRSAwyMQQJSuw5DDkbBkFovORDQpDQ0jQWEQfRCq2KV8GWE0JBSP4aJmH4YRBAQcVhoQEB9dAEMVFXZ4IBsGAhgDCnOYmZpIQQA7',\r\n'img/controls/set.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoJJREFUeNqkU01oE1EQnk02iTFQE7QihUKRkKTF1iU9+FdQCoWYgAcPegkIeiiIWiHgwUvpQXs1Ggo99OYlFwUhWAhYhZJWUmhMxJbYYk1LFDcmJraSv911vjQbevPgg9kZ5vu+eW9n3hM0TaP/WSI+gUCADAYDmUwmEgSBUNRoNJ5jaKjNSyuKsqRjjUaDVFWlWCy2X0BfDJ5nd5r9KxZI0Wh0BuRgMHibcznGrrD/wD6hawwHxBdcLte12dnZGYfDcYOFhkJBpnL5F3Y0IAcMHHB1nYAj+Xw+xHeZ8FSWf1BPTw+trqY2JElyAkilUhsej8dZKhWpu/s4jY+P3+P0s/n5+f0TVCoVqlarL0Oh0KTZbCZZlmlgoN+pqgrBEO/u/iZg4IALTecX+BQX6/X69Xw+v8e7bYqiSMvLy+t+f2AGhhg5YOCAC43+7+T1eh+srCS1hYU32tJSQkun09rg4NA0TwLTIMTIAQMHXGigbU2hVqsZq9UaNZsKKYrKoxRZKDYwKizEyAEDB1xoOk3kzo6xP4PExMT9WyMjl/q2t7+npqYevkBucvLx1d7eE9Li4tutcPjJXEsoCO+z2WxcP0GcC3zmDt8ZHj7bVyyWyO32SLHYOwl4ufyTdna+ELCuriN2nlSEC2x1mshdRZGbkchcSJaLfCOtFI+//prLbRIMMXLAwAEXmk4T+ZLALo+Ojj1PJtc1t7s/bLfbHyUSGQ2GGDlg4IALTesd6Y8JY7JarX6bzTZtsVhOwq+tfdMymZx2MAcOuPrmrSYKaDHRUbZjbIcA8sM6xQ9sADFP4xNf54/t21tnk9kKrG3qBdCLw20T//GCFbY9tj+sVf8KMAACOoVxz9PPRwAAAABJRU5ErkJggg==',\r\n'img/controls/sketches.gif':'R0lGODlhEAAQANUrAPp7VIqqAP94R4jG9YmtAIuqAP2mik6p8f/bxE2p8fKzfHS26YitAFul5+jryKe+OqzAPPymi9Px/9zko9DbgZCxD5jb/++Uc/17U/x7Uk6p8E6o8P97UFul446rALHk/8Xp/5PC7v7NsY+qAF2k5V2k4d3kt+6Uc5KyEfXFmXq25v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAQABAAAAZIwJVwSCwaj8ikcslsGh+BAmQVKnUGKwMAEBEGTI7RigSSbFYZEQLgnVA8q8bHklhxUgqMsMIgoFYqGgcLKycCAhdOiouMjYxBADs=',\r\n'img/controls/table.gif':'R0lGODlhEAAQAPcAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgICAgP///////4CAgICAgP///////4CAgICAgICAgP///////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgP///////////4CAgP///////////////4CAgP///////////4CAgP///////4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAAAALAAAAAAQABAAAAj+AAEEEDCAQAEDBxAkULCAQQMHDyBEkDCBQgULFzBk0LCBQwcPH0CEEDGCRAkTJ1CkULGCRQsXL2DEkDGDRg0bN3Dk0LGDRw8fP4AEETKESBEjR5AkUbKESRMnT6BEkTKFShUrV7Bk0bKFSxcvX8CEETOGTBkzZ9CkUbOGTRs3b+DEkTOHTh07d/Dk0bOHTx8/fwAFEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFEjWKVClTp1ClUrWKVStXr2DFkjWLVi1bt3Dl0rWLVy9fv4AFEzaMWDFjx5AlU7aMWTNnz6BFkzaNWjVr17Bl07aNWzdv38AlhRM3jlw5c+fQpVO3jl07d+/gxZM3j149e/fw5dO3j18/f/8EBAA7',\r\n'img/controls/table2.gif':'R0lGODlhEAAQAMQeAJ2dncLCwqKiov7+/b+/v729vaenp/Ly7XC6DbS0tPn59qysrGqzCfv7+bi4uJPMRLKysq6uru/v79/f3/T09PDw65qamsPwc3W/EKioqJfbKWWsBrq6uvz8/P///wAAACH5BAEAAB4ALAAAAAAQABAAAAV1oCeOZCk+WKqu6SMiVyzPMSIyWq7vOSNuwKBQKAoMOp0AEqnsDAKiwrFDWFKRg4LIwel6v12HCKKQSBJmM1qigIgWDQolIpfTKY2FyJDp+/99BiICBxMTAoaGiBMHAiIAFZGQkRWTlSIcFpqbnJocJqChoiMhADs=',\r\n'img/controls/tabtext.png':'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVDjLY/j//z8DJZiBKgbkzH9cMHXX6wcgmiwDQJq3nv/4H0SD+OXl5dlA/L+kpOR/QUHB/+zs7P+pqan/ExIS/kdGRv4PDg7+T10XDHwgpsx8VNC56eWDkJ675Hmhbf3zB0uPvP1fuvQpOBDj4uKyIyIi/gcGBv738vL67+zs/N/Gxua/iYnJf11d3f9qamqogRjQcaugZPHjB66V14ZqINrmXyqIn3bvgXXeJfK8ANLcv+3lfxAN4hsZGWVra2v/V1FR+S8nJ/dfXFz8v5CQ0H8eHp7/7Ozs/5mZmVEDEWQzRS6gBAMAYBDQP57x26IAAAAASUVORK5CYII=',\r\n'img/controls/text.gif':'R0lGODlhEAAQAJECAHt7ewAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIdlI+py60Bo3wHGhCosdtxt2VgOJLlB6KMpJbuqxQAOw=='\r\n,\r\n'img/ext/avi.gif':'R0lGODlhEAAQAPfTAIep3K+zu1dgcf///1hhcszV/0Sm9+tQPn+HtO31/vb29i42PLHG8Ddt9uz0/vf6/19zf/H4/rXI8uvz/YuOuPP4/h0jK+fx/W53h1fPVO72/riWOKW97jRJa6i/76/D8NDk/KWz2qvB8LmYHOTq8vb396Wrti42TExYa9PV2C89QDZEV7zAx4F5c3VpKjVHXbrM89Pm/OXn6tTm/LrJ9D5LXkKT4KvB5/X6/lx+xamt//T5/vXy9ik1RKqz9Xl3LFZjpbjU9Ty3PlVfcFmV2k15xnuElFB3j5Sgq83b8G18rrLA6dnc4P2kl11lds3Z6mV7gDNGkLzQ6MyuFtvb3OyLfzFg5n6Is9fe9BwncJCY6ntGSYtjZmeR/02feNP6/4Sj1lbQWKC29XmMo7vY92Nse4Hrgfj7/16e/1U0RFCM/7fJ8uf5/x0kMdzFg/v9//D2/tC6cQENZLG1vXmdx7jH2c3i+INrdIZocFhmjebx/XqCjWHFYdDS2Jur/0FWZbu/yLm9wvnUz8Xd+rK1upW86LHG9vRMM4qQnNjo/KHF8v2aipG342Jzi11lb0Bjptu7G+nHNJfHun2b8pukHpOapvv+/2/ddejUHoB2gPb//+zACne06jCkM+3//9bh9hggKDpt8/H3/vf7//b7/3WQu+Lv/fi0qT9KZ8vh/Ke42fh6a9rq/Sk6hLfR8rS3v5yp4Je75FFsirzH4YCbzurq6vY+J7HF8eny/mRtfJX6kpaz/ygwOoeDioWFj2SCeF2Ibuzz/aSkL2dwgUKcR4mPtf///c2ouNjm/zVn5sLU9///+r3N84ir3jhfv6fI6/54ZAEQa7Gztf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANMALAAAAAAQABAAAAj/AKdNA0CwYDMwAEgIXDhwgKUzOCJoCAaAUyMTTBYCeDNqh6gEEy4YMGDDCCAZAgE8qADHAS49pgoU8HGlUp9pCkr5utMC2C8kT1glmkEDA4sShPBUaXJKlxk+UOrEAMHMyZwUXKAtEsQDi6RLGSBISQVDQIBeB1Z9cWWHDTItYYiNGbTG7BZbx8jkKELrhg4vQv4EkWA2zaElDKLIiQbEz5FOKp7dMtuhgaEkrbIoCbErE6UFsT6YHWZl0jJVs0h5ErNhxApGIsxKc6ZGmbEBmj7FgeRCViEPZmvtIYKmCyw3kTAJe0FHEQcCAaZRQfUoWahNU36cyIOgGIVcrwQGEXLEywKoNj1qoBhCoAyiaQEBADs=',\r\n'img/ext/bmp.gif':'R0lGODlhEAAQAPesAHV+jMTIztTX3dG9PVxmdv/ozaKosuvs7+ns72NqeZhweOZ3YFpmd/fPFGVqe5CXo8/R12x1hdbb37q4vuHi42hygNrc4N7f4pGXpF9unmhte1Rrn/h3K9mqUbGbVfP09vLz9VebXpQ5P7S5wZLAxNV3MKe/y8C1q/Hw8bvBx+LIv2x7jryODp6v0Jqgafj4+NDT2KOpsomVwNvg5picyE5wW52EL7G2v3iMnvHBB87Nz8fDyMm9S7uyitqmAVaU33qBJIyMkbOjnYSEkO3u8nV4glCWU+qsgH56homPp/CvmNTd393d6FJcbvXOp53CydPX4fDv8OCOVGOLP7OcGbPFz2Fqe1+jbOfo6+bo64W0wtTX3HR8ieXn6Yirlfr6+tfY3OLk5/1wIlyX3putuny4qs7Q06DHqM51N2JrfJKGF6utdrCyaby/x5MuEe99Q5qh1vxdG3Fue5GVoN5eO/vIWqqDjOZ9UIqPnb7G2/b3+I93juFwRpnB55G84mdfgHGq5I18O3l2gqKHJ9q3h87N0XV9jP7YrmN9179SQpY/I9Z1L+jp65iboYyYodDV2kq7OvJqKICIldnNykqIklqfar/rx5uvzvlPILm7v1uK0K15Yp+muJvQpdTb4LFKFre5vyJnBuzr7eQvDE+UVeXn68Cda4iQm8egncOeq6Slr8O8tf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKwALAAAAAAQABAAAAjeAFkdWlSAlcGDCA+i+VQiiI4oL74QkWEBC8JNbhQVWVWHAiMmNDK06YJwzx8NJ5xkMgMFzgYMMBD2+ZGgR4dGoFSkcoAHAsJLY7gMYOFISJxEclRdQNgCUZIGg/wcwSRC0ARRCJ9QqpHDBqA7oxQg2YECoSVIoXwE0kRngaQhhRIu6XSFxxoTb5QQmAMmoYQzpKiwISRmUpMYYRJ6ImFEjQspfMhYGXEg4QwtIYB44GAHB4AAIBIiqFJpiqlInBg8EKAnIatHXsrkQbUiwo1SrlllSXGqQhpDBrZ8QBgQADs=',\r\n'img/ext/c.gif':'R0lGODlhEAAQAOZgAP///2yUP6Gx0IujR99XMv/YS99qWNyRN929LYG7SOlrN4WavPWBRTx0udtnVutvOEN9v/N8P9M/LoulxXmCot9XMd1UMd5UMfnKQ/WZbF6c1Fud1aW/XN5WMYezRpfKZvu/E71nWL5VSXimQmyUStqahrW/rf7BXdRgSuPCLv/CD6PDVv/RD5LHWFCPzGOQu7fLVO3NoehpNtFOMsuRRfOARZq8TJ69TNRALVqb0+tuOOhoNsTMdvKbcrKqfcB/MvGrRlt1N7HNVP7EWLnLUFmZ0/LEGqnCY//SD6CitNM/Lfq/EISdvtJPMv/LSP/ZT/N9Qv/ifv/kh/vEpECRz/Peu3aFptRALv/JQIq34XGUs9VALk1kWY+jYPSphfu+E////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGAALAAAAAAQABAAAAeZgGCCg4SFhoeIiYY8UVJVAABeGSUChRwwLAUYMT0ROyFFlYJHLURIBU9AETIWIlQalV0jHj5GBSdQChcSDi8uEAtBJCaQQzUKBLyQWg0BXA1ZAFMMOhVKMzSQNgEBCxAbSQwPBFtNByBOKwkDAWBMOVbjOCg/XyopHzcDgxMUHVcGDoDBsgSBkH2EJhgIOAgBggSKIkqcWCgQADs=',\r\n'img/ext/cab.gif':'R0lGODlhEAAQAPfQANnh8Ovs7uDj59/h5ODi5YigzwF84t/g47Ou2QGV/FdhcwGZ/tnc4JKo09nd4bCz3nJ6ipSs2LDN8HuNndLb7YKPnpakzgST+EtvtwGX/QFly6/P9Kq52eDj5n2g0eTn6QFy2OXn6mOFv6a0zzh5zTd1yz9NbsXi+Yy24pmms+Xr9cjT6RGb+3F5iRMueguc/+Po9KCz5yZJhlm8/6Gi2QF53iVFgePl6AWM8QFav5ObtpCn0ySn/zd5zUm2/wGL8QGF7AGI73N7i93k8QGQ9hKf/3WYz9zf4qCz2XKS33N6io+ey6K02q211oKbzViM7MbZ9cbf9ml2iNPc7TpisC1lunaAkEJTnOry+7XE4qm63JTA7Oru9+/w8Wy7+ixcpoOo28HP7gkYNzFKep2w2LzJ5GJvglFbbaGrtiVAfAFv1I6l0gOZ/46k0iY7dQGN9HuImQFu0+Hj5h6j/azN75S65dDa7Dh71Xyg1ae43G6PyvH0+snh93eKmhI3cRYxfXJ5iAFqz55zWrC4wbugnKOy45Ov7eLl6AGB57vT8TRTupuv16+cdHiHmAGS+Z2p0Kl8SsPa8qDE6htAgjh97p/K8d/h48PQ59rLiStEs87H5XOs5Less67c/NvV6jFbnuTq9Cg9cQcwrUdstSdNi7PC4Qw9nXyQoNXX3Hqs3aa327nY9LK03kGy/y2q/ziv/3GV1H6Xy6a42zBjrXiEzaWw0z2A8FljdOzu73iImQF33JumrjhIb2aGu7nH45q/5qCo3MvW6ubn6sbS6AGP9f///2CO6y1CkBuj/9be74WPn9rd4XiMnW6W6UuH7rvR7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANAALAAAAAAQABAAAAj/AKElMVQImCdNCB7QYBUjDLSH0JrNaDWn04lVdCTV2VQlRYiHxny4YsFHRbIVvrSAIXXq0MMnr5BdiDQEEyNITPDIYCbgoTMeL4g92wKrwJpFRmz06QnNVpEFOCRggRKhwA49aXJ1eEiJTQIvxaIk2tBrkp8rjQg8vJOBiAEPKFL9qjSCQxMrAx6ScPRDl5g9oKYMy5KnFoQDD3u8AQJiDBcAhDgJQvJISV5oJYIgUoMBBoVdOpw0sADI0kMRNQwEGgUgWBlZZNosaYEY2odZcTRQsXOplKpYmY4JUQsN17IvOUzRUiTKRSgTt5QJgxiAwac/bnidUWCmwiA5XSBCDQvgYIIUOGhQHbkhPiAAOw==',\r\n'img/ext/cdx.gif':'R0lGODlhEAAQAMZ/ACkyLh02KyE1LCFBMjk/PSFOOShQPSdWP0VOSi5XQ0JWTU9XUzdgTCtlSkFlVDxqU0loWkFuWTlxVzV1VzN2VD5zWl9qZWlpaWdqaUh2YDl9XEp6Y2J0bDiCXlB8Z3Fzc2N5cGt4ckCIZDyLZFaEb2h/dWaBdWiBdkGTbEiRbniCfXmCfkeWb0WXcEeackiac4CJhYCLho2Ji4mNi3qSiZCLjk6heY+Pj1SjflOngFGogl6khF2mhY+Wk1ipg5aVlV2ohXKijlWsg1irhm+oj5uampqenF2zjpqgnZminp+hoGG2k2K2k2K3lKSio2m1lWm2lWq2lme3lXS0l3a0mWm4mGm5lW64l3W3m2y6mnG6m267nKipqKuqq3i9oXy9oLCvsH7Ao37Bp7Gxsam1sIHCqYLDqILGqobFqonFrIvHsLG9ub65vJXIs5bLtbfBvaHMvK7KvqDVwKjVwqbWwqnXxLnVy8vRzsbTzrLaysPVzsDXzrne0L3f0cnm2////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeygH+Cg391ZoSIg31TBxVDbYmDbhQEYHohIlJwiHkjAj+CKFVrEC1bg1oHF4RdETZeSikkglAgfniIPRNcYhuCTyVLMH90O3ZhZ2x/Zb5/wEwrcgYWVAlCNMvNwE0rPkRxVkE8H9m/JToqSQ8cHgwId+V/USc1RYlYZGrNOEeJcx0A3qDJIGiMgxdZBrkYMIMPiwA3CCGRkCPNHyN7gBTAEOlPDA1XvjRY4KTjIBMKZCQKBAA7',\r\n'img/ext/cer.gif':'R0lGODlhEAAQALMIAP///wCAAMDAwAAAAAAAgICAgP//AICAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAARYEMlJq7006M07CIUgCqFYFsEQCAbgtgAMCOk6H4Krt7RaAIfCAUBw5QAoVU6AIxgExWLPFnMVibxaQfbSIWtHgng8nh651Zl2VDKZap34ZgAY2O/4PAYTAQA7',\r\n'img/ext/cfx.gif':'R0lGODlhEAAQANUmAACZ//7+/7Tb8Bij/7vk/+Hy/IjP/5nW/ySn/0S0/+74/w2e/zOt/8zr/xGg/9/y+m696vH4/ard/1W7/zmw/5nU+HHF7ave8iip/3C647DZ75rO602p3Njv+ZbM6k6486XU7XfJ/2G99G7E+Eey9GO66////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAQABAAAAaUQJNQqBkAjpChUog4DigOwGJpmhwBpUKgkDgmhosjSRsoBxrNgemIKTwIhEZAQVAERNKjIGA4hiRRDg8cVwB7XXEODAcABiCFe00AjAcKjRWQAQAJBn0EEpOMVwIEjXwAEwwIAQKQjARzXQxyrVcZZGZmBWkmYQAbEbkRH05DDE4dDwUWV2pKHlcIFFdJVCYXhSNLQQA7',\r\n'img/ext/chm.gif':'R0lGODlhEAAQAKIHAP///4CAgP//AAAAAICAAMDAwAAAgP///yH5BAEAAAcALAAAAAAQABAAAANSeLpK7iweIqooRDZrS5BU5VjDEZznUHlBUZUBIBdDTQTqa8q8bOQXWA+ACwUVMSIKEKItksMb6ilDJUsRaI9QG2SQ1SUQuxsCxlQz1/bsumuSBAA7',\r\n'img/ext/dll.gif':'R0lGODlhEAAQAPeVAIep3Fdgcf///6+zu9Ho/9br/+Lx/9zu/8vl/8Xi/1hhcsDg/6rU/2Nse8bJzrDX/0Sm94qQnO32/8zV/5eepbp7Fax8FpOapuTp7mRtfHfoTyCuFrXa/3e16rbY+e7w8uTq8nmeyc2YCbThuqi/76XS/5mZmVua25HMw9DS2O/+6fHDVnqPwtXf6J2t2YSj1pqo1kKT4WNzjNnc4ImEfKqz9cGbMq/D8NHb5vr6+kLFLLG1vWCHGW98rrvd/6rT/Oi0N7HF8ZmhzEeJPuXn6qfQnavB8O+8Rp1YEfLHZr3S6Kt2FvX7/4Oi1cG2sajT/QebBbXI8guYB9uwRiixHnXnTtTq/9/m7Or65dvi6tLS0r3N8253h32VyJacxoHsV5WZxIir3riYOJek0nOCtX+069OcG/j4+MPh/X69h+j0/4uRtsCTUIygm4Gcz8WQC9PUtbfJ8rzAx7S3v6W97lrVPPX6/9/u6ens8DijTHaIu7rJ9JOWwX6Is5eeyfb29ouOuKWrtqSkpPPz9KvU/eHw/8HAlNeePLrM811ldpim046+8HPmTSZ/Izx7Vru/yHuElNbAW/r9/yCIOKdpEf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJUALAAAAAAQABAAAAjpACsBGEgwzAsAICopXAhAgMOHAgB0kBFoBkOIkuwwgQAhBqRHRBQCyCEAC4U2IyRMmFCjz4UUIs+oYKRlyAYUBg4U2MNFjsg/XzQUaSQFCpoCBLYk2iFyUJoqdXRQceSBAAJEAQaI/HBnUh4ekUyIsZEgTlaFTfBIKARnRRJBFkQYinK2khsMagw4OXRkipk3NILU7XIlpxU2lIBUWLLoRl0WWXQSUFIGyYkQT4zU1dMCKYIEC34QesCARF0yOKyC9sGBdAk6CrRW6uEChqIxQvx4AcNnDaAMcxQ6iNBAQYDjyBU0iOCgUkAAOw==',\r\n'img/ext/doc.gif':'R0lGODlhEAAQAOZ/AP///zZKZJCu1jdLZQlLsgU2ggZCm9zi9ERquZOr5ouk3ZOit5m24HeR1WCBzQEyeIml6VVtpGeK1Qg8iICe5pWkudzo+4Oc2trm++jw/eLs/O/0/TpamCpit9bk+6G63dPi+nij6/P3/pWz4uHq+9nm+6q+8djl+oit5cfa+Nfl+9Lh+oCn57HB166+1Agvi6260PL2/tbc6qq5z01qp6u60enw/VV7zig+bc7e+fDy+pamu+Ls+5243iFMms7e+DppuKS73aW83HeKnEJuxMzd+PT3/nyX2Iqu5NLi+trn+6W0yjJbtoyv5J643+jv/IWs5pGx4t/q+3ul6PT4/eHs/F11q0BmtI+x46+831J3yuXt/F99w6i2zVh+0Wd+s7rF1ISr5tfl+t3p+/P4/srb+Onw/Dhhrunx/ebu/O/1/ZW04uHr+5movq290oGn58nS4tbk+qa2y9Pi++30/Ul0zLLC2NDg+ZyrwHyk6bfI9LDA1ufv/OTt/Mnb+f///yH5BAEAAH8ALAAAAAAQABAAAAfigH+Cdi17Lm41M11yS4J/CQkQFEcSXlpEHSJ0eAOCCQCgoaAERhsVYJ0QJhcOMg4HEQoEVGoLA7cUBxdcBwgHNEMEAgJoQkEDDQANCFk+ChxwBmQCZlUfARIAXwhWBUw4AAYxAmlSPQE3ABEcegUFMAATGwJ9YwwBdQAvZzoFV6AFhpHAMCIAEFGiHjzRYCEOlgAdCEg0QHFCgQfDVKxAEsBRmww2MvDZwsaCGBA5oHQUtIOHhmEwBfwo82blnwoYlJQ44WHOnSJ+UuSxuSCJEwZrojRBEYbFlBA2A0idSnVqIAA7',\r\n'img/ext/eps.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAP7+/v39/fz8/PX19crKysnJycfHx7y8vLKysrCwsJWVlSYmJicszCUqsi4z1zxB21FW3GBk4m5y5Hx/55CT6vn5+fLy8uzs7OLi4tvb29HR0cjIyMTExMHBwbq6ura2trOzs7GxsaWlpZSUlIiIiCwsLB8fH////yH5BAEAAP8ALAAAAAAQABAAAAjTAP8JjHcvXziD4cLheyew4T967ba5c/cOXj144eAJZLdOXbqP6EKi06ctXsZ/7NKdO2euJTly5fhpKxnu3bqVLM29LFfOCj9++/TFu9lSJ8xyqt5V9LavXkNvESXCszeRorxvT9+J27r12zt327bdexpIXz1v87jpYwW2Hbin8OLJm9et2wp939q5fZpN27tudOuKy/tWoLe+futy8yZuG6vC/7xhQ/yOGzd64rIBwPcUm2fP7uTZEwcAAGR6nz1nexdoW+lwT1mNm0273zh/rL4FBAA7',\r\n'img/ext/exe.gif':'R0lGODlhEAAQAKIFAP///4CAgAAAAMDAwAAAv////wAAAAAAACH5BAEAAAUALAAAAAAQABAAAAM4WLrcFTDKCYe9+AYRBvlg+G2dSAACipID5XIDIM+0zNY4cOf0ztuw38z3I/JIrpdgyWw6BY7oIgEAOw==',\r\n'img/ext/fasta.gif':'R0lGODlhEAAQAIQQAOTm7GR+lExmhCxObHSKnJyuvISWpDxadNTa5MTO3FxyjLS+yJSitPTy9CRCZPz+/P///////////////////////////////////////////////////////////////yH5BAEKAA8ALAAAAAAQABAAAAVe4COOC7OM6JgoTqukKOMyDPIk8KMcecGkC14OcQCgAAEc7EDIiRIJRmDgOKEWBGqrJbCKiFuFwrAwpgKOmjMmyCG9IkYzN4A/AAXlqJBeMxQCLQc2TiwOCnYwCHojIQA7',\r\n'img/ext/fdf.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMfHx7KysrCwsIsBA3h4eXd3dyYmJvMUGP8iJf9DRv9UV/91d/59gOfn6u7u8Hd3ePT09fDw8e3t7uvr7Onp6t/f4Nra27a2t/v7+/Ly8ujo6Ofn5+Li4sTExL29vbGxsaysrIiIiHt7e3Nzc2FhYVlZWR8fH////yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JdPfunjaD2rRlkyew4b969Nq1i0iwnTZ6AslVEBeuI4eP36zAa4cP4zgO4L59G8FyxJp88EZqW1cBXMqVLI9ss5IvnxUr7r5tG0qU6Ll9+/jlq9cQ27pz5tKho6cu3jpuK+w1XdfN3DV0/cLG02fuXVN1XdGpW7dOHTp96LI1Tcct3TV6Yfu128dOrkBs5rjFkycvnuF03eb5/QeYm7yv/fj1C2xuMeDEUdNpDqzOcmBuoEGfG71ucT11qFOzZceunLamrLzJni3bHyt7AQEAOw==',\r\n'img/ext/folder.gif':'R0lGODlhEAAQANUAAP7+mP7+/ltfabO6ztXe9v7TbsSRLP7fev7qhP72kLrC187W7f7zjcuYM7KAGv7LZm1yfsqXMqeuwcaTLplnAZ9tB7eEH6JwCnV6h5hmALyJJK17Ff7lgLSBHJtpA8iVMFxgap1rBcGOKa99F7mGIb+MJ6p4Es7X7r6LJraDHj9CSbnB1qRyDNKfOtuoQ/fEX7uII+WyTbOAG6d1D+67Vv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAQABAAAAaQwJqQQCQIj0hhI/KZKBZJZCNADYgkiyJRGQB4AVZSquMYPWuRBGO9rlI3mBXhg+AY7vgSzCIrKyYHBm6DHAEXGAYFDV+MXi8AFSAiD2lqlpY0kAIllI11dTGaGp0HpaalLqIPFgAFrq+uLZp/ZRsmMywXFSEeFBkqEAsSEALFxscCEBI1CwoDz9DRz1BR1UJBADs=',\r\n'img/ext/gif.gif':'R0lGODlhEgASANUvAH+duQGZ//80Af///yRw1d/v/9ns/9zu/+fGJ+Ty/5zG9fk0BbPY/YrO/4fP+e7XZIbG/tbM2VOr9tzJJAmU8mz5NgOb+b/DgdPp/67W/97v/+Lx/+nIKT1tvbjb/8Pm/2BElO81D/rNAljwUEdHrA+n4ufGKPDMKt3jxgyL8eXUCdPH1JnL/MZ7e7nc/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAASABIAAAZrwJdwSCwaj8ghYMlsLo2A5CtajAqurY9mc5hCX9dFJxBoYLxVsABEIAdcaKI1RGqTIXHlaxVJUUpkLHlCUQkFDiMVFhIMg14FBg8iKhMKHo5RBignCCYcFxmYLwOkpaSiSVRyTqxSrq+wrkEAOw==',\r\n'img/ext/hlp.gif':'R0lGODlhEAAQAPfRAP///0tLS9fh8/v6+Nnh8vLy8tTe8dbg8v//+E5OTmlpaS5jzFBQUClfyu/v7yxfw8bQ4jlrzhBLwenp6fX19djh873J4Jqv2fHy8+3x9dni9BFIuaG559Ld8BVU0ZGt6NPe7+Dk8WmO2Ctn4tXf8BxUww5JveDm826LyB9XxZabpJar1Ht/h///9Ojt9f37/Hea4vDx7MTExLW1tSxhzFVVVTBlzBFMwcrY8/Tw6yVXudbf8BBLxP38/bi/zTZx5m1tbdDb8ai1z/v7/Nvq/9fg887p/9ji89vj8/Lz9j1z4Cpeydrj9FJ/18rR3dbe8iNczSlgy5+v1dTd7+vr62qGwjNjxajd/uLq9XBwcP//7q2tranU/7C6yYev7Mbz/wExvby8vDRp0zNr2+Li5EBx0KaoreDg4NfX1w1Gu8re/yRcy/758zNnzypfyv///S9jzcfQ4yddyoGaz/T09Njj9DNnzurq6tLd8cDJ2yphzXuc4LvG3RZNtyFbzfv//9fe6l2H3sDCxCBWxOru9vb29vn6+v38/tfh8pWVlWBgYP38+BRPxtPc8dnj9Nfg8SJZyZCo2JWkwmpqajls0FdYWZjP/D1luebt+9/n99ra2oGazm1xd9Db7/j+/wxGuNHb7+jo6Cpfxv79/ujt9kqK/9Hc701NTZKYpDtsy2uY9WqJyqKxz9Tf8VF5x1l+xyRZwNbh8iRbytTW2ZHJ/////OPq8CxhzX+c13Gy/zJmzMbP4e/x9v//93CS2RtUx8vLyzJmzRpVyXmk9nl5eU6M/uTo9dHc8WaM2v//+u7z/6enp+Lk5yJbzDRozuDn9N/i7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANEALAAAAAAQABAAAAj/AKMJjIbkWCdQpoIAojJwIKFGxnoAmPjiBJ5ZdAa62AHgz5crlmhx8VSrlaACAg0AMJLLC7QcIYYVU/Omg4xCBHgRKRVIyyEOydgo+aHsmQpNKlWNQGGrCRhcAJB5gDEqz7JHmMaIaQBJ2A0IAMr4iTAEhAICOKC0sUFjkBAAe37dEpWBBIMKT1LY0dWsCoAPPBZEeYDhwKkiA6zIcbZmVSZKsoKVcLVoV4IphiKZgKMnlQg3C5ZssEAKlSJmiBC8SsNIEgBfEj5tQnCgRiIKTrC0mNPn0gVYOqT00sApC5poE3zUGUCG1Qo+MZLEYqFgBspoZ8zEEeCIyREBXSoBEtlyp2GoMJMSBFjPgBgwBwIDAgA7',\r\n'img/ext/htm.gif':'R0lGODlhEAAQAPeFAJCQkP///1hZiYep3FmWvB5gmszl//f396HE5n+ux+3t7TKIzcrY/5jC1Wprm1JSg3SAsqnO/0uItLvO4zOY7L+/v0Oq/m7E6yaKwr7K/4K10Iir3iOR0iac5bDN/0KV5CmW5brb+0BkicbV/D94sTO08DGq8snX/nGBsjuY6kd4pS+i66W54b/f/2hqlzKP2ClFX2FjkG3B5kvB+ez2/zBzsoSj1jOc7Cp7xHGjyMjW/W9ynkhsidvt/7fM/yg9W8Ti/8vq9lGm5ff3+EtsiMbV+1ZWhyJEalWVwFtciyif5sHQ9uTs8T+67kmKxL3X5h9xnjGV7bbY6ez1/9vq+Ojw9/3+/6K33nR4o7PF7KG4yqrQ65Tp/EuBrnSUtGNtnOTy/5S31n+iwDWR2VVWhkmm5snY/3Wo3uHs9j+p97TM/zu5763N/3p+p6jG43vN+NPp/ypsrD3L/n3O+73K/6exvtbW1u/x9CZEZj2g2p+02HWx3bTS8JmqvGvz/6vN/7rK/zJdj/P5/zOp3X2Bq////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIUALAAAAAAQABAAAAjnAAsJHECw4AYbEOwoEMhwgJUAECNCyFFhYUOIVZ5o0CAFRYYPFRsSGDkyQJMvDhwQAlBoSAMCXPzIWYMkgAw0gjK0YfkyyCAMGJSs6BKAxhQ6WAAwIXAgARQEAXBYGOOFChhAOwAwTVCCQxkhLyhYUDGhhw8XAJrO6FCgrVsRE+CoiQFAyxsTIAogMMCXrxsDHpIAkJCHxI0oNRAsWMyDDxA2Rgb3qRMnBYU0Fy7ACBOixZ8HAOaIOeAk0BE8P4joWXKCQQTQd7bsOaODxZUsI4qYYeCaDEuBAoILHx78t0AAyJMrRx4QADs=',\r\n'img/ext/iso.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAIAAAHBgYP/86f3ibfe5L/7jrvWbAv/qyPyhIMuHJvy3UfyGAuJ5Cf+QD9B1Ieeobv93APaHK+yVSeyeX55IDL1VGrI+BMt3S4svDlQOBmoRDZVST+8AAN8AALQAAI8AACAAAHAgIIQ2NohBQWBQUJyIiHVwcP///yH5BAEAAP8ALAAAAAAQABAAAAjRAP8JHEiwoMFA+bBhk8fP4EB59OiteUQRnz+CrP49GmFvVhlyINnNuvgvm714I9bEGxdhHDhx27jFEyhvxAh68byNu4CunLhu2hLM+4fNJrYd4MahSwdBnDYAAcwRtfkIHLdy6XSw0/ENAIAEXWqOeCQOQYJ17Va8O9et27Z52ag6BdCt3bl26l5yG3pvBLZwT7WdW6fugkty/f75O1IvngAA38SVQ0c5AryBJtfA29ZNXFJ0EdxlI5gtnulw3Lh5IwdvtMNs2ebp2+faoe2BAQEAOw==',\r\n'img/ext/jar.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAMDAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANoALAAAAAAQABAAAAhuALVlG0iwoLaDCLMBWMhwIbZsCA8qJNgQGwCICQFIu9jwmsdrGTcqlEZyIzaQEgGMGKGwIYCTGT9qLPkSpUCXLmGmLElzRM2MOFf+3NlT5dCbDVcK1XmTpNGFPpm2xOnQZjZsWLNqZfqxq1eUAQEAOw==',\r\n'img/ext/java.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAGdnzDQ0Z0BAIN+geOGdd+CfeN+eeeOdeuKeeuCefOSbeeKce608Mq4+NNhdVddcVEBAQCAgIAEBAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAOsALAAAAAAQABAAAAiAANcJHCiQHMGDB8MZ9IYwoUFz3xoO5GZwXDmJA8mJ20auG0aB38iBOxexITZsVNZ9M0cuIhVs67JlE5gNpYqbKqi8lBmTpsyfP9XNPJiNigqBOXfSHAi06cyaBIsezYltZtWBMNdV/Zk1q1aZXrGCxbrV6cmD19BpS3et7bWDAQEAOw==',\r\n'img/ext/jdx.gif':'R0lGODlhEAAQAJECAAAA/4CAgP///wAAACH5BAEAAAIALAAAAAAQABAAAAIzVI6ZJg0NownwyXjqxdQJe2UeKInfqTXmA4Dg+rmW2MbV3NV1jLf+DzRtOMPQRIHsFC8FADs=',\r\n'img/ext/jpg.gif':'R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==',\r\n'img/ext/js.gif':'R0lGODlhEAAQAKIAAP///wAAAICAgMDAwP//AICAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAANQKLrcISDGJseTQBCwbbTQBBQkGACgyKGPl2YjGcwnG2qrV10TQRY6GwbXqb0yigCJJYSZOK4LhPDYEHQvwWAgCGxrTQCNhgFtz+j0eM2eJQAAOw==',\r\n'img/ext/jsdraw.gif':'R0lGODlhEAAQAPebAAAr+u/y/tTc/iZN+4yh/QAh+vf5/+ru/+jr/4Sb/O7y/gAo+j5i+6Oz/QAf+idL+36W/QAs+gAp+oug/d3j/oec/Aw3+pOm/b7K/vP2/zlc+yNK+oSb/QQy+g86+trh/oie/aGy/aCy/MrU/pir/Ziq/Ziq/Ku6/Zyt/StR+156/Fdz+116/IGY/eru/qq5/Yab/cnU/nyT/R1C+i5V+iFJ+wAg+jBW+wk2+hQ++niQ/E9u/Iac/NTb/qa3/b7K/Yab/L3J/bXD/Zqs/cTP/qy7/S5R+6Cw/SBI+gcv+ggx+4KY/QEt+lZz/A87+idO+9vh/o6i/Qo1+i5P+1l3+5Sn/Tpd+wAl+qGz/YWa/L/K/p2v/SNL+/T2/5ep/TBU+8vV/8vV/uXp/qm4/QQw+jRZ+xdB+gIw+ujt/t/l/4yh/CRL+i1S+0tq+1Rz+7LA/Zyu/Imf/QUy+r3K/fj5/xlB+8zV/rjF/Qo0+h1E+xlE+ihP+yNI+4CY/DZa+5ap/S5T+yxR+yFH++Xq/6e4/WuF/DJW+wEo+oOa/FV1+2N+/Dld+196/DFV+4ec/aKz/QIv+s/Y/lR0/Pb4/wAu+gIx+i5S+6W1/Qw2+tzj/gAq+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJsALAAAAAAQABAAAAjvADcJHKhlBRVCkwYqFGiHkRw9Rd5kibRwEwUdOSoBuIJJRhgRJugM9CLoDKUFAyTtmMEHBZgLGAQysAKATKEGEyY8UnSoTZwbAnkQKJAoAwEHDgh0cVMgwhOBiGAoiZHpAAQIByiM8ABggMAES9jMEYBGgQIXAn74keB1E5AWgUp86WHAgIBGQ8poWiOwgqMkIYw8CBDggSUsFgBs6MvBBoMXLAirGKOhgBMkAgHlYQJgkQ8ECBqkkNJnCw2BR6ZAiiABR406eJoEEfJHwEAxVfZ0ALDA0AkiCe5U3JQmChczcEhcGjR8IBQQaj5UDAgAOw==',\r\n'img/ext/mdb.gif':'R0lGODlhEAAQAPeKADZKZP///5Cu1jdLZfXm7UwENoYnV+/0/eLs/HwhTpOit5m24Nrm+/Ha3tm/yu7d5Ojw/UgCNJWkuZtHburV3ogwW7psi+7j6Mrb+Iyv5Ho4W93p+87e+Yqu5I+x49fl+t+mtOK8ybBggpamu7DA1oEoU8nb+fP3/qVUeLLC2Onw/HgeTHij64Sr5nyk6bZ+mOzz/aG63eLs+5W04qa2y/z4+aW83NZ8mtucsloNPdmdq6u60dLi+p84abBkgd2nt9+jtHAbSKi2zdyhspE8ZIGn51UJOsfa+FMIOZE7ZMuAnF4PP+/1/bHB14Cn59rn+2oWRefv/Hg6Voit5dbk+tbk+5243qB5ju30/cN4lWISQZ6436S73a6+1Hul6JWz4tnm+8doiNjl+q290vu3y3ceTLBhgeHs/M2Lo9Dg+cqAnMN3lMSYrqp8lubu/NLh+uHr+93o+2cUQ7rF1KZUeIwzX28aSOjv/PT3/pyrwN/q+04FN+nx/dzo+9Pi++nw/ZGx4nEaSKq5z4Ws5pmovqW0yszd+NCGoenL1uXt/P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIoALAAAAAAQABAAAAjyABUJTNGERJcxOwQJoVFIoKJDarJYMENnApEKJU5gyTNAoJIAIAlQoEAgQAI8ByTM6bgGZIMhPjSwIVBGABMFA3JaCFDjB44bIOo4sCPgAB8bXAaICNCAjI4wPYI4kFNUxZkYAFAEQATEgJQCLwgsEQDDjR4rACY8QGOgwJULII0ImLthAYAkIQy0gQsywJ65Ahh8AVDhQd/DEe4gEEDFA4AECVYEgqIlB5ICERDEEfCmAwCHhCD8gRAlEZw+HwRwGPRZ4AgZiwEDxlCktSIJDJ6AEVPFTxpDJo64sK2Ax5YFMwBlmNLCiRcWtgFIn059ekAAOw==',\r\n'img/ext/mht.gif':'R0lGODlhEAAQALMKAP///wAAAICAAMDAwICAgP//AAAA/wCAAAAAgAD/AP///wAAAAAAAAAAAAAAAAAAACH5BAEAAAoALAAAAAAQABAAAARiUElFqr1zEsA7rxnleRuRbSMXrGdndUMgCNIsEMOMcLGQC4VBYRY7BAAxBXC1Wh4Sx6QvYDAApgYjUiakWoGx4xZM5fgK4q0S3Vl6pLF2HMYd2siDfA8dCPL5TEwSggosGREAOw==',\r\n'img/ext/molengine.gif':'R0lGODlhEAAQAOZxAP///xvakPP9+RrZjxbZjRzakB7akff++z3goCLbkxjZjiHbkrfz3BnZjmDlsi3dmPb9+u/893Lou2bmtDTenD7goSDbkkDhour89R/akfL9+R3akfH9+IbrxGrntrLy2Vfkrer79BnZj1Hiqhraj8L14cb248n25Nz57mfmtT/goknhpiXclJ3vz0jhpa/y10Dgoavx1h7bkVnkru389rXz2uD6773130Lho0ziqHPou7Xy22Pls5LtytD36N367i/dmj/gofr+/RfZjUXhpC3cmWHlsjHem3jovHnpvVjkrTjfnhfZjnfpvXbovCfclb3030Hgoqbx1CDbkeH68BzakR/bklTjrN357kfhpWLlsyPblBrakDHdmkDgoqDw0TjfnRnajlvkr5/v0M/36BvZj13ksF7lsKTw0hjajk/iqfH8+Mf25GPlsk7iqC/dmUbhpf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHEALAAAAAAQABAAAAfegHGCgzQ9TTZCg4qCHF8wFgQUY2uLcQIvOSwbDQMiBWpsB4NkZ08bBA9KM11lQws6VIIXJDIBWjsnJzVtBgZMboJgCQoTAB8kXB8AEwpWCIIIGW8oAAISEgIAKEUBKtADZj8hAAcHACFYYgQ4ghUNPCUOGgAAGg4lRgRB7QYUUHAg6IHIcuNIgGdxLiwQ4cEEEggQkpjwMCDBEkFeCkwpkIIBBgwMUmRIEMZbnBgrElRR8GDECCBpAmxx4mNQBDRELBRQMMDAgisMRC2K0CJKgAYupAiopIhDhw5LFwUCADs=',\r\n'img/ext/mov.gif':'R0lGODlhEAAQAOZmAFdXV0tLS3d3dzo6OmVlZWhoaDg4OG5ubhoaGnx8fGlpaV7HcKysrCy6S3272z+uy2NjY1zLT0XET2C92KzLrlxcXDa/f3DC/2JiYi0tLWxsbHrXV01NTXR0dFC4tmW5/2nF3WK6/2e//2rRQk5OTpqamvngaImJiUJCQmzE/2257DU1Naampo6Ojqqqqm7G+CUlJXm+7VtbW6+vr5XhWpHeUWBgYJPiVZSUlHNzc7CwsICAgAkJCaSkpG1tbUxMTM/NhDk5OaDjeLKysnZ2duvYhBUVFXFxcT09PV5eXqTjfJ3fb3fI/3LF/19fX5PdX8/YmJeXl0hISFZWVgUFBZ7icmZmZpXgY3O77HG85uvkmYWFhUFBQYODg57gdFFRUS8vL5PeVlBQUDIyMqPgeHp6ev///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAGYALAAAAAAQABAAAAewgGaCg4SFgydEO4YHX1aEOWYKAJOUHGYYhBodBVkxWCpARQEFSIRdZgkWIBciFCY2ZhWEAltlEg0TIR8OSQQBs2YCERsjCx4PMma/gwIuHVVKQlc0N1PKhApmBZSUYxxBhAc9Gi9MTSlQWiRmXIQEZgSqrK5SBwaEFT5Ot7m7KGZgCEEwA2BYsWMDzCQcNACDgSVkvDwJUwMBBB6E7q3gNgmBGSOESGQQYygDFRiCAgEAOw==',\r\n'img/ext/mp3.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAM3NzY+PkcXFxpWYosXJ0vD0/XN1eXx+gtTV17m7vuDh4qmqq/v+/8rLy7Gysj49O1VUUtWMCvutG1I5Dfy2OuybEKNtEP6uJm5OF/zAXWdcSteQKYRyV4OBfv+0VHZmUl1cW/b29vHx8evr68/Pz1BQUEZGRv///yH5BAEAAP8ALAAAAAAQABAAAAjGAP8JHKjPn7aBCBPuw+ftHL9/4fBhS/hP3LlxAMT58+flS7aE+fph7GYF3rx38MIhFIduHLlxXtyxe5foG0J958xxk/elnQJ267z5WyFwoTlz8Nq9ixcvgRdv2lhN9OcNALp26praY9dOHgBs5/5pOyeu3joaCSC8SwdvXEgrArExvJe2nTt62vT1gzvwm7x4a+FtAxDSHMJy9+ypcxdIHIB9/T4iPLd2nbVwhPsZTrgOHj5w/M5p20vxn7lxA8v541u6NcWAADs=',\r\n'img/ext/mrv.gif':'R0lGODlhEAAQAMZ1AABIbAhRcwNYeQhaexpaeyJtiixwjClyjit0kDN1jzh2kjJ4kjR6lDV6lDZ7lTt9l0GCm0aDnEqEnE6KoU6LoVGLolWLolGNpFiRpm2cr2+dsHmjs3mjtHmktHqks3youXypuoKsvIOtvIOtvYSuvoWuvoaxwoaxw4mxwImxwYqxwYqywYqywouzwYuzwoy0wpa3xZy+y5/AzJ/AzabG0anG0avH0qvH06vI0qzI063K1LHL1bDM1rHM1rbP2LfQ2bzT277U3L7U3b7V3b/V3cDV3cPX38TY38TY4MXY38XY4MbY4cXZ4MbZ4MbZ4cjb4crb48zd5NDf5tHg5tLh5tTj6Nvn6+Dq7uXu8ebu8efv8unw8+rx8+rx9Ovx8+vx9Ovy9O7z9e/09vD19/H19/j6+/r7+/r7/Pr8/Pv8/Pv8/fz8/Pv9/fz9/f39/f39/v79/f3+/f7+/f7+/v/+/v///////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAf4gH9/HCQuhi+IhiQdgn8nOERGUlFGTk5MSkU4J38dNlNfVhUYU2NcYFxZVDYbJEFYHxl1Fw8aY3BuZ1lCIilQBXVtc3VWEQdja25bSikrRgs8ZnNzbnUxXW5xXkooLEcOP2nDc2052G5gSissRg0+aXVuc2g32HJgS+tNDHVnc2p1JpQAYwZdvhdJtCgAUgeGhQRXCMyo4yVfiyZd0lQxAKGGGjoIBAB4giRFCyVb3Lh5QyaOSgoDQIRhkoLEECxlVLqBA4eNjDoBdBAR4YlKllNgkoIRo4WGhB0b/pjAEUQJkyVYlzTJ1MNEow0hVKwYS1bFCA+CAgEAOw==',\r\n'img/ext/msg.gif':'R0lGODlhEAAQAPeTAPn8//r8//n7/fX5/GB9qu3z+FCMyOrz/vf6/MDb/Ja14+fx/vn7/+Dq+ePs+eHt/eTv/tTm/U6JxPP2+1GLx97o9zxzvN3q/kWAw9jp/Zy/7VCMyfz9/16Kt+Ts9Ze24+zy+KnF6k+DxafF7FGFxcLa+KK/6fj6/VyIuvj7/T5ttdbn/fX5/6C/6dDh+Iqu4vH3++z0+IWq4kqExObu+T1wvt7s/VGMyLzQ7Pv8/9vq/drp/dnk8VyMydbk+c3g+Nvr/tLj+aC33FeJx2WQzO30/lGIwOzx93yd03CW0LnP7LfX/EyIxNjo/cbf/N/s/vb5/LLM8cTb+N7r/uXt+VuIttPl/fP3+1CNyN7p+ff5/KTD7L3V9O7z+Nfo/WOPzI2w42GPy57B8FmLyEN9wlB9xYeo3Exyr93n91aEtpi24/D1++71/vH1/E2IxOrv+Iup17PL6lSHxvb6/9/r/kiCw6vG7VCJxOPr84mq3EZ2wmaOzPf6/16Nytzq/Z2z1luGyc7a63KZ0b3T9Ja04z95v1OHw/v9/9zo+fL2+7PK69zr/tDh+fH3/rDK65W88LHN8cne9/T4+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJMALAAAAAAQABAAAAjTACcJHEiwoMGDBP/AEUTkS5g+PcYMkUNChCEUBIScaAOgI4AAIHMc4jDhTQckiQghYrPDj40HEBbMaSCDx40kAiApyNII5oIDfBy8eBTDwB4BVqIoaMDiQBEGVMCIWVLAACABXiLYyeOAQQAaZjQkSFC1jIAMjBSNUIOmwoctIUo4KYBFT4ogSlys4NLCxKAIkRxJAbGhxgAcPp7QmQJk0QUdTX7EwUPhTBcPa2BckTRgABQtCBAcCVSFgAoLhchgqDODiRsJEu4YSUMAoe3buG8HBAA7',\r\n'img/ext/msi.gif':'R0lGODlhEAAQAMQQAIaGhgAAAMDAwP///wD//9fX1zNmzGb//2ZmzGbM/zOZzACZzP//AAD/ADNm//f39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAQABAAAAVyICSOQGGeBRCMJGK876CyIoAkx5Eo8koCttxu0SMNZAidYuEoAoEC29Bh6AGOAEFUy9XOgAHvcyxYXcPlgDrwLEPOUQKBcUS7zwCCYD7QrmtlWXtqfixZbFwBDXI+gIgCfQ2FJGlXfQwNjSJrDw9rajQhADs=',\r\n'img/ext/pdb.gif':'R0lGODlhEAAQAOeEAI0xLY80Mpw3L4M8SJ05MUhbdElcdWpUgpRNTY1PU69JQLBORKlQSXddhLZUS3RijqxYU7ZWTJ5iY7hcU0N0yrlfVqJnaEl910l+2Ep+2LdqZcBqYsBuZFGF4lKG4lKG48l0abx4c8h4cFyP6c19dcl/d81+d7OFhs6BebeKic6FfWuZ7NGHgNKQiNmUi9iXjtuXjdGaltqbk9Ofmtydlcyin9ufl8OnrM+mo6ayw9+lneCmn9CqqeCnn6i0xdCsqtKuq+CrpK66y+avqOWwqLa/y7e/y7XB0um2rum2r7rG192/vNTCw+u9tuy9tey+t9nDw77K29vEw8LO3/DFvu/GvsjQ3MrX8s7a88/b89fc5tLd9NPe9NPe9dbf9ezc2tbg9e3d29ji9dnj9trj9t3l9t3m9t7m9uDn9+Ho+OLo9+Lp+OPr+OTr+OXr+ebs+Obt+ejt+unu+unv+erv+ezw+u3y+u3y++/z+/L1/PP2/PX3/Pb4/Pn6/fv6+fz8/vz9/v3+//7+//7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAjVAP8JHEiwYMEpCBNGUXJEi8EphCJKHCSkgJGBfr7cwPFDSkRBgHxYKVDkn58lM4LoaBEiRaA/fXIYmPkvTIwkVJrsQAHhQQc+enLI/AfEhpMqT3qwqGBhTx48dXIU+FfDxRAkRGSUmBDgQwYKcKT+42ECBo0XKjgskHCHzhs1YqFoAEFCxIYIBA54wEDBjNh/JxhEcKBAAII4bNCUEfP3H5MEAAY0WDGiwwUKXRr/y2Fnjps1Z8iA4ZJFcw45btKUGeNlC5YrptsInU176kCpBXLr3h0QADs=',\r\n'img/ext/pdf.gif':'R0lGODlhEAAQAPeNAKysrIsBA8HBwSUlJeHh4eXl5fv7+9ra2uDg4Nvb2+fn59LS0uzs7NjY2N/f3+rq6tTU1K2trdPT09zc3PHx8bGxsdDQ0PPz8+bm5t3d3eTk5PT09D8/P+mqqnV1eNi2uf8BBeq8vsXFxYGBhR4eHtzb2/83Or6+vvsvM+qqq/8FCe4BBMDAwP84O8zMzP8yNenp6dHR0a6uruJeYIyMjv59gOjb2+ianb6+xup9fO7u7nNzdeNbW4qKjd9PTvoBBO1TU7a2tsvLy/9JTf9UV39/gf///6urq/8NEudJSu/i5f8bH/8WGtsaHqqqqtXV1c3NzYiIjeVxccbGxuFwcfLy8qiorL29vf8iJf8oK97e3ulMTbKyuLe3t+nt8f9iZPb29tNSU/f39908O7q6wNNlac7Ozv91d/X19a+vr+vT1sPDy9sBBP8TGLy8vNnZ2eLi4uWNj6sCBejo6OkBBcjIyOTt8P8MEO/a3NcaHf8HC/9rbbu7u7+/v/D//+vr6+aPkO/w8v8+QNuEhvUBBO3t7by8wnJydOdISP9CRYEFB+Pi48fHx////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAI0ALAAAAAAQABAAAAjxABsJhFAhAgCDAACkISCwYaMTa3AYIsPFShQHMhIIrLGHyJBEglq8QNFkhAEHTjSeMYGFCRI9IAjRkXPIwEkABb5kWdLmjoofK9gE6OFhRxEaC/IEWMp0qSIMQkTwqeOmoQAILixoCVMCQYMFjN4EsYrgSYYNPhYxKJDADIEKVjUcYGBjzI0NOgpAUADAqgICaHJ4AZQCzJwDMPoKFMDggZotHTokQQRkEAXFjQRUucAjBJ5Afux8KPMAswAlM+Jc+KOgAIIDUDKYpiKFggYCExrEsMBCAuY+RsQUeoABTu4FUyQcaXiFw4Dn0J+T4NAlIAA7',\r\n'img/ext/pic.gif':'R0lGODlhEAAQAPekAIep3Fdgcf///6+zu/n8/1hhcv7+/8zV/2Nse4qQnESm98bJzvT6/6W97upZKtHo/avB8K/D8JfH9qTN9rS3v5PE9sHg//91N/b29rba/9OfdKnQ9nqPwv+HVnyn2m53h6DL9rHY/+yDNYuOuLqIerrM87d9U+5dLISj1oqBtrI1E3So5uCRXpGtzo99peaZVOTAfnaIu7zAx+Tq8mxpuKBiLKXR/dnc4Kqz9Zqo1vdtNX2VyJim09vi6vr6+v/dmayXrGNDLpOWwZiSwrWXk6qQm5acxv+1WqrU/+qHP8g7HLHF8e32/+7w8tHo/4Op1FhBRJeeycKclWRtfNmTYPOMN6XS/+Xn6rXI8tuQV5WZxPj4+G80KOTp7ne06l1ldrfJ8v+sVbeDcN/m7IGcz3Wl3nOCtbc6MpmhzKaGlJOCrJzJ9qi/70KT4NHb5vPz9NXf6Nbr//+feP+WSbu/yP/BYens8OLx//+PRv2qVNehf8GQffe+ZfWLN7G1vYipzsXi/4Oi1ffbf73N8298rvbUepek0n6Is4ir3ttJIszm/7lgMZOapppbMuXGgrrJ9IuRttm6hqWrtpCBr+PEgv/mgNVCH+3KfJ2t2dzu/9DS2Iedx67S9vrnhrvd/3uElGJzi/93Of/Pdp2MqP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKQALAAAAAAQABAAAAjvAEkBGEgQEQoAM0gpXAhAgEOHBggA8AJK0g2GDwVEZKBAQZtPdK4oBOADIgEGTA4cwHGIkaaRW+TouIAnTJ07meI8+iBjJIYOi0LNOfJDVJ4Wg774GfnmDBcVSiw5OJFoU4kAA0Y2YdGohogqfPok+QMGq8JAdvSYCJLlRSFBVJ5gMUuKTBcpJKCI0eDo0h4PS+juGAPEBY00lDpVIlImAl0OPYakmKSmSCQYo1ZAoBsDzgNOGyaAWCOhgg02dM24caIIkAVPGUIgsdKgQFZShDDl4GEITRQjWoRAGjGFgsIFCRAUCMC8eQEECRaQCggAOw==',\r\n'img/ext/ppt.gif':'R0lGODlhEAAQAPeYADZKZJCu1v7n2zdLZbBfRP///+/0/ZI1LZE6M71eRduDYlYMD9rm+8F0W/bWxuLs/PCRZ5Oit69HOZk8LN/q+5Wkuejw/Zm24Nzo+6a2y6W0yvT4/e/1/b9hSNLi+vzz7brF1N3p++nw/OHs/NlZK3wgGPCWaJE3MK9QO5amu3ul6LLC2Hij66pMONmBYLJTPbHB140xJaG63ZGx4uiPatnm+9jl+tPi+q290vClavCXaunw/dDg+dLh+vCZcejv/Nfl+qq5z4yv5PC9i9F3WNmAX/V7Qs7e+eHr+/z078NmS8rb+PDFkrxPL5A0J8xxVHYaFPT3/oWs5sNlS8nb+fCWa5E7NPP4/vP3/tV8XP/9+4qu5I+x48zd+OXt/P/8+oSr5oYrLau60dB3WMBhSJW04q6+1Orx/fDJl+fv/PCSW5movoMoHuTt/Ki2zfC2gZyrwLdYQfCmdMdrT51dSPCdXYCn5/CcXogsIZI2Ltbk+tbk++Ls+/Cgb/CbZ3yk6cxxU5Wz4rA5L/DNocfa+O30/Z6439V9XPCRXMhrT6JEM6W83O6CVKS73aRHNLhaQtrn+4AkHP/799Pi+4Gn57DA1oit5Z243v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJgALAAAAAAQABAAAAj5ADEJXAGjkhkcYoK4yaBBICYFClxkGfNkzpQOCbAUgjNAoIICAgggQEDHQYEEUQxUANGxiAAJSSQtQBDGQZwNHCIM2HmIwIcvWhaQ8EMARYCjixoNIHLACCMaTXTIOeDoigERI2QAAGQFzaAhECD0OTDhaAAKlwAkInCHyRsfVRARiGHgTJsQFwAoeVknhwk1ggSwMcsgEAAyIBucyNNAQIESPx5g0MMFQIJHL1oomuAETyQoZntsAeBwjYUdFtJ4QYIByI0jUkgLTMHnwVmzR5dQko2pAgNINWzsmcSjCxVCf3hH8GDoQpkZQiyBsaOCBW8A2LNrzx4QADs=',\r\n'img/ext/ps.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAQEBAMDAwICAgEBAff39+/v7+np6ePj49zc3NXV1dLS0srKysPDw729vba2tq2traSkpJ+fn5GRkYyMjIGBgXl5eWxsbF9fX1hYWFNTU0tLS0NDQzs7Ozc3Ny0tLSoqKiIiIhsbGxMTEw0NDQsLCwYGBgUFBf///yH5BAEAAP8ALAAAAAAQABAAAAj3AK9l25btGjZ+Bq9p23btmj6F6NhZQXdunTp38AK5s8hu3zWK4MaFA8cO4zx89uK9E9jN27dv5yLGiycPnz578gqKW0HOnLp38ezlwzfU3jyB3MiVO6cuJT5s2fzpy1dP2zVzPullu6fPn7ap+fTdM0iu3T108Ky4w6Zt376p9bZpa+eOW7d7rLZh66fP7D55DF2S62aFn9u/6OTNWyfQm7hz4r6py8cqXrt29NyZawig27el5s6xYwdvnjpx4a7tAwdOnNLRgeDBazeynFVv3AA4HpfOSjpx4DyvaOiN3OBy43aSG2eOXLhy2xhaFVhQYcN+1xgGBAA7',\r\n'img/ext/py.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAC/AAB/AAA/ACDfACCfAD+/AEC/ACBfAEB/AGCfAICAAH9/AGBgAF9fAEBAAD8/ACAgAL8AAH8AAD8AAPf3939/f////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAO4ALAAAAAAQABAAAAioAN0JRIfOHDqBCBMKvDbu3Dhy1xQqvNZunDRzESUiZFjuIbprGRNeMyeuZElw5MgdTGguZclw23JlKxnS3bdwOLdh07ZtpjhzCXlu26ZNmzej3n5OTLfuG9Fr28KJW4kwXbee19BxkwoxoTp1IEfm4loz4jp26MBtKwkxYtiV17DlYktOnEq75IC6u+ZtrUmT5MCBy3iNW19v4Ax7wwhSZLZv2sLWdBcQADs=',\r\n'img/ext/pyc.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAH9/AEBAAD8/ACAgAGBgIICAQEBAIGBgQICAYF8/AL8AAIAAAH8AAGAAAEAAAD8AACAAAIAgIGAgIIBAQEAgIJ9gYGBAQIBgYICAgH9/f2BgYEBAQCAgIP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAPUALAAAAAAQABAAAAirAOsJRIfOHDqBCBMKvIZNG7Zy1xQqvBYPmzRzESUiZBjuIbprGRNeMzeuZEl15codTGguZcl07+DNKxmyHrt0ON/Jowdu5jhzCXmCA0ePXjej635OFHfOG9Fr4NKNW4lQXLue17Z9kwoxITlyIK9lg8e1ZsRz9bZxe1cSYsSwK6/Jg9e23DiVd8sBrXetGziTgMupU5fx2rdu79apc7duHUaQIud5oxe2Zr2AADs=',\r\n'img/ext/rm.gif':'R0lGODlhEAAQAPevAMPDw8rKyo2NjcbGxsfHx5+fn2lpaGlpab29vYeHh5OTk/7+/mdnZ6ampqSkpHx8fJqamgQ7cgNCewI6ccTDwefi3Z6ent3j6G1tbQQgXU11l+De2cnT2AEjWYaMlcnHx3OGmgNAe8jGxoCBgoKCgYCAgI+JgjVolLW1tQMvWR8eHqGhoOjb0aOjowQtWqe3xrOztB4/Zy1XfAQ2aZKSkubh3M7PziNTf6ysrCtagYWEg39/f+rn497Z1ouTnDExMP/27uHd2hhLeOjo5ry7umNcVsHCwsHBwenp6QhCeN3d3PDv7vHs5ouXooGYre7o4z5ulnV1dWKBnAE1b0R0oZytu5+dm299jaCwwbGxsXFxcWxsbMTCwXBwcHR0dImFgqmjnre3t3+Vq7/CxWhoaM3MypeXl/7+/Up1mY6OjYuKitva18jHx5CNjamloT9jg2pqand3dzBXfHZ2dcfHyARAdr6/vgQydAI5el+FpsvHwzJQa/7++dPS0cHCwcbGxTFmkpubm1h/oylIbdLQ0NLR0amqquXl5F58lMTExDpyoU9dagQgWIaFhAQkW8rJyZ+kqGiOr8XFxtjQySBOdubg2qOcl+Lf3PLy8sLCwuvo5h0cHHB/jb65srCwsY6OjtrY1QVBeAE5de3t7Y2EfmF8k5aVlKqqqiVKbW2KpTJGW/Dw7lRcZISds4iIif///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAK8ALAAAAAAQABAAAAjzAF8FwNFghRVTaVyNeDBHyauHr6KYsdCgSak3MigJAcQJ4qsHhy4ownPDyQssYnKIQoXpIQlQVO5I4XMGjCVSk6pIuPJQx5gQSTQtoKDih4EgQDQMetjISKgIQxa02YRiSQUmUGI8TKAnVQY0q0wUufSER6QpPrYSqYGIUR1BrTZwONHBA0Q1ntZUgrTHxYw8E1jB8CjglA1CPViAcJRikQEkHj85CPCoTB85qr502uLxlYICBAZIImDIDZdCcDorCPQHgGsRbDJ9INOZRoEAdBL5sYMAwQAGnbNgOHDASwkBEByEAd754agjLQTsiNNFi8eAADs=',\r\n'img/ext/script.gif':'R0lGODlhEAAQAMZdAEhbdElcdUqfCUugCnaGm0yhDE2iDU2jCk2jDk2jD36MoVesJYeWqZGfsZejs5youZypup2quqaxwaayw6i0xa65ya66y5vOjLfAzbXB0rrG177K28DM3cXN28LO38HVvcjQ3LjcrsrX8s7a88/b89jc49Ld9NPe9dbf9dfg9tfk1dji9d7i6dnj9tvk9tvn2d3l9t3m9t/n9+Ho9+Ho+OLo9+Lq+OTr+OXr+Ojr8OXr+ebs+Obu5ufs+ebt+efv5enu+unw6Onw7Onx6Orv+uvv+uzv+ezw+u3y+u3y++7y+/Dy9u/z++/17/H1/PP1/PP2/Pb3+fb4+ff5/fj6/fr7/fv8/vz9/P39/v3+/f3+/v7+/v7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe2gH+Cg4SFhR6IiRsaGR2GHl2RklwWABGFHJJdBj9aFCAAEH9ZW1tLkQk/AglYEwGvo0ELB0NDAgUHKlVQE65/WwdBUhcIA00CA1RMRxMAvwddUZEDAwI8T0U+zb8LQVEhxR8DQkY7NdtZQQe0VwUvU0k4MzHbo1s5ViwlGA4MCgQr6gma4EQJkR42ZLhIcULgnwlIKkh40MAfARIOJwDRQQNGCxQmRojIeKOXyZPOBjUDwLKly0AAOw==',\r\n'img/ext/sdf.gif':'R0lGODlhEAAQAMZQACYmJyYnJi4uLi4uLy8uLi4vLjAvLzY2Njc2Nv8AADc3Nz8+PlxcXGVlZW5ubm9vb2Vl/3Z2b3Z2dn9zf3d3b4BzgHd3d21t/3h4eG5u/29v/395f4B5gG9/f3Z+fm+AgG+BgX9/b35+fn9/dn9/d4CAb39/f4GBb3Z2/3d3/3eJiYeHh4iIf4iIiICA/3+Pj3+QkH+RkYePj5CQkB7GHibIJv9/fy/LL7a2tmbYZm7abre3/2/bb3fdd8DAwMHBwb6+/7+//4DfgMbGxsfHx8jIyMnJycfH/8jI/9DQ0NDQ/7ftt8fxx8f8x/39/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfLgAswL4QvMgiDhTAILTEJj482IJCQKi0IHx2aHR4GmZsfBC0rUENQRFBQIxdKKFBHKCwtJj5FDj9OUBQaRy4QSCkksw1QDqm6GkCpQMGzUA1GDKm7SBk7Qc0mqU9Q3AAnESEUFCUDs084UOlQG03H7iaztQ5FxBM8UEtQOlAWw8VQHkCZ0INJQSE5/GmD1sAHlAo1bki8QYNDCwUPMDjQaCFAhQkgJ1Qo0GIGEQkSkqQ0oXKlhBYtDsRrIYLmipo2WwiAybOnT5gmAgEAOw==',\r\n'img/ext/skc.gif':'R0lGODlhEAAQAOe4ADU+TStGbixGbjFKcjNNcz9VcT5We0JZfEZcfklefkpefkpef0pff0tffk5jg05jhE9jglBlhFBlhVFlhVFmhVJnhlNnhlNohlNoh1Roh1VohlRph1ZphlhqhWByj2F0jmN1j2J1kmZ1iWR2kWZ4kmZ4k2l5jmh5lHR8cGl8mGx8lW19j25+kG+AmXCCnHOCmnGDnXSEnXaFnneGnXiHnH6Kl4+Kd4+aq5ednZqjr6KjpKKjpaOkppultMKhbaSlp6SlqKSmqcWjbpyov6iqrKmqrKmrrqqrraauuauusqyusayusqyvsq2vsq2vs62ws66wsb6wha+ws66xtK+xtK+xtbCxtK2zvLKztbO0tb64dbS1tra3uba4ura4u7W7w+y3TLi8w7u9wLm+xLq+xby+wLy+wb2/wbrAxr3Bx8DCxL/Ey/fFJsDFysPFycHGzMXGyPfHK/fHLMXHyPjJM/jJNcbKzsnLzcnLzsvNz/TNYMvO0MzOz8vO0szO0MzO0s3P0M3P0c7Q0c7Q0s7R08/R0s/R09DR083S2tDS087S2dHS09LT09HV29TV1enXhNTW1tXW2PbWe9XX19XX2NXX2dbX19bX2NbX2dbY2NbY2dfZ2fDYmtjZ2t7awdja2trb29zc2/Xcmd3e393f4Nzf5f/mQf/oQv/pP/znoOfo6enp6urq6uzs7O3t7e7u7/Dw8fLy8vzz0PPz8/Pz9PTz8/f29ff29v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAQABAAAAj+AA3AgFHglJw6YHyEcOECBAcNAmTYusXC1EEwQhrVasUny5YGMWbNWmERoRBFsEiVWUIlQciRJTEqelVJyhMsCl6SjGNS0So3SphMyTmLlglUbOhgRDSqSxMnVojGGqIllR5JNkoNquIkCRYGLVipciVCFqdHKUadMcIWygISkyJtyuFJFIo3XnTw+FFEzAQSlzBRWoMjSg04QHYQUXNnkYUSmTBp6gQBwJUgR8z4CZQn0QXIgj+16cBlTiJDjAQB8gwYk50eGTzM+LLn0AsVZApVANxnxBdCkNrc+BAmzRg8uk+A+kMj1KTnaJBYKpSokKMNAzA8IBDBgXcEBygGSBhPIUBAADs=',\r\n'img/ext/sql.gif':'R0lGODlhEAAQAMZ0AEhbdFFkfVhqgnCAmKWEP6aFP6aFQKaFQaOGSJyHY6eHQ32LoZyIZJ2IZICPpISRpoSTp4mYq4qYq4qYrJCdsJGfspKfspOgs5ektpunuZuouZyouZ2outWnJJ+pur6oar+oasCpaMGqacGqbaKtv8KsbqOuwMOtcaOvwKSvwOKuJaeywMCxh+OxJeOyJduzOKm0xaq1xau1xKu1xue1Jqy3xK+6yrC7ybC7y7K7yei8LbW/z7a/zenANurANbfAzbjB0OzCNbzD0rvE0ezERNXInb/L5O/RZfDSavHUavLVavLVa+vVgsvV6/Hbg/HdiPLdiPLdidbc5vTfidbg9drj9vnlkPHlqvbnpeDn9/brr/bssfbssuXr+Pfus+vu8+nv+env+urv+vnxvfr0wO7y++7z++/z+/v1xPL2/PP2/Pb4/Pf5/f/91//92Pr7/fr7/v/+3P3+/v3+/////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAe9gH+Cg4SFgkBCPzk1KxwQhoJDdJOUEI+GPJSTcxBfl4Q3mnJvEAGmhTJ0OzYwJFJqZkYBhSmTo2xqZUW7u4MedDgxJhkVRWhtcW5kLIIYo2tpZmEnVmNYSEQKghRwMygaFhEgSVpOOioGghJramdgXVklS1xRPS0Hgg9pKBsXEw4f5kHx0aKAoAVmxMCrQmWEki1PfLggIGhAEyMYMYZQ4mVKEBoU/wgAQLKkiCNXmLzogADSIBEMGCRoICgQADs=',\r\n'img/ext/swf.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAO7v8cjM06KlquHj5mt9lXuMo97h5VBbaFplc4aVp5Khs4ePmSw6ST5NXk1ecXKFmo2crXuCirK7xcvS2j1LWVxwhTpGUmZ3iJyquGVud5CbpqSwvObo6kNVZniHlcPJzpigprS4u9ba3dvf4qWssbzCxvP29////yH5BAEAAP8ALAAAAAAQABAAAAjpAP8JFIjNmz5v9PwNXPiPXj582tTl05ZPH8N/+tJZyYZwmz5+6fot3BcvXbZ1KLPdW8cvkEiB6b7NU6eun0R62NTZA+ft3wp379CJgwcPH85s8sLVw/dvnLt258LBGzfP37h06LqZi4ct3tNz4uaN8+ZvHtZz7b7tC1SuXTd44bT503dvXNa0+uK1PWcvncd08uSJ65Z2n1Nw78bp84cPnzq43LZiy+au7Tp/8OzNg3vuXTmmTcmZG2fvXbhw3TrXA7dNIL145MqB40b7Xbt69V66Tle5njlz9djFu3fxX7904L59i8ePYUAAOw==',\r\n'img/ext/tibco.gif':'R0lGODlhEAAQAMZ4AAAkOgAnQABBagBCa64fJa8jKbAmLLAmLbEnLbEoLrEoL7IpL7IqMLIsMgBZkABZkbMuNABakgBak7QwNrQxNgBeowBfpABgpABhnwBhpQBinwBioABipgBjpgBkowBkpwBlpABlpQBlpwBmpQBmpgBmpwBmqQBnpwBnqABnqbg7QQBoqrg8Qbo/RABsrwBssLpARrpCR7tCRwturAxvrRJyrxRzrxV1sBd1sCN9tcJYXcNYXCZ+tSd/tsNaXymAt8RbYCqBtyuBty2DuC+EuTiJvE6Ww895fFGYxM96ftB+gtGAgnSs0HWt0Hux0uKtsJTA2uKur+OwsuOxs5zE3eOztZ3F3qTJ4OnCxOrFxurHybvW6fDV1tno8trp8tzq8+Lu9fjq6vjr7Obx9/jt7vju7vju7+ny9+z0+O30+Pr09Pv09PD3+vz4+Pf6/Pj7/fn7/Pn8/vv8/f78/Pr9/v79/f/+/v3//////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfVgH+CgickJyAeg4qCKCgfFxUWHSgli38nJTVMXnFjVjkoJ4qURWh4eGKncE0ZJIMoNml1URMEBUtreEgpD3+OTnhPDActCghAbV80G38kFmB4FAhVeGQxDVxvPSCXFXhhBDCneEkGUnhEKM0VbHYFC2Z4czoKWXdCrh4cV3hKCDJHdkBgYeYMDg2MgshR46OBgQQqsOChIkKCoBIomuBpw2WKljJ4tqBwEWBQiQxGurjBQ+cMFBQrBiwaYWIGjyE/boh4IcDSHwcaQJQIgSECAJ9IFwUCADs=',\r\n'img/ext/txt.gif':'R0lGODlhEAAQAJECAJKm+////////wAAACH5BAEAAAIALAAAAAAQABAAAAIvlI95wN0qQJh0AiVrvUg6RnFGpoVd8DXoWZoLmnpsu76x/NL1CKd7pPvdHJDioQAAOw==',\r\n'img/ext/unknown.gif':'R0lGODlhEAAQAMQeAPz8/MnJyfv7+/n5+fj4+Pr6+vb29vX19ff398zMzN/f3/Ly8svLy/Pz8/T09Orq6vHx8eLi4u/v7+bm5sLCwufn5+np6ezs7MPDw/Dw8MXFxevr6+Pj4+3t7f///wAAACH5BAEAAB4ALAAAAAAQABAAAAV3oMclQWmWiqeqCSEAcExQ6RoIzqFDkgVUmJonAEAMEIhG5gEwODQ14mCKMCw2MUBARXwBBIQD5PKYaLnZb3gh6ZyHabWhsXgT44WBwWCPf6cEfTEChAUFBIFbcIMCho6CjISEkH4wigwDlTADCSoRDCehAQkRHiEAOw==',\r\n'img/ext/vbs.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAACAgPf398DAwICAgP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANwALAAAAAAQABAAAAh0ALcJHEiw4LVt2RImLKhQ20GF2bbRyjbRYUKHCBdmw8YR47VsGDVSBHnQYsiIGzleW/mRZEaJIy02fLiQFkdsMl1ChFmx5cmIAq9xJKkTpUeKJh8ipHVwIi2ZJ7dp07bt2tSWRbOxZAkR49SvYMNuHUt2ZUAAOw==',\r\n'img/ext/vsd.gif':'R0lGODlhEAAQAMZsAC5PqjZVrUhbdElcdT9csFFfcktds0djtF9mcVBquElsvU9xvllyu1t0z2F4v2h9wWR/322CxISIj4aJj4mMj4uNkIia2pSry52o+5G07aayw5S17JO266i0xam1xqax/Je46pm46qy3yae19p276Z286a66y6C96aG96KO+6K26/K2896bA56fA5qrB5qvC5rfA37bC07fD1K7E5bnD1rnC4LHF47PC/LLG5LvG17TH47vH2bfI47fJ4r3J2r7K28DM3cHN3sLO38jQ3Nbd/dTi+dXj+dbj+djk+dnl+dvn+t3n+t3o+uPn893o++Dq+uDq++Hr+uHr++Lr++Pr++Ps+uPs++Tt++Xu++3u8Ofv++jv++7v8ejw/Onw++nw/Ovx/O7x+O3z/O7z/e70/e/0/fH2/fL2/fP3/fb5/vf5/vn6/f///////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfOgH+CQkFAPz47OTQyMVyCfzURkpMRaWlnJgNZfzAWKzc3REQ3D2lqaB1Dmg4jKmxsCgqvbBVoGgO4DB8fr7GztWQ9PAMJGBizyAUXF106AgcGBr3IFWYXWjYCBA0Na95rCwprFGUXWDMCARAQYWEK7u/KF1QuAgD3Tfn6TRMXV08sBDxCUKGgQQkXpCxBIVCQiDEQxYDZsuxCkhIN/3jw8uXahSpQLB4JkbEDFStTokBxogSJkSIbMmpggmPGixYpTpAAwSFDRgFAgwoNGggAOw==',\r\n'img/ext/xls.gif':'R0lGODlhEAAQAPeRAP///zZKZJCu1jdLZe/0/ZC9i22wZ+jw/eLs/Jm24DNwDV6YVVuiWDRYFZWkuTNpD9rm+5OitzVeGnSlcKa2y9zo+02MNu/1/dfl+tbk+jpvHnCbbTtoHjVJGt3o+5PCjo+x4+Xt/PT4/TZjGzReFMzd+Orx/Xul6Dp9J3yk6aW83GGiVHij6+30/cfa+DlwHmGgWJbEkZywm+Xs5bHB16290q6+1LLC2OLs+5Wz4oyv5ICn59jl+pamu5rGlrrF1EiSP1ieUqq5z8nb+Yqu5JyrwMDRwGSoYEeIO0KJNVKXSOHr+56439Pi+8rb+OHs/FOTQPP3/tLi+oit5ZPEjWmtYt3p+1qaSdbk++nw/T99IaS73WB+XKG63TRjEZmovjx3HzVNGM/dz2WnW5243kKAJYephViYRztxIkeFLejv/PP4/j57Hk+OOYWs5ufv/NDg+dbi1jRNGc7e+WqsZZGx4pW04l+hUzJoKKi2zTReEzNtDkaELMzay9Lh+jRTFzRSFzp3Gd/q+2eqX9rn+9/p39rn+qu60YGn5zRkEtnm+zRtDrDA1vT3/qGzn6W0yoSr5v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJEALAAAAAAQABAAAAjvACMJvEGDkY0ah4TkofBIYCQDVcbcuQLFQpoybKK0KDJAoAEAIEOCVNCIgIMfHQ18OKIEQJ8FC2TsEXEhwoCbg2ZQoZNkAgwkcR4IGKpiy4AVAMT4YIACjxEAXtYQEPCkS4AzAAoEicEAzYZCJIYKEEQmQJsCYDSMKACEg6MGBEwIsJIgAB+RZl5I4AJILIQcAbSIFBlGDYIKGUAECKRg0YNEehr8kdMBgQcBfogEcPjlQJYDb0IsEYBBwBw3mwX2wCFWgCGxThCljuQAAiFFPLA0gVNiiIsUsyNIYZLATh0dUyDtOMFidoDn0KNDDwgAOw==',\r\n'img/ext/xml.gif':'R0lGODlhEAAQAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAgKbK8ACAgPHx8cDAwIaGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAN4ALAAAAAAQABAAAAiBAL11G0iw4EBvCAUCWMiwIbduCbs1ZLgNwDZuACAqtMixYsVrIK8p3JatojZtoiyWBCBSYjZqALQBgMQJGwBqJVu+tKgNkqVQ2CribAlgpyhOoaTZxLmNKMmK2KKq/LjRY8eOTklp3bqVqsSrVj1m5crV68KwYJ2CvSoypNu3IQMCADs=',\r\n'img/ext/xps.gif':'R0lGODlhEAAQAMZZABOq4huq4xas4jCn3hyt5CKv4jWx40O340e25kG56U+25Wu54lu+6JGywl/A6He81Xy94aq0t37C5aS7w4PG6p7D4IvK663J2JzO7JTR68bGxpjT6ZrS7p/T8LHQ3p/U7cTO1KTX7pva8rHW5KzY7qXa8NPT08/U1rbb67fb7rze8dnZ2dra2tvb28Dh8Nzc29zc3N3d3d7e3t/f39Hk7dDl8eLi4uHj5ePj4+Xj4+Tk5Obm5ufn59rr9Onp6erq6uLs8uvr6+3r6ezs7O3t7e7t7e7u7u3w8vDw8O3y9O30+PT09PX19fb29vf39/j4+Pn4+Pr49/v49/n5+fr6+v/69/v7+/z8/P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAebgH+Cg4SFhE1MTU1OTkgmhoJUU1RUVldXMjqQT5yTlTYrGoaLT1NTpVdYS4aMp4xSPSlKhpxOUUkuHxUiQIZQVTUkHCUQHQ40hRcSAwoUFgcIBgUohkcjDBgLAQQCABuGQTMgKg0REw8JGYZIRkIeOTs4LychhkZEQ0VBPz8+OzeG8O3z4YMHjx08DM2QESMGjBYsVqxgAakioUAAOw==',\r\n'img/ext/zip.gif':'R0lGODlhEAAQALMLAP//mQAAAMzMZpmZAP/Mmf//zIaGhsDAwPHx8ff39/j4+P///wAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAARXcMlJq712aI3lQIABAAM2CIJxBOi2eUVhKEFsF4AQLAOuBqMggKDj4VaHIGGY2/UAAQNQOSw+DyrmcmnFRafbqvOYDROIY8LXfLai3nD4LhGo2+/3DiYCADs='\r\n,\r\n'w8/about.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALqSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQwxBGRkYOIMUF9TisqvuPhD8Ba8B/lNgBEEAsVHAkK5CKAWJfIP6NLg3Ev4C4GYivUWIPQABRHPXAkAI57jAQg0JMGg1LAfEFIL5DqT0AAUStNPoIiO/ikDsN9MwvSi0ACCBqORQUmn9xBTo1LAAIIHrkekZqGAIQQEOmeAIIIGo59D+BZEExAAggJip6mB2Ho3moYQFAAJHtUEYogHJ1gVgDyj4BxE+QlHoClQlQ6lCAAKIoRIHFzn+gI0AhlgvE/ED8Eog/APEUIH4KVWYExGGUOhQggJgocSSUmQbEIkDcBcQ5QPwAGsLzgPgtVE0k0EOGlDgUIIAoClGg5fZAKhiI1wDxPSBOglaVoDJVEoh3QZWC2gJFQPVy5NoFEECUpFFVIFUArd9BVaQtKD1CQxNUS8lD63kYUAGFPlAfMzn2AQQQC5mO5AWFEBCDGiTroOlwDxA/A+KLQBwNxK+AWBFNqzPUUwtItRMggJjIcCQzNF0aQJt2oMzzCYjtoexYIBYH1fFAzInFiAigGTak2gsQQOREvQcQ+0HZIIckAPEfIP4MDbHvoBAD5rWTQHoRUu6HAVDpkEtqegUIICYSQxOU/jKBmA1JGOZYSWj5CWreJQHVGgEdewbIroFmNGQAcmQhUA0XsXYDBBAjMWNP0IJdFIg7gFiTSLNBZWoz0PyzQO06QHY3EKMX/EuA8lNBZTGQ/oLPMIAAYiKhzDQjwZEM0HRaC42FnzjSqxdQXpiQI0EAIIBIyfWHgJgbGrLEtlFB9b8EtP5fBW3yMSK1Cc5AMyBBABBAjAM57AgMTRag/X+IUQsQQExDwZEgABBAjENlIBcggIZMCx8ggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDABcWJQaLg/cHgAAAABJRU5ErkJggg==',\r\n'w8/antibody.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHk0AsXLlCtGrt69SpJZgEEEAuxCq9fv/5/8+bNDKtWrfofGBjIYGpqykiOA8+cOfN/7dq1DBwcHAy/f//+b2BgQJQ5AAFEdIhqamoyfv36leHHjx8My5cvZ7hz5w7Jofv48eP/y5YtY/j58yfDt2/fGECOfPDgAVHmAAQQSVGflZUFZ8+ePZvk0Jw6dSqcnZqaCqYVFBSIClGAAGIktfX06NGj/9OnTweHChsbG0NHRwdRFlVUVPz/9esXAysrK0NKSgqDqqoqSUkHIIAYyW3mlZeX/wemMZhjwWYRciQLCwtDV1cXXrW4AEAAMRHrKJBlyGKdnZ2MIEeCHAuUJyokgXpQHFlZWfm/qKiIqJACCCCiHAqyBGQZyMHI4qCQBMmBHFtWVvYfmyNBcqCQBKllBAJkR4LMZGdnJypEAQKIqKj/9+/f/+rqagaYpf7+/gyWlpaM6KEGKnLa2trA4nV1df9BpQTIbT09PXC1p06d+r9hwwZw6QGKkebmZpBnCSYFgAAiKkSZmJgYQQaCDAY5aM2aNQxHjhz5jxSy4MBC9jTQc2Aa2ZEnTpz4v2LFCrAjQSFJrCNBACCAiC6egCEJdiwo1EAOAoUKsmNBDkWKWTBAdvjx48f/r169GuRpsIebmpqIdiQIAAQQSeUoMzMzY0REBDg0QCEGqqlAyQJnukJy+KZNm8AOByWdgIAAkhwJAgABRHKjRE9PDxyyIMeC0mxVVRU89JBDENmRQDX/QeUuKOOBQtLCwoLk4gkggMhqPYGSQXt7OyMwhMFptqam5j+2TAkSAzoM7EiQw6FFGlltBIAAoqiZ193dzcjJyQmqs7E6EgRAcqDo7u3tZaTELoAAYmGgELS2toIdcOzYsf/o6ROE/fz8GIGY4mYhQABRteGMnC6pPQIDEEBMtHAkLQBAAFHNoei5ntoAIICoGqK0DFWAAKJp546aIQwQQDRzKLVDGCCAmGgVetROswABRLPiCdT4oGaIAgQQ41AZcQYIoCEzUgIQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAA7CUl6dYjgNgAAAABJRU5ErkJggg==',\r\n'w8/arrow.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFfSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJlHLKYUJCcnO5BrP0AA0TtEHYCONSBHI0AADUTUzydHE0AADYRDDYCh2kCqJoAAGqjMVE9qEgAIIBYSM0MDhQ60R0sChsRqBAggFlJDgspJIAFILyBGMUAAkerQRiqEKKyIugDEG4jVCBBAjKSUj4yMjJSWow1IsWI4d+7cC8TaDxBAA5WZGkGOJEUDQAANhEMvAB1JcqYECKCBcGgiOZoAAojeDj1AapTDAEAAMQ6VsSeAABoyzTyAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAaepph9PbKJ4AAAAASUVORK5CYII=',\r\n'w8/assaycurve.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURX9/fwAAAP////////m0HZAAAAAEdFJOU////wBAKqn0AAABBUlEQVR42mJgJhoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgABCUsqAFSDkAQIImcmEBSDJAwQQCUoBAogEpQABhMxkZGTEpxQggNBMxVCNJA8QQJgOQFWMJA8QQNjcyohdKUAAYfUWI1alAAGEPQQYsSkFCCAcgcWIRSlAAOEKV5jnkOQBAgh3FDCCAZI8QACREFsAAUSCUoAAIkEpQACRkF4BAoiEXAAQQCQoBQggEpQCBBAJSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECiASlAAEGAFFnEo9LI8nlAAAAAElFTkSuQmCC',\r\n'w8/back.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYByPTE4OTmZbSDtBwggYh3JOtCBBRBAxDiSfTDELEAADQpHEuNQgADC50jhwZRXAAKIBZumlJQUhblz5z4gxSKgxxKAVDwWqQdAsxIp9QhAALFgcSQod78i0ZENQKoei9QFIC6kRogDBBC2clQDGALfSHDkfDyOdASa9YEaDgUIIGwOvUuiIxNo7UgQAAggFrRo1wQafp0IBwoAKZAjA7BIL6BGmkQHAAGEnkaZiXTkfiA2oJcjQQAggNCj/vNgdCQIAAQQI3ILn5GREZ8jFYDUehyOpBjMmTOHEZ88QACxEJlpDKAhKTBQjSeAACK2mbd+IB0JAgABRKxDA4H4w0A6FCCAiHIoMJOAy8WBdCxAABGdmYjIUIVAD02gpFGCDwAEEBOaQ+QIhOwDaMhewCLdD62paAIAAgg96v8QkQw+4HFsAq0cCxBAjOhBTij60Qr/fhx1PcmFP6GoBwggDIcC63seoCVf6N0wIeRQgADClut/kBIS0JBbgEUKXElAQ55iABBATFiqsj9AwznIcGwjEB9Aw6DQLKCGQwECiHGojOYBBNCQGSkBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwAGoMizLJ4qVwAAAAAElFTkSuQmCC',\r\n'w8/benzene.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACR7FBGRkaCOCUlxQGIC/CpIRUABBAjKQU+IQuSk5MdgFQ9EDtAhQ4AceLcuXMfYFNPit0AAUQVhwIdmACk4pEc+AFKC0DZjUDHTqDEsQABRJFDoQ4EhaACkgMnAvEEqCPno4VuINDBH8hxKEAAkeVQfA6EOQSoBuRQAyjuR1IHSgobSHUoQACR5FBgBgE5bD8+ByKF9nogFQAN3YXQ0DWASm+AOvgDsfYDBBALiZlPAYpxOhAJwDJQATT6A4EYFhMgDzgAPRMITRIEAUAAkVuOXgA6sAGPIxmAcoVQx32AhuR5qOMNobQA1NFEAYAAIrvAB6VBIP4PwngcuwHqsANImQvkuERS7QMIICYyop4BKZQYCEUdqAwFYkdQEYVUZJEMAAKIXIdeJNUiUFKBhm4gmoeJAgABxMJARwB07AVosiHZwwABNGQaJQABRKpD5UmNMmoBgAAiN41eIDVTQGsqGNAn1cMAAURJ1H+A5uRGQi0qIAYVS/eRHCuA5GGiAEAAkZuZ+qENjAYSmnwMUPYGciwECCBSQ3Qhck0DdEwBjhDcD20TwBy5AIgVQRUAtEFjQKpDAQKIicTiZQFaTdMPchRSccOAFoowByZC6/b70NoJ1k4lOo0CBBDJaRSppimEWuQADd0AqJJGPA5UQErbirBylRgAEECUNpwNsDXfoGxQFOcjlRQPoEkHpcVFrP0AAUStrkgDUkvoA1rOfgDtiiygpCsCEEBU69xhCV28DiTVoQABRO1eKKyNeZGQA0nthQIEEONQGR8FCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMAAkoAMduhLsOgAAAABJRU5ErkJggg==',\r\n'w8/bold.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAA0cWhjx8//r9y5UqKGhUAAcRCD0d2d3czfPv2jeHRo0f/S0tLGckxByCAGGnZekJ2JBMTE8O/f/8YBAUFGRobGxm4uLhIcjBAADHR05Eg8P79e4Y9e/aQbB5AADHR05EgYG1tzeDn50dy9AMEEBO9HZmYmEhWGgUIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCmoeBIEAAIIKah4EgQAAggpqHgSBAACCCSHbpixQq6OxIEAAKIZIdmZ2cz8PPz09WRIAAQQGS1noAh+r+jo4Ph2bNndHEkCAAEEAPIoeTiI0eO/KdEPykYIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAzBhW1bGrbhsAAAAASUVORK5CYII=',\r\n'w8/boldhash.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs9LElJSdEFUrVAnDZnzpwP5JgBEECMtG49AR0pDqQuAbEYEF8AYkdyHAsQQDSPeqCjXgIpdyAGOc4AiPcDHS9AqjkAAcRCp+i+AOQ7ghwJdWw/ECeSYh5AADHRMLr3AHEoLARBjgVFOxAfAOJCUs0ECCCapVGg4wygIShASdqEAYAAYhnM0Y0MAAKIaTBHNzIACCCqRj21oxsZAAQQy2CObmQAEEBMgzm6kQFAAFEc9bSMbmQAEEAsZDgMRMGje+7cuReSk5NpEt3IACCAyIl6lOgGOlIA5FhaRDcyAAggkqOekZGRAeg4ukQ3MgAIILIyE1IIfkCKbpoCgAAiO9fTI7qRAUAAMQ6V0TyAABoyXRGAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAPWhiCrU78chAAAAAElFTkSuQmCC',\r\n'w8/bracket.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKHSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAsxir5///7/yJEjDLy8vAxsbGwM//79A4uDql8QVlFRYRASEgIJMWLT//79+/+3b99mYGRkBGNwCDExMfz69Yvh8+fPDFZWVgzc3NyM+NwAEEBEOfT69esMx48fBzuSmZkZbAmsjQCyDOgQBnd3d5wWXbx4keHYsWNg/TBHgjz7588fsH4ODg4GW1tbvG4ACCCiHAoyCBQSjo6ODEpKSgx///6FhygIAEMDr34TExMGdXV1MBsWoiAPP3z4kGHHjh3gmCIEAAKIKIeysrKCaTk5OQZRUVFGUtMXDw8PIxBjk/oPCl2Y+fgAQAARlZlA0QQKgd+/f1M1g4BiBpYMCAGAACLKoaDookW7FZYZiQEAATRkiieAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQggohwKquaQ25JUs5yJ+HACCCCiVIIaJKTUy6TU9SDPE+NggAAiqpn38+dPsKFXr14Ft/aRW/ggICUlxSAgIIAzuD9+/Pj/yZMnGC18UHsUZAao8UwIAAQQUQ4FGQRy7JkzZxhOnTqF0pr68eMHg4ODA6iFj1M/SN+ePXvADXD01hioqQcymxAACCBGYqMT6Pv/LCwsDCCM3H4EWcrJycnAz8+PM0SB/aL/X758wUifIHNAjlRQUCCY+AECiHGojI8CBNCQKZ4AAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAUnMlOE1bpzgAAAABJRU5ErkJggg==',\r\n'w8/btncir.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPpSURBVHjaYmSgEkhOTlYAUgpowh/mzp17gRrmAwQQIwUOMwBS8UAMoh0IKL8AxRuBDt9Ajn0AAcRIhgMTgFQ9ttCDOgYZKOBQtwCIJwId/YBYewECiJECB4IsBIXORiA+ALT0Ax69oBD3B+IANP0TgXgCPr0wABBAjEQ4UABIrUeKXlAoNIIcSYwFWMwDOTYfzbxAQmkZIIAYiUiH+4FYACrUCDSwgUqZD+Tg+UhmJwLNXoBLPUAAMRLpyAtQgy4wUBFAY2s+NEngdSxAADES6UhHcqKZBAeDHJuAz7EAAcSIw5f36eVIHI4F2XkAWR4ggJiw6FlPb0eCANCeRGixBXYDNMDgACCAmLAUQQ5IUUAXRyKBQmgAgRzZjywBEECMaFF+HlrOkZS7gXqJCTFizXKA5g+UJAAQQMghmgB15ANiHQlyIDGORPcMPn1Qh8GSQD1MHCCAWJDU5MPKSnJCEV+IwdQS6ymoG8DJENTYAVW1AAHEhFQcKSBVi0Q7EuRAQtFKbLQjqX+A5A5wSQAQQLAQjYfSBKtFdEcSSqswNTAapAbEJiJ0N0IrAlAboQEggGBp1AFJklhfE5XmSEkiaAAWogagjA4QQDCHGkDpA6TmbmzJAD05kJA2kc1CbjYaAAQQEzR9wlrjH0gNTXLTIZEA7lCAAGJBar1cILfcxOZIdDXkhCoQPITSAgABxMQwRABAALGQmG5oopYYABBAJDmU3KoSTy1EtN0AAcSE1hGjtAVE7RjnhzEAAogJqd2nQAtHkpmJGNCLTYAAYkLqYMFaLuQ2fElyJJGhD+8AAgQQC1JBnwCtrg5Q07EUdv4YoK25BwABxIRWdQbQqTVPjDJ/5NoSIICYoBo3QFtOCkg+GTBHQhvxMHcsBBEAAYSc6xegtUvxWkZODidBTwG0xnwAy+wAAcSINhp3H8oNJGUwi8pdEQVol0gAuesMEECMaIoaoM1/UDJQHIDOHcgN66HRDhrPcoSJAwQQel0/AVpUwUYw6O3IAqS0WYgsBxBATFjagIGwEgA6KEAvRyYgdZEL0YePAAKIGV3D+fPnXxgZGT2E+swAyFYAim2kgyNhgbIA6MhKdDUAAcRIrGaoLz/QKLr7kRyZiE0dQAAxkuDTB9BceIBKDlSAOjCAkCNBACCAiBnIdUAaj4KFbiMpw9pYCvMCaHktgJQmJ+DTBxBAjCQY3o802gar2hYyEDnyDK3xYMPjAkhmFBIz7goQQIwkhoYBtJwNwNIJA4XwRTRxeWjz0QGL+on4RpjRAUAAMVKQvgIYENM3xADY6MdCckauAQKIkUoZwwHqYAEs0gdgTTVK7AAIMAA53o7i86G+RwAAAABJRU5ErkJggg==',\r\n'w8/btncir0.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARGSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZDHkegR0HYnMx/cLQ9+0fG8Pjn8JgR5//IgdmozsY6NgFhOwHCCBGIkNxPTSKwcCa7zaDi+BVsONIBSCH7nmvzXD0kyqyMChJBOILXYAAYiQiHe6HZhBwyCWJH2IQZv1CceZ7+5uHYd5LO+TkAXKkI670CxBAjMQ4EhSlfsLnwKFIbQAK3RWvLQg6FiCAGIlxZKnsNrKimZTk0P3YC5yecTkWIIAYcaTJ+/RyJB7HKiKnWYAAYsKiZz29HQkrQUD2QUsOWAaGA4AAYkYLzQIglQFix4ofZdDhfsJAT8DP8h2Mz3+RB3EVjIyMPp4/f/4EiAMQQMxYiiEOQ56HDMEiZxgGAsiyvwMngxe/wAWNBdCxM4GO/QEQQMhRXwArhiJETzAMJECyXwDqLgaAAEJ2aD6sMKdGOUkJANkPcgeyuwACiAka7QGw0ASVlzQBjMwkKUdyhwDIfQABBAtRf1jOo0loMgKt+f+X5FBFKnH8AQII5lBwPQ5qYNDGkf/I0orkHgeAAGKC5nYF9CYadRzJSLYj0dyjABBATMiNXnVOajoU5Mj/FJmA7B6AAGKiXd79T1XTAAKICRbt9KoqyalaQQAggJhgxRIX869B6VCYuwACiAna6cLXvxlQAHMXQAAxMQwRABBATNAOFrxNOJgAsnsAAogJ2Dh9ABsouPlNYpBFO9w9HwACiAmpF8hw8/vgSqdI7jkAEEAwh24EEaAGK7QrMOAA5A5oAxrsPoAAgjl0A6JXqDMoHIrmjg0AAcQEHcQCpdEFsO7rQIcqyH6QO6BgAch9AAGEXDw1IhTpDHhoIgUW2F0AAQR3KDT3TwCxN701HLCiCmQvyH4omAB1FwNAAKEX+I2wcnXqMxe6JwGQfSB7kQfQYByAAELpH4B6e8Be30UgMwGk6cpXGQYzvnsMrIx/6eJI0AAEtPfJAB00uwHjAAQQRkcG6NgHQMc+BDIDPv3lootjYY5ESm6JQEduQFYDEEBYe1xAx15Ad6wy52vw4AAt0iQoutEcuQBdHUAA4ewaojv24EcNcKudmt2VTW+NGGY9d2QAmY/PkSAAEEDEDOQ6wMajQHwRYO8Q1JW1QvS7SQbHPqmCHfnmNw+8LoemyQO49AAEEFFD49AOYD8ok8EbtEy/GKz4bzOAhn+I6WuB6m1QlXjsoyp6aQIKwUJCY/kAAUTqZIMDdOQiAFePUZ3zBZLjJBjwNMpBmaWR2BkSgAAia/oG6GAFqGPjGYibuoEBkKMWMkBmQx6QYidAADFSmiGgycKAATEZIQ/tMIIc8hCpGXmB2KkabAAgwABJk5+jk+MssQAAAABJRU5ErkJggg==',\r\n'w8/btncir1.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARrSURBVHjaYmSgEkhOTnaAMgWA2ACILwDxB5DA3LlzD1BqPkAAMVLgMJBj4oHYAeowQgDkcJCDFwIdfoFU+wACiJFEx4FCKwCI64FYAZsada7ncPbNb5K4jHoAxI1AvAHo6A/E2A0QQIwkODIB3YGy7G8ZbFT/M2hoCjKI8P1iYGf5g6Hv5x8Whjef2BhuXH/PcOQ2I8Pjn8IYDgY6dgEh+wECiJHIUFwPjWIwsBd7wuDpIsEgwvud5CTz5jMnw/Y9LxgOvpJBFgYliUB8oQsQQIxEpMP90AwCjtaMUCEGXo5fFGe+zz/YGGasfoecPECOdMSVfgECiJEYR3Ix/WKIMf/JYKbHQHVw6hIDw6zjvAQdCxBAjMQ4si6CiaxoJiU5NK34x/DtHxtOxwIEECOONHmfXo7E41hF5DQLEEBMWPSsp7cjQQBkD8g+kL3QPLEeWR4ggJjRQrMASGWA2DkufxgUJH4y0BNwsf9hkBNkZjhxjwXEVTAyMvp4/vz5EyAOQAAxoUU5qJxkMOZ/wqCt9IthIADIXpD9UFAPdRcDQAAhR30BrBiKCRBlGEiAZL8A1F0MAAGE7NB8WGFOjXKSEgCyH+QOZHcBBBAjNNoDYIm3P/4njRwKCpN/JFUIhQvZYdxAgACChag/rO6mjSMZSXIkLFRB7oG5DyCAYA4F1+OgBgZtHEmeuUjucQAIICZorgK3iECtoMHiSDT3KAAEEBNyo1da6NugcSS6ewACiIl2eZe6yQgggJhg0Y6UcAcVgLkLIICYYIU8F/OvQelQmLsAAogJ2unC178ZUABzF0AAMTEMEQAQQEzQDha8TTiYALJ7AAKICdg4fQAbKLh3//ugciiSez4ABBATUi+Q4ey1j4PKoUjuOQAQQDCHbgRLfJQB98MHAwC5A+QemPsAAgjm0A0wkSMnvw4Kh6K5YwNAADFBB7FAaRQ8WrHxGt+AhyrIfpA7oGAByH0AAYRcPIHGgsC9wIEOVZD90N4o3F0AAQR3KDT3TwCxl18RGbCiCmQvyH4omAB1FwNAAKEX+I2wcrVn9Q+6JwGQfSB7oeABLDRBACCAUBwKTauJYJ/95mHoWPKNbo4F2QOyD2QvFCQiD0AABBAzugZgP/oBsD/9EMgM+PSXi+HytU8MljrsDCxM/2juSKQhSZAjNyCrAQggZmwagY69gO5YHWUe8AABLdJk/8ov6I5cgK4OIICYcRmA7tg9l5kYuH9+ZlCSo15S2Hv0J8OEvTwMIPPxORIEAAKImIFcB9h4FHiMiPULQ6wDK0UjKVfvsTEsPvAbOT2C0mIgvkkJgAAiamgc2gHsB+IEeIOW6ReDk/xbBlMTMaL6Wk/fcTGcPvOKYd9DYeQykgFa0RQSGssHCCBSJxscoCMXAehysEkGIyVWuNi5e78Z8DTKQZmlkdgZEoAAImv6BuhgBahj4xmIm7qBAZCjFjJAZkMekGInQAAxUpohoMnCgAExGSEP7TCCHPIQqRl5gdipGmwAIMAA2Smb3M+iUZQAAAAASUVORK5CYII=',\r\n'w8/btnrec.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHaSURBVHjaYnz37p08AwMDLxBzATELEDMyQMB/hoEByPb/AeJvQPwZIIBYoI7kB2I2qKK/QPxvgB3KBMTMUDewggQBAogFGpJsUEXfgfgn1CcD6VCQu9iBmAPqNi6AAGJBim6QIz8B8Vcg/gUN1YEATFDHcUP5nCA3AgQQzJF/oCH5FerYnwPsUHYomx0a9YwAAcSClHD/QkPy5yBwKAPULX9hSRAggFigjP9Qh8GxoKDggDj0/fv3DGhuAbsPIICYGIYIAAigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIINj4KGw4Go6ho2oDFXjIGOw+gACCjY+COKAxc9BIL2wQdaAHctmgbgJPPgAEEGx8FDZmDhuOHixD4+xQt/0BCCAwAXUsB1QhO8PgmmwAT+MABBBIADSPwwr1BSeUHkzTN6DY/QYQQCCHfoYqGEwTYqCA+s2ANCEGEGAAoXBOakgMlioAAAAASUVORK5CYII=',\r\n'w8/btnrec0.png':'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',\r\n'w8/btnrec1.png':'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',\r\n'w8/butane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC',\r\n'w8/button.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAD6UlEQVR42mJkoBJITk5WAFIKaMIf5s6de4Ea5gMEECMFDjMAUvFADKIdCCi/AMUbgQ7fQI59AAHESIYDE4BUPbbQgzoGGSjgULcAiCcCHf2AWHsBAoiRAgeCLASFzkYgPgC09AMevaAQ9wfiADT9E4F4Aj69MAAQQIxEOFAASK1Hil5QKDSCHEmMBVjMAzk2H828QEJpGSCAGIlIh/uBWAAq1Ag0sIFKmQ/k4PlIZicCzV6ASz1AADES6cgLUIMuMFARQGNrPjRJ4HUsQAAxEulIR3KimQQHgxybgM+xAAHEiMOX9+nlSByOBdl5AFkeIICYsOhZT29HggDQnkRosQV2AzTA4AAggJiwFEEOSFFAF0cigUJoAIEc2Y8sARBAjGhRfh5azpGUu4F6iQkxYs1ygOYPlCQAEEDIIZoAdeQDYh0JciAxjkT3DD59UIfBkkA9TBwggFiQ1OTDykpyQhFfiMHUEuspqBvAyRDU2AFVtQABxIRUHCkgVYtEOxLkQELRSmy0I6l/gOQOcEkAEECwEI2H0gSrRXRHEkqrMDUwGqQGxCYidDdCKwJQG6EBIIBgadQBSZJYXxOV5khJImgAFqIGoIwOEEAwhxpA6QOk5m5syQA9OZCQNpHNQm42GgAEEBM0fcJa4x9IDU1y0yGRAO5QgABiQWq9XCC33MTmSHQ15IQqEDyE0gIAAcTEMEQAQACxkJhuaKKWGAAQQCQ5lNyqEk8tRLTdAAHEhNYRo7QFRO0Y54cxAAKICandp0ALR5KZiRjQi02AAGJC6mDBWi7kNnxJciSRoQ/vAAIEEAtSQZ8Ara4OUNOxFHb+GKCtuQcAAcSEVnUG0Kk1T4wyf+TaEiCAmKAaN0BbTgpIPhkwR0Ib8TB3LAQRAAGEnOsXoLVL8VpGTg4nQU8BtMZ8AMvsAAHEiDYadx/KDSRlMIvKXREFaJdIALnrDBBAjGiKGqDNf1AyUByAzh3IDeuh0Q4az3KEiQMEEHpdPwFaVMFGMOjtyAKktFmILAcQQExY2oCBsBIAOihAL0cmIHWRC9GHjwACiBldw/nz518YGRk9hPrMAMhWAIptpIMjYYGyAOjISnQ1AAHESKxmqC8/0Ci6+5EcmYhNHUAAMZLg0wfQXHiASg5UgDowgJAjQQAggIgZyHVAGo+ChW4jKcPaWArzAmh5LYCUJifg0wcQQIwkGN6PNNoGq9oWMhA58gyt8WDD4wJIZhQSM+4KEECMJIaGAbScDcDSCQOF8EU0cXlo89EBi/qJ+EaY0QFAADFSkL4CGBDTN8QA2OjHQnJGrgECiJFKGcMB6mABLNIHYE01SuwACDAAOd6O4vOhvkcAAAAASUVORK5CYII=',\r\n'w8/button2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKaSURBVHjaYvz//z/DUAAAAcSCLiArKwsS4wdiQSjNi00dDQAoxH4B8SsgfgHEXx4/fvwXJgkQQIywEAU6kBFIcQKxDBCLQtmsQMwExbR2JIz+DcSfgfgDED8EOvYbSAIggMAOhYaiABArAbEIEDNDNdE7XTBCMQPUwS+B+BrQsT8BAggWpazQkBSBht5vaDT8AeJ/dHIkEzSJsUFpkJuEobH7BCCAYA4VgwoyQx35BYi/Qh37l04OZYY6khuIeaAOBfHFQQ4FCCCYQyWBmAMpQYMc+RGIf0Ad/o8OockKdQMDUqgyQR3NABBAMIdyQdPGf2h0/4I68gvUoX/pEJqsUDYn1A3/oW4CiwMEEAuSj2DgH9Rhv2FpFbmYoAUAZmZmpAz0F1sMAgQQE1qOY0B3MK0dCQJQO7A5EO4mgABiYhgiACCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggJAd+h+LHDPS4ACtByCYsQQc3E0AAcSCw/GwIRZWqEH0GtJhxeFgBoAAgjn0D5RmZEAM/cEGrOg9SAYbIIONkoDtBgggmENfQRWwMyCG/kAANGA1EMOObFCHghwJGrBjAAggmEMfMUBGnNmhYjxQxQM5kAuLzbcgBkAAwQR+QgV4oI5lhcoN5NA4KCa/A/FzEAcggFiQ0sFraLALIjmUEckAWgLkAIENe36DuukTSBAggJAdChK4B02XoFAFDUnz0jlE/0GTG2i0GzTR8Obx48fgpAcQQIxDZUIMIMAAL8eFn1Tn28gAAAAASUVORK5CYII=',\r\n'w8/buttonbg.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANDSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxY/JrhM8N7IOsjw3cg6zsQ/gbCPwysDCwMnECSF0jyQ7EYkATyY8mxCyCAGMlJo88Y3i9+yvCOAYS/MPwkWh8PAzuDJIMQgzSDAIMMgzBJDgYIIJIc+pLhw+IHDG8Y7jO8AobZPwqikYlBnkGUQZFBhEGCQZAoBwMEENEOvcHwfPFtYFiCophaAJQcVIBhrMkgRdCxAAFE0KE/GH4tvs7wnOEqw2OaZRRNYELQYZADJgwmnA4GCCC8DgU58jLQgTeBDqU1UGOQYtBnUMDpWIAAwls8gUKSHo4EgVvAZHWF4RFOeYAAwulQoAMX0zK6sQfMEyB+thibHEAAYXUosGxcDPLhQIA7wBh8ASz+0MUBAgirQ+8BCyJq5m5SAMje+8AiEB0ABBATZmH+bjGonBxI8BAYp08Y3qKEKkAAYTj0KbBCpKQwpwYA2f+U4QOKGEAAMaHX3aBqcTCA50B3ANsO8FAFCCAUh74BSpFSd9MSgNzxCphiYQAggFAcCmpiDCaAnKEBAogJl8RgcyhAAKE49PMgcyiyewACCMWhoEbvYALI7gEIIBSHglrmgwkguwcggFAcCuo+DCaA7B6AAEJxKKiPM5gAsnsAAgjFoaCO2GACyO4BCCAm9K7BYALI7gEIIBSHCgH7iYMJCCK5ByCAUBwqysAH7tIOBgByhygw8mEAIIBQHMrNwB4rDQzXwQCkwfHLAe8/AQQQE6YCQXC/e2CHb5gY0AMMIIAwXCTFIBSryCA2oA4F2S+FNjABEEBYg06ZQXzASgCQvQoMIhjiAAGE1aEiDLyxoH72QACQveIMAhh9e4AAwpkY1RkkY7UZZOnqSJB9IHuxyQEEEBN+jdIgjXRxpDp4DAq3XQABRHDs6RfDn8VXgV0tWg5GgEIS5EgOBjacY08AAUT0aB5o5OQWDUbzQGkSV3QjA4AAIml8FNj5W3yX4SVVxkdBRZASMNsAax+ixkcBAojMEed3i0H9f3JGnKXBI86C4PKaFDsBAoiRkumbrww/F79m+AR2LqExfFCFCCz2UKpFUgBAADEOlXkmgAAaMtM3AAEGACiI5SZ+0bsqAAAAAElFTkSuQmCC',\r\n'w8/buttonbg2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMbSURBVHjaYpz+YzkjAwMDDDNhwcjyMIDMJhf8R2PD8D8s+D9AALGgOZAFCTMj0eiOpaZDkR35F4j/INEw/A8ggJAdygrEbFDMjsSGOZYJS8hSw7GwUIQ57hcU/4TSIPt+AwQQC1JIghzFAcRcSJgD6mhWtJCltkNBjvwNddwPIP6GhMHqAAII3aEgx/ECMR8U8wAxJ9SxLEihSk2H/oOGJMiR34H4CxB/ggYMAyy0AQII2aHsUIeCHCgMxIJALAB1LAcNQhU9NH9AHfkBahcDktxvgACCOZQZKUT5oI4UA2IhIOaHirPT0KE/odH8EeoOBqSkAAplZoAAwpZGeaAhKQR1rCBUDDn6qQWQo/0L1A4GaCYCOfwzLEMDBBAs1zMjRT8n1GH8UEcKQ9MtBw0d+gPJkTBHI+cNZoAAYkGKSmZo2mBHyv08SJmLk4YOZUNyJNbSBiCAWNBqJVjIwhwMczQnmkMZqZzjYdHNjuRAlPIbIIBYkGoadAczo9VUMA9Q26EMWGpE9AqGESCAWNDqb0YsjsZV/1OrCsXXtoCXMAABhKtaxCdGrQKfkRS7AQKImhmDpgAggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQKICal/ja3PzYBjxI2awzlE2Q0QQCw4NOIbAqTmaB7WIUYsmAEggFiwOBI2soY+9PcHKRao3QtFxjC7URwNEEAsOIb+YMMpsNE1NqTeIi369d+h9sDs/I3kaLCDAQKIhcDQH/owCy1HSj5D7fuG5OjfUHf9BwggFgbUkV7kob+PaMMs9Bh7eg+19wvUHT9hIQsQQCxIin8xoA79oQ+z0Gs07x3U/i9Q94Dc9QcggFiQ0iZsBO0TA2J88hdUA73HR99D3fEN6oa/AAHEghb83xgQI72/ofyBGnGGORQc/QABhB71sDFzWHR8Zhj4MXxw1AMEELJDGZES+G+o7wbDrAjYoQABxIKk8Dea7wbVPBNAgAEAs9M57GQmTiUAAAAASUVORK5CYII=',\r\n'w8/buttongreen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANCSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBBALJZq/MPxwfs3wmeE9kPWR4TuQ9R0IfwPhHwZWBhYGTiDJCyT5oVgMSAL5e8mxCyCAGMlJo88Y3js/ZXjHAMJfGH4SrY+HgZ1BkkGIQZpBgEGGQZgkBwMEEEkOfcnwwfkBwxuG+wyvgGH2j4JoZGKQZxBlUGQQYZBgECTKwQABRLRDbzA8d74NDEtQFFMLgJKDCjCMNRmkCDoWIIAIOvQHwy/n6wzPGa4yPKZZRtEEJgQdBjlgwmDC6WCAAMLrUJAjLwMdeBPoUFoDNQYpBn0GBZyOBQggvMUTKCTp4UgQuAVMVlcYHuGUBwggnA4FOtCZltGNPWCeAPEzZ2xyAAGE1aHAstEZ5MOBAHeAMfgCWPyhiwMEEFaH3gMWRNTM3aQAkL33gUUgOgAIICbMwvydM6icHEjwEBinTxjeooQqQABhOPQpsEKkpDCnBgDZ/5ThA4oYQAAxodfdoGpxMIDnQHcA2w7wUAUIIBSHvgFKkVJ30xKA3PEKmGJhACCAUBwKamIMJoCcoQECiAmXxGBzKEAAoTj08yBzKLJ7AAIIxaGgRu9gAsjuAQggFIeCWuaDCSC7ByCAUBwK6j4MJoDsHoAAQnEoqI8zmACyewACCMWhoI7YYALI7gEIICb0rsFgAsjuAQggFIcKAfuJgwkIIrkHIIBQHCrKwAfu0g4GAHKHKDDyYQAggFAcys3AvlcaGK6DAUiD45cD3n8CCCAmTAWC4H73wA7fMDGgBxhAAGG4SIpBaK8ig9iAOhRkvxTawARAAGENOmUG8QErAUD2KjCIYIgDBBBWh4ow8O4F9bMHAoDsFWcQwOjbAwQQzsSoziC5V5tBlq6OBNkHshebHEAAMeHXKA3SSBdHqoPHoHDbBRBABMeefjH8cb4K7GrRcjACFJIgR3IwsOEcewIIIKJH80AjJ7doMJoHSpO4ohsZAAQQSeOjwM6f812Gl1QZHwUVQUrAbAOsfYgaHwUIIDJHnN85g/r/5Iw4S4NHnAXB5TUpdgIEECMl0zdfGX46v2b4BHYuoTF8UIUILPZQqkVSAEAAMQ6VeSaAABoy0zcAAQYAKE7lJiVp97oAAAAASUVORK5CYII=',\r\n'w8/buttongreen2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKQSURBVHjaYpz+YzkDEDAyQAAjGmbAQtMC/MdCI2MGgABiQXMUExQzotEMNHTsfyT2PygfmQZhBoAAYkFSxIzkUGY0PiONQhY9BGEO+wvFMHv/AgQQC1KowRwIEmOF0sgOZqRhiP5Hc+AfIP4NpcFqAAII3aEgPhsUs6I5mJEGjkVOh8gO/I1kD1geIICQ0ygz1GEgR7IjYVYahip6aIIc+BMpX8CTA0AAIYcocrSDHMgJxBxQh6OHKrUdCgvNX0iO/Ick/hcggFiQMggTUqiyQx3JiRaqtHTob6gdMEfCkgE4JgECCF9mYkNyMHr0U9OhsJCDORLmaBbkkgcggFjQykjkookFKUOxYSlzqRmif5Acia20YQAIIBYctRKyg5nRfEeLEGVAClX0jAu2DyCAWLBUk4xYHM2IVvhTu8D/h8VxKJUMQACxYKkeGYnA1ASE7AHTAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAueAStcmBbjTvjsAtMAAcRChCP/ofUWadELRaaxOhYggFhwOBJ5ZO0vUr/7Hw379cj2oTuaASCAWHCMWiCPrCGPYNBypAQ2ivcHi4MZAAKIhQFzABXmwF9ojqTH2NNPqL3IDga7DSCAWHD4DHnoD3mYhR6jeT+g9v9GDlWAAGJBcyTyCBosTf5moP/46E/0UAUIIBYswc+I5Mg/DAM34vwLKVT/AwQQcogyIuVu9DHLgRzDB6dRgABCdyhyev3DMPCzIjD+P4AAQi6e/mLx3aCZZwIIMAB2SgxV6z2ozgAAAABJRU5ErkJggg==',\r\n'w8/center.png':'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',\r\n'w8/chain.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFaSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGcm2KDk52QBICQDxhTlz5nwgVT9AANEzRPuBeD8QG5CjGSCAmOgRmtQAAAE0ZNIoQAANGYcCBNCQcShAAA0ZhwIEEAu1DAIWPwpASgGPEgFKzAcIIBYqejoBiOtpFaIAAcRCAzMfQDEu8IEcQwECiBYOXTh37twGfAqANRPJhgIE0JDJTAABNGQcChBAQ8ahAAE0ZBwKEEBEZyZoOZmAR4k9LR0KEECk5HoFWpaThABAAJHi0FtA3EiEugO0cChAADEOlUEygAAaMpkJIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQIMAJDxG1S5GwfoAAAAAElFTkSuQmCC',\r\n'w8/chargen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATTElJ4Zo7d+43bHLJyckFQKofSegAUK0jPktI1QNUzzpnzpzfyGIAAcSExZF8uBwJBf5AvACIQRYVArEDEQFCkh6g/b+B7uBAFgMIIEb01hN6aAJ9ZwCk5gOxAZKyRqCaBqAcyML9RMYeLj0PoHIL0DUguw0ggDCiHhjk34CakIXWQw1zRDMcBC6gieMDuPSAHD4f6AFQcniAFmicQPd8B7EBAgjsanSMll7+Q0OBZgCXHUAxCZibAAJoUOd6YAi/gLEBAmjIFE8AAYThUEZGxkHpUIAAGjIhChBALFTMELgy3AVgWvtAqfkAAcRCRU/jKk9BRdEBSg0HCCAmbIXsYOxCAwQQNUMUV8F/gRqGAwQQ1RwKTIcHqB2KwHTPD6Q+gtgAATTYc/13GAMggLC1ngaN44H1/C8YGyCAsDmKDUuhr0DDel4AhzhKsgQIIEZsORzZoUANoAZvATWKGBxAAZrGFXE18UAAIIAYcRVFaI5NoGGogiqDBciVAjY3AQQQ41AZdgQIoCFT1wME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAOVBownGMQPHAAAAAElFTkSuQmCC',\r\n'w8/chargep.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJlSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsWATZGRkxKkhOTm5AUjVQ7kfgDhx7ty5G/CoFwBS+4HYACr0AIgdgXoeIKsj1OYACCCMEE1JSWEl4DmQIw2BFoF8swDJAbgAWB6kHqoH5DkFUkMUIICwhSgjWoiALOpHFgNaeAHK/AjE8UA19njsEIA6jgEpFvqBemBiF4DmFRJyKEAAYTgUqOkXmtB6IJ4IMhDKb0SSA4XoASICBNmhhVDHw8B8oKM3EjIHIIDAaQOGgRpEsKQxohusoPQLUg/E+0nQAwrdBmR3YMMAAYSeRr8MQIb+SIwigABiQov2H4O1eAIIoCFTjgIEEAslmkHpC614ghU7BujpFBhbjpTYBRBALBR6FORIBxxFkgM1QxQggCh16EIgPojEt4c68AFUjmoAIIAocigwOhdgqV7BDgXKNVDToQABNGQyE0AAMaGFiNxgdShAAKGHKBuF5j2AVoUXqO1QgABCSaNz5sy5A0xblKbZBbQIUYAAYsJSNspjETOgYaz6ExMDAAGELde/RuODWkv7gY69QANHKkBbVgRbYAABxIitZQ1sPEsAo/EFUogqkNPYJTK5HCCmhQ8QQDibVUDHsdMzVxNq5gEEECM+n+DrO9HCofgAQAAxEWh0sDAMEgAQQIzEjDjTMmSJHfEGCCAmYg0Dhi7zQDkSBAACiHGojOEDBNCQaZQABNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAJHg35fPzWQ0AAAAAElFTkSuQmCC',\r\n'w8/chemdraw.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE9SURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBALsQrZqk1R2mW/Wk8z4pNHVwOTJySGDgACiIUUxxFjOIwPkgdhfJYTAwACiIkcxxEDkB2KjU+suQABRHYaBBlMrqNx8bEBgAAakEyCLb3iAgABxEQPSygBAAHERK+QwJce8QGAAGIiNbFT6hgYn1hzAQKIhdjEDSs2CCVwYtSQAgACiHGw94sBAmjQV3UAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABBgDw7WZP06/zpAAAAABJRU5ErkJggg==',\r\n'w8/chemspider.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAQWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcunfv3n+E1Dx48CCGEjsAAoiFGg59+PAhIz75Xbt2/X/x4gWDgoLCEnLtAAggqoQoIyMjIfn/hNQQAgABRLRDP336JIBLjlBZDJRnpLS8Bgggoh3Kx8f3gVyHUgMABBBdov7Xr18MlEY9QAAR7dDTp0/f2bp1K86g2717N86c//LlSwYlJaX36OJv375VnDVrFlHRARBARDsUaJny+/fvscrJy8v/f/z4MdYgu3DhwmFQaFpbWwuhy33+/NmalZWVKPsBAoiJlOjFFX1qamqBuOTu3r1rw8TExEBp+gYIIBZqpEVZWdmNIAvnz5//H2YxTC3IkdLS0v8pdShAABHtUJCBuAydN28euJx0cXEJ+PfvHy9MPUjsyZMnk+7cuSN44sSJJxYWFjKkZkQYAAggFlJC8+/fvxjic+fOBbs+KSmJcc+ePf++fPkCLzOBjmYIDg5mZGFheXDz5k15IP+1lZWVKEzv5cuXFxPrUIAAItqhDg4OPCtWrPiyYMGC/6AMICEh8R8YWowgi0COBKlhZmb+C3QUCyw0YQ42NzdXAFX3N27ckP/27ds/kD5YDGlraz8kxn6AACK5xvjz5w/j6tWr/4HKRlAIgxwJLBH0xcXFLxLSe+TIkQ/37t3j5+LiYtDQ0Firo6MTQqy9AAFEcoEPCrDIyEhGSUlJePoClq8X8Ok5fPjw56VLl/4HlqV+IM+FhIQwkuJIEAAIIIpqJphDiajrKa4BAQKIbg1naJplJVc/QABR5FD0MhOPI/9R2oABCCAmCkII3sYEZjC8aoGZ5wEbGxtJ5SY6AAggknP90aNH3wGLGUFgpoJVny8sLS0lidELqrmQ+Zqamk+xVQLYAEAAEe1QYG5lBJah4CiUkpIClX9hwGKp/fr168pAx4ItBNVQoEIe1i4AmQ0sfwuVlZUngCoGWJkLaqgAGzE2r1+/BsdGWloawWAGCCB41UgInzp16g7IMnRxYNX4AFQJAIugD7j0gvSBPIFLjhj7AQKI4s4drNYBVZHAOv0/cj0PY4OSSVxcHEUtZ4AAokovFOTYq1ev/hcVFWUAVa+wUAA59s2bNwyCgoJk9w5gACCASGmU/MYl9/v3b0ZQc87X1xfD1nXr1v0HpUVKm3kAAcREQpnJisvQjRs3/gM2SLDKBQUFMVLS34IBgAAiOjPhw6CMAmyyrcElv3Dhwv/Lli3DmmmA3RE+YuwACCCqVaH4GhnAJiEoeWCV4+Hh+USM+QABRBWH0qNfDxBAdOnXU8MzAAFE19YTJQAggKjiUFzpDzk0QVUrJQAggBiHymQDQAANmRFngAAaMg4FCKAh41CAABoyDgUIMACIPoR3Is1ykwAAAABJRU5ErkJggg==',\r\n'w8/cleanup.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADmUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCjiJGRkSE5OdkYyFwAxDpA3Dh37twGmDw9ymKAAGIixpFQcAaIc4HYEIjrgQ4XoGeIAgQQE5GOhIEHwJC8AKQ3AHEAPR0KEEBMJDgS2XEbgdifng4FCCCsDk1JSWHEIgxyXDyyo+kZ/QABhNWhwOjFljtAjlMAOk4BKP8Byk+gl0MBAogJS2iy4nD8ByzRH08vhwIEEBMWB/3Gox49+g1AIUwPhwIEEBMxoYnkCWzRT7PcD3QP3H0AAYQeopxE6Ac5Lh/KXkjL6J8zZ84/GBsggJjQQuwTEfo3wkIRFsJAn9M8+gECCMWhoKoQG8YS/QLA6DdACmGa536AACK3UbIAKcrpkvsBAohchy6kd/QDBBAjMS0fLNUpqDV1H0hNBCUDaOZSBCb+D7RyKEAAUdIeDQS1oqAY5Nh+YKjSrEoFCCBKHArKTKAQdARiQVD0gxxLK4cCBBAlDoW1nkAhuh4aqjQr/AECiOQ0Cm0x9UMdhS2qD0BDeiMwzS6glkMBAogch86HRnMjHi0K0JB+AErL5GYyYJpnBur9C2IDBBBRfSZkzwA1G0Bz+wOgIQ/wWLIBGvL7od0XcgC8CgUIIKKbeWiZCBSq5/HlcmgoFkLNnE9GaLIDzYCHEEAAYctM/4CK2AiYA+s3zSfQqICVCgEgx5JYfKE0NwECCGsahfrmJw6f/odmFkVotIIcXYgvHUIduB4aGyAPXoTqg3noAJp6NqDYL2QxgADCmZmAirmBir9iET8PtTARKVQdoJlrAQEHG0BLC3lohoNlvANAfYmwpAdkYzTeAQIIn0NBGY0RXRNQHLloAmWqCVCH10MdvAHaUDmAL7OhhTaoOjYEqQfxsXkWIIDwFk+wjIXsWKjB+6GOQ25MX4Sy9aEOFoAmEVjSuIBmhgFUHUy9LBCLA9XdxeYWgAAiWI5CQxbk2D9o4gHQ2skBKRpxgQdQzABVD6sYQGIHgXgrEPMA7biPywCAACKqwIf2XZixpR20EBJAC2kY+ICUeS4gRy1QL6j7ww8Ue4HPDQABhLNVjw0DayUmQj0AUgDQPHli7QYIIEZSLYKOonACQ+AbvvYqAQeKgUIZvQjCBwACiJGSEAE6GmQhE7CV/4IIxwlB0/o7cuwCCCDGoTLPBBBAQ2bEGSDAAA4pnbzrsbaOAAAAAElFTkSuQmCC',\r\n'w8/copy.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREc5OTk4WAFIJQOxPon0bgfjA3LlzLyALElOWAwQQC6mOhIL9QPwBiBcC8QMiHQnScxBEAz2aCHTsBmTzCTkWIIAYifENWmiCQjIfaJEhKUEJ1AeyqBEaCwZADHLsAmJDFSCAmEi0DOTIeGgUkgtAekGe7IeaRxQACCAmEhzZD6TqqZExoGnUEerYfmL0AAQQE5GOBGWeAmhIHCTTfaA0rQ/yLDQZnAdisLlA/nxCmgECiNgQNYDm1g8UBCQofQbgkFtISDNAALEw0AkAPTkBSE3AElv7idEPEEBDpsAHCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAix6Ggroc9Fd0gQIwigAAip/W0AdrgXQ+kJ1LoyHxoy+rAnDlz8CoECCCSHQpqkwIdaQht7ZPb4leA0gegLX2CACCAiOrcpaSkKEBb5IoUNp6RuzUfgWY1ENu5Awggonuh0KhWgLbUKXGsAzTKHZH794TcARBApEQ9qMdYCEtXFIAP6I4kBgAEEONQGXEGCKAhU44CBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAT+J+UsQfvtwAAAAASUVORK5CYII=',\r\n'w8/copychemdraw.png':'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',\r\n'w8/copyprod.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACz0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGTHEkpOTHYCUA5FGHJg7d+4BdEFiikiAAGKixJFQYADE9UCsj0e7PlSNAYlmwwFAAIF9QwgTAsBQbQDi+Xjk1wNxASVuAQggJgpCEhlsIBD9ILkDlNgFEEAUhSRaqP0nR45YNwEE0KDM9dhCFiCAhkzxBBBAg9ah6KEKEEBDJkQBAmhQOzQlJYULxgYIIKo4FJirA4DUAzxKLgDVJJBqLrAW+wZjAwQQExUcKQCtdRpxyIPK0IkgNVC1ZAGAAKJGiPYD8Qeg7xfgkPeHyl0A4vnkWgIQQEwUhmYBtNYJxKPMABrtiUCsAKpuybELIICYKHCkATQ0A4Eh9oGIUGeAOjYfmhxIAgABxERButwPshjoyAtEaAGp74eqLQRiUCNFgRQ7AQKIEV+dDiweQFGGzUB/qPhEIuyIRzLDEdQeBToSFMIOQLYhMfU+CAAEECGH7iehUUwMeAB0nCI0Vs6DMhiQn0iMQwECiNQQJSUksYUoKC0rgtI0NPncByUFPCUG3KEAAYTXocj1LTTzwNLlBhLSM3KsgBw1Aa2MXQ9NEhew6BWaM2fOOxAbIICYSMg8oDJwIimOxNJfmoBW8xyAVhTrcVQG8FAECCBic/18aPpqoCB9FuKoJidAK4P16HLA0HwPYwMEEBMRoVkA7ZQlUuDIRgLFGMhsAeTKAMgWRFYAEEDEhGg91KIP5OZ0IJ5AoPHxAZoE6rGFJggABBAx/XpQDu/H18skAiQA9RNS8wHmIaBafiD1EVkSIICo1rmjFgA6khWbWwACiJGQg4jsLlMN4HIPQAAxkauRno4EAYAAYqLUAHo4EgQAAoiJWgZRkCYZiTEbIIAYh8pkA0AADZnuMkAADRmHAgTQkHEoQAANGYcCBBgA62Rb2vGZHX0AAAAASUVORK5CYII=',\r\n'w8/curve.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANPSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAslmj9+/KiydevW22fPnmV4/fo1XFxAQIBBW1ubwdPTc7KcnFweNRwKEECM5NT1N2/ePD116lST27dvM8D0MzIygtkwGgaEhIQYMjMzGWxtbRkpcShAAJHk0B8/fnC2t7d/O3nyJFxMQUGBwd7enkFGRgYu9urVK4YDBw4w3Lt3j+Hfv39gh0tLSzP09vaqAkP7DjkOBQggoh0KiuaMjIzb79+/B/MNDQ0ZCgoKgsTFxdfj0zdz5sz/mzdvZvjz5w8DOzs7Q3Nz8wc9PT1BUh0KEEBg3xLCoJCMiIj47+7u/t/Hx+f/qVOn/hOjD4YfPHgwKSQkBK4fxCdFPwgDBBBRIVpZWfn//PnzDKysrAzAtElWBvn58ydnQkLCtw8fPjBwcnIyLFu2jIuDg+M7sfoBAohg8XT58uX3IEeCMkltbS0DubkYGO3fZ8yYocrGxsbw7ds3hgULFnwjRT9AABF0KDAEBUC0mZkZCFOUc/n5+e+kpqaC2cBiDRzKxOoFCCC8Dn358mUgMD2BQzMrKyuIGuUhMI0y8vHxMfz+/Zthy5YtoKSgQow+gADC69Dt27evA9EqKioMhHI3sWDSpEn/NTQ0wOzdu3czREVF3Y6Ojv5PyMEAAYS3ZgLVOCDg4OBAlWqwoaHhP6gMZmKChM+jR4/A5ezbt28J6gUIICYCZSeYVlVV/UANh7q4uICLmr9//8KLRrAjgA4nVBEABBBeh+rq6jKIiYmBoj2JGg61sbFh5OLiQinDQQBYTBHUCxBAeKO+tLSUkYHKAJSMtm3bhtImEBQkXFEBBBDdm3nh4eFBsDQKA6BYIwQAAojuDgWVHsBKA6OFRQgABNCANJyB9T4KH9SyIgQAAmhAHArM/YygdgMonYIAKIQJAYAAGrCuiJ2dHTz6ZWVlJxNSDxBAA+bQuLi4IFD7FJSRJCQkygmpBwggxqEy7AgQQEOmFwoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAEGAEDZZxMiUCdQAAAAAElFTkSuQmCC',\r\n'w8/cut.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADj0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAJHlUEZGRqJxSkqKAxALoIuTCgACiIVUBxILkpOTA4BUPxArAPEGIA7EZhaxxSNAADHRyJHzgdR6ID4AxBeA+AOl5gIEEBMNHJkApEA4ce7cuYlA2gCIN1JqPkAAMVHTkVCQD8QLgI5cAHS0A1TsAKX2AAQQE5UdyYAWgiCHXgA6+gOlMQcQQFQtnrCEoD0xoUkMAAggapejIIc+QApBEP8gNQwGCCBqO1QfmsthxRMDtUIUIICo7VADpBC0JyV9EgIAAcRCQpFTDy28QeABEBcCHbEBSY0AVP4CUrQfINJ8AagnH0AxBgAIIBYiDJkPLRcXIDkUBNYD5RqBjm1ACk0GIP8AksWNeBzmAA11B5heqMccsekBCCAWInJxAtSABGhowUIOJFYPVAMqMx/AiiKk0ISnT6AaBahjsDkMVJQVAvF8XKEJAgABRChE/aGWG0AL8USoxeuRoioByJ+ApBaWPkFpsx/qWQV0h4FCHilAGqAB0IjLIQABxEJE5tgITZ8LkcQnAvF+qMX80NAAOeYBND3DQlQAqu8AssOQHKgAjal6aJX7YM6cOVgdAhBAhBx6ARpSoNCJR8oc+dDQPAi1BKY2AIo3AC01xJFhHKDFmAHMc1BHLsDnEIAAYsTXzAK1JaEhtwHqgAdIIRUIzTgFQLY8UlL4AA2lQCyOgnkIhC9Ciy+UkMblHoAAwutQUN0LdAioTVkADU1YmfgBarEDWugbIMkLEHIUNoDLPQABRNChSLVMPZJDLkAdfhDKzod6ZgPUAyiZjxSAyz0AAUSUQ4kstM8jZbwD0Bz8AFp0UexQgACiZhVqgORAA2javg9NOhQDgACiikORmncP0JLGBmg5O59SOwACiFohCquV+qHp9QLU0QFIjjWgxAKAAGKhkkPtkRzmCMvdQMd9QCq2kKtYkgFAAFEzjQqgRT8IfISWAh+Q5MkCAAHEQigHEpnzHyCF3HxgSCZCHQhLBg746nFCOR4EAAKIhRjNRDgW5Ij7UEcpQNkMSPwHyG1XUh0JAgABxERJ2QYD0LIyEalC2IBU+Augj5KQaj4IAAQQIykjzoRCFtoaykdy8EZoDfWBEkeCAEAAMQ6VoXGAABoyw44AATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAZmIvcCRG00MAAAAASUVORK5CYII=',\r\n'w8/delocalized.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFkS5KTkw1A9Ny5cy9gkyemvQEQQEx0cuR+EAayFZDFgTiBWHMAAoiFltEFdRjIkQJADArND2iOFwCyQWIbCJkFEEBMtHQkMKofQB0BcqQjkP8B2ZFQ8QPEmAcQQIyktEeJjXokx2wAOi4Ri7gAsuOJcQNAADHRICSRHWNAyJHEmgsQQEw0dCTYMdRwJAgABBC1QzQe3THUcCQIAAQQCxVDMh7ogEIg+yOQPYGajgQBgACiODOhOaYQ6JAJpEY3MW4ACCAmKqfJBdRKk+gAIIDIDlFoYX6eGmmSGDcABBATmSFJbGFOcUjCAEAAkRyi6IU5kC9AqSOJcQNAADFRkCZhLSKahiQMAAQQqVH/DUojF+YKtHYkCAAEEEkOBTrgFpAyQnMMiH5AS0eCAEAAMZI6SIajLBWAJQNyHEGMGwACiHGojOYBBNCQ6TMBBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYACjl3l/XY/YnAAAAAElFTkSuQmCC',\r\n'w8/diamond.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMUExURff39/7+/h0dHfn5+fv7+xsbGxwcHAUFBe7u7o+Pj+Tk5Ovr64mJif39/SwsLOLi4hQUFJubm8jIyAMDA8LCwjk5OePj4/j4+DExMREREenp6fLy8lpaWvHx8dra2j8/P8rKypeXl9LS0urq6vr6+q2trRYWFqioqNfX187OzgkJCfT09ODg4NDQ0GBgYMbGxnFxcU5OTnBwcC0tLYeHh1FRUVBQUMPDw5qammdnZzg4OMDAwI2Njd/f3+jo6JiYmBoaGr6+voGBgeXl5UtLS11dXRgYGCcnJ6Kiov///yMjI5CQkLi4uLS0tLCwsCkpKQ4ODtjY2C4uLiUlJcTExEBAQDAwMKOjo+Hh4YWFhUFBQYiIiFlZWezs7BISEjU1NWJiYlJSUh4eHvb29oODg0VFRUJCQqWlpba2tsXFxT4+PkdHR5WVlczMzM3NzXJycufn5zY2NjMzM35+fiEhIVVVVSQkJMvLyygoKKCgoISEhGRkZO3t7bW1tVxcXF5eXhcXF/Dw8Ds7O////w7LLyYAAACEdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AJfSNr4AAAHSSURBVHjaYmgmEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCItC2fwKIUYMUYAAwlCoouDPZ6hVzI0uDhBAaAo9FdICDLh5RfiYqrRRZQACCFUhi6pAqDkLkCHFyVbHgSIFEEDICnnLs5l8maGcWCsmTmUkSYAAQlJoyxPXpIngKvMwBfkww7kAAQRXyJjOFKyK6hCpBC1LuP0AAQST4vd2SxFD9ymzo3GYNVQFQABBKG37JAcNbMHMrccepQQOVIAAAiusTa3OKMAeISx5ivEmIAZAAIEVugqbauCKOml1NT4QDRBAYIUqIvKSThzYlPGGSLDy2IFYAAEEdaq4n5eoLmYEy0azyzhDmAABBA8QrhhJzgi0WNMvdM8Vh3IAAggRcgzqJayCyAEpZyacyA/nAQQQsgyXoEA9XIZZUU1UCEkWIIBQ40Iui60yGcwSK22wkEaWAgggtGTWaCMgr8nSzBXJKhGIKgMQQOgJl1HJhd3Io4wtpwZNAiCAMLMCQ6ZMUbgOhjBAABGduQACiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGABSZ8Qt0ZCFNAAAAAElFTkSuQmCC',\r\n'w8/double.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF6SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDqemIxOSA5OdkAiPsptR8ggFhoGQggRwKp/UAsAGQ/nDt37gSoeAKQygdiRyD+QIxZAAHERA9HAvEFIF6A5Mj5QAySLyDWPIAAYiQlShkZGcl1pCMwND8gORIEFgDFEom1HyCAmOgQkjgdSYq5AAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAHENBQcCQIAAcQ0FBwJAgABxDQUHAkCAAFEaoj2D4QjQQAggEh1aCC0cQF2JFRMn9aOBAGAAKJKexQaqjS1HyCAGIfKIBlAAA2ZrghAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAMXkoC4WzeV0AAAAASUVORK5CYII=',\r\n'w8/doublearrow.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqUExURdbW1lRUVAYGBtXV1V5eXlVVVQUFBZ2dnZycnAAAAAEBAWNjY9fX12FhYf7+/qqqqs3Nzdra2gMDAwcHB+jo6F1dXQICAn19faurq2RkZEhISCwsLDExMdnZ2WVlZdDQ0DQ0NNPT0xISEhUVFbq6uqCgoAkJCfb29iAgIEpKSm9vbz8/P/n5+cfHx6+vr+3t7f///6enpzIyMklJScDAwC0tLe7u7np6eicnJ9LS0mhoaPLy8nd3d76+vqmpqVhYWFNTU8HBwXx8fBcXF4qKira2tvT09Pz8/EBAQAQEBGJiYoaGhiIiIv///4IDuQYAAABOdFJOU///////////////////////////////////////////////////////////////////////////////////////////////////////AKxN+84AAAGUSURBVHjaYvAlGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBAJSgECCK6UT5EBDHhAmIcBAeR1oCoAAgiuVEJImAkE2ECQjY2JCcoTFpKEqgAIILhSdmNZBgZmEGAAI2YIj0HQwwGqAiCAEEp5cTjRnhHKAAgguFIOFhxKGWFKAQIIYSpBpQABhDBVlJBSgAAiwQEAAUSCUoAAIsGtAAFEWCkrK5QBEECEHQBXChBARCiFOQAggIhwK8xUgACCKFXx8lVl8XW1wlCnbgnylrsAiA0QQBClupz8ety+ypoYSg3FrEVZfbktQGyAAII6QNzZRstcyQxDKZ+MHC+viZgdiA0QQDC3SnH5cDlicambkYK2mhOYCRBAMKWCnpzcWH3lzcmlwQdmAQQQPAS4ufSxKhXg5OSHsAACCK7U1gV7WBmYSkNZAAFEOMeKiEAZAAFEQuYGCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEGAD9SeQt6RnK8wAAAABJRU5ErkJggg==',\r\n'w8/down.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4TpAZKTk9nwuQEggFgGOqCADlQAUvOBOBaIn+BSBxBATAPsyAQgdR6IJ86dO/cJPrUAAcQ0gI6cDw3JBUBHbiCkHiCAWAYoqj8A8UEgNgA6spAYfQABxEhMZmFkZKRmVPcD8QMgdgQ68gN6xsYFAAKIhU6hKAB1YAJUyACKDxBrBkAA0Svq1wOxAxK/ERiaB0gxACCAaBr1wJAMgEYzCOwHYlDIHgA60hFXmY4LAAQQCx2iGpQOHaEYFLKB5JgJEEBUD1GgIw2gxY4BkvAHaOa5QKiWxAUAAoiJyiGZAI1iAzQpASxiJAGAAGKhYlSDMK4Q2wAMzQWU2AEQQExUcKQBNBTPQ4UcoVENAyDHJ1JqD0AAUZRGgY4sgGYalLSIlMsZiEmbxKRRgAAi26FARzYAqXosypEda0BKlONzC0AAkexQaFQrQGuV/TgyCcixhkBHPiC1bYwLAAQQE4npsQCaFkHlYQA05LBF6wO0dEoxAAggFhJy9Xyo42BgPlLmQQ5ZkAMD0RsclAKAACK2eCpAcyQ+xyaSGuXEAIAAIjqNQhu6CTiUgIofUOM3gJLyEp9bAAKIpMxEwLGBxLTUyXUoQACRlJmADgGF3AIcufwAAw0BQACRXDPhcCzVMw86AAggsqpQNMeS3AgmBwAEEFEDELjSDrS1RBd3AAQQ41AZGgcIoCEz9gQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAAQYAQ2Ug5wgQDD0AAAAASUVORK5CYII=',\r\n'w8/dreversed.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKjSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAulBnz+/Lnh7Nmz9WfOnGF4+fIlw/v37xm+fv3KwMjIyIBcPYP4IAATW758OSMp9gAEEEUOvXXr1v/JkyczvH37Fu4AmINgbGTHUtKuAAggshz69+9ftk2bNv1ct24diM2gra3N4ODgwKCurv6Oi4srDoi34tIbGRn5H9kzxAKAACLLoRs3bvy5Zs0aBmZmZobo6GgGb29vRlqnUYAAItmhjx49+g8KSSYmJoba2loGNTU1khyJnhyIBQABxERqlM+dOxcc3QEBASQ7Ej1jkQIAAogkh16+fPknMAMxSEtLM/j7+wuTG43khChAAJHk0Lt374JDw9LSkoGVlfUdPctRgABiIjF9gmkFBQWKLCUn6gECiOQQBQElJaUL9K6ZAAKIpFz/+/dviCYWlo30TJ8gABBAJIWoqqoq2CJgyNbTO0QBAogkhyoqKoLphw8fUpQ+yUmjAAFEkkNhmej48ePgMpWeUQ8QQCQ51MDAgF1OTg4cotu3b/9JrxwPAgABRJJDgXX7r7S0NFBmYli1ahW4OqVXGgUIIJIbzsrKyoxeXl7gEqChoYHhwIED/+kR/QABRFYLPzQ0VBjYYmL4/v07w6xZsxgmTJjw/+rVq/8/fvy4hVZpFCCAGClpzF64cOH/9OnTGT59+oS1RY+thQ8Dy5YtIymxAgQQI6WjeaBQPHz4sPe5c+fAVey3b9/ADkR2KDY2qV0RgABiHCrDjgABNGR6oQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhV7qdwMl/9MAAAAASUVORK5CYII=',\r\n'w8/dshape.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK0SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAupGiIjI8F1LiMjI5iPXAWDxEB8bm5uBkFBQQZxcXEGExMTBmNj40ZeXt4GShwKEECMpNb1MIciOwzd4ejiwsLCDLm5uQxqamqM5DoUIIBIdmhUVNR/kJ7ly5fjtPTbt2/eQLzo5s2bQgcOHGC4evUqAzMzM0NQUBCDn58fO5D9i1SHAgQQCy3SExcX11YgFhYREWGwtrZm2Lp16/8VK1YwrF69GhTSP4EOJjlkAQKI5MwEi1pSgLe3N2NtbS0DExMTw7p16xgePXpEctsSIIBIdiipjoQBUPoMCAhg+Pv3L8PcuXNBNBsp+gECiKwQJRf4+/sLS0tLM9y6dYvh8uXLP0nRCxBAdC1HWVlZ31laWoJj5e7duyTpBQggukU9DCgoKIBpYDolSR9AANG9ZlJSUroAokkNUYAAIiuNUpJOWVhYNoLo379/k6QPIIDoHqLAkKwHeVRVVZUkfQABxELvNPrw4UMwraioSJI+gAAiK0TJjXpQ2Xn8+HGUTEUsAAggshxKbqhu3779JyhE5eTkGAwMDNhJ0QsQQHRLo6Bqc9WqVaDMxJCWlsZAasMEIIBYyIl2UkMU2IL6v2jRInBOB7aeGJSVlUmOEoAAYqFVGv348eOWJ0+eeO/evZvh1KlTYD3AxglDaGioMDl2AgQQ2bke1C7F1cJH5/Px8TFkZmaC0iXZRQZAAJEd9cgtePQQBokB26PgTGNkZMRga2u7lZ+f34eSNA4QQIxDZdgRIICGTC8UIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAB49tbChjfEqgAAAABJRU5ErkJggg==',\r\n'w8/dummy.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKMpNTWVZD1lZWUGQKofiANVVVU/kKofIIDoEqJQR+4HYgeoY0kGAAHEREdHCgDxBSAuJMccgABiorMjHbu6uj6QYxZAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAMQ0FR4IAQAAxDQVHggBAADENBUeCAEAAkRui8fR0JAgABBBZDgU6rBDauKCLI0EAIIAYh8poHkAADZkWPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAHVBdbh28ks8AAAAASUVORK5CYII=',\r\n'w8/e-br.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB+0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqiElJaUBj/QDID4wd+7cB6SYSUx7AyCAGEltlAAdSoyGA0AcCHTwB2o5FCCAaBX1DkC8npoGAgQQpQ5dAMSOUDwB3bHJyckG1HIoQACxUKj/ITB6D8CiG+gwEF2AJC+ATzNQPSjkQcnjAiGLAAKIhYYZFe4AoINAGbAeSU4RiPcDsQI0PTsSMgwggKiWRoGOCQBSCUhChXgy03yoI4kGAAFEaYjWAx1Yj6WIAjlyA4HM9gCKiSoZAAKIFlEPCql4oAceAB2LK+1tAMoFwjhz5swhaChAAFEa9Q+gaewAWoYAJYP9eHJ9I6kWAQQQpSG6EBgyDWi5eD9Sju/HllHwhDROABBAVC3woUXVAbS0SBUAEEBUdSgwRAVIzc3EAoAAojTq5aHRDctE+WgO3UAthwIEEKUOTUArO9EL/EZqORQggGjVKAFlFkdyMg0uABBA5IRoI4Fq8wAWBx6g1KEAAcQ4VAbJAAJoyHRFAAJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAANuEaTpkv5WxAAAAAElFTkSuQmCC',\r\n'w8/e-c.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB1klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQopmRkRGFn5ycLACkEoDYH4gNgFgAKvUBiC8A8cI5c+YsIMcugABioZaPgY4EObAfyXHIACTmAGWT5VCAAGKhoiPn0zLqAQKIiQqODMDiSFCoGc6dO5cRhIFsRSBOBOIH5NoDEECMlLRHQWkU6ND7QKYCknAi0HE4o5dc+wACiIkKoYnsyAX4HEkJAAggSqPeAI2/kFZpFCCAKHWoPTIHGJoHaOVQgAAaMgU+QABR1aHQAp8mACCAKHXoBTR+AK0cChBAlDr0IBo/n1YOBQggihwKzDwb0ApxA2D0r8eVBIDiDuTaBRBA1KhCC4F4PVr0OwAdBfLEQ6iYPrSuByUVskoGgACiuGYisa4/AGw9OZJjF0AAUSXXQ2sjRyyZCx2QXdcDBBBVQhQtHRpAaywFtNLhAtBDD8i1DyCAGIfKIBlAAA2ZmgkggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAbpRYRsxEFnEAAAAASUVORK5CYII=',\r\n'w8/e-cl.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB6klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALqRoYGRnJtiw5OdkBiXt3zpw5j4nVCxBALNTwLdABAUDKAIjtkYQfAPFFIN4wd+7cB1Cx/UjyjUDcQKwdAAHEQgUH9gOxAh5lAqQ4CBcACCAWChyZAKTm0yuNAgQQCxUdeQCIF0KjnAGaFPyp5VCAAGIhw5EC0OhGBonAdLgAi8MnQNVTDAACiJziKQGa7uCZAosj4QAo94EaDgUIIHIcih6dE+iRRgECiByHGiCxL1ArxAgBgAAix6HI0f6BXrkeIICGTBUKEEDkOPQBEtuBWrmaEAAIIHIcegBLKUBzABBA5Dh0IRq/Hq2xga3cpRgABBDJBT4wlx8AWg4KVQekzLUfKAYqSzciZTAHaFG2kRp1PUAAkVvXB0JbQgZoSQBbMthIjRAFCCCycj207HQENeHolesBAojs1hPUsYHAKFeAhqQ+Whl7EFohbEBrg+LKlHgBQAAxDpVBMoAAGjIFPkAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABdeFObdlH8zQAAAABJRU5ErkJggg==',\r\n'w8/e-f.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABPUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQw5CUlBQHIOVAQNmDOXPmLCDXDoAAYqGSh0GOrCeg5gAQk+1QgAAaMlEPEEAsNDLXEYvYB0oMBAggmjh07ty5B7CJA9Mo2WYCBNCQiXqAABoyDgUIIJpEfXJy8n4swoVAfIFcMwECiFaZCVuZKkCJgQABNGSiHiCAaJXrGamd6wECaMiEKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADEOlbEngAAaMiEKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAANfkaO5puRsIAAAAASUVORK5CYII=',\r\n'w8/e-h.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFASURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCrMSUlJQFIxcP4c+fOdcSmLjk5GUXdnDlzHMmxDyCAWCjwpAIQO1BRHV4AEEBDJuoBAmjIOBQggIaMQwECaMg4FCCAWKhlEDB3N+CQsqeG+QABxEJFT9fTMkQBAmjIRD1AAFEzRBvxRD3F5ShAAFHNocCaqQFP2qXYoQABNGSiHiCAhoxDAQJoyDgUIICGjEMBAoiSzPQAiA9QUR1eABBAjENl7AkggIZM1AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAArGRoCgceFHgAAAABJRU5ErkJggg==',\r\n'w8/e-more.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFVSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaUlJSBIDUeiB2AOIDQBw4d+7cD8nJyVjFQXqAcv1AqgCIH4DE58yZc4FUewECiJwQTYA6hgFKJ+ATBzrSAOpIEFAA4npyQhQggMhx6AccfFLFSQIAAUSyQ4HRuQBINUKjtxHKxycOjm6oOEiskByHAgQQ41DpLgME0JDJ9QABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYAD6njUQCJ93TAAAAABJRU5ErkJggg==',\r\n'w8/e-n.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABoklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJcUBSDkgCV2YO3fuBmxqk5OTUdTOmTOngVT7AAKIhQJPgiyuR3OQItCxD4hQS7JDAQKI2lE/n1ZRDxBA1HaoAzBUC2jhUIAAokVmqgc6VoHahgIEEDUdegFKCwBxP7UdChBA1HRoIRI7ABiqAdR0KEAAUc2hwNx+AEhNQM5YQMcKUMt8gACidhptBOIHtEgCAAFEVYcCQ/UDkEpEEkqAFvYUA4AAonquhyaBBWhlKz+l5gIEEK3qelDG+gBlg4qqBEoNBAggmjgUSxKgOFMBBBDNWk/QBsoGapkHEEC0buYlIiUBigBAANHUodAkUEgNswACiJJm3gEiHbsAWvBTlE4BAohxqAySAQTQkOmKAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKECAAQBtij5pF1H3lgAAAABJRU5ErkJggg==',\r\n'w8/e-o.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRFDLDk5WQFIJQCxPhALQIUvAPHFuXPnLkBXT2obAyCAGMlplCA7FOhAkKP6oY7EBR4AcSHQwRvIdShAAFHkUKgj9wOxAZFaE2GhS6q9AAFEaRpdj+ZIcMgBsSMQBwLxBjT184GeMyDHIoAAYiHXhUALQVHtgCQESo+OwBD7gCS2AaiuAJo0YKAf6hGSAEAAURKi+Wj8QDRHggFQbAI0pGHAAZrxSAIAAUSJQ5Gj8ADQQQ/wqF2IRy9RACCAmMiMdgc0oYMEtByg1KEAATRkCnyAABoyDgUIIHIdegGNb09AvQOBpEAQAAQQWQ6F5m5ScrI/AY8SBAABREnUo+fk9dCaCj3jFaBlngXYijFCACCAWChwKKh8jAdiBaScfB7osEZoaAtA5QOQ9IAc2EiOZQABRGldbwCt6wWI0PYBWnNdIKeuBwgginI91FJDIjLHBWRHkgMAAojiZh5SWjSARrM9mgMPIjfvyG3mAQQQ41AZJAMIoCFT4AME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEAaB97DjfssUAAAAAASUVORK5CYII=',\r\n'w8/e-p.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABhUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQakBKSooDkHLAo+TA3LlzDyALkNO+AAggRkobJUCHNgCpegLKPgBxIdDBC8h1KEAA0SvqBYB4fnJycgK5BgAEEC0c6gjFgaBoR5OrJ9dQgABiobYr0dLjBmAo7kdKwwpAvgGQvkCquQABRI+oP4glGZAMAAKIHg7lx5KxSAYAAURThwKjGRTlyBnoAzBpXCDHLIAAYqGB4/YjRbEBmnQhueYCBBALDQISV+HfCCtHyQEAAcRC4/R5AYpBjnxAiUEAAUSL4omRFj4GCKAh0ygBCKAh41CAABoyDgUIoCHjUIAAokZmOkAPhwIEEONQGSQDCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAFp86yv0Qrk0AAAAASUVORK5CYII=',\r\n'w8/e-s.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB80lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALFQagAjIyOcnZycHACk7IHYAEnJAyC+CMQb5s6d+4DctgVAALFQw7dAB4Icth6IFfAoEwDiBnLtAAggFio4EuSA/VCH0AwABBA10mg9miM3ALEiMJoZQRjIdgTiCUD8gRJLAAKIkdL2aEpKCig0HWB8qONwAnLtAwggqud6YFJIoEXUAwQQNRy6EY0/H+hYEFagpkMBAogaUQ9Kn/dxZKYFQDwRmBwuUBr1AAFEcYgCHfEBmmEuYJEGJYPzwNDtp9QegACiOETRCnyQw/LRCnwYaAR6qoFc+wACiKoORXIwqBTox+JgwTlz5pBVTAEEEE3qemDIHQBiQyDzAJqUAblmAgQQExWKI3yWH6SW5wECiBp1fT/QsSB6ISgEQQ0PtPSKDC6QawlAAFG9ZsIDJgA9UUiufQABRK/2KNiRlBgAEEDUiPpAIA6ANvHskcQ/QNPoBlhyoAQABBDjUBkkAwigIdMVAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwBCfHWu21mhXQAAAABJRU5ErkJggg==',\r\n'w8/edit-icon-off_0044_vector-smart-object.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3QzY4NDk0NUNGMjI2ODExODcxRkZDMURBRjJFN0U0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NzZFMkFFMzZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NzZFMkFFMjZEMUExMUUxQTlCMkQ1MTA0QjNFM0YwNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgwNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdDNjg0OTQ1Q0YyMjY4MTE4NzFGRkMxREFGMkU3RTQ4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VylN+QAAA7tJREFUeNq8WNFx2zAMlXz+rzpB1AmiTlB5AssTRLkMYHsCxxPYGSAXZYLEE1idIO4EVjbQCAV6jz4cS4mQrAh3PJ5lEnwEgQeQYTCQPDw8xNTF1uf6+fn5NIT+8ApgCXV31LhPPcNPaAcC/j4KUAKYU7dxWQ9gpMQN4wpqTwS6GhyoAyAvyNY5UCtp0bplLlt8Ti2z5j9R27fNVQOlRSLq3sTxshW2DFKzgEMfg11a+hY+Xw4VfnikFuHTlhQ+DhR8DPhF6L4n3UVnoBbIExSdggEFp/UCl2gFGypBzvoccwfADDZvAxs27PI8FsgGsLxmKf+fOOa8jQ2Shda5B239wwCDuYGCglJxBKOAFLKGgRjkznn02MEHeK5TdCN9ZuBKQ/IluPLQhcrAuUfbBaRFcyxQaUHy5uBb7NO3IPAFte/g2t9Is2cat5InR+2twQVK4QIb830qxiwNV3bI9UdY7ocjHZZoe1jphfpfAL8R/OmSLQyX8mmx7olYNBZpUQtyTUoWvpwNK/3EGgxy5hlfCRy5tOgdeq8vwR8NyMKRbRJZC5hNQO9PYyHqffY4CL9/ND6aij99skERUkgLUztbkXoL39w5rKURY1HWHRmLJsKvfNbMESy2GzBT7K3x7GtH6j/t/xS8WtO8E7AlEyxkqnEfhfBRFNa4HWpLF5AUQVP25FVTWyRTEX2agoPHxrQ5Q183rIRAzlqqIybxCJHfVT7NutOeOzTyB9zpkgSWnKMFDvpSy7Sj37xr6AtjB6lbewG10pszV7t8Fel5ZVvUrpC0QOMrN120RPZKpkPBsz6g3y7Vk9jVNUDfUaY1ZbFlTx+90OZEXLCCnpEZICdnLa4SOY5dwzKXC+BU7C5HdPbhvAjF7knMT4VFXEWH5vIXoJq7AD0AaAbe6ytJCzgje2UQzaWLTATt1CDzTBM4fAPoGXBrhTUjcTN9tQvnwqpL2xYzN8WF8W+P1LjaaDe3gjtVxvqhVXCc8XPR5TELd625yO0ysg+O+sBX+HxAz+XqHFqDHsF3Nar2sS93Aa4oGZhh1nRd3uMozQvG2CBXwjfXvgeIBKa/+ONIIHNhnP9ScaiY9OVgNeuF2snYZf1Fx73zGSXssNMKUVgOBDAGwExzcpqH3FS8Rxnrbrs8azeUfEuhc+27U4UdlO/Ea5vhyFftcw0ynnkej4SOtaZACTtaIwHPZo4rSoWriZQblI+pY/xT2wvzVUAdj2J3iiIkED7O2e61z8t1OFBgmJIuaiiQq74+beSvAAMAjAjeZOJgWvkAAAAASUVORK5CYII=',\r\n'w8/either.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACQklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKqBkZGRIguTk5MdgJTq3LlzZ4P4xNaMAAHESEoVSgVHKgCp80AsAMSJQMcuINaxAAHERC9HQsF6qCMvAPEGUswGCCAmejkSGJr9QMoAiD8AcSAwND+Qoh8ggFjokRGAjkwAUgVQLijKH6ClWRA4gM8MgABioYMjQaHYD+VOADpyA5ID64EYRIMcrojPHIAAYqGxI0HpcT40XR4AOrIQzYEMxIQmCAAEEK3LUeR0ORHoyP1Aej+SI0G5XhHogURCBgEEEFHFEzmZCeioAqQo/wANVQYkBzYip1VC7gAIIJo4FJouz2ORwnAgsQ4FCCAWGqRLB2i6JMqBxAKAAGKhsgPRMwnFDoQBgABioZEDQWnSEejAC9QKCIAAYqHAgbDy0QGLdCE1HQkCAAHEQoYDFaAhmIBWDsKLHFhjg5oAIIBYKHQgOA1CGxsM0MZGIS0KZIAAYiLSkaBcfB/JkcgFdT4ljQ1iAUAAkRr1KLkYX2OD2gAggIh1aCN6MYOrsUErABBAZNVM0MbGfmiUgxobjpQ6hJA7AAKI3EYJSiOYHm1agABiItW30HQJy1SOtMo86AAggFhIiRpoElgNxPZAfJFahToxyQ8ggBiHykAuQAANmQEIgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAyCa3Fu172m4AAAAASUVORK5CYII=',\r\n'w8/electrophoresis.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAB1UExURX9/f/7+/v////v7+35+fv39/ePj45OTk/z8/PT09I+Pj/X19fj4+Pb29unp6fn5+ff3946OjvLy8vPz8+vr642Njfr6+ufn5+Tk5O7u7oODg+3t7ZKSkujo6JSUlIWFhfDw8Obm5uzs7IaGhpCQkO/v7////21b5MsAAAAndFJOU///////////////////////////////////////////////////AINWl9kAAAHXSURBVHjaYlAjEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEEUcjAwMDCAGKiUTBhIAAIIKhCNhElERYIA5WCCAMBQABBFQozM/MzsAC1c/OgUCBhiEKAAIIqZGRkFBOWlBbiYUWhGBlZhaAmAgQQVCErExNQkIODEY1iYhSAKgQIIIhCFk6gGHbACLUaIICgJgogFEoJCoqKCrFCKbhCgACCuRGmn5mPnZ1dhosHTAlyMDJyQhUCBBBcIauQqKigoBQrLx8bG5uiMIiSEOcFuhGqECCAoAo5GRk5BGWApvDx8/Nyc3LziEEoVkaY1QABhHAjr7gEGxsfL7M8FxCoQigFDrhCgACChyMrD9AEXh5+WXY5dnYVATDFheRGgACCK+RQABmhzIziRm5GuBsBAgjJjVzsQFNk+Xl4OSFu5ERxI0AAwd3IyA11IwczEHCwgilWRng4AgQQihs5efmBRiADJrgbAQIIHo6MrGCTGNHiEu5GgACCJ1xgsmKBJFR0AFEIEEBEZwWAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIMAAGlSxagor51UAAAAASUVORK5CYII=',\r\n'w8/ellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAfaSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCz7Ja9eugWlmZmaGe/fuMXBycjI8efKE4devXwx6eno8Hz9+VAOqMZeWlo68ffu27ZcvX36D5NjZ2Rl4eHhYlZWVjwHVL9XS0joF5N+8cuXKZzY2NgYJCQkGoFoGbW1tBkVFRYa/f/8ycHFx4XUoQACxkOozULkLNNTw2bNnlZcuXbIA0kJAx3L/+/cPJMcKohkZGRmYmJgYHjx4YAXk638AAh0dndNAj7b9+fPnNDkhChBALKQ4kIWFhYGPjy/z3LlzOS9evNAE8hn5+fnfCgkJ3dTV1T0iLCy8i4OD4/OPHz9437596wYMQRsgLffq1SvpXbt2SYuLi2sZGBjMBOqbAjTvFykOBQggFmIdCYw6hTt37tRfv37dGxhAokBHvVNXV+8GWrrjzZs3X4H890CHvAElj+/fv4O0nQRGsyAwiXACo9bl1q1bJUDPqR0/frxKVVXVVEZGphqo5h6xDgUIILwOBUUhCHNzc7MAo7jxwoULEZ8/f2ZzdHTcCnRU1/v37y8A0+Only9fgtMZMFrhGMh/A8JADzL8/v37npOT06nnz5+X79271wcY0qFAff+BaTQdaM1nYhwKEEB4HQqyEJQ5nj59mgx0ZBjIkaKiopuBIVnCysp6C2gxODngAyAPAJPCFxERkSMCAgKvgDHyDxiyfhcvXgyVl5c/C8S9QI8QdChAAOEtnkAZAwjMjh07lg8MNQ5gqGwG5uBioMW3QIaDQpsYAFIHUg/SB0zLJS4uLhvfvXvHcuTIkczHjx/bADFBMwACiImABfxAB+Y8evRIU0pK6qmNjU2HoKDg7Z8/f4I9AQpxQo4FyUOTAsihDMBQvW1ra9sCDMn7wCJPGZhm84B2CBByKEAA4XUoMBTUT58+bQssav6bmZnNAEbzVV5eXlDOB5d7YmJiYEcQSj7A9MwALB0YgKUDmAaWDNetrKz6gZnt9+XLl82BntAk5FCAAMKbwIC52xCYDiWB6esDsGDeBMz9H1VUVMClAKicBBXsQI/AkgjWpAMKfXNzc1BIgkMVmkG/AnP+DqBHq4CZVAKYKc2Byo/jcwtAAOF1KDBKYoCOYgcWPdeAmerrt2/fwJaBowLoUBAfVNMASwUG9AY4yJGgHA8MPXAtBKrdYHpBbGBs/QXWUA+AdoAcmgAUnoDPLQABhNehoIQOCgENDY3DwPT1EZjrMdKfpKQkA7AKRREDORpEg0ISRIMciq4XWGq8ABZPS4G53+Lhw4f6hKIeIIDwOvTr16+/gSHDCiySdgPT2VtC6RHkQFhRo6CgAA51nBazsHwDOvY8KOSBniBYPgEEEF6HgtIXyHJgbfMeGL3/8TkUVgStX7+eISoqCpwk8PXHgI4EJYvvIDWgJEQIAAQQXoeCLAM5ABjt/CDD8DkUlrlAAFRJwEIYXxkNVAfWAKp2CQGAAMLrUFBT7fXr1wzAutwBaOgJYIi9Qw9FkANBoQPLODBHA2sfcOaBlbfojgbq4QI2E41AGQtkDyGHAgQQ3nIU2HAAFxk3btxwAvpaEMgHZx4QBlYA4HIRWIQxXL16FWt6PHv2LKj6BZedIPWgdigIgzIf0FPiwOZhFMizwML/BiGHAgQQ3hAFFktLgJQRMFQVgMmAC9a4hbU5QSEJCjVQskCvoUAOB2ZGcDIAFV8gDNMHwkA9rMAyWgko9gtYxs4j5FCAAMIbosDq8iwwBF4Co17w/v37nkDLeYE0Ayg5AKONAdjsAzsWV+4GiYPS+c2bNxmA7VIGUCMG2BMASXEBzXEFJg9hYInyEljTHSPkUIAAYiKQmW4YGRkdA4Ya06lTp7KAaU0LViaCSgSQg/EVQdBiiAHYcAaHLiiZQPWqA+v4QmBoswIbOaeBIXyVkEMBAoiJQLn4EVh9TgamzdvAtCYPbO1UAS1TBeVuUPQRauIh9wxAHgLlbmBMqBw6dKgW1CABVsuPLC0tJwHT7wdC5gAEEDEN52NAw6YC01Q3sNHrB8pIwJqqBGj5bWLHrUDqoElEFdgI6QbWeP7AdPkX2DCZC3TsQVDsEAIAAUSomQfOBMCGyGxgO3I1MCT/AkPWD9j47QVGuxUwhDhBxQs+AJIHKuMAqrcAlg49IEcCHf0H2NlbA8ztU0HdFmIazgABRDDuQDkVaNg3YKKvAxrODMwMrvv37/cFtnwMNDU1O4CWHAQ65gcwhJ8B8XdYkgBikCekgGmSA5i2bYBFVRmw66wE9DioBbYTWKJUAc19S2yfCSCAiO6FAqP+LjCaEoFlZy6wm5wCzLGqwJw8FVgyPAc6+gEwwywFRuE5IP4DzN0soMIcmFmigT1WBWDrSBIUvXJycg+Bnb1FwCTQC8yUH0nphQIEECO+dAbsJ8FzLqhYAWUiUI0D5JsBo7MGGJUmQEfxA0OOC1YLgdIiKCpBmQekD8j+BmzQfAY2Us6ampo2A0P0BLAEAScrYI4HJStwWQxqkOMDAAFE8gAEyAJglJ1SUlKKATpWHVi7WALTWhKwO6wPagWBCn9QTQQsG1mBjePrwDQ5S01N7TjQAzeBofgBVmKQCgACiHGojDgDBNCQGSQDCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAzNXPdBj1swMAAAAASUVORK5CYII=',\r\n'w8/eraser.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIZSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqoGRkZFotcnJyQlA6sHcuXMPYJMnpVYECCAmGjpyPpDqB+L1UAdTBAACiImGjgwAYkco7qfUsQABRPU0iuxIYJRfAGFqOBYggJho6UiYODUcCxBATLR2JLUcCxBATPRwJDUcCxBATPRyJJpjC6ElAtEAIICYKHRkAymOhOoxgDpyASl2AQQQEwWOBFlWDyrQoZhYR+4H4g1AjxWSYh9AADFREN0O0CgEWw4UEyDBkYmk2gkQQExkOtIAGt0TgHQiIcdS6kgQAAggJgoc+QGaORbgcyw1HAkCAAHESGzDICUlBWTheSBWBFr4AEcDBOSRCzCPEHIkKY0SgAAi2qGguh5o8XkoFx6ieBw7EZq7cYYkKQ4FCCBS06gjlMaaHtGSwXyYI6EhSxEACCCSQhQaagLQ6MQaskjRnQiU24AUyqCMdxCqDJR0HObMmTOBWIcCBBDJDWdo2nOEOuY8kI2eXg2gIbkByVEXoI4EyclD2f5QxxMFAAKI5BBFCz0HLEo/EFtLkZJGAQKIcagMkgEE0JDp3AEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA1r7eGSjo9EUAAAAASUVORK5CYII=',\r\n'w8/find.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==',\r\n'w8/fliph.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAGJklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQABR3aE3b978X1FRQfWEDxBAVHHo379//x8/fvw/lM3w9etXuNzatWup4miAAKKKQzdt2sTw8uVLMFtTU5Ohv78fLvfs2TOGV69eUexYgACi2KH//v37//z5cwYmJohRjEDAwsLCiCQP9gilACCAKHbounXrGAwMDBh+/vwJ5l+9evV/Xl4ePARB5TTQ7QyfPn2iKFQBAohih967d49BVlYW7BiYw0ChiOxQX19fhj179lBkD0AAUeTQI0eO/LewsGD4/fs3w58/f8BiOjo6jFOmTIFH/a9fvxhERUUZHj16BE4m5NoFEEAUOfTQoUMMqqqqsJwPpoEO/v/582e4g0AhDXKsubk5w5o1a8i2CyCAyHYoKM1xcnIywNoKMPru3bsMra2tcHWgkAZ5QkNDA1TGku1QgAAi26FLlixhsLe3h4ckKNRgufzLly/o5Sy4VBAUFGR48OABWdEPEEBkOfTbt2//P3z4wCAtLY0hBwo55HIUFNIgh4JKheDgYIbFixeDylaSHQsQQGQ5dOfOnQwODg7gTARKg2xsbPCQBZWjrKysKOUoSB1IHqSWg4MDVFuRbCdAAJHs0OXLl/8/deoUg4qKCji0eHh4wBjkGFg5mpOTAw8xkDjMsaDkERQUxPDjxw9QNUtSqAIEEMkOBdbpDGZmZuCoBIYcODRhuRsbAHkGlqFAmJ2dncHS0pJh9uzZJNkLEEBMJGag/7a2tgzW1tYMwGqSgZeXF+wIUIjBol5bWxulHIWFJgwD0ze4ggBVu6SEKkAAkeTQ06dPM4AcCopCbm5uuONANKzAB5WjwFz/H714AmFYxQBqXXl5eTHMmzePaLsBAohoh7558+a/gIAAOCpBGQIUUiAM4oNCCbkcbWlpQYl6mDpY1QqKDTU1NbBaYgFAALEQq3D16tXgOhuUJkFlIqyxAUqroNACWY6tPQoLbZBnYMkEpP/9+/cMIiIi4CagmJgYIyH7AQKIqBAFNYyBBTWDgoICSi0EshTWaoIBUHu0r68PxaEgNSC1II+BPARyKCgjenp6MnR1dREVUAABRFSIzpw5k8HR0RFsAXIrCZRWYSGJVLeDylHk9ioDMzMz2GGw0ATpBekDiYFC+e3bt/+FhYXxhipAABEMUaCh/0FNOVAmQnYkCIAcALIQ2bGgcrSzs/P/kydP/sMcCiqSQGpAyQZEw/gg8yIiIhja29sJBhZAABEM0RUrVjC4urqCfQ4LUVjZCOLDQggGzp8/z+Dh4QHKfAy7d+8GS8AaL7DoB7FBngSxQdXwx48fwY0cPj4+nKEKEEAEQ/TMmTPgaIeFJrJFMMtgYiAQExPDCAxNcGaRkpJi8Pf3Z1i1ahU4mYBKC1B0w2gQBulLT08nWAEABBAToYYxqLwDZQaYQ0EhCMsQIAxyLKy/BCtHXVxcQOkOnPtBtKSkJAOo2t24cSO4LAWFMCyNgmhlZWWGy5cv43UoQADhdeixY8cY9PT0kDMKA6jVBOpxwtIYrJiCZSBQ2VhfX88QEhLCCIpSUL0OK8JAfFAhf+LECXhsgGiQ40ENcGCywVlTAQQQTocCLQC11BmEhITgmQAUEufOnQP3k7Zu3QpqW4ItAsmDLANlPJAYSN20adP+gxwIMuPdu3fgRjMo3QLTIlg9rCSAxVBsbCxID85AAwggFlztzTlz5jAkJibC0yLU8eCohGUOUHSdPXsWHGJcXFzgYgzkYFAN9v37d3ADGqQHuVHd3d0Ndhis2QfLoCA9wCIKXGqA2gvobgIIIEZcw46VlZX/QcUITB7WSgc5GiQGyq0gPsghyA0PkDqQGn5+fnDa27t3L1g9SA7kSeQMiZykQHxQSIP09fT0YDgUIIBwOhQ0hqSurs5IbM0FciyowQzSB4rCiRMnMgLT6n+QR0AA1LoHNg8ZGcgEAAGEsxwl1pHQgp8Rljxg9fl/aAiAQl1GRoYiR4IAQAAx0mrEGdR2vX37NrjNWlJSwkipeQABBE4btMJbtmz5Ty2zAAKIcaiM4QME0JAZcQYIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAAIlPXLF1l89gAAAAASUVORK5CYII=',\r\n'w8/flipv.png':'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',\r\n'w8/fullscreen.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABEklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQACxEKuwvr4ea5XT2NjISAt9MAAQQIM+BAECiIVUDcT6HJd6XCGKCwAE0KAPQYAAGvQOBAigQe9AgABiHOztQYAAGvQhCBBAg96BAAE06B0IEECD3oEAATToHQgQQIPegQABRLQDQVUUqdUUNcwBCKBBH4IAATToHQgQQIPegQABxEJOGqJGg5VYABBAgz4EAQJo0DcWAAJo0IcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIEGAAqSSc7Nye91AAAAABJRU5ErkJggg==',\r\n'w8/fullscreen2.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABHklEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBDZDmxoaPgPwpSqIQQAAmjQhyBAAA16BwIE0KB3IEAAsZCQ5v6S6ymkdPgPymcmVi9AALHQObRJNgMggBgHe4MVIIAGfRoECKBB70CAABr0DgQIoEHvQIAAYiGjqEAXZ6SmHnQAEECkFDP/qBDq/0jVABBApIQgMzGhQ2mIoQOAABr0aRAggAa9AwECaNA7ECCABn1VBxBAgz4EAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECaNA7ECCABr0DAQJo0DsQIIAGvQMBAmjQOxAggAa9AwECDADj+SpPAnbKXAAAAABJRU5ErkJggg==',\r\n'w8/gene.png':'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',\r\n'w8/h.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABRUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQqzElJUUBSCUgCS2YO3fuA2xqk5OTG5C4B+bMmXOAVPsAAoiFAk+CHFqP7AAgfoBDbT0an2SHAgTQkIl6gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAYqGiWfuBxRDNHAoQQEMmRAECaMg4FCCAqBn1jsCa6QCOmoniri5AAA2ZEAUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCCBKcj2oSdeIxscFGilp4oEAQAAxDpVBMoAAGjJRDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDQYx4/2Il6LAAAAABJRU5ErkJggg==',\r\n'w8/handle.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAmElEQVR42mL8//8/w1AAAAHEQq7GvXv3Zn7//p1BUlKSQVxcnEFGRmY6NnVPnjzJfPnyJcPz588ZODk5GZydnaeTYx9AADFSEqJnz57NBDkABNAdjOxAmLyxsfF0cu0CCCBGSqMe3UESEhJg+sWLF1g9QC4ACCBGaqVRbCFIDQfCAEAAMVI7M505cyYTRJuYmEynprkAAQYAWQ5L+xSV5joAAAAASUVORK5CYII=',\r\n'w8/handle2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAGCAYAAAC1rQwWAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC/SURBVHjaYvz//z8DqYCRkZEVSPECMStU6DcQf4bSyACrOqCdv0m1EyCAWBjIAxxArATEUlAzQI68D8TvoGwGqAOFgFgRyv4DxM+A+CYWDxEEAAFErkN/APFrIBaDYiEofgd1MAPUgUJQRzJAHfkaqpdkABBA5Dr0N9RiGBvmIFgoMiA58DPUA7egen6TYyFAADGSmUbR06AQlhD8jBTC75DTMDl2AgQQpQ5Fd7A4EOtBxS4B8UtsmYwcOwECDAAGeTjR5bLpHwAAAABJRU5ErkJggg==',\r\n'w8/helix.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQADR3KEfPnz4//btW4oLa4AAoqlDf/z48f/q1asMz549o9gsgABioYUD//79+x8Ykgw3b95k+PjxIwMPDw/FZgIEEAu1Hfj582eGp0+fMrx+/RoUogwsLCwM8vLyFJsNEEBUcSiwvQB24MOHDxnevHnD8Pv3bwZGRkYGTk5OBiUlJQZ+fn6K7QAIIBZqOPLu3bsMjx8/Zvj58yfYgWxsbODQFBERYZCWlgaJMVJqD0AAUezQO3fuMNy/f5/h379/DBwcHAzMzMwMDx48AEf/lStXQMmBwcTEhOIQBQggih366NEjBiYmJgY+Pj4GFRUVsGNBIQvK6cBiiWHPnj0Mampq/4HyFIUqQABRI+oZeHl5GXR0dBi4ubnBjnF2dv5vbGzMsGXLFnAIgxwN8gglACCAKHYoKNRAxRAo4ygrK/+HORYUshoaGmB5UHqlFAAEEMUOBTkClNtfvHjBICMjw2Bvb/8f5GhQkvj27Rs4c4HEKQUAAcRIaVfk06dP/48fP85w7do1BjExMQZJSUmGP3/+gB0ISrugdCsrKwtiU5RGAQKI4hAFpU8tLS0GVlZWcHoF5XIQG1SWghwuJSVFsSNBACCAqJLrb9++DS6eQCEIcuTLly/BxdP169cZ2NnZQbme4qgHCCCKHQoq7EEhCcxEDAoKCuBM9P79e3D6BNVW27ZtA4Xqf2B9T1GoAgQQVYonUKgZGhqCcz6oFvLz8/tvY2PDsGnTJnBdDwphShsmAAFEcTMP1EoCNeVevXoFTpcgACo7BQUFGQwMDMDpFBSylAKAAKJKOQpKp4sWLQLncEtLS3DxBEoSX79+Bed+cXFxih0KEEAUF0/ATAMunu7du8cgLCzMoKioCM5YsCIKlOs1NTVBSYCiNAoQQIzUGNIBOfbWrVtgB4KKJxANSregzAUqQyl1JAgABBDFUQ+skcCOBIUgyNOgaAeFLKg2ApWx1GjigQBAAFHsUFA9D2otgRwICj1QegSxqVHIIwOAAKLYoSBHCggIgNMhqIVErRBEBwABRJUqVE9Pj4GLi4smDoQBgACiODMBa6H/wDKTpo4EAYAAYhwqA7kAATRkhnQAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwABdj0ooKrhSoQAAAABJRU5ErkJggg==',\r\n'w8/helm_aa.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADWklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xeBaVBKZkST+8+QyNDFiEsnQAAx4kr8l//bM8xgEGaAyTOiWPCOIZ3hIIMuDmMBAginoUH/pRmigAb8BxuCTEKMXsbwjGEtDkMBAghHmK7/fxNoJMKzyEaC3MrIEM1wE6gKu26AAMLhUqP/oQyOGKL/4QEBYu1nWMtwFqtbAQIIq0v7/guDjfwP1vwfSsPcCHEzI4MTgwBDL1Y3AQQQFkPfHO4Aeg5myH+4UQxI3oeAWIYuhtfnMU0ACCAs3s/5/54hF8mrqF5HjbipDHwM0zCCACCAMFx64v9ahgSUJATBVlDXM8INBxmcwLCB4SSGuwACCMPQZoYYBh64dkaoAXsYrBnuA8n/KOn2PwM3MI00YvgVIIDQDF32/zlDEEbYMTDsYDBgCAaSsIhCGB3M8ByoC9UUgABCM7QV6E5GeAjC1F5kOAb0vCuQfIoUcTAylqEFzaUAAYRiaAtQhxVKrENctQfoHgYGfQZFYNpEDmeIiy0ZtNAMBQggFEODGR4xvELKQ7CUuZbBBcz3YtiGFNYwt75i2MnwECUAAAIIpZTSZMz+v4ChDO55iHv3AHEmXM0eYDCghvgChmwGeZRkBRBAaOn0l5D621IGI6Sig5GhBBhJMVAvlwD53fCAAZHngRngpjDbO2RTAAIILaLY3lUzLIGHKYi+wHCUwQHuWQ8g7xlK/lrMUMmAaiQDA0AAYaTTFEZWhi1IiX8PMOqk4ekA5PXlSCljCwMrQxpGjgIIICzZdO//VKD9TChZFLPkB4n8BQbLHAZnDEMBAghr0Zfwn4khFZ7TEUYi8j0kwc1h+MWwCEvhBxBAWA198F+DYSGDPIbLYNUJhPeQIZ7hBoMCFkMBAghrearAWA0MABS7kVItzKWgKFLAWkgDBBDOOkrzfzqDOYqBqMFwAlgt3sBRRwEEEM56H+RW9NIUkUUZgAmvBmflDhBAjLjbp57/HzFIoAUCLExfAJPZLpz1PkAA4TH0yP+3SLGPXvJLMpjjNBQggBhp0ZIGCCCatKUAAogmhgIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgAADAPe43aRzzdddAAAAAElFTkSuQmCC',\r\n'w8/helm_base.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiGhDd/8/QHRCAQgghv9EwfL/Bv/1/lf+J041QACxEGNxxf+dDFkMjAyTGBj+tzESVg8QQER4vxxoZDYDDxDmMmxhqCIiEAACiPE/EUbmMHBDeV8ZJjN4MxByLUAAMRHy+C6gK0FGMoIhN9C1Wwm6FiCAmAiFJcjjIIdBooARyMshGAgAAcSEz+M7oK6EhhQQggzmYcgjYCxAADHhNnIX0E0QVyKSH4THTcBYgABiwheWPFAXMsCN/g/lgYzFHbYAAcSELywZkBJ0FEM5NGwhRnPjSWAAAYTF0EqwkdzQiIG47ASDEcMjhuPwVABzLXZjAQKICdOVO+CJCOIuEHmUQZPBHUgisjbC2GoMYwECiAmXkciRc5PhLDDJWwDJ11ADYQaDjN2MYSxAAKEYWv1/KTj3QLyHUHkc6EoGBg0GWYaTKAkMBEAJbCGasQABhGJoyTJZhu1oMQ4yfBfQlSDajuEw3Mj/0JTwn2EngzRQJ7I5AAGElvffL/WOkmQIhXobIncCVDrBQS6DFVQOIr+O4THDtmVC0cimAAQQRoHybqkP0NgQqBaQW7qBHveBuq8biIuRgmAdw0OGHcsEo1HNAAggjNgXit6y7AXDGngg3GA4x2AGjzRrcGTBjFwLTGbbMYxkYAAIICzpFGTsc4ZV0BgGpVBxePhaAcltUHUQI4WiMU0ACCAc5SkoECTAYcsIz/EM8HQLcSVmWMIAQADhyPuwQEAkrP/wFMqAI3oQACCA8JT8CNcywPMXLMZxeRwCAAIIT3mKiDJYIU2ckQwMAAGEt+QXit4KjLI1UG9DQhfkcfxGMjAABBCBOkoQnBLWwCMJ5MptBIxkYAAIICKaBm+XWv4P+r8cCEP/m/1/u5SwDoAAIqrF8Q5sbAjQyHdLiVEPEEBENntAriXOlSAIEECMxLa63m5hYBD2IU4tQAAx0qLNDxBANGmfAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAIDTkuSH1ZORAAAAAElFTkSuQmCC',\r\n'w8/helm_blob.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGAUExURai8w+zv8dPJxpegqd3e3iYmJri4uPXy78+2mO7w8ZqZmfrVqu/v75admvPFq/j28aKlq+7y9U5OThoaGvzZsTY2Nvb08b/N1e7z+O7u7RUVFfb29vr6+pCQkP///+3t7fLy8vX19YCAgPf398nJyaurq/n5+erq6kVFRVVVVT8/P9DQ0KioqAwMDOjo6FBQUPv7+/j4+Nvb28bGxiMjI/Pv7vHIrvDx9KGpsJyOnKvM2eCxm+re1+7t7fH29XaGkuvw97rI2vLx8Nzk6M/y+4eVlqClmJ+VgqKjpImOlaKpp6XM6vj3+ae4vrfU8J26yvn6+Pr5+Pv6+ZDD74yNjuLdyLDS2omx4fTz8u3t7n+Ce6Kv06CMjaOSlbOQi5ycxNjSuMS6sPP38ta5q4+krfPSwezh2/jix7mmh/X2+Pn9++y/jPTr4riWkfLSsbPd4dP1+d/x/frx7qXA38S7q86xppKVnJOyw/Dx8+fIrbPF6MvLywgICO7u7gAAAP///1hZnnoAAACAdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AOAVLZwAAAidJREFUeNpiqCcaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggJCVKhrrCAnXwIGwkI6xIpI0QAAhKTVSEq6rkzJhhQITqbo6YSUjhDxAACGUVmvV1WnKsqlUQ4EKm6xmXZ1WNVwBQADBlWqL1omqysvJKEtDgbKMnLwqUFAbpgIggGBK1TXqhFgMFWpRgIIhi1CdhjpUCUAAQZUaKNWJsijWYgBFFtE6JQOIGoAAgirVE9ZVVePBVMqjpqorrAdRAxBAUKVcdfryCrVYgIK8fh0XRA1AAEGVCtXJytViBXKydUIQNQABBFUqLMUmg12pDJuUMEQNQABBldaYqCjX1koyZqqJSXI6AVVIVjhBlCqrmNRA1AAEEEwpa7V0bS1nTqKHo10aCyMPD6eNM8SX0tWsUKUAAYSiVEIkyp7Xm8+3sMg8y9rKgd8WRSlAAKEq5U4RzwjmY0hgFqjKtveKTkJRChBAaKa6WriHmzHE5ScLcPgzxbiYIisFCCAMU0viKxlyw0otOMqZYgtQlAIEEIpSwXSushC/VPFQS16/PE+3YjEUBwAEEIpSSU61QBl2wYiKAEN2wSAfsUgUpQABhKIUG0AoBQgglCjABhBRABBAJEQsQACRkFwAAoiERAgQQCQkbYAAIiHDAAQQCdkQIIBIyNwAAURCkQEQQCQURAABRELxBhBAJBSaAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQgwAKs512mdfKXeAAAAAElFTkSuQmCC',\r\n'w8/helm_chem.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC8klEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCyYQo3fd7AJMP2D8/8zMIIxKgCJMDF8+Ofxq54T3QSAAMJi6Be22K9BL74xI4uBjEWmIYDr73qJe9yYJgAEEBZDmZkEX4jt+soJcw+EhhnICHU5iMX9nd+NSRXTBIAAwmLof4Y/zH84/3AgG8UAD4L/cLczMPxh+MuMLUwBAghrREE0w1zJiGQYspG4AUAAMWE3EmYwzHiI0f/hVjDA3Y/NeIAAwur9/3B3ooYiA4qL/yO5HBUABBALdg8wosT6b8a/TP/B3uL684/hPyNyEsNmLEAAseAyEuY+tn83BP28hL+x/mRieMNecCfj8jdGQokfIIBY8EuDjP3KoM644rz4VQaGo9rpNtZPNd79ZsKWHRAAIIBwZlNEPDMBk85Hli/sn9i1gE549Z8R7hNcACCAmLC7Djk6/jP8Y/jB9J2FmXETI8t/RYa/8PSAK2kBBBALLjciEg4nw12GaB1W1ceCwv9XnFJ4/ZONESmVYAMAAcSEO/ZhrvnOoMmw99y51XVPORi5fzH/+49iMTa3AgQQzsT/Hx4MjMAw/cDylTVrj8ndeI3vXMz//2MkPVQAEEBMuKPoPwMsSpiBpv9n/Pmv8fkv0Rjvf4yIaMIeAAABxII77iGu+MOk9XHNCmaGX2wMDDyPdy7/xfQfKSNjz6YAAYQzTBmRUgDTf5CPGRn+/Wf6z/EXPUtjAoAAYsKdSRlRCg1GDANwp1OAAGLCne//YwQFrED8j2QVNgAQQCy4I4oBw4WIdMGAt5QCCCAWbI7n+cv2nY2YavM7319s4QcQQFgM/fB/ksR+t9/M2NMDcuXC+veyhDoWxwIEECOm2PmnNyQYmDArPOTKGW7RP40XhtLoJgAEECMtGr0AAUSTFgpAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQggmhgKEEA0MRQgwAB9HtzkRRnoOAAAAABJRU5ErkJggg==',\r\n'w8/helm_cterm.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADV0lEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcx/GdghPNBKRrBi2foZsSlEyCAGHEl/sv/7RlmMAgBjYEY/B/Kghj9jiGd4SCDLg5jAQIIp6HB/6UYouEuZIAbBwNLGJ4zrMVhKEAA4QjTDf9vgo2EGcQINRgBohluAlVh1w0QQDhcavQ/lMERRQQRCDCwn2ENw1msbgUIIKwu7fsvDDbyP0okwVj/oTwHBgGgSmz6AQIIi6FvDncwxCCF43+k0GSEQoibYxk6GF6fxzQBIICweD/n/weGHLhH/8PjnwEjDfxnmMrAxzANIwgAAgjDpSf+rwWmQVgIMsAj6D+K2xmh0ZfAsJ7hJIa7AAIIw6Ve/7UZgtDcAzH0K8NihnsMPAwuDNZIUbea4RrDdjS3AgQQmkuX/X/OEAx3HSOK1ysYXgETki4wHO/CQ/k/QwjDS4blaC4DCCA0l2r/T2awRDIKofkuQyHDMqA7GRl2MegxSCAlr2MMcxmuorgVIIBQ8n7Lf0YGK6hBvii5fjPDFwZNBl6wnBtK6mUA6jiOFoQAAYRiaDDQay8ZxMHszRhxfQPK3gV0pz5SaL9k2M7w8L88klsBAgglTDUZcxgWouUhRqh2fQZhhl6gey8xTEFJXv8ZFgAToDyK9wECCC1Mfwmpvy1jMEQp6GBhd5dhJsN1BhEGH3DqgKk4z9DFcEOY/R2yKQABhJGkZv+fz9CHtQT9j8EGkUXAtJqGlqQAAggj8acysjJsgeZwRqQ0gMgOyJl2CwMLhpEMDAABhCXv1wGTzj94UkIt/BiQAoWB4Q/DUoYGLAUKQABhLfoSgUkrDWtxh+r1OQy/GBZhKfwAAgiroQ/+awLjVB5nSQrR8wgYmtcZFLAYChBAWMtTBcYqYD7/j5bI/yMVMCC4CJhxFbAW0gABhLOO0vifDsyw2NwKoY8DE9gNHHUUQADhrPdrgVUbA9x9/9GMBFV8NTgrd4AAYsTdPvX8/5BBEofcCwZphl04632AAMJj6NH/b1AyAawUgISqBIM5TkMBAoiRFi1pgACiSVsKIIBoYihAANHEUIAAoomhAAFEE0MBAogmhgIEEE0MBQgwAIU/76aa/+1IAAAAAElFTkSuQmCC',\r\n'w8/helm_find.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC2klEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsZCr8fXr1//Pnz/P8PjxY4YXL16AxSQkJBhkZWUZDAwMGMTExBip6VCAAGIktcD//Pnz/0WLFjF8+PABrzoBAQGGuLg4Bl5eXqo4GCCASHLorl27/p8+fRrM5uDgYLC0tGTQ1dVlYGNjA4v9+vWL4fLlywzHjx9n+PHjB1jM1NSUwc3NjWLHAgQQ0Q5FdiTUcrB+HMr/A9UzoKmnyLEAAcREbHTDLE1NTYVZis9iRpAakFoQAOkFmUGJQwECiCiHgtIkLGRIySQgtSA9yGaQCwACiImY3A3KOKA0CY1ukgBID0gvyAyQWeQ6FCCACDoUVASBACjjEIhunMkAqhduFjkAIIAIOhRUToIAKHeTC2B6YWaRAwACiKBDYYU5rAgiB8D0wswiBwAE0JCpQgECiKBDQdUirDAnF8D0wswiBwAEEEGHgupuEADVOOQCmF6YWeQAgAAi6FBQAwMEQNUiqMYhw47/UL0MhoaGZDsUIIAIOhRUaIMaGKC6G1QtkgpAekB6QWaIioqSXY0CBBBRmQnUCoJVha9evSI6VEFqYVUvzAxyAUAAEeVQUFMNVhXOnj0b3EAhkAxAjZL/ILVINRzDvXv3/v8ncyABIIBo3sxDByB9BQUFDMzMzCQlA4AAonnDGRSSy5cvp9ixAAHESO6QDij9XbhwgWBXBBTd6A4lx7EAAcRI67EnUJrs6+vDmhRIcSxAANG8CmUEApBjQI5CByDHT5gwgeHv378EQwsggOhS14NCDJ9jZ8yYQdAMgACiW6MEn2MJZUwQAAgguraecDnW0dGRoF6AAGIciIFcUJoERTcoJEGOtLKyIpiZAAKIcaiMOAME0JBpOAME0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGABeXTNgiE6m2QAAAABJRU5ErkJggg==',\r\n'w8/helm_import.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACaklEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQADRxFCAAKKJoQABRBNDAQKIBZkz/f8MAsr/MzBiFclgyESSAAggFENfMXgylIEVgQpEiCpGqLb/QMjE8A/Mh3jxP1yuA6gTGQAEEAt2FzGC8T+ooTD+f6hREDGIgf/g1iMAQAAxYTPuP9xjyO5kgNP/4BhhOTIACCAWTENB7pnBEMHAz/CBYTvDYyDrGJAEGVjKsA3I8mKQQ3IPIxaXAgQQE6aRDAyXGSYDtTMwhDJ8YtBlCGPQYuADGmbN0M2wmkEWyP8IDc//QDdiq44AAogJPS5BYAVDPMNEoIF8DGkMvAz5DHoMOkDDbBhOMkxg8AEazA8OGEYkZ6ACgABiwkw0/xn2ALWD3PsUqOU40HgGaMQwMDwCkssZHsIdAAksdAAQQFhifweDGcMkhmUMq4C0K4M0UuosBLrcDGhVGThyYAZiuhQggBiRhRr/f2eogLsL5MEPQFfpw1MkJLz1wAYyQuMeBLoYOBjqkWILIIBYMCOKESld8gMjCpGLQIbqQt34Hyk/obsVIICwRNR/aMr7D7fmH1JiZwR7GYIZkYxHBgABhObSeQybkbyGyIgQC5ng7oO4B5abXjNkoZgCEEAoYfry/0uUnIWaBf/DMyoDWmJiZBBjEEcKU4AAYqRFWwoggGhSngIEEE0MBQggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQDQxFCCAaGIoQIABAEM8kax0vpcsAAAAAElFTkSuQmCC',\r\n'w8/helm_layout.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAjBSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgQQC7rAzJkzGWBFD4g+ceIEQ1hYGAMbGxvDsWPHGOTk5BgsLS0Zvn//zsDJyclw7949hk+fPjEwMjKC9YBoGBtmBkz827dvK3/8+BHy4sULhvj4+HZ+fv6av3//guVg6kRERFDcAxBAGA4EKYRpQNaITR07OzuDlJQUJCqYmMBizMzMDG/evAHrBYn9+/cPbg4vL2/127dvQ69cucK4b9++Kisrqxqgo1E8hO5AgABiwWU5smOxhQgIgHwvKSmJYigrKyvDjRs3GC5evMggLy/PICgoCHYkCAA9dOfjx4/v/vz5IwwK9bt376oICAjcwVdZAAQQwTQI0gxzKCyqkAHIkb9//wZjoMVgGhRyW7duZTh9+jRY7PXr1+BQff78OQMLC4uInp5e1JMnTxi3bNly++nTpy9BoQ4yB4TRAUAAYYQgzAHIaQc5ygl5BtkcYOgwGBgYMDx8+BDkMLDDQY4wNjZeDvTAMlBIAx0oBAphLi4urOYDBBALLktgjkLnY/MMNoNBYiCLgemOQUhIiOHBgwfg9AlLBjIyMgWPHz/uAyaRL6BQdnZ2BnsAHQAEEAuh0EC2HFemwaYWWY6HhweU3hhu3boFdgQ0ViYCHekLFHcGeuA/kK4HlhRNGhoaKPoBAghrFCPnYHwJGJcnQAAUejB5kKOcnJwYhIWF4bkaBIDFVMCzZ88+//r1i+Hdu3e+wEzUhG4HQADhDEGgQeXAKJEEMgtABgLTzhEgbQOLJmSHgzIGzFNQB+wBhsZNYLqbDpS+AhIDlnlgRwLLQXiu5uDg+LJjx47bQMcpA8tXU2wxABBAGA4ERQdQA8gQPaClkcByKv/nz5/PgA7jvX///n9gaPw3NDRkglkCSk9AeYb379/Dow/oYH5g4Z4FdEDWnj17JIFiL2AhClID0gMCUM8eBXpeZdOmTf9sbGzmKCoqpiG7ByCAMFIlSDMo51lbW0cDLWIEGfry5UtJoAVMIDlglDACHRoIchSID7IQhD9//gzGoFoC6LCjoFoGBIC58wuoQAflUlCGAZkHCoAPHz4wAAttkCNzgfoYd+/ezXj+/PkUdPcABBBGCAJz1G2gYbeAFrAAC+BfwATMKiEh0QAsu5r27t37G2g5yBFrgYb/B7KPAC23BxUdIAtBlgMdvhUo/hRo1DtpaWlzYEH9BRbaIHmQQ0FpERadQM99Aap/DrRPUklJ6TK6ewACCMOBQAt3nTp1KguU9bW1tVuBoVcDqnehRQarrq4uw9evX/9t2LCBCViG2fn7+4PqWFAog6Ma5LHLly+ngspAkFpYlQfCIDOBoQ9Os0iZiQco91lZWZkXmLyi0d0DEEAYDgSG2kJgkGeBHAS05KmtrS3YYpChoGoN1FAAyt8AlmGawKrsP8jxd+7cYeDj4wOVbSB8etasWW4gRwM9ogvMKHeQayMtLS14CQFyNDAH81y4cIEH2CjhERcXv2xubo6SUwACCMOBX758+QZ02CVgtG4GOmg6rLUBrEPBNQOIDZTT8vPzYwAa/OXo0aPPgKGuBnRgLDAdTQcm9KvJyclfgA6ffvXq1fWwXA8rboDRDq5VkIqoF7KysrVnzpyZ++rVK4xcDBBAGA4E1pdngemLDWghB1ADuDkEy3nAEGE4fPgwOPeB0hxQfCcQBwEd+Bkof5Sbm3vq9evXGdXV1T2BHt0BilLk8lFUVBRcSiCHKBDzADPNKmD6mwgspB+guwcggLBFMSso2oCOUQU1pWCVP0gMVKCCQlFMTAxsAdBR9cBWSxAoVwKj9iEQW4M8BIzyWGAo7QBGGbwuB5kDymAgT4I8CGuKAcVdgYGyCmgGMxDfQncPQABhOBCYdm4ANWiqqal9ABkI8jHIIFCLBBTNIDaosAVZCCqEz549mwVkZwDLrwigOCje/gM9kA5yBCgEQY4DFT2gulhBQQHcfgTqAadrUB0NzIjrgSHLBPQ8I9BTQejuAQggjHIQ2E7TAobEZqBDOYC+dACVZ7CCFVZTgIoKIE66ffv2OWCT6j7IM0D1/4DJ4i/QAczAUP4CanmD9IL0gNp+IAeB0h60mGIAZjIGYJOLAZTugJntEagMBSYVjHoVIIAwHAgyBAhUgM0hzqlTp+4H5VCQZlgtAYpmEB/o61XA6NIHhtx2oMG2wNzJCkyXzNu3b/8PTKf/QI4C1S4gPaDQRK7bQXwQDfTsEWA78TLQoW+AGW8VqDJAdw9AAGEIWFhYMOjr698H+R7k60uXLr0FRl0kMAOAfF8HZE8A+jry5s2bRUAHMoJCBFRDgIogYEL/BfII0FOMQH0OoPSG3ISCxQDILFA6Biafa0CgA/SUCTC6WUDi6AAggBjRWyugVjC0ceAANEzz+PHj4JxpZGT0H+jLs0B5E1DLGJjj/gIzQQcwpH5FRkY2wZr2wAJ7z5EjR6SAoaIBdMBfYGG9Chid0aAo1dTUBBVRDsAqLdTR0TEbWNAzLF++/D8oRoAF/hVgEtH19PREcQ9AAGGEIKwJD/T5AVBrBJge30PrWUagZRyg9AiKPlVV1cfA0r8GyG9CbrgCyzkXYHRrAaszUFSz7N+/PwqYO58AQ/okMEbMgGZ/A6pLW7du3X9gi/oPMEZOAUN8HdBeXVCSQAcAAYS1uQUNQXDUARsOwkCHLAVa2A4MsSvAkFIBJvJgYInfCVIDjEp48wkUnaAMAIpaoPojwPLUDpgu/wNDUhgoJw0sBU4CQ/8NELMAGx2gHMxkZ2dnDmKDijFszS2AAMLZHoQlalBRAcyx0bBiA+iYO0CHdYIyC3qDFeRAUAEO6msA1dmDohXYKmIAesYDWKtsB6VpYEgeB/ZJxIFJxBTYANkOSougqAYVXdjSIEAAMQ728UGAABr0Qx8AATToHQgQQIPegQABNOgdCBBAg96BAAE06B0IEECD3oEAAQYAtiWk3F07WfMAAAAASUVORK5CYII=',\r\n'w8/helm_linker.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADzElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiIWQgk+56yfdZ7jHcJ/hP4MCgwqDIkNgHt9k/HoAAogRX5I68X8uw1IGUQYLBkEgycDwmuENw2kgjmZIZLBkxK0PIIBwGvrFO3XLKaBx1gwCDIxAV0IwCLxnOMRwhsGYYa4Pz1bsegECCIehR/+nM6gyhDGAZBkZIGpgToOIrWC4wzCLwRqrewECCGtELfnvyuDIEArWDHMhxOj/YB6IHc5gz+AKVIlNP0AAYXHp5f92DHkM6khuQ7gPwQOxbzBMBAaFHoZrAQIIi6EW/3UYnKHakElk42DW7GK4yXAcw1CAAMLwfuZ/IaCRDHDD/kO9DXcF1EBIMLgx8AJ1oJsBEEBohn71XsHgBTUCFpYQiGwwwmhGBj+G5cCUgmoKQAChGTp7izGDMNQlDPCoQTbwP1L4gvwhzGDAMHcLqikAAYQWpgb/vRl04B6HaNvKsAwuL8fQgRJ5IKOvMGxhuIgSrgABhOLSl09eMGhDvfcf6mkQNgIaC4EaDD3wwIGFuw7DS6BOZHMAAgjF0HvSokhJHd3jIODJcI7hFdydMIPFGe5LI6sCCCAUQ+8DQ+g/PFIYMfIRas5CpANBhgcoVgMEEEopdY9BFCksUY2FBMViYFCIwXMVTFwEzVCAAEIxVIzhE1LaRCT0cwxRUBVGDMXwsES49TPQrcgAIIBQDFVgeIdWIiGMQs5fDNBIhAXDWwYlFEMBAgglTJWBJSbCSMwMDAsIRqQUAAJv0AwFCCBUQxm/AI1FaP6PktT/o2VWWFp+BfS+Mko6BQggtBwVCSx1GJDimRGHl5ET/1FgMYgKAAIILUdd+O/L0Im1TMIsBGFypcAcZYCiDCCA0FxqwKjFcADsUUQWYIDykVMqItntB5a8Bmg2AwQQRm3awmAGzOHK8DBjhGdaZEtgIXuXYTbDKQy/AAQQRnlqyjgLWIP+gRvzHy33MMCLQgagqiUM04A60M0ACCCsFV/m/8sMsQx8GBkTOaT/AzPKYgY9hulYqj6AAMJa8U1ndGRoY7gML6kQLkZYcgWowh6rkQwMAAGEs95f/T8bWOfbMkiiVXsg1gtgMjrCMJUhBEeDAiCA8LRQbv+fCQwzZaCxlsBSgRlo6G9g1jjB8AwYPREM2QyqONsoAAEETy7Y4V/mWf8d/qv+5/gvC4QcQJbL/2n//zLj1wUQQIzENs8fABUqMBKnFiCAGGnR5gcIIJq0TwECiCaGAgQQTQwFCCCaGAoQQDQxFCDAACflNCUJWTDfAAAAAElFTkSuQmCC',\r\n'w8/helm_mex.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==',\r\n'w8/helm_nterm.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADNElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCAW3FIl/xcyMCLx/0N5EDqBoYsRl06AAGLElfgv/3dgmMEgCFMGNgqB3zFkMBxk0MVhLEAA4TQ0+L8UQzTUVf/hLkawljI8Y1iLw1CAAMIRphv+3wQaCTEG4jYGhv9wg0EgmuEmUBV23QABhMOlRv9DGJyg2hFuhZEQsf0MaxjOYnUrQABhdWnffyGgkQwYnoaREKMdGQSAKrHpBwggLIa+PdzJEAv3JiOK4UheBPJiGToZ3pzHNAEggLB4P+f/e4YclFiHufY/kpEQsSkM/AzTMIIAIIAwXHry/1qGRLAXGeER9B+emBDikJBNYFgP1IFuBkAAYRjaCPQUN9SrZQz3wEbMZLgLj7D/SG79z8DLEMXQgOFXgABCM3T5/xcMQXCPX2foAxtyj+ErPEwZUXLYf4ZQhpcMy9DcChBAaIa2MMRADYRo/8awBB4EKFGBZHwMUBcqAAgglLzf8p+RwQolggoYahksoQb4Qa2CyGyEGvwfqOMYmqEAAYRiaDBDB9AzYkjxrMfgxTCBgQvM3oTkcUSWYATq2Mnw8L88UhoACCAU72sy5jAsRErgIDoGGJ7XkRIRA5LHIfQChmwGeZRkBRBAaGHaJHye4QJKyHEDgwA3+M8AUt8kjCoKEEAYiX/O/3nAOEctkZDzPmq59Z+hmCGeIR0t+QMEEEY6TWFkZdgCjyzU0glWmiJEtjKwYBjJwAAQQFjyfj2wrPyDFB2MSHEOS2wQ+h9QZT2WQAEIIKxFXyIwaaUi5RvkAhA5UOYw/GJYhKXwAwggrIY++K/BsIhBDsMQ1ILwITA0bzAoYDEUIICwlqcKjNVAQxlQjETP9QxAFZVYjWRgAAggnHWU5v90BguUPMSAwjsOLGZu4KijAAIIZ71fA8z1yLn8P1LJD+ItBarABQACiBF3+9Tz/yMGCRxyzxlkGXbirPcBAgiPoUf+v8HibVgNIMlgjtNQgABipEVLGiCAaNKWAgggmhgKEEA0MRQggGhiKEAA0cRQgACiiaEAAUQTQwECDAB+RNxwBMcJHQAAAABJRU5ErkJggg==',\r\n'w8/helm_nucleotide.png':'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',\r\n'w8/helm_sugar.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAE4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yT179jCAiq8/f/4wPn78mHX37t3eubm5644cOcLw/ft3BiYm0vz5798/Bg4ODgZbW1uGyZMnB7m7u2+Vk5P7zcrK+p+RkZHBwcEBp16AAGIhxgKgY22Ajj105coVhqysLAYJCQkGoOEMxJbBIEeA1ILo379/M6xYsQLk+XUuLi4gx9sBlRwmZAZAABFyKCMw1KzPnTt3aPPmzQw5OTlgi0AhA/UA3BHYHAZjI6sFpzdgTIA8OmvWLIbg4OBD1tbWtkD5oyBluBwCEEB4HQo08P/Vq1cPb9q0iSE5OZnh7du3cMuwhRa+EEZX9+3bN4b09HSwYwUFBQ9ra2sz4nMLQADhTWScnJz+/f39DPHx8Qzv3r3D6UhsjsKSfDDUgDyemJjI0N3dDUq7/vjcAhBAeB365s2bDTw8PKD0hCvtkiSOzUOgpMTNzQ22C59agADC69DLly8ziIuLM/z9+5fkEMOmFjn6YXpAZoPsuHDhAl5PAQQQ3jQKSkfMzMwYhuOyFJcHCGU4UMb6+vUrXocCBBChzIRhITY2Ozs7GCM7FBRSv379AmOYg9BpZDMIlckAAcRCRBmKl83GxgZOIocPHwbHAExcTEyMwdjYmEFHR4fh58+feEsBYgBAALEwUAhAFgFrLQZFRUUGWVlZcMiAxH78+MFw6dIlsEdUVFTAGRKbR4nNeAABxEKsY3BFO4wtJSXFoK6uDueDcjOomgVWFmBxEJ+YYgwXAAggYqtQgskBlCZBGLn2AdXroOSAq2IgpRsEEEAkRT2yweihASodQI4D0SAAqiBu3rzJoK+vD65ykR2HXoIQE7oAAcRCqiNhIYJsIajAXrlyJUqmASUFUKNDT08PI9qxZSJCoQsQQCRnJuTog7G/fPnCEBkZCc7hoFAFFd4gDMpcpNZquABAADERm5kI1dugUAPldBAGOVhZWZlhzZo1YD6sJKAEAAQQEzmZCR2gV7GgUASVocBGDcPWrVvBfOSSg5jAQAcAAcRESfkJwqCMAirceXl54WIgDApFV1dXcOZ6/fo1mI/Pw4QCAyCAyC7wYQaDMpC5uTnYwbBMA5MTFRVliIqKApenIDlszURikwRAALEQ6uMgG4arIQJyLLYiBxTloMYGtlyOniFhvQZcACCA8EY9FxcXStWHraDGVSZia23hanDD2qT4AEAA4XUoqAx8+fIlvBBHtoxQesPWQsIWKywsLAzPnz8HVwz4AEAA4XWoiIhIACjqQO1FStMyrpwNCgRQNQuyC585AAGE16HAMnBjSUkJw4IFCxiEhYVx1ijEZgjkkAbRIDPnzp3LUFlZCYr+jfj0AgQQCwGDGbW0tGyDgoIOz5w5kyEpKQmcnmCND1wdO0JFDSgUQVE+ffp0hvDwcAZgDxTUXWbE110GCCBCxdN/YG48Aiy87YBRc6ivrw9cHkpKSuJNDrhCGSQGavGD0iQolxcVFYHasXYgOwjFCkAAEVWOAh13BBgK7Lq6ut75+fnrDh48CE5X5AzpgEoSOzs7hkmTJgUBQ3Ur0IzfxOgFCCDGoTI0DhBAQ2Y0DyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECDAAB65lTZlf25QAAAABJRU5ErkJggg==',\r\n'w8/heptane.png':'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',\r\n'w8/hexane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==',\r\n'w8/inkblue.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyMi1kxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvb/X/wfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYALrNohf1uT4fAAAAAElFTkSuQmCC',\r\n'w8/inkclear.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARWSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIEEFUcqqmnbQDEB0A0rRwKEEAseCwnxRwHILYHYgES9XECcSUQx0PZE69futqKTSFAAFEr6gPI0CMDxPuA2A+Ii4F4DhBX4FIMEEDUcugCEtVLA/FeIP4GjYk1UEd/waUBIIBYqOTQBySo5QDi9UD8EYj9oY5jBuJ6ID6MSxNAALEMQAbuAWIFIDZACsHpQGwExMa4NAEEEL0dGgbE2dDM9wyI2aGOjIWG7g1cGgECiJ4OtQLixdAMcxBUsADxbCBWA2IvIN6NTzNAANGrwHcB4u1AvByIO4E4A4iPA/FvqAd2EzIAIICo4VBQ+fcGiBtxZKoCIN4CLX5ADlwGxJOBuAvqgTvEWAIQQJREvRwQl0PLUD4g3gnEP5HkQRmjA4jNgDgTiOdDQ9QdiN2AeD8plgEEELkOBWWGpUD8FYinQB0ISns7QLUL1CGhQHwSiO2A+CIQ1wKxD7TcPEeqhQABRI5DQRZvAuJdQJwMLQ8ZoGlwKxDPheboLCCeB02HrtCk4UuOI0EAIIBITaPMUIc8AuIQJEeCwHVoSN6A1jjroY4UBuKF0JDeSm46AwggUh0qCcSCQCwGTXvo4A40ekHgKLQ+L4KWlw2U5FiAACLFobJAvBYaQqLQEMPWrLsLxJ7Q0N8LzUiT0EKfZAAQQMQ6VBrqMFgoToBmpA1ArI0jZEGO5YLGwAFKy0CAACLGoeJAvA6pHgbl8rdALAXE8tB0p4FF300g9gDiJ0BcA8TclDgUIIAIORQUGquQQhJU5X0A4iaoxaDa5R20FMDm2KtAHATEFtDGCCO5DgUIIHwO5YLWzXZQ/lRosVMFtfACtIYBNdtUocWTJhZzTgNxG7QVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKrTK/kOtQgADCVzOBQvM/tCjaBFV7AprWWqDR/QvauHCA9n1gZm6CVqEXoSGvC8QpUPPIAgABhM+hsKruILTA3gpNa9OgGQfkyHZoWQpz5Fxo5iqFptln0KQQCcTnKYl6gAAipq5vhjZut0MbIvpA/B2Iq4HYEtoyB4GVQPwKiEuQmn/M0EbxTkrLUYAAIsahe6C4HeowUIjlQNuSoVA1oCLsPjTdghx3G4gDoen2NzVa3gABRErr6RA0vc6FOiIJKg5qZz6ElgggRz6GNliuUrOLABBApNT126EZQgKaBhmgGek8tGxlgToSVMBfonZfBiCAyGmPfoZmsOXQLsgSIGaDFmGh0IqA6gAggMhx6B5oq0gJiK9Aa6azQBwFTZM0AQABRG5XBFQeCkEz1jFoX/0VLbuxAAHEOFTG8AECaMgM5AIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBgAO0bNaPuHT9oAAAAASUVORK5CYII=',\r\n'w8/inkclearall.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAARBSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAseCS0NTTpof9nEBcCcTxUPbE65eutmJTCBBAAxmiMkC8D4j9gLgYiOcAcQUuxQABxDJAjpQG4r1A/ASIPYD4IxB/AOJEXBoAAmggHMoBxOuhjvMH4i9AzAzE9UB8GJcmgAAaCIf2ALECEBtAHQkC04HYCIiNcWkCCCB6OzQMiLOB2AGInwExO9SRsdDQvYFLI0AA0dOhVkC8GJphDoIKFiCeDcRqQOwFxLvxaQYIIHrlehcg3g7Ey4G4E4gzgPg4EP+GemA3IQMAAogaDgWVf3x45AuAeAu0+AE5cBkQTwbiLqgH7hBjCUAAUeJQOSCeCrXoKRCvAWJJJHljaEg1AnEmtKycDy2O3IC4DYj/EmsZQACRm0ZBmWEpEH8F4ilA/BOa9naAaheoQ0KB+CQQ2wHxRSCuBWIfILYH4nOkWggQQOQ4FGTxJiDeBcTJ0PKQAZoGtwLxXGiOzgLiedB06AoNWV9yHAkCAAFEatQzQx3yCIhDkBwJAtehIQkqYr5BC3WQI4WBeCE0pLeSm84AAohUh4LSoCAQiwGxGRb5O9DoBYGj0Pq8CFpeNlCSYwECiBSHygLxWmgIiUJDzACLurtA7AkN/b3QjDQJLfRJBgABRKxDpaEOg4XiBGhG2gDE2jhCFuRYLmgMHKC0DAQIIGIcKg7E65DqYVAufwvEUkAsD013Glj03YQWRaAWUg0Qc1PiUIAAIuRQUGisQgrJ2dDmWBPUYlDt8g5aCmBz7FUgDgJiC2hjhJFchwIEED6HckHrZjsofyq02KmCWngBWsOAmm2q0OJJE4s5p6GFO6gVz0OuQwECCJ9DQcWJN5TdDMT3oFEI0nMZ6vBmqONAGeUHNGSxpdn3QPyHkqgHCCB8DvWBWp4OzRyd0Jx8EeqJMiBWhqoBFea3gFgFiLcBsR5a2ZsKxPuR2p8kA4AAwlczgULzP7Qo2gRVewKa1lqg0f0L2rhwgPZ9YGZuglahF6EhrwvEKVDzyAIAAYTPobCq7iC0wN4KTWvToBkH5Mh2aFkKc+RcaOYqhabZZ9CkEAnE5ymJeoAAIqaub4Y2brdDGyL6QPwdiKuB2BLaMgeBlUD8CohLkJp/zNBG8U5Ky1GAACLGoXuguB3qMFCI5UDbkqFQNaAi7D403YIcdxuIA6Hp9jc1Wt4AAURK6+kQNL3OhToiCSoOamM+hJYIIEc+hjZYrlKziwAQQKTU9duhGUICmgYZoBnpPLRsZYE6ElTAX6J2XwYggMhpj36GZjBQ/+cNEC8BYjZoERYKrQioDgACiByH7oG2ipSA+Aq0ZjoLxFHQNEkTABBA5HZFQOWhEDRjHYP21V/RshsLEECMQ2UMHyCAhsz4KEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEADhHHIGwP7H8AAAAASUVORK5CYII=',\r\n'w8/inkgreen.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACtUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocyLhRnxCcPEEBMg8SRzCAKn2MBAohpEDiSHUixQN2C07EAAcQywI7kAVIcQPwDJvY//uUfbGoBAohlAB0pBKQkgfgzVOgfEP/CpR4ggFgGyJEgBxoB8ScQF+rAn8DQxFn7AAQQywA4Uh5IBQHxVyBmBeL3QPwG6Mi/+PQBBBALnR0pB6QqgBjkqBdA/AyIb+JKl8gAIICY6OhIZSDVD8QaQCwGxF+AeD/Qkb+J0Q8QQEx0cqQvkFoNTZeCQPwUiOcBHfmVWDMAAoiRlq0naChWAXEUEP+GFkNHgDgF6Mh3pJgFEEA0cSi00E4E4gYgloYWPX+gadIV6Mh7pJoJEEAsNHCkLpDqAGIvWBkOTWIgu6aQ40gQAAggFio7Mh5I9QKxMLIwlL4AxDPINRsggFio6Mg8IDUByWHIABT1lcDQ/E6u+QABRJU0CnSkB5DajkfJAqAjEymxAyCAmKjgSJAZuXiUgDJQLaX2AAQQNcpRTiA2xiNfBAzNJ5RaAhBA1HDod2iViA1MAjpyJTXyAEAAMVEY7U7QaMXmmA2gDEStzAoQQGRlJqADtYFUJqiGAWJ2aG4HFeigmugDEO8CVZmEWkSkAIAAItmhQEc6AqktQMyFJlUIdNgEWlXHAAFETtQHADEbEGcB8XKo2GMgXkXLhg1AADGRGJqghq47qC0JDL3pQHorVKoHyH9GS4cCBBCpNZM+EKsAMTPQ0aAqUREamgtp3VQECCBSoz4aqY8D0jsNiP2BofmR1g4FCCBSQ1QCiNuBeB0QXyKmC0EtABBAjENl2BEggIbMIBlAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAGcSooA/lcDbAAAAAElFTkSuQmCC',\r\n'w8/inkred.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACuElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGocuZGRhxCcPEEBMg8SRzECKEZ9jAQKIaRA4kh1IsUDdgtOxAAHEMsCO5AFSHED8AyYW///PH2xqAQKIZQAdKQSkJIH4M1ToHxD/wqUeIIBYBsiRIAcaAfEnUHRDHfgTGJo4ax+AAGIZAEfKA6kgIP4KxKxA/B6I3wAd+RefPoAAYqGzI+WAVAUQgxz1AoifAfFNXOkSGQAEEBMdHakMpPqBWAOIxYD4CxDvBzryNzH6AQKIiU6O9AVSq6HpUhCInwLxPKAjvxJrBkAAMdKy9QQNxSogjgLi39Bi6AgQpwAd+Y4UswACiCYOhRbaiUDcAMTS0KLnDzRNugIdeY9UMwECiIUGjtQFUh1A7AUV+g9NYiC7ppDjSBAACCAWKjsyHkj1ArEwcqxB6QtAPINcswECiIWKjswDUhOQHIYMQFFfCQzN7+SaDxBAVEmjQEd6AKnteJQsADoykRI7AAKIiQqOBJmRi0cJKAPVUmoPQABRoxzlBGJjPPJFwNB8QqklAAFEDYd+h1aJ2MAkoCNXUiMPAAQQE4XR7gSNVmyO2QDKQNTKrAABRFZmAjpQG0hlgmoYIGaH5nZQgQ6qiT4A8S5QlUmoRUQKAAggkh0KdKQjkNoCxFxoUoVAh02gVXUMEEDkRH0AELMBcRYQL4eKPQbiVbRs2AAEEBOJoQlq6LqD2pLA0JsOpLdCpXqA/Ge0dChAAJFaM+kDsQoQMwMdDaoSFaGhuZDWTUWAACI16qOR+jggvdOA2B8Ymh9p7VCAACI1RCWAuB2I1wHxJWK6ENQCAAHEOFSGHQECaMgMkgEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAN1ToiE3YhuIAAAAAElFTkSuQmCC',\r\n'w8/lasso.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADDElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZERp1xycrIDlGkAxAJQ9gUg/gDED+bOnfsAmz5ia0aAAGIkWiGaI4EOAzkoHogdoI6DOwqIH0KV2SM5HgQOAPFGIN4AdPgHUhwLEEAkOxTqwH6o5QuA+CDQ0g2E9AP1KQCpAKjnQOyJQH0NxDoWIIBIcijQsgSoIycC8QTkUCEFQJNJP5TrCDKHkDsAAohoh6akpIBCYz7U4AvUyCBAB4PMMwCaZ0jIHQABREquB4VAILUcCQJAsxJBGQ/o4ABCagECiBSHKgANPkBC1BILFiJlNpwAIIBYyIgqBWjubsQTuuuBag1xFUloQB6ILxJSBBBApIToBWiubYQavB/oGAEsnkmAlqP5RHjcAGomwVIDIIBIcagBtIwEOWAClI0tyuKhdAIBR4Lk9wNxITEhDxBApFahiVDH3YcmAQEsZSUsfQpAHYPuwAAgBjmwHmQe0JELiLEYIIBIKZ76oY4QgOIPUMdegNY4F6E1EbLjDkCTCkifPpT+AC2HF5BSOwEEEDkFfj00TTVCpWBVqD40vWFL2zCPHCC3zgcIIHKqUFDOvwi0cAKWNDcfi1ZQDVZIyHxC7gAIIHKaeQ+hoYcrE8FCkYGYTEUsAAggchx6AD23I2WiD9BcbAiqaqElA9ZMRSoACCCSHQqtnQygjoOBfKgHDGFJAqrOEFqUxVPqUIAAYiFT3wZoxoGl043Y0iE0VxeSWKViBQABBE7ExGD0jAPE96nZ1SBkP0AAkeVQqGPvUyPtEetQgACipHMHKkfrsdX3tAAAAUS2Q6FV3wMcZSfVAUAAUdpdDoSWADR3LEAAkd0LRWuqzYeWoYlEtkFJ7jIDBBAjKSPOeBwrAG0DJECTwwFiqk1S+vUAAcRI6tA4vkEIpG7IB2L6VqTYDRBAjENlDB8ggIbM2BNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABAEMfeNO+fxrEAAAAAElFTkSuQmCC',\r\n'w8/moveview.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAUVSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQABR7MDfv39zg+hp06bNYWRknNPW1jYHWZxSABBADKCCmlz869cvbhC9ePFikKPADgTRkydPngMSBzqSnRLzQRgggBjJrUn+/v3LwszM/GflypVzIiIiGICOA2MQ+PfvH8OMGTMY0tPTU2DqyA1AgAAiy4FABzABwb/NmzfPCQwMBDmWgYODg+HHjx9gGhiyYEcCQ5YhJiYmBaaeHAcCBBDZIfjhw4c8DQ0NvZcvXzKEh4czSEtLM/T19YFCDezgOXPmMPDy8jJcv34dJEe2IwECiInUkIMlfgEBgUl2dnYMLi4uDCtWrEjh5obkCRYWFobZs2engELWxsaGQVRUtBSaJDhB+kl1IEAAsZAarUD8FSa2atWqlD9//rCD2EAaljZhctlAx/6EqWVlZf2KbA6x9gIEEBOxGQJk6L179+bExsbOOX78+Byoo9iBFnKBDWKCGIWUUbhA+kDsc+fOzQGmxTk3btyYAzIHJk4MAAggJmJz69OnT+f4+voyLFmyhGHu3LmwIooFubhCSdyMjL+AjgSH7sKFCxmWLl3K4OPjw3D//v05IPOIdSRAABF0IMiwV69eTfXw8GC4du0ag5SUFENxcTFM7jswRL4hhxySA/+A5EHs/Px8BgUFBYa7d+8yuLu7Mzx58mQOsUUPQAARdODbt2/bgCHHfuXKFQZQRpg/fz6DpqZmyuvXrycCc3Ltu3fv+kDqvn8Hu4Xh58+f4HQGEgfJg9TJy8tnLFq0iIGfn5/h9u3b4JB8/vz5HGIcCBBABIsZY2PjOcA0BA4hdnZ2BkFBQYZv376BQg85tMBiIEeC1PDw8KBEOSjjcHFxgYomcFkJkgN6EhQjKYQcCBBABNMBMDrgjgCFzosXLxjweQqkBoTRwadPn+DmgPQ/e/aMqEwCEICxMigCIAZhYDQwdcUPS/2hAg28cMUDA9fUQE8AM5ldCM+AVQVVpRJ2H6iK+zQz93JJR0Tg7ogImBn23ujuS5kfhUQ5fxoARznWWsjMXwE/AURUhX369Ok5wKgFNwSAhfMcoOOcYXKwBkF1dTVYPisrC6OhAIxWcTc3N7A80LFzjhw5MofYxgJAABHMJKCyzsTEJAVY74JD8NChQ6BcHAmNTnFgCArAGgjINEgcJA9iV1RUtO7atQsckhs2bGCwtrZOIbY5BhBABB0Iqg1AjgQZun79egY1NTUGBwcHBmjh/AVuEFpBDSoHYfL29vYMKioqDKtXr2ZwdnYG1z6wmoUQAAggogpLkCNBRQfQYSk3b95kQK6+/kDrOFjIwTIQqHyEVXUBAQEpQAyvMpGrQEIAIICIrrxBVRTIcOQKPyEhYU5ISMhUWCMBOSQTExOnhoaGzoHV1TC9pLZoAAKIhRTFyIYDc2n59u3bGYC1DMgxc8TExODq8vLy5oCqRFCaAxZLU2VkZFLQ9RMLAAKIogYrsMUyB9QWBIUaJycnw9evX8G1DagwBhU/s2bNYkhNTaWowQoQQGT3FYBRxwKi582bBy4+gA4A90lANIjf398PLkqADmWipE8CEEAUdWhgZd3MmTPhjgTRnZ2dVOs0AQQQA6UGwHp23d3dYMeBCmxqOQ6EAQKIcbCPDwIE0KAfWQAIoEHvQIAAGvQOBAigQe9AgAAa9A4ECKBB70CAABr0DgQIMADHQzZnH73ISAAAAABJRU5ErkJggg==',\r\n'w8/n2s.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAC+UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAspihkZGbGKJycnOwApBzThA3Pnzj1ArNmEGkcAAcRISusJ3aFAByYAqXogVgDiD0B8ASplAMQCQPwAiAuBDt5AqUMBAohshwIdOR9IgRwKckQj0DEXsIRyPTSkFwDlEylxKEAAkeVQJEcmAh2wAJ8eaKjPJ+RYQu4ACCCSHQq0OADIXE+MI5EcWwCk+oHYEVe6JeQOgAAix6H3QWkPaKEj1BEN0CgGpcdEpOgGpVlDoLoHUHX7QTRMH6kOBQggkoonoGUG0IwzESYGtBjk0ANQcX+oQw5AM5MCknaQHgegGQrkFE8AAURqOWoAdRx6LoZZ3ojGf4BcXCGbQSoACCBSHaqAZjkDNIQUoMnhAxL/AizaoZ77QIlDAQKInJpJAFsoI4UYLDQvULNmAgggUh0KslwAGGrIjrWH0heRohsUegFAdf1oIY/sIZIAQACxkOFQEAAVUQugUVoIqn2QohjkUEEsegMoCWmAACKneFoPjW5DpHRHqLQAxQCoWNuAq9An5A6AACInjTZC02E/CXrmQ9P2RnLTKEAAkVuFwqrFDdAa6gOekJyPFO0wgFGrEXIHQABR0ihJQApVkKUbYdUjtEHiD20PCOAwDsWxhNwBEECUNvMUoFVmABYHfYCG+ERo20ABn2MJuQMggChyKJbqFebYD8jNPqDce0IhS8gdAAFENYcS0UbYj8exRnPmzDmPzwyAAKJLnwkauo7Q5IAO1gHxG0JmAAQQ3Tp3OBwLyny9wNB8TEg/QAAxkjriTG70oyUDUOa6CcTtQEceJEYfQAAxkjM0TgXHCgMpMaAjrxOrByCAwMUCuZhMRyqRYxdAADFSOtlATOgCHScBpPiB+DYwFP+RYw9AADEOlVkRgAAaMkM6AAE0ZBwKEEBDxqEAAQYAhSNqR6rmTsAAAAAASUVORK5CYII=',\r\n'w8/new.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABiElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALEQq5CRkZEodcnJyQVAyh+Pkg9AXDh37twHMAFi2hsAAcRCA8/3A/ECIH6IQz4eiBOAuIEUQwECiJHY1lNKSooDkHIgQmk9EBsCQ+wCjhCfD6QUgPggED8AqltAjBsAAoiUEF0PMhgadfjAAVyOhIKDUIfagzwFdDhI7QVClgMEECkOFYCmrQOUpAtQCEKTBih0/0PNJQgAAmjI5HqAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAACK14RwPbPE4DIRDAQKIlIYzoS4GOQDUcE4kxg0AAcQ4VMZHAQJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAOORDGyRRCoQAAAAASUVORK5CYII=',\r\n'w8/octane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==',\r\n'w8/open.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACbUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALHQwtCbN2/ibEAICwsziIiIMJJqJkAAUd2h3d3d/4EOxaumtLT0v7q6OkmOBQggBlDriZo4OTn5/7lz5/7jkm9oaPi/cePG/6SaCxBARIfopk2bCIYUDABDC6echoYGw549e8DJg4uLiyE7O5uokAUIIFIcymBtbQ1OY4QcCXQATssNDAwYODk54WaCHExMMgAIIJLSqJWVFQPJaQvTI4ywEAfFErH6AAJoyBRPAAE0ZBwKEEBDxqEAAUTVcvTMmTP/t2/fDmbHx8czyMnJMVLLbIAAoppD//79C3bkw4cPwfzTp0+DHEq1QAAIIKpF/dSpU+GOBAGQo4GOpVpfHCCAqOLQNWvW/L906RKG+MyZMxlAtRQ17AAIIIod+vz58/87duwAs0EVAgzA2NOmTWN49+4dxY4FCCCqRX1iYiK4QkDiM8Icy8JCeVYACCCKHQpyBMiRQEcxYnE8o6GhIVUCAiCAKPaqqKgoIw8PD86ojYuLY+Dl5aW4mAIIIKpEPbCRwfjr1y8Mx/78+fM/NRwJAgABRLU0ysbGxvjnzx/kdi5VhwkBAojoqAe1HefPnw9q5uF0ADD04Oxt27YxXLt2DexmbGq/ffsGN5cYABBAjMR6/M2bN/+PHTtG1fpbVlaWAZjZiEoaAAHEOFQGcgECaMi0ngACaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAAPdDxta50rsAAAAAElFTkSuQmCC',\r\n'w8/paste.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACU0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCrkJGREat4cnKyAJAqAOILc+fO3QDlMwDZH0hxCKHyHCCAGIkp8Ak4cj8QPwBiByBuBOJ6qLQj0LEXqOVQgAAi26FIjgQ55iAQ9wMxSCwRqqSfFMcScgdAAJHlUDRHgkAClE4EOmwBVE0CKY4l5A6AACI3M82HOvIhEAegOxKaRkHsQpCHgI42oDQzAQQQtXL9B6TQZaCFYwECiFyHgtIhyGJ5IN4ATZtYHUMtxwIEEFkOhRY9jlDHgsACWjsWIIDIjnp6OxYggChKo/R0LEAAUZyZ6OVYgACiSq6nh2MBAogqDgVaBipX70MtB5WrC4H4ALRqpYpjAQKIiUqONIDW87B63wCKE/E5Bsmx6wnZAxBATFRyJKianACkA6GhWQ+rOokIOXuo5/ACgABiopIjP0BDaAO0liIqmpHMCCRkH0AAkdsowXAkmnwDKKSAco5o4vCGChDnI5tByB0AAcREjZBEkzeAOmIhnpA9j88MbAAggEgKUSIdCcpQhcgtKWxtWXT9hNwBEEBEO5RajiS3PQoQQExERnc/LR1JDAAIIGLTqAK08zYgjgQBgAAi1qHg9ic0+unuSBAACCCiHIpcl8McS09HggBAAJGa69G7x1RzJCF3AAQQEymGQEPWAVr7JNIjJGEAIIAYh8qIM0AADZmxJ4AAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAPhUa4lF02ewAAAABJRU5ErkJggg==',\r\n'w8/pastechemdraw.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAASYSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBDVHPrq1atlf/78ed3U1FTFyMjITG2HAgQQIyk1U0dHhy1QvSfQIb+AmOHv378M//79+2Nvby+jqamZ8PTpU3Y2NrbPPT09G+/cuXPX1dWVAeh4mHZmJiamtytWrFh97dq1p6Q6FCCAWEhRzMfHt8LW1lYK5ECQB4EWg2lubm6GvXv3Mly4cIHBzc2Nt7S0NAak5ufPnwwwD4HUPnv2jGHVqlXKQLEGoL63pNgNEEAkOZSLi0uMl5eX4cqVKwzMzMwgPlj8zZs3DBwcHAzm5uYM379/ZwCGLFge5LjPnz+DQp1BQECAQVFREcQ2AGpRBmKSHAoQQCQ5FGQhyCEwy69fvw5J6ExMcBoUwiA5GACFpqSkJAM7Ozs4GQD5rEBhNlKjHiCASHIoNE2C2SCLQaEEchgoen/9+gVnw2iQWlCyAHng69evDF++fAGxQXaS3GQDCCAWcnIgyAEgx/Dz84MdBAplaWlpcPSDAMyhyB4EOfb3798MnZ2dxps2bcpkZWW9DeS/ItZOgAAiOURhGQnmWBAAZRpra2twiIHEYBhcrEAdDOKD0rSgoCCDlpZWNJDNBCwhKoAx8YgYuwECiGSHIjsE5ghYknjx4gVYHDmJwNSAQhNYaoAdqqKiwlBQUBAJjAE+Tk7OQmCM3CZkN0AAkeRQmANhmQaULkHRDiuGQCGGHu0w8OPHD3BJAANKSkoMmZmZ3rt3734IVF8L1PcOn90AAUSSQ0G5FhRSoNABsUEOhYmBHIeM0dMqyHOwogsU4jw8PAygog4ItIBYAYjxOhQggEiOelDIQHMv2BHATAEWAzmKhYUFJdcj08D0CKZBZS6IBsUCKDMCPQkqqtgJ2Q0QQCQ7FBSaIEfCHAVif/v2DZ4kYFUmemYCRTuoqII5HsYGOvQ/McUVQAAxkRr1MEeCQhJkOQjDMg4sDcI8AAt15DQLY4NCGDnTEQIAAURyiMIsATkK5iBYJoM5HlsahYUwLORhHiTWoQABRLJDQRaDQhRkEchSGA0DoAyGHnrIyQDGBmUkWFFGDAAIIJJzPcgyWIMDFrrI1SoII2cibEUcLJmQEqIAAcRCTtUJizqYo5FrKVDGQg5NPE1GkhwKEEBkRT0sLSKHDAiA6nqQHErLHC36YWKg5EOKQwECiIXcXA+zENmhID6ofMToRmApW0G1GKztQAwACCCSq1BYgxmW20FpEuZYkBgozeKKeliygXkMve2KDwAEEEkOBYXWrVu3wNUfzAKQw0A1EyxJoEc9MW0HYgBAAJHkUGC/aOa2bdtAXQluoMP+QRsbv62srNRPnjwpgFwCoIcoetSDkg+oOgW2npiJqXgAAoikXijQAlBw6YEcCioEoMK/gUlBE2iODTC9iWKrDtEqAJC+H6DeKzDzsQI9+hBYLS8Fyl3GZzdAADEOlYFcgAAaMiMlAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEGAAhPyHQCpaCrgAAAAASUVORK5CYII=',\r\n'w8/pentane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC',\r\n'w8/plus.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABUklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQo4mRkRGreHJycgOQqkcSOjB37lxHfGYR29YACCAmajmS1gAggJiGgiNBACCAhkwaBQigIeNQgAAaMg4FCKAh41CAACKpeAIWPwJAygCPEnk0vgBQjwMe9Q+gmCAACCBSy1GQI/dTUX0jEDcQYxBAAA2ZqAcIoCHjUIAAGjIOBQggUtPoBSDGV3fHA3ECmvpCApmJKAAQQIykDEAQqkJp2SgBCKAhE/UAATRkHAoQQEPGoQABNGQcChBAQ8ahAAFEkkMHcogSIIAYh8r4KEAADZmoBwigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCDAADqYn5SNHiO4AAAAASUVORK5CYII=',\r\n'w8/propane.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==',\r\n'w8/protein.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAR3SURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsVCi+cePH//fvn3L8O7dO4bPnz8zfPv2jeHPnz9gOVZWVgYuLi4GXl5eBiEhITDm4OBgJNcugABiJKd4Ajro/6NHjxgeP37M8OnTJwZGRkYGJiYmMA3DyABkBw8PD4OMjAwYAz1AsoMBAogkhwLVgh147do1cOgxMzOjOA7ZkeiOhTmYk5OTQUVFhUFWVhakhmgHAwQQ0Q4FRun/69evM9y6dQsceiBHwhxErEORHaygoMCgqqrKwMLCQpRjAQKIKIf+/v37/4ULFxgePHgATnuwqAbnRiQa3aHYkgCMBmFxcXEGHR0dkJkEHQsQQEzERPfNmzcZQFGO7EgQDYt6EA0SQ8YwdbjEQXpevXrFcPfuXbAdhNwBEEAEcz3IgSCHIluCnnnQQxMWyvhCFAZAGRKW0fABgABiIlT8XL58GafDQKECC03kkEIOPWQ96CELU3vnzh2G79+/4w1VgABiIhSaQMeipENcaZGQA9EzHLIYqOx99uwZ3hAFCCCcDv3169f/e/fuYXUArrSHLo8t7WILdRD/+fPnYDtxuQcggHA6FFSQg2ob5HRHyLHYkgc2PdhC9ufPnwwfP37EGaIAAYTToW/evMEo0LGVm/ByDkt5Skr0g9gfPnzA6VCAAGLBF6L4cjc2C5HLU/SyFJTTQWxkGsaG8UG1HS4AEEAseOpzrLUMriIJ3eHIYtgciWwezIOg6McFAAKIBU/RhDNq0R1CTMgil5///v3DCE1Y7scFAAIIp0OxOQZrHYwlzeJqSYEcBHIkzFMwNnolgA0ABBDOzARsO2JEDy6HY2NjSxLo6Rbd86AqGhcACCCcDuXm5sbwLbrB+EoDbJUAerpGNwM5cNABQADhdKiAgAA4avA11XBFGb4YwFUigDCoR4ALAAQQTocKCgrC0xC2xgWuhjFZ3QyoWfz8/DjVAAQQToeC+jowx+ILMeQQQWbDMEg/DCOrQ1cLavnz8fHhdChAAOF0KKgxq6ysjGEJOsbXMMbmSGwOBomBGtFsbGw4G9AAAYS3PSohIQHOVKAyFVfUIzsOvTBHTw7o5SgMs7Ozgx2KDwAEEN5mHsiH2tra4NyLHhLYQhc5BNFDE51GNkteXh7kWLzdEYAAItgVAYWqhoYGVktxORadjU09SOzv378MUlJSDGJiYgQzHEAAsRCRIxnl5OT+g+p+UOcOudrDFq3o0Y+tJIB5WlRUlOhuM0AAEd1dBvr+/8OHD8GdMZAlsAYwvgYKekmBHKKgPhIwAEBmENVdBgggkgcgXr9+De7sgUIY2bHYGivYyllQ7QNyICi6SRmAAAggsoZ0gM2x/6DxJlAIg1rlyN0LWKMEPfpBpQcoPYKiG18xhAsABBAjJUPjoD7O169fwV0WUEMbVIwBxcChCRskA3WFQZUHiCZmoAEXAAggxqEyhg8QQENmfBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIMAAmqGgcFmPArAAAAAASUVORK5CYII=',\r\n'w8/pubchem.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAURSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBBVHfr27VupAwcOfD158uT1b9++sVLTbIAAYqRGzfT9+3eWixcv3rh586YyOzs7A8jMX79+Mejo6JxSV1d34OHh+U6pHQABRJFDHz9+7Pz06dOZt2/fVgaZo6+vv1lBQSEGyGZ69OjRnAsXLgQzMjIyKCoqvlFTU7MWExO7Ra5dAAFElkM/f/7MCXTE07t37wqCQhDoiFNaWlrWnJycf5DVffnyhfPOnTvrb9y44f77928GGRmZn3p6ekrCwsLPSLUTIICIdujPnz8Zv379KnblypWbQMv5ubi4GHR1dWcoKSnlghwISpMfP37U+vTpUyArK+sdISGhLWxsbF+B6n6DHPzgwYOpV69eTQSawaCsrPzF0NBQAujJb0BMlAMAAogoh75//14YFILAKGYXFBRk0NbWngEMnRI+Pr6voOgHim8DRTfQwS/5+fk3//37V/Tdu3eef/78YWdmZv5jamoqCEqnQE9wP3/+vPTSpUv1wFgBJYmfBgYG0kAz3xJyA0AAgRM+IXz58uV5M2bM+A/MMGuAIcIKEz906NC7zZs3/wcmgRhkcRD+8eMH46tXrxTPnz+/A6QGmNEqkOWuXbs2AWQmyGxi3AAQQCzEphFQSKqoqESCohLE37t3729gKN1xcXER4eDg+IeuHhSloqKi94HYQ0RExA4YIweBYtfl5eU3guSAdCkw9POBme0nMfYDBBBRDgUZ9u/fP1CRww106Adg5ugARukvc3NzTWL0A5PJIaDjlIDRbQ0TA4aqEKhEIBYABBDRIQoKfmAmAZeHwMxUDgxJZlJyLTR076ObSSwACCCSayZguWkBzM3/sUU3yUUOCSEKEEBMpBgKytnATOMATHNH6V3XAwQQExmh8ANYZapQw3JSoh4ggEhyKBMT0x9gaC4GNj4k6B2iAAHERIrvQVEPKpy5ubn/PHv2zJieDgUIIJJCFFhfc4JoYM2kfwYIQM06YvUCC/yG69evT0DyODMpmQkggIgqnkBVIogG1d0gWkJC4hqwcRFw+PDhp8bGxi6ysrJ7cekFVZtnz559C0zX7F5eXnCXAavb11AHsxPjBoAAItahQsBGCQOwqlygqqoaCyqagM25jUCpAKAj9gDFv8nJyaWLi4uvBhbkwkDLWYCh9ef+/ftbgNWoIbAG+wh0JAfMPFAD5tatW5uBjRiiQxQggIhuPYFqI2D9XA6qoYCN4WVAh6bw8vKCKwBgq2g6sBESDqy5eIE10AdgY4QLqI4FlKaBjWdtoAduwZp9sFYUMHZAjZKdwKo0mphGCUAAkdQeBbXknzx5kgNsnPSDWvCampr7gW1RT2Dm+oneXoV5AgSAnhAHhjoo5HWAVS+ogV0J1NdBSv4ACCCyGs6gtum9e/f6gS2ffFCDWEND4xQwSTiBmn3oDgZWt1uBzTpHYJpkAKbrTmAoVhLbBkUGAAFEUVcE5GBgKE0DNqYzQCEMLA32Ax0SBMrRQAceAOZ0HVAPANR+BYrnovcASAEAAUS1zh3QUVuAIecOSnug6IV27jYDQ9ufnBBEBwABxEjN8VFgO4Ad6NibLCwsn4Gtel1qFvgAAcQ4VAZyAQJoyIyUAATQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQIABACF7nps6Bf6+AAAAAElFTkSuQmCC',\r\n'w8/reaxys.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAFRUlEQVR42mL8//8/w2AGAAHExDDIAUAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAAsRBS8OrkqSMPVq615pGXYfj99RsDEysrw68PHxn+//3LwMTCzMDACPIjobKUkeHvz59ApUwgJphmYmNjkPPzOSpsaGCDTydAADESKqhPl1b8vz13AdhANiEhBjZ+foa/P74zsPLwMHx59IThz9evQEezgB36/+8foFv/M0DMZAQKgTAzg3yQH8PHm7cZ/v3+zfD3O1Av0AxOCQkGNj5eBsupExnx2Q8QgDAyVgEQBIDokYFGEYWzNfv/v1Nb5axoRWal/YDDbY/jcZddkDAGUlV/UrkzBpRzPHdAPQjQroVbNnhr0YwCZWIpRbiSzA63KvRSwkwz3jNE7yhNChxKwWudvfgTQAQdyMLFxcAuKMjAxMkB5rPx8QF9Lw6MXhZwdP/59o1BzteL4evjJwwfgY74+/0nOIT///sHdgxI3bP9Bxi+PHgEZjMyMzMwiTAzfLh9h0HcypKgAwECiKAD+TXUGCScHBiYgVH8D5juPt+9y/D78xdEGgFG0NtzF8BsbmlpBikXR4ZPt24z/Pr4ieH7y1fAkP4DNEMdHvXM7BwMPIpywBD/ysApJUXQgQABRNCBr0+cYri7aCkDMxcnJNuzsOLIFIxAx/xmeH/5CgO7iDDDH2ByAKU/FnY2cKZ6A/TEvx8/GYQM9Rkerd/M8BMYvezCQgQdCBBABB0Iyhws3FzgNEhYLSvYYb8fPgLzWbm5gUmAiUHC1prhNzDtvr96HRj9P4D4Jzh5gKKcEAAIIIIqwGmJBAAqQsDFCRCAihZQ1N6av4DhzelzDPqVZQwfbt4COvo7OMPB1OEDAAFE0IGg4oSiNiMokQK1c4qLMdxbuZrhx5u3DFzAIoZDVIQoBwIEEEEH8iorMfwHJnRKAKhQ5xQXB5aDf4DuZQRmnpfA0P3FwC4kSFAvQAAR9AIwx9qAyi1KACjn/gLm/G8vXoCLGXBRAy7cGQnqBQgggja/PHT4m5CBPsM/YMFLXvD9B2cyTmCU/v9NekwABBBBB2pkpTMLAx0Iyp3kpkE+VVWGr8+eM5ATEwABRFAHKx/fJW5FhTZQlUZqjobl6q9PnoCrNVDUkgoAAoigAz/fvvNLUEPjHJ+62jtSM8u/X78YeBUVGH68fkVUjsUGAAKIiZgo+vP921opZ6cLoMKVlLTHJigALKA/A0Oe/GIKIICYiLEIVPIL6etmCRsZfCM2oYPqYFDd/BcYigxkJA0YAAgggg4UsTBnELW0YBDQ1b1p3NYyjx2YG0HVFSFPsfLygBsEf4DNMGKKE1wAIICYiEnkYAy0BNgIKDLtbjvILSvD8A9UjeF0339ghmABN1j/AAtkShwIEEAkpVygo34Dqyhv446Wg5ySEuAaAquhwLQKqjm+PHwE6RZQAAACiInUMu3P129fgQ1YL5OOlovAHPoV5EhQUx5FGbC8YwRVwBSkPRgACCDS8z7QkcDi4xuwK2AAbPJrqaelnOeRlWX49f4DuPUCqm9BRctHYIuZkZRcjwMABBALJZr/fP78SD4owB6YIeJ+f/1a+Pb0GeW3Fy+D+x/gXhyo3gWmX1ABDwplRqQQBXegCGU2IAAIIIocCI7yb98+AztMU1XiY9Z/f/ZcXNrTPQjYEK36fPc+03dgAf3z1WtgaxzYrxEQBHc54Q4EOk4hPJSgFQABxDjYxwcBAmjQjywABNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBBgA/u/aOQD290cAAAAASUVORK5CYII=',\r\n'w8/rectangle.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANQSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEEAs+yY8fPzIcPnxY6cmTJ4tfv35t8urVq1+gKpeRkZEBnUYGyGKwKhqbHiEhITZtbe3zVlZW0UD2XS4uLpxuAQggRnx1/alTp1SPHj265+rVq3JMTEwMbGxsGI7DxcYGkB39798/hj9//jD8/v2bQVFR8XFGRoaLqKjoLVx6AQIIb4hev3597pUrV+QkJSX/BgUFlR45cmTt5cuXOdjZ2SmKxp8/fzIAQ/Kng4ODx/r167vu378vu3379hVxcXFGuPQABBBehwINMGRhYWHw9vYu19DQ6D99+jQDNVpboNAEeVZTU3MmkPtp+vTpy4ABoopPD0AA4c1Mb9++ZQBFuYiIyA6QwaCQwBe1xAKQGSCzQElJUFDwEoj/7ds3vHoAAghviIJCDxSiM2bMADv4169fDJRGOwhwcHAw3L17l6GkpAQcuszMzAT1AAQQCyGfg8CPHz/gfGqEKCz6v3//DolWJsKlJEAAsRBV2DJRr7iFeZRUTwMEEMGoJ8ZSUh1JDgAIIBZaGk5NABBATJQ6EldhT2oxRkg9QAANmboeIIDIdii1u9mEYg8ggFiILUqoVTzh8iAhcwECiIkYQ0EFNKhlAyqYqRGSMA+DGiWgSoQYzwMEEMHMBGrdpKenM3R3dzOoq6vDC2lKwd+/fxnExcUZFBQUwJ4nFAAAAYTXocA2ItgAoOPsgI0GhsePHzOwsrJSxaGgut7U1JTBz89PERSynJyceNUDBBDeNApsMV0GNpotd+7c2SEgIPDi5cuX57m5udmokouZmH6/f/9e/c6dOzNA0Q9s9t3Dpx4ggPA2nIGtJ7Vp06btAbUXQY0RWOMBW8ueEB9dHESDoh/UjpCTk3sJbDg7Atu913G5BSCA8DoUZAgwFJVBDeZLly5pfv369ReuhI/cekd3EIxGlwdmUDY9Pb1blpaWgcDW/R0+Pj6cbgEIIMahMuwIEEBDpmYCCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwAAIlCY255Y4QAAAABJRU5ErkJggg==',\r\n'w8/redo.png':'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',\r\n'w8/ring3.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACX0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqAolhEkBycnJDUCsQG03AAQQwRBlZGQkxZEOQKoeiOeT4lBi7AAIIGpHfT+UdgCFLDUdCxBAVHMo1GEGSEL1QDEDapkPEECMhNIgMdECTZP3odwFoBAFYpDYBSB2nDt37gdi0youABBA1ApRWJoEOagQiBOhfANomqUYAAQQExWiPAEagiCQCAo9ID4AZDdCxQqgmYwiABBAFEU90AEC0CgH0QeADnREkz8PDVVQSCsSSgL43AIQQExUiHIBqEMSscjDxARILbLQAUAAMVEQ5aDoDIByG4Gh9QBdDVDsAjTNgkAANJmQBQACiKyoh0b5eVjOBjrIkICn9kPTMSjkDbF5ilDUAwQQuSFaD3UkA44ox5YEPlCSBAACiImMKAdljgKkKL9ASA80BBORaq0CUu0FCCAmMjMQCIAsn0CsJqBjNwCpDbCqltRaCyCAmEgMTeRqMpHYGgctCTxA8zBRACCAmEhwJChN5sOqSWihThKAegxeawHN7CdWL0AAMZEY5QJI1SRZAOrBCaTWWgABRFTxBDQMVF6uR0qbD6hQfTsgmQcqsj7gcwtAALEQEeXoRYoCUtFEDaAANT8QnyKAAGIhwiBQ5plI6y4RMED4gNQnXPIAAcQ4VIYdAQJoyPRCAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwACjpNCqeSZO7QAAAABJRU5ErkJggg==',\r\n'w8/ring4.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABO0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALKYpTUlIaqGj3gzlz5iwgVjFAALGQaHg9FR16AIiJdihAALGQackFIP5Apl4FKCYJAAQQuQ4tnDt37gFyNCYnJzeQEzMAATRkMhNAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAkdse7Qe2KylpOJMMAAKIXIca0DtEAQKIVIc2UrNzR4pigABiHCoDuQABNGQyE0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQYAAPyGMPkGOiIAAAAAElFTkSuQmCC',\r\n'w8/ring5.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACjklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC6kaGBkZccolJycLAKl6IL44d+7cBcSYR2yFAxBAjKTUTAQcaQCk5gOxAVQI5NBCoIM/UMOxAAHERCVHJgCp/UiOBAGwGNQDZJsNAwABRFSI4jIIGtWgUAyACoFCLxCIHaBJACZWSCgpEHIHQACR7VBoSK0HYgWo0AGQI2FRDZR3gMoLQOU3AHEirqRAyB0AAUTQoTgcWQCk+pGEGoEOaMAR4uuhIQwCD6CeuUCqQwECiCSHYonqB9BQOoDPDKC+BqSkwABNChNIcShAABHtUFKjEotjHaCeVMCmn5A7AAKIKIcSEyJEOhZbjICTAiF3AAQQQYempKTsR0pjF6ChcIGSWgZLGnecM2cO3uQDEEDElKMCSLnakVJHggA0NgKRhB4Q0gMQQMQ4dCOUViA2PRIJ7GGxBDSXoEMBAogYh26AOZSYWoYEAEunC4lRDBBATERE0wWkqImnhguhHlZACwi8ACCAiK3rN6CFAqUgnpRoBwGAACLWoQuRol+B3tEOAgABxERkLkWO/gB6RzsIAAQQKS38DVRKpyRHOwgABBApDoUVUwYURj/J0Q4CAAFEtEOhDY8PlEQ/udEOAgABRGrnjtLoJyvaQQAggAg6FK0tQGn0kxXtIAAQQCS38IEOfA+t/y8gJQVC4AO01CiA8hXRQ5SQOwACiKjuMsgQJMdugHbcyK1OSY52EAAIIKL79UiOrQbihxTk+gPkdJcBAohxqIw4AwTQkBnSAQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQgwABrp79oDVxNWAAAAAElFTkSuQmCC',\r\n'w8/ring6.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACa0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQC7EKGRkZiTY0OTnZAUhdmDt37gdCaomtcAACiJFohUQ4FOrAeiAG0SBHJgIdu4EaDgUIIKo4FM2B6GACEDfiCl1i7QcIIIocCnRgAtSBCkjCB4B4IRDnA7EBVOwBEAcCHXuBXIcCBBBZDsXjQFDIHUBS1wBVBwMg+QZyHAoQQCQ5FGhxAJDZT8iBWJLFfCQ9F6Ch+4AUhwIEEKnFUz6ShSCHOQItdMTlSBCAyhkC8QKoECg5nAd6oIAUiwECiIXMYm0C0AGFxCqGZqREoOM2QkNXABQzQD4ssxEEAAFEboH/kRxN0KJKEZq5GKAOJgoABBCpDhVAinYGMh37AcmhRAOAACLVoQZUqhEVSPUwQAANVF2vQKoGgAAaMo0SgAAi2qHAHCqAVuTQFQAEEBO90yfQwwrkeBgggJiGQvoEAYAAYqI0VOgFAAKI3BA9D633yQEC5GgCCCBSGyUJ0EYJzLIN0MbxByJjAdSSSoCVoaB2ArH2AwQQSSEKNHgBtIEBywQB0NB1wOdAIAbV7/eRHAny2EZS7AYIILIbzljamigNFSwhCHPgRKjaD6Q08wACiNIWvgG0NWSA1NZsBGJ/Qg4kteEMEEAU95mgFQEo5LC1L3E6kFSHAgQQ1Xqh0HS6HprRCDqQVIcCBBAjKQO5RDhWABrlC6jZpwcBgABiHCojzgABNGRaTwABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgDVVObnKM9X8gAAAABJRU5ErkJggg==',\r\n'w8/ring7.png':'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',\r\n'w8/ring8.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACLElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKGRkZMcSSk5MDgJQBkUZMmDt37gd0QWIqHYAAYiS2ZsLhyH4gVUCCXy8AsSM5jgUIIKIcisOR84FUApT7AIrxAQd8jiXkDoAAItmhQAcKAKn9SNG9AIgLsYUSmsdAnpqPy7GE3AEQQCQ5FGiZApBaj+RIUJorJDbe8TmWkDsAAohohwItMYCGpABUOBFoyQJScy8uxxJyB0AAMZFgOMyRoBAIJMeRIADVlwjlgj0PjSm8ACCAiC1H+5EcCQqBDZSUiVgcm0BID0AAEetQ5Oi+QI0CHOrYCcSqBwggUmumD1SucD4SqxAggIZMFQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRYHMpPSAFAAJHq0H5o64liADUnH6l2wgsAAohYh6LXzQJUcCRy24FgCwwggIhyKI6GBCWOnY8UioXEVMsAAUR01FPLsdCeQQCSI4lqhQEEEDktfLwtdRLaoguA+hKJbeEDBBBZfSZyHAvtra6Hcg8A1TuS0mcCCCCye6FAixuAVD0JnTsDaOYhq3MHEECMpAzkYnHsfGIavWjNREOgIx+Q2q8HCCBGUkeccSQDBSK1LyDHkSAAEECMQ2VoHCCAhkxdDxBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgCkjdqO59hL8AAAAABJRU5ErkJggg==',\r\n'w8/rna.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADPUExURbm5ub6+vre3t/7+/ru7u9LS0ri4uMDAwLq6uvz8/L+/v/T09L29vfHx8fv7++zs7Ly8vO/v76ioqJycnP39/efn597e3ra2tqCgoPPz88LCwuLi4sfHx8TExOTk5NXV1dvb23x8fHZ2dqSkpMXFxdHR0fX19e7u7o2NjYODg+rq6v///8jIyNnZ2d3d3a6urnV1ddfX15CQkNra2rW1tdTU1I+Pj5iYmMzMzMbGxtzc3Ovr6+bm5pSUlNDQ0M/Pz87Ozo6Ojvf39/Dw8P///zkY1nQAAABFdFJOU///////////////////////////////////////////////////////////////////////////////////////////ALLusTgAAAGPSURBVHjaYnAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggnEoF+dFFAAIIl1InWVZ0IYAAwq6Uk1/FxA5dECCAsCnlFDTlYmIQRBcGCCBMpcy8rIwMHOzSzOgSAAGEoZRZgZGJjVHcQQTDDIAAwlBqzMDEJYXVAwABhKFUgEXGWhKrUoAAwlDKosONI/wAAghDqZCtKg61AAGEoVTCQNHcEKtSgADCUMrL5qjMgzViAAIIU1CaR4CDkYEVUylAAGHTz8IlpGGkiyEMEEDYlMrx62sqmWGEGEAA4UguWsISVuiCAAGEXak2n4W4PbogQABhVSomKsvAZIMuChBA2JQK87AwsbHyoQsDBBCmUjlGAQYmRjEMlS4AAYShVJSRg0FKnpcZ0zKAAMJQys7Ersctgs0HAAGEoZRBxpkZe3IBCCAMpZZquLI7QABhKFXHWWQABBAJpQtAAJGgFCCASFAKEEAkKAUIIBKUAgQQCUoBAogEpQABRIJSgAAiQSlAgAEADs28LxBPmkAAAAAASUVORK5CYII=',\r\n'w8/rotate.png':'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',\r\n'w8/rxn.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEDUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAsRCr8OjRo/83b97M8ObNGwY/Pz8QZqSnQwECiAFU4BODk5OT/9+4ceP/o0eP/oPYX79+/U+sXmpggAAiKeqFhYUZZGVlGQ0NDRnOnz9P1wAFCCCiHYrsOAMDA4YLFy7Q1aEAAUS0Q0GOO3bsGIqjv337RreGAkAAkRSib9++BWWm/1xcXODoB2YwuoUoQAAR7VCY45CjHxbC9AAAAURSZkKP/sePH4NDmBi9ly5doiiZAAQQSQ4FOo4RPfqJzf07d+5kePfuHdmOBQggkmsmkOP27t0LZltZWZEU/R0dHQz/yWypAwQQyQ4FRT8sFJFDmBi9wBBl2LBhA1khChBARFWhoOoT5CAY+PjxI8PixYv/37t3j+HXr18M8+fPZ1BXV8frWJj+rVu3Mpibm/+XkpIiqQoGCCBGYmKiu7v7/82bN6mWg0VEREDJgCSHAgQQUSHq5uYGCgU4/9y5cwwgh0dGRoL5ixYtYggKCmLg4eHBqv/v37/gzARq0IAAsKIAVxagDEmsQwECiCiH6uvroxhoZ2fHUFFR8f/nz58M379/B5WxDA4ODgz4LD5z5sx/mEN9fX0ZSHEkCAAEENnt0ezsbAZQs2/Tpk3gEFq5ciVRVSowLTO4urqS3EQECCCyHQps7oFDsrS0lGHSpEngaAU5lhCIiooiyz6AAGIh16Gw1hMoRGHpDlRsJSYm4tQTGBjIIC0tTVaDGyCASHYoKHpBIQfKTCDHwdIdcgkBCmlQeWttbc2InNPd3d3JLikAAoiR1IoCWGb+h3VHcAGQPCj9ghraoLQMyjjAjPefnZ2d7O4LQACR3CVoaGj4f+TIkf+vX7/G2xUBdVXmzZv3H6SeGl0RgAAiOTOBWkygmqipqQlvLgeFYnh4ODwWKK0kAAKIrFwP7DeBGycgBxNqw4JKBVAmAzmWkh4BQACRnEZTUlLAmQXUEgJmHAY5OTkGUMjhK8BBDpw6dSo4NkAelJGRAetDKlsJpl2AACLZoY2Njf9BFoKKIViogkoAUG0DzOV4HQzU9x8UutAWF7yxAqoEgObhdSxAAJHsUGDR9B/asWNwcXEBY5DDQeUpyMEgx4OKJpDlwCKJkZjiDlgdM9TV1eFVDxBAJDsUZDAoykGOQ25Mg9ItLLPBylhQEgGJR0REgMcDkM2AqYPRwNoNr6cAAoiR3KFxYKj+B9VOIEvQC31szTpQmQoCsOYiNMQZ1NTUUCoGXAAggBipMYYPCyFQKCKHNAxwcnLCMw8ohEltOYEAQAAxDpXJBoAAGjLDjgABNGQcChBAQ8ahAAE0ZBwKEGAAsYK8GTAhlXcAAAAASUVORK5CYII=',\r\n'w8/rxnmap.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADGUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQRQ5NSUnhBWIWejgUIIBYyHQgN5BinjNnzid6hShAADEOlcwEEEBDJo0CBNCQcShAAA0ZhwIE0JBxKEAAsZCR4xWAVAIBZQuAJcIDajoUIIDICVEBIK4HYnsscvpQOQFGRkYGdEwJAAggsoonYKgWgBwKDLVAsCFQRyQnJ68HUgfnzp07AaYWKLYfSDngMMoRaMYBYuwECCCSQxTqqAvIoYYW2hfQtCwE4g9AxzPCMJBfCFV3gVh7AQKI5pkJ6LAFQOoBMGSRQ9UfiBuBch+INQcggOiV6z8QKYYTAATQgBdPxGYygAAaMuUoQACR61AHHFEHKjvjsYgrYIn2eFIsBAggkh0KzBQG0LKyEYs0SCwAqCYASX0/NNcjF0OJUHUJxNoLEEAklaPA8hNU/NwHFS/Q3IzNIyBHzgdiQ2hIgspRRzSHwjx8HqQOKAcupvC5BSCASA1RUIG+AZcjocXRBlAVClULcgDIgflY1F2Ahux+oKMVCFkMEEBMJIRmP7RALySi7CyEpkOQHlDtpQB0TAOOMhbksfVAeQF8ZgIEEBORjgyANkQCSSikQQ6E6QOFXD5y2kVybCKU2Y/PMIAAYiLCkQbQNJcINJToFhHUQ45IDgA5aD40bWLU+aCSBNqGwAoAAghvZoJmHlBm2Ai0uIGccgyas0GOVQTiAmixZIgeM1APgOwKxNZQAQggQiEKK1oayCxvUdIh1JwD0IyGLXOB0vZ6aJsX3B2HyQMEEAue0IyGFuyGVKhYCqG5ux+Jja9cVIBWHvD6FSCAMKIe6EBQf/0vkF4D5AqD2pdUqgVBjWoBYMg54lIAcwsoyQHdgJI0AAIIW9SLwtwMSptUrK5BHk4EOQYXhgGQI4GOFULWDBBAWDUAo4ULn4EDgQECCFdmEh/IlhIwNLnQxQACCKcPgKEqNZhCFCCA8EoCHcs2WBwKEECEytE/wGhgZBgEACCAhsxoHkAADZmuCEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAB2+2loyg9nNgAAAABJRU5ErkJggg==',\r\n'w8/rxnmap2.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEL0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQC6UGpKSkiAOpv3Pnzn2DLkfNZAUQQIzkGAZ0HDuQYgU67gs+ddR0KEAAgQ0jBScnJ3PRymx8GCCASHEgB60DAR8GCCBiHclOy9gCms9ISA1AANHMkdT2DEAAsRDINMzADPMT6Nh+ILcAiD8AcSFQbAG9iyeAAMJbjgId9BfoSAcgMwCIFYE4EYjrB6IcBQggYsrRD1BHPwBSD4AOnw/EBkD+BWIsAKpVAFIKWKQeQM0kCgAEEMGaCeYgaMiCwAYgjichMECxsR8aEzC8HypONAAIIGKrUGTHTSTFEqBHJ0CZgUC2IyiNQ0NzAikOBQggYh26EOY4pBA2IMGeA0AMUy8AciipaRQggJiIDBWQ4z4AHRdAZvTjrsMZGXFiYKkjAlMHEECktJ5AoeqPxE4gQa8AAT4uwAxjAAQQ/toALfcC8Xsk/n2kEMaX6x2Q9UHF3iNlTqIqBIAAYiIhU8CKJ+To9yeiaFoPzUDIAMRfD5UnCgAEEKkNZ/ToD8DjSAGoIxeg12RQ/gKoPFEAIIBIdSgoFBNAjoBmsAd4or8f6qhCHDFUCPXQfGIsBgggkhwKjf4LSCG5EFv0Ay1PgKpxJGAkSD4Aqh4vAAggcvpMyI7bgB790PIVFEqOQI99IOBxkHwgKPQJlcsAAUSOQzdAQ6EAGr3odf56aAvrApGxBKoMGgmlV4AAwttnAhW6ODJKAjTUYGACUpoD1eMO5AQA0IxAXP0ugAAi16HzoYV2IpQGhcZCUutvYstREAAIIHL79Q7Qptt6aMgKECpTyQHAABGEsQECiIVEjQbQZhq2ghpUc52HNjhAobuBGgEKYwAEEElRD01/B6GF+AMsBbwB1BP90DSXSI1oBwGAAGIiI8o34CpqQDkYWuuAui0GxBbmOGJPBJkPEEBMJGiE5eTz0BY6ofKR6MIcG5gzZw7KEBFAAJGTmSZA26YNRDq2H1rmkhKaUuhiAAFEdBqFZqTz0NZ6ITRUJwId1EBEBuyHpl2Q3odQGtxxRK8YQCMywND8gW4OQADhdSiwhc0INOg/kiEwtiG0dzof6oBGaOb5QMDBoOpWHqnUMEAfJwCq4wY69Cu6foAAIjiaB3QsE9Cgf0i5HlYngy2ApsF8qOUboKXCAWK6wlDH7weqFYTyxYCOfIVNLUAAETXsCHMs1OD1SCHyARqNF6F8fWjJIACVA0VrIrKjoWaA9NvDqlqgvCFQXALoyBe43AAQQESPjwIdywI08A9SXW8PjUpC/Z8LUEfDBiIeQDEo5E8B8T4gBqVLvC0tgAAieSAXSyUggJQcHLCMslzAk3HkgA58RIy9AAFE1lgl0AJWCutwCSDmJMVOgACieIAVaCEvsTUNEIuTaw9AADEOlXkmgAAaMtM3AAEGADgui7Z4EMnPAAAAAElFTkSuQmCC',\r\n'w8/save.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACnklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBBDJDk1JSWFhZGRkoAQDzSDZXoAAYgDlemJwcnIyM7VDCWgmE7H2AwQQsY7kpFWUggKAGDcABBAxjuSjdfoD2sFKyB0AATTgjiTWsQABhM+RkvTO2UA7uXG5ByCAcDmSd6CKIaDdHNjcBBBALLQoX4GWOeCRfjB37twHuCSBcj/mzJmDIQ4QQIzojRJgGScNVPyUAkfuB1IOBJQ5Au04gMcMQaBj3yOLAQQQthD9S2HsgRwZCHTIBhyOOA9VcwBPqL5HD1WAAGJBC00+oKIXOCxoAFL2RDr2AAG5fKB5ILM+AO0LxFEDcgEd+w3GBwgg9BAF5fRPOCyoB+IFQPyQgCMPAi3/gEd+IxB/hJkJSs84kgGokoE7FCCA0HO7Ip50859AJiEnPeM1E9ltAAHEhJY27g/W1hNAAA2ZZh5AAA0ZhwIEEAsNapb/xJSVpAKAABoyIQoQQEPGoQABNGQcChBATGjpS5HMdLkej1wCNcpfgABCD1E2Ms0JADpmPjZHAqn5ZHpeGJkPEEDouf45BZ4GhRwyPx4kRoF535E5AAGEEqLARsAnoGUSZBiaCHMsssOh9AJyiinkBgkIAAQQtsxEcrcY6JAFSI5FaSkB5RLJiHZBdDGAAGLC4pOnQIX8ZDp2ApLQBVC7lJw4R280gwBAAOGqmf5hEQM13eYDPfGABDvXo6VbZCCAZC5KnwlI/UBXDBBALDh89BnUNgWGEnLmMiQycxwkwSONQDsuIPdCgXZ/xaYQIICGTL8eIICGzEgJQAANmbEngAAaMqN5AAFEtEORHMxCTwfCMEAAMQ6VWRGAABoyzTyAABoyDgUIoCHjUIAAAwCquOzXqgdXzAAAAABJRU5ErkJggg==',\r\n'w8/select.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABm0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAMYDKUXw4OTmZcaDdAMIAAcRIqMBnZGSkW4DhAwABNGSiHiCAWEhRDEwG1K5vD8ydO9eRGIUAATRkQhQggFjI1OcIDIkD5FoKjJkGIFVPih6AABoyIQoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRQDtUnVQNAANHdocAyNAFIBZCqDyCABiJE48nRBBBATHQOTQUg5UCOXoAAoneI5pOrESCA6O3QAHI1AgQQuY0SA2A0kqwHiBXIdShAAJHUwqdBexQEBIEtsQ+E3AEQQIOhwE8gRhFAANGlz4TU/rwAxIlA/ADKLwCxgSGqSMgdAAHEQqdQA5WdjUAHNSCJFQI9sBFIzwfSoCILb0McIIBoHvXQsjMQzZFgAO0lGII6oYTMAQggxqEyPgoQQEOm9QQQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBgAKUdefhOjYOqAAAAAElFTkSuQmCC',\r\n'w8/selectall.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACzElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAAUexQRkZGDJySktKATRwdkwIAAojqIZqcnJwApPKBtAA1zQUIIFpEfTwQgxwZQE1DAQKIidLoRgtNBSBlAMSFoFClpkMBAojaIQpy3AYgXgDECkCHG1DLYIAAorZDQelz4ty5cz9AHUy1UAUIICYqZ6IHQEdegApNBKVTamUqgABionImmgjjQB38gFqZCiCAmKgUmrBMtAFNaiK1oh8ggJiomYmgaRMZbKBWpgIIICZqZiJ0QWpmKoAAYqJBJmLAEv0UZyqAAGKidibCEqpUyVQAAcREo0zEQO1MBRBALNTMRNDorYeGXiJQ/ABSpuoHZSo8SQQvAAggJmplIqAjHIDUeWgINwLxeqAYyHEC1MhUAAHESE6/HtQYgTXngNgRGoogfiPQUROQQnc+1OGJQAxy7H4gVoTFACl2AwQQC4WZ6AI0FEGZxRDogAdoRVMg0MGgZLAe2lD5AE0WC0i1DCCAyApRYAselInuQy2GhyKeTAcLXZAjLwDVG5IaogABRK5D+2FRihyKRJQSAVAHO4IyFSl2AwQQ2FekYqiF5BZpAtCMR5KdAAFEdmaiBiDFboAAoqgchRb466HJYAIwOgtxVLHzoenZkdxyFCCAmChwpAFSubkAmyOhuX8BtHgCZaj95CYbgAAiNzMZQMtEAWhIIdf1oAbKAmg6dEAS94d6igGaCReQYjdAAJEb9euhjmSA0vVIcgeg5aQDmjgymA/0yAFo+UsUAAggch0aiC9EkRzMgCVEQeoLQcXanDlziLYQIIAoqUINoCGrAE2jiQTarBgZihS7AQKI7MwEtcwQWo0mgBogOBxZgORIe3IcCQIAAcQ4VCYbAAJoyAw7AgTQkHEoQAANGYcCBNCQcShAgAEACzRFJ/iMF+gAAAAASUVORK5CYII=',\r\n'w8/selfrag.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACI0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQABR5FBGRkasOCUlRQCXHAiTAwACiIkSR2IDycnJCkBqPTl68QGAAGKipiOhIAGIHaAOphoACCBapNF4IL4AxPnUNBQggKjqUGAoBkCZidCQpRoACCAmGoTmxLlz54JC9AHQ4VRzLEAAMVExNEFpEhSiC6BCE6EOpwoACCBqhigo9BYAQ/MDlL8BiA2olakAAoiJytG+EMaBOngDtTIVQAAxUTMTAR13AE1qIrUyFUAAMVEzE6ELUjNTAQQQEw0yEQOWUKU4UwEEEBMNMhE6oEqmAgggJmpnIizRT5VMBRBATNTOREAxASB2oHamAgggJmpmIqgDzwPxfiB7PcjR1MpUAAHERI1MBA3FfmjzDuRwQaiy+0j1P0WZCiCAGMkZ0gE184AOaAAy5aHpcz4oxECNEWDoPUBLGiA5UNIohIa2IUgNqfYCBBAThdFuAAtFoOWOyI6ERjkoEylCuSBHfiA3UwEEEFkhCuxqBEAdeAA9FAlkvPlQDwiSai9AAJHrUJCFF4EWTiAxXQtAHbtxzpw5C0jRCxBADCCHkoopLbxBDibVToAAYhwq46MAATRk+vUAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABBgAlFuN8C8/7xAAAAABJRU5ErkJggg==',\r\n'w8/seq.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJuSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBADqJmHD+MDycnJBUAsQIw9IHUg9eS6ByCAyA5RoKUJQKofiokBYLVQfSQDgABiItORDkBqPpSbAOQ3EFAPkoc5cD5UP0kAIICYyHCkAZBaD+UegNL1uEIKKB4AkkdTvx5qDtEAIICYSHSkADQkQfQFIA4E4gWwqEW3HMqHhfwCqPoLUP3ziU3fIAAQQIyEMkxKSgpytPoDMcjyD0CsOHfu3A9QB+0HUg5Q8YlI6uOBWAEUkkC1jkievY/k2Y1I6g/MmTPnADZ3AAQQCxGeqccilghzJBSAQuo91HJs6gNhDJA+oGMTocnHAIqRAVaHAgQQMQ5txBKioDR5AMmxsJyPHqL5UMeD5BORQhTmGYwQxeUIgAAiGPWMjIzIaQ4Ujeehlm8AOjQQWjbCHBoIFNuAVjrsh3ILgXITgGKgkAyAesoQKPYAvRzFBgACiCSHImWQ80gh4IDsEGyVApJHkNWDHHkBW4GPDQAEEMkORSrs5yMJLQBamointJiPVI7C0vgCXDUTNgAQQGQ5FGo5KJRAoXUBaKkhEUXbeWj6ngBUX4ivCsUGAAKIYDmKSyPUMlBGcySyKASpayTHkSAAEECMQ2XsCSCAhkwzDyCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQggIaMQwECaMg4FCDAAJt64YPhN1TvAAAAAElFTkSuQmCC',\r\n'w8/sgroup.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACt0lEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBBALLglGRkaSDEpOTlYAUg5ArA/EC+fOnXuBGH3EVuEAAYTVoSkpKSBX/ifgMJCjDIDYHupAAahUIrGOJAUABBAjNh8RCk2gIxOA1HwsUiBHLiDFAcSGKEAAMWEJTXYi9OlTw5GkAIAAwnAo0LKfROhzQOM/AOINtMxMAAHEghaaQkDqHYFoF4CmTRj4AMSgjLQfKOcI9OgHLGkZrhaUfoFiIP0BQLwA6kmCACCA0DMTMVkd2ZGJQAzKOPuh4nDHQtNxP1Imgzkc5jCQ5w4Q61CAAGJBi/a3JEQ7PE2CHIfm2IlImQ0Uwo1QOh/No0QDgAAip8C3R8840OLIEeoYA7QSAaR2Akg9EBuSm5YBAogchzZiy91ojsUHEolQgwEAAohkhwIddACP3AWoQ5DBfGh6han5AM1EJAGAAKJFXY+eOQSgjj2PVAI0QkOf6BoMIIBQaiZS63c8Rdh9aK7GBg5Ak88BUmomgACiVespEE86dICWDAmkGAgQQExoIcFLDVciZSx8ZeR8tMoALwAIICZqhzCouQd1wAOggxWRylBsIJ9YcwECCMVhc+bM+UiFAE2AFv4B0NBtAFK4HCxArKEAAcSEJUSYqZRO/ZGLJKiDiSlnsQKAAMJwKDBU/1LJoQHQxgd62r2ApyjDCQACiAlHOmOkkmP3IzsWykbOQBOJNQgggBhxlWPklqlAx4CiuB5L2YnejgW3F4gtRwECiAVfF4HCCgCUeeShmcoBqSUFcvREfFUxNgAQQIxDZSAXIICGTL8eIICGjEMBAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAgwAx8rRvU6ExAMAAAAASUVORK5CYII=',\r\n'w8/single.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFSSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKOJkZGRZD3JyckGQKofiAPnzJnzgVT9AAFElxCFOnI/EDtAHUsyAAggJjo6UgCILwBxITnmAAQQE50d6Th37twP5JgFEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQExDwZEgABBATEPBkSAAEEBMQ8GRIAAQQOSGaDw9HQkCAAHEABokIxVDQ7UAiAXoZSdAADEOldE8gAAaMi18gAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAAwCeIKhoGrTRJwAAAABJRU5ErkJggg==',\r\n'w8/spectrum.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMUExURT9IzH9/f////////+0N6z8AAAAEdFJOU////wBAKqn0AAAA7klEQVR42mJgJhIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABhFDIiBXApQECCEkhExaAUAgQQEQrBAggohUCBBAOhQwYCgECiGiFAAFEtEKAACJaIUAA4VTIgKYQIICQFTLgUwgQQEQrBAggNIUMcGXoCgECiGiFAAGEqZABppABRSFAAOFVyICkECCAiFYIEEBEp0eAACI6hQMEENEKAQKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAAwBppRCnygJdngAAAABJRU5ErkJggg==',\r\n'w8/spot-blowingdown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgcHB////woKCp+fn/v7+6mpqSAgIAYGBnh4eAMDAwkJCZeXlwQEBBAQEPf396+vr4CAgLu7u4+Pjx4eHiMjI9bW1v39/YODg5GRkaCgoImJiUxMTC0tLQsLCwEBAbe3t8rKyhcXF6urq2dnZ5qamn5+ft/f32xsbO3t7bOzs6ioqLa2tkdHR3BwcCwsLBISEoeHhx8fHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDitywAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABg0lEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQhkIOEXkuUwMeIXRxgABCU8jKr8j0HwiY2MRYUWUAAghNoabAfyhg0kaVAQggVIWizP/hgFkYRQoggFAVciEp/G+MIgUQQCgKdZj+IwNJZDmAAEJRqM+LrI6FE1kOIIBQFLKzICsUkEaWAwggFIX83CgmyiHLAQQQikJZFDeyyCDLAQQQikI9FDdyayDLAQQQikJlFE8zoXgGIIBQFGqhKPyvgiwHEECoAY4ajiixDRBAqAqNkNWJo0gBBBCqQhE2hDo+dRQpgABCSxRIBiqhJgqAAEJLZqoIhYKoCRIggNAUmsC9w8SDKgMQQGgKpQT5oOrY0DIDQACh5xk1aIpkZkeTAAggjMwlxgxUysxsiC4OEECY2VVX4f9/CXYMYYAAwpavOTiwCAIEENEFAEAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGADPv66EeffprAAAAAElFTkSuQmCC',\r\n'w8/spot-blowingup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQYGBv///wkJCQMDA6enpwQEBPf39xgYGBcXF/v7+yYmJggICCcnJwwMDCUlJQEBATIyMgICAiIiIv39/VxcXPPz83Jycnh4eBAQEDc3N3FxcYaGhjMzM9LS0pOTk1dXV+bm5vX19RkZGTU1NVBQUIWFhSsrK0FBQa+vr21tbbe3t2JiYtnZ2QcHB11dXQsLCz09PQ4ODmZmZpeXl6OjowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8SBLkAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGFSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggbAo5sSkECCAMhWKSrP/5THkwFAIEELpCTlHm////M4timAoQQGgKWTRB6oAqeVnQFAIEEJpCDab/EMAki6YQIIBQFfIY/YcBJhVUhQABhKrQnA2hUBFVIUAAoSrUEoEr/C+PqhAggFAUsjAh1P0XEUNRCBBAKAp1kdT9F2JHUQgQQCgK5ViRFLJKoSgECCAUhXoGSArZ1FEUAgQQikJhZKv/C6IoBAggFIWqKAq5URQCBBCKQi4UhdIoCgECCEUhN4rC/ygKAQIIj4lsKAoBAghFoQwezwAEEIpCHeRwZBZHUQgQQCgK2TmQFDKZoSgECCDUuBYWgKsT4EdNugABhJp6JExgZnLwKaOmHoAAQkvh+sZCEB+rKaClcIAAwsiF2ob8TLxK7Bi5ECCAiC4AAAKIaIUAAUS0QoAAIlohQAARrRAggIhWCBBARCsECCCiFQIEGABAoPUJVnlBdgAAAABJRU5ErkJggg==',\r\n'w8/spot-circle.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAAQEBP///wsLCycnJwICAgMDA6enpz09PQgICAUFBTU1NQwMDJeXl+bm5i8vLwEBAWhoaAkJCREREaurq/Pz8/f399/f3yYmJtLS0gYGBmBgYHFxca+vrwcHB1xcXDExMQ4ODtnZ2e3t7W1tbSUlJbOzsxgYGDIyMldXV11dXTc3N19fX0JCQgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAmmZgAAAAwdFJOU///////////////////////////////////////////////////////////////AGKl0HgAAAFQSURBVHjaYtAnEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAYShUE1RQ55cWwVAIEEBoCvl0Wdn+///PKsAhjqYQIIBQFYoJM/6HAEZmZVSFAAGEopCJm/k/DDCzMKEoBAggFIXsbP8RgJEXRSFAAKEolNFDUiing6IQIIBQFHL8Rwb8KAoBAghFISeKQlYUhQABhKJQG0WhKopCgABCUagihKROSh5FIUAAofqaEUkhF6qvAQIINRw1eODqeNDCESCAUGNGVBEeM5x8qDEDEEBoca3EIQBWx8YtiRbXAAGEkXpktVi4JDTZMVIPQAARnR4BAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgAAiWiFAgAEAodiBFKm9ZEIAAAAASUVORK5CYII=',\r\n'w8/spot-crescentdown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAClUExURQAAAAICAp+fnwoKCv///8PDw4uLi/39/dnZ2dLS0gcHBwYGBgUFBQMDA7u7u/Pz8wkJCe3t7QgICAsLC3d3d1VVVSYmJnZ2dlFRUYmJiQ0NDTU1NW5ubmRkZHBwcIeHh/f397e3tzExMV9fX0RERI2Nja+vryAgIKOjo7+/v+bm5nx8fCsrK7Ozs8fHx2pqaoCAgKurq11dXUNDQxQUFAQEBP///31J1csAAAA3dFJOU////////////////////////////////////////////////////////////////////////wAQWZ2LAAABgUlEQVR42mIwIxIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABRLRCgABCUcjJhsxT1UTmAQQQikImBhYkHrMBshxAAKEp5EBw+BlQzAcIIDSFhggOHwMTshxAAKEo1GCQQ3C0URUCBBCKQlYGHkEYW0GYQRdZDiCAUBTyMzAawdj6jMgONjMDCCDUcGRg4JUFe5xFhpGBgR1ZCiCAUBWqMzDwiMmzsrLpcDMwCKNIAQQQqkIJoDkMQDVcQIrBGEUKIIBQFUqCVUCAgDiKFEAAoSpkZUACiihSAAGElihMEOqkWFBkAAIITaGIEEwdszKqDEAAoSnUYoSbyIkqAxBA6OlRVABqoAqaBEAAoSsUZAZbzs3FgSYBEEAYKZyP0RQYP4xq6OIAAYSZFTilGRiU9DCEAQIIW55hZ8ciCBBARGcugAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAohohQABBgCePjGhpCQ+agAAAABJRU5ErkJggg==',\r\n'w8/spot-crescentup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gUFBQICAgYGBv///xgYGNLS0gQEBI+Pj6enpwsLCwMDA3h4eAkJCd/f34CAgAwMDHR0dFRUVGRkZDc3NwcHBycnJ/Pz829vb+rq6l5eXv39/UdHR4uLi2BgYC8vL/n5+Tg4OGxsbMfHxzY2Nu3t7ebm5hkZGUNDQ/f398zMzA8PD35+fl9fX0FBQT09PR8fH7u7uxMTE1FRUcPDw5+fnx0dHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWjopcAAAA5dFJOU///////////////////////////////////////////////////////////////////////////ADqsZUAAAAGDSURBVHjaYrAgEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCJtCNWwKAQIIQyGrgOB/QV5WDIUAAYSukFWf6f///0yiGCoBAghdoSRI3f//LHroCgECCE2hOvN/KGBHUwgQQGgKhbmh6rg10RQCBBCaQiaYgf+ZpVBlAAIIVaEZB1whCyeqQoAAQlUoywNX+F8VVSFAAKEq5Eao+8+EGkIAAYSikB+kgIPlvxjYqSooCgECCEUhF/N/ZmZ5LnYuZWae/zyojgQIIBSFAiwsOkZglqkxC4cQikKAAEJRKPKfmR/KlGD6b4KiECCAUBQa/JeGs4X+K6AoBAggFIWGTFpwtgwfG4pCgABCUcgmjsRRQlUIEEAoCjWEkR3Mh6IQIIBQFJrzInHk/qMoBAggFIWc2kgcdl0UhQABRHTmAgggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBgA3fiNbRF8wqwAAAAASUVORK5CYII=',\r\n'w8/spot-halfellipsedown.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAO3t7f7+/goKCgICAgcHBwYGBgUFBQkJCQQEBNLS0ggICObm5vPz85+fn/39/Z2dnY6OjuHh4a+vr/j4+A0NDT4+PjU1NcPDw7e3t19fX////5WVlXd3d8fHx729vbu7u4CAgERERDExMSAgIHx8fAsLC0xMTBQUFL+/v66urgMDA6Ojo9nZ2aWlpcvLy1VVVY+PjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRjeb4AAAAzdFJOU///////////////////////////////////////////////////////////////////AHGevY4AAAFmSURBVHjaYjAiEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAGEqpCXEQnwokgBBBCKQi7m/0iAQxNZDiCAUBTysSErZFdElgMIIBSFAuzIClkFkeUAAghFoR4nskI2GWQ5gABCUajzH8VqPmQ5gABCUSiPopBFC1kOIIBQFAqhKPyvjywHEECo4ciBopAHWQoggFAVqiCrU0ORAgggVIXqrAh1nGIoUgABhKrQEEkhsyqKFEAAoSqUQLZaEkUKIIDQUo8GQp2oNIoMQAChKZTlhtsshSoDEEBoCnlY4CZyocoABBB6wjWABiWzEpoEQAChK2RkBlvOxqqLJgEQQBhZQYEFmIS0WYTRxQECCDPPcIn//68shyEMEEDYMhc/PxZBgAAiOhcCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAgwAP90wpHYv4TVAAAAAElFTkSuQmCC',\r\n'w8/spot-halfellipseup.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/t7e3gUFBQICAv////n5+QYGBhkZGVRUVBgYGEFBQQMDA4+PjwsLCwwMDAgICBcXFwQEBObm5gkJCR8fH8fHx5+fn6enp7u7u/f39w8PD1FRUUNDQzc3N4CAgDIyMnh4eIGBgW9vb3Nzc+3t7dLS0jY2NkdHR19fX2RkZEJCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8whroAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFkSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECCKtCVSxiAAGEqZBVnv8/vyIrujBAAGEoZOVm/v//P7McukqAAMJQqAxS9/8/uyaaOEAAoSsUZvkPBWqoEgABhK6Qkw+qjk8WVQIggNAUMjLDDPzPIoUiAxBAaArFheAK2XlRZAACCE2hBg9c4X91FBmAAEJVyMiBUPdfmg1ZCiCAUBWK/UcGkshSAAGEqlCCBUkdD4ojAQIIVaGSCJJCARVkKYAAQlWoxY6kkEUGWQoggFAVaqO4UQFZCiCAUBWKoijkQpYCCCBUhRwoCgWRpQACCFUhF4pCAWQpgABCVSiIovA/shRAAKEq5ERRx40sBRBAqArZmJABShQCBBDRuRAggIhWCBBARCsECCCiFQIEENEKAQKIaIUAAUS0QoAAIlohQAARrRAgwADnsqT2BolpWAAAAABJRU5ErkJggg==',\r\n'w8/spot-hellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/gMDAwYGBv///wkJCQICAgUFBaurqxgYGEJCQmRkZENDQ/f39wQEBG5ubu3t7V5eXvPz85+fn3x8fLOzs8PDwzMzM1ZWVlNTUyMjI3R0dI+PjxcXFyQkJEdHRwwMDHJycmZmZkBAQK+vr0lJSZOTk/39/UFBQUxMTICAgFVVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWGuOYAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAFPSURBVHjaYtAhEgAEEAOxCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAoSnkVePmkuOU0uCWEUJTCBBAKApVNNmY2f6DABMzGw8HikKAAEJWyM/E9B8BmJiUWJAkAQIIoZBFkv0/KmCVR1IJEEAIhVrM/9EBsyJCIUAAwRUyKvzHBOy8cIUAAQRXKPYfGxCFKwQIILhCYWzqWIXhCgECiGgTAQIIrlCdGYs6JkSwAwQQwtfSWHwtiPA1QAAhhaMqRjgqMyIUAgQQvpgRRI4ZgABCiWsOnv98UGV8/7lQ4xoggNBSj4CIhDjnf1lxbREBtNQDEEBEp0eAACJaIUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAFEtEKAACJaIUAAEa0QIICIVggQYADruK7+ajRtnQAAAABJRU5ErkJggg==',\r\n'w8/spot-vellipse.png':'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURQAAAP7+/goKCggICAUFBcPDw7+/vwQEBP///wEBAQICAhAQEAkJCczMzEFBQQcHB9nZ2QsLC9LS0jw8PDIyMt/f3z8/P+3t7QMDA/n5+Q0NDcvLy4CAgLy8vEJCQqOjo/f3956engwMDDk5OTU1NVBQUObm5sbGxp+fn7u7u6+vr6ysrA8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYPWtQAAAAudFJOU////////////////////////////////////////////////////////////wCCj3NVAAABaElEQVR42mLQJRIABBADsQoBAohohQABRLRCgAAiWiFAABGtECCAiFYIEEBEKwQIIKIVAgQQ0QoBAgiLQg42Ng5MUYAAwlAoLsby/z+LsCi6OEAAoSvk5Rb8DwRKTKxoEgABhKZQnZ/zPxhwcmmiygAEEJpCPp7/UMAsgioDEECoCgX+IwFUywECCFWhKhNCHY8YihRAAKEq5EY2kR9FCiCAUBRKsiMr/K+GLAcQQCgKpVHU/ZdFlgMIIBSF2igmMisiywEEEIpCDWZkhewyyHIAAYSiUAvFZnZ5ZDmAAGLAGYxoAQkQQCgKGVEVKiDLAQQQnnBkQZECCCBUhXJIMcOkgiIFEECoCoWQTWRDkQIIIKJTD0AAoSkUYoamRy4utJQLEEAYKVxHCqROECOFAwQQZp4RZpGQYFHGyDMAAUR0LgQIIKLzNUAAEa0QIICIVggQQEQrBAggohUCBBDRCgECiGiFAAEGAItVsXfzSWweAAAAAElFTkSuQmCC',\r\n'w8/symbol.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABXUExURXx8fH19fYyMjISEhJycnPX19dHR0f///5SUlLS0tKampv7+/uDg4NLS0ouLi+3t7ezs7P39/Zubm+Hh4cPDw7Ozs5OTk/r6+sLCwoWFhaenp/b29v///+N16u0AAAAddFJOU/////////////////////////////////////8AWYbnagAAAehJREFUeNpikCEaAAQQA/FKAQKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEELpScTYhBgZGBgYONn50pQABhKqUlYOBkZkNyBAQY2Bg5kFVChBAKEp5gQZysEPYnEC2FIpSgABCVsoGlGXmhvGYgO5gQVYKEEBISvkZgEACzuUBuphBBEkpQAAhKWUCKRWAc9lBXAZBhDxAACGUCoOl2BFSYiA+J4IPEEAIpVxAlzIyI1nIBQo0JAGAAEIoZQYZwoekVJQR1QUAAYRQCjSDEUUpMLiAIqxwPkAAoShlYGBCVQoUQigFCCCEUj6QsZhK4eEsAxBADCi+QPGWEMhFSAIAAYQaWIzIkceBFgcAAYQcBUBTGMWRowDFfhmAAEJSygoyhRfOFWBA4crIAAQQso08QHOY2JHt50ROLgABhJIIWfkYGIQgYc7OAjQTNcECBBBcKRckHXJBg1YUmA/ADERSAwgguFIWqLNYISIsEIUy0oiQBggghFIGKGBkhwYHBCCUAgQQslKoLDh8JBkZGRlQ4w8ggFBMhagFxzrMDiRTAQII1QFgtaBczc0IswOhFCCASCgyAAKIBKUAAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMABYEojZyOA2dAAAAAElFTkSuQmCC',\r\n'w8/template.png':'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',\r\n'w8/templates.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGFSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCzGKTExMYEwFIH5AQLkAlP5AQB3crDNnzhB0A0AAERuiIEMPAPF9qOEGONQ1QOUfQNnYgANU/j7UTAViHAAQQMQ6NAGI7aFseRyOAFlYD8T8UFyPwxENUDMYoGYmEOMAgAAiJUSRgQGeKCckpkCAjxUABBCxDl2Axp+ARc0FIH6IxH8IFWMgoHcCMQ4ACCAWIh0KSkuKQBwAZV/AE/IJODyH7LAD0LS6gYjMCQYAAcQ4VAYgAAJoyJSjAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYADB1iX6XfzmIwAAAABJRU5ErkJggg==',\r\n'w8/text.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGxSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQCymKU1JS9gMpByj3AxBfQOKDwAOouAGSmOPcuXMP4DOXmIYRQACRE6IfoJYLArEjmtxCoJghkBYE4gXUDFGAACLHoYGEQggo/wGIE6EhTBUAEEAspIYmIUfCQHJycgLUofFAtgMepQegGC8ACCBSQ3QiCWrjkZJDA5Cuh2J7KB+UvvPR0jhOABBAJDmU2NBESss4kwlQfANInljDAAKIlsXTRlBaJcLjRKVjgACimUOBjlhATXUAATRkCnyAABoyDgUIoCHjUIAAGjIOBQigIeNQgACiyKFYahx7HOoEkLgC5NgFEECMpAzpMDIywixWgNYqBjgK+o2wYgdalYI8oICk5gJUzQFiW08AAcQ4VMaeAAJoyKRRgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIoCHjUIAAGjIOBQigIeNQgAADAKvCX+dy+c4IAAAAAElFTkSuQmCC',\r\n'w8/tlc.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADLklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAALGQojg3N/f6379/5X///v0TJsbIyMgAKzmQ2bgASJ6JiYkdCB5OnjxZk1i7AQKIJIf++vVLSENDg9PAwIAT6GDyQoaFheHZs2cMR48eFSJFH0AAkeTQP0CgoKDA4OjoSFE03r9/n+Hw4cN/SNEDEEAkORQUtcBQZfj37x8DMPpRohwWrTA2jI8sDwKsrKwMnz9/BkU/SZ4DCCAWUkMDZDnIkT9//kRxILY0is3RIABKNqQ6FCCAWEh1JMgCYEYAY3IBBwcH2LOkAIAAYiI16qnRNkBPIsQAgAAiuRwl1QJqmQEQQEykhsRAAYAAYqI0Cg8ePMiwYcMGcE6mJQAIIIoc+vLlS4aLFy8y3Lhxg+Hy5cs0dShAADGRE4pIFQDDjx8/wDQI0xIABBBFmUlKSorB0NCQQV5enkFXVxer+jdv3oCTxsOHDylyKEAAsVCSW0FlqouLC7x8xQb279/PcPPmTYZPnz4xREREMLCxsZGVKQECiORcj24JyPG4HAlKDiAHggp4UGb7/v072SEKEEBUb4+C2gEwz4BaSjo6OmAxYKuLgZ+fn+xyFCCAWChJo+gAVC2CSgBQCCorK4ND2tzcnEFaWppBUlKSogAACCCqhuiVK1cY1q9fz7B582ZwJoIBGRkZBmZmZooqDoAAoqh4QgfPnz8HOwhUZL1//56qVShAALFQK9pBQE9Pj+Hp06cMPDw84KKLmgAggEhu5uFzLCiKfXx8wE1AXl5eqjoUIIBYqJ3rick05KRRgAAakNYTKB2TahZAALGQagGoG/Ht2zdw34kcAOozff36FUyTAgACiCSHgspFkENBuRrUZyKnVwBigzyJXFwRAwACiCSHggp0UGEuJCREUdSLiIgQ7VEYAAggUkOUBRRt7969A1sEKwXw9ULRSwpQowTUjgWKkWQ3QACRpBgYmu9Onz7Ne+bMmZ8UFmfswKh/R4rdAAHEOFRGnAECaMiM5gEE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIEGAC8MDpHkUYVwQAAAABJRU5ErkJggg==',\r\n'w8/tlcnumber.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACHUExURf///4iIiD8/P46OjqOjo52dnT4+PpycnKSkpIeHh6KiouDg4IqKio+Pj4yMjH5+fn19fYuLi1ZWVpmZmXp6epaWlomJicHBwUxMTJqamoODg3x8fG1tbURERI2NjZGRkWxsbJubm4aGhmBgYKGhoZCQkHR0dJ+fn6CgoHd3d2FhYYWFhf///1NaGcwAAAAtdFJOU///////////////////////////////////////////////////////////AKXvC/0AAAG3SURBVHjaYtAhGgAEEAPxSgECiASlAAFEglKAACJBKUAAkaAUIIBIUAoQQCQoBQggEpQCBBB2pWKCvLzMzHLMzMx8PHBBgADCrlSJAQ4k4YIAAYRdKSNCKStcECCAGFDsBFnJzCeIXSlAAMGVaiPbiaSUHa4UIIAYsNoJ4ohryXCjKAUIIOxKOYEkm5AsE4oDAAIIt1JRBgUmFFMBAghNKacUDzOzFLMAiM3GpIyiFCCAUJWKsEmDdYDdysDCxoHsAIAAQlHKxsQkAFPKwsbNwcSBbCpAAKEo5WBggytlEGJiEkHxFkAAobmViR+uFCMKAAIIrpQTolQaXSnCAQABhM1UbhlNhFJFuFKAAEIzFWwek6waNgcABBB6FID8zsTAwyfMwiLMosLCwaUKVwoQQFiUgn2P4koIAAggdAeAKQk2bixKAQIIrpRHg4OFhYWLH64SyZUQABBADJjpn4OJjYlNFNNUgABiICarQABAAOFRim4qQAChK+XErRQggNCV8qiDfcfFxcEljyYFEEAklC4AAUSCUoAAIkEpQACRoBQggEhQChBAJCgFCCASlAIEEAlKAQIMAMOn4YmdrAldAAAAAElFTkSuQmCC',\r\n'w8/tlctemplate.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACyUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKI4Pz//nICAgDQjI+MfEB9Prcby+fPnp319fUbUcihAAJHkUF5eXqmcnBwxHh4ehn///jEAHQyXgzkaJjZ79myq1s0AAUSSQ4GO+M3GxsbAysrK8PfvX4aJEydC0g8TZgr6+vWrSH19/VNqhTBAAJHkUFCogUIM5DAQBoVqcnIyA44QZgZSUtQKYYAAYiFVA8yhIMDMzMxArxAGCCCyHAoC3759o2sIAwQQyQ4FOQjkyMWLFzP8/v0bbwhj8yQMA9X+JsVegAAiOY2CwJ8/fxiAUQcPUVwhjA+AQpwUABBATKRGOyik+Pj4GKKiosAhhyuE8WFYqJICAAKIiZwQBQEpKSm4ZbhCGFv0kwsAAoiJnIyEDPCF8KVLl6jmUIAAIjtEiQlhkIORwffv38kOZYAAoihECYWwoaEhXPzLly8My5YtYzh//jzJ6RMEAAKIhYGKAD2EkcGvX78YXr16xfDp0yeyzAYIIBZyHIOr1YQtpJ48eQJOu2JiYgyhoaFgmhwAEECkNkrAUQhKg6BykFBZ+OPHD4b169czCAsLM0RGRjKoqKgwEGge4gQAAURqgc8KbOoxcHNzgx0JyuH4QpiFhYVBTk4O1DwkK10iA4AAIsmhwIbFM2Cxwwis/v6AHArM1eLAEGbGFcIgh/r4+FDsSBAACCCSHNrf34/S2qmpqXkBDC1xfCEMqv/JjW5kABBAFOV6QiGMrfUPbZCQ7HCAAKLIoYRCGD0jwqpYaHuAlRS7AAKIquUoegjjauaB7AUWW89IMRsggBiHyvgoQAANmX49QAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA09lh7Bw8AlsAAAAASUVORK5CYII=',\r\n'w8/triple.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABdklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAADGA6np8mFyQnJwcAMQC1HIPQADRJESBDkwAUuuBeD+yY0HiUDmSPQUQQEw0cuR8KPfC3LlzP6CJzweyDQh5Ch0ABBATDR25AOjIRBziF/B5ChsACCCmAXAkXnFcACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIICYhoIjQQAggJiGgiNBACCAmIaCI0EAIIBISaPIjgmgpyNBACCACDoUaNkCIOWIZukBUCMCj2Oo6kgQAAggshvOuJpkQHEHWrgHIIAYh8poHkAADZk+E0AADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQAANGYcCBNCQcShAgAEA2mVFgTpYWXoAAAAASUVORK5CYII=',\r\n'w8/undo.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAQAAABvygHQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAEOElEQVR42mL8z0B9ABBATDQwkwEggGhiKEAA0cRQgACiiaEAAUQTQwECiCaGAgQQTQwFCCCaGAoQQCzEKPrF/EPoPccvXpavEP5fbvb3/G/5fkF4X1h4/qCqBwggRmJy1EuZ1+7PbH/IMX9iYGAE8v+xs76VnqF4nPsvdvUAAUSEoW+47wU+qHir8oONEeHBf3wvlaZpzRB6i00HQAChGfqT+RsHwx+OP5xQN/xjfsl3q+Re+nvhvwys/3m+/GH9x8TI8JvlFzAuuH8qr9CvFH+OaShAAKGF6VejZ2lPeMWXqu3kBofYG8lTy+7b/GFkZOD4K35DYjXzZ6bP/zg+2b+yeyfyhf1WNNN3rnzeX+iGAgQQmqGsXKwSL00fe/0s15nF8/eJzpWKx5Z/gL7m/Sp1WGqW0jbOX+xArz2/e5/9puV74R8sTwNfTOa6zowWhgABhGYo4zdmEQamj7yXullec7y+NvWV+ncWRgaxl8pdQreldvJD3SSxk53h/9m7GW/EP4rerRMqFEYLAoAAQjP0P8PfN9zsb0U/ch9YDeIxAkOS76NOpuIJ7hdscPcw/hXcrhb4a/Pn+B+sz1xfaqIbChBAWBL/P7Z/QMMgJjAyiD7WT1LbKvic7T9q/PLMEmDg+gxMw9zfxP4yopoAEEA4cxTrf+b/jAxsfyXXauzl+YUpz36LbzfHe6DPmP7yoidLgADCmqMYGf4x/AMnNsb/nNfZvmLN339YGZh/MwLVMn1GlwMIICwuZfrFAPY+UDnDX+bH+TctvzFjBBHzD8VPvD/5/gPV/eNFlwUIICb0iPrP9YfvP5gFdC3Db8aH2nsOXYn8jmbsH55Prq8tvggDA+gXK4ZLAQIIzdB/on+FvwvCLIAExR/Go4sPz/3KhmL5ny/8H9V/AjMu72O+ryxogQoQQGhhyrNT9jQPx3dRNK9KsL9nQCo8fvJ/cH/M+sroLyP3T8VOyYPoLgUIIEZi6/3fjKxQpX+Y33Q/enyt+p0w03/py3Z24h/R1QIEENGFNMzIX/zvZtxnuFnyUegfA997uX6+L5hqAQKIhbQy/Sf3+6QHn++Ev5L6z8DzU71Vcx0nljIVIIBIMvQv46e0+7LX4z8I/QdmC8U1mgv5PmFTBxBAJBj6h/lj8H2tO17vgR7n/CN1Vi8fexHNwAAQQESH6R/Gj0Z3pa/7v5JiYOD6o7bUOlDyLS61AAFEtKG/RB4r3ih/JwLyuNRZHawlPgwABBCR3v/KfcPmyqS34v+AlYjcbrME0bf4VAMEEFGG/mf8oHh1yhvx/wwcf2T2q7XiN5KBASCAiPL+P77vWhzvWf7zfZPfozJN4SQh9QABRFSO+sv8Vej3l+98vzlYGPmf8f0ipB4ggBhJaZ4jsip+ABBAjLRo8wMEEE0aaAABRBNDAQKIJoYCBBBNDAUIIJoYChBgAGNdaBuYWAS9AAAAAElFTkSuQmCC',\r\n'w8/unknown.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEUlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKKYkZGRYguTk5MNgNR8IAbRD4A4cO7cuRcI1ZAAAcRCz1CBOnI/EAtAhRSgfEFCegECiImOjhRAcyQMCADlHAjpBwggeqZRAyyOhIELhDQDBBA9HfoBh3giMI1+IKQZIIBY6BDdBUihdgCIHdAcuYAYswACiJGU9igpuR7qyPto0V0IDVlQJjoAdOQBmAQhdwAEEE0cipRxDNCkHgAdp4hNDyF3AAQQrdJoAhZHUgQAAohWDsWVuxeSayBAAFE16qEFOsyh+9GkFwCjPRGXXkLuAAggFirmbuQ0CcrhIEfFQ/kHgY5soMQOgABioYEj4YU70HGO1EpLAAFEjTTajyPj6FMz0QMEEDUcqoBD/CI1HQoQQNRwKLbqD5RxJlDToQABxEJmmqyHRjfIkRuhbAVicje5ACCAyMlM6BkHVHcbQh36AdQIpkXBDBBALCSG5nwsGQcUwgrI9TYtAEAAkZpGEwaqzwQQQNTITBdoHZogABBApDp0ApaWuSM9QhQggEiu64HpFNQQtgdVi9Ac/oEaDiHkDoAAYhwqA7kAATRkBiAAAmjIOBQggIaMQwECaMg4FCCAhoxDAQJoyDgUIICGjEMBAmjIOBQgwAD8GHi1bWM0DwAAAABJRU5ErkJggg==',\r\n'w8/up.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACEklEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgQQA6jAJ4RpDZKTk1UJuQEggFgGMpCADhQAUv1AvBGIb+NTCxBATAPoSAMgtR+IP8ydO3cDIfUAAcQ0QI5MgDqSAejIQmL0AAQQywBFNcihH4A4kFi9AAHEQueoXg/EClChQGBoPiBWP0AAMdHJkQVA6jySIxuBjjxAihkAAcRITPHDyMhISVTPB+IAJOEDQEc6Yism8QGAAGKhY1SDwANS0iUyAAggJjpFNQNSuvxAjpkAAcRCg1yNHtUwUAh05AVyzQYIIKqlURxRDQMbgI4MJFSV4wMAAcRE46gGAVAoJlJqB0AAsdAwqhmghXoiuekSGQAEEAuVczVV0yUyAAggJhpENQwsADpyAbUyKkAAsZAR1aBQdCCgFBSKhdQsUQACiOhcD3SkA9SRAgSUg9KjISn1ODG5HiCAWIgMSQdYs4wIkEiqI4kBAAFEVBqFNiCISW8TiGkEkwMAAoikAh8YsvOhbUlsAGtjg1pRDxBAJOV6oEMScYQsSY1gcgBAAJFcPOFwbCA1CnV8ACCAyCpH0RxLciOYHAAQQBT166GdNLq4AyCAGIfKiDNAAA2ZIR2AABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAAAMAAfb5aXw5jBkAAAAASUVORK5CYII=',\r\n'w8/wiggly.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAB4UlEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgTQkHEoQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxEKuQkZGRapYmJyc3ACl7IP4AxI1z5sy5QEgPQACx0DtkgI4sAFL1SEICQOxISB9AALEMQCz6Q+kFUHojMZoAAmggHAqKZgcQnjt3riJIABj1BDUBBBAjsa0nStIoWpqcCMT7oVKOQMceIMYNAAHEQoc0mYCWJgPQQpcoABBATHROkwegbFDIJgJD8wOxhgAEED3S6EFoKAYAHSZIriEAAUSTNIolTa6HFUOgNImunhg3AAQQy2BNk+gAIICYBmuaRAcAAcRCyzQJxIqUOA4ZAAQQC5WiGz1NfoCmSQOkUKUIAAQQC43T5ANqRRNAAFEjjSogpckFaGmSag4FCCBqRP0HpJAEpclEWhTGAAHEQmGaBIFGWqRJdAAQQCxUSJMOtEiT6AAggJgoTJMTaJUm0QFAALFQIU0W0qMRCxBATGRE+wVoFMPSJF0AQACxkOBIUJTPRxN+QC+HAgQQ0SEKTX90S5PoACCAGIfKQC5AAA2ZAQiAABoyDgUIoCHjUIAAGjIOBQigIeNQgAAaMg4FCKAh41CAABoyDgUIMACbRnicOR6zYgAAAABJRU5ErkJggg==',\r\n'w8/zoombox.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADAFBMVEW5ubmMjIzy8vL8/PyUlJTFxcWcnJz4+Pjp6en+/v6AgIDd3d3q6ur9/f2BgYH7+/v19fWEhIQAAAD///////8VFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+nAyXOAAAAFXRSTlP//////////////////////////wAr2X3qAAABaUlEQVR42mIQIRoABBAD8UoBAogEpQABRIJSgAAiQSlAAJGgFCCASFAKEEAkKAUIIHSlDGyCgmzY9QMEEKooiyAUsGBRChBAyEoZBAUZWUEMVkZBQUyTAQKIAUUlAzY2DAAEEJKAoCAHgsMhKIiuFCCAGJDciWIOA4Z7AQIIIS3IiCrDiG4sQAAhuQ7oIyE4APoN3bUAAQTnsoEMERKGAiGQNWyoSgECiAHhKQylaC4ACCAcSoWxKAUIIBwO4MPiAIAAwuotYS4uLkxvAQQQjsDiAgUWD6pSgAAiIQoAAoiEiAUIINzJRZCbG1UpQADhSoQioFSLGtUAAYQzaXNjqAUIIJwZBqwURS1AAOHOhozoagECCE+ORVcLEED4Mjcjao4ECCC85QBELYwHEED4iwyQWlYYByCACJQuLAiVIgABREJBBBBAJCgFCCASlAIEEAlKAQKIBKUAAUSCUoAAIkEpQACRoBQgwAC7qoMIKTGpjAAAAABJRU5ErkJggg==',\r\n'w8/zoomin.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMXSURBVHjaYvz//z/DUAAAAcTEMEQAQAANGYcCBNCQcShAAA0ZhwIE0JBxKEAADRmHAgTQkHEoQACxkKvx9evX/8+fP8/w+PFjhhcvXoDFJCQkGGRlZRkMDAwYxMTEGKnpUIAAYiS1wP/8+XPDokWL6j98+IBXnYCAAENcXFwjLy9vAzUcChBAJDl0165d/0+fPg1mc3BwMFhZWTHo6OjAHQPyxOXLl+uPHz/O8OPHD7A6U1NTBjc3N4pDFyCAiHYosiOhlq8HMoNwKF8HVB8IU29iYsLg7u5OkWMBAoiJ2OiGWZqamgoLoSA8WoJAakBqQeDMmTNgMyhxKEAAEeVQUJqEhSS2TNLa2vofhNHFQWpBoYlsBrkAIICYiMndoIwDSpPQ6CYJAKN8PUgvyAyQWeQ6FCCACDoUVASBgKWlJQOB6MaZDECZDtkscgBAABF0KKicBAFdXd1Gci0BlQzIZpEDAAKIYIEPK8yRy0Ns6RGbeHV1NSOS3nqYWeQAgAAaMlUoQAARDFFQtQgKCVDxAgtVWEihhyS6OHLxBjOLXAAQQARDFFR3gwCoxiHXEphemFnkAIAAIuhQQ0NDMA2qFkE1Dhl2rIPqhZtFDgAIIIIOFRUVZQQ1MEB1N6haJNUCkB6QXpAZILPIdShAABFV14PS2KRJk+phVSixTThQAT9r1iwwOy8vj6KWFEAAEZXrQRaAqk8QmD17NriBQiAZgBolcEdCHV1/7949YLj8J8uxAAFEUTMPVFuBKgJ8zTx0ANJXUFCgz8zMfIkUhwIEEM0bzqCQXL58OcWOBQggRnKHdF69egXuijx58gRvVwQU3egOJcexAAHESOuxJ1Ca7Ovrq8eWFEhxLEAAMdJjkOzv3796EyZMuEiJYwECiJFeo3n4HAtKz9nZ2XiLPIAAolujBBRioJADhSA6IJQxQQAggOjaesLlWEdHR4J6AQKIcSAGckHJYMaMGRdBIQlyJLAHQLCmAwggxqEy4gwQQEOm4QwQQEPGoQABNGQcChBAQ8ahAAE0ZBwKEEBDxqEAATRkHAoQYABfVmpFagI9FgAAAABJRU5ErkJggg==',\r\n'w8/zoomout.png':'iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADOElEQVR42mL8//8/w1AAAAHExDBEAEAADRmHAgQQXRz65s0bXkrNAAggujhURETkM4z97ds3Y3LMAAggxoHKTEAHK3BxcT0gVj1AAA1YGoU58ubNmxLEqAcIIMbBUDwBQ5cV6PDf+NQABBDZDn39+vX/8+fPMzx+/JjhxYsXYDEJCQkGWVlZBgMDAwYxMTFGEh3LDHTsX1zyAAFEskM/f/78f9GiRQwfPnzAq05AQIAhLi6OgZeXl6CDv3z5Ys7Dw3MS6FheoGM/Y1MDEEAkOXTXrl3/T58+DWZzcHAwWFpaMujq6jKwsbGBxX79+sVw+fJlhuPHjzP8+PEDLGZqasrg5ubGSGnyAAggoh2K7Eio5WD9OJT/B6pnQFNPkWMBAoiJ2OiGWZqamgqzFJ/FjCA1ILUgANILMoMShwIEEFEOBaVJWMiQkklAakF6kM0gFwAEEBMxuRuUcUBpEhrdJAGQHpBekBkgs8h1KEAAEXQoqAgCAVDGIRDdOJMBVC/cLHIAQAARdCionAQBUO4mF8D0wswiBwAEEAshBbDCHFYEgUBraytRUVhdXc2IrBdmFjkAIICGTHsUIIAIhiioWgSFBKgwZ2dnRwkpYgFIL8wscgFAABEMUVDdDQKgGodcANMLM4scABBABB0KamCAAKhaBNU4ZNjxH6qXwdDQkGyHAgQQQYeCCm1QAwNUd4OqRVIBSA9IL8gMUVFRsqtRgAAiKjOBWkGwqvDVq1dEhypILazqhZlBLgAIIKIcCmqqwarC2bNngxsoBJIBqFHyH6QWqYZjuHfv3v//ZDaAAQKI5s08dADSV1BQwMDMzExSMgAIIJo3nEEhuXz5coodCxBAZHdFQOnvwoULBLsioOhGdyg5jgUIIJp37kBpsq+vD2tSIMWxAAFE8yqUEQhAjgE5Ch2AHD9hwgSGv3//EgwtgACiS10PCjF8jp0xYwZBMwACiG6NEnyOJZQxQQAggOjaesLlWEdHR4J6AQJoQEZKQGkSFN2gkAQ50srKimBmAgggxqEy4gwQQEOm4QwQQAPu0G/fvhEVpQABNGSiHiCAhkzUAwTQkHEoQAANGYcCBNCQcShAgAEA6phqKE8YIKYAAAAASUVORK5CYII='\r\n};\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nif (typeof (__JSDraw2_TouchMol) == 'undefined') {\r\n dojo.require('dijit.layout.AccordionContainer');\r\n dojo.require('dijit.layout.ContentPane');\r\n}\r\n\r\nscil.Accordion = scil.extend(scil._base, {\r\n constructor: function(parent, options) {\r\n this.T = 'FORM.ACCORDION';\r\n scil.Accordion.addStylesheet();\r\n\r\n if (typeof (parent) == 'string')\r\n parent = scil.byId(parent);\r\n this.options = options == null ? {} : options;\r\n\r\n var style = '';\r\n if (this.options.width > 0)\r\n style += 'width:' + this.options.width + 'px;';\r\n if (this.options.height > 0)\r\n style += 'height:' + this.options.height + 'px;';\r\n\r\n this.container = new dijit.layout.AccordionContainer({style: style}, parent);\r\n for (var i = 0; i < this.options.items.length; ++i) {\r\n var item = this.options.items[i];\r\n this.container.addChild(new dijit.layout.ContentPane({\r\n title: item.title,\r\n content: item.html,\r\n }));\r\n }\r\n this.container.startup();\r\n\r\n if (this.options.onafterrender != null)\r\n this.options.onafterrender(this);\r\n },\r\n});\r\n\r\nscil.apply(scil.Accordion, {\r\n stylesheetAdded: false,\r\n\r\n addStylesheet: function() {\r\n if (this.stylesheetAdded)\r\n return;\r\n\r\n this.stylesheetAdded = true;\r\n scil.Utils.addCss(this.getCss());\r\n },\r\n\r\n getCss: function() {\r\n var code = '.dijitAccordionInnerContainer{background-color: #efefef;border: solid 1px #b5bcc7;}\\r\\n' +\r\n '.dijitAccordionContainer .dijitAccordionChildWrapper{background-color: #ffffff;border: 1px solid #759dc0;margin: 0 2px 2px;}\\r\\n' +\r\n '.dijitAccordionTitle .arrowTextUp, .dijitAccordionTitle .arrowTextDown {display: none;font-size: 0.65em;font-weight: normal !important;}\\r\\n' +\r\n '.dijitAccordionTitle{padding: 5px 7px 2px 7px;min-height: 17px;}\\r\\n';\r\n\r\n return code;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.App = {\r\n imgSmall: function (name, wrapasurl) {\r\n var s = \"small/\" + name;\r\n if (wrapasurl)\r\n s = \"url(\" + s + \")\";\r\n return s;\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n\r\n/**\r\n* AutoComplete class - Convert a INPUT field into a auto-complete field\r\n* @class scilligence.AutoComplete\r\n*
\r\n* Example:\r\n*    var input = scil.Utils.createElement(document.body, \"input\");\r\n*    var ac = new scil.AutoComplete(element, \"http://server/ajax.ashx?cmd=autocomplete\");\r\n* 
\r\n*/\r\nscil.AutoComplete = scil.extend(scilligence._base, {\r\n /**\r\n * @constructor AutoComplete\r\n * @param {string or DOM} element - the INPUT element to be converted\r\n * @param {string} url Ajax url to list items. The ajax service should return { succeeded: true, ret: { items: [] } }\r\n */\r\n constructor: function (element, url, options, form) {\r\n this.input = null;\r\n this.auto = null;\r\n this.url = url;\r\n this.sugid = 0;\r\n this.disabled = false;\r\n this.options = options == null ? {} : options;\r\n this.form = form;\r\n\r\n var me = this;\r\n this.input = typeof (element) == \"string\" ? document.getElementById(element) : element;\r\n if (this.input.tagName == \"INPUT\") {\r\n scil.connect(this.input, \"onkeyup\", function (e) { me.keydown(e); });\r\n\r\n this.auto = scil.Utils.createElement(document.body, \"div\", null, { display: \"none\", backgroundColor: \"white\", border: \"solid 1px gray\", position: \"absolute\" });\r\n scil.connect(document.body, \"onmousedown\", function (e) { var src = e.srcElement || e.target; if (src != me.q && !scil.Utils.isChildOf(src, me.auto)) me.clickout(); });\r\n\r\n if (this.options.listedonly) {\r\n scil.connect(this.input, \"onblur\", function (e) { me.validateList(); });\r\n }\r\n }\r\n\r\n scil.AutoComplete._all.push(this);\r\n },\r\n\r\n validateList: function () {\r\n var s = this.input.value;\r\n if (this.items == null || scil.Utils.indexOf(this.items, s) < 0)\r\n this.input.value = \"\";\r\n },\r\n\r\n isVisible: function () {\r\n return this.auto != null && this.auto.style.display == \"\";\r\n },\r\n\r\n hide: function () {\r\n if (this.auto != null)\r\n this.auto.style.display = \"none\";\r\n },\r\n\r\n keydown: function (e) {\r\n if (this.disabled || this.input == null || this.url == null || this.url == \"\")\r\n return;\r\n\r\n if (this.input.value.length < 1 || e.keyCode == 27 || (e.ctrlKey || e.metaKey)) {\r\n this.auto.style.display = \"none\";\r\n return;\r\n }\r\n\r\n if (!this.isVisible() && e.keyCode == 13)\r\n return;\r\n\r\n if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13) {\r\n this.highlight(e);\r\n return;\r\n }\r\n\r\n var sugid = ++this.sugid;\r\n if (scil.Utils.startswith(this.url, \"data:\")) {\r\n // local data\r\n var ret = this.filterlist(this.url.substr(5).split(','), this.input.value);\r\n this.list(ret, sugid);\r\n }\r\n else if (scil.Utils.startswith(this.url, \"javascript:\")) {\r\n var s = this.url.substr(11);\r\n var fn = scil.Utils.eval(s);\r\n var items = fun(this);\r\n\r\n var ret = this.filterlist(items, this.input.value);\r\n this.list(ret, sugid);\r\n }\r\n else {\r\n // url to ajax call\r\n var me = this;\r\n var args = { q: this.input.value };\r\n if (this.options.onsuggest != null)\r\n this.options.onsuggest(args, this.form, this);\r\n scil.Utils.jsonp(this.url, function (ret) { me.list(ret.items == null ? ret : ret.items, sugid); }, args);\r\n }\r\n },\r\n\r\n filterlist: function (list, q) {\r\n var ret = [];\r\n if (q != null && q != \"\" && list != null) {\r\n q = q.toLowerCase();\r\n for (var i = 0; i < list.length; ++i) {\r\n if (list[i].toLowerCase().indexOf(q) >= 0)\r\n ret.push(scil.Utils.trim(list[i]));\r\n }\r\n }\r\n return ret;\r\n },\r\n\r\n isParentHidden: function (q) {\r\n var obj = q;\r\n while (obj != null && obj.style != null) {\r\n if (obj.style.display == \"none\" || obj.style.visibility == \"hidden\")\r\n return true;\r\n obj = obj.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n list: function (items, sugid) {\r\n if (items == null || items.length == 0 || sugid != this.sugid || this.isParentHidden(this.input)) {\r\n this.items = null;\r\n this.auto.style.display = \"none\";\r\n return;\r\n }\r\n\r\n if (this.auto.style.display != \"\") {\r\n var p = scilligence.Utils.getOffset(this.input);\r\n var scroll = scilligence.Utils.scrollOffset();\r\n var zIndex = scil.Utils.getZindex(this.input) + 1;\r\n if (scil.Utils.isIE) {\r\n var s2 = JsUtils.getScrollOffset(this.e);\r\n scroll.offset(-s2.x, -s2.y);\r\n }\r\n var w = this.input.offsetWidth;\r\n if (this.options.minautowidth > 0 && this.options.minautowidth > w)\r\n w = this.options.minautowidth;\r\n if (w < 100)\r\n w = 100;\r\n var pos = scil.Utils.isFixedPosition(this.input) ? \"fixed\" : \"absolute\";\r\n dojo.style(this.auto, { zIndex: zIndex, position: pos, display: \"\", width: (w - 2) + \"px\", left: (p.x + scroll.x) + \"px\", top: (p.y + scroll.y + this.input.offsetHeight) + \"px\" });\r\n }\r\n\r\n this.items = items;\r\n scilligence.Utils.removeAll(this.auto);\r\n var me = this;\r\n for (var i = 0; i < items.length; ++i) {\r\n var div = scilligence.Utils.createElement(this.auto, 'div', items[i]);\r\n dojo.connect(div, \"onclick\", function (e) { me.click(e); });\r\n dojo.connect(div, \"onmouseover\", function (e) { me.mouseover(e); });\r\n dojo.connect(div, \"onmouseout\", function (e) { me.mouseout(e); });\r\n }\r\n },\r\n\r\n highlight: function (e) {\r\n if (this.auto == null || this.auto.style.display == \"none\")\r\n return;\r\n\r\n e.preventDefault();\r\n if (e.keyCode == 27) {\r\n this.hide();\r\n return;\r\n }\r\n\r\n var children = this.auto.childNodes;\r\n var sel = null;\r\n for (var i = 0; i < children.length; ++i) {\r\n var item = children[i];\r\n if (item.getAttribute(\"sel\") == \"1\") {\r\n sel = i;\r\n break;\r\n }\r\n }\r\n\r\n if (e.keyCode == 13) {\r\n if (sel != null)\r\n this.clickItem(children[sel]);\r\n return;\r\n }\r\n\r\n var newsel = null;\r\n if (e.keyCode == 38 || e.keyCode == 40) {\r\n if (sel == null) {\r\n newsel = 0;\r\n }\r\n else if (e.keyCode == 38) {\r\n newsel = sel - 1;\r\n if (newsel < 0)\r\n newsel = children.length - 1;\r\n }\r\n else {\r\n newsel = sel + 1;\r\n if (newsel >= children.length)\r\n newsel = 0;\r\n }\r\n\r\n e.preventDefault();\r\n }\r\n\r\n if (newsel != null && newsel != sel) {\r\n if (sel != null)\r\n this._hilitItem(children[sel], false);\r\n this._hilitItem(children[newsel], true);\r\n }\r\n },\r\n\r\n mouseover: function (e) {\r\n this._hilitItem(e.srcElement || e.target, true);\r\n },\r\n\r\n mouseout: function (e) {\r\n this._hilitItem(e.srcElement || e.target, false);\r\n },\r\n\r\n _hilitItem: function (item, f) {\r\n if (f) {\r\n item.style.backgroundColor = \"#ddf\";\r\n item.setAttribute(\"sel\", \"1\");\r\n }\r\n else {\r\n item.style.backgroundColor = \"white\";\r\n item.removeAttribute(\"sel\");\r\n }\r\n },\r\n\r\n getItemValue: function (src) {\r\n var s = unescape(src.innerHTML);\r\n if (s == \" \")\r\n s = \"\";\r\n return s;\r\n },\r\n\r\n click: function (e) {\r\n var src = e.srcElement || e.target;\r\n this.clickItem(src);\r\n },\r\n\r\n clickItem: function (src) {\r\n var s = this.getItemValue(src);\r\n if (this.options.onSetValue != null)\r\n this.options.onSetValue(this.input, s);\r\n else if (this.options.overwrite == \"unit\")\r\n this.input.value = this.changeUnit(this.input.value, s);\r\n else if (this.options.overwrite == false)\r\n this.input.value += s;\r\n else\r\n this.input.value = s;\r\n this.hide();\r\n if (this.options.overwrite)\r\n this.input.select();\r\n this.input.focus();\r\n\r\n if (this.options.onclickitem != null)\r\n this.options.onclickitem(s);\r\n\r\n scil.Utils.fireEvent(this.input, \"change\", false, true);\r\n },\r\n\r\n clickout: function (e) {\r\n if (this.auto.style.display == \"\")\r\n this.auto.style.display = \"none\";\r\n }\r\n});\r\n\r\nscil.apply(scil.AutoComplete, {\r\n _all: [],\r\n\r\n hideAll: function () {\r\n for (var i = 0; i < this._all.length; ++i)\r\n this._all[i].hide();\r\n }\r\n});","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * Chart class - Chart Control\r\n * @class scilligence.Chart\r\n * Supported chart types: pie, line, stackedline, area, stackedarea, column, clusteredcolumn, bar, clusteredbar, bubble\r\n *
\r\n * Example 1:\r\n *    <script type=\"text/javascript\">\r\n *        scil.ready(function () {\r\n *            new scil.Chart('div1', { type: \"bar\", width: 800, height: 300,\r\n *                ajax: { url: \"service.aspx?cmd=datasource&source=bug\" }\r\n *            });\r\n *        });\r\n *    </script>\r\n *\r\n * Example 2:\r\n *    <script type=\"text/javascript\">\r\n *        scil.ready(function () {\r\n *            new scil.Chart('div1', { type: \"bar\", width: 800, height: 300,\r\n *                series: [\r\n *                    { label: \"Series 1\", data: { A: 10000, B: 9200, C: 11811, D: 12000, E: 7662, F: 13887} },\r\n *                    { label: \"Series 2\", data: { A: 3000, B: 12000, D: 12783} }\r\n *                ]\r\n *            });\r\n *        });\r\n *    </script>\r\n *\r\n * Example 3:\r\n *    <script type=\"text/javascript\">\r\n *        scil.ready(function () {\r\n *            new scil.Chart('div1', { type: \"bar\", width: 800, height: 300,\r\n *                xlabels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\r\n *                series: [\r\n *                    { label: \"Series 1\", data: [10000, 9200, 11811, 12000, 7662, 13887] }\r\n *                ]\r\n *            });\r\n *        });\r\n *    </script>\r\n *\r\n * Example 4:\r\n *    <script type=\"text/javascript\">\r\n *        new scil.Chart('container', { type: \"bubble\", width: 800, height: 300, xmin: 0, ymin: 0, xmax: 8, ymax: 20, ytitle: \"Bubble\",\r\n *            series: [\r\n *                    { label: \"Series 1\", data: [\r\n *                    { x: 1, y: 12.45, size: 1, color: 'red' },\r\n *                     { x: 2, y: 15.45, size: 2, color: \"green\" },\r\n *                     { x: 3, y: 2, size: 1.5 },\r\n *                     { x: 4, y: 7, size: 3.5 },\r\n *                     { x: 5, y: 12, size: 1.5 },\r\n *                     { x: 6, y: 7, size: 4.5 }\r\n *                     ]\r\n *                    }\r\n *                ]\r\n *        });\r\n *    });\r\n *    </script>\r\n * 
\r\n */\r\n\r\nif (typeof (__JSDraw2_TouchMol) == 'undefined') {\r\n dojo.require('dojox.charting.Chart');\r\n dojo.require('dojox.charting.plot2d.Areas');\r\n dojo.require('dojox.charting.plot2d.StackedAreas');\r\n dojo.require('dojox.charting.plot2d.Bars');\r\n dojo.require('dojox.charting.plot2d.ClusteredBars');\r\n dojo.require('dojox.charting.plot2d.Columns');\r\n dojo.require('dojox.charting.plot2d.ClusteredColumns');\r\n dojo.require('dojox.charting.plot2d.StackedColumns');\r\n dojo.require('dojox.charting.plot2d.Lines');\r\n dojo.require('dojox.charting.plot2d.StackedLines');\r\n dojo.require('dojox.charting.plot2d.Markers');\r\n dojo.require('dojox.charting.plot2d.MarkersOnly');\r\n dojo.require('dojox.charting.plot2d.Pie');\r\n dojo.require('dojox.charting.plot2d.Scatter');\r\n dojo.require('dojox.charting.plot2d.Grid');\r\n dojo.require('dojox.charting.plot2d.Spider');\r\n dojo.require('dojox.charting.plot2d.Bubble');\r\n\r\n dojo.require('dojox.charting.axis2d.Default');\r\n dojo.require('dojox.charting.action2d.Highlight');\r\n dojo.require('dojox.charting.action2d.Tooltip');\r\n dojo.require('dojox.charting.action2d.MoveSlice');\r\n dojo.require('dojox.charting.action2d.Magnify');\r\n dojo.require('dojox.charting.widget.Legend');\r\n dojo.require('dojox.charting.themes.Claro');\r\n}\r\n\r\n// http://demos.dojotoolkit.org/dojox/charting/tests/test_pie_smart_label.html\r\nscil.Chart = scil.extend(scil._base, {\r\n /**\r\n * @constructor Chart\r\n * @param {string or DOM} element - the parent Element\r\n * @param {dict} options - { type { string }, width, height, title {string}, legend {bool}, labelstyle: { string: hidden, columns, null },\r\n * theme {string}, animate {bool}, shadow {bool}, xtitle {string}, ytitle {string}, linewith: {int},\r\n * series: [{label, data}] }\r\n */\r\n constructor: function(parent, options) {\r\n this.T = 'CHART';\r\n scil.Chart.addStylesheet();\r\n\r\n if (typeof (parent) == 'string')\r\n parent = scil.byId(parent);\r\n this.parent = parent;\r\n this.loadData(options);\r\n },\r\n\r\n loadData: function(options) {\r\n this.options = options == null ? {} : options;\r\n if (this.options.series != null)\r\n this.render();\r\n else\r\n this.loadDataFromUrl(this.options.ajax == null ? null : this.options.ajax.url);\r\n },\r\n\r\n loadDataFromUrl: function(url) {\r\n if (scil.Utils.isNullOrEmpty(url))\r\n return false;\r\n\r\n this.options.series = null;\r\n\r\n var me = this;\r\n scil.Utils.jsonp(url, function(ret) {\r\n if (ret == null || ret.length == null || ret.length == 0)\r\n return;\r\n\r\n if (typeof (ret[0]) != 'object') {\r\n me.options.series = [{data: ret}];\r\n } else {\r\n var keys = [];\r\n for (var k in ret[0])\r\n keys.push(k);\r\n\r\n var x = keys[0];\r\n var data = [];\r\n for (var i = 0; i < ret.length; ++i)\r\n data.push(ret[i][x]);\r\n\r\n me.options.series = [];\r\n if (keys.length == 1) {\r\n me.options.series.push({label: x, data: data});\r\n } else {\r\n me.options.xlabels = data;\r\n\r\n for (var k = 1; k < keys.length; ++k) {\r\n var data = [];\r\n var y = keys[k];\r\n for (var i = 0; i < ret.length; ++i)\r\n data.push(ret[i][y]);\r\n me.options.series.push({label: y, data: data});\r\n }\r\n }\r\n }\r\n\r\n me.render();\r\n });\r\n },\r\n\r\n downloadImage: function() {\r\n if (JSDrawServices.url == null || JSDrawServices.url == '') {\r\n scil.Utils.alert('JSDraw web service is not available');\r\n return;\r\n }\r\n\r\n var html = '
' + this.parent.innerHTML + '
';\r\n scil.Utils.post(JSDrawServices.url + '?cmd=html2image', {html: html, css: scil.Chart.getCss(), width: this.parent.offsetWidth});\r\n },\r\n\r\n render: function() {\r\n scil.Utils.removeAll(this.parent);\r\n\r\n var type = null;\r\n switch (this.options.type) {\r\n case 'column':\r\n type = dojox.charting.plot2d.Columns;\r\n break;\r\n case 'clusteredcolumn':\r\n type = dojox.charting.plot2d.ClusteredColumns;\r\n break;\r\n case 'stackedcolumn':\r\n type = dojox.charting.plot2d.StackedColumns;\r\n break;\r\n case 'bar':\r\n type = dojox.charting.plot2d.Bars;\r\n break;\r\n case 'clusteredbar':\r\n type = dojox.charting.plot2d.ClusteredBars;\r\n break;\r\n case 'line':\r\n type = dojox.charting.plot2d.Lines;\r\n break;\r\n case 'stackedline':\r\n type = dojox.charting.plot2d.StackedLines;\r\n break;\r\n case 'area':\r\n type = dojox.charting.plot2d.Areas;\r\n break;\r\n case 'stackedarea':\r\n type = dojox.charting.plot2d.StackedAreas;\r\n break;\r\n case 'scatter':\r\n type = dojox.charting.plot2d.Scatter;\r\n break;\r\n case 'grid':\r\n type = dojox.charting.plot2d.Grid;\r\n break;\r\n case 'spider':\r\n type = dojox.charting.plot2d.Spider;\r\n break;\r\n case 'bubble':\r\n type = dojox.charting.plot2d.Bubble;\r\n break;\r\n case 'pie':\r\n type = dojox.charting.plot2d.Pie;\r\n if (!(this.options.radius > 0))\r\n this.options.radius = 100;\r\n break;\r\n }\r\n\r\n if (!scil.Utils.isNullOrEmpty(this.options.title)) {\r\n scil.Utils.createElement(this.parent, 'h3', scil.Lang.res(this.options.title), {margin: 0, textAlign: 'center', fontSize: this.options.titlesize > 0 ? this.options.titlesize + 'px' : null});\r\n }\r\n\r\n var div = scil.Utils.createElement(this.parent, 'div');\r\n\r\n if (this.options.width > 0)\r\n this.parent.style.width = this.options.width + 'px';\r\n if (this.options.height > 0)\r\n div.style.height = this.options.height + 'px';\r\n\r\n var chart = new dojox.charting.Chart(div);\r\n\r\n if (this.options.theme != null)\r\n chart.setTheme(dojox.charting.themes[this.options.theme]);\r\n else\r\n chart.setTheme(dojox.charting.themes.Claro);\r\n\r\n if (this.options.fontcolor == null)\r\n this.options.fontcolor = 'blue';\r\n\r\n var args = {\r\n type: type,\r\n markers: true,\r\n gap: this.options.gap > 0 ? this.options.gap : 5,\r\n radius: this.options.radius > 0 ? this.options.radius : null,\r\n htmlLabels: true,\r\n fontColor: this.options.fontcolor,\r\n labelWiring: this.options.fontcolor,\r\n animate: this.options.animate,\r\n };\r\n if (this.options.linewidth > 0)\r\n args.stroke = {width: this.options.linewidth};\r\n if (this.options.labelstyle != null)\r\n args.labelStyle = this.options.labelstyle;\r\n if (this.options.shadow != false)\r\n args.shadow = {dx: 2, dy: 2, width: 2, color: [0, 0, 0, 0.3]};\r\n chart.addPlot('default', args);\r\n if (this.options.plots != null) {\r\n for (var k in this.options.plots)\r\n chart.addPlot(k, this.options.plots[k]);\r\n }\r\n\r\n var xargs = {};\r\n var yargs = {vertical: true, fixLower: 'major', fixUpper: 'major'};\r\n\r\n if (this.options.xmin != null)\r\n xargs.min = this.options.xmin;\r\n if (this.options.xmax != null)\r\n xargs.max = this.options.xmax;\r\n if (this.options.xtitle != null) {\r\n xargs.title = this.options.xtitle;\r\n xargs.titleOrientation = 'away';\r\n xargs.titleGap = 1;\r\n }\r\n\r\n if (this.options.ymin != null)\r\n yargs.min = this.options.ymin;\r\n if (this.options.ymax != null)\r\n yargs.max = this.options.ymax;\r\n if (this.options.ytitle != null) {\r\n yargs.title = scil.Lang.res(this.options.ytitle);\r\n yargs.titleGap = 5;\r\n }\r\n\r\n var series = this.options.series;\r\n var xlabels = this.options.xlabels;\r\n if (series[0].data != null && series[0].data.length == null) {\r\n xlabels = [];\r\n var values = [];\r\n var data = series[0].data;\r\n for (var k in data) {\r\n xlabels.push(k);\r\n values.push(data[k]);\r\n }\r\n\r\n var series2 = [];\r\n for (var i = 0; i < series.length; ++i) {\r\n if (i > 0) {\r\n values = [];\r\n data = series[i].data;\r\n for (var k = 0; k < xlabels.length; ++k) {\r\n var v = data[xlabels[k]];\r\n values.push(v == null ? 0 : v);\r\n }\r\n }\r\n series2.push({label: scil.Lang.res(series[i].label), data: values, args: series[i].args, additup: series[i].additup});\r\n }\r\n series = series2;\r\n }\r\n\r\n if (this.options.type == 'pie') {\r\n chart.addSeries(series[0].label, series[0].xydata != null ? series[0].xydata : this.array2data(series[0].data, null, xlabels, this.options.showpercentage));\r\n } else {\r\n if (xlabels != null)\r\n xargs.labels = this.array2data(xlabels, true);\r\n\r\n chart.addAxis('x', xargs);\r\n chart.addAxis('y', yargs);\r\n\r\n if (this.options.type == 'bubble') {\r\n chart.addSeries(series[0].label, series[0].xydata || series[0].data);\r\n } else {\r\n for (var i = 0; i < series.length; ++i)\r\n chart.addSeries(series[i].label == null ? 'Series-' + (i + 1) : series[i].label, series[i].xydata != null ? series[i].xydata : this.array2data(series[i].data, null, xlabels, null, series[i].additup), series[i].args);\r\n }\r\n }\r\n\r\n //new dojox.charting.widget.Legend(chart, \"default\");\r\n if (this.options.tooltips != false)\r\n new dojox.charting.action2d.Tooltip(chart, 'default');\r\n switch (this.options.type) {\r\n case 'pie':\r\n case 'scatter':\r\n case 'grid':\r\n new dojox.charting.action2d.MoveSlice(chart, 'default');\r\n break;\r\n case 'bar':\r\n case 'clusteredbar':\r\n new dojox.charting.action2d.Highlight(chart, 'default');\r\n break;\r\n case 'column':\r\n case 'clusteredcolumn':\r\n new dojox.charting.action2d.Highlight(chart, 'default');\r\n break;\r\n case 'line':\r\n case 'stackedline':\r\n new dojox.charting.action2d.Magnify(chart, 'default');\r\n break;\r\n case 'area':\r\n case 'stackedarea':\r\n new dojox.charting.action2d.Magnify(chart, 'default');\r\n break;\r\n }\r\n\r\n chart.render();\r\n\r\n if (this.options.legend) {\r\n var legend = scil.Utils.createElement(this.parent, 'div');\r\n new dojox.charting.widget.Legend({chart: chart}, legend);\r\n }\r\n\r\n var me = this;\r\n chart.connectToPlot('default', function(evt) {\r\n if (evt.type == 'onclick') {\r\n if (me.options.onclick != null)\r\n me.options.onclick(evt);\r\n } else if (evt.type == 'onmouseover') {\r\n if (me.options.onmouseover != null)\r\n me.options.onmouseover(evt);\r\n } else if (evt.type == 'onmouseout') {\r\n if (me.options.onmouseout != null)\r\n me.options.onmouseout(evt);\r\n }\r\n });\r\n },\r\n\r\n array2data: function(list, asAxis, xlabels, showpercentage, additup) {\r\n var sum = 0;\r\n if (showpercentage) {\r\n for (var i = 0; i < list.length; ++i) {\r\n if (!isNaN(list[i]))\r\n sum += list[i];\r\n }\r\n }\r\n\r\n var v = null;\r\n var ret = [];\r\n for (var i = 0; i < list.length; ++i) {\r\n if (asAxis) {\r\n ret.push({value: i + 1, text: list[i]});\r\n } else {\r\n var v2 = null;\r\n if (additup) {\r\n if (v == null)\r\n v = list[i];\r\n else if (list[i] != null && !isNaN(list[i]))\r\n v += list[i];\r\n v2 = list[i] == null ? null : v;\r\n } else {\r\n v2 = list[i];\r\n }\r\n\r\n var s = v2;\r\n var t = s;\r\n if (xlabels != null && xlabels[i] != null) {\r\n if (showpercentage && !isNaN(s) && sum > 0)\r\n s = (Math.round(s / sum * 1000) / 10) + '%';\r\n s = xlabels[i] + ' (' + s + ')';\r\n t = xlabels[i];\r\n }\r\n\r\n ret.push({x: i + 1, y: v2, text: t, tooltip: s});\r\n }\r\n }\r\n\r\n return ret;\r\n },\r\n});\r\n\r\n\r\nscil.apply(scil.Chart, {\r\n stylesheetAdded: false,\r\n\r\n addStylesheet: function() {\r\n if (this.stylesheetAdded)\r\n return;\r\n\r\n this.stylesheetAdded = true;\r\n scil.Utils.addCss(this.getCss());\r\n },\r\n\r\n getCss: function() {\r\n var code = '.dijitTooltip { position: absolute; z-index: 2000; display: block; left: 0; overflow: visible; }\\r\\n';\r\n code += '.dijitTooltipContainer { border: solid #aaf 1px; background: #fff; color: blue; padding: 2px; border-radius: 3px; }\\r\\n';\r\n code += '.dijitTooltipConnector { position: absolute; }\\r\\n';\r\n code += '.dojoxLegendIcon { float: left; }\\r\\n';\r\n\r\n return code;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.Clipboard = {\r\n copy: function (text) {\r\n if (scil.Utils.isNullOrEmpty(text))\r\n return false;\r\n\r\n var e = scil.Utils.createElement(document.body, \"textarea\", null, { position: 'fixed', top: 0, left: 0, width: '2px', height: '2px', padding: 0, border: 'none', outline: 'none', boxShadow: 'none', background: 'transparent' });\r\n e.value = text;\r\n e.select();\r\n\r\n var ret = false;\r\n try {\r\n ret = document.execCommand('copy');\r\n } catch (err) {\r\n }\r\n\r\n document.body.removeChild(e);\r\n return ret;\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n/**\r\n * ContextMenu class\r\n *
\r\n * Example:\r\n *    var callback = function (key, obj) {\r\n *        alert( key + \" clicked\");\r\n *    };\r\n *\r\n *    var items = [{ caption: \"Color\", key: \"x\", callback: function (key) { alert(\"Color: \" + key);  }, children: [\"Red\", \"Blue\"] },\r\n *            \"Small\", \"Big\"\r\n *        ];\r\n *\r\n *    var menu = new scil.ContextMenu(items, callback, null);\r\n *    function test() {\r\n *        menu.show(100, 100);\r\n *    }\r\n * 
\r\n * @class scilligence.ContextMenu\r\n */\r\nscil.ContextMenu = scil.extend(scil._base, {\r\n /**\r\n * @constructor ContextMenu\r\n * @param {array} items - an array of menu item deifinitions\r\n * @param {function} callback - callback function\r\n * @param {Menu} parentMenu - parent menu item\r\n */\r\n constructor: function(items, callback, parentMenu, doc, lang) {\r\n this.T = 'CONTEXT_MENU';\r\n this.document = doc == null ? document : doc;\r\n this.tbody = null;\r\n this.callback = callback;\r\n this.submenus = {};\r\n this.items = items;\r\n this.cur = null;\r\n this.parentMenu = parentMenu;\r\n this.obj = null;\r\n this.lang = lang != null ? lang : scil.Lang;\r\n },\r\n\r\n isFrom: function(e) {\r\n if (this.tbody == null)\r\n return false;\r\n if (scil.Utils.isChildOf(e, this.tbody.parentNode))\r\n return true;\r\n\r\n for (var k in this.submenus) {\r\n if (this.submenus[k].isFrom(e))\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Show this context menu\r\n * @function show\r\n * @param {number} x - x coordinate\r\n * @param {number} y - y coordinate\r\n * @param {object} obj - tagged object\r\n */\r\n show: function(x, y, obj, items, left) {\r\n this.hide();\r\n this._create(items);\r\n this.obj = obj;\r\n\r\n var maxZindex = scil.Utils.getMaxZindex();\r\n var parent = this.tbody.parentNode;\r\n parent.style.display = '';\r\n parent.style.zIndex = maxZindex > 0 ? maxZindex + 1 : 100;\r\n scil.Utils.moveToScreen(x, y, parent, left);\r\n },\r\n\r\n /**\r\n * Hide context menu\r\n * @function hide\r\n */\r\n hide: function(hideParent) {\r\n if (this.tbody == null || this.tbody.parentNode.style.display == 'none')\r\n return false;\r\n this.tbody.parentNode.style.display = 'none';\r\n for (var k in this.submenus)\r\n this.submenus[k].hide();\r\n this.setCur(null);\r\n if (hideParent && this.parentMenu != null)\r\n this.parentMenu.hide(hideParent);\r\n return true;\r\n },\r\n\r\n /**\r\n * Check if the menu is visible\r\n * @function isVisible\r\n * @returns true or false\r\n */\r\n isVisible: function() {\r\n return this.tbody != null && this.tbody.parentNode.style.display != 'none';\r\n },\r\n\r\n _create: function(items) {\r\n if (items != null)\r\n this.items = items;\r\n if (this.tbody == null) {\r\n var me = this;\r\n this.tbody = scil.Utils.createTable(this.document.body, 0, 0, {position: 'absolute', display: 'none', backgroundColor: '#eee', color: '#000', border: 'solid 1px #ddd'});\r\n this.tbody.setAttribute('jspopupmenu', '1');\r\n dojo.connect(this.tbody.parentNode, 'onmousedown', function(e) {\r\n if (e.button != 2) me.click(e);\r\n });\r\n dojo.connect(this.tbody.parentNode, 'onmouseover', function(e) {\r\n me.hilit(e);\r\n });\r\n dojo.connect(this.document.body, 'onmousedown', function(e) {\r\n me.clickOut(e);\r\n });\r\n this._createItems();\r\n } else if (items != null) {\r\n this._createItems();\r\n }\r\n },\r\n\r\n _createItems: function() {\r\n scil.Utils.removeAll(this.tbody);\r\n for (var i = 0; i < this.items.length; ++i) {\r\n var item = this.items[i];\r\n if (item == '-') {\r\n if (i == 0 || this.items[i - 1] == '-' || i == this.items.length - 1)\r\n continue;\r\n var tr = scil.Utils.createElement(this.tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td', null, {textAlign: 'center', width: '20px', backgroundColor: '#f5f5f5'});\r\n scil.Utils.createElement(tr, 'td', '
', {padding: '0 2px 0 2px'}).colSpan = 3;\r\n } else {\r\n if (typeof item == 'string')\r\n item = {caption: item};\r\n if (item.key == null)\r\n item.key = item.caption;\r\n var sub = item.children != null && item.children.length > 0;\r\n var bg = item.bg == null ? '#eee' : item.bg;\r\n var tr = scil.Utils.createElement(this.tbody, 'tr', null, {backgroundColor: bg}, item.disabled ? null : {menukey: item.key});\r\n scil.Utils.createElement(tr, 'td', item.checked ? '✔' : null, {textAlign: 'center', width: '20px', backgroundColor: '#f5f5f5'});\r\n var style = {padding: '1px 3px 1px 3px', color: item.disabled ? 'gray' : ''};\r\n var s = item.nottranslate ? item.caption : this.lang.res(item.caption);\r\n if (item.icon != null)\r\n s = '' + s;\r\n scil.Utils.createElement(tr, 'td', s, style);\r\n style.fontSize = '75%';\r\n style.paddingLeft = '10px';\r\n scil.Utils.createElement(tr, 'td', item.shortcut == null ? '' : item.shortcut, style);\r\n scil.Utils.createElement(tr, 'td', sub ? '›' : null, {textAlign: 'right', width: '30px', paddingRight: '5px'});\r\n\r\n if (sub)\r\n this.submenus[item.key] = new scil.ContextMenu(item.children, item.callback == null ? this.callback : item.callback, this, this.document);\r\n else\r\n delete this.submenus[item.key];\r\n }\r\n }\r\n },\r\n\r\n hilit: function(e) {\r\n var tr = scil.Utils.getParent(e.srcElement || e.target, 'TR');\r\n if (tr != null && tr.getAttribute('menukey') != null)\r\n this.setCur(tr);\r\n },\r\n\r\n setCur: function(tr) {\r\n if (this.cur != null) {\r\n this.cur.childNodes[0].style.backgroundColor = '#f5f5f5';\r\n this.cur.childNodes[1].style.backgroundColor = '';\r\n this.cur.childNodes[2].style.backgroundColor = '';\r\n this.cur.childNodes[3].style.backgroundColor = '';\r\n var sub = this.submenus[this.cur.getAttribute('menukey')];\r\n if (sub != null)\r\n sub.hide();\r\n }\r\n\r\n this.cur = tr;\r\n if (tr != null) {\r\n tr.childNodes[0].style.backgroundColor = '#aaf';\r\n tr.childNodes[1].style.backgroundColor = '#aaf';\r\n tr.childNodes[2].style.backgroundColor = '#aaf';\r\n tr.childNodes[3].style.backgroundColor = '#aaf';\r\n var sub = tr == null ? null : this.submenus[tr.getAttribute('menukey')];\r\n if (sub != null) {\r\n var p = scil.Utils.getOffset(tr.childNodes[3], false);\r\n var p2 = scil.Utils.getOffset(tr.childNodes[0], false);\r\n sub.show(p.x + tr.childNodes[3].offsetWidth + 1, p.y, null, null, p2.x);\r\n }\r\n }\r\n },\r\n\r\n getCallbackObj: function() {\r\n return this.parentMenu == null ? this.obj : this.parentMenu.getCallbackObj();\r\n },\r\n\r\n click: function(e) {\r\n var tr = scil.Utils.getParent(e.srcElement || e.target, 'TR');\r\n var key = tr == null ? null : tr.getAttribute('menukey');\r\n if (this.submenus[key] != null)\r\n return;\r\n if (key != null && this.callback != null)\r\n this.callback(key, this.getCallbackObj(), tr.childNodes[0].innerHTML != '');\r\n this.hide(true);\r\n e.preventDefault();\r\n },\r\n\r\n clickOut: function(e) {\r\n var tbody = scil.Utils.getParent(e.srcElement || e.target, 'TBODY');\r\n if (tbody != null && tbody.getAttribute('jspopupmenu') == '1')\r\n return;\r\n this.hide();\r\n },\r\n});\r\n\r\nscil.apply(scil.ContextMenu, {\r\n isFromContextMenu: function(src) {\r\n var tbody = scil.Utils.getParent(src, 'TBODY');\r\n return tbody != null && tbody.getAttribute('jspopupmenu') == '1';\r\n },\r\n});\r\n\r\n\r\nJSDraw2.ContextMenu = scil.ContextMenu;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n/**\r\n * Dialog class\r\n * @class scilligence.Dialog\r\n *
\r\n * Example:\r\n *    // Create a popup dialog\r\n *    var div = scil.Utils.createElement(null, \"div\");\r\n *    var txt = scil.Utils.createElement(div, \"textarea\", null, { width: \"580px\", height: \"400px\" });\r\n *    var btn = scil.Utils.createElement(\r\n *            scil.Utils.createElement(div, \"div\", null, { textAlign: \"center\" }),\r\n *                \"button\", \"OK\", { width: \"200px\" });\r\n *\r\n *    var dlg = new scilligence.Dialog(\"My Dialog\", div);\r\n *    dojo.connect(btn, \"onclick\", function (e) { dlg.hide(); });\r\n *    dlg.show();\r\n * 
\r\n */\r\nscil.Dialog = scil.extend(scil._base, {\r\n /**\r\n * @constructor Dialog\r\n * @param {string} title - defaultdialog title\r\n * @param {DOM} body - dialog body\r\n * @param {dictionary} options { parentWindow, noclose, notitle }\r\n */\r\n constructor: function(title, body, options) {\r\n this.T = 'DIALOG';\r\n this.options = options == null ? {} : options;\r\n this.lang = this.options.lang == null ? scil.Lang : this.options.lang;\r\n this.id = this.options.id;\r\n if (this.id == null || this.id == '') {\r\n if (scil.Dialog._idincrease == null)\r\n scil.Dialog._idincrease = 0;\r\n this.id = '__jsdialog' + (++scil.Dialog._idincrease);\r\n }\r\n if (scil.Dialog._allitems == null)\r\n scil.Dialog._allitems = {};\r\n scil.Dialog._allitems[this.id] = this;\r\n\r\n this.parentWindow = this.options.parentWindow == null ? window : this.options.parentWindow;\r\n this.body = body;\r\n this.title = title;\r\n this.WRAPPER = 'content';\r\n this.dialog = null;\r\n this.dialogmask = null;\r\n this.movingSt = null;\r\n },\r\n\r\n /**\r\n * Check if the dialog is visible\r\n * @function isVisible\r\n * @returns true or false\r\n */\r\n isVisible: function() {\r\n return this.dialog != null && this.dialog.style.display != 'none';\r\n },\r\n\r\n isFrom: function(e) {\r\n if (!this.isVisible())\r\n return false;\r\n return scil.Utils.isChildOf(e, this.dialog);\r\n },\r\n\r\n show2: function(options) {\r\n if (options == null)\r\n options = {};\r\n this.show(options.title, options.zindex, options.modal, options.immediately, options.owner);\r\n },\r\n\r\n /**\r\n * Show dialog\r\n * @function show\r\n * @param {string} title - dialog title\r\n * @param {number} zindex - zIndex of dialog DOM\r\n * @param {bool} modal - Modal dialog\r\n * @returns true or false\r\n */\r\n show: function(title, zindex, modal, immediately, owner) {\r\n this.owner = owner;\r\n if (this.isVisible()) {\r\n if (title != null && this.dialog.titleElement != null)\r\n this.dialog.titleElement.innerHTML = this.lang.res(title);\r\n return;\r\n }\r\n\r\n if (modal == null)\r\n modal = true;\r\n\r\n if (!(scil.Dialog.kTimer > 0))\r\n immediately = true;\r\n\r\n this._create();\r\n this.movingSt = null;\r\n if (title != null && this.dialog.titleElement != null)\r\n this.setTitle(title);\r\n var maxZindex = scil.Utils.getMaxZindex();\r\n if (JSDraw2.defaultoptions.minDlgZindex > 0 && maxZindex < JSDraw2.defaultoptions.minDlgZindex)\r\n maxZindex = JSDraw2.defaultoptions.minDlgZindex;\r\n var z = zindex == null ? maxZindex + 10 : zindex;\r\n this.dialog.alpha = 0;\r\n this.dialog.style.display = '';\r\n this.dialogmask.style.display = '';\r\n this.dialogmask.style.minHeight = '100%';\r\n this.dialogmask.style.height = '100%';\r\n this.dialogmask.style.width = '100%';\r\n if (z > 0) {\r\n this.dialogmask.style.zIndex = z + 1;\r\n this.dialog.style.zIndex = z + 2;\r\n }\r\n if (!modal) {\r\n this.dialog.style.zIndex = z + 1;\r\n this.dialogmask.style.display = 'none';\r\n }\r\n\r\n this.dialog.style.borderColor = modal ? '#fff' : JSDraw2.Skin.dialog.bkcolor;\r\n\r\n if (scilligence.Utils.isTouch || immediately) {\r\n dojo.style(this.dialog, {display: '', opacity: 1.00, filter: 'alpha(opacity=100)'});\r\n } else {\r\n dojo.style(this.dialog, {display: '', opacity: .00, filter: 'alpha(opacity=0)'});\r\n this.dialog.timer = setInterval('scil.Dialog.get(\\'' + this.id + '\\').fade(1)', scil.Dialog.kTimer);\r\n }\r\n this.moveCenter();\r\n scil.Dialog.stack.push(this);\r\n\r\n if (this._scilform && this.form != null && this.form.fields != null)\r\n this.form.focus();\r\n },\r\n\r\n setTitle: function(title) {\r\n this.dialog.titleElement.innerHTML = this.lang.res(title);\r\n },\r\n\r\n moveCenter: function() {\r\n var d = dojo.window.getBox();\r\n var width = d.w;\r\n var height = d.h;\r\n var left = d.l;\r\n var top = d.t;\r\n var dialogwidth = this.dialog.offsetWidth;\r\n var dialogheight = this.dialog.offsetHeight;\r\n var topposition = Math.round(top + (height - dialogheight) / 2);\r\n var leftposition = Math.round(left + (width - dialogwidth) / 2);\r\n\r\n dojo.style(this.dialog, {top: Math.max(top, topposition) + 'px', left: Math.max(left, leftposition) + 'px'});\r\n this.scroll();\r\n this.updateWidth();\r\n },\r\n\r\n _create: function() {\r\n if (this.dialog != null)\r\n return;\r\n\r\n var me = this;\r\n var topBody = this.parentWindow.document.body;\r\n var zi = 200;\r\n var tbody = scilligence.Utils.createTable(topBody, 0, 0, {position: 'absolute', borderRadius: '3px', width: w, height: h, zIndex: zi, backgroundColor: JSDraw2.Skin.dialog.bkcolor, border: JSDraw2.Skin.dialog.border});\r\n this.dialog = tbody.parentNode;\r\n this.dialog.setAttribute('__scilligence_dlg', this.id);\r\n\r\n var tr, td;\r\n var bordertop = '0';\r\n if (this.options.notitle) {\r\n bordertop = '5px';\r\n } else {\r\n tr = scilligence.Utils.createElement(tbody, 'tr', null, {height: '30px'});\r\n td = scilligence.Utils.createElement(tr, 'td', this.lang.res(this.title), {paddingLeft: '5px', fontWeight: 'bold', color: scil.App == null || scil.App.config == null ? '' : scil.App.config.text});\r\n this.dialog.titleElement = td;\r\n td = scilligence.Utils.createElement(tr, 'td', null, {textAlign: 'right', verticalAlign: 'top'});\r\n if (!this.options.noclose) {\r\n var img = scilligence.Utils.createElement(td, 'img', null, {cursor: 'pointer', marginRight: '5px'}, {title: JSDraw2.Language.res('Close'), src: scil.Utils.imgSrc('img/dlgclose.jpg')});\r\n dojo.connect(scilligence.Utils.isIpad ? td : img, 'onclick', function(e) {\r\n me.hide();\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n if (this.options.movable != false) {\r\n if (scilligence.Utils.isTouch) {\r\n dojo.connect(tr, 'ontouchstart', function(e) {\r\n if (e.touches.length == 1) me.startMove(e.touches[0]);\r\n });\r\n dojo.connect(topBody, 'ontouchmove', function(e) {\r\n if (e.touches.length == 1 && me.move(e.touches[0])) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n dojo.connect(topBody, 'ontouchend', function() {\r\n me.endMove();\r\n });\r\n } else {\r\n tr.style.cursor = 'move';\r\n dojo.connect(tr, 'onmousedown', function(e) {\r\n me.startMove(e);\r\n });\r\n dojo.connect(topBody, 'onmousemove', function(e) {\r\n me.move(e);\r\n });\r\n dojo.connect(topBody, 'onmouseup', function() {\r\n me.endMove();\r\n });\r\n }\r\n }\r\n }\r\n\r\n tr = scil.Utils.createElement(tbody, 'tr');\r\n td = scil.Utils.createElement(tr, 'td', null, {padding: bordertop + ' 5px 5px 5px'});\r\n td.colSpan = 2;\r\n\r\n var w = this.options.width;\r\n var h = this.options.height;\r\n var style = {background: '#fff', padding: '5px'};\r\n if (w > 0 || h > 0)\r\n scil.apply(style, {width: w > 0 ? w : null, height: h > 0 ? h : null, overflow: 'scroll'});\r\n\r\n if (this.options.bodystyle != null)\r\n scil.apply(style, this.options.bodystyle);\r\n\r\n var div = scil.Utils.createElement(td, 'div', null, style);\r\n if (typeof this.body == 'string')\r\n div.innerHTML = '
' + this.body + '
';\r\n else\r\n div.appendChild(this.body);\r\n\r\n var opacity = this.options.opacity > 0 ? this.options.opacity : 75;\r\n this.dialogmask = scilligence.Utils.createElement(topBody, 'div', null, {position: 'absolute', top: '0', left: '0', minHeight: '100%', height: '100%', width: '100%', background: '#999', opacity: opacity / 100.0, filter: 'alpha(opacity=' + opacity + ')', zIndex: zi - 1});\r\n dojo.connect(window, 'onresize', function() {\r\n me.resize();\r\n });\r\n dojo.connect(window, 'onscroll', function() {\r\n me.scroll();\r\n });\r\n\r\n // bug: I#5763\r\n if (this.options.fixtransparentissue && dojox.gfx.renderer == 'silverlight') {\r\n this.dialogmask.style.backgroundColor = 'white';\r\n this.dialogmask.style.opacity = '1.0';\r\n this.dialogmask.style.filter = 'alpha(opacity=100)';\r\n }\r\n },\r\n\r\n scroll: function() {\r\n if (!this.isVisible() || this.dialogmask == null || this.dialogmask.style.display == 'none')\r\n return;\r\n var d = dojo.window.getBox();\r\n var right = Math.max(d.w + d.l, this.dialog.offsetLeft + this.dialog.offsetWidth);\r\n var bottom = Math.max(d.h + d.t, this.dialog.offsetTop + this.dialog.offsetHeight);\r\n if (this.dialogmask.offsetWidth <= right)\r\n this.dialogmask.style.width = right + 'px';\r\n if (this.dialogmask.offsetHeight <= bottom)\r\n this.dialogmask.style.height = bottom + 'px';\r\n },\r\n\r\n resize: function() {\r\n this.scroll();\r\n },\r\n\r\n /**\r\n * Move the dialog to a new position\r\n * @function move\r\n * @param {number} x\r\n * @param {number} y\r\n */\r\n moveTo: function(x, y) {\r\n scil.Utils.moveToScreen(x, y, this.dialog);\r\n },\r\n\r\n startMove: function(e) {\r\n this.movingSt = null;\r\n var src = e.srcElement || e.target;\r\n if (src.tagName == 'IMG')\r\n return;\r\n this.movingSt = new JSDraw2.Point(e.clientX, e.clientY);\r\n },\r\n\r\n move: function(e) {\r\n if (this.movingSt == null || (e.which || e.button) != 1)\r\n return false;\r\n\r\n var delta = new JSDraw2.Point(e.clientX - this.movingSt.x, e.clientY - this.movingSt.y);\r\n var top = scilligence.Utils.parsePixel(this.dialog.style.top) + delta.y;\r\n var left = scilligence.Utils.parsePixel(this.dialog.style.left) + delta.x;\r\n this.moveTo(left, top);\r\n\r\n this.movingSt = new JSDraw2.Point(e.clientX, e.clientY);\r\n return true;\r\n },\r\n\r\n endMove: function() {\r\n this.movingSt = null;\r\n },\r\n\r\n updateWidth: function(f) {\r\n this.dialog.style.width = (this.dialog.firstChild.firstChild.offsetWidth + 2) + 'px';\r\n },\r\n\r\n /**\r\n * Hide dialog\r\n * @function hide\r\n * @param {bool} immediately - set this to true to skip fading animation\r\n */\r\n hide: function(immediately) {\r\n if (this.options.onhide != null)\r\n this.options.onhide();\r\n\r\n if (!(scil.Dialog.kTimer > 0))\r\n immediately = true;\r\n\r\n if (immediately || scilligence.Utils.isTouch) {\r\n this.close();\r\n } else {\r\n if (this.dialog != null) {\r\n clearInterval(this.dialog.timer);\r\n this.dialog.timer = setInterval('scil.Dialog.get(\\'' + this.id + '\\').fade(0)', scil.Dialog.kTimer);\r\n }\r\n }\r\n\r\n scil.Dialog.stack.pop();\r\n scil.AutoComplete.hideAll();\r\n },\r\n\r\n close: function() {\r\n if (this.dialog == null)\r\n return;\r\n\r\n clearInterval(this.dialog.timer);\r\n this.dialog.timer = null;\r\n this.dialog.style.display = 'none';\r\n this.dialogmask.style.display = 'none';\r\n this.dialogmask.style.width = '0px';\r\n this.dialogmask.style.height = '0px';\r\n },\r\n\r\n fade: function(flag) {\r\n if (flag == null)\r\n flag = 1;\r\n\r\n var value = flag == 1 ? this.dialog.alpha + scil.Dialog.kSpeed : this.dialog.alpha - scil.Dialog.kSpeed;\r\n this.dialog.alpha = value;\r\n dojo.style(this.dialog, {opacity: value / 100, filter: 'alpha(opacity=' + value + ')'});\r\n\r\n if (value >= 99) {\r\n clearInterval(this.dialog.timer);\r\n this.dialog.timer = null;\r\n } else if (value <= 1) {\r\n this.close();\r\n }\r\n },\r\n});\r\n\r\nscil.apply(scil.Dialog, {\r\n stack: [],\r\n kTimer: 10,\r\n kSpeed: 40,\r\n\r\n keydown: function(e) {\r\n if (e.keyCode == 27 && this.stack.length > 0)\r\n this.stack[this.stack.length - 1].hide();\r\n },\r\n\r\n /**\r\n * Get the Dialog object by its ID\r\n * @function {static} get\r\n * @param {string} id - the dialog ID\r\n */\r\n get: function(id) {\r\n if (scil.Dialog._allitems == null)\r\n scil.Dialog._allitems = {};\r\n return scil.Dialog._allitems[id];\r\n },\r\n\r\n getDialog: function(e) {\r\n while (e != null) {\r\n var t = scil.Utils.getParent(e, 'TABLE');\r\n if (t == null)\r\n return null;\r\n\r\n var id = t.getAttribute('__scilligence_dlg');\r\n if (id != null)\r\n return this.get(id);\r\n e = t.parentNode;\r\n }\r\n return null;\r\n },\r\n});\r\n\r\nscil.onload(function() {\r\n dojo.connect(document.body, 'onkeydown', function(e) {\r\n scil.Dialog.keydown(e);\r\n });\r\n});\r\n\r\n\r\nJsDialog = JSDraw2.Dialog = scil.Dialog;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.DnD = scil.extend(scil._base, {\r\n constructor: function(parent, options) {\r\n this.T = 'DND';\r\n this.src = null;\r\n this.copy = null;\r\n this.dragging = false;\r\n this.disabled = false;\r\n\r\n this.options = options;\r\n if (typeof (parent) == 'string')\r\n parent = scil.byId(parent);\r\n\r\n var me = this;\r\n dojo.connect(parent, 'onmousedown', function(e) {\r\n if (!me.disabled) me.mousedown(e);\r\n });\r\n\r\n dojo.connect(document.body, 'onmousemove', function(e) {\r\n if (!me.disabled) me.mousemove(e);\r\n });\r\n dojo.connect(document.body, 'onmouseup', function(e) {\r\n if (!me.disabled) me.mouseup(e);\r\n });\r\n },\r\n\r\n isDragging: function() {\r\n return this.dragging;\r\n },\r\n\r\n cancel: function() {\r\n if (this.src != null) {\r\n if (this.options.oncancel != null)\r\n this.options.oncancel(this);\r\n }\r\n\r\n this.src = null;\r\n this.copy = null;\r\n this.dragging = false;\r\n },\r\n\r\n mousedown: function(e, src) {\r\n if (this.options.onstartdrag != null) {\r\n this.src = this.options.onstartdrag(e, this);\r\n this.startpos = {x: e.clientX, y: e.clientY};\r\n }\r\n },\r\n\r\n mousemove: function(e) {\r\n if (this.src == null)\r\n return;\r\n\r\n if (this.copy == null && (Math.abs(e.clientX - this.startpos.x) > 10 || Math.abs(e.clientY - this.startpos.y) > 10)) {\r\n if (this.options.oncreatecopy != null)\r\n this.copy = this.options.oncreatecopy(e, this);\r\n }\r\n\r\n if (this.copy != null) {\r\n var scroll = scil.Utils.scrollOffset();\r\n this.copy.style.left = (e.clientX + scroll.x + 2) + 'px';\r\n this.copy.style.top = (e.clientY + scroll.y + 2) + 'px';\r\n\r\n this.dragging = true;\r\n }\r\n\r\n if (this.options.ondragover != null)\r\n this.options.ondragover(e, this);\r\n },\r\n\r\n mouseup: function(e) {\r\n if (this.src != null) {\r\n if (this.options.ondrop != null)\r\n this.options.ondrop(e, this);\r\n }\r\n\r\n this.src = null;\r\n this.copy = null;\r\n this.dragging = false;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n* DropdownButton class\r\n* @class scilligence.DropdownButton\r\n*
\r\n* Example:\r\n*    <button id='d'>Select City</button>\r\n*    <script type=\"text/javascript\">\r\n*        scil.ready(function () {\r\n*            new scil.DropdownButton('d', { items: [\"Boston\", \"New York\", \"London\"],\r\n*                callback: function (city) { alert(city); } });\r\n*        });\r\n*    </script>\r\n* 
\r\n*/\r\nscilligence.DropdownButton = scilligence.extend(scilligence._base, {\r\n /**\r\n * @constructor DropdownButton\r\n * @param {string or DOM} button - the BUTTON element to be converted\r\n * @param {dict} options - { items: [], callback: function(item) {} }\r\n */\r\n constructor: function (button, options) {\r\n this.T = \"DROPDOWN_BUTTON\";\r\n this.auto = null;\r\n this.options = options == null ? {} : options;\r\n\r\n var me = this;\r\n this.button = typeof (button) == \"string\" ? document.getElementById(button) : button;\r\n dojo.connect(this.button, \"onclick\", function () { me.show(); });\r\n\r\n var s = this.options.dropdown == null ? \"▼\" : this.options.dropdown;\r\n if (this.button.tagName == 'TABLE') {\r\n var list = this.button.getElementsByTagName(\"TD\");\r\n var td = list[list.length - 1];\r\n scil.Utils.createElement(td, \"span\", s);\r\n }\r\n else {\r\n if (this.options.expandright)\r\n scil.Utils.createElement(this.button, \"span\", s, { fontSize: \"70%\" });\r\n else\r\n scil.Utils.createElement(this.button, \"span\", s, { fontSize: \"70%\" });\r\n }\r\n },\r\n\r\n isVisible: function () {\r\n return this.auto != null && this.auto.style.display == \"\";\r\n },\r\n\r\n show: function () {\r\n if (this.options.onshowdropdown != null)\r\n this.options.onshowdropdown(this);\r\n\r\n if (this.auto == null) {\r\n var me = this;\r\n var w = this.options.width;\r\n if (!(w > 0) && scil.Utils.isIE && scil.Utils.isIE <= 8)\r\n w = 200;\r\n\r\n var pos = scil.Utils.isFixedPosition(this.button) ? \"fixed\" : \"absolute\";\r\n var tbody = scil.Utils.createTable(document.body, 0, 1, { borderRadius: \"2px\", border: JSDraw2.Skin.dialog.border, backgroundColor: JSDraw2.Skin.dialog.bkcolor, display: \"none\", position: pos, width: w });\r\n this.auto = tbody.parentNode;\r\n\r\n var div = JsUtils.createElement(JsUtils.createElement(tbody, \"tr\"), \"td\", null, { padding: \"5px\" });\r\n this.area = scil.Utils.createElement(div, \"div\", null, { backgroundColor: \"#fff\" });\r\n //this.auto = scil.Utils.createElement(document.body, \"div\", null, { display: \"none\", backgroundColor: this.options.backgroundColor == null ? \"white\" : this.options.backgroundColor, border: \"solid 1px gray\", position: \"absolute\", width: w });\r\n\r\n dojo.connect(document.body, \"onmousedown\", function (e) { var src = e.srcElement || e.target; if (src != me.q && !scil.Utils.isChildOf(src, me.auto)) me.clickout(); });\r\n this.list(this.options.items);\r\n }\r\n this.auto.style.display = \"\";\r\n this.position();\r\n },\r\n\r\n hide: function () {\r\n if (this.auto != null)\r\n this.auto.style.display = \"none\";\r\n },\r\n\r\n position: function () {\r\n var p = scilligence.Utils.getOffset(this.button);\r\n var scroll = scilligence.Utils.scrollOffset();\r\n var zIndex = scil.Utils.getZindex(this.button) + 1;\r\n if (scil.Utils.isIE) {\r\n var s2 = JsUtils.getScrollOffset(this.e);\r\n scroll.offset(-s2.x, -s2.y);\r\n }\r\n\r\n var x, y;\r\n if (this.options.expandright) {\r\n x = p.x + scroll.x + this.button.offsetWidth;\r\n y = p.y + scroll.y;\r\n }\r\n else {\r\n x = p.x + scroll.x;\r\n y = p.y + scroll.y + this.button.offsetHeight;\r\n }\r\n dojo.style(this.auto, { zIndex: zIndex, display: \"\", x: 0, y: 0 });\r\n scil.Utils.moveToScreen(x, y, this.auto);\r\n },\r\n\r\n list: function (items) {\r\n if (items == null || items.length == 0)\r\n return;\r\n\r\n if (this.auto.style.display != \"\")\r\n this.position();\r\n\r\n if (items.length == null) {\r\n var list = [];\r\n for (var k in items)\r\n list.push({ label: items[k], key: k });\r\n items = list;\r\n }\r\n\r\n scil.Utils.removeAll(this.area);\r\n var me = this;\r\n for (var i = 0; i < items.length; ++i) {\r\n var item = items[i];\r\n if (item == \"-\" && (i == 0 || items[i - 1] == \"-\" || i == items.length - 1))\r\n continue;\r\n this.createItem(item);\r\n }\r\n },\r\n\r\n createItem: function (item) {\r\n if (item == \"-\") {\r\n scil.Utils.createElement(this.area, 'hr', null, { margin: 0, padding: 0, borderColor: scil.App.config == null ? null : scil.App.config.frame });\r\n return;\r\n }\r\n\r\n if (typeof (item) == \"string\")\r\n item = { label: item };\r\n\r\n var label = this.options.translate ? scil.Lang.res(item.label) : item.label;\r\n if (item.key == null && label != item.label)\r\n item.key = item.label;\r\n\r\n var div = scil.Utils.createElement(this.area, 'div', null, { padding: \"3px 10px 3px 10px\", color: JSDraw2.Skin.menu.color, cursor: \"pointer\" }, { url: item.url, key: item.key });\r\n\r\n var div2 = div;\r\n if (item.items != null && item.items.length > 0) {\r\n var tbody = scil.Utils.createTable(div, 0, 0, { width: \"100%\" });\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n var div2 = scil.Utils.createElement(tr, \"td\", null, { textAlign: \"left\" });\r\n scil.Utils.createElement(tr, \"td\", \"►\", { paddingLeft: \"10px\", textAlign: \"right\", fontSize: \"50%\" });\r\n }\r\n\r\n if (item.icon != null)\r\n scil.Utils.createElement(div2, \"img\", null, { marginRight: \"5px\" }, { src: item.icon });\r\n if (label != null)\r\n scil.Utils.createElement(div2, \"span\", label);\r\n\r\n var me = this;\r\n if (item.items != null && item.items.length > 0) {\r\n item.expandright = true;\r\n item.dropdown = \"\";\r\n new scil.DropdownButton(div, item);\r\n }\r\n else {\r\n if (item.key == null && item.label != null)\r\n item.key = item.label;\r\n dojo.connect(div, \"onclick\", function (e) { if (item.onclick != null) item.onclick(); me.click(e, div); });\r\n }\r\n\r\n dojo.connect(div, \"onmouseover\", function (e) { me.mouseover(e, div); });\r\n dojo.connect(div, \"onmouseout\", function (e) { me.mouseout(e, div); });\r\n },\r\n\r\n getItem: function (e) {\r\n var src = e.srcElement || e.target;\r\n if (src.tagName != \"DIV\")\r\n src = scil.Utils.getParent(src, \"DIV\");\r\n return src;\r\n },\r\n\r\n mouseover: function (e) {\r\n this.getItem(e).style.backgroundColor = \"#ddf\";\r\n this.getItem(e).style.color = JSDraw2.Skin.menu.highlightcolor;\r\n },\r\n\r\n mouseout: function (e) {\r\n this.getItem(e).style.backgroundColor = \"#fff\";\r\n this.getItem(e).style.color = JSDraw2.Skin.menu.color;\r\n },\r\n\r\n clickout: function (e) {\r\n this.hide();\r\n },\r\n\r\n click: function (e) {\r\n var src = this.getItem(e);\r\n var url = src.getAttribute(\"url\");\r\n var key = src.getAttribute(\"key\");\r\n if (this.options.callback != null)\r\n this.options.callback(key == null || key == \"\" ? src.innerText || src.textContent : key, url);\r\n else if (this.options.onclick != null)\r\n this.options.onclick(key == null || key == \"\" ? src.innerText || src.textContent : key, url);\r\n else if (url != null) {\r\n if (this.options.target == null)\r\n window.location = url;\r\n else\r\n window.open(url, this.options.target);\r\n }\r\n this.hide();\r\n }\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * DropdownInput class\r\n * @class scilligence.DropdownInput\r\n *
\r\n * Example:\r\n *    <input id='d'/>\r\n *    <script type=\"text/javascript\">\r\n *        scil.ready(function () {\r\n *            new scil.DropdownInput('d', { items: [\"Boston\", \"New York\", \"London\"],\r\n *                onclickitem: function (city) { alert(city); }\r\n *            });\r\n *        });\r\n *    </script>\r\n * 
\r\n */\r\n\r\n// TODO: Recover style\r\n// https://github.com/scilligence/JSDraw.Lite/issues/4\r\n// document.write('');\r\n\r\nscil.DropdownInput = scil.extend(scilligence._base, {\r\n /**\r\n * @constructor DropdownInput\r\n * @param {string or DOM} input - the INPUT element to be converted\r\n * @param {dict} options - { items: [], overwrite: true/false, onclickitem: function(item) {}, onsuggest: function(args) {}, augto }\r\n */\r\n constructor: function(input, options) {\r\n this.T = 'DROPDOWN_INPUT';\r\n this.auto = null;\r\n this.options = options == null ? {} : options;\r\n this.input = typeof (input) == 'string' ? document.getElementById(input) : input;\r\n this.itemschanged = true;\r\n this.sugid = 0;\r\n this.suggestlength = this.options.suggestlength > 0 ? this.options.suggestlength : 1;\r\n\r\n if (this.options.autosuggest == '')\r\n this.options.autosuggest = null;\r\n\r\n var me = this;\r\n this.input.style.background = '#fff ' + scil.Utils.imgSrc('img/dropdown.gif', true) + ' no-repeat right center';\r\n this.input.style.border = 'solid 1px #999';\r\n this.input.style.padding = '2px';\r\n this.input.className = '_scil_dropdown';\r\n this.updateReadonly();\r\n\r\n dojo.connect(this.input, 'onkeyup', function(e) {\r\n me.keyup(e);\r\n });\r\n dojo.connect(this.input, 'onclick', function(e) {\r\n me.clickMe(e);\r\n });\r\n },\r\n\r\n updateDropdown: function(readonly) {\r\n if (readonly != null) {\r\n this.options.readonly = readonly;\r\n this.updateReadonly();\r\n }\r\n this.input.style.backgroundImage = this.options.items == null ? '' : scil.Utils.imgSrc('img/dropdown.gif', true);\r\n },\r\n\r\n updateReadonly: function() {\r\n this.input.readOnly = this.options.readonly;\r\n this.input.style.backgroundColor = this.options.readonly ? '#eee' : '#fff';\r\n },\r\n\r\n keyup: function(e) {\r\n if (this.disabled || this.input == null || this.options.autosuggest == null && this.options.onFilter == null && this.options.items == null)\r\n return;\r\n\r\n if (this.options.readonly) {\r\n if (this.options.items != null)\r\n this.highlight(e);\r\n return;\r\n }\r\n\r\n if (this.input.value.length < this.suggestlength || e.keyCode == 9 || e.keyCode == 13) {\r\n if (this.auto != null)\r\n this.auto.style.display = 'none';\r\n return;\r\n }\r\n\r\n var sugid = ++this.sugid;\r\n if (this.options.onFilter != null) {\r\n var ret = this.options.onFilter(this.input.value);\r\n this.list(ret, sugid);\r\n this.itemschanged = true;\r\n } else if (scil.Utils.startswith(this.options.autosuggest, 'data:')) {\r\n // local data\r\n var ret = this.filterlist(this.options.autosuggest.substr(5).split(','), this.input.value);\r\n this.list(ret, sugid);\r\n this.itemschanged = true;\r\n } else if (scil.Utils.startswith(this.options.autosuggest, 'javascript:')) {\r\n var s = this.options.autosuggest.substr(11);\r\n var fn = scil.Utils.eval(s);\r\n var items = fn(this);\r\n\r\n var ret = this.filterlist(items, this.input.value);\r\n this.list(ret, sugid);\r\n this.itemschanged = true;\r\n } else if (this.options.items != null && this.options.autosuggest == null) {\r\n // local data\r\n var ret = this.filterlist(this.options.items, this.input.value);\r\n this.list(ret, sugid);\r\n this.itemschanged = true;\r\n } else if (this.options.autosuggest != null) {\r\n // url to ajax call\r\n var me = this;\r\n var args = {q: this.input.value};\r\n if (this.options.onsuggest != null)\r\n this.options.onsuggest(args);\r\n scil.Utils.jsonp(this.options.autosuggest, function(ret) {\r\n me.list(ret.items == null ? ret : ret.items, sugid);\r\n me.itemschanged = true;\r\n }, args);\r\n }\r\n\r\n },\r\n\r\n filterlist: function(list, q) {\r\n var ret = [];\r\n if (q != null && q != '' && list != null) {\r\n q = q.toLowerCase();\r\n for (var i = 0; i < list.length; ++i) {\r\n if (list[i].toLowerCase().indexOf(q) >= 0)\r\n ret.push(scil.Utils.trim(list[i]));\r\n }\r\n }\r\n return ret;\r\n },\r\n\r\n clickMe: function(e) {\r\n if (this.options.items == null)\r\n return;\r\n\r\n var input = e.srcElement || e.target;\r\n if (input.offsetWidth - (e.offsetX == null ? e.layerX : e.offsetX) < 16)\r\n this.show();\r\n },\r\n\r\n setItems: function(list) {\r\n if (list == null)\r\n return;\r\n this.options.items = list;\r\n this.itemschanged = true;\r\n },\r\n\r\n isChildOf: function(src) {\r\n return src == this.input || JsUtils.isChildOf(src, this.auto);\r\n },\r\n\r\n isDropdownVisible: function() {\r\n return this.auto != null && this.auto.style.display == '';\r\n },\r\n\r\n isVisible: function() {\r\n return this.input != null && this.input.style.display == '';\r\n },\r\n\r\n show: function() {\r\n if (this.auto == null) {\r\n var me = this;\r\n var pos = scil.Utils.isFixedPosition(this.input) ? 'fixed' : 'absolute';\r\n this.auto = scil.Utils.createElement(document.body, 'div', null, {display: 'none', backgroundColor: 'white', overflow: 'hidden', border: 'solid 1px gray', position: pos, zIndex: 99999});\r\n dojo.connect(document.body, 'onmousedown', function(e) {\r\n var src = e.srcElement || e.target;\r\n if (src != me.q && src.parentNode != me.auto) me.clickout();\r\n });\r\n }\r\n\r\n if (this.itemschanged)\r\n this.list(this.options.items, ++this.sugid);\r\n this.auto.style.display = '';\r\n this.auto.style.zIndex = scil.Utils.getZindex(this.input) + 1;\r\n this.updateDropdownSize();\r\n },\r\n\r\n highlight: function(e) {\r\n if (this.auto == null || this.auto.style.display == 'none') {\r\n if (e.keyCode == 13 || e.keyCode == 40) {\r\n this.show();\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n if (e.keyCode == 27) {\r\n this.hide();\r\n return;\r\n }\r\n\r\n var children = this.auto.childNodes;\r\n var sel = null;\r\n for (var i = 0; i < children.length; ++i) {\r\n var item = children[i];\r\n if (item.getAttribute('sel') == '1') {\r\n sel = i;\r\n break;\r\n }\r\n }\r\n\r\n if (e.keyCode == 13) {\r\n if (sel != null)\r\n this.clickItem(children[sel]);\r\n return;\r\n }\r\n\r\n var newsel = null;\r\n if (e.keyCode == 38 || e.keyCode == 40) {\r\n if (sel == null) {\r\n newsel = 0;\r\n } else if (e.keyCode == 38) {\r\n newsel = sel - 1;\r\n if (newsel < 0)\r\n newsel = children.length - 1;\r\n } else {\r\n newsel = sel + 1;\r\n if (newsel >= children.length)\r\n newsel = 0;\r\n }\r\n\r\n e.preventDefault();\r\n } else {\r\n if (e.char != null) {\r\n var c = e.char.toLowerCase();\r\n newsel = this.findNextMatch(c, sel == null ? 0 : sel + 1, children.length);\r\n if (newsel == null && sel != null)\r\n newsel = this.findNextMatch(c, 0, sel);\r\n }\r\n }\r\n\r\n if (newsel != null && newsel != sel) {\r\n if (sel != null)\r\n this._hilitItem(children[sel], false);\r\n this._hilitItem(children[newsel], true);\r\n }\r\n },\r\n\r\n findNextMatch: function(c, start, end) {\r\n for (var i = start; i < end; ++i) {\r\n var item = this.auto.childNodes[i];\r\n if (item.innerHTML) {\r\n var s = this.getItemValue(item);\r\n if (s.length > 0 && s.substr(0, 1).toLowerCase() == c)\r\n return i;\r\n }\r\n }\r\n return null;\r\n },\r\n\r\n updateDropdownSize: function() {\r\n if (!this.isDropdownVisible())\r\n return;\r\n\r\n var p = scil.Utils.getOffset(this.input);\r\n var scroll = scilligence.Utils.scrollOffset();\r\n if (scil.Utils.isIE) {\r\n var s2 = JsUtils.getScrollOffset(this.e);\r\n scroll.offset(-s2.x, -s2.y);\r\n }\r\n var w = this.input.offsetWidth;\r\n if (this.options.minautowidth > 0 && this.options.minautowidth > w)\r\n w = this.options.minautowidth;\r\n if (w < 100)\r\n w = 100;\r\n dojo.style(this.auto, {left: (p.x + scroll.x) + 'px', top: (p.y + scroll.y + this.input.offsetHeight) + 'px', width: (w - 2) + 'px'});\r\n },\r\n\r\n hide: function() {\r\n if (this.auto != null && this.auto.style.display != 'none')\r\n this.auto.style.display = 'none';\r\n },\r\n\r\n isParentHidden: function(q) {\r\n var obj = q;\r\n while (obj != null && obj.style != null) {\r\n if (obj.style.display == 'none' || obj.style.visibility == 'hidden')\r\n return true;\r\n obj = obj.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n list: function(items, sugid) {\r\n if (items == null || items.length == 0 || sugid != this.sugid || this.isParentHidden(this.input)) {\r\n if (this.auto != null) {\r\n scilligence.Utils.removeAll(this.auto);\r\n this.auto.style.display = 'none';\r\n }\r\n return;\r\n }\r\n if (this.auto == null || this.auto.style.display == 'none') {\r\n this.itemschanged = false;\r\n this.show();\r\n }\r\n\r\n this.itemschanged = false;\r\n scilligence.Utils.removeAll(this.auto);\r\n if (items == null || items.length == 0)\r\n return;\r\n\r\n var me = this;\r\n for (var i = 0; i < items.length; ++i) {\r\n var s = items[i];\r\n var div = scilligence.Utils.createElement(this.auto, 'div', scil.Utils.isNullOrEmpty(s) ? ' ' : s, {padding: '2px', textAlign: this.options.align});\r\n dojo.connect(div, 'onclick', function(e) {\r\n me.click(e);\r\n });\r\n dojo.connect(div, 'onmouseover', function(e) {\r\n me.mouseover(e);\r\n });\r\n dojo.connect(div, 'onmouseout', function(e) {\r\n me.mouseout(e);\r\n });\r\n }\r\n },\r\n\r\n mouseover: function(e) {\r\n this._hilitItem(e.srcElement || e.target, true);\r\n },\r\n\r\n mouseout: function(e) {\r\n this._hilitItem(e.srcElement || e.target, false);\r\n },\r\n\r\n _hilitItem: function(item, f) {\r\n if (f) {\r\n item.style.backgroundColor = '#ddf';\r\n item.setAttribute('sel', '1');\r\n } else {\r\n item.style.backgroundColor = 'white';\r\n item.removeAttribute('sel');\r\n }\r\n },\r\n\r\n clickout: function(e) {\r\n this.hide();\r\n },\r\n\r\n click: function(e) {\r\n var src = e.srcElement || e.target;\r\n this.clickItem(src);\r\n },\r\n\r\n getItemValue: function(src) {\r\n var s = scil.Utils.htmlDecode(src.innerHTML);\r\n if (s == ' ')\r\n s = '';\r\n return s;\r\n },\r\n\r\n clickItem: function(src) {\r\n var s = this.getItemValue(src);\r\n if (this.options.onSetValue != null)\r\n this.options.onSetValue(this.input, s);\r\n else if (this.options.overwrite == 'unit')\r\n this.input.value = this.changeUnit(this.input.value, s);\r\n else if (this.options.overwrite == false)\r\n this.input.value += s;\r\n else\r\n this.input.value = s;\r\n this.hide();\r\n if (this.options.overwrite)\r\n this.input.select();\r\n this.input.focus();\r\n\r\n if (this.options.onclickitem != null)\r\n this.options.onclickitem(s);\r\n\r\n scil.Utils.fireEvent(this.input, 'change', false, true);\r\n },\r\n\r\n changeUnit: function(s, unit) {\r\n var r = JSDraw2.Table.parseValueUnit(s);\r\n if (r == null || r.value == null)\r\n return '';\r\n return r.value + (unit == null ? '' : unit);\r\n },\r\n});\r\n\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.Favorite = scil.extend(scil._base, {\r\n constructor: function(key, onAddFavorite) {\r\n this.T = 'FAVORITE';\r\n this.key = key;\r\n this.items = null;\r\n this.onAddFavorite = onAddFavorite;\r\n this.changed = false;\r\n },\r\n\r\n getList: function(type) {\r\n this._load();\r\n return this.items[type];\r\n },\r\n\r\n contains: function(name, type) {\r\n this._load();\r\n\r\n var list = this.items[type];\r\n return list == null ? false : scil.Utils.indexOf(list, name) >= 0;\r\n },\r\n\r\n add: function(name, f, type) {\r\n this._load();\r\n\r\n var list = this.items[type];\r\n if (list == null) {\r\n if (f) {\r\n this.items[type] = [name];\r\n this.changed = true;\r\n }\r\n } else {\r\n var p = scil.Utils.indexOf(list, name);\r\n if (p < 0 && f) {\r\n list.push(name);\r\n this.changed = true;\r\n } else if (p >= 0 && !f) {\r\n list.splice(p, 1);\r\n this.changed = true;\r\n }\r\n }\r\n\r\n if (this.onAddFavorite != null)\r\n this.onAddFavorite(name, f, type);\r\n\r\n if (this.changed)\r\n this._save();\r\n },\r\n\r\n _save: function() {\r\n if (this.items == null)\r\n return;\r\n\r\n var s = scil.Utils.json2str(this.items);\r\n scil.Utils.createCookie('scil_helm_favorites_' + this.key, s);\r\n },\r\n\r\n _load: function() {\r\n if (this.items != null)\r\n return;\r\n\r\n var s = scil.Utils.readCookie('scil_helm_favorites_' + this.key);\r\n var v = scil.Utils.eval(s);\r\n this.items = v == null ? {} : v;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * FieldNumber class - FieldNumber Control\r\n * @class scilligence.FieldNumber\r\n */\r\nscil.FieldNumber = scil.extend(scil._base, {\r\n /**\r\n * Constructor\r\n * @function constroctor\r\n * @param {DOM} parent\r\n * @param {dict} options - { width, min, max, allowoperator, scale, units }\r\n */\r\n constructor: function(input, options) {\r\n this.T = 'FIELD_NUMBER';\r\n if (typeof (input) == 'string')\r\n input = scil.byId(input);\r\n this.options = options == null ? {} : options;\r\n this.input = input;\r\n this.unit = null;\r\n //this.input.style.textAlign = \"right\";\r\n\r\n var me = this;\r\n if (this.options.allowoperator) {\r\n this.auto = new scil.DropdownInput(input,\r\n {\r\n items: this.options.items == null ? ['', '≥', '≤', '<', '>', '±'] : this.options.items,\r\n onSetValue: function(input, s) {\r\n me.onSetOperator(input, s);\r\n },\r\n });\r\n }\r\n\r\n var tr;\r\n var viewonly = this.options.viewonly || this.input.disabled || this.input.readOnly;\r\n if (this.options.units != null && !viewonly) {\r\n var tbody = scil.Utils.createTable(null, 0, 0, {border: 'solid 1px #ccc'});\r\n this.input.parentNode.insertBefore(tbody.parentNode, this.input);\r\n\r\n tr = scil.Utils.createElement(tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td').appendChild(this.input);\r\n this.unit = scil.Utils.createElement(scil.Utils.createElement(tr, 'td', null, {borderLeft: 'solid 1px #ccc'}), 'select', null, {width: this.options.unitwidth});\r\n scil.Utils.listOptions(this.unit, this.options.units, null, true, false);\r\n\r\n scil.connect(this.unit, 'onchange', function() {\r\n scil.Utils.fireEvent(me.input, 'change');\r\n });\r\n\r\n this.input.style.border = 'none';\r\n this.unit.style.border = 'none';\r\n }\r\n\r\n var me = this;\r\n scil.connect(input, 'onchange', function(e) {\r\n var s = input.value;\r\n if (s != '' && s != null && (me.options.accepts == null || !new RegExp(me.options.accepts).test(s)) && !scil.Utils.isNumber(s, me.options.allowoperator)) {\r\n input.value = '';\r\n scil.Utils.alert('A number is required!');\r\n } else {\r\n if (me.unit != null)\r\n s += me.unit.value;\r\n me.setValue(s);\r\n }\r\n });\r\n\r\n if (!viewonly && this.options.mobiledata != null) {\r\n var me = this;\r\n new scil.MobileData(input, {\r\n weighstation: true, url: scil.MobileData.getDefaultUrl(true), onresult: function(ret) {\r\n me.setValue(ret.barcode);\r\n scil.MobileData.markRecieved(input);\r\n return true;\r\n },\r\n });\r\n scil.Utils.createButton(scil.Utils.createElement(tr, 'td'), {\r\n label: '⚖', title: 'Select Weigh Station', type: 'a', onclick: function() {\r\n scil.MobileData.selectWeighstation();\r\n },\r\n });\r\n }\r\n },\r\n\r\n onSetOperator: function(input, op) {\r\n if (op == '')\r\n return;\r\n\r\n var s = scil.Utils.trim(input.value);\r\n if (op == '±') {\r\n if (s.indexOf('±') >= 0)\r\n return;\r\n input.value = s + ' ±';\r\n } else {\r\n var c = s.length > 0 ? s.substr(0, 1) : null;\r\n if (c == '≥' || c == '≤' || c == '>' || c == '<')\r\n s = s.substr(1);\r\n input.value = op + s;\r\n }\r\n },\r\n\r\n clear: function() {\r\n this.input.value = '';\r\n },\r\n\r\n setValue: function(v) {\r\n v = v == null ? null : (JSDraw2.Table == null ? {value: v} : JSDraw2.Table.splitUnit(v + ''));\r\n if (v == null) {\r\n this.input.value = '';\r\n return;\r\n }\r\n\r\n if (this.options.scale > 0 && !isNaN(v.value))\r\n v.value *= this.options.scale;\r\n\r\n if (this.options.decimal > 0)\r\n v.value = scil.Utils.round(v.value, this.options.decimal);\r\n\r\n if (v.unit2 == null)\r\n v.unit2 = this.options.defaultunit;\r\n\r\n if (this.unit != null) {\r\n this.input.value = v.value;\r\n scil.Utils.selectOption(this.unit, v.unit2, true);\r\n } else {\r\n this.input.value = v.value + (v.unit2 == null ? '' : v.unit2);\r\n if (JSDraw2.ColorCoding != null)\r\n JSDraw2.ColorCoding.show(this.input, v.value, this.options);\r\n }\r\n },\r\n\r\n getValue: function() {\r\n var v = scil.Utils.trim(this.input.value);\r\n if (!scil.Utils.isNullOrEmpty(v) && !isNaN(v)) {\r\n if (this.options.scale > 0)\r\n v /= this.options.scale;\r\n\r\n if (this.unit != null)\r\n v = v + this.unit.value;\r\n }\r\n\r\n return v;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n* Menu class - Menu Control\r\n* @class scilligence.Menu\r\n*/\r\nscil.Menu = {\r\n timeout: scilligence.Utils.isTouch || window.navigator.msPointerEnabled ? 2000 : 500,\r\n closetimer: 0,\r\n menuitem: null,\r\n\r\n isOpen: function () {\r\n return scil.Menu.menuitem != null && scil.Menu.menuitem.style.display != \"none\";\r\n },\r\n\r\n open: function (id) {\r\n scil.Menu.cancelclosetime();\r\n if (scil.Menu.menuitem)\r\n scil.Menu.menuitem.style.display = 'none';\r\n scil.Menu.menuitem = document.getElementById(id);\r\n scil.Menu.menuitem.style.display = '';\r\n },\r\n\r\n close: function () {\r\n if (scil.Menu.menuitem)\r\n scil.Menu.menuitem.style.display = 'none';\r\n },\r\n\r\n openOrClose: function (id) {\r\n if (scil.Menu.menuitem == null || scil.Menu.menuitem.style.display == \"none\")\r\n this.open(id);\r\n else\r\n this.close();\r\n },\r\n\r\n closetime: function () {\r\n scil.Menu.closetimer = window.setTimeout(scil.Menu.close, scil.Menu.timeout);\r\n },\r\n\r\n cancelclosetime: function () {\r\n if (scil.Menu.closetimer) {\r\n window.clearTimeout(scil.Menu.closetimer);\r\n scil.Menu.closetimer = null;\r\n }\r\n }\r\n};\r\n\r\n\r\nJSDraw2.Menu = scil.Menu;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * Popup class\r\n * @class scilligence.Popup\r\n *
\r\n * Example:\r\n * <span id='k'>Test</span> More words\r\n * <span id='Span1'>Test2</span>\r\n * <script type=\"text/javascript\">\r\n *     scil.onload(function () {\r\n *         new scil.Popup('k', { html: \"Hello, World!\", caption: \"Hellow\" });\r\n *         new scil.Popup('Span1', { html: \"<img src='face.gif'>\", caption: \"Picture\" });\r\n *     });\r\n * </script>\r\n * 
\r\n */\r\nscil.Popup = scil.extend(scil._base, {\r\n /**\r\n * @constructor Popup\r\n * @param {string or DOM} element - the INPUT element to be converted\r\n * @param {dictionary} options - { caption, html, ongethtml: function() {} }\r\n */\r\n constructor: function(a, options) {\r\n this.T = 'POPUP';\r\n if (typeof (a) == 'string')\r\n this.a = scil.byId(a);\r\n else\r\n this.a = a;\r\n\r\n if (options == null)\r\n this.options = {};\r\n else\r\n this.options = options;\r\n\r\n if (this.a != null) {\r\n var me = this;\r\n dojo.connect(this.a, 'onmouseout', function() {\r\n scil.Popup.hide();\r\n });\r\n dojo.connect(this.a, 'onmouseover', function(e) {\r\n scil.Popup.show(me, e);\r\n });\r\n }\r\n\r\n scil.Popup.init();\r\n },\r\n\r\n getHtml: function(e) {\r\n if (this.options.ongethtml2 != null)\r\n return this.options.ongethtml2(this, e);\r\n\r\n if (this.options.html == null) {\r\n if (this.options.ongethtml != null)\r\n this.options.html = this.options.ongethtml(this);\r\n }\r\n return this.options.html;\r\n },\r\n\r\n getCaption: function(e) {\r\n if (this.options.ongetcaption2 != null)\r\n return this.options.ongetcaption2(this, e);\r\n\r\n return this.options.caption;\r\n },\r\n});\r\n\r\nscil.apply(scil.Popup, {\r\n current: null,\r\n inited: null,\r\n\r\n show: function(popup, e2) {\r\n this.hide();\r\n this.current = popup;\r\n e = new scil.Popup.Event(e2);\r\n\r\n var caption = this.current.getCaption(e2);\r\n var html = this.current.getHtml(e2);\r\n\r\n if (scil.Utils.isNullOrEmpty(html)) {\r\n this.hide();\r\n return;\r\n }\r\n\r\n this.create();\r\n this.area.innerHTML = '';\r\n this.title.innerHTML = '';\r\n this.div.style.display = '';\r\n\r\n this.title.innerHTML = caption == null ? '' : caption;\r\n this.area.innerHTML = html;\r\n\r\n if (e != null)\r\n this.move(e);\r\n },\r\n\r\n hide: function() {\r\n this.current = null;\r\n if (this.div != null) {\r\n this.title.innerHTML = '';\r\n this.area.innerHTML = '';\r\n this.div.style.display = 'none';\r\n }\r\n },\r\n\r\n move: function(e) {\r\n if (this.current == null)\r\n return;\r\n\r\n if (this.div == null || this.div.style.display == 'none')\r\n return;\r\n\r\n var obj = e.srcElement == null ? e.target : e.srcElement;\r\n if (this.current.a == obj || this.isChildOf(obj, this.current.a)) {\r\n this.moveto(e);\r\n return;\r\n }\r\n\r\n if (this.isChildOf(obj, this.div))\r\n return;\r\n\r\n this.hide();\r\n },\r\n\r\n moveto: function(e) {\r\n this.create();\r\n var scrollLeft = this.scrollLeft();\r\n var scrollTop = this.scrollTop();\r\n\r\n var winWidth = 0;\r\n var winHeight = 0;\r\n\r\n if (document.all == null) {\r\n winWidth = window.innerWidth;\r\n winHeight = window.innerHeight;\r\n } else {\r\n winWidth = document.documentElement.clientWidth;\r\n winHeight = document.documentElement.clientHeight;\r\n }\r\n\r\n var w = this.div.offsetWidth;\r\n var h = this.div.offsetHeight;\r\n\r\n var x = e.clientX + scrollLeft + 10;\r\n var y = e.clientY + scrollTop + 20;\r\n if (x - scrollLeft + w > winWidth && x - scrollLeft - w > 0)\r\n x -= w + 15;\r\n if (y - scrollTop + h > winHeight && y - scrollTop - h > 0)\r\n y -= h + 25;\r\n\r\n this.div.style.left = x + 'px';\r\n this.div.style.top = y + 'px';\r\n },\r\n\r\n isChildOf: function(obj, parent) {\r\n while (obj != null) {\r\n if (obj == parent)\r\n return true;\r\n obj = obj.parentNode;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n scrollLeft: function(e) {\r\n return this.filterResults(\r\n window.pageXOffset ? window.pageXOffset : 0,\r\n document.documentElement ? document.documentElement.scrollLeft : 0,\r\n document.body ? document.body.scrollLeft : 0,\r\n );\r\n },\r\n\r\n scrollTop: function(e) {\r\n return this.filterResults(\r\n window.pageYOffset ? window.pageYOffset : 0,\r\n document.documentElement ? document.documentElement.scrollTop : 0,\r\n document.body ? document.body.scrollTop : 0,\r\n );\r\n },\r\n\r\n filterResults: function(n_win, n_docel, n_body) {\r\n var n_result = n_win ? n_win : 0;\r\n if (n_docel && (!n_result || (n_result > n_docel)))\r\n n_result = n_docel;\r\n return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;\r\n },\r\n\r\n init: function() {\r\n if (this.inited == true)\r\n return;\r\n this.inited = true;\r\n\r\n dojo.connect(document, 'onmousemove', function(e) {\r\n scil.Popup.move(e);\r\n });\r\n },\r\n\r\n create: function() {\r\n if (this.div != null)\r\n return;\r\n\r\n this.div = document.createElement('div');\r\n this.div.style.display = 'none';\r\n this.div.style.whiteSpace = 'nowrap';\r\n this.div.style.backgroundColor = 'white';\r\n this.div.style.borderStyle = 'solid';\r\n this.div.style.borderColor = '#f0f0f0 #a0a0a0 #a0a0a0 #f0f0f0';\r\n this.div.style.borderWidth = '2px';\r\n this.div.style.position = 'absolute';\r\n this.div.style.zIndex = scil.Utils.getMaxZindex();\r\n this.div.style.textAlign = 'left';\r\n document.body.appendChild(this.div);\r\n\r\n var div = document.createElement('div');\r\n div.style.border = '1px solid highlight';\r\n div.style.padding = '1px';\r\n this.div.appendChild(div);\r\n\r\n this.title = document.createElement('div');\r\n this.title.style.textAlign = 'center';\r\n this.title.style.border = JSDraw2.Skin.dialog.border;\r\n this.title.style.backgroundColor = JSDraw2.Skin.dialog.bkcolor;\r\n this.title.style.color = 'white';\r\n div.appendChild(this.title);\r\n\r\n this.area = document.createElement('div');\r\n this.area.style.padding = '2px';\r\n this.area.style.backgroundColor = 'white';\r\n div.appendChild(this.area);\r\n },\r\n});\r\n\r\n\r\nscil.Popup.Event = scil.extend(scil._base, {\r\n constructor: function(e) {\r\n this.clientX = e.clientX;\r\n this.clientY = e.clientY;\r\n this.srcElement = e.target || e.srcElement;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n* Progress class - To Show Progress\r\n* @class {static} scilligence.Progress\r\n*
\r\n* Example:\r\n*    scilligence.Progress.show(\"Running\", function() { alert(\"cancelled\"); });\r\n*    var count = 0;\r\n*    setInterval(function() { scilligence.Progress.update(++count, \"Value \" + count); }, 500);\r\n* 
\r\n*/\r\nscilligence.Progress = {\r\n dlg: null,\r\n bar: null,\r\n msg: null,\r\n oncancel: null,\r\n\r\n /**\r\n * Show progress bar\r\n * @function {static} show\r\n * @param {string} caption dialog caption\r\n * @param {function} or false: oncalcel callback function when users click on Cancel button\r\n * @param {string} msg Message\r\n * @param {boolean} showprogressbar\r\n * @returns null\r\n */\r\n show: function (caption, oncancel, msg, showprogressbar) {\r\n this.create();\r\n if (oncancel == false) {\r\n this.cancelbtn.style.display = \"none\";\r\n this.oncancel = null;\r\n }\r\n else if (typeof(oncancel) == \"function\") {\r\n this.cancelbtn.style.display = \"\";\r\n this.oncancel = oncancel;\r\n }\r\n this.msg.innerHTML = msg == null ? \"\" : msg;\r\n this.frame.style.display = showprogressbar == false ? \"none\" : \"\";\r\n this.dlg.show(caption);\r\n },\r\n\r\n hide: function () {\r\n if (this.dlg != null)\r\n this.dlg.hide();\r\n },\r\n\r\n cancel: function () {\r\n if (this.oncancel != null)\r\n this.oncancel();\r\n this.hide();\r\n },\r\n\r\n update: function (percent, msg) {\r\n if (percent > 100)\r\n percent = 100;\r\n else if (!(percent > 0))\r\n percent = 0;\r\n\r\n var n = Math.round(300 * percent / 100);\r\n if (n < 0)\r\n n = 0;\r\n this.bar.style.width = n + \"px\";\r\n this.msg.innerHTML = msg == null ? \"\" : msg;\r\n },\r\n \r\n create: function (u) {\r\n if (this.dlg != null)\r\n return false;\r\n\r\n var div = scilligence.Utils.createElement(null, \"div\", null, { margin: \"5px\", width: \"320px\", textAlign: \"center\" });\r\n this.animator = scilligence.Utils.createElement(div, \"div\", scil.Utils.imgTag(\"animator.gif\"), { textAlign: \"center\" });\r\n this.msg = scilligence.Utils.createElement(div, \"div\", \" \", { textAlign: \"center\" });\r\n this.frame = scilligence.Utils.createElement(div, \"div\", null, { width: \"300px\", height: \"20px\", border: \"solid 1px #e0e0e0\", textAlign: \"left\" });\r\n this.bar = scilligence.Utils.createElement(this.frame, \"div\", \" \", { width: \"1px\", height: \"20px\", backgroundColor: \"blue\" });\r\n this.cancelbtn = scilligence.Utils.createElement(div, \"button\", scil.Utils.imgTag(\"cancel.gif\") + \"Cancel\", { marginTop: \"10px\" });\r\n dojo.connect(this.cancelbtn, \"onclick\", function () { scilligence.Progress.cancel(); });\r\n\r\n this.dlg = new JSDraw2.Dialog(\"Progress\", div);\r\n return true;\r\n }\r\n};\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.Resizable = scil.extend(scil._base, {\r\n constructor: function(handle, options) {\r\n this.T = 'RESIZABLE';\r\n if (typeof (handle) == 'string')\r\n handle = scil.byId(handle);\r\n this.options = options == null ? {} : options;\r\n this.resizing = null;\r\n this.handle = handle;\r\n this.bgcolor = this.handle.style.backgroundColor;\r\n\r\n if (this.options.direction == 'y')\r\n handle.style.cursor = 'ns-resize';\r\n else if (this.options.direction == 'x')\r\n handle.style.cursor = 'ew-resize';\r\n\r\n var me = this;\r\n dojo.connect(handle, 'onmousedown', function(e) {\r\n me.start(e);\r\n });\r\n scil.connect(document.body, 'onmousemove', function(e) {\r\n if (me.resize(e)) e.preventDefault();\r\n });\r\n scil.connect(document.body, 'onmouseup', function(e) {\r\n me.resizing = null;\r\n });\r\n\r\n if (this.options.mouseovercolor != null) {\r\n scil.connect(handle, 'onmouseover', function() {\r\n me.handle.style.backgroundColor = me.options.mouseovercolor;\r\n });\r\n scil.connect(handle, 'onmouseout', function() {\r\n me.handle.style.backgroundColor = me.bgcolor;\r\n });\r\n }\r\n },\r\n\r\n resize: function(e) {\r\n if (this.resizing == null)\r\n return false;\r\n\r\n var delta = this.options.direction == 'y' ? (e.clientY - this.resizing.y) : (e.clientX - this.resizing.x);\r\n if (delta == 0)\r\n return true;\r\n\r\n var f = false;\r\n if (this.options.onresize != null)\r\n f = this.options.onresize(delta, this);\r\n\r\n if (f) {\r\n if (this.options.direction == 'y')\r\n this.resizing.y = e.clientY;\r\n else\r\n this.resizing.x = e.clientX;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n start: function(e) {\r\n if (this.options.direction == 'y')\r\n this.resizing = {y: e.clientY};\r\n else if (this.options.direction == 'x')\r\n this.resizing = {x: e.clientX};\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * Table class - Table Control\r\n * @class scilligence.Table\r\n *
\r\n * Example 1:\r\n *    dojo.ready(function () {\r\n *        var parent = scil.Utils.createElement(document.body, \"div\");\r\n *        var columns = {\r\n *            user: { label: \"User\", type: \"input\", width: 300 },\r\n *            role: { label: \"Role\", type: \"select\", options: [\"\", \"Member\", \"Manager\"], width: 300 }\r\n *        };\r\n *        var table = new scilligence.Table({viewonly: false, header: true});\r\n *        table.render(parent, columns);\r\n *\r\n *        table.setData([{ user: \"Tony\", role: \"Member\" }, { user: \"Jack\", role: \"Manager\"}]);\r\n *    });\r\n *\r\n * Example 2 (Double Header Table):\r\n *    <script type=\"text/javascript\">\r\n *        var table;\r\n *        dojo.ready(function () {\r\n *            var parent = scil.Utils.createElement(document.body, \"div\");\r\n *            var columns = {\r\n *                mass: { label: \"Mass\", type: \"number\", align: \"center\", width: 200, unit: \"g\" },\r\n *                file: { label: \"NMR\", type: \"file\", options: { uploadurl: \"service.aspx?cmd=upload\"} },\r\n *                name: { label: \"Compound Name\", type: \"input\", width: 200 },\r\n *                vendor: { label: \"Vendor\", type: \"editableselect\", options: [\"Company A\", \"Company B\"], width: 200 }\r\n *            };\r\n *            table = new scil.Table({ viewonly: true, header0: [null, { label: \"Scilli\", colspan: 2 }, { label: \"Kinase\"}] });\r\n *            table.render(parent, columns);\r\n *            table.addRow({ mass: 160, name: \"Compound 123\", vendor: \"Sigma\" });\r\n *        });\r\n *  </script>\r\n * 
\r\n */\r\nscil.Table = scil.extend(scil._base, {\r\n /**\r\n * @constructor Table\r\n * @param {bool} viewonly\r\n * @param {bool} header\r\n * @param {dictionary} options - { viewonly(bool), header(bool), selectrow (bool), rowcheck(bool), delrow(bool), addrow (bool), selectrow (bool), onAdd, onselectrow, onchange }\r\n */\r\n constructor: function(viewonly, header, options) {\r\n this.T = 'TABLE';\r\n if (viewonly != null && typeof (viewonly) == 'object') {\r\n this.options = viewonly;\r\n this.viewonly = this.options.viewonly;\r\n this.header = this.options.header;\r\n } else {\r\n // old constructor: (viewonly, header, options)\r\n this.viewonly = viewonly;\r\n this.header = header;\r\n if (scil.Table._tableincrease == null)\r\n scil.Table._tableincrease = 0;\r\n this._tableid = ++scil.Table._tableincrease;\r\n\r\n if (typeof (options) == 'function')\r\n this.options = {onAdd: options};\r\n else if (options == null)\r\n this.options = {};\r\n else\r\n this.options = options;\r\n }\r\n\r\n this.groupIndex = 0;\r\n this.checkIndex = 1;\r\n this.dataIndex = 2;\r\n this._startrow = 2;\r\n this.tbody = null;\r\n this.items = null;\r\n this.key = null;\r\n\r\n this._lastcheck = null;\r\n },\r\n\r\n /**\r\n * Get table data as xml\r\n * @function getData\r\n */\r\n getXml: function() {\r\n var n = this.tbody.childNodes.length - this._startrow;\r\n if (n == 0)\r\n return '';\r\n var xml = '\\n';\r\n for (var i = 0; i < n; ++i) {\r\n var tr = this.tbody.childNodes[i + this._startrow];\r\n\r\n var hasdata = false;\r\n var row = {};\r\n var j = this.dataIndex;\r\n for (var k in this.items) {\r\n var v = scil.Form.getFieldData(tr.childNodes[j++].field);\r\n row[k] = v;\r\n if (!hasdata && v != null && v != '')\r\n hasdata = true;\r\n }\r\n\r\n if (!hasdata)\r\n continue;\r\n\r\n xml += '' + scil.Utils.escXmlValue(v) + '\\n';\r\n }\r\n xml += '\\n';\r\n }\r\n xml += '
';\r\n return xml;\r\n },\r\n\r\n /**\r\n * Set table xml data\r\n * @function setXml\r\n * @param {xml} xml\r\n * @returns null\r\n */\r\n setXml: function(xml, lockeditems) {\r\n var root = null;\r\n if (typeof xml == 'object') {\r\n root = xml;\r\n } else if (typeof xml == 'string') {\r\n var doc = scil.Utils.parseXml(xml);\r\n if (doc != null)\r\n root = doc.documentElement || doc.firstElementChild;\r\n }\r\n\r\n var data = [];\r\n try {\r\n if (root != null && root.getElementsByTagName == null)\r\n root = null;\r\n } catch (e) {\r\n }\r\n\r\n if (root != null) {\r\n var rows = root.getElementsByTagName('r');\r\n for (var i = 0; i < rows.length; ++i) {\r\n var row = {};\r\n\r\n var cells = rows[i].getElementsByTagName('i');\r\n for (var j = 0; j < cells.length; ++j) {\r\n var e = cells[j];\r\n var k = e.getAttribute('n');\r\n row[k] = e.text || e.textContent;\r\n }\r\n\r\n data.push(row);\r\n }\r\n }\r\n\r\n this.setData(data);\r\n },\r\n\r\n getCsv: function() {\r\n var s = '';\r\n var i = 0;\r\n for (var k in this.items) {\r\n if (++i > 1)\r\n s += ',';\r\n s += scil.Utils.escCsvValue(this.items[k].label);\r\n }\r\n s += '\\n';\r\n\r\n var n = this.tbody.childNodes.length - this._startrow;\r\n for (var j = 0; j < n; ++j) {\r\n var tr = this.tbody.childNodes[j + this._startrow];\r\n var row = this.getRowData(tr, true);\r\n\r\n i = 0;\r\n for (var k in this.items) {\r\n if (++i > 1)\r\n s += ',';\r\n s += scil.Utils.escCsvValue(row[k]);\r\n }\r\n\r\n s += '\\n';\r\n }\r\n return s;\r\n },\r\n\r\n /**\r\n * Get table data - collection: { id.1: {...}, id.2 : {...}, ... }\r\n * @function getData\r\n * @param {dictionary} collection - the collection that data will be placed in\r\n * @param {string} id - id prefix\r\n */\r\n getData: function(collection, id, rowcheck) {\r\n if (collection == null) {\r\n var rows = [];\r\n var n = this.tbody.childNodes.length - this._startrow;\r\n for (var i = 0; i < n; ++i) {\r\n var tr = this.tbody.childNodes[i + this._startrow];\r\n var row = this.getRowData(tr, rowcheck);\r\n rows.push(row);\r\n }\r\n return rows;\r\n } else {\r\n var n = this.tbody.childNodes.length - this._startrow;\r\n collection[id + '.n'] = n;\r\n for (var i = 0; i < n; ++i) {\r\n var tr = this.tbody.childNodes[i + this._startrow];\r\n var key = id + '.' + i + '.';\r\n if (tr.getAttribute('isnew') == '1')\r\n collection[key + 'isnew'] = 1;\r\n\r\n var j = this.dataIndex;\r\n for (var k in this.items)\r\n collection[key + k] = scil.Form.getFieldData(tr.childNodes[j++].field);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Get JSON data of a row\r\n * @function getRowData\r\n */\r\n getRowData: function(tr, rowcheck) {\r\n if (tr == null)\r\n return null;\r\n if (typeof (tr) == 'number') {\r\n tr = this.tbody.childNodes[tr + this._startrow];\r\n if (tr == null)\r\n return null;\r\n }\r\n\r\n var row = {};\r\n if (tr.getAttribute('isnew') == '1')\r\n row.isnew = 1;\r\n\r\n var j = this.dataIndex;\r\n for (var k in this.items) {\r\n var td = tr.childNodes[j++];\r\n var v = td == null ? null : scil.Form.getFieldData(td.field);\r\n if (v != null && v != '')\r\n row[k] = v;\r\n }\r\n\r\n if (rowcheck && tr.childNodes[this.checkIndex].firstChild.checked)\r\n row.rowchecked = true;\r\n\r\n return row;\r\n },\r\n\r\n getRowTexts: function(tr) {\r\n if (tr == null)\r\n return null;\r\n if (typeof (tr) == 'number') {\r\n tr = this.tbody.childNodes[tr + this._startrow];\r\n if (tr == null)\r\n return null;\r\n }\r\n\r\n var row = {};\r\n if (tr.getAttribute('isnew') == '1')\r\n row.isnew = 1;\r\n\r\n var j = this.dataIndex;\r\n for (var k in this.items) {\r\n var e = tr.childNodes[j++];\r\n var v = e.text || e.textContent;\r\n if (v != null && v != '')\r\n row[k] = v;\r\n }\r\n\r\n return row;\r\n },\r\n\r\n /**\r\n * Get JSON data of the current selected row\r\n * @function getCurrentRowData\r\n */\r\n getCurrentRowData: function() {\r\n return this.getRowData(this.currow);\r\n },\r\n\r\n /**\r\n * Set table data\r\n * @function setData\r\n * @param {array} data - the array of table data, one array item is for one row\r\n * @returns null\r\n */\r\n setData: function(data, lockeditems) {\r\n this.clear();\r\n if (data != null) {\r\n for (var i = 0; i < data.length; ++i)\r\n this.addRow(data[i], lockeditems);\r\n }\r\n\r\n if (!this.viewonly && this.options.addrow != false)\r\n this.addRow();\r\n },\r\n\r\n /**\r\n * Remove all rows\r\n * @function clear\r\n * @returns null\r\n */\r\n clear: function() {\r\n this.dirty = false;\r\n for (var i = this.tbody.childNodes.length - 1; i >= this._startrow; --i)\r\n this.tbody.removeChild(this.tbody.childNodes[i]);\r\n this.currow = null;\r\n },\r\n\r\n /**\r\n * Render table\r\n * @function render\r\n * @param {string or DOM} parent - parent element\r\n * @param {array} item - column definition as an array\r\n * @returns null\r\n */\r\n render: function(parent, items) {\r\n this.items = {};\r\n for (var id in items) {\r\n if (items[id] != null) {\r\n this.items[id] = items[id];\r\n if (items[id].iskey)\r\n this.key = id;\r\n }\r\n }\r\n this._hideCookieCols(this.items);\r\n\r\n if (typeof (parent) == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n var me = this;\r\n var div = scil.Utils.createElement(parent, 'div');\r\n this.tbody = scilligence.Utils.createTable(div, 0, 3, {borderRight: JSDraw2.Skin.jssdf.border, borderBottom: JSDraw2.Skin.jssdf.border, borderTop: JSDraw2.Skin.jssdf.border});\r\n this.tbody.parentNode.setAttribute('class', 'scil_table');\r\n if (!this.viewonly && this.options.addrow != false) {\r\n var addbtn = scil.Utils.createElement(scil.Utils.createElement(div, 'div'), 'img', null, null, {src: scil.Utils.imgSrc('img/add.gif'), title: scil.Lang.res('Add')});\r\n dojo.connect(addbtn, 'onclick', function() {\r\n if (me.options.onAdd != null) me.options.onAdd(me); else me.addRow();\r\n });\r\n }\r\n\r\n var r0 = scil.Utils.createElement(this.tbody, 'tr');\r\n var header0 = this.options.header0;\r\n var r = scil.Utils.createElement(this.tbody, 'tr');\r\n if (header0 != null) {\r\n scil.Utils.createElement(r0, 'td', null, {display: this.options.grouping ? '' : 'none'});\r\n scil.Utils.createElement(r0, 'td', null, {display: this.options.rowcheck ? '' : 'none'});\r\n for (var i = 0; i < header0.length; ++i) {\r\n var item = header0[i];\r\n if (item == null) {\r\n scil.Utils.createElement(r0, 'td');\r\n } else {\r\n var td = scil.Utils.createElement(r0, 'td', scil.Lang.res(item.label), scil.Table.headerstyles, {colSpan: item.colspan});\r\n td.style.textAlign = 'center';\r\n }\r\n }\r\n }\r\n\r\n var td = scil.Utils.createElement(r, 'td', null, scil.Table.headerstyles);\r\n if (this.options.grouping) {\r\n td.style.width = '5px';\r\n scil.Utils.createElement(td, 'img', null, null, {src: scil.Utils.imgSrc('img/minus.gif')}, function(e) {\r\n me.groupExpandAll(e);\r\n });\r\n } else {\r\n td.style.display = 'none';\r\n }\r\n\r\n var td = scil.Utils.createElement(r, 'td', null, scil.Table.headerstyles);\r\n if (this.options.rowcheck) {\r\n td.style.width = '5px';\r\n if (this.options.rowcheck != 'radio')\r\n scil.Utils.createElement(td, 'checkbox', null, null, null, function(e) {\r\n me.checkAll((e.srcElement || e.target).checked);\r\n });\r\n } else {\r\n td.style.display = 'none';\r\n }\r\n\r\n var style = scil.clone(scil.Table.headerstyles);\r\n style.borderBottom = JSDraw2.Skin.jssdf.border;\r\n style.borderLeft = JSDraw2.Skin.jssdf.border;\r\n\r\n for (var id in this.items) {\r\n var item = this.items[id];\r\n var s = scil.Lang.res(item.label);\r\n if (item.unit != null && item.unit != '')\r\n s += ' (' + scil.Lang.res(item.unit) + ')';\r\n var td = scil.Utils.createElement(r, 'td', s, style, {key: id});\r\n if (item.width != null)\r\n td.style.width = item.width + 'px';\r\n if (item.type == 'hidden' || item.ishidden)\r\n td.style.display = 'none';\r\n\r\n if (item.type == 'checkbox' && item.headercheckbox != false && !this.viewonly && !item.viewonly) {\r\n var chk = scil.Utils.createElement(td, 'checkbox');\r\n this.connectCheckAll(chk, id);\r\n }\r\n }\r\n if (this.header == false)\r\n r.style.display = 'none';\r\n if (!this.viewonly) {\r\n if (this.options.delrow != false)\r\n scil.Utils.createElement(r, 'td', ' ', style);\r\n this.addRow();\r\n }\r\n\r\n if (this.options.selectrow)\r\n dojo.connect(this.tbody, 'onclick', function(e) {\r\n me.clickRow(e);\r\n });\r\n },\r\n\r\n connectCheckAll: function(chk, id) {\r\n var me = this;\r\n dojo.connect(chk, 'onclick', function(e) {\r\n me.checkAll((e.srcElement || e.target).checked, id);\r\n });\r\n },\r\n\r\n hidColumn: function(key) {\r\n return this.showColumn(key, false);\r\n },\r\n\r\n /**\r\n * Show or hide a column\r\n * @function showColumn\r\n * @param {string} key\r\n * @param {bool} f\r\n * @returns true or false\r\n */\r\n showColumn: function(key, f) {\r\n if (this.options.header0 != null)\r\n return false;\r\n\r\n if (f == null)\r\n f = true;\r\n\r\n var item = this.items[key];\r\n if (item == null || item.type == 'hidden')\r\n return false;\r\n item.ishidden = !f;\r\n\r\n if (this.tbody == null || this.tbody.childNodes.length <= 1)\r\n return false;\r\n\r\n var icol = this.getColIndex(key);\r\n if (icol == -1)\r\n return false;\r\n\r\n for (var i = 1; i < this.tbody.childNodes.length; ++i)\r\n this.tbody.childNodes[i].childNodes[icol].style.display = f ? '' : 'none';\r\n\r\n return true;\r\n },\r\n\r\n getColIndex: function(key) {\r\n var tr = this.tbody.childNodes[1];\r\n for (var i = 0; i < tr.childNodes.length; ++i) {\r\n if (tr.childNodes[i].getAttribute('key') == key)\r\n return i;\r\n }\r\n\r\n return -1;\r\n },\r\n\r\n /**\r\n * Check all rows\r\n * @function checkAll\r\n */\r\n checkAll: function(f, key) {\r\n var nodes = this.tbody.childNodes;\r\n if (key == null) {\r\n for (var i = this._startrow; i < nodes.length; ++i) {\r\n if (nodes[i].style.display == 'none')\r\n nodes[i].childNodes[this.checkIndex].firstChild.checked = false;\r\n else\r\n nodes[i].childNodes[this.checkIndex].firstChild.checked = f;\r\n }\r\n } else {\r\n var icol = this.getColIndex(key);\r\n if (icol == -1)\r\n return false;\r\n\r\n for (var i = this._startrow; i < nodes.length; ++i) {\r\n if (nodes[i].style.display == 'none') {\r\n nodes[i].childNodes[this.checkIndex].firstChild.checked = false;\r\n } else {\r\n var td = nodes[i].childNodes[icol];\r\n var list = td.getElementsByTagName('input');\r\n if (list != null && list.length == 1)\r\n list[0].checked = f;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Get checked rows\r\n * @function getCheckedRows\r\n */\r\n getCheckedRows: function() {\r\n var ret = [];\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].childNodes[this.checkIndex].firstChild.checked)\r\n ret.push(i - this._startrow);\r\n }\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get checked row data\r\n * @function getCheckedRowData\r\n */\r\n getCheckedRowData: function() {\r\n var ret = [];\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].childNodes[this.checkIndex].firstChild.checked)\r\n ret.push(this.getRowData(list[i]));\r\n }\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get checked row data. If no row checked, it will use the current row\r\n * @function getCheckedRowData2\r\n */\r\n getCheckedRowData2: function() {\r\n var ret = [];\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].childNodes[this.checkIndex].firstChild.checked)\r\n ret.push(this.getRowData(list[i]));\r\n }\r\n\r\n if (ret.length == 0 && this.cur != null)\r\n ret.push(this.getCurrentRowData());\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get key of a row\r\n * @function getKey\r\n */\r\n getKey: function(tr) {\r\n return tr == null ? null : tr.getAttribute('key');\r\n },\r\n\r\n /**\r\n * Check a row by using its key\r\n * @function checkRow\r\n */\r\n checkRow: function(key) {\r\n if (!this.options.rowcheck)\r\n return;\r\n\r\n if (typeof key == 'string') {\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i)\r\n if (list[i].getAttribute('key') == key)\r\n list[i].childNodes[this.checkIndex].firstChild.checked = true;\r\n } else if (typeof key == 'object') {\r\n var tr = key;\r\n if (tr.tagName == 'TR')\r\n tr.childNodes[this.checkIndex].firstChild.checked = true;\r\n }\r\n },\r\n\r\n /**\r\n * Get all keys of checked rows\r\n * @function getCheckedKeys\r\n */\r\n getCheckedKeys: function() {\r\n var ret = [];\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].childNodes[this.checkIndex].firstChild.checked)\r\n ret.push(list[i].getAttribute('key'));\r\n }\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get all keys of checked rows. If no row checked, it returns selected row.\r\n * @function getCheckedKeys2\r\n */\r\n getCheckedKeys2: function() {\r\n var ret = this.getCheckedKeys();\r\n if (ret.length == 0) {\r\n var key = this.getCurrentKey();\r\n if (key != null)\r\n ret.push(key);\r\n }\r\n return ret;\r\n },\r\n\r\n /**\r\n * Check a row by using its key. If no row checked, it returns selected row.\r\n * @function getCheckedKeys2\r\n */\r\n getCheckedRows2: function() {\r\n var ret = this.getCheckedRows();\r\n if (ret.length == 0) {\r\n if (this.currow != null)\r\n ret.push(this.currow);\r\n }\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get the key of current row\r\n * @function getCurrentKey\r\n */\r\n getCurrentKey: function() {\r\n if (this.currow == null)\r\n return null;\r\n\r\n var key = this.currow.getAttribute('key');\r\n return key == '' ? null : key;\r\n },\r\n\r\n clickRow: function(e) {\r\n var src = e.srcElement || e.target;\r\n var src;\r\n if (src.tagName == 'TR')\r\n tr = src;\r\n else if (src.tagName == 'A')\r\n return;\r\n else\r\n tr = scil.Utils.getParent(src, 'TR');\r\n\r\n if (tr != null && this.tbody != tr.parentNode)\r\n tr = null;\r\n this.selectRow(tr);\r\n },\r\n\r\n selectFirstRow: function() {\r\n var tr = this.tbody.childNodes[this._startrow];\r\n this.selectRow(tr);\r\n },\r\n\r\n findRow: function(key) {\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].getAttribute('key') == key)\r\n return list[i];\r\n }\r\n return null;\r\n },\r\n\r\n selectRow: function(tr) {\r\n if (typeof (tr) == 'string')\r\n tr = this.findRow(tr);\r\n\r\n var old = this.currow;\r\n if (this.currow != null)\r\n this.currow.style.backgroundColor = this.currow.getAttribute('bgcolor');\r\n this.currow = tr;\r\n if (this.currow != null)\r\n this.currow.style.backgroundColor = JSDraw2.Skin.jssdf.rowcolor;\r\n\r\n if (this.options.onselectrow != null)\r\n this.options.onselectrow(this.currow, old);\r\n },\r\n\r\n /**\r\n * Delete a row\r\n * @function delRow\r\n * @param {string} key the key value\r\n * @returns true or false\r\n */\r\n delRow: function(key) {\r\n var list = this.tbody.childNodes;\r\n for (var i = 0; i < list.length; ++i) {\r\n if (list[i].getAttribute('key') == key) {\r\n this.tbody.removeChild(list[i]);\r\n if (this.options.onchange != null)\r\n this.options.onchange(this);\r\n this.dirty = true;\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Update a row\r\n * @function updateRow\r\n * @param {string} key the key value\r\n * @param {dictionary} data row data\r\n * @returns true or false\r\n */\r\n updateRow: function(key, data) {\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].getAttribute('key') == key) {\r\n var tr = list[i];\r\n if (data == null)\r\n data = {};\r\n data.rowchecked = this.options.rowcheck && tr.childNodes[this.checkIndex].firstChild.checked;\r\n var r = this.addRow(data, null, tr);\r\n this.tbody.removeChild(tr);\r\n if (this.currow == tr)\r\n this.selectRow(r);\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Set cell value\r\n * @function setCellValue2\r\n * @param {string/number/DOM} rowkey the key of the row, or row index, or TR\r\n * @param {string} colkey the key of the column\r\n * @param {object} value\r\n * @returns true or false\r\n */\r\n setCellValue2: function(rowkey, colkey, value) {\r\n if (this.items[colkey] == null)\r\n return false;\r\n\r\n var tr = null;\r\n if (typeof (rowkey) == 'number') {\r\n tr = this.tbody.childNodes[this._startrow + rowkey];\r\n } else if (typeof (rowkey) == 'object' && rowkey.tagName == 'TR') {\r\n tr = rowkey;\r\n } else {\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].getAttribute('key') == rowkey) {\r\n tr = list[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (tr == null)\r\n return false;\r\n\r\n for (var i = 0; i < tr.childNodes.length; ++i) {\r\n var td = tr.childNodes[i];\r\n if (td.getAttribute('__tid') == colkey && td.field != null) {\r\n scil.Form.setFieldData(td.field, this.items[colkey], this.viewonly, value);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Get cell value\r\n * @function getCellValue2\r\n * @param {string/number} rowkey the key of the row, or row index\r\n * @param {string} colkey the key of the column\r\n * @returns the cell value\r\n */\r\n getCellValue2: function(rowkey, colkey) {\r\n if (this.items[colkey] == null)\r\n return null;\r\n\r\n var tr = null;\r\n if (typeof (rowkey) == 'number') {\r\n tr = this.tbody.childNodes[this._startrow + rowkey];\r\n } else {\r\n var list = this.tbody.childNodes;\r\n for (var i = this._startrow; i < list.length; ++i) {\r\n if (list[i].getAttribute('key') == rowkey) {\r\n tr = list[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (tr == null)\r\n return null;\r\n\r\n for (var i = 0; i < tr.childNodes.length; ++i) {\r\n var td = tr.childNodes[i];\r\n if (td.getAttribute('__tid') == colkey && td.field != null)\r\n return scil.Form.getFieldData(td.field);\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _hilitRow: function(e, f) {\r\n var tr = e.target || e.srcElement;\r\n if (tr.tagName != 'TR')\r\n tr = scil.Utils.getParent(tr, 'TR');\r\n if (tr == null || tr.getAttribute('sciltable') != '1')\r\n return;\r\n\r\n if (f || tr == this.currow)\r\n tr.style.backgroundColor = JSDraw2.Skin.jssdf.rowcolor;\r\n else\r\n tr.style.backgroundColor = tr.getAttribute('bgcolor');\r\n },\r\n\r\n groupExpandAll: function(e) {\r\n var img = e.target || e.srcElement;\r\n var f = scil.Utils.endswith(img.src, 'minus.gif');\r\n img.src = scil.Utils.imgSrc('img/' + (f ? 'plus' : 'minus') + '.gif');\r\n\r\n var tr = this.tbody.childNodes[this._startrow];\r\n while (tr != null) {\r\n tr = this.groupExpand(tr, f);\r\n }\r\n },\r\n\r\n groupExpand: function(tr, f) {\r\n var s0 = this.getCellValue(tr, this.options.grouping);\r\n if (scil.Utils.isNullOrEmpty(s0))\r\n return null;\r\n\r\n var img = tr.childNodes[this.groupIndex].firstChild;\r\n if (img.tagName != 'IMG')\r\n return null;\r\n if (f == null) {\r\n f = scil.Utils.endswith(img.src, 'minus.gif');\r\n }\r\n\r\n var n = 0;\r\n while ((tr = tr.nextSibling) != null) {\r\n var s = this.getCellValue(tr, this.options.grouping);\r\n if (s0 != s)\r\n break;\r\n ++n;\r\n tr.style.display = f ? 'none' : '';\r\n }\r\n\r\n img.src = scil.Utils.imgSrc('img/' + (f ? (n > 0 ? 'plus' : 'plus0') : 'minus') + '.gif');\r\n return tr;\r\n },\r\n\r\n /**\r\n * Add a row\r\n * @function addRow\r\n * @param {dictionary} values row values\r\n * @param {reserved} lockeditems\r\n * @param {DOM} beforerow new row will be inserted before this row\r\n * @returns null\r\n */\r\n addRow: function(values, lockeditems, beforerow) {\r\n if (values == null && this.options.onAdd != null)\r\n return null;\r\n\r\n if (this.options.onBeforeAddRow != null)\r\n values = this.options.onBeforeAddRow(values);\r\n\r\n var me = this;\r\n var bgcolor = this.tbody.childNodes.length % 2 == 1 ? JSDraw2.Skin.jssdf.oddcolor : JSDraw2.Skin.jssdf.evencolor;\r\n var r = scil.Utils.createElement(null, 'tr', null, {backgroundColor: bgcolor}, {sciltable: '1', bgcolor: bgcolor});\r\n if (beforerow == null)\r\n this.tbody.appendChild(r);\r\n else\r\n this.tbody.insertBefore(r, beforerow);\r\n\r\n dojo.connect(this.tbody.parentNode, 'onmouseover', function(e) {\r\n me._hilitRow(e, true);\r\n });\r\n dojo.connect(this.tbody.parentNode, 'onmouseout', function(e) {\r\n me._hilitRow(e, false);\r\n });\r\n\r\n var newgroup = false;\r\n var td = scil.Utils.createElement(r, 'td');\r\n if (this.options.grouping) {\r\n var s = values == null ? null : values[this.options.grouping];\r\n var s0 = this.getCellValue(r.previousSibling, this.options.grouping);\r\n if (scil.Utils.isNullOrEmpty(s) || s != s0) {\r\n newgroup = true;\r\n var img = scil.Utils.createElement(td, 'img', null, null, {title: 'Expand/Collapse All', src: scil.Utils.imgSrc('img/minus.gif')});\r\n scil.connect(img, 'onclick', function(e) {\r\n me.groupExpand(r);\r\n });\r\n }\r\n } else {\r\n td.style.display = 'none';\r\n }\r\n\r\n var td = scil.Utils.createElement(r, 'td');\r\n if (this.options.rowcheck) {\r\n var name = this.options.rowcheck == 'radio' ? '__scil_table_' + this._tableid + '_radio' : null;\r\n var checktype = this.options.rowcheck == 'radio' ? 'radio' : 'checkbox';\r\n var check = scil.Utils.createElement(td, checktype, null, null, {name: name});\r\n check.checked = values == null ? false : values.rowchecked;\r\n if (this.options.onrowcheck != null)\r\n dojo.connect(check, 'onchange', function() {\r\n me.options.onrowcheck(r, check.checked);\r\n });\r\n\r\n if (checktype == 'checkbox')\r\n scil.connect(check, 'onclick', function(e) {\r\n me.checkedClick(e);\r\n });\r\n } else {\r\n td.style.display = 'none';\r\n }\r\n\r\n if (values == null) {\r\n r.setAttribute('isnew', '1');\r\n } else {\r\n if (this.key != null && values[this.key] != null)\r\n r.setAttribute('key', values[this.key]);\r\n }\r\n\r\n for (var id in this.items) {\r\n var item = this.items[id];\r\n var td = scil.Utils.createElement(r, 'td', null, item.styles, item.attributes);\r\n td.style.borderLeft = JSDraw2.Skin.jssdf.border;\r\n if (item.type == 'hidden' || item.ishidden)\r\n td.style.display = 'none';\r\n\r\n var viewonly = this.viewonly || item.viewonly || lockeditems != null && lockeditems[id];\r\n td.field = scil.Form.createField(td, item, viewonly, values == null ? item.value : values[id], values, true, true);\r\n if (viewonly && item.type != 'img') {\r\n td.field.style.width = '100%';\r\n } else {\r\n if (td.field.tagName == 'INPUT' || td.field.tagName == 'SELECT' || td.field.tagName == 'TEXTAREA') {\r\n this._connectOnchange(td.field, item);\r\n if (item.addrowonenter && beforerow == null)\r\n td.field.focus();\r\n }\r\n }\r\n\r\n td.setAttribute('__tid', id);\r\n this.connectKeydown(td, item);\r\n }\r\n\r\n if (!this.viewonly && lockeditems == null && this.options.delrow != false) {\r\n var td = scil.Utils.createElement(r, 'td');\r\n td.style.borderLeft = JSDraw2.Skin.jssdf.border;\r\n var b = scil.Utils.createElement(td, 'img', null, null, {src: scil.Utils.imgSrc('img/del.gif'), title: scil.Lang.res('Delete')});\r\n dojo.connect(b, 'onclick', function() {\r\n me.removeRow(this);\r\n });\r\n }\r\n\r\n if (this.options.onAddRow != null)\r\n this.options.onAddRow(r, values);\r\n\r\n if (newgroup && this.options.grouplinestyle != null) {\r\n for (var i = 0; i < r.childNodes.length; ++i)\r\n r.childNodes[i].style.borderTop = this.options.grouplinestyle;\r\n }\r\n\r\n return r;\r\n },\r\n\r\n checkedClick: function(e) {\r\n var check = e.srcElement || e.target;\r\n if (!check.checked)\r\n return;\r\n\r\n if (e.shiftKey) {\r\n var nodes = this.tbody.childNodes;\r\n var start = scil.Utils.indexOf(nodes, scil.Utils.getParent(this._lastcheck, 'TR'));\r\n var end = scil.Utils.indexOf(nodes, scil.Utils.getParent(check, 'TR'));\r\n if (st != -1 && ed != -1) {\r\n var st = Math.min(start, end);\r\n var ed = Math.max(start, end);\r\n for (var i = st; i <= ed; ++i) {\r\n if (nodes[i].style.display == 'none')\r\n nodes[i].childNodes[this.checkIndex].firstChild.checked = false;\r\n else\r\n nodes[i].childNodes[this.checkIndex].firstChild.checked = true;\r\n }\r\n }\r\n }\r\n this._lastcheck = check;\r\n },\r\n\r\n _connectOnchange: function(field, item) {\r\n var me = this;\r\n dojo.connect(field, 'onchange', function(e) {\r\n me.onchange(e, item);\r\n });\r\n },\r\n\r\n setCellValue: function(tr, key, v) {\r\n for (var i = 0; i < tr.childNodes.length; ++i) {\r\n var td = tr.childNodes[i];\r\n if (td.field != null && td.getAttribute('__tid') == key) {\r\n scil.Form.setFieldData(td.field, this.items[key], this.viewonly, v);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n getCellValue: function(tr, key) {\r\n for (var i = 0; i < tr.childNodes.length; ++i) {\r\n var td = tr.childNodes[i];\r\n if (td.field != null && td.getAttribute('__tid') == key)\r\n return scil.Form.getFieldData(td.field);\r\n }\r\n return null;\r\n },\r\n\r\n connectKeydown: function(td, item) {\r\n if (this.viewonly || td.field.tagName != 'INPUT' || !item.addrowonenter)\r\n return;\r\n\r\n var me = this;\r\n dojo.connect(td.field, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) {\r\n var tr = scil.Utils.getParent(td, 'TR');\r\n if (typeof (item.addrowonenter) == 'function')\r\n item.addrowonenter(td, item, me);\r\n if (me.tbody.childNodes[me.tbody.childNodes.length - 1] == tr)\r\n me.addRow();\r\n }\r\n });\r\n },\r\n\r\n onchange: function(e, item) {\r\n this.dirty = true;\r\n if (this.options.onchange != null)\r\n this.options.onchange(this, e, item);\r\n },\r\n\r\n removeRow: function(img) {\r\n var me = this;\r\n scil.Utils.confirmYes('Delete this row?', function() {\r\n var tr = scilligence.Utils.getParent(img, 'TR');\r\n tr.parentNode.removeChild(tr);\r\n if (me.options.onchange != null)\r\n me.options.onchange(this);\r\n me.dirty = true;\r\n });\r\n },\r\n\r\n showHideColumns: function() {\r\n if (this.showhideDlg == null) {\r\n var columns = {\r\n caption: {label: 'Caption', width: 400},\r\n key: {label: 'Key', width: 100, iskey: true},\r\n };\r\n\r\n var me = this;\r\n var fields = {table: {type: 'table', columns: columns, options: {rowcheck: true, viewonly: true}}};\r\n this.showhideDlg = scil.Form.createDlgForm('Show/Hide Columns', fields, {\r\n label: 'OK', onclick: function() {\r\n me.showHideColumns2();\r\n },\r\n }, {hidelabel: true});\r\n }\r\n\r\n this.showhideDlg.show();\r\n\r\n var rows = [];\r\n for (var k in this.items) {\r\n if (this.items[k].type != 'hidden')\r\n rows.push({caption: this.items[k].label, key: k, rowchecked: !this.items[k].ishidden});\r\n }\r\n this.showhideDlg.form.setData({table: rows});\r\n this.showhideDlg.moveCenter();\r\n },\r\n\r\n showHideColumns2: function() {\r\n var cols = '';\r\n\r\n var table = this.showhideDlg.form.fields.table.jsd;\r\n var list = table.getData(null, null, true);\r\n for (var i = 0; i < list.length; ++i) {\r\n var f = list[i].rowchecked == true;\r\n this.showColumn(list[i].key, f);\r\n if (!f)\r\n cols += list[i].key + ',';\r\n }\r\n this.showhideDlg.hide();\r\n\r\n if (!scil.Utils.isNullOrEmpty(this.options.hidecolumncookiekey))\r\n scil.Utils.createCookie(this.options.hidecolumncookiekey + '_scil_table_hidecols', cols, 3650); // 10 years\r\n },\r\n\r\n _hideCookieCols: function(cols) {\r\n if (scil.Utils.isNullOrEmpty(this.options.hidecolumncookiekey))\r\n return;\r\n\r\n var s = scil.Utils.readCookie(this.options.hidecolumncookiekey + '_scil_table_hidecols');\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return;\r\n\r\n var ss = s.split(',');\r\n for (var i = 0; i < ss.length; ++i) {\r\n var col = cols[ss[i]];\r\n if (col != null)\r\n cols[ss[i]].ishidden = true;\r\n }\r\n },\r\n});\r\n\r\n\r\nscilligence.apply(scilligence.Table, {\r\n headerstyles: { /*border: \"solid 1px #eee\", */whiteSpace: 'nowrap', textAlign: 'center', verticalAlign: 'top', backgroundColor: '#bbb'}, //scil.Utils.imgSrc(\"img/header-bg.gif\", true) + \" repeat-x\" },\r\n\r\n /**\r\n * Create a table\r\n * @function {static} create\r\n * @param {object} obj the data object to be loaded into the table. obj.load() will be called\r\n * @param {string or DOM} parent parent element\r\n * @param {array} items table column items. item: { id, iskey ... }\r\n * @param {bool} viewonly indicate if creating a viewonly table\r\n * @returns a new Table object\r\n */\r\n create: function(obj, parent, items, viewonly, loadimmediately) {\r\n if (typeof parent == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n var div = scil.Utils.createElement(parent, 'div');\r\n var table = new scil.Table(viewonly);\r\n table.render(div, items);\r\n\r\n if (loadimmediately != false && obj.load != null)\r\n scil.onload(function() {\r\n obj.load();\r\n });\r\n return table;\r\n },\r\n\r\n /**\r\n * List pages\r\n * @function {static} listPages\r\n * @param {DOM} div - parent div\r\n * @param {number} page\r\n * @param {number} totalpages\r\n * @param {function} onclick(page) {}\r\n */\r\n listPages: function(div, page, totalpages, onclick) {\r\n scil.Utils.removeAll(div);\r\n if (!(page >= 1) || !(totalpages > 1))\r\n return;\r\n\r\n --page;\r\n\r\n var st, ed;\r\n if (totalpages <= 11) {\r\n st = 0;\r\n ed = totalpages;\r\n } else {\r\n st = page - 5;\r\n if (st < 0)\r\n st = 0;\r\n ed = st + 11;\r\n if (ed > totalpages)\r\n ed = totalpages;\r\n if (ed - st < 11) {\r\n st = ed - 11;\r\n if (st < 0)\r\n st = 0;\r\n }\r\n }\r\n\r\n this.createPage(div, scil.Lang.res('Previous Page'), page > 0 ? page : null, onclick);\r\n\r\n if (st > 0) {\r\n this.createPage(div, 1, 1, onclick);\r\n if (st > 1)\r\n this.createPage(div, '...', null, onclick);\r\n }\r\n\r\n for (var k = st; k < page; ++k)\r\n this.createPage(div, k + 1, k + 1, onclick);\r\n this.createPage(div, page + 1, null, onclick);\r\n for (var k = page + 1; k < ed; ++k)\r\n this.createPage(div, k + 1, k + 1, onclick);\r\n if (ed < totalpages) {\r\n if (ed + 1 < totalpages)\r\n this.createPage(div, '...', null, onclick);\r\n this.createPage(div, totalpages, totalpages, onclick);\r\n }\r\n\r\n this.createPage(div, scil.Lang.res('Next Page'), page + 1 < totalpages ? page + 2 : null, onclick);\r\n },\r\n\r\n createPage: function(div, label, page, onclick) {\r\n if (page == null)\r\n scil.Utils.createElement(div, 'span', label);\r\n else\r\n scil.Utils.createButton(div, {\r\n label: label, type: 'a', onclick: function() {\r\n onclick(page);\r\n },\r\n });\r\n\r\n scil.Utils.createElement(div, 'span', ' ');\r\n },\r\n\r\n rows2xml: function(rows) {\r\n if (rows == null)\r\n return null;\r\n\r\n var s = '';\r\n for (var i = 0; i < rows.length; ++i) {\r\n var r = rows[i];\r\n s += '';\r\n for (var k in r) {\r\n var v = r[k];\r\n if (!scil.Utils.isNullOrEmpty(v))\r\n s += '' + scil.Utils.escXmlValue(v) + '';\r\n }\r\n s += '';\r\n }\r\n s += '
';\r\n return s;\r\n }\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * Tree class - Tree Control\r\n * @class scilligence.Tree\r\n *
\r\n * Example:\r\n *    var parent = scil.Utils.createElement(document.body, \"div\");\r\n *    var ac = scil.Tree(parent, { url: \"/path/ajax.ashx?cmd=loadtree\" });\r\n * 
\r\n */\r\nscil.Tree = scil.extend(scil._base, {\r\n /**\r\n * @constructor Tree\r\n * @param {string or DOM} parent - the parent element\r\n * @param {dictionary} options\r\n * @param {bool} solo\r\n */\r\n constructor: function(parent, options, solo, dropdown) {\r\n this.T = 'TREE';\r\n this.container = parent;\r\n this.options = options == null ? {} : options;\r\n this.solo = solo != null ? solo : this.options.solo;\r\n this.dropdown = dropdown != null ? dropdown : this.options.dropdown;\r\n\r\n this.onAddItem = null;\r\n this.onSelectItem = null;\r\n this.onExpandItem = null;\r\n this.cur = null;\r\n this.margin = 28;\r\n this.idname = 'id';\r\n\r\n var me = this;\r\n scil.Utils.removeAll(parent);\r\n //dojo.connect(parent, \"onclick\", function (e) { me.onSelect(e.srcElement || e.target); });\r\n },\r\n\r\n clear: function() {\r\n scil.Utils.removeAll(this.container);\r\n },\r\n\r\n reloadCur: function() {\r\n if (this.cur == null)\r\n return;\r\n\r\n this.reload(this.cur);\r\n },\r\n\r\n reload: function(node) {\r\n if (node == null)\r\n return false;\r\n\r\n node.removeAttribute('loaded');\r\n if (node.firstChild.nextSibling != null)\r\n node.removeChild(node.firstChild.nextSibling);\r\n\r\n var img = this._expand(node);\r\n this.onExpand(img);\r\n return true;\r\n },\r\n\r\n getCurRoot: function() {\r\n return this.getRoot(this.cur);\r\n },\r\n\r\n getRoot: function(node) {\r\n if (node == null)\r\n return null;\r\n\r\n var n = this.getParent(node);\r\n var p = node;\r\n while (n != null) {\r\n p = n;\r\n n = this.getParent(p);\r\n }\r\n return p;\r\n },\r\n\r\n getParent: function(node) {\r\n return node.parentNode == null || node.parentNode == this.container ? null : node.parentNode.parentNode;\r\n },\r\n\r\n add: function(parent, item) {\r\n if (item == null)\r\n return null;\r\n\r\n if (item.length != null) {\r\n for (var i = 0; i < item.length; ++i)\r\n this.add(parent, item[i]);\r\n return null;\r\n }\r\n\r\n if (item._more)\r\n item.leaf = true;\r\n if (this.options.onAddItem != null)\r\n item = this.options.onAddItem(item);\r\n else if (this.onAddItem != null)\r\n item = this.onAddItem(item);\r\n\r\n var n = null;\r\n if (parent == null) {\r\n n = scilligence.Utils.createElement(this.container, 'div');\r\n } else {\r\n var container = parent.firstChild.nextSibling;\r\n if (container == null)\r\n container = scil.Utils.createElement(parent, 'div', null, {marginLeft: this.margin + 'px'});\r\n n = scil.Utils.createElement(container, 'div');\r\n }\r\n\r\n n.item = item;\r\n\r\n var m = scilligence.Utils.createElement(n, 'div', null, {padding: '3px 0 3px 0', whiteSpace: 'nowrap'});\r\n var img = scilligence.Utils.createElement(m, 'img', null, {width: '16px'}, item.leaf || item.disabled ? {src: scil.Utils.imgSrc('img/blank.gif')} : {src: scil.Utils.imgSrc('img/plus.gif'), title: 'Expand'});\r\n var me = this;\r\n dojo.connect(img, 'onclick', function(e) {\r\n me.onExpand(e.srcElement || e.target);\r\n });\r\n if (this.dropdown)\r\n scilligence.Utils.createElement(m, 'img', null, null, {src: item.shortcut ? 'img/status_shortcut.gif' : 'img/status_' + (item.status == null || item.status == '' ? 'open' : item.status) + '.gif'});\r\n if (item.icon != null) {\r\n if (item.icon.indexOf('/') < 0)\r\n item.icon = 'img/icons/' + item.icon + '.gif';\r\n scilligence.Utils.createElement(m, 'img', null, {paddingRight: this.options.icongap}, {src: item.icon});\r\n }\r\n\r\n scil.Utils.createElement(m, 'span', item._more ? 'more...' : item.name);\r\n m.className = 'tbar';\r\n if (item.disabled) {\r\n m.style.color = 'gray';\r\n m.setAttribute('disabled', 'on');\r\n } else {\r\n m.style.cursor = 'pointer';\r\n dojo.connect(m, 'onclick', function(e) {\r\n if ((e.target || e.srcElement) != m.firstChild) me.select(m.parentNode);\r\n });\r\n }\r\n\r\n this.add(n, item.children);\r\n if (parent != null)\r\n this.expand(parent, true);\r\n if (item.expand == false)\r\n this.expand(n, false);\r\n\r\n if (item.selected)\r\n this.select(n);\r\n return n;\r\n },\r\n\r\n expand: function(node, f) {\r\n var bar = node.firstChild;\r\n var img = bar.firstChild;\r\n if (bar.nextSibling == null) {\r\n img.src = 'img/blank.gif';\r\n img.removeAttribute('title');\r\n } else {\r\n bar.nextSibling.style.display = f ? '' : 'none';\r\n this._expand(node, f);\r\n }\r\n },\r\n\r\n _expand: function(node, f) {\r\n var img = node.firstChild.firstChild;\r\n img.src = scil.Utils.imgSrc(f ? 'img/minus.gif' : 'img/plus.gif');\r\n img.setAttribute('title', f ? 'Shrink' : 'Expand');\r\n return img;\r\n },\r\n\r\n shrinkSiblings: function(node) {\r\n var list = node.parentNode.childNodes;\r\n for (var i = 0; i < list.length; ++i) {\r\n if (list[i] != node)\r\n this.expand(list[i], false);\r\n }\r\n },\r\n\r\n onExpand: function(img) {\r\n var bar = img.parentNode;\r\n if (bar.tagName != 'DIV' || bar.className != 'tbar')\r\n return;\r\n\r\n var f = null;\r\n var n = bar.parentNode;\r\n if (n != null && n.item != null && n.item.leaf)\r\n return;\r\n\r\n if (this.options.url == null || n.getAttribute('loaded') == '1' || bar.nextSibling != null) {\r\n f = bar.nextSibling == null || bar.nextSibling.style.display == 'none';\r\n this.expand(n, f);\r\n if (f && this.solo)\r\n this.shrinkSiblings(n);\r\n return;\r\n }\r\n\r\n if (this.onExpandItem != null) {\r\n if (this.onExpandItem(n, f))\r\n return;\r\n }\r\n\r\n this.loadNodes(n);\r\n },\r\n\r\n loadNodes: function(n) {\r\n var me = this;\r\n var fn = function(ret) {\r\n if (n.item._more) {\r\n var parent = n.parentNode;\r\n parent.removeChild(n);\r\n n = parent.parentNode;\r\n } else {\r\n if (n.getAttribute('loaded') == '1')\r\n return;\r\n n.setAttribute('loaded', '1');\r\n }\r\n\r\n if (ret.rows != null && ret.rows.length > 0)\r\n me.add(n, ret.rows);\r\n else if (ret.length > 0)\r\n me.add(n, ret);\r\n me.expand(n, true);\r\n };\r\n\r\n if (n.item.children != null) {\r\n fn(n.item.children);\r\n return;\r\n }\r\n\r\n var beforeload = function() {\r\n n.firstChild.firstChild.src = scil.Utils.imgSrc('img/animatorsmall.gif');\r\n };\r\n var afterload = function() {\r\n n.firstChild.firstChild.src = scil.Utils.imgSrc('img/plus.gif');\r\n };\r\n var args = n.item;\r\n if (this.onAjaxData != null)\r\n args = this.onAjaxData(n);\r\n if (this.options.url != null && this.options.url != '')\r\n scil.Utils.ajax(this.options.url, fn, args, {popup: false, beforeload: beforeload, afterload: afterload});\r\n },\r\n\r\n select: function(node) {\r\n if (typeof node == 'string')\r\n node = this.find(null, node);\r\n\r\n if (node == null || node.item != null && node.item.selectable == false)\r\n return;\r\n\r\n if (node.item != null && node.item._more) {\r\n this.loadNodes(node);\r\n return;\r\n }\r\n\r\n if (this.cur != null)\r\n this.cur.firstChild.style.background = '';\r\n this.cur = node;\r\n if (this.dropdown && this.cur != null)\r\n this.cur.firstChild.style.background = '#f6f4b9';\r\n this.cur.firstChild.style.background = '#ddf';\r\n if (this.onSelectItem != null) {\r\n var isleaf = null;\r\n if (this.cur != null)\r\n isleaf = this.cur.firstChild.nextSibling == null;\r\n this.onSelectItem(this.cur, isleaf);\r\n }\r\n },\r\n\r\n getIconText: function(node) {\r\n if (node == null)\r\n return null;\r\n var img = node.firstChild.childNodes[2];\r\n if (img.tagName == 'SPAN')\r\n return img.innerHTML;\r\n return '' + img.nextSibling.innerHTML;\r\n },\r\n\r\n setCurrent: function(value, key) {\r\n var n = this.find(null, value, key);\r\n if (n != null)\r\n this.select(n);\r\n\r\n return n;\r\n },\r\n\r\n find: function(parent, value, key) {\r\n var container = parent == null ? this.container : parent.firstChild.nextSibling;\r\n if (container == null)\r\n return null;\r\n\r\n if (key == null)\r\n key = 'id';\r\n\r\n var children = container.childNodes;\r\n for (var i = 0; i < children.length; ++i) {\r\n var n = children[i];\r\n if (n.item != null && n.item[key] == value)\r\n return n;\r\n\r\n var c = this.find(n, value, key);\r\n if (c != null)\r\n return c;\r\n }\r\n return null;\r\n },\r\n\r\n getChildren: function(parent) {\r\n var container = parent == null ? this.container : parent.firstChild.nextSibling;\r\n return container == null ? null : container.childNodes;\r\n },\r\n\r\n getParent: function(n) {\r\n return n.parentNode.parentNode;\r\n },\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nscil.UploadFile = {\r\n dlg: null,\r\n form: null,\r\n msg: null,\r\n files: [],\r\n filetypes: [],\r\n kIframe: \"__scil_uploadfile_iframe\",\r\n\r\n show: function (options) {\r\n this.create();\r\n this.dlg.show();\r\n this.form.reset();\r\n this.options = options == null ? {} : options;\r\n\r\n if (options.msg != null)\r\n this.msg.innerHTML = options.msg;\r\n\r\n for (var i = 0; i < this.files.length; ++i)\r\n this.files[i].value = \"\";\r\n for (var i = 0; i < this.filetypes.length; ++i) {\r\n scil.Utils.removeAll(this.filetypes[i]);\r\n this.filetypes[i].style.display = this.options.filetypes != null ? \"\" : \"none\";\r\n if (this.options.filetypes != null)\r\n scil.Utils.listOptions(this.filetypes[i], this.options.filetypes);\r\n }\r\n },\r\n\r\n upload: function () {\r\n var me = this;\r\n var params = this.options.params;\r\n scil.Utils.ajaxUploadFile(this.form, this.options.url, params == null ? {} : params, function (ret) { me.dlg.hide(); me.options.callback(ret); });\r\n },\r\n\r\n create: function (parent) {\r\n if (this.dlg != null)\r\n return;\r\n\r\n var me = this;\r\n // form method='post' id='__newfile' enctype=''\r\n var div = JsUtils.createElement(null, \"div\", \"
\", { padding: \"15px\" });\r\n this.form = div.firstChild;\r\n this.msg = scil.Utils.createElement(this.form, \"div\", \"Please specify files to be uploaded\");\r\n var tbody = scil.Utils.createTable(this.form);\r\n for (var i = 0; i < 5; ++i) {\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n var td = scil.Utils.createElement(tr, \"td\");\r\n var file = scil.Utils.createElement(td, \"file\", null, null, { name: \"f\" + i });\r\n\r\n td = scil.Utils.createElement(tr, \"td\");\r\n var type = scil.Utils.createElement(td, \"select\", null, null, { name: \"filetype.f\" + i });\r\n\r\n this.files.push(file);\r\n this.filetypes.push(type);\r\n }\r\n\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n var td = scil.Utils.createElement(tr, \"td\", null, { paddingTop: \"10px\", textAlign: \"center\" }, { colSpan: 2 });\r\n scil.Utils.createButton(td, { src: scil.App.imgSmall(\"submit.png\"), label: \"Upload\", onclick: function () { me.upload(); } });\r\n\r\n this.dlg = new scil.Dialog(\"Upload File\", div);\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.BA = scilligence.extend(scilligence._base, {\r\n constructor: function (b, a, ri) {\r\n this.b = b;\r\n this.a = a;\r\n this.ringclosure = ri;\r\n this.next = [];\r\n this.f = null;\r\n this.parent = null;\r\n this.depth = null;\r\n },\r\n\r\n find: function (a) {\r\n var stack = new JSDraw2.Stack();\r\n stack.push(this);\r\n while (stack.length() > 0) {\r\n var ba = stack.pop();\r\n if (ba.a == a)\r\n return ba;\r\n\r\n for (var k = 0; k < ba.next.length; ++k)\r\n stack.push(ba.next[k]);\r\n }\r\n\r\n return null;\r\n },\r\n\r\n list: function (list, mode) {\r\n var stack = new JSDraw2.Stack();\r\n stack.push(this);\r\n var depthfirst = mode == \"depthfirst\";\r\n while (stack.length() > 0) {\r\n var ba = depthfirst ? stack.pop() : stack.popHead();\r\n list.push(ba);\r\n for (var k = 0; k < ba.next.length; ++k)\r\n stack.push(ba.next[k]);\r\n }\r\n },\r\n\r\n startAtom: function () {\r\n return this.b == null ? null : this.b.otherAtom(this.a);\r\n },\r\n\r\n addNext: function (ba) {\r\n this.next.push(ba);\r\n ba.parent = this;\r\n ba.depth = this.depth + 1;\r\n },\r\n\r\n stereo: function () {\r\n var bs = this.a.bonds;\r\n if (this.b == null || !this.a.isMarkedStereo())\r\n return null;\r\n\r\n\r\n // find out 2D layout\r\n var angles = [];\r\n var bonds = [];\r\n var a0 = this.a;\r\n var angle0 = this.b.otherAtom(a0).p.angleTo(a0.p);\r\n DEBUG.print(a0.elem);\r\n DEBUG.print(angle0);\r\n for (var i = 0; i < bs.length; ++i) {\r\n if (bs[i] == this.b)\r\n continue;\r\n\r\n var a1 = bs[i].otherAtom(a0);\r\n var ang = a1.p.angleTo(a0.p);\r\n var angle = ang - angle0;\r\n DEBUG.print(a1.elem + \", \" + ang + \", \" + angle);\r\n if (angle < 0)\r\n angle += 360;\r\n var p = angles.length;\r\n for (var k = 0; k < angles.length; ++k) {\r\n if (angle < angles[k]) {\r\n p = k;\r\n break;\r\n }\r\n }\r\n\r\n var next = null;\r\n for (var k = 0; k < this.next.length; ++k) {\r\n if (this.next[k].b == bs[i]) {\r\n next = this.next[k];\r\n break;\r\n }\r\n }\r\n if (next == null && this.a.ringclosures != null) {\r\n for (var k = 0; k < this.a.ringclosures.length; ++k) {\r\n if (this.a.ringclosures[k].next.b == bs[i]) {\r\n next = this.a.ringclosures[k].next;\r\n this.a.ringclosures.splice(k, 1);\r\n break;\r\n }\r\n }\r\n }\r\n if (next == null)\r\n return null;\r\n\r\n angles.splice(p, 0, angle);\r\n bonds.splice(p, 0, next);\r\n }\r\n this.next = bonds;\r\n\r\n for (var i = 0; i < bonds.length; ++i)\r\n DEBUG.print(bonds[i].a.elem + \", \" + angles[i]);\r\n\r\n var pattern = \"\";\r\n if (this.b.type == JSDraw2.BONDTYPES.WEDGE && this.b.a1 == this.a)\r\n pattern += \"U\";\r\n else if (this.b.type == JSDraw2.BONDTYPES.HASH && this.b.a1 == this.a)\r\n pattern += \"D\";\r\n else\r\n pattern += \"-\";\r\n\r\n for (var i = 0; i < bonds.length; ++i) {\r\n if (bonds[i].b.type == JSDraw2.BONDTYPES.WEDGE && bonds[i].b.a1 == this.a)\r\n pattern += \"U\";\r\n else if (bonds[i].b.type == JSDraw2.BONDTYPES.HASH && bonds[i].b.a1 == this.a)\r\n pattern += \"D\";\r\n else\r\n pattern += \"-\";\r\n }\r\n\r\n DEBUG.print(pattern);\r\n switch (pattern) {\r\n case \"D--\":\r\n case \"DD-\":\r\n case \"DDD\":\r\n case \"--D\":\r\n case \"-D-\":\r\n case \"-DD\":\r\n case \"D---\":\r\n case \"-U--\":\r\n case \"--D-\":\r\n case \"---U\":\r\n case \"DU--\":\r\n case \"-DU-\":\r\n case \"--DU\":\r\n case \"U--D\":\r\n return \"@\";\r\n case \"U--\":\r\n case \"UU-\":\r\n case \"UUU\":\r\n case \"--U\":\r\n case \"-U-\":\r\n case \"-UU\":\r\n case \"U---\":\r\n case \"-D--\":\r\n case \"--U-\":\r\n case \"---D\":\r\n case \"UD--\":\r\n case \"-UD-\":\r\n case \"--UD\":\r\n case \"D--U\":\r\n return \"@@\";\r\n }\r\n\r\n return null;\r\n },\r\n\r\n renderSmiles: function () {\r\n var s = \"\";\r\n if (this.b != null) {\r\n var ring = \"\";\r\n if (this.b.ring != null)\r\n ring = this.b.ring ? \"@\" : \"!@\";\r\n switch (this.b.type) {\r\n case JSDraw2.BONDTYPES.DOUBLE:\r\n s += ring + \"=\";\r\n break;\r\n case JSDraw2.BONDTYPES.TRIPLE:\r\n s += ring + \"#\";\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORDOUBLE:\r\n s += ring + \"-,\" + ring + \"=\";\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORAROMATIC:\r\n s += ring + \"-,\" + ring + \":\";\r\n break;\r\n case JSDraw2.BONDTYPES.DOUBLEORAROMATIC:\r\n s += ring + \"=,\" + ring + \":\";\r\n break;\r\n case JSDraw2.BONDTYPES.UNKNOWN:\r\n s += ring + \"~\";\r\n break;\r\n case JSDraw2.BONDTYPES.DUMMY:\r\n s += ring + \"..\";\r\n break;\r\n default:\r\n if (this.b.ring != null)\r\n s += ring + \"-\";\r\n break;\r\n }\r\n }\r\n\r\n if (this.ringclosure == null) {\r\n var stereo = this.stereo();\r\n // B, C, N, O, P, S, F, Cl, Br, and I\r\n var ar = JSDraw2.PT.isArAtom(this.a.elem);\r\n if (this.a.elem == \"5'\" || this.a.elem == \"3'\") {\r\n // do nothing\r\n }\r\n else if (this.a.bio) {\r\n s += \"[[\" + this.a.elem + \"]]\";\r\n }\r\n else if ((ar || this.a.elem == 'Cl' || this.a.elem == 'F' || this.a.elem == 'Br' || this.a.elem == 'I' || this.a.elem == 'B') &&\r\n this.a.charge == 0 && this.a.isotope == null && stereo == null && this.a.query == null && !this.a.locked) {\r\n if (this.a.aromatic && ar)\r\n s += this.a.elem.toLowerCase();\r\n else\r\n s += this.a.elem;\r\n }\r\n else {\r\n s += \"[\";\r\n if (this.a.query != null && this.a.query.als != null) {\r\n for (var k = 0; k < this.a.query.als.length; ++k) {\r\n if (k > 0)\r\n s += \",\";\r\n if (this.a.query.t == false)\r\n s += \"!\";\r\n s += this.a.query.als[k];\r\n }\r\n }\r\n else {\r\n if (this.a.isotope != null)\r\n s += this.a.isotope;\r\n s += this.a.elem;\r\n }\r\n\r\n if (this.a.charge != 0) {\r\n if (this.a.hcount > 1)\r\n s += \"H\" + this.a.hcount;\r\n\r\n if (this.a.charge == 1)\r\n s += '+';\r\n else if (this.a.charge == -1)\r\n s += '-';\r\n else\r\n s += (this.a.charge > 0 ? \"+\" : \"-\") + Math.abs(this.a.charge);\r\n }\r\n\r\n if (stereo != null)\r\n s += stereo + (this.a.hcount == 1 ? \"H\" : \"\");\r\n\r\n if (this.a.query != null && this.a.query.rbc != null)\r\n s += \";R\" + this.a.query.rbc;\r\n if (this.a.query != null && this.a.query.sub != null)\r\n s += \";X\" + this.a.query.sub;\r\n if (this.a.locked)\r\n s += \";0\";\r\n s += \"]\";\r\n }\r\n\r\n if (this.a.ringclosures != null) {\r\n var list = this.a.ringclosures;\r\n for (var k = 0; k < list.length; ++k)\r\n s += (list[k].ri < 10 ? \"\" : \"%\") + list[k].ri;\r\n }\r\n }\r\n else {\r\n s += (this.ringclosure < 10 ? \"\" : \"%\") + this.ringclosure;\r\n }\r\n\r\n if (this.next.length > 0) {\r\n for (var i = 0; i < this.next.length - 1; ++i) {\r\n var child = this.next[i].renderSmiles();\r\n if (child == null || child.length == 0)\r\n continue;\r\n if (/^[0-9|\\=|\\#]+$/.test(child))\r\n s += child;\r\n else\r\n s += \"(\" + child + \")\";\r\n }\r\n s += this.next[this.next.length - 1].renderSmiles();\r\n }\r\n\r\n return s;\r\n }\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n\r\n/**\r\n* Base64 class provide base64 encode/decode functions\r\n* @class {static} scilligence.JSDraw2.Base64\r\n*/\r\nJSDraw2.Base64 = {\r\n // private property\r\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\r\n\r\n /**\r\n * Base64 encode a string\r\n * @function {static} encode\r\n * @param {string} input input string\r\n * @returns encoded string\r\n */\r\n encode: function (input) {\r\n if (input == null)\r\n return null;\r\n\r\n var output = \"\";\r\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n input = JSDraw2.Base64._utf8_encode(input);\r\n\r\n while (i < input.length) {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n\r\n output = output +\r\n\t\t\tthis._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +\r\n\t\t\tthis._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);\r\n }\r\n return output;\r\n },\r\n\r\n /**\r\n * Base64 decode a string\r\n * @function {static} decode\r\n * @param {string} input input string\r\n * @returns decoded string\r\n */\r\n decode: function (input) {\r\n if (input == null)\r\n return null;\r\n\r\n var output = \"\";\r\n var chr1, chr2, chr3;\r\n var enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n while (i < input.length) {\r\n\r\n enc1 = this._keyStr.indexOf(input.charAt(i++));\r\n enc2 = this._keyStr.indexOf(input.charAt(i++));\r\n enc3 = this._keyStr.indexOf(input.charAt(i++));\r\n enc4 = this._keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n output = output + String.fromCharCode(chr1);\r\n if (enc3 != 64) {\r\n output = output + String.fromCharCode(chr2);\r\n }\r\n if (enc4 != 64) {\r\n output = output + String.fromCharCode(chr3);\r\n }\r\n\r\n }\r\n output = JSDraw2.Base64._utf8_decode(output);\r\n return output;\r\n },\r\n\r\n // private method for UTF-8 encoding\r\n _utf8_encode: function (string) {\r\n string = string.replace(/\\r\\n/g, \"\\n\");\r\n var utftext = \"\";\r\n\r\n for (var n = 0; n < string.length; n++) {\r\n var c = string.charCodeAt(n);\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n }\r\n else if ((c > 127) && (c < 2048)) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n return utftext;\r\n },\r\n\r\n // private method for UTF-8 decoding\r\n _utf8_decode: function (utftext) {\r\n var string = \"\";\r\n var i = 0;\r\n var c = c1 = c2 = 0;\r\n\r\n while (i < utftext.length) {\r\n c = utftext.charCodeAt(i);\r\n if (c < 128) {\r\n string += String.fromCharCode(c);\r\n i++;\r\n }\r\n else if ((c > 191) && (c < 224)) {\r\n c2 = utftext.charCodeAt(i + 1);\r\n string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\r\n i += 2;\r\n }\r\n else {\r\n c2 = utftext.charCodeAt(i + 1);\r\n c3 = utftext.charCodeAt(i + 2);\r\n string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return string;\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nDEBUG = {\r\n enable: false,\r\n clear: function () {\r\n if (DEBUG.enable)\r\n document.getElementById(\"DEBUG\").value = '';\r\n },\r\n print: function (s) {\r\n if (DEBUG.enable) {\r\n var console = document.getElementById(\"DEBUG\");\r\n console.value += s + \"\\n\";\r\n }\r\n }\r\n};\r\n\r\n\r\n/**\r\n* scilligence namespace (scil is an alias name)\r\n* @namespace scilligence\r\n*/\r\nscilligence = { _base: function () { } };\r\noln = scilligence;\r\nscil = scilligence;\r\n\r\n/**\r\n* scilligence.apply is a tool function to append new properties to a dictionary object\r\n*
\r\n* Example:\r\n*    var person = { firstname: \"Tony\", lastname: \"Yuan\" };\r\n*    scilligence.apply(person, { company: \"Scilligence\" });\r\n* 
\r\n* @function {function} scilligence.apply\r\n*/\r\nscilligence.overwrite = scilligence.apply = function (dest, atts, defaults) {\r\n if (defaults)\r\n scilligence.apply(dest, defaults);\r\n\r\n if (dest && atts && typeof atts == 'object') {\r\n for (var k in atts)\r\n dest[k] = atts[k];\r\n }\r\n return dest;\r\n};\r\n\r\nscilligence.apply(scilligence, {\r\n /**\r\n * scilligence.extend is a tool function to do OO programming in Javascript\r\n *
\r\n    * Example:\r\n    *    // parent class, here scilligence._base is empty class\r\n    *    Person = scilligence.extend(scilligence._base, {\r\n    *        constructor: function(firstname, lastname) {\r\n    *            this.firstname = firstname;\r\n    *            this.lastname = lastname;\r\n    *        },\r\n    *\r\n    *        getFullname: function() {\r\n    *            return this.lastname + \", \" + this.firstname;\r\n    *        }\r\n    *    });\r\n    *\r\n    *    // sub class\r\n    *    Employee = scilligence.extend(Person, {\r\n    *        constructor: function (firstname, lastname, employeeid) {\r\n    *            this.superclass().constructor(firstname, lastname);\r\n    *            this.employeeid = employeeid;\r\n    *        },\r\n    *\r\n    *        getEmployeeID: function () {\r\n    *            return this.employeeid;\r\n    *        }\r\n    *    });\r\n    *    \r\n    *    // define static method\r\n    *    scilligence.apply(Employee, {\r\n    *        kCompany: \"Scilligence\", // static property\r\n    *\r\n    *        getEmployNo: function (id) { // static method\r\n    *            return \"SCI-\" + id;\r\n    *        }\r\n    *    }\r\n    *\r\n    *    // create an Employee object\r\n    *    var e = new Employee(\"Tony\", \"Yuan\", 192);\r\n    *    var s = e.getFullname();\r\n    * 
\r\n * @function {function} scilligence.extend\r\n */\r\n extend: function () {\r\n var io = function (atts) { for (var k in atts) this[k] = atts[k]; };\r\n var oc = Object.prototype.constructor;\r\n return function (sb, sp, overrides) {\r\n if (typeof sp == 'object') {\r\n overrides = sp;\r\n sp = sb;\r\n sb = overrides.constructor != oc ? overrides.constructor : function () { sp.apply(this, arguments); };\r\n }\r\n var F = function () { };\r\n var spp = sp.prototype;\r\n F.prototype = spp;\r\n var sbp = sb.prototype = new F();\r\n sbp.constructor = sb;\r\n sb.superclass = spp;\r\n if (spp.constructor == oc)\r\n spp.constructor = sp;\r\n sb.override = function (atts) { scilligence.override(sb, atts); };\r\n sbp.superclass = sbp.supr = (function () { return spp; });\r\n sbp.override = io;\r\n scilligence.override(sb, overrides);\r\n sb.extend = function (atts) { return scilligence.extend(sb, atts); };\r\n return sb;\r\n };\r\n } (),\r\n\r\n override: function (origclass, overrides) {\r\n if (overrides) {\r\n var p = origclass.prototype;\r\n scilligence.apply(p, overrides);\r\n if (document.all != null && overrides.hasOwnProperty('toString'))\r\n p.toString = overrides.toString;\r\n }\r\n },\r\n\r\n clone: function (src) {\r\n if (src == null)\r\n return null;\r\n\r\n if (src.length != null)\r\n return src.concat([]);\r\n\r\n var dest = {};\r\n scil.apply(dest, src);\r\n return dest;\r\n },\r\n\r\n cloneArray: function (src) {\r\n if (src == null)\r\n return null;\r\n\r\n if (src.length != null) {\r\n var ret = [];\r\n for (var i = 0; i < src.length; ++i) {\r\n if (typeof src[i] == \"object\")\r\n ret[i] = scil.clone(src[i]);\r\n else\r\n ret[i] = src[i];\r\n }\r\n return ret;\r\n }\r\n\r\n var dest = {};\r\n scil.apply(dest, src);\r\n return dest;\r\n },\r\n\r\n byId: function (id) {\r\n return document.getElementById(id);\r\n },\r\n\r\n connect: function (element, event, callback) {\r\n if (element == null || event == null || event == \"\" || callback == null)\r\n return;\r\n\r\n if (element.addEventListener != null)\r\n element.addEventListener(event.substr(2), function (e) { callback(e, element); });\r\n else if (element.attachEvent != null)\r\n element.attachEvent(event, function (e) { callback(e, element); });\r\n else\r\n dojo.connect(element, event, function (e) { callback(e, element); });\r\n }\r\n});\r\n\r\nscilligence.ready = dojo.ready;\r\nscilligence.onload = dojo.addOnLoad;\r\n\r\n\r\n/*\r\nscilligence.getGeoLocation = function () {\r\n var p = null;\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(function (position) { scilligence.geolocation = { x: position.coords.latitude, y: position.coords.longitude} });\r\n }\r\n};\r\nscilligence.getGeoLocation();\r\n*/\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Drawer = {\r\n kMinFontSize: 4,\r\n\r\n drawFormula: function (surface, p, reversed, s, color, fontsize) {\r\n //I#11940\r\n if (reversed) {\r\n var c = s.charAt(0);\r\n if (c >= '0' && c <= '9')\r\n reversed = false;\r\n }\r\n\r\n var rect = new JSDraw2.Rect();\r\n var ss = this.splitFormula(s);\r\n for (var i = 0; i < ss.length; ++i) {\r\n if (reversed) {\r\n if (ss[i].num != null) {\r\n var r = this.drawWord(surface, rect, p, color, fontsize, ss[i].num, reversed, true);\r\n if (rect.isEmpty())\r\n rect = r;\r\n else\r\n rect.union(r);\r\n }\r\n }\r\n\r\n var r = this.drawWord(surface, rect, p, color, fontsize, ss[i].str, reversed, false);\r\n if (rect.isEmpty())\r\n rect = r;\r\n else\r\n rect.union(r);\r\n\r\n if (!reversed) {\r\n if (ss[i].num != null) {\r\n r = this.drawWord(surface, rect, p, color, fontsize, ss[i].num, reversed, true);\r\n if (rect.isEmpty())\r\n rect = r;\r\n else\r\n rect.union(r);\r\n }\r\n }\r\n }\r\n\r\n return rect;\r\n },\r\n\r\n drawWord: function (surface, rect, p, color, fontsize, w, reversed, isnumber) {\r\n if (isnumber)\r\n fontsize /= 1.4;\r\n var n = this.drawLabel(surface, p, w, color, fontsize, false, reversed ? \"end-anchor\" : \"start-anchor\");\r\n var r = n._rect.clone();\r\n var nw = r.width / 2;\r\n\r\n var dx = 0;\r\n var dy = isnumber ? fontsize / 4 : 0;\r\n if (rect.isEmpty()) {\r\n // dx = -nw;\r\n }\r\n else if (reversed) {\r\n dx = -(p.x - rect.left) - nw;\r\n if (w == \"I\" || w == \"i\" || w == \"l\" || w == \"r\" || w == \"f\" || w == \".\") {\r\n dx -= fontsize / 6.0;\r\n // r.width -= 4;\r\n }\r\n\r\n if (scil.Utils.isChrome)\r\n dx -= fontsize / 10.0;\r\n }\r\n else {\r\n dx = (rect.right() - p.x) + nw;\r\n if (w == \"I\" || w == \"i\" || w == \"l\" || w == \"r\" || w == \"f\" || w == \".\") {\r\n dx += fontsize / 6.0;\r\n // r.width -= 4;\r\n }\r\n\r\n if (scil.Utils.isChrome)\r\n dx += fontsize / 10.0;\r\n }\r\n\r\n n.setTransform([dojox.gfx.matrix.translate(dx, dy)]);\r\n r.left += dx;\r\n r.top += dy;\r\n return r;\r\n },\r\n\r\n splitFormula: function (s) {\r\n if (/^[A-Z]+$/.test(s) || /^[\\(][^\\(\\)]+[\\)]$/.test(s) || /^[\\[][^\\[\\]]+[\\]]$/.test(s))\r\n return [{ str: s}];\r\n\r\n var ret = [];\r\n\r\n var bracket = 0;\r\n var number = false;\r\n var w = \"\";\r\n for (var i = 0; i < s.length; ++i) {\r\n var c = s.charAt(i);\r\n if (bracket > 0 || c == '(') {\r\n if (c == '(') {\r\n if (bracket == 0) {\r\n if (w != \"\") {\r\n if (number && ret.length > 0)\r\n ret[ret.length - 1].num = w;\r\n else\r\n ret.push({ str: w });\r\n }\r\n number = false;\r\n w = \"\";\r\n }\r\n\r\n ++bracket;\r\n }\r\n else if (c == ')') {\r\n --bracket;\r\n }\r\n\r\n w += c;\r\n if (bracket == 0) {\r\n ret.push({ str: w });\r\n w = \"\";\r\n }\r\n }\r\n else {\r\n if (c >= 'A' && c <= 'Z') {\r\n if (w != \"\") {\r\n if (number && ret.length > 0)\r\n ret[ret.length - 1].num = w;\r\n else\r\n ret.push({ str: w });\r\n }\r\n number = false;\r\n w = \"\";\r\n }\r\n else if (c >= '0' && c <= '9' && !number) {\r\n if (w != \"\")\r\n ret.push({ str: w });\r\n number = true;\r\n w = \"\";\r\n }\r\n w += c;\r\n }\r\n }\r\n\r\n if (w != \"\") {\r\n if (number && ret.length > 0)\r\n ret[ret.length - 1].num = w;\r\n else\r\n ret.push({ str: w });\r\n }\r\n return ret;\r\n },\r\n\r\n drawCurveArrow: function (surface, p1, p2, p1a, p2a, color, linewidth) {\r\n if (p1a == null || p2a == null) {\r\n var anchors = JSDraw2.Curve.calcAnchors(p1, p2);\r\n p1a = anchors.p1a;\r\n p2a = anchors.p2a;\r\n }\r\n\r\n surface.createPath(\"\").moveTo(p1.x, p1.y)\r\n .curveTo(p1a.x, p1a.y, p2a.x, p2a.y, p2.x, p2.y)\r\n .setStroke({ color: color, width: linewidth, cap: \"round\" });\r\n JSDraw2.Drawer.drawArrowhead(surface, p2a, p2, color, linewidth);\r\n },\r\n\r\n drawCurve: function (surface, p1, p2, deg, r, color, linewidth) {\r\n var anchors = JSDraw2.Curve.calcAnchors(p1, p2, deg, r);\r\n var p1a = anchors.p1a;\r\n var p2a = anchors.p2a;\r\n\r\n surface.createPath(\"\").moveTo(p1.x, p1.y)\r\n .curveTo(p1a.x, p1a.y, p2a.x, p2a.y, p2.x, p2.y)\r\n .setStroke({ color: color, width: linewidth, cap: \"round\" });\r\n },\r\n\r\n drawArrow: function (surface, p1, p2, color, linewidth, dottedline, arrowstyle) {\r\n if (arrowstyle == \"dual\") {\r\n var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y);\r\n var v = d.clone().rotate(90).setLength(linewidth);\r\n var tp1 = p1.clone().offset(d.x + v.x, d.y + v.y);\r\n var tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y);\r\n JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline);\r\n JSDraw2.Drawer.drawArrowhead2(surface, tp1, tp2, color, linewidth, \"top\");\r\n\r\n v = d.clone().rotate(-90).setLength(linewidth);\r\n tp1 = p1.clone().offset(d.x + v.x, d.y + v.y);\r\n tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y);\r\n JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline);\r\n JSDraw2.Drawer.drawArrowhead2(surface, tp2, tp1, color, linewidth, \"top\");\r\n }\r\n else if (arrowstyle == \"reversible\") {\r\n var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y);\r\n var v = d.clone().rotate(90).setLength(linewidth);\r\n var tp1 = p1.clone().offset(d.x * 0.6 + v.x, d.y * 0.6 + v.y);\r\n var tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y);\r\n JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline);\r\n JSDraw2.Drawer.drawArrowhead2(surface, tp1, tp2, color, linewidth, \"top\");\r\n\r\n v = d.clone().rotate(-90).setLength(linewidth);\r\n tp1 = p1.clone().offset(d.x + v.x, d.y + v.y);\r\n tp2 = p2.clone().offset(-d.x + v.x, -d.y + v.y);\r\n JSDraw2.Drawer.drawLine(surface, tp1, tp2, color, linewidth, dottedline);\r\n JSDraw2.Drawer.drawArrowhead2(surface, tp2, tp1, color, linewidth, \"top\");\r\n }\r\n else {\r\n if (arrowstyle == \"solid\") {\r\n var v = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).setLength(linewidth * 4);\r\n JSDraw2.Drawer.drawLine(surface, p1, p2.clone().offset(-v.x, -v.y), color, linewidth, dottedline);\r\n }\r\n else {\r\n JSDraw2.Drawer.drawLine(surface, p1, p2, color, linewidth, dottedline);\r\n }\r\n JSDraw2.Drawer.drawArrowhead(surface, p1, p2, color, linewidth, arrowstyle);\r\n }\r\n },\r\n\r\n drawArrowhead: function (surface, p1, p2, color, linewidth, arrowstyle) {\r\n if (arrowstyle == \"solid\") {\r\n this.drawArrowhead2(surface, p1, p2, color, linewidth, arrowstyle);\r\n }\r\n else if (arrowstyle == \"double\") {\r\n this.drawArrowhead2(surface, p1, p2, color, linewidth);\r\n this.drawArrowhead2(surface, p2, p1, color, linewidth);\r\n }\r\n else if (arrowstyle == \"none\") {\r\n }\r\n else {\r\n this.drawArrowhead2(surface, p1, p2, color, linewidth);\r\n }\r\n },\r\n\r\n drawArrowhead2: function (surface, p1, p2, color, linewidth, as) {\r\n var v = p1.clone().offset(-p2.x, -p2.y).setLength(linewidth * 7);\r\n var deg = v.angle();\r\n var v1 = v.clone().rotate(25);\r\n var v2 = v.clone().rotate(-25);\r\n var a1 = p2.clone().offset(v1.x, v1.y);\r\n var a2 = p2.clone().offset(v2.x, v2.y);\r\n\r\n if (as == \"solid\") {\r\n JSDraw2.Drawer.drawTriangle(surface, a1, p2, a2, color);\r\n }\r\n else if (as == \"top\") {\r\n JSDraw2.Drawer.drawLine(surface, a1, p2, color, linewidth);\r\n }\r\n else if (as == \"bottom\") {\r\n JSDraw2.Drawer.drawLine(surface, a2, p2, color, linewidth);\r\n }\r\n else {\r\n JSDraw2.Drawer.drawLine(surface, a1, p2, color, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, a2, p2, color, linewidth);\r\n }\r\n },\r\n\r\n drawTriangle: function (surface, p1, p2, p3, color) {\r\n var t = surface.createPath(\"\").moveTo(p1.x, p1.y).lineTo(p2.x, p2.y).lineTo(p3.x, p3.y).lineTo(p1.x, p1.y);\r\n t.setFill(color);\r\n return t;\r\n },\r\n\r\n drawBracket: function (surface, r, color, linewidth, shape) {\r\n var m = linewidth * 3;\r\n var w = linewidth;\r\n\r\n switch (shape) {\r\n case \"round\":\r\n this.drawCurve(surface, r.topleft(), r.bottomleft(), -30, 0.3, color, linewidth);\r\n this.drawCurve(surface, r.topright(), r.bottomright(), 30, 0.3, color, linewidth);\r\n break;\r\n case \"curly\":\r\n break;\r\n default:\r\n JSDraw2.Drawer.drawLine(surface, r.topleft(), r.topleft().offset(m, 0), color, w);\r\n JSDraw2.Drawer.drawLine(surface, r.topleft(), r.bottomleft(), color, w);\r\n JSDraw2.Drawer.drawLine(surface, r.bottomleft(), r.bottomleft().offset(m, 0), color, w);\r\n\r\n JSDraw2.Drawer.drawLine(surface, r.topright(), r.topright().offset(-m, 0), color, w);\r\n JSDraw2.Drawer.drawLine(surface, r.topright(), r.bottomright(), color, w);\r\n JSDraw2.Drawer.drawLine(surface, r.bottomright(), r.bottomright().offset(-m, 0), color, w);\r\n break;\r\n }\r\n },\r\n\r\n drawDoubleArrow: function (surface, r, color, linewidth) {\r\n var m = linewidth * 3;\r\n var w = linewidth;\r\n\r\n this.drawLine(surface, r.topleft(), r.topright(), color, w);\r\n this.drawArrow(surface, r.topleft(), r.bottomleft(), color, w);\r\n this.drawArrow(surface, r.topright(), r.bottomright(), color, w);\r\n },\r\n\r\n drawLabel: function (surface, p, s, fontcolor, fontsize, opaque, align, offsetx, stroke) {\r\n var w = fontsize + 2;\r\n if (opaque) {\r\n var r = new JSDraw2.Rect(p.x - w / 2, p.y - w / 2, w, w);\r\n surface.createRect({ x: r.left, y: r.top, width: r.width, height: r.height })\r\n .setFill(opaque == true ? \"#fff\" : opaque);\r\n }\r\n\r\n var x = p.x + (offsetx == null ? 0 : offsetx);\r\n var y = p.y + w / 2 - 2;\r\n if (align == \"start-anchor\") {\r\n align = \"start\";\r\n x -= fontsize * 0.4;\r\n }\r\n if (align == \"end-anchor\") {\r\n align = \"end\";\r\n x += fontsize * 0.4;\r\n // s = JSDraw2.SuperAtoms.reverseLabel(s);\r\n }\r\n var args = { x: x, y: y, text: s, align: align == null ? \"middle\" : align };\r\n var t = null;\r\n if (dojox.gfx.renderer == \"canvas\") {\r\n t = surface.createText(args);\r\n t.shape.fontStyle = \"bold \" + (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px Arial\";\r\n t.shape.fillStyle = fontcolor;\r\n t.shape.align = \"center\";\r\n\r\n t.mwidth = this.getTextWidth(surface, t);\r\n t.getTextWidth = function () { return t.mwidth; };\r\n }\r\n else {\r\n t = surface.createText(args)\r\n .setFont({ family: \"Arial\", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px\", weight: \"normal\" })\r\n .setFill(fontcolor);\r\n if (stroke != false)\r\n t.setStroke(fontcolor);\r\n }\r\n\r\n // space char causes hang-up issue\r\n if (/^[ ]+$/.test(s))\r\n t._rect = new JSDraw2.Rect(x, y, s.length * fontsize / 2, fontsize + 4);\r\n else\r\n t._rect = new JSDraw2.Rect(x, y, t.getTextWidth(), fontsize + 4);\r\n\r\n t._rect.top -= t._rect.height * 0.8;\r\n if (align == \"end\")\r\n t._rect.left -= t._rect.width;\r\n return t;\r\n },\r\n\r\n drawText2: function (surface, p, s, fontcolor, fontsize, rotatedeg) {\r\n var w = fontsize + 2;\r\n var t = null;\r\n if (dojox.gfx.renderer == \"canvas\") {\r\n t = surface.createText({ x: p.x, y: p.y + w / 2 - 2, text: s });\r\n t.shape.fontStyle = \"bold \" + (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px Arial\";\r\n t.shape.fillStyle = fontcolor;\r\n t.shape.align = \"center\";\r\n\r\n t.mwidth = this.getTextWidth(surface, t);\r\n t.getTextWidth = function () { return t.mwidth; };\r\n }\r\n else {\r\n t = surface.createText({ x: p.x, y: p.y + w / 2 - 2, text: s, align: \"middle\" })\r\n .setFont({ family: \"Arial\", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px\", weight: \"normal\" })\r\n .setFill(fontcolor);\r\n }\r\n if (rotatedeg != null)\r\n t.setTransform([dojox.gfx.matrix.rotateAt(rotatedeg, p.x, p.y)]);\r\n return t;\r\n },\r\n\r\n drawText: function (surface, p, s, fontcolor, fontsize, align, italic) {\r\n if (align == null)\r\n align = \"left\";\r\n\r\n var t = null;\r\n if (dojox.gfx.renderer == \"canvas\") {\r\n t = surface.createText({ x: p.x, y: p.y + fontsize + 2, text: s });\r\n t.shape.fontStyle = (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px Arial\";\r\n t.shape.fillStyle = fontcolor;\r\n t.shape.align = align;\r\n\r\n t.mwidth = this.getTextWidth(surface, t);\r\n t.getTextWidth = function () { return t.mwidth; };\r\n }\r\n else {\r\n var font = { family: \"Arial\", size: (fontsize < this.kMinFontSize ? this.kMinFontSize : fontsize) /*Mac,Linux bug*/ + \"px\", weight: \"normal\" };\r\n if (italic)\r\n font.style = \"italic\";\r\n t = surface.createText({ x: p.x, y: p.y + fontsize + 2, text: s, align: align })\r\n .setFont(font)\r\n .setFill(fontcolor);\r\n }\r\n\r\n if (align == \"right\") {\r\n var w = t.getTextWidth();\r\n t.setTransform([dojox.gfx.matrix.translate(-w, 0)]);\r\n }\r\n return t;\r\n },\r\n\r\n getTextWidth: function (surface, s) {\r\n var ctx = surface.surface.rawNode.getContext('2d');\r\n ctx.save();\r\n ctx.fillStyle = s.fillStyle;\r\n ctx.strokeStyle = s.fillStyle;\r\n ctx.font = s.fontStyle;\r\n ctx.textAlign = \"center\";\r\n //ctx.textBaseline = \"bottom\";\r\n var width = ctx.measureText(s.text).width / 6;\r\n ctx.restore();\r\n return width;\r\n },\r\n\r\n drawBasis: function (surface, p1, p2, color, linewidth) {\r\n this.drawLine(surface, p1, p2, color, linewidth);\r\n\r\n var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).scale(1.0 / 6.0);\r\n var p = p1.clone().offset(-d.x * 0.5, -d.y * 0.5);\r\n for (var i = 0; i < 5; ++i) {\r\n p.offset(d.x, d.y);\r\n var t = p.clone().offset(d.x * 1.25, d.y * 1.25);\r\n t.rotateAround(p, -45);\r\n\r\n this.drawLine(surface, p, t, color, linewidth);\r\n }\r\n },\r\n\r\n drawCurves: function (surface, p1, p2, color, linewidth) {\r\n var path = surface.createPath();\r\n path.moveTo(p1.x, p1.y);\r\n\r\n var len = p1.distTo(p2);\r\n var n = Math.floor(len / linewidth);\r\n var d = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).scale(1.0 / n);\r\n var v = new JSDraw2.Point(p2.x - p1.x, p2.y - p1.y).rotate(90).setLength(linewidth * 2);\r\n for (var k = 1; k <= n; k += 2) {\r\n var p = p1.clone().offset(d.x * k, d.y * k);\r\n var t1 = p.clone().offset(d.x, d.y);\r\n if (((k - 1) / 2) % 2 == 1)\r\n p.offset(v.x, v.y);\r\n else\r\n p.offset(-v.x, -v.y);\r\n path.qCurveTo(p.x, p.y, t1.x, t1.y);\r\n }\r\n path.setStroke({ color: color, width: linewidth });\r\n },\r\n\r\n drawLine: function (surface, p1, p2, color, linewidth, dotline, cap) {\r\n if (linewidth == null)\r\n linewidth = 1;\r\n\r\n if (dotline == null || dotline <= 1) {\r\n return surface.createLine({ x1: p1.x, y1: p1.y, x2: p2.x, y2: p2.y })\r\n .setStroke({ color: color, width: linewidth, cap: cap == null ? \"round\" : cap });\r\n }\r\n else {\r\n var len = p1.distTo(p2);\r\n var n = Math.floor(len / dotline);\r\n if (n % 2 == 0)\r\n --n;\r\n\r\n var d = p2.clone().offset(-p1.x, -p1.y).scale(1.0 / n);\r\n var d2 = d.clone().scale(0.3);\r\n var st = new JSDraw2.Point(((p2.x - p1.x) - d.x * n) / 2, ((p2.y - p1.y) - d.y * n) / 2);\r\n\r\n for (var k = 0; k < n; k += 2) {\r\n var t1 = p1.clone().offset(st.x + d.x * k + d2.x, st.y + d.y * k + d2.y);\r\n var t2 = t1.clone().offset(d.x - d2.x, d.y - d2.y);\r\n surface.createLine({ x1: t1.x, y1: t1.y, x2: t2.x, y2: t2.y })\r\n .setStroke({ color: color, width: linewidth, cap: cap == null ? \"round\" : cap });\r\n }\r\n }\r\n },\r\n\r\n drawRect: function (surface, r, color, linewidth, radius, style) {\r\n if (r == null || r.isEmpty())\r\n return;\r\n var opts = { x: r.left, y: r.top, width: r.width, height: r.height };\r\n if (radius != null)\r\n opts.r = radius;\r\n if (style != null)\r\n opts.style = style;\r\n return surface.createRect(opts).setStroke({ color: color, width: linewidth });\r\n },\r\n\r\n drawDShape: function (surface, r, color, linewidth, reverse) {\r\n var rad = r.height / 2;\r\n var x = r.right() - rad;\r\n var y = r.center().y;\r\n var path = surface.createPath()\r\n .moveTo({ x: x, y: r.top })\r\n .arcTo(rad, rad, 0, false, true, this._calcPoint(x, y, rad, 180 / 2))\r\n .arcTo(rad, rad, 0, false, true, this._calcPoint(x, y, rad, 180))\r\n .lineTo({ x: r.left, y: r.bottom() })\r\n .lineTo({ x: r.left, y: r.top })\r\n .lineTo({ x: x, y: r.top })\r\n .closePath()\r\n .setStroke({ color: color, width: linewidth });\r\n\r\n if (reverse)\r\n path.setTransform([dojox.gfx.matrix.rotateAt(Math.PI, r.center().x, y)]);\r\n return path;\r\n },\r\n\r\n _calcPoint: function (x, y, rad, deg) {\r\n deg = (Math.PI / 180) * (360 - deg);\r\n return {\r\n x: Math.round((rad * -Math.sin(deg)) + x), y: Math.round(y - (rad * Math.cos(deg)))\r\n };\r\n },\r\n\r\n drawEllipse: function (surface, r, color, linewidth) {\r\n var c = r.center();\r\n return surface.createEllipse({ cx: c.x, cy: c.y, rx: r.width / 2, ry: r.height / 2 }).setStroke({ color: color, width: linewidth });\r\n },\r\n\r\n drawPie: function (surface, x, y, r, deg1, deg2) {\r\n var calcPoint = function (deg, rad) {\r\n deg = (Math.PI / 180) * (360 - deg);\r\n return { x: Math.round((r * -Math.sin(deg)) + x), y: Math.round(y - (r * Math.cos(deg)))\r\n };\r\n };\r\n return surface.createPath()\r\n .moveTo({ x: x, y: y })\r\n .lineTo(calcPoint(deg1))\r\n .arcTo(r, r, 0, false, true, calcPoint(deg2 / 2))\r\n .arcTo(r, r, 0, false, true, calcPoint(deg2))\r\n .lineTo({ x: x, y: y })\r\n .closePath()\r\n .setFill(\"#535353\");\r\n },\r\n\r\n drawDiamond: function (surface, r, color, linewidth) {\r\n var c = r.center();\r\n var points = [\r\n { x: c.x, y: r.top },\r\n { x: r.right(), y: c.y },\r\n { x: c.x, y: r.bottom() },\r\n { x: r.left, y: c.y },\r\n { x: c.x, y: r.top }\r\n ];\r\n return surface.createPolyline(points).setStroke({ color: color, width: linewidth });\r\n },\r\n\r\n drawHexgon: function (surface, r, color, linewidth) {\r\n var c = r.center();\r\n var d = new JSDraw2.Point(0, r.width / 2);\r\n d.rotate(-30);\r\n var points = [\r\n { x: r.right(), y: c.y },\r\n { x: c.x + d.x, y: c.y - d.y },\r\n { x: c.x - d.x, y: c.y - d.y },\r\n { x: r.left, y: c.y },\r\n { x: c.x - d.x, y: c.y + d.y },\r\n { x: c.x + d.x, y: c.y + d.y },\r\n { x: r.right(), y: c.y }\r\n ];\r\n return surface.createPolyline(points).setStroke({ color: color, width: linewidth });\r\n },\r\n\r\n drawPentagon: function (surface, r, color, linewidth) {\r\n var c = r.center();\r\n var p1 = c.clone().offset(0, -r.width / 2);\r\n var p2 = p1.clone().rotateAround(c, 72);\r\n var p3 = p2.clone().rotateAround(c, 72);\r\n var p4 = p3.clone().rotateAround(c, 72);\r\n var p5 = p4.clone().rotateAround(c, 72);\r\n \r\n var points = [\r\n { x: p1.x, y: p1.y },\r\n { x: p2.x, y: p2.y },\r\n { x: p3.x, y: p3.y },\r\n { x: p4.x, y: p4.y },\r\n { x: p5.x, y: p5.y },\r\n { x: p1.x, y: p1.y },\r\n ];\r\n return surface.createPolyline(points).setStroke({ color: color, width: linewidth });\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.FormulaParser = {\r\n parse: function (s, orphan, bonds) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return null;\r\n\r\n var salt = null;\r\n var p = s.indexOf('.');\r\n if (p > 0) {\r\n // e.g. --COOH.2HCl\r\n salt = s.substr(p + 1);\r\n s = s.substr(0, p);\r\n }\r\n\r\n var m = this._parse(s, orphan, bonds);\r\n if (m == null && orphan)\r\n m = this.pareFormulaAsSalt(s);\r\n\r\n if (m == null || m.atoms.length == 0)\r\n return null;\r\n\r\n if (!scil.Utils.isNullOrEmpty(salt)) {\r\n var m2 = this.pareFormulaAsSalt(salt);\r\n if (m2 == null || m2.atoms.length == 0)\r\n return null;\r\n\r\n var a1 = m.atoms[m.atoms.length - 1];\r\n var a2 = m2.atoms[0];\r\n m.mergeMol(m2);\r\n var b = new JSDraw2.Bond(a1, a2);\r\n b.type = JSDraw2.BONDTYPES.DUMMY;\r\n m.addBond(b);\r\n }\r\n\r\n JSDraw2.SuperAtoms.normalize(m);\r\n return m;\r\n },\r\n\r\n pareFormulaAsSalt: function (salt) {\r\n if (scil.Utils.isNullOrEmpty(salt))\r\n return null;\r\n\r\n var coef = 1;\r\n var s2 = salt.replace(/^[0-9]+/, \"\");\r\n if (s2.length < salt.length) {\r\n coef = parseInt(salt.substr(0, salt.length - s2.length));\r\n salt = s2;\r\n }\r\n if (coef < 1)\r\n return null;\r\n\r\n // --COOH.NH4+\r\n var m = null;\r\n var salt2 = salt.replace(/[+|-][1-9]?$/, \"\");\r\n var charge = this.parseCharge(salt.substr(salt2.length));\r\n salt = salt2;\r\n\r\n // strip H's\r\n var elem = salt.replace(/[H][0-9]{0,10}/g, \"\");\r\n m = this.molFromAtom(elem, false, charge);\r\n if (m == null) {\r\n var s2 = salt.replace(/^[A-Z][a-z]?/, \"\");\r\n if (s2.length < salt.length) {\r\n elem = salt.substr(0, salt.length - s2.length);\r\n m = this._parse(s2);\r\n if (m == null)\r\n return null;\r\n var atts = JSDraw2.SuperAtoms._getAttachAtoms(m);\r\n if (atts == null || atts.length != 1)\r\n return null;\r\n var a1 = atts[0].a;\r\n a1.attachpoints = [];\r\n if (elem != \"H\") {\r\n var a2 = new JSDraw2.Atom(atts[0].a.p.clone(), elem);\r\n var b = new JSDraw2.Bond(a1, a2);\r\n m.addAtom(a2);\r\n m.addBond(b);\r\n }\r\n }\r\n }\r\n\r\n if (m == null || m.atoms.length == 0)\r\n return null;\r\n\r\n var m0 = m.clone();\r\n for (var i = 1; i < coef; ++i) {\r\n var a1 = m.atoms[m.atoms.length - 1];\r\n var m3 = m0.clone();\r\n var a2 = m3.atoms[0];\r\n m.mergeMol(m3);\r\n var b = new JSDraw2.Bond(a1, a2);\r\n b.type = JSDraw2.BONDTYPES.DUMMY;\r\n m.addBond(b);\r\n }\r\n\r\n return m;\r\n },\r\n\r\n parseSalt: function (s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return null;\r\n\r\n var caps = s; // s.toUpperCase();\r\n var salts = JSDraw2.defaultoptions.salts || JSDraw2.salts;\r\n if (salts != null && salts[caps] != null) {\r\n if (salts[caps] == \"\")\r\n return { coef: 1, mf: null, mw: 0, s: s };\r\n }\r\n\r\n var s2 = \"\";\r\n if (!JSDraw2.FormulaParser.ignoresaltcoef) {\r\n var patt = /^[0-9]{0,10}[\\.]?[0-9]{0,9}[ ]?/;\r\n var s2 = patt.exec(s) + \"\";\r\n if (s2.length == s.length)\r\n return null;\r\n }\r\n\r\n var coef = 1.0;\r\n if (s2 != \"\") {\r\n coef = parseFloat(s2);\r\n if (isNaN(coef))\r\n coef = 1.0;\r\n }\r\n s = s.substr(s2.length);\r\n caps = s; // s.toUpperCase();\r\n\r\n var mf = null;\r\n var mw = null;\r\n var salts = JSDraw2.defaultoptions.salts || JSDraw2.salts;\r\n if (salts != null && salts[caps] != null) {\r\n mf = salts[caps];\r\n mw = this.mf2mw(mf, true);\r\n }\r\n else {\r\n mf = s;\r\n mw = this.mf2mw(mf, true);\r\n }\r\n if (mw == null || mw == 0)\r\n return null;\r\n\r\n return { coef: coef, mf: coef == 1 ? mf : coef + \"(\" + mf + \")\", mw: Math.round(mw * (coef > 0 ? coef : 1) * 1000) / 1000, s: coef == 1 ? s : coef + s, stats: this.mf2Stats(mf, true) };\r\n },\r\n\r\n parseCharge: function (s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return 0;\r\n if (s == \"+\" || s == \"++\" || s == \"+++\")\r\n return s.length;\r\n else if (s == \"-\" || s == \"--\" || s == \"---\")\r\n return -s.length;\r\n\r\n if (s.length > 1 && (s.substr(s.length - 1) == '+' || s.substr(s.length - 1) == '-'))\r\n s = s.substr(s.length - 1) + s.substr(0, s.length - 1);\r\n return parseInt(s);\r\n },\r\n\r\n stripHs: function (s) {\r\n if (s == null || s.length <= 1)\r\n return s;\r\n var s2 = s.replace(/[+|-][1-9]?$/, \"\");\r\n var charge = s.substr(s2.length);\r\n if (/^[A-Z][a-z]?[H][0-9]{0,2}$/.test(s2)) {\r\n var elem = /^[A-z][a-z]?/.exec(s);\r\n var e = JSDraw2.PT[elem];\r\n if (e != null && e.m != null)\r\n return elem + charge;\r\n }\r\n else if (/^[H][0-9]{0,2}[A-Z][a-z]?$/.test(s2)) {\r\n var elem = /[A-z][a-z]?$/.exec(s);\r\n var e = JSDraw2.PT[elem];\r\n if (e != null && e.m != null)\r\n return elem + charge;\r\n }\r\n return s;\r\n },\r\n\r\n mergeStats: function (dest, from, coef) {\r\n if (dest == null)\r\n dest = { elements: {}, charges: 0, isotopes: {} };\r\n\r\n if (from != null) {\r\n if (coef == null)\r\n coef = 1;\r\n for (var e in from.elements) {\r\n if (dest.elements[e] == null)\r\n dest.elements[e] = from.elements[e] * coef;\r\n else\r\n dest.elements[e] += from.elements[e] * coef;\r\n }\r\n for (var e in from.isotopes) {\r\n if (dest.isotopes[e] == null)\r\n dest.isotopes[e] = {};\r\n var iso = dest.isotopes[e];\r\n var iso2 = from.isotopes[e];\r\n for (var i in iso2) {\r\n if (iso[i] == null)\r\n iso[i] = iso2[i] * coef;\r\n else\r\n iso[i] += iso2[i] * coef;\r\n }\r\n }\r\n\r\n if (from.charges != null)\r\n dest.charges += from.charges * coef;\r\n }\r\n\r\n return dest;\r\n },\r\n\r\n getAtomStats: function (mol) {\r\n if (mol == null)\r\n return null;\r\n\r\n var ret = { elements: {}, charges: 0, isotopes: {}, bios: [] };\r\n\r\n var hs = 0;\r\n var multicenterHs = 0;\r\n for (var i = 0; i < mol.atoms.length; ++i) {\r\n var a = mol.atoms[i];\r\n if (a.elem == \"5'\") {\r\n if (ret.elements[\"H\"] == null)\r\n ret.elements[\"H\"] = 1;\r\n else\r\n ++ret.elements[\"H\"];\r\n }\r\n else if (a.elem == \"3'\") {\r\n if (ret.elements[\"H\"] == null)\r\n ret.elements[\"H\"] = 1;\r\n else\r\n ++ret.elements[\"H\"];\r\n if (ret.elements[\"O\"] == null)\r\n ret.elements[\"O\"] = 1;\r\n else\r\n ++ret.elements[\"O\"];\r\n }\r\n else if (a.bio != null) {\r\n switch (a.bio.type) {\r\n case JSDraw2.BIO.ANTIBODY:\r\n case JSDraw2.BIO.PROTEIN:\r\n case JSDraw2.BIO.GENE:\r\n case JSDraw2.BIO.DNA:\r\n case JSDraw2.BIO.RNA:\r\n var se = new JSDraw2.SequenceEditor();\r\n se.setXml(a.bio.sequences);\r\n ret.bios.push({ mw: se.getMolWeight() });\r\n break;\r\n }\r\n }\r\n else if (a.elem == \"@\") {\r\n var list = mol.getAllBonds(a);\r\n var dummy = 0;\r\n var sum = 0;\r\n for (var k = 0; k < list.length; ++k) {\r\n if (list[k].type == JSDraw2.BONDTYPES.DUMMY) {\r\n ++dummy;\r\n }\r\n else {\r\n var val = list[k].valence();\r\n if (val > 0)\r\n sum += Math.floor(val);\r\n }\r\n }\r\n if (dummy > 0)\r\n multicenterHs += sum;\r\n }\r\n else if (a.elem == \"#\") {\r\n var salt = this.parseSalt(a.alias);\r\n if (salt != null)\r\n this.mergeStats(ret, salt.stats, salt.coef);\r\n }\r\n else {\r\n var e = a.elem;\r\n if (a.isotope > 0) {\r\n var n = ret.isotopes[e];\r\n if (n == null)\r\n ret.isotopes[e] = {};\r\n var iso = ret.isotopes[e];\r\n if (iso[a.isotope] == null)\r\n iso[a.isotope] = 1;\r\n else\r\n iso[a.isotope] = iso[a.isotope] + 1;\r\n }\r\n else {\r\n var n = ret.elements[e];\r\n if (n == null)\r\n ret.elements[e] = 1;\r\n else\r\n ret.elements[e] = n + 1;\r\n }\r\n hs += a.hcount;\r\n }\r\n ret.charges += a.charge;\r\n }\r\n\r\n hs -= multicenterHs;\r\n if (hs > 0) {\r\n if (ret.elements[\"H\"] != null)\r\n ret.elements[\"H\"] = hs + ret.elements[\"H\"];\r\n else\r\n ret.elements[\"H\"] = hs;\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n stats2mw: function (stats) {\r\n if (stats == null)\r\n return null;\r\n\r\n var sum = 0;\r\n for (var k in stats.elements) {\r\n if (k == \"D\")\r\n sum += JSDraw2.PT[\"H\"].iso[2] * stats.elements[k];\r\n else if (k == \"T\")\r\n sum += JSDraw2.PT[\"H\"].iso[3] * stats.elements[k];\r\n else {\r\n var e = JSDraw2.PT[k];\r\n if (e == null || e.m == null)\r\n //continue;\r\n return null;\r\n sum += e.m * stats.elements[k];\r\n }\r\n }\r\n\r\n if (stats.bios != null) {\r\n for (var i = 0; i < stats.bios.length; ++i)\r\n sum += stats.bios[i].mw;\r\n }\r\n\r\n sum += this._isotopemass(stats.isotopes);\r\n if (sum > 0)\r\n sum = scil.Utils.round(sum, 4);\r\n return sum;\r\n },\r\n\r\n stats2em: function (stats) {\r\n if (stats == null)\r\n return null;\r\n\r\n var sum = 0;\r\n for (var k in stats.elements) {\r\n var e = JSDraw2.PT[k];\r\n if (e == null || e.em == null)\r\n //continue;\r\n return null;\r\n sum += e.em * stats.elements[k];\r\n }\r\n\r\n sum += this._isotopemass(stats.isotopes);\r\n return sum;\r\n },\r\n\r\n _isotopemass: function (isotopes2) {\r\n if (isotopes2 == null)\r\n return 0;\r\n\r\n var sum = 0;\r\n for (var k in isotopes2) {\r\n var e = JSDraw2.PT[k];\r\n if (e == null || e.m == null)\r\n continue;\r\n\r\n var isotopes = isotopes2[k];\r\n for (var i in isotopes) {\r\n var m = e.iso[i];\r\n sum += (m == null ? e.m : m) * isotopes[i];\r\n }\r\n }\r\n return sum;\r\n },\r\n\r\n stats2mf: function (stats, html) {\r\n if (stats == null)\r\n return;\r\n\r\n var s = \"\";\r\n if (stats.elements[\"C\"] != null) {\r\n s += \"C\";\r\n if (stats.elements[\"C\"] > 1)\r\n s += (html ? \"\" + stats.elements[\"C\"] + \"\" : stats.elements[\"C\"]);\r\n }\r\n if (stats.elements[\"H\"] != null) {\r\n s += \"H\";\r\n if (stats.elements[\"H\"] > 1)\r\n s += (html ? \"\" + stats.elements[\"H\"] + \"\" : stats.elements[\"H\"]);\r\n }\r\n\r\n for (var e in stats.elements) {\r\n if (e != \"C\" && e != 'H' && e != 'R') {\r\n s += e;\r\n if (stats.elements[e] > 1)\r\n s += (html ? \"\" + stats.elements[e] + \"\" : stats.elements[e]);\r\n }\r\n }\r\n\r\n for (var e in stats.isotopes) {\r\n var isotopes = stats.isotopes[e];\r\n for (var iso in isotopes) {\r\n if (html)\r\n s += \"\" + iso + \"\" + e;\r\n else\r\n s += \"{\" + iso + \"}\" + e;\r\n if (isotopes[iso] > 1)\r\n s += (html ? \"\" + isotopes[iso] + \"\" : isotopes[iso]);\r\n }\r\n }\r\n\r\n var r = stats.elements['R'];\r\n if (r > 0) {\r\n s += 'R';\r\n if (r > 1)\r\n s += (html ? \"\" + r + \"\" : r);\r\n }\r\n\r\n if (stats.charges != 0) {\r\n var c = Math.abs(stats.charges);\r\n var t = (stats.charges > 0 ? \"+\" : \"-\") + (c > 1 ? c : '');\r\n if (html)\r\n s += \"\" + t + \"\";\r\n else\r\n s += t;\r\n }\r\n return s;\r\n },\r\n\r\n mf2mw: function (mf, issalt) {\r\n var stats = this.mf2Stats(mf, issalt);\r\n return this.stats2mw(stats);\r\n },\r\n\r\n normMF: function (mf) {\r\n var stats = this.mf2Stats(mf);\r\n return this.stats2mf(stats);\r\n },\r\n\r\n mf2Stats: function (mf, issalt) {\r\n if (mf == null || mf == \"\")\r\n return null;\r\n\r\n var charges = 0;\r\n var mf2 = mf.replace(/(([+|-][0-9]{0,2})|([ ][0-9]{0,2}[+|-]))$/, \"\");\r\n if (mf2.length < mf.length) {\r\n charges = this.parseCharge(mf.substr(mf2.length));\r\n }\r\n\r\n var ret = this.mf2Stats2(mf2);\r\n if (ret != null && charges != 0) {\r\n // I#10049\r\n if (issalt)\r\n charges = this.calcSaltCharges(ret, charges);\r\n\r\n ret.charges += charges;\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n calcSaltCharges: function (ret, charges) {\r\n if (JSDraw2.defaultoptions.calcsaltcharges != true)\r\n return charges;\r\n\r\n if (charges >= 1) {\r\n if (charges > 1) {\r\n for (var k in ret.elements)\r\n ret.elements[k] /= charges * 1.0;\r\n }\r\n\r\n if (ret.elements[\"H\"] == null)\r\n ret.elements[\"H\"] = 0;\r\n --ret.elements[\"H\"];\r\n charges = 0;\r\n }\r\n\r\n return charges;\r\n },\r\n\r\n mf2Stats2: function (s) {\r\n var m = JSDraw2.SuperAtoms.get(s);\r\n if (m != null)\r\n return this.getAtomStats(m);\r\n\r\n var ret = { elements: {}, charges: 0 };\r\n\r\n var numpat = /^[0-9]+/;\r\n var sum = 0;\r\n var p;\r\n while ((p = s.indexOf('(')) >= 0) {\r\n if (p > 0) {\r\n var stats = this._mf2Stats(s.substr(0, p));\r\n if (stats == null)\r\n return null;\r\n ret = this.mergeStats(ret, stats);\r\n }\r\n\r\n s = s.substr(p);\r\n\r\n var f = false;\r\n var n = 0;\r\n for (var i = 1; i < s.length; ++i) {\r\n var c = s.charCodeAt(i);\r\n if (c == 40) { // (\r\n ++n;\r\n }\r\n else if (c == 41) { // )\r\n if (n == 0) {\r\n var bracket = s.substr(1, i - 1);\r\n s = s.substr(i + 1);\r\n var sub = s.match(numpat);\r\n var k = 1;\r\n if (sub != null && sub.length == 1) {\r\n s = s.substr(sub[0].length);\r\n k = parseInt(sub[0]);\r\n }\r\n\r\n var stats = this.mf2Stats2(bracket);\r\n if (stats == null)\r\n return null;\r\n ret = this.mergeStats(ret, stats, k);\r\n\r\n f = true;\r\n break;\r\n }\r\n else {\r\n --n;\r\n }\r\n }\r\n }\r\n\r\n if (!f)\r\n return null;\r\n }\r\n\r\n var stats = this._mf2Stats(s);\r\n if (stats == null)\r\n return null;\r\n ret = this.mergeStats(ret, stats);\r\n return ret;\r\n },\r\n\r\n _mf2Stats: function (s) {\r\n var patt = /^[A-Z][a-z]?[0-9]{0,9}/;\r\n var patt2 = /^[A-Z][a-z]?/;\r\n\r\n var ret = { elements: {}, charges: 0 };\r\n while (s != \"\") {\r\n var c = patt.exec(s);\r\n if (c == null)\r\n return null;\r\n\r\n var s2 = c[0];\r\n if (s2 == \"\")\r\n return null;\r\n\r\n var symb = patt2.exec(s2)[0];\r\n var e = JSDraw2.PT[symb == \"D\" || symb == \"T\" ? \"H\" : symb];\r\n var n = symb.length == s2.length ? 1 : parseInt(s2.substr(symb.length));\r\n\r\n var stats = { elements: {}, charges: 0 };\r\n if (e == null) {\r\n var m = JSDraw2.SuperAtoms.get(symb);\r\n if (m == null || !(m.mw > 0))\r\n return null;\r\n stats = this.getAtomStats(m);\r\n }\r\n else {\r\n if (!(e.m > null))\r\n return null;\r\n else\r\n stats.elements[symb] = 1;\r\n }\r\n ret = this.mergeStats(ret, stats, n);\r\n s = s.substr(s2.length);\r\n }\r\n return ret;\r\n },\r\n\r\n molFromAtom: function (elem, addAttachPoint, charge) {\r\n var s2 = elem.replace(/[+|-][1-9]?$/, \"\");\r\n if (s2.length < elem.length) {\r\n charge = this.parseCharge(elem.substr(s2.length));\r\n elem = s2;\r\n }\r\n\r\n var e = JSDraw2.PT[elem];\r\n if (e != null && e.a > 0) {\r\n m = new JSDraw2.Mol();\r\n var a = new JSDraw2.Atom(new JSDraw2.Point(0, 0), elem);\r\n if (charge != null)\r\n a.charge = charge;\r\n m.addAtom(a);\r\n if (addAttachPoint)\r\n a.attachpoints = [1];\r\n return m;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _parse: function (s, orphan, bonds) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return null;\r\n\r\n if (new RegExp(\"^[\\(][^\\(\\)]+[\\)]$\").test(s))\r\n s = s.substr(1, s.length - 2);\r\n\r\n var s2 = this.stripHs(s);\r\n var m = this.molFromAtom(s2, true);\r\n if (m != null)\r\n return m;\r\n\r\n var tokens = { O: [\"O\"], S: [\"S\"], Se: [\"Se\"], Te: [\"Te\"], Y: [\"Y\"], NH: [\"N\"], PH: [\"P\"], CO: [\"C\", \"^=O\"], CO2: [\"C\", \"^=O\", \"O\"], CH2: [\"C\"], C2H4: [\"C\", \"C\"], C3H6: [\"C\", \"C\", \"C\"], C4H8: [\"C\", \"C\", \"C\", \"C\"], C5H10: [\"C\", \"C\", \"C\", \"C\", \"C\"] };\r\n if (orphan)\r\n tokens.H = [];\r\n\r\n if (scil.Utils.startswith(s, '(')) {\r\n var p = s.indexOf(')');\r\n if (p > 0) {\r\n var s1 = s.substr(1, p - 1);\r\n var t = s.substr(p + 1);\r\n var s2 = t.replace(/^[0-9]+/, \"\");\r\n var repeat = 1;\r\n if (s2.length < t.length)\r\n repeat = parseInt(t.substr(0, t.length - s2.length));\r\n var ret = this._parseConnectors(s1, orphan);\r\n if (ret != null && ret.remained == \"\") {\r\n var atoms = [];\r\n for (var i = 0; i < repeat; ++i)\r\n atoms = atoms.concat(ret.atoms);\r\n m = this._connect(atoms, s2);\r\n if (m != null)\r\n return m;\r\n }\r\n }\r\n }\r\n\r\n m = JSDraw2.SuperAtoms.get(s);\r\n if (m != null)\r\n return m;\r\n\r\n m = this.molFromAtom(s, true);\r\n if (m != null)\r\n return m;\r\n\r\n for (var k in tokens) {\r\n var m = this._tryFormula(k, tokens[k], s);\r\n if (m != null)\r\n return m;\r\n }\r\n\r\n if (s.length >= 3) {\r\n var elem = s.substr(0, 2);\r\n var e = JSDraw2.PT[elem];\r\n if (e != null && JSDraw2.PT.isMetal(e.a) &&\r\n (e != JSDraw2.PT.K && e != JSDraw2.PT.Na && e != JSDraw2.PT.Rb && e != JSDraw2.PT.Cs &&\r\n e != JSDraw2.PT.Fr && e != JSDraw2.PT.Sb))\r\n return this._tryFormula(elem, [elem], s);\r\n }\r\n\r\n // Common Formula: --CnH[n*2]--, --CnH[n*2+1], --CnH[n*2-1], and --CnH[n*2-3]\r\n if (bonds == 1 || bonds == 2) {\r\n var reg = /^C[0-9]+H[0-9]+$/;\r\n if (reg.test(s)) {\r\n var p = s.indexOf('H');\r\n var cs = parseInt(s.substr(1, p - 1));\r\n var hs = parseInt(s.substr(p + 1));\r\n if (cs > 0 && (bonds == 2 && cs * 2 == hs /* --CnH[n*2]-- */ || bonds == 1 && (cs * 2 + 1 == hs /* --CnH[n*2+1]-- */ || cs * 2 - 1 == hs /* --CnH[n*2-1]-- */ || cs * 2 - 3 == hs /* --CnH[n*2-3]-- */))) {\r\n var m = new JSDraw2.Mol();\r\n var a1 = new JSDraw2.Atom(new JSDraw2.Point(0, 0), 'C');\r\n var a2 = null;\r\n a1.attachpoints = [1];\r\n m.addAtom(a1);\r\n for (var i = 1; i < cs; ++i) {\r\n var y = i % 2 == 1 ? 0.5 : 0;\r\n a2 = new JSDraw2.Atom(new JSDraw2.Point(a1.p.x + 1, y), 'C');\r\n m.addAtom(a2);\r\n\r\n var b = new JSDraw2.Bond(a1, a2);\r\n if (i == cs - 1) {\r\n if (cs * 2 - 1 == hs) /* --CnH[n*2-1]-- */\r\n b.type = JSDraw2.BONDTYPES.DOUBLE;\r\n else if (cs * 2 - 3 == hs) /* --CnH[n*2-3]-- */\r\n b.type = JSDraw2.BONDTYPES.TRIPLE;\r\n }\r\n m.addBond(b);\r\n\r\n a1 = a2;\r\n }\r\n\r\n if (bonds == 2)\r\n (a2 == null ? a1 : a2).attachpoints = [2];\r\n\r\n return m;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _parseConnectors: function (s, orphan) {\r\n var tokens = { O: [\"O\"], S: [\"S\"], Se: [\"Se\"], Te: [\"Te\"], Y: [\"Y\"], NH: [\"N\"], PH: [\"P\"], CO: [\"C\", \"=O\"], CO2: [\"C\", \"=O\", \"O\"], CH2: [\"C\"], C2H4: [\"C\", \"C\"], C3H6: [\"C\", \"C\", \"C\"], C4H8: [\"C\", \"C\", \"C\", \"C\"], C5H10: [\"C\", \"C\", \"C\", \"C\", \"C\"] };\r\n if (orphan)\r\n tokens.H = [];\r\n\r\n var atoms = [];\r\n while (s.length > 0) {\r\n var findone = false;\r\n for (var k in tokens) {\r\n if (scil.Utils.startswith(s, k)) {\r\n atoms = atoms.concat(tokens[k]);\r\n s = s.substr(k.length);\r\n findone = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!findone)\r\n break;\r\n }\r\n\r\n return atoms.length == 0 ? null : { atoms: atoms, remained: s };\r\n },\r\n\r\n _tryFormula: function (prefix, atoms, s) {\r\n if (!scil.Utils.startswith(s, prefix, true))\r\n return null;\r\n\r\n return this._connect(atoms, s.substr(prefix.length));\r\n },\r\n\r\n _connect: function (atoms, name) {\r\n var m = JSDraw2.SuperAtoms.get(name);\r\n if (m == null) {\r\n m = this._parse(name, null, 1);\r\n if (m == null)\r\n m = this.molFromAtom(name, false);\r\n }\r\n\r\n if (m == null)\r\n return;\r\n m = m.clone();\r\n\r\n var atts = JSDraw2.SuperAtoms._getAttachAtoms(m);\r\n if (atts == null || atts.length != 1)\r\n return null;\r\n\r\n var a1 = atts[0].a;\r\n var a2 = null;\r\n var branch = null;\r\n a1.attachpoints = [];\r\n for (var i = atoms.length - 1; i >= 0; --i) {\r\n var c = atoms[i];\r\n\r\n if (c.substr(0, 1) == \"^\") {\r\n branch = c.substr(1);\r\n continue;\r\n }\r\n\r\n // I#12074\r\n a1 = this._connectAtom(a1, c, m);\r\n if (branch != null) {\r\n this._connectAtom(a1, branch, m);\r\n branch = null;\r\n }\r\n }\r\n\r\n a1.attachpoints = [1];\r\n return m;\r\n },\r\n\r\n _connectAtom: function (a1, c, m) {\r\n var doublebond = false;\r\n if (c.substr(0, 1) == \"=\") {\r\n c = c.substr(1);\r\n doublebond = true;\r\n }\r\n\r\n var p = a1.p.clone();\r\n p.offset(1, 0);\r\n var a2 = new JSDraw2.Atom(p, c);\r\n var b = new JSDraw2.Bond(a1, a2);\r\n if (doublebond)\r\n b.type = JSDraw2.BONDTYPES.DOUBLE;\r\n m.addAtom(a2);\r\n m.addBond(b);\r\n return a2;\r\n }\r\n};\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n\r\n/**\r\n* Group class - defines Object groups\r\n* @class scilligence.JSDraw2.Group\r\n*/\r\nJSDraw2.Group = scil.extend(scil._base, {\r\n /**\r\n * @constructor Group\r\n * @param {string} name - group name\r\n * @param {string} type - group type\r\n */\r\n constructor: function (name, type) {\r\n this.T = \"GROUP\";\r\n this.type = type;\r\n this.name = name;\r\n this.id = null;\r\n this._rect = null;\r\n this.p = null;\r\n this.gap = 6.0;\r\n this.group = null; // a group can belong to another group\r\n this.color = null;\r\n this.a = null;\r\n this.ratio = null;\r\n this.tag = null;\r\n },\r\n\r\n clone: function () {\r\n var g = new JSDraw2.Group(this.name, this.type);\r\n g.id = this.id;\r\n g._rect = this._rect == null ? null : this._rect.clone();\r\n g.p = this.p == null ? null : this.p.clone();\r\n g.color = this.color;\r\n g.gap = this.gap;\r\n g.ratio = this.ratio;\r\n g.tag = this.tag;\r\n return g;\r\n },\r\n\r\n html: function (scale) {\r\n var s = \" 0)\r\n s += \" gap='\" + this.gap + \"'\";\r\n s += \">\";\r\n return s;\r\n },\r\n\r\n readHtml: function (e) {\r\n //this.p = JSDraw2.Point.fromString(e.getAttribute(\"p\"));\r\n var gap = parseFloat(e.getAttribute(\"gap\"));\r\n if (gap > 0)\r\n this.gap = gap;\r\n },\r\n\r\n flipY: function (y) {\r\n },\r\n\r\n flipX: function (x) {\r\n },\r\n\r\n scale: function (s, origin) {\r\n },\r\n\r\n offset: function (dx, dy) {\r\n },\r\n\r\n rect: function () {\r\n return this._rect;\r\n },\r\n\r\n toggle: function (p, tor) {\r\n var r = this._rect;\r\n if (r == null)\r\n return;\r\n return p.y >= r.top && p.y <= r.bottom() && (Math.abs(p.x - r.left) < tor / 2 || Math.abs(p.x - r.right()) < tor / 2) ||\r\n p.x >= r.left && p.x <= r.right() && (Math.abs(p.y - r.top) < tor / 2 || Math.abs(p.y - r.bottom()) < tor / 2);\r\n },\r\n\r\n drawCur: function (surface, r, color, m) {\r\n var r2 = this._rect;\r\n if (r2 == null)\r\n return;\r\n var c = r2.center();\r\n surface.createCircle({ cx: r2.left, cy: c.y, r: r }).setFill(color);\r\n surface.createCircle({ cx: r2.right(), cy: c.y, r: r }).setFill(color);\r\n surface.createCircle({ cx: c.x, cy: r2.top, r: r }).setFill(color);\r\n surface.createCircle({ cx: c.x, cy: r2.bottom(), r: r }).setFill(color);\r\n\r\n if (m != null) {\r\n for (var i = 0; i < m.atoms.length; ++i) {\r\n if (m.atoms[i].group != this)\r\n continue;\r\n m.atoms[i].drawCur(surface, r * 0.75, color);\r\n }\r\n for (var i = 0; i < m.graphics.length; ++i) {\r\n if (m.graphics[i].group != this)\r\n continue;\r\n m.graphics[i].drawCur(surface, r * 0.75, color);\r\n }\r\n }\r\n },\r\n\r\n _updateRect: function (m, bondlength) {\r\n var r = m.getGroupRect(this, bondlength);\r\n this._rect = r;\r\n return r;\r\n },\r\n\r\n draw: function (surface, linewidth, m, fontsize) {\r\n var r = this._rect;\r\n if (r == null)\r\n return;\r\n\r\n var color = this.color == null ? \"gray\" : this.color;\r\n //r.inflate(this.gap * linewidth, this.gap * linewidth);\r\n if (this.type == \"chiral\") {\r\n JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left + r.width / 2, r.top - fontsize), this.name, color, fontsize, false);\r\n }\r\n else {\r\n JSDraw2.Drawer.drawRect(surface, r, color, linewidth / 4, linewidth * 3); //.setFill(\"#ffffff\");\r\n JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left + r.width / 2, r.bottom() + fontsize / 2), this.name, color, fontsize, false);\r\n }\r\n\r\n if (!scil.Utils.isNullOrEmpty(this.tag))\r\n JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.left, r.top - fontsize), this.tag, \"black\", fontsize, false, \"start\");\r\n if (!scil.Utils.isNullOrEmpty(this.ratio))\r\n JSDraw2.Drawer.drawLabel(surface, new JSDraw2.Point(r.right(), r.bottom() + fontsize / 2), \"ratio: \" + this.ratio, \"black\", fontsize, false, \"end\");\r\n },\r\n\r\n drawSelect: function (lasso) {\r\n lasso.draw(this, this._rect.fourPoints());\r\n }\r\n});\r\n\r\nJSDraw2.Group.cast = function (a) {\r\n return a != null && a.T == 'GROUP' ? a : null;\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.IDGenerator = scil.extend(scil._base, {\r\n constructor: function (start) {\r\n this.i = start > 0 ? start : 0;\r\n this.used = this.i == 0 ? null : {};\r\n },\r\n\r\n next: function (id) {\r\n if (this.used == null)\r\n return ++this.i;\r\n\r\n if (id > 0 && !this.used[id]) {\r\n this.used[id] = true;\r\n return id;\r\n }\r\n\r\n id = ++this.i;\r\n while (this.used[id])\r\n id = ++this.i;\r\n this.used[id] = true;\r\n return id;\r\n }\r\n});","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n@project JSDraw\r\n@version 5.3.1\r\n@description JSDraw Chemical/Biological Structure Editor\r\n*/\r\n\r\n/**\r\n* JSDraw2 namespace\r\n* @namespace scilligence.JSDraw2\r\n*/\r\nJSDraw2 = {};\r\nscilligence.JSDraw2 = JSDraw2;\r\nscilligence.JSDraw3 = JSDraw3 = JSDraw2;\r\n\r\nJSDraw2.speedup = { fontsize: 4, gap: 0, disableundo: false, minbondlength: 1 };\r\n\r\n/**\r\n* JSDraw Version\r\n* @property scilligence.JSDraw2.version\r\n*/\r\nJSDraw2.version = \"JSDraw V5.3.1\";\r\n\r\n// JSDraw file version\r\nJSDraw2.kFileVersion = \"5.0\";\r\n\r\n/**\r\n* JSDraw Default Options\r\n* @property {dictionay} scilligence.JSDraw2.defaultoptions default Editor options: { skin: \"w8\" or null, delheteroatom: false, salts: { name: MF, ...}, abbreviations: {}, tlc: {}, popupwidth: number, popupheight: number, popupxdraw: true or false, monocolor: true or false, jdrawpath: \"http://server/jdraw/\" }\r\n*/\r\nJSDraw2.defaultoptions = {};\r\nJSDraw2.password = {encrypt:true};\r\n\r\nJSDraw2.TEXTKEYWORDS = [\"°C\", \"rt\", \"reflux\", \"hr\", \"min\", \"sec\", \"psi\", \"atm\", \"overnight\", \"microwave\", \"Δ\"];\r\nJSDraw2.MOLECULETYPES = [\"SmallMolecule\", \"Polymer\", \"Peptide\", \"DNA\", \"RNA\", \"ADC\", \"ChemicalReagent\"];\r\nJSDraw2.CHIRALITIES = [\"Achiral\", \"Absolute\", \"Racemic\", \"Diastereomeric\", \"Enatiomer R\", \"Enatiomer S\"];\r\n\r\n/**\r\n* Predefined Bond Types:\r\n
\r\nJSDraw2.BONDTYPES = {\r\n    UNKNOWN: 0,\r\n    SINGLE: 1,\r\n    DOUBLE: 2,\r\n    TRIPLE: 3,\r\n    DELOCALIZED: 4,\r\n    WEDGE: 5,\r\n    HASH: 6,\r\n    WIGGLY: 7,\r\n    EITHER: 8,\r\n    SINGLEORDOUBLE: 9,\r\n    SINGLEORAROMATIC: 10,\r\n    DOUBLEORAROMATIC: 11,\r\n    QUADRUPLE: 12,\r\n    DUMMY: 13,\r\n    PEPTIDE: 21,\r\n    NUCLEOTIDE: 22,\r\n    DISULFIDE: 23,\r\n    AMIDE: 24\r\n}\r\n
\r\n* @class {static} scilligence.JSDraw2.BONDTYPES\r\n*/\r\nJSDraw2.BONDTYPES = {\r\n UNKNOWN: 0,\r\n SINGLE: 1,\r\n DOUBLE: 2,\r\n TRIPLE: 3,\r\n DELOCALIZED: 4,\r\n WEDGE: 5,\r\n HASH: 6,\r\n WIGGLY: 7,\r\n EITHER: 8,\r\n SINGLEORDOUBLE: 9,\r\n SINGLEORAROMATIC: 10,\r\n DOUBLEORAROMATIC: 11,\r\n QUADRUPLE: 12,\r\n DUMMY: 13,\r\n BOLD: 14,\r\n BOLDHASH: 15,\r\n PEPTIDE: 21,\r\n NUCLEOTIDE: 22,\r\n DISULFIDE: 23,\r\n AMIDE: 24\r\n};\r\n\r\nJSDraw2.RXNCENTER = {\r\n NOTCENTER: -1,\r\n CENTER: 1,\r\n BREAK: 4,\r\n CHANGE: 8,\r\n BREAKANDCHANGE: 12\r\n};\r\n\r\nJSDraw2.ALIGN = {\r\n RIGHT: 0,\r\n BOTTOM: 1,\r\n LEFT: 2,\r\n TOP: 3\r\n};\r\n\r\nJSDraw2.BIO = {\r\n AA: 'AA',\r\n //BASE: 'BASE',\r\n ANTIBODY: 'ANTIBODY',\r\n PROTEIN: \"PROTEIN\",\r\n GENE: \"GENE\",\r\n DNA: \"DNA\",\r\n RNA: \"RNA\",\r\n BASE_DNA: \"BASEDNA\",\r\n BASE_RNA: \"BASERNA\"\r\n};\r\n\r\nJSDraw2.ANTIBODY = {\r\n IgG: \"IgG\",\r\n Fab: \"Fab\",\r\n ScFv: \"ScFv\"\r\n};\r\n\r\n\r\nJSDraw2.DNATable = {\r\n GCT: \"A\", GCC: \"A\", GCA: \"A\", GCG: \"A\",\r\n CGT: \"R\", CGC: \"R\", CGA: \"R\", CGG: \"R\", AGA: \"R\", AGG: \"R\",\r\n AAT: \"\", AAC: \"N\",\r\n GAT: \"D\", GAC: \"D\",\r\n TGT: \"C\", TGC: \"C\",\r\n CAA: \"Q\", CAG: \"Q\",\r\n GAA: \"E\", GAG: \"E\",\r\n GGT: \"G\", GGC: \"G\", GGA: \"G\", GGG: \"G\",\r\n CAT: \"H\", CAC: \"H\",\r\n ATT: \"I\", ATC: \"I\", ATA: \"I\",\r\n TTA: \"L\", TTG: \"L\", CTT: \"L\", CTC: \"L\", CTA: \"L\", CTG: \"L\",\r\n AAA: \"K\", AAG: \"K\",\r\n ATG: \"M\",\r\n TTT: \"F\", TTC: \"F\",\r\n CCT: \"P\", CCC: \"P\", CCA: \"P\", CCG: \"P\",\r\n TCT: \"S\", TCC: \"S\", TCA: \"S\", TCG: \"S\", AGT: \"S\", AGC: \"S\",\r\n ACT: \"T\", ACC: \"T\", ACA: \"T\", ACG: \"T\",\r\n TGG: \"W\",\r\n TAT: \"Y\", TAC: \"Y\",\r\n GTT: \"V\", GTC: \"V\", GTA: \"V\", GTG: \"V\",\r\n ATG: \"[\",\r\n TAA: \"]\", TGA: \"]\", TAG: \"]\"\r\n};\r\n\r\n\r\nJSDraw2.RNATable = {\r\n GCU: \"A\", GCC: \"A\", GCA: \"A\", GCG: \"A\",\r\n CGU: \"R\", CGC: \"R\", CGA: \"R\", CGG: \"R\", AGA: \"R\", AGG: \"R\",\r\n AAU: \"N\", AAC: \"N\",\r\n GAU: \"D\", GAC: \"D\",\r\n UGU: \"C\", UGC: \"C\",\r\n CAA: \"Q\", CAG: \"Q\",\r\n GAA: \"E\", GAG: \"E\",\r\n GGU: \"G\", GGC: \"G\", GGA: \"G\", GGG: \"G\",\r\n CAU: \"H\", CAC: \"H\",\r\n AUU: \"I\", AUC: \"I\", AUA: \"I\",\r\n AUG: \"[\",\r\n UUA: \"L\", UUG: \"L\", CUU: \"L\", CUC: \"L\", CUA: \"L\", CUG: \"L\",\r\n AAA: \"K\", AAG: \"K\",\r\n AUG: \"M\",\r\n UUU: \"F\", UUC: \"F\",\r\n CCU: \"P\", CCC: \"P\", CCA: \"P\", CCG: \"P\",\r\n UCU: \"S\", UCC: \"S\", UCA: \"S\", UCG: \"S\", AGU: \"S\", AGC: \"S\",\r\n ACU: \"T\", ACC: \"T\", ACA: \"T\", ACG: \"T\",\r\n UGG: \"W\",\r\n UAU: \"Y\", UAC: \"Y\",\r\n GUU: \"V\", GUC: \"V\", GUA: \"V\", GUG: \"V\",\r\n UAA: \"]\", UGA: \"]\", UAG: \"]\"\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.needPro = function () {\r\n scil.Utils.alert(\"This is a JSDraw Pro feature.\");\r\n};\r\n\r\nJSDraw2.Security = {\r\n kEdition: \"Lite\",\r\n error: null,\r\n valid: true,\r\n\r\n _check: function () {\r\n }\r\n};\r\n\r\n\r\nscil.apply(JSDraw2, {\r\n Text: { cast: function (a) { return null; } },\r\n Shape: { cast: function (a) { return null; } },\r\n Bracket: { cast: function (a) { return null; } },\r\n AssayCurve: { cast: function (a) { return null; } },\r\n Arrow: { cast: function (a) { return null; } },\r\n TLC: { cast: function (a) { return null; } },\r\n Spectrum: { cast: function (a) { return null; } },\r\n Plus: { cast: function (a) { return null; } },\r\n Group: { cast: function (a) { return null; } },\r\n RGroup: { cast: function (a) { return null; } }\r\n});\r\n\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Table = {\r\n splitUnit: function (s) {\r\n if (s == null || s == \" \")\r\n return null;\r\n s = scil.Utils.trim(s);\r\n if (s.length == 0)\r\n return null;\r\n\r\n var unit2 = null;\r\n var unit = null;\r\n var num = s.replace(/[a-z|\\/|%|°]+$/i, \"\");\r\n if (num != s) {\r\n unit2 = s.substr(num.length);\r\n unit = unit2.toLowerCase();\r\n num = scil.Utils.trim(num);\r\n }\r\n\r\n if ((unit == \"w/w\" || unit == \"w/v\") && scil.Utils.endswith(num, \"%\")) {\r\n num = num.substr(0, num.length - 1);\r\n unit2 = unit = \"% \" + unit;\r\n }\r\n\r\n if (unit == \"%w/w\")\r\n unit2 = unit = \"% w/w\";\r\n else if (unit == \"%w/v\")\r\n unit2 = unit = \"% w/v\";\r\n\r\n return { value: scil.Utils.trim(num), unit: unit, unit2: unit2 };\r\n },\r\n\r\n readSdfRecord: function (sdfmol, readattributes) {\r\n if (sdfmol.substr(0, 1) == \"\\n\")\r\n sdfmol = sdfmol.substr(1);\r\n else if (sdfmol.substr(0, 2) == \"\\r\\n\")\r\n sdfmol = sdfmol.substr(2);\r\n\r\n var p = sdfmol.indexOf(\"\\nM END\");\r\n if (p < 0)\r\n p = sdfmol.indexOf(\"\\nM END\");\r\n if (p < 0)\r\n return null;\r\n\r\n var p1 = sdfmol.indexOf(\"\\n\", p + 1);\r\n var molfile = p1 < 0 ? sdfmol : sdfmol.substr(0, p1);\r\n var s = p1 < 0 ? null : sdfmol.substr(p1 + 1);\r\n var props = readattributes ? JSDraw2.Table.readProps(s) : null;\r\n\r\n return { molfile: molfile, props: props };\r\n },\r\n\r\n readProps: function (s) {\r\n var ret = {};\r\n if (s == null)\r\n return ret;\r\n\r\n var ss = s.split('\\n');\r\n for (var i = 0; i < ss.length; ++i) {\r\n s = ss[i];\r\n var n = null;\r\n var v = null;\r\n\r\n if (s.substr(0, 1) == \">\") {\r\n var p = s.indexOf('<', 1);\r\n if (p > 0) {\r\n ++p;\r\n var p1 = s.indexOf('>', p);\r\n if (p1 > 0)\r\n n = s.substr(p, p1 - p);\r\n }\r\n\r\n for (++i; i < ss.length; ++i) {\r\n s = ss[i];\r\n if (scil.Utils.trim(s).length == 0)\r\n break;\r\n if (v == null)\r\n v = s;\r\n else\r\n v += s;\r\n }\r\n }\r\n\r\n if (n != null)\r\n ret[scil.Utils.trim(n)] = scil.Utils.trim(v);\r\n }\r\n\r\n return ret;\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.JSDrawIO = {\r\n downloaddlg: null,\r\n jsdsavedlg: null,\r\n jsdFiles: { jsdraw: \"JSDraw2 XML\", mol: \"Mol File\", rxn: \"Reaction File\", inchi: \"InChI\", helm: \"HELM\", xhelm: \"xHELM\", smiles: \"SMILES\", cml: \"Chemical Markup Language\", cdxml: \"ChemDraw CDXML\", cdx: \"ChemDraw CDX\", png: \"PNG Picture\" },\r\n jsdFiles2: { jsd: \"JSDraw XML\", png: \"PNG Picture\" },\r\n jsdFiles3: { helm: \"HELM\", xhelm: \"xHELM\" },\r\n jsssavedlg: null,\r\n jssFiles: { sdf: \"SDF File\", csv: \"CSV File\", jssdf: \"Xml File\", json: \"Json File\" },\r\n\r\n callWebservice: function (cmd, data, callback) {\r\n if (JSDrawServices.url == null || JSDrawServices.url == \"\")\r\n scil.Utils.alert(\"JSDraw web service is not available\");\r\n else\r\n scil.Utils.ajax(JSDrawServices.url + \"?cmd=\" + cmd, callback, data);\r\n },\r\n\r\n needCrossdomain: function () {\r\n if (JSDrawServices.xdomain) {\r\n var s = window.location + \"\";\r\n var p = s.indexOf(\"://\");\r\n var p2 = s.indexOf(\"/\", p + 3);\r\n var host = s.substr(0, p2 + 1);\r\n if (!scil.Utils.startswith(JSDrawServices.url.toLowerCase(), host.toLowerCase()))\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n jsdFileOpen: function (jsd) {\r\n var msg;\r\n if (JSDraw2.Security.kEdition == \"Lite\")\r\n msg = this.res(\"Please select a HELM file\") + \" (*.helm, *.xhelm):\";\r\n else\r\n msg = this.res(\"Please select a chemistry file\") + \" (*.mol, *.rxn, *.cdx, *.skc, *.helm, *.xhelm, *.smiles etc.):\";\r\n\r\n if (this.needCrossdomain()) {\r\n var url = JSDrawServices.url + \"?cmd=\";\r\n scil.Utils.uploadFile(\"\" + this.res(\"Import File\"),\r\n msg, url + \"xdomain.post\", function (xfilename) {\r\n scil.Utils.jsonp(url + \"openjsd\", function (ret) { JSDraw2.JSDrawIO.jsdFileOpen2(jsd, ret); },\r\n { _xfilename: xfilename });\r\n }, null, null, null, null, true);\r\n }\r\n else {\r\n if (this.jsdFileOpenDlg == null) {\r\n var fields = {\r\n note: { type: \"html\", template: \"
\" + msg + \"
\" },\r\n file: { type: \"postfile\", attributes: { name: \"file\"} },\r\n importas: JSDraw2.Security.kEdition == \"Lite\" ? null : { type: \"select\", items: { \"\": \"\", \"reactant\": \"Import as Reactant\", \"product\": \"Import as Product\"} }\r\n };\r\n var me = this;\r\n this.jsdFileOpenDlg = scil.Form.createDlgForm(\"Load File\", fields,\r\n { src: scil.App.imgSmall(\"open.png\"), label: \"Load File\", onclick: function () { me.jsdFileOpen1(); } },\r\n { usepostform: true, hidelabel: true });\r\n }\r\n\r\n this.jsdFileOpenDlg.show();\r\n this.jsdFileOpenDlg.jsd = jsd;\r\n this.jsdFileOpenDlg.form.postform.reset();\r\n /*\r\n scil.Utils.uploadFile(\"\" + this.res(\"Import File\"),\r\n this.res(\"Please select a chemistry file\") + \" (*.mol, *.rxn, *.cdx, *.skc, *.smiles etc.):\",\r\n JSDrawServices.url + \"?cmd=openjsd\",\r\n function (ret) { JSDraw2.JSDrawIO.jsdFileOpen2(jsd, ret); });\r\n */\r\n }\r\n },\r\n\r\n jsdFileOpen1: function () {\r\n var me = this;\r\n this.jsdFileOpenDlg.form.post(JSDrawServices.url + \"?cmd=openjsd\", null, function (ret) {\r\n var importas = me.jsdFileOpenDlg.form.fields.importas == null ? null : me.jsdFileOpenDlg.form.fields.importas.value;\r\n me.jsdFileOpen2(me.jsdFileOpenDlg.jsd, ret, importas);\r\n me.jsdFileOpenDlg.hide();\r\n });\r\n },\r\n\r\n jsdFileOpen2: function (jsd, ret, importas) {\r\n var data = ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents;\r\n if (importas == \"reactant\" || importas == \"product\") {\r\n var m = new JSDraw2.Mol();\r\n if (ret.format == \"molfile\")\r\n m.setMolfile(data);\r\n else if (ret.format == \"rxn\")\r\n m.setRxnfile(data);\r\n else\r\n m.setXml(data);\r\n\r\n if (m.atoms.length > 0) {\r\n var rxn = m.parseRxn(true);\r\n var f = false;\r\n if (rxn == null) {\r\n if (jsd.pasteMol(m, null, importas))\r\n f = true;\r\n }\r\n else if (rxn.arrow == null && rxn.products.length == 0) {\r\n for (var i = 0; i < rxn.reactants.length; ++i)\r\n if (jsd.pasteMol(rxn.reactants[i], null, importas))\r\n f = true;\r\n }\r\n else {\r\n if (importas == \"reactant\" && rxn.reactants != null) {\r\n for (var i = 0; i < rxn.reactants.length; ++i)\r\n if (jsd.pasteMol(rxn.reactants[i], null, importas))\r\n f = true;\r\n }\r\n else if (importas == \"product\" && rxn.products != null) {\r\n for (var i = 0; i < rxn.products.length; ++i)\r\n if (jsd.pasteMol(rxn.products[i], null, importas))\r\n f = true;\r\n }\r\n }\r\n\r\n if (f)\r\n jsd.refresh(true);\r\n else\r\n scil.Utils.alert(\"No structure imported\");\r\n }\r\n }\r\n else {\r\n if (ret.format == \"molfile\" || scil.Utils.endswith(ret.filename, \".mol\"))\r\n jsd.setMolfile(data);\r\n else if (ret.format == \"rxn\" || scil.Utils.endswith(ret.filename, \".rxn\"))\r\n jsd.setRxnfile(data);\r\n else if (ret.format == \"xhelm\" || scil.Utils.endswith(ret.filename, \".xhelm\"))\r\n jsd.setXHelm(data);\r\n else if (ret.format == \"helm\" || scil.Utils.endswith(ret.filename, \".helm\"))\r\n jsd.setHelm(data);\r\n else\r\n jsd.setXml(data);\r\n }\r\n },\r\n\r\n jsdFileSave: function (jsd) {\r\n if (JSDraw2.JSDrawIO.jsdsavedlg == null) {\r\n var div = scil.Utils.createElement(null, \"div\", this.res(\"Please select the file format to be saved: \"), { width: \"420px\", margin: \"10px\" });\r\n var sel = scil.Utils.createElement(div, \"select\");\r\n scil.Utils.createElement(sel, \"option\");\r\n if (JSDraw2.Security.kEdition == \"Lite\") {\r\n if (jsd.options.helmtoolbar)\r\n scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles3, null, false);\r\n else\r\n scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles, null, false);\r\n }\r\n else if (jsd.options.tlcplate)\r\n scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles2, null, false);\r\n else\r\n scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jsdFiles, null, false);\r\n\r\n var s = scil.Utils.createElement(div, \"div\", null, { marginTop: \"20px\", textAlign: \"center\" });\r\n scil.Utils.createButton(s, { src: scil.App.imgSmall(\"submit.png\"), label: \"Save File\", onclick: function (e) { JSDraw2.JSDrawIO.jsdFileSave2(); e.preventDefault(); } });\r\n scil.Utils.createButton(s, \" \");\r\n scil.Utils.createButton(s, { src: scil.App.imgSmall(\"cancel.png\"), label: \"Cancel\", onclick: function (e) { JSDraw2.JSDrawIO.jsdsavedlg.hide(); e.preventDefault(); } });\r\n\r\n JSDraw2.JSDrawIO.jsdsavedlg = new JSDraw2.Dialog(\"\" + this.res(\"Save File\"), div);\r\n JSDraw2.JSDrawIO.jsdsavedlg.sel = sel;\r\n }\r\n JSDraw2.JSDrawIO.jsdsavedlg.jsd = jsd;\r\n JSDraw2.JSDrawIO.jsdsavedlg.show();\r\n JSDraw2.JSDrawIO.jsdsavedlg.sel.selectedIndex = 0;\r\n },\r\n\r\n jsdFileSave2: function () {\r\n this.jsdFileSave3(JSDraw2.JSDrawIO.jsdsavedlg.sel.value, JSDraw2.JSDrawIO.jsdsavedlg.jsd);\r\n this.jsdsavedlg.hide();\r\n },\r\n\r\n jsdFileSave3: function (ext, jsd) {\r\n var s;\r\n if (ext == \"helm\")\r\n s = jsd.getHelm();\r\n else if (ext == \"xhelm\")\r\n s = jsd.getXHelm();\r\n else\r\n s = jsd.getXml();\r\n\r\n var dt = new Date();\r\n var prefix = JSDraw2.Security.kEdition == \"Lite\" && jsd.options.helmtoolbar ? \"HELM\" : \"JSDraw\";\r\n var filename = prefix + dt.getFullYear() + \"-\" + (dt.getMonth() + 1) + \"-\" + dt.getDate() + \".\" + ext;\r\n var args = { client: \"jsdraw\", wrapper: \"none\", filename: filename, contents: s };\r\n scil.Utils.post(JSDrawServices.url + \"?cmd=savefile\", args, \"_blank\");\r\n },\r\n\r\n cleanup: function (jsd) {\r\n var selected = jsd.m.clone(true);\r\n if (selected != null && selected.atoms.length == 0)\r\n selected = null;\r\n var smiles = selected != null ? selected.getSmiles() : jsd.getSmiles();\r\n if (smiles == null || smiles == \"\")\r\n return;\r\n\r\n var url = JSDrawServices.url;\r\n if (url == null) {\r\n scil.Utils.alert(\"JSDraw Web Service is not configured yet.\");\r\n return;\r\n }\r\n\r\n var l = window.location;\r\n var s = l.protocol + \"//\" + l.host + \"/\";\r\n\r\n var fun = null;\r\n if (scil.Utils.startswith(url.toLowerCase(), s.toLowerCase())) {\r\n fun = scil.Utils.ajax;\r\n smiles = selected != null ? selected.getXml() : jsd.getXml();\r\n }\r\n else {\r\n fun = scil.Utils.jsonp;\r\n }\r\n\r\n var openbonds = [];\r\n if (selected != null) {\r\n for (var i = 0; i < jsd.m.bonds.length; ++i) {\r\n var b = jsd.m.bonds[i];\r\n if (b.a1.selected != b.a2.selected)\r\n openbonds.push(b);\r\n }\r\n }\r\n\r\n var me = this;\r\n fun(url + \"?cmd=cleanup\", function (data) {\r\n if (selected != null) {\r\n var m = me._data2Mol(data);\r\n if (m != null && !m.isEmpty()) {\r\n m.setBondLength(jsd.bondlength);\r\n\r\n if (!me._connectOpenBonds(jsd.m, m, openbonds, jsd.bondlength)) {\r\n var center = selected.rect().center();\r\n var center2 = m.rect().center();\r\n m.offset(center.x - center2.x, center.y - center2.y);\r\n }\r\n\r\n jsd.pushundo();\r\n jsd.delSelected();\r\n\r\n m.setSelected(true);\r\n jsd.m.mergeMol(m);\r\n jsd.refresh(true);\r\n\r\n }\r\n }\r\n else {\r\n me._setMolData(jsd, data, null, true);\r\n }\r\n }, { input: smiles, inputformat: \"jsdraw\" });\r\n },\r\n\r\n _connectOpenBonds: function (host, m, bonds, bondlength) {\r\n if (bonds.length == 0)\r\n return false;\r\n\r\n if (bonds.length > 1) {\r\n for (var i = 0; i < bonds.length; ++i) {\r\n var bond = bonds[i];\r\n var move = bond.a1.selected ? bond.a1 : bond.a2;\r\n var fix = bond.a1.selected ? bond.a2 : bond.a1;\r\n var a = m.getObjectById(move.id);\r\n if (a == null)\r\n continue;\r\n\r\n var nb = bond.clone();\r\n nb.replaceAtom(move, a);\r\n m.addBond(nb);\r\n }\r\n return false;\r\n }\r\n\r\n var bond = bonds[0];\r\n var move = bond.a1.selected ? bond.a1 : bond.a2;\r\n var fix = bond.a1.selected ? bond.a2 : bond.a1;\r\n\r\n var a = m.getObjectById(move.id);\r\n if (a == null)\r\n return false;\r\n\r\n // translate\r\n var p;\r\n if (bond.selected) {\r\n var i = scil.Utils.indexOf(host.bonds, bond);\r\n host.bonds.splice(i, 1);\r\n p = host.guessBond(fix, bondlength);\r\n host.bonds.splice(i, 0, bond);\r\n }\r\n else {\r\n p = move.p;\r\n }\r\n m.offset(p.x - a.p.x, p.y - a.p.y);\r\n\r\n // rotate\r\n var p2 = m.guessBond(a, bondlength);\r\n var ang1 = fix.p.angleTo(p);\r\n var ang2 = p2.angleTo(p);\r\n m.rotate(p, ang1 - ang2);\r\n\r\n var nb = bond.clone();\r\n nb.replaceAtom(move, a);\r\n m.addBond(nb);\r\n return true;\r\n },\r\n\r\n _data2Mol: function (data) {\r\n var m = new JSDraw2.Mol();\r\n if (typeof (data) == \"string\")\r\n m = m.setXml(data);\r\n else\r\n m = m.setXml(data.output);\r\n return m;\r\n },\r\n\r\n _setMolData: function (jsd, data, q, clear) {\r\n var m = this._data2Mol(data);\r\n if (m == null || m.isEmpty())\r\n return;\r\n\r\n jsd.pushundo();\r\n if (jsd.setXml(m.getXml()) != null)\r\n jsd.refresh(true);\r\n },\r\n\r\n name2structure: function (jsd) {\r\n var fn = function (q) {\r\n var url;\r\n if (JSDrawServices.id2s != null && JSDrawServices.id2s.url != null && JSDrawServices.id2s.regex != null && q.match(JSDrawServices.id2s.regex) != null)\r\n url = JSDrawServices.id2s.url;\r\n else if (JSDrawServices.n2s != null && JSDrawServices.n2s.url != null)\r\n url = JSDrawServices.n2s.url;\r\n\r\n if (url == null) {\r\n scil.Utils.alert(\"Name-to-structure is not configured yet.\");\r\n return;\r\n }\r\n\r\n scil.Utils.jsonp(url, function (data) { JSDraw2.JSDrawIO._setMolData(jsd, data, q); }, { q: q, fmt: \"jsdraw\" }, { showprogress: true });\r\n };\r\n\r\n // caption, message, defaultval, btn, callback,\r\n var msg = JSDrawServices.n2s != null && JSDrawServices.url.msg != null ? JSDrawServices.n2s.msg : this.res(\"Please type chemical name, CAS, SMILES etc.\") + \":\";\r\n scil.Utils.prompt2({\r\n caption: \"\" + this.res(\"Name to Structure\"),\r\n message: msg,\r\n button: this.res(\"Convert\"),\r\n callback: fn,\r\n autosuggesturl: (JSDrawServices.n2s != null ? JSDrawServices.n2s.suggest : null),\r\n iconurl: scil.Utils.imgSrc(\"img/name2s.gif\"),\r\n owner: jsd\r\n });\r\n },\r\n\r\n res: function (s) {\r\n return JSDraw2.Language.res(s);\r\n },\r\n\r\n jssFileOpen: function (jss) {\r\n var check = { msg: \"Appending Mode\" };\r\n if (jss.options.appendingmode) {\r\n check.checked = true;\r\n check.disabled = true;\r\n }\r\n var structurecolumn = jss.options.structurecolumn == null ? \"\" : jss.options.structurecolumn;\r\n scil.Utils.uploadFile(\"\" + this.res(\"Open File\"),\r\n this.res(\"Please select a file\") + \" (*.sdf,*.rdf,*.xls,*.csv,*.smiles):\", JSDrawServices.url + \"?cmd=openjss\",\r\n function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jss, ret); }, { structurecolumn: structurecolumn }, check);\r\n\r\n if (this.needCrossdomain()) {\r\n var url = JSDrawServices.url + \"?cmd=\";\r\n scil.Utils.uploadFile(\"\" + this.res(\"Open File\"),\r\n this.res(\"Please select a file\") + \" (*.sdf,*.rdf,*.xls,*.csv,*.smiles)\",\r\n url + \"xdomain.post\", function (xfilename) {\r\n scil.Utils.jsonp(url + \"openjss\", function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jsd, ret); },\r\n { _xfilename: xfilename, structurecolumn: structurecolumn });\r\n }, null, null, null, null, true);\r\n }\r\n else {\r\n scil.Utils.uploadFile(\"\" + this.res(\"Open File\"),\r\n this.res(\"Please select a file\") + \" (*.sdf,*.rdf,*.xls,*.csv,*.smiles):\", JSDrawServices.url + \"?cmd=openjss\",\r\n function (ret) { JSDraw2.JSDrawIO.jssFileOpen2(jss, ret); }, { structurecolumn: structurecolumn }, check);\r\n }\r\n },\r\n\r\n jssFileOpen2: function (jss, ret, check) {\r\n var appendingmode = scil.Utils.uploadfileDlg.check.checked;\r\n if (scil.Utils.endswith(ret.filename, \".rdf\"))\r\n jss.setRdf(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, null, !appendingmode);\r\n //else if (scil.Utils.endswith(ret.filename, \".sdf\"))\r\n // jss.setSdf(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, null, !appendingmode);\r\n else\r\n jss.setXml(ret.base64 != null ? JSDraw2.Base64.decode(ret.base64) : ret.contents, null, !appendingmode, appendingmode);\r\n },\r\n\r\n jssFileSave: function (jss) {\r\n if (JSDraw2.JSDrawIO.jsssavedlg == null) {\r\n var div = scil.Utils.createElement(null, \"div\", this.res(\"Please select a file type\") + \":\", { width: \"350px\", margin: \"10px\" });\r\n var sel = scil.Utils.createElement(div, \"select\");\r\n scil.Utils.createElement(sel, \"option\");\r\n scil.Utils.listOptions(sel, JSDraw2.JSDrawIO.jssFiles, null, false);\r\n\r\n var s = scil.Utils.createElement(div, \"div\", null, { marginTop: \"20px\", textAlign: \"center\" });\r\n var btn = scil.Utils.createElement(s, \"button\", \"\" + this.res(\"Save\"));\r\n dojo.connect(btn, \"onclick\", function (e) { JSDraw2.JSDrawIO.jssFileSave2(); e.preventDefault(); });\r\n JSDraw2.JSDrawIO.jsssavedlg = new JSDraw2.Dialog(\"\" + this.res(\"Save File\"), div);\r\n JSDraw2.JSDrawIO.jsssavedlg.sel = sel;\r\n }\r\n JSDraw2.JSDrawIO.jsssavedlg.jss = jss;\r\n JSDraw2.JSDrawIO.jsssavedlg.show();\r\n JSDraw2.JSDrawIO.jsssavedlg.sel.selectedIndex = 0;\r\n },\r\n\r\n jssFileSave2: function () {\r\n var ext = JSDraw2.JSDrawIO.jsssavedlg.sel.value;\r\n var dt = new Date();\r\n var filename = \"JSDrawTable\" + dt.getFullYear() + \"-\" + (dt.getMonth() + 1) + \"-\" + dt.getDate() + \".\" + ext;\r\n var args = { client: \"jssdf\", wrapper: \"none\", filename: filename };\r\n switch (ext) {\r\n case \"sdf\":\r\n args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getSdf();\r\n break;\r\n case \"jssdf\":\r\n args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getXml();\r\n break;\r\n case \"json\":\r\n args.contents = scil.Utils.json2str(JSDraw2.JSDrawIO.jsssavedlg.jss.getJson());\r\n break;\r\n case \"csv\":\r\n args.contents = JSDraw2.JSDrawIO.jsssavedlg.jss.getCsv();\r\n break;\r\n }\r\n scil.Utils.post(JSDrawServices.url + \"?cmd=savefile\", args, \"_blank\");\r\n JSDraw2.JSDrawIO.jsssavedlg.hide();\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Language = {\r\n current: null,\r\n use: function (lang) {\r\n },\r\n\r\n res: function (s) {\r\n return s;\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Lasso = scilligence.extend(scilligence._base, {\r\n constructor: function (extra, linewidth, selecting) {\r\n this.surface = extra;\r\n this.linewidth = linewidth;\r\n this.list = selecting ? [] : null;\r\n\r\n this.lasthits = [];\r\n this.curhits = [];\r\n this.line = null;\r\n },\r\n\r\n hit: function (a) {\r\n if (scil.Utils.indexOf(this.lasthits, a) >= 0)\r\n return;\r\n\r\n a.selected = !a.selected;\r\n if (a.selected)\r\n a.drawSelect(this);\r\n else\r\n this.remove(a);\r\n this.curhits.push(a);\r\n },\r\n\r\n endHits: function(start, end) {\r\n this.lasthits = this.curhits;\r\n this.curhits = [];\r\n\r\n if (this.line != null)\r\n this.surface.remove(this.line);\r\n this.line = JSDraw2.Drawer.drawLine(this.surface, start, end, \"#aaf\", this.linewidth / 2);\r\n },\r\n\r\n draw: function (a, points) {\r\n if (points.x != null)\r\n points = [points];\r\n\r\n var nodes = [];\r\n for (var i = 0; i < points.length; ++i) {\r\n var p = points[i];\r\n var c = this.surface.createCircle({ cx: p.x, cy: p.y, r: this.linewidth * 2 }).setFill(JSDraw2.Editor.COLORSELECTED);\r\n nodes.push(c);\r\n }\r\n\r\n if (this.list != null)\r\n this.list.push({ a: a, nodes: nodes })\r\n },\r\n\r\n remove: function (a) {\r\n var nodes = null;\r\n for (var i = 0; i < this.list.length; ++i) {\r\n if (this.list[i].a == a) {\r\n nodes = this.list[i].nodes;\r\n this.list.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n if (nodes == null)\r\n return;\r\n\r\n for (var i = 0; i < nodes.length; ++i)\r\n this.surface.remove(nodes[i]);\r\n }\r\n});","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.PT = {\r\n commonUsed: { C: \"C\", N: \"N\", O: \"O\", S: \"S\", P: \"P\", F: \"F\", Cl: \"L\", Br: \"B\", I: \"I\", H: \"H,D,T\", Si: null, R: \"R\" },\r\n\r\n getCommonUsedElements: function (forwhat) {\r\n var list = [];\r\n if (forwhat == \"menu\") {\r\n for (var e in JSDraw2.PT.commonUsed)\r\n list.push({ caption: e, shortcut: JSDraw2.PT.commonUsed[e] });\r\n list.push(\"-\");\r\n }\r\n else {\r\n for (var e in this.commonUsed)\r\n list.push(e);\r\n }\r\n\r\n //list.push(\"...\");\r\n return list;\r\n },\r\n\r\n '*': { a: 0 },\r\n 'X': { a: 0 }, // halogen\r\n 'R': { a: 0 },\r\n\r\n H: { a: 1, c: '909090', m: 1.0079, em: 1.0078, e: 1, v: [1], iso: { 1: 1.0078, 2: 2.0141, 3: 3.0161} },\r\n // JSDraw.Pro\r\n Be: { a: 4, c: 'C2FF00', m: 9.0122, em: 9.0122, v: [0, 2], iso: { 9: 9.0122} },\r\n B: { a: 5, c: 'FFB5B5', m: 10.811, em: 11.0093, e: 3, v: [3], iso: { 10: 10.0129, 11: 11.0093} },\r\n C: { a: 6, c: '000000', m: 12.0107, em: 12, e: 4, v: [4], iso: { 12: 12, 13: 13.0034} },\r\n N: { a: 7, c: '3050F8', m: 14.0067, em: 14.0031, e: 5, v: [3], iso: { 14: 14.0031, 15: 15.0001} },\r\n O: { a: 8, c: 'FF0D0D', m: 15.9994, em: 15.9949, e: 6, v: [2], iso: { 16: 15.9949, 17: 16.9991, 18: 17.9992} },\r\n F: { a: 9, c: '90E050', m: 18.9984, em: 18.9984, e: 7, v: [1], iso: { 19: 18.9984} },\r\n // JSDraw.Pro\r\n Na: { a: 11, c: 'AB5CF2', m: 22.9898, em: 22.9898, v: [0, 1], iso: { 23: 22.9898} },\r\n // JSDraw.Pro\r\n Si: { a: 14, c: 'F0C8A0', m: 28.0855, em: 27.9769, e: 4, v: [4], iso: { 28: 27.9769, 29: 28.9765, 30: 29.9738} },\r\n P: { a: 15, c: 'FF8000', m: 30.9738, em: 30.9738, e: 5, v: [3, 5], iso: { 31: 30.9738} },\r\n S: { a: 16, c: 'C0C000', m: 32.065, em: 31.9721, e: 6, v: [2, 4, 6], iso: { 32: 31.9721, 33: 32.9715, 34: 33.9679, 36: 35.9671} },\r\n Cl: { a: 17, c: '1FF01F', m: 35.453, em: 34.9689, e: 7, v: [1, 3, 5, 7], iso: { 35: 34.9689, 37: 36.9659} },\r\n // JSDraw.Pro\r\n K: { a: 19, c: '8F40D4', m: 39.0983, em: 38.9637, v: [0, 1], iso: { 39: 38.9637, 40: 39.964, 41: 40.9618} },\r\n Ca: { a: 20, c: '3DFF00', m: 40.078, em: 39.9626, v: [0, 2], iso: { 40: 39.9626, 42: 41.9586, 43: 42.9588, 44: 43.9555, 46: 45.9537, 48: 47.9525} },\r\n // JSDraw.Pro\r\n Ge: { a: 32, c: '668F8F', m: 72.64, em: 73.9212, v: [4, 2], iso: { 70: 69.9243, 72: 71.9221, 73: 72.9235, 74: 73.9212, 76: 75.9214} },\r\n As: { a: 33, c: 'BD80E3', m: 74.9216, em: 74.9216, e: 5, v: [3, 5], iso: { 75: 74.9216} },\r\n Se: { a: 34, c: 'FFA100', m: 78.96, em: 79.9165, e: 6, v: [2, 4, 6], iso: { 74: 73.9225, 76: 75.9192, 77: 76.9199, 78: 77.9173, 80: 79.9165, 82: 81.9167} },\r\n Br: { a: 35, c: 'A62929', m: 79.904, em: 78.9183, e: 7, v: [1, 3, 5, 7], iso: { 79: 78.9183, 81: 80.9163} },\r\n // JSDraw.Pro\r\n I: { a: 53, c: '940094', m: 126.904, em: 126.904, e: 7, v: [1, 3, 5, 7], iso: { 127: 126.904} },\r\n // JSDraw.Pro\r\n\r\n isElectronAcceptor: function (e) {\r\n var an = e.a;\r\n return an >= 6 && an <= 9 || // Element.C && atomicno <= Element.F ||\r\n an >= 15 && an <= 17 || // atomicno > Element.P && atomicno <= Element.Cl ||\r\n an >= 33 && an <= 35 || // atomicno >= Element.As && atomicno <= Element.Br ||\r\n an >= 50 && an <= 53 || // atomicno >= Element.Sb && atomicno <= Element.I ||\r\n an >= 83 && an <= 85; // atomicno >= Element.Bi && atomicno <= Element.At;\r\n },\r\n\r\n showQueryAtoms: function (parent, f) {\r\n var buttons = parent.getElementsByTagName(\"button\");\r\n for (var i = 0; i < buttons.length; ++i) {\r\n if (buttons[i].getAttribute(\"r\") == \"1\")\r\n buttons[i].style.display = f ? \"\" : \"none\";\r\n }\r\n },\r\n\r\n makeAtomList: function (list, f) {\r\n if (list == null || list == \"\")\r\n return null;\r\n\r\n var atoms = [];\r\n var ss = list.split(\",\");\r\n for (var i = 0; i < ss.length; ++i) {\r\n var s = scilligence.Utils.trim(ss[i]);\r\n if (this.isValidAtomList(s))\r\n atoms.push(s);\r\n }\r\n\r\n return atoms.length == 0 ? null : { atoms: atoms, t: !scilligence.Utils.isFalse(f) };\r\n },\r\n\r\n isMetal: function (atomicno) {\r\n return false;\r\n },\r\n\r\n isValidAtomList: function (s) {\r\n var e = JSDraw2.PT[s];\r\n return e != null && e.a > 0 || s == \"*\" || s == \"A\" || s == \"a\" || s == \"c\" || this.isArAtom(s.toUpperCase());\r\n },\r\n\r\n isArAtom: function (s) {\r\n return s == \"C\" || s == \"N\" || s == \"S\" || s == \"P\" || s == \"O\";\r\n }\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Skin = {\r\n jsdraw: null,\r\n jssdf: null,\r\n dialog: null,\r\n\r\n reset: function () {\r\n this.jsdraw = { bkcolor: \"#e1e1e1\", bkimg: scil.Utils.imgSrc(\"img/hbg.gif\"), toolbarbk: scil.Utils.imgSrc(\"img/toolbarbk.jpg\"), hovercolor: \"#eef\", btnselcolor: \"#bbf\" };\r\n this.jssdf = { bgcolor: \"#eee\", headerimg: scil.Utils.imgSrc(\"img/header-bg.gif\"), headercolor: \"#eee\", rowcolor: \"#f96\", oddcolor: \"\", evencolor: \"#eee\", border: \"solid 1px #ccc\" };\r\n scilligence.apply(this.jssdf, this.jsdraw);\r\n this.dialog = { bkimg: scil.Utils.imgSrc(\"img/dlgheader.gif\"), bkcolor: \"#6badf6\", border: \"1px solid #4f6d81\" };\r\n },\r\n\r\n red: function () {\r\n this.jsdraw = { bkcolor: \"#ECCDDC\", bkimg: scil.Utils.imgSrc(\"img/hbg-red.gif\"), toolbarbk: scil.Utils.imgSrc(\"img/toolbarbk-red.jpg\"), hovercolor: \"#fCdDeC\" };\r\n this.jssdf = { bgcolor: \"#F8CEE8\", headerimg: scil.Utils.imgSrc(\"img/header-bgred.gif\"), headercolor: \"#F8CEE8\", rowcolor: \"#FfeEf8\", oddcolor: \"\", evencolor: \"#eee\", border: \"solid 1px #ccc\" };\r\n scilligence.apply(this.jssdf, this.jsdraw);\r\n this.dialog = { bkimg: scil.Utils.imgSrc(\"img/dlgheader-red.gif\"), bkcolor: \"#E7A6DF\", border: \"1px solid #4f6d81\" };\r\n },\r\n\r\n green: function () {\r\n this.jsdraw = { bkcolor: \"#C7EEDF\", bkimg: scil.Utils.imgSrc(\"img/hbg-green.gif\"), toolbarbk: scil.Utils.imgSrc(\"img/toolbarbk-green.jpg\"), hovercolor: \"#d7fEeF\" };\r\n this.jssdf = { bgcolor: \"#CCF8E8\", headerimg: scil.Utils.imgSrc(\"img/header-bggreen.gif\"), headercolor: \"#CCF8E8\", rowcolor: \"#dCFff8\", oddcolor: \"\", evencolor: \"#eee\", border: \"solid 1px #ccc\" };\r\n scilligence.apply(this.jssdf, this.jsdraw);\r\n this.dialog = { bkimg: scil.Utils.imgSrc(\"img/dlgheader-green.gif\"), bkcolor: \"#95D09C\", border: \"1px solid #4f6d81\" };\r\n },\r\n\r\n blue: function () {\r\n this.jsdraw = { bkcolor: \"#CDD0EC\", bkimg: scil.Utils.imgSrc(\"img/hbg-blue.gif\"), toolbarbk: scil.Utils.imgSrc(\"img/toolbarbk-blue.jpg\"), hovercolor: \"#dDe0fC\" };\r\n this.jssdf = { bgcolor: \"#DCDFF6\", headerimg: scil.Utils.imgSrc(\"img/header-bgblue.gif\"), headercolor: \"#DCDFF6\", rowcolor: \"#eCeFFf\", oddcolor: \"\", evencolor: \"#eee\", border: \"solid 1px #ccc\" };\r\n scilligence.apply(this.jssdf, this.jsdraw);\r\n this.dialog = { bkimg: scil.Utils.imgSrc(\"img/dlgheader-blue.gif\"), bkcolor: \"#8BB6CC\", border: \"1px solid #4f6d81\" };\r\n },\r\n\r\n yellow: function () {\r\n this.jsdraw = { bkcolor: \"#ECECCD\", bkimg: scil.Utils.imgSrc(\"img/hbg-yellow.gif\"), toolbarbk: scil.Utils.imgSrc(\"img/toolbarbk-yellow.jpg\"), hovercolor: \"#fCfCdD\" };\r\n this.jssdf = { bgcolor: \"#F4F4E1\", headerimg: scil.Utils.imgSrc(\"img/header-bgyellow.gif\"), headercolor: \"#F4F4E1\", rowcolor: \"#F4F4B8\", oddcolor: \"\", evencolor: \"#eee\", border: \"solid 1px #ccc\" };\r\n scilligence.apply(this.jssdf, this.jsdraw);\r\n this.dialog = { bkimg: scil.Utils.imgSrc(\"img/dlgheader-yellow.gif\"), bkcolor: \"#C8BA8F\", border: \"1px solid #4f6d81\" };\r\n },\r\n\r\n menu: { highlightcolor: \"#c60\", color: \"blue\" },\r\n form: {\r\n labelstyles: { backgroundColor: \"#eef\", border: \"solid 1px #dde\", textAlign: \"left\", verticalAlign: \"top\", whiteSpace: \"nowrap\" },\r\n fieldcolor: \"blue\",\r\n rowselectcolor: \"#aaf\"\r\n }\r\n};\r\n\r\nJSDraw2.Skin.reset();\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n* Stack class - define Stack data structure\r\n* @class scilligence.JSDraw2.Stack\r\n*
\r\n* Example:\r\n*    var stack = JSDraw2.Stack(50);\r\n*    stack.push(\"Hydrogen\");\r\n*    stack.push(\"Exygen\");\r\n*\r\n*    var item = stack.pop();\r\n* 
\r\n*/\r\nJSDraw2.Stack = scilligence.extend(scilligence._base, {\r\n /**\r\n * @constructor Stack\r\n * @param {number} capacity\r\n */\r\n constructor: function (capacity) {\r\n this._items = [];\r\n this._capacity = capacity;\r\n },\r\n\r\n /**\r\n * Get an item by its index\r\n * @function item\r\n * @param {number} i - the index\r\n * @returns the item\r\n */\r\n item: function (i) {\r\n return this._items[i];\r\n },\r\n\r\n /**\r\n * Clear all items\r\n * @returns null\r\n */\r\n clear: function () {\r\n this._items = [];\r\n },\r\n\r\n /**\r\n * Get item count\r\n * @function length\r\n * @returns a number\r\n */\r\n length: function () {\r\n return this._items.length;\r\n },\r\n\r\n isEmpty: function () {\r\n return this._items.length == 0;\r\n },\r\n\r\n /**\r\n * Push a new item at the end of stack\r\n * @function push\r\n * @param {object} i - the item\r\n * @returns null\r\n */\r\n push: function (i) {\r\n if (this._items.length > this._capacity)\r\n this._items.splice(0, 1);\r\n this._items.push(i);\r\n },\r\n\r\n /**\r\n * Pop out the top item in the stack\r\n * @function pop\r\n * @returns the item\r\n */\r\n pop: function () {\r\n if (this._items.length == 0)\r\n return null;\r\n return this._items.pop();\r\n },\r\n\r\n popHead: function () {\r\n if (this._items.length == 0)\r\n return null;\r\n var i = this._items[0];\r\n this._items.splice(0, 1);\r\n return i;\r\n }\r\n});\r\n\r\n\r\n\r\nscil.Deque = scil.apply(scil._base, {\r\n constructor: function () {\r\n this.items = [];\r\n },\r\n\r\n pushRange: function (list) {\r\n if (list == null)\r\n return;\r\n\r\n for (var i = 0; i < list.length; ++i)\r\n this.push(list[i]);\r\n },\r\n\r\n push: function (n) {\r\n this.items.push(n);\r\n },\r\n\r\n pop: function () {\r\n if (this.items.length == 0)\r\n return null;\r\n\r\n var r = this.items[0];\r\n this.items.splice(0, 1);\r\n return r;\r\n },\r\n\r\n length: function () {\r\n return this.items.length;\r\n },\r\n\r\n clear: function () {\r\n this.items = [];\r\n }\r\n});","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.SuperAtoms = {\r\n sdf: \"\\nMolEngine02241412152D\\n\\n 6 6 0 0 0 0 999 V2000\\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 2 0 0 0 0\\n 2 3 1 0 0 0 0\\n 1 4 1 0 0 0 0\\n 4 5 2 0 0 0 0\\n 5 6 1 0 0 0 0\\n 6 3 2 0 0 0 0\\nM END\\n> \\nBenzene\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 6 6 0 0 0 0 999 V2000\\n 1.3510 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.3510 3.1200 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7020 2.3400 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7020 0.7800 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 2 3 1 0 0 0 0\\n 3 4 1 0 0 0 0\\n 4 5 1 0 0 0 0\\n 5 6 1 0 0 0 0\\n 6 1 1 0 0 0 0\\nM END\\n> \\nHexane\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 5 5 0 0 0 0 999 V2000\\n 0.0000 0.4821 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4836 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.4006 1.2621 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4836 2.5242 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 2.0421 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 2 3 1 0 0 0 0\\n 3 4 1 0 0 0 0\\n 4 5 1 0 0 0 0\\n 5 1 1 0 0 0 0\\nM END\\n> \\nPentane\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 3 3 0 0 0 0 999 V2000\\n 0.7800 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.5600 1.3510 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 1 3 1 0 0 0 0\\n 2 3 1 0 0 0 0\\nM END\\n> \\nPropane\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 4 4 0 0 0 0 999 V2000\\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.5600 1.5600 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.5600 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 2 3 1 0 0 0 0\\n 3 4 1 0 0 0 0\\n 4 1 1 0 0 0 0\\nM END\\n> \\nButane\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 7 7 0 0 0 0 999 V2000\\n 0.0000 0.9727 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.2196 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7405 0.3471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.4174 1.7527 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.7405 3.1581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.2196 3.5054 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 2.5327 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 2 3 1 0 0 0 0\\n 3 4 1 0 0 0 0\\n 4 5 1 0 0 0 0\\n 5 6 1 0 0 0 0\\n 6 7 1 0 0 0 0\\n 7 1 1 0 0 0 0\\nM END\\n> \\nHeptane\\n\\n$$$$\\n\\nMolEngine02241412152D\\n\\n 8 8 0 0 0 0 999 V2000\\n 0.0000 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1031 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6631 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.7660 1.1031 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.7660 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6631 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.1031 3.7662 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.0000 2.6631 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0 0 0 0\\n 2 3 1 0 0 0 0\\n 3 4 1 0 0 0 0\\n 4 5 1 0 0 0 0\\n 5 6 1 0 0 0 0\\n 6 7 1 0 0 0 0\\n 7 8 1 0 0 0 0\\n 8 1 1 0 0 0 0\\nM END\\n> \\nOctane\\n\\n$$$$\\n\",\r\n\r\n dict: null,\r\n reversible: {},\r\n AminoAcids: {},\r\n DNAs: {},\r\n RNAs: {},\r\n templates: {},\r\n nterminals: {},\r\n cterminals: {},\r\n customtemplates: {},\r\n\r\n listFunctionalGroups: function (parent) {\r\n this.read();\r\n var cols = [{ key: 'name', caption: 'Name', width: 200 }, { key: 'molfile', type: \"structure\", caption: 'Structure'}];\r\n var jss = new JSDraw2.Table(null, { columns: cols, toolbar: [\"search\"] }, parent);\r\n\r\n var list = [];\r\n for (var name in this.dict)\r\n list.push({ name: name, molfile: this.dict[name] == null ? null : this.dict[name].getMolfile() });\r\n jss.setJson({ rows: list });\r\n\r\n },\r\n\r\n filter: function (q, n) {\r\n if (q == null || q == \"\")\r\n return null;\r\n\r\n var ret = [];\r\n q = q.toLowerCase();\r\n var len = q.length;\r\n for (var k in this.dict) {\r\n if (k.length >= len && k.substr(0, len).toLowerCase() == q) {\r\n ret.push(k);\r\n if (ret.length >= n)\r\n break;\r\n }\r\n }\r\n return ret;\r\n },\r\n\r\n get: function (name) {\r\n this.read();\r\n var m = this.dict[name];\r\n if (m == null)\r\n m = this.nterminals[name];\r\n if (m == null)\r\n m = this.cterminals[name];\r\n return m == null ? null : m.clone();\r\n },\r\n\r\n getDNA: function (name) {\r\n this.read();\r\n return this.DNAs[name];\r\n },\r\n\r\n getRNA: function (name) {\r\n this.read();\r\n return this.RNAs[name];\r\n },\r\n\r\n getAA: function (name) {\r\n this.read();\r\n return this.AminoAcids[name];\r\n },\r\n\r\n getTemplate: function (name) {\r\n this.read();\r\n return this.templates[name];\r\n },\r\n\r\n hasCustomTemplates: function (name) {\r\n this.read();\r\n for (var k in this.customtemplates)\r\n return true;\r\n return false;\r\n },\r\n\r\n getCustomTemplate: function (name) {\r\n this.read();\r\n return this.customtemplates[name];\r\n },\r\n\r\n // COOH --> HOOC, CO2H --> HO2C, n-But --> n-But, Boc --> Boc\r\n reverseLabel: function (s) {\r\n this.read();\r\n if (this.get(s) != null)\r\n return this.reverseLabel2(s);\r\n\r\n var c = s.substr(0, 1);\r\n var s1 = s.substr(1);\r\n if ((c == \"O\" || c == \"S\") && this.get(s1) != null)\r\n return this.reverseLabel2(s1) + c;\r\n\r\n return s;\r\n },\r\n\r\n reverseLabel2: function (s) {\r\n if (this.reversible[s] == null)\r\n return s;\r\n\r\n var ret = \"\";\r\n for (var i = s.length - 1; i >= 0; --i) {\r\n var n = 1;\r\n for (var j = i; j >= 0; --j) {\r\n var c = s.charCodeAt(j);\r\n if (c >= 65 && c <= 90)\r\n break;\r\n else\r\n ++n;\r\n }\r\n i -= n - 1;\r\n ret += s.substr(i, n);\r\n }\r\n return ret;\r\n },\r\n\r\n guessOne: function (name) {\r\n this.read();\r\n\r\n name = name.toLowerCase();\r\n for (var k in this.dict) {\r\n if (k.toLowerCase() == name)\r\n return k;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n read: function () {\r\n if (this.dict != null)\r\n return;\r\n this.dict = {};\r\n this.addSdf(this.sdf);\r\n\r\n if (JSDraw2.defaultoptions != null)\r\n this.addSdf(JSDraw2.defaultoptions.abbreviations);\r\n this.addSdf(JSDraw2.abbreviations);\r\n\r\n if (this.onAfterRead != null)\r\n this.onAfterRead();\r\n },\r\n\r\n addSdf: function (sdf) {\r\n if (sdf == null || sdf == \"\")\r\n return;\r\n\r\n var unknown = 0;\r\n var ss = sdf.split(\"$$$$\");\r\n for (var k = 0; k < ss.length; ++k) {\r\n var r = JSDraw2.Table.readSdfRecord(ss[k], true);\r\n if (r == null)\r\n break;\r\n\r\n var template = r.props[\"T\"];\r\n var customtemplate = r.props[\"CT\"];\r\n var strname = r.props[\"Name\"];\r\n var m = new JSDraw2.Mol();\r\n m.setMolfile(r.molfile);\r\n //this.normalize(m);\r\n if (template != null) {\r\n this.templates[template] = m;\r\n }\r\n else if (customtemplate != null) {\r\n this.customtemplates[customtemplate] = m;\r\n }\r\n }\r\n },\r\n\r\n _getAttachAtoms: function (m) {\r\n var list = [];\r\n if (m != null) {\r\n for (var i = 0; i < m.atoms.length; ++i) {\r\n var a = m.atoms[i];\r\n for (var k = 0; k < a.attachpoints.length; ++k)\r\n list[a.attachpoints[k] - 1] = { apo: a.attachpoints[k], a: a };\r\n }\r\n }\r\n return list;\r\n },\r\n\r\n _alignMol: function (dest, a, src, a0, len) {\r\n if (len > 0)\r\n src.setBondLength(len);\r\n\r\n var bonds = dest.getNeighborBonds(a);\r\n if (bonds.length == 0) {\r\n src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y);\r\n }\r\n else if (bonds.length == 1) {\r\n // offset to reference atom\r\n src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y);\r\n\r\n b = bonds[0];\r\n // rotate to the reversed direction\r\n var deg = b.otherAtom(a).p.angleTo(a.p);\r\n var bs = src.getNeighborBonds(a0);\r\n if (bs.length == 1)\r\n src.rotate(a.p, deg + 60 - a0.p.angleTo(bs[0].otherAtom(a0).p));\r\n else if (bs.length == 2)\r\n src.rotate(a.p, deg + 180 - a0.p.middleAngle(bs[0].otherAtom(a0).p, bs[1].otherAtom(a0).p));\r\n }\r\n else if (bonds.length == 2) {\r\n // offset to reference atom\r\n src.offset(a.p.x - a0.p.x, a.p.y - a0.p.y);\r\n\r\n // rotate to the reversed direction\r\n var deg = a.p.middleAngle(bonds[0].otherAtom(a).p, bonds[1].otherAtom(a).p);\r\n var bs = src.getNeighborBonds(a0);\r\n if (bs.length == 1)\r\n src.rotate(a.p, deg + 60 - a0.p.angleTo(bs[0].otherAtom(a0).p));\r\n else if (bs.length == 2)\r\n src.rotate(a.p, deg + 180 - a0.p.middleAngle(bs[0].otherAtom(a0).p, bs[1].otherAtom(a0).p));\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n};\r\n\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n\r\n/**\r\n* Text class\r\n* @class scilligence.JSDraw2.Text\r\n*/\r\nJSDraw2.Text = scilligence.extend(scilligence._base, {\r\n /**\r\n @property {Rect} _rect Position\r\n */\r\n /**\r\n @property {string} text Text value\r\n */\r\n /**\r\n @property {string} color Display Color\r\n */\r\n /**\r\n @property {bool} selected Selecting Flag\r\n */\r\n\r\n /**\r\n * @constructor Text\r\n * @param {Rect} r - the position\r\n * @param {string} text - text value\r\n */\r\n constructor: function (r, text) {\r\n this.T = \"TEXT\";\r\n this._rect = r;\r\n this.text = text;\r\n this.color = null;\r\n this.fontsize = 1.0;\r\n this.selected = false;\r\n this.fieldtype = null;\r\n this.readonly = false;\r\n this.anchors = [];\r\n this.italic = null;\r\n },\r\n\r\n clone: function () {\r\n var a = new JSDraw2.Text(this._rect.clone(), this.text);\r\n a.id = this.id;\r\n a.color = this.color;\r\n a.fieldtype = this.fieldtype;\r\n a.readonly = this.readonly;\r\n a.fontsize = this.fontsize;\r\n a.italic = this.italic;\r\n return a;\r\n },\r\n\r\n allAnchorsIn: function (m) {\r\n if (this.anchors.length == 0)\r\n return false;\r\n for (var i = 0; i < this.anchors.length; ++i) {\r\n var a = this.anchors[i];\r\n if (JSDraw2.Atom.cast(a) != null && m.atoms.indexOf(a) < 0 ||\r\n JSDraw2.Bond.cast(a) != null && m.bonds.indexOf(a) < 0 ||\r\n JSDraw2.Bracket.cast(a) != null && m.graphics.indexOf(a) < 0)\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n attach: function (obj) {\r\n // anchors can contain one bracket, or any number of atoms and/or bonds\r\n if (JSDraw2.Bracket.cast(obj) != null) {\r\n this.anchors = [obj];\r\n return true;\r\n }\r\n\r\n if (JSDraw2.Atom.cast(obj) == null && JSDraw2.Bond.cast(obj) == null)\r\n return false;\r\n\r\n if (this.anchors.length == 1 && JSDraw2.Bracket.cast(this.anchors[0]) != null)\r\n this.objects = [];\r\n\r\n for (var i = 0; i < this.anchors.length; ++i) {\r\n if (this.anchors[i] == obj) {\r\n this.anchors.splice(i, 1);\r\n return true;\r\n }\r\n }\r\n this.anchors.push(obj);\r\n return true;\r\n },\r\n\r\n html: function (scale) {\r\n var ss = \"\";\r\n for (var i = 0; i < this.anchors.length; ++i)\r\n ss += (ss == \"\" ? \"\" : \",\") + this.anchors[i].id;\r\n var s = \" 0)\r\n s += \" fontsize='\" + this.fontsize.toFixed(2) + \"'\";\r\n if (this.readonly)\r\n s += \" v='1'\";\r\n if (this.italic)\r\n s += \" italic='1'\";\r\n if (this.fieldtype != null && this.fieldtype != \"\")\r\n s += \" fieldtype='\" + scil.Utils.escXmlValue(this.fieldtype) + \"'\";\r\n if (ss != \"\")\r\n s += \" anchors='\" + ss + \"'\";\r\n s += \">\" + scilligence.Utils.escXmlValue(this.text) + \"\";\r\n return s;\r\n },\r\n\r\n readHtml: function (e, map) {\r\n var r = JSDraw2.Rect.fromString(e.getAttribute(\"p\"));\r\n var s = e.getAttribute(\"s\");\r\n if (s == null)\r\n s = e.text || e.textContent;\r\n if (r == null || scil.Utils.isNullOrEmpty(s))\r\n return false;\r\n\r\n // I#6220: p=\"27.495 -5.105 570.397 0.901\"\r\n if (r.width > r.height * 100)\r\n r.width = r.height * 5.0;\r\n if (r.height > r.height * 100)\r\n r.height = r.width / 5.0;\r\n\r\n this._rect = r;\r\n this.text = s;\r\n this.readonly = scil.Utils.isTrue(e.getAttribute(\"v\"));\r\n this.italic = scil.Utils.isTrue(e.getAttribute(\"italic\"));\r\n this.dummy = scil.Utils.isTrue(e.getAttribute(\"dum\"));\r\n this.fieldtype = e.getAttribute(\"fieldtype\");\r\n\r\n var fontsize = parseFloat(e.getAttribute(\"fontsize\"));\r\n if (fontsize > 0)\r\n this.fontsize = fontsize;\r\n\r\n var s2 = e.getAttribute(\"anchors\");\r\n if (s2 != null && s2 != \"\") {\r\n var anchors = [];\r\n var ss = s2.split(',');\r\n for (var j = 0; j < ss.length; ++j) {\r\n var a = map[parseInt(ss[j])];\r\n if (a != null && (JSDraw2.Atom.cast(a) != null || JSDraw2.Bond.cast(a) != null || JSDraw2.Bracket.cast(a) != null))\r\n anchors.push(a);\r\n }\r\n this.anchors = anchors;\r\n }\r\n return true;\r\n },\r\n\r\n flipY: function (y) {\r\n },\r\n\r\n flipX: function (x) {\r\n },\r\n\r\n scale: function (s, origin) {\r\n if (this._rect != null)\r\n this._rect.scale(s, origin);\r\n },\r\n\r\n offset: function (dx, dy) {\r\n if (this._rect != null)\r\n this._rect.offset(dx, dy);\r\n },\r\n\r\n rect: function () {\r\n return this._rect == null ? null : this._rect.clone();\r\n },\r\n\r\n toggle: function (p, tor) {\r\n return this._rect != null && this._rect.contains(p);\r\n },\r\n\r\n removeObject: function (obj) {\r\n for (var i = 0; i < this.anchors.length; ++i) {\r\n if (this.anchors[i] == obj) {\r\n this.anchors.splice(i, 1);\r\n break;\r\n }\r\n }\r\n },\r\n\r\n drawCur: function (surface, r, color, m) {\r\n var p = this._rect.center();\r\n surface.createCircle({ cx: p.x, cy: p.y, r: r }).setFill(color);\r\n\r\n if (m != null) {\r\n for (var i = 0; i < this.anchors.length; ++i)\r\n this.anchors[i].drawCur(surface, r * 0.75, color);\r\n }\r\n },\r\n\r\n draw: function (surface, linewidth, m, fontsize) {\r\n var s = this.text;\r\n if (s == null)\r\n return;\r\n\r\n var r = this._rect;\r\n var fs = fontsize * (this.fontsize > 0 ? this.fontsize : 1.0);\r\n var color = this.color == null || this.color.length == 0 ? \"black\" : this.color;\r\n var t = JSDraw2.Drawer.drawText(surface, new JSDraw2.Point(r.left, r.top), s, color, fs, null, this.italic);\r\n r.width = t == null ? 0 : t.getTextWidth();\r\n r.height = fs + 4;\r\n\r\n //var ss = s.match(/[ ]{0,}[a-z|0-9|*|$|@|?|!][ ]{0,}[=]/gi);\r\n //if (ss != null) {\r\n // var c = ss[0].substr(0, ss[0].indexOf('='));\r\n // c = scilligence.Utils.trim(c);\r\n // for (var i = 0; i < this.anchors.length; ++i) {\r\n // var b = JSDraw2.Bond.cast(this.anchors[i]);\r\n // if (b != null)\r\n // JSDraw2.Drawer.drawLabel(surface, b.center(), c, color, fontsize * 0.85);\r\n // }\r\n //}\r\n },\r\n\r\n drawSelect: function (lasso) {\r\n lasso.draw(this, this._rect.fourPoints());\r\n }\r\n});\r\n\r\nJSDraw2.Text.cast = function (a) {\r\n return a != null && a.T == 'TEXT' ? a : null;\r\n};","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\nJSDraw2.Toolbar = scil.extend(scil._base, {\r\n constructor: function (editor) {\r\n this.toolbar = null;\r\n this.editor = editor;\r\n this.options = editor.options;\r\n this.toptoolbarTbody = null;\r\n this.BORDERSTYLE = \"solid 1px #ccc\";\r\n this.toolbarbkcolor = \"#fcfcfc\";\r\n },\r\n\r\n destroy: function () {\r\n },\r\n\r\n getButtons: function () {\r\n return this.toolbar.getElementsByTagName(\"img\");\r\n },\r\n\r\n show: function (f) {\r\n this.toolbarrow.style.display = f ? \"\" : \"none\";\r\n },\r\n\r\n createToolbars: function (div) {\r\n var elems = [\"H\", \"C\", \"N\", \"O\", \"S\", \"P\", \"F\", \"Cl\", \"Br\", \"...\"];\r\n if (this.options.query)\r\n elems.push(\"●\");\r\n\r\n var style = { border: this.BORDERSTYLE, background: JSDraw2.Skin.jsdraw.bkcolor };\r\n\r\n var me = this.editor;\r\n var mainbody = scil.Utils.createTable(null, 0, 0, style);\r\n this.toolbar = mainbody;\r\n dojo.connect(mainbody.parentNode, \"onclick\", function (e) { me.onSelBtn(e == null ? window.event : e); e.preventDefault(); });\r\n scil.Utils.unselectable(mainbody.parentNode);\r\n\r\n var background = JSDraw2.Skin.jsdraw.bkcolor;\r\n if (this.options.skin == \"si\")\r\n background += \" url(\" + JSDraw2.Skin.jsdraw.toolbarbk + \") repeat-x \";\r\n else if (JSDraw2.Skin.jsdraw.bkimg != null)\r\n background += \" url(\" + JSDraw2.Skin.jsdraw.bkimg + \") repeat-x \";\r\n var tr = scilligence.Utils.createElement(mainbody, \"tr\", null, { background: background });\r\n this.toolbarrow = tr;\r\n\r\n var s = scilligence.Utils.imgTag(\"jsdraw.gif\", null, \"title='\" + this.res(\"About JSDraw\") + \"' style='width:\" + this.options.btnsize + \"px;height:\" + this.options.btnsize + \"px;' cmd='jsdraw'\");\r\n if (!this.isSkinW8())\r\n scilligence.Utils.createElement(tr, \"td\", s, { paddingLeft: \"3px\" });\r\n\r\n var tbody = scilligence.Utils.createTable(scilligence.Utils.createElement(tr, \"td\"), 0, 0, { marginTop: (this.options.skin == \"si\" ? \"8px\" : \"2px\"), marginBottom: \"1px\" });\r\n if (scilligence.Utils.isTouch && !scilligence.Utils.isIE)\r\n dojo.connect(tbody.parentNode, \"ontouchmove\", function (e) { e.preventDefault(); });\r\n if (this.isSkinW8()) {\r\n tbody.parentNode.align = this.options.toolbaralign == null ? 'center' : this.options.toolbaralign;\r\n if (this.options.toolbarleftmargin != null)\r\n tbody.parentNode.style.marginLeft = this.options.toolbarleftmargin;\r\n }\r\n this.toptoolbarTbody = tbody;\r\n this.recreateTopToolbar();\r\n\r\n tr = scilligence.Utils.createElement(mainbody, 'tr');\r\n if (!this.isSkinW8()) {\r\n td = scilligence.Utils.createElement(tr, 'td', null, { verticalAlign: \"top\", backgroundPosition: \"left\" });\r\n tbody = scilligence.Utils.createTable(td, 1, null, { color: \"#000\" });\r\n var style = { width: this.options.btnsize + \"px\", height: this.options.btnsize + \"px\", fontWeight: \"bold\", cursor: 'default', textAlign: 'center', verticalAlign: 'middle', padding: \"2px\" };\r\n if (this.options.scale != 1)\r\n style.fontSize = (this.options.scale * 100) + \"%\";\r\n for (var i = 0; i < elems.length; ++i) {\r\n var r = scilligence.Utils.createElement(tbody, 'tr');\r\n var d = scilligence.Utils.createElement(r, 'td', elems[i], style, { cmd: elems[i] });\r\n if (elems[i] == \"...\")\r\n d.setAttribute('title', this.res(\"Element Periodic Table\"));\r\n else if (elems[i] == \"●\")\r\n d.setAttribute('title', this.res(\"Atom Properties\"));\r\n this.editor.connectHandlers.push(dojo.connect(d, \"onmouseover\", function () { this.style.backgroundColor = JSDraw2.Skin.jsdraw.hovercolor; }));\r\n this.editor.connectHandlers.push(dojo.connect(d, \"onmouseout\", function () { this.style.backgroundColor = ''; }));\r\n }\r\n }\r\n td = scilligence.Utils.createElement(tr, \"td\", null, { borderTop: this.BORDERSTYLE, borderLeft: this.BORDERSTYLE });\r\n if (this.isSkinW8()) {\r\n td.colSpan = 2;\r\n td.style.borderLeft = \"\";\r\n }\r\n\r\n div.parentNode.insertBefore(mainbody.parentNode, div);\r\n td.appendChild(div);\r\n div.style.border = \"\";\r\n\r\n this.editor.maintable = mainbody.parentNode;\r\n },\r\n\r\n _makePluginFun: function (fn) {\r\n var me = this.editor;\r\n return function (e) {\r\n fn(me);\r\n (e.srcElement || e.target).setAttribute(\"jsdrawactivate\", \"false\");\r\n e.preventDefault();\r\n }\r\n },\r\n\r\n recreateTopToolbar: function () {\r\n var width = this.editor.dimension.x;\r\n var tbody = this.toptoolbarTbody;\r\n var buttons = this.createButtons(width);\r\n var jsdtb = \"__jsd_tb_\" + this.editor.id;\r\n var me = this;\r\n\r\n scilligence.Utils.removeAll(tbody);\r\n\r\n var tr = scilligence.Utils.createElement(tbody, \"tr\");\r\n var tr2 = null;\r\n if (this.isSkinW8())\r\n tr2 = scilligence.Utils.createElement(tbody, \"tr\", null, { height: \"6px\", fontsize: \"1px\" });\r\n\r\n for (var i = 0; i < buttons.length; ++i) {\r\n var b = buttons[i];\r\n this.createButton(tr, tr2, b, jsdtb);\r\n }\r\n\r\n var plugins = JSDraw2.defaultoptions.plugins;\r\n if (this.options.plugins != null) {\r\n if (plugins == null)\r\n plugins = this.options.plugins;\r\n else\r\n plugins = plugins.concat(this.options.plugins);\r\n }\r\n if (plugins != null) {\r\n var w = Math.round(2 * this.options.btnsize / 20);\r\n var nleft = 0;\r\n var nright = 0;\r\n for (var i = 0; i < plugins.length; ++i) {\r\n var plugin = plugins[i];\r\n if (plugin.location == \"left\") {\r\n if (nleft++ == 0) {\r\n td = scilligence.Utils.createElement(null, \"td\", \"separator\");\r\n tr.insertBefore(td, tr.firstChild);\r\n tr2.insertBefore(scilligence.Utils.createElement(null, \"td\"), tr2.firstChild);\r\n }\r\n td = scilligence.Utils.createElement(null, \"td\");\r\n tr.insertBefore(td, tr.firstChild);\r\n tr2.insertBefore(scilligence.Utils.createElement(null, \"td\"), tr2.firstChild);\r\n }\r\n else {\r\n if (nleft++ == 0) {\r\n td = scilligence.Utils.createElement(tr, \"td\", \"separator\");\r\n scilligence.Utils.createElement(tr2, \"td\");\r\n }\r\n td = scilligence.Utils.createElement(tr, \"td\");\r\n scilligence.Utils.createElement(tr2, \"td\");\r\n }\r\n this.createBtnImg(td, plugins[i].iconurl, null, null, plugins[i].tooltips, null, plugins[i].width, plugins[i].label);\r\n this.editor.connectHandlers.push(dojo.connect(td, \"onclick\", this._makePluginFun(plugins[i].onclick)));\r\n }\r\n }\r\n },\r\n\r\n createButtons: function (width) {\r\n var buttons = [];\r\n\r\n var bonds = [{ c: \"triple\", t: \"Triple bond\", label: \"Triple\" },\r\n { c: \"up\", t: \"Wedge bond\", label: \"Up\" }, { c: \"down\", t: \"Hash bond\", label: \"Down\" }, { c: \"wiggly\", t: \"Wiggle bond\", label: \"Wiggle\" },\r\n { c: \"delocalized\", t: \"Delocalized bond\", label: \"Delocalized\" }, { c: \"either\", t: \"Either double bond\", label: \"Either\" },\r\n { c: \"boldhash\", t: \"Hashed bond\", label: \"Hashed\" }, { c: \"bold\", t: \"Bold bond\", label: \"Bold\" },\r\n { c: \"dummy\", t: \"Ionic bond\", label: \"Ionic\" }, { c: \"unknown\", t: \"Dotted bond\", label: \"Dotted\"}];\r\n if (this.options.query)\r\n bonds.concat([{ c: \"singledouble\", t: \"Single or Double\", label: \"Single\" }, { c: \"singlearomatic\", t: \"Single or Aromatic\" }, { c: \"doublearomatic\", t: \"Double or Aromatic\"}]);\r\n\r\n var smallscreen = this.isSkinW8() && width <= 400;\r\n\r\n var filesubmenus = [];\r\n if (this.options.showfilemenu != false) {\r\n filesubmenus.push({ c: \"save\", t: \"Export\", label: \"Export\" });\r\n filesubmenus.push({ c: \"open\", t: \"Import\", label: \"Import\" });\r\n }\r\n\r\n var selecttools = [{ c: \"lasso\", t: \"Lasso Selection\", label: \"Lasso\" },\r\n { c: \"selfrag\", t: \"Select Fragment\", label: \"Fragment\" }, { c: \"selectall\", t: \"Select All\", label: \"All\"}];\r\n\r\n var addabout = false;\r\n if (this.options.tlcplate) {\r\n buttons.push({ c: \"new\", t: \"New\", label: \"New\", sub: filesubmenus });\r\n buttons.push({ c: \"tlctemplate\", t: \"Template\", label: \"Template\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({\r\n c: \"spot-circle\", t: \"Circle Spot\", label: \"Circle\", sub: [\r\n { c: \"spot-hellipse\", t: \"Horizontal Ellipse Spot\", label: \"Ellipse\" },\r\n { c: \"spot-vellipse\", t: \"Vertical Ellipse Spot\", label: \"Ellipse\" },\r\n { c: \"spot-halfellipseup\", t: \"Half-Ellipse Spot\", label: \"Ellipse\" },\r\n { c: \"spot-halfellipsedown\", t: \"Half-Ellipse Spot\", label: \"Ellipse\" },\r\n { c: \"spot-blowingup\", t: \"Blowing-up Spot\", label: \"Blowing\" },\r\n { c: \"spot-blowingdown\", t: \"Blowing-down Spot\", label: \"Blowing\" },\r\n { c: \"spot-crescentup\", t: \"Crescent Spot\", label: \"Crescent\" },\r\n { c: \"spot-crescentdown\", t: \"Crescent Spot\", label: \"Crescent\" }\r\n ]\r\n });\r\n buttons.push({ c: \"eraser\", t: \"Eraser\", label: \"Eraser\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"tlc\", t: \"TLC Plate\", label: \"TLC\" });\r\n buttons.push({ c: \"tlcnumber\", t: \"Number Plate\", label: \"Number\" });\r\n buttons.push({ c: \"electrophoresis\", t: \"Electrophoresis Gel Plate\", label: \"Electrophoresis\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"text\", t: \"Text/Atom Label\", label: \"Text\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"undo\", t: \"Undo\", label: \"Undo\" });\r\n buttons.push({ c: \"redo\", t: \"Redo\", label: \"Redo\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"center\", t: \"Move to center\", label: \"Center\" });\r\n buttons.push({ c: \"zoomin\", t: \"Zoom in\", label: \"Zoom\" });\r\n buttons.push({ c: \"zoomout\", t: \"Zoom out\", label: \"Zoom\" });\r\n\r\n addabout = true;\r\n }\r\n else if (this.options.workflow) {\r\n buttons.push({ c: \"new\", t: \"New\", label: \"New\", sub: filesubmenus });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"select\", t: \"Box Selection\", label: \"Box\", sub: selecttools });\r\n buttons.push({ c: \"moveview\", t: \"Move/View\", label: \"Move\" });\r\n buttons.push({ c: \"zoombox\", t: \"Zoom Box\", label: \"Zoom\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"rectangle\", t: \"Rectangle\", label: \"Rectangle\" });\r\n buttons.push({ c: \"diamond\", t: \"Diamond\", label: \"Diamond\" });\r\n buttons.push({ c: \"ellipse\", t: \"Ellipse\", label: \"Ellipse\" });\r\n buttons.push({ c: \"dreversed\", t: \"D Reversed\", label: \"D Reversed\" });\r\n buttons.push({ c: \"dshape\", t: \"D Shapre\", label: \"D Shapre\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"arrow\", t: \"Reaction arrow\", label: \"Reaction\" });\r\n buttons.push({ c: \"text\", t: \"Text/Atom Label\", label: \"Text\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"eraser\", t: \"Eraser\", label: \"Eraser\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"undo\", t: \"Undo\", label: \"Undo\" });\r\n buttons.push({ c: \"redo\", t: \"Redo\", label: \"Redo\" });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"center\", t: \"Move to center\", label: \"Center\" });\r\n buttons.push({ c: \"zoomin\", t: \"Zoom in\", label: \"Zoom\" });\r\n buttons.push({ c: \"zoomout\", t: \"Zoom out\", label: \"Zoom\" });\r\n\r\n addabout = true;\r\n }\r\n else if (this.options.helmtoolbar) {\r\n org.helm.webeditor.Interface.getHelmToolbar(buttons, filesubmenus, selecttools, this.options);\r\n if (this.options.showabout != false)\r\n addabout = true;\r\n }\r\n else {\r\n if (this.options.pastechemdraw) {\r\n filesubmenus.push({ c: \"pastechemdraw\", t: \"Paste ChemDraw, ISIS/Draw...\", label: \"Paste\" });\r\n filesubmenus.push({ c: \"copychemdraw\", t: \"Copy ChemDraw, ISIS/Draw, Word...\", label: \"Copy\" });\r\n }\r\n\r\n if (this.isSkinW8()) {\r\n filesubmenus.push({ c: \"about\", t: \"About JSDraw\", label: \"About\" });\r\n buttons.push({ c: \"new\", t: \"New\", label: \"New\", sub: filesubmenus });\r\n }\r\n else {\r\n buttons.push({ c: \"new\", t: \"New\", sub: filesubmenus, label: \"New\" });\r\n }\r\n\r\n if (scilligence.Utils.serviceAvailable() && JSDraw2.Security.kEdition != \"Lite\")\r\n buttons.push({ c: \"n2s\", t: \"Name to Structure\", label: \"N2S\", sub: [{ c: \"cleanup\", t: \"Clean up\", label: \"Clean\"}] });\r\n if (buttons.length > 0)\r\n buttons.push({ c: \"|\" });\r\n\r\n if (!this.options.appmode) {\r\n selecttools.push({ c: \"copy\", t: \"Copy\", label: \"Copy\" });\r\n selecttools.push({ c: \"cut\", t: \"Cut\", label: \"Cut\" });\r\n selecttools.push({ c: \"paste\", t: \"Paste\", label: \"Paste\" });\r\n }\r\n\r\n buttons.push({ c: \"select\", t: \"Box Selection\", label: \"Box\", sub: selecttools });\r\n buttons.push({ c: \"center\", t: \"Move to center\", label: \"Center\", sub: smallscreen ? null : [{ c: \"zoomin\", t: \"Zoom in\", label: \"Zoom\" }, { c: \"zoomout\", t: \"Zoom out\", label: \"Zoom\" }, { c: \"rotate\", t: \"Rotate\", label: \"Rotate\" }, { c: \"fliph\", t: \"Flip Horizontal\", label: \"Flip\" }, { c: \"flipv\", t: \"Flip Vertical\", label: \"Flip\"}] });\r\n buttons.push({ c: \"moveview\", t: \"Move/View\", label: \"Move\", sub: [{ c: \"zoombox\", t: \"Zoom Box\", label: \"Zoom\"}] });\r\n buttons.push({ c: \"|\" });\r\n\r\n buttons.push({ c: \"eraser\", t: \"Eraser\", label: \"Eraser\" });\r\n if (!this.options.appmode)\r\n buttons.push({ c: \"undo\", t: \"Undo\", label: \"Undo\", sub: [{ c: \"redo\", t: \"Redo\", label: \"Redo\"}] });\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"single\", t: \"Single bond\", label: \"Single\" });\r\n buttons.push({ c: \"double\", t: \"Double bond\", label: \"Double\", sub: bonds });\r\n buttons.push({ c: \"chain\", t: \"Chain Tool\", label: \"Chain\" });\r\n buttons.push({ c: \"|\" });\r\n\r\n var i = 0;\r\n var last = null;\r\n JSDraw2.SuperAtoms.read();\r\n var templateicons = { benzene: 1, hexane: 1, pentane: 1, propane: 1, butane: 1, heptane: 1, octane: 1 };\r\n for (var k in JSDraw2.SuperAtoms.templates) {\r\n ++i;\r\n var name = k;\r\n var c = templateicons[k.toLowerCase()] ? k.toLowerCase() : \"template\";\r\n if (i <= 3) {\r\n last = { c: c, cmd: \"template.\" + k, label: name, t: name };\r\n buttons.push(last);\r\n }\r\n else {\r\n if (last.sub == null)\r\n last.sub = [];\r\n last.sub.push({ c: c, cmd: \"template.\" + k, label: name, t: name });\r\n }\r\n }\r\n\r\n if (JSDraw2.SuperAtoms.hasCustomTemplates() && this.options.showcustomtemplates != false)\r\n last.sub.push({ c: \"templates\", cmd: \"template.[custom]\", label: \"Templates\", t: \"Custom Templates\" });\r\n\r\n buttons.push({ c: \"|\" });\r\n if (this.isSkinW8()) {\r\n var elements = [{ c: \"e-H\", t: \"Element H\", label: \"Hydrogen\" },\r\n { c: \"e-O\", t: \"Element O\", label: \"Oxygen\" }, { c: \"e-N\", t: \"Element N\", label: \"Nitrogen\" }, { c: \"e-S\", t: \"Element S\", label: \"Sulfur\" },\r\n { c: \"e-P\", t: \"Element P\", label: \"Phosphorus\" }, { c: \"e-F\", t: \"Element F\", label: \"Fluorine\" }, { c: \"e-Cl\", t: \"Element Cl\", label: \"Chlorine\" },\r\n { c: \"e-Br\", t: \"Element Br\", label: \"Bromine\" }, { c: \"e-more\", t: \"Element Periodic Table\", label: \"P.T.\"}];\r\n buttons.push({ c: \"e-C\", t: \"Element C\", label: \"Carbon\", sub: elements });\r\n }\r\n\r\n if (JSDraw2.Security.kEdition != \"Lite\") {\r\n buttons.push({\r\n c: \"text\", t: \"Text/Atom Label\", label: \"Text\", sub: smallscreen ? null : [{ c: \"sgroup\", t: \"SGroup - Tag Atom/Bond/Bracket\", label: \"SGroup\" },\r\n { c: \"bracket\", t: \"Bracket\", label: \"Bracket\" }, { c: \"symbol\", t: \"Symbol\", label: \"Symbol\"}]\r\n });\r\n buttons.push({\r\n c: \"rectangle\", t: \"Rectangle\", label: \"Rectangle\", sub: [{ c: \"diamond\", t: \"Diamond\", label: \"Diamond\" }, { c: \"ellipse\", t: \"Ellipse\", label: \"Ellipse\" },\r\n { c: \"dreversed\", t: \"D Reversed\", label: \"D Reversed\" }, { c: \"dshape\", t: \"D Shapre\", label: \"D Shapre\" },\r\n { c: \"curve\", t: \"Curve\", label: \"Curve\" }, { c: \"tlc\", t: \"TLC Plate\", label: \"TLC\" }, { c: \"tlctemplate\", t: \"Template\", label: \"Template\" },\r\n { c: \"electrophoresis\", t: \"Electrophoresis Gel Plate\", label: \"Electrophoresis\" }, { c: \"assaycurve\", t: \"Assay Curve\", label: \"Assay\" }, { c: \"spectrum\", t: \"Spectrum\", label: \"Spectrum\"}]\r\n });\r\n }\r\n\r\n buttons.push({ c: \"chargep\", t: \"Increase charges\", label: \"Charge\", sub: [{ c: \"chargen\", t: \"Descrease charges\", label: \"Charge\"}] });\r\n\r\n if (this.options.rxn && JSDraw2.Security.kEdition != \"Lite\") {\r\n buttons.push({ c: \"|\" });\r\n buttons.push({\r\n c: \"arrow\", t: \"Reaction arrow\", label: \"Reaction\", sub: [{ c: \"plus\", t: \"Reaction Plus\", label: \"Plus\" }, { c: \"rxn\", t: \"Clean up reaction\", label: \"Clean\" },\r\n { c: \"copyprod\", t: \"Copy reactants to products\", label: \"R->P\" }, { c: \"rxnmap\", t: \"Map reaction\", label: \"Map\" }, { c: \"rxnmap2\", t: \"Clear reaction map\", label: \"Clear\"}]\r\n });\r\n }\r\n if (this.options.biology && JSDraw2.Security.kEdition != \"Lite\") {\r\n if (this.editor.helm != null)\r\n org.helm.webeditor.Interface.addToolbar(buttons, null, null, this.options);\r\n buttons.push({ c: \"seq\", t: \"Peptide Sequence\", label: \"Peptide\", sub: [{ c: \"helix\", t: \"DNA Sequence\", label: \"DNA\" }, { c: \"rna\", t: \"RNA Sequence\", label: \"RNA\" }, { c: \"antibody\", t: \"Antibody\", label: \"Antibody\" }, { c: \"protein\", t: \"Protein\", label: \"Protein\" }, { c: \"gene\", t: \"Gene\", label: \"Gene\"}] });\r\n }\r\n\r\n if (this.isSkinW8() && this.options.inktools && !smallscreen) {\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"inkred\", t: \"Ink - Red\", label: \"Ink\", sub: [{ c: \"inkblue\", t: \"Ink - Blue\", label: \"Ink\" }, { c: \"inkgreen\", t: \"Ink - Green\", label: \"Ink\" }, { c: \"inkclear\", t: \"Clear Ink\", label: \"Clear1\" }, { c: \"inkclearall\", t: \"Clear All Inks\", label: \"Clear\"}] });\r\n }\r\n\r\n if (JSDraw2.Security.kEdition != \"Lite\") {\r\n if (this.options.sendquery) {\r\n buttons.push({ c: \"|\" });\r\n var list = [{ c: \"chemspider\", t: \"Search ChemSpider\", label: \"ChemSpider\"}];\r\n if (JSDraw2.defaultoptions.reaxys != false)\r\n list.push({ c: \"reaxys\", t: \"Search Reaxys\", label: \"Reaxys\" });\r\n buttons.push({ c: \"pubchem\", t: \"Search PubChem\", label: \"PubChem\", sub: list });\r\n }\r\n }\r\n\r\n if (this.options.usechemdraw)\r\n buttons.push({ c: \"chemdraw\", t: \"ChemDraw Editor\", label: \"ChemDraw\" });\r\n }\r\n\r\n if (JSDraw2.Fullscreen != null) {\r\n if (this.options.exitfullscreen) {\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"fullscreen2\", t: \"Regular Size\", label: \"Fullscreen\" });\r\n }\r\n else if (this.options.fullscreen) {\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"fullscreen\", t: \"Fullscreen Size\", label: \"Fullscreen\" });\r\n }\r\n }\r\n\r\n if (addabout) {\r\n buttons.push({ c: \"|\" });\r\n buttons.push({ c: \"about\", t: \"About JSDraw\", label: \"About\" });\r\n }\r\n\r\n if (this.isSkinW8())\r\n this.relayoutButtonsByWidth(buttons, width, this.options.plugins == null ? 0 : this.options.plugins.length);\r\n return buttons;\r\n },\r\n\r\n relayoutButtonsByWidth: function (buttons, width, nplugins) {\r\n var n = Math.round(width / (this.options.skin == \"w8\" ? 50 : 60)) - buttons.length - nplugins;\r\n if (n < 0 && n < -8) {\r\n for (var i = buttons.length - 1; i >= 0; --i) {\r\n if (buttons[i].c == \"|\")\r\n buttons.splice(i, 1);\r\n }\r\n n = Math.round(width / (this.options.skin == \"w8\" ? 50 : 60)) - buttons.length - nplugins;\r\n }\r\n if (n == 0)\r\n return;\r\n\r\n if (n > 0) {\r\n for (var i = 0; i < buttons.length; ++i) {\r\n if (buttons[i].c == \"ring5\") {\r\n var sub = buttons[i].sub;\r\n for (var j = 0; j < n; ++j) {\r\n buttons.splice(i + j + 1, 0, sub[0]);\r\n sub.splice(0, 1);\r\n buttons[i + j].sub = null;\r\n if (sub.length == 0)\r\n break;\r\n else\r\n buttons[i + j + 1].sub = sub;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n else if (n < 0) {\r\n n = -n;\r\n var ranks;\r\n if (this.options.workflow)\r\n ranks = [\"zoomout\", \"zoombox\", \"redo\", \"zoomin\", \"eraser\", \"moveview\"];\r\n else if (this.options.helmtoolbar)\r\n ranks = [\"zoombox\", \"zoomout\", \"zoomin\", \"redo\", \"eraser\"];\r\n else\r\n ranks = [\"double\", \"chain\", \"pubchem\", \"pentane\", \"hexane\", \"zoombox\", \"moveview\", \"zoomout\", \"zoomin\", \"redo\", \"n2s\", \"eraser\", \"seq\", \"chemdraw\", \"chargep\", \"rectangle\", \"arrow\", \"text\"];\r\n\r\n for (var i = buttons.length - 1; i > 0; --i) {\r\n if (width < 500 && buttons[i].c == \"|\") {\r\n buttons.splice(i, 1);\r\n continue;\r\n }\r\n var rank = scil.Utils.indexOf(ranks, buttons[i].c);\r\n if (rank >= 0 && rank + 1 <= n) {\r\n while (i > 0 && buttons[i - 1].c == \"|\") {\r\n buttons.splice(i - 1, 1);\r\n --i;\r\n }\r\n if (buttons[i - 1].sub == null)\r\n buttons[i - 1].sub = [];\r\n var sub = buttons[i - 1].sub;\r\n if (this.options.skin == \"si\" && sub.length > 0)\r\n sub.push(\"|\");\r\n sub.push(buttons[i]);\r\n var list = buttons[i].sub;\r\n buttons[i].sub = null;\r\n if (list != null) {\r\n for (var k = 0; k < list.length; ++k)\r\n sub.push(list[k]);\r\n }\r\n buttons.splice(i, 1);\r\n }\r\n }\r\n }\r\n },\r\n\r\n res: function (s) {\r\n return JSDraw2.Language.res(s);\r\n },\r\n\r\n isSkinW8: function () {\r\n return this.options.skin == \"w8\" || this.options.skin == \"si\";\r\n },\r\n\r\n setHoverable: function (e) {\r\n this.editor.connectHandlers.push(dojo.connect(e, \"onmouseover\", function () { this.style.background = JSDraw2.Skin.jsdraw.hovercolor; }));\r\n this.editor.connectHandlers.push(dojo.connect(e, \"onmouseout\", function () { this.style.background = this.getAttribute(\"pushed\") == null ? \"\" : JSDraw2.Skin.jsdraw.btnselcolor; }));\r\n },\r\n\r\n exchangeButton: function (parent, td) {\r\n if (this.options.skin == \"si\") {\r\n //parent.innerHTML\r\n //\"
Pentane
\"\r\n //td.innerHTML\r\n //\"
Butane
\"\r\n var img1 = parent.childNodes[0];\r\n var txt1 = img1.nextSibling;\r\n\r\n var tds = td.childNodes[0].getElementsByTagName(\"td\");\r\n var img2 = tds[0].childNodes[0];\r\n var txt2 = tds[1].childNodes[0];\r\n\r\n var src = img1.src;\r\n var subtitle = txt1.innerHTML;\r\n var cmd = dojo.attr(parent, \"cmd\");\r\n var title = dojo.attr(parent, \"title\");\r\n\r\n img1.src = img2.src;\r\n txt1.innerHTML = txt2.innerHTML;\r\n dojo.attr(parent, \"cmd\", dojo.attr(td, \"cmd\"));\r\n dojo.attr(parent, \"title\", dojo.attr(td, \"title\"));\r\n\r\n img2.src = src;\r\n txt2.innerHTML = subtitle;\r\n dojo.attr(td, \"cmd\", cmd);\r\n dojo.attr(td, \"title\", title);\r\n\r\n }\r\n else {\r\n var src = parent.src;\r\n var cmd = dojo.attr(parent, \"cmd\");\r\n var title = dojo.attr(parent, \"title\");\r\n var subtitle = parent.nextSibling != null ? parent.nextSibling.innerHTML : null;\r\n\r\n parent.src = td.src;\r\n dojo.attr(parent, \"cmd\", dojo.attr(td, \"cmd\"));\r\n dojo.attr(parent, \"title\", dojo.attr(td, \"title\"));\r\n if (td.nextSibling != null)\r\n parent.nextSibling.innerHTML = td.nextSibling.innerHTML;\r\n\r\n td.src = src;\r\n dojo.attr(td, \"cmd\", cmd);\r\n dojo.attr(td, \"title\", title);\r\n if (td.nextSibling != null)\r\n td.nextSibling.innerHTML = subtitle;\r\n }\r\n },\r\n\r\n createButton: function (tr, tr2, b, jsdtb) {\r\n var td;\r\n var img;\r\n var w = Math.round(2 * this.options.btnsize / 20);\r\n var tbid = jsdtb + \"_\" + b.c;\r\n if (b.c == \"|\") {\r\n td = scilligence.Utils.createElement(tr, \"td\", \"\");\r\n }\r\n else {\r\n td = scilligence.Utils.createElement(tr, \"td\");\r\n var src = null;\r\n if (this.isSkinW8())\r\n src = \"w8/\" + b.c + \".png\";\r\n else\r\n src = \"img/\" + b.c + \".gif\";\r\n img = this.createBtnImg(td, (b.img != null ? b.img : scil.Utils.imgSrc(src)), tbid, b.cmd != null ? b.cmd : b.c, this.res(b.t), null, null, this.res(b.label));\r\n }\r\n\r\n if (b.hidden)\r\n td.style.display = \"none\";\r\n\r\n if (b.sub == null) {\r\n if (tr2 != null)\r\n scilligence.Utils.createElement(tr2, \"td\");\r\n return td;\r\n }\r\n\r\n var td1;\r\n if (this.options.skin == \"si\") {\r\n td1 = scil.Utils.createElement(img.parentNode.parentNode, \"td\", \"▼\", { fontSize: \"10px\", color: \"gray\", borderTop: \"solid 1px #ccc\", borderRight: \"solid 1px #ccc\", borderBottom: \"solid 1px #ccc\" });\r\n this.setHoverable(td1);\r\n }\r\n else {\r\n if (tr2 == null)\r\n td1 = scilligence.Utils.createElement(tr, \"td\", \"▼\", { fontSize: (this.options.btnsize / 2) + \"px\", verticalAlign: \"bottom\", color: \"gray\" });\r\n else\r\n td1 = scilligence.Utils.createElement(tr2, \"td\", null, { height: \"10px\", background: scil.Utils.imgSrc(\"w8/handle.png\", true) + \" no-repeat center center\" });\r\n }\r\n\r\n if (b.hidden)\r\n td1.style.display = \"none\";\r\n\r\n if (scilligence.Utils.isTouch) {\r\n dojo.connect(td, \"ontouchmove\", function () { JSDraw2.Menu.open(tbid + \"_sub\"); });\r\n dojo.connect(td1, \"onclick\", function () { JSDraw2.Menu.open(tbid + \"_sub\"); });\r\n }\r\n else {\r\n if (window.navigator.msPointerEnabled) {\r\n dojo.connect(td, \"onMSPointerMove\", function (e) {\r\n if (e.buttons == 1)\r\n JSDraw2.Menu.open(tbid + \"_sub\");\r\n }, false);\r\n }\r\n if (this.isSkinW8()) {\r\n dojo.connect(td1, \"onclick\", function () {\r\n JSDraw2.Menu.open(tbid + \"_sub\");\r\n });\r\n //if (!scilligence.Utils.isIE)\r\n // dojo.connect(td, \"onclick\", function () { JSDraw2.Menu.close(); });\r\n td1.setAttribute(\"title\", this.res(\"click to expand\"));\r\n dojo.connect(td1, \"onmouseover\", function (e) { (e.target || e.srcElement).style.backgroundImage = scil.Utils.imgSrc(\"w8/handle2.png\", true); });\r\n dojo.connect(td1, \"onmouseout\", function (e) { (e.target || e.srcElement).style.backgroundImage = scil.Utils.imgSrc(\"w8/handle.png\", true); });\r\n }\r\n else {\r\n dojo.connect(td1, \"onmouseover\", function () { JSDraw2.Menu.open(tbid + \"_sub\"); });\r\n dojo.connect(td1, \"onmouseout\", function () { JSDraw2.Menu.closetime(); });\r\n dojo.connect(td1, \"onclick\", function () { JSDraw2.Menu.close(); });\r\n }\r\n }\r\n\r\n var tbody = scil.Utils.createTable(td, 0, 0,\r\n {\r\n display: \"none\", zIndex: 99999999, borderRadius: Math.round((this.options.skin == \"si\" ? 3 : 4) * this.options.btnsize / 40) + \"px\",\r\n position: \"absolute\", backgroundColor: this.options.skin == \"si\" ? this.toolbarbkcolor : JSDraw2.Skin.jsdraw.bkcolor, border: this.BORDERSTYLE, padding: \"2px\"\r\n });\r\n //if (this.options.skin == \"w8\" && !scilligence.Utils.isIE)\r\n // tbody.parentNode.style.border = null;\r\n var table = tbody.parentNode;\r\n table.id = tbid + \"_sub\";\r\n table.onmouseover = JSDraw2.Menu.cancelclosetime;\r\n table.onmouseout = JSDraw2.Menu.closetime;\r\n\r\n var bs = b.sub;\r\n var leftmargin = 0;\r\n var singlerow = this.options.skin != \"w8\" || bs.length <= 5;\r\n if (!singlerow) {\r\n leftmargin = -(this.options.btnsize / 2 + 4);\r\n table.style.marginLeft = leftmargin + 'px';\r\n }\r\n if (scilligence.Utils.isIE && scilligence.Utils.isIE < 8 && !this.isSkinW8())\r\n table.style.margin = (this.options.btnsize + 4) + 'px 0 0 ' + (leftmargin - this.options.btnsize - 2) + 'px';\r\n\r\n var tr = null;\r\n for (var j = 0; j < bs.length; ++j) {\r\n var bn = bs[j];\r\n if (singlerow || j % 2 == 0)\r\n tr = scilligence.Utils.createElement(tbody, 'tr');\r\n td = scilligence.Utils.createElement(tr, \"td\");\r\n if (bn == \"|\") {\r\n scil.Utils.createElement(td, \"hr\", null, { margin: \"5px 0 0 0\", padding: 0 });\r\n continue;\r\n }\r\n if (j > 0 && this.isSkinW8())\r\n td.style.paddingTop = w + \"px\";\r\n var src = null;\r\n if (this.isSkinW8())\r\n src = \"w8/\" + bn.c + \".png\";\r\n else\r\n src = \"img/\" + bn.c + \".gif\";\r\n this.createBtnImg(td, (bn.img != null ? bn.img : scil.Utils.imgSrc(src)), null, bn.cmd != null ? bn.cmd : bn.c, this.res(bn.t), tbid, null, this.res(bn.label), true);\r\n }\r\n\r\n return td;\r\n },\r\n\r\n createBtnImg: function (td, src, tbid, cmd, title, parent, width, label, sub) {\r\n if (width == null)\r\n width = this.options.btnsize;\r\n var w = Math.round(2 * width / 20);\r\n if (this.options.skin == \"si\") {\r\n if (sub)\r\n td = scil.Utils.createElement(td, \"div\", null, { height: \"32px\" });\r\n var table = scil.Utils.createTable(td, 0, 0, sub ? null : { margin: \"0 2px 0 2px\", backgroundColor: this.toolbarbkcolor });\r\n var tr = scil.Utils.createElement(table, \"tr\");\r\n var td1 = scil.Utils.createElement(tr, \"td\", null, sub ? null : { border: \"solid 1px \" + JSDraw2.Skin.jsdraw.bkcolor });\r\n var td2 = null;\r\n var img = scilligence.Utils.createElement(td1, \"img\", null, { marginTop: \"-5px\" }, { src: src, alt: title });\r\n var styles = { marginTop: \"-11px\", width: width + \"px\", fontSize: \"9px\", textAlign: \"center\", color: \"gray\", whiteSpace: \"nowrap\", overflow: \"hidden\" };\r\n if (sub) {\r\n var td2 = scil.Utils.createElement(tr, \"td\");\r\n if (scil.Utils.isIE && scil.Utils.isIE < 8)\r\n styles.fontSize = styles.marginTop = styles.width = null;\r\n styles.textAlign = \"left\";\r\n scil.Utils.createElement(td2, \"div\", label == null || label == \"\" ? \" \" : label, styles);\r\n }\r\n else {\r\n scil.Utils.createElement(td1, \"div\", label == null || label == \"\" ? \" \" : label, styles);\r\n }\r\n\r\n this.setHoverable(sub ? td : td1);\r\n if (title != null)\r\n (sub ? td : td1).setAttribute('title', title);\r\n if (cmd != null)\r\n (sub ? td : td1).setAttribute('cmd', cmd);\r\n if (parent != null)\r\n (sub ? td : td1).setAttribute('parent', parent);\r\n if (tbid != null)\r\n (sub ? td : td1).id = tbid;\r\n return img;\r\n }\r\n\r\n var style = { textAlign: \"center\", padding: this.isSkinW8() ? \"2px 2px 0 2px\" : \"2px\", verticalAlign: \"middle\", width: width + \"px\", height: this.options.btnsize + \"px\" };\r\n var img;\r\n if (this.isSkinW8()) {\r\n var button = this.options.buttonshape + \".png\";\r\n style.background = \"url(\" + scil.Utils.imgSrc(\"w8/\" + button) + \") center center no-repeat\";\r\n img = scilligence.Utils.createElement(td, \"img\", null, style, { src: src, alt: title });\r\n scil.Utils.createElement(td, \"div\", label == null || label == \"\" ? \" \" : label, { width: width + \"px\", fontSize: \"9px\", textAlign: \"center\", color: \"gray\", whiteSpace: \"nowrap\", overflow: \"hidden\" });\r\n }\r\n else {\r\n img = scilligence.Utils.createElement(td, \"img\", null, style, { src: src, alt: title });\r\n }\r\n\r\n if (cmd != null)\r\n img.setAttribute('cmd', cmd);\r\n if (title != null)\r\n img.setAttribute('title', title);\r\n if (parent != null)\r\n img.setAttribute('parent', parent);\r\n if (tbid != null)\r\n img.id = tbid;\r\n if (this.isSkinW8()) {\r\n var me = this;\r\n this.editor.connectHandlers.push(dojo.connect(img, \"onmouseover\", function () { this.style.backgroundImage = scil.Utils.imgSrc(\"w8/\" + me.options.buttonshape + \"1.png\", true); }));\r\n this.editor.connectHandlers.push(dojo.connect(img, \"onmouseout\", function () {\r\n this.style.backgroundImage = scil.Utils.imgSrc(\"w8/\" + me.options.buttonshape + (this.getAttribute(\"pushed\") == null ? \"\" : \"0\") + \".png\", true);\r\n }));\r\n }\r\n else {\r\n this.setHoverable(img);\r\n }\r\n return img;\r\n }\r\n});","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx\r\nfunction getIEVersion() {\r\n // if (window.navigator.appName == \"Netscape\" || window.navigator.appVersion.indexOf(\"Edge/\") > 0) {\r\n // var s = window.navigator.appVersion;\r\n // s = s.substr(s.indexOf(\"Edge/\") + 5);\r\n // var p = s.indexOf('.');\r\n // return parseInt(s.substr(0, p));\r\n // }\r\n if (window.navigator.appName != \"Microsoft Internet Explorer\" && window.navigator.appName.indexOf(\"MSAppHost\") < 0 && !(window.navigator.appVersion.indexOf(\"Trident\") > 0 && document.documentMode >= 11))\r\n return false;\r\n return document.documentMode == null ? (document.compatMode == \"CSS1Compat\" ? 7 : 6) : document.documentMode;\r\n};\r\n\r\nvar __ieversion = getIEVersion();\r\n\r\nvar __ieAppVersion = __ieversion ? (window.postMessage ? (window.performance ? 9 : 8) : 7) : null;\r\nif (__ieversion) {\r\n var silverlight = typeof (JSDraw2_disablesilverlight) == \"undefined\" || !JSDraw2_disablesilverlight ? \"silverlight,\" : \"\";\r\n if (dojo.version.major <= 1 && dojo.version.minor < 7)\r\n dojo.config.gfxRenderer = silverlight + \"vml\";\r\n else if (__ieversion < 9)\r\n dojo.config.gfxRenderer = silverlight + \"vml,svg\";\r\n}\r\n\r\ndojo.require(\"dojo.io.script\");\r\ndojo.require(\"dojo.io.iframe\");\r\ndojo.require(\"dojox.gfx\");\r\ndojo.require(\"dojox.gfx.utils\");\r\ndojo.require(\"dojo.window\");\r\n\r\nif (typeof (__JSDraw2_TouchMol) == \"undefined\") {\r\n dojo.require(\"dojox.charting.Chart2D\");\r\n dojo.require(\"dojox.charting.axis2d.Default\");\r\n dojo.require(\"dojox.charting.plot2d.Default\");\r\n dojo.require(\"dojox.charting.themes.Wetland\");\r\n}\r\nif (!(dojo.version.major <= 1 && dojo.version.minor <= 6))\r\n dojo.require(\"dojox.storage.LocalStorageProvider\");\r\n\r\n// Canvas on Android 2.x; dojo 1.7 won't need it\r\nif (dojo.version.major <= 1 && dojo.version.minor < 7) {\r\n scil.onload(function () {\r\n dojox.gfx.Text.prototype._renderShape = function (/* Object */ctx) {\r\n var s = this.shape;\r\n ctx.save();\r\n ctx.fillStyle = s.fillStyle;\r\n ctx.strokeStyle = s.fillStyle;\r\n ctx.font = s.fontStyle;\r\n ctx.textAlign = s.align;\r\n ctx.fillText(s.text, s.x, s.y);\r\n ctx.restore();\r\n ctx.stroke();\r\n };\r\n });\r\n}\r\n\r\nscilligence.suggestInstallSilverlight = function () {\r\n if (dojox.gfx.renderer == \"vml\") {\r\n if (confirm(\"JSDraw2.Editor runs much faster with Silverlight in IE 6,7,8. Do you want to install Silvelight now?\"))\r\n window.open(\"http://www.silverlight.net/downloads\");\r\n }\r\n};\r\n\r\nfunction _isHtml5() {\r\n var ie = __ieversion;\r\n if (ie)\r\n return ie >= 9;\r\n else\r\n return document.doctype != null && document.doctype.name != null && document.doctype.name.toLowerCase() == \"html\"\r\n};\r\nfunction getAndroidVersion() {\r\n var s = window.navigator.userAgent;\r\n var p = s.indexOf(\"Android\");\r\n if (p < 0)\r\n return false;\r\n s = s.substr(p + 8);\r\n p = s.indexOf(';');\r\n s = s.substr(0, p);\r\n p = s.indexOf('.');\r\n if (p > 0)\r\n s = s.substr(0, p);\r\n return isNaN(s) ? true : parseFloat(s);\r\n};\r\nfunction getiOSVersion() {\r\n var s = window.navigator.userAgent;\r\n var p = s.indexOf(\"iPad\");\r\n if (p < 0)\r\n p = s.indexOf(\"iPhone\");\r\n if (p < 0)\r\n return false;\r\n var p = s.indexOf('OS', p + 4);\r\n if (p < 0)\r\n return true;\r\n s = s.substr(p + 3);\r\n p = s.indexOf('_');\r\n s = s.substr(0, p);\r\n p = s.indexOf('.');\r\n if (p > 0)\r\n s = s.substr(0, p);\r\n return isNaN(s) ? true : parseInt(s);\r\n};\r\n\r\n/**\r\n* Utils class - provides variety of tool functions\r\n* @class scilligence.Utils\r\n*/\r\nscilligence.Utils = {\r\n __xcode: 10,\r\n isIE: __ieversion,\r\n isIE8Lower: __ieversion && __ieversion < 9,\r\n nativemode: window.navigator.appName.indexOf(\"MSAppHost\") >= 0,\r\n isHtml5: _isHtml5(),\r\n isFirefox: navigator.userAgent.indexOf('Firefox') >= 0,\r\n isOpera: navigator.userAgent.indexOf('Opera') >= 0,\r\n isChrome: navigator.userAgent.indexOf('Chrome') >= 0,\r\n isLinux: navigator.userAgent.indexOf('Linux') >= 0,\r\n isUbuntu: navigator.userAgent.indexOf('Ubuntu') >= 0,\r\n isIpad: getiOSVersion(),\r\n isAndroid: getAndroidVersion(),\r\n isTouch: navigator.userAgent.indexOf('iPad') >= 0 || navigator.userAgent.indexOf('iPhone') >= 0 || navigator.userAgent.indexOf('Android') >= 0,\r\n isSilverlight: null,\r\n lastTouchTm: 0,\r\n buttonWidth: 160,\r\n\r\n getTopWindow: function () {\r\n var w = window;\r\n while (w.parent != null && w.parent != w)\r\n w = w.parent;\r\n return w;\r\n },\r\n\r\n isRightButton: function (e) {\r\n if (e == null)\r\n return;\r\n\r\n if (e.which) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\r\n return e.which == 3;\r\n else if (\"button\" in e) // IE, Opera \r\n return e.button == 2;\r\n return false;\r\n },\r\n\r\n isTouchDblClick: function (e) {\r\n var tm = new Date().getTime();\r\n var d = tm - scil.Utils.lastTouchTm;\r\n scil.Utils.lastTouchTm = tm;\r\n return e.touches.length == 1 && d <= 500;\r\n },\r\n\r\n /**\r\n * Check if a html element has a parent\r\n * @function {static} hasAnsestor\r\n * @param {DOM} obj - to be checked child\r\n * @param {DOM} parent\r\n * @returns a number\r\n */\r\n hasAnsestor: function (obj, parent) {\r\n if (parent == null || obj == null)\r\n return false;\r\n\r\n while (obj != null) {\r\n if (obj.parentNode == parent)\r\n return true;\r\n obj = obj.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Round a number with specific decimal\r\n * @function {static} round\r\n * @param {number} val - a number to be rounded\r\n * @param {number} n - the number of decimal\r\n * @returns a number\r\n */\r\n round: function (val, n) {\r\n if (val == null || isNaN(val))\r\n return null;\r\n var d = Math.pow(10, n);\r\n return Math.round(val * d) / d;\r\n },\r\n\r\n /**\r\n * Round a number to significant digits\r\n * @function {static} roundToSignificantDigits\r\n * @param {number} d - a number to be converted\r\n * @param {number} digits\r\n * @returns a number\r\n */\r\n roundToSignificantDigits: function (d, digits) {\r\n if (d == 0 || isNaN(d))\r\n return d;\r\n\r\n var scale = Math.pow(10, Math.floor(this.log10(Math.abs(d))) + 1);\r\n return scale * this.round(d / scale, digits);\r\n },\r\n\r\n log10: function (val) {\r\n return Math.log(val) / Math.LN10;\r\n },\r\n\r\n /**\r\n * Round a number as string\r\n * @function {static} roundStr\r\n * @param {number} val - a number to be converted\r\n * @param {number} n - the number of decimal\r\n * @param {number} padding\r\n * @returns a string\r\n */\r\n roundStr: function (val, n, padding) {\r\n if (val == null || isNaN(val))\r\n return \"\";\r\n else if (val == 0)\r\n return \"0\";\r\n\r\n var d = Math.pow(10, n);\r\n var s = (Math.round(val * d) / d) + \"\";\r\n if (s == \"0\" && val != 0 || n > 0 && (Math.abs(val) < 1 / d || val < 1 && s.length < (val + \"\").length)) { //I#9297\r\n var e = Math.floor(this.log10(val));\r\n if (e < 1) {\r\n var ret = this.roundStr(val * Math.pow(10, -e), n, padding) + \"e\" + e;\r\n return parseFloat(ret) == parseFloat(s) ? s : ret;\r\n }\r\n }\r\n\r\n if (padding == false || n <= 0)\r\n return s;\r\n\r\n var p = s.indexOf('.');\r\n if (p < 0) {\r\n s += \".\";\r\n p = s.length - 1;\r\n }\r\n\r\n var m = s.length - 1 - p;\r\n for (var i = m; i < n; ++i)\r\n s += \"0\";\r\n return s;\r\n },\r\n\r\n /**\r\n * Convert a number into a formatted string\r\n * @function {static} num2str\r\n * @param {number} val - a number to be converted\r\n * @param {number} n - the number of decimal\r\n * @param {string} unit - the unit of the number\r\n * @returns a string\r\n */\r\n num2str: function (val, n, unit, padding) {\r\n if (val == null || !isFinite(val) || isNaN(val))\r\n return \"\";\r\n\r\n if (unit == null)\r\n return this.roundStr(val, n, padding);\r\n else if (unit == \"%\")\r\n return this.roundStr(val * 100, n, padding) + unit;\r\n\r\n if (unit == \"L\" || unit == \"l\") {\r\n //val /= 1000;\r\n unit = unit.toUpperCase();\r\n }\r\n\r\n if (Math.abs(val) >= 1000)\r\n return this.roundStr(val / 1000, n, padding) + \" \" + this._convertUnit(unit, 1000);\r\n if (Math.abs(val) >= 1)\r\n return this.roundStr(val, n, padding) + \" \" + this._convertUnit(unit, 1);\r\n\r\n val *= 1000;\r\n if (Math.abs(val) >= 1)\r\n return this.roundStr(val, n, padding) + \" \" + this._convertUnit(unit, 0.001);\r\n\r\n val *= 1000;\r\n return this.roundStr(val, n, padding) + \" \" + this._convertUnit(unit, 0.000001);\r\n },\r\n\r\n _convertUnit: function (unit, scale) {\r\n switch (scale) {\r\n case 1:\r\n if (unit == \"g/L\")\r\n return \"mg/mL\";\r\n else if (unit == \"U/L\")\r\n return \"mU/mL\";\r\n else\r\n return unit;\r\n case 1000:\r\n if (unit == \"g/L\")\r\n return \"g/mL\";\r\n else if (unit == \"U/L\")\r\n return \"U/mL\";\r\n else\r\n return \"k\" + unit;\r\n case 0.001:\r\n if (unit == \"g/L\" || unit == \"mg/mL\")\r\n return \"mg/L\";\r\n else if (unit == \"U/L\" || unit == \"mU/mL\")\r\n return \"mU/L\";\r\n else\r\n return \"m\" + unit;\r\n case 0.000001:\r\n if (unit == \"g/L\" || unit == \"mg/mL\")\r\n return \"ug/L\";\r\n else if (unit == \"U/L\" || unit == \"mU/mL\")\r\n return \"uU/L\";\r\n else\r\n return \"u\" + unit;\r\n }\r\n },\r\n\r\n disabledcontextmenus: [],\r\n disableContextMenu: function (element, doc) {\r\n if (element != null && scil.Utils.indexOf(this.disabledcontextmenus, element) < 0)\r\n this.disabledcontextmenus.push(element);\r\n\r\n if (doc == null)\r\n doc = document;\r\n\r\n if (doc.body.__contextmenudisabled)\r\n return;\r\n\r\n doc.body.__contextmenudisabled = true;\r\n doc.body.oncontextmenu = function (e) {\r\n if (e == null)\r\n e = event;\r\n\r\n var src = e.target || e.srcElement;\r\n var list = scil.Utils.disabledcontextmenus;\r\n for (var i = 0; i < list.length; ++i) {\r\n if (src == list[i] || scil.Utils.isChildOf(src, list[i]))\r\n return false;\r\n }\r\n\r\n if (src.parentNode != null && JSDraw2.Editor.get(src.parentNode.id) != null ||\r\n src.firstChild != null && src.firstChild.getAttribute != null && src.firstChild.getAttribute(\"jspopupmenu\") == \"1\") {\r\n if (e.preventDefault != null)\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n if (scil.ContextMenu.isFromContextMenu(src)) {\r\n if (e.preventDefault != null)\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n // fix context menu problem on Safari\r\n var div = scil.Utils.getParent(src, \"div\");\r\n if (div != null && JSDraw2.Editor.get(div.id) != null) {\r\n if (e.preventDefault != null)\r\n e.preventDefault();\r\n return false;\r\n }\r\n };\r\n },\r\n\r\n serviceAvailable: function () {\r\n return typeof JSDrawServices != \"undefined\" && typeof JSDrawServices.url != \"undefined\" && JSDrawServices.url != null;\r\n },\r\n\r\n /**\r\n * evaluate a javascript expression\r\n * @function {static} eval\r\n * @param {string} s - javascript expression\r\n * @returns javascript object\r\n */\r\n eval: function (s) {\r\n if (s == \"\" || typeof (s) != \"string\")\r\n return null;\r\n\r\n try {\r\n eval(\"var s=\" + s);\r\n return s;\r\n }\r\n catch (e) {\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Evaluation if an object is true. true, 1, on, yes will be true\r\n * @function {static} isFalse\r\n * @param {object} s - the input object\r\n * @returns true or false\r\n */\r\n isTrue: function (s) {\r\n s = (s + \"\").toLowerCase();\r\n return s == \"1\" || s == \"true\" || s == \"yes\" || s == \"on\";\r\n },\r\n\r\n /**\r\n * Evaluation if an object is false. false, 0, off, no will be false\r\n * @function {static} isFalse\r\n * @param {object} s - the input object\r\n * @returns true or false\r\n */\r\n isFalse: function (s) {\r\n s = (s + \"\").toLowerCase();\r\n return s == \"0\" || s == \"false\" || s == \"no\" || s == \"off\";\r\n },\r\n\r\n isAttTrue: function (e, att) {\r\n var s = e.getAttribute(att) + \"\";\r\n return s == \"\" || this.isTrue(s);\r\n },\r\n\r\n isAttFalse: function (e, att) {\r\n var s = e.getAttribute(att) + \"\";\r\n return s == \"0\" || s.toLowerCase() == \"false\";\r\n },\r\n\r\n /**\r\n * Convert a number into a formatted string\r\n * @function {static} formatStr\r\n * @param {number} v - a number to be converted\r\n * @param {number} w - total width the result string\r\n * @param {number} d - the number of demical\r\n * @returns a string\r\n */\r\n formatStr: function (v, w, d) {\r\n var s = v == null ? \"\" : v.toFixed(d) + \"\";\r\n return scil.Utils.padLeft(s, w, ' ');\r\n },\r\n\r\n /**\r\n * Generate a GUID\r\n * @function {static} uuid\r\n * @returns a string\r\n */\r\n // http://www.broofa.com/2008/09/javascript-uuid-function/\r\n uuid: function () {\r\n var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\r\n var uuid = [];\r\n var i;\r\n var radix = chars.length;\r\n\r\n // rfc4122, version 4 form\r\n var r;\r\n\r\n // rfc4122 requires these characters\r\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\r\n uuid[14] = '4';\r\n\r\n // Fill in random data. At i==19 set the high bits of clock sequence as\r\n // per rfc4122, sec. 4.1.5\r\n for (i = 0; i < 36; i++) {\r\n if (!uuid[i]) {\r\n r = 0 | Math.random() * 16;\r\n uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];\r\n }\r\n }\r\n\r\n return uuid.join('').toLowerCase();\r\n },\r\n\r\n /**\r\n * Append chars to a string\r\n * @function {static} padLeft\r\n * @param {string} s - the input string\r\n * @param {number} n - total width of result string\r\n * @param {char} c - the character to be appended\r\n * @returns a string\r\n */\r\n padLeft: function (s, n, c) {\r\n var s1 = '';\r\n for (var i = (s + \"\").length; i < n; ++i)\r\n s1 += (c == null ? ' ' : c);\r\n return s1 + s;\r\n },\r\n\r\n /**\r\n * Insert chars at the beginning of a string\r\n * @function {static} padRight\r\n * @param {string} s - the input string\r\n * @param {number} n - total width of result string\r\n * @param {char} c - the character to be inserted\r\n * @returns a string\r\n */\r\n padRight: function (s, n, c) {\r\n var s1 = '';\r\n for (var i = s.length; i < n; ++i)\r\n s1 += (c == null ? ' ' : c);\r\n return s + s1;\r\n },\r\n\r\n /**\r\n * Evaluate if a string ends with another sub-string\r\n * @function {static} endswith\r\n * @param {string} s - the input string\r\n * @param {string} token - the sub-string to be tested\r\n * @returns true or false\r\n */\r\n endswith: function (s, token, casesensitive) {\r\n if (s == null || token == null || s.length < token.length)\r\n return false;\r\n var t = s.substr(s.length - token.length, token.length);\r\n if (casesensitive)\r\n return t == token;\r\n else\r\n return t.toLowerCase() == token.toLowerCase();\r\n },\r\n\r\n /**\r\n * Evaluate if a string starts with another sub-string\r\n * @function {static} endswith\r\n * @param {string} s - the input string\r\n * @param {string} token - the sub-string to be tested\r\n * @returns true or false\r\n */\r\n startswith: function (s, token, casesensitive) {\r\n if (s == null || token == null || s.length < token.length)\r\n return false;\r\n var t = s.substr(0, token.length);\r\n if (casesensitive)\r\n return t == token;\r\n else\r\n return t.toLowerCase() == token.toLowerCase();\r\n },\r\n\r\n /**\r\n * Trim a string\r\n * @function {static} ltrim\r\n * @param {string} s - the input string\r\n * @returns a string\r\n */\r\n trim: function (s) {\r\n return s == null ? null : s.replace(/^[\\s|\\t\\r\\n]+|[\\s|\\t\\r\\n]+$/g, \"\");\r\n },\r\n\r\n /**\r\n * Trim the left spaces of a string\r\n * @function {static} trim\r\n * @param {string} s - the input string\r\n * @returns a string\r\n */\r\n ltrim: function (s) {\r\n return s == null ? null : s.replace(/^[\\s|\\t\\r\\n]+/, \"\");\r\n },\r\n\r\n /**\r\n * Trim the right spaces of a string\r\n * @function {static} rtrim\r\n * @param {string} s - the input string\r\n * @returns a string\r\n */\r\n rtrim: function (s) {\r\n return s == null ? null : s.replace(/[\\s|\\t\\r\\n]+$/, \"\");\r\n },\r\n\r\n isFixedPosition: function (e) {\r\n while (e != null) {\r\n if (e.style != null && e.style.position == \"fixed\")\r\n return true;\r\n e = e.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n getOffset: function (e, scroll) {\r\n var d = scil.Utils.scrollOffset();\r\n var p = new JSDraw2.Point(0, 0);\r\n while (e != null) {\r\n if (e.offsetLeft > 0 || e.offsetTop > 0)\r\n p.offset(e.offsetLeft, e.offsetTop);\r\n\r\n if (this.isIE && (e.scrollLeft > 0 || e.scrollTop > 0))\r\n p.offset(e.scrollLeft, e.scrollTop);\r\n\r\n if (scil.Utils.isIE) {\r\n if (e.scrollTop > 0 || e.scrollLeft > 0) {\r\n p.offset(-e.scrollLeft, -e.scrollTop);\r\n }\r\n }\r\n\r\n // if (e.style.position == \"absolute\") {\r\n // if (__ieversion && __ieversion < 8) {\r\n // p.offset(-d.x, -d.y);\r\n // break;\r\n // }\r\n // //break;\r\n // }\r\n\r\n e = e.offsetParent;\r\n }\r\n\r\n //if (__ieversion && __ieAppVersion < 8)\r\n // p.offset(d.x, d.y);\r\n\r\n if (scroll != false)\r\n p.offset(-d.x, -d.y);\r\n return p;\r\n },\r\n\r\n getScrollOffset: function (e) {\r\n var p = new JSDraw2.Point(0, 0);\r\n while (e != null) {\r\n if (e.scrollLeft > 0 || e.scrollTop > 0)\r\n p.offset(e.scrollLeft, e.scrollTop);\r\n e = e.offsetParent;\r\n }\r\n return p;\r\n },\r\n\r\n scrollOffset: function () {\r\n var iebody = (document.compatMode && document.compatMode != \"BackCompat\") ? document.documentElement : document.body;\r\n\r\n var x = scil.Utils.isIE ? iebody.scrollLeft : pageXOffset;\r\n var y = scil.Utils.isIE ? iebody.scrollTop : pageYOffset;\r\n\r\n return new JSDraw2.Point(x, y);\r\n },\r\n\r\n scriptUrl: function () {\r\n if (this._scripturl != null)\r\n return this._scripturl;\r\n if (JSDraw2.defaultoptions.imagebase != null)\r\n this._scripturl = JSDraw2.defaultoptions.imagebase;\r\n if (this._scripturl != null)\r\n return this._scripturl;\r\n\r\n var list = document.getElementsByTagName(\"script\");\r\n for (var i = 0; i < list.length; i++) {\r\n var e = list[i];\r\n if (e.tagName == \"SCRIPT\") {\r\n var s = e.getAttribute('src');\r\n if (s == null || s.length == 0)\r\n continue;\r\n\r\n var p = s.lastIndexOf('/');\r\n var path = p < 0 ? '' : scil.Utils.trim(s.substr(0, p + 1));\r\n var file = scil.Utils.trim(p < 0 ? s : s.substr(p + 1)).toLowerCase();\r\n p = file.indexOf('?');\r\n if (p > 0)\r\n file = file.substr(0, p);\r\n\r\n if (this.startswith(file, \"scilligence.jsdraw2.\") && this.endswith(file, \".js\")) {\r\n if (scil.Utils.startswith(path, \"http://\") || scil.Utils.startswith(path, \"https://\") || scil.Utils.startswith(path, \"//\"))\r\n return this._scripturl = path;\r\n\r\n if (scil.Utils.startswith(path, '/'))\r\n return this._scripturl = document.location.protocol + \"//\" + document.location.host + path;\r\n\r\n var url = document.location + \"\";\r\n p = url.indexOf('?');\r\n if (p > 0)\r\n url = url.substr(0, p);\r\n\r\n p = url.lastIndexOf('/');\r\n return this._scripturl = url.substr(0, p + 1) + path;\r\n }\r\n else if (file == \"jsdraw.core.js\") {\r\n return this._scripturl = path + \"../\";\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _imgBase: function () {\r\n return scil.Utils.scriptUrl();\r\n },\r\n\r\n imgSrc: function (button, wrapasinurl) {\r\n var s = scil.Utils._imgBase() + button;\r\n if (wrapasinurl)\r\n s = \"url(\" + s + \")\";\r\n return s;\r\n },\r\n\r\n imgTag: function (b, label, extra) {\r\n return \"\" + (label == null ? \"\" : label);\r\n },\r\n\r\n styleRect: function (e) {\r\n return new JSDraw2.Rect(scil.Utils.parsePixel(e.style.left),\r\n scil.Utils.parsePixel(e.style.top),\r\n scil.Utils.parsePixel(e.style.width),\r\n scil.Utils.parsePixel(e.style.height));\r\n },\r\n\r\n parsePixel: function (s) {\r\n if (s == null || !scil.Utils.endswith(s, \"px\"))\r\n return null;\r\n\r\n s = s.substr(0, s.length - 2);\r\n return isNaN(s) ? null : parseInt(s);\r\n },\r\n\r\n /**\r\n * Clone an array\r\n * @function {static} cloneArray\r\n * @param {array} ar - the array to be cloned\r\n * @returns a new array\r\n */\r\n cloneArray: function (ar) {\r\n var r = [];\r\n this.mergeArray(r, ar);\r\n return r;\r\n },\r\n\r\n /**\r\n * Merge two arrays\r\n * @function {static} mergeArray\r\n * @param {array} dest - the destination array to be merged to\r\n * @param {array} src - the source arrays to be merged from\r\n * @returns null\r\n */\r\n mergeArray: function (dest, src) {\r\n for (var i = 0; i < src.length; ++i)\r\n dest.push(src[i]);\r\n },\r\n\r\n /**\r\n * Find the index of an item in an array\r\n * @function {static} mergeArray\r\n * @param {array} ar - the array to be searched\r\n * @param {object} i - the item to be searched\r\n * @returns the index if succeeded; -1 if failed\r\n */\r\n fingArrayIndex: function (ar, i) {\r\n for (var k = 0; k < ar.length; ++k) {\r\n if (ar[k] == i)\r\n return k;\r\n }\r\n return -1;\r\n },\r\n\r\n getFunctionName: function (f) {\r\n if (typeof f == \"function\") {\r\n var fName = (f + \"\").match(/function\\s*([\\w\\$]*)\\s*\\(/);\r\n if (fName !== null)\r\n return fName[1];\r\n }\r\n\r\n return null;\r\n },\r\n\r\n splitCsvRow: function (s) {\r\n if (s == null || s == \"\\r\" || s == \"\")\r\n return;\r\n\r\n if (s.substr(s.length - 1) == \"\\r\")\r\n s = s.substr(0, s.length - 1);\r\n\r\n var ret = [];\r\n\r\n var inquote = false;\r\n var v = \"\";\r\n for (var i = 0; i < s.length; ++i) {\r\n var c = s.substr(i, 1);\r\n if (c == '\\\"') {\r\n if (!inquote) {\r\n if (v == \"\")\r\n inquote = true;\r\n else\r\n v += c;\r\n }\r\n else {\r\n if (i < s.length - 1) {\r\n var c1 = s.substr(i + 1, 1);\r\n if (c1 == '\\\"') {\r\n v += c;\r\n ++i;\r\n }\r\n else if (c1 == ',') {\r\n ret.push(v);\r\n v = \"\";\r\n inquote = false;\r\n ++i;\r\n }\r\n else {\r\n v += c;\r\n }\r\n }\r\n else {\r\n inquote = false;\r\n }\r\n }\r\n }\r\n else if (c == ',') {\r\n if (inquote) {\r\n v += c;\r\n }\r\n else {\r\n ret.push(v);\r\n v = \"\";\r\n }\r\n }\r\n }\r\n\r\n ret.push(v);\r\n\r\n return ret;\r\n },\r\n\r\n escCsvValue: function (v) {\r\n if (v == null)\r\n return \"\";\r\n if (typeof (v) != \"string\")\r\n v = v + \"\";\r\n if (v.indexOf(',') >= 0 || v.indexOf('\\\"') >= 0 || v.indexOf('\\r') >= 0 || v.indexOf('\\n') >= 0)\r\n v = '\\\"' + v.replace(/[\\\"]/g, \"\\\"\\\"\").replace(/\\r\\n/g, \"\") + '\\\"';\r\n return v;\r\n },\r\n\r\n /**\r\n * Unescape an xml value\r\n * @function {static} unescXmlValue\r\n * @param {object} v - the input string\r\n * @returns a string\r\n */\r\n unescXmlValue: function (v) {\r\n if (v == null)\r\n return '';\r\n return v.replace(/</gi, \"<\").replace(/>/gi, \">\").replace(/ /gi, \"\\n\").replace(/'/g, \"'\").replace(/"/g, \"\\\"\").replace(/&/gi, \"&\");\r\n },\r\n\r\n /**\r\n * Escape the object as the xml value\r\n * @function {static} escXmlValue\r\n * @param {object} v - the input object\r\n * @param {bool} trim - indicate if trim the spaces\r\n * @returns a string\r\n */\r\n escXmlValue: function (v, trim) {\r\n if (v == null)\r\n return '';\r\n\r\n if (typeof (v) != \"string\")\r\n v = v + \"\";\r\n\r\n if (trim)\r\n v = scil.Utils.trim(v);\r\n return v.replace(/&/g, \"&\").replace(//g, \">\").replace(/\\r/g, \" \").replace(/\\n/g, \" \").replace(/'/g, \"'\").replace(/\"/g, \""\");\r\n },\r\n\r\n escUrlData: function (s) {\r\n if (s == null)\r\n return s;\r\n\r\n var ret = \"\";\r\n for (var i = 0; i < s.length; ++i) {\r\n var c = s.charCodeAt(i);\r\n var s1 = s.substr(i, 1);\r\n if (c > 255)\r\n ret += s1;\r\n else if (s1 == \"+\")\r\n ret += \"%2b\";\r\n else\r\n ret += escape(s1);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n escFileName: function (s) {\r\n if (s == null)\r\n return s;\r\n\r\n var ret = \"\";\r\n for (var i = 0; i < s.length; ++i) {\r\n var c = s.substr(i, 1);\r\n if (s.charCodeAt(i) > 255 || /[a-z|0-9|_| |\\-|\\(|\\)|\\{|\\}|\\[|\\]|\\.]/ig.test(c))\r\n ret += c;\r\n else\r\n ret += '_';\r\n }\r\n return ret;\r\n },\r\n\r\n getFirstChild: function (parent, tag) {\r\n if (parent == null)\r\n return null;\r\n for (var i = 0; i < parent.childNodes.length; ++i) {\r\n if (parent.childNodes[i].tagName == tag)\r\n return parent.childNodes[i];\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Parse an xml string\r\n * @function {static} parseXml\r\n * @param {string} xml - input xml string\r\n * @returns a XML document object\r\n */\r\n parseXml: function (xml) {\r\n var ret = this.parseXml2(xml);\r\n if (ret != null && ret.succeeded)\r\n return ret.doc;\r\n return null;\r\n },\r\n\r\n parseXml2: function (xml) {\r\n if (xml == null)\r\n return null;\r\n\r\n xml = this.trim(xml);\r\n if (xml.length < 10 || xml.substr(0, 1) != \"<\" || xml.substr(xml.length - 1, 1) != \">\")\r\n return null;\r\n\r\n var succeeded = false;\r\n var error = null;\r\n var doc = null;\r\n try {\r\n if (window.DOMParser) {\r\n doc = new DOMParser().parseFromString(xml, \"text/xml\");\r\n }\r\n else // Internet Explorer\r\n {\r\n doc = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n doc.async = \"false\";\r\n doc.loadXML(xml);\r\n }\r\n succeeded = true;\r\n }\r\n catch (e) {\r\n error = e.message;\r\n }\r\n\r\n return { succeeded: succeeded, error: error, doc: doc };\r\n },\r\n\r\n xquery: function (e, path, returnone) {\r\n if (e == null || path == null || path == \"\")\r\n return null;\r\n\r\n var ret = null;\r\n var list = path.split('/');\r\n for (var i = 0; i < list.length; ++i) {\r\n var s = list[i];\r\n if (s == \"\")\r\n continue;\r\n\r\n var tag = s.replace(/[\\[]@[a-z]+[0-9|a-z]{0,9}='[^\\']+'[\\]]$/, \"\");\r\n s = s.substr(tag.length + 2, s.length - (tag.length + 3));\r\n\r\n var key = null;\r\n var val = null;\r\n var p = s.indexOf('=');\r\n if (p > 0) {\r\n key = s.substr(0, p);\r\n p += 2;\r\n val = s.substr(p, s.length - p - 1);\r\n }\r\n\r\n var e2 = null;\r\n for (var k = 0; k < e.childNodes.length; ++k) {\r\n var c = e.childNodes[k];\r\n if (c.tagName == tag) {\r\n if (key == null || c.getAttribute(key) == val)\r\n e2 = c;\r\n }\r\n\r\n if (e2 != null) {\r\n if (i == list.length - 1) {\r\n if (returnone)\r\n return e2;\r\n\r\n if (ret == null)\r\n ret = [e2];\r\n else\r\n ret.push(e2);\r\n }\r\n else {\r\n e2 = c;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (ret != null)\r\n return ret;\r\n if (e2 == null)\r\n return null;\r\n else\r\n e = e2;\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Parse an json string\r\n * @function {static} parseJson\r\n * @param {string} s - input json string\r\n * @returns a javascript object\r\n */\r\n parseJson: function (s) {\r\n return this.eval(s);\r\n },\r\n\r\n /**\r\n * Test if a string contains a word\r\n * @function {static} containsWord\r\n * @param {string} str - the string to be tested\r\n * @param {string} word - the word to be tested\r\n * @param {bool} ignorecase - indicate if ignoring cases or not\r\n * @returns true of false\r\n */\r\n containsWord: function (str, word, ignorecase) {\r\n if (str == null || word == null || str == \"\" || word == \"\")\r\n return false;\r\n if (ignorecase)\r\n word = word.toLowerCase();\r\n var words = str.toLowerCase().split(/\\W+/);\r\n for (var i = 0; i < words.length; ++i) {\r\n if (words[i] == word)\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Show message dialog.
\r\n * For Windows 8 metro Apps, and Office Apps, standard alert() function is not allowed. alert2() can be an alternative.\r\n * @function {static} alert2\r\n * @param {string} message - message body\r\n * @param {string} caption - dialog caption\r\n * @param {function()} callback - callback function\r\n * @param {string} iconurl - image url of the dialog icon\r\n * @param {number} width - dialog width\r\n * @returns null\r\n */\r\n alert2: function (message, caption, callback, iconurl, width) {\r\n if (scil.Utils.alertdlg == null) {\r\n var tbody = scil.Utils.createTable();\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n var img = scil.Utils.createElement(scil.Utils.createElement(tr, \"td\", null, { verticalAlign: \"top\" }), \"img\", null, { height: \"50px\", width: \"50px\" });\r\n var td = scil.Utils.createElement(tr, \"td\", null, { textAlign: \"center\" });\r\n var msg = scil.Utils.createElement(td, \"div\", null, { padding: \"10px\", textAlign: \"left\", maxWidth: \"800px\", maxHeight: \"400px\", overflow: \"auto\", color: \"#000\" });\r\n //if (scil.Utils.isIE)\r\n // msg.style.height = \"expression(clientHeight>360 ? '360px' : 'auto')\";\r\n var ok = scil.Utils.createElement(td, \"button\", scil.Utils.imgTag(\"tick.gif\", this.res(\"OK\")), { width: \"80px\" });\r\n\r\n scil.Utils.alertdlg = new JSDraw2.Dialog(\"Attention\", tbody.parentNode);\r\n scil.Utils.alertdlg.msg = msg;\r\n scil.Utils.alertdlg.img = img;\r\n\r\n dojo.connect(ok, \"onclick\", function (e) { var d = scil.Utils.alertdlg; if (d.callback != null) d.callback(); d.hide(); e.preventDefault(); });\r\n }\r\n\r\n if (iconurl == null || iconurl == \"\")\r\n iconurl = scil.Utils.imgSrc(\"img/information.gif\");\r\n else if (!scil.Utils.startswith(iconurl, \"http:\"))\r\n iconurl = scil.Utils.imgSrc(\"img/\" + iconurl + \".gif\");\r\n scil.Utils.alertdlg.show(caption);\r\n scil.Utils.alertdlg.callback = callback;\r\n scil.Utils.alertdlg.msg.innerHTML = message == null ? '' : \"
\" + message + \"
\";\r\n scil.Utils.alertdlg.img.src = iconurl;\r\n\r\n scil.Utils.alertdlg.moveCenter();\r\n },\r\n\r\n /**\r\n * Show confirm dialog.
\r\n * For Windows 8 metro Apps, and Office Apps, standard confirm() function is not allowed. confirm() can be an alternative.\r\n * @function {static} confirm\r\n * @param {string} message - message body\r\n * @param {function(string status)} callback - callback function. status value: true, false, 'cancel'\r\n * @param {bool} cancelbtn - indicate if it shows Cancel button or not\r\n * @param {string} caption - dialog caption\r\n * @returns null\r\n */\r\n confirm: function (message, callback, cancelbtn, caption, owner) {\r\n if (scil.Utils.confirmdlg == null) {\r\n var tbody = scil.Utils.createTable();\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n scil.Utils.createElement(tr, \"td\", \"\", { verticalAlign: \"top\" });\r\n var td = scil.Utils.createElement(tr, \"td\", null, { textAlign: \"center\" });\r\n var msg = scil.Utils.createElement(td, \"div\", null, { padding: \"10px\", textAlign: \"left\", maxHeight: \"360px\", color: \"black\" });\r\n //if (scil.Utils.isIE)\r\n // msg.style.height = \"expression(clientHeight>360 ? '360px' : 'auto')\";\r\n var yes = scil.Utils.createElement(td, \"button\", this.res(\"Yes\"), { width: \"80px\" });\r\n var no = scil.Utils.createElement(td, \"button\", this.res(\"No\"), { width: \"80px\" });\r\n var cancel = scil.Utils.createElement(td, \"button\", this.res(\"Cancel\"), { width: \"80px\" });\r\n\r\n scil.Utils.confirmdlg = new JSDraw2.Dialog(this.res(\"Attention\"), tbody.parentNode);\r\n scil.Utils.confirmdlg.msg = msg;\r\n scil.Utils.confirmdlg.cancel = cancel;\r\n\r\n dojo.connect(yes, \"onclick\", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback(true); });\r\n dojo.connect(no, \"onclick\", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback(false); });\r\n dojo.connect(cancel, \"onclick\", function (e) { var d = scil.Utils.confirmdlg; d.hide(); e.preventDefault(); if (d.callback != null) d.callback('cancel'); });\r\n }\r\n\r\n scil.Utils.confirmdlg.show();\r\n scil.Utils.confirmdlg.callback = callback;\r\n scil.Utils.confirmdlg.cancel.style.display = cancelbtn ? '' : \"none\";\r\n scil.Utils.confirmdlg.msg.innerHTML = message == null ? '' : \"
\" + message + \"
\";\r\n scil.Utils.confirmdlg.hide(true);\r\n scil.Utils.confirmdlg.show(caption, null, null, null, owner);\r\n },\r\n\r\n /**\r\n * A simple version confirm dialog, only showing Yes, No button\r\n * @function {static} confirmYes\r\n * @param {string} message - message body\r\n * @param {function()} callback - callback function.\r\n * @returns null\r\n */\r\n confirmYes: function (message, callback, owner) {\r\n scil.Utils.confirm(message, function (f) { if (f) callback(); }, null, null, owner);\r\n },\r\n\r\n /**\r\n * Show prompt dialog, and ask to input a string
\r\n * For Windows 8 metro Apps, and Office Apps, standard prompt() function is not allowed. This prompt() can be an alternative.\r\n * @function {static} prompt2\r\n * @param {string} caption - dialog caption\r\n * @param {string} message - message body\r\n * @param {string} defaultvalue - default value in the input box\r\n * @param {string} button - the button label\r\n * @param {function()} callback - callback function.\r\n * @param {string} iconurl - the url of dialog icon\r\n * @param {bool} zindex - zIndex of the dialog\r\n * @param {bool} multiline - indicate if showing multiline input box\r\n * @param {number} height\r\n * @returns null\r\n */\r\n prompt2: function (options) {\r\n return this.prompt(options.caption, options.message, options.defaultvalue, options.button,\r\n options.callback, options.iconurl, options.zindex, options.multiline, options.autosuggesturl, options.owner,\r\n options.maxlength, options.height);\r\n },\r\n\r\n /**\r\n * Show prompt dialog, and ask to input a string
\r\n * For Windows 8 metro Apps, and Office Apps, standard prompt() function is not allowed. This prompt() can be an alternative.\r\n * @function {static} prompt\r\n * @param {string} caption - dialog caption\r\n * @param {string} message - message body\r\n * @param {string} defaultval - default value in the input box\r\n * @param {string} btn - the button label\r\n * @param {function()} callback - callback function.\r\n * @param {string} iconurl - the url of dialog icon\r\n * @param {bool} zindex - zIndex of the dialog\r\n * @param {bool} multiline - indicate if showing multiline input box\r\n * @returns null\r\n */\r\n prompt: function (caption, message, defaultval, btn, callback, iconurl, zindex, multiline, autosuggesturl, owner, maxlength, height) {\r\n if (scil.Utils.promptdlg == null) {\r\n var tbody = scil.Utils.createTable();\r\n var tr = scil.Utils.createElement(tbody, \"tr\");\r\n var icon = scil.Utils.createElement(scil.Utils.createElement(tr, \"td\"), \"div\", null, { width: \"50px\" });\r\n var td = scil.Utils.createElement(tr, \"td\");\r\n var msg = scil.Utils.createElement(td, \"div\", null, { color: \"black\" });\r\n\r\n var div = scil.Utils.createElement(td, \"div\");\r\n var input = scil.Utils.createElement(div, \"input\", null, { width: \"360px\", display: \"none\" });\r\n input.setAttribute(\"x-webkit-speech\", \"on\");\r\n var textarea = scil.Utils.createElement(div, \"textarea\", null, { width: \"360px\", display: \"none\" });\r\n\r\n var div = scil.Utils.createElement(td, \"div\", null, { textAlign: \"center\", paddingTop: \"5px\" });\r\n var button = scil.Utils.createElement(div, \"button\", btn, { width: scil.Utils.buttonWidth + \"px\" });\r\n\r\n var dlg = scil.Utils.promptdlg = new JSDraw2.Dialog(this.res(\"Message\"), tbody.parentNode);\r\n dlg.icon = icon;\r\n dlg.msg = msg;\r\n dlg.input = input;\r\n dlg.textarea = textarea;\r\n dlg.button = button;\r\n\r\n var fn = function (e) { var d = dlg; d.hide(); if (d.callback != null) d.callback(d.input.style.display == \"none\" ? d.textarea.value : d.input.value, d.input.style.display == \"none\" ? d.textarea : d.input); if (e.preventDefault != null) e.preventDefault(); };\r\n dojo.connect(dlg.input, \"onkeydown\", function (e) { if (e.keyCode == 13) { fn(e); } });\r\n dojo.connect(button, \"onclick\", fn);\r\n\r\n dlg.auto = new scil.AutoComplete(input, null);\r\n }\r\n\r\n var dlg = scil.Utils.promptdlg;\r\n\r\n dlg.input.style.display = multiline ? \"none\" : \"\";\r\n dlg.textarea.style.display = multiline ? \"\" : \"none\";\r\n dlg.input.setAttribute(\"maxlength\", maxlength > 0 ? maxlength : \"\");\r\n\r\n if (height > 0) {\r\n dlg.input.style.height = height + \"px\";\r\n dlg.textarea.style.height = height + \"px\";\r\n }\r\n else {\r\n dlg.input.style.height = \"\";\r\n dlg.textarea.style.height = \"\";\r\n }\r\n\r\n dlg.auto.url = autosuggesturl;\r\n dlg.auto.disabled = autosuggesturl == null || autosuggesturl == \"\";\r\n\r\n dlg.show(caption, zindex);\r\n if (iconurl == null) {\r\n dlg.icon.innerHTML = \" \";\r\n }\r\n else {\r\n dlg.icon.innerHTML = \"\";\r\n dlg.icon.style.display = \"\";\r\n }\r\n\r\n dlg.msg.innerHTML = message == null ? '' : message;\r\n dlg.button.innerHTML = btn == null ? this.res(\"OK\") : this.res(btn);\r\n (multiline ? dlg.textarea : dlg.input).value = defaultval == null ? '' : defaultval;\r\n dlg.callback = callback;\r\n\r\n dlg.hide(true);\r\n dlg.show2({ owner: owner });\r\n (multiline ? dlg.textarea : dlg.input).select();\r\n (multiline ? dlg.textarea : dlg.input).focus();\r\n },\r\n\r\n /**\r\n * Create a Cookie\r\n * @function {static} createCookie\r\n * @param {string} name - the cookie's name\r\n * @param {string} value - the value of the cookie\r\n * @param {number} days - total days that the cookie will expire\r\n * @returns null\r\n */\r\n createCookie: function (name, value, days, ignoreStore) {\r\n if (!ignoreStore) {\r\n var store = dojox.storage == null || dojox.storage.LocalStorageProvider == null ? null : new dojox.storage.LocalStorageProvider();\r\n if (store != null && store.isAvailable()) {\r\n store.initialize();\r\n store.put(name, value);\r\n return;\r\n }\r\n }\r\n\r\n var expires = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toGMTString();\r\n }\r\n document.cookie = name + \"=\" + escape(value) + expires + \"; path=/\";\r\n },\r\n\r\n /**\r\n * Read a Cookie\r\n * @function {static} readCookie\r\n * @param {string} name - the cookie's name\r\n * @returns the value of the cookie as a string\r\n */\r\n readCookie: function (name, ignoreStore) {\r\n if (!ignoreStore) {\r\n var store = dojox.storage == null || dojox.storage.LocalStorageProvider == null ? null : new dojox.storage.LocalStorageProvider();\r\n if (store != null && store.isAvailable()) {\r\n store.initialize();\r\n return store.get(name);\r\n }\r\n }\r\n\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ')\r\n c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0)\r\n return unescape(c.substring(nameEQ.length, c.length));\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Erase a Cookie\r\n * @function {static} eraseCookie\r\n * @param {string} name - the cookie's name\r\n * @returns null\r\n */\r\n eraseCookie: function (name) {\r\n if (dojox.storage != null && dojox.storage.LocalStorageProvider != null) {\r\n var store = new dojox.storage.LocalStorageProvider();\r\n if (store.isAvailable()) {\r\n store.initialize();\r\n return store.remove(name);\r\n }\r\n }\r\n\r\n createCookie(name, \"\", -1);\r\n },\r\n\r\n /**\r\n * Format file size\r\n * @function {static} formatFilesize\r\n * @param {number} s - file size\r\n * @returns a string\r\n */\r\n formatFilesize: function (filesize) {\r\n if (!(filesize > 0))\r\n return \"\";\r\n\r\n if (filesize / 1000 < 1)\r\n return filesize + \"Bytes\";\r\n filesize = filesize / 1000;\r\n if (filesize / 1000 < 1)\r\n return Math.round(filesize * 10) / 10 + \"KB\";\r\n filesize = filesize / 1000;\r\n if (filesize / 1000 < 1)\r\n return Math.round(filesize * 10) / 10 + \"MB\";\r\n filesize = filesize / 1000;\r\n if (filesize / 1000 < 1)\r\n return Math.round(filesize * 10) / 10 + \"GB\";\r\n filesize = filesize / 1024;\r\n return Math.round(filesize * 10) / 10 + \"TB\";\r\n },\r\n\r\n today: function () {\r\n return scil.Utils.trunc2date(new Date());\r\n },\r\n\r\n trunc2date: function (d) {\r\n return d == null ? null : new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n },\r\n\r\n time: function (tm) {\r\n if (tm == null)\r\n return new Date();\r\n\r\n var t = null;\r\n if (typeof (tm) == \"string\") {\r\n if (/^[0-9]+$/.test(tm)) {\r\n tm = parseInt(tm);\r\n }\r\n else {\r\n var ss = tm.split('-');\r\n if (ss.length == 3) {\r\n var y = parseInt(ss[0]);\r\n var m = ss[1].length == 3 ? this._parseMonth(ss[1]) : (parseInt(ss[1]) - 1);\r\n var d = parseInt(ss[2]);\r\n\r\n if (y > 0 && m >= 0 && m < 12 && d > 0 && d <= 31)\r\n return new Date(y, m, d);\r\n }\r\n }\r\n }\r\n if (t == null)\r\n t = new Date(tm);\r\n\r\n // If tm is a string, like 2015-04-30, the time is UTC time. Convert it into local time.\r\n var offset = t.getTimezoneOffset();\r\n if (isNaN(offset))\r\n offset = 0;\r\n return new Date(t.getTime() + offset * 60000);\r\n },\r\n\r\n _months: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n _weekdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\r\n weekday: function (dt) {\r\n return this._weekdays[dt.getDay()];\r\n },\r\n\r\n _parseMonth: function (s) {\r\n if (s == null || s.length != 3)\r\n return -1;\r\n s = s.substr(0, 1).toUpperCase() + s.substr(1).toLowerCase();\r\n return scil.Utils.indexOf(this._months, s);\r\n },\r\n\r\n formatTime: function (tm, format) {\r\n if (tm == 0)\r\n return \"\";\r\n if (tm == null)\r\n tm = new Date();\r\n if (typeof tm != \"object\")\r\n tm = scil.Utils.time(tm);\r\n\r\n if (JSDraw2.timezoneoffet > 0)\r\n tm = new Date(tm.getTime() + JSDraw2.timezoneoffet * 60 * 60 * 1000);\r\n\r\n // date part\r\n var s = format;\r\n if (scil.Utils.isNullOrEmpty(s))\r\n s = \"yyyy-mmm-dd\";\r\n\r\n s = s.replace(\"yyyy\", tm.getFullYear())\r\n .replace(\"yy\", (tm.getFullYear() + \"\").substr(2))\r\n .replace(\"mmm\", scil.Utils._months[tm.getMonth()])\r\n .replace(\"mm\", scil.Utils.padLeft(tm.getMonth() + 1, 2, '0'))\r\n .replace(\"dd\", scil.Utils.padLeft(tm.getDate(), 2, '0'));\r\n\r\n // time part\r\n var h12 = s.indexOf(\"hh\") >= 0;\r\n var h = tm.getHours();\r\n s = s.replace(\"hh\", this.padLeft(h % 12, 2, '0'))\r\n .replace(\"HH\", this.padLeft(h, 2, '0'))\r\n .replace(\"MM\", this.padLeft(tm.getMinutes(), 2, '0'))\r\n .replace(\"SS\", this.padLeft(tm.getSeconds(), 2, '0'))\r\n .replace(\"ss\", this.padLeft(tm.getSeconds(), 2, '0'));\r\n if (h12)\r\n s += h >= 12 ? \"PM\" : \"AM\";\r\n\r\n return s;\r\n },\r\n\r\n /**\r\n * Convert a date number into visible date string\r\n * @function {static} dateStr\r\n * @param {number} tm - the number of time\r\n * @param {bool} classic - if classic is true, it won't show Today, Yesterday etc.\r\n * @returns a string\r\n */\r\n dateStr: function (input, classic, format) {\r\n if (scil.Utils.isNullOrEmpty(input) || input == 0)\r\n return \"\";\r\n var tp = typeof (input);\r\n if (!(tp == \"object\" || tp == \"number\" || tp == \"string\"))\r\n return \"\";\r\n var tm = input;\r\n if (tp != \"object\") {\r\n tm = scil.Utils.time(tm);\r\n if (tm == null)\r\n return \"\";\r\n }\r\n\r\n var days = (scil.Utils.today().getTime() - scil.Utils.trunc2date(tm).getTime()) / 1000 / 60 / 60 / 24;\r\n\r\n var ret = null;\r\n if (!classic) {\r\n if (days == 0)\r\n ret = JSDraw2.Language.res(\"Today\");\r\n else if (days == 1)\r\n ret = JSDraw2.Language.res(\"Yesterday\");\r\n }\r\n if (ret == null) {\r\n if (scil.Utils.isNullOrEmpty(format)) {\r\n format = JSDraw2.defaultoptions.dateformat;\r\n if (scil.Utils.isNullOrEmpty(format))\r\n format = \"yyyy-mmm-dd\";\r\n }\r\n\r\n // if the input is 2014-04-08, this is to fix the timezone issue\r\n if (typeof (input) == \"string\")\r\n tm = new Date(tm);\r\n\r\n ret = scil.Utils.formatTime(tm, format);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n /**\r\n * Convert a time number into visible time string\r\n * @function {static} timeStr\r\n * @param {number} tm - the number of time\r\n * @param {bool} classic - if classic is true, it won't show Today, Yesterday etc.\r\n * @returns a string\r\n */\r\n timeStr: function (tm, classic, timefmt) {\r\n if (scil.Utils.isNullOrEmpty(tm) || tm == 0)\r\n return \"\";\r\n\r\n if (typeof (tm) == \"string\") {\r\n if (tm == \"new\")\r\n return \"\" + JSDraw2.Language.res(\"New\") + \"\";\r\n else\r\n return tm;\r\n }\r\n\r\n if (tm == null)\r\n return \"\";\r\n if (typeof tm != \"object\")\r\n tm = scil.Utils.time(tm);\r\n\r\n var s = timefmt != null ? timefmt : JSDraw2.defaultoptions.timeformat;\r\n if (scil.Utils.isNullOrEmpty(s))\r\n s = \"HH:MM\";\r\n\r\n return scil.Utils.dateStr(tm, classic) + \" \" + scil.Utils.formatTime(tm, s);\r\n },\r\n\r\n /**\r\n * Create a Button\r\n * @function {static} createButton\r\n * @param {string or DOM} parent - the parent of the new element. The parent can be set to null, so it won't have a parent\r\n * @param {dictionary} button - { caption: string, onclick: function }\r\n * @returns the new button\r\n */\r\n createButton: function (parent, button, lang) {\r\n if (typeof parent == \"string\")\r\n parent = dojo.byId(parent);\r\n\r\n if (button == null)\r\n return;\r\n if (typeof (button) == \"string\") {\r\n this.createElement(parent, \"span\", button);\r\n return;\r\n }\r\n\r\n var s = (lang == null ? scil.Lang : lang).res(button.caption || button.label);\r\n var title = scil.Lang.res(button.title);\r\n\r\n if (button.src == null && button.iconurl != null)\r\n button.src = button.iconurl;\r\n if (button.title == null && button.tooltips != null)\r\n button.title = button.tooltips;\r\n\r\n var a = null;\r\n if (button.type == \"b\") {\r\n var tbody = scil.Utils.createTable(parent, 0, 0, { float: button.float == null ? \"left\" : button.float, textAlign: \"center\", margin: 0, borderRadius: \"2px\" });\r\n a = tbody.parentNode;\r\n if (button.id != null)\r\n a.setAttribute(\"id\", button.id);\r\n scil.Utils.createElement(scil.Utils.createElement(tbody, \"tr\"), \"td\", \" 0 ? \" height='\" + button.imgheight + \"'\" : \"\") + \">\", { padding: \"3px 12px 0 12px\" });\r\n scil.Utils.createElement(scil.Utils.createElement(tbody, \"tr\"), \"td\", s, { color: \"#fff\", fontSize: \"60%\" });\r\n }\r\n else {\r\n if (s == null && (button.src || button.icon) != null) {\r\n a = this.createElement(parent, \"img\", null, { width: button.width, cursor: \"pointer\", verticalAlign: \"middle\" }, { src: (button.src || button.icon), title: button.title, id: button.id });\r\n }\r\n else {\r\n if (button.src != null)\r\n s = \" 0 ? \" height='\" + button.imgheight + \"'\" : \"\") + \">\" + s;\r\n\r\n if (button.type == \"a\")\r\n a = this.createElement(parent, button.tagname != null ? button.tagname : (s == \"\" || s == null ? \"span\" : \"u\"), s, { width: button.width, cursor: \"pointer\", background: button.background, whiteSpace: \"nowrap\" }, { title: title, id: button.id });\r\n else\r\n a = this.createElement(parent, \"button\", s, { width: button.width, background: button.background, padding: button.padding }, { title: title, id: button.id });\r\n }\r\n }\r\n\r\n if (button.items != null) {\r\n if (a.tagName == \"IMG\" || a.tagName == \"U\") {\r\n var b = this.createElement(parent, \"span\", null);\r\n b.appendChild(a);\r\n a = b;\r\n }\r\n }\r\n\r\n var hc = button.highlightcolor == null ? JSDraw2.Skin.menu.highlightcolor : button.highlightcolor;\r\n var c = button.color == null ? (button.type == \"b\" ? \"\" : JSDraw2.Skin.menu.color) : button.color;\r\n a.style.color = c;\r\n if (button.type == \"b\") {\r\n scil.connect(a, \"onmouseover\", function () { a.style.background = hc; });\r\n scil.connect(a, \"onmouseout\", function () { a.style.background = c; });\r\n }\r\n else {\r\n scil.connect(a, \"onmouseover\", function () { a.style.color = hc; });\r\n scil.connect(a, \"onmouseout\", function () { a.style.color = c; });\r\n }\r\n\r\n if (button.items != null) {\r\n if (button.callback == null) {\r\n button.callback = function (cmd) {\r\n if (button.onclick != null) {\r\n button.onclick(cmd);\r\n }\r\n else {\r\n for (var i = 0; i < button.items.length; ++i) {\r\n if (button.items[i].label == cmd && button.items[i].url != null) {\r\n if (button.items[i].target == null)\r\n window.location = button.items[i].url;\r\n else\r\n window.open(button.items[i].url, button.items[i].target);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n new scil.DropdownButton(a, button);\r\n }\r\n else {\r\n if (button.onclick != null)\r\n dojo.connect(a, \"onclick\", function (e) { button.onclick(e); });\r\n else if (button.url)\r\n dojo.connect(a, \"onclick\", function () { if (button.target == null) window.location = button.url; else window.open(button.url, button.target); });\r\n }\r\n\r\n if (button.key != null)\r\n a.setAttribute(\"key\", button.key);\r\n\r\n return a;\r\n },\r\n\r\n /**\r\n * Create a HTML element.\r\n *
\r\n    * Example:\r\n    *    var div = scil.Utils.createElement(document.body, \"div\", \r\n    *       \"<\" + \"a href='javascript:alert(99)'>test</a\" + \">\", {textAlign:'center'}, {class: 'myclass'});\r\n    * 
\r\n * @function {static} createElement\r\n * @param {DOM} parent - the parent of the new element. The parent can be set to null, so it won't have a parent\r\n * @param {string} tag - the name of the new element\r\n * @param {string} html - the innerHTML of the new element\r\n * @param {dictionary} styles - styles of the new element\r\n * @param {dictionary} attributes - attributes of the new element, such as the name, id, class etc.\r\n * @param {onclick} function\r\n * @returns the new HTML element\r\n */\r\n createElement: function (parent, tag, html, styles, attributes, onclick) {\r\n if (typeof (parent) == \"string\")\r\n parent = scil.byId(parent);\r\n\r\n if (attributes != null && attributes.title != null)\r\n attributes.title = this.res(attributes.title);\r\n\r\n var e = null;\r\n tag = tag.toLowerCase();\r\n if (tag == \"checkbox\" || tag == \"radio\" || tag == \"password\" || tag == \"hidden\" || tag == \"file\" || tag == \"image\") {\r\n if (scil.Utils.isIE8Lower) {\r\n var att = attributes != null && attributes[\"name\"] != null ? \" name='\" + attributes[\"name\"] + \"'\" : \"\";\r\n e = document.createElement(\"\");\r\n }\r\n else {\r\n e = document.createElement(\"input\");\r\n e.type = tag;\r\n }\r\n }\r\n else {\r\n e = document.createElement(tag);\r\n }\r\n\r\n if (parent != null)\r\n parent.appendChild(e);\r\n\r\n if (html != null) {\r\n if (tag == \"radio\" || tag == \"checkbox\")\r\n this.createElement(parent, \"span\", html);\r\n else\r\n e.innerHTML = html;\r\n }\r\n\r\n if (styles != null) {\r\n for (var k in styles) {\r\n var v = styles[k];\r\n if (v == null)\r\n continue;\r\n\r\n if ((k == \"width\" || k == \"height\" || k == \"padding\" || k == \"margin\") && typeof (v) == \"number\")\r\n v = v + \"px\";\r\n\r\n e.style[k] = v;\r\n }\r\n }\r\n\r\n if (attributes != null) {\r\n for (var k in attributes) {\r\n if (attributes[k] != null)\r\n e.setAttribute(k, attributes[k]);\r\n }\r\n }\r\n\r\n if (onclick != null)\r\n dojo.connect(e, \"onclick\", function (event) { onclick(event, e); });\r\n\r\n return e;\r\n },\r\n\r\n // /**\r\n // * Download a file from the same site. It won't work to download cross-site contents.\r\n // *
\r\n    //    * Example:\r\n    //    *    scil.Utils.downloadFile(\"data/m.mol\", function(data) { alert(data); });\r\n    //    * 
\r\n // * @function {static} downloadFile\r\n // * @param {string} url - url of the file\r\n // * @param {function} callback - function(data) {}\r\n // */\r\n // downloadFile: function (url, callback) {\r\n // var iframe = scil.Utils.createElement(document.body, \"iframe\", null, { width: 1, height: 1, display: \"none\" },\r\n // { frameBorder: 0, src: url });\r\n\r\n // scil.connect(iframe, \"onload\", function () {\r\n // var doc = null;\r\n // if (iframe.contentDocument != null)\r\n // doc = iframe.contentDocument;\r\n // else if (iframe.contentWindow != null)\r\n // doc = iframe.contentWindow.document;\r\n // var body = doc == null ? null : doc.body;\r\n\r\n // var data;\r\n // if (body == null && doc.documentElement != null)\r\n // data = new XMLSerializer().serializeToString(doc);\r\n // else\r\n // data = scil.Utils.getInnerText(body);\r\n\r\n // iframe.parentNode.removeChild(iframe);\r\n // if (callback != null)\r\n // callback(data, url);\r\n // });\r\n // },\r\n\r\n /**\r\n * Create a HTML table element\r\n * @function {static} createTable\r\n * @param {DOM} parent - the parent of the new table. The parent can be set to null, so it won't have a parent\r\n * @param {number} cellspacing - the cell spacing in pixel\r\n * @param {number} cellpadding - the cell padding in pixel\r\n * @param {dictionary} styles - styles of the new element\r\n * @param {number} border - the border width of the table\r\n * @returns the new HTML element\r\n */\r\n createTable: function (parent, cellspacing, cellpadding, styles, border) {\r\n var table = this.createElement(parent, \"table\", null, styles);\r\n if (cellspacing != null)\r\n table.cellSpacing = cellspacing;\r\n if (cellpadding != null)\r\n table.cellPadding = cellpadding;\r\n if (border >= 0)\r\n table.border = border;\r\n return this.createElement(table, \"tbody\");\r\n },\r\n\r\n /**\r\n * Create a HTML table element\r\n * @function {static} createTable\r\n * @param {DOM} parent - the parent of the new table. The parent can be set to null, so it won't have a parent\r\n * @param {dict} styles - styles of the new element\r\n * @param {dict} attributes - attributes\r\n * @returns the new HTML element\r\n */\r\n createTable2: function (parent, styles, attributes) {\r\n var table = this.createElement(parent, \"table\", null, styles, attributes);\r\n return this.createElement(table, \"tbody\");\r\n },\r\n\r\n createTR: function (parent, styles) {\r\n return scil.Utils.createElement(parent, \"tr\", styles);\r\n },\r\n\r\n createTD: function (parent, styles) {\r\n if (parent.tagName != \"TR\")\r\n parent = this.createTR(parent);\r\n return scil.Utils.createElement(parent, \"td\", styles);\r\n },\r\n\r\n createCenterBox: function (parent, border) {\r\n var t = this.createTable(parent, 0, 0, null, border);\r\n t.parentNode.setAttribute(\"align\", \"center\");\r\n var tr = this.createElement(t, \"tr\");\r\n var td = this.createElement(tr, \"td\", null, { textAlign: \"left\" });\r\n return td;\r\n },\r\n\r\n createSelect: function (parent, items, value, sortitems, styles) {\r\n var sel = this.createElement(parent, \"select\", null, styles);\r\n this.listOptions(sel, items, value, false, sortitems);\r\n return sel;\r\n },\r\n\r\n /**\r\n * Specify items of a SELECT element\r\n * @function {static} listOptions\r\n * @param {DOM} select - the destination SELECT element\r\n * @param {array or dictionary} items - items to be added\r\n * @param {string} val - the value of the selected item\r\n * @param {bool} removeall - indicate if removing all existing items before adding new items\r\n * @param {bool} sortitems - indicate if sorting items before adding them\r\n * @returns null\r\n */\r\n listOptions: function (select, items, val, removeall, sortitems) {\r\n if (removeall != null)\r\n this.removeAll(select);\r\n if (items == null)\r\n return;\r\n\r\n if (items.length != null) {\r\n if (sortitems)\r\n items.sort();\r\n for (var i = 0; i < items.length; ++i) {\r\n var s = items[i];\r\n var opt = this.createElement(select, \"option\", s, null, { value: s });\r\n if (s == val)\r\n opt.setAttribute(\"selected\", \"selected\");\r\n }\r\n }\r\n else {\r\n var ss = {};\r\n var list = [];\r\n for (var k in items) {\r\n ss[items[k]] = k;\r\n list.push(items[k]);\r\n }\r\n if (sortitems)\r\n list.sort();\r\n\r\n for (var i = 0; i < list.length; ++i) {\r\n var v = list[i];\r\n var k = ss[v];\r\n var opt = this.createElement(select, \"option\", v, null, { value: k });\r\n if (k == val)\r\n opt.setAttribute(\"selected\", \"selected\");\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Select an item in a SELECT element based on a value\r\n * @function {static} selectOption\r\n * @param {DOM} select - the destination SELECT element\r\n * @param {string} val - the value of the selected item\r\n * @returns null\r\n */\r\n selectOption: function (select, val, ignorecase) {\r\n if (select == null)\r\n return;\r\n\r\n for (var i = 0; i < select.options.length; ++i) {\r\n var opt = select.options[i];\r\n if (this.isEqualStr(opt.value, val + \"\", ignorecase) || typeof (val) == \"boolean\" && (val == true && scil.Utils.isTrue(opt.value) || val == false && scil.Utils.isFalse(opt.value))) {\r\n select.selectedIndex = i;\r\n return;\r\n }\r\n }\r\n select.selectedIndex = -1;\r\n },\r\n\r\n isEqualStr: function (s1, s2, ignorecase) {\r\n if (s1 == null && s2 == null)\r\n return true;\r\n if (s1 == null || s2 == null)\r\n return false;\r\n\r\n if (ignorecase)\r\n return s1.toLowerCase() == s2.toLowerCase();\r\n return s1 == s2;\r\n },\r\n\r\n /**\r\n * Remove all child elements\r\n * @function {static} removeAll\r\n * @param {DOM} parent - the parent HTML element\r\n * @returns null\r\n */\r\n removeAll: function (parent) {\r\n if (parent == null || parent.childNodes == null)\r\n return;\r\n for (var i = parent.childNodes.length - 1; i >= 0; --i)\r\n parent.removeChild(parent.childNodes[i]);\r\n },\r\n\r\n /**\r\n * Get the first parent element with a given tag name\r\n * @function {static} getParent\r\n * @param {DOM} obj - the start HTML element\r\n * @param {string} tag - the element tag name to be searched\r\n * @returns the first parent element\r\n */\r\n getParent: function (obj, tag) {\r\n tag = tag.toUpperCase();\r\n while (obj != null) {\r\n if (obj.tagName != null && obj.tagName.toUpperCase() == tag)\r\n return obj;\r\n obj = obj.parentNode;\r\n }\r\n return obj;\r\n },\r\n\r\n /**\r\n * Test if an element is a child of a parent\r\n * @function {static} testParent\r\n * @param {DOM} obj - the child HTML element to be tested\r\n * @param {DOM} parent - the parent element to be tested\r\n * @returns true or false\r\n */\r\n testParent: function (obj, parent) {\r\n if (obj == null || parent == null)\r\n return false;\r\n while (obj != null) {\r\n if (obj.parentNode == parent)\r\n return true;\r\n obj = obj.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Find the first child of a given tag name\r\n * @function {static} firstElement\r\n * @param {DOM} parent - the parent element to be tested\r\n * @param {string} tag - the tag name to be searched\r\n * @returns the child HTML element\r\n */\r\n firstElement: function (parent, tag) {\r\n if (parent == null)\r\n return null;\r\n for (var i = 0; i < parent.childNodes.length; ++i) {\r\n var c = parent.childNodes[i];\r\n if (tag == null && c.nodeName != '#text' || tag != null && c.nodeName == tag)\r\n return c;\r\n }\r\n return null;\r\n },\r\n\r\n arrayContainsArray: function (superset, subset) {\r\n for (var i = 0; i < subset.length; ++i) {\r\n if (this.indexOf(superset, subset[i]) < 0)\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n indexOf: function (list, a, ignorecase) {\r\n if (list == null)\r\n return -1;\r\n\r\n if (ignorecase && typeof (a) == \"string\")\r\n a = a.toLowerCase();\r\n else if (typeof (a) != \"string\")\r\n ignorecase = false;\r\n\r\n for (var i = 0; i < list.length; ++i) {\r\n var s = list[i];\r\n if (ignorecase)\r\n s = s.toLowerCase();\r\n if (s == a)\r\n return i;\r\n }\r\n return -1;\r\n },\r\n\r\n delFromArray: function (list, a) {\r\n var n = 0;\r\n for (var i = list.length - 1; i >= 0; --i) {\r\n if (list[i] == a) {\r\n list.splice(i, 1);\r\n ++n;\r\n }\r\n }\r\n return n;\r\n },\r\n\r\n /**\r\n * Post data to a url\r\n * @function {static} post\r\n * @param {string} url - the destination url to to be posted to\r\n * @param {dictionary} args - the data to be posted\r\n * @param {string} target - the target frame\r\n * @returns null\r\n */\r\n post: function (url, args, target) {\r\n if (this.form == null)\r\n this.form = scil.Utils.createElement(document.body, \"form\", null, { display: \"none\" });\r\n\r\n scil.Utils.removeAll(this.form);\r\n for (var k in args) {\r\n var f = scil.Utils.createElement(this.form, \"textarea\");\r\n f.name = k;\r\n f.value = args[k];\r\n }\r\n\r\n this.form.target = target;\r\n this.form.method = \"post\";\r\n this.form.action = url;\r\n this.form.submit();\r\n },\r\n\r\n postIframe: function (url, args) {\r\n if (this.postform == null)\r\n this.postform = scil.Utils.createElement(document.body, \"form\", null, { display: \"none\" });\r\n\r\n dojo.io.iframe.send({\r\n url: url,\r\n form: this.form,\r\n method: \"POST\",\r\n content: args,\r\n timeoutSeconds: 5,\r\n preventCache: true,\r\n handleAs: \"text\",\r\n error: function (data) { },\r\n handle: function (data) { }\r\n });\r\n },\r\n\r\n alert: function (s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return;\r\n if (s.length > 1000)\r\n s = s.substr(0, 1000) + \"...\";\r\n if (scil.Utils.nativemode) {\r\n this.alert2(s, \"JSDraw2.Editor Message\");\r\n }\r\n else {\r\n alert(s);\r\n }\r\n },\r\n\r\n /**\r\n * Download data from a url\r\n * @function {static} download\r\n * @param {string} url - the destination url\r\n * @param {function} callback - the callback function\r\n * @returns null\r\n */\r\n download: function (url, callback) {\r\n if (url.indexOf('?') > 0)\r\n url += \"&__tm=\" + new Date().getTime();\r\n else\r\n url += \"?__tm=\" + new Date().getTime();\r\n if (scil.Utils.startswith(url, \"http://\")) {\r\n var jsonpArgs = {\r\n url: url,\r\n callbackParamName: \"callback\",\r\n load: callback,\r\n error: function (error) { alert(error); }\r\n };\r\n dojo.io.script.get(jsonpArgs);\r\n }\r\n else {\r\n var xhrArgs = {\r\n url: url,\r\n handleAs: \"text\",\r\n load: callback,\r\n error: function (error) { /*alert(error);*/ }\r\n };\r\n dojo.xhrGet(xhrArgs);\r\n }\r\n },\r\n\r\n /**\r\n * Perform an Ajax call\r\n *
\r\n    * Example:\r\n    *    var callback = function(ret) {\r\n    *        alert(ret.message);\r\n    *    };\r\n    *    scilligence.ajax(\"/path/ajax.ashx\", callback, { username: \"tom\", password: \"123\" });\r\n    * 
\r\n * @function {static} ajax\r\n * @param {string} url - the destination url\r\n * @param {function(dictionary)} callback - the callback function\r\n * @param {dictionary} params - data to be sent\r\n * @returns null\r\n */\r\n ajax: function (url, callback, params, opts) {\r\n if (opts == null)\r\n opts = {};\r\n\r\n var xhrArgs = {\r\n url: url,\r\n sync: opts.sync,\r\n handleAs: \"text\",\r\n content: scil.Utils.stupidTomcatBug(params),\r\n timeout: opts.timeout,\r\n error: function (data) {\r\n if (opts.showprogress)\r\n scil.Progress.hide();\r\n\r\n if (opts.onError != null)\r\n opts.onError(data);\r\n else\r\n scil.Utils.alert(data.message);\r\n },\r\n load: function (data) {\r\n if (opts.showprogress)\r\n scil.Progress.hide();\r\n\r\n scil.Utils.ajaxCallback(data, callback, opts.onError, opts.ignoresucceedcheck);\r\n if (scil.User != null && scil.User.onAjax != null)\r\n scil.User.onAjax();\r\n }\r\n };\r\n\r\n if (opts.showprogress)\r\n scil.Progress.show((opts.caption == null ? \"Loading ...\" : opts.caption), false, (opts.message == null ? \"Communicating with the server ...\" : opts.message), false);\r\n\r\n if (scil.Utils.onajaxcall != null)\r\n scil.Utils.onajaxcall(xhrArgs, opts);\r\n\r\n if (opts.headers != null)\r\n xhrArgs.headers = opts.headers;\r\n\r\n switch (opts.verb) {\r\n case \"delete\":\r\n case \"del\":\r\n dojo.xhrDelete(xhrArgs);\r\n break;\r\n case \"put\":\r\n dojo.xhrPut(xhrArgs);\r\n break;\r\n case \"get\":\r\n dojo.xhrGet(xhrArgs);\r\n break;\r\n default:\r\n dojo.xhrPost(xhrArgs);\r\n break;\r\n }\r\n },\r\n\r\n stupidTomcatBug: function (params) {\r\n return params;\r\n },\r\n\r\n ajaxwait: function (url, params) {\r\n var ret = null;\r\n var fun = function (r) { ret = r; };\r\n this.ajax(url, fun, params, { sync: true });\r\n return ret;\r\n },\r\n\r\n /**\r\n * Perform an JSONP call\r\n *
\r\n    * Example:\r\n    *    var callback = function(ret) {\r\n    *        alert(ret.message);\r\n    *    };\r\n    *    scilligence.ajax(\"http://otherserver/path/ajax.ashx\", callback, { username: \"tom\", password: \"123\" });\r\n    *\r\n    *    // cross domain call to post large data\r\n    *    var url = \"http://server/jsdraw/service.aspx?cmd=\";\r\n    *    var jsd = JSDraw.get(\"div1\");\r\n    *    scil.Utils.jsonp(url + \"jsdraw2img\", function (ret) {\r\n    *        alert(ret.src);\r\n    *    }, { jsdraw: jsd.getXml() }, { xdomainurl: url + \"xdomain.postdata\" });\r\n    * 
\r\n * @function {static} jsonp\r\n * @param {string} url - the destination url\r\n * @param {function} callback - the callback function\r\n * @param {dictionary} params - data to be sent\r\n * @returns null\r\n */\r\n jsonp: function (url, callback, params, opts) {\r\n if (opts == null)\r\n opts = {};\r\n\r\n if (params == null)\r\n params = { wrapper: \"jsonp\" };\r\n else\r\n params.wrapper = \"jsonp\";\r\n\r\n if (scil.Utils.startswith(url, \"//\")) {\r\n var s = (window.location + \"\").toLowerCase();\r\n if (scil.Utils.startswith(s, \"https:\"))\r\n url = \"https:\" + url;\r\n else\r\n url = \"http:\" + url;\r\n }\r\n\r\n var p = url.indexOf('?');\r\n if (p < 0)\r\n url += \"?\";\r\n else\r\n url += \"&\";\r\n url += \"__jsdraw_timestamp__=\" + new Date().getTime();\r\n\r\n if (opts.showprogress)\r\n scil.Progress.show((opts.caption == null ? \"Loading ...\" : opts.caption), false, (opts.message == null ? \"Communicating with the server ...\" : opts.message), false);\r\n\r\n if (opts.xdomainurl != null) {\r\n scil.Utils.postXdomainData(opts.xdomainurl, function (xfilename) {\r\n scil.Utils.jsonp(url, function (ret) {\r\n if (opts.showprogress)\r\n scil.Progress.hide();\r\n\r\n if (callback != null)\r\n callback(ret);\r\n }, { _xfilename: xfilename });\r\n }, params);\r\n }\r\n else {\r\n var jsonpArgs = {\r\n url: url,\r\n callbackParamName: \"callback\",\r\n content: scil.Utils.stupidTomcatBug(params),\r\n error: function (data) {\r\n if (opts.showprogress)\r\n scil.Progress.hide();\r\n\r\n if (opts.onError != null)\r\n opts.onError(data);\r\n else\r\n scil.Utils.alert(data.message);\r\n },\r\n load: function (data) {\r\n if (opts.showprogress)\r\n scil.Progress.hide();\r\n\r\n scil.Utils.ajaxCallback(data, callback, opts.onError, opts.ignoresucceedcheck);\r\n }\r\n };\r\n\r\n if (scil.Utils.onjsonpcall != null)\r\n scil.Utils.onjsonpcall(jsonpArgs);\r\n\r\n dojo.io.script.get(jsonpArgs);\r\n }\r\n },\r\n\r\n getZindex: function (e) {\r\n while (e != null) {\r\n if (e.style != null && e.style.zIndex != \"\" && e.style.zIndex != null)\r\n return parseInt(e.style.zIndex);\r\n e = e.parentNode;\r\n }\r\n return 1;\r\n },\r\n\r\n onAjaxCallback: null,\r\n ajaxCallback: function (data, callback, onError, ignoresucceedcheck) {\r\n var ret = null;\r\n switch (typeof (data)) {\r\n case \"string\":\r\n try {\r\n eval(\"var o=\" + data);\r\n ret = o;\r\n }\r\n catch (e) {\r\n scil.Utils.alert(\"Error when parsing Ajax results:\\n\" + e.message + \"\\n\" + data);\r\n return;\r\n }\r\n break;\r\n case \"object\":\r\n ret = data;\r\n break;\r\n default:\r\n scil.Utils.alert(\"Unknown return format\");\r\n break;\r\n }\r\n\r\n if (scil.Utils.onAjaxCallback != null) {\r\n if (scil.Utils.onAjaxCallback(ret))\r\n return;\r\n }\r\n\r\n if (ignoresucceedcheck == true) {\r\n if (callback != null)\r\n callback(ret);\r\n }\r\n else if (ret.succeed) {\r\n if (callback != null)\r\n callback(ret.ret);\r\n }\r\n else {\r\n if (scil.User != null && scil.User.needLogin != null && scil.User.needLogin(ret))\r\n return;\r\n\r\n if (onError != null) {\r\n onError(ret);\r\n }\r\n else {\r\n if (ret.errcode == \"None\")\r\n scil.Utils.alert(ret.error);\r\n else\r\n scil.Utils.alert(\"[\" + (ret.errcode == null ? \"ERROR\" : ret.errcode) + \"]: \" + ret.error);\r\n }\r\n }\r\n },\r\n\r\n ajaxUploadFile: function (form, url, params, callback) {\r\n if (params == null)\r\n params = {};\r\n if (url.toLowerCase().indexOf(\"wrapper=textarea\") < 0) {\r\n var p = url.indexOf('?');\r\n if (p > 0)\r\n url += \"&wrapper=textarea\";\r\n else\r\n url += \"?wrapper=textarea\";\r\n }\r\n\r\n // I#12036\r\n if (scil.Utils.___ajaxUploadFile == null) {\r\n dojo.config.dojoBlankHtmlUrl = scil.Utils.imgSrc(\"blank.html\");\r\n dojo.io.iframe.send({\r\n url: dojo.config.dojoBlankHtmlUrl,\r\n form: form,\r\n method: \"get\",\r\n content: params,\r\n timeoutSeconds: 60,\r\n preventCache: true,\r\n handleAs: \"text\"\r\n });\r\n scil.Utils.___ajaxUploadFile == true;\r\n }\r\n\r\n dojo.io.iframe.send({\r\n url: url,\r\n form: form,\r\n method: \"post\",\r\n content: params,\r\n timeoutSeconds: 60,\r\n preventCache: true,\r\n handleAs: \"text\",\r\n error: function (data) {\r\n scil.Progress.hide();\r\n scil.Utils.alert(data.message);\r\n },\r\n handle: function (data) {\r\n scil.Progress.hide();\r\n scil.Utils.ajaxCallback(data, callback);\r\n }\r\n });\r\n\r\n scil.Progress.show(\"Uploading\", false, \"Communicating with the server ...\", false);\r\n },\r\n\r\n ajaxPostFile: function (form, url, params, callback) {\r\n if (params == null)\r\n params = {};\r\n if (url.toLowerCase().indexOf(\"wrapper=textarea\") < 0) {\r\n var p = url.indexOf('?');\r\n if (p > 0)\r\n url += \"&wrapper=textarea\";\r\n else\r\n url += \"?wrapper=textarea\";\r\n }\r\n dojo.io.iframe.send({\r\n url: url,\r\n form: form,\r\n method: \"post\",\r\n content: params,\r\n timeoutSeconds: 5,\r\n preventCache: true,\r\n handleAs: \"text\",\r\n //error: function (data) { scil.Utils.alert(data.message); },\r\n handle: function (data) { if (callback != null) callback(data); }\r\n });\r\n },\r\n\r\n res: function (s) {\r\n return JSDraw2.Language.res(s);\r\n },\r\n\r\n UploadFileDlg: scilligence.extend(scilligence._base, {\r\n callback: null,\r\n url: null,\r\n params: null,\r\n msg: null,\r\n checkfiles: null,\r\n dlg: null,\r\n btn: null,\r\n tbody: null,\r\n files: [],\r\n\r\n constructor: function (multiple) {\r\n var div = JsUtils.createElement(null, \"div\", \"
\");\r\n this.form = div.firstChild;\r\n this.tbody = JsUtils.createTable(this.form, null, null, { margin: \"6px\", width: \"350px\" }, { align: \"center\" });\r\n var tr = JsUtils.createElement(this.tbody, \"tr\");\r\n this.msg = JsUtils.createElement(tr, \"td\");\r\n this.msg.colSpan = 2;\r\n\r\n if (multiple != null && multiple == true)\r\n multiple = 5;\r\n\r\n var n = 1;\r\n if (multiple && scil.Utils.isIE && scil.Utils.isIE < 10)\r\n var n = multiple > 1 ? multiple : 5;\r\n\r\n var args = { size: 26, name: \"file\" };\r\n if (multiple && n == 1)\r\n args.multiple = \"multiple\";\r\n\r\n for (var i = 0; i < n; ++i) {\r\n tr = JsUtils.createElement(this.tbody, \"tr\");\r\n JsUtils.createElement(tr, \"td\", scil.Utils.res(\"File\") + \":\");\r\n this.files[i] = JsUtils.createElement(JsUtils.createElement(tr, \"td\"), \"file\", null, null, args);\r\n }\r\n\r\n if (scil.MobileData != null) {\r\n var me = this;\r\n tr = JsUtils.createElement(this.tbody, \"tr\");\r\n JsUtils.createElement(tr, \"td\", \"
\" + scil.Utils.res(\"From Mobile\") + \":
\", null, { valign: \"top\" });\r\n var td2 = JsUtils.createElement(tr, \"td\");\r\n this.mobileimages = JsUtils.createElement(td2, \"hidden\", null, null, { name: \"mobileimages\" });\r\n scil.Utils.createButton(td2, { label: \"Show\", type: \"a\", onclick: function () { me.showImageList(); } });\r\n this.imagelistdiv = JsUtils.createElement(td2, \"div\", null, { display: \"none\" });\r\n this.imagelist = scil.MobileData.createImageList(this.imagelistdiv, multiple);\r\n }\r\n\r\n tr = JsUtils.createElement(this.tbody, \"tr\", null, { display: \"none\" });\r\n JsUtils.createElement(tr, \"td\", \"Password:\");\r\n JsUtils.createElement(JsUtils.createElement(tr, \"td\"), \"password\", null, null, { name: \"jsdraw.upload.password\" });\r\n this.passwordRow = tr;\r\n\r\n JsUtils.createElement(JsUtils.createElement(this.tbody, \"tr\"), \"td\", \" \");\r\n\r\n tr = JsUtils.createElement(this.tbody, \"tr\");\r\n JsUtils.createElement(tr, \"td\");\r\n this.btn = JsUtils.createElement(scil.Utils.createElement(tr, \"td\"), \"button\", \"\" + scil.Utils.res(\"Upload\"));\r\n\r\n this.dlg = new JSDraw2.Dialog(\"Upload File\", div);\r\n },\r\n\r\n showImageList: function () {\r\n if (this.imagelistdiv.style.display == \"none\") {\r\n this.imagelistdiv.style.display = \"\";\r\n scil.MobileData.listImages(this.imagelist, this.params);\r\n }\r\n else {\r\n this.imagelistdiv.style.display = \"none\";\r\n }\r\n },\r\n\r\n show: function (caption, message, url, callback, params, showpassword, postonly, checkfiles) {\r\n this.dlg.show(caption);\r\n this.postonly = postonly;\r\n this.checkfiles = checkfiles;\r\n if (this.imagelistdiv != null) {\r\n this.imagelistdiv.style.display = \"none\";\r\n this.imagelist.clear();\r\n }\r\n\r\n var me = this;\r\n if (this.btn != null) {\r\n dojo.connect(this.btn, \"onclick\", function (e) { me.show2(); e.preventDefault(); });\r\n this.btn = null;\r\n }\r\n\r\n this.callback = function (ret) {\r\n if (callback != null)\r\n callback(ret);\r\n me.dlg.hide();\r\n };\r\n this.url = url;\r\n this.params = params;\r\n this.form.reset();\r\n this.passwordRow.style.display = showpassword ? \"\" : \"none\";\r\n this.msg.innerHTML = message;\r\n },\r\n\r\n show2: function () {\r\n if (this.mobileimages != null)\r\n this.mobileimages.value = scil.MobileData.getSelectedImages(this.imagelist);\r\n\r\n if (this.postonly) {\r\n var filename = this.files[0].value;\r\n var p = filename.lastIndexOf('\\\\');\r\n if (p > 0)\r\n filename = filename.substr(p + 1);\r\n var id = new Date().getTime();\r\n var args = this.params == null ? {} : scil.clone(this.params);\r\n args._xfilename = id + \"_\" + filename;\r\n\r\n var me = this;\r\n scil.Utils.ajaxPostFile(this.form, this.url, args, function () { me.callback(args._xfilename); });\r\n }\r\n else {\r\n var me = this;\r\n if (this.checkfiles) {\r\n var list = [];\r\n var files = this.files[0].files;\r\n for (var i = 0; i < files.length; ++i)\r\n list.push(files[i].name);\r\n this.checkfiles(list, function (overwrite) {\r\n var args = scil.clone(me.params);\r\n args.overwrite = overwrite;\r\n scil.Utils.ajaxUploadFile(me.form, me.url, args, me.callback);\r\n });\r\n }\r\n else {\r\n scil.Utils.ajaxUploadFile(me.form, me.url, me.params, me.callback);\r\n }\r\n }\r\n }\r\n }),\r\n\r\n postXdomainData: function (url, callback, data) {\r\n var id = new Date().getTime();\r\n var args = scil.clone(data);\r\n if (args == null)\r\n args = {};\r\n args._xfilename = id;\r\n\r\n if (this.xdomainform == null)\r\n this.xdomainform = scil.Utils.createElement(document.body, \"form\", null, { display: \"none\" });\r\n scil.Utils.ajaxPostFile(this.xdomainform, url, args, function () { if (callback != null) callback(args._xfilename); });\r\n },\r\n\r\n /**\r\n * Upload a file with Ajax\r\n *
\r\n    * Example:\r\n    *    var callback = function(ret) { alert(ret.message); };\r\n    *    scil.Utils.uploadFile(\"Uploade File\", \"Please upload attachments\", \"/uploade.aspx\", callback, { project: \"HIV\" });\r\n    * 
\r\n * @function {static} uploadFile\r\n * @param {string} caption - the caption of uploading dialog\r\n * @param {string} message - the message body of uploading dialog\r\n * @param {string} url - the destination url\r\n * @param {function} callback - the callback function\r\n * @param {dictionary} params - data to be sent\r\n * @param {bool} chk - reserved\r\n * @param {bool} multiple - data to be sent\r\n * @param {string} showpassword\r\n * @param {bool} postonly\r\n * @returns null\r\n */\r\n uploadfileDlg: null,\r\n uploadfileDlg2: null,\r\n uploadFile: function (caption, message, url, callback, params, chk, multiple, showpassword, postonly, checkfiles) {\r\n if (multiple) {\r\n if (this.uploadfileDlg2 == null)\r\n this.uploadfileDlg2 = new scil.Utils.UploadFileDlg(true);\r\n this.uploadfileDlg2.show(caption, message, url, callback, params, showpassword, postonly, checkfiles);\r\n this.uploadfileDlg2.check = chk;\r\n }\r\n else {\r\n if (this.uploadfileDlg == null)\r\n this.uploadfileDlg = new scil.Utils.UploadFileDlg();\r\n this.uploadfileDlg.show(caption, message, url, callback, params, showpassword, postonly, checkfiles);\r\n this.uploadfileDlg.check = chk;\r\n }\r\n },\r\n\r\n uploadFile2: function () {\r\n var dlg = this.uploadfileDlg;\r\n var params = dlg.params;\r\n scil.Utils.ajaxUploadFile(this.uploadfileDlg.form, dlg.url, params == null ? {} : params, dlg.callback);\r\n },\r\n\r\n ie2touches: function (e) {\r\n var list = e.getPointerList();\r\n var touches = [];\r\n for (var i = 0; i < list.length; ++i)\r\n touches.push({ pointerId: list[i].pointerId, clientX: list[i].clientX, clientY: list[i].clientY, target: e.target, button: e.button });\r\n touches.sort(function (a, b) { return a.pointerId - b.pointerId; });\r\n e.touches = touches;\r\n return e;\r\n },\r\n\r\n getScreenSize: function (win) {\r\n if (win == null)\r\n win = window;\r\n var scrollRoot = win.document.documentElement || win.document.body;\r\n var uiWindow = win.document.parentWindow || win.document.defaultView;\r\n return {\r\n w: uiWindow.innerWidth || scrollRoot.clientWidth,\r\n h: uiWindow.innerHeight || scrollRoot.clientHeight\r\n };\r\n },\r\n\r\n /**\r\n * Convert a JSON object into a string\r\n * @function {static} uploadFile\r\n * @param {dictionary} v - the input jsop object\r\n * @returns a string\r\n */\r\n json2str: function (v, readable, restrict) {\r\n var quot = restrict ? \"\\\"\" : \"'\";\r\n\r\n if (v == null)\r\n return \"null\";\r\n if (typeof (v) == \"number\")\r\n return v;\r\n if (typeof (v) == \"boolean\")\r\n return v ? \"true\" : \"false\";\r\n if (typeof (v) == \"string\") {\r\n var s = v.replace(/\\r/g, \"\\\\r\").replace(/\\n/g, \"\\\\n\");\r\n if (quot == \"\\\"\")\r\n s = s.replace(/\\\"/g, \"\\\\\\\"\");\r\n else\r\n s = s.replace(/\\'/g, \"\\\\'\");\r\n return quot + s + quot;\r\n }\r\n if (typeof (v) == \"object\") {\r\n if (v.length != null) { // array\r\n var s = (readable ? \"[ \" : \"[\");\r\n for (var i = 0; i < v.length; ++i)\r\n s += (i > 0 ? (readable ? \", \" : \",\") : \"\") + this.json2str(v[i], readable, restrict);\r\n s += (readable ? \" ]\" : \"]\");\r\n return s;\r\n }\r\n else {\r\n var s = (readable ? \"{ \" : \"{\");\r\n var j = 0;\r\n for (var k in v) {\r\n if (k == null || k == '' || v[k] == null || k.substr(0, 1) == '_')\r\n continue;\r\n\r\n if (++j > 1) {\r\n if (s.substr(s.length - 1, 1) == \"}\")\r\n s += (readable ? \",\\r\\n\" : \",\");\r\n else\r\n s += (readable ? \", \" : \",\");\r\n }\r\n\r\n if (!restrict && /^[a-z|_]+[0-9|a-z|_]{0,1000}$/.test(k))\r\n s += k;\r\n else\r\n s += quot + k + quot;\r\n s += (readable ? \": \" : \":\") + this.json2str(v[k], readable, restrict);\r\n }\r\n s += (readable ? \" }\" : \"}\");\r\n return s;\r\n }\r\n }\r\n return \"null\";\r\n },\r\n\r\n getMaxZindex: function () {\r\n var z1 = this.getMaxZindex2(\"div\");\r\n var z2 = this.getMaxZindex2(\"iframe\");\r\n var z3 = this.getMaxZindex2(\"table\");\r\n return Math.max(Math.max(z1, z2), z3);\r\n },\r\n\r\n getMaxZindex2: function (tag) {\r\n // I#11869\r\n var zindex = document.body.className == \"mce-fullscreen\" ? 101 : 1;\r\n var list = document.getElementsByTagName(tag);\r\n for (var i = 0; i < list.length; ++i) {\r\n if (list[i].style == null || list[i].style.display == \"none\")\r\n continue;\r\n var z = list[i].style.zIndex;\r\n if (z != null && z != \"\") {\r\n var k = parseInt(z);\r\n if (k > zindex)\r\n zindex = k;\r\n }\r\n }\r\n return zindex;\r\n },\r\n\r\n isAllParentVisible: function (e) {\r\n if (e == null)\r\n return false;\r\n\r\n while (e != null && e.style != null) {\r\n if (e.style.display == \"none\")\r\n return false;\r\n e = e.parentNode;\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * Convert an XML object into JSON object\r\n * @function {static} xml2Json\r\n * @param {XMLElement} parent - the parent XML element\r\n * @param {string} tag - the xml tag name to be looked up\r\n * @returns an array of object\r\n */\r\n xml2Json: function (parent, tag) {\r\n if (parent == null)\r\n return null;\r\n var list = parent.getElementsByTagName(tag);\r\n if (list == null || list.length == 0)\r\n return null;\r\n\r\n var ret = [];\r\n for (var i = 0; i < list.length; ++i) {\r\n var e = list[i];\r\n var item = { _e: e };\r\n for (var k = 0; k < e.attributes.length; ++k) {\r\n var at = e.attributes[k];\r\n item[at.name] = at.value;\r\n }\r\n ret.push(item);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n /**\r\n * Convert a JSON oject array into an xml string\r\n * @function {static} jsonList2Xml\r\n * @param {array} list - the input array of objects\r\n * @param {string} tag - the xml tag name to be wrapped in xml\r\n * @returns a string\r\n */\r\n jsonList2Xml: function (list, tag) {\r\n if (list == null)\r\n return \"\";\r\n\r\n var s = \"\";\r\n for (var i = 0; i < list.length; ++i)\r\n s += this.json2Xml(list[i], tag);\r\n return s;\r\n },\r\n\r\n /**\r\n * Convert a JSON oject into an xml string\r\n * @function {static} json2Xml\r\n * @param {dictionary} dict - the input object\r\n * @param {string} tag - the xml tag name to be wrapped in xml\r\n * @param {string} innerXml - the inner xml to be placed in the xml element\r\n * @returns a string\r\n */\r\n json2Xml: function (dict, tag, innerXml) {\r\n if (dict == null)\r\n return \"\";\r\n\r\n var s = \"<\" + tag;\r\n for (var k in dict) {\r\n var v = dict[k];\r\n if (v == null || typeof (v) == \"string\" && v == \"\")\r\n continue;\r\n var type = typeof (v);\r\n if (type != \"object\" && type != \"function\")\r\n s += \" \" + k + \"=\\\"\" + scil.Utils.escXmlValue(dict[k]) + \"\\\"\";\r\n }\r\n if (innerXml != null && innerXml != \"\")\r\n s += \">\" + innerXml + \"\";\r\n else\r\n s += \"/>\";\r\n return s;\r\n },\r\n\r\n /**\r\n * Merge two arrays\r\n * @function {static} joinArray\r\n * @param {array} list1 - the first array\r\n * @param {array} list2 - the second array\r\n * @returns a new array\r\n */\r\n joinArray: function (list1, list2) {\r\n if (list1 == null && list2 == null)\r\n return null;\r\n else if (list1 == null)\r\n return list2;\r\n else if (list2 == null)\r\n return list1;\r\n\r\n var ret = [];\r\n if (typeof list1 == \"string\" || list1.length == null) {\r\n ret.push(list1);\r\n }\r\n else {\r\n for (var i = 0; i < list1.length; ++i)\r\n ret.push(list1[i]);\r\n }\r\n if (typeof list2 == \"string\" || list2.length == null) {\r\n ret.push(list2);\r\n }\r\n else {\r\n for (var i = 0; i < list2.length; ++i)\r\n ret.push(list2[i]);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n /**\r\n * Get inner xml of an xml element\r\n * @function {static} getInnerXml\r\n * @param {XmlElement} element\r\n * @returns a string\r\n */\r\n getInnerXml: function (e) {\r\n if (e == null)\r\n return;\r\n\r\n if (e.documentElement != null)\r\n e = e.documentElement;\r\n\r\n if (e.innerXML)\r\n return e.innerXML;\r\n\r\n if (e.xml)\r\n return e.xml;\r\n\r\n if (typeof XMLSerializer != \"undefined\") {\r\n var s = \"\";\r\n for (var i = 0; i < e.childNodes.length; ++i)\r\n s += (new XMLSerializer()).serializeToString(e.childNodes[i]);\r\n return s;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n getInnerText: function (e) {\r\n if (e == null)\r\n return;\r\n\r\n if (e != null && e.documentElement != null)\r\n e = e.documentElement;\r\n return scil.Utils.trim(e.innerText || e.textContent || e.text);\r\n },\r\n\r\n getChildXmlElements: function (e, tag) {\r\n if (e != null && e.documentElement != null)\r\n e = e.documentElement;\r\n if (e == null)\r\n return null;\r\n\r\n var ret = [];\r\n for (var i = 0; i < e.childNodes.length; ++i) {\r\n if (e.childNodes[i].tagName == tag)\r\n ret.push(e.childNodes[i]);\r\n }\r\n return ret;\r\n },\r\n\r\n num2letter: function (i, lowercase) {\r\n var s = \"\";\r\n while (i > 0) {\r\n var c = (i - 1) % 26;\r\n s = String.fromCharCode(c + (lowercase ? 97 : 65)) + s;\r\n i = (i - c - 1) / 26;\r\n }\r\n return s;\r\n },\r\n\r\n isImg: function (ext) {\r\n return ext == \"gif\" || ext == \"png\" || ext == \"jpg\" || ext == \"jpeg\" || ext == \"tif\" || ext == \"tiff\" || ext == \"bmp\";\r\n },\r\n\r\n isOfficeFile: function (ext) {\r\n return ext == \"doc\" || ext == \"docx\" || ext == \"rtf\" || ext == \"ppt\" || ext == \"pptx\" || ext == \"xls\" || ext == \"xlsx\";\r\n },\r\n\r\n isPDF: function (ext) {\r\n return ext == \"pdf\";\r\n },\r\n\r\n isSpectraFile: function (ext) {\r\n return ext == \"jdx\";\r\n },\r\n\r\n isChemFile: function (ext) {\r\n return ext == \"cdx\" || ext == \"cdxml\" || ext == \"jsd\" || ext == \"jsdraw\" || ext == \"mol\" || ext == \"sdf\" || ext == \"mol2\" || ext == \"cml\" ||\r\n ext == \"skc\" || ext == \"tgf\" || ext == \"mrv\" || ext == \"rxn\" || ext == \"rdf\" || ext == \"helm\" || ext == \"xhelm\";\r\n },\r\n\r\n getFileExt: function (filename) {\r\n if (filename == null)\r\n return null;\r\n var p = filename == null ? -1 : filename.lastIndexOf('.');\r\n if (p <= 0)\r\n return null;\r\n return filename.substr(p + 1);\r\n },\r\n\r\n isChildOf: function (e, parent) {\r\n if (parent == null || e == null)\r\n return false;\r\n\r\n while (e != null) {\r\n if (e.parentNode == parent)\r\n return true;\r\n e = e.parentNode;\r\n }\r\n return false;\r\n },\r\n\r\n getElements: function (parent, name, ignorecase) {\r\n var ret = [];\r\n if (parent != null && parent.childNodes != null) {\r\n for (var i = 0; i < parent.childNodes.length; ++i) {\r\n var a = parent.childNodes[i];\r\n if (a.tagName == name || ignorecase && a.tagName != null && name != null && a.tagName.toLowerCase() == name.toLowerCase())\r\n ret.push(a);\r\n }\r\n }\r\n return ret;\r\n },\r\n\r\n getFirstElement: function (parent, name) {\r\n var ret = [];\r\n if (parent != null && parent.childNodes != null) {\r\n for (var i = 0; i < parent.childNodes.length; ++i) {\r\n var a = parent.childNodes[i];\r\n if (name == null && a.tagName != null || name != null && a.tagName == name)\r\n return a;\r\n }\r\n }\r\n return null;\r\n },\r\n\r\n parseIndex: function (s) {\r\n if (s == null)\r\n return null;\r\n var s2 = s.replace(/[0-9]+$/, \"\");\r\n if (s2 == s)\r\n return { prefix: s2, index: null };\r\n return { prefix: s2, index: parseInt(s.substr(s2.length)) };\r\n },\r\n\r\n removeArrayItem: function (list, item) {\r\n var p = scil.Utils.indexOf(list, item);\r\n if (p < 0)\r\n return false;\r\n list.splice(p, 1);\r\n return true;\r\n },\r\n\r\n removeArrayItems: function (list, items) {\r\n var n = 0;\r\n for (var i = 0; i < items.length; ++i)\r\n if (this.removeArrayItem(list, items[i]))\r\n ++n;\r\n return n;\r\n },\r\n\r\n moveToScreen: function (x, y, e, left) {\r\n var d = dojo.window.getBox();\r\n if (x + e.offsetWidth > d.l + d.w) {\r\n if (left != null)\r\n x = left - e.offsetWidth;\r\n else\r\n x = d.l + d.w - e.offsetWidth;\r\n }\r\n if (x < 0)\r\n x = 0;\r\n\r\n if (y + e.offsetHeight > d.t + d.h)\r\n y = d.t + d.h - e.offsetHeight;\r\n if (y < 0)\r\n y = 0;\r\n\r\n e.style.left = x + \"px\";\r\n e.style.top = y + \"px\";\r\n },\r\n\r\n unselectable: function (e) {\r\n e.onselectstart = function () { return false; };\r\n e.setAttribute(\"unselectable\", \"on\");\r\n dojo.style(e, {\r\n webkitTouchCallout: \"none\",\r\n webkiUserDelect: \"none\",\r\n khtmlUserSelect: \"none\",\r\n MozUserSelect: \"none\",\r\n msUserSelect: \"none\",\r\n userSelect: \"none\"\r\n });\r\n },\r\n\r\n letter2num: function (s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return 0;\r\n\r\n var ret = 0;\r\n s = s.toUpperCase();\r\n for (var i = 0; i < s.length; ++i) {\r\n var c = s.charCodeAt(i);\r\n if (c >= 65 && c <= 90)\r\n ret = ret * 26 + (c - 65 + 1);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n num2letter: function (i_1based, lowercase) {\r\n var s = \"\";\r\n while (i_1based > 0) {\r\n var c = (i_1based - 1) % 26;\r\n s = String.fromCharCode(c + (lowercase ? 97 : 65)) + s;\r\n i_1based = (i_1based - c - 1) / 26;\r\n }\r\n return s;\r\n },\r\n\r\n connect: function (element, event, fun) {\r\n return dojo.connect(element, event, fun);\r\n },\r\n\r\n array2str: function (list, sep) {\r\n if (list == null || list.length == 0)\r\n return \"\";\r\n\r\n var s = \"\";\r\n if (sep == null)\r\n sep = ',';\r\n for (var i = 0; i < list.length; ++i) {\r\n if (i > 0)\r\n s += sep;\r\n if (list[i] != null)\r\n s += list[i];\r\n }\r\n return s;\r\n },\r\n\r\n isDictEmpty: function (obj) {\r\n if (obj == null)\r\n return true;\r\n for (var k in obj)\r\n return false;\r\n return true;\r\n },\r\n\r\n getDictValues: function (dict, list) {\r\n if (dict == null)\r\n return null;\r\n\r\n if (list == null)\r\n list = [];\r\n else if (list == true)\r\n list = [\"\"];\r\n\r\n for (var k in dict)\r\n list.push(dict[k]);\r\n return list;\r\n },\r\n\r\n getDictKeys: function (dict, list) {\r\n if (dict == null)\r\n return null;\r\n\r\n if (list == null)\r\n list = [];\r\n else if (list == true)\r\n list = [\"\"];\r\n\r\n for (var k in dict)\r\n list.push(k);\r\n return list;\r\n },\r\n\r\n getDictKeyByValue: function (dict, v) {\r\n if (dict == null)\r\n return null;\r\n for (var k in dict) {\r\n if (dict[k] == v)\r\n return k;\r\n }\r\n return null;\r\n },\r\n\r\n setEnv: function (env) {\r\n if (env == null || env == \"\")\r\n return;\r\n document.body.style.backgroundImage = scil.Utils.imgSrc(\"img/\" + env + \".gif\", true);\r\n document.body.style.backgroundRepeat = \"no-repeat\";\r\n },\r\n\r\n sound: function (wav) {\r\n if (this.isIE && this.isIE < 9)\r\n return;\r\n\r\n if (this.__sound == null)\r\n this.__sound = this.createElement(document.body, \"audio\", null, { display: \"none\" });\r\n if (this.__sound.src != wav)\r\n this.__sound.src = wav;\r\n this.__sound.play();\r\n },\r\n\r\n escapeHtml: function (s) {\r\n if (s == null)\r\n return \"\";\r\n\r\n return s.replace(/>/g, \">\").replace(/ 255)\r\n sum += 2;\r\n else\r\n ++sum;\r\n }\r\n return sum;\r\n },\r\n\r\n areListEq: function (x, y) {\r\n if (x == y)\r\n return true;\r\n if (x == null && y != null || x != null && y == null || x.length != y.length)\r\n return false;\r\n for (var i = 0; i < x.length; ++i) {\r\n if (x[i] != y[i])\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n areDictEq: function (main, to) {\r\n if (main == to)\r\n return true;\r\n if (main == null || to == null)\r\n return false;\r\n for (var k in main) {\r\n var x = main[k];\r\n var y = to[k];\r\n if (!(x == y || x == null && y == \"\" || x == \"\" && y == null))\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n splitStr: function (s, separator) {\r\n if (s == null)\r\n return null;\r\n\r\n var ret = [];\r\n var ss = s.split(separator);\r\n for (var i = 0; i < ss.length; ++i)\r\n ret.push(this.trim(ss[i]));\r\n return ret;\r\n },\r\n\r\n isEmptyStr: function (s) {\r\n return this.isNullOrEmpty(s);\r\n },\r\n\r\n regFindAllMatches: function (s, pattern, start) {\r\n var ret = [];\r\n if (s == null)\r\n return ret;\r\n\r\n if (start > 0)\r\n s = s.substr(start);\r\n else\r\n start = 0;\r\n\r\n var m;\r\n var st = 0;\r\n while ((m = pattern.exec(s)) != null) {\r\n var p = m.index;\r\n var w = m + \"\";\r\n ret.push({ start: st + p + start, str: w });\r\n\r\n st += p + w.length;\r\n s = s.substr(p + w.length);\r\n }\r\n\r\n return ret;\r\n },\r\n\r\n isNumber: function (s, allowoperator) {\r\n if (typeof (s) == \"number\")\r\n return true;\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return false;\r\n\r\n var p = s.indexOf('.');\r\n if (p > 0) {\r\n var i = s.indexOf(',');\r\n if (i > 0 && i < p)\r\n s = s.replace(/[,]/g, '');\r\n }\r\n\r\n // I#11086\r\n if (allowoperator)\r\n return new RegExp(\"^[>|<|≥|≤]?[ ]{0,50}[-]?[0-9]+([\\.][0-9]{0,50})?([e|E][-|+][0-9]+)?([ ]{0,50}[±][0-9]{0,50}([\\.][0-9]{0,50})?)?$\").test(s + \"\");\r\n else\r\n return !isNaN(s);\r\n },\r\n\r\n htmlDecode: function (s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return s;\r\n var e = document.createElement('div');\r\n e.innerHTML = s;\r\n return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\r\n },\r\n\r\n html2Text: function (html) {\r\n if (this.isNullOrEmpty(html))\r\n return html;\r\n var e = document.createElement('div');\r\n e.innerHTML = html;\r\n return e.childNodes.length === 0 ? \"\" : this.getInnerText(e);\r\n },\r\n\r\n parseNumber: function (s) {\r\n var n = s == null ? NaN : parseFloat(s);\r\n return isNaN(n) ? null : n;\r\n },\r\n\r\n /**\r\n * Test if it is null or empty string\r\n * @function {static} isNullOrEmpty\r\n * @param {var} s - var to be tested\r\n * @returns bool\r\n */\r\n isNullOrEmpty: function (s) {\r\n return s == null || typeof (s) == \"string\" && s == \"\";\r\n },\r\n\r\n /**\r\n * Test if it is not a number\r\n * @function {static} isNaN\r\n * @param {var} n - var to be tested\r\n * @returns bool\r\n */\r\n isNaN: function (n) {\r\n return n == null || isNaN(n);\r\n },\r\n\r\n /**\r\n * Get outer xml of an XML element\r\n * @function {static} getOuterXml\r\n * @param {XMLElement} e\r\n * @returns a string\r\n */\r\n getOuterXml: function (e) {\r\n if (e == null)\r\n return null;\r\n return e.xml != null ? e.xml : (new XMLSerializer()).serializeToString(e);\r\n },\r\n\r\n /**\r\n * Add css script in a page\r\n * @function {static} addCss\r\n * @param {string} code - css script\r\n */\r\n addCss: function (code) {\r\n var style = document.createElement('style');\r\n style.type = 'text/css';\r\n\r\n if (style.styleSheet) {\r\n // IE\r\n style.styleSheet.cssText = code;\r\n } else {\r\n // Other browsers\r\n style.innerHTML = code;\r\n }\r\n\r\n document.getElementsByTagName(\"head\")[0].appendChild(style);\r\n },\r\n\r\n /**\r\n * Insert all items of a dirctionary in another dictionary\r\n * @function {static} insertAfterDict\r\n * @param {dict} dict - destination\r\n * @param {dict} items - items to be inserted\r\n * @param {string} key - reference item\r\n */\r\n insertAfterDict: function (dict, items, key) {\r\n var found = false;\r\n\r\n var temp = {};\r\n for (var k in dict) {\r\n if (k == key) {\r\n found = true;\r\n }\r\n else if (found) {\r\n temp[k] = dict[k];\r\n delete dict[k];\r\n }\r\n }\r\n\r\n for (var k in items)\r\n dict[k] = items[k];\r\n\r\n for (var k in temp)\r\n dict[k] = temp[k];\r\n },\r\n\r\n /**\r\n * Insert all items of a dirctionary in another dictionary\r\n * @function {static} insertBeforeDict\r\n * @param {dict} dict - destination\r\n * @param {dict} items - items to be inserted\r\n * @param {string} key - reference item\r\n */\r\n insertBeforeDict: function (dict, items, key) {\r\n var found = false;\r\n\r\n var temp = {};\r\n for (var k in dict) {\r\n if (k == key || found) {\r\n found = true;\r\n temp[k] = dict[k];\r\n delete dict[k];\r\n }\r\n }\r\n\r\n for (var k in items)\r\n dict[k] = items[k];\r\n\r\n for (var k in temp)\r\n dict[k] = temp[k];\r\n },\r\n\r\n disableSelection: function (d) {\r\n if (d == null)\r\n return;\r\n\r\n scil.apply(d.style, {\r\n webkitTouchCallout: \"none\", /* iOS Safari */\r\n webkitUserSelect: \"none\", /* Chrome */\r\n mozUserSelect: \"none\", /* Firefox */\r\n msUserSelect: \"none\", /* IE/Edge */\r\n userSelect: \"none\"\r\n });\r\n },\r\n\r\n getLastBarcode: function (callback, category, email, url) {\r\n scil.Utils.jsonp(url != null ? url : \"JSDraw/Service.aspx?cmd=mobile.getlast\", function (ret) {\r\n callback(ret);\r\n }, { category: category, useremail: email });\r\n },\r\n\r\n beep: function (doublebeep) {\r\n if (typeof (Audio) == \"undefined\")\r\n return;\r\n\r\n if (this._beepobj == null)\r\n //this._beepobj = new Audio(\"data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=\");\r\n this._beepobj = new Audio(\"data:audio/wav;base64,UklGRtoEAABXQVZFZm10IBAAAAABAAEAESsAABErAAABAAgAZGF0YbUEAAB9dXFpa3F4fYSLkZiUjoeCe3RuaWtze36GjJOZkYyGgHpybGhvc3uBiI2UmZCKhX93cWxob3Z9g4mQlZaPioN8dm9qanF4f4OLkZeUjoiBe3RvaWxzeICGi5OYlIuFgXlybWltdHuBiI6Ul5CLhn14cmlqcHV8g4mOl5ePiYR8dnBoa3F3foWKkZaVjoiBenVwZ2xyeoCFjZKXlIyGgHpza2lvdHmCh4+Tl5KKhX54cWtpb3Z9gYmPlpePiYN9dnBoa3F4foOLkZeWjYmAfHRvZ25yeX+FjZKXlIyFgXlza2lvc3uAh46Vl5CLhX93cWtqb3V9g4iQlZePioJ9dnFoa3F4foSKkZaUj4eBfHVuaWtzeX+GjJKYk4yGgHl0bWdudXt/iI2VmJCMhX53cWtqb3Z8g4iQlZaPioN8dnFoa3B4foSKkZeVjoiCe3RuaWxzeX+Gi5OXk42Gf3tzbGhtdXuBh4yVl5GMhH54cmtpcHV8g4mOlpaRiYN9dm9raXF4fYSLkJaWjoeCenZuaGxzeICFjJOXk4yHf3pzbWltdHqBiI2Ul5GNhH54cmtpbnd7gomQlZePi4J9dnBqanF3fYOLkJiUj4eBfHVuaWtzeX+FjJKYk4yHgHpzbGltc3uBh42Vl5GLhX92c2ppcXV8gomPlZiOioJ+dnFpaXF5fYOKkZeWjYiDenVuaWtzeIGFjJKXk42GgHl1bWhtdHt/h42Vl5KLhH93c2tob3V9g4iPlZePi4N8d3Bpa3F3foSJkZaWj4eCfHNvaGtyen+FjJGYlIuIgHl0bGhuc3uBh42Ul5KMg4B4cmtocXR8g4mPlZWRioJ9d29ram93foSJkZeUjomCe3VvaG1yd3+Hi5KYlI2GgHpzbmdtdHqBiIyVlpKLhH95cmppb3V8g4iOlpeQiYN+dnFqaXJ2fYSLj5iUj4iCfHRuaWxzeH+FjJGYk42Hf3tzbWhudHqAho6TmZGLhX94c2ppbnZ8gomOlpePi4J+dnBqanB3foOKkJeWjoiBfHRwaGxyeH+Gi5KYk46GgXpzbWdudHqAh46TmJGMhX54cmtpb3V8g4ePlZiPioR9dnFpa3B2foOKkZaVj4iBfHZuaWxyeX6EjZGYlI2GgXlzbmhuc3qBho2Ul5KLhX95cWtpcHV8gYiPlZePi4R8d3FpanB3foOKkJiVjomBe3ZuamtyeICFipOWlI6FgXp1a2psc3uAh46SmJKLhX94c2tocHR9goiOlZeRioN9d3BqaXF3foKLkJWVj4mBfHVvaWtyeH+Gi5KXloyHgHl0bmhuc3qAh42Tl5KMhX55cmtocHZ7goiOlZePioR8eHBqanF2fYSJkJiVj4iCfHZuaGxzeH2Hi5KXlY2FgHtzbWltc3qAh42UlpKMhX94c2tqbnZ6gomOlpaRi4N9d3FpanF2fYSKkJWWjomCe3ZvaWtxeX6Fi5KYk42HgXp0bmhtc3uAhoyUmJKLhYB4c2tocHR9gYiOlpeQioN9d3JqanB3fISJkJeVj4iBfnRwaWpyeX6FjJGXlI6GgHp1bGlucnqBhoyUmJKMhH94c21nb3V8gYmOlZeQi4N+d3FqaXB3fQA=\");\r\n this._beepobj.play();\r\n\r\n if (doublebeep) {\r\n var me = this;\r\n setTimeout(function () { me._beepobj.play(); }, 300);\r\n }\r\n },\r\n\r\n textareaSelect: function (ta, startPos, endPos) {\r\n // do selection\r\n // Chrome / Firefox\r\n if (typeof (ta.selectionStart) != \"undefined\") {\r\n ta.focus();\r\n ta.selectionStart = startPos;\r\n ta.selectionEnd = endPos;\r\n }\r\n\r\n // IE\r\n if (document.selection && document.selection.createRange) {\r\n ta.focus();\r\n ta.select();\r\n var range = document.selection.createRange();\r\n range.collapse(true);\r\n range.moveEnd(\"character\", endPos);\r\n range.moveStart(\"character\", startPos);\r\n range.select();\r\n }\r\n },\r\n\r\n /**\r\n * Fire an event\r\n * @function {static} fireEvent\r\n * @param {DOM} element\r\n * @param {string} eventname\r\n */\r\n fireEvent: function (element, eventname, bubbles, cancelable, args) {\r\n var event; // The custom event that will be created\r\n\r\n if (document.createEvent) {\r\n event = document.createEvent(\"HTMLEvents\");\r\n event.initEvent(eventname, bubbles == null ? true : bubbles, cancelable == null ? true : cancelable);\r\n } else {\r\n event = document.createEventObject();\r\n event.eventType = eventname;\r\n }\r\n\r\n if (args != null)\r\n scil.apply(event, args);\r\n\r\n event.eventName = eventname;\r\n\r\n if (document.createEvent) {\r\n element.dispatchEvent(event);\r\n } else {\r\n element.fireEvent(\"on\" + event.eventType, event);\r\n }\r\n },\r\n\r\n sum: function (list) {\r\n return scil.Math.sum(list);\r\n },\r\n\r\n avg: function (list) {\r\n return scil.Math.avg(list);\r\n },\r\n\r\n stdev: function (list) {\r\n return scil.Math.stdev(list);\r\n }\r\n};\r\n\r\nscil.form = {};\r\nJsUtils = scil.Utils;\r\nscil.Utils.padleft = scil.Utils.padLeft;\r\nscil.Utils.padright = scil.Utils.padRight;\r\n\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {JSDraw2ModuleType, ScilModuleType} from '../src/types';\r\n\r\nimport type {IScilUtils} from '../src/types/scil';\r\nimport type {DojoType, DojoxType} from '../src/types/dojo';\r\nimport type {TabbedForm} from './TabbedForm';\r\nimport type {IDialog} from '../src/types/jsdraw2';\r\n\r\ndeclare const dojo: DojoType;\r\ndeclare const dojox: DojoxType;\r\n\r\ndeclare const scil: ScilModuleType;\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\ndeclare const JsUtils: IScilUtils;\r\ndeclare const CryptoJS: any;\r\n\r\nexport type ItemType = {\r\n dataformat: string;\r\n encrypt: boolean;\r\n required: boolean;\r\n field: FieldType;\r\n caption: string;\r\n td1: HTMLTableCellElement,\r\n td2: HTMLTableCellElement\r\n alternativekey: string;\r\n was: string;\r\n label: string;\r\n type: string;\r\n colspan: number;\r\n unit: string;\r\n};\r\n\r\nexport type FieldType = {\r\n jsd: TabbedForm;\r\n stype: string;\r\n}\r\n\r\nexport type LangType = any;\r\n\r\nexport enum ButtonTypes {\r\n SELECT = 'select'\r\n}\r\n\r\nexport type ButtonType = typeof ButtonTypes[keyof typeof ButtonTypes];\r\n\r\nexport type ButtonDescType = {\r\n title: string;\r\n label: string;\r\n caption: string;\r\n type: ButtonType;\r\n labelstyle: Partial;\r\n style: Partial;\r\n styles: Partial;\r\n onchange: Function;\r\n src: string;\r\n attributes: any;\r\n items: { [p: string]: string };\r\n options: any;\r\n value: any;\r\n sort: boolean;\r\n onenter: Function;\r\n autosuggesturl: string;\r\n onsuggest: Function;\r\n onclick: Function;\r\n b: HTMLElement;\r\n}\r\n\r\nexport type ButtonDesc = '-' | '|' | ButtonDescType;\r\n\r\n/**\r\n * Form class\r\n * @class scilligence.Form\r\n *
\r\n * Supported field types:\r\n *    basic types: hidden, number, text, radio, date, color\r\n *    list types: select, dropdowninput, editableselect, dropdowncheck, multiselect\r\n *    table and text: table, tabtext, richtext, html, plaintext\r\n *    chemistry and biology: jsdraw, jdraw.fm, jsdraw.se, jsdraw.table, plate, sketches, plates\r\n *    file: file, filepath, filelink, filedblink, image\r\n *    form: subform\r\n * Example:\r\n *    <script type=\"text/javascript\">\r\n *        dojo.ready(function () {\r\n *            var parent = scil.Utils.createElement(document.body, \"div\");\r\n *            var columns = {\r\n *                mass: { label: \"Mass\", type: \"number\", width: 200, unit: \"g\" },\r\n *                name: { label: \"Compound Name\", type: \"input\", width: 600, button: { label: \"Test\", onclick: function () { alert(99); } } },\r\n *                vendor: { label: \"Vendor\", type: \"select\", options: [\"Company A\", \"Company B\"], width: 700 }\r\n *            };\r\n *            var form = new scil.Form({ viewonly: false });\r\n *            form.render(parent, columns, { immediately: true });\r\n *        });\r\n *    </script>\r\n * 
\r\n */\r\nexport class FormInt {\r\n private readonly T: string;\r\n private options: any;\r\n private lang: LangType;\r\n private viewonly: boolean;\r\n public tbody: any;\r\n\r\n private items: { [iName: string]: ItemType };\r\n private fields: { [fName: string]: FieldType };\r\n private buttons: any[];\r\n\r\n private dirty: boolean;\r\n private alternativeforms: { [p: string]: any };\r\n public parent: HTMLElement;\r\n private renderoptions: {};\r\n\r\n private currentrow: ItemType;\r\n private currentrowbckcolor: string;\r\n private postform: ChildNode;\r\n private buttonTR: HTMLTableRowElement;\r\n\r\n /**\r\n * @constructor Form\r\n * @param {bool} viewonly - build a viewonly Form\r\n */\r\n constructor(options: any | boolean) {\r\n this.T = 'FORM';\r\n if (typeof (options) == 'boolean')\r\n this.options = {viewonly: options};\r\n else if (options == null)\r\n this.options = {};\r\n else\r\n this.options = options;\r\n\r\n this.lang = this.options.lang == null ? scil.Lang : this.options.lang;\r\n this.viewonly = this.options.viewonly;\r\n this.items = null;\r\n this.tbody = null;\r\n this.fields = null;\r\n this.buttons = null;\r\n }\r\n\r\n destory() {\r\n this.items = null;\r\n scil.Utils.removeAll(this.tbody);\r\n this.tbody = null;\r\n this.fields = null;\r\n this.buttons = null;\r\n }\r\n\r\n /**\r\n * Collect form data in xml format\r\n * @function getXml\r\n * @returns xml string\r\n */\r\n getXml(nowrapper) {\r\n var ret = nowrapper ? '' : '\\n';\r\n for (var id in this.fields) {\r\n var field = this.fields[id];\r\n var v = scil.Form.getFieldData(field, this.items[id]);\r\n if (v != null && v != '') {\r\n ret += '';\r\n if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' || field.stype == 'jsdraw.se' ||\r\n field.stype == 'jsdraw.fm' || field.stype == 'table' || field.stype == 'plate' || field.stype == 'plates')\r\n ret += v;\r\n else\r\n ret += scil.Utils.escXmlValue(v);\r\n ret += '\\n';\r\n }\r\n }\r\n if (!nowrapper)\r\n ret += '';\r\n return ret;\r\n }\r\n\r\n /**\r\n * Set form data\r\n * @function setXml\r\n * @param {xml} data the form data, *id* is the key\r\n */\r\n setXml(xml) {\r\n try {\r\n var data = scil.Form.xml2Json(xml);\r\n this.setData(data);\r\n } catch (e) {\r\n alert('Error raised when setting form data: ' + e.message);\r\n }\r\n }\r\n\r\n /**\r\n * Collect form data\r\n * @function getData\r\n * @returns the form data as a dictionary, with *id* as the key\r\n */\r\n getData(includeNullValues?: boolean) {\r\n var ret = {};\r\n for (var id in this.fields) {\r\n var field = this.fields[id];\r\n if (field != null) {\r\n var v = scil.Form.getFieldData(field, this.items[id]);\r\n if (includeNullValues || !scil.Utils.isNullOrEmpty(v))\r\n ret[id] = v;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n /**\r\n * Set form data\r\n * @function setData\r\n * @param {dictonary} data the form data, *id* is the key\r\n */\r\n setData(data, overwritemode?: boolean) {\r\n this.setDirty(false);\r\n for (var id in this.fields) {\r\n var field = this.fields[id];\r\n if (field == null)\r\n continue;\r\n\r\n var v = null;\r\n if (data != null) {\r\n v = data[id];\r\n var item = this.items[id];\r\n if (v == null && item != null) {\r\n if (item.alternativekey != null)\r\n v = data[item.alternativekey];\r\n if (v == null && item.was != null)\r\n v = data[item.was];\r\n }\r\n }\r\n\r\n if (overwritemode) {\r\n if (v != null)\r\n scil.Form.setFieldData(field, this.items[id], this.viewonly, v, data);\r\n } else {\r\n scil.Form.setFieldData(field, this.items[id], this.viewonly, v, data);\r\n }\r\n }\r\n this.setDirty(false);\r\n }\r\n\r\n /**\r\n * Set a field value\r\n * @function setFieldValue\r\n * @param {string} id - the id of the field\r\n * @param {string} v - value to be set\r\n */\r\n setFieldValue(id, v, data) {\r\n var field = this.fields[id];\r\n scil.Form.setFieldData(this.fields[id], this.items[id], this.viewonly, v, data);\r\n }\r\n\r\n /**\r\n * Clear field values\r\n * @function clear\r\n */\r\n clear() {\r\n this.setData({});\r\n }\r\n\r\n onchange(field, args?: any) {\r\n this.dirty = true;\r\n if (this.options.onchange != null)\r\n this.options.onchange(field, this, args);\r\n }\r\n\r\n setDirty(f) {\r\n this.dirty = f == null || f == true ? true : false;\r\n }\r\n\r\n preventUnsaved(msg) {\r\n var me = this;\r\n scil.connect(window, 'onbeforeunload', function(e) {\r\n if (me.dirty) {\r\n if (msg == null)\r\n msg = 'WARNING: Form data are not saved yet.';\r\n\r\n var s = scil.Lang.res(msg);\r\n if (e != null)\r\n e.returnValue = s;\r\n return s;\r\n }\r\n });\r\n }\r\n\r\n switchForm(key) {\r\n if (this.options.alternativeforms == null)\r\n return false;\r\n\r\n if (this.alternativeforms == null) {\r\n this.alternativeforms = {};\r\n this.alternativeforms[''] = {tbody: this.tbody, fields: this.fields, items: this.items};\r\n }\r\n\r\n\r\n if (this.alternativeforms[key] == null) {\r\n var items = this.options.alternativeforms[key];\r\n if (items != null) {\r\n this.render2(items, this.parent, this.renderoptions);\r\n this.alternativeforms[key] = {tbody: this.tbody, fields: this.fields, items: this.items};\r\n }\r\n }\r\n\r\n var cur = this.alternativeforms[key];\r\n if (cur == null)\r\n cur = this.alternativeforms[''];\r\n\r\n this.tbody = cur.tbody;\r\n this.fields = cur.fields;\r\n this.items = cur.items;\r\n for (var k in this.alternativeforms)\r\n this.alternativeforms[k].tbody.parentNode.style.display = k == key ? '' : 'none';\r\n return true;\r\n }\r\n\r\n selectrow(key: string): void {\r\n this.highlightrow(this.items[key]);\r\n }\r\n\r\n onselectrow(e) {\r\n var src = e.target || e.srcElement;\r\n var td = scil.Utils.getParent(src, 'TD');\r\n\r\n var item = null;\r\n for (var k in this.items) {\r\n if (this.items[k] != null && (this.items[k].td1 == td || this.items[k].td2 == td)) {\r\n item = this.items[k];\r\n break;\r\n }\r\n }\r\n\r\n this.highlightrow(item);\r\n }\r\n\r\n highlightrow(item) {\r\n if (this.currentrow == item)\r\n return;\r\n\r\n if (this.currentrow != null) {\r\n this.currentrow.td1.style.backgroundColor = this.currentrowbckcolor;\r\n if (this.currentrow.td2 != null)\r\n this.currentrow.td2.style.backgroundColor = '';\r\n }\r\n\r\n if (item != null) {\r\n this.currentrowbckcolor = item.td1.style.backgroundColor;\r\n item.td1.style.backgroundColor = JSDraw2.Skin.form.rowselectcolor;\r\n if (item.td2 != null)\r\n item.td2.style.backgroundColor = JSDraw2.Skin.form.rowselectcolor;\r\n }\r\n this.currentrow = item;\r\n\r\n if (this.options.onselectrow != null)\r\n this.options.onselectrow(item);\r\n }\r\n\r\n /**\r\n * Render the form\r\n * @function render\r\n * @param {string or DOM} parent parent element\r\n * @param {dict} items field definition\r\n * @param {immediately: true/false, buttons:[] } options\r\n */\r\n render(parent, items, options?: any) {\r\n this.parent = parent;\r\n this.renderoptions = options;\r\n this.render2(items, this.parent, this.renderoptions);\r\n }\r\n\r\n render2(items, parent, options) {\r\n var align = options == null ? null : options.align;\r\n var buttons = options == null ? null : options.buttons;\r\n var immediately = typeof (options) == 'boolean' ? options : (options == null ? true : options.immediately != false);\r\n\r\n this.tbody = null;\r\n this.fields = {};\r\n this.items = {};\r\n this.buttons = [];\r\n\r\n let item: ItemType;\r\n for (var k in items) {\r\n item = items[k];\r\n if (item == null)\r\n continue;\r\n\r\n this.items[k] = item;\r\n if (item.label == null && item.caption != null)\r\n item.label = item.caption;\r\n if (JSDraw2.Table != null && scil.Utils.indexOf(JSDraw2.Table.kNumberColumns, item.type) >= 0) {\r\n item.type = 'number';\r\n if (item.unit == null)\r\n item.unit = JSDraw2.Table.kDefaultUnits[item.type];\r\n }\r\n }\r\n\r\n if (this.options.usepostform) {\r\n var div = JsUtils.createElement(parent, 'div', '
');\r\n this.postform = div.firstChild;\r\n parent = this.postform;\r\n }\r\n\r\n var cols = this.options.cols;\r\n if (!(cols > 0)) {\r\n if (!(cols > 1))\r\n cols = 1;\r\n for (var id in this.items) {\r\n item = this.items[id];\r\n if (item.colspan > cols)\r\n cols = item.colspan;\r\n }\r\n }\r\n\r\n let tr: HTMLTableRowElement;\r\n var colspan = cols;\r\n this.tbody = scil.Utils.createTable(parent);\r\n var lastitem = null;\r\n for (var id in this.items) {\r\n item = this.items[id];\r\n if (typeof (item) == 'function') {\r\n continue;\r\n } else if (item.type == 'group') {\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n colspan = cols;\r\n } else if (lastitem != null && lastitem.type == 'group' || !(tr != null && cols > 1 && colspan < cols)) {\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n colspan = item.colspan > 0 ? item.colspan : 1;\r\n } else {\r\n colspan += item.colspan > 0 ? item.colspan : 1;\r\n }\r\n\r\n var field = this.newField(item, tr, immediately, (options == null ? null : options.hidelabel), (options == null ? null : options.vertical));\r\n if (field != null)\r\n item.field = this.fields[id] = field;\r\n\r\n if (item.type == 'group' && cols > 1)\r\n item.td1.colSpan = cols * 2;\r\n else if (item.colspan > 1)\r\n item.td2.colSpan = (item.td2.colSpan > 0 ? item.td2.colSpan : 1) + (item.colspan - 1) * 2;\r\n\r\n if (field != null && this.options.onenter != null && field.tagName == 'INPUT')\r\n this.connectKeyEnter(field, this.options.onenter);\r\n }\r\n\r\n if (this.options.onselectrow != null) {\r\n var me = this;\r\n dojo.connect(this.tbody.parentNode, 'onclick', function(e) {\r\n me.onselectrow(e);\r\n });\r\n }\r\n\r\n if (align != null)\r\n this.tbody.parentNode.setAttribute('align', align);\r\n\r\n if (buttons != null) {\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td', ' ');\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n this.buttonTR = tr;\r\n\r\n if (options == null || !options.vertical)\r\n scil.Utils.createElement(tr, 'td');\r\n\r\n var td = scil.Utils.createElement(tr, 'td', null, {whiteSpace: 'nowrap'});\r\n if (options.centerbuttons)\r\n td.style.textAlign = 'center';\r\n if (buttons.length > 0) {\r\n for (var i = 0; i < buttons.length; ++i) {\r\n var b = buttons[i];\r\n if (b == ' ')\r\n scil.Utils.createElement(td, 'span', ' ');\r\n else\r\n this.buttons.push(scil.Utils.createButton(td, b, this.lang));\r\n }\r\n } else {\r\n this.buttons.push(scil.Utils.createButton(td, buttons, this.lang));\r\n }\r\n }\r\n }\r\n\r\n post(url, params, callback) {\r\n if (this.postform == null)\r\n return;\r\n\r\n if (params == null)\r\n params = {};\r\n scil.apply(params, this.getData());\r\n\r\n scil.Utils.ajaxUploadFile(this.postform, url, params, callback);\r\n }\r\n\r\n postForm(url, params, callback) {\r\n if (this.postform == null)\r\n return;\r\n scil.Utils.ajaxUploadFile(this.postform, url, params, callback);\r\n }\r\n\r\n /**\r\n * Check required fields\r\n * @function checkRequiredFields\r\n */\r\n checkRequiredFields() {\r\n var fields = this.fields;\r\n var n = 0;\r\n for (var k in this.items) {\r\n var item = this.items[k];\r\n var field = fields[k];\r\n if (item == null || field == null)\r\n continue;\r\n\r\n item.td1.style.backgroundColor = JSDraw2.Skin.form.labelstyles.backgroundColor;\r\n if (item.type == 'jsdraw.table') {\r\n n += field.jsd.checkRequiredFields(0);\r\n }\r\n\r\n if (!item.required)\r\n continue;\r\n\r\n var s = scil.Form.getFieldData(field);\r\n if (scil.Utils.isNullOrEmpty(s)) {\r\n item.td1.style.backgroundColor = 'red';\r\n ++n;\r\n }\r\n }\r\n return n;\r\n }\r\n\r\n /**\r\n * Reset required fields\r\n * @function resetRequiredFields\r\n */\r\n resetRequiredFields() {\r\n var fields = this.fields;\r\n for (var k in this.items) {\r\n var item = this.items[k];\r\n var field = fields[k];\r\n if (item == null || field == null)\r\n continue;\r\n\r\n item.td1.style.backgroundColor = JSDraw2.Skin.form.labelstyles.backgroundColor;\r\n }\r\n }\r\n\r\n connectKeyEnter(field, onenter) {\r\n dojo.connect(field, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) {\r\n onenter(field);\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n newField(item, tr, immediately, hidelabel, veritcal) {\r\n var me = this;\r\n if (!this.viewonly) {\r\n if (item.type == 'jsdraw' || item.type == 'xdraw') {\r\n if (JSDraw2.defaultoptions != null && JSDraw2.defaultoptions.usexdraw)\r\n item.type = 'xdraw';\r\n //if (item.options == null)\r\n // item.options = {};\r\n\r\n // I#9132\r\n if (item.options != null)\r\n item.options.ondatachange = function() {\r\n me.onchange(field);\r\n };\r\n else\r\n item.ondatachange = function() {\r\n me.onchange(field);\r\n };\r\n } else if (item.type == 'jsdraw.table' || item.type == 'jsdraw.se' || item.type == 'jsdraw.fm' || item.type == 'table' ||\r\n item.type == 'plate' || item.type == 'plates' || item.type == 'tabtext' || item.type == 'richtext' || item.type == 'plaintext') {\r\n //if (item.options == null)\r\n // item.options = {};\r\n\r\n // I#9132\r\n if (item.options != null)\r\n item.options.onchange = function(jss, args) {\r\n me.onchange(field, args);\r\n };\r\n else\r\n item.onchange = function(jss, args) {\r\n me.onchange(field, args);\r\n };\r\n }\r\n }\r\n\r\n var field = this.newField2(item, tr, immediately, hidelabel, veritcal);\r\n if (field == null)\r\n return null;\r\n\r\n if (!this.viewonly) {\r\n if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA')\r\n scil.connect(field, 'onchange', function() {\r\n me.onchange(field);\r\n });\r\n else if (field.tagName == 'SELECT' && !JSDraw2.__touchmolapp) // TouchMol for Word fails here\r\n scil.connect(field, scil.Utils.isIE && scil.Utils.isIE < 9 ? 'onclick' : 'onchange', function() {\r\n me.onchange(field);\r\n });\r\n\r\n if (field.tagName == 'INPUT' && item.mobiledata != null && item.type != 'number')\r\n new scil.MobileData(field, {category: item.mobiledata, url: scil.MobileData.getDefaultUrl(false)});\r\n }\r\n return field;\r\n }\r\n\r\n newField2(item, tr, immediately, hidelabel, veritcal) {\r\n var s = item.label == null ? ' ' : this.lang.res(item.label) + ':';\r\n if (item.type == 'group') {\r\n if (this.tbody.childNodes.length > 0) {\r\n scil.Utils.createElement(scil.Utils.createElement(this.tbody, 'tr'), 'td', ' ', {fontSize: '50%'}, {colSpan: 2});\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n }\r\n tr.style.backgroundImage = scil.Utils.imgSrc('img/header-bg.gif', true);\r\n tr.style.backgroundRepeat = 'repeat-x';\r\n\r\n var d = dojo.clone(JSDraw2.Skin.form.labelstyles);\r\n scil.apply(d, {fontWeight: 'bold', color: '#555', background: ''});\r\n if (item.collapsible != false)\r\n scil.apply(d, {backgroundImage: scil.Utils.imgSrc('img/collapse.gif', true), backgroundPosition: 'right', backgroundRepeat: 'no-repeat'});\r\n var td = scil.Utils.createElement(tr, 'td', s, d, {colSpan: 2});\r\n if (item.collapsible != false)\r\n dojo.connect(td, 'onclick', function(e) {\r\n scil.Form.expand(e);\r\n });\r\n item.group = td;\r\n item.td1 = td;\r\n return null;\r\n } else if (item.type == 'note') {\r\n var td = scil.Utils.createElement(tr, 'td', null, null, {colSpan: 2});\r\n var div = scil.Utils.createElement(td, 'div', this.lang.res(item.label || item.str), item.style);\r\n if (item.color != null)\r\n div.style.color = item.color;\r\n item.td1 = td;\r\n return null;\r\n } else {\r\n if (hidelabel) {\r\n item.td1 = scil.Utils.createElement(tr, 'td');\r\n } else {\r\n if (item.required)\r\n s += '*';\r\n if (scil.Utils.isNullOrEmpty(item.icon)) {\r\n item.td1 = scil.Utils.createElement(tr, 'td', s, JSDraw2.Skin.form.labelstyles);\r\n } else {\r\n item.td1 = scil.Utils.createElement(tr, 'td');\r\n scil.Utils.createElement(item.td1, 'img', null, null, {src: item.icon});\r\n scil.Utils.createElement(item.td1, 'span', s);\r\n }\r\n\r\n if (item.labelstyle != null)\r\n scil.apply(item.td1.style, item.labelstyle);\r\n }\r\n if (veritcal)\r\n tr = scil.Utils.createElement(this.tbody, 'tr');\r\n var td = scil.Utils.createElement(tr, 'td', item.leading, null, {valign: 'top'});\r\n item.td2 = td;\r\n var field = scil.Form.createField(td, item, this.viewonly, item.value, null, immediately, null, this);\r\n if (item.type == 'hidden') {\r\n tr.style.display = 'none';\r\n tr.setAttribute('hidden', '1');\r\n }\r\n return field;\r\n }\r\n }\r\n\r\n getFieldValue(key) {\r\n return scil.Form.getFieldData(this.fields[key]);\r\n }\r\n\r\n focus(key) {\r\n scil.Form.focus(this.fields, key);\r\n }\r\n}\r\n\r\nexport class Form extends FormInt {\r\n static focus(fields, key) {\r\n if (fields == null)\r\n return;\r\n\r\n var field = null;\r\n if (key == null) {\r\n for (var k in fields) {\r\n var f = fields[k];\r\n if (f != null && (f.tagName == 'INPUT' || f.tagName == 'TEXTAREA' || f.tagName == 'SELECT') && !f.disabled && !f.readOnly) {\r\n var tr = scil.Utils.getParent(f, 'TR');\r\n if (tr != null && tr.style.display != 'none' && !f.disabled) {\r\n field = f;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n field = fields[key];\r\n }\r\n\r\n if (field != null && field.style.dislay != 'none' && field.focus != null) {\r\n try {\r\n field.focus();\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n\r\n static mergeForm(src1, src2) {\r\n if (src1 == null && src2 == null)\r\n return null;\r\n\r\n var ret = {};\r\n if (src1 == null) {\r\n for (var k in src2) {\r\n if (src2[k] != null)\r\n ret[k] = src2[k];\r\n }\r\n return ret;\r\n }\r\n\r\n if (src2 == null) {\r\n for (var k in src1) {\r\n if (src1[k] != null)\r\n ret[k] = src1[k];\r\n }\r\n return ret;\r\n }\r\n\r\n for (var k in src1) {\r\n if (src2[k] == null && src1[k] != null)\r\n ret[k] = src1[k];\r\n }\r\n\r\n for (var k in src2) {\r\n if (src2[k] != null)\r\n ret[k] = src2[k];\r\n else\r\n delete ret[k];\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n static createElement(parent, tag, html, styles, attributes, onclick) {\r\n if (attributes != null && attributes.title != null)\r\n attributes.title = scil.Lang.res(attributes.title);\r\n return scil.Utils.createElement(parent, tag, html, styles, attributes, onclick);\r\n }\r\n\r\n static expand(e) {\r\n var td = e.target || e.srcElement;\r\n if (td.tagName != 'TD')\r\n return;\r\n var s = td.style.backgroundImage;\r\n var expand = s.indexOf('expand.gif') > 0;\r\n if (expand)\r\n td.style.backgroundImage = scil.Utils.imgSrc('img/collapse.gif', true);\r\n else\r\n td.style.backgroundImage = scil.Utils.imgSrc('img/expand.gif', true);\r\n\r\n var tr = td.parentNode.nextSibling;\r\n while (tr != null && tr.childNodes.length != 1 && tr.getAttribute('buttonrow') != '1') {\r\n if (tr.getAttribute('hidden') != '1')\r\n tr.style.display = expand ? '' : 'none';\r\n tr = tr.nextSibling;\r\n }\r\n }\r\n\r\n static _isAllString(s) {\r\n if (s == null || typeof (s) != 'object')\r\n return false;\r\n\r\n if (s.length > 0)\r\n return true;\r\n\r\n var n = 0;\r\n for (var k in s) {\r\n if (typeof (s[k]) != 'string')\r\n return false;\r\n ++n;\r\n }\r\n return n > 0;\r\n }\r\n\r\n static _getListItems(item) {\r\n if (typeof (item.items) == 'function')\r\n item.items = item.items();\r\n var list = item.items;\r\n if (list == null && item.options != null && item.options.items != null) {\r\n list = item.options.items;\r\n item.items = list;\r\n item.options.items = null;\r\n }\r\n if (list == null && this._isAllString(item.options)) {\r\n list = item.options;\r\n item.items = list;\r\n item.options = null;\r\n }\r\n return list;\r\n }\r\n\r\n static createField(parent, item, viewonly, value, values, immediately, fortable, form) {\r\n var tag = 'input';\r\n var itemtype = item.type;\r\n if (parent != null && (itemtype == 'input' || itemtype == 'select' || itemtype == 'date' || itemtype == 'color' || itemtype == 'radio' || itemtype == 'checkbox' || itemtype == null))\r\n parent.style.whiteSpace = 'nowrap';\r\n\r\n if (/*fortable && */viewonly && (itemtype == null || itemtype == 'input' || itemtype == 'select' || itemtype == 'editableselect' ||\r\n itemtype == 'htmltext' || itemtype == 'multiselect' || itemtype == 'dropdowninput' || itemtype == 'dropdowncheck' || itemtype == 'date') &&\r\n item.template == null && (fortable || item.unit == null))\r\n itemtype = 'html';\r\n\r\n switch (itemtype) {\r\n case '':\r\n case 'hidden':\r\n case 'date':\r\n case 'color':\r\n case 'editableselect':\r\n case 'dropdowninput':\r\n case 'dropdowncheck':\r\n case 'multiselect':\r\n tag = 'input';\r\n break;\r\n case 'password':\r\n tag = 'password';\r\n break;\r\n case 'rawfile':\r\n tag = 'file';\r\n break;\r\n case 'number':\r\n tag = 'input';\r\n break;\r\n case 'htmltext':\r\n tag = 'texarea';\r\n break;\r\n case 'jsdraw':\r\n case 'xdraw':\r\n case 'jsdraw.fm':\r\n case 'jsdraw.se':\r\n case 'jsdraw.table':\r\n case 'plate':\r\n case 'plates':\r\n case 'table':\r\n case 'tabtext':\r\n case 'richtext':\r\n case 'plaintext':\r\n case 'html':\r\n case 'fileshelf':\r\n case 'file':\r\n case 'filepath':\r\n case 'filelink':\r\n case 'filedblink':\r\n case 'subform':\r\n case 'image':\r\n case 'curve':\r\n case 'sketches':\r\n case 'code':\r\n case 'signature':\r\n tag = 'div';\r\n break;\r\n case 'button':\r\n tag = 'button';\r\n break;\r\n case 'postfile':\r\n tag = 'file';\r\n break;\r\n case 'user':\r\n tag = 'input';\r\n if (item.autosuggesturl == null)\r\n item.autosuggesturl = 'Ajax.ashx?cmd=user.suggest';\r\n break;\r\n default:\r\n if (itemtype != null)\r\n tag = itemtype;\r\n break;\r\n }\r\n\r\n if (item.viewonly)\r\n viewonly = item.viewonly;\r\n\r\n //if (item.type == \"number\" && !viewonly && item.align == null)\r\n //item.align = \"right\";\r\n\r\n if (viewonly) {\r\n if (tag == 'textarea')\r\n tag = 'div';\r\n }\r\n\r\n if (typeof (parent) == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n var field;\r\n if (itemtype == 'checkbox') {\r\n var p = scil.Utils.createElement(parent, 'label', null, {whiteSpace: 'nowrap'});\r\n field = scil.Utils.createElement(p, tag, null, item.style, item.attributes);\r\n if (item.str != null)\r\n scil.Utils.createElement(p, 'span', form.lang.res(item.str));\r\n } else {\r\n field = scil.Utils.createElement(parent, tag, null, item.style, item.attributes);\r\n if (viewonly && tag == 'div' && (item.type == 'htmltext' || item.type == 'textarea') &&\r\n item.width != null && (item.style == null || item.style.maxWidth == null)) {\r\n if (typeof (item.width) == 'number')\r\n field.style.maxWidth = item.width + 'px';\r\n else\r\n field.style.maxWidth = item.width;\r\n\r\n //field.style.wordBreak =\"break-all\";\r\n field.style.wordWrap = 'break-word';\r\n }\r\n }\r\n\r\n if (item.type == 'select')\r\n this._getListItems(item);\r\n\r\n if (tag == 'select') {\r\n var list = this._getListItems(item);\r\n if (list != null) {\r\n var addblank = item.addblank;\r\n if (addblank == null) {\r\n if (list.length == null) {\r\n addblank = true;\r\n for (var k in list) {\r\n if (list[k] == null || list[k] == '') {\r\n addblank = false;\r\n break;\r\n }\r\n }\r\n } else {\r\n if (list.length == 0 || list[0] != null && list[0] != '')\r\n addblank = true;\r\n }\r\n }\r\n if (addblank) {\r\n // @ts-ignore\r\n scil.Utils.listOptions(field, ['']);\r\n }\r\n scil.Utils.listOptions(field, list, value, null, item.sort != false ? true : false);\r\n } else if (item.url != null) {\r\n scil.Form.listOptions(field, item.url);\r\n }\r\n }\r\n\r\n if (!viewonly && item.button != null) {\r\n if (item.button.length > 0) {\r\n for (var i = 0; i < item.button.length; ++i)\r\n this.createFieldButton(parent, item.button[i], form, field);\r\n } else {\r\n this.createFieldButton(parent, item.button, form, field);\r\n }\r\n }\r\n\r\n if (item.button2 != null)\r\n scil.Utils.createButton(parent, item.button2);\r\n\r\n if (!fortable && (item.str != null || item.unit != null) && itemtype != 'checkbox')\r\n scil.Utils.createElement(parent, 'span', ' ' + (item.str || item.unit), {whiteSpace: 'nowrap'});\r\n var w = fortable && item.listwidth != null ? item.listwidth : item.width;\r\n if (w != null && w > 0)\r\n field.style.width = w + 'px';\r\n\r\n if (item.height > 0 && !(viewonly && tag == 'div' && (item.type == 'htmltext' || item.type == 'textarea')))\r\n field.style.height = item.height + 'px';\r\n\r\n if (item.align != null)\r\n field.style.textAlign = item.align;\r\n\r\n if (viewonly) {\r\n if (tag == 'input' || tag == 'password') {\r\n field.readOnly = true;\r\n field.style.border = 'none';\r\n } else if (tag == 'checkbox' || tag == 'select') {\r\n field.disabled = true;\r\n }\r\n } else {\r\n if (item.readonly || item.viewonly) {\r\n if (tag == 'input')\r\n field.readOnly = true;\r\n else if (tag == 'checkbox' || tag == 'radio' || tag == 'select')\r\n field.disabled = true;\r\n }\r\n }\r\n\r\n if (tag != 'div' || itemtype == 'textarea' || itemtype == 'html')\r\n field.style.color = JSDraw2.Skin.form.fieldcolor;\r\n field.stype = itemtype;\r\n\r\n // I#10377\r\n // var args = item.options == null ? scil.clone(item) : item.options;\r\n var args = scil.clone(item);\r\n if (item.options != null)\r\n scil.apply(args, item.options);\r\n\r\n if (viewonly)\r\n args.viewonly = viewonly;\r\n\r\n if (itemtype == 'jsdraw' || itemtype == 'xdraw') {\r\n var fn = function() {\r\n if (itemtype == 'xdraw')\r\n field.style.height = '';\r\n field.jsd = itemtype == 'jsdraw' || viewonly ? new JSDraw2.Editor(field, args) : new scil.XDraw(field, args);\r\n if (!scil.Utils.isNullOrEmpty(value))\r\n scil.Form.setFieldData(field, item, viewonly, value);\r\n };\r\n if (immediately)\r\n fn();\r\n else\r\n scil.ready(fn);\r\n } else if (itemtype == 'jsdraw.table') {\r\n var fn = function() {\r\n field.jsd = new JSDraw2.Table(null, args, field);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n if (item.rows > 0) {\r\n for (var i = field.jsd.getRowCount(); i < item.rows; ++i)\r\n field.jsd.insert();\r\n }\r\n };\r\n if (immediately)\r\n fn();\r\n else\r\n scil.ready(fn);\r\n } else if (itemtype == 'plate' || itemtype == 'plates') {\r\n var fn = function() {\r\n if (args.hidetable == null)\r\n args.hidetable = true;\r\n if (itemtype == 'plate')\r\n field.jsd = new JSDraw2.Plate(field, args);\r\n else\r\n field.jsd = new JSDraw2.Plates(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n };\r\n if (immediately)\r\n fn();\r\n else\r\n scil.ready(fn);\r\n } else if (itemtype == 'jsdraw.se') {\r\n var fn = function() {\r\n field.jsd = new JSDraw2.SequenceEditor(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n };\r\n if (immediately)\r\n fn();\r\n else\r\n scil.ready(fn);\r\n } else if (itemtype == 'jsdraw.fm') {\r\n var fn = function() {\r\n field.jsd = new JSDraw2.Formulation(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n };\r\n if (immediately)\r\n fn();\r\n else\r\n scil.ready(fn);\r\n } else if (itemtype == 'table') {\r\n field.jsd = new scil.Table(args);\r\n field.jsd.render(field, item.columns);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'tabtext') {\r\n field.jsd = new scil.FieldTabText(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'code') {\r\n field.style.marginBottom = '4px';\r\n field.jsd = new scil.FieldCode(field, args);\r\n if (value != null)\r\n field.jsd.setValue(value);\r\n } else if (itemtype == 'signature') {\r\n field.jsd = new scil.FieldSignature(field, args);\r\n if (value != null)\r\n field.jsd.setValue(value);\r\n } else if (itemtype == 'richtext') {\r\n field.jsd = new scil.FieldRichText(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'plaintext') {\r\n field.jsd = new scil.FieldPlainText(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'subform') {\r\n field.jsd = new scil.FieldSubform(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'file' || itemtype == 'filelink' || itemtype == 'filedblink' || itemtype == 'filepath' || itemtype == 'image') {\r\n if (itemtype == 'file')\r\n field.jsd = new scil.FieldFile(field, args);\r\n else if (itemtype == 'image')\r\n field.jsd = new scil.FieldImage(field, args);\r\n else if (itemtype == 'filelink' || itemtype == 'filedblink' || itemtype == 'filepath') {\r\n args.cmd = itemtype;\r\n field.jsd = new scil.FieldFileLink(field, args);\r\n }\r\n if (item.render != null)\r\n value = item.render(value, values);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'sketches') {\r\n field.jsd = new scil.FieldSketches(field, args);\r\n if (item.render != null)\r\n value = item.render(value, values);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'fileshelf') {\r\n field.jsd = new scil.FileShelf(field, args);\r\n if (value != null)\r\n field.jsd.list(value);\r\n } else if (itemtype == 'curve') {\r\n field.jsd = new scil.FieldCurve(field, args);\r\n if (value != null)\r\n field.jsd.setXml(value);\r\n } else if (itemtype == 'number') {\r\n field.jsd = new scil.FieldNumber(field, args);\r\n this.setFieldData(field, item, viewonly, value, values);\r\n } else if (itemtype == 'date') {\r\n if (!viewonly && !item.viewonly)\r\n new scil.DatePicker(field, item.options);\r\n if (value != null) {\r\n if (value == '{today}')\r\n value = scil.Utils.dateStr(new Date(), true, 'yyyy-mm-dd');\r\n }\r\n this.setFieldData(field, item, viewonly, value, values);\r\n } else if (itemtype == 'color') {\r\n field.jsd = new scil.ColorPicker2(field, {viewonly: viewonly});\r\n this.setFieldData(field, item, viewonly, value, values);\r\n } else if (itemtype == 'button') {\r\n field.innerHTML = item.text;\r\n } else {\r\n if (value != null || itemtype == 'html' && (item.template != null || item.render != null))\r\n this.setFieldData(field, item, viewonly, value, values);\r\n }\r\n\r\n if (itemtype == 'img' && item.src != null)\r\n field.src = item.src;\r\n if (item.title != null)\r\n field.setAttribute('title', item.title);\r\n if (item.onclick != null)\r\n dojo.connect(field, 'onclick', function() {\r\n item.onclick(field, item, form);\r\n });\r\n if (field.tagName == 'INPUT') {\r\n if (item.onenter != null)\r\n dojo.connect(field, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) {\r\n item.onenter(field);\r\n e.preventDefault();\r\n }\r\n });\r\n else if (scil.Utils.isIE && scil.Utils.isIE < 9) // fix bug I#6556\r\n dojo.connect(field, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n if (item.autosuggest != null && item.autosuggest != '' && field.tagName == 'INPUT')\r\n field.jsd = new scil.AutoComplete(field, item.autosuggest, item.options, form);\r\n else if (item.autosuggesturl != null && item.autosuggesturl != '' && field.tagName == 'INPUT')\r\n field.jsd = new scil.AutoComplete(field, item.autosuggesturl, item.options, form);\r\n\r\n var options = item.options;\r\n if (options == null)\r\n options = {};\r\n if (item.items != null)\r\n options.items = item.items;\r\n\r\n if (!viewonly && itemtype == 'editableselect')\r\n field.jsd = new scil.EditableSelect(field, options);\r\n else if (!viewonly && itemtype == 'dropdowninput')\r\n field.jsd = new scil.DropdownInput(field, options);\r\n else if (!viewonly && itemtype == 'dropdowncheck')\r\n field.jsd = new scil.DropdownCheck(field, options);\r\n else if (!viewonly && itemtype == 'multiselect')\r\n field.jsd = new scil.DropdownCheck(field, options);\r\n else if (!viewonly && itemtype == 'htmltext') {\r\n if (args.buttons == null)\r\n args.buttons = [];\r\n else if (typeof (args.buttons) == 'string')\r\n args.buttons = [args.buttons];\r\n args.buttons.push({\r\n iconurl: scil.Utils.imgSrc('img/uploadimg.gif'), tooltips: 'Insert Image', onclick: function(ed) {\r\n scil.Richtext.insertImage(ed);\r\n },\r\n });\r\n args.buttons.push({\r\n iconurl: scil.Utils.imgSrc('img/benzene.gif'), tooltips: 'Insert Structure', onclick: function(ed) {\r\n scil.Richtext.insertStructure(ed);\r\n },\r\n });\r\n if (args.extrabuttons != null)\r\n args.buttons.push(args.extrabuttons);\r\n if (value != null && value == '')\r\n field.value = value;\r\n scil.Richtext.initTinyMCE(field, args);\r\n }\r\n // else if (itemtype == \"number\") {\r\n // dojo.connect(field, \"onchange\", function (e) {\r\n // var s = field.value;\r\n // if (s != \"\" && s != null && !scil.Utils.isNumber(s, item.allowoperator)) {\r\n // scil.Utils.alert(\"A number is required!\");\r\n // field.value = \"\";\r\n // }\r\n // });\r\n // }\r\n\r\n // I#9132\r\n if (field.tagName == 'INPUT' || field.tagName == 'SELECT' || field.tagName == 'TEXTAREA') {\r\n if (item.onchange != null)\r\n dojo.connect(field, 'onchange', function() {\r\n item.onchange(field, form);\r\n });\r\n if (item.onfocus != null)\r\n dojo.connect(field, 'onfocus', function() {\r\n item.onfocus(field, form);\r\n });\r\n if (item.onblur != null)\r\n dojo.connect(field, 'onblur', function() {\r\n item.onblur(field, form);\r\n });\r\n }\r\n\r\n if (item.padding >= 0 && (field.tagName == 'INPUT' || field.tagName == 'DIV'))\r\n field.style.paddingLeft = field.style.paddingRight = item.padding + 'px';\r\n\r\n if (field.tagName == 'INPUT' && field.disabled != true && item.type != 'checkbox' && item.type != 'radio')\r\n dojo.connect(field, 'onfocus', function() {\r\n field.select();\r\n });\r\n\r\n if (field.jsd != null)\r\n field.jsd.parentform = form;\r\n\r\n return field;\r\n }\r\n\r\n static createFieldButton(parent, button, form, field) {\r\n var b = scil.Utils.createButton(parent, button);\r\n if (b != null) {\r\n if (button.onclick2 != null) {\r\n dojo.connect(b, 'onclick', function() {\r\n button.onclick2(field, form);\r\n });\r\n } else if (button.ajaxurl != null) {\r\n dojo.connect(b, 'onclick', function() {\r\n scil.Utils.ajax(button.ajaxurl, function(ret) {\r\n if (button.append != null)\r\n field.value += ret + button.append;\r\n else\r\n field.value = ret;\r\n }, {q: field.value});\r\n });\r\n }\r\n }\r\n }\r\n\r\n static getFieldData(field, item?: ItemType) {\r\n if (field == null)\r\n return null;\r\n\r\n if (field.stype == 'jsdraw') {\r\n if (item != null && item.dataformat != null)\r\n return field.jsd.getData(item.dataformat);\r\n else\r\n return field.jsd.getXml();\r\n }\r\n if (field.stype == 'xdraw' || field.stype == 'jsdraw.se' || field.stype == 'jsdraw.fm' ||\r\n field.stype == 'table' || field.stype == 'plate' || field.stype == 'plates') {\r\n return field.jsd.getXml();\r\n } else if (field.stype == 'jsdraw.table') {\r\n if (field.jsd.getRowCount() == 0)\r\n return null;\r\n return field.jsd.getXml();\r\n } else if (field.type == 'checkbox' || field.type == 'radio')\r\n return field.checked;\r\n else if (field.stype == 'htmltext') {\r\n var ed = scil.Form.getEd(field);\r\n return ed == null ? field.innerHTML : scil.Richtext.getHtml(ed);\r\n } else if (field.stype == 'file' || field.stype == 'filelink' || field.stype == 'filedblink' || field.stype == 'filepath' ||\r\n field.stype == 'image' || field.stype == 'curve' || field.stype == 'sketches')\r\n return field.jsd.getXml();\r\n else if (field.stype == 'tabtext' || field.stype == 'richtext' || field.stype == 'plaintext' || field.stype == 'subform')\r\n return field.jsd.getXml();\r\n else if (field.stype == 'code')\r\n return field.jsd.getValue();\r\n else if (field.stype == 'signature')\r\n return field.jsd.getValue();\r\n else if (field.stype == 'number')\r\n return field.jsd.getValue();\r\n else if (field.type == 'password')\r\n return field.value == '' ? '' : (item.encrypt != false && JSDraw2.password != null && JSDraw2.password.encrypt && scil.Form.encryptpassword != null ? scil.Form.encryptpassword(field.value) : field.value);\r\n else if (field.stype == 'postfile' || field.stype == 'button')\r\n return null;\r\n else {\r\n if (field.value == null)\r\n return field.getAttribute('originalvalue');\r\n return field.value == '' ? null : field.value;\r\n }\r\n }\r\n\r\n static setFieldData(field, item, viewonly, value, values?: any) {\r\n if (item == null)\r\n return;\r\n\r\n var originalvalue = value;\r\n if (item.render != null)\r\n value = item.render(value, values);\r\n\r\n if (viewonly && item.maxlength > 0 && typeof (value) == 'string' && value.length > item.maxlength)\r\n value = value.substr(0, item.maxlength - 3) + '...';\r\n\r\n if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' || field.stype == 'jsdraw.se' ||\r\n field.stype == 'jsdraw.fm' || field.stype == 'plate' || field.stype == 'plates') {\r\n if (field.stype == 'jsdraw' || field.stype == 'xdraw' || field.stype == 'jsdraw.table' && item.options != null && item.options.spreadsheet)\r\n field.jsd.clear(true);\r\n else\r\n field.jsd.clear();\r\n\r\n if (item.type == 'jsdraw') {\r\n if (item.dataformat != null)\r\n field.jsd.setData(value, item.dataformat);\r\n else if (!(value == null || typeof (value) == 'string' && value == ''))\r\n field.jsd.setXml(value);\r\n } else {\r\n if (value != null && value.rows != null && field.stype == 'jsdraw.table')\r\n field.jsd.setJson(value);\r\n else if (!(value == null || typeof (value) == 'string' && value == ''))\r\n field.jsd.setXml(value);\r\n\r\n if (field.stype == 'jsdraw.table' && item.options != null && item.options.spreadsheet)\r\n field.jsd.createTable();\r\n\r\n if (field.stype == 'jsdraw.table' && item.rows > 0) {\r\n for (var i = field.jsd.getRowCount(); i < item.rows; ++i)\r\n field.jsd.insert();\r\n }\r\n }\r\n } else if (field.stype == 'table') {\r\n if (value != null && (typeof (value) == 'string' || typeof (value) == 'object' && value.tagName == 'table'))\r\n field.jsd.setXml(value);\r\n else if (value != null && value.length > 0)\r\n field.jsd.setData(value);\r\n else\r\n field.jsd.setData([]);\r\n } else if (item.type == 'tabtext' || item.type == 'richtext' || item.type == 'plaintext') {\r\n field.jsd.setXml(value);\r\n } else if (item.type == 'checkbox' || item.type == 'radio') {\r\n field.checked = scil.Utils.isTrue(value);\r\n } else if (item.type == 'select') {\r\n if (viewonly) {\r\n var list = this._getListItems(item);\r\n if (list != null && list.length == null)\r\n value = list[value];\r\n this._setInnerHTML(field, value, originalvalue);\r\n } else {\r\n scil.Utils.selectOption(field, value);\r\n }\r\n } else if (item.type == 'date') {\r\n if (typeof (value) == 'string' && !scil.Utils.isNullOrEmpty(value) && !isNaN(value as any)) {\r\n value = parseFloat(value);\r\n if (isNaN(value))\r\n value = null;\r\n }\r\n var s = item.timeformat == null ? scil.Utils.dateStr(value, true, item.dateformat) : scil.Utils.timeStr(value, true, item.timeformat);\r\n if (viewonly) {\r\n if (field.tagName == 'INPUT')\r\n field.value = s;\r\n else\r\n this._setInnerHTML(field, s, originalvalue);\r\n } else {\r\n field.value = s;\r\n }\r\n } else if (item.type == 'color') {\r\n field.jsd.setValue(value);\r\n } else if (field.stype == 'code') {\r\n field.jsd.setValue(value);\r\n } else if (field.stype == 'signature') {\r\n field.jsd.setValue(value);\r\n } else if (field.stype == 'number') {\r\n return field.jsd.setValue(value);\r\n } else if (field.stype == 'html') {\r\n var s = value == null ? '' : value;\r\n if (item != null && item.template != null)\r\n s = this.renderTemplate(item.template, value, values);\r\n else if (typeof (s) == 'string' && s.match(/^((http[s]?)|(ftp)):[\\/]{2}.+$/i) != null)\r\n s = '' + s + '';\r\n this._setInnerHTML(field, s, originalvalue);\r\n } else if (field.stype == 'file' || field.stype == 'filelink' || field.stype == 'filedblink' || field.stype == 'filepath' || field.stype == 'image' || field.stype == 'curve' || field.stype == 'sketches' || field.stype == 'subform') {\r\n field.jsd.setXml(value);\r\n } else if (field.stype == 'fileshelf') {\r\n field.jsd.list(value);\r\n } else if (item.type == 'htmltext') {\r\n if (viewonly) {\r\n this._setInnerHTML(field, field.innerHTML = value == null ? '' : value, originalvalue, true);\r\n } else {\r\n var ed = scil.Form.getEd(field);\r\n if (ed != null && ed.dom != null)\r\n ed.setContent(value == null ? '' : value);\r\n else\r\n field.value = value == null ? '' : value;\r\n }\r\n } else if (field.stype == 'textarea') {\r\n if (field.tagName == 'TEXTAREA')\r\n field.value = value == null ? '' : value;\r\n else\r\n this._setInnerHTML(field, this.wrapTextarea(value), originalvalue, true);\r\n } else if (field.stype != 'div' && field.stype != 'button') {\r\n if (field.stype == 'hidden' && value != null && typeof (value) == 'object' && value.tagName != null) // I#10361\r\n value = scil.Utils.getOuterXml(value);\r\n\r\n if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA')\r\n field.value = value == null ? '' : value;\r\n else if (field.tagName == 'DIV')\r\n this._setInnerHTML(field, value == null ? '' : value, originalvalue);\r\n }\r\n\r\n if (item.onrendered != null)\r\n item.onrendered(field, value);\r\n }\r\n\r\n static wrapTextarea(value) {\r\n var whitespace = 'white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;';\r\n return value == null ? '' : '
' + scil.Utils.escapeHtml(value) + '
';\r\n }\r\n\r\n static _setInnerHTML(field, value, originalvalue, clear?: boolean) {\r\n if (value == null)\r\n value = '';\r\n else if (clear)\r\n value += '
'; // I#11990\r\n\r\n field.innerHTML = value;\r\n\r\n // very tricky: in chrome:\r\n // 0 == \"\" -> true\r\n // 0 != \"\" -> false\r\n // if (originalvalue != null && originalvalue != \"\")\r\n if (originalvalue != null && (originalvalue + '') != '')\r\n field.setAttribute('originalvalue', originalvalue);\r\n }\r\n\r\n static renderTemplate(template, value, values) {\r\n let s = template.replace(/\\{\\?\\}/g, value == null ? '' : value);\r\n if (values == null)\r\n return s;\r\n var tokens = s.match(/\\{\\{[a-z|0-9]+\\}\\}/ig);\r\n if (tokens == null)\r\n return s;\r\n for (var i = 0; i < tokens.length; ++i) {\r\n var token = tokens[i];\r\n var k = token.substr(2, token.length - 4);\r\n var v = values[k];\r\n s = s.replace(token, v == null ? '' : v);\r\n }\r\n return s;\r\n }\r\n\r\n static listOptions(select, url) {\r\n scil.Utils.ajax(url, function(ret) {\r\n scil.Utils.listOptions(select, ret);\r\n });\r\n }\r\n\r\n /**\r\n * Create a form\r\n * @function {static} create\r\n * @param {object} obj the data object to be loaded into the table. obj.load() will be called\r\n * @param {string or DOM} parent parent element\r\n * @param {array} buttons an array of button definitions. button: { caption: string, onclick: function }\r\n * @param {array} items an array of field definitions. item: { id, iskey ... }\r\n * @param {bool} viewonly indicate if creating a viewonly table\r\n * @returns a new Table object\r\n */\r\n static create(obj, parent, items, buttons, viewonly) {\r\n if (typeof parent == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n var div = scil.Utils.createElement(parent, 'div');\r\n var form = new scil.Form(viewonly);\r\n form.render(div, items);\r\n\r\n if (buttons != null) {\r\n var tr = scil.Utils.createElement(form.tbody, 'tr');\r\n var td = scil.Utils.createElement(tr, 'td');\r\n td = scil.Utils.createElement(tr, 'td');\r\n\r\n if (buttons.length == null) {\r\n scil.Utils.createButton(td, buttons);\r\n } else {\r\n for (var i = 0; i < buttons.length; ++i)\r\n scil.Utils.createButton(td, buttons[i]);\r\n }\r\n }\r\n\r\n if (obj.load != null)\r\n scil.onload(function() {\r\n obj.load();\r\n });\r\n return form;\r\n }\r\n\r\n /**\r\n * Create a HTML form\r\n * @function {static} createForm2\r\n * @param {DOM} parent parent element\r\n * @param {array} items an array of field definitions. item: { id, iskey ... }\r\n * @param {dict} buttons button definition: { label, onclick }\r\n * @returns a form object\r\n *
\r\n   * Example:\r\n   *    dojo.ready(function () {\r\n   *        var parent = scil.Utils.createElement(document.body, \"div\");\r\n   *        var items = {\r\n   *            notes: { type: \"note\", label: \"This is a test\" },\r\n   *            username: { label: \"username:\", tag: \"input\", width: 200 },\r\n   *            password: { label: \"Your Password:\", tag: \"password\", width: 200 }\r\n   *        };\r\n   *        var form = scil.Form.createForm2(parent, items, { label: \"Login\", onclick: function () { alert(\"Blah...\" } });\r\n   *    });\r\n   * 
\r\n */\r\n static createForm2(parent, items, buttons, options) {\r\n if (options == null)\r\n options = {};\r\n\r\n var form = null;\r\n if (buttons != null)\r\n options.buttons = buttons;\r\n if (options.tabs != null) {\r\n form = new scil.TabbedForm(options).render(parent);\r\n } else {\r\n form = new scil.Form(options);\r\n form.render(parent, items, options);\r\n\r\n for (var k in items) {\r\n if (items[k] == null)\r\n continue;\r\n if (items[k].type == 'group' && items[k].group != null && items[k].collapsed)\r\n this.expand({target: items[k].group});\r\n }\r\n }\r\n\r\n return form;\r\n }\r\n\r\n static _connetOnClick(e, fn) {\r\n dojo.connect(e, 'onclick', function() {\r\n fn();\r\n });\r\n }\r\n\r\n /**\r\n * Create a HTML Dialog form\r\n *
\r\n   * Example:\r\n   *    dojo.ready(function () {\r\n   *        var items = {\r\n   *            notes: { type: \"note\", label: \"This is a test\" },\r\n   *            username: { label: \"username:\", tag: \"input\", width: 200 },\r\n   *            password: { label: \"Your Password:\", tag: \"password\", width: 200 }\r\n   *        };\r\n   *        var dlg = scil.Form.createDlgForm(\"Login\", items,\r\n   *                { label: \"Login\", onclick: function () { alert(\"Blah...\"); dlg.hide(); } }, 350);\r\n   *    });\r\n   * 
\r\n * @function {static} createDlgForm\r\n * @param {string} caption dialog caption\r\n * @param {array} items an array of field definitions. item: { id, iskey ... }\r\n * @param {dict} buttons button definition: { label, onclick }\r\n * @param {options}: { onenter, viewonly }\r\n * @returns a dialog object\r\n */\r\n static createDlgForm(caption, items, buttons, options?: any): IDialog {\r\n const args: any = {};\r\n if (typeof (options) == 'number') {\r\n args.width = options + 'px';\r\n options = null;\r\n } else if (options != null && options.width > 0) {\r\n args.width = options.width + 'px';\r\n }\r\n var div = scil.Utils.createElement(null, 'div', null, args);\r\n var dlg = new JSDraw2.Dialog(caption, div, options);\r\n dlg.show();\r\n dlg.form = this.createForm2(div, items, buttons, options);\r\n dlg._scilform = true;\r\n dlg.hide(true);\r\n dlg.show2({owner: this});\r\n if (options != null && options.oncreated)\r\n options.oncreated(dlg.form);\r\n return dlg;\r\n }\r\n\r\n static createFormDlg(caption, items, buttons, options) {\r\n return this.createDlgForm(caption, items, buttons, options);\r\n }\r\n\r\n /**\r\n * Create a HTML Tabbed Dialog form\r\n *
\r\n   * Example:\r\n   *    <button onclick='test()'>Test</button>\r\n   *    <script type=\"text/javascript\">\r\n   *        function test() {\r\n   *            var options = { tabs: {\r\n   *                a: { caption: \"Tab A\", fields: { field1: { label: \"Field1\"}} },\r\n   *                b: { caption: \"Tab B\", fields: { field2: { label: \"Field2\" }, field3: { label: \"Field3\"}} }\r\n   *            }, buttons: { label: \"Test\", onclick: function() { alert(999); } }, border: true\r\n   *            };\r\n   *\r\n   *            var dlg = scil.Form.createTabDlgForm(\"Test\", null, null, options);\r\n   *            dlg.form.setData({ field1: \"AAA\", field2: \"124\" });\r\n   *        }\r\n   *    </script>\r\n   * 
\r\n * @function {static} createTabDlgForm\r\n * @returns a dialog object\r\n */\r\n static createTabDlgForm(caption, options) {\r\n return this.createDlgForm(caption, null, null, options);\r\n }\r\n\r\n static createForm(items, btn, onclick, border, extra, enter) {\r\n const style1: Partial = {verticalAlign: 'top', whiteSpace: 'nowrap'};\r\n const style2 = {textAlign: 'left'};\r\n if (border) {\r\n style1.border = 'solid 1px #f0f0f0';\r\n style1.backgroundColor = '#f5f5f5';\r\n }\r\n\r\n var tbody = scil.Utils.createTable();\r\n\r\n var required = false;\r\n for (var i = 0; i < items.length; ++i) {\r\n if (items[i].required) {\r\n required = true;\r\n break;\r\n }\r\n }\r\n if (required) {\r\n var tr = scil.Utils.createElement(tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td');\r\n scil.Utils.createElement(tr, 'td', '* indicates required field', style2);\r\n }\r\n\r\n for (var i = 0; i < items.length; ++i) {\r\n var it = items[i];\r\n var tr = scil.Utils.createElement(tbody, 'tr');\r\n var td = scil.Utils.createElement(tr, 'td', it.label + (it.required ? '*' : ''), style1);\r\n if (it.colspan) {\r\n td.colSpan = 2;\r\n } else {\r\n td = scil.Utils.createElement(tr, 'td', null, style2);\r\n\r\n if (it.tag != null) {\r\n var input = scil.Utils.createElement(td, it.tag);\r\n if (it.tag == 'select')\r\n scil.Utils.listOptions(input, it.options);\r\n if (it.width != null)\r\n input.style.width = it.width + 'px';\r\n if (it.height != null)\r\n input.style.height = it.height + 'px';\r\n if (it.id != null)\r\n input.id = it.id;\r\n if (it.tag == 'hidden')\r\n tr.style.display = 'none';\r\n if (it.align != null)\r\n input.style.textAlign = it.align;\r\n\r\n if (it.id == enter)\r\n dojo.connect(input, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) {\r\n onclick();\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n if (it.span != null)\r\n scil.Utils.createElement(td, 'span', it.span);\r\n }\r\n }\r\n\r\n var tr = scil.Utils.createElement(tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td', ' ');\r\n\r\n tr = scil.Utils.createElement(tbody, 'tr');\r\n scil.Utils.createElement(tr, 'td');\r\n var td = scil.Utils.createElement(tr, 'td');\r\n if (btn != null) {\r\n if (typeof (btn) == 'string') {\r\n var b = scil.Utils.createElement(td, 'button', btn);\r\n dojo.connect(b, 'onclick', onclick);\r\n } else if (btn != null && typeof (btn) == 'object' && btn.length > 0) {\r\n var buttons = [];\r\n for (var i = 0; i < btn.length; ++i) {\r\n var bn = btn[i];\r\n var b = scil.Utils.createElement(td, 'button', bn.caption);\r\n if (bn.id != null)\r\n b.id = bn.id;\r\n this._connetOnClick(b, bn.onclick);\r\n }\r\n }\r\n }\r\n\r\n if (extra != null)\r\n scil.Utils.createElement(td, 'span', extra);\r\n return tbody.parentNode;\r\n }\r\n\r\n static fillForm(data, prefix) {\r\n for (const k in data) {\r\n const field = dojo.byId((prefix == null ? '' : prefix) + k) as HTMLInputElement;\r\n if (field != null) {\r\n if (field.tagName == 'SELECT')\r\n JsUtils.selectOption(field, data[k]);\r\n else\r\n field.value = data[k] == null ? '' : data[k];\r\n }\r\n }\r\n }\r\n\r\n static collectFormData(parent) {\r\n var ret = {};\r\n\r\n var inputs = parent.getElementsByTagName('input');\r\n for (var i = 0; i < inputs.length; ++i) {\r\n var n = inputs[i];\r\n var type = (n.getAttribute('type') + '').toLowerCase();\r\n switch (type) {\r\n case 'radio':\r\n case 'checkbox':\r\n if (n.checked)\r\n this._addValue(ret, n.id, n.value == null || n.value.length == 0 ? 'true' : n.value);\r\n break;\r\n case 'button':\r\n break;\r\n default:\r\n this._addValue(ret, n.id, n.value);\r\n break;\r\n }\r\n }\r\n\r\n var textareas = parent.getElementsByTagName('textarea');\r\n for (var i = 0; i < textareas.length; ++i) {\r\n var n = textareas[i];\r\n this._addValue(ret, n.id, n.value);\r\n }\r\n\r\n var selects = parent.getElementsByTagName('select');\r\n for (var i = 0; i < selects.length; ++i) {\r\n var n = selects[i];\r\n this._addValue(ret, n.id, n.value);\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n static _addValue(dict, key, value) {\r\n if (key == null || key.length == 0)\r\n return;\r\n\r\n var p = key.lastIndexOf('.');\r\n if (p > 0)\r\n key = key.substr(p + 1);\r\n dict[key] = value;\r\n }\r\n\r\n static toAmount(v, liquid) {\r\n if (v == null || v == 0)\r\n return '-';\r\n else if (v >= 1000)\r\n return (v / 1000) + (liquid ? 'L' : 'kg');\r\n else if (v < 0.001 && liquid)\r\n return (v * 1000000) + 'ug';\r\n else if (v < 1)\r\n return (v * 1000) + (liquid ? 'uL' : 'mg');\r\n else\r\n return v + (liquid ? 'mL' : 'g');\r\n }\r\n\r\n static processAmount(c) {\r\n if (!(c.amount > 0))\r\n c.amount = null;\r\n if (!(c.amountleft > 0))\r\n c.amountleft = null;\r\n var v = c.amount == null ? c.amountleft : c.amount;\r\n if (v <= 0)\r\n v = null;\r\n if (v === null) {\r\n c.unit = c.isliquid ? 'L' : 'kg';\r\n } else if (v >= 1000) {\r\n c.amount /= 1000;\r\n c.amountleft /= 1000;\r\n c.unit = c.isliquid ? 'L' : 'kg';\r\n } else if (v < 0.001 && !c.isliquid) {\r\n c.amount *= 1000000;\r\n c.amountleft *= 1000000;\r\n c.unit = 'ug';\r\n } else if (v < 1) {\r\n c.amount *= 1000;\r\n c.amountleft *= 1000;\r\n c.unit = c.isliquid ? 'uL' : 'mg';\r\n } else {\r\n c.unit = c.isliquid ? 'mL' : 'g';\r\n }\r\n }\r\n\r\n // static setButtonValueByKey(buttons, key, s) {\r\n // if (buttons == null)\r\n // return;\r\n //\r\n // for (var i = 0; i < buttons.length; ++i) {\r\n // if (buttons[i].key == key) {\r\n // buttons[i].b.value = s == null ? '' : s;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n\r\n static setButtonValueByKey(buttons, key, value) {\r\n if (buttons == null || scil.Utils.isNullOrEmpty(key) || scil.Utils.isNullOrEmpty(value))\r\n return;\r\n\r\n for (let i = 0; i < buttons.length; ++i) {\r\n if (buttons[i].key == key) {\r\n buttons[i].b.value = value;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n static getButtonValueByKey(buttons, key) {\r\n if (buttons == null)\r\n return null;\r\n for (var i = 0; i < buttons.length; ++i) {\r\n if (buttons[i].key == key)\r\n return buttons[i].b.value;\r\n }\r\n return null;\r\n }\r\n\r\n static getButtonValuesByKey(buttons, keys, dict) {\r\n if (dict == null)\r\n dict = {};\r\n\r\n for (var i = 0; i < keys.length; ++i)\r\n dict[keys[i]] = this.getButtonValueByKey(buttons, keys[i]);\r\n return dict;\r\n }\r\n\r\n static createToolbarButtons(parent: HTMLElement, buttons: ButtonDesc[], padding: number, tableAlign?: string) {\r\n if (parent == null || buttons == null)\r\n return;\r\n\r\n var tr = null;\r\n if (tableAlign != null)\r\n tr = scil.Utils.createElement(scil.Utils.createTable2(parent, null, {cellSpacing: 0, cellPadding: 0, align: tableAlign}), 'tr');\r\n\r\n for (var i = 0; i < buttons.length; ++i) {\r\n if ((i == 0 || buttons[i - 1] == '-' || buttons[i - 1] == '|') && (buttons[i] == '-' || buttons[i] == '|'))\r\n continue;\r\n\r\n if (tableAlign != null)\r\n parent = scil.Utils.createElement(tr, 'td');\r\n this._createButton(parent, buttons[i], padding);\r\n }\r\n }\r\n\r\n static _createButton(parent, button: ButtonDesc, padding: number) {\r\n if (button == null)\r\n return;\r\n\r\n if (typeof (padding) != 'number' || padding <= 0)\r\n padding = 3;\r\n\r\n if (button == '-' || button == '|') {\r\n scil.Utils.createElement(parent, 'span', '|', {margin: '0 ' + (2 * padding) + 'px 0 ' + (2 * padding) + 'px'});\r\n return;\r\n }\r\n\r\n button.label = scil.Lang.res(button.label);\r\n button.caption = scil.Lang.res(button.caption);\r\n button.title = scil.Lang.res(button.title);\r\n\r\n var b = null;\r\n if (button.type == 'select') {\r\n if (button.label != null) {\r\n var l = scil.Utils.createElement(parent, 'span', button.label + ':', button.labelstyle);\r\n l.style.marginLeft = padding + 'px';\r\n }\r\n b = scil.Utils.createElement(parent, 'select', null, button.styles, button.attributes);\r\n scil.Utils.listOptions(b, button.items || button.options, button.value, null, button.sort);\r\n if (button.onchange != null)\r\n dojo.connect(b, 'onchange', function(b) {\r\n button.onchange(b);\r\n });\r\n b.style.marginRight = padding + 'px';\r\n } else if (button.type == 'input' || button.type == 'date' || button.type == 'color') {\r\n if (button.label != null) {\r\n var l = scil.Utils.createElement(parent, 'span', button.label + ':', button.labelstyle);\r\n l.style.marginLeft = padding + 'px';\r\n }\r\n b = scil.Utils.createElement(parent, 'input', null, button.styles, button.attributes);\r\n if (button.onenter != null)\r\n dojo.connect(b, 'onkeydown', function(e) {\r\n if (e.keyCode == 13) button.onenter(b);\r\n });\r\n if (button.onchange != null)\r\n dojo.connect(b, 'onchange', function(b) {\r\n button.onchange(b);\r\n });\r\n if (button.autosuggesturl != null)\r\n new scil.AutoComplete(b, button.autosuggesturl, {onsuggest: button.onsuggest});\r\n b.style.marginRight = padding + 'px';\r\n\r\n if (button.type == 'date')\r\n new scil.DatePicker(b);\r\n else if (button.type == 'color')\r\n new scil.ColorPicker2(b);\r\n\r\n if (button.value != null)\r\n b.value = button.value;\r\n } else {\r\n b = scil.Utils.createButton(parent, button);\r\n b.style.margin = padding + 'px';\r\n }\r\n button.b = b;\r\n }\r\n\r\n static getEd(field) {\r\n // @ts-ignore\r\n return tinymce.get(field.id);\r\n }\r\n\r\n static dict2formxml(dict) {\r\n return this.json2xml(dict);\r\n }\r\n\r\n static json2xml(dict, nowrapper?: boolean) {\r\n if (dict == null)\r\n return null;\r\n\r\n var ret = nowrapper ? '' : '\\n';\r\n for (var k in dict) {\r\n var v = dict[k];\r\n if (v != null && v != '') {\r\n ret += '';\r\n ret += scil.Utils.escXmlValue(v);\r\n ret += '\\n';\r\n }\r\n }\r\n if (!nowrapper)\r\n ret += '';\r\n return ret;\r\n }\r\n\r\n static encryptpassword(s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return null;\r\n\r\n var Key = CryptoJS.enc.Utf8.parse(JSDraw2.password != null && JSDraw2.password.key != null ? JSDraw2.password.key : 'PSVJQRk9qTEp!6U1dWUZ%RVFG=1VVT0=');\r\n var IV = CryptoJS.enc.Utf8.parse(JSDraw2.password != null && JSDraw2.password.iv != null ? JSDraw2.password.iv : '!WlSLVE2ZU+NaW?=');\r\n var encryptedText = CryptoJS.AES.encrypt(s, Key, {iv: IV, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});\r\n return '(?|' + encryptedText + ')';\r\n }\r\n\r\n static xml2Json(xml) {\r\n var root = null;\r\n if (typeof xml == 'object') {\r\n root = xml;\r\n } else if (typeof xml == 'string') {\r\n var doc = scil.Utils.parseXml(xml);\r\n if (doc != null)\r\n root = doc.documentElement || doc.firstElementChild;\r\n }\r\n\r\n if (root == null || root.childNodes == null)\r\n return null;\r\n\r\n var data = {};\r\n for (var i = 0; i < root.childNodes.length; ++i) {\r\n var e = root.childNodes[i];\r\n if (e.tagName != 'i')\r\n continue;\r\n\r\n var id = e.getAttribute('id');\r\n if (id == null)\r\n id = e.getAttribute('n');\r\n var v = scil.Utils.getFirstElement(e) as any;\r\n if (v != null && scil.Utils.isIE && scil.Utils.isIE < 9)\r\n v = v.xml;\r\n data[id] = v != null ? v : (e.text || e.textContent);\r\n }\r\n\r\n return data;\r\n }\r\n\r\n static ext2Icon(filename) {\r\n if (filename == null)\r\n return 'unknown';\r\n var p = filename.lastIndexOf('.');\r\n if (p < 0)\r\n return 'unknown';\r\n var ext = filename.substr(p + 1).toLowerCase();\r\n switch (ext) {\r\n case 'avi':\r\n case 'bmp':\r\n case 'c':\r\n case 'cab':\r\n case 'cdx':\r\n case 'cer':\r\n case 'chm':\r\n case 'dll':\r\n case 'doc':\r\n case 'eps':\r\n case 'exe':\r\n case 'fasta':\r\n case 'fdf':\r\n case 'gif':\r\n case 'hlp':\r\n case 'htm':\r\n case 'iso':\r\n case 'jar':\r\n case 'java':\r\n case 'jdx':\r\n case 'jpg':\r\n case 'js':\r\n case 'jsdraw':\r\n case 'mdb':\r\n case 'mht':\r\n case 'molengine':\r\n case 'mov':\r\n case 'mp3':\r\n case 'mrv':\r\n case 'msg':\r\n case 'msi':\r\n case 'pdb':\r\n case 'pdf':\r\n case 'pic':\r\n case 'ppt':\r\n case 'ps':\r\n case 'py':\r\n case 'pyc':\r\n case 'rm':\r\n case 'sdf':\r\n case 'skc':\r\n case 'sql':\r\n case 'swf':\r\n case 'txt':\r\n case 'vbs':\r\n case 'vsd':\r\n case 'xls':\r\n case 'xml':\r\n case 'xps':\r\n case 'zip':\r\n return ext;\r\n case 'docx':\r\n case 'rtf':\r\n return 'doc';\r\n case 'dx':\r\n return 'jdx';\r\n case 'oxps':\r\n return 'xps';\r\n case 'pptx':\r\n return 'ppt';\r\n case 'xlsx':\r\n case 'csv':\r\n return 'xls';\r\n case 'jpeg':\r\n return 'jpg';\r\n case 'svg':\r\n case 'tif':\r\n case 'tiff':\r\n return 'pic';\r\n case 'mp4':\r\n return 'mp3';\r\n case 'wav':\r\n return 'avi';\r\n case 'png':\r\n case 'wmf':\r\n case 'emf':\r\n return 'bmp';\r\n case 'html':\r\n case 'shtml':\r\n case 'xhtml':\r\n return 'htm';\r\n case 'gz':\r\n return 'zip';\r\n case 'cdxml':\r\n return 'cdx';\r\n case 'tgf':\r\n return 'skc';\r\n case 'mol':\r\n case 'rxn':\r\n case 'jsd':\r\n case 'jssdf':\r\n return 'jsdraw';\r\n case 'cs':\r\n case 'vb':\r\n case 'cpp':\r\n case 'c':\r\n case 'aspx':\r\n case 'asp':\r\n return 'script';\r\n case 'config':\r\n return 'xml';\r\n default:\r\n return 'unknown';\r\n }\r\n }\r\n}\r\n\r\nscil.Form = Form;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Lang class - translate web page into other lanagues\r\n * @class scilligence.Lang\r\n *
\r\n * Example:\r\n *    scil.Lang.use('cn');\r\n *    var s = scil.Lang.res(\"Print\");\r\n * 
\r\n */\r\nexport class Lang {\r\n static token: string = \"translate\";\r\n static key: string = \"scil_lang\";\r\n static current: {} | null = null;\r\n static language: {} | null = null;\r\n static en: {} = {};\r\n static cn: {} = {};\r\n\r\n private static lang: Lang;\r\n\r\n static add(dict, lang) {\r\n if (dict == null)\r\n return;\r\n\r\n var dest = lang == null ? this.en : scil.Lang[lang];\r\n if (dest == null)\r\n scil.Lang[lang] = {};\r\n\r\n scil.apply(dest, dict);\r\n }\r\n\r\n static setLang(lang, reload) {\r\n if (lang == null || lang == \"\")\r\n scil.Utils.createCookie(this.key, \"\", -1, true);\r\n else\r\n scil.Utils.createCookie(this.key, lang, 180, true);\r\n if (reload)\r\n window.location.reload();\r\n }\r\n\r\n static use(lang) {\r\n if (lang == null)\r\n return;\r\n lang = lang.toLowerCase();\r\n if (lang == \"zh\")\r\n lang = \"cn\";\r\n\r\n this.language = lang;\r\n this.current = this[lang];\r\n if (this.current == null) {\r\n this.current = this.en;\r\n this.language = null;\r\n }\r\n\r\n JSDraw2.Language.use(lang);\r\n }\r\n\r\n static res(s, lang) {\r\n if (scil.Utils.isNullOrEmpty(s) || typeof (s) != \"string\")\r\n return s;\r\n\r\n if (lang != null) {\r\n var dict = this[lang];\r\n return dict == null || dict[s] == null ? s : dict[s];\r\n }\r\n\r\n if (this.current == null) {\r\n let lang = scil.Utils.readCookie(this.key, true);\r\n if (lang != null && lang != \"\")\r\n this.use(lang);\r\n\r\n if (this.current == null && this.lang != null)\r\n this.use(this.lang);\r\n\r\n if (this.current == null) {\r\n // @ts-ignore\r\n lang = window.navigator.userLanguage;\r\n if (lang != null && lang.length > 2)\r\n this.use(lang.substr(0, 2));\r\n if (this.current == null)\r\n this.current = this.en;\r\n }\r\n }\r\n\r\n var ret = this.current == null ? null : this.current[s];\r\n if (ret == null || ret == \"\")\r\n ret = JSDraw2.Language.res(s);\r\n return ret;\r\n }\r\n\r\n static translate(parent, tags) {\r\n if (tags == null || tags == \"\") {\r\n this.translate(parent, \"span\");\r\n } else {\r\n var ss = tags.split(',');\r\n for (var i = 0; i < ss.length; ++i)\r\n this.translate(parent, ss[i]);\r\n }\r\n }\r\n\r\n static translate2(parent, tag) {\r\n if (tag == null || tag == \"\")\r\n return;\r\n\r\n var list = (parent == null ? document : parent).getElementsByTagName(tag);\r\n if (list == null)\r\n return;\r\n\r\n for (var i = 0; i < list.length; ++i) {\r\n var e = list[i];\r\n if (e.getAttribute(this.token) == null)\r\n continue;\r\n\r\n // @ts-ignore\r\n var s = this.reg(e.innerHTML);\r\n if (scil.Utils.isNullOrEmpty(s))\r\n continue;\r\n\r\n e.innerHTML = s;\r\n }\r\n }\r\n}\r\n\r\nscil.Lang = Lang;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {DojoType} from '../src/types/dojo';\r\nimport type {ScilModuleType} from '../src/types';\r\n\r\ndeclare const dojo: DojoType;\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\nexport type FormTabElement = any;\r\n\r\n/**\r\n * Tabs class - Tabs Control\r\n * @class scilligence.Tabs\r\n *
\r\n * Example:\r\n <div id=\"div1\"></div>\r\n <script type=\"text/javascript\">\r\n scil.ready(function () {\r\n var options = {\r\n tabs: {\r\n a: { caption: \"Tab A\" },\r\n b: { caption: \"Tab B\", closable: true }\r\n },\r\n onRemoveTab: function (td, tabs) { alert(\"remove tab\"); },\r\n onBeforeShowTab: function (td, old, tabs) { },\r\n onShowTab: function (td, old, tabs) { },\r\n onCreateTab: function(td, clientarea, tabs) { },\r\n border: true\r\n };\r\n\r\n var tabs = new scil.Tabs(\"div1\", options);\r\n });\r\n </script>\r\n * 
\r\n */\r\nexport class TabsInt {\r\n private readonly T: string;\r\n private options: any;\r\n private currenttab: HTMLTableCellElement & { clientarea: HTMLElement };\r\n private area: HTMLTableCellElement;\r\n public dom: HTMLElement;\r\n private table: HTMLElement;\r\n private vertical: boolean;\r\n private tabcontainer: HTMLTableElement;\r\n private tr: HTMLTableRowElement;\r\n\r\n constructor(parent, options) {\r\n this.T = 'TABS';\r\n const me = this;\r\n this.options = options == null ? {} : options;\r\n this.currenttab = null;\r\n this.area = null;\r\n\r\n if (typeof (parent) == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n let tabarea;\r\n const tbody = scil.Utils.createTable(parent, 0, 0, {width: '100%', marginBottom: this.options.marginBottom == null ? '20px' : this.options.marginBottom});\r\n this.dom = this.table = tbody.parentElement;\r\n this.vertical = true;\r\n const tabborder = this.options.border ? null : scil.Tabs.kBorderStyle;\r\n const areapadding = this.options.border ? '5px' : 0;\r\n const areaborder = this.options.border ? scil.Tabs.kBorderStyle : null;\r\n const taggap = this.options.tabgap == null ? '4px' : this.options.tabgap;\r\n switch (this.options.tablocation) {\r\n case 'left': {\r\n const tr = scil.Utils.createElement(tbody, 'tr');\r\n tabarea = scil.Utils.createElement(tr, 'td', null, {borderRight: tabborder, width: '1%', verticalAlign: 'top', borderRightWidth: taggap});\r\n this.area = scil.Utils.createElement(tr, 'td', null, {padding: `${areapadding}px`, border: areaborder, width: '99%', verticalAlign: 'top'});\r\n this.vertical = false;\r\n break;\r\n }\r\n case 'right': {\r\n const tr = scil.Utils.createElement(tbody, 'tr');\r\n this.area = scil.Utils.createElement(tr, 'td', null, {padding: `${areapadding}px`, border: areaborder, width: '1%', verticalAlign: 'top'});\r\n tabarea = scil.Utils.createElement(tr, 'td', null, {borderLeft: tabborder, width: '99%', verticalAlign: 'top', borderLeftWidth: taggap});\r\n this.vertical = false;\r\n break;\r\n }\r\n case 'bottom': {\r\n this.area = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, {padding: `${areapadding}px`, border: areaborder});\r\n tabarea = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, {borderTop: tabborder, borderTopWidth: taggap});\r\n break;\r\n }\r\n default: { // top\r\n tabarea = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, {borderBottom: tabborder, borderBottomWidth: taggap});\r\n this.area = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, {padding: `${areapadding}px`, border: areaborder});\r\n break;\r\n }\r\n }\r\n\r\n this.tabcontainer = scil.Utils.createTable(tabarea, 0, 0);\r\n if (this.vertical)\r\n this.tr = scil.Utils.createElement(this.tabcontainer, 'tr');\r\n\r\n if (this.options.showtabs == false)\r\n this.tr.style.display = 'none';\r\n\r\n const tabs = this.options.tabs;\r\n if (tabs != null) {\r\n if (tabs.length > 0) {\r\n for (let i = 0; i < tabs.length; ++i)\r\n this.addTab(tabs[i]);\r\n } else {\r\n for (const k in tabs)\r\n this.addTab(tabs[k], k);\r\n }\r\n }\r\n }\r\n\r\n resizeClientarea(width, height) {\r\n const list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes;\r\n for (let i = 0; i < list.length; ++i) {\r\n let td;\r\n if (this.vertical)\r\n td = list[i];\r\n else\r\n td = list[i].childNodes[0];\r\n\r\n if (td.clientarea == null)\r\n continue;\r\n\r\n if (width > 0) {\r\n td.clientarea.style.width = width + 'px';\r\n this.options.clientareawidth = width;\r\n }\r\n if (height > 0) {\r\n td.clientarea.style.height = height + 'px';\r\n this.options.clientareaheight = height;\r\n }\r\n }\r\n\r\n if (this.options.onresizeclientarea != null)\r\n this.options.onresizeclientarea(width, height, this);\r\n }\r\n\r\n addTab(options, key?: any): FormTabElement {\r\n if (this.vertical) {\r\n if (this.tr.childNodes.length > 0)\r\n scil.Utils.createElement(this.tr, 'td', ' ');\r\n } else {\r\n if (this.tabcontainer.childNodes.length > 0)\r\n scil.Utils.createElement(scil.Utils.createElement(scil.Utils.createElement(this.tabcontainer, 'tr'), 'td'), 'div', null, {height: `5px`});\r\n }\r\n\r\n var me = this;\r\n var caption = options.caption;\r\n var icon = options.icon;\r\n var padding = this.options.tabpadding == null ? '5px 10px 1px 10px' : this.options.tabpadding;\r\n var tr = this.vertical ? this.tr : scil.Utils.createElement(this.tabcontainer, 'tr');\r\n var style: Partial = {border: 'solid 1px #ddd', padding: padding, backgroundColor: '#eee'};\r\n\r\n switch (this.options.tablocation) {\r\n case 'left':\r\n style.borderRight = 'none';\r\n style.borderTopLeftRadius = '5px';\r\n style.borderBottomLeftRadius = '5px';\r\n break;\r\n case 'right':\r\n style.borderLeft = 'none';\r\n style.borderTopRightRadius = '5px';\r\n style.borderBottomRightRadius = '5px';\r\n break;\r\n case 'bottom':\r\n style.borderTop = 'none';\r\n style.borderBottomLeftRadius = '5px';\r\n style.borderBottomRightRadius = '5px';\r\n break;\r\n default: // top\r\n style.borderBottom = 'none';\r\n style.borderTopLeftRadius = '5px';\r\n style.borderTopRightRadius = '5px';\r\n break;\r\n }\r\n\r\n const td = scil.Utils.createElement(tr, 'td', null, style, {key: key || options.tabkey, sciltab: '1'}) as HTMLTableCellElement & { _label: any, clientarea: any }; // TODO\r\n const tbody2 = scil.Utils.createTable2(td, null, {cellSpacing: 0, cellPadding: 0});\r\n const s = (icon != null ? '' : '') + (caption == null ? 'Tab' : scil.Lang.res(caption));\r\n\r\n let td2 = null;\r\n switch (this.options.tablocation) {\r\n case 'left':\r\n case 'right':\r\n td._label = scil.Utils.createElement(scil.Utils.createElement(tbody2, 'tr'), 'td', s, null, null, function(e) {\r\n me.showTab(td);\r\n });\r\n td2 = scil.Utils.createElement(scil.Utils.createElement(tbody2, 'tr'), 'td');\r\n break;\r\n case 'bottom':\r\n default: // top\r\n var tr2 = scil.Utils.createElement(tbody2, 'tr');\r\n td._label = scil.Utils.createElement(tr2, 'td', s, null, null, function(e) {\r\n me.showTab(td);\r\n });\r\n td2 = scil.Utils.createElement(tr2, 'td');\r\n break;\r\n }\r\n\r\n if (options.closable) {\r\n const img = scil.Utils.createButton(td2, {\r\n src: scil.Utils.imgSrc('img/del2.gif'), title: 'Close', style: {}, onclick: function(e) {\r\n me.closeTab(td);\r\n },\r\n });\r\n img.style.marginLeft = '10px';\r\n td.style.paddingRight = '2px';\r\n\r\n scil.connect(td2, 'onmouseover', function() {\r\n img.style.background = '#fff';\r\n });\r\n scil.connect(td2, 'onmouseout', function() {\r\n img.style.background = '';\r\n });\r\n }\r\n\r\n if (options.onmenu != null) {\r\n scil.connect(td, 'onmouseup',\r\n function(e) {\r\n if (scil.Utils.isRightButton(e))\r\n options.onmenu(e);\r\n e.preventDefault();\r\n });\r\n scil.Utils.disableContextMenu(td);\r\n }\r\n\r\n options.caption = null;\r\n options.visible = this.currenttab == null;\r\n options.marginBottom = 0;\r\n options.caption = caption;\r\n\r\n td.clientarea = scil.Utils.createElement(this.area, 'div', null, {display: 'none', width: this.options.clientareawidth, height: this.options.clientareaheight, overflowY: this.options.clientareaheight > 0 ? 'scroll' : null});\r\n if (options.style != null)\r\n dojo.style(td.clientarea, options.style);\r\n\r\n if (this.currenttab == null)\r\n this.showTab(td);\r\n\r\n if (options.html != null)\r\n td.clientarea.innerHTML = options.html;\r\n\r\n if (this.options.onCreateTab != null)\r\n this.options.onCreateTab(td, td.clientarea, this);\r\n\r\n return td;\r\n }\r\n\r\n updateTabLabel(key, s) {\r\n var td = typeof (key) == 'string' ? this.findTab(key) : key;\r\n if (td != null && td._label != null)\r\n td._label.innerHTML = s;\r\n }\r\n\r\n closeTab(td) {\r\n var me = this;\r\n scil.Utils.confirmYes('Close this tab?', function() {\r\n me.removeTab(td);\r\n });\r\n }\r\n\r\n currentTabKey() {\r\n return this.currenttab == null ? null : this.currenttab.getAttribute('key');\r\n }\r\n\r\n findTab(key) {\r\n var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes;\r\n for (var i = 0; i < list.length; ++i) {\r\n var td;\r\n if (this.vertical)\r\n td = list[i];\r\n else\r\n td = list[i].childNodes[0];\r\n\r\n if (td.getAttribute('key') == key)\r\n return td;\r\n }\r\n return null;\r\n }\r\n\r\n removeTab(key) {\r\n var td = typeof (key) == 'string' ? this.findTab(key) : key;\r\n if (td == null)\r\n return null;\r\n\r\n if (this.options.onRemoveTab != null)\r\n this.options.onRemoveTab(td, this);\r\n\r\n var list = this.allTabsAsArray();\r\n var i = scil.Utils.indexOf(list, td);\r\n\r\n if (i > 0)\r\n this.showTab(list[i - 1]);\r\n else\r\n this.showTab(list[i + 1]);\r\n\r\n td.clientarea.parentNode.removeChild(td.clientarea);\r\n delete td.clientarea;\r\n\r\n if (this.vertical) {\r\n var td0 = td.previousSibling;\r\n if (td0 != null && td0.clientarea == null)\r\n td0.parentNode.removeChild(td0);\r\n td.parentNode.removeChild(td);\r\n } else {\r\n var tr = td.parentNode;\r\n var tr0 = tr.previousSibling;\r\n if (tr0 != null)\r\n tr0.parentNode.removeChild(tr0);\r\n tr.parentNode.removeChild(tr);\r\n }\r\n }\r\n\r\n allTabsAsArray() {\r\n var ret = [];\r\n var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes;\r\n for (var i = 0; i < list.length; ++i) {\r\n var td;\r\n if (this.vertical)\r\n td = list[i];\r\n else\r\n td = list[i].childNodes[0];\r\n\r\n if (td.getAttribute('sciltab') == '1')\r\n ret.push(td);\r\n }\r\n return ret;\r\n }\r\n\r\n allTabs() {\r\n var ret = {};\r\n var list = this.vertical ? this.tr.childNodes : this.tabcontainer.childNodes;\r\n for (var i = 0; i < list.length; ++i) {\r\n var td;\r\n if (this.vertical)\r\n td = list[i];\r\n else\r\n td = list[i].childNodes[0];\r\n\r\n if (td.getAttribute('sciltab') == '1') {\r\n var k = td.getAttribute('key');\r\n if (k != null && k != '')\r\n ret[k] = td;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n showTab(td) {\r\n if (typeof (td) == 'string') {\r\n td = this.findTab(td);\r\n } else if (typeof (td) == 'number') {\r\n var list = this.allTabsAsArray();\r\n td = list[td];\r\n }\r\n\r\n if (td != null && td.tagName != 'TD')\r\n td = scil.Utils.getParent(td, 'td');\r\n\r\n if (td == null)\r\n return;\r\n\r\n const old = this.currenttab;\r\n if (this.options.onBeforeShowTab != null) {\r\n if (this.options.onBeforeShowTab(td, old) == false)\r\n return;\r\n }\r\n\r\n if (this.currenttab != null) {\r\n this.currenttab.style.backgroundColor = '#eee';\r\n this.currenttab.style.color = '';\r\n }\r\n\r\n if (old != null && old.clientarea != null)\r\n old.clientarea.style.display = 'none';\r\n\r\n td.style.backgroundColor = scil.Tabs.kHighlightColor;\r\n td.style.color = '#fff';\r\n this.currenttab = td;\r\n if (td.clientarea != null)\r\n td.clientarea.style.display = '';\r\n\r\n if (this.options.onShowTab != null)\r\n this.options.onShowTab(td, old, this);\r\n }\r\n\r\n show() {\r\n this.table.style.display = '';\r\n }\r\n\r\n hide() {\r\n this.table.style.display = 'none';\r\n }\r\n}\r\n\r\nexport class Tabs extends TabsInt {\r\n static kHighlightColor: string = '#88f';\r\n static kBorderStyle: string = 'solid 1px #88f';\r\n}\r\n\r\nscil.Tabs = Tabs;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\nimport type {FieldType, Form, ItemType} from './Form';\r\nimport type {DojoType} from '../src/types/dojo';\r\nimport type {ITabs} from '../src/types/scil.form';\r\n\r\ndeclare const dojo: DojoType;\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * TabbedForm class - TabbedForm Control\r\n * @class scilligence.TabbedForm\r\n *
\r\n * Example:\r\n *    dojo.ready(function () {\r\n *        var parent = scil.Utils.createElement(document.body, \"div\");\r\n *            var options = { tabs: {\r\n *                a: { caption: \"Tab A\", fields: { field1: { label: \"Field1\"}} },\r\n *                b: { caption: \"Tab B\", fields: { field2: { label: \"Field2\" }, field3: { label: \"Field3\"}} }\r\n *            }, buttons: { label: \"Test\", onclick: function() { alert(999); } }, border: true\r\n *            };\r\n *        var form = new scil.TabbedForm(options).render(parent);\r\n *    });\r\n * 
\r\n */\r\nexport class TabbedForm {\r\n private readonly T: string;\r\n private readonly options: any;\r\n private form: Form;\r\n private buttons: any[];\r\n private readonly fields: { [fName: string]: FieldType };\r\n private tabs: ITabs;\r\n private items: { [iName: string]: ItemType };\r\n private viewonly: boolean;\r\n\r\n constructor(options: any) {\r\n this.T = 'TABBED_FORM';\r\n this.form = null;\r\n this.options = options;\r\n this.buttons = [];\r\n this.fields = {};\r\n }\r\n\r\n render(parent) {\r\n if (typeof (parent) == 'string')\r\n parent = dojo.byId(parent);\r\n\r\n var me = this;\r\n this.options.onShowTab = function(td, old) {\r\n if (!td.rendered && old != null)\r\n me.renderTabForm(td);\r\n };\r\n\r\n this.options.onBeforeShowTab = function(td, old) {\r\n if (me.options.onbeforeshowtab != null && td != old)\r\n return me.options.onbeforeshowtab(td, old);\r\n };\r\n\r\n var first = true;\r\n for (var k in this.options.tabs)\r\n this.options.tabs[k].tabkey = k;\r\n\r\n this.tabs = new scil.Tabs(parent, this.options);\r\n for (var k in this.options.tabs) {\r\n this.options.tabs[k].tabkey = k;\r\n var td = this.tabs.findTab(k);\r\n td.form = new scil.Form(this.options);\r\n\r\n if (!this.options.delayrender || first) {\r\n this.renderTabForm(td);\r\n first = false;\r\n }\r\n }\r\n\r\n var buttons = this.options.buttons;\r\n if (buttons != null) {\r\n var div = scil.Utils.createElement(parent, 'div', null, {marginTop: '10px', textAlign: 'center'});\r\n if (buttons.length > 0) {\r\n for (var i = 0; i < buttons.length; ++i)\r\n this.buttons.push(scil.Utils.createButton(div, buttons[i]));\r\n } else {\r\n this.buttons.push(scil.Utils.createButton(div, buttons));\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a field value\r\n * @function setFieldValue\r\n * @param {string} id - the id of the field\r\n * @param {string} v - value to be set\r\n */\r\n setFieldValue(id, v, data) {\r\n var field = this.fields[id];\r\n scil.Form.setFieldData(this.fields[id], this.items[id], this.viewonly, v, data);\r\n }\r\n\r\n focus(key) {\r\n scil.Form.focus(this.fields, key);\r\n }\r\n\r\n /**\r\n * Check required fields\r\n * @function checkRequiredFields\r\n */\r\n checkRequiredFields(stub: number) {\r\n var n = 0;\r\n var tabs = this.tabs.allTabs();\r\n for (var k in tabs) {\r\n var form = tabs[k].form;\r\n if (form != null)\r\n n += form.checkRequiredFields();\r\n }\r\n return n;\r\n }\r\n\r\n /**\r\n * Reset required fields\r\n * @function resetRequiredFields\r\n */\r\n resetRequiredFields() {\r\n var tabs = this.tabs.allTabs();\r\n for (var k in tabs) {\r\n var form = tabs[k].form;\r\n if (form != null)\r\n form.resetRequiredFields();\r\n }\r\n }\r\n\r\n renderTabForm(td) {\r\n if (td.rendered)\r\n return;\r\n\r\n var k = td.getAttribute('key');\r\n var fields = null;\r\n if (this.options.tabs != null && this.options.tabs[k] != null)\r\n fields = this.options.tabs[k].fields;\r\n\r\n var display = td.clientarea.style.display;\r\n td.clientarea.style.display = '';\r\n td.form.render(td.clientarea, fields, this.options.tabs[k]);\r\n td.clientarea.style.display = display;\r\n\r\n scil.apply(this.fields, td.form.fields);\r\n td.rendered = true;\r\n }\r\n\r\n getCurTabData(includeNullValues) {\r\n if (this.tabs.currenttab == null || this.tabs.currenttab.form == null)\r\n return null;\r\n return this.tabs.currenttab.form.getData(includeNullValues);\r\n }\r\n\r\n /**\r\n * Collect form data in xml format\r\n * @function getXml\r\n * @returns xml string\r\n */\r\n getXml(nowrapper) {\r\n var ret = nowrapper ? '' : '\\n';\r\n var tabs = this.tabs.allTabs();\r\n for (var k in tabs) {\r\n var form = tabs[k].form;\r\n if (form != null)\r\n ret += form.getXml(true);\r\n }\r\n if (!nowrapper)\r\n ret += '';\r\n return ret;\r\n }\r\n\r\n /**\r\n * Set form data\r\n * @function setXml\r\n * @param {xml} data the form data, *id* is the key\r\n */\r\n setXml(xml) {\r\n try {\r\n var data = scil.Form.xml2Json(xml);\r\n this.setData(data);\r\n } catch (e) {\r\n alert('Error raised when setting form data: ' + e.message);\r\n }\r\n }\r\n\r\n getData(includeNullValues) {\r\n if (this.options.getdata == 'tab')\r\n return this.getCurTabData(includeNullValues);\r\n\r\n var ret = {};\r\n var tabs = this.tabs.allTabs();\r\n for (var k in tabs) {\r\n var form = tabs[k].form;\r\n if (form != null) {\r\n var data = form.getData(includeNullValues);\r\n scil.apply(ret, data);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n setData(data, overwritemode?: boolean) {\r\n if (this.options.setdata == 'tab') {\r\n if (this.tabs.currenttab != null && this.tabs.currenttab.form != null)\r\n this.tabs.currenttab.form.setData(data, overwritemode);\r\n } else {\r\n var tabs = this.tabs.allTabs();\r\n for (var k in tabs) {\r\n var form = tabs[k].form;\r\n if (form != null)\r\n form.setData(data, overwritemode);\r\n }\r\n }\r\n }\r\n}\r\n\r\nscil.TabbedForm = TabbedForm;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from \"../src/types/scil\";\r\nimport type {IPageForm, Page} from './Page';\r\nimport type {PageExplorerForm} from './Page.ExplorerForm';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page.Custom class - Page.Custom Control\r\n * @class scilligence.Page.Custom\r\n *
\r\n * Example:\r\n *        var tabs = this.page.addTabs();\r\n *        scil.pmf.Company.allForms(this, tabs, this.parenttable, true);\r\n *\r\n *        var me = this;\r\n *        this.dynamicform = tabs.addForm({\r\n *            caption: \"Dynamic Form\",\r\n *            type: \"custom\",\r\n *            onclear: function () {\r\n *                scil.Utils.removeAll(me.dynamicform.form.div);\r\n *            },\r\n *            onrefresh: function (from, args) {\r\n *                scil.Utils.removeAll(me.dynamicform.form.div);\r\n *                var fields = {\r\n *                    mass: { label: \"Mass\", type: \"number\", width: 200, unit: \"g\" },\r\n *                    name: { label: \"Compound Name\", type: \"input\", width: 200, button: { label: \"Test\", onclick: function () { alert(99); } } },\r\n *                    vendor: { label: \"Vendor\", type: \"select\", options: [\"Company A\", \"Company B\"], width: 200 }\r\n *                };\r\n *                var form = new scil.Form({ viewonly: false });\r\n *                form.render(me.dynamicform.form.div, fields, { immediately: true });\r\n *            }\r\n *        });\r\n * 
\r\n */\r\nexport class PageCustom implements IPageForm {\r\n private readonly T: string;\r\n private refreshneeded: boolean;\r\n protected page: any;\r\n private options: any;\r\n private receivers: any[];\r\n private args: any;\r\n\r\n public form: PageExplorerForm;\r\n\r\n constructor(page: Page, options: any, parent: any) {\r\n this.T = 'PAGE.CUSTOM';\r\n const me = this;\r\n this.refreshneeded = true;\r\n this.page = page;\r\n this.options = options;\r\n this.receivers = [];\r\n\r\n let buttons = [];\r\n if (options.norefresh == false)\r\n buttons.push({\r\n src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function() {\r\n me.refresh();\r\n },\r\n });\r\n if (this.options.buttons != null)\r\n buttons = buttons.concat(this.options.buttons);\r\n\r\n this.form = new scil.Page.ExplorerForm(parent, {expandable: options.expandable, caption: options.caption, visible: options.visible, buttons: buttons, marginBottom: options.marginBottom, expanded: this.options.expanded, onexpand: this.options.onexpand});\r\n this.form.host = this;\r\n if (this.options.oncreate != null)\r\n this.options.oncreate(this.form.div, this.options);\r\n }\r\n\r\n show() {\r\n this.form.show();\r\n }\r\n\r\n hide() {\r\n this.form.hide();\r\n }\r\n\r\n refresh(from?: any, args?: any) {\r\n if (args != null)\r\n this.args = args;\r\n\r\n if (!this.form.isVisible()) {\r\n this.refreshneeded = true;\r\n return;\r\n }\r\n\r\n this.refreshneeded = false;\r\n if (this.options.onrefresh != null)\r\n this.options.onrefresh(from, this.args, this);\r\n }\r\n\r\n clear() {\r\n if (this.options.onclear != null)\r\n this.options.onclear();\r\n }\r\n}\r\n\r\nscil.Page.Custom = PageCustom;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from \"../src/types/scil\";\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\nexport class PageExplorer {\r\n private readonly T: string;\r\n private options: any;\r\n private readonly resizing: any;\r\n public left: HTMLElement;\r\n public right: HTMLElement;\r\n public middle: HTMLElement;\r\n\r\n\r\n constructor(parent: HTMLElement | string, options?: any) {\r\n this.T = 'PAGE.EXPLORER';\r\n if (typeof (parent) == 'string')\r\n parent = scil.byId(parent);\r\n\r\n this.options = options;\r\n\r\n this.resizing = null;\r\n if (options.resizable == null)\r\n options.resizable = true;\r\n\r\n const tbody = scil.Utils.createTable(parent, 0, 0, {width: '100%'});\r\n const tr = scil.Utils.createElement(tbody, 'tr');\r\n\r\n if (options.left == false) {\r\n this.left = null;\r\n this.middle = null;\r\n } else {\r\n const w = options.leftwidth > 0 ? options.leftwidth : 200;\r\n const td = scil.Utils.createElement(tr, 'td', null, {width: '1%', paddingRight: '1px'}, {vAlign: 'top'});\r\n const tbody2 = scil.Utils.createTable(td, 0, 0, options.resizable ? null : {width: w});\r\n const tr2 = scil.Utils.createElement(tbody2, 'tr');\r\n const td2 = scil.Utils.createElement(tr2, 'td');\r\n this.left = scil.Utils.createElement(td2, 'div', null, options.resizable ? {width: w, overflow: 'hidden'} : null);\r\n\r\n if (options.middle != false) {\r\n this.middle = scil.Utils.createElement(tr, 'td');\r\n const div = scil.Utils.createElement(this.middle, 'div', null, {width: `${scil.Page.kHandleWidth}px`});\r\n scil.Utils.unselectable(this.middle);\r\n scil.Utils.unselectable(div);\r\n }\r\n\r\n if (options.resizable) {\r\n const me = this;\r\n new scil.Resizable(this.middle, {\r\n direction: 'x', mouseovercolor: scil.Page.kHandleColor, onresize: function(delta) {\r\n return me.onresize(delta);\r\n },\r\n });\r\n }\r\n }\r\n\r\n this.right = options.right == false ? null : scil.Utils.createElement(tr, 'td', null, {width: '99%', paddingLeft: options.left == false ? null : '1px'}, {vAlign: 'top'});\r\n }\r\n\r\n onresize(delta) {\r\n const w = scil.Utils.parsePixel(this.left.style.width) + delta;\r\n if (w > 20) {\r\n this.left.style.width = w + 'px';\r\n if (this.options.onresize != null)\r\n this.options.onresize(w, this);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nscil.Page.Explorer = PageExplorer;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {DojoType} from '../src/types/dojo';\r\nimport type {ScilModuleType} from '../src/types';\r\n\r\ndeclare const dojo: DojoType;\r\ndeclare const scil: ScilModuleType;\r\n\r\nexport class PageExplorerFormInt {\r\n private readonly T: string;\r\n private options: any;\r\n public dom: HTMLElement;\r\n private root: HTMLElement;\r\n private title: HTMLElement;\r\n private table: HTMLTableElement;\r\n\r\n public main: HTMLElement;\r\n public div: HTMLDivElement;\r\n public host: any;\r\n public toolbar: HTMLElement;\r\n\r\n\r\n constructor(parent: HTMLElement | string, options) {\r\n this.T = 'PAGE.EXPLORER_FORM';\r\n this.options = options == null ? {} : options;\r\n\r\n if (typeof (parent) == 'string')\r\n parent = scil.byId(parent);\r\n\r\n const tbody = scil.Utils.createTable(parent, 0, 0, {width: '100%', background: '#fff'});\r\n this.dom = this.root = tbody.parentNode as HTMLElement;\r\n if (this.options.visible == false)\r\n this.root.style.display = 'none';\r\n\r\n if (options.caption == null) {\r\n tbody.parentElement/* parentNode */.style.borderTop = 'solid 1px ' + scil.Page.ExplorerForm.kHeaderStyle.background;\r\n this.title = null;\r\n } else {\r\n this.title = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', scil.Lang.res(options.caption), scil.Page.ExplorerForm.kHeaderStyle);\r\n }\r\n this.toolbar = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, scil.Page.ExplorerForm.kToolbarStyle);\r\n if (options.toolbarvisible == false)\r\n this.toolbar.style.display = 'none';\r\n this.toolbar.style.whiteSpace = 'nowrap'; //I#11762\r\n\r\n this.main = scil.Utils.createElement(scil.Utils.createElement(tbody, 'tr'), 'td', null, scil.Page.ExplorerForm.kAreaStyle);\r\n this.div = scil.Utils.createElement(this.main, 'div');\r\n this.table = tbody.parentNode as HTMLTableElement;\r\n\r\n scil.Form.createToolbarButtons(this.toolbar, options.buttons, options.padding);\r\n\r\n if (this.title != null && options.expandable != false) {\r\n const me = this;\r\n dojo.connect(this.title, 'onclick', function() {\r\n const f = !me.isExpanded();\r\n me.expand(f);\r\n if (me.options.onexpand != null)\r\n me.options.onexpand(f);\r\n });\r\n\r\n if (options.expanded == false)\r\n this.expand(false);\r\n }\r\n\r\n if (this.options.marginTop != null)\r\n this.table.style.marginTop = this.options.marginTop;\r\n this.table.style.marginBottom = this.options.marginBottom == null ? '25px' : this.options.marginBottom;\r\n }\r\n\r\n isVisible(): boolean {\r\n return scil.Utils.isAllParentVisible(this.root);\r\n }\r\n\r\n show(): void {\r\n if (this.isVisible())\r\n return;\r\n this.root.style.display = '';\r\n\r\n if (this.host != null && this.host.refresh != null && this.host.refreshneeded)\r\n this.host.refresh();\r\n }\r\n\r\n hide(): void {\r\n this.root.style.display = 'none';\r\n }\r\n\r\n collapse(): void {\r\n this.expand(false);\r\n }\r\n\r\n expand(f: boolean | null): void {\r\n if (f == null)\r\n f = true;\r\n this.toolbar.style.display = f ? '' : 'none';\r\n this.main.style.display = f ? '' : 'none';\r\n this.title.style.backgroundImage = scil.App.imgSmall(f ? 'expand.png' : 'collapse.png', true);\r\n this.title.style.backgroundRepeat = 'no-repeat';\r\n this.title.style.backgroundPosition = 'left center';\r\n\r\n if (this.host != null && this.host.refresh != null && this.host.refreshneeded)\r\n this.host.refresh();\r\n }\r\n\r\n isExpanded(): boolean {\r\n return this.main.style.display == '';\r\n }\r\n}\r\n\r\nexport class PageExplorerForm extends PageExplorerFormInt {\r\n static kHeaderStyle = {background: '#88f', color: 'white', padding: '3px 10px 3px 16px', whiteSpace: 'nowrap', borderTopLeftRadius: '5px', borderTopRightRadius: '5px'};\r\n static kToolbarStyle = {background: '#f5f5f5', border: 'solid 1px #f5f5f5', padding: '0 5px 0 5px'};\r\n static kAreaStyle = {border: 'solid 1px #f5f5f5', padding: '5px'};\r\n}\r\n\r\nscil.Page.ExplorerForm = PageExplorerForm;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\nimport type {IPageForm, Page} from './Page';\r\nimport type {PageExplorerForm} from './Page.ExplorerForm';\r\nimport type {Form} from '../form/Form';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page.Form class - Page.Form Control\r\n * @class scilligence.Page.Form\r\n */\r\nexport class PageForm implements IPageForm {\r\n private T: string;\r\n private receivers: any[];\r\n private refreshneeded: boolean;\r\n private page: Page;\r\n private options: any;\r\n private table: Form;\r\n private args: any;\r\n\r\n public form: PageExplorerForm;\r\n\r\n constructor(page: Page, options: any, parent: HTMLElement) {\r\n this.T = 'PAGE.FORM';\r\n const me = this;\r\n this.refreshneeded = true;\r\n this.page = page;\r\n this.options = options;\r\n this.receivers = [];\r\n\r\n let buttons = [];\r\n if (options.norefresh == false)\r\n buttons.push({\r\n src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function() {\r\n me.refresh();\r\n },\r\n });\r\n if (this.options.buttons != null)\r\n buttons = buttons.concat(this.options.buttons);\r\n\r\n if (options.viewonly == null)\r\n options.viewonly = true;\r\n\r\n this.form = new scil.Page.ExplorerForm(parent, {expandable: options.expandable, caption: options.caption, visible: options.visible, buttons: buttons, marginBottom: options.marginBottom, expanded: this.options.expanded, onexpand: this.options.onexpand});\r\n this.form.host = this;\r\n this.table = new scil.Form({alternativeforms: this.options.alternativeforms, viewonly: options.viewonly, onchange: this.options.onformchange});\r\n this.table.render(this.form.div, this.options.fields, {immediately: true, hidelabel: options.hidelabel});\r\n }\r\n\r\n show() {\r\n this.form.show();\r\n }\r\n\r\n hide() {\r\n this.form.hide();\r\n }\r\n\r\n refresh(from?: any, args?: any) {\r\n if (args != null)\r\n this.args = args;\r\n\r\n if (!this.form.isVisible() || !this.form.isExpanded()) {\r\n this.refreshneeded = true;\r\n return;\r\n }\r\n\r\n if (scil.Utils.isDictEmpty(this.args))\r\n return;\r\n\r\n const me = this;\r\n this.refreshneeded = false;\r\n let params = this.args;\r\n if (params == null)\r\n params = {};\r\n if (me.options.onbeforerefresh != null)\r\n me.options.onbeforerefresh(params);\r\n\r\n this.page.receiverClear(this);\r\n\r\n scil.Utils.ajax(this.page.url + this.options.object + '.load', function(ret) {\r\n if (me.options.onsetdata != null) {\r\n me.options.onsetdata(me.table, ret);\r\n } else if (me.options.savedoc && ret.doc != null && ret.doc != '') {\r\n me.table.setXml(ret.doc);\r\n me.table.setData(ret, true);\r\n } else {\r\n me.table.setData(ret);\r\n }\r\n }, params);\r\n }\r\n\r\n clear() {\r\n this.table.setData({});\r\n this.page.receiverClear(this);\r\n }\r\n}\r\n\r\nscil.Page.Form = PageForm;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\nimport type {Page} from './Page';\r\nimport type {Tabs} from '../form/Tab';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page.Tab class - Page.Tab Control\r\n * @class scilligence.Page.Tab\r\n */\r\nexport class PageTab {\r\n private readonly T: string;\r\n private page: Page;\r\n private options: any;\r\n private onShowTab2: any;\r\n public tabs: Tabs;\r\n\r\n\r\n constructor(page: Page, options: any, parent: HTMLElement) {\r\n this.T = 'PAGE.TAB';\r\n this.page = page;\r\n this.options = options == null ? {} : options;\r\n this.onShowTab2 = this.options.onShowTab;\r\n\r\n const me = this;\r\n this.options.onShowTab = function(tab, old) {\r\n if (old != null && old.form != null)\r\n old.form.hide();\r\n if (tab.form != null)\r\n tab.form.show();\r\n\r\n if (me.onShowTab2 != null)\r\n me.onShowTab2(tab, old);\r\n };\r\n this.tabs = new scil.Tabs(parent, this.options);\r\n }\r\n\r\n addForm(options: any, listento?: any) {\r\n const td = this.tabs.addTab(options);\r\n\r\n const caption = options.captions;\r\n options.caption = null;\r\n td.form = scil.Page.addForm(this.page, options, listento, td.clientarea);\r\n options.caption = caption;\r\n\r\n scil.Page.setBorder(td.form.form);\r\n return td.form;\r\n }\r\n\r\n removeTab(key) {\r\n return this.tabs.removeTab(key);\r\n }\r\n\r\n findTab(key) {\r\n return this.tabs.findTab(key);\r\n }\r\n\r\n showTab(td) {\r\n this.tabs.showTab(td);\r\n }\r\n\r\n show() {\r\n this.tabs.show();\r\n }\r\n\r\n hide() {\r\n this.tabs.hide();\r\n }\r\n}\r\n\r\nscil.Page.Tab = PageTab;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\nimport type {IPageForm, Page} from './Page';\r\nimport type {PageExplorerForm} from './Page.ExplorerForm';\r\nimport type {ITable} from '../src/types/scil';\r\nimport type {IFormDialog} from '../src/types/scil.form';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page.Table class - Page.Table Control\r\n * @class scilligence.Page.Table\r\n */\r\nexport class PageTable implements IPageForm {\r\n private T: string;\r\n private refreshneeded: boolean;\r\n private page: Page;\r\n private options: any;\r\n private receivers: any[];\r\n private table: ITable;\r\n private readonly pages: HTMLDivElement;\r\n private readonly tablediv: HTMLDivElement;\r\n private args: any;\r\n private dlg: IFormDialog;\r\n\r\n public form: PageExplorerForm;\r\n\r\n constructor(page: Page, options: any, parent: HTMLElement) {\r\n this.T = 'PAGE.TABLE';\r\n const me = this;\r\n this.refreshneeded = true;\r\n this.page = page;\r\n this.options = options;\r\n this.receivers = [];\r\n\r\n let buttons = [];\r\n if (!options.norefresh)\r\n buttons.push({\r\n src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function() {\r\n me.refresh();\r\n },\r\n });\r\n if (this.options.fields != null) {\r\n buttons.push('-');\r\n if (this.options.canadd != false)\r\n buttons.push({\r\n src: scil.App.imgSmall('add.png'), title: 'New', onclick: function() {\r\n me.add();\r\n },\r\n });\r\n if (this.options.canedit != false)\r\n buttons.push({\r\n src: scil.App.imgSmall('edit.png'), title: 'Edit', onclick: function() {\r\n me.edit();\r\n },\r\n });\r\n }\r\n if (this.options.buttons != null)\r\n buttons = buttons.concat(this.options.buttons);\r\n\r\n if (this.options.columnhidable) {\r\n buttons.push('-');\r\n buttons.push({\r\n src: scil.App.imgSmall('columns.png'), title: 'Show/Hide Columns', onclick: function() {\r\n me.table.showHideColumns();\r\n },\r\n });\r\n }\r\n\r\n this.form = new scil.Page.ExplorerForm(parent, {expandable: options.expandable, caption: options.caption, visible: options.visible, marginBottom: options.marginBottom, buttons: buttons, expanded: this.options.expanded, onexpand: this.options.onexpand});\r\n this.form.host = this;\r\n this.pages = scil.Utils.createElement(this.form.div, 'div');\r\n\r\n this.tablediv = scil.Utils.createElement(this.form.div, 'div');\r\n this.recreateTable();\r\n }\r\n\r\n recreateTable() {\r\n scil.Utils.removeAll(this.tablediv);\r\n\r\n const me = this;\r\n this.table = new scil.Table(true, null, {\r\n onAddRow: this.options.onAddRow, selectrow: true, onselectrow: function(tr) {\r\n me.selectrow(tr);\r\n }, rowcheck: this.options.rowcheck, grouping: this.options.grouping, grouplinestyle: this.options.grouplinestyle, hidecolumncookiekey: this.options.hidecolumncookiekey,\r\n });\r\n this.table.render(this.tablediv, this.options.columns);\r\n this.table.tbody.parentNode.style.width = '100%';\r\n\r\n if (this.options.oncreatetable != null)\r\n this.options.oncreatetable(this);\r\n }\r\n\r\n selectFirstRow() {\r\n this.table.selectFirstRow();\r\n }\r\n\r\n show() {\r\n this.form.show();\r\n }\r\n\r\n hide() {\r\n this.form.hide();\r\n }\r\n\r\n clear() {\r\n scil.Utils.removeAll(this.pages);\r\n this.table.setData({});\r\n this.page.receiverClear(this);\r\n }\r\n\r\n selectrow(tr) {\r\n const id = tr == null ? null : tr.getAttribute('key');\r\n let args = null;\r\n /*if (id != null)*/\r\n {\r\n args = {};\r\n args[this.options.key] = id;\r\n const data = this.table.getRowData(tr);\r\n if (this.options.name != null && data != null)\r\n args[this.options.name] = data[this.options.name];\r\n this.page.receiverRefresh(this, args);\r\n }\r\n\r\n if (this.options.onselectrow != null)\r\n this.options.onselectrow(tr, args);\r\n }\r\n\r\n loadPage(page) {\r\n if (this.args == null)\r\n this.args = {};\r\n if (this.options.onloadpage != null)\r\n this.options.onloadpage(this.args, page, this);\r\n this.refresh(null, null, null, page);\r\n }\r\n\r\n list(ret) {\r\n const me = this;\r\n if (ret == null)\r\n ret = {};\r\n this.table.setData(ret.rows == null ? ret : ret.rows);\r\n scil.Table.listPages(this.pages, ret.page, ret.pages, function(page) {\r\n me.loadPage(page);\r\n });\r\n }\r\n\r\n refresh(from?: any, args?: any, selectfirstrow?: boolean, page?: Page) {\r\n if (args != null)\r\n this.args = args;\r\n if (this.args == null)\r\n this.args = {};\r\n this.args.page = page;\r\n\r\n if (!this.form.isVisible() || !this.form.isExpanded()) {\r\n this.refreshneeded = true;\r\n return;\r\n }\r\n\r\n this.page.receiverClear(this);\r\n this.refreshneeded = false;\r\n\r\n const me = this;\r\n let params = this.args;\r\n if (params == null)\r\n params = {};\r\n if (me.options.onbeforerefresh != null)\r\n me.options.onbeforerefresh(params);\r\n\r\n const fun = this.options.jsonp ? scil.Utils.jsonp : scil.Utils.ajax;\r\n fun(this.page.url + this.options.object + '.list', function(ret) {\r\n if (me.options.onbeforelisting != null)\r\n me.options.onbeforelisting(ret, me);\r\n\r\n if (selectfirstrow) {\r\n me.list(ret);\r\n me.table.selectFirstRow();\r\n } else {\r\n const key = me.table.getCurrentKey();\r\n me.list(ret);\r\n if (key != null)\r\n me.table.selectRow(key);\r\n }\r\n //if (ret.length == 0)\r\n // scil.Utils.alert(\"No records found. It might because you don't have access to it.\");\r\n if (me.options.onrefreshed != null)\r\n me.options.onrefreshed(me);\r\n }, params);\r\n }\r\n\r\n add(values?: any) {\r\n if (this.options.onAddNew != null && this.options.onAddNew(this.args) == false)\r\n return;\r\n\r\n this.add2(values);\r\n }\r\n\r\n add2(values?: any) {\r\n this.create();\r\n this.dlg.show();\r\n if (this.options.usetabs)\r\n this.dlg.form.tabs.showTab(0);\r\n\r\n if (this.options.onshowform != null)\r\n this.options.onshowform(this.dlg, this.args);\r\n const data = values != null ? values : (this.options.defaultvalues == null ? {} : this.options.defaultvalues);\r\n this.applyArgs(data);\r\n if (this.options.key != null)\r\n data[this.options.key] = null;\r\n if (this.options.onloaddata)\r\n this.options.onloaddata(data, this.args, this.dlg);\r\n this.dlg.form.setData(data);\r\n this.dlg.editkey = null;\r\n\r\n this.showDelButton(false);\r\n }\r\n\r\n copyNew(key: string) {\r\n if (key == null) {\r\n for (const k in this.options.fields) {\r\n if (this.options.fields[k].iskey) {\r\n key = k;\r\n break;\r\n }\r\n }\r\n }\r\n if (key == null)\r\n return;\r\n\r\n const me = this;\r\n this.edit(function(ret) {\r\n ret[key] = ' ';\r\n me.dlg.editkey = null;\r\n });\r\n }\r\n\r\n edit(onsetdata?: Function) {\r\n if (this.table.currow == null) {\r\n scil.Utils.alert('please select a row first');\r\n return;\r\n }\r\n\r\n this.add2();\r\n this.showDelButton(true);\r\n\r\n const me = this;\r\n const data = {};\r\n data[this.options.key] = this.table.currow.getAttribute('key');\r\n this.dlg.editkey = data[this.options.key];\r\n\r\n if (this.options.onEdit != null && this.options.onEdit(data) == false)\r\n return;\r\n\r\n scil.Utils.ajax(this.page.url + this.options.object + '.load', function(ret) {\r\n //me.applyArgs(ret);\r\n if (me.options.onloaddata)\r\n me.options.onloaddata(ret, me.args, me.dlg);\r\n\r\n if (onsetdata != null)\r\n onsetdata(ret, me);\r\n\r\n if (me.options.savedoc && ret.doc != null && ret.doc != '') {\r\n me.dlg.form.setXml(ret.doc);\r\n me.dlg.form.setData(ret, true);\r\n } else {\r\n me.dlg.form.setData(ret);\r\n }\r\n }, data);\r\n }\r\n\r\n applyArgs(data) {\r\n if (this.args != null)\r\n scil.apply(data, this.args);\r\n }\r\n\r\n cancel() {\r\n if (this.dlg != null)\r\n this.dlg.hide();\r\n }\r\n\r\n save() {\r\n if (this.dlg.form.checkRequiredFields() > 0) {\r\n scil.Utils.alert('Some required field(s) are blank');\r\n return;\r\n }\r\n\r\n const me = this;\r\n const data = this.dlg.form.getData();\r\n if (this.options.savedoc)\r\n data.doc = this.dlg.form.getXml();\r\n if (this.options.onbeforesave) {\r\n if (this.options.onbeforesave(data, this.args, this.dlg.form) == false)\r\n return false;\r\n }\r\n\r\n scil.Utils.ajax(this.page.url + this.options.object + '.save', function(ret) {\r\n me.dlg.hide();\r\n if (ret != null && ret.rows != null && ret.rows.length > 0) {\r\n for (let i = 0; i < ret.rows.length; ++i) {\r\n if (me.dlg.editkey != null)\r\n me.table.updateRow(me.dlg.editkey, ret.rows[i]);\r\n else\r\n me.table.addRow(ret.rows[i]);\r\n }\r\n } else {\r\n me.refresh();\r\n }\r\n\r\n if (me.options.onaftersave)\r\n me.options.onaftersave(ret, me);\r\n }, data, {showprogress: true});\r\n }\r\n\r\n del() {\r\n const me = this;\r\n scil.Utils.confirmYes('Delete this record?', function() {\r\n const data = me.dlg.form.getData();\r\n scil.Utils.ajax(me.page.url + me.options.object + '.del', function(ret) {\r\n me.dlg.hide();\r\n me.refresh();\r\n }, data);\r\n });\r\n }\r\n\r\n showDelButton(f) {\r\n if (this.dlg == null)\r\n return;\r\n\r\n for (let i = 0; i < this.dlg.form.buttons.length; ++i) {\r\n const b = this.dlg.form.buttons[i];\r\n if (b != null && b.getAttribute('key') == 'delete') {\r\n b.style.display = f ? '' : 'none';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n create() {\r\n if (this.dlg != null)\r\n return;\r\n\r\n const me = this;\r\n let buttons = [{\r\n src: scil.App.imgSmall('submit.png'), label: 'Save', key: 'save', onclick: function() {\r\n me.save();\r\n },\r\n }];\r\n if (this.options.candelete != false)\r\n buttons.push({\r\n src: scil.App.imgSmall('del.png'), label: 'Delete', key: 'delete', onclick: function() {\r\n me.del();\r\n },\r\n });\r\n buttons.push({\r\n src: scil.App.imgSmall('cancel.png'), label: 'Cancel', key: 'cancel', onclick: function() {\r\n me.cancel();\r\n },\r\n });\r\n if (this.options.editbuttons != null) {\r\n if (this.options.editbuttons.length == null)\r\n buttons.push(this.options.editbuttons);\r\n else\r\n buttons = buttons.concat(this.options.editbuttons);\r\n }\r\n\r\n if (this.options.usetabs) {\r\n this.dlg = scil.Form.createTabDlgForm(this.options.formcaption, {tabs: this.options.fields, buttons: buttons, border: true, onchange: this.options.onformdatachange});\r\n } else {\r\n this.dlg = scil.Form.createDlgForm(this.options.formcaption, this.options.fields, buttons,\r\n {alternativeforms: this.options.alternativeforms, hidelabel: this.options.hidelabel, oncreated: this.options.oncreateform, onchange: this.options.onformdatachange});\r\n }\r\n }\r\n}\r\n\r\nscil.Page.Table = PageTable;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from '../src/types';\r\nimport type {IPageForm, Page} from './Page';\r\nimport type {PageExplorerForm} from './Page.ExplorerForm';\r\nimport type {ITree} from '../src/types/scil';\r\nimport type {IFormDialog} from '../src/types/scil.form';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page.Tree class - Page.Tree Control\r\n * @class scilligence.Page.Tree\r\n *
\r\n * Example:\r\n *    <div id='parent'></div>\r\n *    <script type=\"text/javascript\">\r\n *        scil.ready(function () {\r\n *            var root = { name: \"Root\", icon: \"\", expanded: true, children: [{ name: \"Child\", icon: \"\", leaf: true }, { name: \"Child 2\", icon: \"\", leaf: false } ] };\r\n *            var tree = new scil.Tree(scil.byId(\"parent\"));\r\n *            tree.clear();\r\n *            tree.add(null, root);\r\n *        });\r\n *    </script>\r\n * 
\r\n */\r\nexport class PageTree implements IPageForm {\r\n private readonly T: string;\r\n private refreshneeded: boolean;\r\n private page: Page;\r\n private options: any;\r\n private receivers: any[];\r\n private tree: ITree;\r\n private args: any;\r\n private dlg: IFormDialog;\r\n\r\n public form: PageExplorerForm;\r\n\r\n constructor(page: Page, options: any, parent: HTMLElement) {\r\n this.T = 'PAGE.TREE';\r\n var me = this;\r\n this.refreshneeded = true;\r\n this.page = page;\r\n this.options = options == null ? {} : options;\r\n this.receivers = [];\r\n\r\n var buttons = [];\r\n if (this.options.onrender == null) {\r\n buttons.push({\r\n src: scil.App.imgSmall('refresh.png'), title: 'Refresh', onclick: function() {\r\n me.refresh();\r\n },\r\n });\r\n if (this.options.fields != null) {\r\n buttons.push('-', {\r\n src: scil.App.imgSmall('add.png'), title: 'New', onclick: function() {\r\n me.add();\r\n },\r\n });\r\n buttons.push({\r\n src: scil.App.imgSmall('edit.png'), title: 'Edit', onclick: function() {\r\n me.edit();\r\n },\r\n });\r\n }\r\n }\r\n if (this.options.buttons != null)\r\n buttons = buttons.concat(this.options.buttons);\r\n var args = this.options.object == null ? null : {url: this.page.url + this.options.object + '.tree', icongap: '3px', onAddItem: this.options.onAddItem};\r\n\r\n this.form = new scil.Page.ExplorerForm(parent, {toolbarvisible: options.toolbarvisible, expandable: options.expandable, caption: options.caption, visible: options.visible, marginTop: options.marginTop, marginBottom: options.marginBottom, buttons: buttons, expanded: this.options.expanded, onexpand: this.options.onexpand});\r\n this.form.host = this;\r\n if (this.options.onrender != null) {\r\n this.options.onrender(this.form.div, args);\r\n } else {\r\n this.tree = new scil.Tree(this.form.div, args);\r\n this.tree.onSelectItem = function(item) {\r\n me.select(item);\r\n };\r\n this.tree.onExpandItem = function(node, f) {\r\n if (me.options.onexpand != null) return me.options.onexpand(node, f);\r\n };\r\n\r\n if (this.options.startrefresh != false)\r\n this.refresh();\r\n }\r\n\r\n this.form.main.style.padding = `0`;\r\n scil.Page.setBorder(this.form);\r\n }\r\n\r\n show() {\r\n this.form.show();\r\n }\r\n\r\n hide() {\r\n this.form.hide();\r\n }\r\n\r\n select(node) {\r\n if (this.options.onselectitem != null) {\r\n if (this.options.onselectitem(node))\r\n return;\r\n }\r\n\r\n var args = {};\r\n if (this.options.onBuildArgs != null) {\r\n args = this.options.onBuildArgs(node);\r\n } else {\r\n if (node != null && node.item != null && node.item[this.options.key] != null) {\r\n args[this.options.key] = node.item[this.options.key];\r\n if (this.options.name != null)\r\n args[this.options.name] = node.item.name;\r\n }\r\n }\r\n\r\n this.page.receiverRefresh(this, args);\r\n }\r\n\r\n refresh(currentOnly?: boolean) {\r\n if (!this.form.isVisible()) {\r\n this.refreshneeded = true;\r\n return;\r\n }\r\n\r\n if (this.tree == null)\r\n return;\r\n\r\n if (currentOnly) {\r\n this.tree.reloadCur();\r\n return;\r\n }\r\n\r\n this.refreshneeded = false;\r\n this.tree.clear();\r\n if (this.options.root != null) {\r\n if (this.options.root.selectable == null)\r\n this.options.root.selectable = false;\r\n if (this.options.root.showroot == false && this.options.root.children != null) {\r\n for (var i = 0; i < this.options.root.children.length; ++i)\r\n this.tree.cur = this.tree.add(null, this.options.root.children[i]);\r\n } else {\r\n this.tree.cur = this.tree.add(null, this.options.root);\r\n }\r\n }\r\n if (this.options.object != null && this.options.object != '')\r\n this.tree.reloadCur();\r\n }\r\n\r\n applyArgs(data) {\r\n if (this.args != null)\r\n scil.apply(data, this.args);\r\n }\r\n\r\n add() {\r\n this.create();\r\n this.dlg.show();\r\n if (this.options.onshowform != null)\r\n this.options.onshowform(this.dlg);\r\n\r\n this.dlg.form.setData(this.options.defaultvalues == null ? {} : this.options.defaultvalues);\r\n }\r\n\r\n edit() {\r\n this.add();\r\n\r\n var data = {};\r\n data[this.options.key] = this.tree.cur == null || this.tree.cur.item == null ? null : this.tree.cur.item[this.options.key];\r\n if (data[this.options.key] != null) {\r\n var me = this;\r\n scil.Utils.ajax(this.page.url + this.options.object + '.load', function(ret) {\r\n if (me.options.onloaddata)\r\n me.options.onloaddata(ret);\r\n me.dlg.form.setData(ret);\r\n }, data);\r\n }\r\n }\r\n\r\n save() {\r\n var me = this;\r\n var data = this.dlg.form.getData();\r\n if (this.options.onbeforesave) {\r\n var sel = {};\r\n sel[this.options.key] = this.tree.cur == null || this.tree.cur.item == null ? null : this.tree.cur.item[this.options.key];\r\n if (this.options.onbeforesave(data, sel) == false)\r\n return false;\r\n }\r\n scil.Utils.ajax(this.page.url + this.options.object + '.save', function() {\r\n me.dlg.hide();\r\n if (me.options.onSaved != null)\r\n me.options.onSaved(me, data);\r\n else\r\n me.refresh(true);\r\n }, data);\r\n }\r\n\r\n del() {\r\n var me = this;\r\n var data = this.dlg.form.getData();\r\n scil.Utils.ajax(this.page.url + this.options.object + '.del', function() {\r\n me.dlg.hide();\r\n me.refresh();\r\n }, data);\r\n }\r\n\r\n create() {\r\n if (this.dlg != null)\r\n return;\r\n\r\n var me = this;\r\n var buttons = [{\r\n src: scil.App.imgSmall('submit.png'), label: 'Save', onclick: function() {\r\n me.save();\r\n },\r\n },\r\n {\r\n src: scil.App.imgSmall('del.png'), label: 'Delete', onclick: function() {\r\n me.del();\r\n },\r\n }];\r\n this.dlg = scil.Form.createDlgForm(this.options.formcaption, this.options.fields, buttons);\r\n if (this.options.oncreateform != null)\r\n this.options.oncreateform(this.dlg.form);\r\n }\r\n}\r\n\r\nscil.Page.Tree = PageTree;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Scilligence JSDraw\r\n// Copyright (C) 2014 Scilligence Corporation\r\n// Version 1.0.0.2013-11-06\r\n// http://www.scilligence.com/\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from \"../src/types/scil\";\r\nimport type {PageCustom} from './Page.Custom';\r\nimport type {PageExplorer} from './Page.Explorer';\r\nimport type {PageExplorerForm} from './Page.ExplorerForm';\r\nimport type {PageForm} from './Page.Form';\r\nimport type {PageTable} from './Page.Table';\r\nimport type {PageTree} from './Page.Tree';\r\nimport type {PageTab} from './Page.Tab';\r\n\r\ndeclare const scil: ScilModuleType;\r\n\r\n/**\r\n * Page class - Page Framework\r\n * JSDraw.Page framework helps to quickly build modern web applications\r\n * @class scilligence.Page\r\n *
\r\n * Example:\r\n *    <div id=\"placeholder\"></div>\r\n *\r\n *    <script type=\"text/javascript\">\r\n *    scil.ready(function () { init(); });\r\n *\r\n *    function init() {\r\n *        var tree = {\r\n *            caption: \"Analytical Category\",\r\n *            key: \"category\",\r\n *            name: \"category\",\r\n *            //object: \"instrument\",\r\n *            root: { name: \"Categories\", icon: \"img/ext/bmp.gif\", children: [\r\n *                { name: \"Cambridge\", icon: \"img/ext/pdf.gif\", isleaf: true },\r\n *                { name: \"Boston\", icon: \"img/ext/doc.gif\", isleaf: true }\r\n *            ]\r\n *            }\r\n *        };\r\n *        this.page = new scil.Page(scil.byId(\"placeholder\"), tree, { resizable: true, leftwidth: 300 });\r\n *\r\n *        var width = 300;\r\n *        var instruments = this.page.addForm({\r\n *            caption: \"Analyticals\",\r\n *            key: \"analyticalid\",\r\n *            name: \"name\",\r\n *            object: \"analytical\",\r\n *            columns: {\r\n *                analyticalid: { type: \"hidden\", iskey: true },\r\n *                name: { label: \"Analytical Name\", width: 200 },\r\n *                category: { label: \"Category\", width: 200 },\r\n *                version: { label: \"Version\", width: 100 }\r\n *            },\r\n *            formcaption: \"Analytical\",\r\n *            fields: {\r\n *                analyticalid: { type: \"hidden\", iskey: true },\r\n *                name: { label: \"Analytical Name\", width: 800 },\r\n *                category: { label: \"Category\", width: 800 },\r\n *                version: { label: \"Version\", width: 100 },\r\n *                requestform: { label: \"Request Form\", type: \"textarea\", height: 200, width: 800 },\r\n *                resultform: { label: \"Request Form\", type: \"textarea\", height: 200, width: 800 }\r\n *            }\r\n *        }, this.page.tree);\r\n *\r\n *    }\r\n *    </script>\r\n * 
\r\n */\r\nexport class PageInt {\r\n private readonly T: string;\r\n private onRefreshReceivers: any;\r\n private readonly tree: PageTree;\r\n private readonly table: PageTable;\r\n private readonly form: PageForm;\r\n\r\n public readonly url: string;\r\n public readonly explorer: PageExplorer;\r\n\r\n constructor(parent: HTMLElement, tree: any, forms: any, middle?: any, onRefreshReceivers?: Function) {\r\n this.T = 'PAGE';\r\n let args;\r\n if (forms != null && forms.length > 0 || middle != null || onRefreshReceivers != null) {\r\n args = {middle: middle, onRefreshReceivers: onRefreshReceivers, forms: forms};\r\n } else {\r\n args = forms == null ? {} : forms;\r\n }\r\n\r\n if (tree == null && args.left == null)\r\n args.left = false;\r\n\r\n if (tree != null)\r\n args.onresize = tree.onresizetree;\r\n\r\n this.onRefreshReceivers = args.onRefreshReceivers;\r\n this.url = scil.Page.ajaxurl == null ? 'ajax.ashx?cmd=' : scil.Page.ajaxurl;\r\n this.explorer = new scil.Page.Explorer(parent, args);\r\n\r\n if (tree != null && tree.root != null && tree.root.children != null) {\r\n for (let i = 0; i < tree.root.children.length; ++i)\r\n tree.root.children[i].name = scil.Lang.res(tree.root.children[i].name);\r\n }\r\n\r\n this.tree = null;\r\n if (tree != null) {\r\n // const div = scil.Utils.createElement(this.explorer.left, \"div\", null, { width: tree.width > 0 ? tree.width : 240 });\r\n if (tree.type == 'table')\r\n this.table = new scil.Page.Table(this, tree, this.explorer.left);\r\n else if (tree.type == 'form')\r\n this.form = new scil.Page.Form(this, tree, this.explorer.left);\r\n else\r\n this.tree = new scil.Page.Tree(this, tree, this.explorer.left);\r\n }\r\n\r\n if (args.forms != null) {\r\n let last: IPageForm = this.tree == null ? this.form : this.tree;\r\n for (let i = 0; i < args.forms.length; ++i)\r\n last = this.addForm(args.forms[i], last);\r\n }\r\n }\r\n\r\n addTabs(options): PageTab {\r\n const tabs = new scil.Page.Tab(this, options, this.explorer.right);\r\n if (options != null && options.visible == false || options == false)\r\n tabs.hide();\r\n return tabs;\r\n }\r\n\r\n addDiv(text?: string, style?: Partial): HTMLDivElement {\r\n return scil.Utils.createElement(this.explorer.right, 'div', text, style);\r\n }\r\n\r\n addForm(options: any, listento?: any, parent?: any, leftside?: any) {\r\n return scil.Page.addForm(this, options, listento, parent, leftside);\r\n }\r\n\r\n addResizeHandle(onresize, height): HTMLDivElement {\r\n const div = this.addDiv();\r\n div.style.height = (height > 0 ? height : scil.Page.kHandleWidth) + 'px';\r\n div.style.marginBottom = '2px';\r\n new scil.Resizable(div, {direction: 'y', mouseovercolor: scil.Page.kHandleColor, onresize: onresize});\r\n return div;\r\n }\r\n\r\n removeForm(form) {\r\n const root = form.form.root;\r\n root.parentNode.removeChild(root);\r\n }\r\n\r\n receiverRefresh(form, args) {\r\n if (this.onRefreshReceivers != null)\r\n this.onRefreshReceivers(args, form);\r\n\r\n for (let i = 0; i < form.receivers.length; ++i)\r\n form.receivers[i].refresh(form, args);\r\n }\r\n\r\n receiverClear(form) {\r\n for (let i = 0; i < form.receivers.length; ++i)\r\n form.receivers[i].clear();\r\n }\r\n}\r\n\r\nexport interface IPageForm {\r\n form: PageExplorerForm;\r\n}\r\n\r\nexport class Page extends PageInt {\r\n static kHandleWidth: 5;\r\n static kHandleColor: '#aaf';\r\n\r\n // static Calendar: IPageCalendar; // Not found\r\n static Custom: typeof PageCustom;\r\n static Explorer: typeof PageExplorer;\r\n static ExplorerForm: typeof PageExplorerForm;\r\n static Form: typeof PageForm;\r\n static Tab: typeof PageTab;\r\n static Table: typeof PageTable;\r\n static Tree: typeof PageTree;\r\n\r\n static ajaxurl: string;\r\n\r\n static addForm(page: Page, options: any, listento: any, parent: any, leftside?: any): IPageForm | null {\r\n if (parent == null)\r\n parent = leftside ? page.explorer.left : page.explorer.right;\r\n\r\n let form: IPageForm | null = null;\r\n if (options.type == 'form')\r\n form = new scil.Page.Form(page, options, parent);\r\n else if (options.type == 'custom')\r\n form = new scil.Page.Custom(page, options, parent);\r\n /*\r\n else if (options.type == 'calendar')\r\n form = new scil.Page.Calendar(page, options, parent);\r\n */\r\n else\r\n form = new scil.Page.Table(page, options, parent);\r\n\r\n if (listento != null)\r\n listento.receivers.push(form);\r\n\r\n scil.Page.setBorder(form.form);\r\n options.form = form;\r\n return form;\r\n }\r\n\r\n static setBorder(form: PageExplorerForm) {\r\n form.toolbar.style.borderLeftColor = scil.Tabs.kHighlightColor;\r\n form.toolbar.style.borderRightColor = scil.Tabs.kHighlightColor;\r\n form.main.style.borderLeftColor = scil.Tabs.kHighlightColor;\r\n form.main.style.borderRightColor = scil.Tabs.kHighlightColor;\r\n form.main.style.borderBottomColor = scil.Tabs.kHighlightColor;\r\n }\r\n}\r\n\r\nscil.Page = Page;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {DojoType, DojoxType} from './types/dojo';\r\nimport type {ScilModuleType} from './types/scil';\r\nimport type {OrgType} from './types/org';\r\n\r\nimport type {Point} from './Point';\r\nimport type {Rect} from './Rect';\r\nimport type {Bond} from './Bond';\r\nimport type {Mol} from './Mol';\r\nimport type {AtomQueryType, IBio, IRGroup, JSDraw2ModuleType} from './types/jsdraw2';\r\n\r\ndeclare const dojo: DojoType;\r\ndeclare const dojox: DojoxType;\r\n\r\ndeclare const scil: ScilModuleType;\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\n\r\ndeclare const org: OrgType;\r\n\r\n/**\r\n * Atom class\r\n * @class scilligence.JSDraw2.Atom\r\n */\r\nexport class Atom {\r\n /**\r\n @property {Point} p Atom Coordinate\r\n */\r\n /**\r\n @property {number} charge Atom charges\r\n */\r\n /**\r\n @property {number} isotope Atom Isotope\r\n */\r\n /**\r\n @property {number} radical Atom Radical\r\n */\r\n /**\r\n @property {string} elem Element Symbol\r\n */\r\n /**\r\n @property {string} color Display Color\r\n */\r\n /**\r\n @property {bool} selected Selecting Flag\r\n */\r\n public readonly T: string;\r\n public p: Point;\r\n public charge: number;\r\n public isotope: number | null;\r\n public radical: number | null;\r\n public group: any;\r\n public alias: string;\r\n public superatom: any; // TODO: ?\r\n public attachpoints: any[];\r\n public rgroup: IRGroup;\r\n public bio: IBio;\r\n private locked: boolean;\r\n public hidden: boolean;\r\n private ratio: number;\r\n private _rect: Rect;\r\n public elem: string;\r\n public color: string;\r\n\r\n public hcount: number | null;\r\n public selected: boolean;\r\n public f: number | string | null;\r\n public bonds: Bond[];\r\n public id: number | null;\r\n public atommapid: number | null;\r\n public query: AtomQueryType | null;\r\n public hasError: boolean | null;\r\n public hs: number | null;\r\n public val: any | null;\r\n public tag: string | null;\r\n\r\n public _haslabel: boolean;\r\n public _parent: Mol;\r\n public atomid: number;\r\n public _outside: boolean;\r\n public mol: Mol;\r\n public iR: number | string | null;\r\n public __drawselect: boolean;\r\n public ringclosures: any;\r\n public aromatic: boolean;\r\n public _aaid: number;\r\n\r\n public __mol: Mol;\r\n\r\n\r\n /**\r\n * @constructor Atom\r\n * @param {Point} p - coordinate\r\n * @param {string} elem - element symbol\r\n * @bio {bool} bio - indicate if this is a Bio object\r\n */\r\n constructor(p: Point, elem?: string, bio?: any) {\r\n this.T = 'ATOM';\r\n this.p = p;\r\n this.charge = 0;\r\n this.isotope = null;\r\n this.radical = null;\r\n this.group = null;\r\n this.alias = null;\r\n this.superatom = null;\r\n this.attachpoints = [];\r\n this.rgroup = null;\r\n this.bio = bio;\r\n this.locked = false;\r\n this.hidden = null;\r\n this._rect = null;\r\n if (bio == null) {\r\n if (elem == null || elem.length == 0) {\r\n this.elem = 'C';\r\n } else if (elem == 'D') {\r\n this.elem = 'H';\r\n this.isotope = 2;\r\n } else if (elem == 'T') {\r\n this.elem = 'H';\r\n this.isotope = 3;\r\n } else {\r\n this.elem = elem;\r\n }\r\n } else {\r\n this.elem = elem;\r\n }\r\n this.color = null;\r\n this.hcount = null;\r\n this.selected = false;\r\n this.f = null;\r\n this.bonds = null;\r\n this.id = null;\r\n this.atommapid = null;\r\n this.query = null;\r\n this.hasError = null;\r\n this.hs = null;\r\n this.val = null;\r\n this.tag = null;\r\n }\r\n\r\n clone(selectedOnly: boolean) {\r\n const a = new JSDraw2.Atom(this.p.clone(), this.elem, dojo.clone(this.bio));\r\n a.charge = this.charge;\r\n a.isotope = this.isotope;\r\n a.radical = this.radical;\r\n a.hcount = this.hcount;\r\n a.id = this.id;\r\n a.color = this.color;\r\n a.tag = this.tag;\r\n a.alias = this.alias;\r\n a.superatom = this.superatom == null ? null : this.superatom.clone();\r\n a.attachpoints = scil.clone(this.attachpoints);\r\n a.rgroup = this.rgroup == null ? null : this.rgroup.clone(selectedOnly);\r\n a.atommapid = this.atommapid;\r\n a.hasError = this.hasError;\r\n a.hs = this.hs;\r\n a.val = this.val;\r\n if (this.query != null)\r\n a.query = scil.clone(this.query);\r\n if (this.bio != null)\r\n a.bio = scil.clone(this.bio);\r\n a.locked = this.locked;\r\n a.hidden = this.hidden;\r\n a.ratio = this.ratio;\r\n a.selected = this.selected;\r\n return a;\r\n }\r\n\r\n biotype(): TBio {\r\n return this.bio == null ? null : this.bio.type;\r\n }\r\n\r\n isMarkedStereo() {\r\n var bs = this.bonds;\r\n if (bs == null || bs.length != 3 && bs.length != 4)\r\n return false;\r\n\r\n for (var i = 0; i < bs.length; ++i) {\r\n if (bs[i].a1 == this && (bs[i].type == JSDraw2.BONDTYPES.WEDGE || bs[i].type == JSDraw2.BONDTYPES.HASH))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n updateRGroup() {\r\n if (this.rgroup != null)\r\n this.rgroup.text = (this.alias == null || this.alias == '' ? this.elem : this.alias) + '=';\r\n }\r\n\r\n getLabel() {\r\n if (this.alias != null && this.alias != '')\r\n return this.alias;\r\n return this.elem;\r\n }\r\n\r\n html(scale, len) {\r\n var s = '= 1 && this.radical <= 3)\r\n s += ' rad=\\'' + this.radical + '\\'';\r\n if (this.isotope > 0)\r\n s += ' iso=\\'' + this.isotope + '\\'';\r\n if (this.tag != null && this.tag != '')\r\n s += ' tag=\\'' + scil.Utils.escXmlValue(this.tag) + '\\'';\r\n if (this.alias != null && this.alias != '')\r\n s += ' alias=\\'' + scil.Utils.escXmlValue(this.alias) + '\\'';\r\n if (this.color != null)\r\n s += ' clr=\\'' + this.color + '\\'';\r\n if (this.atommapid > 0)\r\n s += ' ami=\\'' + this.atommapid + '\\'';\r\n if (this.locked)\r\n s += ' locked=\\'1\\'';\r\n if (this.attachpoints.length > 0) {\r\n var apos = '';\r\n for (var i = 0; i < this.attachpoints.length; ++i)\r\n apos += (i > 0 ? ',' : '') + this.attachpoints[i];\r\n s += ' apo=\\'' + apos + '\\'';\r\n }\r\n if (this.hs > 0)\r\n s += ' hs=\\'' + this.hs + '\\'';\r\n if (this.val > 0)\r\n s += ' val=\\'' + this.val + '\\'';\r\n if (this.group != null)\r\n s += ' g=\\'' + this.group.id + '\\'';\r\n if (this.query != null) {\r\n if (this.query.sub != null)\r\n s += ' sub=\\'' + this.query.sub + '\\'';\r\n if (this.query.uns != null)\r\n s += ' uns=\\'' + (this.query.uns ? 1 : 0) + '\\'';\r\n if (this.query.rbc != null)\r\n s += ' rbc=\\'' + this.query.rbc + '\\'';\r\n if (this.query.als != null && this.query.t != null) {\r\n s += ' als=\\'' + this.query.als.join(',') + '\\'';\r\n s += ' als_t=\\'' + (this.query.t == false ? 0 : 1) + '\\'';\r\n }\r\n }\r\n } else {\r\n s += ' bio=\\'' + this.bio.type + '\\'';\r\n if (!scil.Utils.isNullOrEmpty(this.bio.subtype))\r\n s += ' subtype=\\'' + this.bio.subtype + '\\'';\r\n if (!scil.Utils.isNullOrEmpty(this.bio.sequences))\r\n s += ' seq=\\'' + scil.Utils.escXmlValue(this.bio.sequences) + '\\'';\r\n if ((this.bio.id as number) > 0)\r\n s += ' bioid=\\'' + scil.Utils.escXmlValue(this.bio.id as string) + '\\'';\r\n if (!scil.Utils.isNullOrEmpty(this.bio.annotation))\r\n s += ' ann=\\'' + scil.Utils.escXmlValue(this.bio.annotation) + '\\'';\r\n if (this.elem == '?' && !scil.Utils.isNullOrEmpty(this.bio.ambiguity))\r\n s += ' amb=\\'' + scil.Utils.escXmlValue(this.bio.ambiguity) + '\\'';\r\n if (this.biotype() == org.helm.webeditor.HELM.BLOB && !scil.Utils.isNullOrEmpty(this.bio.blobtype))\r\n s += ' blobtype=\\'' + scil.Utils.escXmlValue(this.bio.blobtype) + '\\'';\r\n }\r\n\r\n if (this.rgroup == null && this.superatom == null) {\r\n s += '/>';\r\n } else {\r\n s += '>\\n';\r\n if (this.rgroup != null) {\r\n s += '\\n';\r\n s += this.rgroup.html(scale) + '\\n';\r\n for (var j = 0; j < this.rgroup.mols.length; ++j) {\r\n var s2 = this.rgroup.mols[j]._getXml(null, null, null, null, len, true);\r\n if (s2 != null)\r\n s += s2;\r\n }\r\n s += '';\r\n }\r\n if (this.superatom != null) {\r\n s += '\\n';\r\n s += this.superatom._getXml(null, null, null, null, len, true);\r\n s += '';\r\n }\r\n s += '';\r\n }\r\n return s;\r\n }\r\n\r\n readHtml(e) {\r\n var c = e.getAttribute('c');\r\n if (c != null)\r\n this.charge = parseInt(c);\r\n\r\n var rStr: string | null = e.getAttribute('clr');\r\n if (rStr != null)\r\n this.color = rStr;\r\n\r\n var rad = e.getAttribute('rad');\r\n if (rad != null && rad != '')\r\n this.radical = parseInt(rad);\r\n\r\n var iso = e.getAttribute('iso');\r\n if (iso != null && iso != '')\r\n this.isotope = parseInt(iso);\r\n\r\n var hs = e.getAttribute('hs');\r\n if (hs != null && hs != '')\r\n this.hs = parseInt(hs);\r\n\r\n var val = e.getAttribute('val');\r\n if (val != null && val != '')\r\n this.val = parseInt(val);\r\n\r\n var tag = e.getAttribute('tag');\r\n if (tag != null && tag != '')\r\n this.tag = tag;\r\n\r\n var alias = e.getAttribute('alias');\r\n if (alias != null && alias != '')\r\n this.alias = alias;\r\n\r\n var ami = e.getAttribute('ami');\r\n if (ami != null && !isNaN(ami))\r\n this.atommapid = parseInt(ami);\r\n\r\n var apo: string | null = e.getAttribute('apo');\r\n if (apo != null && apo != '') {\r\n var ss = apo.split(',');\r\n for (var i = 0; i < ss.length; ++i) {\r\n var s2 = ss[i];\r\n var apon: number = isNaN(s2 as any) ? 0 : parseInt(s2);\r\n if (apon > 0)\r\n this.attachpoints.push(apon);\r\n }\r\n }\r\n\r\n var rbc = e.getAttribute('rbc');\r\n if (rbc != null) {\r\n if (this.query == null)\r\n this.query = {};\r\n this.query.rbc = parseInt(rbc);\r\n }\r\n\r\n var sub = e.getAttribute('sub');\r\n if (sub != null) {\r\n if (this.query == null)\r\n this.query = {};\r\n this.query.sub = sub == '*' ? '*' : parseInt(sub);\r\n }\r\n\r\n var uns = e.getAttribute('uns');\r\n if (uns == '1' || uns == '0') {\r\n if (this.query == null)\r\n this.query = {};\r\n this.query.uns = uns == '1';\r\n }\r\n\r\n var als = JSDraw2.PT.makeAtomList(e.getAttribute('als'), e.getAttribute('als_t'));\r\n if (als != null) {\r\n if (this.query == null)\r\n this.query = {};\r\n this.query.als = als.atoms;\r\n this.query.t = als.t;\r\n }\r\n\r\n if (this.bio != null) {\r\n this.bio.subtype = e.getAttribute('subtype');\r\n this.bio.sequences = e.getAttribute('seq');\r\n const bioid: number = parseInt(e.getAttribute('bioid'));\r\n if (bioid > 0)\r\n this.bio.id = bioid;\r\n\r\n var ann = e.getAttribute('ann');\r\n if (!scil.Utils.isNullOrEmpty(ann))\r\n this.bio.annotation = ann;\r\n\r\n var amb = e.getAttribute('amb');\r\n if (this.elem == '?' && !scil.Utils.isNullOrEmpty(amb))\r\n this.bio.ambiguity = amb;\r\n\r\n var blobtype = e.getAttribute('blobtype');\r\n if (this.biotype() == org.helm.webeditor.HELM.BLOB && !scil.Utils.isNullOrEmpty(blobtype))\r\n this.bio.blobtype = blobtype;\r\n }\r\n\r\n if (this.elem != null) {\r\n var rgEl = scil.Utils.getFirstElement(e, 'rgroup');\r\n if (rgEl) {\r\n var t = scil.Utils.getFirstElement(rgEl, 'i');\r\n if (t != null) {\r\n var r: IRGroup = new JSDraw2.RGroup();\r\n if (r.readHtml(t, null)) {\r\n this.rgroup = r;\r\n\r\n r.position = JSDraw2.Point.fromString(e.getAttribute('p'));\r\n var divs = scil.Utils.getElements(rgEl, 'div');\r\n for (var i = 0; i < divs.length; ++i) {\r\n var m = new JSDraw2.Mol();\r\n if (m.setXml(divs[i]) != null)\r\n r.mols.push(m);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.alias != null || this.bio != null) {\r\n var superatom = scil.Utils.getFirstElement(e, 'superatom');\r\n var div = superatom == null ? null : scil.Utils.getFirstElement(superatom, 'div');\r\n if (div != null) {\r\n var m = new JSDraw2.Mol();\r\n if (m.setXml(div) != null) {\r\n if (m.atoms.length == 1 && m.atoms[0].elem == this.alias) {\r\n this.elem = this.alias;\r\n this.alias = null;\r\n } else {\r\n this.superatom = m;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggle(p, tor) {\r\n if (this._rect != null)\r\n return this._rect.contains(p);\r\n return this.p.distTo(p) <= tor;\r\n }\r\n\r\n drawCur(surface: any, r: number, color: string, m?: Mol) {\r\n const c = this._rect == null ? this.p : this._rect.center();\r\n surface.createCircle({cx: c.x, cy: c.y, r: r}).setFill(color);\r\n if (this.elem == '@' && m != null) {\r\n const list = m.getAllBonds(this);\r\n for (let i = 0; i < list.length; ++i) {\r\n const b = list[i];\r\n if (b.type == JSDraw2.BONDTYPES.DUMMY)\r\n b.otherAtom(this).drawCur(surface, r * 0.75, color);\r\n }\r\n }\r\n }\r\n\r\n needShowAtomLabel() {\r\n return this.elem != 'C' || this.charge != 0 || this.isotope != null || this.hcount == 4;\r\n }\r\n\r\n // showLabel: function() {\r\n // return a.elem != 'C' || a.charge != 0 || a.isotope != null || a.hcount == 4;\r\n // },\r\n\r\n drawBio(surface, linewidth: number, fontsize: number, color) {\r\n var a = this;\r\n var biotype = this.biotype();\r\n var p = a.p.clone();\r\n if (biotype == JSDraw2.BIO.ANTIBODY) {\r\n color = '#00f';\r\n var color2 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv ? '#bbb' : color;\r\n var color3 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv || a.bio.subtype == JSDraw2.ANTIBODY.Fab ? '#bbb' : color;\r\n surface.createCircle({cx: p.x, cy: p.y, r: fontsize})\r\n .setFill('white')\r\n .setStroke({color: color, width: linewidth / 2});\r\n fontsize /= 2;\r\n p.offset(0, -linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - linewidth, p.y), new JSDraw2.Point(p.x - linewidth - fontsize, p.y - fontsize), color2, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + linewidth, p.y), new JSDraw2.Point(p.x + linewidth + fontsize, p.y - fontsize), color, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - 2 * linewidth, p.y + fontsize / 1.5), new JSDraw2.Point(p.x - 2 * linewidth - fontsize, p.y - fontsize + fontsize / 1.5), color2, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + 2 * linewidth, p.y + fontsize / 1.5), new JSDraw2.Point(p.x + 2 * linewidth + fontsize, p.y - fontsize + fontsize / 1.5), color, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x - linewidth, p.y), new JSDraw2.Point(p.x - linewidth, p.y + fontsize * 2), color3, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, new JSDraw2.Point(p.x + linewidth, p.y), new JSDraw2.Point(p.x + linewidth, p.y + fontsize * 2), color3, linewidth);\r\n } else if (biotype == JSDraw2.BIO.PROTEIN) {\r\n var colors = [{offset: 0, color: '#4ea1fc'}, {offset: linewidth / 20, color: '#0072e5'}, {offset: linewidth / 10, color: '#003b80'}];\r\n surface.createCircle({cx: this.p.x, cy: this.p.y, r: fontsize})\r\n .setFill({type: 'radial', cx: this.p.x + fontsize / 4, cy: this.p.y + fontsize / 4, colors: colors});\r\n } else if (biotype == JSDraw2.BIO.GENE || biotype == JSDraw2.BIO.DNA || biotype == JSDraw2.BIO.RNA) {\r\n color = '#00f';\r\n var color2 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv ? '#bbb' : color;\r\n var color3 = a.bio.subtype == JSDraw2.ANTIBODY.ScFv || a.bio.subtype == JSDraw2.ANTIBODY.Fab ? '#bbb' : color;\r\n surface.createCircle({cx: p.x, cy: p.y, r: fontsize})\r\n .setFill('white')\r\n .setStroke({color: color, width: linewidth / 2});\r\n this.drawEllipse(surface, p.x + fontsize / 6, p.y + fontsize / 3, fontsize / 6, fontsize / 2, color, -20);\r\n this.drawEllipse(surface, p.x + fontsize / 6, p.y - fontsize / 3, fontsize / 6, fontsize / 2, color, +20);\r\n this.drawEllipse(surface, p.x - fontsize / 6, p.y + fontsize / 3, fontsize / 6, fontsize / 2, color, +20);\r\n this.drawEllipse(surface, p.x - fontsize / 6, p.y - fontsize / 3, fontsize / 6, fontsize / 2, color, -20);\r\n } else if (org.helm.webeditor.isHelmNode(a)) {\r\n org.helm.webeditor.Interface.drawMonomer(surface, a, p, fontsize, linewidth, color);\r\n } else {\r\n if (color == null)\r\n color = a.bio.type == JSDraw2.BIO.AA ? '#00F' : (a.bio.type == JSDraw2.BIO.BASE_RNA ? '#278925' : '#FFAA00');\r\n this.drawDiamond(surface, p.x, p.y, fontsize * 0.55, color, linewidth);\r\n p.offset(0, -1);\r\n JSDraw2.Drawer.drawLabel(surface, p, a.elem, color, fontsize * (a.elem.length > 1 ? 2 / a.elem.length : 1.0), null, null, null, false);\r\n }\r\n\r\n //if (this.selected)\r\n // this.drawSelect(surface, linewidth);\r\n }\r\n\r\n drawDiamond(surface, x, y, w, color, linewidth) {\r\n surface.createRect({x: x - w, y: y - w, width: 2 * w, height: 2 * w})\r\n .setTransform([dojox.gfx.matrix.rotategAt(45, x, y)])\r\n .setFill('white')\r\n .setStroke({color: color, width: linewidth / 2});\r\n }\r\n\r\n drawEllipse(surface, x, y, rx, ry, color, deg) {\r\n surface.createEllipse({cx: x, cy: y, rx: rx, ry: ry})\r\n .setFill(color)\r\n .setTransform([dojox.gfx.matrix.rotategAt(deg, x, y)]);\r\n }\r\n\r\n hasLabel(m, showcarbon) {\r\n var a = this;\r\n return a.bio == null && (a.elem != 'C' || a.charge != 0 || a.radical != null ||\r\n a.elem == 'C' && (showcarbon == 'all' || showcarbon == 'terminal' && m.getNeighborAtoms(a).length == 1) ||\r\n a.isotope != null || a.hcount == 4 || a.hs > 0 || a.val > 0 || a.alias != null && a.alias != '' ||\r\n a.query != null && (a.query.sub != null || a.query.uns != null || a.query.rbc != null || a.query.als != null && a.query.t != null));\r\n }\r\n\r\n hasErr() {\r\n var a = this;\r\n var e = a.bio ? null : JSDraw2.PT[a.elem];\r\n return (!a.bio && (e == null || e.a >= 0 && a.hasError)) && a.elem != '3\\'' && a.elem != '5\\'';\r\n }\r\n\r\n draw(surface, linewidth: number, m: Mol, fontsize: number, showError: boolean) {\r\n var a = this;\r\n\r\n this._rect = null;\r\n var e = a.bio ? null : JSDraw2.PT[a.elem];\r\n var hasError = showError && this.hasErr();\r\n var color = a.color;\r\n\r\n if (a.bio != null) {\r\n this.drawBio(surface, linewidth, fontsize, color);\r\n return;\r\n }\r\n\r\n var atomcolor = color;\r\n if (color == null) {\r\n if (surface.monocolor)\r\n color = 'black';\r\n else\r\n color = e == null || e.c == null ? '#000' : '#' + e.c;\r\n atomcolor = color;\r\n if (hasError)\r\n atomcolor = e == null || e.c == null ? '#000' : '#fff';\r\n }\r\n\r\n if (a.attachpoints.length > 0)\r\n this.drawApo(a, m, surface, linewidth, fontsize, color);\r\n\r\n if (a.alias != null && a.alias != '') {\r\n this._rect = JSDraw2.Atom.drawAlias(m.calcHDir(a, 4 * linewidth, true), surface, a.p, a.alias, hasError ? 'red' : atomcolor, fontsize);\r\n } else {\r\n var elem = a.elem;\r\n var isotope = a.isotope;\r\n if (elem == 'H') {\r\n if (isotope == 2) {\r\n elem = 'D';\r\n isotope = null;\r\n } else if (isotope == 3) {\r\n elem = 'T';\r\n isotope = null;\r\n }\r\n } else if (a.query != null) {\r\n var x = '';\r\n var x2 = '';\r\n if (a.query.als != null)\r\n x = (a.query.t == false ? '!' : '') + '[' + a.query.als.join(',') + ']';\r\n if (a.query.rbc != null)\r\n x2 += (x2 == '' ? '' : ',') + 'r' + a.query.rbc;\r\n if (a.query.sub != null)\r\n x2 += (x2 == '' ? '' : ',') + 's' + a.query.sub;\r\n if (a.query.uns)\r\n x2 += (x2 == '' ? '' : ',') + 'u';\r\n\r\n if (x != '' || x2 != '')\r\n elem = (x == '' ? elem : x) + (x2 == '' ? '' : '(' + x2 + ')');\r\n }\r\n\r\n var x2n: number = 0;\r\n var y2: number = 0;\r\n if (hasError || this._haslabel) {\r\n var t = JSDraw2.Drawer.drawLabel(surface, a.p, elem, atomcolor, fontsize, hasError ? '#f00' : false);\r\n var c = null;\r\n var h = null;\r\n var n = null;\r\n var iso = null;\r\n\r\n var s = '';\r\n if (a.charge != 0)\r\n s += (Math.abs(a.charge) == 1 ? '' : Math.abs(a.charge) + '') + (a.charge > 0 ? '+' : '-');\r\n switch (a.radical) {\r\n case 1:\r\n s += ':';\r\n break;\r\n case 2:\r\n s += '^';\r\n break;\r\n case 3:\r\n s += '^^';\r\n break;\r\n }\r\n if (s != '')\r\n c = JSDraw2.Drawer.drawLabel(surface, a.p, s, color, fontsize / 1.2, false);\r\n\r\n if (isotope != null)\r\n iso = JSDraw2.Drawer.drawLabel(surface, a.p, isotope + '', color, fontsize / 1.1, false);\r\n if (a.query == null && a.hcount > 0 && (this._haslabel || elem != 'C' || a.charge != 0 || a.hcount == 4)) {\r\n h = JSDraw2.Drawer.drawLabel(surface, a.p, 'H', color, fontsize, false);\r\n n = a.hcount == 1 ? null : JSDraw2.Drawer.drawLabel(surface, a.p, a.hcount + '', color, fontsize / 1.4, false);\r\n }\r\n\r\n var tw = t.getTextWidth();\r\n if (c != null || h != null || n != null || iso != null) {\r\n var extra = scil.Utils.isOpera ? Math.round(fontsize / 4) : 0;\r\n var hw = h == null ? 0 : h.getTextWidth() + extra;\r\n var nw = n == null ? 0 : n.getTextWidth() + extra;\r\n var cw = c == null ? 0 : c.getTextWidth() + extra;\r\n var iw = iso == null ? 0 : iso.getTextWidth() + extra;\r\n\r\n var noAdj: boolean = true; //scil.Utils.isIE || scil.Utils.isTouch;\r\n switch (m.calcHDir(a, 4 * linewidth)) {\r\n case JSDraw2.ALIGN.RIGHT:\r\n if (iso != null)\r\n iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]);\r\n if (h != null)\r\n h.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw / 2 + (noAdj ? 0 : 2), 0)]);\r\n if (n != null)\r\n n.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw + nw / 2 + (noAdj ? 0 : 4), 4)]);\r\n if (c != null)\r\n c.setTransform([dojox.gfx.matrix.translate(tw / 2 + hw + nw + cw / 2 + (noAdj ? 0 : 2), -4)]);\r\n x2n = tw / 2 + hw + nw + cw + (noAdj ? 0 : 2);\r\n break;\r\n case JSDraw2.ALIGN.LEFT:\r\n if (iso != null)\r\n iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]);\r\n if (n != null)\r\n n.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw / 2 + (noAdj ? 0 : 4)), 4)]);\r\n if (h != null)\r\n h.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw + hw / 2 + (noAdj ? 0 : 6)), 0)]);\r\n if (c != null)\r\n c.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw + nw + hw + cw / 2 + (!noAdj ? 0 : 0)), -4)]);\r\n x2n = tw / 2;\r\n break;\r\n case JSDraw2.ALIGN.BOTTOM:\r\n if (iso != null)\r\n iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]);\r\n if (h != null)\r\n h.setTransform([dojox.gfx.matrix.translate(0, fontsize)]);\r\n if (n != null)\r\n n.setTransform([dojox.gfx.matrix.translate(hw / 2 + nw / 2 + (noAdj ? 0 : 2), fontsize + 4)]);\r\n if (c != null)\r\n c.setTransform([dojox.gfx.matrix.translate((h == null ? tw / 2 : hw / 2 + nw) + cw / 2 + (noAdj ? 0 : 4), (h == null ? 0 : fontsize) - 4)]);\r\n x2n = (h == null ? tw / 2 : hw / 2 + nw) + cw + (noAdj ? 0 : 4);\r\n break;\r\n case JSDraw2.ALIGN.TOP:\r\n if (iso != null)\r\n iso.setTransform([dojox.gfx.matrix.translate(-(tw / 2 + iw / 2 + (noAdj ? 0 : 2)), -4)]);\r\n if (h != null)\r\n h.setTransform([dojox.gfx.matrix.translate(0, -fontsize)]);\r\n if (n != null)\r\n n.setTransform([dojox.gfx.matrix.translate(hw / 2 + nw / 2 + (noAdj ? 0 : 2), -fontsize + 4)]);\r\n if (c != null)\r\n c.setTransform([dojox.gfx.matrix.translate((h == null ? tw / 2 : hw / 2 + nw) + cw / 2 + (noAdj ? 0 : 4), (h == null ? 0 : -fontsize) - 4)]);\r\n x2n = (h == null ? tw / 2 : hw / 2 + nw) + cw + (noAdj ? 0 : 4);\r\n y2 = (h == null ? 0 : -fontsize) - 4;\r\n break;\r\n }\r\n } else {\r\n x2n = tw / 2;\r\n }\r\n }\r\n\r\n if (a.atommapid != null) {\r\n var p = a.p.clone();\r\n var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '(' + a.atommapid + ')', '#f55', fontsize / 1.4);\r\n x2n += t.getTextWidth();\r\n }\r\n\r\n if (a.val > 0) {\r\n var p = a.p.clone();\r\n var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '(' + (a.val == 15 ? 0 : a.val) + ')', '#000', fontsize / 1.2);\r\n x2n += t.getTextWidth();\r\n }\r\n\r\n if (a.tag != null && a.tag != '') {\r\n var p = a.p.clone();\r\n var t = JSDraw2.Drawer.drawText(surface, p.offset(x2n, y2 - fontsize - 2), '<' + a.tag + '>', '#000', fontsize / 1.2);\r\n x2n += t.getTextWidth();\r\n }\r\n }\r\n\r\n if (a.locked)\r\n surface.createCircle({cx: a.p.x, cy: a.p.y, r: fontsize * 0.6}).setStroke({color: '#0ff', width: linewidth});\r\n }\r\n\r\n drawApo(a, m, surface, linewidth, fontsize, color) {\r\n var attachpoints = a.attachpoints;\r\n for (var i = 0; i < attachpoints.length; ++i) {\r\n var apo = attachpoints[i];\r\n\r\n var d = fontsize * 1.5;\r\n var p = m.guessBond(a, d, i);\r\n if (p == null) {\r\n p = a.p.clone();\r\n p.offset(d, 0);\r\n }\r\n\r\n var ap = a.p.clone();\r\n if (a._haslabel)\r\n ap.shrink(p, fontsize * 0.6);\r\n\r\n JSDraw2.Drawer.drawLine(surface, ap, p, color, linewidth / 2, apo == 99 ? 2 : 0);\r\n if (apo == 99 || apo == 98) { // Basis\r\n var v = new JSDraw2.Point(ap.x - p.x, ap.y - p.y).rotate(90).setLength(fontsize);\r\n var p1 = p.clone().offset(v.x, v.y);\r\n var p2 = p.clone().offset(-v.x, -v.y);\r\n\r\n if (apo == 99)\r\n JSDraw2.Drawer.drawBasis(surface, p1, p2, color, linewidth / 2);\r\n else\r\n JSDraw2.Drawer.drawCurves(surface, p1, p2, color, linewidth / 2);\r\n } else {\r\n this.drawDiamond(surface, p.x, p.y, fontsize * 0.3, color, linewidth / 3);\r\n JSDraw2.Drawer.drawText(surface, p.offset(-fontsize * 0.2, -fontsize * 0.6), apo + '', color, fontsize * 0.7);\r\n }\r\n }\r\n }\r\n\r\n drawSelect(lasso) {\r\n var c = this._rect == null ? this.p : this._rect.center();\r\n lasso.draw(this, c);\r\n }\r\n\r\n // -- static --\r\n\r\n static cast(a): Atom {\r\n return a != null && a.T == 'ATOM' ? a : null;\r\n }\r\n\r\n static match(x, y) {\r\n if (!scil.Utils.areListEq(x.attachpoints, y.attachpoints))\r\n return false;\r\n\r\n var e1 = x.elem;\r\n var e2 = y.elem;\r\n var f = JSDraw2.Atom.match2(e1, e2);\r\n if (f)\r\n return true;\r\n\r\n if (x.isotope != y.isotope || x.charge != y.charge)\r\n return false;\r\n\r\n if (x.bio != null || y.bio != null) {\r\n if (x.bio == null || y.bio == null)\r\n return false;\r\n return x.bio.type == y.bio.type && e1 == e2;\r\n }\r\n\r\n if (e1 != 'L' && e2 != 'L')\r\n return false;\r\n\r\n var list1 = [];\r\n var list2 = [];\r\n var t1 = true;\r\n var t2 = true;\r\n if (e1 == 'L') {\r\n if (x.query != null && x.query.als != null) {\r\n for (var i = 0; i < x.query.als.length; ++i)\r\n list1.push(x.query.als[i]);\r\n if (x.query.t == false)\r\n t1 = false;\r\n }\r\n } else {\r\n list1.push(e1);\r\n }\r\n\r\n if (e2 == 'L') {\r\n if (y.query != null && y.query.als != null) {\r\n for (var i = 0; i < y.query.als.length; ++i)\r\n list2.push(y.query.als[i]);\r\n if (y.query.t == false)\r\n t2 = false;\r\n }\r\n } else {\r\n list2.push(e2);\r\n }\r\n\r\n for (var i = 0; i < list1.length; ++i) {\r\n for (var j = 0; j < list2.length; ++j) {\r\n f = JSDraw2.Atom.match(list1[i], list2[j]);\r\n if (f && t1 == t2)\r\n return true;\r\n }\r\n }\r\n\r\n return t1 != t2;\r\n }\r\n\r\n static match2(e1, e2): boolean {\r\n return e1 == e2 || e1 == '*' || e1 == 'A' || e2 == '*' || e2 == 'A' ||\r\n e1 == 'X' && (e2 == 'F' || e2 == 'Cl' || e2 == 'Br' || e2 == 'I') ||\r\n e2 == 'X' && (e1 == 'F' || e1 == 'Cl' || e1 == 'Br' || e1 == 'I') ||\r\n e1 == 'Q' && (e2 != 'H' && e2 != 'C') ||\r\n e2 == 'Q' && (e1 != 'H' && e1 != 'C');\r\n }\r\n\r\n static drawAlias(dir, surface, p, s, color, fontsize): Rect {\r\n return JSDraw2.Drawer.drawFormula(surface, p, dir == JSDraw2.ALIGN.LEFT, s, color, fontsize);\r\n\r\n // var t = null;\r\n // if (dir == JSDraw2.ALIGN.LEFT)\r\n // t = JSDraw2.Drawer.drawLabel(surface, p, s, color, fontsize, false, \"end-anchor\");\r\n // else\r\n // t = JSDraw2.Drawer.drawLabel(surface, p, s, color, fontsize, false, \"start-anchor\");\r\n\r\n // return t._rect;\r\n }\r\n\r\n static isValidChiral(c: string) {\r\n if (c == null)\r\n return false;\r\n return /^R|S|(abs)|(\\&[0-9]+)|(and[0-9]+)|(or[0-9]+)$/.test(c);\r\n }\r\n\r\n static isStereo(s: string) {\r\n return s != null && /^((abs)|(or[0-9]+)|(and[0-9]+))$/.test(s);\r\n }\r\n}\r\n\r\nJSDraw2.Atom = Atom;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {ScilModuleType} from './types/scil';\r\nimport type {DojoType, DojoxType} from './types/dojo';\r\nimport type {OrgType} from './types/org';\r\n\r\nimport type {Point} from './Point';\r\nimport type {Rect} from './Rect';\r\nimport type {Atom} from './Atom';\r\nimport type {Mol} from './Mol';\r\nimport type {BondType, IBio, IRGroup, JSDraw2ModuleType, RxnCenterType} from './types/jsdraw2';\r\n\r\ndeclare const dojo: DojoType;\r\ndeclare const dojox: DojoxType;\r\n\r\ndeclare const scil: ScilModuleType;\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\ndeclare const org: OrgType;\r\n\r\nexport type PosRType = { pos: string, r: string };\r\nexport type BondAnnotationType = { ba1: string, ba2: string };\r\n\r\n/**\r\n * Bond class\r\n * @class scilligence.JSDraw2.Bond\r\n */\r\nexport class Bond {\r\n /**\r\n @property {Atom} a1 The First Atom\r\n */\r\n /**\r\n @property {Atom} a2 The Second Atom\r\n */\r\n /**\r\n @property {BONDTYPES} type Bond Type\r\n */\r\n /**\r\n @property {string} color Display Color\r\n */\r\n /**\r\n @property {bool} selected Selecting Flag\r\n */\r\n private T: string;\r\n public id: number;\r\n public a1: Atom;\r\n public a2: Atom;\r\n public apo1: number;\r\n public apo2: number;\r\n public color: string;\r\n public ring: boolean;\r\n public order: number;\r\n public rcenter: RxnCenterType;\r\n public selected: boolean;\r\n public tag: string;\r\n public f: number;\r\n public r1: number | string | null;\r\n public r2: number | string | null;\r\n public ratio1: number | string | null;\r\n public ratio2: number | string | null;\r\n public type: BondType;\r\n\r\n public _parent: Mol;\r\n private z: number;\r\n public bondid: number;\r\n public group: any;\r\n\r\n /**\r\n * @constructor Bond\r\n * @param {Atom} a1 - the first atom\r\n * @param {Atom} a2 - the second atom\r\n * @param {BONDTYPES} type - bond type\r\n */\r\n constructor(a1: Atom, a2: Atom, type?: BondType) {\r\n this.T = \"BOND\";\r\n this.a1 = a1;\r\n this.a2 = a2;\r\n this.apo1 = null;\r\n this.apo2 = null;\r\n this.color = null;\r\n this.ring = null;\r\n this.order = null;\r\n this.rcenter = null;\r\n this.selected = false;\r\n this.tag = null;\r\n this.f = null;\r\n this.r1 = null;\r\n this.r2 = null;\r\n this.ratio1 = null;\r\n this.ratio2 = null;\r\n this.type = type == null ? JSDraw2.BONDTYPES.SINGLE : type;\r\n }\r\n\r\n clone() {\r\n var b = new JSDraw2.Bond(this.a1, this.a2, this.type);\r\n b.id = this.id;\r\n b.color = this.color;\r\n b.order = this.order;\r\n b.apo1 = this.apo1;\r\n b.apo2 = this.apo2;\r\n b.ring = this.ring;\r\n b.rcenter = this.rcenter;\r\n b._parent = this._parent;\r\n b.r1 = this.r1;\r\n b.r2 = this.r2;\r\n b.ratio1 = this.ratio1;\r\n b.ratio2 = this.ratio2;\r\n b.z = this.z;\r\n b.tag = this.tag;\r\n b.selected = this.selected;\r\n return b;\r\n }\r\n\r\n replaceAtom(old: Atom, na: Atom): boolean {\r\n if (this.a1 == old)\r\n this.a1 = na;\r\n else if (this.a2 == old)\r\n this.a2 = na;\r\n else\r\n return false;\r\n return true;\r\n }\r\n\r\n isBio() {\r\n return this.type == JSDraw2.BONDTYPES.PEPTIDE || this.type == JSDraw2.BONDTYPES.NUCLEOTIDE;\r\n }\r\n\r\n bondLength() {\r\n return this.a1.p.distTo(this.a2.p);\r\n }\r\n\r\n center() {\r\n return new JSDraw2.Point((this.a1.p.x + this.a2.p.x) / 2, (this.a1.p.y + this.a2.p.y) / 2);\r\n }\r\n\r\n angle() {\r\n return this.vector().angle();\r\n }\r\n\r\n vector() {\r\n return new JSDraw2.Point(this.a2.p.x - this.a1.p.x, this.a2.p.y - this.a1.p.y);\r\n }\r\n\r\n /**\r\n * Get the other Atom of the Bond\r\n * @function otherAtom\r\n * @param {Atom} a - one atom on the bond\r\n * @returns the other Atom\r\n */\r\n otherAtom(a) {\r\n if (this.a1 == a)\r\n return this.a2;\r\n else if (this.a2 == a)\r\n return this.a1;\r\n return null;\r\n }\r\n\r\n /**\r\n * Switch the atoms' order\r\n * @function reverse\r\n * @returns null\r\n */\r\n reverse() {\r\n var a = this.a1;\r\n this.a1 = this.a2;\r\n this.a2 = a;\r\n\r\n var apo = this.apo1;\r\n this.apo1 = this.apo2;\r\n this.apo2 = apo;\r\n }\r\n\r\n valence() {\r\n switch (this.type) {\r\n case JSDraw2.BONDTYPES.SINGLE:\r\n case JSDraw2.BONDTYPES.WEDGE:\r\n case JSDraw2.BONDTYPES.HASH:\r\n case JSDraw2.BONDTYPES.WIGGLY:\r\n case JSDraw2.BONDTYPES.PEPTIDE:\r\n case JSDraw2.BONDTYPES.NUCLEOTIDE:\r\n case JSDraw2.BONDTYPES.DISULFIDE:\r\n case JSDraw2.BONDTYPES.AMIDE:\r\n case JSDraw2.BONDTYPES.BOLD:\r\n case JSDraw2.BONDTYPES.BOLDHASH:\r\n return 1;\r\n case JSDraw2.BONDTYPES.DELOCALIZED:\r\n return 1.5;\r\n case JSDraw2.BONDTYPES.DOUBLE:\r\n case JSDraw2.BONDTYPES.EITHER:\r\n return 2;\r\n case JSDraw2.BONDTYPES.TRIPLE:\r\n return 3;\r\n case JSDraw2.BONDTYPES.UNKNOWN:\r\n case JSDraw2.BONDTYPES.DUMMY:\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n _centerDoubleBond(m, b) {\r\n var atoms1 = m.getNeighborAtoms(b.a1, b.a2);\r\n var atoms2 = m.getNeighborAtoms(b.a2, b.a1);\r\n return atoms1.length == 0 && atoms2.length == 2 || atoms2.length == 0 && atoms1.length == 2;\r\n }\r\n\r\n _shirftDirection(m, b) {\r\n var a1 = null;\r\n var a2 = null;\r\n var atoms1 = m.getNeighborAtoms(b.a1, b.a2, true);\r\n if (atoms1.length == 1)\r\n a1 = atoms1[0];\r\n\r\n if (a1 == null) {\r\n var atoms2 = m.getNeighborAtoms(b.a2, b.a1, true);\r\n if (atoms2.length == 1)\r\n a2 = atoms2[0];\r\n\r\n if (a2 == null) {\r\n if (atoms1.length >= 2 && atoms2.length >= 2) {\r\n if (m._hasDoubleBonds(atoms1[0]))\r\n a1 = atoms1[0];\r\n else if (m._hasDoubleBonds(atoms1[1]))\r\n a1 = atoms1[1];\r\n\r\n if (m._hasDoubleBonds(atoms2[0]))\r\n a2 = atoms2[0];\r\n else if (m._hasDoubleBonds(atoms2[1]))\r\n a2 = atoms2[1];\r\n }\r\n }\r\n }\r\n\r\n if (a1 != null) {\r\n var ang = b.p1.angleAsOrigin(b.p2, a1.p);\r\n return ang <= 180;\r\n }\r\n\r\n if (a2 != null) {\r\n var ang = b.p2.angleAsOrigin(a2.p, b.p1);\r\n return ang <= 180;\r\n }\r\n }\r\n\r\n html() {\r\n var s = \" 0 && this.a1.superatom != null)\r\n s += \" apo1='\" + this.apo1 + \"'\";\r\n if (this.apo2 > 0 && this.a2.superatom != null)\r\n s += \" apo2='\" + this.apo2 + \"'\";\r\n if (this.tag != null)\r\n s += \" tag='\" + scil.Utils.escXmlValue(this.tag) + \"'\";\r\n s += \"/>\";\r\n return s;\r\n }\r\n\r\n readHtml(e) {\r\n var r = e.getAttribute(\"clr\");\r\n if (r != null)\r\n this.color = r;\r\n\r\n var tag = e.getAttribute(\"tag\");\r\n if (tag != null && tag != \"\")\r\n this.tag = tag;\r\n }\r\n\r\n toggle(p, tor) {\r\n return p.onLine(this.a1.p, this.a2.p, tor / 5);\r\n }\r\n\r\n drawCur(surface, r, color) {\r\n var p = this.center();\r\n surface.createCircle({cx: p.x, cy: p.y, r: r}).setFill(color);\r\n }\r\n\r\n _drawBond(surface: any, b: any, color: string, linewidth: number, shrink?: number, shift?: number, dotline?: number, gap?: any, cap?: any): void {\r\n if (shrink == null || shrink == 0) {\r\n JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth, dotline, cap);\r\n } else {\r\n var d = shift == 0 ? new JSDraw2.Point(0, 0) : b.vector().scale(1.0 / Math.abs(shift));\r\n var v = b.vector().rotate(shrink > 0 ? 90 : -90).setLength(gap == null ? linewidth * 2 : gap);\r\n JSDraw2.Drawer.drawLine(surface, b.p1.clone().offset(d.x + v.x, d.y + v.y), b.p2.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth, dotline, cap);\r\n }\r\n }\r\n\r\n getRColor(c: string, r: number): string {\r\n if (!scil.Utils.isNullOrEmpty(this.color))\r\n return c;\r\n switch (r) {\r\n case 1:\r\n return \"#641E16\";\r\n case 2:\r\n return \"#0000ff\";\r\n case 3:\r\n return \"#aaaaaa\";\r\n }\r\n return \"black\";\r\n }\r\n\r\n splitPosR(s): PosRType {\r\n if (!scil.Utils.isNullOrEmpty(s)) {\r\n var s2 = s == \"?\" ? \"?:?\" : s + \"\";\r\n var p = s2.indexOf(':');\r\n if (p >= 0) {\r\n var pos = s2.substr(0, p);\r\n var r = s2.substr(p + 1);\r\n return {pos: (pos == \"\" ? \"?\" : pos), r: (r == \"\" ? \"?\" : r)};\r\n }\r\n }\r\n\r\n return {pos: \"?\", r: \"?\"};\r\n }\r\n\r\n _fmtBondAnn(): BondAnnotationType {\r\n var s1 = \"\";\r\n var s2 = \"\";\r\n\r\n var r1 = this.splitPosR(this.r1);\r\n var r2 = this.splitPosR(this.r2);\r\n if (r1.pos != \"?\" || r2.pos != \"?\") {\r\n s1 += (s1 == \"\" ? \"\" : \"; \") + \"Pos: \" + r1.pos;\r\n s2 += (s2 == \"\" ? \"\" : \"; \") + \"Pos: \" + r2.pos;\r\n }\r\n if (r1.r != \"?\" || r2.r != \"?\") {\r\n s1 += (s1 == \"\" ? \"\" : \"; \") + \"R#: \" + r1.r;\r\n s2 += (s2 == \"\" ? \"\" : \"; \") + \"R#: \" + r2.r;\r\n }\r\n\r\n var defaultratio = org.helm.webeditor.defaultbondratio == null ? \"\" : org.helm.webeditor.defaultbondratio;\r\n var ratio1 = scil.Utils.isNullOrEmpty(this.ratio1 as string) ? defaultratio : this.ratio1;\r\n var ratio2 = scil.Utils.isNullOrEmpty(this.ratio2 as string) ? defaultratio : this.ratio2;\r\n if (ratio1 != defaultratio || ratio2 != defaultratio /* https://github.com/PistoiaHELM/HELMWebEditor/issues/148 */) {\r\n s1 += (s1 == \"\" ? \"\" : \"; \") + \"Ratio: \" + ratio1;\r\n s2 += (s2 == \"\" ? \"\" : \"; \") + \"Ratio: \" + ratio2;\r\n }\r\n\r\n return {ba1: s1, ba2: s2};\r\n }\r\n\r\n drawBondAnnotation(surface, fontsize, b) {\r\n var s = this._fmtBondAnn();\r\n var ba1 = s.ba1;\r\n var ba2 = s.ba2;\r\n if (ba1 == \"\" && ba2 == \"\")\r\n return;\r\n\r\n var dx = (b.p1.x - b.p2.x) / 90;\r\n var dy = (b.p1.y - b.p2.y) / 90;\r\n var c1 = new JSDraw2.Point((b.p1.x + b.p2.x) / 2, (b.p1.y + b.p2.y) / 2);\r\n var c2 = c1.clone();\r\n\r\n if (Math.abs(b.a1.p.x - b.a2.p.x) < fontsize) {\r\n //vertical\r\n c1.offset(fontsize * dx + fontsize * 0.2, fontsize * dy - fontsize * 0.5);\r\n c2.offset(-fontsize * dx + fontsize * 0.2, -fontsize * dy - fontsize * 0.5);\r\n if (!scil.Utils.isNullOrEmpty(ba1))\r\n JSDraw2.Drawer.drawText(surface, c1, ba1, \"green\", fontsize);\r\n if (!scil.Utils.isNullOrEmpty(ba2))\r\n JSDraw2.Drawer.drawText(surface, c2, ba2, \"green\", fontsize);\r\n } else if (Math.abs(b.a1.p.y - b.a2.p.y) < fontsize) {\r\n //horizontal\r\n c1.offset(fontsize * dx, fontsize * dy - fontsize * 0.9);\r\n c2.offset(-fontsize * dx, -fontsize * dy + fontsize * 0.6);\r\n if (!scil.Utils.isNullOrEmpty(ba1))\r\n JSDraw2.Drawer.drawLabel(surface, c1, ba1, \"green\", fontsize, null, null, null, false);\r\n if (!scil.Utils.isNullOrEmpty(ba2))\r\n JSDraw2.Drawer.drawLabel(surface, c2, ba2, \"green\", fontsize, null, null, null, false);\r\n } else {\r\n c1.offset(fontsize * dx, fontsize * dy);\r\n c2.offset(-fontsize * dx, -fontsize * dy);\r\n if (!scil.Utils.isNullOrEmpty(ba1))\r\n JSDraw2.Drawer.drawLabel(surface, c1, ba1, \"green\", fontsize, null, null, null, false);\r\n if (!scil.Utils.isNullOrEmpty(ba2))\r\n JSDraw2.Drawer.drawLabel(surface, c2, ba2, \"green\", fontsize, null, null, null, false);\r\n }\r\n }\r\n\r\n draw(surface, linewidth, m, fontsize, simpledraw) {\r\n if (this.type == JSDraw2.BONDTYPES.DUMMY) {\r\n if ((this.a1.elem == \"@\" || this.a2.elem == \"@\") && !this.a1.p.equalsTo(this.a2.p))\r\n JSDraw2.Drawer.drawLine(surface, this.a1.p, this.a2.p, \"#eee\", linewidth / 2);\r\n return;\r\n }\r\n\r\n if (this.a1.p.equalsTo(this.a2.p))\r\n return;\r\n\r\n var b = new JSDraw2.BondB(this);\r\n if (!simpledraw) {\r\n if (b.a1._haslabel)\r\n b.p1.shrink(b.p2, fontsize * 0.6);\r\n if (b.a2._haslabel)\r\n b.p2.shrink(b.p1, fontsize * 0.6);\r\n }\r\n\r\n var color = scil.Utils.isNullOrEmpty(this.color) ? \"black\" : this.color;\r\n if (simpledraw || b.type == JSDraw2.BONDTYPES.PEPTIDE || b.type == JSDraw2.BONDTYPES.AMIDE) {\r\n JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth);\r\n return;\r\n } else if (b.type == JSDraw2.BONDTYPES.DISULFIDE) {\r\n JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth);\r\n return;\r\n } else if (b.type == JSDraw2.BONDTYPES.NUCLEOTIDE) {\r\n JSDraw2.Drawer.drawLine(surface, b.p1, b.p2, color, linewidth);\r\n return;\r\n }\r\n\r\n if ((this.r1 as number) > 0 || (this.r2 as number) > 0) {\r\n var c = new JSDraw2.Point((b.p1.x + b.p2.x) / 2, (b.p1.y + b.p2.y) / 2);\r\n var color1 = this.getRColor(this.color, this.r1 as number);\r\n var color2 = this.getRColor(this.color, this.r2 as number);\r\n if (this.z) {\r\n var p1 = new JSDraw2.Point(b.p1.x, c.y);\r\n var p2 = new JSDraw2.Point(b.p2.x, c.y);\r\n JSDraw2.Drawer.drawLine(surface, b.p1, p1, color1, linewidth, null, \"butt\");\r\n JSDraw2.Drawer.drawLine(surface, p1, c, color1, linewidth, null, \"butt\");\r\n JSDraw2.Drawer.drawLine(surface, c, p2, color2, linewidth, null, \"butt\");\r\n JSDraw2.Drawer.drawLine(surface, p2, b.p2, color2, linewidth, null, \"butt\");\r\n } else {\r\n JSDraw2.Drawer.drawLine(surface, b.p1, c, color1, linewidth, null, \"butt\");\r\n JSDraw2.Drawer.drawLine(surface, c, b.p2, color2, linewidth, null, \"butt\");\r\n if (this.r1 == 1 && this.r2 == 2 || this.r1 == 2 && this.r2 == 1) {\r\n JSDraw2.Bond.showHelmAnnotation(this.a1, this.a2, this.r1);\r\n JSDraw2.Bond.showHelmAnnotation(this.a2, this.a1, this.r2);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!simpledraw)\r\n this.drawBondAnnotation(surface, fontsize, b);\r\n\r\n var dir = 8;\r\n if (b.type == JSDraw2.BONDTYPES.DOUBLE || b.type == JSDraw2.BONDTYPES.DELOCALIZED || b.type == JSDraw2.BONDTYPES.EITHER || b.type == JSDraw2.BONDTYPES.DOUBLEORAROMATIC)\r\n dir = this._shirftDirection(m, b) ? 8 : -8;\r\n\r\n if (b.type == JSDraw2.BONDTYPES.DOUBLE && this._centerDoubleBond(m, b)) {\r\n this._drawBond(surface, b, color, linewidth, -dir, 0, null, linewidth);\r\n this._drawBond(surface, b, color, linewidth, dir, 0, null, linewidth);\r\n } else if (b.type == JSDraw2.BONDTYPES.SINGLE || b.type == JSDraw2.BONDTYPES.BOLD || b.type == JSDraw2.BONDTYPES.DOUBLE || b.type == JSDraw2.BONDTYPES.TRIPLE || b.type == JSDraw2.BONDTYPES.DELOCALIZED) {\r\n this._drawBond(surface, b, color, b.type == JSDraw2.BONDTYPES.BOLD ? 3 * linewidth : linewidth, null, null, null, null, b.type == JSDraw2.BONDTYPES.BOLD ? \"butt\" : \"round\");\r\n\r\n if (b.type == JSDraw2.BONDTYPES.DOUBLE || b.type == JSDraw2.BONDTYPES.TRIPLE)\r\n this._drawBond(surface, b, color, linewidth, dir, dir);\r\n\r\n if (b.type == JSDraw2.BONDTYPES.TRIPLE)\r\n this._drawBond(surface, b, color, linewidth, -dir, -dir);\r\n\r\n if (b.type == JSDraw2.BONDTYPES.DELOCALIZED)\r\n this._drawBond(surface, b, color, linewidth, dir, dir, 4);\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.WEDGE) {\r\n var v = b.vector().rotate(90).setLength(linewidth * 2);\r\n surface.createPolyline([\r\n b.p1.x, b.p1.y,\r\n b.p2.x + v.x, b.p2.y + v.y,\r\n b.p2.x - v.x, b.p2.y - v.y\r\n ])\r\n .setStroke({width: 2})\r\n .setFill(color);\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.HASH || b.type == JSDraw2.BONDTYPES.BOLDHASH) {\r\n var len = b.bondLength();\r\n var n = Math.floor(len / (linewidth * 2));\r\n var d = b.vector().scale(1.0 / n);\r\n var v = b.vector().rotate(90);\r\n for (var k = 1; k <= n; ++k) {\r\n var p = b.p1.clone().offset(d.x * k, d.y * k);\r\n var vlen = linewidth * 2;\r\n if (b.type == JSDraw2.BONDTYPES.HASH)\r\n vlen *= k / n;\r\n else\r\n vlen *= 0.6;\r\n var vi = v.clone().setLength(vlen);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(vi.x, vi.y), p.clone().offset(-vi.x, -vi.y), color, linewidth);\r\n }\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.WIGGLY)\r\n JSDraw2.Drawer.drawCurves(surface, b.p1, b.p2, color, linewidth);\r\n\r\n if (b.type == JSDraw2.BONDTYPES.EITHER) {\r\n var d = b.vector().scale(1.0 / Math.abs(dir));\r\n var v = b.vector().rotate(dir > 0 ? 90 : -90).setLength(linewidth * 2);\r\n var p1 = b.p1.clone().offset(d.x + v.x, d.y + v.y);\r\n var p2 = b.p2.clone().offset(-d.x + v.x, -d.y + v.y);\r\n JSDraw2.Drawer.drawLine(surface, b.p1, p2, color, linewidth);\r\n JSDraw2.Drawer.drawLine(surface, b.p2, p1, color, linewidth);\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.DOUBLEORAROMATIC) {\r\n this._drawBond(surface, b, color, linewidth);\r\n this._drawBond(surface, b, color, linewidth, dir, dir, 2);\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.SINGLEORDOUBLE || b.type == JSDraw2.BONDTYPES.SINGLEORAROMATIC) {\r\n this._drawBond(surface, b, color, linewidth, 0, 0, 2);\r\n\r\n this._drawBond(surface, b, color, linewidth, dir / 2, dir / 2, null, linewidth * 1.5);\r\n this._drawBond(surface, b, color, linewidth, -dir / 2, -dir / 2, b.type == JSDraw2.BONDTYPES.SINGLEORAROMATIC ? 2 : null, linewidth * 1.5);\r\n }\r\n\r\n if (b.type == JSDraw2.BONDTYPES.UNKNOWN)\r\n this._drawBond(surface, b, color, linewidth, null, null, linewidth * 1.2);\r\n\r\n if (b.b.ring != null) {\r\n var p = this.center();\r\n surface.createCircle({cx: p.x, cy: p.y, r: linewidth * 3})\r\n .setStroke({color: color, width: linewidth / 2, style: b.b.ring ? \"Solid\" : \"Dash\"});\r\n }\r\n\r\n if (b.b.rcenter != null) {\r\n var p = this.center();\r\n var d = b.vector().rotate(90).setLength(linewidth * 3);\r\n var v = b.vector().setLength(linewidth * (b.b.rcenter == JSDraw2.RXNCENTER.BREAKANDCHANGE ? 1.5 : 1));\r\n if (b.b.rcenter == JSDraw2.RXNCENTER.CENTER) {\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2);\r\n d = b.vector().rotate(90).setLength(linewidth * 1.6);\r\n v = b.vector().setLength(linewidth * 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(d.x - v.x, d.y - v.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(-d.x + v.x, -d.y + v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2);\r\n } else if (b.b.rcenter == JSDraw2.RXNCENTER.NOTCENTER) {\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2);\r\n } else if (b.b.rcenter == JSDraw2.RXNCENTER.BREAK) {\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2);\r\n } else if (b.b.rcenter == JSDraw2.RXNCENTER.CHANGE) {\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x, d.y), p.clone().offset(-d.x, -d.y), color, linewidth / 2);\r\n } else if (b.b.rcenter == JSDraw2.RXNCENTER.BREAKANDCHANGE) {\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x, d.y), p.clone().offset(-d.x, -d.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x + v.x, d.y + v.y), p.clone().offset(-d.x + v.x, -d.y + v.y), color, linewidth / 2);\r\n JSDraw2.Drawer.drawLine(surface, p.clone().offset(d.x - v.x, d.y - v.y), p.clone().offset(-d.x - v.x, -d.y - v.y), color, linewidth / 2);\r\n }\r\n }\r\n }\r\n\r\n drawSelect(lasso) {\r\n lasso.draw(this, this.center());\r\n }\r\n\r\n // -- static --\r\n\r\n static cast(a): Bond | null {\r\n return a != null && a.T == 'BOND' ? a : null;\r\n }\r\n\r\n static showHelmAnnotation(a1: Atom, a2: Atom, r1: number): void {\r\n if (a1.bio == null || scil.Utils.isNullOrEmpty(a1.bio.annotation))\r\n return;\r\n\r\n if (r1 == 2 && a1.p.x > a2.p.x || r1 == 1 && a1.p.x < a2.p.x)\r\n a1.bio.annotationshowright = true;\r\n else\r\n a1.bio.annotationshowright = null;\r\n }\r\n}\r\n\r\nexport class BondB {\r\n public b: Bond;\r\n public a1: Atom;\r\n public a2: Atom;\r\n public type: BondType;\r\n public p1: Point;\r\n public p2: Point;\r\n\r\n constructor(b: Bond) {\r\n this.b = b;\r\n this.a1 = b.a1;\r\n this.a2 = b.a2;\r\n this.type = b.type;\r\n this.p1 = b.a1.p.clone();\r\n this.p2 = b.a2.p.clone();\r\n }\r\n\r\n vector(): Point {\r\n return new JSDraw2.Point(this.p2.x - this.p1.x, this.p2.y - this.p1.y);\r\n }\r\n\r\n bondLength(): number {\r\n return this.p1.distTo(this.p2);\r\n }\r\n}\r\n\r\n\r\nJSDraw2.Bond = Bond;\r\nJSDraw2.BondB = BondB;\r\n","//\r\n// JSDraw\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n\r\n// @ts-nocheck\r\n\r\nimport type {JSDraw2ModuleType, ScilModuleType} from './types';\r\n\r\nimport type {IGraphics, ShapeType} from './types/jsdraw2';\r\nimport type {Atom} from './Atom';\r\nimport type {Rect} from './Rect';\r\n\r\ndeclare const scilligence: ScilModuleType;\r\ndeclare const scil: ScilModuleType;\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\n\r\n/**\r\n * Bracket class\r\n * @class scilligence.JSDraw2.Bracket\r\n */\r\nexport class Bracket implements IGraphics {\r\n readonly T: string;\r\n public atoms: Atom[];\r\n readonly type: string;\r\n readonly _rect: Rect;\r\n private shape: ShapeType;\r\n public sgrouptexts: string;\r\n public subscript: string;\r\n conn: any;\r\n expandedatoms: Atom[];\r\n\r\n // IGraphics\r\n public id: number;\r\n public color: string;\r\n // TODO: IGraphics\r\n reject: any; // TODO\r\n selected: boolean;\r\n graphicsid: number;\r\n\r\n\r\n constructor(type, rect, shape?: ShapeType) {\r\n this.T = \"BRACKET\";\r\n this.atoms = [];\r\n this.type = type;\r\n this._rect = rect;\r\n this.color = null;\r\n this.shape = shape;\r\n }\r\n\r\n clone(): IGraphics {\r\n const b = new JSDraw2.Bracket(this.type, this._rect.clone(), this.shape);\r\n b.color = this.color;\r\n b.sgrouptexts = this.sgrouptexts;\r\n return b as IGraphics;\r\n }\r\n\r\n getXbonds(m) {\r\n var list = [];\r\n var bonds = m.bonds;\r\n for (var i = 0; i < bonds.length; ++i) {\r\n var b = bonds[i];\r\n var f1 = scil.Utils.indexOf(this.atoms, b.a1) >= 0;\r\n var f2 = scil.Utils.indexOf(this.atoms, b.a2) >= 0;\r\n if (f1 != f2)\r\n list.push(b);\r\n }\r\n\r\n return list;\r\n }\r\n\r\n allAtomsIn(m) {\r\n if (this.atoms.length == 0)\r\n return false;\r\n for (var i = 0; i < this.atoms.length; ++i) {\r\n if (m.atoms.indexOf(this.atoms[i]) < 0)\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getTypeNum() {\r\n if (this.type == null)\r\n return null;\r\n var type = this.type + \"\";\r\n if (type.match(/^[c][0-9]+$/))\r\n return type.substr(1);\r\n // else if (type.match(/^[0-9]+$/))\r\n // return type;\r\n return null;\r\n }\r\n\r\n getType() {\r\n if (this.type == null)\r\n return \"\";\r\n var type = this.type + \"\";\r\n if (type.match(/^[c][0-9]+$/))\r\n type = \"c\";\r\n // else if (type.match(/^[0-9]+$/))\r\n // type = \"mul\";\r\n return type;\r\n }\r\n\r\n getSubscript(m) {\r\n const t = m.getSgroupText(this, \"BRACKET_TYPE\");\r\n return t == null ? null : t.text;\r\n }\r\n\r\n createSubscript(m, s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return null;\r\n\r\n var t = m.getSgroupText(this, \"BRACKET_TYPE\");\r\n if (t != null)\r\n return t;\r\n\r\n var gap = m.medBondLength(1.56) / 2;\r\n t = m.setSgroup(this, \"BRACKET_TYPE\", s, this._rect.right() + gap / 4, this._rect.bottom() - gap);\r\n return t;\r\n }\r\n\r\n html(scale) {\r\n //if (this.atoms == null || this.atoms.length == 0)\r\n // return;\r\n var ss = \"\";\r\n\r\n if (this.atoms != null && this.atoms.length > 0) {\r\n ss = this.atoms[0].id + \"\";\r\n for (var i = 1; i < this.atoms.length; ++i)\r\n ss += \",\" + this.atoms[i].id;\r\n }\r\n\r\n var s = \"\";\r\n return s;\r\n }\r\n\r\n flipY(y) {\r\n }\r\n\r\n flipX(x) {\r\n }\r\n\r\n scale(s, origin) {\r\n this._rect.scale(s, origin);\r\n }\r\n\r\n offset(dx, dy) {\r\n this._rect.offset(dx, dy);\r\n }\r\n\r\n rect() {\r\n return this._rect;\r\n }\r\n\r\n toggle(p, tor) {\r\n var r = this._rect;\r\n if (r == null)\r\n return;\r\n var x1 = p.x - r.left;\r\n var x2 = r.right() - p.x;\r\n return p.y >= r.top - tor && p.y <= r.bottom() + tor && (x1 >= -tor / 2 && x1 < tor || x2 >= -tor / 2 && x2 < tor);\r\n }\r\n\r\n drawCur(surface, r, color, m) {\r\n var r2 = this._rect;\r\n if (r2 == null)\r\n return;\r\n var y = r2.center().y;\r\n surface.createCircle({cx: r2.left, cy: y, r: r}).setFill(color);\r\n surface.createCircle({cx: r2.right(), cy: y, r: r}).setFill(color);\r\n\r\n if (m != null) {\r\n for (var i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].drawCur(surface, r * 0.75, color);\r\n }\r\n }\r\n\r\n draw(surface, linewidth, m, fontsize) {\r\n var r = this._rect;\r\n\r\n var color = this.color == null ? \"gray\" : this.color;\r\n JSDraw2.Drawer.drawBracket(surface, r, color, linewidth);\r\n }\r\n\r\n drawSelect(lasso) {\r\n lasso.draw(this, this._rect.fourPoints());\r\n }\r\n\r\n cornerTest(p, tor) {\r\n return this._rect.cornerTest(p, tor);\r\n }\r\n\r\n resize(corner, d, texts) {\r\n this._rect.moveCorner(corner, d);\r\n if (texts == null)\r\n return;\r\n switch (corner) {\r\n case \"topleft\":\r\n for (var i = 0; i < texts.topleft.length; ++i)\r\n texts.topleft[i]._rect.offset(d.x, d.y);\r\n for (var i = 0; i < texts.topright.length; ++i)\r\n texts.topright[i]._rect.offset(0, d.y);\r\n for (var i = 0; i < texts.bottomleft.length; ++i)\r\n texts.bottomleft[i]._rect.offset(d.x, 0);\r\n break;\r\n case \"topright\":\r\n for (var i = 0; i < texts.topright.length; ++i)\r\n texts.topright[i]._rect.offset(d.x, d.y);\r\n for (var i = 0; i < texts.topleft.length; ++i)\r\n texts.topleft[i]._rect.offset(0, d.y);\r\n for (var i = 0; i < texts.bottomright.length; ++i)\r\n texts.bottomright[i]._rect.offset(d.x, 0);\r\n break;\r\n case \"bottomleft\":\r\n for (var i = 0; i < texts.bottomleft.length; ++i)\r\n texts.bottomleft[i]._rect.offset(d.x, d.y);\r\n for (var i = 0; i < texts.bottomright.length; ++i)\r\n texts.bottomright[i]._rect.offset(0, d.y);\r\n for (var i = 0; i < texts.topleft.length; ++i)\r\n texts.topleft[i]._rect.offset(d.x, 0);\r\n break;\r\n case \"bottomright\":\r\n for (var i = 0; i < texts.bottomright.length; ++i)\r\n texts.bottomright[i]._rect.offset(d.x, d.y);\r\n for (var i = 0; i < texts.bottomleft.length; ++i)\r\n texts.bottomleft[i]._rect.offset(0, d.y);\r\n for (var i = 0; i < texts.topright.length; ++i)\r\n texts.topright[i]._rect.offset(d.x, 0);\r\n break;\r\n }\r\n }\r\n\r\n removeObject(obj) {\r\n var a = JSDraw2.Atom.cast(obj);\r\n if (a == null)\r\n return;\r\n for (var i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i] == a) {\r\n this.atoms.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n getTexts(m) {\r\n var ret = {topleft: [], topright: [], bottomleft: [], bottomright: []};\r\n var c1 = this._rect.center();\r\n for (var i = 0; i < m.graphics.length; ++i) {\r\n var t = JSDraw2.Text.cast(m.graphics[i]);\r\n if (t == null || t.anchors.length != 1 || t.anchors[0] != this)\r\n continue;\r\n var c = t._rect.center();\r\n if (c.x < c1.x) {\r\n if (c.y < c1.y)\r\n ret.topleft.push(t);\r\n else\r\n ret.bottomleft.push(t);\r\n } else {\r\n if (c.y < c1.y)\r\n ret.topright.push(t);\r\n else\r\n ret.bottomright.push(t);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n static cast(g: IGraphics): Bracket {\r\n throw new Error(\"Not implemented\");\r\n }\r\n}\r\n\r\nJSDraw2.Bracket = Bracket;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {DojoType, DojoxType} from './types/dojo';\r\nimport type {JSDraw2ModuleType, ScilModuleType} from './types';\r\nimport type {OrgType} from './types/org';\r\n\r\nimport type {\r\n ColorArray, IContextMenu, IDialog, IEditorOptions, IOrgPlugin, IStack,\r\n JSDraw2Document, JSDraw2Window, ShapeType\r\n} from './types/jsdraw2';\r\nimport type {IMolHandler} from './types/mol-handler';\r\nimport type {Point} from './Point';\r\nimport type {Atom} from './Atom';\r\nimport type {Mol} from './Mol';\r\n\r\nimport {ShapeTypes} from './types/jsdraw2';\r\n\r\ntype EventPoint = Point & { tm: number, clientX: number, clientY: number, atom: Atom }\r\ntype EditorClone = {\r\n mol: Mol, bondlength: number, tor: number, linewidth: number, fontsize: number, angleStop: number\r\n}\r\n\r\ndeclare const dojo: DojoType;\r\ndeclare const dojox: DojoxType;\r\ndeclare const scilligence: ScilModuleType;\r\ndeclare const scil: ScilModuleType;\r\ndeclare const org: OrgType;\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\ndeclare const JSDrawServices: any;\r\n\r\ndeclare const window: JSDraw2Window & Window;\r\ndeclare const document: JSDraw2Document & Document;\r\n\r\n/**\r\n * Editor class - define an Editor object.\r\n *
\r\n * Example:\r\n *   <html>\r\n *   <head>\r\n *   <script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js\"></script>\r\n *   <script type=\"text/javascript\" src='http://[PATH]/Scilligence.JSDraw2.js'></script>\r\n *   </head>\r\n *   <body>\r\n *   <div id='ed'></div>\r\n *   <script type='text/javascript'>\r\n *     dojo.ready(function() {\r\n *       // create a JSDraw Editor\r\n *       var editor = new JSDraw2.Editor(\"ed\", { skin: \"w8\", width: 800, height: 400 });\r\n *\r\n *       // create a JSDraw viewer\r\n *       //var editor = new JSDraw2.Editor(\"ed\", { skin: \"w8\", width: 800, height: 400, viewonly: true });\r\n *\r\n *       // create a JSDraw popup Editor\r\n *       //var editor = new JSDraw2.Editor(\"ed\", { skin: \"w8\", width: 800, height: 400, popup: true });\r\n *     });\r\n *   </script>\r\n *   </body>\r\n *   </html>\r\n * 
\r\n * @class scilligence.JSDraw2.Editor\r\n */\r\nexport class EditorInt implements IMolHandler {\r\n /**\r\n @property {Mol} atoms Mol object\r\n */\r\n /**\r\n @property {bool} chiral Molecule Chiral Flag\r\n */\r\n\r\n /**\r\n * Called when the structure is changed\r\n * @event {bool} ondatachange\r\n * @param {Editor} editor this Editor\r\n * @return null\r\n */\r\n\r\n // -- IMolHandler --\r\n public bondlength: number;\r\n public m: Mol;\r\n\r\n private readonly T: string;\r\n private disableundo: boolean;\r\n public options: any;\r\n private readonly chiral: any;\r\n private ptElement: any; // TODO: ?\r\n private connectHandlers: any[];\r\n private maintable: any;\r\n public div: HTMLDivElement;\r\n private readonly id: string;\r\n private readonly movingresolution: number;\r\n private readonly dimension: Point;\r\n public readonly helm: IOrgPlugin;\r\n private readonly undocapacity: number;\r\n private texteditor: any;\r\n private toolbar: any;\r\n private surface: any;\r\n private readonly loaded: boolean;\r\n\r\n private angleStop: number;\r\n private tor: number;\r\n private linewidth: number;\r\n private fontsize: number;\r\n\r\n private activated: boolean;\r\n private status: any;\r\n private modified: boolean;\r\n private touching: boolean;\r\n private start: any;\r\n private lastmove: any;\r\n private end: any;\r\n public curObject: any;\r\n private curButton: any;\r\n private movingClone: any;\r\n private resizing: any;\r\n private rotating: any;\r\n private mousedownPoint: Point;\r\n private _lastMousedownTm: any;\r\n private lassolast: any;\r\n private chaintool: any;\r\n private ink: any;\r\n\r\n private frozen: boolean;\r\n private lastaction: any;\r\n private _undostack: IStack;\r\n private _redostack: IStack;\r\n private erasercache: any;\r\n\r\n private contextmenu: IContextMenu;\r\n private viewoffset: Point;\r\n private _clearing: boolean;\r\n private simpledraw: boolean;\r\n\r\n private arrowtool: any;\r\n private groupPropDlg!: IDialog;\r\n private _keypresschar: string;\r\n private popuplocked: boolean;\r\n private _testdeactivation: Function | null = null;\r\n private _msContentZooming: string;\r\n private _overflow: string;\r\n\r\n /**\r\n * Constructor a JSDraw Editor\r\n * @constructor Editor\r\n * @param {string} dv - the id of the div placeholder\r\n * @param {dictionary} options - the options for the editor:
    \r\n *
  • background - background color
  • \r\n *
  • biology - Set this flag to false to hide seqence button
  • \r\n *
  • buttonshape - circle, or square
  • \r\n *
  • data - actual data
  • \r\n *
  • dataformat - data format. It can be molfile, rxnfile, html
  • \r\n *
  • height
  • \r\n *
  • focusbox - indicate if show focusing box if focused. default: true
  • \r\n *
  • focuscolor - the border color when focused
  • \r\n *
  • inktools - set this flag to false to hide ink tools
  • \r\n *
  • highlighterrors - set this flag to false not to highlight errors in reb box
  • \r\n *
  • ondatachange - datachange event handler
  • \r\n *
  • plugins - plugins, as an array [{iconurl, tooltips, onclick}, ...]
  • \r\n *
  • popup - Create a viewer, and double-click to show popup editor
  • \r\n *
  • popupheight - Popup Editor height
  • \r\n *
  • popupwidth - Popup Editor width
  • \r\n *
  • query - Set this flag to false to disable query atoms (A, R, X, Q, *, etc.) in periodic table
  • \r\n *
  • removeHydrogens - Remove hydrogen atoms before show the structure
  • \r\n *
  • rxn - Set this flag to false to disable reaction buttons on toolbar
  • \r\n *
  • scale - A factore to zoom the whole editor, including toolbars. This is useful for iPad applications
  • \r\n *
  • sendquery - Set this flag to false to hide PubChem, ChemSpider search button
  • \r\n *
  • skin - set this to \"w8\" to display the editor in JSDraw2 mode; leave this parameter to empty to display editor in classic mode (2.0)
  • \r\n *
  • showcarbon - all or terminal
  • \r\n *
  • showfilemenu - set this flag to false to hide file menus
  • \r\n *
  • showimplicithydrogens - Set flag to false to hide implicit hydrogens
  • \r\n *
  • showtoolbar - set this flag to false not to show toolbar
  • \r\n *
  • viewonly
  • \r\n *
  • width
  • \r\n *
\r\n */\r\n constructor(dv: HTMLDivElement | string, options?: Partial) {\r\n this.disableundo = JSDraw2.speedup.disableundo;\r\n\r\n this.T = \"DRAW\";\r\n JSDraw2.Editor.COLORCURRENT = [0, 255, 0, 0.5];\r\n JSDraw2.Editor.COLORSELECTED = [0, 0, 255, 0.5];\r\n this.options = options == null ? {} : options;\r\n this.chiral = null;\r\n\r\n if (JSDraw2.Editor._id == null) {\r\n JSDraw2.Editor._id = 0;\r\n JSDraw2.Editor._allitems = {};\r\n }\r\n\r\n ++JSDraw2.Editor._id;\r\n if ((typeof dv) == \"string\")\r\n dv = dojo.byId(dv as string) as HTMLDivElement;\r\n if (dv == null)\r\n return;\r\n\r\n this.ptElement = null;\r\n this.connectHandlers = [];\r\n this.maintable = null;\r\n this.div = dv as HTMLDivElement;\r\n if (this.div.id == null || this.div.id.length == 0)\r\n this.div.id = \"__JSDraw_\" + JSDraw2.Editor._id;\r\n this.id = this.div.id;\r\n\r\n JSDraw2.Editor._allitems[this.id] = this;\r\n if (JSDraw2.defaultoptions == null)\r\n JSDraw2.defaultoptions = {};\r\n\r\n if (this.options.popup == null)\r\n this.options.popup = scil.Utils.isAttTrue(this.div, \"popup\");\r\n if (this.options.viewonly == null)\r\n this.options.viewonly = scil.Utils.isAttTrue(this.div, \"viewonly\");\r\n if (this.options.removehydrogens == null)\r\n this.options.removehydrogens = JSDraw2.defaultoptions.removehydrogens != null ? JSDraw2.defaultoptions.removehydrogens : scil.Utils.isAttTrue(this.div, \"removehydrogens\");\r\n if (this.options.query == null)\r\n this.options.query = JSDraw2.defaultoptions.query != null ? JSDraw2.defaultoptions.query : !scil.Utils.isAttFalse(this.div, \"query\");\r\n if (this.options.rxn == null)\r\n this.options.rxn = JSDraw2.defaultoptions.rxn != null ? JSDraw2.defaultoptions.rxn : !scil.Utils.isAttFalse(this.div, \"rxn\");\r\n if (this.options.biology == null)\r\n this.options.biology = JSDraw2.defaultoptions.biology != null ? JSDraw2.defaultoptions.biology : !scil.Utils.isAttFalse(this.div, \"biology\");\r\n if (this.options.sendquery == null)\r\n this.options.sendquery = JSDraw2.defaultoptions.sendquery != null ? JSDraw2.defaultoptions.sendquery : !scil.Utils.isAttFalse(this.div, \"sendquery\");\r\n if (this.options.showtoolbar == null)\r\n this.options.showtoolbar = JSDraw2.defaultoptions.showtoolbar != null ? JSDraw2.defaultoptions.showtoolbar : !scil.Utils.isAttFalse(this.div, \"showtoolbar\");\r\n if (this.options.showcustomtemplates == null)\r\n this.options.showcustomtemplates = JSDraw2.defaultoptions.showcustomtemplates != null ? JSDraw2.defaultoptions.showcustomtemplates : !scil.Utils.isAttFalse(this.div, \"showcustomtemplates\");\r\n if (this.options.usechemdraw == null)\r\n this.options.usechemdraw = JSDraw2.defaultoptions.usechemdraw != null ? JSDraw2.defaultoptions.usechemdraw : scil.Utils.isAttTrue(this.div, \"usechemdraw\");\r\n if (this.options.showcarbon == null)\r\n this.options.showcarbon = JSDraw2.defaultoptions.showcarbon;\r\n if (this.options.pastechemdraw == null)\r\n this.options.pastechemdraw = JSDraw2.defaultoptions.pastechemdraw;\r\n if (this.options.width > 0)\r\n this.div.style.width = this.options.width + \"px\";\r\n if (this.options.height > 0)\r\n this.div.style.height = this.options.height + \"px\";\r\n if (this.options.ondatachange == null)\r\n this.options.ondatachange = dojo.attr(this.div, \"ondatachange\");\r\n if (this.options.data == null)\r\n this.options.data = dojo.attr(this.div, \"data\");\r\n if (this.options.dataformat == null)\r\n this.options.dataformat = dojo.attr(this.div, \"dataformat\");\r\n if (this.options.showimplicithydrogens == null)\r\n this.options.showimplicithydrogens = JSDraw2.defaultoptions.showimplicithydrogens != null ? JSDraw2.defaultoptions.showimplicithydrogens : !scil.Utils.isAttFalse(this.div, \"showimplicithydrogens\");\r\n if (this.options.inktools == null)\r\n this.options.inktools = JSDraw2.defaultoptions.inktools != null ? JSDraw2.defaultoptions.inktools : !scil.Utils.isAttFalse(this.div, \"inktools\");\r\n if (this.options.highlighterrors == null)\r\n this.options.highlighterrors = JSDraw2.defaultoptions.highlighterrors != null ? JSDraw2.defaultoptions.highlighterrors : !scil.Utils.isAttFalse(this.div, \"highlighterrors\");\r\n if (this.options.skin == null) {\r\n this.options.skin = JSDraw2.defaultoptions.skin != null ? JSDraw2.defaultoptions.skin : dojo.attr(this.div, \"skin\");\r\n if (this.options.skin == null)\r\n this.options.skin = \"w8\";\r\n }\r\n if (this.options.monocolor == null)\r\n this.options.monocolor = scil.Utils.isAttTrue(this.div, \"monocolor\");\r\n if (this.options.fullscreen == null)\r\n this.options.fullscreen = JSDraw2.defaultoptions.fullscreen != null ? JSDraw2.defaultoptions.fullscreen : scil.Utils.isAttTrue(this.div, \"fullscreen\");\r\n\r\n if (this.options.buttonshape == null)\r\n this.options.buttonshape = JSDraw2.defaultoptions.buttonshape != null ? JSDraw2.defaultoptions.buttonshape : dojo.attr(this.div, \"buttonshape\");\r\n if (this.options.buttonshape == null || this.options.buttonshape == \"\")\r\n this.options.buttonshape = scil.Utils.isIE ? \"circle\" : \"square\";\r\n if (this.options.buttonshape == \"square\")\r\n this.options.buttonshape = \"btnrec\";\r\n else if (this.options.buttonshape == \"circle\")\r\n this.options.buttonshape = \"btncir\";\r\n\r\n if (!(this.options.scale > 0)) {\r\n if (JSDraw2.defaultoptions.scale != null) {\r\n this.options.scale = JSDraw2.defaultoptions.scale;\r\n } else {\r\n const s = dojo.attr(this.div, \"scale\");\r\n if (!isNaN(s))\r\n this.options.scale = parseFloat(s);\r\n //if (!(this.options.scale > 0))\r\n // this.options.scale = this.isSkinW8() ? 1.3 : 1.0;\r\n }\r\n }\r\n this.options.btnsize = this.isSkinW8() ? 42 : (20 * this.options.scale);\r\n\r\n if (this.options.data == null) {\r\n const molfile = dojo.attr(this.div, \"molfile\");\r\n if (molfile != null) {\r\n this.options.data = molfile;\r\n this.options.dataformat = \"molfile\";\r\n }\r\n }\r\n if (this.options.data == null) {\r\n const rxnfile = dojo.attr(this.div, \"rxnfile\");\r\n if (rxnfile != null) {\r\n this.options.data = rxnfile;\r\n this.options.dataformat = \"rxnfile\";\r\n }\r\n }\r\n\r\n if (this.options.skin == \"w8\")\r\n JSDraw2.Skin.jsdraw = {bkcolor: \"#fff\"};\r\n\r\n this.movingresolution = this.options.movingresolution > 0 ? this.options.movingresolution : 6;\r\n\r\n this.bondlength = JSDraw2.Editor.BONDLENGTH;\r\n this.tor = JSDraw2.Editor.TOR;\r\n this.linewidth = JSDraw2.Editor.LINEWIDTH;\r\n this.fontsize = JSDraw2.Editor.FONTSIZE;\r\n this.angleStop = JSDraw2.Editor.ANGLESTOP;\r\n const rect = scil.Utils.styleRect(this.div);\r\n this.dimension = new JSDraw2.Point(rect.width, rect.height);\r\n if (!(this.dimension.x > 0))\r\n this.dimension.x = this.div.offsetWidth == 0 ? 650 : this.div.offsetWidth;\r\n if (!(this.dimension.y > 0))\r\n this.dimension.y = this.div.offsetHeight == 0 ? 320 : this.div.offsetHeight;\r\n\r\n this.div.style.textAlign = \"left\";\r\n this.div.style.cursor = \"default\";\r\n this.div.style.width = this.dimension.x + \"px\";\r\n this.div.style.height = this.dimension.y + \"px\";\r\n\r\n if (scil.helm != null && this.options.helm != false)\r\n this.helm = new scil.helm.Plugin(this);\r\n\r\n this.m = new JSDraw2.Mol(this.options.showimplicithydrogens);\r\n this.status = null;\r\n this.modified = false;\r\n this.toolbar = null;\r\n\r\n this.touching = null;\r\n this.start = null;\r\n this.lastmove = null;\r\n this.end = null;\r\n this.curObject = null;\r\n this.curButton = null;\r\n this.movingClone = null;\r\n this.resizing = null;\r\n this.texteditor = {input: null, text: null, atom: null};\r\n this.rotating = null,\r\n this.mousedownPoint = null;\r\n this._lastMousedownTm = null;\r\n this.lassolast = null;\r\n this.chaintool = null;\r\n this.activated = false;\r\n this.ink = null;\r\n JSDraw2.Security._check();\r\n\r\n this.undocapacity = 10;\r\n this._undostack = new JSDraw2.Stack(this.undocapacity);\r\n this._redostack = new JSDraw2.Stack(this.undocapacity);\r\n\r\n if (!this.setMol(this.options.data)) {\r\n switch ((this.options.dataformat + \"\").toLowerCase()) {\r\n case \"mol\":\r\n case \"molfile\":\r\n this.setMolfile(this.options.data);\r\n break;\r\n case \"molbase64\":\r\n this.setMolbase64(this.options.data);\r\n break;\r\n case \"rxn\":\r\n case \"rxnfile\":\r\n this.setRxnfile(this.options.data);\r\n break;\r\n case \"rxnbase64\":\r\n this.setRxnbase64(this.options.data);\r\n break;\r\n case \"jdx\":\r\n this.setJdx(this.options.data);\r\n break;\r\n case \"html\":\r\n case \"xml\":\r\n case \"jsdraw\":\r\n this.setXml(this.options.data == null ? this.div : this.options.data);\r\n break;\r\n case \"helm\":\r\n this.setHelm(this.options.data == null ? this.div : this.options.data);\r\n break;\r\n case \"molurl\":\r\n this.download(this.options.data, \"mol\");\r\n break;\r\n case \"rxnurl\":\r\n this.download(this.options.data, \"rxn\");\r\n break;\r\n case \"xmlurl\":\r\n this.download(this.options.data, \"xml\");\r\n break;\r\n case \"jdxurl\":\r\n this.download(this.options.data, \"jdx\");\r\n break;\r\n default:\r\n this.setXml(this.div);\r\n }\r\n }\r\n\r\n const hastoolbar = !this.options.popup && !this.options.viewonly;\r\n this.div.innerHTML = \"\";\r\n if (this.options.background != null)\r\n this.div.style.background = this.options.background;\r\n else\r\n this.div.style.background = \"#fff\";\r\n if (hastoolbar && this.options.showtoolbar) {\r\n if (this.isSkinW8()) {\r\n this.dimension.y -= 70;\r\n } else {\r\n this.dimension.x -= 28;\r\n this.dimension.y -= 24;\r\n }\r\n }\r\n dojo.style(this.div, {width: this.dimension.x + \"px\", height: this.dimension.y + \"px\"});\r\n\r\n const me = this;\r\n if (!this.options.viewonly || this.options.popup == true) {\r\n if (scil.Utils.serviceAvailable() && scil.DnDFile != null) {\r\n new scil.DnDFile(this.div, {\r\n url: JSDrawServices.url + \"?cmd=openjsd\",\r\n onupload: function(args) {\r\n if (!scil.Utils.isChemFile(scil.Utils.getFileExt(args.filename))) return false;\r\n },\r\n callback: function(ret) {\r\n me.activate(true);\r\n JSDraw2.JSDrawIO.jsdFileOpen2(me, ret);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (hastoolbar) {\r\n this.toolbar = new JSDraw2.Toolbar(this);\r\n this.toolbar.createToolbars(this.div);\r\n if (!this.options.showtoolbar)\r\n this.toolbar.show(false);\r\n\r\n if (window.navigator.msPointerEnabled) {\r\n dojo.connect(this.div, \"onselectstart\", function(e) { e.preventDefault(); });\r\n\r\n // only caption multi-touch. one-point touch is handler by mouse-down/move/up\r\n dojo.connect(this.div, \"onMSPointerDown\", function(e) {\r\n e = scilligence.mstouch.down(e);\r\n if (e != null && e.touches.length > 1) me.touchStart(e); else me.resetGesture();\r\n });\r\n dojo.connect(this.div, \"onMSPointerMove\", function(e) {\r\n e = scilligence.mstouch.move(e);\r\n if (e != null && e.touches.length > 1) me.touchMove(e);\r\n });\r\n dojo.connect(this.div, \"onMSPointerUp\", function(e) {\r\n e = scilligence.mstouch.up(e);\r\n if (e != null && e.touches.length > 1) me.touchEnd(e);\r\n });\r\n\r\n dojo.connect(this.div, \"onMSGestureHold\", function(e) {\r\n me.showContextMenu(e);\r\n e.preventDefault();\r\n });\r\n //this.div.addEventListener(\"MSGestureStart\", function (e) { me.gestureStart(e); }, false);\r\n //this.div.addEventListener(\"MSGestureChange\", function (e) { me.gestureChange(e); }, false);\r\n //this.div.addEventListener(\"MSGestureEnd\", function (e) { me.gestureEnd(e); }, false);\r\n }\r\n\r\n if (scil.Utils.isTouch) {\r\n this.activate(false, false);\r\n this.connectHandlers.push(dojo.connect(document.body, 'ontouchstart', function(e) { return me.bodyTouchStart(e); }));\r\n this.connectHandlers.push(dojo.connect(this.maintable, 'onclick', function(e) { return me.touchClick(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'ontouchstart', function(e) { return me.touchStart(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'ontouchmove', function(e) { return me.touchMove(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'ontouchend', function(e) { return me.touchEnd(e); }));\r\n } else {\r\n this.activate(false, false);\r\n this.connectHandlers.push(dojo.connect(document, 'onmousedown', function(e: MouseEvent) { return me.bodyMouseDown(e); }));\r\n //this.connectHandlers.push(dojo.connect(document, 'onclick', function (e) { me.bodyClick(e); }));\r\n this.connectHandlers.push(dojo.connect(document, 'onkeydown', function(e: KeyboardEvent) { me.keydown(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function(e: MouseEvent) { me.mousedown(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousemove', function(e: MouseEvent) { me.mousemove(e); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmouseup', function(e: MouseEvent) { me.mouseup(e); }));\r\n if (scil.Utils.isFirefox)\r\n this.connectHandlers.push(dojo.connect(this.div, 'onwheel', function(e: WheelEvent) { me.mousewheel(e); }));\r\n else\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousewheel', function(e: WheelEvent) { me.mousewheel(e); }));\r\n }\r\n\r\n dojo.attr(this.div, '__ajaxform', '1');\r\n } else {\r\n if (this.options.popup) {\r\n if (scil.Utils.isTouch) {\r\n this.connectHandlers.push(dojo.connect(this.div, 'ontouchstart', function(e) {\r\n if (!scil.Utils.isTouchDblClick(e)) return;\r\n me.dblclick();\r\n e.preventDefault();\r\n return false;\r\n }));\r\n } else {\r\n this.connectHandlers.push(dojo.connect(this.div, 'ondblclick', function(e) {\r\n me.dblclick();\r\n }));\r\n }\r\n }\r\n\r\n if (!scil.Utils.isTouch) {\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function(e: MouseEvent) { me.mousedown(e, true); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousemove', function(e: MouseEvent) { me.mousemove(e, true); }));\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmouseup', function(e: MouseEvent) { me.mouseup(e, true); }));\r\n if (scil.Utils.isFirefox)\r\n this.connectHandlers.push(dojo.connect(this.div, 'DOMMouseScroll', function(e: WheelEvent) { me.mousewheel(e); }));\r\n else\r\n this.connectHandlers.push(dojo.connect(this.div, 'onmousewheel', function(e: WheelEvent) { me.mousewheel(e, true); }));\r\n }\r\n }\r\n this.connectHandlers.push(dojo.connect(this.div, 'onresize', function() { if (!me._clearing) me.onResize(); }));\r\n\r\n dojo.style(this.div, {userSelect: \"none\", oUserSelect: \"none\", MozUserSelect: \"none\", khtmlUserSelect: \"none\", webkitUserSelect: \"none\"});\r\n\r\n // guarantee all parents are visible\r\n let parents = null;\r\n if (scil.Utils.isIE && (scil.Utils.isIE < 9 || dojox.gfx.renderer != \"svg\"))\r\n parents = this._showAllParents(this.div);\r\n this.surface = dojox.gfx.createSurface(this.div, this.dimension.x, this.dimension.y);\r\n if (parents != null) {\r\n //this.surface.rowNode.setAttribute(\"unselectable\", \"on\");\r\n this._hideElements(parents);\r\n }\r\n\r\n if (scil.Utils.isSilverlight == null) {\r\n // @ts-ignore\r\n scil.Utils.isSilverlight = this.div.firstChild != null && this.div.type == \"application/x-silverlight\";\r\n }\r\n\r\n if (scil.Utils.isSilverlight) {\r\n if (this.options.popup) {\r\n // this.connectHandlers.push(dojo.connect(this.div, 'onmousedown', function (e) { me.mousedown2(e); e.preventDefault(); }));\r\n this.div.style.position = \"relative\";\r\n let zindex = parseInt(this.div.style.zIndex + \"\");\r\n if (isNaN(zindex))\r\n zindex = 0;\r\n scil.Utils.createElement(this.div, \"div\", null, {\r\n position: \"absolute\", left: '0', top: '0', background: \"white\", filter: \"alpha(opacity=1)\",\r\n width: this.dimension.x + \"px\", height: this.dimension.y + \"px\", zIndex: `${zindex + 1}`\r\n });\r\n } else if (hastoolbar) {\r\n this.surface.connect(\"onkeydown\", function(e) { me.keydown(e); });\r\n }\r\n }\r\n\r\n if (this.options.showcontextmenu != false) {\r\n scil.Utils.disableContextMenu(this.div);\r\n //scil.Utils.disableContextMenu(this.surface);\r\n }\r\n\r\n this.modified = false;\r\n //this.activate(true);\r\n\r\n if (this.options.scale > 0) {\r\n const s = 30 / this.bondlength * this.options.scale;\r\n if (s != 1)\r\n this.scale(this.options.scale);\r\n this.fitToWindow();\r\n }\r\n this.redraw();\r\n this.loaded = true;\r\n\r\n if (hastoolbar) {\r\n if (this.options.tlcplate)\r\n this.doCmd(\"tlc\");\r\n else\r\n this.doCmd(\"select\");\r\n\r\n if (!this.options.appmode && !scil.Utils.isIE) // except IE, I#10205\r\n scil.connect(document, \"onpaste\", function(e) { if (me.doPaste(e)) e.preventDefault(); });\r\n } else {\r\n this.doCmd(\"moveview\");\r\n }\r\n }\r\n\r\n doPaste(s) {\r\n if (!this.activated)\r\n return false;\r\n\r\n if (this.texteditor.ed != null && this.texteditor.ed.input != null && this.texteditor.ed.input.style.display != \"none\")\r\n return false;\r\n\r\n const maxZindex = scil.Utils.getMaxZindex();\r\n const zindex = scil.Utils.getZindex(this.div);\r\n if (maxZindex > zindex)\r\n return false;\r\n\r\n const clipboard = s;\r\n if (clipboard != null && clipboard.clipboardData != null)\r\n s = clipboard.clipboardData.getData(\"text/plain\");\r\n\r\n let m = null;\r\n if (!scil.Utils.isNullOrEmpty(s)) {\r\n m = new JSDraw2.Mol();\r\n m.setXml(s);\r\n if (m.isEmpty())\r\n m = null;\r\n }\r\n\r\n if (m == null)\r\n m = JSDraw2.Editor.getClipboard();\r\n\r\n if (m == null) {\r\n // try ajax paste\r\n if (clipboard != null && clipboard.clipboardData != null && JSDrawServices != null && JSDrawServices.url != null) {\r\n const rtf = clipboard.clipboardData.getData(\"text/rtf\");\r\n if (!scil.Utils.isNullOrEmpty(rtf)) {\r\n const me = this;\r\n scil.Utils.ajax(JSDrawServices.url + \"?cmd=paste.rtf2jsdraw\", function(ret) {\r\n if (ret == null && ret.jsdraw == null)\r\n return;\r\n const m = new JSDraw2.Mol();\r\n if (m.setXml(ret.jsdraw) == null)\r\n return;\r\n const f = me.pasteMol(m);\r\n if (f)\r\n me.refresh();\r\n }, {rtf: rtf});\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const ret = this.pasteMol(m);\r\n if (ret)\r\n this.refresh();\r\n return true;\r\n }\r\n\r\n _showAllParents(e) {\r\n const ret = {display: [], visibility: [], visvalues: []};\r\n while (e != null && e.style != null) {\r\n if (e.style.display == \"none\") {\r\n ret.display.push(e);\r\n e.style.display = \"\";\r\n }\r\n if (e.style.visibility != \"\" && e.style.visibility != null && e.style.visibility != \"visible\") {\r\n ret.visibility.push(e);\r\n ret.visvalues.push(e.style.visibility);\r\n e.style.visibility = \"visible\";\r\n }\r\n e = e.parentNode;\r\n }\r\n return ret;\r\n }\r\n\r\n _hideElements(ret) {\r\n if (ret == null)\r\n return;\r\n for (let i = 0; i < ret.display.length; ++i)\r\n ret.display[i].style.display = \"none\";\r\n for (let i = 0; i < ret.visibility.length; ++i)\r\n ret.visibility[i].style.visibility = ret.visvalues[i];\r\n }\r\n\r\n reset() {\r\n this.clear(true);\r\n this._undostack.clear();\r\n this._redostack.clear();\r\n\r\n if (this.options.tlcplate)\r\n this.doCmd(\"tlc\");\r\n else\r\n this.doCmd(\"select\");\r\n }\r\n\r\n /**\r\n * Push the current status into undo stack\r\n * @function pushundo\r\n * @returns null\r\n */\r\n pushundo(m?: EditorClone, action?: any) {\r\n if (this.disableundo)\r\n return;\r\n\r\n if (m == null && action != null && this.lastaction == action)\r\n return;\r\n\r\n this.lastaction = action;\r\n this._redostack.clear();\r\n this._undostack.push(m == null ? this.clone() : m);\r\n }\r\n\r\n /**\r\n * Undo once\r\n * @function undo\r\n * @returns null\r\n */\r\n undo() {\r\n if (this.disableundo)\r\n return;\r\n\r\n const m = this._undostack.pop();\r\n if (m == null)\r\n return false;\r\n\r\n this._redostack.push(this.clone());\r\n this.restoreClone(m);\r\n this.setModified(true);\r\n return true;\r\n }\r\n\r\n restoreClone(m) {\r\n this._setmol(m.mol);\r\n this.resetScale(m);\r\n }\r\n\r\n\r\n /**\r\n * Redo once\r\n * @function redo\r\n * @returns null\r\n */\r\n redo() {\r\n if (this.disableundo)\r\n return;\r\n\r\n const m = this._redostack.pop();\r\n if (m == null)\r\n return false;\r\n\r\n this._undostack.push(this.clone());\r\n this._setmol(m.mol);\r\n this.resetScale(m);\r\n this.setModified(true);\r\n return true;\r\n }\r\n\r\n /**\r\n * Copy\r\n * @function copy\r\n * @returns null\r\n */\r\n copy(m?: Mol) {\r\n if (m == null) {\r\n m = this.m.clone(true);\r\n m.bondlength = this.bondlength;\r\n }\r\n JSDraw2.Editor.setClipboard(m, this.bondlength);\r\n\r\n if (scil.Clipboard != null && m != null && !m.isEmpty()) {\r\n scil.Clipboard.copy(m.getXml(null, null, null, null, this.bondlength));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Cut\r\n * @function cut\r\n * @returns null\r\n */\r\n cut() {\r\n if (!this.copy())\r\n return false;\r\n this.pushundo();\r\n return this.delSelected() > 0;\r\n }\r\n\r\n /**\r\n * Paste\r\n * @function past\r\n * @param {Point} pos - place the pasted structure to this location\r\n * @returns the Mol\r\n */\r\n paste(pos?: number) {\r\n const m = JSDraw2.Editor.getClipboard();\r\n return this.pasteMol(m);\r\n }\r\n\r\n /**\r\n * Paste a mol\r\n * @function past\r\n * @param {Mol} m - molecule to be pasted\r\n * @param {Point} pos - place the pasted structure to this location\r\n * @returns the Mol\r\n */\r\n pasteMol(m, pos?: Point, clear?: string): boolean {\r\n if (m == null)\r\n return false;\r\n\r\n if (typeof (m) == \"string\") {\r\n const mol = new JSDraw2.Mol(this.options.showimplicithydrogens);\r\n mol.setMolfile(m);\r\n m = mol;\r\n }\r\n\r\n const empty = this.m.isEmpty();\r\n this.pushundo();\r\n\r\n if (!!clear)\r\n this.clear(null, true);\r\n\r\n let len = null;\r\n if (m.bondlength > 0) {\r\n len = this.bondlength; //I#9549\r\n m.scale(this.bondlength / m.bondlength);\r\n //this.resetScale();\r\n } else {\r\n let len2 = m.medBondLength();\r\n if (!(len2 > 0))\r\n len2 = 1.56;\r\n let len = this.m.medBondLength();\r\n if (!(len > 0))\r\n len = this.bondlength;\r\n m.scale(len / len2);\r\n }\r\n\r\n if (pos == null) {\r\n m.moveCenter(this.dimension.x, this.dimension.y);\r\n m.offset(10, 10);\r\n } else {\r\n const c = m.center();\r\n m.offset(pos.x - c.x, pos.y - c.y);\r\n }\r\n\r\n m.showimplicithydrogens = this.options.showimplicithydrogens;\r\n this.m.setSelected();\r\n m.setSelected(true);\r\n m.calcHCount(true);\r\n\r\n // make rxn\r\n let reaction = null;\r\n const rxn = this.m.parseRxn(true);\r\n const rxn2 = m.parseRxn(true);\r\n if ((clear == \"reactant\" || clear == \"product\") && rxn2 != null && rxn2.arrow == null) {\r\n if (clear == \"reactant\")\r\n scil.Utils.mergeArray(rxn.reactants, rxn2.reactants);\r\n else\r\n scil.Utils.mergeArray(rxn.products, rxn2.reactants);\r\n reaction = rxn;\r\n } else if (rxn != null && (rxn.reactants.length > 0 || rxn.products.length > 0)) {\r\n if (rxn.arrow != null) {\r\n if (rxn2.arrow == null) {\r\n if (rxn.reactants.length == 0)\r\n rxn.reactants = rxn2.reactants;\r\n else\r\n scil.Utils.mergeArray(rxn.products, rxn2.reactants);\r\n reaction = rxn;\r\n }\r\n } else {\r\n if (rxn2.arrow != null) {\r\n if (rxn.arrow == null) {\r\n if (rxn2.reactants.length == 0)\r\n rxn2.reactants = rxn.reactants;\r\n else\r\n scil.Utils.mergeArray(rxn2.products, rxn.reactants);\r\n }\r\n reaction = rxn2;\r\n }\r\n }\r\n }\r\n\r\n if (reaction != null) {\r\n this.m.setRxn(reaction, len);\r\n this.fitToWindow();\r\n } else {\r\n const tlcplates = [];\r\n for (let i = m.graphics.length - 1; i >= 0; --i) {\r\n const t = JSDraw2.TLC.cast(m.graphics[i]);\r\n if (t != null) {\r\n m.graphics.splice(i, 1);\r\n tlcplates.splice(0, 0, t);\r\n }\r\n }\r\n\r\n this.m.mergeMol(m);\r\n for (let i = 0; i < tlcplates.length; ++i)\r\n this.addTlcPlate(tlcplates[i]);\r\n\r\n if (m.chiral != null)\r\n this.m.chiral = m.chiral;\r\n\r\n if (empty)\r\n this.fitToWindow();\r\n }\r\n\r\n this.setModified(true);\r\n return true;\r\n }\r\n\r\n /**\r\n * Reset scaling\r\n * @function resetScale\r\n * @returns null\r\n */\r\n resetScale(s?: EditorClone): void {\r\n this.bondlength = s == null ? JSDraw2.Editor.BONDLENGTH : s.bondlength;\r\n this.tor = s == null ? JSDraw2.Editor.TOR : s.tor;\r\n this.linewidth = s == null ? JSDraw2.Editor.LINEWIDTH : s.linewidth;\r\n this.fontsize = s == null ? JSDraw2.Editor.FONTSIZE : s.fontsize;\r\n this.angleStop = s == null ? JSDraw2.Editor.ANGLESTOP : s.angleStop;\r\n }\r\n\r\n clone(): EditorClone {\r\n return {mol: this.m.clone(), bondlength: this.bondlength, tor: this.tor, linewidth: this.linewidth, fontsize: this.fontsize, angleStop: this.angleStop};\r\n }\r\n\r\n showTextEditor(obj: any, p?: Point, str?: string) {\r\n const text = this.texteditor.text = JSDraw2.Text.cast(obj);\r\n if (text != null && text.readonly)\r\n return;\r\n\r\n if (this.texteditor.hidetime != null) {\r\n const tm = this.texteditor.hidetime;\r\n this.texteditor.hidetime = null;\r\n if (new Date().getTime() - tm < 500)\r\n return;\r\n }\r\n\r\n const a = this.texteditor.atom = JSDraw2.Atom.cast(obj);\r\n const t = JSDraw2.Text.cast(obj);\r\n const shp = this.texteditor.shape = JSDraw2.Shape.cast(obj);\r\n const br = t != null && t.anchors != null && t.anchors.length == 1 ? JSDraw2.Bracket.cast(t.anchors[0]) : null;\r\n if (a != null) {\r\n p.x -= 6 * this.bondlength / 30;\r\n p.y -= 9 * this.bondlength / 30;\r\n } else if (shp != null) {\r\n p.x = shp._rect.left + shp._rect.width / 10;\r\n p.y = shp._rect.center().y - 9 * this.bondlength / 30;\r\n }\r\n\r\n const me = this;\r\n if (this.texteditor.ed == null) {\r\n const input = scil.Utils.createElement(document.body, \"input\");\r\n this.texteditor.ed = new scil.DropdownInput(input, {onclickitem: function(s) { return me.clickTextItem(s); }});\r\n dojo.style(this.texteditor.ed.input, {position: \"absolute\", display: \"none\", zIndex: '999'});\r\n this.connectHandlers.push(dojo.connect(this.texteditor.ed.input, \"onkeydown\", function(e) { return me.txtKeypress(e); }));\r\n }\r\n\r\n const options = this.texteditor.ed.options;\r\n if (a != null) {\r\n let list = null;\r\n if (a.bio != null && this.helm != null)\r\n list = scil.helm.Monomers.getMonomerList(a);\r\n else\r\n list = JSDraw2.defaultoptions.atomlist != null ? JSDraw2.defaultoptions.atomlist : JSDraw2.PT.getCommonUsedElements(\"list\");\r\n this.texteditor.ed.setItems(list);\r\n options.onSetValue = function(input, s) { input.value = s; };\r\n options.minautowidth = JSDraw2.defaultoptions.minautowidth1 > 0 ? JSDraw2.defaultoptions.minautowidth1 : 100;\r\n if (a.bio != null)\r\n options.onFilter = null;\r\n else\r\n options.onFilter = function(q) { return me.filterAtomType(q); };\r\n } else if (shp != null) {\r\n this.texteditor.ed.setItems(null);\r\n } else if (br != null) {\r\n if (t.fieldtype == \"BRACKET_TYPE\") {\r\n this.texteditor.ed.setItems(JSDraw2.SGroup == null ? null : JSDraw2.SGroup.getDisplayTypes());\r\n options.onSetValue = function(input, s) {\r\n let s2 = \"\";\r\n if (scil.Utils.endswith(s, \")\")) {\r\n const p = s.lastIndexOf('(');\r\n if (p > 0)\r\n s2 = s.substr(p + 1, s.length - p - 2);\r\n }\r\n input.value = s2;\r\n };\r\n options.minautowidth = JSDraw2.defaultoptions.minautowidth2 > 0 ? JSDraw2.defaultoptions.minautowidth2 : 150;\r\n options.onFilter = null;\r\n } else if (t.fieldtype == \"MOL_TYPE\") {\r\n this.texteditor.ed.setItems(JSDraw2.MOLECULETYPES);\r\n options.onSetValue = function(input, s) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n this.mol.delGraphics(t);\r\n else\r\n input.value = s;\r\n };\r\n options.minautowidth = JSDraw2.defaultoptions.minautowidth2 > 0 ? JSDraw2.defaultoptions.minautowidth2 : 150;\r\n options.onFilter = null;\r\n }\r\n } else {\r\n this.texteditor.ed.setItems(JSDraw2.defaultoptions.textlist != null ? JSDraw2.defaultoptions.textlist : JSDraw2.TEXTKEYWORDS);\r\n options.onSetValue = function(input, s) { if (scil.Utils.indexOf(options.items, s) >= 0) input.value += s; else input.value = s; };\r\n options.minautowidth = JSDraw2.defaultoptions.minautowidth3 > 0 ? JSDraw2.defaultoptions.minautowidth3 : 300;\r\n options.autosuggest = this.options.reagentsuggest;\r\n options.onFilter = options.autosuggest != null ? null : function() { };\r\n }\r\n const z = scil.Utils.getZindex(this.div);\r\n this.texteditor.ed.input.style.zIndex = z > 0 ? (z + 1) : 1;\r\n\r\n if (text != null)\r\n p = new JSDraw2.Point(text._rect.left, text._rect.top);\r\n else\r\n p.offset(-2, -2);\r\n const offset = scil.Utils.getOffset(this.div, false);\r\n dojo.style(this.texteditor.ed.input, {fontSize: this.fontsize + \"px\"});\r\n dojo.style(this.texteditor.ed.input, {left: (p.x + offset.x) + \"px\", top: (p.y + offset.y) + \"px\", display: \"\"});\r\n\r\n let selectall = true;\r\n if (text != null) {\r\n this.texteditor.ed.input.value = str == null ? text.text : str;\r\n } else if (a != null) {\r\n let s = a.getLabel();\r\n if (a.charge > 0) {\r\n if (a.charge > 1)\r\n s += a.charge;\r\n else\r\n s += \"+\";\r\n } else if (a.charge < 0) {\r\n if (a.charge > 1)\r\n s += a.charge;\r\n else\r\n s += \"-\";\r\n }\r\n this.texteditor.ed.input.value = s;\r\n } else if (shp != null) {\r\n this.texteditor.ed.input.value = shp.text;\r\n } else if (str != null) {\r\n this.texteditor.ed.input.value = str;\r\n selectall = false;\r\n }\r\n // dojo.attr(this.texteditor.ed, \"changed\", '');\r\n\r\n this.txtAutosize();\r\n if (selectall)\r\n this.texteditor.ed.input.select();\r\n this.texteditor.ed.input.style.display = \"\";\r\n this.texteditor.ed.input.focus();\r\n this.texteditor.showtime = new Date().getTime();\r\n }\r\n\r\n filterAtomType(q) {\r\n if (this.texteditor.atom == null)\r\n return;\r\n return JSDraw2.SuperAtoms.filter(q, JSDraw2.defaultoptions.suggestcount > 0 ? JSDraw2.defaultoptions.suggestcount : 10);\r\n }\r\n\r\n createImageTo(parent) {\r\n if (!scil.Utils.serviceAvailable() || parent == null)\r\n return;\r\n\r\n if (typeof (parent) == \"string\")\r\n parent = scil.byId(parent);\r\n\r\n const jsdraw = this.getXml();\r\n scil.Utils.ajax(JSDrawServices.url + \"?cmd=jsdraw2img\", function(ret) {\r\n scil.Utils.createElement(parent, \"img\", null, null, {src: ret.src, jsdraw: JSDraw2.Base64.encode(jsdraw)});\r\n }, {jsdraw: jsdraw});\r\n }\r\n\r\n clickTextItem(s) {\r\n if (this.texteditor.atom != null) {\r\n if (s == \"...\") {\r\n this.hideTextEditor(true);\r\n\r\n this.m.setSelected(false);\r\n this.texteditor.atom.selected = true;\r\n this.refresh(false);\r\n\r\n const me = this;\r\n this.showPT(function(elem) { me.menuSetAtomType2(elem); });\r\n } else {\r\n this.hideTextEditor();\r\n }\r\n } else {\r\n this.txtAutosize();\r\n }\r\n }\r\n\r\n insertSymbol(symbol) {\r\n if (this.texteditor.ed == null || this.texteditor.ed.input.style.display == \"none\")\r\n return false;\r\n this.texteditor.ed.input.focus();\r\n\r\n let caretposition = JSDraw2.Symbol.getCaretPosition(this.texteditor.ed.input);\r\n const s = this.texteditor.ed.input.value;\r\n if (caretposition > 0 && caretposition < s.length) {\r\n this.texteditor.ed.input.value = s.substr(0, caretposition) + symbol + s.substr(caretposition);\r\n ++caretposition;\r\n JSDraw2.Symbol.setCaretPosition(this.texteditor.ed.input, caretposition);\r\n } else {\r\n this.texteditor.ed.input.value += symbol;\r\n }\r\n this.txtAutosize();\r\n return false;\r\n }\r\n\r\n hideTextEditor(cancel?: boolean) {\r\n if (this.texteditor.ed == null || this.texteditor.ed.input.style.display == \"none\")\r\n return;\r\n\r\n if (this.texteditor.showtime != null) {\r\n const tm = this.texteditor.showtime;\r\n this.texteditor.showtime = null;\r\n if (new Date().getTime() - tm < 500)\r\n return;\r\n }\r\n\r\n this.texteditor.ed.hide();\r\n this.texteditor.ed.input.style.display = \"none\";\r\n this.texteditor.ed.input.style.display = \"none\";\r\n this.texteditor.hidetime = new Date().getTime();\r\n\r\n let s = scil.Utils.trim(this.texteditor.ed.input.value);\r\n this.texteditor.ed.input.value = \"\";\r\n if (cancel == true)\r\n return;\r\n\r\n if (this.options.onvalidatetext != null) {\r\n if (this.options.onvalidatetext(s, this.texteditor, this) == false)\r\n return;\r\n }\r\n\r\n if (JSDraw2.Symbol != null)\r\n JSDraw2.Symbol.hide();\r\n\r\n if (this.texteditor.atom != null) {\r\n if (s == \"\")\r\n s = \"C\";\r\n const cloned = this.clone();\r\n\r\n let f;\r\n if (this.texteditor.atom.bio != null) {\r\n if (this.helm != null && scil.helm.isHelmNode(this.texteditor.atom)) {\r\n f = this.helm.setNodeTypeFromGui(this.texteditor.atom, s);\r\n }\r\n } else {\r\n s = JSDraw2.FormulaParser.stripHs(s);\r\n f = this.m.setAtomAlias(this.texteditor.atom, s) || this.m.setAtomType(this.texteditor.atom, s, true);\r\n }\r\n\r\n if (f) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n } else if (this.texteditor.shape != null) {\r\n if (this.texteditor.shape.text != s) {\r\n this.pushundo();\r\n this.texteditor.shape.text = s;\r\n this.refresh(true);\r\n }\r\n } else {\r\n if (this.texteditor.text == null) {\r\n if (s.length == 0)\r\n return;\r\n\r\n const offset = scil.Utils.getOffset(this.div, false);\r\n const rect = scil.Utils.styleRect(this.texteditor.ed.input);\r\n rect.offset(-offset.x, -offset.y);\r\n const txt = new JSDraw2.Text(rect, s);\r\n this.pushundo();\r\n this.m.addGraphics(txt);\r\n this.refresh(true);\r\n } else {\r\n if (s == this.texteditor.text.text)\r\n return;\r\n\r\n this.pushundo();\r\n if (s.length == 0)\r\n this.texteditor.text._parent.delObject(this.texteditor.text);\r\n else\r\n this.texteditor.text.text = s;\r\n if (this.texteditor.text.fieldtype == \"BRACKET_TYPE\" && this.texteditor.text.anchors.length == 1 && JSDraw2.Bracket.cast(this.texteditor.text.anchors[0]) != null) {\r\n if (scil.Utils.isNumber(s))\r\n this.texteditor.text.anchors[0].type = \"mul\";\r\n else\r\n this.texteditor.text.anchors[0].type = s;\r\n }\r\n this.texteditor.text = null;\r\n this.refresh(true);\r\n }\r\n }\r\n }\r\n\r\n showTemplatesDlg() {\r\n JSDraw2.CustomTemplates.show(false, this);\r\n }\r\n\r\n showSymbolDlg() {\r\n const input = this.texteditor == null || this.texteditor.ed == null ? null : this.texteditor.ed.input;\r\n const pt = input == null || input.style.display == \"none\" ? null : {x: input.offsetLeft, y: input.offsetTop + input.offsetHeight + 5};\r\n const me = this;\r\n JSDraw2.Symbol.show(false, function(s) { return me.insertSymbol(s); }, pt);\r\n }\r\n\r\n txtKeypress(e) {\r\n if ((e.keyCode == 40 || e.keyCode == 38) && (e.ctrlKey || e.metaKey) && JSDraw2.Symbol != null) {\r\n if (e.keyCode == 40)\r\n this.showSymbolDlg();\r\n else\r\n JSDraw2.Symbol.hide();\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n if (e.keyCode == 27 || e.keyCode == 13) {\r\n this.hideTextEditor(e.keyCode == 27);\r\n e.time2 = 903;\r\n e.preventDefault();\r\n return false;\r\n }\r\n this.txtAutosize();\r\n }\r\n\r\n txtAutosize() {\r\n const w = scil.Utils.textWidth(this.texteditor.ed.input.value) * this.fontsize * 0.6 + this.fontsize * 3;\r\n this.texteditor.ed.input.style.width = (w < 100 ? 100 : w) + \"px\";\r\n this.texteditor.ed.updateDropdownSize();\r\n }\r\n\r\n _setmol(m) {\r\n this.m = m;\r\n this.m.showimplicithydrogens = this.options.showimplicithydrogens;\r\n this.start = null;\r\n this.end = null;\r\n this.status = null;\r\n this.curObject = null;\r\n }\r\n\r\n /**\r\n * Scale the molecule\r\n * @function scale\r\n * @param {number} s - the scaling factor\r\n * @param {Point} origin - the scaling origin\r\n * @returns null\r\n */\r\n scale(s, origin?: Point) {\r\n if (s <= 0 || s == 1.0)\r\n return;\r\n\r\n if (this.bondlength * s < JSDraw2.speedup.minbondlength)\r\n s = JSDraw2.speedup.minbondlength / this.bondlength;\r\n\r\n this.m.scale(s, origin);\r\n this.bondlength *= s;\r\n this.tor *= s;\r\n this.linewidth *= s;\r\n this.fontsize *= s;\r\n\r\n if (origin == null)\r\n this.moveCenter();\r\n }\r\n\r\n /**\r\n * Set modified flag\r\n * @function setModified\r\n * @param {bool} f - true or false\r\n * @returns null\r\n */\r\n setModified(f) {\r\n this.modified = f;\r\n if (f == false)\r\n return;\r\n\r\n if (this.options.ondatachange != null && this.loaded) {\r\n if (typeof this.options.ondatachange == \"function\") {\r\n this.options.ondatachange(this);\r\n } else {\r\n try {\r\n eval(this.options.ondatachange)(this);\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Refresh the display\r\n * @function refresh\r\n * @param {bool} modified - modified flag\r\n * @returns null\r\n */\r\n refresh(modified?: boolean): void {\r\n this.m.stats = null;\r\n if (modified == true || modified == false)\r\n this.setModified(modified);\r\n this.redraw();\r\n }\r\n\r\n calcTextRect() {\r\n if (this.surface == null || scil.Utils.isIE8Lower && this.surface.rawNode == null)\r\n return;\r\n\r\n const g = this.createGroup();\r\n this.m.draw(g, this.linewidth, this.fontsize, true, null, null, true);\r\n this.surface.remove(g);\r\n }\r\n\r\n createGroup(parent?: any) {\r\n const g = (parent == null ? this.surface : parent).createGroup();\r\n if (dojox.gfx.renderer == \"svg\")\r\n g.rawNode.setAttribute(\"__surface_parentid\", this.id);\r\n return g;\r\n }\r\n\r\n moveview(p) {\r\n this.viewoffset = p;\r\n if (this.viewoffset != null)\r\n this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.viewoffset.x, this.viewoffset.y)]);\r\n else\r\n this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(0, 0)]);\r\n }\r\n\r\n /**\r\n * Redraw the molecule\r\n * @function redraw\r\n * @returns null\r\n */\r\n redraw(extraOnly?: boolean) {\r\n if (this.surface == null || scil.Utils.isIE8Lower && this.surface.rawNode == null)\r\n return;\r\n\r\n if (this.surface.rootgroup == null) {\r\n this.surface.rootgroup = this.createGroup();\r\n\r\n if (JSDraw2.Security.error != null) {\r\n this.surface.createText({x: 5, y: 25, text: JSDraw2.Security.error, align: \"start\"})\r\n .setFont({family: \"Arial\", size: \"20px\", weight: \"normal\"})\r\n .setFill(\"#ffe0e0\");\r\n }\r\n }\r\n if (this.viewoffset != null)\r\n this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.viewoffset.x, this.viewoffset.y)]);\r\n else\r\n this.surface.rootgroup.setTransform(null);\r\n\r\n this._clearing = true;\r\n if (extraOnly) {\r\n if (this.surface.extra != null) {\r\n this.surface.extra.clear();\r\n this.surface.extra.lasso = null;\r\n }\r\n } else {\r\n this.surface.rootgroup.clear();\r\n this.surface.extra = null;\r\n this._clearing = false;\r\n const g = this.createGroup(this.surface.rootgroup);\r\n g.monocolor = this.options.monocolor || JSDraw2.defaultoptions.monocolor;\r\n this.simpledraw = this.fontsize <= JSDraw2.speedup.fontsize;\r\n this.updateGroupRect();\r\n this.m.draw(g, this.linewidth, this.fontsize, null, this.dimension, this.options.highlighterrors, this.options.showcarbon, this.simpledraw);\r\n }\r\n\r\n const cmd = this.getCmd();\r\n if (this.surface.extra == null)\r\n this.surface.extra = this.createGroup(this.surface.rootgroup);\r\n const extra = this.surface.extra;\r\n if (this.curObject != null)\r\n this.curObject.drawCur(extra, this.fontsize / 2 + 1, JSDraw2.Editor.COLORCURRENT, this.m, cmd);\r\n\r\n if (this.start != null && this.end != null) {\r\n switch (cmd) {\r\n case \"arrow\":\r\n if (this.arrowtool != null && this.arrowtool.connector == \"rejector\")\r\n JSDraw2.Drawer.drawArrow(extra, this.start, this.end, \"gray\", this.linewidth, this.linewidth * 2);\r\n else\r\n JSDraw2.Drawer.drawArrow(extra, this.start, this.end, \"gray\", this.linewidth);\r\n break;\r\n case \"curve\":\r\n JSDraw2.Drawer.drawCurveArrow(extra, this.start, this.end, null, null, \"gray\", this.linewidth / 2);\r\n break;\r\n case \"rectangle\":\r\n JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 2, 5);\r\n break;\r\n case \"assaycurve\":\r\n JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 4);\r\n break;\r\n case \"spectrum\":\r\n JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 4);\r\n break;\r\n case \"ellipse\":\r\n JSDraw2.Drawer.drawEllipse(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 2);\r\n break;\r\n case \"diamond\":\r\n JSDraw2.Drawer.drawDiamond(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 2);\r\n break;\r\n case \"dreversed\":\r\n JSDraw2.Drawer.drawDShape(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 2, true);\r\n break;\r\n case \"dshape\":\r\n JSDraw2.Drawer.drawDShape(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth / 2);\r\n break;\r\n case \"doublearrow\":\r\n JSDraw2.Drawer.drawDoubleArrow(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth);\r\n break;\r\n case \"tlc\":\r\n case \"electrophoresis\":\r\n if (this.movingClone == null)\r\n new JSDraw2.TLC.create(cmd, this.start, this.end, this.fontsize / 2).draw(extra, this.linewidth, null, this.fontsize);\r\n break;\r\n case \"select\":\r\n case \"lasso\":\r\n case \"selfrag\":\r\n case \"zoombox\":\r\n if (this.movingClone == null)\r\n JSDraw2.Drawer.drawRect(extra, new JSDraw2.Rect().set(this.start, this.end), \"#aaaaff\", 1);\r\n break;\r\n case \"bracket\":\r\n JSDraw2.Drawer.drawBracket(extra, new JSDraw2.Rect().set(this.start, this.end), \"gray\", this.linewidth);\r\n break;\r\n case \"chain\": {\r\n let pts;\r\n if (this.chaintool != null) {\r\n pts = this.chaintool.points;\r\n for (let i = 1; i < pts.length; ++i)\r\n JSDraw2.Drawer.drawLine(extra, pts[i - 1], pts[i], \"gray\", this.linewidth);\r\n }\r\n\r\n if (!(scil.Utils.isIE && scil.Utils.isIE < 9 && this.options.appmode))\r\n JSDraw2.Drawer.drawText(extra, pts[pts.length - 1], pts.length - 1, \"gray\", this.fontsize);\r\n break;\r\n }\r\n default:\r\n if (cmd == \"sgroup\")\r\n JSDraw2.Drawer.drawArrow(extra, this.start, this.end, \"red\", this.linewidth / 2);\r\n else if (cmd != \"rotate\" && cmd != \"eraser\" && cmd != \"plus\" && cmd != \"rxnmap\" && cmd != \"text\" &&\r\n cmd != \"undo\" && cmd != \"redo\" && cmd != \"zoomin\" && cmd != \"zoomout\")\r\n JSDraw2.Drawer.drawLine(extra, this.start, this.end, \"gray\", this.linewidth);\r\n break;\r\n }\r\n }\r\n\r\n if (this.status != null && this.status.length > 0) {\r\n const y = this.dimension.y - 10;\r\n extra.createText({x: 5, y: y, text: this.status, align: \"bottom\"})\r\n .setFont({family: \"Arial\", size: \"14px\", weight: \"normal\"})\r\n .setFill(\"#000\");\r\n }\r\n }\r\n\r\n /**\r\n * Fit the molecule to the view window\r\n * @function fitToWindow\r\n * @param {number} maxBondLength - maximum bond length\r\n * @returns null\r\n */\r\n fitToWindow(maxBondLength?: number) {\r\n const rect = this.m.rect();\r\n if (rect == null)\r\n return;\r\n\r\n if (maxBondLength == null) {\r\n maxBondLength = JSDraw2.Editor.BONDLENGTH;\r\n if (this.options.scale > 0)\r\n maxBondLength *= this.options.scale;\r\n }\r\n\r\n rect.inflate(this.bondlength, this.bondlength);\r\n const hs = rect.width / this.dimension.x;\r\n const vs = rect.height / this.dimension.y;\r\n\r\n let s;\r\n if (hs == 0)\r\n s = vs;\r\n else if (vs == 0)\r\n s = hs;\r\n else\r\n s = Math.max(vs, hs);\r\n\r\n if (maxBondLength > 0 && this.bondlength / s > maxBondLength)\r\n s = this.bondlength / maxBondLength;\r\n\r\n if (s == 1.0)\r\n this.moveCenter();\r\n else\r\n this.scale(1.0 / s);\r\n }\r\n\r\n /**\r\n * Move the structure to center of the view window\r\n * @function moveCenter\r\n * @returns null\r\n */\r\n moveCenter() {\r\n this.m.moveCenter(this.dimension.x, this.dimension.y);\r\n }\r\n\r\n updateGroupRect() {\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const g = JSDraw2.Group.cast(this.m.graphics[i]);\r\n if (g != null)\r\n g._updateRect(this.m, this.bondlength);\r\n }\r\n }\r\n\r\n /**\r\n * Clean up reaction\r\n * @function cleanupRxn\r\n * @returns true if it is a reaction\r\n */\r\n cleanupRxn(bondlength: number) {\r\n const f = this.m.cleanupRxn(this.bondlength);\r\n if (f)\r\n this.fitToWindow(this.bondlength);\r\n return f;\r\n }\r\n\r\n setRxn(rxn: any, redraw: boolean, bondlength?: number, addlabel?: boolean) {\r\n this.pushundo();\r\n if (bondlength != null)\r\n this.bondlength = bondlength;\r\n\r\n if (addlabel) {\r\n for (let i = 0; i < rxn.reactants.length; ++i)\r\n rxn.reactants[i].removeTextByFieldType(\"RXNLABEL\");\r\n for (let i = 0; i < rxn.products.length; ++i)\r\n rxn.products[i].removeTextByFieldType(\"RXNLABEL\");\r\n }\r\n\r\n this.m.setRxn(rxn, this.bondlength);\r\n this.calcTextRect();\r\n this.m._layoutRxn(rxn, this.bondlength);\r\n\r\n if (addlabel) {\r\n for (let i = 0; i < rxn.reactants.length; ++i)\r\n this.m._addRxnLabel(rxn.reactants[i], this.bondlength / 2);\r\n for (let i = 0; i < rxn.products.length; ++i)\r\n this.m._addRxnLabel(rxn.products[i], this.bondlength / 2);\r\n }\r\n\r\n this.fitToWindow(this.bondlength);\r\n if (redraw != false)\r\n this.redraw();\r\n }\r\n\r\n /**\r\n * Clear all contents\r\n * @function clear\r\n * @param {bool} redraw - indicate if redrawing the view wndow\r\n * @returns null\r\n */\r\n clear(redraw?: boolean, fireevents?: boolean) {\r\n const isempty = this.m.isEmpty();\r\n\r\n this.m.clear();\r\n this.curObject = null;\r\n if (redraw)\r\n this.redraw();\r\n this.resetScale();\r\n if (this.options.scale > 0)\r\n this.scale(this.options.scale);\r\n if (this.ink != null)\r\n this.ink.clear();\r\n\r\n if (!isempty) {\r\n if (fireevents && this.options.onClear != null)\r\n this.options.onClear();\r\n }\r\n }\r\n\r\n toggleAtom(p) {\r\n return this.m.toggleAtom(p, this.simpledraw ? JSDraw2.Editor.TOR : this.tor);\r\n }\r\n\r\n toggle(p) {\r\n return this.m.toggle(p, this.simpledraw ? JSDraw2.Editor.TOR : this.tor);\r\n }\r\n\r\n fixWedgeDir(b) {\r\n const atoms1 = this.m.getNeighborAtoms(b.a1, b.a2);\r\n const atoms2 = this.m.getNeighborAtoms(b.a2, b.a1);\r\n if ((atoms1.length == 0 || atoms1.length == 1) && atoms1.length < atoms2.length)\r\n b.reverse();\r\n }\r\n\r\n /**\r\n * Get the fragment containing a given atom\r\n * @function getFragment\r\n * @param {Atom} a - the given atom\r\n * @returns the fragement as a Mol object\r\n */\r\n getFragment(a) {\r\n const frags = this.m.splitFragments();\r\n for (let i = 0; i < frags.length; ++i) {\r\n if (frags[i].containsAtom(a))\r\n return frags[i];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get the center of a set of atoms\r\n * @function getCenter\r\n * @param {array} atoms - an array of atoms\r\n * @returns a Point object\r\n */\r\n getCenter(atoms?: Atom[]) {\r\n let x = 0;\r\n let y = 0;\r\n if (atoms == null)\r\n atoms = this.m.atoms;\r\n if (atoms.length == 0)\r\n return null;\r\n\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a = atoms[i];\r\n x += a.p.x;\r\n y += a.p.y;\r\n }\r\n\r\n return new JSDraw2.Point(x / atoms.length, y / atoms.length);\r\n }\r\n\r\n /**\r\n * Rotate atoms around a point\r\n * @function rotate\r\n * @param {array} atoms - an array of atom\r\n * @param {Point} origin - rotating orgin\r\n * @param {deg} atoms - rotating degree\r\n * @returns null\r\n */\r\n rotate(atoms, origin, deg) {\r\n if (atoms == null)\r\n atoms = this.m.atoms;\r\n\r\n if (Math.abs(deg) < 0.1 || atoms.length == 0)\r\n return false;\r\n\r\n for (let i = 0; i < atoms.length; ++i)\r\n atoms[i].p.rotateAround(origin, deg);\r\n\r\n return true;\r\n }\r\n\r\n // mousedown2(e) {\r\n // // silverlight - simulate double-click\r\n // if (this.options.popup) {\r\n // const tm = new Date().getTime();\r\n // if (this._lastMousedownTm != null && tm - this._lastMousedownTm < 300)\r\n // this.dblclick();\r\n // this._lastMousedownTm = tm;\r\n // }\r\n // },\r\n\r\n startResize(obj, p, ctrl, cmd) {\r\n if (obj.resize == null)\r\n return;\r\n\r\n const corner = obj.cornerTest(p, this.tor, ctrl, cmd);\r\n if (corner != null) {\r\n const list = [];\r\n this.resizing = {corner: corner, obj: obj, start: p, list: list};\r\n const br = JSDraw2.Bracket.cast(obj);\r\n if (br != null)\r\n this.resizing.texts = br.getTexts(this.m);\r\n }\r\n }\r\n\r\n getConnectingAtomBonds(list, notused?: boolean) {\r\n const links = [];\r\n if (list != null && list.length > 0) {\r\n const m = list[0]._parent;\r\n m.clearFlag();\r\n for (let i = 0; i < list.length; ++i)\r\n list[i].f = true;\r\n for (let i = 0; i < m.bonds.length; ++i) {\r\n const b = m.bonds[i];\r\n if (b.a1.f != b.a2.f) {\r\n links.push({a: b.a1.f ? b.a1 : b.a2, b: b});\r\n }\r\n }\r\n }\r\n return links;\r\n }\r\n\r\n mousewheel(e: WheelEvent, viewonly?: boolean) {\r\n if (!this.activated && !viewonly)\r\n return;\r\n\r\n const cmd = this.getCmd();\r\n if (cmd != \"moveview\")\r\n return;\r\n\r\n let delta = (-e.detail || (Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX));\r\n if (scil.Utils.isFirefox)\r\n delta *= 20.0;\r\n\r\n if (delta > 0 || delta < 0) {\r\n const p = this.eventPoint(e);\r\n this.scale(1.0 + delta / 500.0, p);\r\n if (!viewonly) {\r\n this.pushundo(null, \"moveview\");\r\n this.refresh(true);\r\n } else {\r\n this.redraw();\r\n }\r\n }\r\n\r\n if (scil.Utils.isFirefox) {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n e.preventDefault();\r\n }\r\n\r\n mousedown(e: MouseEvent, viewonly?: boolean) {\r\n if (!this.activated) {\r\n this.mousedownPoint = new JSDraw2.Point(e.clientX, e.clientY);\r\n if (viewonly && e.button == 0)\r\n this.start = this.eventPoint(e);\r\n return;\r\n }\r\n if (this.contextmenu != null && this.contextmenu.hide())\r\n return;\r\n\r\n JSDraw2.Menu.close();\r\n this.holding.start(e, this);\r\n\r\n //this.div.focus();\r\n if (!scil.Utils.isTouch && e.button != (scil.Utils.isIE8Lower ? 1 : 0))\r\n return;\r\n\r\n this.start = null;\r\n this.end = null;\r\n this.movingClone = null;\r\n this.resizing = null;\r\n this.lassolast = null;\r\n\r\n const cmd = this.getCmd();\r\n\r\n const tm = new Date().getTime();\r\n const tm0 = this._lastMousedownTm;\r\n this._lastMousedownTm = tm;\r\n if (tm - tm0 < JSDraw2.Editor.dblclickdelay && (cmd == \"select\" || cmd == \"lasso\" || cmd == \"selfrag\")) {\r\n if (this.surface.extra != null)\r\n this.surface.extra.lasso = null;\r\n this.mousedblclick(e);\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n const p = this.eventPoint(e) as EventPoint;\r\n if (cmd == \"moveview\") {\r\n this.start = p;\r\n this.viewoffset = null;\r\n return;\r\n }\r\n\r\n if (scil.Utils.startswith(cmd, \"spot-\")) {\r\n this.start = p;\r\n return;\r\n }\r\n\r\n if (cmd == \"inkred\" || cmd == \"inkblue\" || cmd == \"inkgreen\") {\r\n if (this.ink == null) {\r\n this.surface.ink = this.createGroup();\r\n this.ink = new JSDraw2.Ink(this.surface.ink);\r\n }\r\n this.ink.start(cmd.substr(3), p);\r\n return;\r\n }\r\n\r\n const obj = this.toggle(p);\r\n if (cmd == \"eraser\") {\r\n this.start = p;\r\n this.erasercache = {count: 0, cloned: this.clone(), singleton: false};\r\n if (obj != null) {\r\n if (JSDraw2.TLC.cast(obj) != null) {\r\n obj.cornerTest(p, this.tor, false, \"eraser\");\r\n if (obj.curspot != null)\r\n this.erasercache.singleton = true;\r\n }\r\n this.delObject(obj);\r\n ++this.erasercache.count;\r\n this.redraw();\r\n }\r\n this.div.style.cursor = \"pointer\";\r\n return;\r\n }\r\n\r\n this.curObject = obj;\r\n this.div.style.cursor = \"crosshair\";\r\n if (obj != null) {\r\n if (cmd == \"select\" || cmd == \"lasso\" || cmd == \"selfrag\" || (cmd == \"tlc\" || cmd == \"electrophoresis\") && JSDraw2.TLC.cast(obj) != null) {\r\n if (obj.selected && obj.resize != null && this.m.countSelected() == 1)\r\n this.startResize(obj, p, e.ctrlKey || e.metaKey, cmd);\r\n\r\n if (this.resizing == null && !obj.selected) {\r\n let a = null;\r\n const g = null;\r\n let br;\r\n if (cmd == \"selfrag\") {\r\n a = JSDraw2.Atom.cast(obj);\r\n const b = JSDraw2.Bond.cast(obj);\r\n const g = JSDraw2.Group.cast(obj);\r\n br = JSDraw2.Bracket.cast(obj);\r\n if (b != null)\r\n a = b.a1;\r\n }\r\n\r\n if (!e.shiftKey)\r\n this.m.setSelected(false);\r\n if (a != null) {\r\n // selfrag to select a fragment\r\n if (a != null) {\r\n const m = a._parent.getFragment(a, a._parent);\r\n for (let i = 0; i < m.atoms.length; ++i)\r\n m.atoms[i].selected = true;\r\n for (let i = 0; i < m.bonds.length; ++i)\r\n m.bonds[i].selected = true;\r\n }\r\n\r\n if (this.options.onselectionchanged != null)\r\n this.options.onselectionchanged(this);\r\n this.redraw();\r\n } else if (g != null) {\r\n // selfrag to select group atoms\r\n for (let i = 0; i < g._parent.atoms.length; ++i) {\r\n if (g._parent.atoms[i].group == g)\r\n g._parent.atoms[i].selected = true;\r\n }\r\n } else if (br != null) {\r\n // selfrag to select bracket atoms\r\n for (let i = 0; i < br.atoms.length; ++i) {\r\n if (br.atoms[i].group == g)\r\n br.atoms[i].selected = true;\r\n }\r\n } else {\r\n obj.selected = true;\r\n const b = JSDraw2.Bond.cast(obj);\r\n if (b != null)\r\n b.a1.selected = b.a2.selected = true;\r\n else\r\n this.startResize(obj, p, e.ctrlKey || e.metaKey, cmd == \"tlc\" || cmd == \"electrophoresis\");\r\n }\r\n }\r\n\r\n if (cmd != \"tlc\" && cmd != \"electrophoresis\" || this.resizing != null) {\r\n this.start = p;\r\n this.movingClone = this.clone();\r\n this.movingClone.startPt = p.clone();\r\n this.div.style.cursor = \"moveview\";\r\n }\r\n\r\n if (cmd == \"tlc\" || cmd == \"electrophoresis\")\r\n this.redraw();\r\n return;\r\n }\r\n }\r\n\r\n const a1 = JSDraw2.Atom.cast(obj);\r\n if (a1 != null) {\r\n p.x = a1.p.x;\r\n p.y = a1.p.y;\r\n p.atom = a1;\r\n }\r\n this.lastmove = this.start = p;\r\n if (this.start.tm == null)\r\n this.start.tm = new Date().getTime();\r\n\r\n if (cmd == \"lasso\" && obj == null) {\r\n if (!e.shiftKey && this.m.setSelected(false) > 0)\r\n this.redraw();\r\n this.lassolast = p;\r\n return;\r\n }\r\n\r\n if (cmd == \"chain\") {\r\n this.chaintool = {a: a1, start: this.start, p2: null, end: null, points: []};\r\n return;\r\n }\r\n\r\n if (cmd == \"rotate\" && a1 == null && !this.m.isEmpty()) {\r\n const atoms = this.m.atoms;\r\n\r\n let list = [];\r\n for (let i = 0; i < atoms.length; ++i) {\r\n if (atoms[i].selected)\r\n list.push(atoms[i]);\r\n }\r\n\r\n if (list.length == 0) {\r\n const center = this.getCenter(null);\r\n if (center != null)\r\n this.rotating = {atoms: null, center: center};\r\n } else if (list.length == 1) {\r\n const center = list[0].p.clone();\r\n if (list.length == 1) {\r\n const frag = this.getFragment(list[0]);\r\n if (frag != null)\r\n list = frag.atoms;\r\n }\r\n this.rotating = {atoms: list.length == 1 ? null : list, center: center};\r\n } else {\r\n const links = this.getConnectingAtomBonds(list, false);\r\n if (links.length == 1)\r\n this.rotating = {atoms: list, center: links[0].a.p.clone()};\r\n else\r\n this.rotating = {atoms: list, center: this.getCenter(list)};\r\n }\r\n\r\n if (this.rotating != null)\r\n this.rotating.cloned = this.clone();\r\n\r\n if (a1 != null) {\r\n this.m.setSelected();\r\n a1.selected = true;\r\n this.redraw();\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"arrow\") {\r\n this.arrowtool = {from: obj};\r\n if (JSDraw2.Shape.cast(obj) != null) {\r\n const conn = obj.bestConnectPoint(this.start, this.tor);\r\n this.start = conn.p;\r\n this.arrowtool.connector = conn.connector;\r\n }\r\n }\r\n\r\n if (cmd != \"rxnmap\" && !(e.ctrlKey || e.metaKey)) {\r\n if (!e.shiftKey && this.m.setSelected() > 0)\r\n this.redraw();\r\n }\r\n }\r\n\r\n selectCurrent(obj, e) {\r\n if (this.curObject == obj)\r\n return false;\r\n\r\n this.curObject = obj;\r\n if (this.options.onselectcurrent != null)\r\n this.options.onselectcurrent(e, obj, this);\r\n\r\n if (this.options.showhelmpopup)\r\n this.onHelmSelectCurrent(e, obj);\r\n return true;\r\n }\r\n\r\n onHelmSelectCurrent(e, obj) {\r\n const a = JSDraw2.Atom.cast(obj);\r\n if (a == null || this.start != null || this.contextmenu != null && this.contextmenu.isVisible()) {\r\n org.helm.webeditor.MolViewer.hide();\r\n return;\r\n }\r\n const type = a == null ? null : a.biotype();\r\n if (type == null)\r\n return;\r\n const set = org.helm.webeditor.Monomers.getMonomerSet(type);\r\n const s = a == null ? null : a.elem;\r\n const m = set == null ? null : set[s.toLowerCase()];\r\n org.helm.webeditor.MolViewer.show(e, type, m, s, this, a);\r\n }\r\n\r\n mousemove(e: MouseEvent, viewonly?: boolean) {\r\n if (!this.activated) {\r\n //this.mousedownPoint = null;\r\n if (viewonly && this.start != null && !this.frozen) {\r\n const p = this.eventPoint(e);\r\n this.moveview(new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y));\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n this.holding.move(e);\r\n\r\n const cmd = this.getCmd();\r\n const p = this.eventPoint(e);\r\n\r\n if (cmd == \"moveview\") {\r\n if (this.start != null && e.button == 0) {\r\n this.moveview(new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y));\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"inkblue\" || cmd == \"inkred\" || cmd == \"inkgreen\") {\r\n if (this.ink != null)\r\n this.ink.add(p);\r\n return;\r\n }\r\n\r\n this.lastmove = p;\r\n let f: boolean | string = false;\r\n\r\n let obj = null;\r\n if (this.start == null || cmd != \"select\" && cmd != \"lasso\" && cmd != \"selfrag\") {\r\n obj = this.toggle(p);\r\n f = this.selectCurrent(obj, e);\r\n }\r\n\r\n if (this.start != null) {\r\n if (cmd == \"arrow\") {\r\n if (this.start != null) {\r\n this.end = this.guessArrow(this.start, p);\r\n f = true;\r\n }\r\n } else if (cmd == \"zoombox\" || cmd == \"curve\") {\r\n if (this.start != null) {\r\n this.end = p;\r\n f = true;\r\n }\r\n } else if (cmd == \"rotate\") {\r\n if (this.rotating != null) {\r\n if (this.rotating.a1 == null) {\r\n this.rotating.a0 = this.rotating.a1 = p.angleTo(this.rotating.center);\r\n } else {\r\n const a2 = p.angleTo(this.rotating.center);\r\n f = this.rotate(this.rotating.atoms, this.rotating.center, a2 - this.rotating.a1);\r\n if (f)\r\n f = \"all\";\r\n this.rotating.a1 = a2;\r\n }\r\n }\r\n } else if (cmd == \"select\" || cmd == \"lasso\" || cmd == \"selfrag\" || cmd == \"tlc\" || cmd == \"electrophoresis\") {\r\n if (this.start != null) {\r\n if (this.lassolast) {\r\n this.end = p;\r\n this.lassoSelect(this.lassolast);\r\n this.lassolast = p;\r\n } else if (this.resizing != null) {\r\n if (!this.resizing.start.equalsTo(p)) {\r\n const delta = p.clone().offset(-this.resizing.start.x, -this.resizing.start.y);\r\n this.resizing.obj.resize(this.resizing.corner, delta, this.resizing.texts);\r\n if (e.shiftKey && JSDraw2.Shape.cast(this.resizing.obj) != null)\r\n this.resizing.obj._rect.height = this.resizing.obj._rect.width;\r\n this.resizing.start = p;\r\n this.resizing.changed = true;\r\n f = \"all\";\r\n }\r\n } else if (this.movingClone != null) {\r\n if (this.end == null) {\r\n this.end = this.start;\r\n if (e.ctrlKey || e.metaKey) {\r\n const m = this.m.clone(true);\r\n m.showimplicithydrogens = this.options.showimplicithydrogens;\r\n if (!m.isEmpty()) {\r\n this.m.setSelected();\r\n m.setSelected(true);\r\n m.calcHCount(true);\r\n this.m.mergeMol(m);\r\n }\r\n }\r\n }\r\n\r\n if (!this.end.equalsTo(p)) {\r\n this.m.offset(p.x - this.end.x, p.y - this.end.y, true);\r\n this.end = p;\r\n }\r\n f = \"all\";\r\n } else {\r\n this.end = p;\r\n f = true;\r\n }\r\n }\r\n } else if (cmd == \"rectangle\" || cmd == \"ellipse\" || cmd == \"diamond\" || cmd == \"dshape\" || cmd == \"dreversed\") {\r\n if (e.shiftKey)\r\n p.equalMove(this.start);\r\n this.end = p;\r\n f = true;\r\n } else if (cmd == \"bracket\" || cmd == \"sgroup\" || cmd == \"assaycurve\" || cmd == \"spectrum\" || cmd == \"doublearrow\" || cmd == \"tlc\" || cmd == \"electrophoresis\") {\r\n this.end = p;\r\n f = true;\r\n } else if (cmd == \"chain\") {\r\n this.end = p;\r\n f = this._makeChain(this.chaintool, p);\r\n } else if (cmd == \"eraser\") {\r\n if (this.erasercache != null && !this.erasercache.singleton) {\r\n obj = this.toggle(p);\r\n if (obj != null) {\r\n this.delObject(obj);\r\n ++this.erasercache.count;\r\n f = \"all\";\r\n }\r\n }\r\n } else if (scil.Utils.startswith(cmd, \"spot-\")) {\r\n } else {\r\n if (JSDraw2.Atom.cast(this.curObject) != null)\r\n this.end = this.curObject.p.clone();\r\n else\r\n this.end = this._guessBond(this.start, p);\r\n f = true;\r\n }\r\n }\r\n\r\n if (f != false && !(this.start != null && p.tm - this.start.tm < JSDraw2.Editor.undoGestureTime))\r\n this.redraw(f != \"all\");\r\n }\r\n\r\n mouseup(e: MouseEvent, viewonly?: boolean) {\r\n this.holding.end();\r\n\r\n let b;\r\n if (!scil.Utils.isTouch && e.button == 2) { // right click\r\n if (!viewonly) {\r\n if (!this.activated)\r\n this.activate(true);\r\n }\r\n\r\n if (this.touch.start1 == null) // Windows8 issue\r\n this.showContextMenu(e, viewonly);\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (!this.activated) {\r\n if (this.mousedownPoint != null && this.mousedownPoint.x == e.clientX && this.mousedownPoint.y == e.clientY)\r\n this.activate(true);\r\n if (viewonly && e.button == 0) {\r\n this.endMove(e, viewonly);\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n const cmd = this.getCmd();\r\n\r\n if (cmd == \"moveview\") {\r\n this.endMove(e, viewonly);\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (cmd == \"inkred\" || cmd == \"inkblue\" || cmd == \"inkgreen\") {\r\n if (this.ink != null)\r\n this.ink.end();\r\n return;\r\n }\r\n\r\n if (this.start == null)\r\n return;\r\n this.div.style.cursor = \"default\";\r\n\r\n const p1 = this.start;\r\n let p2 = this.lastmove == null ? p1.clone() : this.lastmove;\r\n this.lastmove = null;\r\n this.start = null;\r\n\r\n // detect undo gesture\r\n const dx = Math.abs(p1.x - p2.x);\r\n if ((p2.tm - p1.tm < JSDraw2.Editor.undoGestureTime) && Math.abs(dx) > 2 * 10 && dx > 5 * Math.abs(p1.y - p2.y) && this.toggle(p1) == null && this.toggle(p2) == null) {\r\n if (p1.x > p2.x)\r\n this.undo();\r\n else\r\n this.redo();\r\n this.refresh(false);\r\n return;\r\n }\r\n\r\n let f = null;\r\n if (cmd == \"text\") {\r\n this.showTextEditor(this.curObject, new JSDraw2.Point(p2.x, p2.y));\r\n return;\r\n }\r\n\r\n if (cmd == \"sgroup\") {\r\n if (p1.equalsTo(p2)) {\r\n this.showTextEditor(this.curObject, new JSDraw2.Point(p2.x, p2.y));\r\n } else {\r\n const obj1 = p1.atom != null ? p1.atom : this.toggle(p1);\r\n const obj2 = this.toggle(p2);\r\n if (JSDraw2.Text.cast(obj1) != null) {\r\n const cloned = this.clone();\r\n if (obj1.attach(obj2))\r\n this.pushundo(cloned);\r\n }\r\n this.refresh(true);\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"eraser\") {\r\n if (this.erasercache != null) {\r\n if (this.erasercache.count > 0) {\r\n this.pushundo(this.erasercache.cloned);\r\n this.curObject = null;\r\n if (this.helm != null)\r\n this.helm.resetIDs();\r\n this.refresh(true);\r\n }\r\n this.erasercache = null;\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"plus\") {\r\n if (this.curObject == null) {\r\n this.pushundo();\r\n this.m.addGraphics(new JSDraw2.Plus(p2));\r\n this.refresh(true);\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"rxnmap\") {\r\n this.doRxnMap(this.curObject);\r\n return;\r\n }\r\n\r\n const d = p1.distTo(p2);\r\n if (cmd == \"arrow\" || cmd == \"curve\") {\r\n if (this.arrowtool != null && this.arrowtool.from != null) {\r\n const from = JSDraw2.Shape.cast(this.arrowtool.from);\r\n let to = JSDraw2.Shape.cast(this.curObject);\r\n const connector = this.arrowtool.connector;\r\n this.arrowtool = null;\r\n if (from != null && from != to) {\r\n if (connector == \"rejector\") {\r\n if (from.reject != from) {\r\n this.pushundo();\r\n if (from.reject == to)\r\n from.reject = null;\r\n else\r\n from.reject = to;\r\n this.refresh(true);\r\n return;\r\n }\r\n } else {\r\n this.pushundo();\r\n if (to == null) {\r\n const rect = from.rect();\r\n const dx = 0;\r\n const dy = 0;\r\n const pp2 = p2.clone();\r\n if (p2.x < p1.x)\r\n pp2.x -= rect.width;\r\n if (p2.y < p1.y)\r\n pp2.y -= rect.height;\r\n to = this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect(pp2.x, pp2.y, rect.width, rect.height), \"rectangle\"));\r\n }\r\n\r\n if (to != null) {\r\n this.pushundo();\r\n if (this.isShapeConnected(from, to)) {\r\n scil.Utils.delFromArray(to.froms, from);\r\n } else {\r\n if (this.isShapeConnected(to, from))\r\n scil.Utils.delFromArray(from.froms, to);\r\n\r\n if (Math.abs(p1.y - p2.y) < this.tor) {\r\n if (this.isIsolatedShape(to)) {\r\n const dy = from._rect.center().y - to._rect.center().y;\r\n to._rect.offset(0, dy);\r\n } else if (this.isIsolatedShape(from)) {\r\n const dy = to._rect.center().y - from._rect.center().y;\r\n from._rect.offset(0, dy);\r\n }\r\n } else if (Math.abs(p1.x - p2.x) < this.tor) {\r\n if (this.isIsolatedShape(to)) {\r\n const dx = from._rect.center().x - to._rect.center().x;\r\n to._rect.offset(dx, 0);\r\n } else if (this.isIsolatedShape(from)) {\r\n const dx = to._rect.center().x - from._rect.center().x;\r\n from._rect.offset(dx, 0);\r\n }\r\n }\r\n\r\n to.froms.push(from);\r\n }\r\n\r\n this.refresh(true);\r\n return;\r\n }\r\n }\r\n this.refresh();\r\n return;\r\n }\r\n }\r\n\r\n this.pushundo();\r\n if (d >= this.bondlength)\r\n p2 = this.guessArrow(p1, p2);\r\n else\r\n p2 = p1.clone().offset(3 * this.bondlength, 0);\r\n\r\n if (cmd == \"arrow\")\r\n this.m.addGraphics(new JSDraw2.Arrow(p1, p2));\r\n else\r\n this.m.addGraphics(new JSDraw2.Curve(p1, p2));\r\n this.refresh(true);\r\n return;\r\n }\r\n if (cmd == \"rectangle\" || cmd == \"ellipse\" || cmd == \"doublearrow\" || cmd == \"diamond\" || cmd == \"dshape\" || cmd == \"dreversed\") {\r\n if (d < this.bondlength / 8)\r\n p2 = new JSDraw2.Point(p1.x + this.bondlength, p1.y + this.bondlength);\r\n else if (d < this.bondlength / 2)\r\n return;\r\n\r\n this.pushundo();\r\n if (cmd == \"rectangle\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"rectangle\"));\r\n else if (cmd == \"ellipse\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"ellipse\"));\r\n else if (cmd == \"diamond\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"diamond\"));\r\n else if (cmd == \"dshape\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"dshape\"));\r\n else if (cmd == \"dreversed\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"dreversed\"));\r\n else if (cmd == \"doublearrow\")\r\n this.m.addGraphics(new JSDraw2.Shape(new JSDraw2.Rect().set(p1, p2), \"doublearrow\"));\r\n this.refresh(true);\r\n return;\r\n }\r\n if (cmd == \"assaycurve\") {\r\n if (d < this.bondlength / 8 && this.m.isEmpty())\r\n p2 = new JSDraw2.Point(p1.x + this.bondlength * 8, p1.y + this.bondlength * 6);\r\n else if (Math.abs(p1.x - p2.x) < this.bondlength * 2 || Math.abs(p1.y - p2.y) < this.bondlength * 2)\r\n return;\r\n\r\n this.pushundo();\r\n this.m.addGraphics(new JSDraw2.AssayCurve(new JSDraw2.Rect().set(p1, p2)));\r\n this.refresh(true);\r\n return;\r\n }\r\n if (cmd == \"spectrum\") {\r\n if (d < this.bondlength / 8 && this.m.isEmpty())\r\n p2 = new JSDraw2.Point(p1.x + this.bondlength * 14, p1.y + this.bondlength * 6);\r\n else if (Math.abs(p1.x - p2.x) < this.bondlength * 2 || Math.abs(p1.y - p2.y) < this.bondlength * 2)\r\n return;\r\n\r\n this.pushundo();\r\n this.m.addGraphics(new JSDraw2.Spectrum(new JSDraw2.Rect().set(p1, p2)));\r\n this.refresh(true);\r\n return;\r\n }\r\n if (cmd == \"tlc\" || cmd == \"electrophoresis\") {\r\n let modified = false;\r\n if (this.movingClone == null) {\r\n if (d < this.bondlength / 2)\r\n return;\r\n\r\n this.pushundo();\r\n const tlc = new JSDraw2.TLC.create(cmd, p1, p2, this.fontsize / 2);\r\n if (tlc.rect().height > 2 * this.bondlength && tlc.spots.length > 0) {\r\n this.addTlcPlate(tlc);\r\n modified = true;\r\n }\r\n this.refresh(modified);\r\n return;\r\n }\r\n }\r\n if (scil.Utils.startswith(cmd, \"spot-\")) {\r\n const tlc = JSDraw2.TLC.cast(this.curObject);\r\n const clone = this.clone();\r\n if (tlc != null && tlc.addSpot(cmd.substr(5), p2, this.tor)) {\r\n this.pushundo(clone);\r\n this.refresh(true);\r\n }\r\n return;\r\n }\r\n\r\n if (cmd == \"rotate\" && this.rotating != null) {\r\n if (this.rotating.a1 != this.rotating.a0) {\r\n this.pushundo(this.rotating.cloned);\r\n this.refresh(true);\r\n }\r\n this.rotating = null;\r\n return;\r\n }\r\n\r\n if (cmd == \"select\" || cmd == \"lasso\" || cmd == \"selfrag\" || cmd == \"rotate\" || cmd == \"tlc\" || cmd == \"electrophoresis\") {\r\n if (this.lassolast != null) {\r\n this.lassolast = null;\r\n } else if (this.resizing != null) {\r\n if (this.resizing.changed) {\r\n this._bracketReselectAtoms();\r\n this.pushundo(this.movingClone);\r\n this.movingClone = null;\r\n this.resizing = null;\r\n f = true;\r\n }\r\n } else if (this.movingClone != null) {\r\n if (!this.movingClone.startPt.equalsTo(p2)) {\r\n this._bracketReselectAtoms();\r\n this.pushundo(this.movingClone);\r\n this.mergeOverlaps();\r\n this.movingClone = null;\r\n f = true;\r\n }\r\n } else {\r\n if (d < this.bondlength) {\r\n if (this.curObject != null)\r\n this.curObject.selected = true;\r\n } else {\r\n this.selectInRect(new JSDraw2.Rect().set(p1, p2));\r\n }\r\n }\r\n this.refresh(f);\r\n\r\n if (this.options.onselectionchanged != null)\r\n this.options.onselectionchanged(this);\r\n return;\r\n }\r\n\r\n if (cmd == \"zoombox\") {\r\n const rect = new JSDraw2.Rect().set(p1, p2);\r\n if (rect.width > 10 && rect.height > 10) {\r\n const s = Math.min(this.dimension.x / rect.width, this.dimension.y / rect.height);\r\n const c = rect.center();\r\n this.pushundo();\r\n this.scale(s * 0.9, c);\r\n this.m.offset(this.dimension.x / 2 - c.x, this.dimension.y / 2 - c.y);\r\n } else if (rect.width < 5 && rect.height < 5) {\r\n this.fitToWindow();\r\n }\r\n this.redraw();\r\n return;\r\n }\r\n\r\n if (cmd == \"chain\") {\r\n if (this.chaintool != null && this.chaintool.points.length > 0) {\r\n f = false;\r\n const cloned = this.clone();\r\n const pts = this.chaintool.points;\r\n let m = null;\r\n for (let i = 1; i < pts.length; ++i) {\r\n let a1 = this.toggleAtom(pts[i - 1]);\r\n let a2 = this.toggleAtom(pts[i]);\r\n if (m == null) {\r\n if (a1 != null)\r\n m = a1._parent;\r\n else if (a2 != null)\r\n m = a2._parent;\r\n else\r\n m = this.m;\r\n }\r\n if (a1 != null && a1._parent != m)\r\n a1 = null;\r\n if (a2 != null && a2._parent != m)\r\n a2 = null;\r\n\r\n if (a1 == null) {\r\n a1 = new JSDraw2.Atom(pts[i - 1]);\r\n m.addAtom(a1);\r\n this._addNewAtomInExistingGroup(a2, [a1]);\r\n f = true;\r\n }\r\n if (a2 == null) {\r\n a2 = new JSDraw2.Atom(pts[i]);\r\n m.addAtom(a2);\r\n this._addNewAtomInExistingGroup(a1, [a2]);\r\n f = true;\r\n }\r\n\r\n if (m.findBond(a1, a2) == null) {\r\n m.addBond(new JSDraw2.Bond(a1, a2), null, true);\r\n f = true;\r\n }\r\n }\r\n this.chaintool = null;\r\n if (f)\r\n this.pushundo(cloned);\r\n this.refresh(f);\r\n return;\r\n }\r\n }\r\n\r\n if (cmd == \"bracket\") {\r\n let br;\r\n this.m.setSelected(false);\r\n const r = new JSDraw2.Rect().set(p1, p2);\r\n const list = this.m.bracketSelect(r);\r\n if (list.length > 0) {\r\n this.pushundo();\r\n br = new JSDraw2.Bracket(null, r);\r\n br.atoms = list;\r\n list[0]._parent.addGraphics(br);\r\n f = true;\r\n }\r\n this.refresh(f);\r\n\r\n if (br != null) {\r\n const t = br.createSubscript(this.m, \"#\");\r\n if (t != null)\r\n this.showTextEditor(t, null, \"\");\r\n } else {\r\n const t = JSDraw2.Text.cast(this.curObject);\r\n if (t != null && t.fieldtype == \"BRACKET_TYPE\" && t.anchors.length == 1 && JSDraw2.Bracket.cast(t.anchors[0]) != null)\r\n this.showTextEditor(t, null, t.text);\r\n }\r\n return;\r\n }\r\n\r\n // atom properties\r\n if (cmd == \"●\") {\r\n let a;\r\n if ((a = JSDraw2.Atom.cast(this.curObject)) != null)\r\n this.showAtomDlg(a);\r\n else if ((a = JSDraw2.Bond.cast(this.curObject)) != null)\r\n this.showBondDlg(a);\r\n return;\r\n }\r\n\r\n if (cmd == \"undo\" || cmd == \"redo\" || cmd == \"zoomin\" || cmd == \"zoomout\")\r\n return;\r\n\r\n const cloned = this.clone();\r\n if (d <= this.tor) {\r\n // no mouse drag, this is just a click event\r\n if (scil.Utils.startswith(cmd, \"template.\")) {\r\n this.pushundo(cloned);\r\n this.addTemplate(cmd.substr(9), this.curObject, p2);\r\n this.refresh(true);\r\n return;\r\n }\r\n\r\n let a;\r\n if ((a = JSDraw2.Atom.cast(this.curObject)) != null) {\r\n const e = JSDraw2.PT[cmd];\r\n if (cmd == \"antibody\" || cmd == \"protein\" || cmd == \"gene\")\r\n f = this.m.setAtomType(a, cmd);\r\n else if (e != null)\r\n f = this.m.setAtomType(a, cmd);\r\n else if (cmd == \"...\" || cmd == \"more\")\r\n f = this.m.setAtomType(a, this.ptElement);\r\n else if (cmd == \"chargep\" || cmd == \"chargen\")\r\n f = this.increaseNum(a, cmd == \"chargep\" ? +1 : -1);\r\n else if (this.helm != null && this.helm != null && this.helm.isHelmCmd(cmd)) {\r\n if (scil.helm.isHelmNode(a))\r\n this.helm.changeMonomer(a, cloned);\r\n } else {\r\n if (this.helm != null && scil.helm.isHelmNode(a))\r\n this.helm.changeMonomer(a, cloned);\r\n else\r\n f = this._addAutoBond(a, cmd);\r\n }\r\n }\r\n\r\n if ((b = JSDraw2.Bond.cast(this.curObject)) != null) {\r\n switch (cmd) {\r\n case \"double\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.DOUBLE);\r\n break;\r\n case \"triple\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.TRIPLE);\r\n break;\r\n case \"unknown\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.UNKNOWN);\r\n break;\r\n case \"dummy\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.DUMMY);\r\n break;\r\n case \"either\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.EITHER);\r\n break;\r\n case \"wiggly\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.WIGGLY);\r\n break;\r\n case \"bold\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.BOLD);\r\n break;\r\n case \"boldhash\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.BOLDHASH);\r\n break;\r\n case \"delocalized\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.DELOCALIZED);\r\n break;\r\n case \"singledouble\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.SINGLEORDOUBLE);\r\n break;\r\n case \"singlearomatic\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.SINGLEORAROMATIC);\r\n break;\r\n case \"doublearomatic\":\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.DOUBLEORAROMATIC);\r\n break;\r\n case \"up\":\r\n if (b.type == JSDraw2.BONDTYPES.WEDGE) {\r\n b.reverse();\r\n f = true;\r\n } else {\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.WEDGE);\r\n this.fixWedgeDir(b);\r\n }\r\n break;\r\n case \"down\":\r\n if (b.type == JSDraw2.BONDTYPES.HASH) {\r\n b.reverse();\r\n f = true;\r\n } else {\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.HASH);\r\n this.fixWedgeDir(b);\r\n }\r\n break;\r\n default:\r\n f = this.m.setBondType(b, b.type == JSDraw2.BONDTYPES.SINGLE ? JSDraw2.BONDTYPES.DOUBLE : JSDraw2.BONDTYPES.SINGLE);\r\n break;\r\n }\r\n }\r\n\r\n if (!f && this.curObject == null) {\r\n if (this.options.helmtoolbar && !this.helm.isHelmCmd(cmd))\r\n return;\r\n\r\n const bondtype = this.Cmd2BondType(cmd);\r\n if (bondtype != null) {\r\n const a1 = this.m.addAtom(new JSDraw2.Atom(p2));\r\n const p = p2.clone().offset(this.bondlength, 0).rotateAround(p2, -30);\r\n let a2 = JSDraw2.Atom.cast(this.toggle(p));\r\n if (a2 == null)\r\n a2 = this.m.addAtom(new JSDraw2.Atom(p));\r\n this.m.addBond(new JSDraw2.Bond(a1, a2));\r\n f = true;\r\n }\r\n }\r\n\r\n // draw isolated atom\r\n if (!f && this.curObject == null) {\r\n const s = cmd == \"more\" || cmd == \"...\" ? this.ptElement : cmd;\r\n const e = JSDraw2.PT[s];\r\n if (e != null && e.a > 0 || cmd == \"antibody\" || cmd == \"protein\" || cmd == \"gene\" || this.helm != null && this.helm.isHelmCmd(cmd)) {\r\n const a = this.m.addAtom(new JSDraw2.Atom(p2));\r\n if (cmd == \"antibody\") {\r\n a.bio = {type: JSDraw2.BIO.ANTIBODY as TBio};\r\n a.elem = \"X\";\r\n } else if (cmd == \"protein\") {\r\n a.bio = {type: JSDraw2.BIO.PROTEIN as TBio};\r\n a.elem = \"X\";\r\n } else if (cmd == \"gene\") {\r\n a.bio = {type: JSDraw2.BIO.GENE as TBio};\r\n a.elem = \"X\";\r\n } else if (this.helm != null && this.helm.createIsolatedMonomer(cmd, a)) {\r\n ;\r\n } else {\r\n this.m.setAtomType(a, s);\r\n }\r\n f = true;\r\n }\r\n }\r\n\r\n if (f) {\r\n this.pushundo(cloned);\r\n this.refresh(f);\r\n }\r\n return;\r\n }\r\n\r\n let a1 = JSDraw2.Atom.cast(p1.atom != null ? p1.atom : this.toggle(p1));\r\n let a2 = JSDraw2.Atom.cast(this.toggle(p2));\r\n if (a1 != null && a2 != null) {\r\n if (a1._parent != a2._parent) {\r\n scil.Utils.alert(\"Cannot create bond between the two atoms\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.options.helmtoolbar) {\r\n if (this.helm.connnectGroup(p1, this.curObject)) {\r\n this.pushundo(cloned);\r\n this.redraw();\r\n return;\r\n }\r\n\r\n if ((a1 == null || a2 == null) && this.helm != null && !this.helm.isHelmCmd(cmd)) {\r\n if (cmd == \"single\") {\r\n if (this.helm.connnectGroup(p1, this.curObject))\r\n this.pushundo(cloned);\r\n }\r\n this.redraw();\r\n return;\r\n }\r\n\r\n if (this.helm != null && this.helm.isHelmCmd(cmd)) {\r\n if (a1 != null && a2 == null) {\r\n this.helm.extendChain(a1, cmd, p1, p2, cloned);\r\n return;\r\n } else if (a1 == null && a2 == null) {\r\n this.redraw();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const m = a1 != null ? a1._parent : (a2 != null ? a2._parent : this.m);\r\n this.pushundo(cloned);\r\n const c1 = this._countAABonds(a1);\r\n const ao1 = a1;\r\n if (a1 == null) {\r\n if (c1 != null) {\r\n // add H or OH on peptide terminal Amino Acid\r\n if (c1.peptideN == 0 && c1.others == 0)\r\n a1 = m.addAtom(new JSDraw2.Atom(p1, \"H\"));\r\n else if (c1.peptideC == 0 && c1.others == 0)\r\n a1 = m.addAtom(new JSDraw2.Atom(p1, \"O\"));\r\n } else {\r\n a1 = m.addAtom(new JSDraw2.Atom(p1));\r\n }\r\n }\r\n\r\n const c2 = this._countAABonds(a2);\r\n const ao2 = a2;\r\n if (a2 == null) {\r\n p2 = this._guessBond(p1, p2);\r\n if (c1 != null) {\r\n // add H or OH on peptide terminal Amino Acid\r\n if (c1.peptideN == 0 && c1.others == 0)\r\n a2 = m.addAtom(new JSDraw2.Atom(p2, \"H\"));\r\n else if (c1.peptideC == 0 && c1.others == 0)\r\n a2 = m.addAtom(new JSDraw2.Atom(p2, \"O\"));\r\n } else {\r\n a2 = m.addAtom(new JSDraw2.Atom(p2));\r\n }\r\n }\r\n\r\n if (a1 != null && a2 != null) {\r\n this._addNewAtomInExistingGroup(ao1, [a2]);\r\n this._addNewAtomInExistingGroup(ao2, [a1]);\r\n\r\n let b = this.m.findBond(a1, a2);\r\n if (b == null) {\r\n let bondtype;\r\n if (ao1 != null && ao2 != null && ao1._parent != ao2._parent) {\r\n scil.Utils.alert(\"Cannot create bond between the two atoms\");\r\n } else if (this.helm != null && (scil.helm.isHelmNode(a1) || scil.helm.isHelmNode(a2))) {\r\n this.helm.connectFragment(a1, a2, !scil.helm.isHelmNode(a1) || !scil.helm.isHelmNode(a2));\r\n } else {\r\n bondtype = this.Cmd2BondType(cmd);\r\n if (bondtype == null)\r\n bondtype == JSDraw2.BONDTYPES.SINGLE;\r\n if (c1 != null && c2 != null) {\r\n // connect two amino acids\r\n if (c1.peptideN == 0 && c2.peptideC == 0)\r\n b = new JSDraw2.Bond(a1, a2, JSDraw2.BONDTYPES.PEPTIDE); // peptide bond\r\n else if (c2.peptideN == 0 && c1.peptideC == 0)\r\n b = new JSDraw2.Bond(a2, a1, JSDraw2.BONDTYPES.PEPTIDE); // reversed peptide bond\r\n else if (ao1.elem == \"C\" && ao2.elem == \"C\" && c1.disulfide == 0 && c2.disulfide == 0)\r\n b = new JSDraw2.Bond(a1, a2, JSDraw2.BONDTYPES.DISULFIDE);\r\n else if (ao1.elem == \"K\" && c1.amide == 0 && c2.peptideC == 0)\r\n b = new JSDraw2.Bond(a1, a2, JSDraw2.BONDTYPES.AMIDE); // amide bond to K\r\n else if (ao2.elem == \"K\" && c2.amide == 0 && c1.peptideC == 0)\r\n b = new JSDraw2.Bond(a2, a1, JSDraw2.BONDTYPES.AMIDE); // reversed amide bond to K\r\n } else if (c1 != null) {\r\n // connect one amino acid to structure\r\n if (c1.peptideN + c1.peptideC + c1.others < 2)\r\n b = new JSDraw2.Bond(a1, a2, a2.elem == \"H\" ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.SINGLE);\r\n else if (ao1.elem == \"C\" && c1.disulfide == 0)\r\n b = new JSDraw2.Bond(a1, a2, JSDraw2.BONDTYPES.DISULFIDE); // using sulfide bond to C\r\n else if (ao1.elem == \"K\" && c1.amide == 0)\r\n b = new JSDraw2.Bond(a1, a2, JSDraw2.BONDTYPES.AMIDE); // using amide bond to K\r\n } else if (c2 != null) {\r\n // connect one amino acid to structure\r\n if (c2.peptideN + c2.peptideC + c2.others < 2)\r\n b = new JSDraw2.Bond(a2, a1, a1.elem == \"H\" ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.SINGLE);\r\n else if (ao2.elem == \"C\" && c2.disulfide == 0)\r\n b = new JSDraw2.Bond(a2, a1, JSDraw2.BONDTYPES.DISULFIDE); // using sulfide bond to C\r\n else if (ao2.elem == \"K\" && c2.amide == 0)\r\n b = new JSDraw2.Bond(a2, a1, JSDraw2.BONDTYPES.AMIDE); // using amide bond to K\r\n } else {\r\n b = new JSDraw2.Bond(a1, a2, bondtype);\r\n }\r\n }\r\n\r\n if (b != null)\r\n m.addBond(b, bondtype != JSDraw2.BONDTYPES.DUMMY, true);\r\n }\r\n }\r\n\r\n this.start = null;\r\n this.refresh(b != null);\r\n }\r\n\r\n _bracketReselectAtoms() {\r\n const br = JSDraw2.Bracket.cast(this.curObject);\r\n if (br == null)\r\n return;\r\n\r\n const list = this.m.bracketSelect(br.rect());\r\n if (list != null && list.length > 0)\r\n br.atoms = list;\r\n }\r\n\r\n _addNewAtomInExistingGroup(olda, atoms) {\r\n if (olda == null)\r\n return;\r\n\r\n for (let k = 0; k < atoms.length; ++k) {\r\n const a = atoms[k];\r\n if (a == null)\r\n continue;\r\n\r\n // attach to existing groups\r\n if (olda.group != null && a.group == null)\r\n a.group = olda.group;\r\n\r\n // attach to existing brackets\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const br = JSDraw2.Bracket.cast(this.m.graphics[i]);\r\n if (br == null || br.atoms == null)\r\n continue;\r\n\r\n if (scil.Utils.indexOf(br.atoms, olda) >= 0 && scil.Utils.indexOf(br.atoms, a) < 0)\r\n br.atoms.push(a);\r\n }\r\n }\r\n }\r\n\r\n mousedblclick(e) {\r\n if (this.options.viewonly)\r\n return;\r\n\r\n const p = this.eventPoint(e);\r\n const obj = this.toggle(p);\r\n if (obj == null)\r\n return;\r\n\r\n let a = JSDraw2.Atom.cast(obj);\r\n if (a == null) {\r\n const b = JSDraw2.Bond.cast(obj);\r\n if (b != null)\r\n a = b.a1;\r\n }\r\n\r\n if (a == null)\r\n return;\r\n\r\n this.m.setSelected(false);\r\n const m = a._parent.getFragment(a, a._parent);\r\n for (let i = 0; i < m.atoms.length; ++i)\r\n m.atoms[i].selected = true;\r\n for (let i = 0; i < m.bonds.length; ++i)\r\n m.bonds[i].selected = true;\r\n\r\n this.refresh(false);\r\n }\r\n\r\n endMove(e, viewonly) {\r\n if (this.start == null)\r\n return;\r\n\r\n const p = this.eventPoint(e);\r\n const d = new JSDraw2.Point(p.x - this.start.x, p.y - this.start.y);\r\n this.start = null;\r\n this.moveview(null);\r\n\r\n if (d.x != 0 || d.y != 0) {\r\n if (!viewonly)\r\n this.pushundo();\r\n this.m.offset(d.x, d.y);\r\n if (viewonly)\r\n this.redraw();\r\n else\r\n this.refresh(true);\r\n }\r\n }\r\n\r\n isIsolatedShape(n) {\r\n if (n.froms.length > 0)\r\n return false;\r\n\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const s = JSDraw2.Shape.cast(this.m.graphics[i]);\r\n if (s != null && scil.Utils.indexOf(s.froms, n) >= 0)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isShapeConnected(from, to) {\r\n if (from == null || to == null)\r\n return false;\r\n\r\n for (let i = 0; i < to.froms.length; ++i) {\r\n if (to.froms[i] == from)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n _countAABonds(a) {\r\n if (a == null || a.biotype() != JSDraw2.BIO.AA)\r\n return null;\r\n\r\n const ret = {peptideN: 0, peptideC: 0, disulfide: 0, amide: 0, others: 0};\r\n const list1 = this.m.getAllBonds(a);\r\n for (let i = 0; i < list1.length; ++i) {\r\n if (list1[i].type == JSDraw2.BONDTYPES.PEPTIDE) {\r\n if (list1[i].a1 == a)\r\n ++ret.peptideN;\r\n else\r\n ++ret.peptideC;\r\n } else if (list1[i].type == JSDraw2.BONDTYPES.DISULFIDE) {\r\n ++ret.disulfide;\r\n } else if (list1[i].type == JSDraw2.BONDTYPES.AMIDE) {\r\n ++ret.amide;\r\n } else if (list1[i].type == JSDraw2.BONDTYPES.SINGLE) {\r\n const oa = list1[i].otherAtom(a);\r\n if (oa.bio == null)\r\n ++ret.others;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n addTlcPlate(tlc) {\r\n if (tlc == null || !(tlc.spots.length > 0))\r\n return;\r\n\r\n let tlcsetting = null;\r\n if (JSDraw2.defaultoptions != null && JSDraw2.defaultoptions.tlc != null && tlc.type != \"electrophoresis\") {\r\n tlcsetting = JSDraw2.defaultoptions.tlc;\r\n const scale = tlc.spotsize / (JSDraw2.Editor.FONTSIZE / 2);\r\n if (tlcsetting.width > 0)\r\n tlc._rect.width = tlcsetting.width * scale;\r\n if (tlcsetting.height > 0)\r\n tlc._rect.height = tlcsetting.height * scale;\r\n\r\n const list = this.getAllTlcPlates(true);\r\n if (list != null && list.length > 0) {\r\n const prev = list[list.length - 1];\r\n const gap = tlcsetting.gap > 0 ? tlcsetting.gap : tlcsetting.width / 5;\r\n tlc._rect.left = prev._rect.right() + gap;\r\n tlc._rect.top = prev._rect.top;\r\n }\r\n }\r\n this.m.addGraphics(tlc);\r\n if (tlcsetting != null && tlcsetting.autonumbering)\r\n this.numberTlcPlates();\r\n\r\n if (this.options.onAddTLC != null)\r\n this.options.onAddTLC(tlc);\r\n\r\n this.moveCenter();\r\n }\r\n\r\n hideChirarlities(selectonly?: boolean) {\r\n const texts = [];\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.m.graphics[i]);\r\n if (t != null && t.anchors != null && t.anchors.length == 1 && t.fieldtype == \"CHIRAL\") {\r\n const a = JSDraw2.Atom.cast(t.anchors[0]);\r\n if (!selectonly || a.selected)\r\n texts.push(t);\r\n }\r\n }\r\n\r\n if (texts.length > 0) {\r\n for (let i = 0; i < texts.length; ++i)\r\n this.m.delGraphics(texts[i]);\r\n this.pushundo();\r\n this.refresh(true);\r\n }\r\n }\r\n\r\n detectChiralities(selectonly?: boolean) {\r\n const me = this;\r\n JSDraw2.JSDrawIO.callWebservice(\"mol.getchiralatoms\", {mol: this.getXml(), format: \"xml\"}, function(ret) {\r\n let n = 0;\r\n const cloned = me.clone();\r\n for (const k in ret) {\r\n const id = parseInt(k);\r\n const a = me.m.getObjectById(id);\r\n if ((!selectonly || a.selected) && me.m.markChirality(a, ret[k], me.bondlength))\r\n ++n;\r\n }\r\n if (n > 0) {\r\n me.pushundo(cloned);\r\n me.refresh(true);\r\n }\r\n });\r\n }\r\n\r\n increaseNum(a, delta) {\r\n if (delta != 1 && delta != -1)\r\n return false;\r\n let f = false;\r\n if (a.elem == \"R\") {\r\n const r = scil.Utils.parseIndex(a.alias);\r\n if (r == null || r.index == null) {\r\n f = a._parent.setAtomAlias(a, (r == null || r.prefix == null ? \"R\" : r.prefix) + \"1\");\r\n } else {\r\n if (delta > 0) {\r\n f = a._parent.setAtomAlias(a, r.prefix + (r.index + 1));\r\n } else {\r\n if (r.index > 1)\r\n f = a._parent.setAtomAlias(a, r.prefix + (r.index - 1));\r\n }\r\n }\r\n } else {\r\n f = a._parent.setAtomCharge(a, a.charge + delta);\r\n }\r\n return f;\r\n }\r\n\r\n mergeOverlaps() {\r\n const overlaps = [];\r\n for (let i = 0; i < this.m.atoms.length; ++i) {\r\n if (this.m.atoms[i].selected) {\r\n const a1 = this.m.atoms[i];\r\n for (let k = 0; k < this.m.atoms.length; ++k) {\r\n const a2 = this.m.atoms[k];\r\n if (!a2.selected && a2.toggle(a1.p, this.tor)) {\r\n overlaps.push({a1: a1, a2: a2});\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const bonds = [];\r\n for (let k = 0; k < overlaps.length; ++k) {\r\n const a1 = overlaps[k].a1;\r\n const a2 = overlaps[k].a2;\r\n let b = this.m.findBond(a1, a2);\r\n if (b != null) {\r\n bonds.push(b);\r\n continue;\r\n }\r\n\r\n for (let i = 0; i < this.m.bonds.length; ++i) {\r\n b = this.m.bonds[i];\r\n if (b.a1 == a1) {\r\n if (b.a2 != a2) {\r\n const t = this.m.findBond(b.a2, a2);\r\n b.a1 = a2;\r\n if (t != null)\r\n bonds.push(b);\r\n }\r\n } else if (b.a2 == a1) {\r\n if (b.a1 != a2) {\r\n const t = this.m.findBond(b.a1, a2);\r\n b.a2 = a2;\r\n if (t != null)\r\n bonds.push(b);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < bonds.length; ++i)\r\n this.m.delBond(bonds[i], false);\r\n for (let i = 0; i < overlaps.length; ++i)\r\n this.m.delAtom(overlaps[i].a1, false);\r\n\r\n return bonds.length + overlaps.length;\r\n }\r\n\r\n onDel() {\r\n if (this.texteditor.ed != null && this.texteditor.ed.input.style.display != \"none\")\r\n return false;\r\n\r\n const cloned = this.clone();\r\n if (this.delObject(this.curObject) || this.delSelected() > 0) {\r\n this.pushundo(cloned);\r\n if (this.helm != null)\r\n this.helm.resetIDs();\r\n this.curObject = null;\r\n this.refresh(true);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n showContextMenu(e, viewonly?: boolean) {\r\n if (this.options.showcontextmenu == false)\r\n return;\r\n\r\n const items = org.helm.webeditor.Interface.onContextMenu(this, e, viewonly);\r\n if (items == null)\r\n return;\r\n\r\n const me = this;\r\n if (this.contextmenu == null)\r\n this.contextmenu = new JSDraw2.ContextMenu(items, function(cmd, obj) { me.menuCallback(cmd, obj); });\r\n const scrolloffset = scil.Utils.scrollOffset();\r\n this.contextmenu.show(e.clientX + scrolloffset.x, e.clientY + scrolloffset.y, this.curObject, items);\r\n this.contextmenu.pos = this.eventPoint(e);\r\n }\r\n\r\n menuSetStereochemistry(cmd) {\r\n if (cmd == \"abs\")\r\n cmd = null;\r\n\r\n this.pushundo();\r\n if (this.m.chiral == cmd)\r\n this.m.chiral = null;\r\n else\r\n this.m.chiral = cmd;\r\n this.refresh(true);\r\n }\r\n\r\n menuCallback(cmd, obj) {\r\n let modified = false;\r\n const cloned = this.clone();\r\n switch (cmd) {\r\n // case \"Chiral\":\r\n // this.pushundo();\r\n // this.m.chiral = !this.m.chiral;\r\n // this.refresh(true);\r\n // break;\r\n case \"curveline\":\r\n obj.setAssayCurveLine(this);\r\n break;\r\n case \"curveonly\":\r\n obj.setAssayCurveOnly(this);\r\n break;\r\n case \"overlaycurves\":\r\n this.overlayCurves2(obj);\r\n break;\r\n case \"setrawassaydata\":\r\n obj.setAssayCurveRawData(this);\r\n break;\r\n case \"spectrum_setdata\":\r\n obj.setSpectrumData(this);\r\n break;\r\n case \"spectrum_setdatafromfile\":\r\n obj.setSpectrumDataFromFile(this);\r\n break;\r\n case \"spectrum_attributes\":\r\n obj.viewAttributes(this);\r\n break;\r\n case \"maskassaysamplepoint\":\r\n modified = obj.maskSamplePoint(obj.curspot);\r\n break;\r\n case \"pastechemdraw\":\r\n JSDraw2.ChemDraw.paste(this);\r\n break;\r\n case \"pastechemdrawasproduct\":\r\n JSDraw2.ChemDraw.paste(this, \"product\");\r\n break;\r\n case \"pastechemdrawasreactant\":\r\n JSDraw2.ChemDraw.paste(this, \"reactant\");\r\n break;\r\n case \"copychemdraw\":\r\n JSDraw2.ChemDraw.copy(this);\r\n break;\r\n case \"copymolfile\":\r\n this.copyAs(\"molfile\");\r\n break;\r\n case \"copymolfile2000\":\r\n this.copyAs(\"molfile2000\");\r\n break;\r\n case \"copymolfile3000\":\r\n this.copyAs(\"molfile3000\");\r\n break;\r\n case \"copysmiles\":\r\n this.copyAs(\"smiles\");\r\n break;\r\n case \"pastemolfile\":\r\n this.pasteAs(\"molfile\");\r\n break;\r\n case \"about\":\r\n JSDraw2.Editor.showAbout();\r\n break;\r\n case \"abouthelm\":\r\n scil.helm.about();\r\n break;\r\n case \"removeatomvalues\":\r\n this.removeAtomValues();\r\n break;\r\n case \"viewlarge\":\r\n this.viewLarge();\r\n break;\r\n case \"movecenter\":\r\n this.moveCenter();\r\n this.redraw();\r\n break;\r\n case \"atom_prop\": {\r\n let a;\r\n if ((a = JSDraw2.Atom.cast(obj)) != null)\r\n this.showAtomDlg(a);\r\n break;\r\n }\r\n case \"atom_tag\":\r\n let s = obj.bio == null ? \"Atom \" + obj.elem : obj.bio.type;\r\n if (obj.bio != null && obj.bio.subtype != null)\r\n s += \" \" + obj.bio.subtype;\r\n this.addTag(obj, obj.p, s, true);\r\n break;\r\n case \"helm_set_sense\":\r\n if (obj.bio.annotation != \"5'ss\") {\r\n obj.bio.annotation = \"5'ss\";\r\n modified = true;\r\n }\r\n break;\r\n case \"helm_set_antisense\":\r\n if (obj.bio.annotation != \"5'as\") {\r\n obj.bio.annotation = \"5'as\";\r\n modified = true;\r\n }\r\n break;\r\n case \"helm_set_clear\":\r\n if (obj.bio.annotation != \"5'\") {\r\n obj.bio.annotation = \"5'\";\r\n modified = true;\r\n }\r\n break;\r\n case \"helm_complementary_strand\":\r\n if (scil.Utils.startswith(obj.bio.annotation, \"5'\"))\r\n modified = this.helm.makeComplementaryStrand(obj) != null;\r\n break;\r\n case \"helm_create_group\":\r\n modified = this.helm.createGroup(obj, null, true) != null;\r\n break;\r\n case \"helm_group_collapse\":\r\n modified = this.helm.collapseGroup(obj, true) != null;\r\n break;\r\n case \"helm_bond_prop\":\r\n this.helm.setBondProp(obj);\r\n break;\r\n case \"helm_atom_prop\":\r\n this.helm.setAtomProp(obj);\r\n break;\r\n case \"group_setproperties\":\r\n this.setGroupProperties(obj);\r\n break;\r\n case \"detectstereochemistry\":\r\n this.detectChiralities(true);\r\n break;\r\n case \"hidestereochemistry\":\r\n this.hideChirarlities(true);\r\n break;\r\n case \"detectstereochemistry2\":\r\n this.detectChiralities();\r\n break;\r\n case \"hidestereochemistry2\":\r\n this.hideChirarlities();\r\n break;\r\n case \"bond_prop\": {\r\n const b = JSDraw2.Bond.cast(obj);\r\n if (b != null)\r\n this.showBondDlg(b);\r\n break;\r\n }\r\n case \"bond_tag\":\r\n this.addTag(obj, obj.center(), \"[None]\", true);\r\n break;\r\n case \"bond_locant\":\r\n this.addTag(obj, obj.center(), \"U = Unknown Locant\");\r\n break;\r\n case \"bio_showsequence\":\r\n this.showSequences(obj);\r\n break;\r\n case \"rgroup_define\":\r\n this.rgroupDefine(obj);\r\n break;\r\n case \"rgroup_remove\": {\r\n const a = JSDraw2.Atom.cast(obj);\r\n if (a != null && a.rgroup != null) {\r\n a.rgroup = null;\r\n modified = true;\r\n }\r\n break;\r\n }\r\n case \"rgroup_addstructure\":\r\n this.addRgroupStructure(obj);\r\n modified = true;\r\n break;\r\n case \"setbracketsubscription\":\r\n this.setBracketSubscription(obj);\r\n break;\r\n case \"setbracketratio\":\r\n this.setBracketRatio(obj);\r\n break;\r\n case \"setbracketmw\":\r\n this.setBracketData(obj, \"POLYMER_MW\", \"MW=\", 1);\r\n break;\r\n case \"registrationparent\":\r\n this.setBracketData(obj, \"REG_PARENT\", \"Parent=\", 2);\r\n break;\r\n case \"graphics_bring2front\":\r\n modified = this.m.setZOrder(obj, -1);\r\n break;\r\n case \"graphics_set2back\":\r\n modified = this.m.setZOrder(obj, 0);\r\n break;\r\n case \"tlc_addlane\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.addLane();\r\n break;\r\n case \"tlc_duplicatespot\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.duplicateSpot(obj.curspot);\r\n break;\r\n case \"tlc_duplicatelane\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.duplicateLane(obj.curspot);\r\n break;\r\n case \"tlc_showlanelabel\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.showLaneLabel(!obj.showlanelabel);\r\n break;\r\n case \"tlc_removespot\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.removeSpot(obj.curspot);\r\n break;\r\n case \"tlc_setrfvalue\":\r\n modified = JSDraw2.TLC.cast(obj) != null && obj.setRfValue(obj.curspot, this);\r\n break;\r\n case \"tlc_setlanelabels\":\r\n JSDraw2.TLC.setLaneLabels(this, obj);\r\n break;\r\n case \"Copy\":\r\n this.copy();\r\n break;\r\n case \"Select All\":\r\n if (this.selectAll())\r\n this.refresh(false);\r\n break;\r\n case \"copy-viewonly\":\r\n this.copy(cloned == null ? null : cloned.mol);\r\n break;\r\n case \"Cut\":\r\n if (this.cut())\r\n this.refresh(false);\r\n break;\r\n case \"edit-popup\":\r\n if (this.options.popup)\r\n this.dblclick();\r\n break;\r\n case \"Expand\":\r\n this.expandSuperatom();\r\n break;\r\n case \"Paste\":\r\n if (this.paste(this.contextmenu.pos))\r\n this.refresh(false);\r\n break;\r\n case \"Delete\":\r\n modified = this.delSelected() > 0;\r\n break;\r\n case \"multi-center\":\r\n modified = this.createMulticenter() != null;\r\n break;\r\n case \"Clear\":\r\n this.clear(false, true);\r\n modified = true;\r\n break;\r\n case \"Undo\":\r\n if (this.undo())\r\n this.refresh(false);\r\n break;\r\n case \"Redo\":\r\n if (this.redo())\r\n this.refresh(false);\r\n break;\r\n case \"workflow_properties\":\r\n JSDraw2.Shape.showProperties(this, JSDraw2.Shape.cast(obj));\r\n break;\r\n }\r\n\r\n if (modified) {\r\n this.pushundo(cloned);\r\n this.refresh(modified);\r\n }\r\n }\r\n\r\n overlayCurves2(curve) {\r\n curve = JSDraw2.AssayCurve.cast(curve);\r\n if (curve == null)\r\n return;\r\n\r\n const list = [];\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const c = JSDraw2.AssayCurve.cast(this.m.graphics[i]);\r\n if (c != null && c.selected)\r\n list.push(c);\r\n }\r\n this.overlayCurves(list, curve);\r\n }\r\n\r\n overlayCurves(list, curve) {\r\n if (scil.Utils.indexOf(list, curve) < 0)\r\n return;\r\n\r\n this.pushundo();\r\n for (let i = 0; i < list.length; ++i) {\r\n list[i].curveline = false;\r\n if (list[i] == curve) {\r\n list[i].curveonly = false;\r\n } else {\r\n list[i]._rect = curve._rect.clone();\r\n list[i].curveonly = true;\r\n }\r\n }\r\n\r\n this.refresh(true);\r\n }\r\n\r\n setGroupProperties(obj) {\r\n const g = JSDraw2.Group.cast(obj);\r\n if (g == null)\r\n return;\r\n\r\n const me = this;\r\n if (this.groupPropDlg == null) {\r\n const me = this;\r\n const fields = {ratio: {label: \"Ratio\", type: \"number\", accepts: \"(and)|(or)|[*|?]\", width: 100}, tag: {label: \"Annotation\", width: 300}};\r\n this.groupPropDlg = scil.Form.createDlgForm(\"Group Properties\", fields, {label: \"Save\", onclick: function() { me.setGroupProperties2(); }});\r\n }\r\n this.groupPropDlg.show();\r\n this.groupPropDlg.form.setData({ratio: g.ratio, tag: g.tag});\r\n this.groupPropDlg.g = g;\r\n }\r\n\r\n setGroupProperties2() {\r\n const data = this.groupPropDlg.form.getData();\r\n const g = this.groupPropDlg.g;\r\n if (data.ratio != \"\" && this.hasGroupBond(g))\r\n data.ratio = \"\";\r\n\r\n if ((g.ratio == null ? \"\" : g.ratio + \"\") != data.ratio || g.tag != data.tag) {\r\n this.pushundo();\r\n g.ratio = data.ratio;\r\n g.tag = data.tag;\r\n this.groupPropDlg.hide();\r\n this.refresh(true);\r\n }\r\n }\r\n\r\n hasGroupBond(g) {\r\n const list = g.a == null ? null : this.m.getAllBonds(g.a);\r\n return list != null && list.length > 0;\r\n }\r\n\r\n copyAs(fmt) {\r\n let s = null;\r\n switch (fmt) {\r\n case \"molfile\":\r\n s = this.getMolfile();\r\n break;\r\n case \"molfile2000\":\r\n s = this.getMolfile(false);\r\n break;\r\n case \"molfile3000\":\r\n s = this.getMolfile(true);\r\n break;\r\n case \"smiles\":\r\n s = this.getSmiles(true);\r\n break;\r\n }\r\n\r\n if (scil.Utils.isNullOrEmpty(s)) {\r\n scil.Utils.alert(\"Nothing placed on clipboard\");\r\n return;\r\n }\r\n\r\n scil.Clipboard.copy(s);\r\n }\r\n\r\n pasteAs(fmt) {\r\n }\r\n\r\n rgroupDefine(obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n createMulticenter() {\r\n JSDraw2.needPro();\r\n }\r\n\r\n viewLarge() {\r\n const label = this.options.viewonly ? \"Dismiss\" : \"Save\";\r\n JSDraw2.Editor.showPopup(\"View Structure\", label, null, {value: this.clone(), format: \"clone\"});\r\n }\r\n\r\n removeAtomValues() {\r\n let cloned = null;\r\n for (let i = 0; i < this.m.atoms.length; ++i) {\r\n const a = this.m.atoms[i];\r\n if (a.tag != null && a.tag != \"\") {\r\n if (cloned == null)\r\n cloned = this.clone();\r\n a.tag = null;\r\n }\r\n }\r\n\r\n if (cloned != null) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n return cloned != null;\r\n }\r\n\r\n /**\r\n * Select all object\r\n * @function selectAll\r\n * @returns true or false\r\n */\r\n selectAll() {\r\n const f = this.m.setSelected(true) > 0;\r\n if (this.options.onselectionchanged != null)\r\n this.options.onselectionchanged(this);\r\n return f;\r\n }\r\n\r\n addRgroupStructure(rgroup) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuTLCSetSpotShape(obj, shape, size) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuTLCSetSpotSize(obj, size) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuTLCLabel(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuTLCSetLabel(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuTLCFill(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuShapeType(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuAlignShapes(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuShapeFill(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuAntiboyType(obj, cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n showSequences(obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetFontsize(cmd, obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetColor(cmd, obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n addTag(obj, p, s, edit?: any) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n setBracketData(br, fieldtype, prefix, ypos) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n setBracketSubscription(br) {\r\n if (br == null)\r\n return;\r\n\r\n let t = this.m.getSgroupText(br, \"BRACKET_TYPE\");\r\n if (t == null)\r\n t = br.createSubscript(this.m, \"#\");\r\n this.showTextEditor(t, null, t.text);\r\n }\r\n\r\n setBracketRatio(br) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuBracket(cmd, sub, checked, obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetTextField(cmd, txt) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetAttachPoint(cmd, obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n lockAtomConnection(f) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetAtomQuery(cmd, sub, checked, obj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetAtomQuery2(key, val) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetAtomType(cmd, obj) {\r\n if (cmd == \"...\" || cmd == \"more\") {\r\n const me = this;\r\n this.showPT(function(elem) { me.menuSetAtomType2(elem, obj); });\r\n } else {\r\n this.menuSetAtomType2(cmd, obj);\r\n }\r\n }\r\n\r\n menuSetAtomType2(elem, obj?: any) {\r\n let n = 0;\r\n const cloned = this.clone();\r\n\r\n const a = JSDraw2.Atom.cast(obj);\r\n if (a != null && !a.selected) {\r\n if (a._parent.setAtomType(a, elem))\r\n ++n;\r\n } else {\r\n const atoms = this.m.allAtoms();\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a = atoms[i];\r\n if (a.selected && a._parent.setAtomType(a, elem))\r\n ++n;\r\n }\r\n }\r\n\r\n if (n > 0) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n }\r\n\r\n menuSetAtomCharges(cmd) {\r\n const charges = parseInt(cmd);\r\n if (isNaN(charges))\r\n return;\r\n\r\n let n = 0;\r\n const cloned = this.clone();\r\n\r\n const atoms = this.m.allAtoms();\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a = atoms[i];\r\n if (a.selected && a._parent.setAtomCharge(a, charges))\r\n ++n;\r\n }\r\n\r\n if (n > 0) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n }\r\n\r\n menuSetAtomIsotope(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetAtomRadical(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetEhnStereochemistry(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetBondTop(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetRxnCenter(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n menuSetBondType(cmd) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n // @ts-ignore\r\n getAllTlcPlates(sorting): any[] {\r\n JSDraw2.needPro();\r\n }\r\n\r\n numberTlcPlates() {\r\n JSDraw2.needPro();\r\n }\r\n\r\n expandSuperatom() {\r\n if (!this.helm.expandSuperAtom(this.curObject))\r\n JSDraw2.needPro();\r\n }\r\n\r\n _setSelectedBondType(bt) {\r\n let n = 0;\r\n const bonds = this.m.allBonds();\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const b = bonds[i];\r\n if (b.selected && b._parent.setBondType(bonds[i], bt))\r\n ++n;\r\n }\r\n return n;\r\n }\r\n\r\n doRxnMap(curobj) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n Cmd2BondType(cmd) {\r\n switch (cmd) {\r\n case \"single\":\r\n return JSDraw2.BONDTYPES.SINGLE;\r\n case \"double\":\r\n return JSDraw2.BONDTYPES.DOUBLE;\r\n case \"triple\":\r\n return JSDraw2.BONDTYPES.TRIPLE;\r\n case \"unknown\":\r\n return JSDraw2.BONDTYPES.UNKNOWN;\r\n case \"dummy\":\r\n return JSDraw2.BONDTYPES.DUMMY;\r\n case \"either\":\r\n return JSDraw2.BONDTYPES.EITHER;\r\n case \"wiggly\":\r\n return JSDraw2.BONDTYPES.WIGGLY;\r\n case \"bold\":\r\n return JSDraw2.BONDTYPES.BOLD;\r\n case \"boldhash\":\r\n return JSDraw2.BONDTYPES.BOLDHASH;\r\n case \"delocalized\":\r\n return JSDraw2.BONDTYPES.DELOCALIZED;\r\n case \"up\":\r\n return JSDraw2.BONDTYPES.WEDGE;\r\n case \"down\":\r\n return JSDraw2.BONDTYPES.HASH;\r\n }\r\n return null;\r\n }\r\n\r\n delObject(obj) {\r\n if (obj == null)\r\n return false;\r\n\r\n const br = JSDraw2.Bracket.cast(obj);\r\n if (br != null) {\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.m.graphics[i]);\r\n if (t != null && scil.Utils.indexOf(t.anchors, br) >= 0)\r\n this.m.delObject(t);\r\n }\r\n this.m.delObject(br);\r\n return true;\r\n }\r\n\r\n const tlc = JSDraw2.TLC.cast(obj);\r\n if (tlc != null) {\r\n if (tlc.removeSpot(tlc.curspot))\r\n return true;\r\n }\r\n\r\n const rgroup = JSDraw2.RGroup.cast(obj);\r\n if (rgroup != null)\r\n return false;\r\n\r\n const a = JSDraw2.Atom.cast(obj);\r\n if (a != null) {\r\n if (this.delAA(a))\r\n return true;\r\n\r\n if (JSDraw2.defaultoptions.delheteroatom != false && a.bio == null) {\r\n if (a.elem != \"C\" || a.alias != null && a.alias != \"\") {\r\n a.elem = \"C\";\r\n a.alias = null;\r\n a._parent.setHCount(a);\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n const f = obj._parent.delObject(obj);\r\n if (f) {\r\n if (tlc != null)\r\n this.numberTlcPlates();\r\n }\r\n\r\n return f;\r\n }\r\n\r\n delSelected() {\r\n let hasTcl = false;\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n if (JSDraw2.TLC.cast(this.m.graphics[i]) != null) {\r\n hasTcl = true;\r\n break;\r\n }\r\n }\r\n\r\n const n: number = this.m.delSelected();\r\n if (n > 0 && hasTcl)\r\n this.numberTlcPlates();\r\n return n;\r\n }\r\n\r\n hasSelected() {\r\n const n = this.m.hasSelected() as any as number;\r\n if (n > 0) {\r\n for (let i = 0; i < this.m.graphics.length; ++i) {\r\n if (JSDraw2.TLC.cast(this.m.graphics[i]) != null) {\r\n this.numberTlcPlates();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return n;\r\n }\r\n\r\n lassoSelect(last) {\r\n if (this.start == null || this.end == null)\r\n return;\r\n\r\n const extra = this.surface.extra;\r\n if (extra.lasso == null)\r\n extra.lasso = new JSDraw2.Lasso(extra, this.linewidth, true);\r\n\r\n JSDraw2.Drawer.drawLine(extra, last, this.end, \"#aaf\", this.linewidth / 2);\r\n this.m.lassoSelect(extra, this.start, this.end, last, this.linewidth, this.tor / 8);\r\n }\r\n\r\n selectInRect(r) {\r\n return this.m.selectInRect(r);\r\n }\r\n\r\n addTemplate(key, obj, p) {\r\n const a = JSDraw2.Atom.cast(obj);\r\n const b = JSDraw2.Bond.cast(obj);\r\n\r\n const m2 = key == \"[custom]\" ? JSDraw2.CustomTemplates.get(key) : JSDraw2.SuperAtoms.getTemplate(key);\r\n if (m2 == null)\r\n return;\r\n const m = m2.clone();\r\n m.setBondLength(b == null ? this.bondlength : b.bondLength());\r\n\r\n if (a != null) {\r\n this._addNewAtomInExistingGroup(a, m.atoms);\r\n const a0 = m.atoms[0];\r\n if (JSDraw2.SuperAtoms._alignMol(a._parent, a, m, m.atoms[0]))\r\n m.replaceAtom(a0, a);\r\n else\r\n return;\r\n } else if (b != null) {\r\n this._addNewAtomInExistingGroup(b.a1, m.atoms);\r\n this._addNewAtomInExistingGroup(b.a2, m.atoms);\r\n let b0 = null;\r\n for (let i = 0; i < m.bonds.length; ++i) {\r\n if (m.bonds[i].type != JSDraw2.BONDTYPES.SINGLE) {\r\n b0 = m.bonds[i];\r\n break;\r\n }\r\n }\r\n if (b0 == null)\r\n b0 = m.bonds[0];\r\n m.offset(b.a1.p.x - b0.a1.p.x, b.a1.p.y - b0.a1.p.y);\r\n const dir = this._caclBondDir(this.m, b);\r\n const dir0 = this._caclBondDir(m, b0);\r\n if (dir > 0 && dir0 > 0 || dir < 0 && dir0 < 0)\r\n m.flipX(b.a1.p.x);\r\n\r\n const deg = b.angle();\r\n const deg0 = b0.angle();\r\n m.rotate(b0.a1.p.clone(), deg - deg0);\r\n\r\n m.replaceBond(b0, b);\r\n } else {\r\n const a0 = m.atoms[0];\r\n m.offset(p.x - a0.p.x, p.y - a0.p.y);\r\n }\r\n\r\n for (let i = 0; i < m.atoms.length; ++i) {\r\n const a0 = m.atoms[i];\r\n const a2 = JSDraw2.Atom.cast(this.toggle(a0.p));\r\n if (a2 != null && a != a0)\r\n m.replaceAtom(a0, a2);\r\n }\r\n\r\n // attach to existing group\r\n let group = null;\r\n if (a != null && a.group != null)\r\n group = a.group;\r\n if (b != null && b.a1.group != null && b.a2.group != null && b.a1.group == b.a2.group)\r\n group = b.a1.group;\r\n if (group != null) {\r\n for (let i = 0; i < m.atoms.length; ++i)\r\n m.atoms[i].group = group;\r\n }\r\n\r\n const parent = a != null ? a._parent : (b != null ? b._parent : null);\r\n if (parent != null)\r\n parent.mergeMol(m);\r\n else\r\n this.m.mergeMol(m);\r\n }\r\n\r\n _caclBondDir(m, b) {\r\n let n = 0;\r\n let atoms = m.getNeighborAtoms(b.a1, b.a2);\r\n for (let i = 0; i < atoms.length; ++i) {\r\n if (b.a1.p.angleAsOrigin(b.a2.p, atoms[i].p) > 180)\r\n ++n;\r\n else\r\n --n;\r\n }\r\n\r\n atoms = m.getNeighborAtoms(b.a2, b.a1);\r\n for (let i = 0; i < atoms.length; ++i) {\r\n if (b.a2.p.angleAsOrigin(atoms[i].p, b.a1.p) > 180)\r\n ++n;\r\n else\r\n --n;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n keydown(e) {\r\n if (!this.activated)\r\n return;\r\n\r\n if (this.texteditor.ed != null && this.texteditor.ed.input.style.display == \"\")\r\n return;\r\n if (this.helm != null) {\r\n this.helm.cancelDnD();\r\n org.helm.webeditor.MolViewer.hide();\r\n }\r\n\r\n if (scil.Utils.getZindex(this.div) < scil.Utils.getMaxZindex())\r\n return;\r\n\r\n this._keypresschar = String.fromCharCode(e.keyCode);\r\n\r\n if (e.preventDefault == null)\r\n e.preventDefault = function() { };\r\n\r\n if (this.contextmenu != null)\r\n this.contextmenu.hide();\r\n\r\n if (e.keyCode == 27) {\r\n if (this.start != null) {\r\n this.start = null;\r\n this.redraw();\r\n }\r\n }\r\n\r\n // ctrl\r\n if (e.ctrlKey || e.metaKey) {\r\n switch (e.keyCode) {\r\n case 89: // Y\r\n case 121:\r\n if (!this.options.appmode) {\r\n if (this.redo())\r\n this.refresh(true);\r\n }\r\n break;\r\n case 90: // Z\r\n case 122:\r\n if (!this.options.appmode) {\r\n if (this.undo())\r\n this.refresh(true);\r\n }\r\n break;\r\n case 67: // C\r\n case 99:\r\n if (!this.options.appmode)\r\n this.copy();\r\n break;\r\n case 86: // V\r\n case 118:\r\n if (!this.options.appmode && scil.Utils.isIE) { // except IE, I#10205\r\n // IE uses this; All other browsers use document.onpaste event\r\n if (this.paste())\r\n this.refresh(true);\r\n }\r\n break;\r\n case 88: // X\r\n case 120:\r\n if (!this.options.appmode) {\r\n if (this.cut())\r\n this.refresh(true);\r\n }\r\n break;\r\n case 65: // A\r\n case 97:\r\n if (this.selectAll())\r\n this.refresh(false);\r\n e.preventDefault();\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n const a = JSDraw2.Atom.cast(this.curObject);\r\n if (e.keyCode == 8 || e.keyCode == 46) { // del\r\n if (this.onDel())\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n // move selected objects\r\n if (this.m.hasSelected()) {\r\n let dx = 0;\r\n let dy = 0;\r\n switch (e.keyCode) {\r\n case 37: // left\r\n dx = -1;\r\n break;\r\n case 38: // up\r\n dy = -1;\r\n break;\r\n case 39: // right\r\n dx = 1;\r\n break;\r\n case 40: // down\r\n dy = 1;\r\n break;\r\n }\r\n\r\n if (dx != 0 || dy != 0) {\r\n this.pushundo();\r\n //this.m.offset(e.shiftKey ? dx : dx * this.bondlength / 2, e.shiftKey ? dy : dy * this.bondlength / 2, true);\r\n this.m.offset(e.shiftKey ? dx : dx * 20, e.shiftKey ? dy : dy * 20, true);\r\n this.refresh(true);\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n let c;\r\n if (this.curObject == null) {\r\n if (this.getCmd() == \"seq\") {\r\n c = String.fromCharCode(e.keyCode);\r\n if (JSDraw2.SuperAtoms.getAA(c) != null) {\r\n this.createAA(this.lastmove, c, JSDraw2.BIO.AA);\r\n }\r\n } else if (this.getCmd() == \"helix\") {\r\n c = String.fromCharCode(e.keyCode);\r\n if (JSDraw2.SuperAtoms.getDNA(c) != null) {\r\n this.createAA(this.lastmove, c, JSDraw2.BIO.BASE_DNA);\r\n }\r\n } else if (this.getCmd() == \"rna\") {\r\n c = String.fromCharCode(e.keyCode);\r\n if (JSDraw2.SuperAtoms.getRNA(c) != null) {\r\n this.createAA(this.lastmove, c, JSDraw2.BIO.BASE_RNA);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (a != null) {\r\n if (a.bio) {\r\n if (e.keyCode == 13) {\r\n this.showTextEditor(a, a.p.clone());\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.helm != null && scil.helm.isHelmNode(a)) {\r\n c = String.fromCharCode(e.keyCode);\r\n if (scil.helm.Monomers.getMonomer(a, c) != null) {\r\n this.pushundo();\r\n a.elem = c;\r\n this.refresh(true);\r\n }\r\n } else if (a.biotype() == JSDraw2.BIO.AA && JSDraw2.SuperAtoms.getAA(c) != null || a.biotype() == JSDraw2.BIO.BASE_DNA && JSDraw2.SuperAtoms.getDNA(c) != null || a.biotype() == JSDraw2.BIO.BASE_RNA && JSDraw2.SuperAtoms.getRNA(c) != null) {\r\n c = String.fromCharCode(e.keyCode);\r\n if (a.selected) {\r\n if (a.elem != c) {\r\n this.pushundo();\r\n a.elem = c;\r\n this._setSuperatom(a);\r\n this.refresh(true);\r\n }\r\n } else {\r\n this.insertAA(a, c);\r\n }\r\n }\r\n return;\r\n } else if (a.elem == \"R\") {\r\n if (e.keyCode >= 49 && e.keyCode <= 57) {\r\n const rlabel = \"R\" + (e.keyCode - 48);\r\n if (a.alias != rlabel) {\r\n this.pushundo();\r\n this.m.setAtomAlias(a, rlabel);\r\n this.refresh(true);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n switch (e.keyCode) {\r\n //case 16: // *\r\n case 56:\r\n c = '*';\r\n break;\r\n case 50:\r\n c = '@';\r\n break;\r\n case 187:\r\n case 107:\r\n c = '+';\r\n break;\r\n case 189:\r\n case 109:\r\n c = '-';\r\n break;\r\n case 61:\r\n if (scil.Utils.isFirefox)\r\n c = '+';\r\n break;\r\n case 173:\r\n if (scil.Utils.isFirefox)\r\n c = '-';\r\n break;\r\n case 65:\r\n case 97:\r\n c = 'A';\r\n break;\r\n case 81:\r\n case 113:\r\n c = 'Q';\r\n break;\r\n case 66:\r\n case 98:\r\n c = 'Br';\r\n break;\r\n case 67:\r\n case 99:\r\n c = 'C';\r\n break;\r\n case 68:\r\n case 100:\r\n c = 'D';\r\n break;\r\n case 70:\r\n case 102:\r\n c = 'F';\r\n break;\r\n case 72:\r\n case 104:\r\n c = 'H';\r\n break;\r\n case 73:\r\n case 105:\r\n c = 'I';\r\n break;\r\n case 76:\r\n case 108:\r\n c = 'Cl';\r\n break;\r\n case 78:\r\n case 110:\r\n c = 'N';\r\n break;\r\n case 79:\r\n case 111:\r\n c = 'O';\r\n break;\r\n case 80:\r\n case 112:\r\n c = 'P';\r\n break;\r\n case 82:\r\n case 114:\r\n c = 'R';\r\n break;\r\n case 83:\r\n case 115:\r\n c = 'S';\r\n break;\r\n case 84:\r\n case 116:\r\n c = 'T';\r\n break;\r\n case 88:\r\n case 120:\r\n c = 'X';\r\n break;\r\n case 77:\r\n case 109:\r\n c = 'M';\r\n break;\r\n case 69:\r\n c = \"Me\";\r\n break;\r\n case 13:\r\n this.showTextEditor(a, a.p.clone());\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (c == '+' || c == '-') {\r\n const cloned = this.clone();\r\n if (this.increaseNum(a, c == '+' ? +1 : -1)) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n return;\r\n }\r\n } else if (c == \"Me\") {\r\n const cloned = this.clone();\r\n if (this.m.setAtomAlias(a, c)) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n return;\r\n }\r\n } else if (c != null) {\r\n const cloned = this.clone();\r\n if (this.m.setAtomType(a, c)) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n return;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n const shp = JSDraw2.Shape.cast(this.curObject);\r\n if (shp != null && e.keyCode == 13) {\r\n this.showTextEditor(shp, shp._rect.center());\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n const b = JSDraw2.Bond.cast(this.curObject);\r\n if (b != null) {\r\n if (b.isBio()) {\r\n let f = false;\r\n let cloned = null;\r\n if (e.keyCode == 83 && b.type == JSDraw2.BONDTYPES.PEPTIDE) {\r\n cloned = this.clone();\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.DISULFIDE);\r\n } else if (e.keyCode == 49 && b.type == JSDraw2.BONDTYPES.DISULFIDE) {\r\n cloned = this.clone();\r\n f = this.m.setBondType(b, JSDraw2.BONDTYPES.PEPTIDE);\r\n }\r\n if (f) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n } else {\r\n let c = -1;\r\n if (e.keyCode == 189 || e.keyCode == 109)\r\n c = 10;\r\n else if (e.keyCode == 187 || e.keyCode == 107)\r\n c = 11;\r\n else if (e.keyCode == 192)\r\n c = 13;\r\n else\r\n c = e.keyCode - 48;\r\n\r\n if (c >= JSDraw2.BONDTYPES.UNKNOWN && c <= JSDraw2.BONDTYPES.DUMMY && this.curObject.type != c) {\r\n const cloned = this.clone();\r\n if (this.m.setBondType(b, c)) {\r\n this.pushundo(cloned);\r\n if (b.type == JSDraw2.BONDTYPES.WEDGE || b.type == JSDraw2.BONDTYPES.HASH)\r\n this.fixWedgeDir(b);\r\n this.refresh(true);\r\n return;\r\n }\r\n } else if (c == 9 && (b.type == JSDraw2.BONDTYPES.WEDGE || b.type == JSDraw2.BONDTYPES.HASH)) {\r\n this.pushundo();\r\n b.reverse();\r\n this.refresh(true);\r\n return;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n const txt = JSDraw2.Text.cast(this.curObject);\r\n if (txt != null) {\r\n this.showTextEditor(txt);\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n const t = JSDraw2.TLC.cast(this.curObject);\r\n if (t != null) {\r\n if (t.curspot != null) {\r\n switch (e.keyCode) {\r\n case 187:\r\n case 189:\r\n const clone = this.clone();\r\n if (t.curspot.move((e.keyCode == 187 ? 0.1 : -0.1) * (e.shiftKey ? 0.1 : 1))) {\r\n this.pushundo(clone);\r\n this.refresh(true);\r\n }\r\n e.preventDefault();\r\n break;\r\n case 190: // >\r\n this.pushundo();\r\n t.changeSize(t.curspot, \"110%\");\r\n this.refresh(true);\r\n break;\r\n case 188: // <\r\n this.pushundo();\r\n t.changeSize(t.curspot, \"90%\");\r\n this.refresh(true);\r\n break;\r\n case 82: // R\r\n case 76: // L\r\n {\r\n this.pushundo();\r\n //if (Math.abs(t.curspot.ry1) <= 1)\r\n t.curspot.rx += e.shiftKey ? -0.2 : 0.2;\r\n if (t.curspot.rx < 0.1)\r\n t.curspot.rx = 0.1;\r\n this.refresh(true);\r\n }\r\n break;\r\n case 85: // U\r\n {\r\n this.pushundo();\r\n //if (Math.abs(t.curspot.ry1) <= 1)\r\n t.curspot.ry1 += e.shiftKey ? -0.2 : 0.2;\r\n this.refresh(true);\r\n }\r\n break;\r\n case 68: // D\r\n {\r\n this.pushundo();\r\n //if (Math.abs(t.curspot.ry1) <= 1)\r\n t.curspot.ry2 += e.shiftKey ? -0.2 : 0.2;\r\n this.refresh(true);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n toCharArray(s, m?: number) {\r\n if (!(m > 0))\r\n m = 1;\r\n\r\n const ss = [];\r\n for (let i = 0; i < s.length; ++i)\r\n ss.push(s.substr(i, m));\r\n return ss;\r\n }\r\n\r\n splitString(s, pat) {\r\n const ss = [];\r\n\r\n const re = new RegExp(\"^\" + pat);\r\n let ret;\r\n while ((ret = re.exec(s)) != null) {\r\n const c = ret + \"\";\r\n ss.push(c);\r\n if (s.length == c.length)\r\n return ss;\r\n s = s.substr(c.length);\r\n }\r\n return null;\r\n }\r\n\r\n createAA2(s, biotype, expand, asrxn, nterminal, cterminal, selected) {\r\n if (scil.Utils.isNullOrEmpty(s))\r\n return;\r\n\r\n if (expand)\r\n s = s.replace(/[>|\\^]/g, \"\");\r\n\r\n if (new RegExp(\"^[a-z|^|>]+$\").test(s))\r\n s = scil.Utils.trim(s).toUpperCase();\r\n\r\n let ss = null;\r\n if (biotype == JSDraw2.BIO.BASE_DNA) {\r\n if (new RegExp(\"^[A|G|T|C]+$\").test(s)) {\r\n ss = this.toCharArray(s);\r\n } else {\r\n scil.Utils.alert2(\"Invalid DNA sequence.\");\r\n return;\r\n }\r\n }\r\n if (biotype == JSDraw2.BIO.BASE_RNA) {\r\n if (new RegExp(\"^[A|G|T|C|U]+$\").test(s)) {\r\n ss = this.toCharArray(s);\r\n } else {\r\n scil.Utils.alert2(\"Invalid RNA sequence.\");\r\n return;\r\n }\r\n } else if (biotype == JSDraw2.BIO.AA) {\r\n s = s.replace(/[\\.]/g, \"-\");\r\n if (s.indexOf('-') > 0)\r\n ss = s.split('-');\r\n else if (new RegExp(\"^([A-Z][a-z|0-9]{2}[\\\\^]?)+[>]?$\").test(s))\r\n ss = this.splitString(s, \"[A-Z][a-z|0-9]{2}[\\\\^|>]?\");\r\n else if (new RegExp(\"^([A-Z][\\\\^]?)+[>]?$\").test(s)) {\r\n ss = this.splitString(s, \"[A-Z][\\\\^|>]?\");\r\n }\r\n if (ss == null) {\r\n scil.Utils.alert2(\"Invalid peptide sequence.\");\r\n return;\r\n }\r\n }\r\n\r\n if (ss.length >= 3 && scil.Utils.endswith(ss[ss.length - 1], \">\") && s.indexOf('^') <= 0)\r\n ss[0] += \"^\";\r\n\r\n let m;\r\n if (expand && biotype == JSDraw2.BIO.AA)\r\n m = this._createExpandedAA(ss, biotype, nterminal, cterminal);\r\n else\r\n m = this._createCollapsedAA(ss, biotype, nterminal, cterminal);\r\n if (m == null)\r\n return false;\r\n\r\n if (nterminal == null || nterminal == \"\")\r\n nterminal = \"H\";\r\n if (cterminal == null || cterminal == \"\")\r\n cterminal = \"OH\";\r\n\r\n const seq = (nterminal != null ? nterminal + \"-\" : \"\") + s + (cterminal != null ? \"-\" + cterminal : \"\");\r\n if (this.options.onAddSequence != null) {\r\n if (this.options.onAddSequence(m, seq, asrxn))\r\n return true;\r\n }\r\n\r\n this.m.setSelected(false);\r\n if (selected != false)\r\n m.setSelected(true);\r\n\r\n this.pushundo();\r\n if (asrxn == \"reactant\" || asrxn == \"product\") {\r\n const rxn = this.m.parseRxn();\r\n if (asrxn == \"reactant\")\r\n rxn.reactants.push(m);\r\n else\r\n rxn.products.push(m);\r\n this.setRxn(rxn, false, this.bondlength);\r\n } else {\r\n this.m.mergeMol(m);\r\n }\r\n\r\n this.fitToWindow();\r\n\r\n // const t = null;\r\n // if (biotype == JSDraw2.BIO.AA) {\r\n // const c = m.rect().centerBottom();\r\n // const r = new JSDraw2.Rect(c.x - s.length * this.fontsize / 3, c.y + this.bondlength / 2, 0, 0);\r\n // t = new JSDraw2.Text(r, seq);\r\n // t.fieldtype = \"SEQUENCE\";\r\n // t.anchors = scil.clone(m.atoms);\r\n // this.m.addGraphics(t);\r\n // }\r\n\r\n this.refresh(true);\r\n // if (t != null) {\r\n // const c = m.rect().centerBottom();\r\n // t._rect.offset(c.x - t._rect.center().x, 0);\r\n // }\r\n\r\n return true;\r\n }\r\n\r\n _createCollapsedAA(ss, biotype, nterminal, cterminal) {\r\n if (nterminal == null || nterminal == \"\")\r\n nterminal = \"H\";\r\n if (cterminal == null || cterminal == \"\")\r\n cterminal = \"OH\";\r\n\r\n const head = [];\r\n let circle = null;\r\n let tail = null;\r\n const all = [];\r\n\r\n for (let i = 0; i < ss.length; ++i) {\r\n let c = ss[i];\r\n const iscircle = c.length > 1 && (c.substr(c.length - 1) == \"^\" || c.substr(c.length - 1) == \">\");\r\n if (iscircle)\r\n c = c.substr(0, c.length - 1);\r\n\r\n const a = new JSDraw2.Atom(null, c, {type: biotype});\r\n switch (biotype) {\r\n case JSDraw2.BIO.AA:\r\n a.superatom = JSDraw2.SuperAtoms.getAA(c);\r\n break;\r\n case JSDraw2.BIO.BASE_DNA:\r\n a.superatom = JSDraw2.SuperAtoms.getDNA(c);\r\n break;\r\n case JSDraw2.BIO.BASE_RNA:\r\n a.superatom = JSDraw2.SuperAtoms.getRNA(c);\r\n break;\r\n }\r\n if (a.superatom == null) {\r\n scil.Utils.alert(\"It cannot parse: \" + c);\r\n return;\r\n }\r\n all.push(a);\r\n\r\n if (iscircle) {\r\n if (circle == null) {\r\n circle = [a];\r\n } else {\r\n if (tail == null) {\r\n circle.push(a);\r\n tail = [];\r\n } else {\r\n tail.push(a);\r\n }\r\n }\r\n } else {\r\n if (tail != null)\r\n tail.push(a);\r\n else if (circle != null)\r\n circle.push(a);\r\n else\r\n head.push(a);\r\n }\r\n }\r\n\r\n let bondtype = JSDraw2.BONDTYPES.SINGLE;\r\n if (biotype == JSDraw2.BIO.AA)\r\n bondtype = JSDraw2.BONDTYPES.PEPTIDE;\r\n else if (biotype == JSDraw2.BIO.DNA || biotype == JSDraw2.BIO.RNA)\r\n bondtype = JSDraw2.BONDTYPES.NUCLEOTIDE;\r\n\r\n if (circle != null && circle.length == 1) {\r\n head.push(circle[0]);\r\n circle = null;\r\n if (tail != null) {\r\n for (let i = 0; i < tail.length; ++i)\r\n head.push(tail[i]);\r\n tail = null;\r\n }\r\n }\r\n\r\n let nterm = null;\r\n let cterm = null;\r\n const m = new JSDraw2.Mol(this.options.showimplicithydrogens);\r\n if (head.length > 0) {\r\n nterm = new JSDraw2.Atom(null, \"C\");\r\n m.addAtom(nterm);\r\n head.splice(0, 0, nterm);\r\n\r\n const b = new JSDraw2.Bond(head[1], nterm, biotype == JSDraw2.BIO.AA ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.NUCLEOTIDE);\r\n b.apo1 = 1;\r\n m.addBond(b);\r\n }\r\n\r\n m.addAtom(all[0]);\r\n for (let i = 1; i < all.length; ++i) {\r\n m.addAtom(all[i]);\r\n const b = new JSDraw2.Bond(all[i], all[i - 1], bondtype);\r\n b.apo1 = 1;\r\n b.apo2 = 2;\r\n m.addBond(b);\r\n }\r\n\r\n if (circle == null) {\r\n const o = new JSDraw2.Atom(null, biotype == JSDraw2.BIO.AA ? 'O' : \"3'\");\r\n m.addAtom(o);\r\n head.push(o);\r\n cterm = o;\r\n\r\n const b = new JSDraw2.Bond(o, head[head.length - 2], biotype == JSDraw2.BIO.AA ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.NUCLEOTIDE);\r\n b.apo2 = 2;\r\n m.addBond(b);\r\n } else {\r\n if (head.length == 0 && (tail == null || tail.length == 0)) {\r\n const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], JSDraw2.BONDTYPES.PEPTIDE);\r\n b.apo1 = 1;\r\n b.apo2 = 2;\r\n m.addBond(b);\r\n } else if (circle[0].elem == 'C' && circle[circle.length - 1].elem == 'C') {\r\n const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], JSDraw2.BONDTYPES.DISULFIDE);\r\n b.apo1 = 3;\r\n b.apo2 = 3;\r\n m.addBond(b);\r\n } else if (circle[0].elem == 'K' && (tail == null || tail.length == 0)) {\r\n const b = new JSDraw2.Bond(circle[0], circle[circle.length - 1], JSDraw2.BONDTYPES.AMIDE);\r\n b.apo1 = 3;\r\n b.apo2 = 2;\r\n m.addBond(b);\r\n }\r\n\r\n if (tail != null && tail.length > 0) {\r\n cterm = new JSDraw2.Atom(null, \"C\");\r\n m.addAtom(cterm);\r\n tail.push(cterm);\r\n\r\n const b = new JSDraw2.Bond(tail[tail.length - 2], cterm, JSDraw2.BONDTYPES.SINGLE);\r\n b.apo1 = 1;\r\n m.addBond(b);\r\n }\r\n }\r\n\r\n if (circle == null || circle.length == 1) {\r\n let last = null;\r\n this.layoutAtoms(head, ShapeTypes.LINE, this.bondlength, last);\r\n if (head.length > 0)\r\n last = head[head.length - 1];\r\n if (circle != null) {\r\n this.layoutAtoms(circle, ShapeTypes.LINE, this.bondlength, last);\r\n if (circle.length > 0)\r\n last = circle[circle.length - 1];\r\n if (tail != null)\r\n this.layoutAtoms(tail, ShapeTypes.LINE, this.bondlength, last);\r\n }\r\n } else {\r\n const center = new JSDraw2.Point(0, 0);\r\n this.layoutAtoms(circle, ShapeTypes.CIRCLE, this.bondlength, center.clone().offset(1, 0), center);\r\n if (head.length > 0) {\r\n head.push(null);\r\n head.reverse();\r\n this.layoutAtoms(head, ShapeTypes.LINE, this.bondlength, circle[0].p, center);\r\n }\r\n if (tail != null && tail.length > 0) {\r\n tail.splice(0, 0, null);\r\n this.layoutAtoms(tail, ShapeTypes.LINE, this.bondlength, circle[circle.length - 1].p, center);\r\n }\r\n }\r\n\r\n if (nterm != null) {\r\n if (biotype == JSDraw2.BIO.AA) {\r\n if (nterminal == \"H\")\r\n nterm.elem = \"H\";\r\n else\r\n m.setAtomAlias(nterm, nterminal);\r\n } else {\r\n nterm.elem = \"5'\";\r\n }\r\n }\r\n\r\n if (cterm != null) {\r\n if (biotype == JSDraw2.BIO.AA) {\r\n if (cterminal == \"OH\")\r\n cterm.elem = \"O\";\r\n else if (cterminal == \"NH2\")\r\n cterm.elem = \"N\";\r\n else\r\n m.setAtomAlias(cterm, cterminal);\r\n } else {\r\n cterm.elem = \"3'\";\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n _createExpandedAA(ss, biotype, nterminal, cterminal) {\r\n if (nterminal == null || nterminal == \"\")\r\n nterminal = \"H\";\r\n if (cterminal == null || cterminal == \"\")\r\n cterminal = \"OH\";\r\n\r\n let mol = null;\r\n let last = null;\r\n for (let i = 0; i < ss.length; ++i) {\r\n const c = ss[i];\r\n let m = JSDraw2.SuperAtoms.getAA(c);\r\n if (m == null) {\r\n scil.Utils.alert(\"Unknow Amino Acid: \" + c);\r\n return null;\r\n }\r\n m = m.clone();\r\n m.setBondLength(this.bondlength);\r\n const attachs = JSDraw2.SuperAtoms._getAttachAtoms(m);\r\n for (let k = 2; k < attachs.length; ++k)\r\n attachs[k].a.attachpoints = [];\r\n\r\n if (i == 0) {\r\n mol = m;\r\n\r\n attachs[0].a.attachpoints = [];\r\n\r\n if (nterminal != \"H\") {\r\n const p = this._guessAutoBond(attachs[0].a);\r\n const a = new JSDraw2.Atom(p, \"C\");\r\n const b = new JSDraw2.Bond(attachs[0].a, a, JSDraw2.BONDTYPES.SINGLE);\r\n mol.addAtom(a);\r\n mol.addBond(b);\r\n\r\n mol.setAtomAlias(a, nterminal);\r\n }\r\n\r\n last = attachs[1].a;\r\n continue;\r\n }\r\n\r\n if (i % 2 == 1) {\r\n for (let k = 0; k < m.atoms.length; ++k)\r\n m.atoms[k].p.y *= -1;\r\n\r\n for (let k = 0; k < m.bonds.length; ++k) {\r\n if (m.bonds[k].type == JSDraw2.BONDTYPES.WEDGE)\r\n m.bonds[k].type = JSDraw2.BONDTYPES.HASH;\r\n else if (m.bonds[k].type == JSDraw2.BONDTYPES.HASH)\r\n m.bonds[k].type = JSDraw2.BONDTYPES.WEDGE;\r\n }\r\n }\r\n\r\n const p0 = attachs[0].a.p;\r\n const p = this._guessAutoBond(last);\r\n m.offset(p.x - p0.x, p.y - p0.y);\r\n mol.mergeMol(m);\r\n\r\n last.attachpoints = [];\r\n attachs[0].a.attachpoints = [];\r\n const b = new JSDraw2.Bond(last, attachs[0].a, JSDraw2.BONDTYPES.SINGLE);\r\n mol.addBond(b);\r\n\r\n last = attachs[1].a;\r\n }\r\n\r\n if (last != null) {\r\n last.attachpoints = [];\r\n\r\n if (cterminal != \"H\") {\r\n const p = this._guessAutoBond(last);\r\n const a = new JSDraw2.Atom(p, \"C\");\r\n const b = new JSDraw2.Bond(last, a, JSDraw2.BONDTYPES.SINGLE);\r\n mol.addAtom(a);\r\n mol.addBond(b);\r\n\r\n if (cterminal == \"OH\")\r\n a.elem = \"O\";\r\n else\r\n mol.setAtomAlias(a, cterminal);\r\n }\r\n }\r\n return mol;\r\n }\r\n\r\n layoutAtoms(atoms: Atom[], shape: ShapeType, d: number, p1: Point, p2?: Point) {\r\n if (atoms == null || atoms.length == 0)\r\n return;\r\n\r\n if (p2 == null)\r\n p2 = new JSDraw2.Point(0, 0);\r\n if (p1 == null)\r\n p1 = p2.clone().offset(d, 0);\r\n\r\n switch (shape) {\r\n case \"line\": {\r\n if (atoms[0] != null)\r\n atoms[0].p = p1.clone();\r\n const s = d / p1.distTo(p2);\r\n const dx = (p1.x - p2.x) * s;\r\n const dy = (p1.y - p2.y) * s;\r\n for (let i = 1; i < atoms.length; ++i)\r\n atoms[i].p = p1.clone().offset(dx * i, dy * i);\r\n break;\r\n }\r\n case \"circle\": {\r\n const deg = 360 / atoms.length;\r\n const r = d / 2 / Math.sin(deg / 2 * Math.PI / 180);\r\n const s = r / p1.distTo(p2);\r\n p1 = new JSDraw2.Point(p2.x + (p1.x - p2.x) * s, p2.y + (p1.y - p2.y) * s);\r\n if (atoms[0] != null)\r\n atoms[0].p = p1.clone();\r\n for (let i = 1; i < atoms.length; ++i)\r\n atoms[i].p = p1.clone().rotateAround(p2, deg * i);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n createAA(p, c, biotype) {\r\n if (p == null)\r\n return;\r\n\r\n this.pushundo();\r\n const h = new JSDraw2.Atom(p.clone().offset(-this.bondlength, 0), biotype == JSDraw2.BIO.AA ? 'H' : \"5'\");\r\n const a = new JSDraw2.Atom(p.clone(), c, {type: biotype});\r\n a.superatom = null;\r\n if (biotype == JSDraw2.BIO.AA)\r\n a.superatom = JSDraw2.SuperAtoms.getAA(c);\r\n else if (biotype == JSDraw2.BIO.BASE_DNA)\r\n a.superatom = JSDraw2.SuperAtoms.getDNA(c);\r\n else if (biotype == JSDraw2.BIO.BASE_RNA)\r\n a.superatom = JSDraw2.SuperAtoms.getRNA(c);\r\n const o = new JSDraw2.Atom(p.clone().offset(this.bondlength, 0), biotype == JSDraw2.BIO.AA ? 'O' : \"3'\");\r\n this.m.addAtom(h);\r\n this.m.addAtom(a);\r\n this.m.addAtom(o);\r\n\r\n let b = new JSDraw2.Bond(h, a, JSDraw2.BONDTYPES.SINGLE);\r\n b.apo2 = 2;\r\n this.m.addBond(b);\r\n\r\n b = new JSDraw2.Bond(a, o, JSDraw2.BONDTYPES.SINGLE);\r\n b.apo1 = 1;\r\n this.m.addBond(b);\r\n\r\n this.curObject = a;\r\n this.refresh(true);\r\n }\r\n\r\n delAA(a) {\r\n if (a == null || a.biotype() != JSDraw2.BIO.AA && a.biotype() != JSDraw2.BIO.BASE_DNA && a.biotype() != JSDraw2.BIO.BASE_RNA)\r\n return false;\r\n\r\n const next = this.findNextAA(a, false);\r\n if (next == null)\r\n return false;\r\n\r\n this.m.delBond(next.b, false);\r\n const mm = this.m.getFragment(next.a);\r\n mm.offset(a.p.x - next.a.p.x, a.p.y - next.a.p.y);\r\n\r\n const bonds = this.m.getNeighborBonds(a);\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const b = bonds[i];\r\n if (b.a1 == a)\r\n b.a1 = next.a;\r\n else if (b.a2 == a)\r\n b.a2 = next.a;\r\n }\r\n a._parent.delAtom(a);\r\n\r\n return true;\r\n }\r\n\r\n _setSuperatom(a) {\r\n a.superatom = null;\r\n const c = a.elem;\r\n switch (a.biotype()) {\r\n case JSDraw2.BIO.BASE_DNA:\r\n a.superatom = JSDraw2.SuperAtoms.getDNA(c);\r\n break;\r\n case JSDraw2.BIO.BASE_RNA:\r\n a.superatom = JSDraw2.SuperAtoms.getRNA(c);\r\n break;\r\n case JSDraw2.BIO.AA:\r\n a.superatom = JSDraw2.SuperAtoms.getAA(c);\r\n break;\r\n }\r\n }\r\n\r\n insertAA(a, c) {\r\n if (a == null || !a.bio)\r\n return;\r\n\r\n if (a.biotype() == JSDraw2.BIO.AA && JSDraw2.SuperAtoms.getAA(c) == null || a.biotype() == JSDraw2.BIO.BASE_DNA && JSDraw2.SuperAtoms.getDNA(c) != null || a.biotype() == JSDraw2.BIO.BASE_RNA && JSDraw2.SuperAtoms.getRNA(c) != null)\r\n return;\r\n\r\n const dx = this.bondlength;\r\n const right = true;\r\n const list = null;\r\n\r\n const next = this.findNextAA(a, true);\r\n this.pushundo();\r\n const na = new JSDraw2.Atom(a.p.clone().offset(dx, 0), c, dojo.clone(a.bio));\r\n const nb = new JSDraw2.Bond(na, a, a.biotype() == JSDraw2.BIO.AA ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.SINGLE);\r\n this.m.addAtom(na);\r\n this.m.addBond(nb);\r\n\r\n this._setSuperatom(na);\r\n nb.apo1 = 1;\r\n nb.apo2 = 2;\r\n\r\n if (next != null) {\r\n this.m.delBond(next.b, false);\r\n const mm = this.m.getFragment(next.a);\r\n mm.offset(dx, 0);\r\n const b = new JSDraw2.Bond(next.a, na, a.biotype() == JSDraw2.BIO.AA ? JSDraw2.BONDTYPES.PEPTIDE : JSDraw2.BONDTYPES.SINGLE/*, true */); // TODO: check last true\r\n b.apo1 = 1;\r\n b.apo2 = 2;\r\n this.m.addBond(b);\r\n }\r\n\r\n this.curObject = na;\r\n this.refresh(true);\r\n }\r\n\r\n findNextAA(a, forinsert) {\r\n const bonds = this.m.getNeighborBonds(a);\r\n if (bonds.length == 0)\r\n return null;\r\n else if (bonds.length == 1)\r\n return {a: bonds[0].otherAtom(a), b: bonds[0]};\r\n\r\n let backup = null;\r\n for (let i = bonds.length - 1; i >= 0; --i) {\r\n const oa = bonds[i].otherAtom(a);\r\n if (Math.abs(a.p.y - oa.p.y) < this.tor / 2) {\r\n if (oa.p.x < a.p.x) {\r\n backup = bonds[i];\r\n bonds.splice(i, 1);\r\n } else if (oa.p.x >= a.p.x) {\r\n return {a: oa, b: bonds[i]};\r\n }\r\n }\r\n }\r\n\r\n let ret = null;\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const b = bonds[i];\r\n const oa = b.otherAtom(a);\r\n if (ret == null) {\r\n ret = {a: oa, b: b};\r\n } else if (!forinsert && b.isBio() && !ret.b.isBio()) {\r\n ret = {a: oa, b: b};\r\n } else {\r\n if (oa.p.x < a.p.x && ret.a.p.x < a.p.x || oa.p.x > a.p.x && ret.a.p.x > a.p.x) {\r\n if (oa.p.y > ret.a.p.y)\r\n ret = {a: oa, b: b};\r\n } else if (oa.p.x > a.p.x) {\r\n ret = {a: oa, b: b};\r\n }\r\n }\r\n }\r\n\r\n if (ret == null) {\r\n return {a: backup.otherAtom(a), b: backup};\r\n } else if (!forinsert && !ret.a.bio) {\r\n const oa = backup.otherAtom(a);\r\n if (oa.bio)\r\n return {a: oa, b: backup};\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n findNextAAs(a, right) {\r\n const list = [];\r\n while (a != null) {\r\n const r = this._findNextAA(a, right);\r\n if (r != null) {\r\n list.push(r);\r\n a = r.a;\r\n } else {\r\n break;\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n _findNextAA(a, right) {\r\n const bonds = this.m.bonds;\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const oa = bonds[i].otherAtom(a);\r\n if (oa != null && Math.abs(oa.p.y - a.p.y) < this.tor / 2 && (right && oa.p.x > a.p.x || !right && oa.p.x < a.p.x))\r\n return {b: bonds[i], a: oa};\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Set the view window size\r\n * @function setSize\r\n * @param {number} width - new width\r\n * @param {number height - new height\r\n * @returns null\r\n */\r\n setSize(width, height) {\r\n if (this.maintable != null) {\r\n if (width > 0)\r\n this.maintable.style.width = width + \"px\";\r\n if (height > 0)\r\n this.maintable.style.height = height + \"px\";\r\n\r\n if (this.isSkinW8())\r\n this.resize(width, height - 24);\r\n else\r\n this.resize(width - 28, height - 24);\r\n } else {\r\n this.resize(width, height);\r\n }\r\n }\r\n\r\n onResize(width?: number, height?: number): void {\r\n if (this.options.onresize != null) {\r\n if (this.options.onresize())\r\n return;\r\n }\r\n this.resize(width > 0 ? width : this.div.offsetWidth, height > 0 ? height : this.div.offsetHeight);\r\n }\r\n\r\n resize(width: number, height: number): void {\r\n if (scil.Utils.isIpad) {\r\n // this one cause ELN problem on iPad\r\n if (scil.eln != null /* ELN 2.0 */ || scil.App != null && scil.App.AccountTypes != null /* ELN 1.x */)\r\n return;\r\n }\r\n if (this._setSurfaceSize(new JSDraw2.Point(width, height))) {\r\n if (this.isSkinW8() && this.toolbar != null)\r\n this.toolbar.recreateTopToolbar();\r\n }\r\n }\r\n\r\n _setSurfaceSize(sz) {\r\n if (Math.abs(sz.x - this.dimension.x) < 6 && Math.abs(sz.y - this.dimension.y) < 6)\r\n return false;\r\n\r\n if (sz.x > 0)\r\n this.dimension.x = sz.x;\r\n if (sz.y > 0)\r\n this.dimension.y = sz.y;\r\n\r\n this.div.style.width = this.dimension.x + \"px\";\r\n this.div.style.height = this.dimension.y + \"px\";\r\n this.surface.setDimensions(this.dimension.x, this.dimension.y);\r\n this.fitToWindow();\r\n this.redraw();\r\n return true;\r\n }\r\n\r\n dblclick() {\r\n if (this.popuplocked) {\r\n scil.Utils.alert(\"Editing is currently locked\");\r\n return false;\r\n }\r\n\r\n const me = this;\r\n const fn = function(jsd) {\r\n me.restoreClone(jsd.clone());\r\n me.fitToWindow();\r\n me.refresh(true);\r\n if (me.options.onpopupsaved != null)\r\n me.options.onpopupsaved(me);\r\n };\r\n JSDraw2.Editor.showPopup(\"JSDraw2 Popup Editor\", \"Save\", fn, {value: this.clone(), format: \"clone\"});\r\n }\r\n\r\n _makeChain(chain, end) {\r\n if (chain == null || chain.end != null && chain.end.distTo(end) < this.tor)\r\n return false;\r\n if (end.distTo(chain.start) < this.bondlength * 2)\r\n chain.p2 = end;\r\n chain.end = end;\r\n chain.points = [];\r\n\r\n const d = chain.start.distTo(end);\r\n let p1 = chain.start;\r\n let p2;\r\n if (chain.a == null) {\r\n if (Math.abs(end.y - p1.y) / Math.abs(end.x - p1.x) < 0.1) // horizontally\r\n p2 = p1.clone().offset(this.bondlength * (end.x > p1.x ? 1 : -1), 0).rotateAround(p1, 30);\r\n else\r\n p2 = this._guessBond(p1, chain.p2, true);\r\n } else {\r\n p2 = this._guessAutoBond(chain.a, end);\r\n }\r\n if (p2 == null)\r\n return false;\r\n chain.points = [chain.start];\r\n chain.points.push(p2);\r\n\r\n let angle;\r\n let d2 = chain.start.distTo(p2);\r\n while (d2 != 0 && d2 < d) {\r\n const origin = p2;\r\n if (chain.points.length == 2) {\r\n const t1 = p1.clone().rotateAround(origin, 120);\r\n const t2 = p1.clone().rotateAround(origin, -120);\r\n if (t1.distTo(end) < t2.distTo(end)) {\r\n p2 = t1;\r\n angle = 120;\r\n } else {\r\n p2 = t2;\r\n angle = -120;\r\n }\r\n } else {\r\n angle = -angle;\r\n p2 = p1.clone().rotateAround(origin, angle);\r\n }\r\n p1 = origin;\r\n chain.points.push(p2);\r\n d2 = chain.start.distTo(p2);\r\n }\r\n return true;\r\n }\r\n\r\n _guessAutoBond(a, end?: Point) {\r\n if (a == null)\r\n return null;\r\n if (end == null)\r\n return a._parent.guessBond(a, this.bondlength);\r\n\r\n let p = null;\r\n const atoms = a._parent.getNeighborAtoms(a);\r\n if (atoms.length == 0) {\r\n p = a.p.clone().offset(this.bondlength, 0);\r\n if (end != null) {\r\n const deg = Math.round(end.angleTo(a.p) / 30) * 30;\r\n p.rotateAround(a.p, deg);\r\n }\r\n } else if (atoms.length == 1) {\r\n const a1 = atoms[0];\r\n p = a1.p.clone().rotateAround(a.p, -120);\r\n if (end != null) {\r\n const t = a1.p.clone().rotateAround(a.p, 120);\r\n if (t.distTo(end) < p.distTo(end))\r\n p = t;\r\n }\r\n } else if (atoms.length == 2) {\r\n const a1 = atoms[0];\r\n const a2 = atoms[1];\r\n const ang1 = a1.p.angleTo(a.p);\r\n const mid = a.p.middleAngle(a1.p, a2.p);\r\n p = a1.p.clone().rotateAround(a.p, mid - ang1 + 180);\r\n }\r\n return p;\r\n }\r\n\r\n _addAutoBond(a, cmd) {\r\n const m = a._parent;\r\n const p = this._guessAutoBond(a);\r\n if (p == null)\r\n return false;\r\n\r\n let elem = null;\r\n const c = this._countAABonds(a);\r\n let bondtype = this.Cmd2BondType(cmd);\r\n if (c != null) {\r\n // add H or OH on peptide terminal Amino Acid\r\n if (c.peptideN == 0 && c.others == 0) {\r\n elem = \"H\";\r\n bondtype = JSDraw2.BONDTYPES.PEPTIDE;\r\n } else if (c.peptideC == 0 && c.others == 0)\r\n elem = \"O\";\r\n else\r\n return false;\r\n }\r\n\r\n let na = JSDraw2.Atom.cast(this.toggle(p));\r\n if (na != null) {\r\n if (na._parent != a._parent)\r\n na = null;\r\n }\r\n\r\n if (na == null) {\r\n na = new JSDraw2.Atom(p, elem);\r\n this._addNewAtomInExistingGroup(a, [na]);\r\n m.addAtom(na);\r\n // attach to existing group\r\n if (a.group != null)\r\n na.group = a.group;\r\n } else {\r\n if (m.findBond(a, na) != null)\r\n return false;\r\n }\r\n\r\n const nb = new JSDraw2.Bond(a, na, bondtype);\r\n m.addBond(nb, null, true);\r\n return true;\r\n }\r\n\r\n _guessBond(p1: Point, p2: Point, notor?: boolean): Point {\r\n if (!notor && p1.distTo(p2) < this.tor)\r\n return null;\r\n\r\n let a = p2.angleTo(p1);\r\n const m = Math.abs(a) % this.angleStop;\r\n if (a > 0)\r\n a = a - m + (m > (this.angleStop / 2) ? this.angleStop : 0);\r\n else\r\n a = -(-a - m + (m > (this.angleStop / 2) ? this.angleStop : 0));\r\n\r\n return new JSDraw2.Point(this.bondlength, 0).rotate(a).offset(p1.x, p1.y);\r\n }\r\n\r\n guessArrow(p1, p2) {\r\n if (p1.distTo(p2) < this.bondlength)\r\n return null;\r\n\r\n const a = p2.angleTo(p1);\r\n const m = a % 90;\r\n if (m == 0)\r\n return p2;\r\n\r\n let s = 0;\r\n if (m < 5)\r\n s = -m;\r\n else if (90 - m < 5)\r\n s = 90 - m;\r\n else\r\n return p2;\r\n\r\n return p2.clone().rotateAround(p1, s);\r\n }\r\n\r\n frameoffset: Point = new JSDraw2.Point(0, 0);\r\n\r\n setFrameoffset(x, y) {\r\n this.frameoffset.x = x;\r\n this.frameoffset.y = y;\r\n }\r\n\r\n eventPoint(e): EventPoint {\r\n const f = true;\r\n //if (scil.Utils.isIpad)\r\n // f = false;\r\n const objoffset = scil.Utils.getOffset(this.div, f);\r\n //objoffset = new JSDraw2.Point(0, 0);\r\n const pt = new JSDraw2.Point(e.clientX - objoffset.x - this.frameoffset.x, e.clientY - objoffset.y - this.frameoffset.y) as EventPoint;\r\n pt.tm = new Date().getTime();\r\n pt.clientX = e.clientX;\r\n pt.clientY = e.clientY;\r\n return pt;\r\n }\r\n\r\n getCmd(td?: any) {\r\n if (td == null)\r\n td = this.curButton;\r\n let s = td == null ? \"select\" : td.getAttribute('cmd');\r\n if (s.length > 2 && s.substr(0, 2) == \"e-\")\r\n s = s.substr(2);\r\n return s;\r\n }\r\n\r\n onSelBtn(e: MouseEvent): void {\r\n let td = (e.target || e.srcElement) as HTMLTableCellElement;\r\n if (td.getAttribute('cmd') != null) {\r\n this.onCmd(td);\r\n return;\r\n }\r\n\r\n for (let i = 0; i < 5; ++i) {\r\n td = td.parentElement as HTMLTableCellElement;\r\n if (td == null || td.tagName != \"TD\")\r\n return;\r\n\r\n if (td.getAttribute('cmd') != null) {\r\n this.onCmd(td);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Do a toolbar command\r\n * @function doCmd\r\n * @param {string} cmd - the command name\r\n * @returns null\r\n */\r\n doCmd(cmd) {\r\n if (this.toolbar == null)\r\n return;\r\n\r\n const list = this.toolbar.getButtons();\r\n for (let i = 0; i < list.length; ++i) {\r\n let p = list[i];\r\n if (this.options.skin == \"si\")\r\n p = p.parentNode;\r\n if (p.getAttribute(\"cmd\") == cmd) {\r\n this.onCmd(p);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onCmd(td) {\r\n let useonce = true;\r\n this.start = null;\r\n const cmd = this.getCmd(td);\r\n JSDraw2.Menu.close();\r\n switch (cmd) {\r\n case \"about\":\r\n case \"jsdraw\":\r\n JSDraw2.Editor.showAbout();\r\n break;\r\n case \"inkclearall\":\r\n if (this.ink != null)\r\n this.ink.clear();\r\n break;\r\n case \"inkclear\":\r\n if (this.ink != null)\r\n this.ink.clearLastOne();\r\n break;\r\n case \"center\":\r\n this.pushundo();\r\n this.fitToWindow();\r\n this.redraw();\r\n break;\r\n case \"zoomin\":\r\n this.pushundo();\r\n this.scale(1.25, new JSDraw2.Point(this.dimension.x / 2, this.dimension.y / 2));\r\n this.redraw();\r\n useonce = false;\r\n break;\r\n case \"zoomout\":\r\n this.pushundo();\r\n this.scale(0.75, new JSDraw2.Point(this.dimension.x / 2, this.dimension.y / 2));\r\n this.redraw();\r\n useonce = false;\r\n break;\r\n case \"new\":\r\n if (!this.m.isEmpty()) {\r\n const me = this;\r\n scil.Utils.confirmYes(\"Clear all contents?\", function() {\r\n me.pushundo();\r\n me.clear(null, true);\r\n me.refresh(true);\r\n if (me.options.filenew != null)\r\n me.options.filenew(me);\r\n }, this);\r\n } else {\r\n if (this.ink != null)\r\n this.ink.clear();\r\n }\r\n break;\r\n case \"save\":\r\n if (this.options.filesave != null)\r\n this.options.filesave(this);\r\n else if (scil.Utils.serviceAvailable())\r\n JSDraw2.JSDrawIO.jsdFileSave(this);\r\n else {\r\n // @ts-ignore\r\n this.onShowSaveFileDlg();\r\n }\r\n break;\r\n case \"open\":\r\n if (this.options.fileopen != null)\r\n this.options.fileopen(this);\r\n else if (scil.Utils.serviceAvailable())\r\n JSDraw2.JSDrawIO.jsdFileOpen(this);\r\n else\r\n this.onShowOpenFileDlg();\r\n break;\r\n case \"undo\":\r\n if (this.undo())\r\n this.refresh(true);\r\n useonce = true;\r\n break;\r\n case \"redo\":\r\n if (this.redo())\r\n this.refresh(true);\r\n useonce = true;\r\n break;\r\n case \"rxn\": {\r\n const cloned = this.clone();\r\n if (this.cleanupRxn(this.bondlength)) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n }\r\n break;\r\n }\r\n case \"copyprod\":\r\n const rxn = this.m.parseRxn(true);\r\n if (rxn != null && rxn.reactants.length > 0 && rxn.products.length == 0) {\r\n this.pushundo();\r\n for (let i = 0; i < rxn.reactants.length; ++i) {\r\n rxn.products.push(rxn.reactants[i].clone());\r\n }\r\n this.setRxn(rxn, false);\r\n this.refresh(true);\r\n } else {\r\n scil.Utils.alert(\"It's already a reaction\");\r\n }\r\n break;\r\n case \"rxnmap2\": {\r\n const cloned = this.clone();\r\n if (this.m.clearAtomMap() > 0) {\r\n this.pushundo(cloned);\r\n this.refresh(true);\r\n } else {\r\n scil.Utils.alert(\"No reaction map found\");\r\n }\r\n break;\r\n }\r\n case \"seq\":\r\n JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.AA, \"Peptide\");\r\n break;\r\n case \"helix\":\r\n JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.BASE_DNA, \"DNA\");\r\n break;\r\n case \"rna\":\r\n JSDraw2.SequenceBuilder.show(this, JSDraw2.BIO.BASE_RNA, \"RNA\");\r\n break;\r\n case \"n2s\":\r\n JSDraw2.JSDrawIO.name2structure(this);\r\n break;\r\n case \"cleanup\":\r\n JSDraw2.JSDrawIO.cleanup(this);\r\n break;\r\n case \"selectall\":\r\n if (this.selectAll())\r\n this.redraw();\r\n break;\r\n case \"copy\":\r\n this.copy();\r\n break;\r\n case \"cut\":\r\n if (this.cut())\r\n this.redraw();\r\n break;\r\n case \"paste\":\r\n if (this.paste())\r\n this.redraw();\r\n break;\r\n case \"fliph\":\r\n this.flip(\"hori\");\r\n break;\r\n case \"flipv\":\r\n this.flip(\"vert\");\r\n break;\r\n case \"reaxys\":\r\n case \"scifinder\":\r\n case \"pubchem\":\r\n case \"chemspider\":\r\n this.sendQuery(cmd);\r\n useonce = true;\r\n break;\r\n case \"chemdraw\":\r\n JSDraw2.ChemdrawPopup.show(this);\r\n useonce = true;\r\n break;\r\n case \"eraser\":\r\n if (!this.onDel())\r\n useonce = false;\r\n break;\r\n case \"...\":\r\n case \"more\":\r\n this.showPT();\r\n useonce = false;\r\n break;\r\n case \"pastechemdraw\":\r\n JSDraw2.ChemDraw.paste(this);\r\n break;\r\n case \"copychemdraw\":\r\n JSDraw2.ChemDraw.copy(this);\r\n break;\r\n case \"symbol\":\r\n this.showSymbolDlg();\r\n break;\r\n case \"template.[custom]\":\r\n this.showTemplatesDlg();\r\n useonce = false;\r\n break;\r\n case \"tlctemplate\":\r\n JSDraw2.TLCTemplates.show(true, this);\r\n break;\r\n case \"tlcnumber\":\r\n this.numberTlcPlates();\r\n break;\r\n case \"fullscreen\":\r\n case \"fullscreen2\":\r\n if (JSDraw2.Fullscreen != null)\r\n JSDraw2.Fullscreen.show(this);\r\n useonce = true;\r\n break;\r\n case \"helm_import\":\r\n if (this.helm != null)\r\n this.helm.showImportDlg();\r\n useonce = true;\r\n break;\r\n case \"helm_find\":\r\n if (this.helm != null)\r\n this.helm.showFindReplaceDlg();\r\n useonce = true;\r\n break;\r\n case \"helm_mex\":\r\n if (this.helm != null)\r\n scil.helm.MonomerExplorer.showDlg(this);\r\n useonce = true;\r\n break;\r\n case \"helm_layout\":\r\n if (this.helm != null)\r\n this.helm.clean(null, true);\r\n useonce = true;\r\n break;\r\n default:\r\n useonce = false;\r\n break;\r\n }\r\n\r\n if (!useonce)\r\n this.onCmd2(td);\r\n }\r\n\r\n onCmd2(td) {\r\n const cmd = this.getCmd(td);\r\n if (cmd == \"rxnmap\") {\r\n const rxn = this.m.parseRxn();\r\n if (rxn == null || rxn.reactants.length == 0 || rxn.products.length == 0) {\r\n scil.Utils.alert(\"Please draw a completed reaction first.\");\r\n return;\r\n }\r\n }\r\n const pid = dojo.attr(td, \"parent\");\r\n const parent = pid == null ? null : dojo.byId(pid);\r\n if (parent != null) {\r\n this.toolbar.exchangeButton(parent, td);\r\n td = parent;\r\n }\r\n if (this.curButton != td) {\r\n if (this.options.skin == \"w8\") {\r\n const me = this;\r\n if (this.curButton != null) {\r\n dojo.style(this.curButton, {backgroundImage: scil.Utils.imgSrc(\"w8/\" + me.options.buttonshape + \".png\", true)});\r\n this.curButton.removeAttribute(\"pushed\");\r\n }\r\n td.setAttribute(\"pushed\", 1);\r\n dojo.style(td, {backgroundImage: scil.Utils.imgSrc(\"w8/\" + me.options.buttonshape + \"0.png\", true)});\r\n } else if (this.options.skin == \"si\") {\r\n if (this.curButton != null) {\r\n dojo.style(this.curButton, {background: \"\"});\r\n this.curButton.removeAttribute(\"pushed\");\r\n }\r\n td.setAttribute(\"pushed\", 1);\r\n dojo.style(td, {background: JSDraw2.Skin.jsdraw.btnselcolor});\r\n } else {\r\n if (this.curButton != null) {\r\n dojo.style(this.curButton, {border: \"none\", padding: \"2px\"});\r\n //this.curButton.removeAttribute(\"pushed\");\r\n }\r\n //td.setAttribute(\"pushed\", 1);\r\n dojo.style(td, {border: \"solid 1px\", borderColor: \"#c0c0c0 #f5f5f5 #f5f5f5 #c0c0c0\", padding: \"1px\"});\r\n }\r\n this.curButton = td;\r\n }\r\n }\r\n\r\n flip(dir) {\r\n if (this.m.isEmpty())\r\n return;\r\n\r\n let list = [];\r\n const atoms = this.m.atoms;\r\n for (let i = 0; i < atoms.length; ++i) {\r\n if (atoms[i].selected)\r\n list.push(atoms[i]);\r\n }\r\n\r\n if (list.length == 0) {\r\n const graphics = this.m.graphics;\r\n for (let i = 0; i < graphics.length; ++i) {\r\n if (graphics[i].selected && JSDraw2.Curve.cast(graphics[i]) != null)\r\n list.push(graphics[i]);\r\n }\r\n\r\n if (list.length != 0) {\r\n this.pushundo();\r\n for (let i = 0; i < list.length; ++i)\r\n list[i].flip();\r\n this.refresh(true);\r\n return;\r\n }\r\n }\r\n\r\n let flipBond = null;\r\n let flipaxis = null;\r\n let center = null;\r\n if (list.length == 0) {\r\n center = this.getCenter();\r\n list = atoms;\r\n } else if (list.length == 1) {\r\n center = list[0].p.clone();\r\n\r\n const frag = this.getFragment(list[0]);\r\n if (frag != null)\r\n list = frag.atoms;\r\n } else {\r\n if (list.length == 2 && (flipBond = this.m.findBond(list[0], list[1])) != null) {\r\n center = flipBond.center();\r\n\r\n const frag = this.getFragment(list[0]);\r\n if (frag != null)\r\n list = frag.atoms;\r\n } else {\r\n const links = this.getConnectingAtomBonds(list);\r\n if (links.length == 1) {\r\n flipBond = links[0].b;\r\n center = (flipBond.a1.f ? flipBond.a1 : flipBond.a2).p.clone();\r\n } else if (links.length == 2) {\r\n flipaxis = {a1: links[0].a, a2: links[1].a};\r\n } else {\r\n center = this.getCenter(list);\r\n }\r\n }\r\n }\r\n\r\n if (flipBond != null)\r\n flipaxis = {a1: flipBond.a1, a2: flipBond.a2};\r\n\r\n this.pushundo();\r\n if (flipaxis != null) {\r\n const deg = flipaxis.a2.p.angleTo(flipaxis.a1.p);\r\n center = flipaxis.a1.p.clone();\r\n this.rotate(list, center, -deg);\r\n for (let i = 0; i < list.length; ++i) {\r\n const p = list[i].p;\r\n p.y = center.y - (p.y - center.y);\r\n }\r\n this.rotate(list, center, deg);\r\n } else {\r\n if (dir == \"vert\") {\r\n for (let i = 0; i < list.length; ++i) {\r\n const p = list[i].p;\r\n p.y = center.y - (p.y - center.y);\r\n }\r\n } else {\r\n for (let i = 0; i < list.length; ++i) {\r\n const p = list[i].p;\r\n p.x = center.x - (p.x - center.x);\r\n }\r\n }\r\n }\r\n this._invertStereoBonds(list);\r\n\r\n this.refresh(true);\r\n }\r\n\r\n _invertStereoBonds(list) {\r\n const all = list.length == this.m.atoms.length;\r\n for (let i = 0; i < this.m.bonds.length; ++i) {\r\n const b = this.m.bonds[i];\r\n if (b.type == JSDraw2.BONDTYPES.WEDGE || b.type == JSDraw2.BONDTYPES.HASH) {\r\n if (scil.Utils.indexOf(list, b.a1) >= 0 || scil.Utils.indexOf(list, b.a2) >= 0) {\r\n b.type = b.type == JSDraw2.BONDTYPES.WEDGE ? JSDraw2.BONDTYPES.HASH : JSDraw2.BONDTYPES.WEDGE;\r\n }\r\n }\r\n }\r\n }\r\n\r\n sendQuery(cmd) {\r\n const smiles = this.getSmiles();\r\n if (smiles == null || smiles == \"\") {\r\n scil.Utils.alert(\"No query structure drawn\");\r\n return;\r\n }\r\n let url;\r\n switch (cmd.toLowerCase()) {\r\n case \"pubchem\":\r\n url = \"http://pubchem.ncbi.nlm.nih.gov/search/search.cgi?cmd=search&q_type=dt&simp_schtp=fs&q_data=\";\r\n break;\r\n case \"chemspider\":\r\n url = \"http://www.chemspider.com/Search.aspx?q=\";\r\n break;\r\n case \"reaxys\":\r\n url = \"https://www.reaxys.com/reaxys/secured/hopinto.do?context=S&query=\";\r\n break;\r\n case \"scifinder\":\r\n url = \"https://www.reaxys.com/reaxys/secured/hopinto.do?context=S&query=\";\r\n break;\r\n default:\r\n return;\r\n }\r\n url += escape(smiles);\r\n window.open(url, \"_blank\");\r\n }\r\n\r\n onShowOpenFileDlg() {\r\n const me = JSDraw2.Editor;\r\n if (me.openfiledlg == null) {\r\n let fileformats = null;\r\n if (JSDraw2.Security.kEdition == \"Lite\") {\r\n if (this.options.helmtoolbar)\r\n fileformats = {helm: \"HELM\", xhelm: \"xHELM\"};\r\n else\r\n fileformats = {mol: \"Mol File\", smiles: \"SMILES\"};\r\n } else if (me.openfiledlg?.jsd.options.tlcplate) // TODO: check jsd\r\n fileformats = JSDraw2.JSDrawIO.jsdFiles2;\r\n else\r\n fileformats = JSDraw2.JSDrawIO.jsdFiles;\r\n\r\n const fields = {filetype: {label: \"File Type\", type: \"select\", items: fileformats}, contents: {label: \"Contents\", type: \"textarea\", width: 800, height: 400}};\r\n me.openfiledlg = scil.Form.createDlgForm(\"Import File\", fields, {label: \"Import\", onclick: function() { me.onOpenFile(); }});\r\n }\r\n me.openfiledlg.show();\r\n me.openfiledlg.form.setData({});\r\n me.openfiledlg.jsd = this;\r\n }\r\n\r\n onShowSaveFileDl(): void {\r\n const me = JSDraw2.Editor;\r\n if (me.savefiledlg == null) {\r\n let fileformats = null;\r\n if (JSDraw2.Security.kEdition == \"Lite\") {\r\n if (this.options.helmtoolbar)\r\n fileformats = {helm: \"HELM\", xhelm: \"xHELM\"};\r\n else\r\n fileformats = {mol: \"Mol File\", smiles: \"SMILES\"};\r\n } else\r\n // @ ts-ignore\r\n if (me.savefiledlg?.jsd.options.tlcplate) // TODO: check jsd\r\n fileformats = JSDraw2.JSDrawIO.jsdFiles2;\r\n else\r\n fileformats = JSDraw2.JSDrawIO.jsdFiles;\r\n\r\n const fields = {filetype: {label: \"File Type\", type: \"select\", items: fileformats}, contents: {label: \"Contents\", type: \"textarea\", width: 800, height: 400}};\r\n me.savefiledlg = scil.Form.createDlgForm(\"Export File\", fields, null, {\r\n onchange: function(field) {\r\n if (field == me.savefiledlg.form.fields.filetype) me.onSaveFile();\r\n }\r\n });\r\n }\r\n me.savefiledlg.show();\r\n me.savefiledlg.form.setData({});\r\n me.savefiledlg.jsd = this;\r\n }\r\n\r\n\r\n onPT(elem): void {\r\n JSDraw2.Editor.periodictable.hide();\r\n if (elem != null)\r\n this.ptElement = elem; // TODO: ?\r\n }\r\n\r\n showPT(callback?: Function) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n showAtomDlg(a) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n setAtomProps(a) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n showBondDlg(b) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n setBondProps(b) {\r\n JSDraw2.needPro();\r\n }\r\n\r\n /**\r\n * Set Secptrum JDX data\r\n * @function setJdx\r\n * @param {string} data - JDX string\r\n */\r\n setJdx(data) {\r\n const m = new JSDraw2.Mol();\r\n m.setJdx(data, this.bondlength);\r\n\r\n this.setMol(m);\r\n }\r\n\r\n getData(format) {\r\n if (format == \"mol\")\r\n return this.getMolfile();\r\n else if (format == \"mol3000\")\r\n return this.getMolfile(true);\r\n else if (format == \"rxn\")\r\n return this.getRxnfile();\r\n else if (format == \"rxn3000\")\r\n return this.getRxnfile(null, true);\r\n else if (format == \"xml\")\r\n return this.getXml();\r\n else if (format == \"helm\")\r\n return this.getHelm();\r\n else if (format == \"xhelm\")\r\n return this.getXHelm();\r\n else if (format == \"smiles\")\r\n return this.m.getSmiles();\r\n else if (format == \"helm\")\r\n return this.getHelm();\r\n else if (format == \"xhelm\")\r\n return this.getXHelm();\r\n else\r\n return null;\r\n }\r\n\r\n setData(data, format) {\r\n this.setFile(data, format);\r\n }\r\n\r\n /**\r\n * Load file data\r\n * @function setFile\r\n * @param {string} data - the file contents\r\n * @param {string} filetype - the file type: mol, rxn, xml. Other file types can be loaded with JSDraw.WebServices\r\n * @returns the Mol object loaded\r\n */\r\n setFile(data, filetype) {\r\n let m = null;\r\n if (filetype == \"mol\")\r\n m = this.m.setMolfile(data);\r\n else if (filetype == \"rxn\")\r\n m = this.m.setRxnfile(data);\r\n else if (filetype == \"xml\")\r\n m = this.m.setXml(data);\r\n else if (filetype == \"helm\") {\r\n this.setHelm(data);\r\n return;\r\n } else if (filetype == \"xhelm\") {\r\n this.setXHelm(data);\r\n return;\r\n } else if (filetype == \"jdx\")\r\n m = this.m.setJdx(data, this.bondlength);\r\n else\r\n return;\r\n\r\n if (m == null) {\r\n this.clear(true);\r\n return;\r\n }\r\n\r\n this.setMol(m);\r\n return this.m;\r\n }\r\n\r\n /**\r\n * Load a Mol object\r\n * @function setMol\r\n * @param {Mol} mol - the Mol object to be loaded\r\n * @returns true or false\r\n */\r\n setMol(mol) {\r\n if (mol != null && typeof (mol) == \"object\" && mol.T == \"MOL\") {\r\n this.m = mol;\r\n this.m.showimplicithydrogens = this.options.showimplicithydrogens;\r\n if (this.options.removehydrogens)\r\n this.m.removeHydrogens();\r\n this.m.calcHCount();\r\n this.m.toScreen(this.bondlength);\r\n this.fitToWindow();\r\n this._setmol(this.m);\r\n this.refresh(true);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Load a molfile\r\n * @function setMolFile\r\n * @param {string} molfile - the mol file contents\r\n * @returns null\r\n */\r\n setMolfile(molfile) {\r\n this.setFile(molfile, \"mol\");\r\n }\r\n\r\n /**\r\n * Load a rxnfile\r\n * @function setRxnFile\r\n * @param {string} rxnfile - the rxn file contents\r\n * @returns null\r\n */\r\n setRxnfile(rxnfile) {\r\n this.setFile(rxnfile, \"rxn\");\r\n }\r\n\r\n /**\r\n * Get molfile data\r\n * @function getMolfile\r\n * @param {bool} v3000 - indicate if rendering it in mol v3000 format\r\n * @returns the molfile string\r\n */\r\n getMolfile(v3000?: boolean, excludeDummyBonds?: boolean): string {\r\n this.m.bondlength = this.bondlength;\r\n return this.m.getMolfile(false, v3000, excludeDummyBonds);\r\n }\r\n\r\n /**\r\n * Get SVG data\r\n * @function getSvg\r\n * @returns the svg string\r\n */\r\n getSvg() {\r\n const g = dojox.gfx;\r\n if (g.renderer != \"svg\")\r\n return null;\r\n\r\n const r = this.m.rect();\r\n r.inflate(20, 20);\r\n const gu = dojox.gfx.utils;\r\n this.m.offset(-r.left, -r.top);\r\n this.redraw();\r\n let xml = gu._cleanSvg(gu._innerXML(this.surface.rawNode));\r\n this.m.offset(r.left, r.top);\r\n this.redraw();\r\n xml = xml.replace(/ width=\"[0-9]+\"/, \" width=\\\"\" + Math.round(r.width) + \"\\\"\");\r\n xml = xml.replace(/ height=\"[0-9]+\"/, \" height=\\\"\" + Math.round(r.height) + \"\\\"\");\r\n return xml;\r\n }\r\n\r\n /**\r\n * Get JSDraw Xml data\r\n * @function getXml\r\n * @param {number} width - the view width\r\n * @param {number} height - the view height\r\n * @param {bool} viewonly - indicate if it is viewonly mode\r\n * @returns a string\r\n */\r\n getXml(width?: number, height?: number, viewonly?: boolean, withsvg?: boolean) {\r\n let svg = null;\r\n try {\r\n svg = withsvg ? this.getSvg() : null;\r\n } catch (e) {\r\n }\r\n\r\n this.m.bondlength = this.bondlength;\r\n return this.m.getXml(width > 0 ? width : this.dimension.x, height > 0 ? height : this.dimension.y, viewonly, svg, this.bondlength);\r\n }\r\n\r\n getHtml(width, height, viewonly, withsvg) {\r\n return this.getXml(width, height, viewonly, withsvg);\r\n }\r\n\r\n getSequence(highlightselection) {\r\n return this.helm == null ? null : this.helm.getSequence(highlightselection);\r\n }\r\n\r\n getHelm(highlightselection?: boolean) {\r\n return this.helm == null ? null : this.helm.getHelm(highlightselection);\r\n }\r\n\r\n setHelm(s) {\r\n return this.helm == null ? null : this.helm.setHelm(s);\r\n }\r\n\r\n getXHelm() {\r\n return this.helm == null ? null : this.helm.getXHelm();\r\n }\r\n\r\n setXHelm(s) {\r\n return this.helm == null ? null : this.helm.setXHelm(s);\r\n }\r\n\r\n /**\r\n * Set JSDraw Xml data\r\n * @function setXml\r\n * @param {string} xml - the JSDraw Xml string\r\n * @returns the Mol object loaded\r\n */\r\n setXml(xml: string | Node, setmodified?: boolean) {\r\n const doc = typeof (xml) == \"string\" ? scil.Utils.parseXml(xml) : xml;\r\n if (doc == null) {\r\n if (typeof (xml) == \"string\" && xml.indexOf(\"M END\") > 0)\r\n return this.setMolfile(xml);\r\n return;\r\n }\r\n\r\n if (this.helm != null && this.helm.isXHelm(doc)) {\r\n this.setXHelm(doc);\r\n return;\r\n }\r\n\r\n this.clear();\r\n let root = null;\r\n if (typeof (xml) == \"string\")\r\n root = doc == null ? null : (doc.documentElement || doc.firstElementChild);\r\n else\r\n root = xml;\r\n this.m.setXml(root);\r\n\r\n this.m.calcHCount();\r\n if (this.m.bondlength > 0) {\r\n this.m.scale(JSDraw2.Editor.BONDLENGTH / this.m.bondlength);\r\n this.resetScale();\r\n } else {\r\n this.m.toScreen(this.bondlength);\r\n }\r\n this.fitToWindow();\r\n this._setmol(this.m);\r\n this.refresh(setmodified == null ? true : setmodified);\r\n return this.m;\r\n }\r\n\r\n setHtml(xml) {\r\n return this.setXml(xml);\r\n }\r\n\r\n /**\r\n * Get Rxnfile\r\n * @function getRxnfile\r\n * @param {bool} groupbyplus - indicate if grouping reactants/products based on explicit plus signs\r\n * @param {bool} v3000 - indicate if rendering in v3000 format\r\n * @returns a string\r\n */\r\n getRxnfile(groupbyplus?: boolean, v3000?: boolean) {\r\n return this.m.getRxnfile(groupbyplus, v3000);\r\n }\r\n\r\n /**\r\n * Get SMILES\r\n * @function getSmiles\r\n * @returns a string\r\n */\r\n getSmiles(notused?: boolean) {\r\n return this.m.getSmiles();\r\n }\r\n\r\n setMolbase64(molfile) {\r\n const s = JSDraw2.Base64.decode(molfile);\r\n this.setMolfile(s);\r\n }\r\n\r\n setRxnbase64(rxnfile) {\r\n const s = JSDraw2.Base64.decode(rxnfile);\r\n this.setRxnfile(s);\r\n }\r\n\r\n getMolbase64() {\r\n const s = this.m.getMolfile();\r\n return JSDraw2.Base64.encode(s);\r\n }\r\n\r\n hasHelmNodes() {\r\n if (this.helm == null)\r\n return false;\r\n\r\n for (let i = 0; i < this.m.atoms.length; ++i) {\r\n if (scil.helm.isHelmNode(this.m.atoms[i]))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Get Formula\r\n * @function getFormula\r\n * @param {bool} html - indicate if rendering Formula in HTML format\r\n * @returns a string\r\n */\r\n getFormula(html) {\r\n if (this.hasHelmNodes())\r\n return this.helm.getMF(html);\r\n else\r\n return this.m.getFormula(html);\r\n }\r\n\r\n /**\r\n * Get molecular weight\r\n * @function getMolWeight\r\n * @returns a number\r\n */\r\n getMolWeight() {\r\n if (this.hasHelmNodes())\r\n return this.helm.getMW();\r\n else\r\n return this.m.getMolWeight();\r\n }\r\n\r\n /**\r\n * Get Extinction Coefficient\r\n * @function getExtinctionCoefficient\r\n * @returns a number\r\n */\r\n getExtinctionCoefficient() {\r\n if (this.hasHelmNodes())\r\n return this.helm.getExtinctionCoefficient();\r\n else\r\n return null;\r\n }\r\n\r\n /**\r\n * Get exact mass\r\n * @function getExactMass\r\n * @returns a number\r\n */\r\n getExactMass() {\r\n return this.m.getExactMass();\r\n }\r\n\r\n setAny(s, fmt) {\r\n if (!scil.Utils.serviceAvailable() || s == null || s.length == 0)\r\n return;\r\n\r\n const me = this;\r\n const xhrArgs = {\r\n url: scil.Utils.scriptUrl() + \"Service.aspx?cmd=tomolfile\",\r\n postData: \"input=\" + escape(s) + \"&fmt=\" + escape(fmt),\r\n handleAs: \"json\",\r\n load(ret) {\r\n if (ret.success) {\r\n me.pushundo(me.clone());\r\n me.setMolfile(ret.result);\r\n } else {\r\n scil.Utils.alert(ret.error);\r\n }\r\n },\r\n error(ret) {\r\n scil.Utils.alert(ret.message);\r\n }\r\n };\r\n\r\n const deferred = dojo.rawXhrPost(xhrArgs);\r\n }\r\n\r\n /**\r\n * Highlight a query structure\r\n * @function highlight\r\n * @param {string or Mol} query - the query structure\r\n * @returns true or false\r\n */\r\n highlight(query) {\r\n let q = null;\r\n if (typeof query == \"string\")\r\n q = new JSDraw2.Mol(this.options.showimplicithydrogens).setMolfile(query);\r\n else\r\n q = query.T == \"MOL\" ? query : query.m;\r\n if (q == null)\r\n return false;\r\n\r\n const target = this;\r\n const map = q.aamap(target.m, false, true);\r\n target.redraw();\r\n return map != null;\r\n }\r\n\r\n /**\r\n * Perform a sub-structure search using this molecule as the query\r\n * @function highlight\r\n * @param {Editor} target - the target structure\r\n * @returns true or false\r\n */\r\n sss(target) {\r\n return target.highlight(this);\r\n }\r\n\r\n res(s) {\r\n return JSDraw2.Language.res(s);\r\n }\r\n\r\n isSkinW8(): boolean {\r\n return this.options.skin == \"w8\" || this.options.skin == \"si\";\r\n }\r\n\r\n download(url, filetype) {\r\n const me = this;\r\n const callback = function(data) {\r\n if (data.ret != null)\r\n me.setFile(data.ret.molfile, filetype);\r\n else\r\n me.setFile(data, filetype);\r\n };\r\n scil.Utils.download(url, callback);\r\n }\r\n\r\n /**\r\n * Write the current structure into a cookie, so it can be reloaded next time\r\n * @function writeCookie\r\n * @param {string} name - cookie name\r\n * @param {number} days - cookie valid days\r\n * @returns null\r\n */\r\n writeCookie(name, days) {\r\n if (name == null || name.length == 0)\r\n name = \"__jsdraw_cookie_structure\";\r\n if (!(days > 0))\r\n days = 30;\r\n const html = this.getXml();\r\n scil.Utils.createCookie(name, html, days);\r\n }\r\n\r\n /**\r\n * Read the structure from a saved cookie\r\n * @function readCookie\r\n * @param {string} name - cookie name\r\n * @returns null\r\n */\r\n readCookie(name) {\r\n if (name == null || name.length == 0)\r\n name = \"__jsdraw_cookie_structure\";\r\n const html = scil.Utils.readCookie(name);\r\n this.setXml(html);\r\n }\r\n\r\n /**\r\n * Destory the editor\r\n * @returns null\r\n */\r\n destroy() {\r\n this.div = null;\r\n this.curObject = null;\r\n this.curButton = null;\r\n this.texteditor = {input: null, text: null, atom: null};\r\n this.maintable = null;\r\n if (this.toolbar != null) {\r\n this.toolbar.destroy();\r\n this.toolbar = null;\r\n }\r\n if (this.surface != null) {\r\n try {\r\n this.surface.destroy();\r\n } catch (e) {\r\n }\r\n this.surface = null;\r\n }\r\n for (let i = 0; i < this.connectHandlers.length; ++i)\r\n dojo.disconnect(this.connectHandlers[i]);\r\n this.connectHandlers = null;\r\n }\r\n\r\n bodyMouseDown(e) {\r\n const src = e.target || e.srcElement;\r\n if (this.texteditor.ed != null && this.texteditor.ed.isVisible() && !(this.texteditor.ed.isChildOf(src) || JSDraw2.Symbol != null && JSDraw2.Symbol.isFrom(src))) {\r\n this.hideTextEditor();\r\n return;\r\n }\r\n\r\n if (this.texteditor.ed != null && this.texteditor.ed.isChildOf(src) || this.contextmenu != null && this.contextmenu.isFrom(src))\r\n return;\r\n\r\n const dlg = scil.Dialog.getDialog(src);\r\n if (dlg != null && dlg.owner == this)\r\n return;\r\n\r\n if (this._testdeactivation != null) {\r\n if (this._testdeactivation(e, this))\r\n return;\r\n }\r\n\r\n const f = scil.Utils.hasAnsestor(src, this.surface.children[0].rawNode) || this.isFromSvgGroup(src) || scil.Utils.hasAnsestor(src, this.maintable);\r\n //const f = src.__gfxObject__ != null || scil.Utils.hasAnsestor(src, this.maintable);\r\n if (this.activated) {\r\n if (!f)\r\n this.activate(false);\r\n } else {\r\n if (f)\r\n this.activate(true);\r\n }\r\n }\r\n\r\n isFromSvgGroup(src) {\r\n if (dojox.gfx.renderer != \"svg\")\r\n return false;\r\n const g = scil.Utils.getParent(src, \"g\");\r\n return g != null && g.getAttribute(\"__surface_parentid\") == this.id;\r\n }\r\n\r\n bodyTouchStart(e) {\r\n if (this.activated && e.touches.length > 0) {\r\n const te = e.touches[0];\r\n const src = te.target || te.srcElement;\r\n if (!scil.Utils.hasAnsestor(src, this.maintable))\r\n this.activate(false);\r\n }\r\n this.bodyMouseDown(e);\r\n }\r\n\r\n// bodyClick (e) {\r\n// },\r\n\r\n touchClick(e) {\r\n if (!this.activated) {\r\n this.activate(true);\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n private touch: any = {\r\n reset: function(jsd: any) {\r\n if (this.cloned != null) {\r\n jsd.pushundo(this.cloned);\r\n jsd.setModified(true);\r\n }\r\n this.center = null;\r\n this.start1 = null;\r\n this.start2 = null;\r\n this.end1 = null;\r\n this.end2 = null;\r\n this.gesture = null;\r\n this.deg = null;\r\n this.scale = null;\r\n this.cloned = null;\r\n }\r\n };\r\n\r\n resetGesture() {\r\n this.touch.reset(this);\r\n }\r\n\r\n private holding = new class {\r\n delay: number = 1000;\r\n tor: number = 2;\r\n e: any = null;\r\n tm: any = null;\r\n timer: any = null;\r\n '';\r\n jsd: Editor = null;\r\n\r\n start(e, jsd) {\r\n if (!scil.Utils.isTouch && !window.navigator.msPointerEnabled)\r\n return;\r\n this.end();\r\n this.e = {clientX: e.clientX, clientY: e.clientY};\r\n this.tm = new Date().getTime();\r\n this.jsd = jsd;\r\n const me = this;\r\n this.timer = setTimeout(function() { me.timeout(); }, this.delay);\r\n }\r\n\r\n end() {\r\n if (this.timer == null)\r\n return;\r\n this.e = null;\r\n this.tm = null;\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n\r\n timeout() {\r\n if (this.e != null) {\r\n this.jsd.start = null;\r\n this.jsd.showContextMenu(this.e, this.jsd.options.viewonly);\r\n }\r\n this.end();\r\n }\r\n\r\n move(e) {\r\n if (this.e != null && (Math.abs(e.clientX - this.e.clientX) > this.tor || Math.abs(e.clientY - this.e.clientY) > this.tor))\r\n this.end();\r\n }\r\n }();\r\n\r\n touchStart(e) {\r\n if (!this.activated)\r\n return;\r\n\r\n if (JSDraw2.Menu.isOpen()) {\r\n JSDraw2.Menu.close();\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n if (e.touches.length == 1) {\r\n this.mousedown(e.touches[0]);\r\n e.preventDefault();\r\n return false;\r\n } else if (e.touches.length == 2) {\r\n this.lastmove = null;\r\n this.resetGesture();\r\n\r\n this.touch.start1 = this.eventPoint(e.touches[0]);\r\n this.touch.start2 = this.eventPoint(e.touches[1]);\r\n this.touch.center = new JSDraw2.Point((this.touch.start1.x + this.touch.start2.x) / 2, (this.touch.start1.y + this.touch.start2.y) / 2);\r\n\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n touchMove(e) {\r\n if (!this.activated)\r\n return;\r\n\r\n if (e.touches.length == 1) {\r\n this.mousemove(e.touches[0]);\r\n e.preventDefault();\r\n this.resetGesture();\r\n return false;\r\n }\r\n\r\n this.holding.end();\r\n if (this.ink != null)\r\n this.ink.cancel();\r\n\r\n this.start = null;\r\n if (e.touches.length == 2) {\r\n const p1 = this.eventPoint(e.touches[0]);\r\n const p2 = this.eventPoint(e.touches[1]);\r\n if (this.touch.start1 == null) {\r\n this.touch.start1 = p1;\r\n this.touch.start2 = p2;\r\n return;\r\n }\r\n\r\n if (p1.equalsTo(this.touch.end1) && p2.equalsTo(this.touch.end2))\r\n return;\r\n this.touch.end1 = p1;\r\n this.touch.end2 = p2;\r\n\r\n if (this.touch.gesture == null && this.touch.start1 != null && this.touch.start2 != null) {\r\n const d1 = this.touch.end1.distTo(this.touch.start1);\r\n const d2 = this.touch.end2.distTo(this.touch.start2);\r\n if (d1 > 25 || d2 > 25) {\r\n const a1 = this.touch.end1.angleTo(this.touch.start1);\r\n const a2 = this.touch.end2.angleTo(this.touch.start2);\r\n const da = Math.abs(a1 - a2);\r\n if (d1 > 8 && d2 > 8 && (da < 30 || Math.abs(da - 360) < 30)) {\r\n this.touch.gesture = \"moving\";\r\n } else {\r\n const a3 = d1 > 25 ? this.touch.start1.angleAsOrigin(this.touch.end1, this.touch.start2) : this.touch.start2.angleAsOrigin(this.touch.end2, this.touch.start1);\r\n if (Math.abs(a3 - 180) < 45 || Math.abs(a3 - 360) < 45)\r\n this.touch.gesture = \"zooming\";\r\n else\r\n this.touch.gesture = \"rotating\";\r\n }\r\n //dojo.byId(\"Textarea1\").value += \"d1=\" + d1 + \", d2=\" + d2 + \", \" + a1 + \", \" + a2 + \", \" + a3 + \"\\r\\n\";\r\n }\r\n }\r\n\r\n if (this.touch.gesture != null && (!this.touch.end1.equalsTo(this.touch.start1) || !this.touch.end2.equalsTo(this.touch.start2))) {\r\n if (this.touch.gesture == \"zooming\") {\r\n const dx = this.touch.end1.x - this.touch.start1.x;\r\n const dy = this.touch.end2.y - this.touch.start1.y;\r\n if (Math.abs(dx) >= this.movingresolution || Math.abs(dy) >= this.movingresolution) {\r\n this.touch.scale = this.touch.end1.distTo(this.touch.end2) / this.touch.start1.distTo(this.touch.start2);\r\n if (this.touch.cloned == null)\r\n this.touch.cloned = this.clone();\r\n this.scale(this.touch.scale, this.touch.center);\r\n this.touch.start1 = this.touch.end1;\r\n this.touch.start2 = this.touch.end2;\r\n this.redraw();\r\n //this.surface.rootgroup.setTransform([dojox.gfx.matrix.scaleAt(this.touch.scale, this.touch.scale, this.touch.center.x, this.touch.center.y)]);\r\n }\r\n } else if (this.touch.gesture == \"moving\") {\r\n const dx = this.touch.end1.x - this.touch.start1.x;\r\n const dy = this.touch.end1.y - this.touch.start1.y;\r\n if (Math.abs(dx) >= this.movingresolution || Math.abs(dy) >= this.movingresolution) {\r\n if (this.touch.cloned == null)\r\n this.touch.cloned = this.clone();\r\n this.m.offset(dx, dy);\r\n this.touch.start1 = this.touch.end1;\r\n this.redraw();\r\n //this.surface.rootgroup.setTransform([dojox.gfx.matrix.translate(this.touch.end1.x - this.touch.start1.x, this.touch.end1.y - this.touch.start1.y)]);\r\n }\r\n } else if (this.touch.gesture == \"rotating\") {\r\n let a1 = this.touch.start2.angleAsOrigin(this.touch.start1, this.touch.end1);\r\n let a2 = this.touch.start1.angleAsOrigin(this.touch.start2, this.touch.end2);\r\n if (a1 > 180)\r\n a1 -= 360;\r\n if (a2 > 180)\r\n a2 -= 360;\r\n if ((Math.abs(a1) >= 1 || Math.abs(a2) >= 1) && Math.abs(a1) < 30 && Math.abs(a2) < 30) {\r\n const s = Math.abs(a2) / (Math.abs(a1) + Math.abs(a2));\r\n const x = this.touch.start1.x + (this.touch.start2.x - this.touch.start1.x) * s;\r\n const y = this.touch.start1.y + (this.touch.start2.y - this.touch.start1.y) * s;\r\n this.m.rotate(new JSDraw2.Point(x, y), Math.abs(a1) > Math.abs(a2) ? a1 : a2);\r\n this.touch.start1 = this.touch.end1;\r\n this.touch.start2 = this.touch.end2;\r\n this.redraw();\r\n }\r\n }\r\n }\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n this.resetGesture();\r\n }\r\n\r\n touchEnd(e) {\r\n if (!this.activated)\r\n return;\r\n\r\n this.resetGesture();\r\n this.mouseup(e);\r\n return false;\r\n }\r\n\r\n /**\r\n * Activate the editor and set focus\r\n * @function activate\r\n * @param {bool} f - indicate setting focus or name\r\n * @param {bool} show - indicate if redrawing the structure\r\n * @returns null\r\n */\r\n activate(f: boolean, show?: boolean) {\r\n if (this.activated == f || this.maintable == null)\r\n return;\r\n\r\n this.activated = f;\r\n if (f) {\r\n if (JSDraw2.__currentactived != this && JSDraw2.__currentactived != null)\r\n JSDraw2.__currentactived.activate(false);\r\n JSDraw2.__currentactived = this;\r\n }\r\n\r\n if (window.navigator.msPointerEnabled) {\r\n if (f) {\r\n if (document.body.style.overflow != \"hidden\") {\r\n this._msContentZooming = document.body.style.msContentZooming;\r\n this._overflow = document.body.style.overflow;\r\n document.body.style.msContentZooming = \"none\";\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n } else {\r\n if (document.body.style.overflow != this._overflow) {\r\n document.body.style.msContentZooming = this._msContentZooming;\r\n document.body.style.overflow = this._overflow;\r\n }\r\n }\r\n }\r\n\r\n if (!f && this.contextmenu != null)\r\n this.contextmenu.hide();\r\n\r\n if (show == false)\r\n return;\r\n\r\n if (this.options.focusbox != false)\r\n this.maintable.style.borderColor = f ? (this.options.focuscolor == null ? \"#5555ff\" : this.options.focuscolor) : \"#cccccc\";\r\n if (!f && this.curObject != null) {\r\n this.curObject = null;\r\n this.redraw();\r\n }\r\n\r\n if (this.options.onfocus != null)\r\n this.options.onfocus(f);\r\n }\r\n}\r\n\r\nexport class Editor extends EditorInt {\r\n static _id: number;\r\n static _allitems: any;\r\n\r\n static __xcode: number = 91;\r\n static undoGestureTime: number = 300;\r\n static dblclickdelay: number = 300;\r\n static BONDLENGTH: number = 30.0;\r\n static ANGLESTOP: number = 30.0;\r\n static LINEWIDTH: number = 2.0;\r\n static TOR: number = 10.0;\r\n static FONTSIZE: number = 14.0;\r\n\r\n static COLORCURRENT: ColorArray;\r\n static COLORSELECTED: ColorArray;\r\n static popupdlg: any;\r\n static openfiledlg: IDialog;\r\n static savefiledlg: IDialog;\r\n static periodictable: IDialog;\r\n static about: IDialog;\r\n\r\n /**\r\n * Get the Editor object by its ID\r\n * @function {static} get\r\n * @param {string} id - the Editor ID\r\n * @returns the Editor object\r\n */\r\n static get(id) {\r\n if (JSDraw2.Editor._allitems == null)\r\n JSDraw2.Editor._allitems = {};\r\n return id == null ? null : JSDraw2.Editor._allitems[id];\r\n }\r\n\r\n static getClipboard() {\r\n let data = scil.Utils.readCookie(\"__jsdrawclipboard\");\r\n if (data == null || data == \"\")\r\n return null;\r\n\r\n data = JSDraw2.Base64.decode(data);\r\n const m = new JSDraw2.Mol();\r\n if (m.setXml(data) == null || m.isEmpty())\r\n return null;\r\n\r\n //scil.Utils.createCookie(\"__jsdrawclipboard\", \"\");\r\n return m;\r\n }\r\n\r\n static setClipboard(m, bondlength) {\r\n if (m != null && !m.isEmpty()) {\r\n scil.Utils.createCookie(\"__jsdrawclipboard\", JSDraw2.Base64.encode(m.getXml(null, null, null, null, bondlength)));\r\n return true;\r\n }\r\n\r\n scil.Utils.alert(\"Nothing placed on clipboard.\");\r\n return false;\r\n }\r\n\r\n /**\r\n * Show JSDraw About box\r\n * @function {static} showAbout\r\n * @returns null\r\n */\r\n static showAbout() {\r\n if (JSDraw2.Editor.about == null) {\r\n const div = scil.Utils.createElement(null, \"div\", null, {width: \"430px\", color: \"black\"});\r\n scil.Utils.createElement(div, \"img\", null, null, {src: scil.Utils.imgSrc(\"img/jsdraw2.jpg\")});\r\n\r\n let lic;\r\n if (JSDraw2.Security.kEdition == \"Lite\") {\r\n lic = \"JSDraw Lite for HELM\";\r\n } else {\r\n const exp = JSDraw2.Security.lic == null ? null : JSDraw2.Security.lic.expiration;\r\n lic = JSDraw2.Security.error != null ? JSDraw2.Security.error : \"Licensed to \" + JSDraw2.Security.lic.licensor + \", expires on \" + exp.getFullYear() + \"-\" + (exp.getMonth() + 1) + \"-\" + exp.getDate();\r\n if (!JSDraw2.Security.valid)\r\n lic = \"\" + lic + \"\";\r\n }\r\n\r\n scil.Utils.createElement(div, \"div\", lic, {textAlign: \"right\"});\r\n const tbody = scil.Utils.createTable(div, null, null, {borderTop: \"solid 1px gray\", width: \"100%\"});\r\n const tr = scil.Utils.createElement(tbody, \"tr\");\r\n scil.Utils.createElement(tr, \"td\", JSDraw2.version);\r\n scil.Utils.createElement(tr, \"td\", \"http://www.jsdraw.com\", {textAlign: \"right\"});\r\n const btn = scil.Utils.createElement(scil.Utils.createElement(div, \"div\", null, {textAlign: \"center\"}), \"button\", \"OK\", {width: scil.Utils.buttonWidth + \"px\"});\r\n\r\n JSDraw2.Editor.about = new JSDraw2.Dialog(JSDraw2.Language.res(\"About JSDraw\"), div);\r\n scil.connect(btn, \"onclick\", function(e) {\r\n JSDraw2.Editor.about.hide();\r\n e.preventDefault();\r\n });\r\n }\r\n JSDraw2.Editor.about.show();\r\n }\r\n\r\n static onClickPT(elem, id) {\r\n JSDraw2.Editor.get(id).onPT(elem);\r\n }\r\n\r\n static onSaveFile() {\r\n const fields = JSDraw2.Editor.savefiledlg.form.fields;\r\n const fmt = fields.filetype.value;\r\n const txt = fields.contents;\r\n txt.value = JSDraw2.Editor.savefiledlg.jsd.getData(fmt);\r\n txt.select();\r\n txt.focus();\r\n }\r\n\r\n static onOpenFile() {\r\n const fields = JSDraw2.Editor.openfiledlg.form.fields;\r\n\r\n const s = fields.contents.value;\r\n const fmt = fields.filetype.value;\r\n JSDraw2.Editor.openfiledlg.jsd.setData(s, fmt);\r\n JSDraw2.Editor.openfiledlg.hide();\r\n }\r\n\r\n static initNoDelay() {\r\n const list = document.getElementsByTagName(\"div\");\r\n for (let i = 0; i < list.length; i++) {\r\n const e = list[i];\r\n if (dojo.hasClass(e, 'JSDraw')) {\r\n new JSDraw2.Editor(e);\r\n dojo.removeClass(e, 'JSDraw');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initialize all DIV HTML elements and their class marked as JSDraw, and convert all of them into JSDraw Editor
\r\n * This function can be called before document.onload().
\r\n * new JSDraw2.Editor() can only be used in or after document.onload().\r\n * @function {static} init\r\n */\r\n static init() {\r\n scil.onload(function() {\r\n JSDraw2.Editor.initNoDelay();\r\n });\r\n }\r\n\r\n /**\r\n * Create a JSDraw Editor
\r\n * This function can be called before document.onload().
\r\n * new JSDraw2.Editor() can only be used in or after document.onload().\r\n * @function {static} create\r\n * @param {string or DOM} id - the ID of DIV placehold, or the DIV DOM object\r\n * @param {dictonary} options - creating options. Please check Editor contructor for details\r\n */\r\n static create(id, options) {\r\n dojo.ready(function() { new JSDraw2.Editor(id, options); });\r\n }\r\n\r\n static write(id, options) {\r\n document.writeln(\"
\");\r\n scil.onload(function() { new JSDraw2.Editor(id, options); });\r\n }\r\n\r\n static showPopupIframe(title, btnText, btnFn, value) {\r\n const newcreated = false;\r\n const parentWindow: any = scil.Utils.getTopWindow();\r\n parentWindow.JSDraw2.Editor.showPopup(title, btnText, btnFn, value);\r\n }\r\n\r\n static getPopupSize(win?: any) {\r\n const args = {width: 800, height: 400};\r\n if (JSDraw2.defaultoptions != null) {\r\n const w = JSDraw2.defaultoptions.popupwidth;\r\n const h = JSDraw2.defaultoptions.popupheight;\r\n const d = scil.Utils.getScreenSize(win); // dojo.window.getBox();\r\n\r\n if (typeof (w) == \"string\" && w.substr(w.length - 1, 1) == \"%\")\r\n args.width = d.w * parseInt(w.substr(0, w.length - 1)) / 100;\r\n else if (typeof (w) == 'number')\r\n args.width = w;\r\n\r\n if (typeof (h) == \"string\" && w.substr(h.length - 1, 1) == \"%\")\r\n args.height = d.h * parseInt(h.substr(0, h.length - 1)) / 100;\r\n else if (typeof (h) == 'number')\r\n args.height = h;\r\n }\r\n return args;\r\n }\r\n\r\n /**\r\n * Show JSDraw Poup Editor
\r\n * @function {static} showPopup\r\n * @param {string} title - the title of the Popup dialog\r\n * @param {string} btnText - the button text of the Popup dialog\r\n * @param {function(editor)} btnFn - the callback function when user clicks on the button\r\n * @param {number} zindex - the zIndex of the dialog DOM\r\n */\r\n static showPopup(title: string, btnText: string, btnFn: Function, value, zindex?: number) {\r\n let args = null;\r\n if (JSDraw2.Editor.popupdlg == null) {\r\n args = this.getPopupSize();\r\n const tbody = scil.Utils.createTable();\r\n let tr = scil.Utils.createElement(tbody, 'tr');\r\n let td = scil.Utils.createElement(tr, 'td');\r\n args.div = scil.Utils.createElement(td, \"div\", null, {width: args.width + \"px\", height: args.height + \"px\"});\r\n\r\n tr = scil.Utils.createElement(tbody, 'tr');\r\n td = scil.Utils.createElement(tr, 'td', null, {textAlign: \"center\"});\r\n const button = scil.Utils.createElement(td, \"button\", null, {width: scil.Utils.buttonWidth + \"px\"});\r\n //const cancel = scil.Utils.createElement(td, \"button\", scil.Utils.imgTag('cancel.gif', \"Cancel\", { width: scil.Utils.buttonWidth + \"px\" });\r\n\r\n JSDraw2.Editor.popupdlg = new JSDraw2.Dialog(title, tbody.parentNode);\r\n JSDraw2.Editor.popupdlg.button = button;\r\n //JSDraw2.Editor.popupdlg.cancel = cancel;\r\n }\r\n\r\n JSDraw2.Editor.popupdlg.show(title, zindex);\r\n if (args != null) {\r\n if (JSDraw2.defaultoptions.popupxdraw/* && scil.Utils.isIE */) {\r\n args.height -= 40;\r\n args.value = value;\r\n JSDraw2.Editor.popupdlg.jsd = new scilligence.XDraw(args.div, args);\r\n } else {\r\n args.div.style.border = \"solid 1px #ddd\";\r\n JSDraw2.Editor.popupdlg.jsd = new JSDraw2.Editor(args.div);\r\n this._loadPopupData(value);\r\n }\r\n\r\n if (!scil.Utils.isIE || scil.Utils.isIE > 8)\r\n JSDraw2.Editor.popupdlg.updateWidth();\r\n //div = null;\r\n const fn = function(e) {\r\n let f = true;\r\n if (JSDraw2.Editor.popupdlg.callback != null) {\r\n f = JSDraw2.Editor.popupdlg.callback(JSDraw2.Editor.popupdlg.jsd);\r\n JSDraw2.Editor.popupdlg.callback = null;\r\n }\r\n if (f != false)\r\n JSDraw2.Editor.popupdlg.hide();\r\n e.preventDefault();\r\n };\r\n dojo.connect(JSDraw2.Editor.popupdlg.button, \"onclick\", fn);\r\n //const fn2 = function (e) { JSDraw2.Editor.popupdlg.hide(); e.prevendDefault(); };\r\n //dojo.connect(JSDraw2.Editor.popupdlg.cancel, \"onclick\", fn2);\r\n } else {\r\n this._loadPopupData(value);\r\n }\r\n\r\n JSDraw2.Editor.popupdlg.button.innerHTML = scil.Utils.imgTag(\"tick.gif\", btnText);\r\n JSDraw2.Editor.popupdlg.callback = btnFn;\r\n\r\n return JSDraw2.Editor.popupdlg.jsd;\r\n }\r\n\r\n static _loadPopupData(value) {\r\n if (value == null) {\r\n JSDraw2.Editor.popupdlg.jsd.clear(true);\r\n return;\r\n }\r\n\r\n if (value.format == \"jsdraw\" || value.format == \"html\" || value.format == \"xml\")\r\n JSDraw2.Editor.popupdlg.jsd.setXml(value.value);\r\n else if (value.format == \"mol\" || value.format == \"molfile\")\r\n JSDraw2.Editor.popupdlg.jsd.setMolfile(value.value);\r\n else if (value.format == \"jdx\")\r\n JSDraw2.Editor.popupdlg.jsd.setJdx(value.value);\r\n else if (value.format == \"clone\") {\r\n JSDraw2.Editor.popupdlg.jsd.restoreClone(value.value);\r\n JSDraw2.Editor.popupdlg.jsd.fitToWindow();\r\n } else\r\n JSDraw2.Editor.popupdlg.jsd.clear(true);\r\n\r\n JSDraw2.Editor.popupdlg.jsd.refresh();\r\n }\r\n}\r\n\r\nexport class MSTouch {\r\n static pointers: {};\r\n\r\n static down(e) {\r\n const me = MSTouch;\r\n this.pointers[e.pointerId] = {clientX: e.clientX, clientY: e.clientY, target: e.target, button: e.button, pointerId: e.pointerId, _tm: new Date().getTime()};\r\n e.touches = me.toTouches();\r\n //dojo.byId(\"DEBUG\").value = \"down: \" + e.touches.length + \"\\r\\n\";\r\n return e;\r\n }\r\n\r\n static move(e) {\r\n const me = MSTouch;\r\n const t = this.pointers[e.pointerId];\r\n if (t == null)\r\n return;\r\n t.clientX = e.clientX;\r\n t.clientY = e.clientY;\r\n t._tm = new Date().getTime();\r\n e.touches = me.toTouches();\r\n //dojo.byId(\"DEBUG\").value += \"move: \" + e.touches.length + \"\\r\\n\";\r\n return e;\r\n }\r\n\r\n static up(e) {\r\n const me = MSTouch;\r\n delete me.pointers[e.pointerId];\r\n e.touches = this.toTouches();\r\n //dojo.byId(\"DEBUG\").value += \"up: \" + e.touches.length + \"\\r\\n\";\r\n return e;\r\n }\r\n\r\n static toTouches() {\r\n const me = MSTouch;\r\n const touches = [];\r\n const tm = new Date().getTime();\r\n const list = [];\r\n for (const k in me.pointers) {\r\n if (me.pointers[k]._tm > tm - 5000)\r\n touches.push(me.pointers[k]);\r\n else\r\n list.push(k);\r\n }\r\n for (let i = 0; i < list.length; ++i)\r\n delete me.pointers[list[i]];\r\n touches.sort(function(a, b) { return a.pointerId - b.pointerId; });\r\n return touches;\r\n }\r\n}\r\n\r\nscilligence.mstouch = MSTouch;\r\nJSDraw2.Editor = Editor;\r\n\r\n//@ts-ignore\r\nvar JSDraw = JSDraw2.Editor;\r\n\r\n","import type {Mol} from '../Mol';\r\n\r\nexport const defaultMolHandlerOptions = new class {\r\n showimplicithydrogens: boolean = true;\r\n};\r\n\r\nexport type MolHandlerOptions = typeof defaultMolHandlerOptions;\r\n\r\n/** Molecular handler for parser plugin. */\r\nexport interface IMolHandler {\r\n bondlength: number;\r\n m: Mol;\r\n\r\n new(): IMolHandler;\r\n}\r\n","// @ts-nocheck\r\n\r\nimport type {JSDraw2ModuleType} from './types/jsdraw2';\r\nimport type {ScilModuleType} from './types';\r\n\r\nimport type {MolHandlerOptions} from './types/mol-handler';\r\n\r\nimport {defaultMolHandlerOptions} from './types/mol-handler';\r\n\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\ndeclare const scil: ScilModuleType;\r\n\r\nJSDraw2.MolHandler = scil.extend(scil._base, {\r\n constructor: function(options?: MolHandlerOptions) {\r\n this.T = 'MOLHANDLER';\r\n this.options = JSON.parse(JSON.stringify(defaultMolHandlerOptions));\r\n this.options = Object.assign(this.options, options ?? {});\r\n\r\n this.bondlength = JSDraw2.Editor.BONDLENGTH;\r\n this.m = new JSDraw2.Mol(this.options.showimplicithydrogens);\r\n }\r\n});\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {IndexType, ScilModuleType, IDebug} from './types/scil';\r\nimport type {IGraphics, JSDraw2ModuleType} from './types/jsdraw2';\r\n\r\nimport type {Atom} from './Atom';\r\nimport type {Bond} from './Bond';\r\nimport type {Rect} from './Rect';\r\nimport type {Plus, Point} from './Point';\r\n\r\nimport {BondTypes} from './types/jsdraw2';\r\n\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\ndeclare const scil: ScilModuleType;\r\n\r\ndeclare const DEBUG: IDebug;\r\n\r\nexport enum ChiralTypes {\r\n AND = 'and',\r\n OR = 'or',\r\n}\r\n\r\nexport type ChiralType = typeof ChiralTypes[keyof typeof ChiralTypes];\r\n\r\n\r\n/**\r\n * Mol class - define a Molecule object\r\n *
\r\n * Example:\r\n *    var molfile = \"\\n\";\r\n *    molfile += \"MolEngine02021312372D\\n\";\r\n *    molfile += \"\\n\";\r\n *    molfile += \"  2  1  0  0  0  0  0  0  0  0999 V2000\\n\";\r\n *    molfile += \"    0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\\n\";\r\n *    molfile += \"    1.3510    0.7800    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0\\n\";\r\n *    molfile += \"  1  2  1  0  0  0  0\\n\";\r\n *    molfile += \"M  END\\n\";\r\n *\r\n *    var m = new JSDraw3.Mol();\r\n *    m.setMolfile(molfile);\r\n *\r\n *    var smiles = m.getSmiles();\r\n * 
\r\n * @class scilligence.JSDraw2.Mol\r\n */\r\nexport class Mol {\r\n /**\r\n @property {array} atoms Array of Atom Objects\r\n */\r\n /**\r\n @property {array} bonds Array of Bond Objects\r\n */\r\n /**\r\n @property {array} graphics Array of Graphics (not Atom and Bond) Objects\r\n */\r\n\r\n private readonly T: string;\r\n private name: string;\r\n public atoms: Atom[];\r\n public bonds: Bond[];\r\n public graphics: IGraphics[];\r\n public stats: any;\r\n public showimplicithydrogens: boolean;\r\n private props: any;\r\n public bondlength: number;\r\n public chiral: ChiralType | boolean | null;\r\n private mw: number;\r\n private attachpoints: any[] | null;\r\n public _addRxnLabel: Function;\r\n\r\n /**\r\n * @constructor Mol\r\n */\r\n constructor(showimplicithydrogens?: boolean) {\r\n this.T = 'MOL';\r\n this.name = null;\r\n this.atoms = [];\r\n this.bonds = [];\r\n this.graphics = [];\r\n this.stats = null;\r\n this.showimplicithydrogens = showimplicithydrogens != false;\r\n this.props = null;\r\n }\r\n\r\n _addAtom(a: Atom, parent?: Mol) {\r\n this.atoms.push(a);\r\n a._parent = parent != null ? parent : this;\r\n }\r\n\r\n _addBond(a: Bond, parent?: Mol) {\r\n this.bonds.push(a);\r\n a._parent = parent != null ? parent : this;\r\n }\r\n\r\n _addGraphics(a: IGraphics, parent?: Mol) {\r\n this.graphics.push(a);\r\n a._parent = parent != null ? parent : this;\r\n }\r\n\r\n /**\r\n * Reset object IDs including atoms, bonds, and other graphics\r\n * @function resetIds\r\n * @returns null\r\n */\r\n resetIds(keepoldid?: boolean) {\r\n const idg = new JSDraw2.IDGenerator(keepoldid ? this._getMaxID() : 0);\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a: Atom = this.atoms[i];\r\n a.id = idg.next(a.id);\r\n a.atomid = i + 1;\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const a: Bond = this.bonds[i];\r\n a.id = idg.next(a.id);\r\n a.bondid = i + 1;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const a: IGraphics = this.graphics[i];\r\n a.id = idg.next(a.id);\r\n a.graphicsid = i + 1;\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.rgroup != null)\r\n a.rgroup.id = idg.next(a.rgroup.id);\r\n }\r\n }\r\n\r\n _getMaxID() {\r\n let max = 0;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.id > max)\r\n max = a.id;\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const a = this.bonds[i];\r\n if (a.id > max)\r\n max = a.id;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const a = this.graphics[i];\r\n if (a.id > max)\r\n max = a.id;\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.rgroup != null) {\r\n if (a.rgroup.id > max)\r\n max = a.rgroup.id;\r\n }\r\n }\r\n\r\n return max;\r\n }\r\n\r\n getObjectById(id) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].id == id)\r\n return this.atoms[i];\r\n }\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i].id == id)\r\n return this.bonds[i];\r\n }\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].id == id)\r\n return this.graphics[i];\r\n }\r\n }\r\n\r\n /**\r\n * Clone the Mol object\r\n * @function clone\r\n * @param {boolean} selectedOnly - indicate if cloning only selected objects\r\n * @return a new Mol object\r\n */\r\n clone(selectedOnly?: boolean) {\r\n const m = new JSDraw2.Mol();\r\n m.bondlength = this.bondlength;\r\n m.name = this.name;\r\n m.chiral = this.chiral;\r\n m.props = scil.clone(this.props);\r\n m.showimplicithydrogens = this.showimplicithydrogens;\r\n m.mw = this.mw;\r\n m.attachpoints = this.attachpoints;\r\n\r\n const map: (Atom | Bond | IGraphics)[] = [];\r\n this.resetIds(true);\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (selectedOnly && !a.selected)\r\n continue;\r\n\r\n const a1 = a.clone(selectedOnly);\r\n if (selectedOnly)\r\n a1.atommapid = null;\r\n m._addAtom(a1);\r\n map[a.id] = a1;\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (selectedOnly && !(b.selected && b.a1.selected && b.a2.selected))\r\n continue;\r\n\r\n const b1 = b.clone();\r\n m._addBond(b1);\r\n map[b.id] = b1;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (selectedOnly && !g.selected)\r\n continue;\r\n\r\n const g1 = g.clone(map);\r\n m._addGraphics(g1);\r\n map[g.id] = g1;\r\n }\r\n\r\n // fix references\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n const b1 = map[b.id] as Bond;\r\n if (b1 == null)\r\n continue;\r\n b1.a1 = map[b.a1.id] as Atom;\r\n b1.a2 = map[b.a2.id] as Atom;\r\n if (b1.a1 == null || b.a2 == null)\r\n i = i;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n const g1 = map[g.id] as IGraphics;\r\n if (g1 == null)\r\n continue;\r\n\r\n if (JSDraw2.Group.cast(g) != null) {\r\n for (let j = 0; j < this.atoms.length; ++j) {\r\n const a = this.atoms[j];\r\n if (a.group == g)\r\n (map[a.id] as Atom).group = g1;\r\n }\r\n if (g.a != null)\r\n g1.a = map[g.a.id];\r\n\r\n if (g.group != null)\r\n g1.group = map[g.group.id];\r\n } else if (JSDraw2.Bracket.cast(g) != null) {\r\n g1.atoms = this._getMappedArray(g.atoms, map);\r\n } else if (JSDraw2.Text.cast(g) != null) {\r\n g1.anchors = this._getMappedArray(g.anchors, map);\r\n } else if (JSDraw2.Shape.cast(g) != null) {\r\n g1.froms = this._getMappedArray(g.froms, map);\r\n if (g1.reject != null)\r\n g1.reject = map[g1.reject.id];\r\n }\r\n }\r\n\r\n m._setParent(m);\r\n return m;\r\n }\r\n\r\n _getMappedArray(list, map) {\r\n const ret = [];\r\n for (let i = 0; i < list.length; ++i) {\r\n const d = list[i];\r\n if (d != null && map[d.id] != null)\r\n ret.push(map[d.id]);\r\n }\r\n return ret;\r\n }\r\n\r\n guessBond(a: Atom, len: number, extra: number) {\r\n let p = a.p.clone();\r\n const bonds = this.getAllBonds(a);\r\n switch (bonds.length + (extra > 0 ? extra : 0)) {\r\n case 0:\r\n p.offset(1, 0);\r\n break;\r\n case 1:\r\n p = bonds[0].otherAtom(a).p.clone().rotateAround(a.p, 120);\r\n break;\r\n case 2: {\r\n const p1 = bonds[0].otherAtom(a).p;\r\n const p2 = bonds[1].otherAtom(a).p;\r\n const angle = a.p.angleAsOrigin(p1, p2);\r\n if (Math.abs(angle - 180) <= 1) {\r\n p = p1.clone();\r\n p.rotateAround(a.p, 90);\r\n } else {\r\n p.x = (p1.x + p2.x) / 2;\r\n p.y = (p1.y + p2.y) / 2;\r\n p.rotateAround(a.p, 180);\r\n }\r\n break;\r\n }\r\n case 3: {\r\n const p1 = bonds[0].otherAtom(a).p;\r\n const p2 = bonds[1].otherAtom(a).p;\r\n const p3 = bonds[2].otherAtom(a).p;\r\n let a1 = p.angleAsOrigin(p1, p2);\r\n let a2 = p.angleAsOrigin(p2, p3);\r\n let a3 = p.angleAsOrigin(p3, p1);\r\n if (a1 > 180)\r\n a1 = 360 - a1;\r\n if (a2 > 180)\r\n a2 = 360 - a2;\r\n if (a3 > 180)\r\n a3 = 360 - a3;\r\n if (a1 > a2 && a1 > a3)\r\n p = p3.clone();\r\n else if (a2 > a1 && a2 > a3)\r\n p = p1.clone();\r\n else\r\n p = p2.clone();\r\n p.rotateAround(a.p, 180);\r\n break;\r\n }\r\n default:\r\n return null;\r\n }\r\n p.setLength(len, a.p);\r\n return p;\r\n }\r\n\r\n getMaxRIndex(index: number | null): number | null {\r\n if (index == null)\r\n index = 0;\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.elem != 'R')\r\n continue;\r\n const r: IndexType = scil.Utils.parseIndex(a.alias);\r\n if (r == null || r.index == null)\r\n continue;\r\n\r\n if (r.index > index)\r\n index = r.index;\r\n if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j) {\r\n const r2 = a.rgroup.mols[j].getMaxRIndex(index);\r\n if (r2 > index)\r\n index = r2;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n /**\r\n * Set color to all objects\r\n * @function setColor\r\n * @param {string} color - a color, such as red, blue, #ffe, #f0f0f0\r\n * @param {bool} selectedOnly - indicate if only set the color to selected objects\r\n * @returns null\r\n */\r\n setColor(color, selectedOnly) {\r\n let n = 0;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.color != color && (!selectedOnly || a.selected)) {\r\n a.color = color;\r\n ++n;\r\n }\r\n\r\n if (a.rgroup != null) {\r\n if (a.rgroup.color != color && (!selectedOnly || a.rgroup.selected)) {\r\n a.rgroup.color = color;\r\n ++n;\r\n }\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n n += a.rgroup.mols[j].setColor(color, selectedOnly);\r\n }\r\n }\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.color != color && (!selectedOnly || b.selected)) {\r\n b.color = color;\r\n ++n;\r\n }\r\n }\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (g.color != color && (!selectedOnly || g.selected)) {\r\n g.color = color;\r\n ++n;\r\n }\r\n }\r\n\r\n return n;\r\n }\r\n\r\n /**\r\n * Remove all object\r\n * @function clear\r\n * @returns null\r\n */\r\n clear() {\r\n this.name = null;\r\n this.chiral = null;\r\n this.atoms = [];\r\n this.bonds = [];\r\n this.graphics = [];\r\n }\r\n\r\n /**\r\n * Test if the Mol object is empty - without any atom, bond, or graphics\r\n * @function isEmpty\r\n * @returns true or false\r\n */\r\n isEmpty() {\r\n return this.atoms.length == 0 && this.bonds.length == 0 && this.graphics.length == 0;\r\n }\r\n\r\n /**\r\n * Set selecting flags to all objects\r\n * @function setSelected\r\n * @param {bool} f - true or false\r\n * @returns null\r\n */\r\n setSelected(f?: boolean) {\r\n if (f == null)\r\n f = false;\r\n\r\n let n = 0;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.selected != f) {\r\n a.selected = f;\r\n ++n;\r\n }\r\n if (a.rgroup != null) {\r\n if (a.rgroup.selected != f) {\r\n a.rgroup.selected = f;\r\n ++n;\r\n }\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n n += a.rgroup.mols[j].setSelected(f);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.selected != f) {\r\n b.selected = f;\r\n ++n;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (g.selected != f) {\r\n g.selected = f;\r\n ++n;\r\n }\r\n }\r\n\r\n return n;\r\n }\r\n\r\n lassoSelect(extra, start, end, last, linewidth, tor) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.p.inTriangle(start, end, last))\r\n extra.lasso.hit(a);\r\n\r\n if (a.rgroup != null) {\r\n const g = a.rgroup;\r\n const r2 = g.rect();\r\n if (r2.center().inTriangle(start, end, last))\r\n extra.lasso.hit(g);\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].lassoSelect(extra, start, end, last, linewidth, tor);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.center().inTriangle(start, end, last))\r\n extra.lasso.hit(b);\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n const r2 = g.rect();\r\n if (r2.center().inTriangle(start, end, last))\r\n extra.lasso.hit(g);\r\n }\r\n\r\n extra.lasso.endHits(start, end);\r\n }\r\n\r\n getSelectedAtomInMol() {\r\n const list = [];\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.selected) {\r\n list.push(a);\r\n } else if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j) {\r\n const r = a.rgroup.mols[j].getSelectedAtomInMol();\r\n if (r.length > 0)\r\n return r;\r\n }\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n bracketSelect(r) {\r\n let ret: Atom[] = [];\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (r.contains(a.p))\r\n ret.push(a);\r\n }\r\n\r\n // find open connected bonds\r\n const xbonds: { b: Bond, a: Atom }[] = [];\r\n const bonds = scil.clone(this.bonds);\r\n for (let i = this.bonds.length - 1; i >= 0; --i) {\r\n const b: Bond = this.bonds[i];\r\n const f1 = scil.Utils.indexOf(ret, b.a1) >= 0;\r\n const f2 = scil.Utils.indexOf(ret, b.a2) >= 0;\r\n if (f1 != f2) {\r\n if (JSDraw2.Point.intersect(b.a1.p, b.a2.p, r.topleft(), r.bottomleft()) ||\r\n JSDraw2.Point.intersect(b.a1.p, b.a2.p, r.topright(), r.bottomright())) {\r\n xbonds.push({b: b, a: f2 ? b.a1 : b.a2});\r\n bonds.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n // only handle one or two open connected bonds\r\n if (xbonds.length == 2 || xbonds.length == 1) {\r\n const oldbonds = this.bonds;\r\n this.bonds = bonds;\r\n const frags = this.splitFragments();\r\n this.bonds = oldbonds;\r\n\r\n if (frags.length > 1) {\r\n for (let i = 0; i < frags.length; ++i) {\r\n if (scil.Utils.arrayContainsArray(frags[i].atoms, ret)) {\r\n // avoid circle\r\n if (xbonds.length == 1 && scil.Utils.indexOf(frags[i].atoms, xbonds[0].a) < 0 ||\r\n xbonds.length == 2 && scil.Utils.indexOf(frags[i].atoms, xbonds[0].a) < 0 && scil.Utils.indexOf(frags[i].atoms, xbonds[1].a) < 0) {\r\n ret = frags[i].atoms;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < ret.length; ++i)\r\n ret[i].selected = true;\r\n return ret;\r\n }\r\n\r\n selectInRect(r) {\r\n let n = 0;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (r.contains(a.p)) {\r\n a.selected = true;\r\n ++n;\r\n }\r\n\r\n if (a.rgroup != null) {\r\n const g = a.rgroup;\r\n const r2 = g.rect();\r\n if (r2 != null && r.contains(r2.center())) {\r\n g.selected = true;\r\n ++n;\r\n }\r\n\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n n += a.rgroup.mols[j].selectInRect(r);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (r.contains(b.center())) {\r\n b.selected = true;\r\n ++n;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i] as IGraphics;\r\n const r2 = g.rect();\r\n if (r2 != null && r.contains(r2.center())) {\r\n g.selected = true;\r\n ++n;\r\n }\r\n }\r\n return n;\r\n }\r\n\r\n hasAtom(a) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i] == a)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasGraphics(g) {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i] == g)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasBond(b) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i] == b)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n calcHCount(recalc?: boolean) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (recalc || a.hcount == null)\r\n this.setHCount(a);\r\n\r\n if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].calcHCount(recalc);\r\n }\r\n }\r\n }\r\n\r\n setHCount(a) {\r\n a.hcount = null;\r\n if (this.showimplicithydrogens == false || a.bio)\r\n return;\r\n\r\n let error = false;\r\n let v = null;\r\n\r\n if (a.elem != 'R' && a.alias != null && a.alias != '') {\r\n if (a.superatom == null) {\r\n if (a.elem != '#')\r\n error = true;\r\n } else if (a.superatom != null) {\r\n const bonds = this.getNeighborBonds(a, true);\r\n if (bonds.length > a.superatom.attachpoints) {\r\n if (a.superatom.atoms.length > 0)\r\n error = true;\r\n } else {\r\n for (let i = 0; i < bonds.length; ++i) {\r\n if (bonds[i].valence() != 1) {\r\n error = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (a.hs > 0) {\r\n v = a.hs - 1;\r\n } else {\r\n const e = JSDraw2.PT[a.elem];\r\n if (e != null && e.v != null && e.e != null) {\r\n const bonds = this.getNeighborBonds(a);\r\n let sum = 0;\r\n let naromatic = 0;\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const val = bonds[i].valence();\r\n if (val == null)\r\n return;\r\n if (val == 1.5) {\r\n ++naromatic;\r\n if (naromatic > 2) // two benzene-rings\r\n sum += 1;\r\n else\r\n sum += 1.5;\r\n } else {\r\n sum += bonds[i].valence();\r\n }\r\n }\r\n\r\n // the two bonds connect to O and S on c1cocc1 should be single bond\r\n // TODO: Nitrogen on c1ncnc1: one N should be NH, and one should N\r\n if (bonds.length == 2 && (a.elem == 'O' || a.elem == 'S') &&\r\n bonds[0].type == JSDraw2.BONDTYPES.DELOCALIZED && bonds[1].type == JSDraw2.BONDTYPES.DELOCALIZED) {\r\n --sum;\r\n }\r\n\r\n // charges\r\n let extra = 0;\r\n const pair_e = e.e <= 4 ? 0 : e.e % 4;\r\n const single_e = e.e <= 4 ? e.e : 4 - (e.e % 4);\r\n if (a.charge > 0) {\r\n if (pair_e > 0) {\r\n if (pair_e >= a.charge)\r\n extra = a.charge;\r\n else\r\n return;\r\n } else if (single_e > 0) {\r\n if (single_e >= a.charge)\r\n extra -= a.charge;\r\n else\r\n return;\r\n }\r\n } else if (a.charge < 0) {\r\n if (single_e > 0) {\r\n if (single_e > -a.charge)\r\n extra = a.elem == 'B' || a.elem == 'P' || a.elem == 'Si' ? -a.charge : a.charge; // I#8702\r\n else\r\n return;\r\n }\r\n }\r\n\r\n // radical\r\n if (a.radical == 1 || a.radical == 3)\r\n sum += 2;\r\n else if (a.radical == 2)\r\n ++sum;\r\n\r\n // attach points\r\n if (a.attachpoints != null) {\r\n for (let i = 0; i < a.attachpoints.length; ++i) {\r\n if (a.attachpoints[i] != 99)\r\n ++sum;\r\n }\r\n }\r\n\r\n sum = Math.ceil(sum);\r\n error = true;\r\n for (let i = 0; i < e.v.length; ++i) {\r\n if (sum <= e.v[i] + extra) {\r\n v = e.v[i] + extra - sum;\r\n error = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n a.hasError = error;\r\n return a.hcount = v;\r\n }\r\n\r\n hasError() {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.hasError)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasGenericAtom() {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.elem == 'R' && a.bio == null || a.superatom != null && a.superatom.atoms.length == 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Find a bond\r\n * @function findBond\r\n * @param {Atom} a1 - the first atom\r\n * @param {Atom} a2 - the second atom\r\n * @returns the bond\r\n */\r\n findBond(a1, a2) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.a1 == a1 && b.a2 == a2 || b.a1 == a2 && b.a2 == a1)\r\n return b;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Move all objects to the center\r\n * @function moveCenter\r\n * @param {number} width - the width of the view\r\n * @param {number} height - the height of the view\r\n * @returns null\r\n */\r\n moveCenter(width, height) {\r\n if (this.isEmpty())\r\n return;\r\n\r\n const center = this.center();\r\n this.offset(width > 0 ? (width / 2 - center.x) : 0,\r\n height > 0 ? (height / 2 - center.y) : 0);\r\n }\r\n\r\n /**\r\n * Clean up the reaction, and make it looks nicer\r\n * @function cleanupRxn\r\n * @returns null\r\n */\r\n cleanupRxn(defaultbondlength) {\r\n const rxn = this.parseRxn(true);\r\n if (rxn == null || rxn.reactants.length == 1 && rxn.products.length == 0 && rxn.arrow == null)\r\n return false;\r\n\r\n let bondlength = this.medBondLength();\r\n if (!(bondlength > 0))\r\n bondlength = defaultbondlength > 0 ? defaultbondlength : JSDraw2.Editor.BONDLENGTH;\r\n return this._layoutRxn(rxn, bondlength);\r\n }\r\n\r\n _layoutRxn(rxn, bondlength) {\r\n const pluses: Plus[] = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].T == 'PLUS')\r\n pluses.push(this.graphics[i] as unknown as Plus);\r\n }\r\n\r\n let x = null;\r\n let y = null;\r\n for (let i = 0; i < rxn.reactants.length; ++i) {\r\n const r = rxn.reactants[i].rect();\r\n if (r.width == 0)\r\n r.inflate(bondlength, 0);\r\n if (r.height == 0)\r\n r.inflate(0, bondlength);\r\n\r\n if (x == null) {\r\n x = r.right();\r\n y = r.center().y;\r\n } else {\r\n x += bondlength;\r\n if (pluses.length > 0) {\r\n const plus = pluses.pop();\r\n plus.p = new JSDraw2.Point(x, y);\r\n } else {\r\n const plus = new JSDraw2.Plus(new JSDraw2.Point(x, y));\r\n this._addGraphics(plus);\r\n }\r\n\r\n x += bondlength;\r\n rxn.reactants[i].offset(x - r.left, y - r.center().y);\r\n x += r.width;\r\n }\r\n }\r\n\r\n const arrow = rxn.arrow;\r\n if (arrow != null) {\r\n const ang = arrow.p2.angleTo(arrow.p1);\r\n arrow.p2.rotateAround(arrow.p1, -ang);\r\n const r = arrow.rect();\r\n if (x == null) {\r\n x = r.right();\r\n y = r.center().y;\r\n } else {\r\n x += bondlength;\r\n arrow.offset(x - r.left, y - r.center().y);\r\n x += r.width;\r\n }\r\n\r\n // adjust arrow width\r\n let width = 0;\r\n if (rxn.above != null) {\r\n for (let i = 0; i < rxn.above.length; ++i) {\r\n const w = rxn.above[i]._rect.width;\r\n if (w > width)\r\n width = w;\r\n }\r\n }\r\n if (rxn.below != null) {\r\n for (let i = 0; i < rxn.below.length; ++i) {\r\n const w = rxn.below[i]._rect.width;\r\n if (w > width)\r\n width = w;\r\n }\r\n }\r\n if (width > 0 && width + bondlength > r.width) {\r\n const d = width + bondlength - r.width;\r\n arrow.p2.offset(d, 0);\r\n x += d;\r\n }\r\n\r\n // layout reaction conditions above/below arrow\r\n const d = bondlength / 10;\r\n const center = arrow.rect().center();\r\n\r\n if (rxn.above != null) {\r\n let y1 = center.y - d * 2;\r\n for (let i = rxn.above.length - 1; i >= 0; --i) {\r\n const t = rxn.above[i];\r\n t.offset(center.x - t._rect.center().x, y1 - t._rect.bottom());\r\n y1 = t._rect.top - d;\r\n }\r\n }\r\n\r\n if (rxn.below != null) {\r\n let y2 = center.y + d * 2;\r\n for (let i = 0; i < rxn.below.length; ++i) {\r\n const t = rxn.below[i];\r\n t.offset(center.x - t._rect.center().x, y2 - t._rect.top);\r\n y2 = t._rect.bottom() + d;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < rxn.products.length; ++i) {\r\n const r = rxn.products[i].rect();\r\n if (r.width == 0)\r\n r.inflate(bondlength, 0);\r\n if (r.height == 0)\r\n r.inflate(0, bondlength);\r\n\r\n if (x == null) {\r\n x = r.right();\r\n y = r.center().y;\r\n } else {\r\n if (i > 0) {\r\n x += bondlength;\r\n if (pluses.length > 0) {\r\n const plus = pluses.pop();\r\n plus.p = new JSDraw2.Point(x, y);\r\n } else {\r\n const plus = new JSDraw2.Plus(new JSDraw2.Point(x, y));\r\n this._addGraphics(plus);\r\n }\r\n }\r\n\r\n x += bondlength;\r\n rxn.products[i].offset(x - r.left, y - r.center().y);\r\n x += r.width;\r\n }\r\n }\r\n\r\n for (let i = 0; i < pluses.length; ++i)\r\n this.delObject(pluses[i]);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Return the center coorindate of all objects\r\n * @function center\r\n * @returns the center as a Point object\r\n */\r\n center() {\r\n return this.rect().center();\r\n }\r\n\r\n /**\r\n * Return the Rect of a Group\r\n * @function getGroupRect\r\n * @param {Group} g - the input group\r\n * @returns a Rect object\r\n */\r\n getGroupRect(g, bondlength) {\r\n let r = null;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.group != g || a.hidden)\r\n continue;\r\n\r\n const p = a.p;\r\n if (r == null)\r\n r = new JSDraw2.Rect(p.x, p.y, 0, 0);\r\n else\r\n r.unionPoint(p);\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g2 = this.graphics[i];\r\n if (g2.group != g)\r\n continue;\r\n\r\n const rect = JSDraw2.Group.cast(g2) != null ? this.getGroupRect(g2, bondlength) : g2.rect();\r\n if (r == null)\r\n r = rect.clone();\r\n else\r\n r.union(rect);\r\n }\r\n\r\n if (r != null && g.gap > 0)\r\n r.inflate(g.gap * bondlength / 15.0, g.gap * bondlength / 15.0);\r\n return r;\r\n }\r\n\r\n /**\r\n * Get the Rect of selected atoms\r\n * @function getSelectedRect\r\n * @returns a Rect object\r\n */\r\n getSelectedRect() {\r\n let r = null;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (!this.atoms[i].selected)\r\n continue;\r\n\r\n const p = this.atoms[i].p;\r\n if (r == null)\r\n r = new JSDraw2.Rect(p.x, p.y, 0, 0);\r\n else\r\n r.unionPoint(p);\r\n }\r\n return r;\r\n }\r\n\r\n /**\r\n * Return the Rect of all object\r\n * @function rect\r\n * @returns a Rect object\r\n */\r\n rect(withoutRgroups?: boolean) {\r\n if (this.atoms.length == 0) {\r\n if (this.graphics.length == 0)\r\n return null;\r\n const r: Rect = this.graphics[0].rect();\r\n for (let i = 1; i < this.graphics.length; ++i)\r\n r.union(this.graphics[i].rect());\r\n return r;\r\n }\r\n\r\n let x1 = null;\r\n let y1 = null;\r\n let x2 = null;\r\n let y2 = null;\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.hidden)\r\n continue;\r\n\r\n const p = a.p;\r\n if (x1 == null) {\r\n x1 = x2 = p.x;\r\n y1 = y2 = p.y;\r\n continue;\r\n }\r\n\r\n if (p.x < x1)\r\n x1 = p.x;\r\n else if (p.x > x2)\r\n x2 = p.x;\r\n\r\n if (p.y < y1)\r\n y1 = p.y;\r\n else if (p.y > y2)\r\n y2 = p.y;\r\n }\r\n\r\n const r: Rect = new JSDraw2.Rect(x1, y1, x2 - x1, y2 - y1);\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (JSDraw2.Group.cast(g) != null)\r\n continue;\r\n r.union(g.rect());\r\n }\r\n\r\n if (!withoutRgroups) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.rgroup == null)\r\n continue;\r\n r.union(a.rgroup.rect());\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n r.union(a.rgroup.mols[j].rect());\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n /**\r\n * Move all objects\r\n * @function offset\r\n * @param {number} dx - x offset\r\n * @param {number} dy - y offset\r\n * @param {bool} selectedOnly - indicated if moving only selected objects\r\n * @returns null\r\n */\r\n offset(dx, dy, selectedOnly?: boolean) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (selectedOnly != true || a.selected)\r\n a.p.offset(dx, dy);\r\n if (a.rgroup != null) {\r\n if (selectedOnly != true || a.rgroup.selected)\r\n a.rgroup.offset(dx, dy);\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].offset(dx, dy, selectedOnly);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (selectedOnly != true || g.selected) {\r\n this.graphics[i].offset(dx, dy);\r\n } else {\r\n if (selectedOnly && !g.selected) {\r\n const t = JSDraw2.Text.cast(g);\r\n if (t != null && t.anchors.length > 0) {\r\n let all = true;\r\n for (let j = 0; j < t.anchors.length; ++j) {\r\n if (!t.anchors[j].selected) {\r\n all = false;\r\n break;\r\n }\r\n }\r\n if (all) {\r\n t.selected = true;\r\n t.offset(dx, dy);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Rotate all objects around a point\r\n * @function rotate\r\n * @param {Point} origin - the position to be rotated around\r\n * @param {number} deg - degrees to be rotated\r\n * @returns null\r\n */\r\n rotate(origin, deg) {\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].p.rotateAround(origin, deg);\r\n }\r\n\r\n /**\r\n * Delete an object\r\n * @function delObject\r\n * @param {object} obj - Atom, bond, or graphics to be removed\r\n * @returns null\r\n */\r\n delObject(obj) {\r\n if (obj == null)\r\n return;\r\n\r\n const a = JSDraw2.Atom.cast(obj);\r\n if (a != null)\r\n return this.delAtom(a);\r\n\r\n const b = JSDraw2.Bond.cast(obj);\r\n if (b != null)\r\n return this.delBond(b);\r\n\r\n return this.delGraphics(obj);\r\n }\r\n\r\n delGraphics(obj) {\r\n const group = JSDraw2.Group.cast(obj);\r\n if (group != null) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].group == group)\r\n this.atoms[i].group = null;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].group == group)\r\n this.graphics[i].group = null;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i] == obj) {\r\n this.graphics.splice(i, 1);\r\n this.objectRemoved(obj);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n delAtom(a: Atom, checkBonds?: boolean) {\r\n const atoms = [];\r\n atoms.push(a);\r\n\r\n if (checkBonds != false) {\r\n for (let i = this.bonds.length - 1; i >= 0; --i) {\r\n const b = this.bonds[i];\r\n if (b.a1 == a || b.a2 == a) {\r\n this.bonds.splice(i, 1);\r\n this.objectRemoved(b);\r\n atoms.push(b.otherAtom(a));\r\n if (a.atommapid != null)\r\n this.clearAtomMap(a.atommapid);\r\n }\r\n }\r\n }\r\n\r\n let n = 0;\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a1 = atoms[i];\r\n if (a == a1 || !a1.bio) {\r\n if (this.delLoneAtom(atoms[i]))\r\n ++n;\r\n }\r\n }\r\n return n > 0;\r\n }\r\n\r\n delBond(b, delLoneAtom?: boolean) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i] == b) {\r\n this.bonds.splice(i, 1);\r\n if (delLoneAtom != false) {\r\n if (!b.a1.bio)\r\n this.delLoneAtom(b.a1);\r\n if (!b.a2.bio)\r\n this.delLoneAtom(b.a2);\r\n }\r\n this.objectRemoved(b);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n delLoneAtom(a) {\r\n if (!this.isLoneAtom(a)) {\r\n this.setHCount(a);\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i] == a) {\r\n this.atoms.splice(i, 1);\r\n if (a.atommapid != null)\r\n this.clearAtomMap(a.atommapid);\r\n this.objectRemoved(a);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n objectRemoved(obj) {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = this.graphics[i];\r\n if (g.removeObject != null)\r\n g.removeObject(obj);\r\n }\r\n }\r\n\r\n hasSelected(): boolean {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (this.atoms[i].selected)\r\n return true;\r\n if (a.rgroup != null) {\r\n if (a.rgroup.selected) {\r\n return true;\r\n } else {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j) {\r\n if (a.rgroup.mols[j].hasSelected())\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i].selected)\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].selected)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n delSelected() {\r\n let n = 0;\r\n\r\n const atoms = scil.clone(this.atoms);\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a = atoms[i];\r\n if (a.selected) {\r\n this.delAtom(atoms[i]);\r\n ++n;\r\n }\r\n\r\n if (a.rgroup != null) {\r\n if (a.rgroup.selected) {\r\n a.rgroup = null;\r\n ++n;\r\n } else {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n n += a.rgroup.mols[j].delSelected();\r\n }\r\n }\r\n }\r\n\r\n const bonds = scil.clone(this.bonds);\r\n for (let i = 0; i < bonds.length; ++i) {\r\n if (bonds[i].selected) {\r\n this.delBond(bonds[i]);\r\n ++n;\r\n }\r\n }\r\n\r\n const graphics = scil.clone(this.graphics);\r\n for (let i = 0; i < graphics.length; ++i) {\r\n if (graphics[i].selected) {\r\n this.delObject(graphics[i]);\r\n ++n;\r\n }\r\n }\r\n\r\n return n;\r\n }\r\n\r\n setBondLength(d) {\r\n const s = d / this.medBondLength();\r\n if (isNaN(s))\r\n return false;\r\n this.scale(s);\r\n }\r\n\r\n getSketchType() {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].bio != null)\r\n return 'biologics';\r\n }\r\n return this.isRxn() ? 'reaction' : 'molecule';\r\n }\r\n\r\n /**\r\n * Merge another Molecule\r\n * @function mergeMol\r\n * @param {Mol} m - the Molecule to be merged\r\n */\r\n mergeMol(m, _parent?: any, group?: any) {\r\n for (let i = 0; i < m.atoms.length; ++i) {\r\n this.addAtom(m.atoms[i]);\r\n if (group != null)\r\n m.atoms[i].group = group;\r\n }\r\n\r\n for (let i = 0; i < m.bonds.length; ++i) {\r\n const b = m.bonds[i];\r\n if (this.findBond(b.a1, b.a2) == null)\r\n this.addBond(b, false);\r\n }\r\n\r\n for (let i = 0; i < m.graphics.length; ++i)\r\n this.addGraphics(m.graphics[i]);\r\n\r\n this._setParent(this);\r\n }\r\n\r\n replaceAtom(old, newa) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i] == old) {\r\n this.atoms[i] = newa;\r\n break;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.a1 == old)\r\n b.a1 = newa;\r\n if (b.a2 == old)\r\n b.a2 = newa;\r\n }\r\n\r\n this.setHCount(newa);\r\n }\r\n\r\n replaceBond(old, newb) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i] == old) {\r\n this.bonds[i] = newb;\r\n break;\r\n }\r\n }\r\n\r\n this.replaceAtom(old.a1, newb.a1);\r\n this.replaceAtom(old.a2, newb.a2);\r\n }\r\n\r\n /**\r\n * Add a graphics\r\n * @function addGraphics\r\n * @param {Graphics} g - the graphics to be added\r\n * @returns the Graphics added\r\n */\r\n addGraphics(g) {\r\n if (this.hasGraphics(g))\r\n return null;\r\n\r\n this._addGraphics(g);\r\n return g;\r\n }\r\n\r\n /**\r\n * Add an Atom\r\n * @function addAtom\r\n * @param {Atom} a - the atom to be added\r\n * @returns the Atom added\r\n */\r\n addAtom(a) {\r\n if (this.hasAtom(a))\r\n return null;\r\n\r\n this._addAtom(a);\r\n return a;\r\n }\r\n\r\n /**\r\n * Add a Bond\r\n * @function addBond\r\n * @param {Bond} b - the bond to be added\r\n * @param {bool} resetcharge - indicate if reset atoms' charges of bonded atoms\r\n * @returns the Bond added\r\n */\r\n addBond(b: Bond, resetcharge?: boolean, add2rgroup?: boolean) {\r\n if (this.hasBond(b))\r\n return null;\r\n\r\n if (b.a1.mol != b.a2.mol) {\r\n if (add2rgroup) {\r\n this._addBond2RGroupMol(b);\r\n } else {\r\n scil.Utils.alert('Cannot create this bond');\r\n return null;\r\n }\r\n }\r\n\r\n this._addBond(b);\r\n if (resetcharge != false && b.type != JSDraw2.BONDTYPES.DUMMY)\r\n b.a1.charge = b.a2.charge = 0;\r\n\r\n if (b.a1.alias == 'Me')\r\n b.a1.alias = null;\r\n if (b.a2.alias == 'Me')\r\n b.a2.alias = null;\r\n\r\n this.setHCount(b.a1);\r\n this.setHCount(b.a2);\r\n return b;\r\n }\r\n\r\n _addBond2RGroupMol(b) {\r\n const m = b.a1._parent || b.a2._parent;\r\n if (m == null || b.a1._parent == b._parent && b.a2._parent == b.a1._parent)\r\n return;\r\n\r\n if (b.a1._parent == null) {\r\n m.addAtom(b.a1);\r\n b.a1._parent = m;\r\n }\r\n\r\n if (b.a2._parent == null) {\r\n m.addAtom(b.a2);\r\n b.a2._parent = m;\r\n }\r\n\r\n m.addBond(b);\r\n b._parent = m;\r\n }\r\n\r\n /**\r\n * Set atom alias\r\n * @function setAtomAlias\r\n * @param {Atom} a - the target atom\r\n * @param {string} alias - alias name\r\n * @returns true of false\r\n */\r\n setAtomAlias(a, alias, len?: number) {\r\n if (alias == null || alias == '')\r\n return this.setAtomType(a, alias);\r\n\r\n if (a.alias == alias)\r\n return false;\r\n\r\n let elem = '*';\r\n let m = JSDraw2.SuperAtoms.get(alias);\r\n if (m == null) {\r\n const alias2 = alias.replace(/^[\\+|\\-]/, '').replace(/[\\+|\\-]$/, '');\r\n if (JSDraw2.PT[alias2] != null || (/^R[0-9]+$/).test(alias))\r\n return this.setAtomType(a, alias);\r\n\r\n const s = JSDraw2.SuperAtoms.guessOne(alias);\r\n if (s != null) {\r\n alias = s;\r\n m = JSDraw2.SuperAtoms.get(alias);\r\n } else {\r\n // leading O or S\r\n const list = this.getNeighborBonds(a);\r\n const orphan = list == null || list.length == 0 || list.length == 1 && list[0].type == JSDraw2.BONDTYPES.DUMMY;\r\n m = JSDraw2.FormulaParser.parse(alias, orphan, list.length);\r\n if (m != null && m.atoms.length == 0)\r\n return this.setAtomType(a, m.atoms[0].elem);\r\n\r\n if (orphan) {\r\n const salt = JSDraw2.FormulaParser.parseSalt(alias);\r\n if (salt != null)\r\n elem = '#';\r\n }\r\n }\r\n }\r\n\r\n a.isotope = null;\r\n a.query = null;\r\n a.hcount = null;\r\n a.radical = null;\r\n a.charge = 0;\r\n a.alias = alias;\r\n if (m != null) {\r\n const attach = JSDraw2.SuperAtoms._getFirstAttachAtom(m);\r\n if (attach != null)\r\n JSDraw2.SuperAtoms._alignMol(a._parent, a, m, attach, len != null ? len : this.medBondLength(1.56));\r\n a.superatom = m;\r\n a.rgroup = null;\r\n a.elem = elem;\r\n } else {\r\n if (!scil.Utils.isNullOrEmpty(alias))\r\n a.elem = elem;\r\n\r\n if (a.elem == 'R')\r\n a.updateRGroup();\r\n else\r\n a.rgroup == null;\r\n a.superatom = null;\r\n }\r\n this.setHCount(a);\r\n return true;\r\n }\r\n\r\n setAttachPoint(a, apo) {\r\n if (apo > 0 && !(a.attachpoints.length == 1 && a.attachpoints[0] == apo)) {\r\n a.attachpoints = [apo];\r\n a._parent.setHCount(a);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Set atom type\r\n * @function setAtomType\r\n * @param {Atom} a - the target atom\r\n * @param {string} elem - element symbol of atom\r\n * @returns true of false\r\n */\r\n setAtomType(a: Atom, elem: string, setCharge?: boolean) {\r\n if (elem == 'antibody' || elem == 'protein' || elem == 'gene' || elem == 'dna' || elem == 'rna') {\r\n if (a.biotype() == JSDraw2.BIO.ANTIBODY || a.biotype() == JSDraw2.BIO.PROTEIN || a.biotype() == JSDraw2.BIO.GENE || a.biotype() == JSDraw2.BIO.DNA || a.biotype() == JSDraw2.BIO.RNA)\r\n return false;\r\n switch (elem) {\r\n case 'antibody':\r\n a.bio = {type: JSDraw2.BIO.ANTIBODY as TBio};\r\n break;\r\n case 'protein':\r\n a.bio = {type: JSDraw2.BIO.PROTEIN as TBio};\r\n break;\r\n case 'gene':\r\n a.bio = {type: JSDraw2.BIO.GENE as TBio};\r\n break;\r\n case 'dna':\r\n a.bio = {type: JSDraw2.BIO.DNA as TBio};\r\n break;\r\n case 'rna':\r\n a.bio = {type: JSDraw2.BIO.RNA as TBio};\r\n break;\r\n }\r\n a.elem = 'X';\r\n a.isotope = null;\r\n a.query = null;\r\n a.hcount = null;\r\n a.radical = null;\r\n a.charge = 0;\r\n return true;\r\n }\r\n\r\n let charge = null;\r\n if (elem.length > 1 && /[\\+|\\-][0-9]?$/.test(elem)) {\r\n const s = elem.replace(/[\\+|\\-][0-9]?$/, '');\r\n const cs = elem.substr(s.length);\r\n elem = s;\r\n if (cs == '+')\r\n charge = 1;\r\n else if (cs == '-')\r\n charge = -1;\r\n else\r\n charge = parseInt(cs);\r\n }\r\n\r\n if (a.elem == elem && (elem == 'H' && a.isotope == null) || a.bio)\r\n return false;\r\n let alias = null;\r\n let e = elem == 'D' || elem == 'T' ? 'H' : elem;\r\n if ((/^R[0-9]+$/).test(elem)) {\r\n e = 'R';\r\n alias = elem;\r\n }\r\n if (JSDraw2.PT[e] == null)\r\n return false;\r\n\r\n const oldelem = a.elem;\r\n a.elem = e;\r\n if (e != 'R')\r\n a.rgroup = null;\r\n a.alias = alias;\r\n a.superatom = null;\r\n if (elem == 'D')\r\n a.isotope = 2;\r\n else if (elem == 'T')\r\n a.isotope = 3;\r\n else\r\n a.isotope = null;\r\n a.query = null;\r\n\r\n if (charge > 0 || charge < 0)\r\n a.charge = charge;\r\n else if (setCharge)\r\n a.charge = 0;\r\n\r\n if (oldelem == '@') {\r\n a.alias = null;\r\n a.bio = null;\r\n const list = this.getAllBonds(a);\r\n for (let i = 0; i < list.length; ++i) {\r\n const b = list[i];\r\n if (b.type == JSDraw2.BONDTYPES.DUMMY)\r\n scil.Utils.removeArrayItem(this.bonds, b);\r\n }\r\n }\r\n\r\n a._parent.setHCount(a);\r\n if (e == 'R')\r\n a.updateRGroup();\r\n return true;\r\n }\r\n\r\n /**\r\n * Set atom charges\r\n * @function setAtomCharge\r\n * @param {Atom} a - the target atom\r\n * @param {number} charge - charges\r\n * @returns true of false\r\n */\r\n setAtomCharge(a, charge) {\r\n if (charge == null || isNaN(charge) || a.bio)\r\n return false;\r\n charge = Math.round(charge);\r\n if (a.charge == charge)\r\n return false;\r\n a.charge = charge;\r\n a._parent.setHCount(a);\r\n return true;\r\n }\r\n\r\n /**\r\n * Set bond type\r\n * @function setBondType\r\n * @param {Bond} b - the target bond\r\n * @param {BONDTYPES} type - predefined bond type\r\n * @returns true of false\r\n */\r\n setBondType(b, type) {\r\n if (b.a1.biotype() == JSDraw2.BIO.AA && b.a2.biotype() == JSDraw2.BIO.AA) {\r\n if (b.type == JSDraw2.BONDTYPES.DISULFIDE && type == JSDraw2.BONDTYPES.PEPTIDE || b.type == JSDraw2.BONDTYPES.PEPTIDE && type == JSDraw2.BONDTYPES.DISULFIDE) {\r\n b.type = type;\r\n return true;\r\n }\r\n } else {\r\n if (type < JSDraw2.BONDTYPES.UNKNOWN && type > JSDraw2.BONDTYPES.DOUBLEORAROMATIC || b.a1.bio || b.a2.bio)\r\n return false;\r\n b.type = type;\r\n b._parent.setHCount(b.a1);\r\n b._parent.setHCount(b.a2);\r\n return true;\r\n }\r\n }\r\n\r\n isLoneAtom(a) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.a1 == a || b.a2 == a)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n medBondLength(defaultValue?: any): number {\r\n if (this.bonds.length == 0)\r\n return defaultValue;\r\n\r\n let step = Math.floor(this.bonds.length / 10);\r\n if (step == 0)\r\n step = 1;\r\n\r\n const list = [];\r\n for (let i = 0; i < this.bonds.length; i += step) {\r\n const b = this.bonds[i];\r\n list.push(b.a1.p.distTo(b.a2.p));\r\n }\r\n if (list.length == 0)\r\n return 1.5;\r\n if (list.length == 1)\r\n return list[0] <= 0 ? 1.5 : list[0];\r\n\r\n list.sort();\r\n const d = list[Math.round(list.length / 2)];\r\n return d <= 0 ? 1.5 : d;\r\n }\r\n\r\n _hasDoubleBonds(a) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.type == JSDraw2.BONDTYPES.DOUBLE && (b.a1 == a || b.a2 == a))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getNeighborAtoms(a: Atom, oa?: Atom, excludeDummyBond?: boolean): Atom[] {\r\n const list = [];\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (excludeDummyBond && b.type == JSDraw2.BONDTYPES.DUMMY)\r\n continue;\r\n\r\n if (b.a1 == a) {\r\n if (b.a2 != oa)\r\n list.push(b.a2);\r\n } else if (b.a2 == a) {\r\n if (b.a1 != oa)\r\n list.push(b.a1);\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n getNeighborBonds(a, excludeDummyBonds?: boolean) {\r\n const list = [];\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if ((b.a1 == a || b.a2 == a) &&\r\n (!excludeDummyBonds || b.type != JSDraw2.BONDTYPES.DUMMY && b.type != JSDraw2.BONDTYPES.UNKNOWN))\r\n list.push(b);\r\n }\r\n return list;\r\n }\r\n\r\n /**\r\n * Remove all hydrogen atoms\r\n * @function removeHydrogens\r\n * @returns the count of removed atoms\r\n */\r\n removeHydrogens() {\r\n const hs = [];\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.elem == 'H' && a.isotope == null)\r\n hs.push(i);\r\n }\r\n\r\n for (let k = hs.length - 1; k >= 0; --k) {\r\n const a = this.atoms[hs[k]];\r\n for (let i = this.bonds.length - 1; i >= 0; --i) {\r\n const b = this.bonds[i];\r\n if (b.a1 == a || b.a2 == a)\r\n this.bonds.splice(i, 1);\r\n }\r\n\r\n this.atoms.splice(hs[k], 1);\r\n }\r\n\r\n return hs.length;\r\n }\r\n\r\n draw(surface, linewidth, fontsize, textonly, dimension, highlighterrors, showcarbon?: boolean, simpledraw?: boolean) {\r\n if (linewidth == null)\r\n linewidth = 2;\r\n if (fontsize == null)\r\n fontsize = 14;\r\n\r\n if (textonly) {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].T == 'TEXT')\r\n this.graphics[i].draw(surface, linewidth, this, fontsize);\r\n }\r\n } else {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n a._outside = a.p.x < -JSDraw2.speedup.gap || a.p.x > dimension.x + JSDraw2.speedup.gap || a.p.y < -JSDraw2.speedup.gap || a.p.y > dimension.y + JSDraw2.speedup.gap;\r\n a._haslabel = a.hasLabel(this, showcarbon);\r\n }\r\n\r\n // draw bonds connect to hidden group atom\r\n const bonds = [];\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.a1._outside && b.a2._outside && !b.a1.hidden && !b.a2.hidden)\r\n continue;\r\n\r\n if (!simpledraw || !b.selected) {\r\n if (this.moveHiddenAtomToGroupBorder(b.a1, b.a2) || this.moveHiddenAtomToGroupBorder(b.a2, b.a1))\r\n b.draw(surface, linewidth, this, fontsize, simpledraw);\r\n else\r\n bonds.push(b);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i)\r\n this.graphics[i].draw(surface, linewidth, this, fontsize);\r\n\r\n for (let i = 0; i < bonds.length; ++i)\r\n bonds[i].draw(surface, linewidth, this, fontsize, simpledraw);\r\n\r\n const tor = linewidth * 2;\r\n if (simpledraw) {\r\n // I#9069\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a._outside || !a.hasErr())\r\n continue;\r\n\r\n const w = 8;\r\n const r = new JSDraw2.Rect(a.p.x - w / 2, a.p.y - w / 2, w, w);\r\n JSDraw2.Drawer.drawRect(surface, r, 'red', linewidth).setFill('red');\r\n }\r\n } else {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a._outside)\r\n continue;\r\n\r\n // check overlapping\r\n for (let k = i + 1; k < this.atoms.length; ++k) {\r\n const a1 = this.atoms[k];\r\n if (Math.abs(a.p.x - a1.p.x) < tor && Math.abs(a.p.y - a1.p.y) < tor) {\r\n const r = new JSDraw2.Rect(a.p.x - fontsize / 2, a.p.y - fontsize / 2, fontsize, fontsize);\r\n JSDraw2.Drawer.drawRect(surface, r, 'red', linewidth);\r\n break;\r\n }\r\n }\r\n\r\n a.draw(surface, linewidth, this, fontsize, highlighterrors);\r\n if (a.rgroup != null) {\r\n if (a.rgroup.text != null)\r\n a.rgroup.draw(surface, linewidth, this, fontsize);\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].draw(surface, linewidth, fontsize, textonly, dimension, highlighterrors);\r\n }\r\n }\r\n }\r\n\r\n this.drawSelect(new JSDraw2.Lasso(surface, linewidth * (simpledraw ? 5 : 1), false), simpledraw);\r\n\r\n let s = null;\r\n if (this.chiral == 'and')\r\n s = '[AND Enantiomer]';\r\n else if (this.chiral == 'or')\r\n s = '[OR Enantiomer]';\r\n else if (this.chiral == true)\r\n s = 'Chiral';\r\n\r\n if (s != null)\r\n JSDraw2.Drawer.drawText(surface, new JSDraw2.Point(dimension.x - fontsize * 4, fontsize * 1), s, 'gray', fontsize, 'right');\r\n }\r\n }\r\n\r\n moveHiddenAtomToGroupBorder(a, a2) {\r\n if (!a.hidden)\r\n return false;\r\n\r\n const g = this._findGroup(a);\r\n if (g == null)\r\n return false;\r\n\r\n const r = g.rect();\r\n if (!a2.hidden) {\r\n // group to atom: use the closest border\r\n const p = a2.p;\r\n if (p.x < r.left)\r\n a.p.x = r.left;\r\n else if (p.x > r.right())\r\n a.p.x = r.right();\r\n else\r\n a.p.x = p.x;\r\n\r\n if (p.y < r.top)\r\n a.p.y = r.top;\r\n else if (p.y > r.bottom())\r\n a.p.y = r.bottom();\r\n else\r\n a.p.y = p.y;\r\n\r\n a._outside = false;\r\n } else {\r\n // group to group\r\n const g2 = this._findGroup(a2);\r\n if (g2 == null)\r\n return false;\r\n\r\n const r2 = g2.rect();\r\n if (r.left >= r2.left && r.left <= r2.right() || r.right() >= r2.left && r.right() <= r2.right() || r2.left >= r.left && r2.left <= r.right() || r2.right() >= r.left && r2.right() <= r.right()) {\r\n // vertically overlapped: vertical center\r\n const x = (Math.max(r.left, r2.left) + Math.min(r.right(), r2.right())) / 2;\r\n a.p.x = a2.p.x = x;\r\n a.p.y = r.bottom() < r2.top ? r.bottom() : r.top;\r\n a2.p.y = r2.top > r.bottom() ? r2.top : r2.bottom();\r\n } else if (r.top >= r2.top && r.top <= r2.bottom() || r.bottom() >= r2.top && r.bottom() <= r2.bottom() || r2.top >= r.top && r2.top <= r.bottom() || r2.bottom() >= r.top && r2.bottom() <= r.bottom()) {\r\n // horizontally overlapped: horizontal center\r\n const y = (Math.max(r.top, r2.top) + Math.min(r.bottom(), r2.bottom())) / 2;\r\n a.p.y = a2.p.y = y;\r\n a.p.x = r.right() < r2.left ? r.right() : r.left;\r\n a2.p.x = r2.left > r.right() ? r2.left : r2.right();\r\n } else {\r\n // then corner to corner\r\n if (r.right() < r2.left) {\r\n if (r.bottom() < r2.top) {\r\n a.p = r.bottomright();\r\n a2.p = r2.topleft();\r\n } else {\r\n a.p = r.topright();\r\n a2.p = r2.bottomleft();\r\n }\r\n } else {\r\n if (r.bottom() < r2.top) {\r\n a.p = r.bottomleft();\r\n a2.p = r2.topright();\r\n } else {\r\n a.p = r.topleft();\r\n a2.p = r2.bottomright();\r\n }\r\n }\r\n }\r\n\r\n a._outside = false;\r\n a2._outside = false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n _findGroup(a) {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const g = JSDraw2.Group.cast(this.graphics[i]);\r\n if (g != null && g.a == a)\r\n return g;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n drawSelect(lasso, simpledraw) {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].selected)\r\n this.graphics[i].drawSelect(lasso);\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].__drawselect = false;\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.selected) {\r\n b.drawSelect(lasso);\r\n if (simpledraw) {\r\n b.a1.__drawselect = true;\r\n b.a2.__drawselect = true;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.selected && !a.__drawselect)\r\n a.drawSelect(lasso);\r\n\r\n if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].drawSelect(lasso, simpledraw);\r\n }\r\n }\r\n }\r\n\r\n setZOrder(g, z) {\r\n const i = scil.Utils.indexOf(this.graphics, g);\r\n if (i < 0 || this.graphics.length == 1)\r\n return false;\r\n\r\n if (z == 0) {\r\n if (z != i) {\r\n this.graphics.splice(i, 1);\r\n this.graphics.splice(0, 0, g);\r\n }\r\n } else if (z == -1) {\r\n if (i != this.graphics.length - 1) {\r\n this.graphics.splice(i, 1);\r\n this.graphics.push(g);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n calcHDir(a, tor, drawalias) {\r\n const atoms = this.getNeighborAtoms(a);\r\n if (atoms.length == 0 && a.charge == 0)\r\n return drawalias ? JSDraw2.ALIGN.RIGHT : JSDraw2.ALIGN.LEFT;\r\n\r\n let r = false;\r\n let b = false;\r\n let l = false;\r\n let t = false;\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const oa = atoms[i];\r\n const dx = oa.p.x - a.p.x;\r\n const dy = oa.p.y - a.p.y;\r\n if (dx > tor)\r\n r = true;\r\n else if (dx < -tor)\r\n l = true;\r\n if (dy > tor)\r\n b = true;\r\n else if (dy < -tor)\r\n t = true;\r\n }\r\n\r\n if (!r)\r\n return JSDraw2.ALIGN.RIGHT;\r\n else if (!l)\r\n return JSDraw2.ALIGN.LEFT;\r\n else if (!b)\r\n return JSDraw2.ALIGN.BOTTOM;\r\n else if (!t)\r\n return JSDraw2.ALIGN.TOP;\r\n return JSDraw2.ALIGN.RIGHT;\r\n }\r\n\r\n /**\r\n * Set molfile\r\n * @function setMolfile\r\n * @param {string} molfile - the input molfile\r\n * @returns the Mol object\r\n */\r\n setMolfile(molfile, rxn?: boolean) {\r\n const m = this.setMolfile2(molfile, rxn);\r\n if (m != null)\r\n this.guessSuperAtoms();\r\n return m;\r\n }\r\n\r\n guessSuperAtoms() {\r\n return 0;\r\n }\r\n\r\n setMolfile2(molfile, rxn?: boolean) {\r\n if (molfile != null && molfile.length > 4) {\r\n if (molfile.substr(0, 4) == '$RXN')\r\n return this.setRxnfile(molfile);\r\n if (molfile.substr(0, 4) == '$MDL')\r\n return this.setRgfile(molfile);\r\n }\r\n\r\n this.clear();\r\n if (molfile == null || molfile.length == 0)\r\n return null;\r\n\r\n let lines = null;\r\n if (molfile.indexOf('\\n') >= 0)\r\n lines = molfile.split('\\n');\r\n else\r\n lines = molfile.split('|');\r\n\r\n for (let i = 0; i <= Math.min(3, lines.length - 1); ++i) {\r\n if (lines[i].toUpperCase().indexOf(' V2000') > 0) {\r\n this.setMolV2000(lines, i, rxn);\r\n if (i == 3)\r\n this.name = scil.Utils.trim(lines[0]);\r\n return this;\r\n } else if (lines[i].toUpperCase().indexOf(' V3000') > 0) {\r\n this.setMolV3000(lines, i + 1, rxn);\r\n if (i + 1 == 3)\r\n this.name = scil.Utils.trim(lines[0]);\r\n return this;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n setMolV2000(lines, start, rxn: boolean, rAtoms?: Atom[]) {\r\n const natoms = parseFloat(lines[start].substr(0, 3));\r\n const nbonds = parseFloat(lines[start].substr(3, 3));\r\n const chiral = lines[start].substr(12, 3);\r\n if (!JSDraw2.defaultoptions.and_enantiomer)\r\n this.chiral = chiral == ' 1';\r\n if (isNaN(natoms) || isNaN(nbonds))\r\n return null;\r\n ++start;\r\n\r\n for (let i = start; i < natoms + start; i++) {\r\n const s: string = lines[i];\r\n const x = parseFloat(s.substr(0, 10));\r\n const y = -parseFloat(s.substr(10, 10));\r\n let e = scil.Utils.trim(s.substr(31, 3));\r\n const c = s.length >= 39 ? parseInt(s.substr(36, 3)) : 0;\r\n const ami = rxn && s.length >= 63 ? parseInt(s.substr(60, 3)) : 0;\r\n const hs = s.length >= 45 ? parseInt(s.substr(42, 3)) : 0;\r\n const val = s.length >= 51 ? parseInt(s.substr(48, 3)) : 0;\r\n\r\n if (isNaN(x) || isNaN(y) || isNaN(c))\r\n return null;\r\n\r\n let alias = null;\r\n if ((/^R[0-9]+$/).test(e)) {\r\n alias = e;\r\n e = 'R';\r\n }\r\n const a = new JSDraw2.Atom(new JSDraw2.Point(x, y), e == 'R#' ? 'R' : e);\r\n a.alias = alias;\r\n if (ami > 0)\r\n a.atommapid = ami;\r\n if (hs > 0 && hs <= 5)\r\n a.hs = hs;\r\n if (val > 0 && val <= 15)\r\n a.val = val;\r\n this._addAtom(a);\r\n switch (c) {\r\n case 1:\r\n a.charge = 3;\r\n break;\r\n case 2:\r\n a.charge = 2;\r\n break;\r\n case 3:\r\n a.charge = 1;\r\n break;\r\n case 5:\r\n a.charge = -1;\r\n break;\r\n case 6:\r\n a.charge = -2;\r\n break;\r\n case 7:\r\n a.charge = -3;\r\n break;\r\n }\r\n }\r\n\r\n start += natoms;\r\n for (let i = start; i < (nbonds + start); i++) {\r\n const line = lines[i];\r\n const sI: number = parseFloat(line.substr(0, 3)) - 1;\r\n const eI: number = parseFloat(line.substr(3, 3)) - 1;\r\n const order = parseInt(line.substr(6, 3));\r\n const stereo = parseInt(line.substr(9, 3));\r\n const ring = line.length >= 18 ? parseInt(line.substr(15, 3)) : null;\r\n const rcenter = line.length >= 21 ? line.substr(18, 3) : null;\r\n if (isNaN(sI) || isNaN(eI) || isNaN(order))\r\n return null;\r\n\r\n const a1 = this.atoms[sI];\r\n const a2 = this.atoms[eI];\r\n let b: BondTypes;\r\n switch (order) {\r\n case 0:\r\n b = JSDraw2.BONDTYPES.UNKNOWN;\r\n break;\r\n case 1:\r\n switch (stereo) {\r\n case 1:\r\n b = JSDraw2.BONDTYPES.WEDGE;\r\n break;\r\n case 4:\r\n b = JSDraw2.BONDTYPES.WIGGLY;\r\n break;\r\n case 6:\r\n b = JSDraw2.BONDTYPES.HASH;\r\n break;\r\n default:\r\n b = JSDraw2.BONDTYPES.SINGLE;\r\n break;\r\n }\r\n break;\r\n case 2:\r\n b = stereo == 3 ? JSDraw2.BONDTYPES.EITHER : JSDraw2.BONDTYPES.DOUBLE;\r\n break;\r\n case 3:\r\n b = JSDraw2.BONDTYPES.TRIPLE;\r\n break;\r\n case 4:\r\n b = JSDraw2.BONDTYPES.DELOCALIZED;\r\n break;\r\n case 5:\r\n b = JSDraw2.BONDTYPES.SINGLEORDOUBLE;\r\n break;\r\n case 6:\r\n b = JSDraw2.BONDTYPES.SINGLEORAROMATIC;\r\n break;\r\n case 7:\r\n b = JSDraw2.BONDTYPES.DOUBLEORAROMATIC;\r\n break;\r\n case 8:\r\n b = JSDraw2.BONDTYPES.UNKNOWN;\r\n break;\r\n case 9:\r\n b = JSDraw2.BONDTYPES.DUMMY;\r\n break;\r\n }\r\n const bond = new JSDraw2.Bond(a1, a2, b);\r\n if (ring == 1)\r\n bond.ring = true;\r\n else if (ring == 2)\r\n bond.ring = false;\r\n if (rxn)\r\n this.readRxnCenter(bond, rcenter);\r\n this._addBond(bond);\r\n }\r\n\r\n const sgroups = [];\r\n start += nbonds;\r\n for (let i = start; i < lines.length; ++i) {\r\n const s = scil.Utils.rtrim(lines[i]);\r\n const token = s.length >= 6 ? s.substr(0, 6) : null;\r\n const token3 = s.length >= 6 ? s.substr(0, 3) : null;\r\n if (token == 'M ISO') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(10 + k * 8, 3));\r\n const v = parseInt(s.substr(14 + k * 8, 3));\r\n if (isNaN(ai) || isNaN(v))\r\n return null;\r\n this.atoms[ai - 1].isotope = v;\r\n }\r\n } else if (token == 'M RAD') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(10 + k * 8, 3));\r\n const v = parseInt(s.substr(14 + k * 8, 3));\r\n if (isNaN(ai) || isNaN(v))\r\n return null;\r\n if (v >= 1 && v <= 3)\r\n this.atoms[ai - 1].radical = v;\r\n }\r\n } else if (token == 'M CHG') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(10 + k * 8, 3));\r\n const v = parseInt(s.substr(14 + k * 8, 3));\r\n if (isNaN(ai) || isNaN(v))\r\n return null;\r\n this.atoms[ai - 1].charge = v;\r\n }\r\n } else if (token == 'M ALS') {\r\n //M ALS 7 4 F C N S O\r\n const ai = parseInt(s.substr(7, 3));\r\n const n = parseInt(s.substr(10, 3));\r\n const f = s.substr(14, 1) == 'F';\r\n const list = [];\r\n for (let k = 0; k < n; ++k) {\r\n const el = scil.Utils.trim(s.substr(16 + k * 4, 4));\r\n if (JSDraw2.PT.isValidAtomList(el))\r\n list.push(el);\r\n }\r\n const a = this.atoms[ai - 1];\r\n if (a.query == null)\r\n a.query = {};\r\n a.query.t = f;\r\n a.query.als = list;\r\n } else if (token == 'M SUB') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(9 + 8 * k + 1, 3));\r\n const v = parseInt(s.substr(9 + 8 * k + 5, 3));\r\n const a = this.atoms[ai - 1];\r\n if (a.query == null)\r\n a.query = {};\r\n if (v == -1)\r\n a.query.sub = 0;\r\n else if (v == -2)\r\n a.query.sub = '*';\r\n else\r\n a.query.v = v;\r\n }\r\n } else if (token == 'M UNS') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(9 + 8 * k + 1, 3));\r\n const v = parseInt(s.substr(9 + 8 * k + 5, 3));\r\n const a = this.atoms[ai - 1];\r\n if (a.query == null)\r\n a.query = {};\r\n a.query.uns = v == 1;\r\n }\r\n } else if (token == 'M RBC') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(9 + 8 * k + 1, 3));\r\n const v = parseInt(s.substr(9 + 8 * k + 5, 3));\r\n const a = this.atoms[ai - 1];\r\n if (v == -1 || v > 0) {\r\n if (a.query == null)\r\n a.query = {};\r\n a.query.rbc = v == -1 ? 0 : v;\r\n }\r\n }\r\n } else if (token == 'M RGP') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(10 + k * 8, 3));\r\n const rr = parseInt(s.substr(14 + k * 8, 3));\r\n if (isNaN(ai) || isNaN(rr))\r\n return null;\r\n if (this.atoms[ai - 1].elem == 'R') {\r\n const a = this.atoms[ai - 1];\r\n if (a.alias == null || a.alias == '')\r\n a.alias = 'R' + rr;\r\n if (rAtoms != null)\r\n rAtoms[rr] = a;\r\n }\r\n }\r\n } else if (token == 'M APO') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(10 + k * 8, 3));\r\n const rr = parseInt(s.substr(14 + k * 8, 3));\r\n if (!isNaN(ai) && !isNaN(rr) && this.atoms[ai - 1] != null)\r\n this.atoms[ai - 1].attachpoints.push(rr);\r\n }\r\n } else if (token == 'M STY') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const si = parseInt(s.substr(10 + k * 8, 3));\r\n const sn = s.substr(14 + k * 8, 3);\r\n let br = null;\r\n if (sn == 'DAT') {\r\n br = new JSDraw2.Text();\r\n } else if (sn == 'SUP') {\r\n br = {type: 'SUPERATOM', atoms: []};\r\n } else {\r\n for (const ty in JSDraw2.SGroup.stys) {\r\n if (JSDraw2.SGroup.stys[ty] == sn) {\r\n br = new JSDraw2.Bracket(ty == '' ? null : ty, null);\r\n break;\r\n }\r\n }\r\n if (br == null)\r\n br = new JSDraw2.Bracket(null, null);\r\n }\r\n if (br != null)\r\n sgroups[si] = br;\r\n }\r\n } else if (token == 'M SMT') {\r\n const si = parseInt(s.substr(7, 3));\r\n let sa = s.substr(11);\r\n if (sa.length > 0 && sa.substr(0, 1) == '^')\r\n sa = sa.substr(1);\r\n sgroups[si].subscript = sa;\r\n } else if (token == 'M SCL') {\r\n const si = parseInt(s.substr(7, 3));\r\n sgroups[si].cls = s.substr(11);\r\n } else if (token == 'M SPL') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ci = parseInt(s.substr(10 + k * 8, 3));\r\n const pi = parseInt(s.substr(14 + k * 8, 3));\r\n if (JSDraw2.Text.cast(sgroups[ci]) != null && JSDraw2.Bracket.cast(sgroups[pi]) != null)\r\n sgroups[ci].anchors = [sgroups[pi]]; // text attached to bracket\r\n }\r\n } else if (token == 'M SCN') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const si = parseInt(s.substr(10 + k * 8, 3));\r\n const conn = s.substr(14 + k * 8, 2);\r\n if (JSDraw2.Bracket.cast(sgroups[si]) != null)\r\n sgroups[si].conn = conn;\r\n }\r\n } else if (token == 'M SNC') {\r\n const n = parseInt(s.substr(6, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const si = parseInt(s.substr(10 + k * 8, 3));\r\n const num = scil.Utils.trim(s.substr(14 + k * 8, 2));\r\n if (JSDraw2.Bracket.cast(sgroups[si]) != null) {\r\n if (sgroups[si].type == 'c')\r\n sgroups[si].type = 'c' + num;\r\n else if (sgroups[si].type == 'mul')\r\n sgroups[si].type = num + '';\r\n }\r\n }\r\n } else if (token == 'M SAL') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n if (sg != null) {\r\n const n = parseInt(s.substr(10, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(14 + k * 4, 3));\r\n const a = this.atoms[ai - 1];\r\n if (a != null) {\r\n if (sg.type == 'SUPERATOM')\r\n sg.atoms.push(a);\r\n else if (JSDraw2.Bracket.cast(sg) != null)\r\n sg.atoms.push(a);\r\n else if (JSDraw2.Text.cast(sg) != null)\r\n sg.anchors.push(a);\r\n }\r\n }\r\n }\r\n } else if (token == 'M SPA') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n if (JSDraw2.Bracket.cast(sg) != null && sg.type == 'mul') {\r\n const n = parseInt(s.substr(10, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const ai = parseInt(s.substr(14 + k * 4, 3));\r\n const a = this.atoms[ai - 1];\r\n if (a != null) {\r\n if (sg.spa == null)\r\n sg.spa = [];\r\n sg.spa.push(a);\r\n }\r\n }\r\n }\r\n } else if (token == 'M SBL') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n const n = parseInt(s.substr(10, 3));\r\n for (let k = 0; k < n; ++k) {\r\n const bi = parseInt(s.substr(14 + k * 4, 3));\r\n const b = this.bonds[bi - 1];\r\n if (b != null && JSDraw2.Text.cast(sg) != null)\r\n sg.anchors.push(b);\r\n }\r\n } else if (token == 'M SDI') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n const n = parseInt(s.substr(10, 3));\r\n if (sg != null && n == 4) {\r\n const p1 = new JSDraw2.Point(parseFloat(s.substr(13, 10)), -parseFloat(s.substr(23, 10)));\r\n const p2 = new JSDraw2.Point(parseFloat(s.substr(33, 10)), -parseFloat(s.substr(43, 10)));\r\n if (p1.isValid() && p2.isValid()) {\r\n if (sg._rect == null)\r\n sg._rect = new JSDraw2.Rect().set(p1, p2);\r\n else\r\n sg._rect.unionPoint(p1).unionPoint(p2);\r\n }\r\n }\r\n } else if (token == 'M SDT') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n if (JSDraw2.Text.cast(sg) != null)\r\n sg.fieldtype = scil.Utils.trim(s.substr(11, 30));\r\n } else if (token == 'M SDD') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n if (JSDraw2.Text.cast(sg) != null) {\r\n const p = new JSDraw2.Point(parseFloat(s.substr(11, 10)), -parseFloat(s.substr(21, 10)));\r\n if (p.isValid())\r\n sg._rect = new JSDraw2.Rect(p.x, p.y, 0, 0);\r\n }\r\n } else if (token == 'M SED') {\r\n const si = parseInt(s.substr(7, 3));\r\n const sg = sgroups[si];\r\n if (JSDraw2.Text.cast(sg) != null)\r\n sg.text = scil.Utils.trim(s.substr(11));\r\n } else if (token3 == 'A ') {\r\n const ai = parseInt(s.substr(3, 3));\r\n ++i;\r\n this.atoms[ai - 1].alias = scil.Utils.trim(lines[i]);\r\n } else if (token3 == 'V ') {\r\n const ai = parseInt(s.substr(3, 3));\r\n const v = scil.Utils.trim(s.substr(7));\r\n this.atoms[ai - 1].tag = v;\r\n } else if (token == 'M END') {\r\n break;\r\n }\r\n }\r\n\r\n const superatoms = [];\r\n const brackets = [];\r\n const gap = this.medBondLength(1.56) / 2;\r\n for (let i = 0; i < sgroups.length; ++i) {\r\n // post-process sgroups\r\n const sg = sgroups[i];\r\n if (sg == null)\r\n continue;\r\n const br = JSDraw2.Bracket.cast(sg);\r\n if (sg._rect != null && (br != null || sg.text != null && sg.text != '')) {\r\n this.addGraphics(sg);\r\n if (br != null) {\r\n if (br.getType() != '') {\r\n //this.setSgroup(br, \"BRACKET_TYPE\", br.getType(), br._rect.right() + gap / 4, br._rect.bottom() - gap);\r\n this.setSgroup(br, 'BRACKET_TYPE', br.subscript || br.getType(), br._rect.right() + gap / 4, br._rect.bottom() - gap);\r\n } else\r\n brackets.push(br);\r\n if (br.conn != null && br.conn != '')\r\n this.setSgroup(br, 'BRACKET_CONN', br.conn.toLowerCase(), br._rect.right() + gap / 4, br._rect.top - gap / 4);\r\n JSDraw2.SuperAtoms.collapseRepeat(this, br);\r\n } else {\r\n if (scil.Utils.endswith(sg.fieldtype, '_TYPE') && sg.fieldtype != 'BRACKET_TYPE')\r\n sg.fieldtype = 'BRACKET_SUBTYPE';\r\n else if (scil.Utils.endswith(sg.fieldtype, '_MOD'))\r\n sg.fieldtype = 'BRACKET_MOD';\r\n }\r\n } else if (sg.type == 'SUPERATOM') {\r\n const na = new JSDraw2.Atom(null, 'C');\r\n const m = new JSDraw2.Mol();\r\n superatoms.push({a: na, m: m});\r\n m.atoms = sg.atoms;\r\n for (let k = 0; k < m.atoms.length; ++k)\r\n scil.Utils.removeArrayItem(this.atoms, m.atoms[k]);\r\n\r\n let p = null;\r\n let apo = 0;\r\n for (let j = this.bonds.length - 1; j >= 0; --j) {\r\n const b = this.bonds[j];\r\n const f1 = scil.Utils.indexOf(m.atoms, b.a1);\r\n const f2 = scil.Utils.indexOf(m.atoms, b.a2);\r\n if (f1 >= 0 && f2 >= 0) {\r\n m.bonds.splice(0, 0, b);\r\n this.bonds.splice(j, 1);\r\n } else if (f1 >= 0) {\r\n if (p == null)\r\n p = b.a1.p.clone();\r\n b.a1.attachpoints.push(++apo);\r\n b.apo1 = apo;\r\n b.a1 = na;\r\n } else if (f2 >= 0) {\r\n if (p == null)\r\n p = b.a2.p.clone();\r\n b.a2.attachpoints.push(++apo);\r\n b.apo2 = apo;\r\n b.a2 = na;\r\n }\r\n }\r\n\r\n na.p = p != null ? p : m.atoms[0].p.clone();\r\n na.superatom = m;\r\n na.alias = sg.subscript;\r\n switch (sg.cls) {\r\n case 'AminoAcid':\r\n case 'AA':\r\n na.bio = {type: JSDraw2.BIO.AA};\r\n na.elem = na.alias;\r\n na.alias = null;\r\n break;\r\n case 'BASE':\r\n case 'DNA':\r\n na.bio = {type: JSDraw2.BIO.BASE_DNA};\r\n na.elem = na.alias;\r\n na.alias = null;\r\n break;\r\n case 'RNA':\r\n na.bio = {type: JSDraw2.BIO.BASE_RNA};\r\n na.elem = na.alias;\r\n na.alias = null;\r\n break;\r\n }\r\n this._addAtom(na);\r\n }\r\n }\r\n\r\n for (let i = 0; i < brackets.length; ++i) {\r\n const br = brackets[i];\r\n const t = this.getSgroupText(br, 'BRACKET_TYPE');\r\n if (t != null)\r\n brackets[i].type = t.text;\r\n\r\n if (br.atoms != null) {\r\n for (let k = 0; k < superatoms.length; ++k) {\r\n const a = superatoms[k].a;\r\n const m = superatoms[k].m;\r\n if (scil.Utils.removeArrayItems(br.atoms, m.atoms) > 0)\r\n br.atoms.push(a);\r\n }\r\n }\r\n }\r\n\r\n // set R groups: some R groups are only marked using alias\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.elem == 'C' && a.alias != null && (/^R[0-9]+$/).test(a.alias)) {\r\n const alias = a.alias;\r\n a.alias = null;\r\n this.setAtomAlias(a, alias);\r\n }\r\n }\r\n\r\n if (JSDraw2.defaultoptions.and_enantiomer) {\r\n if (this.hasStereoCenter() && chiral == ' 0')\r\n this.chiral = ChiralTypes.AND;\r\n }\r\n return this;\r\n }\r\n\r\n hasRGroup() {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.elem == 'R')\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Get molfile\r\n * @function getMolfile\r\n * @param {bool} rxn - get it as a Rxn file\r\n * @param {bool} v3000 - render it in Molfile V3000 format\r\n * @returns a string\r\n */\r\n getMolfile(rxn?: any, v3000?: boolean, excludeDummyBonds?: boolean): string {\r\n if (v3000 == null) {\r\n if (this.needV3000())\r\n v3000 = true;\r\n }\r\n\r\n if (v3000)\r\n return this.getMolV3000(rxn);\r\n else\r\n return this.getMolV2000(rxn, excludeDummyBonds);\r\n }\r\n\r\n needV3000() {\r\n return this.atoms.length > 999 || this.bonds.length > 999 || this.hasEnhancedStereochemistry();\r\n }\r\n\r\n getRgfile(rxn, rgroups, superatoms) {\r\n return null;\r\n }\r\n\r\n _getRgroups(rgroups?: any) {\r\n if (rgroups == null)\r\n rgroups = {n: 0, list: []};\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n a.iR = null;\r\n if (a.elem == 'R' && (a.alias != null && a.alias != '' || a.rgroup != null)) {\r\n a.iR = ++rgroups.n;\r\n if (a.rgroup != null && a.rgroup.mols.length > 0)\r\n rgroups.list.push(a);\r\n }\r\n }\r\n return rgroups;\r\n }\r\n\r\n getSubMol(atoms) {\r\n const m = this;\r\n const set = {atoms: scil.clone(atoms), bonds: [], openbonds: []};\r\n for (let j = 0; j < m.bonds.length; ++j) {\r\n const b = m.bonds[j];\r\n const f1 = scil.Utils.indexOf(atoms, b.a1) >= 0;\r\n const f2 = scil.Utils.indexOf(atoms, b.a2) >= 0;\r\n if (f1 && f2) {\r\n //if (scil.Utils.indexOf(set.atoms, b.a1) < 0)\r\n // set.atoms.push(b.a1);\r\n //if (scil.Utils.indexOf(set.atoms, b.a2) < 0)\r\n // set.atoms.push(b.a2);\r\n set.bonds.push(b);\r\n } else if (f1) {\r\n //if (scil.Utils.indexOf(set.atoms, b.a1) < 0)\r\n // set.atoms.push(b.a1);\r\n set.openbonds.push({b: b, oa: b.a2});\r\n } else if (f2) {\r\n //if (scil.Utils.indexOf(set.atoms, b.a2) < 0)\r\n // set.atoms.push(b.a2);\r\n set.openbonds.push({b: b, oa: b.a1});\r\n }\r\n }\r\n\r\n return set;\r\n }\r\n\r\n expandSuperAtoms(superatoms2?: any[]) {\r\n const superatoms = [];\r\n\r\n const m = this.clone(null);\r\n const list = scil.clone(m.atoms);\r\n for (let i = 0; i < list.length; ++i) {\r\n const a = list[i];\r\n if (a.superatom != null) {\r\n const m2 = JSDraw2.SuperAtoms.addToMol(m, a, a.superatom);\r\n superatoms.push({a: a, m: m2});\r\n if (superatoms2 != null)\r\n superatoms2.push({a: a, m: m2});\r\n } else if (a.elem == '5\\'') {\r\n m.setAtomType(a, 'H');\r\n } else if (a.elem == '3\\'') {\r\n m.setAtomType(a, 'O');\r\n }\r\n }\r\n\r\n for (let i = 0; i < m.graphics.length; ++i) {\r\n const br = JSDraw2.Bracket.cast(m.graphics[i]);\r\n if (br == null)\r\n continue;\r\n\r\n if (br.atoms != null && superatoms != null) {\r\n const atoms = [];\r\n let m2: Mol = null;\r\n for (let k = 0; k < br.atoms.length; ++k) {\r\n for (let j = 0; j < superatoms.length; ++j) {\r\n if (br.atoms[k] == superatoms[j].a) {\r\n m2 = superatoms[j].m;\r\n break;\r\n }\r\n }\r\n if (m2 == null) {\r\n atoms.push(br.atoms[k]);\r\n } else {\r\n for (let j = 0; j < m2.atoms.length; ++j)\r\n atoms.push(m2.atoms[j]);\r\n }\r\n }\r\n br.atoms = atoms;\r\n }\r\n\r\n JSDraw2.SuperAtoms.expandRepeat(m, br);\r\n }\r\n\r\n m.calcHCount(true);\r\n return m;\r\n }\r\n\r\n getMolV2000(rxn, excludeDummyBonds) {\r\n const superatoms = [];\r\n const m = this.expandSuperAtoms(superatoms);\r\n m.chiral = this.chiral;\r\n\r\n if (excludeDummyBonds) {\r\n for (let i = m.bonds.length - 1; i >= 0; --i) {\r\n const b = m.bonds[i];\r\n if (b.type == JSDraw2.BONDTYPES.DUMMY)\r\n m.bonds.splice(i, 1);\r\n }\r\n }\r\n\r\n const hasRgroup = false;\r\n const rgroups = m._getRgroups();\r\n if (rgroups.list.length > 0)\r\n return m.getRgfile(rxn, rgroups, superatoms);\r\n\r\n let s = (m.name == null ? '' : m.name) + '\\n';\r\n s += m._getMolHeader();\r\n s += '\\n';\r\n s += m._getMolV2000(rxn, null, superatoms);\r\n return s;\r\n }\r\n\r\n allAtoms(list?: Atom[]): Atom[] {\r\n if (list == null)\r\n list = [];\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n list.push(a);\r\n if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].allAtoms(list);\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n allBonds(list?: Bond[]): Bond[] {\r\n if (list == null)\r\n list = [];\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n list.push(this.bonds[i]);\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.rgroup != null) {\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].allBonds(list);\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n _getMolTime() {\r\n const dt = new Date();\r\n const yr = dt.getFullYear() + '';\r\n return scil.Utils.formatStr(dt.getMonth() + 1, 2, 0).replace(' ', '0') +\r\n scil.Utils.formatStr(dt.getDate(), 2, 0).replace(' ', '0') +\r\n yr.substr(2) +\r\n scil.Utils.formatStr(dt.getHours(), 2, 0).replace(' ', '0') +\r\n scil.Utils.formatStr(dt.getMinutes(), 2, 0).replace(' ', '0');\r\n }\r\n\r\n _getMolHeader() {\r\n const dt = new Date();\r\n const yr = dt.getFullYear() + '';\r\n return ' JSDraw2' + this._getMolTime() + '2D\\n';\r\n }\r\n\r\n _getMolV2000(rxn, rgroups, superatoms) {\r\n if (rgroups != null)\r\n this._getRgroups(rgroups);\r\n\r\n const len = this.bondlength > 0 ? this.bondlength : this.medBondLength();\r\n const scale = len > 0 ? (1.56 / len) : 1.0;\r\n\r\n let s = '';\r\n s += scil.Utils.formatStr(this.atoms.length, 3, 0);\r\n s += scil.Utils.formatStr(this.bonds.length, 3, 0);\r\n s += ' 0 0';\r\n if (this.hasStereoCenter() && this.chiral != 'and')\r\n s += ' 1';\r\n else\r\n s += ' 0';\r\n s += ' 0 0 V2000\\n';\r\n\r\n let isotopes = '';\r\n let radicals = '';\r\n let tags = '';\r\n let query = '';\r\n let rgp = '';\r\n let apo = '';\r\n let astr = '';\r\n this.resetIds();\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.isotope != null)\r\n isotopes += 'M ISO' + ' 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.isotope, 4, 0) + '\\n';\r\n if (a.radical >= 1 && a.radical <= 3)\r\n radicals += 'M RAD 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.radical, 4, 0) + '\\n';\r\n if (a.tag != null && a.tag != '')\r\n tags += 'V ' + scil.Utils.formatStr(i + 1, 3, 0) + ' ' + a.tag + '\\n';\r\n if (a.alias != null && a.alias != '')\r\n astr += 'A ' + scil.Utils.formatStr(i + 1, 3, 0) + '\\n' + a.alias + '\\n';\r\n for (let k = 0; k < a.attachpoints.length; ++k)\r\n apo += 'M APO 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.attachpoints[k], 4, 0) + '\\n';\r\n if (a.query != null) {\r\n if (a.query.als != null && a.query.als.length > 0) {\r\n query += 'M ALS ' + scil.Utils.formatStr(i + 1, 3, 0) + scil.Utils.formatStr(a.query.als.length, 3, 0) + (a.query.t == false ? ' T ' : ' F ');\r\n for (let k = 0; k < a.query.als.length; ++k)\r\n query += scil.Utils.padRight(a.query.als[k], 4, ' ');\r\n query += '\\n';\r\n }\r\n if (a.query.rbc != null)\r\n query += 'M RBC 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.rbc == 0 ? -1 : a.query.rbc, 4, 0) + '\\n';\r\n if (a.query.uns != null)\r\n query += 'M UNS 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.uns ? 1 : 0, 4, 0) + '\\n';\r\n if (a.query.sub != null)\r\n query += 'M SUB 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(a.query.sub == 0 ? -1 : (a.query.sub == '*' ? -2 : a.query.sub), 4, 0) + '\\n';\r\n }\r\n\r\n let elem = a.elem;\r\n if (a.elem == 'R') {\r\n if (a.iR > 0) {\r\n elem = 'R#';\r\n rgp += 'M RGP 1' + scil.Utils.formatStr(i + 1, 4, 0) + scil.Utils.formatStr(parseInt(a.iR as string), 4, 0) + '\\n';\r\n } else {\r\n elem = 'R';\r\n }\r\n } else if (elem == 'H') {\r\n if (a.isotope == 2)\r\n elem = 'D';\r\n else if (a.isotope == 3)\r\n elem = 'T';\r\n }\r\n\r\n s += scil.Utils.formatStr(a.p.x * scale, 10, 4);\r\n s += scil.Utils.formatStr(-a.p.y * scale, 10, 4);\r\n s += scil.Utils.formatStr(0, 10, 4);\r\n s += ' ';\r\n s += scil.Utils.padRight(elem, 2, ' ');\r\n s += ' 0';\r\n let c = 0;\r\n switch (a.charge) {\r\n case 1:\r\n c = 3;\r\n break;\r\n case 2:\r\n c = 2;\r\n break;\r\n case 3:\r\n c = 1;\r\n break;\r\n case -1:\r\n c = 5;\r\n break;\r\n case -2:\r\n c = 6;\r\n break;\r\n case -3:\r\n c = 7;\r\n break;\r\n }\r\n s += scil.Utils.formatStr(c, 3, 0);\r\n\r\n s += ' 0';\r\n if (a.hs > 0)\r\n s += scil.Utils.formatStr(a.hs, 3, 0);\r\n else\r\n s += ' 0';\r\n\r\n s += ' 0 0';\r\n if (a.val > 0)\r\n s += scil.Utils.formatStr(a.val, 3, 0);\r\n else\r\n s += ' 0';\r\n\r\n s += ' 0 0';\r\n if (rxn && a.atommapid > 0)\r\n s += scil.Utils.formatStr(a.atommapid, 3, 0);\r\n else\r\n s += ' 0';\r\n s += ' 0 0\\n';\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n\r\n s += scil.Utils.formatStr(b.a1.id, 3, 0);\r\n s += scil.Utils.formatStr(b.a2.id, 3, 0);\r\n\r\n let order = 0;\r\n let stereo = 0;\r\n switch (b.type) {\r\n case JSDraw2.BONDTYPES.UNKNOWN:\r\n order = 8;\r\n break;\r\n case JSDraw2.BONDTYPES.DUMMY:\r\n order = 9;\r\n break;\r\n case JSDraw2.BONDTYPES.DOUBLEORAROMATIC:\r\n order = 7;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORAROMATIC:\r\n order = 6;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORDOUBLE:\r\n order = 5;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLE:\r\n case JSDraw2.BONDTYPES.DOUBLE:\r\n case JSDraw2.BONDTYPES.TRIPLE:\r\n case JSDraw2.BONDTYPES.DELOCALIZED:\r\n order = b.type;\r\n stereo = 0;\r\n break;\r\n case JSDraw2.BONDTYPES.PEPTIDE:\r\n case JSDraw2.BONDTYPES.NUCLEOTIDE:\r\n case JSDraw2.BONDTYPES.DISULFIDE:\r\n case JSDraw2.BONDTYPES.AMIDE:\r\n order = 1;\r\n stereo = 0;\r\n break;\r\n case JSDraw2.BONDTYPES.WEDGE:\r\n case JSDraw2.BONDTYPES.BOLD:\r\n order = 1;\r\n stereo = 1;\r\n break;\r\n case JSDraw2.BONDTYPES.HASH:\r\n case JSDraw2.BONDTYPES.BOLDHASH:\r\n order = 1;\r\n stereo = 6;\r\n break;\r\n case JSDraw2.BONDTYPES.WIGGLY:\r\n order = 1;\r\n stereo = 4;\r\n break;\r\n case JSDraw2.BONDTYPES.EITHER:\r\n order = 2;\r\n stereo = 3;\r\n break;\r\n }\r\n s += scil.Utils.formatStr(order, 3, 0);\r\n s += scil.Utils.formatStr(stereo, 3, 0);\r\n s += scil.Utils.formatStr(0, 3, 0);\r\n if (b.ring != null)\r\n s += scil.Utils.formatStr(b.ring ? 1 : 2, 3, 0);\r\n else\r\n s += scil.Utils.formatStr(0, 3, 0);\r\n s += scil.Utils.formatStr(b.rcenter == null ? 0 : b.rcenter, 3, 0);\r\n s += '\\n';\r\n }\r\n\r\n s += isotopes;\r\n s += radicals;\r\n s += tags;\r\n s += astr;\r\n s += query;\r\n s += rgp;\r\n s += apo;\r\n\r\n let nSTY = 0;\r\n if (superatoms != null) {\r\n for (let i = 0; i < superatoms.length; ++i) {\r\n const a = superatoms[i].a;\r\n const m = superatoms[i].m;\r\n if (m == null)\r\n continue;\r\n\r\n ++nSTY;\r\n const sty = scil.Utils.formatStr(nSTY, 3, 0);\r\n s += 'M STY 1 ' + sty + ' SUP\\n';\r\n s += this.writeList('M SAL ' + sty, m.atoms, 'id', 4, 8);\r\n s += this.writeList('M SBL ' + sty, m.bonds, 'bondid', 4, 8);\r\n\r\n s += 'M SMT ' + sty + ' ' + (a.alias == null ? a.elem : a.alias) + '\\n';\r\n if (a.bio != null)\r\n s += 'M SCL ' + sty + ' ' + a.biotype() + '\\n';\r\n }\r\n }\r\n\r\n const texts = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null)\r\n texts.push(t);\r\n }\r\n\r\n // SGroup\r\n let sgroupdata = '';\r\n const id = {k: nSTY};\r\n const brackets = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const br = JSDraw2.Bracket.cast(this.graphics[i]);\r\n if (br == null)\r\n continue;\r\n brackets.push(br);\r\n const r = br._rect;\r\n\r\n let bracketatoms = null;\r\n let bracketbonds = null;\r\n if (br.atoms.length > 0) {\r\n bracketatoms = this.getExpandedAtoms(br.expandedatoms == null ? br.atoms : br.expandedatoms);\r\n bracketbonds = br.getXbonds(this);\r\n }\r\n\r\n const k = ++id.k;\r\n let connectivity = null;\r\n const sgroup: any = {sty: '', spl: '', data: '', id: id};\r\n const tp = br.getType();\r\n const snc = br.getTypeNum();\r\n sgroup.subscript = tp;\r\n\r\n let type = JSDraw2.SGroup.stys[tp];\r\n if (type == null) {\r\n if (bracketbonds != null && bracketbonds.length == 2)\r\n type = 'SRU';\r\n else\r\n type = 'GEN';\r\n }\r\n sgroup.sty += ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + type;\r\n let fieldtype = JSDraw2.SGroup.fieldtypes[tp];\r\n if (fieldtype == null)\r\n fieldtype = 'BRACKET';\r\n const custom = type == null;\r\n\r\n let subscript = null;\r\n for (let j = 0; j < texts.length; ++j) {\r\n const t = texts[j];\r\n if (t != null && t.anchors.length == 1 && t.anchors[0] == br) {\r\n if (t.fieldtype == 'BRACKET_CONN') {\r\n connectivity = t.text;\r\n } else if (t.fieldtype != 'BRACKET_TYPE' || t.text != tp && tp != 'mul' || custom) {\r\n let ft = t.fieldtype;\r\n if (fieldtype != null && ft != null && ft.length > 8 && ft.substr(0, 8) == 'BRACKET_') {\r\n if (ft == 'BRACKET_SUBTYPE')\r\n ft = fieldtype + '_TYPE';\r\n else\r\n ft = fieldtype + ft.substr(7);\r\n }\r\n\r\n if (type == 'SRU')\r\n sgroup.subscript = t.text;\r\n else\r\n this.getDataGroup(t.text, ft, t._rect.left * scale, -t._rect.top * scale, k, sgroup);\r\n } else if (t.fieldtype == 'BRACKET_TYPE' && tp == 'mul') {\r\n subscript = t.text;\r\n }\r\n texts[j] = null;\r\n }\r\n }\r\n\r\n sgroupdata += 'M STY' + scil.Utils.formatStr(sgroup.sty.length / 8, 3, 0) + sgroup.sty + '\\n';\r\n //sgroupdata += \"M SLB 1 1 1\\n\";\r\n\r\n if (connectivity == 'ht' || connectivity == 'hh' || connectivity == 'eu')\r\n sgroupdata += 'M SCN' + scil.Utils.formatStr(1, 3, 0) + ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + connectivity.toUpperCase() + ' \\n';\r\n if (snc != null)\r\n sgroupdata += 'M SNC' + scil.Utils.formatStr(1, 3, 0) + ' ' + scil.Utils.formatStr(k, 3, 0) + ' ' + scil.Utils.padLeft(snc, 3, ' ') + ' \\n';\r\n if (sgroup.spl != '')\r\n sgroupdata += 'M SPL' + scil.Utils.formatStr(sgroup.spl.length / 8, 3, 0) + sgroup.spl + '\\n';\r\n if (br.atoms.length > 0) {\r\n sgroupdata += this.writeList('M SAL ' + scil.Utils.formatStr(k, 3, 0), bracketatoms, 'id', 4, 8);\r\n sgroupdata += this.writeList('M SBL ' + scil.Utils.formatStr(k, 3, 0), bracketbonds, 'id', 4, 8);\r\n\r\n if (!scil.Utils.isNullOrEmpty(sgroup.subscript) && /* I#10773 */ !(type == 'MUL' && sgroup.subscript == 'mul'))\r\n sgroupdata += 'M SMT 1 ' + sgroup.subscript + '\\n';\r\n\r\n const atoms = br.atoms;\r\n if (br.type != 'n' || type == 'SRU')\r\n sgroupdata += this.writeList('M SPA ' + scil.Utils.formatStr(k, 3, 0), atoms, 'id', 4, 8);\r\n }\r\n\r\n sgroupdata += 'M SDI ' + scil.Utils.formatStr(k, 3, 0) + ' 4';\r\n sgroupdata += scil.Utils.formatStr(br._rect.left * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(-br._rect.bottom() * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(br._rect.left * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(-br._rect.top * scale, 10, 4);\r\n sgroupdata += '\\n';\r\n\r\n sgroupdata += 'M SDI ' + scil.Utils.formatStr(k, 3, 0) + ' 4';\r\n sgroupdata += scil.Utils.formatStr(br._rect.right() * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(-br._rect.top * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(br._rect.right() * scale, 10, 4);\r\n sgroupdata += scil.Utils.formatStr(-br._rect.bottom() * scale, 10, 4);\r\n sgroupdata += '\\n';\r\n\r\n if (subscript != null && subscript != '') {\r\n sgroupdata += 'M SMT ' + scil.Utils.formatStr(k, 3, 0) + ' ' + subscript;\r\n sgroupdata += '\\n';\r\n }\r\n\r\n sgroupdata += sgroup.data;\r\n }\r\n\r\n for (let i = 0; i < texts.length; ++i) {\r\n const t = texts[i];\r\n if (t == null)\r\n continue;\r\n\r\n let k = id.k;\r\n const sgroup = {sty: '', spl: '', data: '', id: id};\r\n this.getDataGroup(t.text, t.fieldtype, t._rect.left * scale, -t._rect.top * scale, null, sgroup);\r\n sgroupdata += 'M STY' + scil.Utils.formatStr(sgroup.sty.length / 8, 3, 0) + sgroup.sty + '\\n';\r\n\r\n // I#11604\r\n if (id.k == k)\r\n ++id.k;\r\n k = id.k;\r\n\r\n let sal = '';\r\n let sbl = '';\r\n for (let j = 0; j < t.anchors.length; ++j) {\r\n const a = t.anchors[j];\r\n if (JSDraw2.Atom.cast(a) != null)\r\n sal += ' ' + scil.Utils.formatStr(a.atomid, 3, 0);\r\n else if (JSDraw2.Bond.cast(a) != null)\r\n sbl += ' ' + scil.Utils.formatStr(a.bondid, 3, 0);\r\n }\r\n if (sal != '')\r\n sgroupdata += 'M SAL ' + scil.Utils.formatStr(k, 3, 0) + scil.Utils.formatStr(sal.length / 4, 3, 0) + sal + '\\n';\r\n if (sbl != '')\r\n sgroupdata += 'M SBL ' + scil.Utils.formatStr(k, 3, 0) + scil.Utils.formatStr(sbl.length / 4, 3, 0) + sbl + '\\n';\r\n\r\n sgroupdata += sgroup.data;\r\n }\r\n\r\n s += sgroupdata;\r\n s += 'M END\\n';\r\n return s;\r\n }\r\n\r\n getExpandedAtoms(atoms: Atom[]): Atom[] {\r\n const ret: Atom[] = [];\r\n for (let i = 0; i < atoms.length; ++i) {\r\n const a = atoms[i];\r\n if (a.superatom == null) {\r\n ret.push(a);\r\n } else {\r\n for (let k = 0; k < a.superatom.atoms.length; ++k)\r\n ret.push(a.superatom.atoms[i]);\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n writeList(prefix, list, key, chars, countperline) {\r\n if (list == null || list.Length == 0)\r\n return '';\r\n\r\n let s = '';\r\n let countlastline = list.length % countperline;\r\n if (countlastline == 0)\r\n countlastline = countperline;\r\n const lines = (list.length - countlastline) / countperline + 1;\r\n\r\n for (let i = 0; i < lines; ++i) {\r\n const countthisline = i + 1 == lines ? countlastline : countperline;\r\n s += prefix;\r\n s += scil.Utils.formatStr(countthisline, 3);\r\n for (let j = 0; j < countthisline; ++j)\r\n s += scil.Utils.formatStr(list[i * countperline + j][key], chars);\r\n s += '\\n';\r\n }\r\n\r\n return s;\r\n }\r\n\r\n getMolV3000(rxn) {\r\n const superatoms = [];\r\n const m = this.expandSuperAtoms(superatoms);\r\n m.chiral = this.chiral;\r\n return m._getMolV3000();\r\n }\r\n\r\n _getMolV3000(rxn?: any) {\r\n const len = this.bondlength > 0 ? this.bondlength : this.medBondLength();\r\n const scale = len > 0 ? (1.56 / len) : 1.0;\r\n\r\n this.resetIds();\r\n\r\n const dt = new Date();\r\n const yr = dt.getFullYear() + '';\r\n\r\n let s = '';\r\n if (!rxn) {\r\n s += (this.name == null ? '' : this.name) + '\\n';\r\n s += ' JSDraw ' + scil.Utils.formatStr(dt.getMonth() + 1, 2, 0).replace(' ', '0') +\r\n scil.Utils.formatStr(dt.getDate(), 2, 0).replace(' ', '0') +\r\n yr.substr(2) +\r\n scil.Utils.formatStr(dt.getHours(), 2, 0).replace(' ', '0') +\r\n scil.Utils.formatStr(dt.getMinutes(), 2, 0).replace(' ', '0') + '2D\\n';\r\n s += '\\n';\r\n s += ' 0 0 0 999 V3000\\n';\r\n }\r\n\r\n const enhancedstereochemistry = this.getEnhancedStereochemistry();\r\n const chiral = this.hasStereoCenter() || !scil.Utils.isNullOrEmpty(enhancedstereochemistry);\r\n\r\n s += 'M V30 BEGIN CTAB\\n';\r\n s += 'M V30 COUNTS ' + this.atoms.length + ' ' + this.bonds.length + ' 0 0 ' + (chiral ? 1 : 0) + '\\n';\r\n\r\n s += 'M V30 BEGIN ATOM\\n';\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n let elem = a.elem;\r\n if (elem == 'R') {\r\n if (a.iR > 0)\r\n elem = 'R#';\r\n else\r\n elem = 'R';\r\n } else if (elem == 'H') {\r\n if (a.isotope == 2)\r\n elem = 'D';\r\n else if (a.isotope == 3)\r\n elem = 'T';\r\n }\r\n\r\n s += 'M V30 ' + a.id + ' ' + elem;\r\n s += ' ' + scil.Utils.formatStr(a.p.x * scale, 0, 4);\r\n s += ' ' + scil.Utils.formatStr(-a.p.y * scale, 0, 4);\r\n s += ' 0 ' + (rxn && a.atommapid > 0 ? a.atommapid : 0);\r\n if (a.charge != null && a.charge != 0)\r\n s += ' CHG=' + a.charge;\r\n if (a.radical >= 1 && a.radical <= 3)\r\n s += ' RAD=' + a.radical;\r\n\r\n //if (chiralatoms[a.id] != null)\r\n // s += \" CFG=\" + chiralatoms[a.id];\r\n\r\n s += '\\n';\r\n }\r\n s += 'M V30 END ATOM\\n';\r\n s += 'M V30 BEGIN BOND\\n';\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n let order = 0;\r\n let stereo = 0;\r\n switch (b.type) {\r\n case JSDraw2.BONDTYPES.UNKNOWN:\r\n order = 8;\r\n break;\r\n case JSDraw2.BONDTYPES.DUMMY:\r\n order = 9;\r\n break;\r\n case JSDraw2.BONDTYPES.DOUBLEORAROMATIC:\r\n order = 7;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORAROMATIC:\r\n order = 6;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLEORDOUBLE:\r\n order = 5;\r\n break;\r\n case JSDraw2.BONDTYPES.SINGLE:\r\n case JSDraw2.BONDTYPES.DOUBLE:\r\n case JSDraw2.BONDTYPES.TRIPLE:\r\n case JSDraw2.BONDTYPES.DELOCALIZED:\r\n order = b.type;\r\n stereo = 0;\r\n break;\r\n case JSDraw2.BONDTYPES.WEDGE:\r\n order = 1;\r\n stereo = 1;\r\n break;\r\n case JSDraw2.BONDTYPES.HASH:\r\n order = 1;\r\n stereo = 3;\r\n break;\r\n case JSDraw2.BONDTYPES.WIGGLY:\r\n order = 1;\r\n stereo = 2;\r\n break;\r\n case JSDraw2.BONDTYPES.EITHER:\r\n order = 2;\r\n stereo = 2;\r\n break;\r\n }\r\n s += 'M V30 ' + (i + 1) + ' ' + order + ' ' + b.a1.id + ' ' + b.a2.id;\r\n if (stereo > 0)\r\n s += ' CFG=' + stereo;\r\n if (b.ring != null)\r\n s += ' TOPO=' + (b.ring ? 1 : 2);\r\n if (rxn && b.rcenter > 0)\r\n s += ' RXCTR=' + b.rcenter;\r\n s += '\\n';\r\n }\r\n\r\n s += 'M V30 END BOND\\n';\r\n s += enhancedstereochemistry;\r\n s += 'M V30 END CTAB\\n';\r\n s += 'M END\\n';\r\n return s;\r\n }\r\n\r\n hasStereoCenter() {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.type == JSDraw2.BONDTYPES.WEDGE || b.type == JSDraw2.BONDTYPES.HASH)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n hasEnhancedStereochemistry() {\r\n return false;\r\n }\r\n\r\n getEnhancedStereochemistry() {\r\n return '';\r\n }\r\n\r\n setMolV3000(lines, start, rxn, pos?: any, endtoken?: any) {\r\n return this;\r\n }\r\n\r\n readV30Collections(lines, i, atommap) {\r\n }\r\n\r\n readV30Bonds(lines, i, atommap, rxn) {\r\n }\r\n\r\n getChiralAtom(t): Atom | null {\r\n if (t == null || t.anchors == null || t.anchors.length != 1 || t.fieldtype != 'CHIRAL')\r\n return null;\r\n const a = JSDraw2.Atom.cast(t.anchors[0]);\r\n if (a == null)\r\n return null;\r\n return JSDraw2.Atom.isValidChiral(t.text) ? a : null;\r\n }\r\n\r\n markChirality(a, c, bondlength) {\r\n return false;\r\n }\r\n\r\n findBestPostion(a, bondlength) {\r\n const atoms = a._parent.getNeighborAtoms(a);\r\n const p = a.p.clone();\r\n if (atoms != null && atoms.length > 0) {\r\n const deg = atoms[0].p.angleTo(a.p);\r\n p.offset(bondlength * 0.37, 0);\r\n p.rotateAround(a.p, deg - 60);\r\n\r\n p.x -= bondlength * 0.25;\r\n p.y -= bondlength * 0.25;\r\n } else {\r\n p.x -= bondlength * 0.25;\r\n p.y -= bondlength * 0.75;\r\n }\r\n return p;\r\n }\r\n\r\n readRxnCenter(bond, s) {\r\n const rcenter = s == null ? null : parseInt(s);\r\n switch (rcenter) {\r\n case -1:\r\n bond.rcenter = JSDraw2.RXNCENTER.NOTCENTER;\r\n break;\r\n case 1:\r\n bond.rcenter = JSDraw2.RXNCENTER.CENTER;\r\n break;\r\n case 12:\r\n case 13:\r\n bond.rcenter = JSDraw2.RXNCENTER.BREAKANDCHANGE;\r\n break;\r\n case 4:\r\n case 5:\r\n bond.rcenter = JSDraw2.RXNCENTER.BREAK;\r\n break;\r\n case 8:\r\n case 9:\r\n bond.rcenter = JSDraw2.RXNCENTER.CHANGE;\r\n break;\r\n }\r\n }\r\n\r\n readV30Atoms(lines, i, atommap, rxn) {\r\n\r\n }\r\n\r\n readV30Counts(lines, i, counts) {\r\n\r\n }\r\n\r\n parseV30Attributes(ss, start) {\r\n return null;\r\n }\r\n\r\n getDataGroup(data, key, x, y, k2, sgroup) {\r\n\r\n }\r\n\r\n containsWord(word) {\r\n word = word.toLowerCase();\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null && scil.Utils.containsWord(t.text, word, true))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n containsText(s) {\r\n s = s.toLowerCase();\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null && t.text != null && t.text.toLowerCase().indexOf(s) >= 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Get Mol property\r\n * @function getProp\r\n * @param {string} k - the property name\r\n * @returns the property\r\n */\r\n getProp(k) {\r\n return this.props == null ? null : this.props[k];\r\n }\r\n\r\n /**\r\n * Set Mol property\r\n * @function setProp\r\n * @param {string} k - the property name\r\n * @param {object} v - the property value\r\n * @returns null\r\n */\r\n setProp(k, v) {\r\n if (v == null) {\r\n if (this.props != null)\r\n delete this.props[k];\r\n } else {\r\n if (this.props == null)\r\n this.props = {};\r\n this.props[k] = v + '';\r\n }\r\n }\r\n\r\n /**\r\n * Set RGfile\r\n * @function setRgfile\r\n * @param {string} rgfile - the input rgfile\r\n * @returns the Mol object\r\n */\r\n setRgfile(rgfile) {\r\n return null;\r\n }\r\n\r\n _setParent(m) {\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i]._parent = m;\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n this.bonds[i]._parent = m;\r\n for (let i = 0; i < this.graphics.length; ++i)\r\n this.graphics[i]._parent = m;\r\n }\r\n\r\n _setGroup(g: any) {\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].group = g;\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n this.bonds[i].group = g;\r\n }\r\n\r\n toggleAtom(p, tor) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.toggle(p, tor))\r\n return a;\r\n\r\n if (a.rgroup != null) {\r\n const list = a.rgroup.mols;\r\n for (let j = 0; j < list.length; ++j) {\r\n const r = list[j].toggleAtom(p, tor);\r\n if (r != null)\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toggle(p, tor) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.toggle(p, tor))\r\n return a;\r\n\r\n if (a.rgroup == null)\r\n continue;\r\n\r\n if (a.rgroup.toggle(p, tor))\r\n return a.rgroup;\r\n\r\n const list = a.rgroup.mols;\r\n for (let j = 0; j < list.length; ++j) {\r\n const r = list[j].toggle(p, tor);\r\n if (r != null)\r\n return r;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.toggle(p, tor))\r\n return this.bonds[i];\r\n }\r\n\r\n for (let i = this.graphics.length - 1; i >= 0; --i) {\r\n const g = this.graphics[i];\r\n if (g.toggle(p, tor))\r\n return this.graphics[i];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Set Rxnfile\r\n * @function setRxnfile\r\n * @param {string} rxnfile - the input rxnfile\r\n * @returns the Mol object\r\n */\r\n setRxnfile(rxnfile) {\r\n return this;\r\n }\r\n\r\n setRxnV3000(lines) {\r\n return this;\r\n }\r\n\r\n readCtabs(lines, i, n, list, endtoken) {\r\n for (let k = 0; k < n; ++k) {\r\n const m = new JSDraw2.Mol();\r\n const pos: any = {};\r\n m.setMolV3000(lines, i, true, pos, endtoken);\r\n i = pos.i;\r\n if (!m.isEmpty())\r\n list.push(m);\r\n }\r\n return i;\r\n }\r\n\r\n setRxnV2000(lines) {\r\n return this;\r\n }\r\n\r\n setRxn(rxn, bondlength) {\r\n return this;\r\n }\r\n\r\n /**\r\n * Get Rxnfile\r\n * @function getRxnfile\r\n * @param {bool} groupbyplus - indicate if grouping reactants/products by explicit plus signs\r\n * @param {bool} v3000 - indicate if rendering the rxnfile in V3000 format\r\n * @returns a string\r\n */\r\n getRxnfile(groupbyplus, v3000) {\r\n const rxn = this.parseRxn(true, groupbyplus);\r\n if (rxn == null)\r\n return null;\r\n\r\n if (v3000)\r\n return this.getRxnV3000(rxn);\r\n else\r\n return this.getRxnV2000(rxn);\r\n }\r\n\r\n getAllBrackets() {\r\n const list = [];\r\n for (let j = 0; j < this.graphics.length; ++j) {\r\n const b = this.graphics[j];\r\n if (JSDraw2.Bracket.cast(b) != null)\r\n list.push(b);\r\n }\r\n return list;\r\n }\r\n\r\n getAllTexts() {\r\n const list = [];\r\n for (let j = 0; j < this.graphics.length; ++j) {\r\n const b = this.graphics[j];\r\n if (JSDraw2.Text.cast(b) != null)\r\n list.push(b);\r\n }\r\n return list;\r\n }\r\n\r\n getRxnV2000(rxn) {\r\n return null;\r\n }\r\n\r\n getRxnV3000(rxn, groupbyplus?: boolean) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Get JSDraw xml file format\r\n * @function getXml\r\n * @param {number} width - the width of the view\r\n * @param {number} height - the height of the view\r\n * @param {bool} viewonly - in viewonly mode\r\n * @returns a string\r\n */\r\n getXml(width: number, height: number, viewonly: boolean, svg: any, len: number) {\r\n return this._getXml(width, height, viewonly, svg, len);\r\n }\r\n\r\n getHtml(width: number, height: number, viewonly: boolean, svg: any, len: number) {\r\n return this.getXml(width, height, viewonly, svg, len);\r\n }\r\n\r\n _getXml(width: number, height: number, viewonly: boolean, svg: any, len: number, inside?: boolean) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Set Secptrum JDX data\r\n * @function setJdx\r\n * @param {string} data - JDX string\r\n * @returns a Mol object\r\n */\r\n setJdx(data, bondlength) {\r\n return this;\r\n }\r\n\r\n /**\r\n * Set JSDraw xml file format\r\n * @function setXml\r\n * @param {string} xml - the input JSDraw html/xml string\r\n * @returns a Mol object\r\n */\r\n setXml(xml) {\r\n return this;\r\n }\r\n\r\n setHtml(xml) {\r\n return this.setXml(xml);\r\n }\r\n\r\n toScreen(screenBondLength): number {\r\n let len = this.medBondLength();\r\n if (!(len > 0))\r\n len = 1.56;\r\n\r\n const scale = screenBondLength / len;\r\n this.scale(scale);\r\n return scale;\r\n }\r\n\r\n /**\r\n * Scale the molecule\r\n * @function scale\r\n * @param {number} scale - the scaling factor\r\n * @param {Point} origin - the origin of scaling\r\n * @returns null\r\n */\r\n scale(scale, origin?: Point): void {\r\n if (!(scale > 0))\r\n return;\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n a.p.scale(scale, origin);\r\n if (a.rgroup != null) {\r\n if (a.rgroup != null)\r\n a.rgroup.scale(scale, origin);\r\n for (let j = 0; j < a.rgroup.mols.length; ++j)\r\n a.rgroup.mols[j].scale(scale, origin);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.graphics.length; ++i)\r\n this.graphics[i].scale(scale, origin);\r\n }\r\n\r\n /**\r\n * Flip the molecule around an X axis\r\n * @function flipX\r\n * @param {number} x - the x axis\r\n * @returns null\r\n */\r\n flipX(x: number): void {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const p = this.atoms[i].p;\r\n p.x = x - (p.x - x);\r\n }\r\n for (let i = 0; i < this.graphics.length; ++i)\r\n this.graphics[i].flipX(x);\r\n }\r\n\r\n /**\r\n * Flip the molecule around a Y axis\r\n * @function flipY\r\n * @param {number} y - the y axis\r\n * @returns null\r\n */\r\n flipY(y: number): void {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const p = this.atoms[i].p;\r\n p.y = y - (p.y - y);\r\n }\r\n for (let i = 0; i < this.graphics.length; ++i)\r\n this.graphics[i].flipY(y);\r\n }\r\n\r\n clearFlag(): void {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n this.atoms[i].f = null;\r\n this.atoms[i].ringclosures = null;\r\n }\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n this.bonds[i].f = null;\r\n }\r\n\r\n _connectFragsByPlus(frags, bondlen) {\r\n return null;\r\n }\r\n\r\n _splitFrags(frags) {\r\n for (let i = 0; i < frags.length; ++i) {\r\n const ss = frags[i].splitFragments();\r\n if (ss.length > 0) {\r\n frags.splice(i, 1);\r\n for (let k = 0; k < ss.length; ++k)\r\n frags.splice(i, 0, ss[k]);\r\n i += ss.length - 1;\r\n }\r\n }\r\n }\r\n\r\n _connectNextLine(frags, rect, above, arrow, bondlen) {\r\n return null;\r\n }\r\n\r\n detectRxn(arrow) {\r\n return null;\r\n }\r\n\r\n _findCloseTexts(t, texts, dy, ret): void {\r\n for (let k = 0; k < texts.length; ++k) {\r\n const x = texts[k];\r\n if (x == null)\r\n continue;\r\n\r\n const r1 = t.rect();\r\n const r2 = x.rect();\r\n if (Math.abs(r1.top - r2.top) < dy || Math.abs(r1.top - r2.bottom()) < dy ||\r\n Math.abs(r1.bottom() - r2.top) < dy || Math.abs(r1.bottom() - r2.bottom()) < dy) {\r\n const overlap = Math.min(r1.right(), r2.right()) - Math.max(r1.left, r2.left);\r\n if (overlap >= Math.min(r1.width, r2.width) / 2) {\r\n ret.push(x);\r\n texts[k] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n parseRxn2() {\r\n return null;\r\n }\r\n\r\n /**\r\n * Test if the molecule is a reaction\r\n * @function isRxn\r\n * @returns true or false\r\n */\r\n isRxn() {\r\n return null;\r\n }\r\n\r\n _groupByPlus(rxn) {\r\n if (rxn == null)\r\n return rxn;\r\n\r\n const pluses = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].T == 'PLUS')\r\n pluses.push(this.graphics[i]);\r\n }\r\n\r\n if (pluses.length == 0) {\r\n if (rxn.reactants.length > 1) {\r\n for (let i = 1; i < rxn.reactants.length; ++i)\r\n rxn.reactants[0].mergeMol(rxn.reactants[i]);\r\n rxn.reactants = [rxn.reactants[0]];\r\n }\r\n if (rxn.products.length > 1) {\r\n for (let i = 1; i < rxn.products.length; ++i)\r\n rxn.products[0].mergeMol(rxn.products[i]);\r\n rxn.products = [rxn.products[0]];\r\n }\r\n } else {\r\n // order by x\r\n const xx = [];\r\n for (let i = 0; i < pluses.length; ++i) {\r\n const x = pluses[i].p.x;\r\n let p = xx.length;\r\n for (let k = 0; k < xx.length; ++k) {\r\n if (x < xx[k]) {\r\n p = k;\r\n break;\r\n }\r\n }\r\n\r\n xx.splice(p, 0, x);\r\n }\r\n\r\n rxn.reactants = this._groupByPlus2(xx, rxn.reactants);\r\n rxn.products = this._groupByPlus2(xx, rxn.products);\r\n }\r\n return rxn;\r\n }\r\n\r\n _groupByPlus2(pluses, mols): Mol[] {\r\n const list: Mol[] = [];\r\n const n = pluses.length;\r\n for (let i = 0; i < mols.length; ++i) {\r\n const m = mols[i];\r\n const cx = mols[i].center().x;\r\n let f = false;\r\n for (let k = 0; k < n; ++k) {\r\n if (cx < pluses[k]) {\r\n if (list[k] == null)\r\n list[k] = m;\r\n else\r\n list[k].mergeMol(m);\r\n f = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!f) {\r\n if (list[n] == null)\r\n list[n] = m;\r\n else\r\n list[n].mergeMol(m);\r\n }\r\n }\r\n\r\n const ret: Mol[] = [];\r\n for (let i = 0; i < list.length; ++i) {\r\n if (list[i] != null)\r\n ret.push(list[i]);\r\n }\r\n return ret;\r\n }\r\n\r\n /**\r\n * Parse the molecule as a reaction\r\n * @function parseRxn\r\n * @returns a Reaction object: { reactants, products, arrow, above, below }\r\n */\r\n parseRxn(copygraphics?: boolean, groupbyplus?: boolean) {\r\n let rxn = this._parseRxn();\r\n if (groupbyplus)\r\n rxn = this._groupByPlus(rxn);\r\n\r\n // if (rxn != null && copygraphics) {\r\n // var brackets = this.getAllBrackets();\r\n // var texts = this.getAllTexts();\r\n // this._addGraphicsRxnMol(rxn.reactants, brackets, texts);\r\n // this._addGraphicsRxnMol(rxn.products, brackets, texts);\r\n // }\r\n\r\n return rxn;\r\n }\r\n\r\n _addGraphicsRxnMol(mols, brackets, texts) {\r\n for (let i = 0; i < mols.length; ++i) {\r\n const m = mols[i];\r\n for (let k = 0; k < brackets.length; ++k) {\r\n const b = brackets[k];\r\n if (b != null && b.allAtomsIn(m)) {\r\n m.graphics.push(b);\r\n brackets[k] = null;\r\n }\r\n }\r\n for (let k = 0; k < texts.length; ++k) {\r\n const b = texts[k];\r\n if (b != null && b.allAnchorsIn(m)) {\r\n m.graphics.push(b);\r\n brackets[k] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n _parseRxn() {\r\n return null;\r\n }\r\n\r\n _hasOverlap(left, right, rect) {\r\n const l = rect.left;\r\n const r = rect.right();\r\n return l < right && r > left;\r\n }\r\n\r\n _sortTextByTop(texts) {\r\n if (texts == null || texts.length == 0)\r\n return texts;\r\n\r\n const yy = [];\r\n const sorted = [];\r\n for (let i = 0; i < texts.length; ++i) {\r\n const y = texts[i]._rect.top;\r\n let p = yy.length;\r\n for (let k = 0; k < yy.length; ++k) {\r\n if (y < yy[k]) {\r\n p = k;\r\n break;\r\n }\r\n }\r\n\r\n yy.splice(p, 0, y);\r\n sorted.splice(p, 0, texts[i]);\r\n }\r\n\r\n return sorted;\r\n }\r\n\r\n /**\r\n * Get the whole fragment containing an input atom\r\n * @function getFragment\r\n * @param {Atom} a - the input atom\r\n * @returns a Mol object\r\n */\r\n getFragment(a: Atom, parent?: Mol) {\r\n this.setAtomBonds();\r\n this.clearFlag();\r\n\r\n const tree = this._getTree(a).tree;\r\n const path = [];\r\n tree.list(path, 'breadthfirst');\r\n\r\n const m = new JSDraw2.Mol();\r\n for (let k = 0; k < path.length; ++k) {\r\n const b = path[k];\r\n if (b.a != null && b.ringclosure == null)\r\n m._addAtom(b.a, parent);\r\n if (b.b != null)\r\n m._addBond(b.b, parent);\r\n }\r\n return m;\r\n }\r\n\r\n /**\r\n * Split it into fragments\r\n * @function splitFragments\r\n * @returns an array of Mol\r\n */\r\n splitFragments(skipHiddenAtoms?: boolean) {\r\n this.clearFlag();\r\n\r\n let fragid = -1;\r\n const bonds: Bond[] = scil.Utils.cloneArray(this.bonds);\r\n while (bonds.length > 0) {\r\n const b: Bond = bonds[0];\r\n if (skipHiddenAtoms) {\r\n if (b.a1.hidden || b.a2.hidden) {\r\n bonds.splice(0, 1);\r\n continue;\r\n }\r\n }\r\n b.f = b.a1.f = b.a2.f = ++fragid;\r\n bonds.splice(0, 1);\r\n\r\n while (true) {\r\n let n = 0;\r\n for (let i = bonds.length - 1; i >= 0; --i) {\r\n const b = bonds[i];\r\n if (b.a1.hidden || b.a2.hidden) {\r\n bonds.splice(i, 1);\r\n continue;\r\n }\r\n\r\n if (b.f == null && (b.a1.f == fragid || b.a2.f == fragid)) {\r\n b.f = b.a1.f = b.a2.f = fragid;\r\n bonds.splice(i, 1);\r\n ++n;\r\n }\r\n }\r\n\r\n if (n == 0)\r\n break;\r\n }\r\n }\r\n\r\n const frags = [];\r\n for (let k = 0; k <= fragid; ++k) {\r\n const m = new JSDraw2.Mol();\r\n frags.push(m);\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].f == k)\r\n m._addAtom(this.atoms[i], this);\r\n }\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i].f == k)\r\n m._addBond(this.bonds[i], this);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].f == null) {\r\n if (skipHiddenAtoms && this.atoms[i].hidden)\r\n continue;\r\n\r\n const m = new JSDraw2.Mol();\r\n frags.push(m);\r\n m._addAtom(this.atoms[i], this);\r\n }\r\n }\r\n\r\n // brackets\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const br = JSDraw2.Bracket.cast(this.graphics[i]);\r\n if (br == null)\r\n continue;\r\n\r\n for (let k = 0; k < frags.length; ++k) {\r\n if (br.atoms == null || br.atoms.length == 0)\r\n continue;\r\n if (frags[k].containsAllAtoms(br.atoms)) {\r\n frags[k].graphics.push(br);\r\n for (let j = 0; j < this.graphics.length; ++j) {\r\n const t = JSDraw2.Text.cast(this.graphics[j]);\r\n if (t != null && t.anchors != null && t.anchors.length == 1 && t.anchors[0] == br)\r\n frags[k].graphics.push(t);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // attached texts\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t == null || t.anchors == null || t.anchors.length == 0)\r\n continue;\r\n\r\n for (let k = 0; k < frags.length; ++k) {\r\n if (frags[k].containsAllAtoms(t.anchors))\r\n frags[k].graphics.push(t);\r\n }\r\n }\r\n\r\n\r\n // set chiral flags\r\n for (let i = 0; i < frags.length; ++i) {\r\n const frag = frags[i];\r\n for (let j = 0; j < frag.atoms.length; ++j) {\r\n const g = frag.atoms[j].group;\r\n if (g != null && g.type == 'chiral') {\r\n frag.chiral = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < frags.length; ++i)\r\n frags[i].bondlength = this.bondlength;\r\n\r\n return frags;\r\n }\r\n\r\n containsAllAtoms(atoms) {\r\n if (atoms == null || atoms.length == 0)\r\n return false;\r\n for (let i = 0; i < atoms.length; ++i) {\r\n if (scil.Utils.indexOf(this.atoms, atoms[i]) < 0)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Check if the Mol contains an atom\r\n * @function containsAtom\r\n * @param {Atom} a - the input atom\r\n * @returns true or false\r\n */\r\n containsAtom(a) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i] == a)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n setAtomBonds(clear?: boolean) {\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].bonds = null;\r\n\r\n if (clear)\r\n return;\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n\r\n if (b.a1.bonds == null)\r\n b.a1.bonds = [];\r\n b.a1.bonds.push(b);\r\n\r\n if (b.a2.bonds == null)\r\n b.a2.bonds = [];\r\n b.a2.bonds.push(b);\r\n }\r\n }\r\n\r\n setBondOrders() {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n b.order = b.valence();\r\n }\r\n\r\n if (DEBUG.enable) {\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n DEBUG.print(b.a1.id + '-' + b.a2.id + ' ' + b.order);\r\n }\r\n }\r\n\r\n const rings = this._getRings();\r\n const ars = [];\r\n while (rings.length > 0) {\r\n let n = 0;\r\n for (let i = rings.length - 1; i >= 0; --i) {\r\n const r = rings[i];\r\n if (this.isAromaticRing(r)) {\r\n ++n;\r\n ars.push(r);\r\n rings.splice(i, 1);\r\n for (let k = 0; k < r.length; ++k)\r\n r[k].order = 1.5;\r\n }\r\n }\r\n\r\n if (n == 0)\r\n break;\r\n }\r\n\r\n return {arrings: ars, rings: rings};\r\n }\r\n\r\n isAromaticRing(r: Bond[]): boolean {\r\n if (r.length == 6) {\r\n let b1 = r[0];\r\n for (let k = 1; k <= r.length; ++k) {\r\n const b2 = r[k == r.length ? 0 : k];\r\n if (!(b1.order == 1 && b2.order == 2 ||\r\n b1.order == 2 && b2.order == 1 ||\r\n b1.order == 1.5 && b2.order >= 1 && b2.order <= 2 ||\r\n b2.order == 1.5 && b1.order >= 1 && b1.order <= 2)) {\r\n return false;\r\n }\r\n b1 = b2;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (r.length == 5) {\r\n let b1 = r[0];\r\n for (let k = 1; k <= r.length; ++k) {\r\n const b2 = r[k == r.length ? 0 : k];\r\n if (b1.order == 1 && b2.order == 1) {\r\n let v;\r\n if (b1.a1 == b2.a1 || b1.a1 == b2.a2)\r\n v = b1.a1;\r\n else if (b1.a2 == b2.a1 || b1.a2 == b2.a2)\r\n v = b1.a2;\r\n\r\n if (v != null &&\r\n (r[(k + 1) % 5].order == 2 || r[(k + 1) % 5].order == 1.5) &&\r\n r[(k + 2) % 5].order == 1 &&\r\n (r[(k + 3) % 5].order == 2 || r[(k + 3) % 5].order == 1.5)) {\r\n if (v.elem == 'N' || v.elem == 'O' || v.elem == 'S' || v.elem == 'P') {\r\n return true;\r\n } else if (v.elem == 'C') {\r\n for (let i = 0; i < v.bonds.length; ++i) {\r\n const order = v.bonds[i].order;\r\n if (order == 1.5 || order == 2)\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n b1 = b2;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n prepareScreen() {\r\n const atoms = JSDraw2.FormulaParser.getAtomStats(this).elements;\r\n const allrings = this.setBondOrders();\r\n\r\n const bonds = {0: 0, 1: 0, 1.5: 0, 2: 0, 3: 0};\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n ++bonds[this.bonds[i].order];\r\n\r\n const rings = {n5: 0, a5: 0, n6: 0, a6: 0};\r\n for (let i = 0; i < allrings.arrings.length; ++i) {\r\n if (allrings.arrings[i].length == 5)\r\n ++rings.a5;\r\n else if (allrings.arrings[i].length == 6)\r\n ++rings.a6;\r\n }\r\n for (let i = 0; i < allrings.rings.length; ++i) {\r\n if (allrings.rings[i].length == 5)\r\n ++rings.n5;\r\n else if (allrings.rings[i].length == 6)\r\n ++rings.n6;\r\n }\r\n\r\n return {atoms: atoms, bonds: bonds, rings: rings};\r\n }\r\n\r\n clearAtomMap(ai?: number) {\r\n let n = 0;\r\n if (ai == null) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].atommapid != null) {\r\n ++n;\r\n this.atoms[i].atommapid = null;\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (ai == this.atoms[i].atommapid) {\r\n ++n;\r\n this.atoms[i].atommapid = null;\r\n }\r\n }\r\n }\r\n return n;\r\n }\r\n\r\n getMaxMapId() {\r\n let maxid = 0;\r\n const list = this.atoms;\r\n for (let i = 0; i < list.length; ++i) {\r\n if (list[i].atommapid != null && list[i].atommapid >= maxid)\r\n maxid = list[i].atommapid;\r\n }\r\n return maxid + 1;\r\n }\r\n\r\n screen(target, fullstructure) {\r\n if (this.stats == null)\r\n this.stats = this.prepareScreen();\r\n if (target.stats == null)\r\n target.stats = target.prepareScreen();\r\n\r\n const atomsq = this.stats.atoms;\r\n const atomst = target.stats.atoms;\r\n let at = atomst['*'] == null ? 0 : atomst['*'];\r\n at += atomst['A'] == null ? 0 : atomst['A'];\r\n at += atomst['X'] == null ? 0 : atomst['X'];\r\n at += atomst['Q'] == null ? 0 : atomst['Q'];\r\n at += atomst['L'] == null ? 0 : atomst['L'];\r\n for (const e in atomsq) {\r\n if (e == 'H' || e == '*' || e == 'A' || e == 'X' || e == 'Q' || e == 'L')\r\n continue;\r\n\r\n if (fullstructure && !(atomsq[e] == atomst[e]) || !fullstructure && !(atomsq[e] <= atomst[e] + at))\r\n return false;\r\n }\r\n\r\n const bondsq = this.stats.bonds;\r\n const bondst = target.stats.bonds;\r\n for (const e in bondsq) {\r\n if (fullstructure && !(bondsq[e] == bondst[e]) || !fullstructure && !(bondsq[e] <= bondst[e]))\r\n return false;\r\n }\r\n\r\n return fullstructure &&\r\n this.stats.rings.a5 == target.stats.rings.a5 &&\r\n this.stats.rings.n5 == target.stats.rings.n5 &&\r\n this.stats.rings.a6 == target.stats.rings.a6 &&\r\n this.stats.rings.n6 == target.stats.rings.n6 ||\r\n !fullstructure &&\r\n this.stats.rings.a5 <= target.stats.rings.a5 &&\r\n this.stats.rings.n5 <= target.stats.rings.n5 &&\r\n this.stats.rings.a6 <= target.stats.rings.a6 &&\r\n this.stats.rings.n6 <= target.stats.rings.n6;\r\n }\r\n\r\n /**\r\n * Perform a full-structure search\r\n * @function fullstructureMatch\r\n * @param {Mol} target - the target mol\r\n * @returns true or false\r\n */\r\n fullstructureMatch(target: Mol, matchstereobonds?: boolean): boolean {\r\n if (\r\n target == null || this.atoms.length != target.atoms.length ||\r\n this.bonds.length != target.bonds.length || this.getMolWeight() != target.getMolWeight()\r\n ) return false;\r\n return this.aamap(target, true, null, matchstereobonds) != null;\r\n }\r\n\r\n getBrackets() {\r\n const list = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const b = JSDraw2.Bracket.cast(this.graphics[i]);\r\n if (b != null) {\r\n list.push(b);\r\n b.sgrouptexts = this.getSgroupTexts(b);\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n // todo: match included atoms as well\r\n matchBrackets(target): boolean {\r\n const list1 = this.getBrackets();\r\n const list2 = target == null ? [] : target.getBrackets();\r\n if (list1.length != list2.length)\r\n return false;\r\n\r\n for (let i = 0; i < list1.length; ++i) {\r\n let f = false;\r\n for (let k = 0; k < list2.length; ++k) {\r\n if (list1[i].sgrouptexts == list2[k].sgrouptexts) {\r\n f = true;\r\n break;\r\n }\r\n }\r\n if (f != null)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Perform a sub-structure search using the Mol as a query\r\n * @function substructureMatch\r\n * @param {Mol} target - the target mol\r\n * @returns true or false\r\n */\r\n substructureMatch(target) {\r\n return this.aamap(target, false) != null;\r\n }\r\n\r\n /**\r\n * Perform atom-by-atom mapping using the Mol as a query\r\n * @function aamap\r\n * @param {Mol} target - the target mol\r\n * @param {bool} fullstructure - indicate if performing a full-structure search\r\n * @param {bool} highlighting - indicate if highlighting mapped atoms and bonds\r\n * @returns the map result as a dictionary\r\n */\r\n aamap(target, fullstructure, highlighting?: boolean, matchsterebonds?: boolean) {\r\n const map = this.aamap2(target, fullstructure, matchsterebonds);\r\n\r\n if (highlighting) {\r\n target.setColor(map == null ? null : 'black');\r\n if (map != null) {\r\n for (let i = 0; i < map.atoms.length; ++i)\r\n map.atoms[i].t.color = 'red';\r\n for (let i = 0; i < map.bonds.length; ++i)\r\n map.bonds[i].t.color = 'red';\r\n }\r\n }\r\n\r\n return map;\r\n }\r\n\r\n aamap2(target, fullstructure, matchsterebonds) {\r\n if (DEBUG.enable) {\r\n DEBUG.clear();\r\n }\r\n\r\n if (!this.screen(target, fullstructure)) {\r\n if (DEBUG.enable)\r\n DEBUG.print('screen failed');\r\n return null;\r\n }\r\n\r\n const path = this._bfPath();\r\n target.setAtomBonds();\r\n target.clearFlag();\r\n this.clearFlag();\r\n\r\n let i = 0;\r\n while (i < path.length) {\r\n let f = false;\r\n let n = path[i];\r\n\r\n if (n.b == null) { // start of new fragment\r\n for (let j = (n.f == null ? 0 : (n.f + 1)); j < target.atoms.length; ++j) {\r\n const t = target.atoms[j];\r\n n.f = j;\r\n if (t.f == null && JSDraw2.Atom.match(t, n.a)) {\r\n f = true;\r\n n.a.f = t;\r\n t.f = n.a;\r\n break;\r\n }\r\n }\r\n } else if (n.ringclosure != null) { // ring closure\r\n const b = target.findBond(n.b.a1.f, n.b.a2.f);\r\n if (b != null && n.b.order == b.order && (!matchsterebonds || n.b.type == b.type)) {\r\n f = true;\r\n b.f = n.b;\r\n n.b.f = b;\r\n }\r\n } else {\r\n const st = n.f == null ? 0 : n.f + 1;\r\n const t = n.startAtom().f;\r\n for (let k = st; k < t.bonds.length; ++k) {\r\n n.f = k;\r\n const b = t.bonds[k];\r\n const oa = b.otherAtom(t);\r\n if (b.f == null && oa.f == null && n.b.order == b.order && (!matchsterebonds || n.b.type == b.type) && JSDraw2.Atom.match(n.a, oa)) {\r\n f = true;\r\n n.a.f = oa;\r\n oa.f = n.a;\r\n n.b.f = b;\r\n b.f = n.b;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (f) {\r\n // step next\r\n ++i;\r\n if (DEBUG.enable) {\r\n let s = '';\r\n if (n.a != null)\r\n s += n.a.id + ' -> ' + n.a.f.id + ' ';\r\n if (n.b != null)\r\n s += n.b.a1.id + '-' + n.b.a2.id + ' -> ' + n.b.f.a1.id + '-' + n.b.f.a2.id;\r\n DEBUG.print(s);\r\n }\r\n } else {\r\n // then back-trace\r\n if (n.b != null && n.b.f != null) {\r\n n.b.f.f = null;\r\n n.b.f = null;\r\n }\r\n if (n.a != null && n.a.f != null) {\r\n n.a.f.f = null;\r\n n.a.f = null;\r\n }\r\n n.f = null;\r\n\r\n if (--i < 0) {\r\n if (DEBUG.enable)\r\n DEBUG.print('failed');\r\n return null;\r\n }\r\n n = path[i];\r\n if (n.b != null && n.b.f != null) {\r\n n.b.f.f = null;\r\n n.b.f = null;\r\n }\r\n if (n.a != null && n.a.f != null) {\r\n n.a.f.f = null;\r\n n.a.f = null;\r\n }\r\n\r\n if (DEBUG.enable)\r\n DEBUG.print('trace back');\r\n }\r\n }\r\n\r\n if (DEBUG.enable)\r\n DEBUG.print('succeed');\r\n\r\n const atommap = [];\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n atommap.push({q: this.atoms[i], t: this.atoms[i].f});\r\n\r\n const bondmap = [];\r\n for (let i = 0; i < this.bonds.length; ++i)\r\n bondmap.push({q: this.bonds[i], t: this.bonds[i].f});\r\n\r\n return {atoms: atommap, bonds: bondmap};\r\n }\r\n\r\n _setAromaticFlag() {\r\n for (let i = 0; i < this.atoms.length; ++i)\r\n this.atoms[i].aromatic = false;\r\n\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n const b = this.bonds[i];\r\n if (b.type == JSDraw2.BONDTYPES.DELOCALIZED)\r\n b.a1.aromatic = b.a2.aromatic = true;\r\n }\r\n }\r\n\r\n /**\r\n * Get SMILES\r\n * @function getSmiles\r\n * @returns a string\r\n */\r\n getSmiles() {\r\n return null;\r\n }\r\n\r\n _getSmiles() {\r\n return null;\r\n }\r\n\r\n _getRings() {\r\n // if (DEBUG.enable) {\r\n // DEBUG.clear();\r\n // }\r\n\r\n const rings = [];\r\n\r\n this.setAtomBonds();\r\n this.clearFlag();\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n this.clearFlag();\r\n for (let j = 0; j < i; ++j)\r\n this.atoms[j].f = 'ex';\r\n const start = this.atoms[i];\r\n const ret = this._getTree(start);\r\n if (ret.ri == 0)\r\n continue;\r\n\r\n const path = [];\r\n ret.tree.list(path, 'breadthfirst');\r\n\r\n for (let k = 0; k < path.length; ++k) {\r\n const b = path[k];\r\n if (b.depth > 3)\r\n break;\r\n\r\n if (b.ringclosure != null) {\r\n const ring = [b.b];\r\n rings.push(ring);\r\n\r\n let a = b.startAtom();\r\n let n = k;\r\n while (a != start) {\r\n for (let j = n - 1; j > 0; --j) {\r\n const t = path[j];\r\n if (t.a == a) {\r\n ring.push(t.b);\r\n a = t.startAtom();\r\n n = j;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n a = b.a;\r\n n = k;\r\n while (a != start) {\r\n for (let j = n - 1; j > 0; --j) {\r\n const t = path[j];\r\n if (t.a == a) {\r\n ring.splice(0, 0, t.b);\r\n a = t.startAtom();\r\n n = j;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // if (DEBUG.enable) {\r\n // for (let i = 0; i < rings.length; ++i) {\r\n // DEBUG.print(\"ring:\" + i);\r\n // var r = rings[i];\r\n // for (let j = 0; j < r.length; ++j) {\r\n // var s = \" \" + r[j].a1.id + \"-\" + r[j].a2.id;\r\n // DEBUG.print(s);\r\n // }\r\n // }\r\n // }\r\n return rings;\r\n }\r\n\r\n _bfPath() {\r\n const ss = [];\r\n const trees = this._getTrees();\r\n for (let i = 0; i < trees.length; ++i)\r\n trees[i].list(ss, 'breadthfirst');\r\n return ss;\r\n }\r\n\r\n _getTrees() {\r\n this.setAtomBonds();\r\n this.clearFlag();\r\n\r\n const starts = [];\r\n let ri = 0;\r\n while (true) {\r\n let start = null;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.f == null && !a.isMarkedStereo()) {\r\n start = a;\r\n break;\r\n }\r\n }\r\n\r\n if (start == null) {\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n const a = this.atoms[i];\r\n if (a.f == null/* && !a.isMarkedStereo() */) {\r\n start = a;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (start == null)\r\n break;\r\n\r\n const ret = this._getTree(start, ri);\r\n starts.push(ret.tree);\r\n ri = ret.ri;\r\n }\r\n\r\n return starts;\r\n }\r\n\r\n // breadthfirst\r\n _getTree(a: Atom, ri?: number) {\r\n if (ri == null)\r\n ri = 0;\r\n\r\n const start = new JSDraw2.BA(null, a, null);\r\n start.depth = 0;\r\n\r\n start.a.f = true;\r\n const stack = new JSDraw2.Stack();\r\n stack.push(start);\r\n\r\n let ba;\r\n while ((ba = stack.popHead()) != null) {\r\n const bonds = ba.a.bonds;\r\n if (bonds == null)\r\n continue;\r\n\r\n for (let i = 0; i < bonds.length; ++i) {\r\n const b = bonds[i];\r\n if (b.f)\r\n continue;\r\n b.f = true;\r\n\r\n let next = null;\r\n const oa = b.otherAtom(ba.a);\r\n if (oa.f == 'ex')\r\n continue;\r\n\r\n if (oa.f == null) {\r\n oa.f = true;\r\n next = new JSDraw2.BA(b, oa, null);\r\n stack.push(next);\r\n } else {\r\n ++ri;\r\n if (oa.f == true && oa.ringclosures == null)\r\n oa.ringclosures = [];\r\n oa.ringclosures.push({ri: ri, next: new JSDraw2.BA(b, ba.a, ri)});\r\n next = new JSDraw2.BA(b, oa, ri);\r\n }\r\n ba.addNext(next);\r\n }\r\n }\r\n\r\n return {tree: start, ri: ri};\r\n }\r\n\r\n // depth-first\r\n _getPath(b) {\r\n const stack = new JSDraw2.Stack();\r\n stack.push({b: b, a: b.a1.bonds.length > b.a2.bonds.length ? b.a1 : b.a2});\r\n\r\n b.a1.f = true;\r\n const path = [];\r\n while ((b = stack.pop()) != null) {\r\n if (b.b.f)\r\n continue;\r\n\r\n path.push(b);\r\n if (b.a.f)\r\n b.ringclosure = true;\r\n b.b.f = b.a.f = true;\r\n\r\n const bonds = b.a.bonds;\r\n for (let i = bonds.length - 1; i >= 0; --i) {\r\n if (!bonds[i].f)\r\n stack.push({b: bonds[i], a: bonds[i].otherAtom(b.a)});\r\n }\r\n }\r\n\r\n return path;\r\n }\r\n\r\n /**\r\n * Get molecular formula\r\n * @function getFormula\r\n * @param {bool} html - indicate if rendering the formula in HTML format\r\n * @returns a string\r\n */\r\n getFormula(html: boolean): string {\r\n const rxn = this.parseRxn();\r\n if (rxn == null)\r\n return this._getFormula(html);\r\n\r\n let s = '';\r\n if (rxn.arrow != null) {\r\n for (let i = 0; i < rxn.reactants.length; ++i)\r\n s += (i > 0 ? ' + ' : '') + rxn.reactants[i]._getFormula(html);\r\n s += html ? ' → ' : ' ---> ';\r\n for (let i = 0; i < rxn.products.length; ++i)\r\n s += (i > 0 ? ' + ' : '') + rxn.products[i]._getFormula(html);\r\n return s;\r\n } else {\r\n for (let i = 0; i < rxn.reactants.length; ++i)\r\n s += (i > 0 ? ' + ' : '') + rxn.reactants[i]._getFormula(html);\r\n }\r\n return s;\r\n }\r\n\r\n _getFormula(html): string {\r\n const m = this.expandSuperAtoms();\r\n const stats = JSDraw2.FormulaParser.getAtomStats(m);\r\n return JSDraw2.FormulaParser.stats2mf(stats, html);\r\n }\r\n\r\n /**\r\n * Get molecular weight\r\n * @function getMolWeight\r\n * @returns a number\r\n */\r\n getMolWeight() {\r\n const mw = this.getMixtureMW();\r\n if (mw > 0)\r\n return mw;\r\n\r\n if (this.hasGenericAtom())\r\n return null;\r\n\r\n const m = this.expandSuperAtoms();\r\n const stats = JSDraw2.FormulaParser.getAtomStats(m);\r\n const sum = JSDraw2.FormulaParser.stats2mw(stats);\r\n return sum == null ? null : Math.round(sum * 10000) / 10000;\r\n }\r\n\r\n getMixtureMW() {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const br = JSDraw2.Bracket.cast(this.graphics[i]);\r\n if (br == null || !(br.type == '' || br.type == null))\r\n continue;\r\n\r\n const t = this.getSgroupText(br, 'POLYMER_MW');\r\n if (t == null)\r\n continue;\r\n\r\n const s = scil.Utils.trim(t.text);\r\n if (s != null && scil.Utils.startswith(s, 'mw=')) {\r\n const n = s.substr(3);\r\n return parseFloat(n);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get exact mass\r\n * @function getExactMass\r\n * @returns a number\r\n */\r\n getExactMass() {\r\n if (this.hasGenericAtom())\r\n return null;\r\n\r\n const m = this.expandSuperAtoms();\r\n const stats = JSDraw2.FormulaParser.getAtomStats(m);\r\n const sum = JSDraw2.FormulaParser.stats2em(stats);\r\n return sum == null ? null : Math.round(sum * 10000) / 10000;\r\n }\r\n\r\n getAllBonds(a) {\r\n const ret = [];\r\n const bonds = this.bonds;\r\n for (let i = 0; i < bonds.length; ++i) {\r\n if (bonds[i].a1 == a || bonds[i].a2 == a)\r\n ret.push(bonds[i]);\r\n }\r\n return ret;\r\n }\r\n\r\n getAllBondAtoms(a: Atom): Atom[] {\r\n const ret: Atom[] = [];\r\n const bonds: Bond[] = this.bonds;\r\n for (let i = 0; i < bonds.length; ++i) {\r\n if (bonds[i].a1 == a)\r\n ret.push(bonds[i].a2);\r\n else if (bonds[i].a2 == a)\r\n ret.push(bonds[i].a1);\r\n }\r\n return ret;\r\n }\r\n\r\n countSelected() {\r\n let n = 0;\r\n for (let i = 0; i < this.atoms.length; ++i) {\r\n if (this.atoms[i].selected)\r\n ++n;\r\n }\r\n for (let i = 0; i < this.bonds.length; ++i) {\r\n if (this.bonds[i].selected)\r\n ++n;\r\n }\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n if (this.graphics[i].selected)\r\n ++n;\r\n }\r\n return n;\r\n }\r\n\r\n setSgroup(br, fieldtype, v, x, y) {\r\n if (v == '')\r\n v = null;\r\n\r\n if (fieldtype == 'BRACKET_TYPE' && v == 'mul' && br.subscript != null && br.subscript != '') {\r\n v = br.subscript;\r\n br.subscript = null;\r\n }\r\n\r\n let t = this.getSgroupText(br, fieldtype);\r\n if (v == null) {\r\n if (t != null) {\r\n this.delGraphics(t);\r\n return t;\r\n }\r\n } else {\r\n if (t != null) {\r\n if (t.text != v) {\r\n t.text = v;\r\n return t;\r\n }\r\n } else {\r\n const r = new JSDraw2.Rect(x, y, 0, 0);\r\n t = new JSDraw2.Text(r, v);\r\n t.fieldtype = fieldtype;\r\n t.anchors.push(br);\r\n br._parent.addGraphics(t);\r\n return t;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getSgroupText(br, fieldtype): any {\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null && t.fieldtype == fieldtype && t.anchors.length == 1 && t.anchors[0] == br)\r\n return t;\r\n }\r\n return null;\r\n }\r\n\r\n getSgroupTexts(br): string {\r\n const ss: any[] = [];\r\n for (let i = 0; i < this.graphics.length; ++i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null && t.anchors.length == 1 && t.anchors[0] == br)\r\n ss.push(t.text);\r\n }\r\n\r\n if (ss.length == 0)\r\n return null;\r\n\r\n ss.sort();\r\n return scil.Utils.array2str(ss, '; ');\r\n }\r\n\r\n removeTags(br, fieldtypes) {\r\n let n = 0;\r\n for (let i = this.graphics.length - 1; i >= 0; --i) {\r\n const t = JSDraw2.Text.cast(this.graphics[i]);\r\n if (t != null && t.anchors.length == 1 && t.anchors[0] == br && fieldtypes.indexOf(t.fieldtype + ',') >= 0) {\r\n this.delGraphics(t);\r\n ++n;\r\n }\r\n }\r\n return n;\r\n }\r\n}\r\n\r\nJSDraw2.Mol = Mol;\r\n\r\nvar JsMol: (typeof Mol) = Mol;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {JSDraw2ModuleType} from './types';\r\nimport type {IGraphics} from './types/jsdraw2';\r\nimport type {Rect} from './Rect';\r\n\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\n\r\n/**\r\n * Point class - define a position on the screen\r\n * @class scilligence.JSDraw2.Point\r\n */\r\nexport class PointInt {\r\n /**\r\n @property {number} x\r\n */\r\n\r\n /**\r\n @property {number} y\r\n */\r\n\r\n public x: number;\r\n public y: number;\r\n\r\n /**\r\n * @constructor Point\r\n * @param {number} x\r\n * @param {number} y\r\n */\r\n constructor(x: number, y: number) {\r\n this.x = isNaN(x) ? 0 : x;\r\n this.y = isNaN(y) ? 0 : y;\r\n }\r\n\r\n /**\r\n * Check if the x, y values are valid number\r\n * @function isValid\r\n * @returns true or false\r\n */\r\n isValid(): boolean {\r\n return !isNaN(this.x) && !isNaN(this.y);\r\n }\r\n\r\n /**\r\n * Get the length from the Point to the origin (0, 0)\r\n * @function length\r\n * @returns a number\r\n */\r\n length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y);\r\n }\r\n\r\n /**\r\n * Get the distance from this Point to another Point (p)\r\n * @function distTo\r\n * @param {Point} p - the other point\r\n * @returns a number\r\n */\r\n distTo(p: Point): number {\r\n const dx = this.x - p.x;\r\n const dy = this.y - p.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n }\r\n\r\n /**\r\n * Test if this point is on the line composing of p1-p2\r\n * @function onLine\r\n * @param {Point} p1 - the first point of the line\r\n * @param {Point} p2 - the second point of the line\r\n * @param {number} tor - the tolerance\r\n * @returns true or false\r\n */\r\n onLine(p1: Point, p2: Point, tor: number): boolean {\r\n const d2 = p1.distTo(p2);\r\n const d = p1.distTo(this) + p2.distTo(this) - d2;\r\n return Math.abs(d) <= tor * (50 / d2);\r\n }\r\n\r\n inTriangle(v1: Point, v2: Point, v3: Point): boolean {\r\n const b1 = JSDraw2.Point.sign(this, v1, v2) < 0.0;\r\n const b2 = JSDraw2.Point.sign(this, v2, v3) < 0.0;\r\n const b3 = JSDraw2.Point.sign(this, v3, v1) < 0.0;\r\n return b1 == b2 && b2 == b3;\r\n }\r\n\r\n flip(p1: Point, p2: Point): Point {\r\n const a0 = p2.angleTo(p1);\r\n const a = this.angleTo(p1) - a0;\r\n return this.rotateAround(p1, -2 * a);\r\n }\r\n\r\n /**\r\n * Move the Point\r\n * @function offset\r\n * @param {number} dx - offset x\r\n * @param {number} dy - offset y\r\n * @returns the Point itself\r\n */\r\n offset(dx: number, dy: number) {\r\n this.x += dx;\r\n this.y += dy;\r\n return this;\r\n }\r\n\r\n offset2(d: Point) {\r\n this.x += d.x;\r\n this.y += d.y;\r\n return this;\r\n }\r\n\r\n /**\r\n * Scale the point around an origin\r\n * @function offset\r\n * @param {number} scale - the scale factor\r\n * @param {Point} origin - the origin\r\n * @returns the Point itself\r\n */\r\n scale(s: number, origin?: Point): Point {\r\n if (origin != null) {\r\n this.x = (this.x - origin.x) * s + origin.x;\r\n this.y = (this.y - origin.y) * s + origin.y;\r\n } else {\r\n this.x *= s;\r\n this.y *= s;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Reverse the point\r\n * @function reverse\r\n * @returns the Point itself\r\n */\r\n reverse(): Point {\r\n this.x = -this.x;\r\n this.y = -this.y;\r\n return this;\r\n }\r\n\r\n /**\r\n * Clone the point\r\n * @function clone\r\n * @returns a new Point object\r\n */\r\n clone(): Point {\r\n return new JSDraw2.Point(this.x, this.y);\r\n }\r\n\r\n /**\r\n * Test if this Point equals to the other one\r\n * @function equalsTo\r\n * @param {Point} p - the other Point\r\n * @returns true or false\r\n */\r\n equalsTo(p: Point): boolean {\r\n return p != null && this.x == p.x && this.y == p.y;\r\n }\r\n\r\n /**\r\n * Get the angle of the point from X axis\r\n * @function angle\r\n * @returns a number in degree\r\n */\r\n angle(): number {\r\n const a = Math.atan2(this.y, this.x) * 180 / Math.PI;\r\n return a < 0 ? (a + 360) : a;\r\n }\r\n\r\n /**\r\n * Get the angle with a Point as the origin\r\n * @function angleTo\r\n * @param {Point} origin - the origin\r\n * @returns a number in degree\r\n */\r\n angleTo(origin: Point): number {\r\n const a = Math.atan2(this.y - origin.y, this.x - origin.x) * 180 / Math.PI;\r\n return a < 0 ? (a + 360) : a;\r\n }\r\n\r\n /**\r\n * Get the angle of p1-(this)-p2\r\n * @function angleAsOrigin\r\n * @param {Point} p1 - the first point\r\n * @param {Point} p2 - the second point\r\n * @returns a number in degree\r\n */\r\n angleAsOrigin(p1: Point, p2: Point): number {\r\n const v1 = p1.clone().offset(-this.x, -this.y);\r\n const v2 = p2.clone().offset(-this.x, -this.y);\r\n const a = v2.angle() - v1.angle();\r\n return a < 0 ? (a + 360) : a;\r\n }\r\n\r\n middleAngle(p1: Point, p2: Point): number {\r\n const a1 = p1.angleTo(this);\r\n const a2 = p2.angleTo(this);\r\n let mid = (a1 + a2) / 2;\r\n if (Math.abs(a1 - a2) > 180) {\r\n mid += 180;\r\n if (mid >= 360)\r\n mid -= 360;\r\n }\r\n return mid;\r\n }\r\n\r\n /**\r\n * Rotate the point around the origin\r\n * @function rotate\r\n * @param {number} deg - the degree to be rotated\r\n * @returns the Point itself\r\n */\r\n rotate(deg: number): Point {\r\n const d = this.length();\r\n if (d == 0)\r\n return this;\r\n const a = this.angle();\r\n this.x = d * Math.cos((a + deg) * Math.PI / 180);\r\n this.y = d * Math.sin((a + deg) * Math.PI / 180);\r\n return this;\r\n }\r\n\r\n /**\r\n * Rotate the point around a point\r\n * @function rotateAround\r\n * @param {Point} origin - the origin\r\n * @param {number} deg - the degree to be rotated\r\n * @returns the Point itself\r\n */\r\n rotateAround(origin: Point, deg: number, len?: number): Point {\r\n this.offset(-origin.x, -origin.y)\r\n .rotate(deg)\r\n .offset(origin.x, origin.y);\r\n if (len > 0)\r\n this.setLength(len, origin);\r\n return this;\r\n }\r\n\r\n setLength(len: number, origin?: Point): Point {\r\n if (origin == null)\r\n return this.scale(len / this.length());\r\n\r\n this.offset(-origin.x, -origin.y);\r\n this.scale(len / this.length());\r\n return this.offset(origin.x, origin.y);\r\n }\r\n\r\n toString(scale: number): string {\r\n if (!(scale > 0))\r\n scale = 1.0;\r\n return (this.x * scale).toFixed(3) + \" \" + (-this.y * scale).toFixed(3);\r\n }\r\n\r\n shrink(origin: Point, delta: number) {\r\n const d = this.distTo(origin);\r\n const s = (d - delta) / d;\r\n this.x = (this.x - origin.x) * s + origin.x;\r\n this.y = (this.y - origin.y) * s + origin.y;\r\n return this;\r\n }\r\n\r\n equalMove(start: Point): void {\r\n const d = Math.abs(this.x - start.x);\r\n if (this.y > start.y)\r\n this.y = start.y + d;\r\n else\r\n this.y = start.y - d;\r\n }\r\n}\r\n\r\nexport class Point extends PointInt {\r\n static fromString(s: string): Point {\r\n const ss = s.split(' ');\r\n if (ss.length != 2)\r\n return null;\r\n const x = parseFloat(ss[0]);\r\n const y = -parseFloat(ss[1]);\r\n if (isNaN(x) || isNaN(y))\r\n return null;\r\n\r\n return new JSDraw2.Point(x, y);\r\n }\r\n\r\n static centerOf(p1: Point, p2: Point): Point {\r\n return new JSDraw2.Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);\r\n }\r\n\r\n static sign(p1: Point, p2: Point, p3: Point): number {\r\n return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\r\n }\r\n\r\n static _onSegment(p: Point, q: Point, r: Point): boolean {\r\n if (q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y))\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n static _orientation(p: Point, q: Point, r: Point): number {\r\n // See 10th slides from following link for derivation of the formula\r\n // http://www.dcs.gla.ac.uk/~pat/52233/slides/Geometry1x1.pdf\r\n const val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\r\n\r\n if (val == 0)\r\n return 0; // colinear\r\n\r\n return (val > 0) ? 1 : 2; // clock or counterclock wise\r\n }\r\n\r\n static intersect(p1: Point, q1: Point, p2: Point, q2: Point): boolean {\r\n // Find the four orientations needed for general and\r\n // special cases\r\n const o1 = this._orientation(p1, q1, p2);\r\n const o2 = this._orientation(p1, q1, q2);\r\n const o3 = this._orientation(p2, q2, p1);\r\n const o4 = this._orientation(p2, q2, q1);\r\n\r\n // General case\r\n if (o1 != o2 && o3 != o4)\r\n return true;\r\n\r\n // Special Cases\r\n // p1, q1 and p2 are colinear and p2 lies on segment p1q1\r\n if (o1 == 0 && this._onSegment(p1, p2, q1))\r\n return true;\r\n\r\n // p1, q1 and p2 are colinear and q2 lies on segment p1q1\r\n if (o2 == 0 && this._onSegment(p1, q2, q1))\r\n return true;\r\n\r\n // p2, q2 and p1 are colinear and p1 lies on segment p2q2\r\n if (o3 == 0 && this._onSegment(p2, p1, q2))\r\n return true;\r\n\r\n // p2, q2 and q1 are colinear and q1 lies on segment p2q2\r\n if (o4 == 0 && this._onSegment(p2, q1, q2))\r\n return true;\r\n\r\n return false; // Doesn't fall in any of the above cases\r\n }\r\n}\r\n\r\nexport class Plus implements IGraphics {\r\n constructor(\r\n public p: Point\r\n ) {}\r\n\r\n rect(): Rect {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n // IGraphics\r\n\r\n [p: string]: any;\r\n\r\n readonly T: string;\r\n color: string;\r\n graphicsid: number;\r\n id: number;\r\n reject: any;\r\n selected: boolean;\r\n\r\n clone(map: any[]): IGraphics {\r\n throw new Error('Not implemented');\r\n }\r\n\r\n draw(surface: any, linewidth: number, m: any, fontsize: number): void {\r\n throw new Error('Not implemented');\r\n }\r\n}\r\n\r\nJSDraw2.Point = Point;\r\nJSDraw2.Plus = Plus;\r\n","//////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// JSDraw.Lite\r\n// Copyright (C) 2018 Scilligence Corporation\r\n// http://www.scilligence.com/\r\n//\r\n// (Released under LGPL 3.0: https://opensource.org/licenses/LGPL-3.0)\r\n//\r\n//////////////////////////////////////////////////////////////////////////////////\r\n\r\n// @ts-nocheck\r\n\r\nimport type {JSDraw2ModuleType} from './types';\r\n\r\nimport type {Point} from './Point';\r\n\r\ndeclare const JSDraw2: JSDraw2ModuleType;\r\n\r\nexport enum CornerTypes {\r\n TOPLEFT = \"topleft\",\r\n TOPRIGHT = \"topright\",\r\n BOTTOMLEFT = \"bottomleft\",\r\n BOTTOMRIGHT = \"bottomright\",\r\n}\r\n\r\nexport type CornerType = typeof CornerTypes[keyof typeof CornerTypes];\r\n\r\n/**\r\n * Rect class - define a Rectangle on the screen\r\n * @class scilligence.JSDraw2.Rect\r\n */\r\nexport class Rect {\r\n /**\r\n @property {number} left\r\n */\r\n /**\r\n @property {number} top\r\n */\r\n /**\r\n @property {number} width\r\n */\r\n /**\r\n @property {number} height\r\n */\r\n public left: number;\r\n public top: number;\r\n public width: number;\r\n public height: number;\r\n\r\n /**\r\n * @constructor Rect\r\n * @param {number} left\r\n * @param {number} top\r\n * @param {number} width\r\n * @param {number} height\r\n */\r\n constructor(left?: number, top?: number, width?: number, height?: number) {\r\n this.left = isNaN(left) ? 0 : left;\r\n this.top = isNaN(top) ? 0 : top;\r\n this.width = isNaN(width) ? 0 : width;\r\n this.height = isNaN(height) ? 0 : height;\r\n }\r\n\r\n /**\r\n * Set Rect based on two points\r\n * @function set\r\n * @param {Point} p1 - the first point\r\n * @param {Point} p2 - the second point\r\n * @returns the Rect itelf\r\n */\r\n set(p1: Point, p2: Point): Rect {\r\n this.left = Math.min(p1.x, p2.x);\r\n this.top = Math.min(p1.y, p2.y);\r\n this.width = Math.abs(p1.x - p2.x);\r\n this.height = Math.abs(p1.y - p2.y);\r\n return this;\r\n }\r\n\r\n /**\r\n * Get the top-left corner of the Rect\r\n * @function topleft\r\n * @returns a Point object\r\n */\r\n topleft(): Point {\r\n return new JSDraw2.Point(this.left, this.top);\r\n }\r\n\r\n /**\r\n * Get the top-right corner of the Rect\r\n * @function topright\r\n * @returns a Point object\r\n */\r\n topright(): Point {\r\n return new JSDraw2.Point(this.right(), this.top);\r\n }\r\n\r\n /**\r\n * Get the bottom-left corner of the Rect\r\n * @function bottomleft\r\n * @returns a Point object\r\n */\r\n bottomleft(): Point {\r\n return new JSDraw2.Point(this.left, this.bottom());\r\n }\r\n\r\n /**\r\n * Get the bottom-right corner of the Rect\r\n * @function bottomright\r\n * @returns a Point object\r\n */\r\n bottomright(): Point {\r\n return new JSDraw2.Point(this.right(), this.bottom());\r\n }\r\n\r\n fourPoints(): [Point, Point, Point, Point] {\r\n return [this.topleft(), this.topright(), this.bottomleft(), this.bottomright()];\r\n }\r\n\r\n /**\r\n * Clone this Rect\r\n * @function clone\r\n * @returns a new Rect object\r\n */\r\n clone(): Rect {\r\n return new JSDraw2.Rect(this.left, this.top, this.width, this.height);\r\n }\r\n\r\n /**\r\n * Check if the Rect is empty\r\n * @function isEmpty\r\n * @returns true or false\r\n */\r\n isEmpty(): boolean {\r\n return !(this.width > 0 && this.height > 0);\r\n }\r\n\r\n /**\r\n * Test if the Rect area contains a Point\r\n * @function contains\r\n * @param {Point} p - the point to be tested\r\n * @returns true or false\r\n */\r\n contains(p: Point): boolean {\r\n return p.x >= this.left && p.x <= this.right() && p.y >= this.top && p.y <= this.bottom();\r\n }\r\n\r\n /**\r\n * Get the right coordinate\r\n * @function right\r\n * @returns a number\r\n */\r\n right(): number {\r\n return this.left + this.width;\r\n }\r\n\r\n /**\r\n * Get the bottom coordinate\r\n * @function bottom\r\n * @returns a number\r\n */\r\n bottom(): number {\r\n return this.top + this.height;\r\n }\r\n\r\n /**\r\n * Get the center of the Rect\r\n * @function center\r\n * @returns the center as a Point object\r\n */\r\n center(): Point {\r\n return new JSDraw2.Point(this.left + this.width / 2, this.top + this.height / 2);\r\n }\r\n\r\n centerLeft(): Point {\r\n return new JSDraw2.Point(this.left, this.top + this.height / 2);\r\n }\r\n\r\n centerRight(): Point {\r\n return new JSDraw2.Point(this.right(), this.top + this.height / 2);\r\n }\r\n\r\n centerTop(): Point {\r\n return new JSDraw2.Point(this.left + this.width / 2, this.top);\r\n }\r\n\r\n centerBottom(): Point {\r\n return new JSDraw2.Point(this.left + this.width / 2, this.bottom());\r\n }\r\n\r\n /**\r\n * Offset the rect\r\n * @function offset\r\n * @param {number} dx - the x offset\r\n * @param {number} dy - the y offset\r\n * @returns the rect itself\r\n */\r\n offset(dx, dy): Rect {\r\n this.left += dx;\r\n this.top += dy;\r\n return this;\r\n }\r\n\r\n /**\r\n * Scale the rect\r\n * @function scale\r\n * @param {number} s - the scaling factor\r\n * @param {Point} origin - the base Point\r\n * @returns the rect itself\r\n */\r\n scale(s: number, origin: Point): Rect {\r\n if (origin != null) {\r\n this.left = (this.left - origin.x) * s + origin.x;\r\n this.top = (this.top - origin.y) * s + origin.y;\r\n } else {\r\n this.left *= s;\r\n this.top *= s;\r\n }\r\n this.width *= s;\r\n this.height *= s;\r\n return this;\r\n }\r\n\r\n /**\r\n * Union another Point\r\n * @function unionPoint\r\n * @param {Point} p - the Point to be unioned\r\n * @returns the rect itself\r\n */\r\n unionPoint(p: Point): Rect {\r\n if (p.x < this.left) {\r\n this.width += this.left - p.x;\r\n this.left = p.x;\r\n } else if (p.x > this.right()) {\r\n this.width += p.x - this.right();\r\n }\r\n\r\n if (p.y < this.top) {\r\n this.height += this.top - p.y;\r\n this.top = p.y;\r\n } else if (p.y > this.bottom()) {\r\n this.height += p.y - this.bottom();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Union another Rect\r\n * @function union\r\n * @param {Rect} r - the Rect to be unioned\r\n * @returns the rect itself\r\n */\r\n union(r: Rect): Rect {\r\n if (r == null)\r\n return;\r\n const right = this.right();\r\n const bottom = this.bottom();\r\n\r\n if (r.left < this.left)\r\n this.left = r.left;\r\n if (r.top < this.top)\r\n this.top = r.top;\r\n\r\n this.width = Math.max(right, r.right()) - this.left;\r\n this.height = Math.max(bottom, r.bottom()) - this.top;\r\n return this;\r\n }\r\n\r\n /**\r\n * Inflate the Rect\r\n * @function inflate\r\n * @param {number} dx - the delta in x direction\r\n * @param {number} dy - the delta in y direction\r\n * @returns the rect itself\r\n */\r\n inflate(dx: number, dy: number): Rect {\r\n if (dy == null)\r\n dx = dy;\r\n if (this.width + 2 * dx < 0)\r\n dx = -this.width / 2;\r\n if (this.height + 2 * dy < 0)\r\n dy = -this.height / 2;\r\n\r\n this.offset(-dx, -dy);\r\n this.width += 2 * dx;\r\n this.height += 2 * dy;\r\n\r\n return this;\r\n }\r\n\r\n distance2Point(p: Point): number {\r\n const r = this.right();\r\n const b = this.bottom();\r\n let d = new JSDraw2.Point(this.left, this.top).distTo(p);\r\n d = this._minDist(d, p, this.left + this.width / 2, this.top);\r\n d = this._minDist(d, p, r, this.top);\r\n d = this._minDist(d, p, r, this.top + this.height / 2);\r\n d = this._minDist(d, p, r, b);\r\n d = this._minDist(d, p, this.left + this.width / 2, b);\r\n d = this._minDist(d, p, this.left, b);\r\n d = this._minDist(d, p, this.left, this.height / 2);\r\n return d;\r\n }\r\n\r\n _minDist(d: number, p: Point, x: number, y: number): number {\r\n return Math.min(d, new JSDraw2.Point(x, y).distTo(p));\r\n }\r\n\r\n cross(p1: Point, p2: Point) {\r\n const c1 = this.contains(p1);\r\n const c2 = this.contains(p2);\r\n if (c1 && c2)\r\n return 0;\r\n else if (c1 && !c2)\r\n return -2;\r\n else if (!c1 && c2)\r\n return 2;\r\n\r\n const a = p2.angleTo(p1);\r\n const aa = [];\r\n aa[0] = new JSDraw2.Point(this.left, this.top).angleTo(p1) - a;\r\n aa[1] = new JSDraw2.Point(this.right(), this.top).angleTo(p1) - a;\r\n aa[2] = new JSDraw2.Point(this.right(), this.bottom()).angleTo(p1) - a;\r\n aa[3] = new JSDraw2.Point(this.left, this.bottom()).angleTo(p1) - a;\r\n for (let i = 0; i < aa.length; ++i) {\r\n if (aa[i] < 0)\r\n aa[i] += 360;\r\n }\r\n aa.sort(function(a, b) { return a - b; });\r\n\r\n if (aa[0] < 90 && aa[3] > 270)\r\n return 1;\r\n if (aa[0] > 90 && aa[0] < 180 && aa[3] > 180 && aa[3] < 270)\r\n return -1;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Convert the Rect into a string\r\n * @function toString\r\n * @param {number} scale - the scale factor\r\n * @returns a string\r\n */\r\n toString(scale: number): string {\r\n if (!(scale > 0))\r\n scale = 1.0;\r\n return (this.left * scale).toFixed(3) + \" \" +\r\n (-this.bottom() * scale).toFixed(3) + \" \" +\r\n (this.width * scale).toFixed(3) + \" \" +\r\n (this.height * scale).toFixed(3);\r\n }\r\n\r\n cornerTest(p: Point, tor: number): CornerType {\r\n if (Math.abs(p.x - this.left) < tor && Math.abs(p.y - this.top) < tor)\r\n return CornerTypes.TOPLEFT;\r\n if (Math.abs(p.x - this.right()) < tor && Math.abs(p.y - this.top) < tor)\r\n return CornerTypes.TOPRIGHT;\r\n if (Math.abs(p.x - this.left) < tor && Math.abs(p.y - this.bottom()) < tor)\r\n return CornerTypes.BOTTOMLEFT;\r\n if (Math.abs(p.x - this.right()) < tor && Math.abs(p.y - this.bottom()) < tor)\r\n return CornerTypes.BOTTOMRIGHT;\r\n return null;\r\n }\r\n\r\n moveCorner(corner: CornerType, d: Point): void {\r\n switch (corner) {\r\n case \"topleft\":\r\n this.set(this.topleft().offset(d.x, d.y), this.bottomright());\r\n break;\r\n case \"topright\":\r\n this.set(this.topright().offset(d.x, d.y), this.bottomleft());\r\n break;\r\n case \"bottomleft\":\r\n this.set(this.bottomleft().offset(d.x, d.y), this.topright());\r\n break;\r\n case \"bottomright\":\r\n this.set(this.bottomright().offset(d.x, d.y), this.topleft());\r\n break;\r\n }\r\n }\r\n\r\n // -- static --\r\n\r\n static fromString(s: string): Rect {\r\n if (s == null)\r\n return null;\r\n const ss = s.split(' ');\r\n if (ss.length != 4)\r\n return null;\r\n const left = parseFloat(ss[0]);\r\n const top = parseFloat(ss[1]);\r\n const wd = parseFloat(ss[2]);\r\n const ht = parseFloat(ss[3]);\r\n if (isNaN(left) || isNaN(top) || isNaN(wd) || isNaN(ht))\r\n return null;\r\n return new JSDraw2.Rect(left, -top - ht, wd, ht);\r\n };\r\n}\r\n\r\nJSDraw2.Rect = Rect;\r\n","import type {IMolHandler} from './mol-handler';\r\nimport type {Plus, Point} from '../Point';\r\nimport type {Editor} from '../JSDraw.Editor';\r\nimport type {Atom} from '../Atom';\r\nimport type {Rect} from '../Rect';\r\nimport type {Bond, BondB} from '../Bond';\r\nimport type {Mol} from '../Mol';\r\nimport type {Bracket} from '../Bracket';\r\n\r\nexport const enum BondTypes {\r\n UNKNOWN = 0,\r\n SINGLE = 1,\r\n DOUBLE = 2,\r\n TRIPLE = 3,\r\n DELOCALIZED = 4,\r\n WEDGE = 5,\r\n HASH = 6,\r\n WIGGLY = 7,\r\n EITHER = 8,\r\n SINGLEORDOUBLE = 9,\r\n SINGLEORAROMATIC = 10,\r\n DOUBLEORAROMATIC = 11,\r\n QUADRUPLE = 12,\r\n DUMMY = 13,\r\n BOLD = 14,\r\n BOLDHASH = 15,\r\n PEPTIDE = 21,\r\n NUCLEOTIDE = 22,\r\n DISULFIDE = 23,\r\n AMIDE = 24,\r\n}\r\n\r\nexport type BondType = typeof BondTypes[keyof typeof BondTypes];\r\n\r\nexport const enum RxnCenterTypes {\r\n NOTCENTER = -1,\r\n CENTER = 1,\r\n BREAK = 4,\r\n CHANGE = 8,\r\n BREAKANDCHANGE = 12\r\n}\r\n\r\nexport type RxnCenterType = typeof RxnCenterTypes[keyof typeof RxnCenterTypes];\r\n\r\nexport const MoleculeTypes = [\"SmallMolecule\", \"Polymer\", \"Peptide\", \"DNA\", \"RNA\", \"ADC\", \"ChemicalReagent\"];\r\n\r\nexport const TextKeywords = [\"°C\", \"rt\", \"reflux\", \"hr\", \"min\", \"sec\", \"psi\", \"atm\", \"overnight\", \"microwave\", \"Δ\"];\r\n\r\n// export type BondType = `${BondTypes}`;\r\n\r\nconst AlignTypes = new class {\r\n RIGHT = 0;\r\n BOTTOM = 1;\r\n LEFT = 2;\r\n TOP = 3;\r\n}();\r\n\r\nconst AntibodyTypes = new class {\r\n IgG = 'IgG';\r\n Fab = 'Fab';\r\n ScFv = 'ScFv';\r\n}();\r\n\r\nconst BioTypes = new class {\r\n AA: BioType = 'AA';\r\n //BASE: 'BASE';\r\n ANTIBODY: BioType = 'ANTIBODY';\r\n PROTEIN: BioType = 'PROTEIN';\r\n GENE: BioType = 'GENE';\r\n DNA: BioType = 'DNA';\r\n RNA: BioType = 'RNA';\r\n BASE_DNA = 'BASEDNA';\r\n BASE_RNA = 'BASERNA';\r\n}();\r\n\r\nexport type BioType = keyof typeof BioTypes;\r\n\r\n// const BioTypes = new class {\r\n// AA = 'AA';\r\n// //BASE= 'BASE',\r\n// ANTIBODY = 'ANTIBODY';\r\n// PROTEIN = 'PROTEIN';\r\n// GENE = 'GENE';\r\n// DNA = 'DNA';\r\n// RNA = 'RNA';\r\n// BASE_DNA = 'BASEDNA';\r\n// BASE_RNA = 'BASERNA';\r\n// }();\r\n\r\nexport enum ShapeTypes {\r\n LINE = 'line',\r\n RECT = 'rect',\r\n CIRCLE = 'circle',\r\n SQUARE = 'square',\r\n ELLIPSE = 'ellipse',\r\n POLYGON = 'polygon'\r\n}\r\n\r\nexport enum CommandTypes {\r\n ABOUT = 'about',\r\n JSDRAW = 'jsdraw',\r\n INKCLEARALL = 'inkclearall'\r\n}\r\n\r\nexport type ShapeType = typeof ShapeTypes[keyof typeof ShapeTypes];\r\n\r\nexport interface ICast {\r\n cast(obj: any): T;\r\n}\r\n\r\nexport interface IGraphics {\r\n readonly T: string;\r\n color: string;\r\n // atoms: Atom[];\r\n // _parent: Mol;\r\n // anchors: any[];\r\n // froms: any[];\r\n\r\n // a: any; // TODO\r\n // group: any; // TODO\r\n reject: any; // TODO\r\n selected: boolean;\r\n id: number;\r\n graphicsid: number;\r\n rect(): Rect;\r\n clone(map: any[]): IGraphics;\r\n draw(surface: any, linewidth: number, m: any, fontsize: number): void;\r\n\r\n [p: string]: any;\r\n}\r\n\r\n// export interface IBracket extends IGraphics, ICast> {\r\n// atoms: Atom[];\r\n// color: string;\r\n// shape: IShape;\r\n// conn: string | null;\r\n// expandedatoms: any | null;\r\n// sgrouptexts: string;\r\n// subscript: string | null;\r\n// type: string | null;\r\n//\r\n// _rect: Rect;\r\n//\r\n// new(type: string, rect: Rect | null, shape?: IShape): IBracket;\r\n//\r\n// clone(): IBracket;\r\n//\r\n// getTexts(m: Mol): any;\r\n// getType(): string;\r\n// getSubscript(m: Mol): string;\r\n// getXbonds(m: Mol): any;\r\n// getTypeNum(): string;\r\n// createSubscript(mol: Mol, repeat?: string): void;\r\n// }\r\n\r\n// export interface IMol {\r\n// atoms: Atom[];\r\n// bonds: Bond[];\r\n// graphics: IGraphics[];\r\n//\r\n// bondlength: number;\r\n// name: string;\r\n// chiral: any;\r\n// props: any;\r\n// showimplicithydrogens: boolean;\r\n// mw: number;\r\n// attachpoints: any;\r\n//\r\n// new(showimplicithydrogens?: boolean): IMol;\r\n//\r\n// isEmpty(): boolean;\r\n// clone(selectedOnly?: boolean): IMol;\r\n// getSgroupTexts(br: IBracket): string;\r\n//\r\n// getXml(width?: number, height?: number, viewonly?: boolean, svg?: any, len?: number): string;\r\n// setXml(el: HTMLElement | string): any;\r\n// setMolV3000(linses: string[], start: number, rxn: any, pos?: any, endtoken?: any): void;\r\n// setJdx(data: any, bondlength: number): IMol;\r\n//\r\n// setMolfile(molfile: string): IMol;\r\n// addGraphics(G: IGraphics): IGraphics;\r\n// getFragment(a: Atom, parent?: IMol): IMol;\r\n// mergeMol(m: IMol): void;\r\n//\r\n// addAtom(a: Atom): Atom | null;\r\n// addBond(b: Bond, resetcharge?: boolean, add2group?: boolean): Bond | null;\r\n// setAtomType(a: Atom, elem: string, setCharge?: boolean): boolean;\r\n// setHCount(a: Atom): void;\r\n// setAtomAlias(a: Atom, alias: string, len?: number): boolean;\r\n// setBondLength(bondlength: number): void;\r\n//\r\n// _addAtom(a1: Atom, parent?: IMol): void;\r\n// _addBond(b1: Bond, parent?: IMol): void;\r\n// _addGraphics(g1: any): void;\r\n// _setParent(parent: IMol): void;\r\n//\r\n// offset(dx: number, dy: number, selectedOnly?: boolean): void;\r\n// getNeighborAtoms(a: Atom, oa: Atom, excludeDummyBond?: boolean): Atom[];\r\n// getMaxRIndex(index: number): number;\r\n//\r\n// [p: string]: any;\r\n// }\r\n\r\nexport type ColorArray = [number, number, number, number];\r\n\r\nexport interface IOrgPlugin {\r\n new(jsd: IMolHandler): IOrgPlugin;\r\n\r\n [p: string]: any;\r\n}\r\n\r\nexport interface IEditorOptions {\r\n usexdraw: boolean;\r\n xdraw: string;\r\n popupwidth: string;\r\n popupheight: string;\r\n popupxdraw: boolean;\r\n jdrawpath: string;\r\n\r\n query: boolean;\r\n rxn: boolean;\r\n biology: boolean;\r\n sendquery: boolean;\r\n showtoolbar: boolean;\r\n showcustomtemplates: boolean;\r\n usechemdraw: boolean;\r\n\r\n showcarbon: boolean;\r\n pastechemdraw: boolean;\r\n removehydrogens: boolean;\r\n\r\n width: number;\r\n height: number;\r\n viewonly: boolean;\r\n\r\n ondatachange: any;\r\n data: string;\r\n dataformat: string;\r\n\r\n showimplicithydrogens: boolean;\r\n inktools: boolean;\r\n highlighterrors: boolean;\r\n skin: string;\r\n\r\n monocolor: boolean;\r\n fullscreen: boolean;\r\n\r\n buttonshape: string;\r\n scale: number;\r\n\r\n and_enantiomer: boolean;\r\n delheteroatom: boolean;\r\n minautowidth1: number;\r\n minautowidth2: number;\r\n minautowidth3: number;\r\n\r\n suggestcount: number;\r\n\r\n atomlist: any;\r\n textlist: any;\r\n\r\n tlc: any;\r\n\r\n popup: boolean | null;\r\n appmode: any;\r\n btnsize: number;\r\n movingresolution: any;\r\n}\r\n\r\n// export interface IEditor extends IMolHandler {\r\n// BONDLENGTH: number;\r\n// ANGLESTOP: number;\r\n// LINEWIDTH: number;\r\n// TOR: number;\r\n// FONTSIZE: number;\r\n//\r\n// COLORCURRENT: ColorArrayType;\r\n// COLORSELECTED: ColorArrayType;\r\n//\r\n// dblclickdelay: number;\r\n// helm: IOrgPlugin;\r\n//\r\n// _id: number | null;\r\n// _allitems: {};\r\n//\r\n// undoGestureTime: number;\r\n//\r\n// get options(): IEditorOptions;\r\n//\r\n// get div(): HTMLDivElement;\r\n//\r\n// get m(): IMol;\r\n//\r\n// about: any | null;\r\n// jsd: any | null;\r\n// periodictable: any | null;\r\n// popupdlg: any | null;\r\n// openfiledlg: any | null;\r\n// savefiledlg: any | null;\r\n//\r\n// new(host: HTMLElement, options?: Partial): IEditor;\r\n//\r\n// initNoDelay(): void;\r\n// destroy(): void;\r\n// setSize(w: number, h: number): void;\r\n// resize(width: number, height: number): void;\r\n//\r\n// /** Clear all contents */ clear(redraw: boolean, fireevents: boolean): void;\r\n// /** Resets and clears undo and redo buffers */ reset(): void;\r\n// setData(data: string, format: string): void;\r\n// setHelm(helm: string): void;\r\n//\r\n// getClipboard(): IMol;\r\n// setClipboard(m: IMol, bondlength: number): void;\r\n//\r\n// getMolfile(): string;\r\n// setMolfile(m: IMol): void;\r\n//\r\n// getFormula(b: boolean): string;\r\n// getMolWeight(): number;\r\n// getExtinctionCoefficient(): number;\r\n//\r\n// showPopup(title: string, btnText: string, btnFn: Function, value?: any, zindex?: number): any;\r\n// showAbout(): void;\r\n//\r\n// get(id: string): IEditor;\r\n// onPT(elem: HTMLElement): void;\r\n// onSaveFile(): void;\r\n//\r\n// [p: string]: any;\r\n// }\r\n\r\nexport type IShape = any;\r\n\r\n// export interface IRect {\r\n// left: number;\r\n// top: number;\r\n// width: number;\r\n// height: number;\r\n//\r\n// new(left: number, top: number, width: number, height: number): IRect;\r\n// new(): IRect;\r\n//\r\n// contains(p: Point): boolean;\r\n// right(): number;\r\n// bottom(): number;\r\n// center(): Point;\r\n//\r\n// set(p1: Point, p2: Point): IRect;\r\n//\r\n// offset(dx: number, dy: number): IRect;\r\n// union(r: IRect): IRect;\r\n// }\r\n\r\nexport interface IStack {\r\n new(length?: number): IStack;\r\n push(item: T): void;\r\n pop(): T | null;\r\n popHead(): T | null;\r\n\r\n clear(): void;\r\n}\r\n\r\nexport interface IPistoiaBase {\r\n get T(): string;\r\n}\r\n\r\nexport interface IBio {\r\n id?: number | string | null;\r\n\r\n type: TBio;\r\n subtype?: string | null;\r\n blobtype?: string | null;\r\n\r\n ambiguity?: string | null;\r\n annotation?: string | null;\r\n annotationshowright?: boolean | null;\r\n\r\n sequences?: string | null;\r\n}\r\n\r\nexport interface IJsAtom extends IPistoiaBase {\r\n get T(): 'ATOM';\r\n\r\n p: Point;\r\n\r\n get elem(): string;\r\n\r\n bio: IBio;\r\n\r\n // [propName: string]: any;\r\n\r\n // get charge(): number;\r\n //\r\n // get isotope(): string | null;\r\n //\r\n // get radical(): string | null;\r\n //\r\n // get group(): string | null;\r\n //\r\n // get alias(): string | null;\r\n //\r\n // get superatom(): string | null;\r\n //\r\n // get attachpoints(): [];\r\n //\r\n // get rgroup(): string | null;\r\n //\r\n // get locked(): boolean;\r\n //\r\n // get hidden(): boolean | null;\r\n //\r\n // private get _rect(): object | null;\r\n //\r\n // get color(): string | null;\r\n //\r\n // get hcount(): number | null;\r\n //\r\n // get selected(): boolean;\r\n //\r\n // get f(): number | null;\r\n //\r\n // get bonds(): [] | null;\r\n //\r\n // get id(): string | null;\r\n //\r\n // get atommapid(): string | null;\r\n}\r\n\r\nexport type AtomQueryType = {\r\n t?: boolean;\r\n sub?: number | '*';\r\n uns?: boolean | null;\r\n rbc?: number | null;\r\n als?: string[] | null;\r\n v?: number;\r\n};\r\n\r\n// export interface IAtom extends IJsAtom {\r\n// elem: string;\r\n// charge: number;\r\n// isotope: string;\r\n// radical: string;\r\n// hcount: number;\r\n// id: number;\r\n// color: string;\r\n// tag: string;\r\n// alias: string;\r\n// superatom: IMol;//ISuperAtoms | null;\r\n// attachpoints: any[];\r\n// atommapid: number;\r\n// rgroup: IRGroup;\r\n// hasError: boolean;\r\n// hs: number;\r\n// val: any;\r\n// query: any;\r\n// locked: boolean;\r\n// hidden: boolean;\r\n// ratio: number;\r\n// selected: boolean;\r\n// f: number;\r\n//\r\n// group: AtomGroupType;\r\n//\r\n// _aaid: number | null;\r\n// _parent: IMol;\r\n// _helmgroup: any;\r\n//\r\n// new(p: Point, elem?: string, bio?: IBio): IAtom;\r\n// //constructor(p: IPoint, elem: string, bio?: IBio): IAtom;\r\n//\r\n// biotype(): TBio;\r\n// cast(obj: any): IAtom;\r\n// getLabel(): string;\r\n// drawAlias(...args: any[]): void;\r\n// isValidChiral(c: string): boolean;\r\n// isStereo(c: string): boolean;\r\n// match(x: IAtom, y: IAtom): boolean;\r\n// match2(e1: string, e2: string): boolean;\r\n// }\r\n\r\n// export interface IBond extends ICast> {\r\n// get a1(): Atom;\r\n// get a2(): Atom;\r\n//\r\n// apo1: number;\r\n// apo2: number;\r\n//\r\n// ratio1: number;\r\n// ratio2: number;\r\n//\r\n// ring: boolean;\r\n// selected: boolean;\r\n// type: number;\r\n// tag: string;\r\n// f: number;\r\n//\r\n// _parent: IMol;\r\n//\r\n// new(a1: Atom, a2: Atom, bt?: BondTypes): IBond;\r\n//\r\n// isBio(): boolean;\r\n// angle(): number;\r\n// bondLength(): number;\r\n//\r\n// reverse(): void;\r\n// }\r\n\r\nexport interface IRGroup extends ICast> {\r\n color: string;\r\n selected: boolean;\r\n id: number;\r\n position: Point;\r\n mols: Mol[];\r\n text: string;\r\n\r\n new(): IRGroup;\r\n\r\n readHtml(t: HTMLElement, v: any): any;\r\n html(scale: number): string;\r\n clone(selectedOnly: boolean): IRGroup;\r\n\r\n [p: string]: any;\r\n}\r\n\r\nexport type SruGenType = 'SRU' | 'GEN' | 'MUL';\r\n\r\nexport interface ISGroup {\r\n fieldtypes: any[];\r\n stys: SruGenType[];\r\n\r\n getDisplayTypes(): any;\r\n}\r\n\r\nexport interface ISuperAtoms {\r\n addToMol(m: Mol, a: Atom, superatom: Mol): void;\r\n get(name: string): any | null;\r\n guessOne(name: string): any | null;\r\n\r\n collapseRepeat(m: Mol, br: Bracket): void;\r\n expandRepeat(m: Mol, br: Bracket): void;\r\n\r\n _getFirstAttachAtom(m: any): any;\r\n _alignMol(dest: Mol, a: Atom, src: Mol, a0: Atom, len?: number): boolean;\r\n\r\n getAA(name: string): Mol;\r\n getRNA(name: string): Mol;\r\n getDNA(name: string): Mol;\r\n [p: string]: any;\r\n}\r\n\r\nexport interface ISpeedup {\r\n fontsize: number,\r\n gap: number,\r\n disableundo: boolean;\r\n minbondlength: number;\r\n}\r\n\r\nexport type IContextMenu = any;\r\n\r\nexport type IDialog = any;\r\n\r\nexport type JSDraw2ModuleType = {\r\n password: any;\r\n\r\n defaultoptions: Partial;\r\n version: string;\r\n\r\n __touchmolapp: boolean;\r\n __currentactived: any;\r\n\r\n\r\n speedup: ISpeedup;\r\n\r\n ALIGN: typeof AlignTypes;\r\n ANTIBODY: typeof AntibodyTypes;\r\n BIO: typeof BioTypes;\r\n BONDTYPES: typeof BondTypes;\r\n RXNCENTER: typeof RxnCenterTypes;\r\n MOLECULETYPES: typeof MoleculeTypes;\r\n TEXTKEYWORDS: typeof TextKeywords;\r\n\r\n Atom: typeof Atom;\r\n Bond: typeof Bond;\r\n BondB: typeof BondB; // TODO: Hide\r\n Bracket: typeof Bracket;\r\n Drawer: any;\r\n\r\n Editor: typeof Editor;\r\n MolHandler: IMolHandler;\r\n\r\n Formulation: any;\r\n Group: any;\r\n Mol: typeof Mol;\r\n Point: typeof Point;\r\n Rect: typeof Rect;\r\n Plate: any;\r\n Plates: any;\r\n Plus: typeof Plus;\r\n Shape: any;\r\n Text: any;\r\n SequenceEditor: any;\r\n Lasso: any;\r\n Skin: any;\r\n Security: any;\r\n\r\n AssayCurve: any;\r\n Spectrum: any;\r\n Stack: IStack;\r\n PT: any;\r\n TLC: any;\r\n Base64: any;\r\n JSDrawIO: any;\r\n Symbol: any;\r\n Table: any;\r\n\r\n RGroup: IRGroup;\r\n SGroup: ISGroup;\r\n SuperAtoms: ISuperAtoms;\r\n\r\n BA: any;\r\n IDGenerator: any;\r\n ChemDraw: any;\r\n ChemdrawPopup: any;\r\n FormulaParser: any;\r\n Fullscreen: any;\r\n CustomTemplates: any;\r\n TLCTemplates: any;\r\n Language: any;\r\n SequenceBuilder: any;\r\n Ink: any;\r\n\r\n Arrow: any;\r\n Curve: any;\r\n ContextMenu: IContextMenu;\r\n Dialog: IDialog;\r\n Menu: any;\r\n Toolbar: any;\r\n\r\n needPro(): void;\r\n}\r\n\r\nexport type JSDraw2Window = {\r\n navigator: {\r\n msPointerEnabled: boolean,\r\n }\r\n}\r\n\r\nexport type JSDraw2Document = {\r\n body: { style: { msContentZooming: string } }\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type {DojoType, DojoWindow} from './types/dojo';\r\nimport type {JSDraw2Window} from './types';\r\nimport {errInfo, timeout} from './dg-utils/index';\r\n\r\ndeclare const window: Window & DojoWindow & JSDraw2Window;\r\ndeclare const dojo: DojoType;\r\n\r\nexport async function initJsDrawLite(): Promise {\r\n const logPrefix: string = 'JSDrawLite: _package.initJsDrawLite()';\r\n console.debug(`${logPrefix}, start`);\r\n window.jsDraw2$ = window.jsDraw2$ || {};\r\n if (!window.jsDraw2$.initPromise) {\r\n window.jsDraw2$.initPromise = (async () => {\r\n console.debug(`${logPrefix}, IN`);\r\n\r\n // console.debug(`${logPrefix}, dojo.ready(), before`);\r\n // await timeout(new Promise((resolve, reject) => {\r\n // try {\r\n // if (window.dojo.config.afterOnLoad) {\r\n // console.debug(`${logPrefix}, dojo.config.afterOnLoad already`);\r\n // resolve();\r\n // }\r\n //\r\n // dojo.require('dojo/ready')(() => {\r\n // console.debug(`${logPrefix}, dojo.ready(), callback`);\r\n // resolve();\r\n // });\r\n // } catch (err: any) {\r\n // reject(err);\r\n // }\r\n // }), 20000, 'dojo.ready() callback timeout 20000 ms');\r\n\r\n console.debug(`${logPrefix}, loadModules(), before`);\r\n await loadModules();\r\n console.debug(`${logPrefix}, loadModules(), after`);\r\n\r\n console.debug(`${logPrefix}, OUT`);\r\n })();\r\n }\r\n\r\n console.debug(`${logPrefix}, end`);\r\n return window.jsDraw2$.initPromise;\r\n}\r\n\r\nasync function loadModules(): Promise {\r\n // Based on _merge.lite.bat\r\n require('./Core.js'); // defines window.scilligence (scil)\r\n require('./Utils.js');\r\n require('./JSDraw.Core.js');\r\n require('./JSDraw.Lite.js');\r\n require('./PT.Lite.js');\r\n\r\n await import(/* webpackMode: \"eager\" */ './Atom');\r\n require('./BA.js');\r\n require('./Base64.js');\r\n await import(/* webpackMode: \"eager\" */ './Bond');\r\n require('./JSDrawIO.js');\r\n await import(/* webpackMode: \"eager\" */ './Mol');\r\n await import(/* webpackMode: \"eager\" */ './Point');\r\n await import(/* webpackMode: \"eager\" */ './Rect');\r\n require('./Stack.js');\r\n require('./SuperAtoms.js');\r\n require('./FormulaParser.js');\r\n require('./Toolbar.js');\r\n require('./Lasso.js');\r\n require('./Drawer.js');\r\n require('./Language.js');\r\n require('./IDGenerator.js');\r\n require('./Skin.js');\r\n await import(/* webpackMode: \"eager\" */ './JSDraw.Editor');\r\n await import(/* webpackMode: \"eager\" */ './JSDraw.MolHandler');\r\n require('./JSDraw.Table.js');\r\n await import(/* webpackMode: \"eager\" */ './Bracket'); // File not found\r\n require('./Group.js');\r\n require('./Text.js');\r\n\r\n await import(/* webpackMode: \"eager\" */ '../form/Lang');\r\n require('../form/Menu.js');\r\n require('../form/ContextMenu.js');\r\n require('../form/Dialog.js');\r\n await import(/* webpackMode: \"eager\" */ '../form/Form');\r\n require('../form/AutoComplete.js');\r\n require('../form/Progress.js');\r\n require('../form/Table.js');\r\n require('../form/Tree.js');\r\n require('../form/DropdownInput.js');\r\n require('../form/Popup.js');\r\n require('../form/UploadFile.js');\r\n await import(/* webpackMode: \"eager\" */ '../form/Tab');\r\n await import(/* webpackMode: \"eager\" */ '../form/TabbedForm');\r\n require('../form/FieldNumber.js');\r\n require('../form/Chart.js');\r\n require('../form/Clipboard.js');\r\n require('../form/Accordion.js');\r\n require('../form/DnD.js');\r\n require('../form/Resizable.js');\r\n require('../form/Favorite.js');\r\n require('../form/DropdownButton.js');\r\n require('../form/App.Lite.js');\r\n\r\n await import(/* webpackMode: \"eager\" */ '../page/Page');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Custom');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Explorer');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.ExplorerForm');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Form');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Tab');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Table');\r\n await import(/* webpackMode: \"eager\" */ '../page/Page.Tree');\r\n\r\n require('../Scilligence.JSDraw2.Resources.js');\r\n}\r\n\r\n// //name: ensureLoadJsDrawLite\r\n// export async function ensureLoadJsDrawLite(): Promise {\r\n// _package.logger.debug(`Package '${_package.friendlyName}' ensure load.`);\r\n// }\r\n\r\nwindow.jsDraw2$ = window.jsDraw2$ || {};\r\nwindow.jsDraw2$.initPromise = (async () => {\r\n await initJsDrawLite();\r\n})();\r\n"],"names":["scil","Utils","imgSrc","button","wrapasinurl","s","toLowerCase","imgbase64","JSDraw2","Resources","p","lastIndexOf","substr","_imgBase","App","imgSmall","wrapasurl","type","dojo","require","Accordion","extend","_base","constructor","parent","options","this","T","addStylesheet","byId","style","width","height","container","dijit","layout","AccordionContainer","i","items","length","item","addChild","ContentPane","title","content","html","startup","onafterrender","apply","stylesheetAdded","addCss","getCss","name","AutoComplete","scilligence","element","url","form","input","auto","sugid","disabled","me","document","getElementById","tagName","connect","e","keydown","createElement","body","display","backgroundColor","border","position","src","srcElement","target","q","isChildOf","clickout","listedonly","validateList","_all","push","value","indexOf","isVisible","hide","keyCode","ctrlKey","metaKey","startswith","ret","filterlist","split","list","eval","fun","args","onsuggest","jsonp","highlight","trim","isParentHidden","obj","visibility","parentNode","getOffset","scroll","scrollOffset","zIndex","getZindex","isIE","s2","JsUtils","getScrollOffset","offset","x","y","w","offsetWidth","minautowidth","pos","isFixedPosition","left","top","offsetHeight","removeAll","div","click","mouseover","mouseout","preventDefault","children","childNodes","sel","getAttribute","newsel","_hilitItem","clickItem","f","setAttribute","removeAttribute","getItemValue","unescape","innerHTML","onSetValue","overwrite","changeUnit","select","focus","onclickitem","fireEvent","hideAll","Chart","loadData","series","render","loadDataFromUrl","ajax","isNullOrEmpty","data","keys","k","label","xlabels","downloadImage","JSDrawServices","post","css","alert","dojox","charting","plot2d","Columns","ClusteredColumns","StackedColumns","Bars","ClusteredBars","Lines","StackedLines","Areas","StackedAreas","Scatter","Grid","Spider","Bubble","Pie","radius","Lang","res","margin","textAlign","fontSize","titlesize","chart","theme","setTheme","themes","Claro","fontcolor","markers","gap","htmlLabels","fontColor","labelWiring","animate","linewidth","stroke","labelstyle","labelStyle","shadow","dx","dy","color","addPlot","plots","xargs","yargs","vertical","fixLower","fixUpper","xmin","min","xmax","max","xtitle","titleOrientation","titleGap","ymin","ymax","ytitle","values","series2","v","additup","addSeries","xydata","array2data","showpercentage","labels","addAxis","tooltips","action2d","Tooltip","MoveSlice","Highlight","Magnify","legend","widget","Legend","connectToPlot","evt","onclick","onmouseover","onmouseout","asAxis","sum","isNaN","text","v2","t","Math","round","tooltip","code","Clipboard","copy","padding","outline","boxShadow","background","execCommand","err","removeChild","ContextMenu","callback","parentMenu","doc","lang","tbody","submenus","cur","isFrom","show","_create","maxZindex","getMaxZindex","moveToScreen","hideParent","setCur","createTable","hilit","clickOut","_createItems","tr","colSpan","caption","key","sub","bg","menukey","checked","nottranslate","icon","paddingLeft","shortcut","paddingRight","getParent","p2","getCallbackObj","isFromContextMenu","Dialog","id","_idincrease","_allitems","parentWindow","window","WRAPPER","dialog","dialogmask","movingSt","show2","zindex","modal","immediately","owner","titleElement","kTimer","setTitle","defaultoptions","minDlgZindex","z","alpha","minHeight","borderColor","Skin","bkcolor","isTouch","opacity","filter","timer","setInterval","moveCenter","stack","_scilform","fields","d","getBox","h","l","dialogwidth","dialogheight","topposition","leftposition","updateWidth","td","topBody","borderRadius","bordertop","notitle","fontWeight","config","verticalAlign","noclose","img","cursor","marginRight","Language","isIpad","movable","touches","startMove","move","endMove","overflow","bodystyle","appendChild","zi","resize","fixtransparentissue","gfx","renderer","right","offsetLeft","bottom","offsetTop","moveTo","Point","clientX","clientY","which","delta","parsePixel","firstChild","onhide","close","clearInterval","pop","fade","flag","kSpeed","get","getDialog","onload","JsDialog","DnD","dragging","mousedown","mousemove","mouseup","isDragging","cancel","oncancel","onstartdrag","startpos","abs","oncreatecopy","ondragover","ondrop","DropdownButton","dropdown","getElementsByTagName","expandright","onshowdropdown","area","createItem","translate","menu","div2","frame","getItem","highlightcolor","innerText","textContent","location","open","DropdownInput","itemschanged","suggestlength","autosuggest","className","updateReadonly","keyup","clickMe","updateDropdown","readonly","backgroundImage","readOnly","onFilter","fn","offsetX","layerX","setItems","isDropdownVisible","updateDropdownSize","char","c","findNextMatch","start","end","align","htmlDecode","unit","r","Table","parseValueUnit","Favorite","onAddFavorite","changed","getList","_load","contains","add","splice","_save","json2str","createCookie","readCookie","FieldNumber","allowoperator","onSetOperator","viewonly","units","insertBefore","borderLeft","unitwidth","listOptions","accepts","RegExp","test","isNumber","setValue","mobiledata","MobileData","weighstation","getDefaultUrl","onresult","barcode","markRecieved","createButton","selectWeighstation","op","clear","splitUnit","scale","decimal","unit2","defaultunit","selectOption","ColorCoding","getValue","Menu","timeout","navigator","msPointerEnabled","closetimer","menuitem","isOpen","cancelclosetime","openOrClose","closetime","setTimeout","clearTimeout","Popup","a","init","getHtml","ongethtml2","ongethtml","getCaption","ongetcaption2","current","inited","popup","e2","Event","create","moveto","scrollLeft","scrollTop","winWidth","winHeight","all","innerWidth","innerHeight","documentElement","clientWidth","clientHeight","filterResults","pageXOffset","pageYOffset","n_win","n_docel","n_body","n_result","whiteSpace","borderStyle","borderWidth","Progress","dlg","bar","msg","showprogressbar","cancelbtn","update","percent","n","u","animator","imgTag","marginTop","Resizable","handle","resizing","bgcolor","direction","mouseovercolor","onresize","header","_tableincrease","_tableid","onAdd","groupIndex","checkIndex","dataIndex","_startrow","_lastcheck","getXml","xml","hasdata","row","j","Form","getFieldData","field","escXmlValue","setXml","lockeditems","root","parseXml","firstElementChild","rows","cells","setData","getCsv","escCsvValue","getRowData","getData","collection","rowcheck","isnew","rowchecked","getRowTexts","getCurrentRowData","currow","addRow","addrow","dirty","iskey","_hideCookieCols","borderRight","jssdf","borderBottom","borderTop","addbtn","r0","header0","grouping","headerstyles","colspan","groupExpandAll","checkAll","clone","ishidden","headercheckbox","chk","connectCheckAll","delrow","selectrow","clickRow","hidColumn","showColumn","icol","getColIndex","nodes","getCheckedRows","getCheckedRowData","getCheckedRowData2","getKey","checkRow","getCheckedKeys","getCheckedKeys2","getCurrentKey","getCheckedRows2","selectRow","selectFirstRow","findRow","old","rowcolor","onselectrow","delRow","onchange","updateRow","setCellValue2","rowkey","colkey","setFieldData","getCellValue2","_hilitRow","endswith","groupExpand","s0","getCellValue","nextSibling","beforerow","onBeforeAddRow","oddcolor","evencolor","sciltable","newgroup","previousSibling","checktype","check","onrowcheck","checkedClick","styles","attributes","createField","_connectOnchange","addrowonenter","connectKeydown","b","removeRow","onAddRow","grouplinestyle","shiftKey","st","ed","setCellValue","confirmYes","showHideColumns","showhideDlg","table","columns","createDlgForm","showHideColumns2","hidelabel","cols","jsd","hidecolumncookiekey","ss","loadimmediately","load","listPages","page","totalpages","createPage","rows2xml","Tree","solo","onAddItem","onSelectItem","onExpandItem","idname","reloadCur","reload","node","_expand","onExpand","getCurRoot","getRoot","_more","leaf","marginLeft","m","status","icongap","expand","selected","shrinkSiblings","loadNodes","onAjaxData","beforeload","afterload","find","selectable","isleaf","getIconText","setCurrent","getChildren","UploadFile","files","filetypes","kIframe","reset","upload","params","ajaxUploadFile","file","paddingTop","BA","ri","ringclosure","next","depth","Stack","ba","mode","depthfirst","popHead","startAtom","otherAtom","addNext","stereo","bs","bonds","isMarkedStereo","angles","a0","angle0","angleTo","DEBUG","print","elem","a1","ang","angle","ringclosures","pattern","BONDTYPES","WEDGE","HASH","renderSmiles","ring","DOUBLE","TRIPLE","SINGLEORDOUBLE","SINGLEORAROMATIC","DOUBLEORAROMATIC","UNKNOWN","DUMMY","ar","PT","isArAtom","bio","charge","isotope","query","locked","als","hcount","rbc","aromatic","child","Base64","_keyStr","encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","_utf8_encode","charCodeAt","charAt","decode","replace","String","fromCharCode","_utf8_decode","string","utftext","c1","c2","c3","io","oc","enable","oln","dest","atts","defaults","Object","prototype","sb","sp","overrides","arguments","F","spp","sbp","superclass","override","supr","origclass","hasOwnProperty","toString","concat","cloneArray","event","addEventListener","attachEvent","ready","addOnLoad","Drawer","kMinFontSize","drawFormula","surface","reversed","fontsize","rect","Rect","splitFormula","num","drawWord","isEmpty","union","str","isnumber","drawLabel","_rect","nw","isChrome","setTransform","matrix","bracket","number","drawCurveArrow","p1","p1a","p2a","anchors","Curve","calcAnchors","createPath","curveTo","setStroke","cap","drawArrowhead","drawCurve","deg","drawArrow","dottedline","arrowstyle","rotate","setLength","tp1","tp2","drawLine","drawArrowhead2","as","v1","a2","drawTriangle","p3","lineTo","setFill","drawBracket","shape","topleft","bottomleft","topright","bottomright","drawDoubleArrow","opaque","offsetx","createRect","createText","fontStyle","fillStyle","mwidth","getTextWidth","setFont","family","size","weight","drawText2","rotatedeg","rotateAt","drawText","italic","font","ctx","rawNode","getContext","save","strokeStyle","measureText","restore","drawBasis","rotateAround","drawCurves","path","len","distTo","floor","t1","qCurveTo","dotline","createLine","x1","y1","x2","y2","d2","t2","drawRect","opts","drawDShape","reverse","rad","center","arcTo","_calcPoint","closePath","PI","sin","cos","drawEllipse","createEllipse","cx","cy","rx","ry","drawPie","deg1","deg2","calcPoint","drawDiamond","points","createPolyline","drawHexgon","drawPentagon","p4","p5","FormulaParser","parse","orphan","salt","_parse","pareFormulaAsSalt","atoms","m2","mergeMol","Bond","addBond","SuperAtoms","normalize","coef","parseInt","salt2","parseCharge","molFromAtom","_getAttachAtoms","attachpoints","Atom","addAtom","m0","m3","parseSalt","caps","salts","mf","mw","ignoresaltcoef","exec","parseFloat","mf2mw","stats","mf2Stats","stripHs","mergeStats","from","elements","charges","isotopes","iso","iso2","getAtomStats","mol","bios","hs","multicenterHs","BIO","ANTIBODY","PROTEIN","GENE","DNA","RNA","se","SequenceEditor","sequences","getMolWeight","getAllBonds","dummy","val","valence","alias","stats2mw","_isotopemass","stats2em","em","isotopes2","stats2mf","issalt","normMF","mf2","mf2Stats2","calcSaltCharges","calcsaltcharges","numpat","_mf2Stats","match","patt","patt2","symb","addAttachPoint","Mol","tokens","O","S","Se","Te","Y","NH","PH","CO","CO2","CH2","C2H4","C3H6","C4H8","C5H10","H","s1","repeat","_parseConnectors","remained","_connect","_tryFormula","isMetal","K","Na","Rb","Cs","Fr","Sb","cs","findone","prefix","branch","_connectAtom","doublebond","Group","group","ratio","tag","g","readHtml","flipY","flipX","origin","toggle","tor","drawCur","r2","createCircle","graphics","_updateRect","bondlength","getGroupRect","draw","drawSelect","lasso","fourPoints","cast","IDGenerator","used","JSDraw3","speedup","disableundo","minbondlength","version","kFileVersion","password","encrypt","TEXTKEYWORDS","MOLECULETYPES","CHIRALITIES","SINGLE","DELOCALIZED","WIGGLY","EITHER","QUADRUPLE","BOLD","BOLDHASH","PEPTIDE","NUCLEOTIDE","DISULFIDE","AMIDE","RXNCENTER","NOTCENTER","CENTER","BREAK","CHANGE","BREAKANDCHANGE","ALIGN","RIGHT","BOTTOM","LEFT","TOP","AA","BASE_DNA","BASE_RNA","IgG","Fab","ScFv","DNATable","GCT","GCC","GCA","GCG","CGT","CGC","CGA","CGG","AGA","AGG","AAT","AAC","GAT","GAC","TGT","TGC","CAA","CAG","GAA","GAG","GGT","GGC","GGA","GGG","CAT","CAC","ATT","ATC","ATA","TTA","TTG","CTT","CTC","CTA","CTG","AAA","AAG","ATG","TTT","TTC","CCT","CCC","CCA","CCG","TCT","TCC","TCA","TCG","AGT","AGC","ACT","ACC","ACA","ACG","TGG","TAT","TAC","GTT","GTC","GTA","GTG","TAA","TGA","TAG","RNATable","GCU","CGU","AAU","GAU","UGU","UGC","GGU","CAU","AUU","AUC","AUA","AUG","UUA","UUG","CUU","CUC","CUA","CUG","UUU","UUC","CCU","UCU","UCC","UCA","UCG","AGU","ACU","UGG","UAU","UAC","GUU","GUC","GUA","GUG","UAA","UGA","UAG","needPro","Security","kEdition","error","valid","_check","Text","Shape","Bracket","AssayCurve","Arrow","TLC","Spectrum","Plus","RGroup","readSdfRecord","sdfmol","readattributes","molfile","props","readProps","JSDrawIO","downloaddlg","jsdsavedlg","jsdFiles","jsdraw","rxn","inchi","helm","xhelm","smiles","cml","cdxml","cdx","png","jsdFiles2","jsdFiles3","jsssavedlg","jssFiles","sdf","csv","json","callWebservice","cmd","needCrossdomain","xdomain","host","jsdFileOpen","uploadFile","xfilename","jsdFileOpen2","_xfilename","jsdFileOpenDlg","note","template","importas","jsdFileOpen1","usepostform","postform","base64","contents","format","setMolfile","setRxnfile","parseRxn","pasteMol","arrow","products","reactants","refresh","filename","setXHelm","setHelm","jsdFileSave","helmtoolbar","tlcplate","jsdFileSave2","selectedIndex","jsdFileSave3","ext","getHelm","getXHelm","dt","Date","client","wrapper","getFullYear","getMonth","getDate","cleanup","getSmiles","protocol","openbonds","_data2Mol","setBondLength","_connectOpenBonds","center2","pushundo","delSelected","setSelected","_setMolData","inputformat","bond","fix","getObjectById","nb","replaceAtom","guessBond","ang1","ang2","name2structure","n2s","prompt2","message","id2s","regex","fmt","showprogress","autosuggesturl","suggest","iconurl","jssFileOpen","jss","appendingmode","structurecolumn","jssFileOpen2","uploadfileDlg","setRdf","jssFileSave","btn","jssFileSave2","getSdf","getJson","use","Lasso","extra","selecting","lasthits","curhits","line","hit","remove","endHits","Editor","COLORSELECTED","commonUsed","C","N","P","Cl","Br","I","Si","R","getCommonUsedElements","forwhat","Be","B","Ca","Ge","As","isElectronAcceptor","an","showQueryAtoms","buttons","makeAtomList","isValidAtomList","isFalse","atomicno","toUpperCase","bkimg","toolbarbk","hovercolor","btnselcolor","headerimg","headercolor","red","green","blue","yellow","labelstyles","fieldcolor","rowselectcolor","capacity","_items","_capacity","Deque","pushRange","dict","reversible","AminoAcids","DNAs","RNAs","templates","nterminals","cterminals","customtemplates","listFunctionalGroups","read","toolbar","getMolfile","setJson","getDNA","getRNA","getAA","getTemplate","hasCustomTemplates","getCustomTemplate","reverseLabel","reverseLabel2","guessOne","addSdf","abbreviations","onAfterRead","customtemplate","apo","_alignMol","getNeighborBonds","middleAngle","fieldtype","allAnchorsIn","attach","objects","toFixed","map","fromString","isTrue","removeObject","fs","Toolbar","editor","toptoolbarTbody","BORDERSTYLE","toolbarbkcolor","destroy","getButtons","toolbarrow","createToolbars","elems","mainbody","onSelBtn","unselectable","skin","btnsize","isSkinW8","marginBottom","toolbaralign","toolbarleftmargin","recreateTopToolbar","backgroundPosition","connectHandlers","maintable","_makePluginFun","dimension","createButtons","jsdtb","tr2","plugins","nleft","createBtnImg","smallscreen","filesubmenus","showfilemenu","selecttools","addabout","workflow","org","webeditor","Interface","getHelmToolbar","showabout","pastechemdraw","serviceAvailable","appmode","last","templateicons","benzene","hexane","pentane","propane","butane","heptane","octane","showcustomtemplates","biology","addToolbar","inktools","sendquery","reaxys","usechemdraw","Fullscreen","exitfullscreen","fullscreen","relayoutButtonsByWidth","nplugins","ranks","rank","setHoverable","exchangeButton","img1","txt1","tds","img2","txt2","subtitle","attr","td1","tbid","hidden","leftmargin","singlerow","bn","td2","alt","buttonshape","getIEVersion","appName","appVersion","documentMode","compatMode","__ieversion","__ieAppVersion","postMessage","performance","silverlight","JSDraw2_disablesilverlight","major","minor","gfxRenderer","_isHtml5","doctype","getAndroidVersion","userAgent","getiOSVersion","_renderShape","fillText","suggestInstallSilverlight","confirm","__xcode","isIE8Lower","nativemode","isHtml5","isFirefox","isOpera","isLinux","isUbuntu","isAndroid","isSilverlight","lastTouchTm","buttonWidth","getTopWindow","isRightButton","isTouchDblClick","tm","getTime","hasAnsestor","pow","roundToSignificantDigits","digits","log10","log","LN10","roundStr","num2str","isFinite","_convertUnit","disabledcontextmenus","disableContextMenu","__contextmenudisabled","oncontextmenu","isAttTrue","att","isAttFalse","formatStr","padLeft","uuid","chars","random","join","padRight","token","casesensitive","ltrim","rtrim","offsetParent","iebody","scriptUrl","_scripturl","imagebase","styleRect","mergeArray","fingArrayIndex","getFunctionName","fName","splitCsvRow","inquote","unescXmlValue","escUrlData","escape","escFileName","getFirstChild","parseXml2","succeeded","DOMParser","parseFromString","ActiveXObject","async","loadXML","xquery","returnone","parseJson","containsWord","word","ignorecase","words","alert2","alertdlg","maxWidth","maxHeight","ok","confirmdlg","yes","no","prompt","defaultvalue","multiline","maxlength","defaultval","promptdlg","textarea","days","ignoreStore","store","storage","LocalStorageProvider","isAvailable","initialize","put","expires","date","setTime","toGMTString","cookie","nameEQ","ca","substring","eraseCookie","formatFilesize","filesize","today","trunc2date","time","_parseMonth","getTimezoneOffset","_months","_weekdays","weekday","getDay","formatTime","timezoneoffet","h12","getHours","getMinutes","getSeconds","dateStr","classic","tp","dateformat","timeStr","timefmt","timeformat","float","imgheight","tagname","hc","cellspacing","cellpadding","cellSpacing","cellPadding","createTable2","createTR","createTD","createCenterBox","createSelect","sortitems","removeall","sort","opt","isEqualStr","testParent","firstElement","nodeName","arrayContainsArray","superset","subset","delFromArray","method","action","submit","postIframe","iframe","send","timeoutSeconds","preventCache","handleAs","download","jsonpArgs","callbackParamName","script","xhrArgs","xhrGet","sync","stupidTomcatBug","onError","ajaxCallback","ignoresucceedcheck","User","onAjax","onajaxcall","headers","verb","xhrDelete","xhrPut","xhrPost","ajaxwait","xdomainurl","postXdomainData","onjsonpcall","onAjaxCallback","o","succeed","needLogin","errcode","___ajaxUploadFile","dojoBlankHtmlUrl","ajaxPostFile","UploadFileDlg","checkfiles","multiple","valign","mobileimages","showImageList","imagelistdiv","imagelist","createImageList","passwordRow","listImages","showpassword","postonly","getSelectedImages","xdomainform","uploadfileDlg2","uploadFile2","ie2touches","getPointerList","pointerId","getScreenSize","win","scrollRoot","uiWindow","defaultView","readable","restrict","quot","z1","getMaxZindex2","z2","z3","isAllParentVisible","xml2Json","_e","at","jsonList2Xml","json2Xml","innerXml","joinArray","list1","list2","getInnerXml","innerXML","XMLSerializer","serializeToString","getInnerText","getChildXmlElements","num2letter","lowercase","isImg","isOfficeFile","isPDF","isSpectraFile","isChemFile","getFileExt","getElements","getFirstElement","parseIndex","index","removeArrayItem","removeArrayItems","onselectstart","webkitTouchCallout","webkiUserDelect","khtmlUserSelect","MozUserSelect","msUserSelect","userSelect","letter2num","i_1based","array2str","sep","isDictEmpty","getDictValues","getDictKeys","getDictKeyByValue","setEnv","env","backgroundRepeat","sound","wav","__sound","play","escapeHtml","textWidth","areListEq","areDictEq","main","to","splitStr","separator","isEmptyStr","regFindAllMatches","nodeValue","html2Text","parseNumber","NaN","getOuterXml","styleSheet","cssText","insertAfterDict","found","temp","insertBeforeDict","disableSelection","webkitUserSelect","mozUserSelect","getLastBarcode","category","email","useremail","beep","doublebeep","_beepobj","Audio","textareaSelect","ta","startPos","endPos","selectionStart","selectionEnd","selection","createRange","range","collapse","moveEnd","moveStart","eventname","bubbles","cancelable","createEvent","initEvent","createEventObject","eventType","eventName","dispatchEvent","avg","stdev","padleft","padright","ButtonTypes","FormInt","destory","nowrapper","stype","includeNullValues","overwritemode","setDirty","alternativekey","was","setFieldValue","preventUnsaved","returnValue","switchForm","alternativeforms","render2","renderoptions","highlightrow","currentrow","currentrowbckcolor","kNumberColumns","kDefaultUnits","newField","onenter","connectKeyEnter","buttonTR","centerbuttons","postForm","checkRequiredFields","required","resetRequiredFields","veritcal","usexdraw","ondatachange","newField2","__touchmolapp","collapsible","leading","getFieldValue","dislay","mergeForm","src1","src2","_isAllString","_getListItems","fortable","itemtype","wordWrap","addblank","createFieldButton","button2","listwidth","XDraw","getRowCount","insert","hidetable","Plate","Plates","Formulation","FieldTabText","FieldCode","FieldSignature","FieldRichText","FieldPlainText","FieldSubform","FieldFile","FieldImage","FieldFileLink","FieldSketches","FileShelf","FieldCurve","DatePicker","ColorPicker2","Richtext","insertImage","insertStructure","extrabuttons","initTinyMCE","DropdownCheck","EditableSelect","onfocus","onblur","parentform","onclick2","ajaxurl","append","dataformat","getEd","encryptpassword","originalvalue","spreadsheet","_setInnerHTML","renderTemplate","dom","setContent","wrapTextarea","onrendered","createForm2","tabs","TabbedForm","collapsed","_connetOnClick","oncreated","createFormDlg","createTabDlgForm","createForm","enter","style1","style2","it","span","fillForm","collectFormData","inputs","_addValue","textareas","selects","toAmount","liquid","processAmount","amount","amountleft","isliquid","setButtonValueByKey","getButtonValueByKey","getButtonValuesByKey","createToolbarButtons","tableAlign","_createButton","tinymce","dict2formxml","json2xml","Key","CryptoJS","enc","Utf8","IV","iv","AES","CBC","pad","Pkcs7","ext2Icon","en","setLang","language","userLanguage","tags","translate2","reg","cn","TabsInt","tabarea","currenttab","parentElement","tabborder","Tabs","kBorderStyle","areapadding","areaborder","taggap","tabgap","tablocation","borderRightWidth","borderLeftWidth","borderTopWidth","borderBottomWidth","tabcontainer","showtabs","addTab","resizeClientarea","clientarea","clientareawidth","clientareaheight","onresizeclientarea","tabpadding","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","tabkey","sciltab","tbody2","_label","showTab","closable","closeTab","onmenu","visible","overflowY","onCreateTab","updateTabLabel","findTab","removeTab","currentTabKey","onRemoveTab","allTabsAsArray","td0","tr0","allTabs","onBeforeShowTab","kHighlightColor","onShowTab","rendered","renderTabForm","onbeforeshowtab","first","delayrender","stub","getCurTabData","getdata","setdata","PageCustom","refreshneeded","receivers","norefresh","Page","ExplorerForm","expandable","expanded","onexpand","oncreate","onrefresh","onclear","Custom","PageExplorer","resizable","middle","leftwidth","vAlign","kHandleWidth","kHandleColor","Explorer","PageExplorerFormInt","kHeaderStyle","kToolbarStyle","toolbarvisible","kAreaStyle","isExpanded","PageExplorerForm","PageForm","onformchange","onbeforerefresh","receiverClear","object","onsetdata","savedoc","PageTab","onShowTab2","tab","addForm","listento","captions","setBorder","Tab","PageTable","canadd","canedit","edit","columnhidable","pages","tablediv","recreateTable","oncreatetable","receiverRefresh","loadPage","onloadpage","selectfirstrow","onbeforelisting","onrefreshed","onAddNew","add2","usetabs","onshowform","defaultvalues","applyArgs","onloaddata","editkey","showDelButton","copyNew","onEdit","onbeforesave","onaftersave","del","candelete","editbuttons","formcaption","onformdatachange","oncreateform","PageTree","onrender","tree","startrefresh","onselectitem","onBuildArgs","currentOnly","showroot","onSaved","PageInt","forms","onRefreshReceivers","onresizetree","explorer","addTabs","addDiv","leftside","addResizeHandle","removeForm","borderLeftColor","borderRightColor","borderBottomColor","radical","superatom","rgroup","atommapid","hasError","selectedOnly","biotype","updateRGroup","getLabel","apos","uns","subtype","annotation","ambiguity","blobtype","mols","_getXml","rStr","ami","apon","bioid","ann","amb","rgEl","divs","needShowAtomLabel","drawBio","color2","color3","colors","isHelmNode","drawMonomer","rotategAt","hasLabel","showcarbon","getNeighborAtoms","hasErr","showError","atomcolor","monocolor","drawApo","drawAlias","calcHDir","x2n","_haslabel","tw","hw","cw","iw","ap","shrink","e1","match2","dir","isValidChiral","isStereo","apo1","apo2","order","rcenter","r1","ratio1","ratio2","_parent","na","isBio","bondLength","vector","_centerDoubleBond","atoms1","atoms2","_shirftDirection","_hasDoubleBonds","angleAsOrigin","onLine","_drawBond","shift","getRColor","splitPosR","_fmtBondAnn","defaultratio","defaultbondratio","ba1","ba2","drawBondAnnotation","simpledraw","equalsTo","BondB","color1","showHelmAnnotation","vlen","vi","annotationshowright","sgrouptexts","getXbonds","allAtomsIn","getTypeNum","getType","getSubscript","getSgroupText","createSubscript","medBondLength","setSgroup","cornerTest","corner","texts","moveCorner","getTexts","Error","EditorInt","dv","_testdeactivation","frameoffset","touch","cloned","setModified","start1","start2","end1","end2","gesture","holding","delay","showContextMenu","COLORCURRENT","chiral","_id","ptElement","removehydrogens","showtoolbar","showimplicithydrogens","highlighterrors","rxnfile","movingresolution","BONDLENGTH","TOR","LINEWIDTH","FONTSIZE","angleStop","ANGLESTOP","Plugin","modified","touching","lastmove","curObject","curButton","movingClone","texteditor","atom","rotating","mousedownPoint","_lastMousedownTm","lassolast","chaintool","activated","ink","undocapacity","_undostack","_redostack","setMol","setMolbase64","setRxnbase64","setJdx","hastoolbar","DnDFile","onupload","activate","mstouch","down","touchStart","resetGesture","touchMove","up","touchEnd","bodyTouchStart","touchClick","bodyMouseDown","mousewheel","dblclick","_clearing","onResize","oUserSelect","parents","_showAllParents","createSurface","_hideElements","showcontextmenu","fitToWindow","redraw","loaded","doCmd","doPaste","clipboard","clipboardData","getClipboard","rtf","visvalues","lastaction","undo","restoreClone","_setmol","resetScale","redo","setClipboard","cut","paste","empty","len2","calcHCount","reaction","rxn2","setRxn","tlcplates","addTlcPlate","showTextEditor","hidetime","shp","br","clickTextItem","txtKeypress","Monomers","getMonomerList","atomlist","minautowidth1","filterAtomType","SGroup","getDisplayTypes","minautowidth2","delGraphics","textlist","minautowidth3","reagentsuggest","selectall","txtAutosize","showtime","suggestcount","createImageTo","hideTextEditor","showPT","menuSetAtomType2","insertSymbol","symbol","caretposition","Symbol","getCaretPosition","setCaretPosition","onvalidatetext","setNodeTypeFromGui","setAtomAlias","setAtomType","txt","addGraphics","delObject","showTemplatesDlg","CustomTemplates","showSymbolDlg","pt","time2","calcTextRect","createGroup","moveview","viewoffset","rootgroup","extraOnly","updateGroupRect","getCmd","arrowtool","connector","set","pts","maxBondLength","inflate","vs","cleanupRxn","addlabel","removeTextByFieldType","_layoutRxn","_addRxnLabel","fireevents","isempty","onClear","toggleAtom","fixWedgeDir","getFragment","frags","splitFragments","containsAtom","getCenter","startResize","ctrl","getConnectingAtomBonds","notused","links","clearFlag","detail","deltaY","deltaX","eventPoint","stopImmediatePropagation","stopPropagation","contextmenu","tm0","dblclickdelay","mousedblclick","Ink","erasercache","count","singleton","curspot","countSelected","onselectionchanged","startPt","frag","conn","bestConnectPoint","selectCurrent","onselectcurrent","showhelmpopup","onHelmSelectCurrent","MolViewer","getMonomerSet","frozen","guessArrow","lassoSelect","equalMove","_makeChain","_guessBond","undoGestureTime","obj1","obj2","resetIDs","doRxnMap","reject","pp2","isShapeConnected","froms","isIsolatedShape","tlc","spots","addSpot","_bracketReselectAtoms","mergeOverlaps","selectInRect","_addNewAtomInExistingGroup","findBond","bracketSelect","showAtomDlg","showBondDlg","addTemplate","increaseNum","isHelmCmd","changeMonomer","_addAutoBond","setBondType","Cmd2BondType","createIsolatedMonomer","connnectGroup","extendChain","_countAABonds","ao1","peptideN","others","peptideC","ao2","bondtype","connectFragment","disulfide","amide","olda","tlcsetting","spotsize","getAllTlcPlates","prev","autonumbering","numberTlcPlates","onAddTLC","hideChirarlities","selectonly","detectChiralities","markChirality","setAtomCharge","overlaps","delBond","delAtom","onDel","onContextMenu","menuCallback","scrolloffset","menuSetStereochemistry","setAssayCurveLine","setAssayCurveOnly","overlayCurves2","setAssayCurveRawData","setSpectrumData","setSpectrumDataFromFile","viewAttributes","maskSamplePoint","ChemDraw","copyAs","pasteAs","showAbout","about","removeAtomValues","viewLarge","addTag","makeComplementaryStrand","collapseGroup","setBondProp","setAtomProp","setGroupProperties","showSequences","rgroupDefine","addRgroupStructure","setBracketSubscription","setBracketRatio","setBracketData","setZOrder","addLane","duplicateSpot","duplicateLane","showLaneLabel","showlanelabel","removeSpot","setRfValue","setLaneLabels","selectAll","expandSuperatom","createMulticenter","showProperties","curve","overlayCurves","curveline","curveonly","groupPropDlg","setGroupProperties2","hasGroupBond","showPopup","menuTLCSetSpotShape","menuTLCSetSpotSize","menuTLCLabel","menuTLCSetLabel","menuTLCFill","menuShapeType","menuAlignShapes","menuShapeFill","menuAntiboyType","menuSetFontsize","menuSetColor","ypos","menuBracket","menuSetTextField","menuSetAttachPoint","lockAtomConnection","menuSetAtomQuery","menuSetAtomQuery2","menuSetAtomType","allAtoms","menuSetAtomCharges","menuSetAtomIsotope","menuSetAtomRadical","menuSetEhnStereochemistry","menuSetBondTop","menuSetRxnCenter","menuSetBondType","sorting","expandSuperAtom","_setSelectedBondType","bt","allBonds","curobj","delAA","delheteroatom","setHCount","hasTcl","hasSelected","b0","_caclBondDir","dir0","deg0","replaceBond","cancelDnD","_keypresschar","createAA","getMonomer","_setSuperatom","insertAA","rlabel","changeSize","ry1","ry2","toCharArray","splitString","pat","re","createAA2","asrxn","nterminal","cterminal","_createExpandedAA","_createCollapsedAA","seq","onAddSequence","head","circle","tail","iscircle","nterm","cterm","layoutAtoms","LINE","CIRCLE","attachs","_guessAutoBond","p0","findNextAA","forinsert","backup","oa","findNextAAs","_findNextAA","setSize","eln","AccountTypes","_setSurfaceSize","sz","setDimensions","popuplocked","onpopupsaved","chain","mid","notor","setFrameoffset","objoffset","onCmd","useonce","clearLastOne","filenew","filesave","onShowSaveFileDlg","fileopen","onShowOpenFileDlg","clearAtomMap","SequenceBuilder","flip","sendQuery","ChemdrawPopup","TLCTemplates","showImportDlg","showFindReplaceDlg","MonomerExplorer","showDlg","clean","onCmd2","pid","flipBond","flipaxis","_invertStereoBonds","openfiledlg","fileformats","filetype","onOpenFile","onShowSaveFileDl","savefiledlg","onSaveFile","onPT","periodictable","setAtomProps","setBondProps","getRxnfile","setFile","removeHydrogens","toScreen","v3000","excludeDummyBonds","getSvg","gu","utils","_cleanSvg","_innerXML","withsvg","svg","getSequence","highlightselection","setmodified","isXHelm","setHtml","groupbyplus","getMolbase64","hasHelmNodes","getFormula","getMF","getMW","getExtinctionCoefficient","getExactMass","setAny","postData","success","result","rawXhrPost","aamap","sss","writeCookie","disconnect","isFromSvgGroup","te","d1","da","a3","__currentactived","_msContentZooming","msContentZooming","_overflow","focusbox","focuscolor","lic","exp","expiration","licensor","onClickPT","initNoDelay","hasClass","removeClass","write","writeln","showPopupIframe","btnText","btnFn","getPopupSize","popupwidth","popupheight","popupdlg","popupxdraw","_loadPopupData","MSTouch","pointers","_tm","toTouches","JSDraw","defaultMolHandlerOptions","MolHandler","JSON","stringify","assign","ChiralTypes","_addAtom","_addBond","_addGraphics","resetIds","keepoldid","idg","_getMaxID","atomid","bondid","graphicsid","b1","g1","_getMappedArray","_setParent","getMaxRIndex","setColor","inTriangle","getSelectedAtomInMol","xbonds","f1","f2","intersect","oldbonds","hasAtom","hasGraphics","hasBond","recalc","naromatic","pair_e","single_e","ceil","hasGenericAtom","defaultbondlength","pluses","plus","above","below","unionPoint","g2","getSelectedRect","withoutRgroups","objectRemoved","checkBonds","delLoneAtom","isLoneAtom","getSketchType","isRxn","newa","newb","resetcharge","add2rgroup","_addBond2RGroupMol","alias2","_getFirstAttachAtom","setAttachPoint","setCharge","oldelem","defaultValue","step","excludeDummyBond","textonly","_outside","moveHiddenAtomToGroupBorder","_findGroup","__drawselect","drawalias","setMolfile2","guessSuperAtoms","setRgfile","lines","setMolV2000","setMolV3000","rAtoms","natoms","nbonds","and_enantiomer","sI","eI","readRxnCenter","sgroups","token3","ai","el","rr","si","sn","ty","stys","sa","subscript","cls","ci","pi","sg","spa","bi","isValid","superatoms","brackets","collapseRepeat","hasStereoCenter","AND","hasRGroup","needV3000","getMolV3000","getMolV2000","hasEnhancedStereochemistry","getRgfile","rgroups","_getRgroups","iR","getSubMol","expandSuperAtoms","superatoms2","addToMol","expandRepeat","_getMolHeader","_getMolV2000","_getMolTime","yr","radicals","rgp","astr","nSTY","sty","writeList","sgroupdata","bracketatoms","bracketbonds","getExpandedAtoms","expandedatoms","connectivity","sgroup","spl","snc","fieldtypes","custom","ft","getDataGroup","sal","sbl","countperline","Length","countlastline","countthisline","_getMolV3000","enhancedstereochemistry","getEnhancedStereochemistry","endtoken","readV30Collections","atommap","readV30Bonds","getChiralAtom","findBestPostion","readV30Atoms","readV30Counts","counts","parseV30Attributes","k2","containsText","getProp","setProp","rgfile","_setGroup","setRxnV3000","readCtabs","setRxnV2000","getRxnV3000","getRxnV2000","getAllBrackets","getAllTexts","inside","screenBondLength","_connectFragsByPlus","bondlen","_splitFrags","_connectNextLine","detectRxn","_findCloseTexts","parseRxn2","_groupByPlus","xx","_groupByPlus2","copygraphics","_parseRxn","_addGraphicsRxnMol","_hasOverlap","_sortTextByTop","yy","sorted","setAtomBonds","_getTree","skipHiddenAtoms","fragid","containsAllAtoms","setBondOrders","rings","_getRings","ars","isAromaticRing","arrings","b2","prepareScreen","allrings","n5","a5","n6","a6","getMaxMapId","maxid","screen","fullstructure","atomsq","atomst","bondsq","bondst","fullstructureMatch","matchstereobonds","getBrackets","getSgroupTexts","matchBrackets","substructureMatch","highlighting","matchsterebonds","aamap2","_bfPath","bondmap","_setAromaticFlag","_getSmiles","trees","_getTrees","starts","_getPath","_getFormula","getMixtureMW","getAllBondAtoms","removeTags","PointInt","sqrt","v3","sign","b3","offset2","atan2","centerOf","_onSegment","_orientation","q1","q2","o1","o2","o3","o4","CornerTypes","centerLeft","centerRight","centerTop","centerBottom","distance2Point","_minDist","cross","aa","TOPLEFT","TOPRIGHT","BOTTOMLEFT","BOTTOMRIGHT","wd","ht","ShapeTypes","CommandTypes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","definition","defineProperty","enumerable","prop","call","toStringTag","initJsDrawLite","logPrefix","console","debug","jsDraw2$","initPromise","loadModules"],"sourceRoot":""} \ No newline at end of file diff --git a/HELM/source/webpack.config.js b/HELM/source/webpack.config.js index c1ebbd6..edc142c 100644 --- a/HELM/source/webpack.config.js +++ b/HELM/source/webpack.config.js @@ -4,14 +4,9 @@ const packageName = path.parse(require('./package.json').name).name.toLowerCase( const TerserWebpackPlugin = require('terser-webpack-plugin'); const FileManagerPlugin = require('filemanager-webpack-plugin'); -const extPaths = new class { - Helm = '../../../../packages/Helm'; -}(); - const mode = process.env.NODE_ENV ?? 'production'; if (mode !== 'production') console.warn(`Building '${packageName}' in '${mode}' mode.`); -const out = `helm-web-editor.${mode}`; module.exports = { mode: mode, @@ -21,11 +16,6 @@ module.exports = { resolve: { fallback: {'url': false}, extensions: ['.wasm', '.mjs', '.ts', '.tsx', '.js', '.json'], - alias: { - 'vendor/js-draw-lite': mode === 'production' ? - path.resolve(__dirname, 'vendor', 'js-draw-lite.production.js') : - path.resolve(__dirname, 'vendor', 'js-draw-lite.development.js'), - }, }, module: { rules: [ @@ -35,19 +25,15 @@ module.exports = { ], }, plugins: [new FileManagerPlugin({ - events: { - onStart: {delete: ['./dist/*']}, - onEnd: {copy: [{source: './dist/*', destination: `${extPaths.Helm}/vendor/`}]}, - }, + events: {onStart: {delete: ['./dist/*']}}, })], - devtool: mode !== 'production' ? 'inline-source-map' : 'source-map', + devtool: 'source-map', optimization: { minimize: mode === 'production', minimizer: [new TerserWebpackPlugin({extractComments: false})], }, output: { - filename: `${out}.js`, - sourceMapFilename: `${out}.js.map`, + filename: '[name].js', library: packageName, libraryTarget: 'var', path: path.resolve(__dirname, 'dist'),